OSDN Git Service

Fix for PR debug/41266
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-09-22  Dodji Seketeli  <dodji@redhat.com>
2
3         * dwarf2out.c (template_parameter_pack_die,
4         gen_formal_parameter_pack_die ): New functions.
5         (make_ith_pack_parameter_name): Remove this function.
6         (dwarf_tag_name): Support printing DW_TAG_template_parameter_pack and
7         DW_TAG_formal_parameter_pack.
8         (gen_generic_params_dies): Represent each template parameter pack
9         by a DW_TAG_template_parameter_pack DIE. Argument pack elements are
10         represented by usual DW_TAG_template_*_parameter DIEs that are
11         children of the DW_TAG_template_parameter_pack element DIE.
12         (generic_parameter_die): This doesn't deal with parameter pack
13         names anymore. Don't generate DW_AT_name for some DIEs, e.g. children of
14         parameter pack DIEs.
15         (gen_formal_parameter_die): Add a flag to not emit DW_AT_name
16         in certain cases, e.g. for pack elements.
17         (gen_formal_types_die, gen_decl_die): Adjust usage of
18         gen_formal_parameter_die.
19         (gen_subprogram_die): Represent each function parameter pack by a
20         DW_TAG_formal_parameter_pack DIE. Arguments of of the pack are
21         represented by usual DW_TAG_formal_parameter DIEs that are children
22         of the DW_TAG_formal_parameter_pack DIE. Remove references to
23         ____builtin_va_alist decls as no part of the compiler uses those
24         anymore.
25         * langhooks.h (struct lang_hooks_for_decls): Add
26         function_parm_expanded_from_pack_p, get_generic_function_decl
27         and function_parameter_pack_p hooks.  Fix comment for
28         get_innermost_generic_parms hook.
29         * langhooks-def.h (LANG_HOOKS_FUNCTION_PARAMETER_PACK_P,
30         LANG_HOOKS_FUNCTION_PARM_EXPANDED_FROM_PACK_P ): Declare new hook
31         macros and use them to initialize lang_hook.
32
33 2009-09-22  Richard Henderson  <rth@redhat.com>
34
35         * system.h (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE): Poison.
36         (TRAMPOLINE_ADJUST_ADDRESS): Poison.
37         * target-def.h (TARGET_ASM_TRAMPOLINE_TEMPLATE): Don't conditionalize
38         on TRAMPOLINE_TEMPLATE.
39         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): Don't conditionalize on
40         TRAMPOLINE_ADJUST_ADDRESS.
41         * targhooks.c (default_asm_trampoline_template): Remove.
42         (default_trampoline_adjust_address): Remove.
43         (default_trampoline_init): Don't handle INITIALIZE_TRAMPOLINE.
44         * targhooks.h: Update decls.
45
46 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
47
48         * config/i386/cygming.h (TARGET_USE_JCR_SECTION): Enable.
49         * config/i386/cygwin.h (LIBGCJ_SONAME): Define.
50         * config/i386/mingw32.h (LIBGCJ_SONAME): Likewise.
51
52 2009-09-22  Alexandre Oliva  <aoliva@redhat.com>
53
54         PR debug/41295
55         * reload1.c (reload): Reset debug insns with pseudos without
56         equivalences.
57
58 2009-09-22  Neil Vachharajani  <nvachhar@google.com>
59
60         * testsuite/gcc.dg/pr40209.c: Add test case.
61
62 2009-09-22  Janis Johnson  <janis187@us.ibm.com>
63
64         * config/i386/i386.c (ix86_scalar_mode_supported_p): Don't return
65         unconditional true for decimal float modes.
66         * config/rs6000/rs6000.c (rs6000_scalar_mode_supported_p): Ditto.
67         * config/s390/s390.c (s390_scalar_mode_supported_p): Ditto.
68
69 2009-09-22  Loren J. Rittle  <ljrittle@acm.org>
70
71         * unwind-dw2-fde-glibc.c: Define and use USE_PT_GNU_EH_FRAME.
72         Enable a new case for __FreeBSD__ >= 7.
73         * crtstuff.c:  Define USE_PT_GNU_EH_FRAME for __FreeBSD__ >= 7.
74         * config/t-freebsd: Define LIB2ADDEH and LIB2ADDEHDEP.
75         * config/freebsd-spec.h: Conditionally define LINK_EH_SPEC
76         and USE_LD_AS_NEEDED.
77
78         * doc/install.texi (*-*-freebsd*): Update target information.
79
80 2009-09-22  Richard Guenther  <rguenther@suse.de>
81
82         PR middle-end/41395
83         * tree-dfa.c (get_ref_base_and_extent): Handle trailing
84         arrays really properly.
85
86 2009-09-22  Richard Henderson  <rth@redhat.com>
87
88         PR target/41246
89         * target.h (struct gcc_target): Add asm_out.trampoline_template,
90         calls.static_chain, calls.trampoline_init,
91         calls.trampoline_adjust_address.
92         * target-def.h (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
93         (TARGET_STATIC_CHAIN, TARGET_TRAMPOLINE_INIT): New.
94         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
95         * builtins.c (expand_builtin_setjmp_receiver): Use
96         targetm.calls.static_chain; only clobber registers.
97         (expand_builtin_init_trampoline): Use targetm.calls.trampoline_init;
98         set up memory attributes properly for the trampoline block.
99         (expand_builtin_adjust_trampoline): Use
100         targetm.calls.trampoline_adjust_address.
101         * calls.c (prepare_call_address): Add fndecl argument.  Use
102         targetm.calls.static_chain.
103         * df-scan.c (df_need_static_chain_reg): Remove.
104         (df_get_entry_block_def_set): Use targetm.calls.static_chain;
105         consolodate static chain handling.
106         * doc/tm.texi: Document new hooks.
107         * emit-rtl.c (static_chain_rtx, static_chain_incoming_rtx): Remove.
108         (init_emit_regs): Don't initialize them.
109         * expr.h (prepare_call_address): Update decl.
110         * final.c (profile_function): Use targetm.calls.static_chain.
111         * function.c (expand_function_start): Likewise.
112         * rtl.h (static_chain_rtx, static_chain_incoming_rtx): Remove.
113         * stmt.c (expand_nl_goto_receiver): Use targetm.calls.static_chain;
114         only clobber registers.
115         * targhooks.c (default_static_chain): New.
116         (default_asm_trampoline_template, default_trampoline_init): New.
117         (default_trampoline_adjust_address): New.
118         * targhooks.h: Declare them.
119         * varasm.c (assemble_trampoline_template): Use
120         targetm.asm_out.trampoline_template.  Make the memory block const
121         and set its size.
122
123         * config/alpha/alpha.c (alpha_trampoline_init): Rename from
124         alpha_initialize_trampoline.  Make static.  Merge VMS parameter
125         differences into the TARGET_ABI_OPEN_VMS code block.
126         (TARGET_TRAMPOLINE_INIT): New.
127         * config/alpha/alpha.h (TRAMPOLINE_TEMPLATE): Remove.
128         (TRAMPOLINE_SECTION, INITIALIZE_TRAMPOLINE): Remove.
129         * config/alpha/vms.h (TRAMPOLINE_SIZE, TRAMPOLINE_ALIGNMENT): Remove.
130         (INITIALIZE_TRAMPOLINE): Remove.
131
132         * config/arc/arc.h (TRAMPOLINE_ALIGNMENT): New.
133         (TRAMPOLINE_TEMPLATE): Merge with ...
134         (INITIALIZE_TRAMPOLINE): ... this and move ...
135         * config/arc/arc.c (arc_trampoline_init): ... here.
136         (TARGET_TRAMPOLINE_INIT): New.
137
138         * config/arm/arm.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
139         (TARGET_TRAMPOLINE_INIT, TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
140         (arm_asm_trampoline_template): New.
141         (arm_trampoline_init, arm_trampoline_adjust_address): New.
142         * config/arm/arm.h (TRAMPOLINE_TEMPLATE, ARM_TRAMPOLINE_TEMPLATE,
143         THUMB2_TRAMPOLINE_TEMPLATE, THUMB1_TRAMPOLINE_TEMPLATE): Move all
144         code to arm_asm_trampoline_template.
145         (TRAMPOLINE_ADJUST_ADDRESS): Move code to
146         arm_trampoline_adjust_address.
147         (INITIALIZE_TRAMPOLINE): Move code to arm_trampoline_init;
148         adjust for target hook parameters.
149
150         * config/avr/avr.h (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE): Remove.
151
152         * config/bfin/bfin-protos.h (initialize_trampoline): Remove.
153         * config/bfin/bfin.c (bfin_asm_trampoline_template): New.
154         (bfin_trampoline_init): Rename from initialize_trampoline;
155         make static; update for target hook parameters.
156         (TARGET_ASM_TRAMPOLINE_TEMPLATE, TARGET_TRAMPOLINE_INIT): New.
157         * config/bfin/bfin.h (TRAMPOLINE_TEMPLATE): Move code to
158         bfin_asm_trampoline_template.
159         (INITIALIZE_TRAMPOLINE): Remove.
160
161         * config/cris/cris.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
162         TARGET_TRAMPOLINE_INIT, cris_asm_trampoline_template,
163         cris_trampoline_init): New.
164         * config/cris/cris.h (TRAMPOLINE_TEMPLATE): Move code to
165         cris_asm_trampoline_template.
166         (INITIALIZE_TRAMPOLINE): Move code to cris_trampoline_init;
167         adjust for target hook parameters.
168
169         * config/crx/crx.h (INITIALIZE_TRAMPOLINE): Remove.
170
171         * config/fr30/fr30.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
172         TARGET_TRAMPOLINE_INIT, fr30_asm_trampoline_template,
173         fr30_trampoline_init): New.
174         * config/fr30/fr30.h (TRAMPOLINE_TEMPLATE): Move code to
175         fr30_asm_trampoline_template.
176         (INITIALIZE_TRAMPOLINE): Move code to fr30_trampoline_init;
177         adjust for target hook parameters.
178
179         * config/frv/frv.c (TARGET_TRAMPOLINE_INIT): New.
180         (frv_trampoline_init): Rename from frv_initialize_trampoline;
181         make static, adjust arguments for TARGET_TRAMPOLINE_INIT hook.
182         * config/frv/frv.h (INITIALIZE_TRAMPOLINE): Remove.
183         * config/frv/frv-protos.h (frv_initialize_trampoline): Remove.
184
185         * config/h8300/h8300.c (h8300_trampoline_init): New.
186         (TARGET_TRAMPOLINE_INIT): New.
187         * config/h8300/h8300.h (INITIALIZE_TRAMPOLINE): Move code
188         to h8300_trampoline_init and adjust for hook parameters.
189
190         * config/ia64/ia64-protos.h (ia64_initialize_trampoline): Remove.
191         * config/ia64/ia64.c (TARGET_TRAMPOLINE_INIT): New.
192         (ia64_trampoline_init): Rename from ia64_initialize_trampoline;
193         make static; adjust for hook parameters.
194         * config/ia64/ia64.h (INITIALIZE_TRAMPOLINE): Remove.
195
196         * config/iq2000/iq2000.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
197         (TARGET_TRAMPOLINE_INIT): New.
198         (iq2000_asm_trampoline_template, iq2000_trampoline_init): New.
199         * config/iq2000/iq2000.h (TRAMPOLINE_TEMPLATE): Move code to
200         iq2000_asm_trampoline_template.
201         (INITIALIZE_TRAMPOLINE): Move code to iq2000_trampoline_init.
202         (TRAMPOLINE_CODE_SIZE): New.
203         (TRAMPOLINE_SIZE): Use it.
204         (TRAMPOLINE_ALIGNMENT): Follow Pmode.
205
206         * config/m32c/m32c-protos.h (m32c_initialize_trampoline): Remove.
207         * config/m32c/m32c.c (TARGET_TRAMPOLINE_INIT): New.
208         (m32c_trampoline_init): Rename from m32c_initialize_trampoline;
209         adjust for hook parameters.
210         * config/m32c/m32c.h (INITIALIZE_TRAMPOLINE): Remove.
211
212         * config/m32r/m32r.c (TARGET_TRAMPOLINE_INIT): New.
213         (m32r_trampoline_init): New.
214         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Move code to
215         m32r_trampoline_init.
216
217         * config/m68hc11/m68hc11.c (TARGET_TRAMPOLINE_INIT): New.
218         (m68hc11_trampoline_init): Rename from m68hc11_initialize_trampoline;
219         make static; update for hook parameters.
220         * config/m68hc11/m68hc11-protos.h: Update.
221         * config/m68hc11/m68hc11.h (INITIALIZE_TRAMPOLINE): Remove.
222
223         * config/mcore/mcore.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
224         (TARGET_TRAMPOLINE_INIT): New.
225         (mcore_function_value): Fix typo.
226         (mcore_asm_trampoline_template, mcore_trampoline_init): New.
227         * config/mcore/mcore.h (TRAMPOLINE_TEMPLATE): Move code 
228         to mcore_asm_trampoline_template.
229         (INITIALIZE_TRAMPOLINE): Move code to mcore_trampoline_init.
230
231         * config/mep/mep.h (INITIALIZE_TRAMPOLINE): Remove.
232         * config/mep/mep.c (TARGET_TRAMPOLINE_INIT): New.
233         (mep_trampoline_init): Rename from mep_init_trampoline; make static;
234         update for hook parameters.
235         * config/mep/mep-protos.h (mep_init_trampoline): Remove.
236
237         * config/mips/mips.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
238         mips_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
239         mips_trampoline_init): New.
240         * config/mips/mips.h (TRAMPOLINE_TEMPLATE): Move code to
241         mips_asm_trampoline_template.
242         (INITIALIZE_TRAMPOLINE): Move code to mips_trampoline_init;
243         update for hook parameters.
244
245         * gcc/config/mmix/mmix.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
246         (TARGET_TRAMPOLINE_INIT): New.
247         (mmix_trampoline_size): Remove.
248         (mmix_asm_trampoline_template): Rename from mmix_trampoline_template;
249         make static.  Remove out-of-date tetra vs octa comment.
250         (mmix_trampoline_init): Rename from mmix_initialize_trampoline;
251         make static; update for hook parameters.
252         * config/mmix/mmix.h (TRAMPOLINE_TEMPLATE): Remove.
253         (INITIALIZE_TRAMPOLINE): Remove.
254         (TRAMPOLINE_SIZE): Use a constant instead of mmix_trampoline_size.
255         (TRAMPOLINE_ALIGNMENT): New.
256         * gcc/config/mmix/mmix-protos.h: Update.
257
258         * config/mn10300/mn10300.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
259         mn10300_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
260         mn10300_trampoline_init): New.
261         * config/mn10300/mn10300.h (TRAMPOLINE_TEMPLATE): Move code to
262         mn10300_asm_trampoline_template.
263         (INITIALIZE_TRAMPOLINE): Move code to mn10300_trampoline_init.
264
265         * config/moxie/moxie.c (moxie_static_chain,
266         moxie_asm_trampoline_template, moxie_trampoline_init,
267         TARGET_STATIC_CHAIN, TARGET_ASM_TRAMPOLINE_TEMPLATE,
268         TARGET_TRAMPOLINE_INIT): New.
269         * config/moxie/moxie.h (INITIALIZE_TRAMPOLINE): Move code to
270         moxie_trampoline_init.
271         (TRAMPOLINE_TEMPLATE): Move code to moxie_asm_trampoline_template.
272         (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Remove.
273
274         * gcc/config/pa/pa.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
275         pa_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
276         pa_trampoline_init, TARGET_TRAMPOLINE_ADJUST_ADDRESS,
277         pa_trampoline_adjust_address): New.
278         * config/pa/pa.h (TRAMPOLINE_TEMPLATE): Move code to
279         pa_asm_trampoline_template.
280         (TRAMPOLINE_ALIGNMENT): New.
281         (TRAMPOLINE_CODE_SIZE): Move to pa.c.
282         (INITIALIZE_TRAMPOLINE): Move code to pa_trampoline_init;
283         adjust for hook parameters.
284         (TRAMPOLINE_ADJUST_ADDRESS): Move code to pa_trampoline_adjust_address.
285
286         * config/pdp11/pdp11.c (pdp11_trampoline_init): New.
287         (TARGET_TRAMPOLINE_INIT): New.
288         * config/pdp11/pdp11.h (TRAMPOLINE_TEMPLATE): Remove.
289         (INITIALIZE_TRAMPOLINE): Move code to pdp11_trampoline_init.
290
291         * config/picochip/picochip.h (INITIALIZE_TRAMPOLINE): Remove.
292
293         * config/rs6000/rs6000-protos.h (rs6000_initialize_trampoline): Remove.
294         * config/rs6000/rs6000.c (TARGET_TRAMPOLINE_INIT): New.
295         (rs6000_trampoline_init): Rename from rs6000_initialize_trampoline;
296         make static; adjust parameters for the hook.
297         * config/rs6000/rs6000.h (INITIALIZE_TRAMPOLINE): Remove.
298
299         * config/s390/s390.c (s390_asm_trampoline_template): Rename from
300         s390_trampoline_template; make static.
301         (s390_trampoline_init): Rename from s390_initialize_trampoline;
302         make static; adjust for target hook.
303         (TARGET_ASM_TRAMPOLINE_TEMPLATE, TARGET_TRAMPOLINE_INIT): New.
304         * config/s390/s390-protos.h: Remove trampoline decls.
305         * config/s390/s390.h (INITIALIZE_TRAMPOLINE): Remove.
306         (TRAMPOLINE_TEMPLATE): Remove.
307         (TRAMPOLINE_ALIGNMENT): New.
308
309         * config/score/score-protos.h (score_initialize_trampoline): Remove.
310         * config/score/score.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
311         (TARGET_TRAMPOLINE_INIT): New.
312         (score_asm_trampoline_template): New.
313         (score_trampoline_init): Rename from score_initialize_trampoline;
314         make static; adjust for hook parameters.
315         * config/score/score.h (TRAMPOLINE_TEMPLATE): Move code to
316         score[37]_asm_trampoline_template.
317         (INITIALIZE_TRAMPOLINE): Remove.
318         * config/score/score3.c (score3_asm_trampoline_template): New.
319         (score3_trampoline_init): Rename from score3_initialize_trampoline;
320         adjust for target hook.
321         * config/score/score7.c (score7_asm_trampoline_template): New.
322         (score7_trampoline_init): Rename from score7_initialize_trampoline;
323         adjust for target hook.
324         * config/score/score3.h, config/score/score7.h: Update.
325
326         * config/sh/sh-protos.h (sh_initialize_trampoline): Remove.
327         * config/sh/sh.c (TARGET_TRAMPOLINE_INIT): New.
328         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
329         (sh_trampoline_init): Rename from sh_initialize_trampoline;
330         make static; adjust for target hook parameters.
331         (sh_trampoline_adjust_address): New.
332         * config/sh/sh.h (INITIALIZE_TRAMPOLINE): New.
333         (TRAMPOLINE_ADJUST_ADDRESS): Move code to sh_trampoline_adjust_address.
334
335         * config/sparc/sparc.c (TARGET_TRAMPOLINE_INIT): New.
336         (sparc32_initialize_trampoline): Rename from
337         sparc_initialize_trampoline; make static; replace tramp parameter
338         with m_tramp and update memory accesses.
339         (sparc64_initialize_trampoline): Similarly.
340         (sparc_trampoline_init): New.
341         * config/sparc/sparc-protos.h: Remove trampoline decls.
342         * config/sparc/sparc.h (INITIALIZE_TRAMPOLINE): Remove.
343         * config/sparc/sparc.md (nonlocal_goto): Don't use static_chain_rtx.
344
345         * config/spu/spu.c (TARGET_TRAMPOLINE_INIT): New.
346         (array_to_constant): Make ARR parameter const.
347         (spu_trampoline_init): Rename from spu_initialize_trampoline;
348         make static; update for hook parameters.
349         * config/spu/spu-protos.h: Update decls.
350         * config/spu/spu.h (INITIALIZE_TRAMPOLINE): Remove.
351
352         * config/stormy16/stormy16.c (xstormy16_trampoline_init): Rename
353         from xstormy16_initialize_trampoline; make static; update for
354         hook parameters.
355         (TARGET_TRAMPOLINE_INIT): New.
356         * config/stormy16/stormy16.h (INITIALIZE_TRAMPOLINE): Remove.
357
358         * config/v850/v850.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
359         (TARGET_TRAMPOLINE_INIT): New.
360         (v850_can_eliminate): Make static.
361         (v850_asm_trampoline_template, v850_trampoline_init): New.
362         * config/v850/v850.h (TRAMPOLINE_TEMPLATE): Move code to
363         v850_asm_trampoline_template.
364         (INITIALIZE_TRAMPOLINE): Move code to v850_trampoline_init
365         and adjust for target hook parameters.
366
367         * config/vax/vax.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
368         (TARGET_TRAMPOLINE_INIT): New.
369         (vax_asm_trampoline_template, vax_trampoline_init): New.
370         * config/vax/vax.h (TRAMPOLINE_TEMPLATE): Move code to
371         vax_asm_trampoline_template.
372         (INITIALIZE_TRAMPOLINE): Move code to vax_trampoline_init.
373
374         * config/xtensa/xtensa.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
375         (TARGET_TRAMPOLINE_INIT): New.
376         (xtensa_asm_trampoline_template): Rename from
377         xtensa_trampoline_template; make static.
378         (xtensa_trampoline_init): Rename from xtensa_initialize_trampoline;
379         make static; update for hook parameters.
380         * config/xtensa/xtensa-protos.h: Remove trampoline decls.
381         * config/xtensa/xtensa.h (TRAMPOLINE_TEMPLATE): Remove.
382         (INITIALIZE_TRAMPOLINE): Remove.
383
384         * config/i386/i386.c (ix86_function_regparm): Do not issue an
385         error for nested functions with regparm=3.
386         (ix86_compute_frame_layout): Adjust frame pointer offset for
387         ix86_static_chain_on_stack.
388         (ix86_expand_prologue): Handle ix86_static_chain_on_stack.
389         (ix86_emit_restore_reg_using_pop): Increment ix86_cfa_state->offset,
390         don't reset to UNITS_PER_WORD.
391         (ix86_emit_leave): Adjust ix86_cfa_state.
392         (ix86_expand_epilogue): Handle ix86_static_chain_on_stack.
393         (ix86_static_chain): New.
394         (ix86_trampoline_init): Rename from x86_initialize_trampoline;
395         make static; update for target hook parameters; use ix86_static_chain.
396         (TARGET_STATIC_CHAIN, TARGET_TRAMPOLINE_INIT): New.
397         * config/i386/i386.h (STATIC_CHAIN_REGNUM): Remove.
398         (INITIALIZE_TRAMPOLINE): Remove.
399         (TRAMPOLINE_SIZE): Use 24 for 64-bit.
400         (struct machine_function): Use BOOL_BITFIELD; rearrange bitfields
401         to the end.  Add static_chain_on_stack.
402         (ix86_static_chain_on_stack): New.
403
404         * config/m68k/m68k.c (TARGET_TRAMPOLINE_INIT): New.
405         (m68k_output_mi_thunk): Don't use static_chain_rtx.
406         (m68k_trampoline_init): New.
407         * config/m68k/m68k.h (INITIALIZE_TRAMPOLINE): Move code to
408         m68k_trampoline_init and adjust for hook parameters.
409         * config/m68k/netbsd-elf.h (TRAMPOLINE_TEMPLATE): Remove.
410         (TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE): Remove.
411
412 2009-09-22  Jakub Jelinek  <jakub@redhat.com>
413
414         * config/rs6000/rs6000.c (bdesc_2arg): Fix CODE_FOR_vector_gt* codes
415         for __builtin_altivec_vcmpgt{sb,uh,sh,uw}.
416
417         * reload1.c (reload): Call wrap_constant when substituting
418         reg for equiv inside of DEBUG_INSNs.
419
420         PR bootstrap/41405
421         * dwarf2out.c (base_type_die, record_type_tag, gen_subprogram_die,
422         add_call_src_coords_attributes, add_high_low_attributes,
423         gen_compile_unit_die, gen_type_die_with_usage force_decl_die,
424         gen_decl_die, dwarf2out_imported_module_or_decl_1, dwarf2out_finish,
425         dwarf2out_imported_module_or_decl): Avoid using DWARF3 additions
426         when -gdwarf-2 -gstrict-dwarf.
427         (loc_list_from_tree): Likewise.  Avoid using DWARF4 additions when
428         -gdwarf-[23] -gstrict-dwarf.
429         (address_of_int_loc_descriptor, loc_descriptor,
430         loc_list_for_address_of_addr_expr_of_indirect_ref): Avoid using
431         DWARF4 additions when -gdwarf-[23] -gstrict-dwarf.
432         * common.opt (gno-strict-dwarf, gstrict-dwarf): New options.
433
434 2009-09-22  Richard Guenther  <rguenther@suse.de>
435
436         PR tree-optimization/41428
437         * tree-ssa-ccp.c (ccp_fold_stmt): New function.
438         (ccp_finalize): Pass it to substitute_and_fold.
439
440 2009-09-22  Richard Guenther  <rguenther@suse.de>
441
442         * tree-ssa-propagate.h (ssa_prop_fold_stmt_fn): Declare.
443         (substitute_and_fold): Adjust prototype.
444         * tree-vrp.c (vrp_evaluate_conditional): Make static.
445         (simplify_stmt_using_ranges): Likewise.
446         (fold_predicate_in): Move here from tree-ssa-propagate.c.
447         (vrp_fold_stmt): New function.
448         (vrp_finalize): Pass it to substitute_and_fold.
449         * tree-flow.h (vrp_evaluate_conditional): Remove.
450         (simplify_stmt_using_ranges): Likewise.
451         * tree-ssa-ccp.c (ccp_finalize): Adjust call to substitute_and_fold.
452         * tree-ssa-copy.c (fini_copy_prop): Likewise.
453         * tree-ssa-propagate.c (struct prop_stats_d): Rename num_pred_folded
454         member.
455         (fold_predicate_in): Move to tree-vrp.c.
456         (substitute_and_fold): Use the callback instead of calling into
457         tree-vrp.c functions directly.
458
459 2009-09-22  Jakub Jelinek  <jakub@redhat.com>
460
461         * dwarf2out.c (address_of_int_loc_descriptor): Avoid signed/unsigned
462         comparison warning on rs6000.
463
464         PR middle-end/41429
465         * tree-cfg.c (remove_useless_stmts_tc): Call gsi_next (gsi) even for
466         GIMPLE_EH_MUST_NOT_THROW cleanup.
467         (verify_types_in_gimple_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.
468
469 2009-09-22  Jack Howarth  <howarth@bromo.med.uc.edu>
470
471         PR middle-end/41260
472         * gcc/config.gcc: Use darwin9.h and darwin10.h on darwin10 and later.
473         * gcc/config/darwin10.h: Add file to pass -no_compact_unwind on
474         LIB_SPEC for darwin10 and later since it always uses the unwinder in
475         libSystem which is derived from the gcc 4.2.1 unwinder.
476
477 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
478
479         PR middle-end/41357
480         * varasm.c (default_encode_section_info): Copy TLS model into
481         sym_ref flags regardless of backend support for TLS, for all
482         model types except TLS_MODEL_EMULATED.
483
484 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
485
486         PR bootstrap/41404
487         * dwarf2out.c (mem_loc_descriptor): Punt on CONST_STRING until
488         we can handle it correctly.
489
490 2009-09-21  Gerald Pfeifer  <gerald@pfeifer.com>
491
492         * doc/install.texi (os2): Remove section.
493
494 2009-09-21  Gerald Pfeifer  <gerald@pfeifer.com>
495
496         * doc/standards.texi (Objective-C): Adjust two URLs.
497
498 2009-09-21  Giuseppe Scrivano <gscrivano@gnu.org>
499
500         * tree-tailcall.c (process_assignment): Don't check if a multiplication
501         or an addition are already present.
502         (find_tail_calls): Combine multiple additions and multiplications.
503         (adjust_accumulator_values): Emit accumulators.
504
505 2009-09-21  Kai Tietz  <kai.tietz@onevision.com>
506
507         * config/i386/i386.c (ix86_expand_epilogue): Adjust offset for
508         xmm register restore.
509
510 2009-09-21  Jan Hubicka  <jh@suse.cz>
511
512         * dwarf2out.c (decl_loc_table_eq): Allow decl_loc_table to be NULL.
513         (dwarf2out_abstract_function): NULLify decl_loc_table at begginig and
514         restore at the end.
515
516 2009-09-21  Eric Botcazou  <ebotcazou@adacore.com>
517
518         * stor-layout.c (layout_type): Remove obsolete code.
519
520 2009-09-20  H.J. Lu  <hongjiu.lu@intel.com>
521
522         PR middle-end/41395
523         * opts.c (decode_options): Don't turn on flag_ipa_sra for opt2.
524
525 2009-09-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
526
527         PR middle-end/30789
528         * builtins.c (do_mpc_arg2): Accept DO_NONFINITE parameter.
529         (do_mpc_ckconv): Accept FORCE_CONVERT parameter.
530         (fold_builtin_2, do_mpc_arg1): Update accordingly.
531         * fold-const.c (const_binop): Likewise.
532         * real.h (do_mpc_arg2): Update prototype.
533
534 2009-09-20  Jan Hubicka  <jh@suse.cz>
535
536         * dwarf2out.c (add_const_value_attribute): Return true if successful.
537         (add_location_or_const_value_attribute): Rewrite using loc_list_from_tree.
538         (tree_add_const_value_attribute): Return true if successful.
539         (tree_add_const_value_attribute_for_decl): Likewise.
540
541         * dwarf2out.c (address_of_int_loc_descriptor): Break out from ...
542         (loc_descriptor): ... here;
543         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
544         (cst_pool_loc_descr): Break out from ...; do not reffer constant
545         pool items that was not marked for output.
546         (loc_list_from_tree): ... here; handle special cases of ADDR_EXPR;
547         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
548         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
549         handle ALIGN_INDIRECT_REF, MISALIGNED_INDIRECT_REF, REALPART_EXPR,
550         IMAGPART_EXPR; handle address of INTEGER_CST; improve handling of
551         CONSTRUCTOR; handle REAL_CST, STRING_CST, COMPLEX_CST; use
552         DW_OP_stack_value to get address of items that are not available
553         as addresses.
554         (dw_loc_list): Handle single element lists correctly.
555
556 2009-09-20  Kai Tietz  <kai.tietz@onevision.com>
557             Pascal Obry  <obry@adacore.com>
558
559         * unwind-dw2-fde.c (classify_object_over_fdes):
560         Cast the constant 1 to _Unwind_Ptr.
561         (add_fdes): Likewise.
562         (linear_search_fdes): Likewise.
563
564 2009-09-20  Eric Botcazou  <ebotcazou@adacore.com>
565
566         * stor-layout.c (set_sizetype): Avoid useless type copy.
567
568 2009-09-20  Richard Sandiford  <rdsandiford@googlemail.com>
569
570         * configure.ac (gcc_cv_ld_mips_personality_relaxation): New
571         feature check.
572         (HAVE_LD_PERSONALITY_RELAXATION): New macro definition.
573         * configure, config.in: Regenerate.
574         * dwarf2asm.c (eh_data_format_name): Handle DW_EH_PE_indirect |
575         DW_EH_PE_absptr.
576         * config/mips/mips.h (TARGET_WRITABLE_EH_FRAME): New macro.
577         (ASM_PREFERRED_EH_DATA_FORMAT): Define.  Use MIPS_EH_INDIRECT
578         for global data if the output could be used in a shared library.
579         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
580         to 0 if TARGET_WRITABLE_EH_FRAME.
581
582 2009-09-20  Paolo Bonzini <bonzini@gnu.org>
583
584         PR rtl-optimization/39886
585         * combine.c (update_cfg_for_uncondjump): Set EDGE_FALLTHRU
586         just when insn is equal to BB_END (bb).
587
588 2009-09-19  Adam Nemet  <anemet@caviumnetworks.com>
589
590         * config/mips/mips.opt (mrelax-pic-calls): New option.
591         * config/mips/mips.c (mips_strip_unspec_address): Move it up in
592         the file.
593         (mips_unspec_call): Change "unspec_call" expander into this.
594         (mips_strip_unspec_call): New function.
595         (mips_got_load): Call mips_unspec_call instead of
596         gen_unspec_call<mode>.
597         (mips16_build_call_stub): Fix comment for fp_code.  Adjust call to
598         MIPS_CALL.
599         (mips_cfg_in_reorg): New function.
600         (mips16_lay_out_constants): Use it to decide whether to call
601         CFG-aware insn splitting.
602         (r10k_insert_cache_barriers): Move CFG set-up code from here to
603         mips_reorg.  Move DF set-up code from here ...
604         (mips_df_reorg): ... to here.  Call r10k_insert_cache_barriers
605         from here.
606         (mips_reorg): Call mips_df_reorg instead of
607         r10k_insert_cache_barriers.  Move CFG set-up code here from
608         r10k_insert_cache_barriers.
609         (mips_call_expr_from_insn): New function.
610         (mips_pic_call_symbol_from_set): Likewise.
611         (mips_find_pic_call_symbol): Likewise.
612         (mips_annotate_pic_call_expr): Likewise.
613         (mips_get_pic_call_symbol): Likewise.
614         (mips_annotate_pic_calls): Likewise.
615         (mips_override_options): Disable -mrelax-pic-calls unless PIC
616         calls are used.
617         (mips_set_mips16_mode): Disable -mrelax-pic-calls for MIPS16.
618         * config/mips/mips-protos.h (mips_get_pic_call_symbol): Declare it.
619         * config/mips/mips.h (MIPS_CALL): Use it to print the .reloc
620         directive.
621         * config/mips/mips.md (UNSPEC_CALL_ATTR): New unspec.
622         (unspec_call<mode>): Remove it.
623         (sibcall_internal, sibcall_value_internal,
624         sibcall_value_multiple_internal, call_internal, call_split,
625         call_value_internal, call_value_split,
626         call_value_multiple_internal, call_value_multiple_split): Pass
627         SIZE_OPNO to MIPS_CALL.
628         (call_internal_direct, call_direct_split,
629         call_value_internal_direct, call_value_direct_split): Pass -1 as
630         SIZE_OPNO to MIPS_CALL.
631         * configure.ac <mips*-*-*>: Add test for .reloc R_MIPS_JALR.
632         * configure: Regenerate.
633         * doc/invoke.texi (Option Summary): Add -mrelax-pic-calls
634         and -mno-relax-pic-calls.
635         (MIPS Options): Document -mrelax-pic-calls
636         and -mno-relax-pic-calls.
637
638 2009-09-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
639
640         PR bootstrap/35619
641         * Makefile.in (stmp-fixinc): Ensure `include-fixed' is created
642         in the directory this rule is called from, rather than the
643         toplevel 'gcc' directory, to fix in-tree build.
644
645 2009-09-19  Chris Demetriou  <cgd@google.com>
646
647         PR preprocessor/28435:
648         * c-opts.c (c_common_handle_option): For -MD and -MMD, indicate
649         to cpplib that the preprocessor output is needed.
650
651 2009-09-19  Jakub Jelinek  <jakub@redhat.com>
652
653         * config/rs6000/rs6000.md (*save_gpregs_<mode>, *save_fpregs_<mode>,
654         *restore_gpregs_<mode>, *return_and_restore_gpregs_<mode>,
655         *return_and_restore_fpregs_<mode>,
656         *return_and_restore_fpregs_aix_<mode>): Remove 'z' operand modifier.
657
658         PR bootstrap/41397
659         * dwarf2out.c (mem_loc_descriptor) <case SUBREG>: Recurse
660         instead of assuming it has always a REG inside of it.
661
662 2009-09-18  Gerald Pfeifer  <gerald@pfeifer.com>
663
664         * config/freebsd.h: Update comment on types.
665         (WINT_TYPE): Define.
666
667 2009-09-18  Jason Merrill  <jason@redhat.com>
668
669         * c.opt: Add -fno-deduce-init-list.
670
671 2009-09-18  Neil Vachharajani  <nvachhar@google.com>
672
673         * value-prof.c (interesting_stringop_to_profile_p): Added output
674         argument to indicate which parameter is the size parameter.
675         * value-prof.c (gimple_stringop_fixed_value): Use
676         INTERESTING_STRINGOP_TO_PROFILE_P to find size argument.
677         * value-prof.c (gimple_stringops_transform): Update call sites to
678         INTERESTING_STRINGOP_TO_PROFILE_P to reflect parameter change.
679         * testsuite/gcc.dg/tree-prof/val-prof-7.c: Added test case.
680
681 2009-09-18  Uros Bizjak  <ubizjak@gmail.com>
682
683         PR target/38288
684         From David Binderman <dcb314@hotmail.com>:
685         * gcc/config/i386/i386.c (ix86_function_regparm): Remove useless
686         local variable f.  Remove stale comments.
687         (ix86_compute_frame_layout): Remove useless local variable total_size.
688         Remove #if 0'd code.
689         (legitimate_address_p): Remove useless local variables
690         reason_rtx and reason.
691         (ix86_split_copysign_const): Remove useless local variable op1.
692         (scale_counter): Remove useless local variable piece_size_mask.
693
694 2009-09-18  Jakub Jelinek  <jakub@redhat.com>
695
696         * stmt.c (expand_asm_operands): Set REG_ATTRS on the temporary from
697         output decl.
698
699 2009-09-17  Michael Haubenwallner  <michael.haubenwallner@salomon.at>
700
701         PR target/40913
702         * config/pa/t-hpux-shlib: Set soname in libgcc_s.sl.
703
704 2009-09-17  Jakub Jelinek  <jakub@redhat.com>
705
706         * c-decl.c (finish_struct): Adjust DECL_SOURCE_LOCATION of
707         TYPE_STUB_DECL.
708
709 2009-09-17  Alexandre Oliva  <aoliva@redhat.com>
710
711         * dwarf2out.c (loc_descriptor): Emit DW_OP_stack_value and
712         DW_OP_implicit_value even without dwarf_version 4.
713
714 2009-09-17  Jan Hubicka  <jh@suse.cz>
715
716         * dwarf2out.c: Include tree-pass.h and gimple.h.
717         (loc_list_plus_const): New function.
718         (loc_descriptor_from_tree_1): Rename to ...
719         (loc_descriptor_from_tree): ... remove original.
720         (loc_list_from_tree): New function.
721         (add_AT_location_description): Accept location list.
722         (tls_mem_loc_descriptor): Update call of loc_descriptor_from_tree.
723         (concatn_mem_loc_descriptor): Remove.
724         (mem_loc_descriptor): Handle CONCAT/CONCATN and VAR_LOCATION by
725         returning NULL.
726         (secname_for_decl): Move up.
727         (hidden_reference_p): New function; break out from ...
728         (loc_by_refernece): ... here; move up.
729         (dw_loc_list): New function.
730         (single_element_loc_list): New function.
731         (single_element_loc_list_p): New function.
732         (add_loc_descr_to_each): New function.
733         (add_loc_list): New function.
734         (loc_descr_from_tree): Make wraper of loc_list_from_tree.
735         (loc_list_from_tree): Reroganized from loc_descr_from_tree;
736         add diagnostics why expansion failed.
737         (add_location_or_const_value_attribute): Support location lists.
738         (add_bound_info): Likewise.
739         (descr_info_loc): Update call of loc_descriptor_from_tree.
740         (gen_variable_die): Work on location lists.
741         * final.c (pass_final): Add dump file.
742         * Makefile.in (dwarf2out.o): Add new dependencies.
743
744 2009-09-17  Janis Johnson  <janis187@us.ibm.com>
745
746         PR c/41049
747         * real.c decimal_from_integer, decimal_integer_string): New.
748         (real_from_integer): Use them as special case for decimal float.
749         * config/dfp-bit.c (_si_to_sd, _usi_to_sd): Use default rounding.
750         (_di_to_sd, _di_to_dd, _di_to_td, _udi_to_sd, _udi_to_dd, _udi_to_td):
751         Do not append zero after the decimal point in string to convert.
752
753 2009-09-17  Alexander Monakov  <amonakov@ispras.ru>
754
755         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Add bounds only
756         for ARRAY_REFs.  Use array_ref_{low,up}_bound to determine bounds.
757
758 2009-09-17  Martin Jambor  <mjambor@suse.cz>
759
760         * common.opt (fipa-sra): New switch.
761         * opts.c (decode_options): Turn flag_ipa_sra on for opt2.
762         * timevar.def (TV_IPA_SRA): New timevar.
763         * params.def (ipa-sra-ptr-growth-factor): New parameter.
764         * doc/invoke.texi: Document -fipa-sra and ipa-sra-ptr-growth-factor.
765         * tree-sra.c: Include cgraph.c.
766         (enum sra_mode): Added SRA_MODE_EARLY_IPA.
767         (struct access): Added fields stmt, grp_maybe_modified, grp_scalar_ptr
768         and grp_not_necessarilly_dereferenced.
769         (func_param_count): New variable.
770         (encountered_apply_args): New variable.
771         (bb_dereferences): New variable.
772         (final_bbs): New variable.
773         (no_accesses_representant): New variable.
774         (no_accesses_p): New function.
775         (dump_access): Dump the new fields.
776         (sra_initialize): Set encountered_apply_args to false.
777         (get_ssa_base_param): New function.
778         (mark_parm_dereference): New function.
779         (create_access): Caring for INIDRECT_REFs and different handling of
780         varialble length accesses in early IPA SRA.  Store the stmt - a new
781         parameter - to the new access.
782         (build_access_from_expr_1): New parameter stmt, passed to
783         create_access.  Handle INDIRECT_REFs.
784         (build_access_from_expr): Pass the current statement to
785         build_access_from_expr_1.
786         (disqualify_ops_if_throwing_stmt): Trigger only in intraprocedural
787         passes.
788         (build_accesses_from_assign): Pass the current statement to
789         build_access_from_expr_1.  Do not create assign links in IPA-SRA.
790         (scan_function): Call handle_ssa_defs on phi nodes.  Set bits in
791         final_bbs when necessary.  Check for calls to __builtin_apply_args.
792         Fixup EH info if anythng was changed.
793         (is_unused_scalar_param): New function.
794         (ptr_parm_has_direct_uses): New function.
795         (find_param_candidates): New function.
796         (mark_maybe_modified): New function.
797         (analyze_modified_params): New function.
798         (propagate_dereference_distances): New function.
799         (dump_dereferences_table): New function.
800         (analyze_caller_dereference_legality): New function.
801         (unmodified_by_ref_scalar_representative): New function.
802         (splice_param_accesses): New function.
803         (decide_one_param_reduction): New function.
804         (enum ipa_splicing_result): New type.
805         (splice_all_param_accesses): New function.
806         (get_param_index): New function.
807         (turn_representatives_into_adjustments): New function.
808         (analyze_all_param_acesses): New function.
809         (get_replaced_param_substitute): New function.
810         (get_adjustment_for_base): New function.
811         (replace_removed_params_ssa_names): New function.
812         (sra_ipa_reset_debug_stmts): New function.
813         (sra_ipa_modify_expr): New function.
814         (sra_ipa_modify_assign): New function.
815         (convert_callers): New function.
816         (modify_function): New function.
817         (ipa_sra_preliminary_function_checks): New function.
818         (ipa_early_sra): New function.
819         (ipa_early_sra_gate): New function.
820         (pass_early_ipa_sra): New variable.
821         * Makefile.in (tree-sra.o): Add cgraph.h to dependencies.
822
823 2009-09-17  Michael Matz  <matz@suse.de>
824
825         PR middle-end/41347
826         * tree.c (build_type_attribute_qual_variant): Export.
827         * tree.h (build_type_attribute_qual_variant): Declare.
828         * tree-inline.c (remap_type_1): Use it to build variants with
829         the original qualifiers and attributes.
830
831 2009-09-17  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
832
833         * cfglayout.c (fixup_reorder_chain): Accept conditional jumps
834         without a fallthrough edge.
835
836 2009-09-16  DJ Delorie  <dj@redhat.com>
837
838         * config/m32c/m32c.c (m32c_emit_epilogue): Check for R8C or M16C
839         chip and ignore the "fast_interrupt" attribute if so.
840
841 2009-09-16  Richard Henderson  <rth@redhat.com>
842
843         PR middle-end/41360
844         * cfgbuild.c (find_bb_boundaries): Really re-instate 2009-09-02
845         barrier fix.
846
847 2009-09-16  Richard Henderson  <rth@redhat.com>
848
849         PR target/41246
850         * tree-cfg.c (verify_gimple_call): Validate that gimple_call_chain
851         is set only if DECL_NO_STATIC_CHAIN is unset.
852         * tree-nested.c (iter_nestinfo_start, iter_nestinfo_next): New.
853         (FOR_EACH_NEST_INFO): New.
854         (walk_all_functions): Use it.
855         (finalize_nesting_tree): Likewise.
856         (unnest_nesting_tree): Likewise.
857         (free_nesting_tree): Use iter_nestinfo_start, iter_nestinfo_next.
858         (get_chain_decl, get_chain_field): Reset DECL_NO_STATIC_CHAIN.
859         (convert_gimple_call): Early out if gimple_call_chain already set.
860         (convert_all_function_calls): Iterate until no new functions
861         require a static chain.
862         (finalize_nesting_tree_1): Assert DECL_NO_STATIC_CHAIN is unset
863         when building a trampoline.  Use dump_function_to_file instead
864         of dump_function.
865         (lower_nested_functions): Open dump_file.  Validate that decls
866         that have DECL_NO_STATIC_CHAIN from the front end don't have that
867         bit reset by this pass.
868
869 2009-09-16  Michael Matz  <matz@suse.de>
870
871         PR fortran/41212
872         * tree.h (struct tree_decl_common): Add decl_restricted_flag,
873         shorten decl_common_unused.
874         (DECL_RESTRICTED_P): New accessor.
875         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Use it
876         to disambiguate marked decls and restrict pointers.
877
878 2009-09-16  Richard Henderson  <rth@redhat.com>
879
880         PR middle-end/41360
881         * cfgbuild.c (find_bb_boundaries): Re-instate 2009-09-02 barrier fix.
882
883 2009-09-16  Jakub Jelinek  <jakub@redhat.com>
884
885         * integrate.c (set_block_abstract_flags): Call
886         set_decl_abstract_flags also on BLOCK_NONLOCALIZED_VARs.
887
888 2009-09-16  Richard Guenther  <rguenther@suse.de>
889
890         PR middle-end/34011
891         * tree-flow-inline.h (may_be_aliased): Compute readonly variables
892         as non-aliased.
893
894 2009-09-16  DJ Delorie  <dj@redhat.com>
895             Kaz Kojima  <kkojima@gcc.gnu.org>
896
897         * config/sh/sh.c (output_stack_adjust): Add new argument frame_p.
898         (sh_expand_prologue): Update calls to output_stack_adjust.
899         (sh_expand_epilogue): Likewise.
900
901 2009-09-15  Adam Nemet  <anemet@caviumnetworks.com>
902
903         PR bootstrap/41349
904         * reorg.c (redundant_insn): Don't count notes or DEBUG_INSNs when
905         trying to limit the extent of searches in the insn stream.
906
907 2009-09-15  Nathan Froyd  <froydnj@codesourcery.com>
908             Jakub Jelinek  <jakub@redhat.com>
909
910         PR target/41175
911         PR target/40677
912         * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence
913         problem.
914         (SAVRES_NOINLINE_GPRS_SAVES_LR, SAVRES_NOINLINE_FPRS_SAVES_LR,
915         SAVRES_NOINLINE_FPRS_DOESNT_RESTORE_LR): New strategy bits.
916         (rs6000_savres_strategy): Always save FP registers inline if the
917         target doesn't support hardware double-precision.  Set the above
918         bits in return value when needed.
919         (rs6000_savres_routine_sym): Fix computation for cache selector.
920         Mark the generated symbol as a function.  Rename exitp argument to
921         lr.  Move code for determining the name of the symbol...
922         (rs6000_savres_routine_name): ...here.  New function.  Add cases for
923         getting the names right on AIX and 64-bit Linux.
924         (savres_routine_name): New variable.
925         (rs6000_make_savres_rtx): Rename exitp argument to lr.  Don't assert
926         lr isn't set when savep.  Use r12 resp. r1 instead of r11 depending
927         on what the target routine uses as a base register.  If savep && lr
928         describe saving of r0 into memory slot.
929         (rs6000_emit_prologue): Correct use of call_used_regs.  Fix out of
930         line calls for AIX ABI.
931         (rs6000_output_function_prologue): Use rs6000_savres_routine_name to
932         determine FP save/restore functions.
933         (rs6000_emit_stack_reset): Handle savres if sp_offset != 0 and
934         frame_reg_rtx != sp_reg_rtx.  Use gen_add3_insn instead of
935         gen_addsi3.
936         (rs6000_emit_epilogue): Adjust computation of restore_lr.
937         Duplicate restoration of LR and execute the appropriate one
938         depending on whether GPRs are being restored inline.  Set r11 from
939         offsetted frame_reg_rtx instead of sp_reg_rtx; if frame_reg_rtx is
940         r11, adjust sp_offset.  Use gen_add3_insn instead of gen_addsi3.
941         Fix out of line calls for AIX ABI.
942         * config/rs6000/rs6000.md (*return_and_restore_fpregs_aix_<mode>):
943         New insn.
944         * config/rs6000/spe.md (*save_gpregs_spe): Use explicit match for
945         register 11.
946         (*restore_gpregs_spe): Likewise.
947         (*return_and_restore_gpregs_spe): Likewise.
948         * config/rs6000/linux64.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
949         Define to empty string unconditionally.
950         * config/rs6000/sysv4.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
951         Define to empty string unconditionally.
952         (GP_SAVE_INLINE, FP_SAVE_INLINE): Handle TARGET_64BIT the same as
953         !TARGET_64BIT.
954
955 2009-09-15  Jan Hubicka  <jh@suse.cz>
956
957         * doc/invoke.texi (inline-insns-auto): Drop from 60 to 50.
958         * params.def (inline-insns-auto): Likewise.
959
960 2009-09-15  Martin Jambor  <mjambor@suse.cz>
961
962         * ipa-inline.c (estimate_function_body_sizes): Dump info about
963         individual statements only at TDF_DETAILS dump level.  Format
964         source for 80 characters per line.
965
966 2009-09-15  Christian Bruel  <christian.bruel@st.com>
967
968         * regrename.c (do_replace): Update REG_DEAD notes.
969
970 2009-09-15  Revital Eres  <eres@il.ibm.com>
971
972         * doc/tm.texi (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Document.
973         * targhooks.c (default_builtin_support_vector_misalignment):
974         New builtin function.
975         * targhooks.h (default_builtin_support_vector_misalignment):
976         Declare.
977         * target.h (builtin_support_vector_misalignment):
978         New field in struct gcc_target.
979         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Call
980         new builtin function.
981         * target-def.h (TARGET_SUPPORT_VECTOR_MISALIGNMENT):
982         Define.
983         * config/rs6000/rs6000.c
984         (rs6000_builtin_support_vector_misalignment): New function.
985         (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Define.
986
987 2009-09-15  Jie Zhang  <jie.zhang@analog.com>
988
989         * config/bfin/bfin.c (length_for_loop): Use NONDEBUG_INSN_P
990         instead of INSN_P.
991         (bfin_optimize_loop): Likewise.
992         (bfin_gen_bundles): Likewise.
993         (workaround_speculation): Likewise.
994         (find_load): Return NULL_RTX for debug_insn.
995
996 2009-09-15  Uros Bizjak  <ubizjak@gmail.com>
997
998         * config/alpha/alpha.md (smaxsf3): Disable for IEEE mode.
999         (sminsf3): Ditto.
1000
1001 2009-09-14  DJ Delorie  <dj@redhat.com>
1002
1003         * config/mep/mep.h (JUMP_TABLES_IN_TEXT_SECTION): Define.
1004         * config/mep/mep.c (mep_emit_cbranch): Don't use BEQZ/BNEI in
1005         VLIW mode.
1006
1007 2009-09-14  Richard Henderson  <rth@redhat.com>
1008             Jakub Jelinek  <jakub@redhat.com>
1009
1010         * builtins.c (expand_builtin_synchronize): Use gimple_build_asm_vec.
1011         * cfgbuild.c (make_edges): Handle asm goto.
1012         * cfglayout.c (fixup_reorder_chain): Likewise.
1013         * cfgrtl.c (patch_jump_insn): Likewise.
1014         * gimple-pretty-print.c (dump_gimple_asm): Likewise.
1015         * gimple.c (gimple_build_asm_1): Add and use nlabels parameter.
1016         (gimple_build_asm_vec): Add and use labels parameter.
1017         (gimple_build_asm): Remove.
1018         (walk_gimple_asm): Walk labels too.
1019         * gimple.def (GIMPLE_ASM): Update docs.
1020         * gimple.h: Update decls.
1021         (struct gimple_statement_asm): Change nc to use unsigned char;
1022         add nl member.
1023         (gimple_asm_nlabels): New.
1024         (gimple_asm_label_op, gimple_asm_set_label_op): New.
1025         * gimplify.c (gimplify_asm_expr): Copy labels from ASM_EXPR
1026         into gimple_build_asm_vec.
1027         * jump.c (mark_jump_label_asm): New.
1028         (mark_jump_label): Use it.
1029         (redirect_jump_1): Handle asm goto.
1030         (invert_jump_1): Soft fail if X is null.
1031         * recog.c (extract_asm_operands): New.
1032         (asm_noperands): Use it; handle asm labels.
1033         (decode_asm_operands): Use extract_asm_operands.
1034         (asm_operand_ok): Properly handle empty string.
1035         * reg-stack.c (get_asm_operands_in_out): Rename from
1036         get_asm_operand_n_inputs; use extract_asm_operands; return both
1037         inputs and outputs by reference; update all callers.
1038         * rtl.def (ASM_OPERANDS): Add label vector as operand 6.
1039         * rtl.h (ASM_OPERANDS_LABEL_VEC): New.
1040         (ASM_OPERANDS_LABEL_LENGTH, ASM_OPERANDS_LABEL): New.
1041         (ASM_OPERANDS_SOURCE_LOCATION): Renumber.
1042         (extract_asm_operands): Declare.
1043         * stmt.c (expand_asm_operands): Add and use labels parameter.
1044         (check_unique_operand_names): Likewise.
1045         (resolve_asm_operand_names, resolve_operand_name_1): Likewise.
1046         (expand_asm_stmt): Handle asm labels.
1047         * tree-cfg.c (make_gimple_asm_edges): New.
1048         (make_edges): Use it.
1049         (cleanup_dead_labels): Handle asm labels.
1050         (is_ctrl_altering_stmt): Likewise.
1051         (gimple_redirect_edge_and_branch): Likewise.
1052         * tree.def (ASM_EXPR): Add 5th operand.
1053         * tree.h (ASM_LABELS): New.
1054         (resolve_asm_operand_names): Update decl.
1055
1056         * c-parser.c (c_parser_asm_statement): Parse asm goto.
1057         (c_parser_asm_goto_operands): New.
1058         * c-tree.h (build_asm_expr): Update decl.
1059         * c-typeck.c (build_asm_expr): Add and use labels parameter.
1060         * doc/extend.texi: Document asm goto.
1061
1062 2009-09-14  Richard Henderson  <rth@redhat.com>
1063
1064         * except.h: Update declarations.
1065         (struct pointer_map_t): Forward declare.
1066         (ERT_UNKNOWN, ERT_THROW, ERT_CATCH): Remove.
1067         (struct eh_landing_pad_d, eh_landing_pad): New.
1068         (struct eh_catch_d, eh_catch): New.
1069         (struct eh_region_d): Remove next_region_sharing_label, aka,
1070         label, tree_label, landing_pad, post_landing_pad, resume,
1071         may_contain_throw.  Rename region_number to index.  Remove
1072         u.eh_catch, u.eh_throw.  Rename u.eh_try.eh_catch to first_catch.
1073         Add u.must_not_throw, landing_pads, exc_ptr_reg, filter_reg.
1074         (VEC(eh_landing_pad,gc)): New.
1075         (struct eh_status): Remove last_region_number.  Add lp_array,
1076         throw_stmt_table, ttype_data, ehspec_data.
1077         (ehr_next, FOR_ALL_EH_REGION_AT): New.
1078         (FOR_ALL_EH_REGION_FN, FOR_ALL_EH_REGION): New.
1079         * except.c (lang_protect_cleanup_actions): Return tree.
1080         (struct ehl_map_entry): Remove.
1081         (init_eh_for_function): Push zero entries for region and lp_array.
1082         (gen_eh_region): Add to region_array immediately.
1083         (gen_eh_region_catch): Operate on eh_catch objects.
1084         (gen_eh_landing_pad): New.
1085         (get_eh_region_may_contain_throw, get_eh_region_tree_label): Remove.
1086         (get_eh_region_no_tree_label, set_eh_region_tree_label): Remove.
1087         (get_eh_region_from_number, get_eh_region_from_number_fn): New.
1088         (get_eh_landing_pad_from_number_fn): New.
1089         (get_eh_landing_pad_from_number): New.
1090         (get_eh_region_from_lp_number_fn): New.
1091         (get_eh_region_from_lp_number): New.
1092         (expand_resx_stmt, note_eh_region_may_contain_throw): Remove.
1093         (get_exception_pointer, get_exception_filter): Remove.
1094         (collect_eh_region_array, can_be_reached_by_runtime): Remove.
1095         (current_function_has_exception_handlers): Simplify.
1096         (bring_to_root, eh_region_replaceable_by_p): Remove.
1097         (replace_region, hash_type_list, hash_eh_region): Remove.
1098         (eh_regions_equal_p, merge_peers, remove_unreachable_regions): Remove.
1099         (label_to_region_map, num_eh_regions): Remove.
1100         (get_next_region_sharing_label, must_not_throw_labels): Remove.
1101         (find_exception_handler_labels): Remove.
1102         (duplicate_eh_regions_0, find_prev_try): Remove.
1103         (struct duplicate_eh_regions_data): New.
1104         (duplicate_eh_regions_1): Rewrite.
1105         (duplicate_eh_regions): Return a pointer map instead of an
1106         integer offset.
1107         (copy_eh_region_1, copy_eh_region, push_reachable_handler): Remove.
1108         (redirect_eh_edge_to_label): Remove.
1109         (eh_region_outermost): Rewrite using eh_region pointers
1110         instead of integers.
1111         (add_ttypes_entry): Update for ttype_data move to eh_status.
1112         (add_ehspec_entry): Rewrite with VEC instead of varray.
1113         (assign_filter_values): Likewise.  Export.
1114         (build_post_landing_pads, connect_post_landing_pads): Remove.
1115         (dw2_build_landing_pads): Rewrite to use lp_array.
1116         (struct sjlj_lp_info, sjlj_find_directly_reachable_regions): Remove.
1117         (sjlj_assign_call_site_values): Rewrite to use lp_array.
1118         (sjlj_emit_dispatch_table, sjlj_build_landing_pads): Likewise.
1119         (sjlj_mark_call_sites): Update for landing pad numbers.
1120         (finish_eh_generation): Rewrite.
1121         (gate_handle_eh): Do nothing for no eh tree.
1122         (pass_rtl_eh): Move up near finish_eh_generation.
1123         (remove_eh_landing_pad): New.
1124         (remove_eh_handler): Export.
1125         (remove_eh_region, remove_eh_handler_and_replace): Remove.
1126         (for_each_eh_label): Rewrite to use lp_array.
1127         (make_reg_eh_region_note): New.
1128         (make_reg_eh_region_note_nothrow_nononlocal): New.
1129         (insn_could_throw_p): New.
1130         (copy_reg_eh_region_note_forward): New.
1131         (copy_reg_eh_region_note_backward): New.
1132         (check_handled, add_reachable_handler): Remove.
1133         (reachable_next_level, foreach_reachable_handler): Remove.
1134         (arh_to_landing_pad, arh_to_label, reachable_handlers): Remove.
1135         (get_eh_region_and_lp_from_rtx): New.
1136         (get_eh_region_from_rtx): New.
1137         (can_throw_internal_1, can_throw_external_1): Remove.
1138         (can_throw_internal): Use get_eh_region_from_rtx.
1139         (can_throw_external): Use get_eh_region_and_lp_from_rtx.
1140         (insn_nothrow_p, can_nonlocal_goto): New.
1141         (expand_builtin_eh_common, expand_builtin_eh_pointer): New.
1142         (expand_builtin_eh_filter, expand_builtin_eh_copy_values): New.
1143         (add_action_record): Use VEC not varray.
1144         (collect_one_action_chain): Update for eh_region changes.
1145         (convert_to_eh_region_ranges): Make static.  Use VEC not varray.
1146         Use get_eh_region_and_lp_from_rtx.
1147         (gate_convert_to_eh_region_ranges): New.
1148         (pass_convert_to_eh_region_ranges): Use it.
1149         (push_uleb128, push_sleb128): Use VEC not varray.
1150         (output_one_function_exception_table): Likewise.
1151         (dump_eh_tree): Update for eh_region changes.
1152         (verify_eh_tree): Likewise.
1153         (verify_eh_region, default_init_unwind_resume_libfunc): Remove.
1154         * tree-eh.c: Include target.h.
1155         (add_stmt_to_eh_lp_fn): Rename from add_stmt_to_eh_region_fn.
1156         Don't disallow GIMPLE_RESX; adjust argument check.
1157         (add_stmt_to_eh_lp): Rename from add_stmt_to_eh_region.
1158         (record_stmt_eh_region): Update for landing pad numbers;
1159         generate a landing pad if necessary.
1160         (remove_stmt_from_eh_lp): Rename from remove_stmt_from_eh_region.
1161         (remove_stmt_from_eh_lp_fn): Similarly.
1162         (lookup_stmt_eh_lp_fn): Rename from lookup_stmt_eh_region_fn.
1163         Update for lp numbers; don't special case missing throw_stmt_table.
1164         (lookup_expr_eh_lp): Similarly.
1165         (lookup_stmt_eh_lp): Rename from lookup_stmt_eh_region.
1166         (eh_seq, eh_region_may_contain_throw): New.
1167         (struct leh_state): Add ehp_region.
1168         (struct leh_tf_state): Remove eh_label.
1169         (emit_post_landing_pad): New.
1170         (emit_resx, emit_eh_dispatch): New.
1171         (note_eh_region_may_contain_throw): New.
1172         (frob_into_branch_around): Take eh_region not eh label;
1173         emit eh code into eh_seq.
1174         (honor_protect_cleanup_actions): Early exit for no actions.  Don't
1175         handle EXC_PTR_EXPR, FILTER_EXPR.  Use gimple_build_eh_must_not_throw,
1176         lower_eh_must_not_throw.  Emit code to eh_seq.
1177         (lower_try_finally_nofallthru): Emit eh code to eh_seq.
1178         (lower_try_finally_onedest): Likewise.
1179         (lower_try_finally_copy): Likewise.
1180         (lower_try_finally_switch): Likewise.
1181         (lower_try_finally): Initialize ehp_region.
1182         (lower_catch): Update for eh_catch objects.
1183         (lower_eh_filter): Don't handle must_not_throw.
1184         (lower_eh_must_not_throw): New.
1185         (lower_cleanup): Don't set eh_label.
1186         (lower_eh_constructs_2): Resolve eh builtins.
1187         Handle GIMPLE_EH_MUST_NOT_THROW.
1188         (lower_eh_constructs): Initialize eh_region_may_contain_throw.
1189         Add eh_seq to the end of the function body.
1190         (make_eh_dispatch_edges): New.
1191         (make_eh_edge): Remove.
1192         (make_eh_edges): Simplify for landing pads.
1193         (redirect_eh_edge_1): New.
1194         (redirect_eh_edge): Use it.
1195         (redirect_eh_dispatch_edge): New.
1196         (stmt_could_throw_p): Use a switch.  Allow RESX.
1197         (stmt_can_throw_external): Use lookup_stmt_eh_lp.
1198         (stmt_can_throw_internal): Likewise.
1199         (maybe_clean_eh_stmt_fn, maybe_clean_eh_stmt): New.
1200         (maybe_clean_or_replace_eh_stmt): Update for landing pads.
1201         (maybe_duplicate_eh_stmt_fn, maybe_duplicate_eh_stmt): New.
1202         (gate_refactor_eh): New.
1203         (pass_refactor_eh): Use it.
1204         (lower_resx, execute_lower_resx, pass_lower_resx): New.
1205         (lower_eh_dispatch, execute_lower_eh_dispatch): New.
1206         (gate_lower_ehcontrol, pass_lower_eh_dispatch): New.
1207         (remove_unreachable_handlers): Rename from
1208         tree_remove_unreachable_handlers; rewrite for landing pads;
1209         call remove_eh_handler directly.
1210         (remove_unreachable_handlers_no_lp): New.
1211         (unsplit_eh, unsplit_all_eh): New.
1212         (tree_empty_eh_handler_p, all_phis_safe_to_merge): Remove.
1213         (cleanup_empty_eh_merge_phis, cleanup_empty_eh_move_lp): New.
1214         (cleanup_empty_eh_unsplit): New.
1215         (cleanup_empty_eh): Rewrite.
1216         (cleanup_all_empty_eh): New.
1217         (execute_cleanup_eh): Rename from cleanup_eh.  Remove unreachable
1218         handlers first.  Use unsplit_all_eh, cleanup_all_empty_eh.
1219         (gate_cleanup_eh): New.
1220         (pass_cleanup_eh): Use it.
1221         (verify_eh_edges): Move later in file.  Expect one EH edge.
1222         (verify_eh_dispatch_edge): New.
1223
1224         * Makefile.in (FUNCTION_H): Use vecprim.h, not varray.h.
1225         (gtype-desc.o): Add TARGET_H.
1226         (tree.o): Use EXCEPT_H, not except.h.
1227         (cfgbuild.o): Add EXPR_H.
1228         (GTFILES): Add vecprim.h.
1229         * builtins.c (expand_builtin): Handle BUILT_IN_EH_POINTER,
1230         BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES.
1231         * builtins.def (BUILT_IN_UNWIND_RESUME, BUILT_IN_EH_POINTER,
1232         BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES): New.
1233         * calls.c (emit_call_1): Use make_reg_eh_region_note.
1234         * cfgbuild.c (control_flow_insn_p): Use can_nonlocal_goto; tidy
1235         calls to can_throw_internal.
1236         (rtl_make_eh_edge): Use get_eh_landing_pad_from_rtx.
1237         (make_edges): Don't handle RESX; use can_nonlocal_goto.
1238         * cfgexpand.c (expand_gimple_stmt_1): Don't handle RESX.
1239         (expand_gimple_stmt): Use make_reg_eh_region_note.
1240         (expand_debug_expr): Don't handle EXC_PTR_EXPR and FILTER_EXPR.
1241         (gimple_expand_cfg): Don't call convert_from_eh_region_ranges,
1242         or find_exception_handler_labels.
1243         * cfgrtl.c (rtl_verify_flow_info_1): Don't handle RESX.  Assert
1244         there is exacly one EH edge.  Use can_nonlocal_goto and
1245         can_throw_internal.
1246         * cgraphunit.c (update_call_expr): Use maybe_clean_eh_stmt_fn.
1247         (cgraph_materialize_all_clones): Use maybe_clean_or_replace_eh_stmt.
1248         * combine.c (can_combine_p, try_combine): Use insn_nothrow_p.
1249         * cse.c (count_reg_usage, insn_live_p): Use insn_could_throw_p.
1250         * dce.c (deletable_insn_p_1): Don't test may_trap_p.
1251         (deletable_insn_p): Use insn_nothrow_p; reorder nonjump insn test.
1252         * dse.c (scan_insn): Use insn_could_throw_p.
1253         * emit-rtl.c (try_split): Use copy_reg_eh_region_note_backward.
1254         * expr.c (expand_expr_real): Use make_reg_eh_region_note.
1255         (expand_expr_real_1): Don't handle RESX, EXC_PTR, or FILTER_EXPR.
1256         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't handle
1257         EXC_PTR_EXPR or FILTER_EXPR.
1258         (tree_expr_nonzero_warnv_p): Likewise.
1259         * function.h: Include vecprim.h, not varray.h
1260         (struct rtl_eh): Remove filter, exc_ptr, built_landing_pad members;
1261         move ttype_data and ehspec_data members to struct eh_status; change
1262         action_record_data member to a VEC.
1263         * gcse.c (hash_scan_set): Use can_throw_internal.
1264         * gengtype.c (open_base_files): Add target.h to gtype-desc.c.
1265         * gimple-iterator.c (gsi_replace): Use maybe_clean_or_replace_eh_stmt.
1266         * gimple-low.c (lower_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.
1267         (block_may_fallthru): Don't handle RESX_EXPR.
1268         * gimple-pretty-print.c (dump_gimple_label): Dump EH_LANDING_PAD_NR.
1269         (dump_gimple_eh_must_not_throw, dump_gimple_eh_dispatch): New.
1270         (dump_gimple_stmt): Dump landing pad information with TDF_EH;
1271         handle GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH.
1272         * gimple.c (gss_for_code): Handle GIMPLE_EH_MUST_NOT_THROW,
1273         GIMPLE_EH_DISPATCH, GIMPLE_RESX.
1274         (gimple_size): Likewise.
1275         (gimple_build_eh_dispatch, gimple_build_eh_must_not_throw): New.
1276         (gimple_build_resx): Use gimple_build_with_ops.
1277         (DEFTREECODE): Don't handle EXC_PTR_EXPR, FILTER_EXPR.
1278         (is_gimple_val): Likewise.
1279         (is_gimple_stmt): Remove RESX_EXPR.
1280         * gimple.def (GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH): New.
1281         (GIMPLE_RESX): Reorder with other EH constructs.
1282         * gimple.h (struct gimple_statement_eh_mnt): New.
1283         (struct gimple_statement_eh_ctrl): Rename from gimple_statement_resx.
1284         (gimple_eh_filter_must_not_throw): Remove.
1285         (gimple_eh_filter_set_must_not_throw): Remove.
1286         (gimple_eh_must_not_throw_fndecl): New.
1287         (gimple_eh_dispatch_region, gimple_eh_dispatch_set_region): New.
1288         (is_gimple_resx): New.
1289         * gimplify.c (gimplify_expr): Don't handle EXC_PTR_EXPR, RESX_EXPR.
1290         Don't copy EH_FILTER_MUST_NOT_THROW.
1291         * gsstruct.def (GSS_EH_MNT, GSS_EHCONTROL): New.
1292         * ipa-inline.c (estimate_function_body_sizes): Don't try to
1293         handle must_not_throw_labels specially.
1294         * ipa-pure-const.c (check_call): Update debug statement for LP.
1295         * ipa-type-escape.c (check_operand): Don't handle EXC_PTR or FILTER.
1296         * ipa-utils.c (get_base_var): Likewise.
1297         * libfunc.h (LTI_unwind_resume, unwind_resume_libfunc): Remove.
1298         * lower-subreg.c (move_eh_region_note): Remove.
1299         (resolve_simple_move): Use copy_reg_eh_region_note_forward.
1300         * omp-low.c (new_omp_context): Update for eh_lp_nr.
1301         (create_task_copyfn): Likewise.
1302         (maybe_catch_exception): Use gimple_build_eh_filter.
1303         * optabs.c (emit_libcall_block): Update test for no-nonlocal-goto
1304         REG_EH_REGION.  Use make_reg_eh_region_note_nothrow_nononlocal.
1305         * passes.c (init_optimization_passes): Add pass_lower_eh_dispatch
1306         and pass_lower_resx.
1307         * print-tree.c (print_node): Dump EH_LANDING_PAD_NR.
1308         * recog.c (peephole2_optimize): Use copy_reg_eh_region_note_backward,
1309         can_throw_internal, can_nonlocal_goto.
1310         * reload1.c (fixup_eh_region_note): Use insn_could_throw_p,
1311         copy_reg_eh_region_note_forward.
1312         (emit_input_reload_insns): Use copy_reg_eh_region_note_forward.
1313         (emit_output_reload_insns): Likewise.
1314         (copy_eh_notes): Remove.
1315         * rtl.def (RESX): Remove.
1316         * rtl.h: Update declarations.
1317         * sese.c (graphite_copy_stmts_from_block): Use maybe_duplicate_eh_stmt.
1318         * tree-cfg.c (make_edges): Handle GIMPLE_EH_DISPATCH.
1319         (update_eh_label): Remove.
1320         (cleanup_dead_labels_eh): New.
1321         (cleanup_deal_labels): Use it instead of update_eh_label.
1322         (gimple_merge_blocks): Update landing pad data structure when
1323         removing a landing pad label.
1324         (remove_useless_stmts_tc): Remove gimple_eh_filter_must_not_throw
1325         test; handle GIMPLE_EH_MUST_NOT_THROW.
1326         (is_ctrl_altering_stmt): Handle GIMPLE_EH_DISPATCH.
1327         (verify_gimple_assign_single): Don't handle EXC_PTR or FILTER_EXPR.
1328         (verify_types_in_gimple_stmt): Handle GIMPLE_EH_DISPATCH.
1329         (verify_stmt): Likewise.  Verify landing pads.
1330         (gimple_redirect_edge_and_branch): Handle GIMPLE_EH_DISPATCH.
1331         (gimple_duplicate_bb): Use maybe_duplicate_eh_stmt.
1332         (struct move_stmt_d): Add eh_map.
1333         (move_stmt_eh_region_nr, move_stmt_eh_region_tree_nr): New.
1334         (move_stmt_r): Remap eh region numbers in builtin calls,
1335         resx and eh_dispatch.
1336         (move_block_to_fn): Remove eh_offset parameter.  Use
1337         maybe_duplicate_eh_stmt_fn.
1338         (find_outermost_region_in_block): Operate on eh_region pointers
1339         instead of region numbers.
1340         (move_sese_region_to_fn): Expect eh_map instead of eh_offset from
1341         duplicate_eh_regions.
1342         * tree-cfgcleanup.c (tree_forwarder_block_p): Move entry block edge
1343         test earlier.  Disallow EH landing pads.
1344         * tree-cfa.c (create_tree_common_ann): Don't set ann->rn.
1345         * tree-flow.h: Update declarations.
1346         (struct tree_ann_common_d): Replace rn with lp_nr.
1347         * tree-inline.c (copy_tree_body_r): Don't handle RESX_EXPR.
1348         (remap_eh_region_nr, remap_eh_region_tree_nr): New.
1349         (remap_gimple_stmt): Remap eh region numbers in builtin calls,
1350         resx and eh_dispatch.
1351         (copy_bb): Use maybe_duplicate_eh_stmt_fn.
1352         (copy_edges_for_bb): Use make_eh_dispatch_edges.
1353         (copy_cfg_body): Expect eh_map instead of eh_region_offset
1354         from duplicate_eh_regions.
1355         (estimate_num_insns): Don't handle EXC_PTR_EXPR or FILTER_EXPR;
1356         update RESX; handle EH_DISPATCH.
1357         (expand_call_inline): Set eh_lp_nr, not eh_region.
1358         (maybe_inline_call_in_expr): Likewise.
1359         * tree-inline.h (struct copy_body_data): Replace eh_region with
1360         eh_lp_nr, eh_region_offset with eh_map.
1361         * tree-optimize.c (execute_fixup_cfg): Use maybe_clean_eh_stmt.
1362         * tree-pass.h (pass_lower_eh_dispatch, pass_lower_resx): New.
1363         * tree-pretty-print.c (dump_generic_node): Don't handle
1364         EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR.
1365         * tree-sra.c (scan_function): Use maybe_clean_eh_stmt.
1366         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Don't handle
1367         EXC_PTR_EXPR, FILTER_EXPR.
1368         * tree-ssa-operands.c (get_expr_operands): Likewise.
1369         * tree-ssa-propagate.c (valid_gimple_rhs_p): Likewise.
1370         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
1371         (ao_ref_init_from_vn_reference): Likewise.
1372         * tree-ssa-sink.c (statement_sink_location): Likewise.
1373         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
1374         (mark_virtual_phi_result_for_renaming): Export.  Tidy.
1375         * tree-ssa-pre.c (get_or_alloc_expr_for): Don't handle
1376         EXC_PTR_EXPR, FILTER_EXPR.
1377         (is_exception_related): Remove.
1378         (compute_avail): Don't call it.
1379         * tree-ssa-structalias.c: Remove VEC definitions for int and unsigned.
1380         * tree.c (find_decls_types_in_eh_region): Update for eh_region changes.
1381         (find_decls_types_in_node): Use FOR_ALL_EH_REGION_FN.
1382         (build_common_builtin_nodes): Add enable_cxa_end_cleanup parameter.
1383         Build EH builtins.
1384         (build_resx): Remove.
1385         * tree.def (EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR): Remove.
1386         * tree.h: Update declarations.
1387         (EH_FILTER_MUST_NOT_THROW): Remove.
1388         (struct tree_label_decl): Add eh_landing_pad_nr.
1389         (EH_LANDING_PAD_NR): New.
1390         * value-prof.c (gimple_ic): Tidy variable names.  Update for
1391         landing pad numbers.
1392         (gimple_stringop_fixed_value): Tidy variable names.  Assert
1393         that neither call stmt can throw.
1394         * vecprim.h (uchar): New.
1395         (VEC(uchar,heap), VEC(uchar,gc)): New.
1396
1397         * c-common.c (c_define_builtins): Update call to
1398         build_common_builtin_nodes.
1399         * c-parser.c (c_parse_file): Don't call
1400         default_init_unwind_resume_libfunc.
1401
1402 2009-09-14  Richard Sandiford  <rdsandiford@googlemail.com>
1403
1404         * config/mips/mips-protos.h (mips_cfun_has_cprestore_slot_p): Declare.
1405         (mips_cprestore_address_p): Likewise.
1406         (mips_save_gp_to_cprestore_slot): Likewise.
1407         (mips_restore_gp): Rename to...
1408         (mips_restore_gp_from_cprestore_slot): ...this.
1409         (mips_must_initialize_gp_p): Declare.
1410         (mips_emit_save_slot_move): Likewise.
1411         (mips_output_load_label): Return nothing.
1412         (mips_eh_uses): Declare.
1413         * config/mips/mips.h (TARGET_SPLIT_CALLS): Require epilogue_completed.
1414         (TARGET_CPRESTORE_DIRECTIVE): New macro.
1415         (TARGET_ABSOLUTE_JUMPS): Likewise.
1416         (EH_USES): Likewise.
1417         (FIRST_PSEUDO_REGISTER): Update comment.
1418         (MIPS_ABSOLUTE_JUMP): New macro, extracted from...
1419         (MIPS_CALL): ...here.
1420         (REGISTER_NAMES): Add $cprestore.
1421         * config/mips/mips.c (machine_function): Remove has_gp_insn_p.
1422         Add load_label_length, has_inflexible_gp_insn_p,
1423         has_flexible_gp_insn_p, must_initialize_gp_p and
1424         must_restore_gp_when_clobbered_p.
1425         (mips_expand_call): Don't generate split instructions here.
1426         (mips_split_call): Update the call to mips_restore_gp after
1427         the above name change.
1428         (mips16_cfun_returns_in_fpr_p): Move earlier in file.
1429         (mips_find_gp_ref): New function.
1430         (mips_insn_has_inflexible_gp_ref_p): Likewise.
1431         (mips_cfun_has_inflexible_gp_ref_p): Likewise.
1432         (mips_insn_has_flexible_gp_ref_p): Likewise.
1433         (mips_cfun_has_flexible_gp_ref_p): Likewise.
1434         (mips_function_has_gp_insn): Delete.
1435         (mips_global_pointer): Drop the df_regs_ever_live_p check.
1436         Use the new functions above.  Only return INVALID_REGNUM
1437         for TARGET_ABSOLUTE_JUMPS.
1438         (mips_must_initialize_gp_p): New function.
1439         (mips_get_cprestore_base_and_offset): New function, extracted from...
1440         (mips_cprestore_slot): ...here.  Take a bool parameter.
1441         (mips_cfun_has_cprestore_slot_p): New function.
1442         (mips_cprestore_address_p): Likewise.
1443         (mips_save_gp_to_cprestore_slot): Likewise.
1444         (mips_restore_gp): Rename to...
1445         (mips_restore_gp_from_cprestore_slot): ...this.  Assert
1446         epilogue_completed.  Update the call to mips_cprestore_slot.
1447         Test cfun->machine->must_restore_gp_when_clobbered_p.
1448         (mips_direct_save_slot_move_p): New function.
1449         (mips_emit_save_slot_move): Likewise.
1450         (mips_output_cplocal): Test mips_must_initialize_gp_p () instead
1451         of cfun->machine->global_pointer.
1452         (mips_output_function_prologue): Check mips_must_initialize_gp_p ().
1453         (mips_save_reg): Use mips_emit_save_slot_move.
1454         (mips_expand_prologue): Set must_initialize_gp_p.
1455         Use mips_cfun_has_cprestore_slot_p.  Use gen_potential_cprestore
1456         for all cprestore saves.  Emit a use_cprestore instruction after
1457         setting up the cprestore slot.
1458         (mips_restore_reg): Use mips_emit_save_slot_move.
1459         (mips_process_load_label): New function.
1460         (mips_load_label_length): Likewise.
1461         (mips_output_load_label): Don't return asm: output it here instead.
1462         Use mips_process_load_label.
1463         (mips_adjust_insn_length): Adjust the length of branch instructions
1464         that have length MAX_PIC_BRANCH_LENGTH.
1465         (mips_output_conditional_branch): Update the call to
1466         mips_output_load_label.  Assume the branch target is OPERANDS[0]
1467         rather than OPERANDS[1].  Use MIPS_ABSOLUTE_JUMP for absolute jumps.
1468         (mips_output_order_conditional_branch): Swap the meaning of
1469         OPERANDS[0] and OPERANDS[1].
1470         (mips_variable_issue): Don't count ghost instructions.
1471         (mips_expand_ghost_gp_insns): New function.
1472         (mips_reorg): Rerun mips_reorg_process_insns if it returns true.
1473         (mips_output_mi_thunk): Set must_initialize_gp_p.
1474         (mips_eh_uses): New function.
1475         * config/mips/predicates.md (cprestore_save_slot_operand)
1476         (cprestore_load_slot_operand): New predicates.
1477         * config/mips/mips.md (UNSPEC_POTENTIAL_CPRESTORE): New unspec.
1478         (UNSPEC_MOVE_GP): Likewise.
1479         (UNSPEC_CPRESTORE, UNSPEC_RESTORE_GP, UNSPEC_EH_RETURN)
1480         (UNSPEC_CONSTTABLE_INT, UNSPEC_CONSTTABLE_FLOAT): Bump to make room.
1481         (CPRESTORE_SLOT_REGNUM): New register.
1482         (MAX_PIC_BRANCH_LENGTH): New constant.
1483         (jal_macro): Use MIPS_ABSOLUTE_JUMPS.
1484         (length): Use MAX_PIC_BRANCH_LENGTH as a placeholder for PIC long
1485         branches.  Fix commentary.
1486         (loadgp_newabi_<mode>): Change from unspec_volatile to unspec.
1487         Only split if mips_must_initialize_gp_p; expand to nothing otherwise.
1488         Change type to "ghost".
1489         (loadgp_absolute_<mode>): Likewise.
1490         (loadgp_rtp_<mode>): Likewise.
1491         (copygp_mips16): Likewise.
1492         (loadgp_blockage): Remove redundant mode attribute.
1493         (potential_cprestore): New instruction.
1494         (cprestore): Turn into an unspec set.
1495         (use_cprestore): New instruction.
1496         (*branch_fp): Swap operands 0 and 1.  Remove redundant mode attribute.
1497         (*branch_fp_inverted): Likewise.
1498         (*branch_order<mode>): Likewise.
1499         (*branch_order<mode>_inverted): Likewise.
1500         (*branch_equality<mode>): Likewise.
1501         (*branch_equality<mode>_inverted): Likewise.
1502         (*branch_bit<bbv><mode>): Likewise.
1503         (*branch_bit<bbv><mode>_inverted): Likewise.
1504         (*branch_equality<mode>_mips16): Remove redundant mode.
1505         (jump): Turn into a define_expand.
1506         (*jump_absolute): New instruction.
1507         (*jump_pic): Likewise.
1508         (*jump_mips16): Rename previously-unnamed pattern.  Remove
1509         redundant mode attribute.
1510         (restore_gp): Split on epilogue_completed rather than
1511         reload_completed.  Change type to "ghost".
1512         (move_gp<mode>): New instruction.
1513         * config/mips/mips-dsp.md (mips_bposge): Swap operands 0 and 1.
1514         Remove redundant mode attribute.
1515         * config/mips/mips-ps-3d.md (bc1any4t): Likewise.
1516         (bc1any4f, bc1any2t, bc1any2f): Likewise.
1517         (*branch_upper_lower, *branch_upper_lower_inverted): Likewise.
1518
1519 2009-09-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
1520
1521         PR target/41210
1522         * config/rs6000/rs6000.c (rs6000_function_value): V2DF and V2DI
1523         are returned in the same register (vs34 or v2) that Altivec vector
1524         types are returned in.
1525         (rs6000_libcall_value): Ditto.
1526
1527         PR target/41331
1528         * config/rs6000/rs6000.c (rs6000_emit_move): Use gen_add3_insn
1529         instead of explicit addsi3/adddi3 calls.
1530         (rs6000_split_multireg_move): Ditto.
1531         (rs6000_emit_allocate_stack): Ditto.
1532         (rs6000_emit_prologue): Ditto.
1533         (rs6000_output_mi_thunk): Ditto.
1534
1535         * config/rs6000/rs6000.md (bswapdi*): Don't assume the pointer
1536         size is 64 bits if we can use 64-bit registers.
1537
1538 2009-09-14  Bernd Schmidt  <bernd.schmidt@analog.com>
1539
1540         * config/bfin/bfin.c (bfin_longcall_p): Don't use short calls for weak
1541         symbols.
1542
1543         From Jie Zhang <jie.zhang@analog.com>:
1544         * config/bfin/bfin.c (bfin_expand_prologue): Ask do_link to
1545         save FP and RETS with saveall attribute.
1546         (bfin_expand_epilogue): Ask do_unlink to restore FP and RETS
1547         with saveall attribute.
1548
1549         * config/bfin/bfin.c (bfin_expand_builtin,
1550         case BFIN_BUILTIN_MULT_1X32X32): Force constants to registers for the
1551         operands.
1552
1553         From Jie Zhang <jie.zhang@analog.com>:
1554         * config/bfin/bfin.c (bfin_expand_builtin): Initialize icodes
1555         before use in two places.
1556         * config/bfin/bfin.md (AREG): Define mode iterator.
1557         (reload_in, reload_out): Use mode iterator AREG.
1558
1559 2009-09-14  Richard Guenther  <rguenther@suse.de>
1560
1561         PR middle-end/41350
1562         * dwarf2out.c (dwarf2out_begin_prologue): Adjust non-CFI asm
1563         EH personality path.
1564
1565 2009-09-13  Richard Guenther  <rguenther@suse.de>
1566             Rafael Avila de Espindola  <espindola@google.com>
1567
1568         * langhooks-def.h (LANG_HOOKS_EH_RUNTIME_TYPE): Define.
1569         (LANG_HOOKS_EH_PERSONALITY): Likewise.
1570         (LANG_HOOKS_INITIALIZER): Adjust.
1571         (lhd_pass_through_t): Declare.
1572         * langhooks.h (struct lang_hooks): Add eh_runtime_type and
1573         eh_personality.
1574         * langhooks.c (lhd_pass_through_t): New function.
1575         * dwarf2out.c (output_call_frame_info, dwarf2out_do_cfi_startproc,
1576         dwarf2out_begin_prologue): Use personality from current_function_decl.
1577         * expr.h (get_personality_function): Declare.
1578         * expr.c (get_personality_function): New function.
1579         (build_personality_function): Likewise.
1580         * libfuncs.h (libfunc_index): Remove LTI_eh_personality.
1581         (eh_personality_libfunc): Remove.
1582         * optabs.c (build_libfunc_function): New function split out from ...
1583         (init_one_libfunc): ... here.
1584         * tree.h (DECL_FUNCTION_PERSONALITY): New.
1585         (tree_function_decl): Add personality.
1586         (lhd_gcc_personality): Declare.
1587         (build_personality_function): Likewise.
1588         * tree.c (gcc_eh_personality_decl): New.
1589         (lhd_gcc_personality): New function.
1590         * except.h (lang_eh_runtime_type): Remove.
1591         (enum eh_personality_kind): New.
1592         (build_personality_function): Declare.
1593         (function_needs_eh_personality): Declare.
1594         * except.c (lang_eh_runtime_type): Remove.
1595         (function_needs_eh_personality): New function.
1596         (add_type_for_runtime): Call lang_hooks.type_for_runtime instead.
1597         (sjlj_emit_function_enter, output_function_exception_table):
1598         Use personality from current_function_decl.
1599         * tree-eh.c (lower_eh_constructs): Set DECL_FUNCTION_PERSONALITY.
1600         * tree-inline.c (tree_can_inline_p): Do not inline across different
1601         EH personalities.
1602         (expand_call_inline): Likewise.  Adjust the callers EH personality.
1603         (tree_function_versioning): Copy DECL_FUNCTION_PERSONALITY.
1604         * cgraph.c (cgraph_add_new_function): Set DECL_FUNCTION_PERSONALITY.
1605         * Makefile.in (cgraph.o): Add $(EXCEPT_H) dependency.
1606         (c-parser.o): Likewise
1607         * c-tree.h (c_eh_initialized_p): Remove.
1608         (c_maybe_initialize_eh): Likewise.
1609         * c-decl.c (finish_decl): Don't call c_maybe_initialize_eh.
1610         (finish_decl): Don't call c_maybe_initialize_eh.
1611         (c_eh_initialized_p): Remove.
1612         (c_maybe_initialize_eh): Likewise.
1613         * c-parser.c (c_parser_omp_construct): Likewise.
1614         (c_parse_file): Initialize exception handling.
1615
1616 2009-09-13  Kai Tietz  <kai.tietz@onevision.com>
1617
1618         * config.gcc (tm_file): Remove i386/biarch32.h
1619         for i?86-w64-mingw* case.
1620         (i?86-*-mingw* andx86_64-*-mingw*): Add multilib
1621         support.
1622         * config.host: Set for x64 mingw the option
1623         use_long_long_for_widest_fast_int to yes.
1624
1625 2009-09-13  Eric Botcazou  <ebotcazou@adacore.com>
1626
1627         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
1628         * dbxout.c (dbxout_function_end): Do not test DECL_IGNORED_P.
1629         (dbxout_begin_function): Likewise.
1630         * final.c (dwarf2_debug_info_emitted_p): New predicate.
1631         (final_start_function): Do not emit debug info if DECL_IGNORED_P is
1632         set on the function.
1633         (final_end_function): Likewise.
1634         (final_scan_insn): Likewise.
1635         (rest_of_handle_final): Likewise.
1636         * varasm.c (assemble_start_function): Likewise.
1637         * config/rs6000/xcoff.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
1638
1639 2009-09-12  Jason Merrill  <jason@redhat.com>
1640
1641         * dbgcnt.c (dbg_cnt_process_single_pair): constify.
1642         * opts.c (common_handle_option): constify.
1643
1644 2009-09-12  Gerald Pfeifer  <gerald@pfeifer.com>
1645
1646         * doc/install.texi (avr): Remove obsolete reference site.
1647
1648 2009-09-12  Gerald Pfeifer  <gerald@pfeifer.com>
1649         
1650         * doc/install.texi (Binaries): Adjust AIX link.
1651
1652 2009-09-12  Akim Demaille  <demaille@gostai.com>
1653
1654         * doc/invoke.texi (-fstrict-aliasing): Correct two examples.
1655         Use an imperative sentence.
1656
1657 2009-09-11  Richard Henderson  <rth@redhat.com>
1658
1659         * gsstruct.def (DEFGSSTRUCT): Remove printable-name argument; add
1660         structure-name and has-tree-operands arguments; update all entries.
1661         * gimple.def (DEFGSCODE): Replace 3rd argument with GSS_symbol;
1662         update all entries.
1663         * gimple.c (gimple_ops_offset_): Use HAS_TREE_OP argument.
1664         (gsstruct_code_size): New.
1665         (gss_for_code_): New.
1666         (gss_for_code): Remove.
1667         (gimple_size): Rewrite using gsstruct_code_size.
1668         (gimple_statement_structure): Move to gimple.h.
1669         * gimple.h (gimple_ops_offset_, gss_for_code_): Declare.
1670         (gss_for_code, gimple_statement_structure): New.
1671         (gimple_ops): Use new arrays; tidy.
1672
1673 2009-09-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1674
1675         * config/pa/predicates.md (symbolic_operand): Require a CONST symbolic
1676         operand to be a PLUS expression.
1677         * config/pa/pa.c (pa_secondary_reload): Likewise.
1678
1679 2009-09-11  Jakub Jelinek  <jakub@redhat.com>
1680
1681         * combine.c (propagate_for_debug_subst): Call wrap_constant on top.
1682
1683         * print-rtl.c (print_rtx): Use JUMP_LABEL (in_rtx) instead of
1684         XEXP (in_rtx, 8).
1685
1686 2009-09-11  Bernd Schmidt  <bernd.schmidt@analog.com>
1687
1688         From Jie Zhang <jie.zhang@analog.com>:
1689         * doc/extend.texi (node Function Attributes): Document l2
1690         function attribute.
1691         (node Blackfin Variable Attributes): Document l2 variable attributes.
1692
1693 2009-09-11  Loren J. Rittle  <ljrittle@acm.org>
1694
1695         * config.gcc (*-*-freebsd*): Enable default_use_cxa_atexit
1696         to match the system compiler's configuration at inflection point.
1697         Add comment to remark a remaining difference with system compiler.
1698
1699         * configure.ac (*-*-freebsd*): Enable check for __stack_chk_fail.
1700         * configure: Regenerate.
1701
1702 2009-09-11  Bernd Schmidt  <bernd.schmidt@analog.com>
1703
1704         From Jie Zhang <jie.zhang@analog.com>:
1705         * config/bfin/bfin.c (bfin_expand_call): Handle L2 functions.
1706         (bfin_handle_l2_attribute): New.
1707         (bfin_attribute_table): Add l2 attribute.
1708
1709 2009-09-11  Michael Matz  <matz@suse.de>
1710
1711         PR middle-end/41275
1712         * tree-inline.c (remap_decls): Don't put DECL_EXTERNAL decls
1713         on the local_decls list.
1714
1715 2009-09-11  Alexandre Oliva  <aoliva@redhat.com>
1716
1717         PR debug/41276
1718         PR debug/41307
1719         * cselib.c (cselib_expand_value_rtx_cb): Document callback
1720         interface.
1721         (cselib_expand_value_rtx_1): Use callback for SUBREGs.  Adjust
1722         for VALUEs, to implement the documented interface.
1723         * var-tracking.c (vt_expand_loc_callback): Handle SUBREGs.
1724         Adjust for VALUEs and anything else, to implement the
1725         documented interface.
1726
1727 2009-09-10  Nathan Froyd  <froydnj@codesourcery.com>
1728
1729         * config/rs6000/rs6000.h (DATA_ALIGNMENT): Check that we are dealing
1730         with actual SPE/paired vector modes before using 64-bit alignment.
1731         Check that TYPE is a REAL_TYPE for TARGET_E500_DOUBLE.
1732
1733 2009-09-10  DJ Delorie  <dj@redhat.com>
1734
1735         * config/mep/mep.md (eh_epilogue): Defer until after epilogue is
1736         emitted.
1737
1738         * config/mep/mep.h (LEGITIMATE_CONSTANT_P): New.
1739         * config/mep/mep.c (mep_legitimate_constant_p): New.
1740         * config/mep/mep-protos.h: Prototype it.
1741
1742 2009-09-10  Richard Henderson  <rth@redhat.com>
1743
1744         * print-rtl.c (print_rtx): Fix JUMP_LABEL index.
1745
1746 2009-09-10  Jason Merrill  <jason@redhat.com>
1747
1748         * tree.c (chain_index): New fn.
1749         * tree.h: Declare it.
1750
1751 2009-09-10  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1752
1753         * config/sol2-c.c (cmn_err_length_specs): Initialize
1754         scalar_identity_flag.
1755
1756 2009-09-10  Richard Henderson  <rth@redhat.com>
1757
1758         * tree.h (struct tree_decl_common): Move align member earlier;
1759         move label_decl_uid member ...
1760         (struct tree_label_decl): ... here.
1761         (LABEL_DECL_UID): Update to match.
1762
1763         * tree-cfg.c (dump_function_to_file): Dump eh tree with TDF_EH,
1764         not TDF_DETAILS.
1765
1766         * tree-cfg.c (gimple_redirect_edge_and_branch): Do
1767         gimple_try_redirect_by_replacing_jump test after no-op and EH tests.
1768
1769         * tree-cfg.c (split_edge_bb_loc): Don't disallow placement at
1770         dest_prev if the edge is complex.
1771
1772         * tree-cfg.c (is_ctrl_stmt): Use a switch.
1773
1774         * tree-cfg.c (gimple_can_merge_blocks_p): Move label and
1775         loop latch tests earlier.
1776
1777         * gimple-iterator.c (gimple_find_edge_insert_loc): Insert
1778         before GIMPLE_RETURN, not after its predecessor; insert
1779         before GIMPLE_RESX.
1780
1781         * gimple-iterator.c (gimple_find_edge_insert_loc): Use
1782         gimple_seq_empty_p to test for no PHI nodes.
1783         * tree-cfg.c (split_critical_edges): Likewise.
1784
1785         * c-common.h (c_dialect_cxx, c_dialect_objc): Boolify.
1786
1787 2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
1788
1789         * final.c (shorten_branches) : Ignore DEBUG_INSN_P instructions
1790         introduced by the VTA branch merge.
1791
1792 2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
1793
1794         * ira-conflicts.c: Use fputs or putc instead of fprintf
1795         where appropriate.
1796         * cfg.c: Ditto.
1797         * toplev.c: Ditto.
1798         * tree-switch-conversion.c: Ditto.
1799
1800 2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
1801
1802         * config/picochip/picochip.c : Ignore DEBUG_INSN_P instructions
1803         introduced by the VTA branch merge.
1804
1805 2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
1806
1807         Revert:
1808         2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
1809
1810         PR rtl-optimization/39779
1811         * expr.c (convert_modes): Return when mode == oldmode after
1812         CONST_INTs are processed.
1813
1814 2009-09-10  Nick Clifton  <nickc@redhat.com>
1815
1816         * config/mep/mep.c (mep_encode_section_info): Copy weakness
1817         attribute and referring decl when creating renamed symbol.
1818
1819 2009-09-10  Richard Guenther  <rguenther@suse.de>
1820
1821         PR middle-end/41257
1822         * cgraphunit.c (cgraph_emit_thunks): Emit thunks only for
1823         reachable nodes.
1824         (cgraph_finalize_compilation_unit): Compute reachability
1825         before emitting thunks.  Properly process aliases before
1826         possibly removing unreachable nodes.
1827
1828 2009-09-10  Richard Guenther  <rguenther@suse.de>
1829
1830         PR middle-end/41254
1831         * tree.c (struct free_lang_data_d): Add worklist member.
1832         (find_decls_types_r): Push onto the worklist instead of recursing.
1833         Handle TREE_BINFOs properly.
1834         (find_decls_types): New function wrapped around find_decls_types_r
1835         to process the worklist.
1836         (find_decls_types_in_eh_region): Use it.
1837         (find_decls_types_in_node): Likewise.
1838         (find_decls_types_in_var): Likewise.
1839         (free_lang_data_in_cgraph): Likewise.  Free the worklist.
1840         * tree.h (RECORD_OR_UNION_TYPE_P): New.
1841         (AGGREGATE_TYPE_P): Adjust.
1842
1843 2009-09-09  Jason Merrill  <jason@redhat.com>
1844
1845         * configure.ac: Check glibc version even if we have an in-tree
1846         assembler.
1847
1848 2009-09-09  Anthony Green  <green@moxielogic.com>
1849
1850         * config/moxie/moxie.md (*movsi, *movhi, *movqi): Use xor to load
1851         the constant 0 when appropriate.
1852         * config/moxie/constraints.md: Add constraint O.
1853
1854         * config/moxie/moxie.c (moxie_setup_incoming_varargs): Adjust
1855         to pass up to 6 32-bit argument values in registers.
1856         (moxie_function_arg): Ditto.
1857         (moxie_arg_partial_bytes): Ditto.
1858         * config/moxie/moxie.h (FUNCTION_ARG_ADVANCE): Ditto.
1859         (REG_PARM_STACK_SPACE): Ditto.
1860         (FUNCTION_ARG_REGNO_P): Ditto.
1861
1862         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
1863         instruction to allocate stack space.
1864
1865 2009-09-09  Segher Boessenkool  <segher@kernel.crashing.org>
1866
1867         * config/rs6000/rs6000.md (bswapdi2_64bit): Fix
1868         unnecessarily stringent constraints.  Fix address
1869         calculation in the splitters.
1870
1871 2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
1872
1873         PR rtl-optimization/39779
1874         * expr.c (convert_modes): Return when mode == oldmode after
1875         CONST_INTs are processed.
1876
1877 2009-09-09  Kai Tietz  <kai.tietz@onevision.com>
1878
1879         PR/41315
1880         * config/i386.c (ix86_can_use_return_insn_p): Check for padding0, too.
1881         (ix86_expand_prologue): Take frame.padding0 into logic of
1882         to_allocate checks.
1883         (ix86_expand_epilogue): Likewise.
1884
1885 2009-09-09  Jakub Jelinek  <jakub@redhat.com>
1886
1887         * config/t-slibgcc-elf-ver (SHLIB_MAKE_SOLINK, SHLIB_INSTALL_SOLINK):
1888         New variables.
1889         (SHLIB_LINK, SHLIB_INSTALL): Use them.
1890         * config/t-slibgcc-libgcc: New file.
1891         * config.gcc (powerpc*-*-linux*, powerpc*-*-gnu*): Use it.
1892
1893 2009-09-09  Martin Jambor  <mjambor@suse.cz>
1894
1895         PR tree-optimization/41089
1896         * tree-sra.c (find_var_candidates): Do not consider va_lists in
1897         early SRA.
1898
1899 2009-09-09  Richard Henderson  <rth@redhat.com>
1900
1901         * gimple.h (CASE_GIMPLE_OMP): New.
1902         (is_gimple_omp): Use it.
1903         * tree-cfg.c (is_ctrl_altering_stmt): Likewise.
1904         (verify_gimple_debug): Likewise.
1905
1906 2009-09-09  Richard Guenther  <rguenther@suse.de>
1907
1908         PR tree-optimization/41101
1909         * tree-ssa-pre.c (maximal_set): Remove.
1910         (compute_antic_aux): Treat the maximal set as implicitly all ones.
1911         Defer all blocks we didn't visit at least one successor.
1912         (add_to_exp_gen): Do not add to the maximal set.
1913         (make_values_for_phi): Likewise.
1914         (compute_avail): Likewise.
1915         (init_pre): Do not allocate the maximal set.
1916         (execute_pre): Do not dump it.
1917
1918 2009-09-09  Martin Jambor  <mjambor@suse.cz>
1919
1920         * tree-cfg.c (verify_gimple_phi): Check that gimple_phi_result is
1921         an SSA_NAME rather than a is_gimple_variable.
1922
1923 2009-09-09  Richard Guenther  <rguenther@suse.de>
1924
1925         PR middle-end/41317
1926         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Remove
1927         code dealing with plain pointer bases.
1928         (maybe_fold_offset_to_reference): Likewise.
1929         (maybe_fold_stmt_addition): Adjust.
1930
1931 2009-09-09  Richard Guenther  <rguenther@suse.de>
1932
1933         * tree.c (free_lang_data_in_type): Do not free the type variant
1934         chains.
1935         (free_lang_data): Merge char_type_node with its properly signed
1936         variant.
1937         (pass_ipa_free): Collect after freeing language specific data.
1938
1939 2009-09-09  Michael Matz  <matz@suse.de>
1940
1941         PR middle-end/41268
1942         * cfgexpand.c (expand_gimple_stmt_1): Use an int for storing
1943         SUBREG_PROMOTED_UNSIGNED_P, instead of a bool.
1944         * rtl.h (struct rtx, SUBREG_PROMOTED_UNSIGNED_P): Update comments
1945         to reflect reality.
1946
1947 2009-09-08  DJ Delorie  <dj@redhat.com>
1948
1949         * config/mep/mep.c (conversions[]): Add "ml" pattern.
1950
1951 2009-09-04  Jason Merrill  <jason@redhat.com>
1952
1953         * tree.c (tree_find_value): Remove.
1954         * tree.h: Remove prototype.
1955         * varasm.c (assemble_external): Use value_member instead.
1956
1957 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
1958
1959         * toplev.c (process_options): Choose default debugging type when
1960         gtoggle enables debug info and type is unset.
1961
1962 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
1963
1964         PR debug/41276
1965         PR debug/41307
1966         * cselib.c (cselib_expand_value_rtx_1): Don't return copy of
1967         invalid subreg.
1968
1969 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
1970
1971         * configure: Rebuilt with modified libtool.m4.
1972
1973 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
1974
1975         PR debug/41229
1976         PR debug/41291
1977         PR debug/41300
1978         * tree-ssa.c (execute_update_addresses_taken): Update debug insns.
1979
1980 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
1981
1982         * tree-ssa-loop-ivopts.c (get_phi_with_result): Remove.
1983         (remove_statement): Likewise.
1984         (rewrite_use_nonlinear_expr): Adjust.
1985         (remove_unused_ivs): Collect SSA NAMEs to remove and call...
1986         * tree-ssa.c (release_defs_bitset): ... this.  New.
1987         * tree-flow.h (release_defs_bitset): Declare.
1988
1989 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
1990
1991         PR debug/41232
1992         * tree-ssa-phiopt.c (minmax_replacement): Skip debug stmts
1993         in the middle block.
1994
1995 2009-09-08  Kai Tietz  <kai.tietz@onevision.com>
1996
1997         * tree-ssa-reassoc.c (find_operand_rank): Cast pointer
1998         via intptr_t to long type.
1999         (insert_operand_rank): Cast long type via intptr_t to
2000         pointer type.
2001         * genattrtab.c (RTL_HASH): Use intptr_t to cast from
2002         pointer to scalar.
2003         * c-pretty-print.c (pp_c_tree_decl_identifier): Cast
2004         from pointer to unsigned via uintptr_t.
2005
2006         * configure.ac (GCC_STDINT_TYPES): Initialize intptr_t,
2007         uintptr_t, HAVE_INTTYPES_H, HAVE_STDINT_H, HAVE_UINTPTR_T,
2008         and HAVE_INTPTR_T.
2009         * configure: Regenerated.
2010         * config.in: Regenerated
2011         * system.h (stdint.h): Add include.
2012         (inttypes.h): Likewise.
2013         * Makefile.in (aclocal): Add config/stdint.m4.
2014         * aclocal.m4: Regenerated.
2015
2016 2009-09-08  Bernd Schmidt  <bernd.schmidt@analog.com>
2017
2018         * config/bfin/bfin.c (np_check_regno, np_after_branch): New static
2019         variables.
2020         (note_np_check_stores): New function.
2021         (harmless_null_pointer_p): New function.
2022         (trapping_loads_p): New args NP_REG and AFTER_NP_BRANCH.  Callers
2023         changed.  Take into account whether we're in the shadow of a condjump
2024         that tested NP_REG for NULL.
2025         Lose all code that tested for SEQUENCEs.
2026         (workaround_speculation): Avoid inserting NOPs for loads that are
2027         either always executed or a NULL pointer.
2028
2029 2009-09-08  Jan Hubicka  <jh@suse.cz>
2030
2031         * doc/invoke.texi (early-inlining-insns): Reduce from 12 to 8.
2032         * params.def (early-inlining-insns): Likewise.
2033
2034 2009-09-08  Jakub Jelinek  <jakub@redhat.com>
2035
2036         PR rtl-optimization/41239
2037         * sched-int.h (struct deps): Add last_function_call_may_noreturn field.
2038         * sched-rgn.c (deps_join): Join also last_function_call_may_noreturn
2039         lists.
2040         * sched-deps.c (sched_analyze_insn): Prevent moving trapping insns
2041         across calls, as the calls might not always return normally.
2042         (call_may_noreturn_p): New function.
2043         (deps_analyze_insn): Update last_function_call_may_noreturn list.
2044         (init_deps): Initialize it.
2045         (remove_from_deps): Also remove calls from
2046         last_function_call_may_noreturn list.
2047
2048 2009-09-07  Richard Henderson  <rth@redhat.com>
2049
2050         * tree-ssa-sccvn.c (vn_reference_lookup_3): Don't assume there are
2051         more VR->OPERANDS than LHS operands.  Free LHS before returning.
2052
2053 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
2054
2055         * config/bfin/bfin.md (UNSPEC_VOLATILE_STALL): New constant.
2056         (attr "addrtype"): New member "spreg".
2057         Use it if mem_spfp_address_operand is true for the address.
2058         (attr "type"): New entry "stall".
2059         (cpu_unit "load"): New.
2060         (insn_reservations "load32", "loadp", "loadi"): Add reservation of
2061         "load".
2062         (insn_reservation "loadsp"): New.
2063         (insn_reservation "load_stall1"): New.
2064         (insn_reservation "load_stall3"): New.
2065         (stall): New insn.
2066         * config/bfin/predicates.md (const1_operand, const3_operand): New.
2067         (mem_p_address_operand): Exclude stack and frame pointer based
2068         addresses.
2069         (mem_spfp_address_operand): New; match them here.
2070         * config/bfin/bfin.c (add_sched_insns_for_speculation): New function.
2071         (bfin_reorg): Call it if scheduling insns.
2072         (bfin_gen_bundles): Remove dummy insns created by
2073         add_sched_insns_for_speculation.
2074
2075         From Jie Zhang <jie.zhang@analog.com>:
2076         * config/bfin/bfin-protos.h (enum bfin_cpu_type, bfin_cpu_type,
2077         bfin_si_revision, bfin_workarounds): Move these ...
2078         * config/bfin/bfin.h: ... here.
2079
2080         From Mike Frysinger  <michael.frysinger@analog.com>
2081         * config/bfin/bfin-protos.h (bfin_cpu_type): Add BFIN_CPU_BF542M,
2082         BFIN_CPU_BF544M, BFIN_CPU_BF547M, BFIN_CPU_BF548M, and BFIN_CPU_BF549M.
2083         * config/bfin/bfin.c (bfin_cpus[]): Add 0.3 for bf542m, bf544m,
2084         bf547m, bf548m, and bf549m.
2085         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF542M__
2086         for BFIN_CPU_BF542M, __ADSPBF544M__ for BFIN_CPU_BF544M,
2087         __ADSPBF547M__ for BFIN_CPU_BF547M, __ADSPBF548M__ for
2088         BFIN_CPU_BF548M, and __ADSPBF549M__ for BFIN_CPU_BF549M.
2089         * config/bfin/t-bfin-elf (MULTILIB_MATCHES): Select bf532-none for
2090         bf542m-none, bf544m-none, bf547m-none, bf548m-none, and bf549m-none.
2091         * config/bfin/t-bfin-linux (MULTILIB_MATCHES): Likewise.
2092         * config/bfin/t-bfin-uclinux (MULTILIB_MATCHES): Likewise.
2093         * doc/invoke.texi (Blackfin Options): Document that -mcpu now accepts
2094         bf542m, bf544m, bf547m, bf548m, and bf549m.
2095
2096         From Jie Zhang <jie.zhang@analog.com>:
2097         * config/bfin/predicates.md (p_register_operand): New predicate.
2098         (dp_register_operand): New predicate.
2099         * config/bfin/bfin-protos.h (WA_05000074): Define.
2100         (ENABLE_WA_05000074): Define.
2101         * config/bfin/bfin.c (bfin_cpus[]): Add WA_05000074 for all cpus.
2102         (bfin_gen_bundles): Put dsp32shiftimm instruction in slot[0].
2103         * config/bfin/bfin.md (define_attr type): Add dsp32shiftimm.
2104         (define_attr addrtype): Allow load/store register to be P register.
2105         (define_attr storereg): New.
2106         (define_cpu_unit anomaly_05000074): New.
2107         (define_insn_reservation dsp32shiftimm): New.
2108         (define_insn_reservation dsp32shiftimm_anomaly_05000074): New.
2109         (define_insn_reservation loadp): Cannot use slot2.
2110         (define_insn_reservation loadsp): Cannot use slot2.
2111         (define_insn_reservation storep): Cannot use slot2. Does not
2112         apply when working around 05000074.
2113         (define_insn_reservation storep_anomaly_05000074): New.
2114         (define_insn_reservation storei): Does not apply when working
2115         around 05000074.
2116         (define_insn_reservation storei_anomaly_05000074): New.
2117         (define_attr length): Add dsp32shiftimm case.
2118         (define_insn movsi_insn32, movsi_insv, ashlsi3_insn, ashrsi3,
2119         ror_one, rol_one, lshrsi3, lshrpdi3, ashrpdi3, movhiv2hi_low,
2120         movhiv2hi_high, composev2hi, packv2hi, movv2hi_hi,
2121         ssashiftv2hi3, ssashifthi3, ssashiftsi3, lshiftv2hi3, lshifthi3):
2122         Set type as dsp32shiftimm for dsp32shiftimm alternatives.
2123
2124 2009-09-07  Martin Jambor  <mjambor@suse.cz>
2125
2126         PR middle-end/41282
2127         * tree-sra.c (create_artificial_child_access): Return NULL if
2128         build_ref_for_offset fails.
2129         (propagate_subacesses_accross_link): Allow build_ref_for_offset
2130         and create_artificial_child_access to fail.
2131
2132 2009-09-06  Dmitry Gorbachev  <d.g.gorbachev@gmail.com>
2133
2134         PR c++/41214
2135         * unwind-dw2.c (uw_init_context_1): Mark noinline.
2136         * config/ia64/unwind-ia64.c (uw_init_context_1): Likewise.
2137         * config/xtensa/unwind-dw2-xtensa.c (uw_init_context_1): Likewise.
2138
2139 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
2140
2141         * config/bfin/bfin.c (bfin_optimize_loop): When creating a new basic
2142         block, ensure it has an exit edge.  Emit a barrier after a jump.
2143
2144 2009-09-07  Nick Clifton  <nickc@redhat.com>
2145
2146         * gcc.c (this_is_linker_script): New variable.  Like
2147         this_is_library_file but for the %T constructor.
2148         (end_going_arg): If this_is_linker_script is set then locate the
2149         script and insert a --script switch before it
2150         (do_spec_2): Initialise this_is_linker_script.
2151         (do_spec_1): Likewise.  Handle %T construct.
2152         (eval_spec_function): Preserve this_is_linker_script.
2153         * doc/invoke.texi: Document %T construct in spec files.
2154         * config/m32c/m32c.h (LIB_SPEC): Use it.
2155
2156 2009-09-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
2157
2158         * rtl.h (PREFETCH_SCHEDULE_BARRIER_P): New macro.
2159         * sched-deps.c (sched_analyze_2): Make prefetches a hard barrier
2160         when volatile flag is set.
2161         * doc/rtl.texi (PREFETCH_SCHEDULE_BARRIER_P): Add documentation pieces.
2162
2163 2009-09-06  Eric Botcazou  <ebotcazou@adacore.com>
2164
2165         PR bootstrap/41241
2166         * combine-stack-adj.c (try_apply_stack_adjustment): Handle stores.
2167         (combine_stack_adjustments_for_block): Allow insns between stack
2168         adjustments and stores with corresponding pre-(dec|inc)rement or
2169         pre-modify operation.
2170
2171 2009-09-06  Jakub Jelinek  <jakub@redhat.com>
2172
2173         PR bootstrap/41241
2174         * combine-stack-adj.c (struct csa_memlist): Rename to...
2175         (struct csa_reflist): ... this.  Rename mem field to ref.
2176         (free_csa_memlist): Rename to...
2177         (free_csa_reflist): ... this.
2178         (record_one_stack_memref): Rename to...
2179         (record_one_stack_ref): ... this.  Handle also REG_P.
2180         (try_apply_stack_adjustment): Handle also REG_P.
2181         (struct record_stack_memrefs_data): Rename to...
2182         (struct record_stack_refs_data): ... this.  Rename memlist field to
2183         reflist.
2184         (record_stack_memrefs): Rename to...
2185         (record_stack_refs): ... this.  For DEBUG_INSNs keep traversing
2186         subexpressions instead of failing when a MEM contains SP references.
2187         For SP itself in DEBUG_INSNs queue it also onto reflist chain.
2188         (combine_stack_adjustments_for_block): Adjust for mem to ref renaming.
2189
2190 2009-09-06  Richard Guenther  <rguenther@suse.de>
2191
2192         PR middle-end/41144
2193         * tree.c (build_array_type): Do not record types marked
2194         with structural equality in the canonical type hashtable.
2195
2196 2009-09-06  Richard Guenther  <rguenther@suse.de>
2197
2198         PR middle-end/41261
2199         * tree-ssa-alias.c (refs_may_alias_p_1): Bail out for function decls.
2200
2201 2009-09-05  Richard Guenther  <rguenther@suse.de>
2202
2203         PR middle-end/41181
2204         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Use the correct type.
2205
2206 2009-09-05  Richard Guenther  <rguenther@suse.de>
2207
2208         PR debug/41273
2209         * tree-ssa-operands.c (get_tmr_operands): Pass through opf_no_vops.
2210
2211 2009-09-05  Richard Guenther  <rguenther@suse.de>
2212
2213         PR middle-end/41271
2214         * tree-ssa.c (useless_type_conversion_p): Drop qualifiers
2215         before comparing function argument types.
2216
2217 2009-09-05  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
2218
2219         PR target/41024
2220         * config/i386/mingw-w64.h (ASM_SPEC): Pass -v instead of -V to
2221         the assembler.
2222
2223 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
2224
2225         Revert:
2226         2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
2227
2228         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
2229         locators before emit_insn is called.
2230
2231 2009-09-04  Vladimir Makarov  <vmakarov@redhat.com>
2232
2233         PR bootstrap/41241
2234         * ira.c (update_equiv_reg): Revert my previous patch for the PR.
2235         * reginfo.c (resize_reg_info): Call allocate_reg_info if necessary.
2236         (reginfo_init): Don't call allocate_reg_info.
2237
2238 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
2239
2240         PR target/41262
2241         * config/alpha/alpha.c (alpha_does_function_need_gp): Use
2242         NONDEBUG_INSN_P instead of INSN_P.
2243
2244 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
2245
2246         PR debug/41225
2247         * tree-vect-stmts.c (vect_stmt_relevant_p): Skip debug uses.
2248
2249 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
2250
2251         PR target/41252
2252         * config/arm/vfp.md (*cmpdf_split_vfp): Fix src mode in the second
2253         pattern of the split.
2254
2255 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
2256
2257         * toplev.c (process_options): Move setter of flag_var_tracking
2258         before other tests that depend on it.  Move down setter of
2259         flag_rename_registers.  Don't enable var-tracking-assignments
2260         by default if selective scheduling is enabled.  Warn if both
2261         are enabled.
2262
2263 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
2264
2265         * var-tracking.c (dv_is_decl_p): Adjust NULL behavior to match
2266         comment.  Use switch statement to catch overlaps between rtx
2267         and tree codes.  Accept FUNCTION_DECLs in addition to those in...
2268         (IS_DECL_CODE): ... here. Remove.
2269         (check_value_is_not_decl): Remove.
2270         (dv_from_decl, dv_from_value): Check after conversion.
2271
2272 2009-09-04  Richard Guenther  <rguenther@suse.de>
2273
2274         PR middle-end/41257
2275         * (cgraph_finalize_compilation_unit): Move finalizing aliases
2276         after emitting tunks.  Move emitting thunks and ctors from ...
2277         (cgraph_optimize): ... here.  Remove redundant
2278         cgraph_analyze_functions.
2279         * varasm.c (find_decl_and_mark_needed): Remove no longer
2280         necessary check.
2281         (finish_aliases_1): Adjust check for thunk aliases.
2282
2283 2009-09-04  Daniel Gutson  <dgutson@codesourcery.com>
2284
2285         * config/arm/arm.md (ctzsi2): Added braces
2286         to avoid warning that broke booststrap.
2287
2288 2009-09-04  Martin Jambor  <mjambor@suse.cz>
2289
2290         PR tree-optimization/41112
2291         * tree-sra.c (build_ref_for_offset_1): Signal that we cannot
2292         handle variable-bounded arrays.
2293         (expr_with_var_bounded_array_refs_p): New function.
2294         (analyze_access_subtree): Call expr_with_var_bounded_array_refs_p.
2295
2296 2009-09-04  Wolfgang Gellerich  <gellerich@de.ibm.com>
2297
2298         * config/s390/2097.md: Removed two incorrect bypasses.
2299         (z10_fsimpdf): Fixed latency.
2300         (z10_fhex): New insn_reservation.
2301         (z10_floaddf): Fixed latency.
2302         (z10_floadsf): Fixed latency.
2303         (z10_ftrunctf): Fixed latency.
2304         (z10_ftruncdf): Fixed latency.
2305         * config/s390/s390.c (z10_cost): Fixed values.
2306         (s390_adjust_priority): Added z10 path.
2307         * config/s390/s390.md (type): Added fhex.
2308         (*mov<mode>_64dfp): Updated type attribute.
2309         (*mov<mode>_64): Updated type attribute.
2310         (*mov<mode>_31): Updated type attribute.
2311         (*mov<mode>"): Likewise.
2312         * config/s390/2084.md (x_fsimpdf): Updated condition.
2313
2314 2009-09-04  Andreas Krebbel  <krebbel1@de.ibm.com>
2315
2316         * config/s390/s390.md ("*fmadd<mode>", "*fmsub<mode>"): Enable mem
2317         RTXs in the predicate for operand 1.
2318
2319 2009-09-03  Daniel Gutson  <dgutson@codesourcery.com>
2320
2321         * config/arm/arm.md (UNSPEC_RBIT): New constant.
2322         (rbitsi2): New insn.
2323         (ctzsi2): New expand.
2324         * config/arm/arm.h (CTZ_DEFINED_VALUE_AT_ZERO): New macro.
2325
2326 2009-09-03  Martin Jambor  <mjambor@suse.cz>
2327
2328         * tree-sra.c (duplicate_expr_for_different_base): Removed.
2329         (create_artificial_child_access): Use build_ref_for_offset instead
2330         of duplicate_expr_for_different_base.
2331         (propagate_subacesses_accross_link): Likewise.
2332
2333 2009-09-03  Richard Sandiford  <rdsandiford@googlemail.com>
2334
2335         * config/mips/mips.c (USEFUL_INSN_P): Use NONDEBUG_INSN_P instead
2336         of INSN_P.
2337         (mips16e_collect_argument_saves): Skip debug instructions.
2338         (mips_74k_agen_init): Use CALL_P || JUMP_P instead of !NONJUMP_INSN_P.
2339         (mips16_lay_out_constants): Use USEFUL_INSN_P instead of INSN_P.
2340         (r10k_insert_cache_barriers): Likewise.
2341         (mips_reorg_process_insns): Likewise.
2342
2343 2009-09-03  Vladimir Makarov  <vmakarov@redhat.com>
2344
2345         PR bootstrap/41241
2346         * ira.c (update_equiv_reg): Remove check on class likely spill.
2347
2348 2009-09-03  Jakub Jelinek  <jakub@redhat.com>
2349
2350         PR debug/41236
2351         * dwarf2out.c (loc_descriptor): Don't use SUBREG_REG macro on
2352         SIGN_EXTEND or ZERO_EXTEND.  Don't assume there is a REG inside of
2353         it or SUBREG.
2354
2355         PR debug/41238
2356         * function.c (assign_parm_find_stack_rtl): Don't set mem attributes on
2357         the stack slot if it is passed by invisible reference.
2358         * var-tracking.c (vt_add_function_parameters): Handle arguments passed
2359         by invisible reference.
2360
2361 2009-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
2362
2363         * config/bfin/linux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
2364         * config/bfin/uclinux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
2365         * config/bfin/bfin.h (TARGET_SUPPORTS_SYNC_CALLS): Provide default of
2366         0.
2367         * config/bfin/sync.md: New file.
2368         * config/bfin/bfin.md: Include it.
2369         (UNSPEC_ATOMIC): New.
2370         (UNSPEC_ONES): Provide a unique number.
2371
2372         From Jie Zhang <jie.zhang@analog.com>:
2373         * config/bfin/bfin.c (ret_regs): New.
2374         (must_save_fp_p): Don't return true because of frame_pointer_needed.
2375         (must_save_rets_p): New.
2376         (n_regs_saved_by_prologue): Use must_save_rets_p instead of
2377         current_function_is_leaf.
2378         (do_link): Likewise.
2379         (do_unlink): Likewise.
2380         (expand_interrupt_handler_prologue): Use ret_regs array.
2381         (expand_interrupt_handler_epilogue): Use ret_regs array and
2382         pass return register to gen_return_internal.
2383         (bfin_expand_epilogue): Pass return register to
2384         gen_return_internal.
2385         (bfin_expand_call): Explicitly clobber RETS.
2386         * config/bfin/bfin.h (FUNCTION_RETURN_REGISTERS): Define.
2387         * config/bfin/bfin.md (call_symbol_fdpic, call_value_symbol_fdpic,
2388         call_insn_fdpic, call_value_insn_fdpic, call_symbol,
2389         call_value_symbol, call_insn, call_value_insn): Explicitly clobber
2390         RETS.
2391         (return_internal): Take a reg rtx rather than the register number.
2392
2393 2009-09-03  H.J. Lu  <hongjiu.lu@intel.com>
2394
2395         * tree-parloops.c (parallelize_loops): Cast to HOST_WIDE_INT
2396         when comparing against estimated_loop_iterations_int return.
2397
2398 2009-09-03  Richard Guenther  <rguenther@suse.de>
2399
2400         * dwarf2out.c (dwarf2out_do_cfi_asm): Remove check of
2401         eh_personality_libfunc.
2402
2403 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
2404
2405         * tree-parloops.c (separate_decls_in_region): Add space.
2406
2407 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
2408
2409         * tree-parloops.c (separate_decls_in_region): Change the condition
2410         checking if there are reductions in the loop.
2411
2412 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
2413
2414         PR tree-optimization/38275
2415         * tree-parloops.c (parallelize_loops): Replace profitability condition
2416         for expected number of iterations.
2417
2418 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
2419
2420         * doc/invoke.texi (BUILD_CONFIG): Document --with-build-config.
2421         (bootstrap-debug): Explain conditions in which it becomes default.
2422         (bootstrap-debug-big): Rather than duplicate bootstrap-debug,
2423         make it add to it.
2424
2425 2009-09-03  Namhyung Kim  <namhyung@gmail.com>
2426
2427         * doc/invoke.texi (Optimize Options): Move
2428         -finline-small-functions to the -O2 list.
2429
2430 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
2431
2432         * toplev.c (process_options): Enable var-tracking-assignments
2433         by default if var-tracking is enabled.
2434
2435 2009-09-02  David Daney  <ddaney@caviumnetworks.com>
2436
2437         * cfgbuild.c (find_bb_boundaries): Split blocks containing a
2438         barrier.
2439         * emit-rtl.c (prev_nonnote_insn_bb): New function.
2440         * rtl.h (prev_nonnote_insn_bb): Declare it.
2441
2442 2009-09-03  Diego Novillo  <dnovillo@google.com>
2443
2444         * cgraph.c (cgraph_node_for_decl): New.
2445         * cgraph.h (cgraph_node_for_decl): Declare.
2446         * tree.c (host_integerp): Return 0 if T is NULL.
2447
2448 2009-09-03  Diego Novillo  <dnovillo@google.com>
2449
2450         * tree.h (struct alias_pair): Move from varasm.c.
2451         (alias_pairs): Likewise.
2452         (TYPE_MAXVAL): Define.
2453         (TYPE_MINVAL): Define.
2454         (iterative_hash_host_wide_int): Declare.
2455         (remove_unreachable_alias_pairs): Declare.
2456         * tree-pass.h (pass_ipa_free_lang_data): Declare.
2457         * diagnostic.c (default_diagnostic_starter): Make extern.
2458         (default_diagnostic_finalizer): Make extern.
2459         * diagnostic.h (default_diagnostic_starter): Declare.
2460         (default_diagnostic_finalizer): Declare.
2461         (default_tree_printer): Declare.
2462         * toplev.c (default_tree_printer): Make extern.
2463
2464 2009-09-03  Richard Guenther  <rguenther@suse.de>
2465             Diego Novillo  <dnovillo@google.com>
2466
2467         * cgraph.c (cgraph_add_new_function): Remove gimplification.
2468         * cgraphunit.c (cgraph_expand_function): Do not emit
2469         associated thunks from here.
2470         (cgraph_emit_thunks): New.
2471         (cgraph_optimize): Call it.
2472         Return if any IPA pass finds an error.
2473         * varasm.c (finish_aliases_1): Ignore errorneous aliases used
2474         by thunks.
2475
2476 2009-09-03  Simon Baldwin  <simonb@google.com>
2477             Rafael Espindola  <espindola@google.com>
2478             Richard Guenther  <rguenther@suse.de>
2479             Doug Kwan  <dougkwan@google.com>
2480             Diego Novillo  <dnovillo@google.com>
2481
2482         * tree.c: Include tree-pass.h, langhooks-def.h,
2483         diagnostic.h, cgraph.h, timevar.h, except.h and debug.h.
2484         (free_lang_data_in_type): New.
2485         (need_assembler_name_p): New.
2486         (free_lang_data_in_block): New.
2487         (free_lang_data_in_decl): New.
2488         (struct free_lang_data_d): New.
2489         (add_tree_to_fld_list): New.
2490         (find_decls_types_r): New.
2491         (get_eh_types_for_runtime): New.
2492         (find_decls_types_in_eh_region): New.
2493         (find_decls_types_in_node): New.
2494         (find_decls_types_in_var): New.
2495         (free_lang_data_in_cgraph): New.
2496         (free_lang_data): New.
2497         (gate_free_lang_data): New.
2498         (pass_ipa_free_lang_data): New.
2499
2500 2009-09-03  Diego Novillo  <dnovillo@google.com>
2501
2502         * timevar.def (TV_IPA_FREE_LANG_DATA): Define.
2503         * langhooks.h (struct lang_hooks): Add field free_lang_data.
2504         (lang_hooks): Remove const qualifier.
2505         * ipa.c (cgraph_remove_unreachable_nodes): Call
2506         remove_unreachable_alias_pairs.
2507         * except.c (add_type_for_runtime): Check if TYPE has
2508         already been converted.
2509         (lookup_type_for_runtime): Likewise.
2510         (check_handled): Handle converted types.
2511         * varasm.c (remove_unreachable_alias_pairs): New.
2512         * gimple.c: Include demangle.h.
2513         (gimple_decl_printable_name): New.
2514         (gimple_fold_obj_type_ref): New.
2515         * gimple.h (gimple_decl_printable_name): Declare.
2516         (gimple_fold_obj_type_ref): Declare.
2517         * passes.c (init_optimization_passes): Add pass
2518         pass_ipa_free_lang_data.
2519         * langhooks-def.h (LANG_HOOKS_FREE_LANG_DATA): Define.
2520         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_FREE_LANG_DATA.
2521
2522 2009-09-03  Diego Novillo  <dnovillo@google.com>
2523
2524         * c-lang.c (lang_hooks): Remove const qualifier.
2525
2526 2009-09-02  Loren James Rittle  <ljrittle@acm.org>
2527
2528         * doc/install.texi (*-*-freebsd*): Update target information.
2529
2530 2009-09-02  Anatoly Sokolov  <aesok@post.ru>
2531
2532         * hard-reg-set.h (call_fixed_regs): Remove.
2533         * reginfo.c (call_fixed_regs): Remove.
2534         (init_reg_sets_1): Remove initialization of call_fixed_regs.
2535         (globalize_reg): Don't use call_fixed_regs.
2536         * caller-save.c (init_caller_save): Use call_fixed_reg_set instead of
2537         call_fixed_regs.
2538
2539 2009-09-01  Michael Matz  <matz@suse.de>
2540
2541         * expr.h (emit_storent_insn, expand_expr_real_1,
2542         expand_expr_real_2): Declare.
2543         * expr.c (emit_storent_insn, expand_expr_real_1,
2544         expand_expr_real_2): Export.
2545         (store_expr): Setting and evaluating dont_return_target is useless.
2546         (expand_expr_real_1, <case GOTO_EXPR, RETURN_EXPR, SWITCH_EXPR,
2547         LABEL_EXPR and ASM_EXPR>): Move to gcc_unreachable.
2548         * except.c (expand_resx_expr): Rename to ...
2549         (expand_resx_stmt): ... this.  Rewrite to take gimple statement.
2550         * except.h (expand_resx_stmt): Declare.
2551         * stmt.c: Add include gimple.h
2552         (expand_asm_expr): Rename to ...
2553         (expand_asm_stmt): ... this. Rewrite to take gimple statement.
2554         (expand_case): Rewrite to take gimple statement.
2555         * tree.h (expand_asm_stmt): Declare.
2556         (expand_case): Change prototype.
2557         * Makefile.in (stmt.o): Depend on gimple.h.
2558         * builtins.c (expand_builtin_synchronize): Build gimple asm
2559         statement, not an ASM_EXPR.
2560         * cfgexpand.c (gimple_cond_pred_to_tree, set_expr_location_r,
2561         gimple_to_tree, release_stmt_tree): Remove.
2562         (expand_gimple_cond): Don't call gimple_cond_pred_to_tree or
2563         ggc_free, but hold comparison code and operands separately.
2564         Call jumpif_1 and jumpifnot_1 instead of jumpif and jumpifnot.
2565         (expand_call_stmt, expand_gimple_stmt_1,
2566         expand_gimple_stmt): New helpers.
2567         (expand_gimple_tailcall): Don't call gimple_to_tree, expand_expr_stmt,
2568         release_stmt_tree.  Call expand_gimple_stmt instead.
2569         (expand_gimple_basic_block): Ditto.
2570
2571         * calls.c (emit_call_1): Don't look at EH regions here, make
2572         fntree parameter useless.
2573         (expand_call): New local rettype for TREE_TYPE(exp), use it
2574         throughout.  Remove local p, use addr instead.
2575         Don't look at EH regions here.
2576
2577 2009-09-02  Vladimir Makarov  <vmakarov@redhat.com>
2578
2579         * doc/invoke.texi (-fsched-pressure): Document it.
2580         (-fsched-reg-pressure-heuristic): Remove it.
2581
2582         * reload.c (ira.h): Include.
2583         (find_reloads): Add choosing reload on number of small spilled
2584         classes.
2585
2586         * haifa-sched.c (ira.h): Include.
2587         (sched_pressure_p, sched_regno_cover_class, curr_reg_pressure,
2588         saved_reg_pressure, curr_reg_live, saved_reg_live,
2589         region_ref_regs): New variables.
2590         (sched_init_region_reg_pressure_info, mark_regno_birth_or_death,
2591         initiate_reg_pressure_info, setup_ref_regs,
2592         initiate_bb_reg_pressure_info, save_reg_pressure,
2593         restore_reg_pressure, dying_use_p, print_curr_reg_pressure): New
2594         functions.
2595         (setup_insn_reg_pressure_info): New function.
2596         (rank_for_schedule): Add pressure checking and insn issue time.
2597         Remove comparison of insn reg weights.
2598         (ready_sort): Set insn reg pressure info.
2599         (update_register_pressure, setup_insn_max_reg_pressure,
2600         update_reg_and_insn_max_reg_pressure,
2601         sched_setup_bb_reg_pressure_info): New functions.
2602         (schedule_insn): Add code for printing and updating reg pressure info.
2603         (find_set_reg_weight, find_insn_reg_weight): Remove.
2604         (ok_for_early_queue_removal): Do nothing if pressure_only_p.
2605         (debug_ready_list): Print reg pressure info.
2606         (schedule_block): Ditto.  Check insn issue time.
2607         (sched_init): Set up sched_pressure_p.  Allocate and set up some
2608         reg pressure related info.
2609         (sched_finish): Free some reg pressure related info.
2610         (fix_tick_ready): Make insn always ready if pressure_p.
2611         (init_h_i_d): Don't call find_insn_reg_weight.
2612         (haifa_finish_h_i_d): Free insn reg pressure info.
2613
2614         * ira-int.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
2615         ira_memory_move_cost, ira_class_hard_regs,
2616         ira_class_hard_regs_num, ira_no_alloc_regs,
2617         ira_available_class_regs, ira_reg_class_cover_size,
2618         ira_reg_class_cover, ira_class_translate): Move to ira.h.
2619
2620         * ira-lives.c (single_reg_class): Check mode to find how many
2621         registers are necessary for operand.
2622         (ira_implicitly_set_insn_hard_regs): New.
2623
2624         * common.opt (fsched-pressure): New options.
2625         (fsched-reg-pressure-heuristic): Remove.
2626
2627         * ira.c (setup_eliminable_regset): Rename to
2628         ira_setup_eliminable_regset.  Make it external.
2629         (expand_reg_info): Pass cover class to setup_reg_classes.
2630         (ira): Call resize_reg_info instead of allocate_reg_info.
2631
2632         * sched-deps.c: Include ira.h.
2633         (implicit_reg_pending_clobbers, implicit_reg_pending_uses): New.
2634         (create_insn_reg_use, create_insn_reg_set, setup_insn_reg_uses,
2635         reg_pressure_info, insn_use_p, mark_insn_pseudo_birth,
2636         mark_insn_hard_regno_birth, mark_insn_reg_birth,
2637         mark_pseudo_death, mark_hard_regno_death, mark_reg_death,
2638         mark_insn_reg_store, mark_insn_reg_clobber,
2639         setup_insn_reg_pressure_info): New.
2640         (sched_analyze_1): Update implicit_reg_pending_uses.
2641         (sched_analyze_insn): Find implicit sets, uses, clobbers of regs.
2642         Use them to create dependencies.  Set insn reg uses and pressure
2643         info.  Process reg_pending_uses in one place.
2644         (free_deps): Free implicit sets.
2645         (remove_from_deps): Remove implicit sets if necessary.  Check
2646         implicit sets when clearing reg_last_in_use.
2647         (init_deps_global): Clear implicit_reg_pending_clobbers and
2648         implicit_reg_pending_uses.
2649
2650         * ira.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
2651         ira_memory_move_cost, ira_class_hard_regs,
2652         ira_class_hard_regs_num, ira_no_alloc_regs,
2653         ira_available_class_regs, ira_reg_class_cover_size,
2654         ira_reg_class_cover, ira_class_translate): Move from ira-int.h.
2655         (ira_setup_eliminable_regset, ira_set_pseudo_classes,
2656         ira_implicitly_set_insn_hard_regs): New prototypes.
2657
2658         * ira-costs.c (pseudo_classes_defined_p, allocno_p,
2659         cost_elements_num): New variables.
2660         (allocno_costs, total_costs): Rename to costs and
2661         total_allocno_costs.
2662         (COSTS_OF_ALLOCNO): Rename to COSTS.
2663         (allocno_pref): Rename to pref.
2664         (allocno_pref_buffer): Rename to pref_buffer.
2665         (common_classes): Rename to regno_cover_class.
2666         (COST_INDEX): New.
2667         (record_reg_classes): Set allocno attributes only if allocno_p.
2668         (record_address_regs): Ditto.  Use COST_INDEX instead of ALLOCNO_NUM.
2669         (scan_one_insn): Use COST_INDEX and COSTS instead of ALLOCNO_NUM
2670         and COSTS_OF_ALLOCNO.
2671         (print_costs): Rename to print_allocno_costs.
2672         (print_pseudo_costs): New.
2673         (process_bb_node_for_costs): Split into 2 functions with new
2674         function process_bb_for_costs.  Pass BB to process_bb_for_costs.
2675         (find_allocno_class_costs): Rename to find_costs_and_classes.  Add
2676         new parameter dump_file.  Use cost_elements_num instead of
2677         ira_allocnos_num.  Make one iteration if preferred classes were
2678         already calculated for scheduler.  Make 2 versions of code
2679         depending on allocno_p.
2680         (setup_allocno_cover_class_and_costs): Check allocno_p.  Use
2681         regno_cover_class and COSTS instead of common_classes and
2682         COSTS_OF_ALLOCNO.
2683         (init_costs, finish_costs): New.
2684         (ira_costs): Set up allocno_p and cost_elements_num.  Call
2685         init_costs and finish_costs.
2686         (ira_set_pseudo_classes): New.
2687
2688         * rtl.h (allocate_reg_info): Remove.
2689         (resize_reg_info): Change return type.
2690         (reg_cover_class): New.
2691         (setup_reg_classes): Add new parameter.
2692
2693         * sched-int.h (struct deps_reg): New member implicit_sets.
2694         (sched_pressure_p, sched_regno_cover_class): New external definitions.
2695         (INCREASE_BITS): New macro.
2696         (struct reg_pressure_data, struct reg_use_data): New.
2697         (struct _haifa_insn_data): Remove reg_weight.  Add members
2698         reg_pressure, reg_use_list, reg_set_list, and
2699         reg_pressure_excess_cost_change.
2700         (struct deps): New member implicit_sets.
2701         (pressure_p): New variable.
2702         (COVER_CLASS_BITS, INCREASE_BITS): New macros.
2703         (struct reg_pressure_data, struct reg_use_data): New.
2704         (INSN_REG_WEIGHT): Remove.
2705         (INSN_REG_PRESSURE, INSN_MAX_REG_PRESSURE, INSN_REG_USE_LIST,
2706         INSN_REG_SET_LIST, INSN_REG_PRESSURE_EXCESS_COST_CHANGE): New macros.
2707         (sched_init_region_reg_pressure_info,
2708         sched_setup_bb_reg_pressure_info): New prototypes.
2709
2710         * reginfo.c (struct reg_pref): New member coverclass.
2711         (reg_cover_class): New function.
2712         (reginfo_init, pass_reginfo_init): Move after free_reg_info.
2713         (reg_info_size): New variable.
2714         (allocate_reg_info): Make static.  Setup reg_info_size.
2715         (resize_reg_info): Use reg_info_size.  Return flag of resizing.
2716         (setup_reg_classes): Add a new parameter.  Setup cover class too.
2717
2718         * Makefile.in (reload.o, haifa-sched.o, sched-deps.o): Add ira.h to
2719         the dependencies.
2720
2721         * sched-rgn.c (deps_join): Set up implicit_sets.
2722         (schedule_region): Set up region and basic blocks pressure
2723         relative info.
2724
2725         * passes.c (init_optimization_passes): Move
2726         pass_subregs_of_mode_init before pass_sched.
2727
2728 2009-09-02  Martin Jambor  <mjambor@suse.cz>
2729
2730         * tree-sra.c (struct access): New field grp_hint.
2731         (dump_access): Dump grp_hint.
2732         (sort_and_splice_var_accesses): Set grp_hint if a group is read
2733         multiple times.
2734         (analyze_access_subtree): Only scalarize accesses with grp_hint set or
2735         those which have been specifically read and somehow written to.
2736         (propagate_subacesses_accross_link): Set grp_hint of right child and
2737         also possibly of the left child.
2738
2739 2009-09-02  Jakub Jelinek  <jakub@redhat.com>
2740
2741         * tree-object-size.c (addr_object_size): Always use object_size_type
2742         0 or 2 when determining the pointer pointed object size.
2743
2744 2009-09-02  Richard Guenther  <rguenther@suse.de>
2745
2746         Revert
2747         2009-08-31  Richard Guenther  <rguenther@suse.de>
2748
2749         * builtins.c (fold_builtin_memory_op): Use the alias oracle
2750         to query if the memory regions for memmove overlap.
2751         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
2752         asserts on pointers, instead deal with odd trees.
2753         (ptr_derefs_may_alias_p): Likewise.
2754         (refs_may_alias_p_1): Constructor bases also never alias.
2755
2756 2009-08-01  Christian Bruel  <christian.bruel@st.com>
2757
2758         Revert:
2759         2009-07-31  Christian Bruel  <christian.bruel@st.com>
2760         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
2761
2762 2009-09-01  Alexandre Oliva  <aoliva@redhat.com>
2763
2764         * doc/invoke.texi (-fvar-tracking-assignments): New.
2765         (-fvar-tracking-assignments-toggle): New.
2766         (-fdump-final-insns=file): Mark filename as optional.
2767         (--param min-nondebug-insn-uid): New.
2768         (-gdwarf-@{version}): Mention version 4.
2769         * opts.c (common_handle_option): Accept it.
2770         * tree-vrp.c (find_assert_locations_1): Skip debug stmts.
2771         * regrename.c (regrename_optimize): Drop last.  Don't count debug
2772         insns as uses.  Don't reject change because of debug insn.
2773         (do_replace): Reject DEBUG_INSN as chain starter.  Take base_regno
2774         from the chain starter, and check for inexact matches in DEBUG_INSNS.
2775         (scan_rtx_reg): Accept inexact matches in DEBUG_INSNs.
2776         (build_def_use): Simplify and fix the marking of DEBUG_INSNs.
2777         * sched-ebb.c (schedule_ebbs): Skip boundary debug insns.
2778         * fwprop.c (forward_propagate_and_simplify): ...into debug insns.
2779         * doc/gimple.texi (is_gimple_debug): New.
2780         (gimple_debug_bind_p): New.
2781         (is_gimple_call, gimple_assign_cast_p): End sentence with period.
2782         * doc/install.texi (bootstrap-debug): More details.
2783         (bootstrap-debug-big, bootstrap-debug-lean): Document.
2784         (bootstrap-debug-lib): More details.
2785         (bootstrap-debug-ckovw): Update.
2786         (bootstrap-time): New.
2787         * tree-into-ssa.c (mark_def_sites): Skip debug stmts.
2788         (insert_phi_nodes_for): Insert debug stmts.
2789         (rewrite_stmt): Take iterator.  Insert debug stmts.
2790         (rewrite_enter_block): Adjust.
2791         (maybe_replace_use_in_debug_stmt): New.
2792         (rewrite_update_stmt): Use it.
2793         (mark_use_interesting): Return early for debug stmts.
2794         * tree-ssa-loop-im.c (rewrite_bittest): Propagate DEFs into debug
2795         stmts before replacing stmt.
2796         (move_computations_stmt): Likewise.
2797         * ira-conflicts.c (add_copies): Skip debug insns.
2798         * regstat.c (regstat_init_n_sets_and_refs): Discount debug insns.
2799         (regstat_bb_compute_ri): Skip debug insns.
2800         * tree-ssa-threadupdate.c (redirection_block_p): Skip debug stmts.
2801         * tree-ssa-loop-manip.c (find_uses_to_rename_stmt,
2802         check_loop_closed_ssa_stmt): Skip debug stmts.
2803         * tree-tailcall.c (find_tail_calls): Likewise.
2804         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Likewise.
2805         * tree.h (MAY_HAVE_DEBUG_STMTS): New.
2806         (build_var_debug_value_stat): Declare.
2807         (build_var_debug_value): Define.
2808         (target_for_debug_bind): Declare.
2809         * reload.c (find_equiv_reg): Skip debug insns.
2810         * rtlanal.c (reg_used_between_p): Skip debug insns.
2811         (side_effects_p): Likewise.
2812         (canonicalize_condition): Likewise.
2813         * ddg.c (create_ddg_dep_from_intra_loop_link): Check that non-debug
2814         insns never depend on debug insns.
2815         (create_ddg_dep_no_link): Likewise.
2816         (add_cross_iteration_register_deps): Use ANTI_DEP for debug insns.
2817         Don't add inter-loop dependencies for debug insns.
2818         (build_intra_loop_deps): Likewise.
2819         (create_ddg): Count debug insns.
2820         * ddg.h (struct ddg::num_debug): New.
2821         (num_backargs): Pair up with previous int field.
2822         * diagnostic.c (diagnostic_report_diagnostic): Skip notes on
2823         -fcompare-debug-second.
2824         * final.c (get_attr_length_1): Skip debug insns.
2825         (rest_of_clean-state): Don't dump CFA_RESTORE_STATE.
2826         * gcc.c (invoke_as): Call compare-debug-dump-opt.
2827         (driver_self_specs): Map -fdump-final-insns to
2828         -fdump-final-insns=..
2829         (get_local_tick): New.
2830         (compare_debug_dump_opt_spec_function): Test for . argument and
2831         compute output name.  Compute temp output spec without flag name.
2832         Compute -frandom-seed.
2833         (OPT): Undef after use.
2834         * cfgloopanal.c (num_loop_insns): Skip debug insns.
2835         (average_num_loop_insns): Likewise.
2836         * params.h (MIN_NONDEBUG_INSN_UID): New.
2837         * gimple.def (GIMPLE_DEBUG): New.
2838         * ipa-reference.c (scan_stmt_for_static_refs): Skip debug stmts.
2839         * auto-inc-dec.c (merge_in_block): Skip debug insns.
2840         (merge_in_block): Fix whitespace.
2841         * toplev.c (flag_var_tracking): Update comment.
2842         (flag_var_tracking_assignments): New.
2843         (flag_var_tracking_assignments_toggle): New.
2844         (process_options): Don't open final insns dump file if we're not
2845         going to write to it.  Compute defaults for var_tracking.
2846         * df-scan.c (df_insn_rescan_debug_internal): New.
2847         (df_uses_record): Handle debug insns.
2848         * haifa-sched.c (ready): Initialize n_debug.
2849         (contributes_to_priority): Skip debug insns.
2850         (dep_list_size): New.
2851         (priority): Use it.
2852         (rank_for_schedule): Likewise.  Schedule debug insns as soon as
2853         they're ready.  Disregard previous debug insns to make decisions.
2854         (queue_insn): Never queue debug insns.
2855         (ready_add, ready_remove_first, ready_remove): Count debug insns.
2856         (schedule_insn): Don't reject debug insns because of issue rate.
2857         (get_ebb_head_tail, no_real_insns_p): Skip boundary debug insns.
2858         (queue_to_ready): Skip and discount debug insns.
2859         (choose_ready): Let debug insns through.
2860         (schedule_block): Check boundary debug insns.  Discount debug
2861         insns, schedule them early.  Adjust whitespace.
2862         (set_priorities): Check for boundary debug insns.
2863         (add_jump_dependencies): Use dep_list_size.
2864         (prev_non_location_insn): New.
2865         (check_cfg): Use it.
2866         * tree-ssa-loop-ivopts.c (find-interesting_users): Skip debug
2867         stmts.
2868         (remove_unused_ivs): Reset debug stmts.
2869         * modulo-sched.c (const_iteration_count): Skip debug insns.
2870         (res_MII): Discount debug insns.
2871         (loop_single_full_bb_p): Skip debug insns.
2872         (sms_schedule): Likewise.
2873         (sms_schedule_by_order): Likewise.
2874         (ps_has_conflicts): Likewise.
2875         * caller-save.c (refmarker_fn): New.
2876         (save_call_clobbered_regs): Replace regs with saved mem in
2877         debug insns.
2878         (mark_referenced_regs): Take pointer, mark and arg.  Adjust.
2879         Call refmarker_fn mark for hardregnos.
2880         (mark_reg_as_referenced): New.
2881         (replace_reg_with_saved_mem): New.
2882         * ipa-pure-const.c (check_stmt): Skip debug stmts.
2883         * cse.c (cse_insn): Canonicalize debug insns.  Skip them when
2884         searching back.
2885         (cse_extended_basic_block): Skip debug insns.
2886         (count_reg_usage): Likewise.
2887         (is_dead_reg): New, split out of...
2888         (set_live_p): ... here.
2889         (insn_live_p): Use it for debug insns.
2890         * tree-stdarg.c (check_all_va_list_escapes): Skip debug stmts.
2891         (execute_optimize_stdarg): Likewise.
2892         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
2893         * tree-ssa-propagate.c (substitute_and_fold): Don't regard
2894         changes in debug stmts as changes.
2895         * sel-sched.c (moving_insn_creates_bookkeeping_block_p): New.
2896         (moveup_expr): Don't move across debug insns.  Don't move
2897         debug insn if it would create a bookkeeping block.
2898         (moveup_expr_cached): Don't use cache for debug insns that
2899         are heads of blocks.
2900         (compute_av_set_inside_bb): Skip debug insns.
2901         (sel_rank_for_schedule): Schedule debug insns first.  Remove
2902         dead code.
2903         (block_valid_for_bookkeeping_p); Support lax searches.
2904         (create_block_for_bookkeeping): Adjust block numbers when
2905         encountering debug-only blocks.
2906         (find_place_for_bookkeeping): Deal with debug-only blocks.
2907         (generate_bookkeeping_insn): Accept no place to insert.
2908         (remove_temp_moveop_nops): New argument full_tidying.
2909         (prepare_place_to_insert): Deal with debug insns.
2910         (advance_state_on_fence): Debug insns don't start cycles.
2911         (update_boundaries): Take fence as argument.  Deal with
2912         debug insns.
2913         (schedule_expr_on_boundary): No full_tidying on debug insns.
2914         (fill_insns): Deal with debug insns.
2915         (track_scheduled_insns_and_blocks): Don't count debug insns.
2916         (need_nop_to_preserve_insn_bb): New, split out of...
2917         (remove_insn_from_stream): ... this.
2918         (fur_orig_expr_not_found): Skip debug insns.
2919         * rtl.def (VALUE): Move up.
2920         (DEBUG_INSN): New.
2921         * tree-ssa-sink.c (all_immediate_uses_same_place): Skip debug stmts.
2922         (nearest_common_dominator_of_uses): Take debug_stmts argument.
2923         Set it if debug stmts are found.
2924         (statement_sink_location): Skip debug stmts.  Propagate
2925         moving defs into debug stmts.
2926         * ifcvt.c (first_active_insn): Skip debug insns.
2927         (last_active_insns): Likewise.
2928         (cond_exec_process_insns): Likewise.
2929         (noce_process_if_block): Likewise.
2930         (check_cond_move_block): Likewise.
2931         (cond_move_convert_if_block): Likewise.
2932         (block_jumps_and_fallthru_p): Likewise.
2933         (dead_or_predicable): Likewise.
2934         * dwarf2out.c (debug_str_hash_forced): New.
2935         (find_AT_string): Add comment.
2936         (gen_label_for_indirect_string): New.
2937         (get_debug_string_label): New.
2938         (AT_string_form): Use it.
2939         (mem_loc_descriptor): Handle non-TLS symbols.  Handle MINUS , DIV,
2940         MOD, AND, IOR, XOR, NOT, ABS, NEG, and CONST_STRING.  Accept but
2941         discard COMPARE, IF_THEN_ELSE, ROTATE, ROTATERT, TRUNCATE and
2942         several operations that cannot be represented with DWARF opcodes.
2943         (loc_descriptor): Ignore SIGN_EXTEND and ZERO_EXTEND.  Require
2944         dwarf_version 4 for DW_OP_implicit_value and DW_OP_stack_value.
2945         (dwarf2out_var_location): Take during-call mark into account.
2946         (output_indirect_string): Update comment.  Output if there are
2947         label and references.
2948         (prune_indirect_string): New.
2949         (prune_unused_types): Call it if debug_str_hash_forced.
2950         More in dwarf2out.c, from Jakub Jelinek <jakub@redhat.com>:
2951         (dw_long_long_const): Remove.
2952         (struct dw_val_struct): Change val_long_long type to rtx.
2953         (print_die, attr_checksum, same_dw_val_p, loc_descriptor): Adjust for
2954         val_long_long change to CONST_DOUBLE rtx from a long hi/lo pair.
2955         (output_die): Likewise.  Use HOST_BITS_PER_WIDE_INT size of each
2956         component instead of HOST_BITS_PER_LONG.
2957         (output_loc_operands): Likewise.  For const8* assert
2958         HOST_BITS_PER_WIDE_INT rather than HOST_BITS_PER_LONG is >= 64.
2959         (output_loc_operands_raw): For const8* assert HOST_BITS_PER_WIDE_INT
2960         rather than HOST_BITS_PER_LONG is >= 64.
2961         (add_AT_long_long): Remove val_hi and val_lo arguments, add
2962         val_const_double.
2963         (size_of_die): Use HOST_BITS_PER_WIDE_INT size multiplier instead of
2964         HOST_BITS_PER_LONG for dw_val_class_long_long.
2965         (add_const_value_attribute): Adjust add_AT_long_long caller.  Don't
2966         handle TLS SYMBOL_REFs.  If CONST wraps a constant, tail recurse.
2967         (dwarf_stack_op_name): Handle DW_OP_implicit_value and
2968         DW_OP_stack_value.
2969         (size_of_loc_descr, output_loc_operands, output_loc_operands_raw):
2970         Handle DW_OP_implicit_value.
2971         (extract_int): Move prototype earlier.
2972         (mem_loc_descriptor): For SUBREG punt if inner
2973         mode size is wider than DWARF2_ADDR_SIZE.  Handle SIGN_EXTEND
2974         and ZERO_EXTEND by DW_OP_shl and DW_OP_shr{a,}.  Handle
2975         EQ, NE, GT, GE, LT, LE, GTU, GEU, LTU, LEU, SMIN, SMAX, UMIN,
2976         UMAX, SIGN_EXTRACT, ZERO_EXTRACT.
2977         (loc_descriptor): Compare mode size with DWARF2_ADDR_SIZE
2978         instead of Pmode size.
2979         (loc_descriptor): Add MODE argument.  Handle CONST_INT, CONST_DOUBLE,
2980         CONST_VECTOR, CONST, LABEL_REF and SYMBOL_REF if mode != VOIDmode,
2981         attempt to handle other expressions.  Don't handle TLS SYMBOL_REFs.
2982         (concat_loc_descriptor, concatn_loc_descriptor,
2983         loc_descriptor_from_tree_1): Adjust loc_descriptor callers.
2984         (add_location_or_const_value_attribute): Likewise.  For single
2985         location loc_lists attempt to use add_const_value_attribute
2986         for constant decls.  Add DW_AT_const_value even if
2987         NOTE_VAR_LOCATION is VAR_LOCATION with CONSTANT_P or CONST_STRING
2988         in its expression.
2989         * cfgbuild.c (inside_basic_block_p): Handle debug insns.
2990         (control_flow_insn_p): Likewise.
2991         * tree-parloops.c (eliminate_local_variables_stmt): Handle debug stmt.
2992         (separate_decls_in_region_debug_bind): New.
2993         (separate_decls_in_region): Process debug bind stmts afterwards.
2994         * recog.c (verify_changes): Handle debug insns.
2995         (extract_insn): Likewise.
2996         (peephole2_optimize): Skip debug insns.
2997         * dse.c (scan_insn): Skip debug insns.
2998         * sel-sched-ir.c (return_nop_to_pool): Take full_tidying argument.
2999         Pass it on.
3000         (setup_id_for_insn): Handle debug insns.
3001         (maybe_tidy_empty_bb): Adjust whitespace.
3002         (tidy_control_flow): Skip debug insns.
3003         (sel_remove_insn): Adjust for debug insns.
3004         (sel_estimate_number_of_insns): Skip debug insns.
3005         (create_insn_rtx_from_pattern): Handle debug insns.
3006         (create_copy_of_insn_rtx): Likewise.
3007         * sel-sched-.h (sel_bb_end): Declare.
3008         (sel_bb_empty_or_nop_p): New.
3009         (get_all_loop_exits): Use it.
3010         (_eligible_successor_edge_p): Likewise.
3011         (return_nop_to_pool): Adjust.
3012         * tree-eh.c (tre_empty_eh_handler_p): Skip debug stmts.
3013         * ira-lives.c (process_bb_node_lives): Skip debug insns.
3014         * gimple-pretty-print.c (dump_gimple_debug): New.
3015         (dump_gimple_stmt): Use it.
3016         (dump_bb_header): Skip gimple debug stmts.
3017         * regmove.c (optimize_reg_copy_1): Discount debug insns.
3018         (fixup_match_2): Likewise.
3019         (regmove_backward_pass): Likewise.  Simplify combined
3020         replacement.  Handle debug insns.
3021         * function.c (instantiate_virtual_regs): Handle debug insns.
3022         * function.h (struct emit_status): Add x_cur_debug_insn_uid.
3023         * print-rtl.h: Include cselib.h.
3024         (print_rtx): Print VALUEs.  Split out and recurse for VAR_LOCATIONs.
3025         * df.h (df_inns_rescan_debug_internal): Declare.
3026         * gcse.c (alloc_hash_table): Estimate n_insns.
3027         (cprop_insn): Don't regard debug insns as changes.
3028         (bypass_conditional_jumps): Skip debug insns.
3029         (one_pre_gcse_pass): Adjust.
3030         (one_code_hoisting_pass): Likewise.
3031         (compute_ld_motion_mems): Skip debug insns.
3032         (one_cprop_pass): Adjust.
3033         * tree-if-conv.c (tree_if_convert_stmt): Reset debug stmts.
3034         (if_convertible_stmt_p): Handle debug stmts.
3035         * init-regs.c (initialize_uninitialized_regs): Skip debug insns.
3036         * tree-vect-loop.c (vect_is_simple_reduction): Skip debug stmts.
3037         * ira-build.c (create_bb_allocnos): Skip debug insns.
3038         * tree-flow-inline.h (has_zero_uses): Discount debug stmts.
3039         (has_single_use): Likewise.
3040         (single_imm_use): Likewise.
3041         (num_imm_uses): Likewise.
3042         * tree-ssa-phiopt.c (empty_block_p): Skip debug stmts.
3043         * tree-ssa-coalesce.c (build_ssa_conflict_graph): Skip debug stmts.
3044         (create_outofssa_var_map): Likewise.
3045         * lower-subreg.c (adjust_decomposed_uses): New.
3046         (resolve_debug): New.
3047         (decompose_multiword_subregs): Use it.
3048         * tree-dfa.c (find_referenced_vars): Skip debug stmts.
3049         * emit-rtl.c: Include params.h.
3050         (cur_debug_insn_uid): Define.
3051         (set_new_first_and_last_insn): Set cur_debug_insn_uid too.
3052         (copy_rtx_if_shared_1): Handle debug insns.
3053         (reset_used_flags): Likewise.
3054         (set_used_flags): LIkewise.
3055         (get_max_insn_count): New.
3056         (next_nondebug_insn): New.
3057         (prev_nondebug_insn): New.
3058         (make_debug_insn_raw): New.
3059         (emit_insn_before_noloc): Handle debug insns.
3060         (emit_jump_insn_before_noloc): Likewise.
3061         (emit_call_insn_before_noloc): Likewise.
3062         (emit_debug_insn_before_noloc): New.
3063         (emit_insn_after_noloc): Handle debug insns.
3064         (emit_jump_insn_after_noloc): Likewise.
3065         (emit_call_insn_after_noloc): Likewise.
3066         (emit_debug_insn_after_noloc): Likewise.
3067         (emit_insn_after): Take loc from earlier non-debug insn.
3068         (emit_jump_insn_after): Likewise.
3069         (emit_call_insn_after): Likewise.
3070         (emit_debug_insn_after_setloc): New.
3071         (emit_debug_insn_after): New.
3072         (emit_insn_before): Take loc from later non-debug insn.
3073         (emit_jump_insn_before): Likewise.
3074         (emit_call_insn_before): Likewise.
3075         (emit_debug_insn_before_setloc): New.
3076         (emit_debug_insn_before): New.
3077         (emit_insn): Handle debug insns.
3078         (emit_debug_insn): New.
3079         (emit_jump_insn): Handle debug insns.
3080         (emit_call_insn): Likewise.
3081         (emit): Likewise.
3082         (init_emit): Take min-nondebug-insn-uid into account.
3083         Initialize cur_debug_insn_uid.
3084         (emit_copy_of_insn_after): Handle debug insns.
3085         * cfgexpand.c (gimple_assign_rhs_to_tree): Do not overwrite
3086         location of single rhs in place.
3087         (maybe_dump_rtl_for_gimple_stmt): Dump lineno.
3088         (floor_sdiv_adjust): New.
3089         (cell_sdiv_adjust): New.
3090         (cell_udiv_adjust): New.
3091         (round_sdiv_adjust): New.
3092         (round_udiv_adjust): New.
3093         (wrap_constant): Moved from cselib.
3094         (unwrap_constant): New.
3095         (expand_debug_expr): New.
3096         (expand_debug_locations): New.
3097         (expand_gimple_basic_block): Drop hiding redeclaration.  Expand
3098         debug bind stmts.
3099         (gimple_expand_cfg): Expand debug locations.
3100         * cselib.c: Include tree-pass.h.
3101         (struct expand_value_data): New.
3102         (cselib_record_sets_hook): New.
3103         (PRESERVED_VALUE_P, LONG_TERM_PRESERVED_VALUE_P): New.
3104         (cselib_clear_table): Move, and implemnet in terms of...
3105         (cselib_reset_table_with_next_value): ... this.
3106         (cselib_get_next_unknown_value): New.
3107         (discard_useless_locs): Don't discard preserved values.
3108         (cselib_preserve_value): New.
3109         (cselib_preserved_value_p): New.
3110         (cselib_preserve_definitely): New.
3111         (cselib_clear_preserve): New.
3112         (cselib_preserve_only_values): New.
3113         (new_cselib_val): Take rtx argument.  Dump it in details.
3114         (cselib_lookup_mem): Adjust.
3115         (expand_loc): Take regs_active in struct.  Adjust.  Silence
3116         dumps unless details are requested.
3117         (cselib_expand_value_rtx_cb): New.
3118         (cselib_expand_value_rtx): Rename and reimplment in terms of...
3119         (cselib_expand_value_rtx_1): ... this.  Adjust.  Silence dumps
3120         without details.  Copy more subregs.  Try to resolve values
3121         using a callback.  Wrap constants.
3122         (cselib_subst_to_values): Adjust.
3123         (cselib_log_lookup): New.
3124         (cselib_lookup): Call it.
3125         (cselib_invalidate_regno): Don't count preserved values as useless.
3126         (cselib_invalidate_mem): Likewise.
3127         (cselib_record_set): Likewise.
3128         (struct set): Renamed to cselib_set, moved to cselib.h.
3129         (cselib_record_sets): Adjust.  Call hook.
3130         (cselib_process_insn): Reset table when it would be cleared.
3131         (dump_cselib_val): New.
3132         (dump_cselib_table): New.
3133         * tree-cfgcleanup.c (tree_forwarded_block_p): Skip debug stmts.
3134         (remove_forwarder_block): Support moving debug stmts.
3135         * cselib.h (cselib_record_sets_hook): Declare.
3136         (cselib_expand_callback): New type.
3137         (cselib_expand_value_rtx_cb): Declare.
3138         (cselib_reset_table_with_next_value): Declare.
3139         (cselib_get_next_unknown_value): Declare.
3140         (cselib_preserve_value): Declare.
3141         (cselib_preserved_value_p): Declare.
3142         (cselib_preserve_only_values): Declare.
3143         (dump_cselib_table): Declare.
3144         * cfgcleanup.c (flow_find_cross_jump): Skip debug insns.
3145         (try_crossjump_to_edge): Likewise.
3146         (delete_unreachable_blocks): Remove dominant GIMPLE blocks after
3147         dominated blocks when debug stmts are present.
3148         * simplify-rtx.c (delegitimize_mem_from_attrs): New.
3149         * tree-ssa-live.c (remove_unused_locals): Skip debug stmts.
3150         (set_var_live_on_entry): Likewise.
3151         * loop-invariant.c (find_invariants_bb): Skip debug insns.
3152         * cfglayout.c (curr_location, last_location): Make static.
3153         (set_curr_insn_source_location): Don't avoid bouncing.
3154         (get_curr_insn_source_location): New.
3155         (get_curr_insn_block): New.
3156         (duplicate_insn_chain): Handle debug insns.
3157         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Propagate
3158         into debug stmts.
3159         * common.opt (fcompare-debug): Move to sort order.
3160         (fdump-unnumbered-links): Likewise.
3161         (fvar-tracking-assignments): New.
3162         (fvar-tracking-assignments-toggle): New.
3163         * tree-ssa-dce.c (mark_stmt_necessary): Don't mark blocks
3164         because of debug stmts.
3165         (mark_stmt_if_obviously_necessary): Mark debug stmts.
3166         (eliminate_unnecessary_stmts): Walk dominated blocks before
3167         dominators.
3168         * tree-ssa-ter.c (find_replaceable_in_bb): Skip debug stmts.
3169         * ira.c (memref_used_between_p): Skip debug insns.
3170         (update_equiv_regs): Likewise.
3171         * sched-deps.c (sd_lists_size): Accept empty list.
3172         (sd_init_insn): Mark debug insns.
3173         (sd_finish_insn): Unmark them.
3174         (sd_add_dep): Reject non-debug deps on debug insns.
3175         (fixup_sched_groups): Give debug insns group treatment.
3176         Skip debug insns.
3177         (sched_analyze_reg): Don't mark debug insns for sched before call.
3178         (sched_analyze_2): Handle debug insns.
3179         (sched_analyze_insn): Compute next non-debug insn.  Handle debug
3180         insns.
3181         (deps_analyze_insn): Handle debug insns.
3182         (deps_start_bb): Skip debug insns.
3183         (init_deps): Initialize last_debug_insn.
3184         * tree-ssa.c (target_for_debug_bind): New.
3185         (find_released_ssa_name): New.
3186         (propagate_var_def_into_debug_stmts): New.
3187         (propagate_defs_into_debug_stmts): New.
3188         (verify_ssa): Skip debug bind stmts without values.
3189         (warn_uninialized_vars): Skip debug stmts.
3190         * target-def.h (TARGET_DELEGITIMIZE_ADDRESS): Set default.
3191         * rtl.c (rtx_equal_p_cb): Handle VALUEs.
3192         (rtx_equal_p): Likewise.
3193         * ira-costs.c (scan_one_insn): Skip debug insns.
3194         (process_bb_node_for_hard_reg_moves): Likewise.
3195         * rtl.h (DEBUG_INSN_P): New.
3196         (NONDEBUG_INSN_P): New.
3197         (MAY_HAVE_DEBUG_INSNS): New.
3198         (INSN_P): Accept debug insns.
3199         (RTX_FRAME_RELATED_P): Likewise.
3200         (INSN_DELETED_P): Likewise
3201         (PAT_VAR_LOCATION_DECL): New.
3202         (PAT_VAR_LOCATION_LOC): New.
3203         (PAT_VAR_OCATION_STATUS): New.
3204         (NOTE_VAR_LOCATION_DECL): Reimplement.
3205         (NOTE_VAR_LOCATION_LOC): Likewise.
3206         (NOTE_VAR_LOCATION_STATUS): Likewise.
3207         (INSN_VAR_LOCATION): New.
3208         (INSN_VAR_LOCATION_DECL): New.
3209         (INSN_VAR_LOCATION_LOC): New.
3210         (INSN_VAR_LOCATION_STATUS): New.
3211         (gen_rtx_UNKNOWN_VAR_LOC): New.
3212         (VAR_LOC_UNKNOWN_P): New.
3213         (NOTE_DURING_CALL_P): New.
3214         (SCHED_GROUP_P): Accept debug insns.
3215         (emit_debug_insn_before): Declare.
3216         (emit_debug_insn_before_noloc): Declare.
3217         (emit_debug_insn_beore_setloc): Declare.
3218         (emit_debug_insn_after): Declare.
3219         (emit_debug_insn_after_noloc): Declare.
3220         (emit_debug_insn_after_setloc): Declare.
3221         (emit_debug_insn): Declare.
3222         (make_debug_insn_raw): Declare.
3223         (prev_nondebug_insn): Declare.
3224         (next_nondebug_insn): Declare.
3225         (delegitimize_mem_from_attrs): Declare.
3226         (get_max_insn_count): Declare.
3227         (wrap_constant): Declare.
3228         (unwrap_constant): Declare.
3229         (get_curr_insn_source_location): Declare.
3230         (get_curr_insn_block): Declare.
3231         * tree-inline.c (insert_debug_decl_map): New.
3232         (processing_debug_stmt): New.
3233         (remap_decl): Don't create new mappings in debug stmts.
3234         (remap_gimple_op_r): Don't add references in debug stmts.
3235         (copy_tree_body_r): Likewise.
3236         (remap_gimple_stmt): Handle debug bind stmts.
3237         (copy_bb): Skip debug stmts.
3238         (copy_edges_for_bb): Likewise.
3239         (copy_debug_stmt): New.
3240         (copy_debug_stmts): New.
3241         (copy_body): Copy debug stmts at the end.
3242         (insert_init_debug_bind): New.
3243         (insert_init_stmt): Take id.  Skip and emit debug stmts.
3244         (setup_one_parameter): Remap variable earlier, register debug mapping.
3245         (estimate_num_insns): Skip debug stmts.
3246         (expand_call_inline): Preserve debug_map.
3247         (optimize_inline_calls): Check for no debug_stmts left-overs.
3248         (unsave_expr_now): Preserve debug_map.
3249         (copy_gimple_seq_and_replace_locals): Likewise.
3250         (tree_function_versioning): Check for no debug_stmts left-overs.
3251         Init and destroy debug_map as needed.  Split edges unconditionally.
3252         (build_duplicate_type): Init and destroy debug_map as needed.
3253         * tree-inline.h: Include gimple.h instead of pointer-set.h.
3254         (struct copy_body_data): Add debug_stmts and debug_map.
3255         * sched-int.h (struct ready_list): Add n_debug.
3256         (struct deps): Add last_debug_insn.
3257         (DEBUG_INSN_SCHED_P): New.
3258         (BOUNDARY_DEBUG_INSN_P): New.
3259         (SCHEDULE_DEBUG_INSN_P): New.
3260         (sd_iterator_cond): Accept empty list.
3261         * combine.c (create_log_links): Skip debug insns.
3262         (combine_instructions): Likewise.
3263         (cleanup_auto_inc_dec): New.  From Jakub Jelinek: Make sure the
3264         return value is always unshared.
3265         (struct rtx_subst_pair): New.
3266         (auto_adjust_pair): New.
3267         (propagate_for_debug_subst): New.
3268         (propagate_for_debug): New.
3269         (try_combine): Skip debug insns.  Propagate removed defs into
3270         debug insns.
3271         (next_nonnote_nondebug_insn): New.
3272         (distribute_notes): Use it.  Skip debug insns.
3273         (distribute_links): Skip debug insns.
3274         * tree-outof-ssa.c (set_location_for_edge): Likewise.
3275         * resource.c (mark_target_live_regs): Likewise.
3276         * var-tracking.c: Include cselib.h and target.h.
3277         (enum micro_operation_type): Add MO_VAL_USE, MO_VAL_LOC, and
3278         MO_VAL_SET.
3279         (micro_operation_type_name): New.
3280         (enum emit_note_where): Add EMIT_NOTE_AFTER_CALL_INSN.
3281         (struct micro_operation_def): Update comments.
3282         (decl_or_value): New type.  Use instead of decls.
3283         (struct emit_note_data_def): Add vars.
3284         (struct attrs_def): Use decl_or_value.
3285         (struct variable_tracking_info_def): Add permp, flooded.
3286         (struct location_chain_def): Update comment.
3287         (struct variable_part_def): Use decl_or_value.
3288         (struct variable_def): Make var_part a variable length array.
3289         (valvar_pool): New.
3290         (scratch_regs): New.
3291         (cselib_hook_called): New.
3292         (dv_is_decl_p): New.
3293         (dv_is_value_p): New.
3294         (dv_as_decl): New.
3295         (dv_as_value): New.
3296         (dv_as_opaque): New.
3297         (dv_onepart_p): New.
3298         (dv_pool): New.
3299         (IS_DECL_CODE): New.
3300         (check_value_is_not_decl): New.
3301         (dv_from_decl): New.
3302         (dv_from_value): New.
3303         (dv_htab_hash): New.
3304         (variable_htab_hash): Use it.
3305         (variable_htab_eq): Support values.
3306         (variable_htab_free): Free from the right pool.
3307         (attrs_list_member, attrs_list_insert): Use decl_or_value.
3308         (attrs_list_union): Adjust.
3309         (attrs_list_mpdv_union): New.
3310         (tie_break_pointers): New.
3311         (canon_value_cmp): New.
3312         (unshare_variable): Return possibly-modified slot.
3313         (vars_copy_1): Adjust.
3314         (var_reg_decl_set): Adjust.  Split out of...
3315         (var_reg_set): ... this.
3316         (get_init_value): Adjust.
3317         (var_reg_delete_and_set): Adjust.
3318         (var_reg_delete): Adjust.
3319         (var_regno_delete): Adjust.
3320         (var_mem_decl_set): Split out of...
3321         (var_mem_set): ... this.
3322         (var_mem_delete_and_set): Adjust.
3323         (var_mem_delete): Adjust.
3324         (val_store): New.
3325         (val_reset): New.
3326         (val_resolve): New.
3327         (variable_union): Adjust.  Speed up merge of 1-part vars.
3328         (variable_canonicalize): Use unshared slot.
3329         (VALUED_RECURSED_INTO): New.
3330         (find_loc_in_1pdv): New.
3331         (struct dfset_merge): New.
3332         (insert_into_intersection): New.
3333         (intersect_loc_chains): New.
3334         (loc_cmp): New.
3335         (canonicalize_loc_order_check): New.
3336         (canonicalize_values_mark): New.
3337         (canonicalize_values_star): New.
3338         (variable_merge_over_cur): New.
3339         (variable_merge_over_src): New.
3340         (dataflow_set_merge): New.
3341         (dataflow_set_equiv_regs): New.
3342         (remove_duplicate_values): New.
3343         (struct dfset_post_merge): New.
3344         (variable_post_merge_new_vals): New.
3345         (variable_post_merge_perm_vals): New.
3346         (dataflow_post_merge_adjust): New.
3347         (find_mem_expr_in_1pdv): New.
3348         (dataflow_set_preserve_mem_locs): New.
3349         (dataflow_set_remove_mem_locs): New.
3350         (dataflow_set_clear_at_call): New.
3351         (onepart_variable_different_p): New.
3352         (variable_different_p): Use it.
3353         (dataflow_set_different_1): Adjust.  Make detailed dump more verbose.
3354         (track_expr_p): Add need_rtl parameter.  Don't generate rtl
3355         if not needed.
3356         (track_loc_p): Pass it true.
3357         (struct count_use_info): New.
3358         (find_use_val): New.
3359         (replace_expr_with_values): New.
3360         (log_op_type): New.
3361         (use_type): New, partially split out of...
3362         (count_uses): ... this.  Count new micro-ops.
3363         (count_uses_1): Adjust.
3364         (count_stores): Adjust.
3365         (count_with_sets): New.
3366         (VAL_NEEDS_RESOLUTION): New.
3367         (VAL_HOLDS_TRACK_EXPR): New.
3368         (VAL_EXPR_IS_COPIED): New.
3369         (VAL_EXPR_IS_CLOBBERED): New.
3370         (add_uses): Adjust.  Generate new micro-ops.
3371         (add_uses_1): Adjust.
3372         (add_stores): Generate new micro-ops.
3373         (add_with_sets): New.
3374         (find_src_status): Adjust.
3375         (find_src_set_src): Adjust.
3376         (compute_bb_dataflow): Use dataflow_set_clear_at_call.
3377         Handle new micro-ops.  Canonicalize value equivalances.
3378         (vt_find_locations): Compute total size of hash tables for
3379         dumping.  Perform merge for var-tracking-assignments.  Don't
3380         disregard single-block loops.
3381         (dump_attrs_list): Handle decl_or_value.
3382         (dump_variable): Take variable.  Deal with decl_or_value.
3383         (dump_variable_slot): New.
3384         (dump_vars): Use it.
3385         (dump_dataflow_sets): Adjust.
3386         (set_slot_part): New, extended to support one-part variables
3387         after splitting out of...
3388         (set_variable_part): ... this.
3389         (clobber_slot_part): New, split out of...
3390         (clobber_variable_part): ... this.
3391         (delete_slot_part): New, split out of...
3392         (delete_variable_part): .... this.
3393         (check_wrap_constant): New.
3394         (vt_expand_loc_callback): New.
3395         (vt_expand_loc): New.
3396         (emit_note_insn_var_location): Adjust.  Handle values.  Handle
3397         EMIT_NOTE_AFTER_CALL_INSN.
3398         (emit_notes_for_differences_1): Adjust.  Handle values.
3399         (emit_notes_for_differences_2): Likewise.
3400         (emit_notes_for_differences): Adjust.
3401         (emit_notes_in_bb): Take pointer to set.  Emit AFTER_CALL_INSN notes.
3402         Adjust.  Handle new micro-ops.
3403         (vt_add_function_parameters): Adjust.  Create and bind values.
3404         (vt_initialize): Adjust.  Initialize scratch_regs and
3405         valvar_pool, flooded and perm..  Initialize and use cselib.  Log
3406         operations.  Move some code to count_with_sets and add_with_sets.
3407         (delete_debug_insns): New.
3408         (vt_debug_insns_local): New.
3409         (vt_finalize): Release permp, valvar_pool, scratch_regs.  Finish
3410         cselib.
3411         (var_tracking_main): If var-tracking-assignments is enabled
3412         but var-tracking isn't, delete debug insns and leave.  Likewise
3413         if we exceed limits or fail the stack adjustments tests, and
3414         after all var-tracking processing.
3415         More in var-tracking, from Jakub Jelinek <jakub@redhat.com>:
3416         (dataflow_set): Add traversed_vars.
3417         (value_chain, const_value_chain): New typedefs.
3418         (value_chain_pool, value_chains): New variables.
3419         (value_chain_htab_hash, value_chain_htab_eq, add_value_chain,
3420         add_value_chains, add_cselib_value_chains, remove_value_chain,
3421         remove_value_chains, remove_cselib_value_chains): New functions.
3422         (shared_hash_find_slot_unshare_1, shared_hash_find_slot_1,
3423         shared_hash_find_slot_noinsert_1, shared_hash_find_1): New
3424         static inlines.
3425         (shared_hash_find_slot_unshare, shared_hash_find_slot,
3426         shared_hash_find_slot_noinsert, shared_hash_find): Update.
3427         (dst_can_be_shared): New variable.
3428         (unshare_variable): Unshare set->vars if shared, use shared_hash_*.
3429         Clear dst_can_be_shared.  If set->traversed_vars is non-NULL and
3430         different from set->vars, look up slot again instead of using the
3431         passed in slot.
3432         (dataflow_set_init): Initialize traversed_vars.
3433         (variable_union): Use shared_hash_*.  Use initially NO_INSERT
3434         lookup if set->vars is shared.  Don't keep slot cleared before
3435         calling unshare_variable.  Unshare set->vars if needed.  Adjust
3436         unshare_variable callers.  Clear dst_can_be_shared if needed.
3437         Even ->refcount == 1 vars must be unshared if set->vars is shared
3438         and var needs to be modified.
3439         (dataflow_set_union): Set traversed_vars during canonicalization.
3440         (VALUE_CHANGED, DECL_CHANGED): Define.
3441         (set_dv_changed, dv_changed_p): New static inlines.
3442         (track_expr_p): Clear DECL_CHANGED.
3443         (dump_dataflow_sets): Set it.
3444         (variable_was_changed): Call set_dv_changed.
3445         (emit_note_insn_var_location): Likewise.
3446         (changed_variables_stack): New variable.
3447         (check_changed_vars_1, check_changed_vars_2): New functions.
3448         (emit_notes_for_changes): Do nothing if changed_variables is
3449         empty.  Traverse changed_variables with check_changed_vars_1,
3450         call check_changed_vars_2 on each changed_variables_stack entry.
3451         (emit_notes_in_bb): Add SET argument.  Just clear it at the
3452         beginning, use it instead of local &set, don't destroy it at the end.
3453         (vt_emit_notes): Call dataflow_set_clear early on all
3454         VTI(bb)->out sets, never use them, instead use emit_notes_in_bb
3455         computed set, dataflow_set_clear also VTI(bb)->in when we are
3456         done with the basic block.  Initialize changed_variables_stack,
3457         free it afterwards.  If ENABLE_CHECKING verify that after noting
3458         differences to an empty set value_chains hash table is empty.
3459         (vt_initialize): Initialize value_chains and value_chain_pool.
3460         (vt_finalize): Delete value_chains htab, free value_chain_pool.
3461         (variable_tracking_main): Call dump_dataflow_sets before calling
3462         vt_emit_notes, not after it.
3463         * tree-flow.h (propagate_defs_into_debug_stmts): Declare.
3464         (propagate_var_def_into_debug_stmts): Declare.
3465         * df-problems.c (df_lr_bb_local_compute): Skip debug insns.
3466         (df_set_note): Reject debug insns.
3467         (df_whole_mw_reg_dead_p): Take added_notes_p argument.  Don't
3468         add notes to debug insns.
3469         (df_note_bb_compute): Adjust.  Likewise.
3470         (df_simulate_uses): Skip debug insns.
3471         (df_simulate_initialize_backwards): Likewise.
3472         * reg-stack.c (subst_stack_regs_in_debug_insn): New.
3473         (subst_stack_regs_pat): Reject debug insns.
3474         (convert_regs_1): Handle debug insns.
3475         * Makefile.in (TREE_INLINE_H): Take pointer-set.h from GIMPLE_H.
3476         (print-rtl.o): Depend on cselib.h.
3477         (cselib.o): Depend on TREE_PASS_H.
3478         (var-tracking.o): Depend on cselib.h and TARGET_H.
3479         * sched-rgn.c (rgn_estimate_number_of_insns): Discount debug insns.
3480         (init_ready_list): Skip boundary debug insns.
3481         (add_branch_dependences): Skip debug insns.
3482         (free_block_dependencies): Check for blocks with only debug insns.
3483         (compute_priorities): Likewise.
3484         * gimple.c (gss_for_code): Handle GIMPLE_DEBUG.
3485         (gimple_build_with_ops_stat): Take subcode as unsigned.  Adjust
3486         all callers.
3487         (gimple_build_debug_bind_stat): New.
3488         (empty_body_p): Skip debug stmts.
3489         (gimple_has_side_effects): Likewise.
3490         (gimple_rhs_has_side_effects): Likewise.
3491         * gimple.h (enum gimple_debug_subcode, GIMPLE_DEBUG_BIND): New.
3492         (gimple_build_debug_bind_stat): Declare.
3493         (gimple_build_debug_bind): Define.
3494         (is_gimple_debug): New.
3495         (gimple_debug_bind_p): New.
3496         (gimple_debug_bind_get_var): New.
3497         (gimple_debug_bind_get_value): New.
3498         (gimple_debug_bind_get_value_ptr): New.
3499         (gimple_debug_bind_set_var): New.
3500         (gimple_debug_bind_set_value): New.
3501         (GIMPLE_DEBUG_BIND_NOVALUE): New internal temporary macro.
3502         (gimple_debug_bind_reset_value): New.
3503         (gimple_debug_bind_has_value_p): New.
3504         (gsi_next_nondebug): New.
3505         (gsi_prev_nondebug): New.
3506         (gsi_start_nondebug_bb): New.
3507         (gsi_last_nondebug_bb): New.
3508         * sched-vis.c (print_pattern): Handle VAR_LOCATION.
3509         (print_insn): Handle DEBUG_INSN.
3510         * tree-cfg.c (remove_bb): Walk stmts backwards.  Let loc
3511         of first insn prevail.
3512         (first_stmt): Skip debug stmts.
3513         (first_non_label_stmt): Likewise.
3514         (last_stmt): Likewise.
3515         (has_zero_uses_1): New.
3516         (single_imm_use_1): New.
3517         (verify_gimple_debug): New.
3518         (verify_types_in_gimple_stmt): Handle debug stmts.
3519         (verify_stmt): Likewise.
3520         (debug_loop_num): Skip debug stmts.
3521         (remove_edge_and_dominated_blocks): Remove dominators last.
3522         * tree-ssa-reasssoc.c (rewrite_expr_tree): Propagate into debug stmts.
3523         (linearize_expr): Likewise.
3524         * config/i386/i386.c (ix86_delegitimize_address): Call
3525         default implementation.
3526         * config/ia64/ia64.c (ia64_safe_itanium_class): Handle debug insns.
3527         (group_barrier_needed): Skip debug insns.
3528         (emit_insn_group_barriers): Likewise.
3529         (emit_all_insn_group_barriers): Likewise.
3530         (ia64_variable_issue): Handle debug insns.
3531         (ia64_dfa_new_cycle): Likewise.
3532         (final_emit_insn_group_barriers): Skip debug insns.
3533         (ia64_dwarf2out_def_steady_cfa): Take frame argument.  Don't
3534         def cfa without frame.
3535         (process_set): Likewise.
3536         (process_for_unwind_directive): Pass frame on.
3537         * config/rs6000/rs6000.c (TARGET_DELEGITIMIZE_ADDRESS): Define.
3538         (rs6000_delegitimize_address): New.
3539         (rs6000_debug_adjust_cost): Handle debug insns.
3540         (is_microcoded_insn): Likewise.
3541         (is_cracked_insn): Likewise.
3542         (is_nonpipeline_insn): Likewise.
3543         (insn_must_be_first_in_group): Likewise.
3544         (insn_must_be_last_in_group): Likewise.
3545         (force_new_group): Likewise.
3546         * cfgrtl.c (rtl_split_block): Emit INSN_DELETED note if block
3547         contains only debug insns.
3548         (rtl_merge_blocks): Skip debug insns.
3549         (purge_dead_edges): Likewise.
3550         (rtl_block_ends_with_call_p): Skip debug insns.
3551         * dce.c (deletable_insn_p): Handle VAR_LOCATION.
3552         (mark_reg_dependencies): Skip debug insns.
3553         * params.def (PARAM_MIN_NONDEBUG_INSN_UID): New.
3554         * tree-ssanames.c (release_ssa_name): Propagate def into debug stmts.
3555         * tree-ssa-threadedge.c
3556         (record_temporary_equivalences_from_stmts): Skip debug stmts.
3557         * regcprop.c (replace_oldest_value_addr): Skip debug insns.
3558         (replace_oldest_value_mem): Use ALL_REGS for debug insns.
3559         (copyprop_hardreg_forward_1): Handle debug insns.
3560         * reload1.c (reload): Skip debug insns.  Replace unassigned
3561         pseudos in debug insns with their equivalences.
3562         (eliminate_regs_in_insn): Skip debug insns.
3563         (emit_input_reload_insns): Skip debug insns at first, adjust
3564         them later.
3565         * tree-ssa-operands.c (add_virtual_operand): Reject debug stmts.
3566         (get_indirect_ref_operands): Pass opf_no_vops on.
3567         (get_expr_operands): Likewise.  Skip debug stmts.
3568         (parse_ssa_operands): Scan debug insns with opf_no_vops.
3569
3570 2009-09-01  Richard Henderson  <rth@redhat.com>
3571
3572         * tree-ssa-ccp.c (ccp_initialize): Make sure to simulate
3573         stmt_ends_pp_p statements at least once.
3574         * tree-vrp.c (vrp_initialize): Likewise.
3575         (vrp_visit_stmt): Be prepared for non-interesting stmts.
3576
3577 2009-09-01  Dodji Seketeli  <dodji@redhat.com>
3578
3579         PR bootstrap/41205
3580         Fix AIX bootstrap after PR debug/30161
3581         * dwarf2out.c (make_ith_pack_parameter_name): Don't used strnlen
3582         that is a GNU extension.
3583         (tmpl_value_parm_die_table): Move the definition of this global
3584         outside #ifdef DWARF2_DEBUGGING_INFO region.
3585
3586 2009-09-01  Richard Guenther  <rguenther@suse.de>
3587
3588         * tree.c (tree_expr_size): New function.
3589         * tree.h (tree_expr_size): Declare.
3590         * rtlanal.c (rtx_addr_can_trap_p_1): Adjust comment.
3591         * builtins.c (fold_builtin_memory_op): Use tree_expr_size.
3592         * langhooks.c (lhd_expr_size): Remove.
3593         * langhooks.h (struct lang_hooks): Remove expr_size.
3594         * explow.c (expr_size): Use tree_expr_size.
3595         (int_expr_size): Likewise.
3596         * langhooks-def.h (lhd_expr_size): Remove.
3597         (LANG_HOOKS_EXPR_SIZE): Likewise.
3598         (LANG_HOOKS_INITIALIZER): Adjust.
3599
3600 2009-09-01  Richard Guenther  <rguenther@suse.de>
3601
3602         * tree-flow.h (mark_addressable): Move declaration ...
3603         * tree.h (mark_addressable): ... here.
3604         * stmt.c (expand_asm_operands): Use mark_addressable, not
3605         lang_hooks.mark_addressable.
3606         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
3607         LANG_HOOKS_MARK_ADDRESSABLE.
3608         * langhooks.h (struct lang_hooks): Remove mark_addressable langhook.
3609         * c-objc-common.h (LANG_HOOKS_MARK_ADDRESSABLE): Remove.
3610
3611 2009-08-31  Chris Demetriou  <cgd@google.com>
3612
3613         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Never
3614         vectorize if not TARGET_SSE2.
3615
3616 2009-08-31  DJ Delorie  <dj@redhat.com>
3617
3618         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Exclude coprocessor
3619         registers if no coprocessor is enabled.
3620
3621 2009-08-31  Dodji Seketeli  <dodji@redhat.com>
3622
3623         PR debug/30161
3624         * cgraph.h (cgraph_get_node): Declare ...
3625         * cgraph.c (cgraph_get_node): ... new function.
3626         * dwarf2out.c (gen_generic_params_dies,
3627         generic_parameter_die, tree_add_const_value_attribute_for_decl,
3628         make_ith_pack_parameter_name,
3629         append_entry_to_tmpl_value_parm_die_table,
3630         gen_remaining_tmpl_value_param_die_attribute): New functions.
3631         (gen_subprogram_die): Generate debug info for template parameters
3632         if debug info level is higher than DINFO_LEVEL_TERSE.
3633         Use tree_add_const_value_attribute_for_decl instead of
3634         tree_add_const_value_attribute.
3635         (gen_const_die): Use tree_add_const_value_attribute_for_decl
3636         instead of tree_add_const_value_attribute.
3637         (gen_struct_or_union_type_die): Generate debug
3638         info for template parameters if debug info level is higher than
3639         DINFO_LEVEL_TERSE.
3640         (tree_add_const_value_attribute): Handle integral and pointer
3641         constants. Update comment.
3642         (dwarf_tag_name): Support DW_TAG_GNU_template_template_param.
3643         (dwarf_attr_name): Support DW_AT_GNU_template_name.
3644         (reference_to_unused): Fix thinko. Remove redundant predicates from
3645         tests.
3646         (tree_add_const_value_attribute): Make this work for constant
3647         expressions only.
3648         tree_add_const_value_attribute_for_decl is to be used for variable
3649         DECLs now.
3650         (add_location_or_const_value_attribute): Use
3651         tree_add_const_value_attribute_for_decl now.
3652         (dwarf2out_finish): Emit the DW_AT_const_value attribute of
3653         DW_TAG_template_value_param DIEs after function DIEs have been
3654         emitted.
3655         * langhooks.h (lang_hooks_for_types): Add
3656         get_argument_pack_elems.
3657         (lang_hooks_for_decls): Add generic_generic_parameter_decl_p.
3658         (lang_hooks): Added get_innermost_generic_parms,
3659         get_innermost_generic_args.
3660         * langhooks-def.h (LANG_HOOKS_GET_INNERMOST_GENERIC_PARMS,
3661         LANG_HOOKS_GET_INNERMOST_GENERIC_ARGS,
3662         LANG_HOOKS_GET_ARGUMENT_PACK_ELEMS,
3663         LANG_HOOKS_GENERIC_GENERIC_PARAMETER_DECL_P): New language hooks.
3664
3665 2009-08-31  DJ Delorie  <dj@redhat.com>
3666
3667         * config/mep/mep.c (machine_function): Add frame_locked flag.  Set
3668         it once we start generating the prologue or epilogue.
3669         (mep_call_saves_register): If the frame is locked, re-use
3670         cached values.
3671         (mep_assign_save_slots): New, broken out from mep_expand_prologue.
3672         (mep_expand_prologue): Call it.
3673         (mep_expand_epilogue): Likewise.
3674         (mep_start_function): Use the same logic as mep_expand_prologue.
3675         (mep_pass_by_reference): Make logic more readable.
3676         (mep_return_in_memory): Zero-sized objects are passed in memory.
3677         (mep_reorg_noframe): Make sure we have accurate REG_DEAD notes.
3678
3679 2009-08-31  Richard Guenther  <rguenther@suse.de>
3680
3681         * builtins.c (fold_builtin_memory_op): Use the alias oracle
3682         to query if the memory regions for memmove overlap.
3683         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
3684         asserts on pointers, instead deal with odd trees.
3685         (ptr_derefs_may_alias_p): Likewise.
3686         (refs_may_alias_p_1): Constructor bases also never alias.
3687
3688 2009-08-31  Gerald Pfeifer  <gerald@pfeifer.com>
3689
3690         * doc/install.texi (Final install): Adjust reference on where to
3691         order printed manuals.
3692
3693 2009-08-30  Olivier Hainque  <hainque@adacore.com>
3694
3695         * dwarf2out.c (switch_to_frame_table_section): Move
3696         definition prior to first use.
3697
3698 2009-08-30  Richard Guenther  <rguenther@suse.de>
3699
3700         PR tree-optimization/41186
3701         * tree-ssa-alias.c (ptr_deref_may_alias_ref_p): Remove.
3702         (ao_ref_init_from_ptr_and_size): New function.
3703         (ref_maybe_used_by_call_p_1): Be more precise tracking
3704         used ranges for builtin functions.
3705         (ref_maybe_used_by_call_p): Adjust.
3706         (call_may_clobber_ref_p_1): Be more precise tracking clobbered
3707         ranges for builtin functions.
3708         * tree-ssa-alias.h (ao_ref_init_from_ptr_and_size): Declare.
3709
3710 2009-08-30  Alan Modra  <amodra@bigpond.net.au>
3711
3712         PR target/41081
3713         * fwprop.c (get_reg_use_in): Delete.
3714         (free_load_extend): New function.
3715         (forward_propagate_subreg): Use it.
3716
3717 2009-08-29  Kaz Kojima  <kkojima@gcc.gnu.org>
3718
3719         * config.gcc (sh*-*-elf): Add superh stuff only for sh*-superh-elf.
3720
3721 2009-08-29  Kai Tietz<kai.tietz@onevision.com>
3722
3723         PR/41184
3724         * config/i386.c (ix86_expand_epilogue): Correct stack adjustment for
3725         padding.
3726
3727 2009-08-29  Douglas B Rupp  <rupp@gnat.com>
3728
3729         * crtstuff.c (__do_global_dtors_aux): Use atexit if no
3730         fini or fini_array section.
3731
3732 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
3733
3734         * graphite-dependences.c (graphite_legal_transform_bb): Call
3735         pbb_remove_duplicate_pdrs.
3736         * graphite-poly.c (can_collapse_pdr): Removed.
3737         (pdr_find_duplicate): Removed.
3738         (can_collapse_pdrs): New.
3739         (pbb_remove_duplicate_pdrs): New.
3740         (new_poly_dr): Do not look for duplicates.
3741         * graphite-poly.h (struct poly_bb): New field pdr_duplicates_removed.
3742         (PBB_PDR_DUPLICATES_REMOVED): New.
3743         (pbb_remove_duplicate_pdrs): Declared.
3744
3745 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
3746
3747         * graphite-interchange.c (pbb_interchange_profitable_p): Adjust
3748         the strides by multiplying by PDR_NB_REFS.
3749         * graphite-poly.c (can_collapse_pdr): New.
3750         (pdr_find_duplicate): New.
3751         (new_poly_dr): Call pdr_find_duplicate.  Collapse duplicate PDRs.
3752         Initialize PDR_NB_REFS.
3753         * graphite-poly.h (struct poly_dr): Add field nb_refs.
3754         (PDR_NB_REFS): New.
3755         (new_poly_dr): Number of subscripts is a graphite_dim_t.
3756
3757 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
3758
3759         PR middle-end/40965
3760         * graphite-poly.c (apply_poly_transforms): Remove legality test before
3761         any transform.
3762
3763 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
3764
3765         * graphite-dependences.c (pddr_original_scattering): Return NULL
3766         for read-read dependence relations.
3767         * graphite-poly.h (enum poly_dr_type): Fix comment.
3768         (pdr_read_p): New.
3769         (pdr_write_p): New.
3770         (pdr_may_write_p): New.
3771
3772 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
3773
3774         * graphite-poly.h (enum POLY_DR_TYPE): Renamed poly_dr_type.
3775         (struct poly_dr): Same.
3776         (new_poly_dr): Same.
3777         * graphite-poly.c (new_poly_dr): Same.
3778         * graphite-dependences.c (dot_deps): Disable call to system.
3779
3780 2009-08-28  Cary Coutant  <ccoutant@google.com>
3781
3782         PR debug/41063
3783         * dwarf2out.c (gen_type_die_with_usage): Use proper context for
3784         struct/union/enum types local to a function.
3785
3786 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
3787             Sebastian Pop  <sebastian.pop@amd.com>
3788
3789         * graphite-blocking.c (pbb_strip_mine_loop_depth): Renamed
3790         pbb_strip_mine_time_depth.  Changed the implementation so that
3791         transformation is expressed as a transformation on
3792         time (scatttering) dimensions.  Also, ensures that the 2d+1
3793         scheduling format is preserved.
3794         (pbb_strip_mine_profitable_p): Profitability is based on the
3795         iteration number of a given time (scattering) dimension,
3796         and not on a original loop depth dimension.
3797         (pbb_strip_mine): Call pbb_number_of_iterations_at_time.
3798         (pbb_do_strip_mine): Call psct_dynamic_dim.
3799         * graphite-poly.c (pbb_number_of_iterations_at_time): New.
3800         * graphite-poly.h (pbb_number_of_iterations_at_time): Declared.
3801         (pbb_nb_dynamic_scattering_transform): New.
3802         (psct_dynamic_dim): New.
3803
3804 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
3805
3806         * graphite-ppl.c (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
3807         * graphite-ppl.h (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
3808         * graphite-poly.c (pbb_number_of_iterations): Rename ppl_max_for_le.
3809         * graphite-interchange.c (build_linearized_memory_access): Same.
3810         (memory_stride_in_loop): Same.
3811
3812 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
3813
3814         * graphite-dependences.c (pddr_original_scattering): New.
3815         (graphite_legal_transform_dr): Call pddr_original_scattering.
3816         (dot_deps_1): New.
3817         (dot_deps): New.
3818         * graphite-dependences.h (dot_deps): Declared.
3819         * graphite-poly.c (new_poly_dr): Initialize PDR_ID.
3820         (print_pdr): Print PDR_ID.
3821         * graphite-poly.h (struct poly_dr): Add field id.
3822         (PDR_ID): New.
3823         (pbb_index): New.
3824         * graphite-scop-detection.c (dot_all_scops_1): Cleanup comment.
3825
3826 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
3827
3828         * graphite-dependences.c (graphite_carried_dependence_level_k): Do
3829         not delete the original dependence relation.
3830
3831 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
3832
3833         * graphite-dependences.c (new_poly_dr_pair): Renamed new_poly_ddr.
3834         (eq_poly_dr_pair_p): Renamed eq_poly_ddr_p.
3835         (hash_poly_dr_pair_p): Renamed hash_poly_ddr_p.
3836         (free_poly_ddr): New.
3837         (pddr_is_empty): New.
3838         (dependence_polyhedron_1): Now returns a poly_ddr_p.
3839         (dependence_polyhedron): Same.  Remove useless gcc_assert.
3840         Remove fprintfs.
3841         (graphite_legal_transform_dr): Call pddr_is_empty and free_poly_ddr.
3842         (graphite_carried_dependence_level_k): Call pddr_is_empty.
3843         * graphite-dependences.h (enum poly_dependence_kind): New.
3844         (poly_dr_pair): Renamed poly_ddr.  Added a field kind.
3845         (PDRP_SOURCE): Renamed PDDR_SOURCE.
3846         (PDRP_SINK): Renamed PDDR_SINK.
3847         (PDRP_DDP): Renamed PDDR_DDP.
3848         (PDDR_KIND): New.
3849         (free_poly_ddr): Declared.
3850         * graphite-poly.c (new_scop): Use the new hash function names.
3851         * graphite-poly.h (struct scop): Renamed field original_pdr_pairs
3852         into original_pddrs.
3853         (SCOP_ORIGINAL_PDR_PAIRS): Renamed SCOP_ORIGINAL_PDDRS.
3854
3855 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
3856
3857         * cfgloopmanip.c (create_empty_loop_on_edge): Generate upper
3858         bounds with LT_EXPR to make niter analysis more precise on code
3859         generated by Graphite.
3860
3861 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
3862
3863         * graphite-dependences.c (graphite_legal_transform_dr): Fix formatting.
3864         (graphite_legal_transform_bb): Same.
3865         (poly_drs_may_alias_p): Same.
3866
3867 2009-08-28  Richard Guenther  <rguenther@suse.de>
3868
3869         * tree.def: Remove note about obsolete TYPE_NONCOPIED_PARTS.
3870
3871 2009-08-28  Jan Beulich  <jbeulich@novell.com>
3872
3873         * config/i386/netware.c: Include langhooks.h.
3874         (i386_nlm_encode_section_info): Simplify.
3875         (netware_override_options): Delete.
3876         * config/i386/netware.h (netware_override_options): Delete
3877         declaration.
3878         (OVERRIDE_OPTIONS): Delete definition.
3879         (SUBTARGET_OVERRIDE_OPTIONS): Define.
3880         (ASM_COMMENT_START): Define.
3881         * config/i386/nwld.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Define.
3882
3883 2009-08-28  Jan Beulich  <jbeulich@novell.com>
3884
3885         * configure.ac: For in-tree ld, do a plain version check to
3886         determine whether comdat groups are supported.
3887         * configure: Regenerate.
3888
3889 2009-08-28  Olivier Hainque  <hainque@adacore.com>
3890
3891         * collect2.c (DO_COLLECT_EXPORT_LIST): New internal macro,
3892         always defined.  Reflect definition or absence of such for
3893         COLLECT_EXPORT_LIST.  Readability helper.
3894         (scanfilter): New enum, to help control what symbols
3895         are to be considered or ignored by scan_prog_file.
3896         (enum pass): Rename as "scanpass", moved together with scanfilter
3897         prior to scan_prog_file's prototype.
3898         (scan_prog_file): Accept and honor scanpass and scanfilter arguments.
3899         Group prototype with the scanpass/scanfilter definitions, factorize
3900         head comments for the several implementations at the prototype.
3901         (main): Reorganize the first pass link control to let AIX
3902         drag only the needed frame tables in executables.  Prevent
3903         frame tables collection during the scan aimed at static ctors.
3904         Pre-link and scan for frame tables later to compensate.
3905         * doc/tm.texi (ASM_OUTPUT_DWARF_TABLE_REF): New macro.
3906         A C statement to issue assembly directives that create a reference
3907         to the given DWARF table identifier label from the current function
3908         section.
3909         * dwarf2out.c (switch_to_eh_frame_section): Add a BACK argument
3910         to differentiate first time section entry.  Only emit a .data
3911         tables start identifier label the first time around.
3912         (switch_to_frame_table_section): New function.  Helper for
3913         output_call_frame_info to switch possibly BACK into the eh_frame
3914         or the debug_frame section depending on FOR_EH.
3915         (output_call_frame_info): Use helper to first enter the proper
3916         frame section.
3917         (output_fde): Use ASM_OUTPUT_DWARF_TABLE_REF when defined to
3918         emit a link to the frame table start label from each function
3919         section.
3920         * config/rs6000/rs6000.c (rs6000_aix_asm_output_dwarf_table_ref):
3921         New function.  Implementation of ASM_OUTPUT_DWARF_TABLE_REF.
3922         * config/rs6000/rs6000-protos.h: Declare it.
3923         * config/rs6000/aix.h (ASM_OUTPUT_DWARF_TABLE_REF): Define.
3924
3925 2009-08-27  Kaz Kojima  <kkojima@gcc.gnu.org>
3926
3927         * config/sh/sh.c (split_branches): Check the result of
3928         next_active_insn.
3929
3930 2009-08-27  Steve Ellcey  <sje@cup.hp.com>
3931
3932         * config/ia64/hpux.h (LIB_SPEC): Add -lrt for when
3933         using -pthread -fopenmp
3934
3935 2009-08-27  Gerald Pfeifer  <gerald@pfeifer.com>
3936
3937         * doc/service.texi (service directory): Update URL.
3938
3939 2009-08-27  Uros Bizjak  <ubizjak@gmail.com>
3940
3941         PR rtl-optimization/40861
3942         * simplify-rtx.c (simplify_subreg): Do not call simplify_gen_subreg to
3943         extract word from a multi-word subreg for negative byte positions.
3944
3945 2009-08-27  Tristan Gingold  <gingold@adacore.com>
3946             Douglas B Rupp  <rupp@gnat.com>
3947
3948         * config/ia64/ia64.c (ia64_attribute_table): Add "common_object" entry.
3949         (SECTION_VMS_OVERLAY): Define.
3950         (ia64_vms_common_object_attribute): Added.  Handle the "common_object"
3951         attribute.
3952         (ia64_vms_elf_asm_named_section): Added.  Generate .section pseudo-op
3953         for common_object.
3954         (ia64_vms_output_aligned_decl_common): Added.  Generate pseudo-op for
3955         common_object declarations.
3956         (ia64_section_type_flags): Set section flag for common_object.
3957         * config/ia64/ia64-protos.h
3958         (ia64_vms_output_aligned_decl_common): Declare.
3959         (ia64_vms_elf_asm_named_section): Declare.
3960
3961 2009-08-27  Michael Matz  <matz@suse.de>
3962
3963         * expr.c (expand_expr_real_2): New function taking exploded
3964         unary or binary expression, split out from ...
3965         (expand_expr_real_1): ... here.  Move over all unary/binary
3966         switch parts to above function, in particular these codes:
3967         PAREN_EXPR, NOP_EXPR, CONVERT_EXPR, POINTER_PLUS_EXPR, PLUS_EXPR,
3968         MINUS_EXPR, MULT_EXPR, TRUNC_DIV_EXPR, FLOOR_DIV_EXPR, CEIL_DIV_EXPR,
3969         ROUND_DIV_EXPR, EXACT_DIV_EXPR, RDIV_EXPR, TRUNC_MOD_EXPR,
3970         FLOOR_MOD_EXPR, CEIL_MOD_EXPR, ROUND_MOD_EXPR, FIXED_CONVERT_EXPR,
3971         FIX_TRUNC_EXPR, FLOAT_EXPR, NEGATE_EXPR, ABS_EXPR, MAX_EXPR, MIN_EXPR,
3972         BIT_NOT_EXPR, TRUTH_AND_EXPR, BIT_AND_EXPR, TRUTH_OR_EXPR,
3973         BIT_IOR_EXPR, TRUTH_XOR_EXPR, BIT_XOR_EXPR, LROTATE_EXPR, RROTATE_EXPR,
3974         LSHIFT_EXPR, RSHIFT_EXPR, LT_EXPR, LE_EXPR, GT_EXPR, GE_EXPR, EQ_EXPR,
3975         NE_EXPR, UNORDERED_EXPR, ORDERED_EXPR, UNLT_EXPR, UNLE_EXPR, UNGT_EXPR,
3976         UNGE_EXPR, UNEQ_EXPR, LTGT_EXPR, TRUTH_NOT_EXPR, COMPLEX_EXPR,
3977         WIDEN_SUM_EXPR, REDUC_MAX_EXPR, REDUC_MIN_EXPR, REDUC_PLUS_EXPR,
3978         VEC_EXTRACT_EVEN_EXPR, VEC_EXTRACT_ODD_EXPR, VEC_INTERLEAVE_HIGH_EXPR,
3979         VEC_INTERLEAVE_LOW_EXPR, VEC_LSHIFT_EXPR, VEC_RSHIFT_EXPR,
3980         VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR, VEC_UNPACK_FLOAT_HI_EXPR,
3981         VEC_UNPACK_FLOAT_LO_EXPR, VEC_WIDEN_MULT_HI_EXPR,
3982         VEC_WIDEN_MULT_LO_EXPR, VEC_PACK_TRUNC_EXPR, VEC_PACK_SAT_EXPR,
3983         VEC_PACK_FIX_TRUNC_EXPR.
3984         (<case PAREN_EXPR>): Call set_mem_attributes() with type, not the
3985         full expression.
3986
3987 2009-08-27  Richard Guenther  <rguenther@suse.de>
3988
3989         * gengtype.c (main): Handle uint64_t.
3990         * ipa-utils.c (get_base_var): Indent properly.
3991         * tree-ssa-live.c (debug_scope_block): New function.
3992         * tree-flow.h (debug_scope_block): Declare.
3993         * tree-ssa-copy.c (replace_exp_1): Add vertical space.
3994         * basic-block.h (enum profile_status): Rename to
3995         enum profile_status_d.
3996         (x_profile_status): Adjust type.
3997
3998 2009-08-27  Dodji Seketeli  <dodji@redhat.com>
3999
4000         PR debug/41170
4001         * dwarf2out.c (get_context_die): Declare this static function.
4002         (gen_type_die_with_usage): Make sure a DIE is a generated for
4003         the context of a typedef.
4004
4005 2009-08-26  Anatoly Sokolov  <aesok@post.ru>
4006
4007         * doc/invoke.texi (AVR Options): Remove documentation of -minit-stack
4008         switch.
4009
4010 2009-08-26  Richard Sandiford  <rdsandiford@googlemail.com>
4011
4012         * config/mips/mips-protos.h (mips_output_sync): Declare.
4013         (mips_sync_loop_insns): Likewise.
4014         (mips_output_sync_loop): Replace first two parameters with an rtx.
4015         * config/mips/mips.c (mips_multi_member): New structure.
4016         (mips_multi_members): New variable.
4017         (mips_multi_start): New function.
4018         (mips_multi_add): Likewise.
4019         (mips_multi_add_insn): Likewise.
4020         (mips_multi_add_label): Likewise.
4021         (mips_multi_last_index): Likewise.
4022         (mips_multi_copy_insn): Likewise.
4023         (mips_multi_set_operand): Likewise.
4024         (mips_multi_write): Likewise.
4025         (mips_print_operand_punctuation): Remove '%|' and '%-'.
4026         (mips_init_print_operand_punct): Update accordingly.
4027         (mips_start_ll_sc_sync_block): New function.
4028         (mips_end_ll_sc_sync_block): Likewise.
4029         (mips_output_sync): Likewise.
4030         (mips_sync_insn1_template): Likewise.
4031         (mips_sync_insn2_template): Likewise.
4032         (mips_get_sync_operand): Likewise.
4033         (mips_process_sync_loop): Likewise.
4034         (mips_output_sync_loop): Use mips_process_sync_loop.
4035         (mips_sync_loop_insns): New function.
4036         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Delete.
4037         (MIPS_COMPARE_AND_SWAP_12): Likewise.
4038         (MIPS_COMPARE_AND_SWAP_12_ZERO_OP): Likewise.
4039         (MIPS_COMPARE_AND_SWAP_12_NONZERO_OP): Likewise.
4040         (MIPS_SYNC_OP, MIPS_SYNC_OP_12): Likewise.
4041         (MIPS_SYNC_OP_12_AND, MIPS_SYNC_OP_12_XOR): Likewise.
4042         (MIPS_SYNC_OLD_OP_12): Likewise.
4043         (MIPS_SYNC_OLD_OP_12_AND, MIPS_SYNC_OLD_OP_12_XOR): Likewise.
4044         (MIPS_SYNC_NEW_OP_12): Likewise.
4045         (MIPS_SYNC_NEW_OP_12_AND, MIPS_SYNC_NEW_OP_12_XOR): Likewise.
4046         (MIPS_SYNC_OLD_OP, MIPS_SYNC_NEW_OP): Likewise.
4047         (MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND, MIPS_SYNC_NEW_NAND): Likewise.
4048         (MIPS_SYNC_EXCHANGE, MIPS_SYNC_EXCHANGE_12): Likewise.
4049         (MIPS_SYNC_EXCHANGE_12_ZERO_OP): Likewise.
4050         (MIPS_SYNC_EXCHANGE_12_NONZER_OP): Likewise.
4051         * config/mips/mips.md (sync_mem): New attribute.
4052         (sync_oldval, sync_newval, sync_inclusive_mask): Likewise.
4053         (sync_exclusive_mask, sync_required_oldval): Likewise.
4054         (sync_insn1_op2, sync_insn1, sync_insn2): Likewise.
4055         (sync_release_barrier): Likewise.
4056         (length): Handle sync loops.
4057         (sync): Use mips_output_sync.
4058         * config/mips/sync.md (*memory_barrier): Use mips_output_sync.
4059         (sync_compare_and_swap<mode>): Set the new sync_* attributes
4060         and use mips_output_sync_loop.
4061         (compare_and_swap_12, sync_add<mode>, sync_<optab>_12): Likewise.
4062         (sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12): Likewise.
4063         (sync_old_nand_12, sync_new_nand_12, sync_sub<mode>): Likewise.
4064         (sync_old_add<mode>, sync_old_sub<mode>): Likewise.
4065         (sync_new_add<mode>, sync_new_sub<mode>): Likewise.
4066         (sync_<optab><mode>, sync_old_<optab><mode>): Likewise.
4067         (sync_new_<optab><mode>, sync_nand<mode>): Likewise.
4068         (sync_old_nand<mode>, sync_new_nand<mode>): Likewise.
4069         (sync_lock_test_and_set<mode>, test_and_set_12): Likewise.
4070
4071 2009-08-26  Richard Guenther  <rguenther@suse.de>
4072
4073         PR middle-end/41163
4074         * gimplify.c (gimplify_addr_expr): Canonicalize ADDR_EXPRs if
4075         the types to not match.
4076         * tree-cfg.c (verify_gimple_assign_single): Adjust ADDR_EXPR
4077         verification.
4078         * tree-ssa.c (useless_type_conversion_p): Conversions to
4079         pointers to unprototyped functions are useless.
4080
4081 2009-08-26  Richard Guenther  <rguenther@suse.de>
4082
4083         * tree-ssa-structalias.c (create_variable_info_for): Remove strange
4084         whole-program condition, prepare to be called for non-globals.
4085         (intra_create_variable_infos): For restrict qualified DECL_BY_REFERENCE
4086         params build a representative with known type and track its fields.
4087
4088 2009-08-26  Uros Bizjak  <ubizjak@gmail.com>
4089
4090         * config/alpha/sync.md: Update comment about unpredictable LL/SC lock
4091         clearing by a taken branch.
4092         (sync_<fetchop_name><mode>): Split when epilogue_completed is set,
4093         effectively after bbro pass.
4094         (sync_nand<mode>): Ditto.
4095         (sync_old_<fetchop_name><mode>): Ditto.
4096         (sync_old_nand<mode>): Ditto.
4097         (sync_new_<fetchop_name><mode>): Dito.
4098         (sync_new_nand<mode>): Ditto.
4099         (sync_compare_and_swap<mode>_1): Ditto.
4100         (*sync_compare_and_swap<mode>): Ditto.
4101         (sync_lock_test_and_set<mode>_1): Ditto.
4102         ("sync_lock_test_and_set<mode>): Ditto.
4103
4104 2009-08-25  Douglas B Rupp  <rupp@gnat.com>
4105
4106         * hwint.h (HOST_LONG_FORMAT): New macro
4107         * bitmap.c, c-decl.c, mips-tfile.c, print-rtl.c, print-tree.c:
4108         Use HOST_PTR_PRINTF.
4109         * system.h (HOST_PTR_PRINTF): Resurrect old macro
4110         * doc/hostconfig.texi (HOST_LONG_FORMAT): Document.
4111         (HOST_PTR_PRINTF): Document.
4112
4113 2009-08-25 Jan Hubicka  <jh@suse.cz>
4114
4115         * config/i386/bmmintrin.h: Replace by #error.
4116
4117         Revert:
4118         Michael Meissner  <michael.meissner@amd.com>
4119         Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
4120         Tony Linthicum  <tony.linthicum@amd.com>
4121
4122         * config/i386/i386.h (TARGET_SSE5): New macro for SSE5.
4123         (TARGET_ROUND): New macro for the round/ptest instructions which
4124         are shared between SSE4.1 and SSE5.
4125         (OPTION_MASK_ISA_ROUND): Ditto.
4126         (OPTION_ISA_ROUND): Ditto.
4127         (TARGET_FUSED_MADD): New macro for -mfused-madd swtich.
4128         (TARGET_CPU_CPP_BUILTINS): Add SSE5 support.
4129
4130         * config/i386/i386.opt (-msse5): New switch for SSE5 support.
4131         (-mfused-madd): New switch to give users control over whether the
4132         compiler optimizes to use the multiply/add SSE5 instructions.
4133
4134         * config/i386/i386.c (enum pta_flags): Add PTA_SSE5.
4135         (ix86_handle_option): Turn off 3dnow if -msse5.
4136         (override_options): Add SSE5 support.
4137         (print_operand): %Y prints comparison codes for SSE5 com/pcom
4138         instructions.
4139         (ix86_expand_sse_movcc): Add SSE5 support.
4140         (ix86_expand_sse5_unpack): New function to use pperm to unpack a
4141         vector type to the next largest size.
4142         (ix86_expand_sse5_pack): New function to use pperm to pack a
4143         vector type to the next smallest size.
4144         (IX86_BUILTIN_FMADDSS): New for SSE5 intrinsic.
4145         (IX86_BUILTIN_FMADDSD): Ditto.
4146         (IX86_BUILTIN_FMADDPS): Ditto.
4147         (IX86_BUILTIN_FMADDPD): Ditto.
4148         (IX86_BUILTIN_FMSUBSS): Ditto.
4149         (IX86_BUILTIN_FMSUBSD): Ditto.
4150         (IX86_BUILTIN_FMSUBPS): Ditto.
4151         (IX86_BUILTIN_FMSUBPD): Ditto.
4152         (IX86_BUILTIN_FNMADDSS): Ditto.
4153         (IX86_BUILTIN_FNMADDSD): Ditto.
4154         (IX86_BUILTIN_FNMADDPS): Ditto.
4155         (IX86_BUILTIN_FNMADDPD): Ditto.
4156         (IX86_BUILTIN_FNMSUBSS): Ditto.
4157         (IX86_BUILTIN_FNMSUBSD): Ditto.
4158         (IX86_BUILTIN_FNMSUBPS): Ditto.
4159         (IX86_BUILTIN_FNMSUBPD): Ditto.
4160         (IX86_BUILTIN_PCMOV_V2DI): Ditto.
4161         (IX86_BUILTIN_PCMOV_V4SI): Ditto.
4162         (IX86_BUILTIN_PCMOV_V8HI): Ditto.
4163         (IX86_BUILTIN_PCMOV_V16QI): Ditto.
4164         (IX86_BUILTIN_PCMOV_V4SF): Ditto.
4165         (IX86_BUILTIN_PCMOV_V2DF): Ditto.
4166         (IX86_BUILTIN_PPERM): Ditto.
4167         (IX86_BUILTIN_PERMPS): Ditto.
4168         (IX86_BUILTIN_PERMPD): Ditto.
4169         (IX86_BUILTIN_PMACSSWW): Ditto.
4170         (IX86_BUILTIN_PMACSWW): Ditto.
4171         (IX86_BUILTIN_PMACSSWD): Ditto.
4172         (IX86_BUILTIN_PMACSWD): Ditto.
4173         (IX86_BUILTIN_PMACSSDD): Ditto.
4174         (IX86_BUILTIN_PMACSDD): Ditto.
4175         (IX86_BUILTIN_PMACSSDQL): Ditto.
4176         (IX86_BUILTIN_PMACSSDQH): Ditto.
4177         (IX86_BUILTIN_PMACSDQL): Ditto.
4178         (IX86_BUILTIN_PMACSDQH): Ditto.
4179         (IX86_BUILTIN_PMADCSSWD): Ditto.
4180         (IX86_BUILTIN_PMADCSWD): Ditto.
4181         (IX86_BUILTIN_PHADDBW): Ditto.
4182         (IX86_BUILTIN_PHADDBD): Ditto.
4183         (IX86_BUILTIN_PHADDBQ): Ditto.
4184         (IX86_BUILTIN_PHADDWD): Ditto.
4185         (IX86_BUILTIN_PHADDWQ): Ditto.
4186         (IX86_BUILTIN_PHADDDQ): Ditto.
4187         (IX86_BUILTIN_PHADDUBW): Ditto.
4188         (IX86_BUILTIN_PHADDUBD): Ditto.
4189         (IX86_BUILTIN_PHADDUBQ): Ditto.
4190         (IX86_BUILTIN_PHADDUWD): Ditto.
4191         (IX86_BUILTIN_PHADDUWQ): Ditto.
4192         (IX86_BUILTIN_PHADDUDQ): Ditto.
4193         (IX86_BUILTIN_PHSUBBW): Ditto.
4194         (IX86_BUILTIN_PHSUBWD): Ditto.
4195         (IX86_BUILTIN_PHSUBDQ): Ditto.
4196         (IX86_BUILTIN_PROTB): Ditto.
4197         (IX86_BUILTIN_PROTW): Ditto.
4198         (IX86_BUILTIN_PROTD): Ditto.
4199         (IX86_BUILTIN_PROTQ): Ditto.
4200         (IX86_BUILTIN_PROTB_IMM): Ditto.
4201         (IX86_BUILTIN_PROTW_IMM): Ditto.
4202         (IX86_BUILTIN_PROTD_IMM): Ditto.
4203         (IX86_BUILTIN_PROTQ_IMM): Ditto.
4204         (IX86_BUILTIN_PSHLB): Ditto.
4205         (IX86_BUILTIN_PSHLW): Ditto.
4206         (IX86_BUILTIN_PSHLD): Ditto.
4207         (IX86_BUILTIN_PSHLQ): Ditto.
4208         (IX86_BUILTIN_PSHAB): Ditto.
4209         (IX86_BUILTIN_PSHAW): Ditto.
4210         (IX86_BUILTIN_PSHAD): Ditto.
4211         (IX86_BUILTIN_PSHAQ): Ditto.
4212         (IX86_BUILTIN_FRCZSS): Ditto.
4213         (IX86_BUILTIN_FRCZSD): Ditto.
4214         (IX86_BUILTIN_FRCZPS): Ditto.
4215         (IX86_BUILTIN_FRCZPD): Ditto.
4216         (IX86_BUILTIN_CVTPH2PS): Ditto.
4217         (IX86_BUILTIN_CVTPS2PH): Ditto.
4218         (IX86_BUILTIN_COMEQSS): Ditto.
4219         (IX86_BUILTIN_COMNESS): Ditto.
4220         (IX86_BUILTIN_COMLTSS): Ditto.
4221         (IX86_BUILTIN_COMLESS): Ditto.
4222         (IX86_BUILTIN_COMGTSS): Ditto.
4223         (IX86_BUILTIN_COMGESS): Ditto.
4224         (IX86_BUILTIN_COMUEQSS): Ditto.
4225         (IX86_BUILTIN_COMUNESS): Ditto.
4226         (IX86_BUILTIN_COMULTSS): Ditto.
4227         (IX86_BUILTIN_COMULESS): Ditto.
4228         (IX86_BUILTIN_COMUGTSS): Ditto.
4229         (IX86_BUILTIN_COMUGESS): Ditto.
4230         (IX86_BUILTIN_COMORDSS): Ditto.
4231         (IX86_BUILTIN_COMUNORDSS): Ditto.
4232         (IX86_BUILTIN_COMFALSESS): Ditto.
4233         (IX86_BUILTIN_COMTRUESS): Ditto.
4234         (IX86_BUILTIN_COMEQSD): Ditto.
4235         (IX86_BUILTIN_COMNESD): Ditto.
4236         (IX86_BUILTIN_COMLTSD): Ditto.
4237         (IX86_BUILTIN_COMLESD): Ditto.
4238         (IX86_BUILTIN_COMGTSD): Ditto.
4239         (IX86_BUILTIN_COMGESD): Ditto.
4240         (IX86_BUILTIN_COMUEQSD): Ditto.
4241         (IX86_BUILTIN_COMUNESD): Ditto.
4242         (IX86_BUILTIN_COMULTSD): Ditto.
4243         (IX86_BUILTIN_COMULESD): Ditto.
4244         (IX86_BUILTIN_COMUGTSD): Ditto.
4245         (IX86_BUILTIN_COMUGESD): Ditto.
4246         (IX86_BUILTIN_COMORDSD): Ditto.
4247         (IX86_BUILTIN_COMUNORDSD): Ditto.
4248         (IX86_BUILTIN_COMFALSESD): Ditto.
4249         (IX86_BUILTIN_COMTRUESD): Ditto.
4250         (IX86_BUILTIN_COMEQPS): Ditto.
4251         (IX86_BUILTIN_COMNEPS): Ditto.
4252         (IX86_BUILTIN_COMLTPS): Ditto.
4253         (IX86_BUILTIN_COMLEPS): Ditto.
4254         (IX86_BUILTIN_COMGTPS): Ditto.
4255         (IX86_BUILTIN_COMGEPS): Ditto.
4256         (IX86_BUILTIN_COMUEQPS): Ditto.
4257         (IX86_BUILTIN_COMUNEPS): Ditto.
4258         (IX86_BUILTIN_COMULTPS): Ditto.
4259         (IX86_BUILTIN_COMULEPS): Ditto.
4260         (IX86_BUILTIN_COMUGTPS): Ditto.
4261         (IX86_BUILTIN_COMUGEPS): Ditto.
4262         (IX86_BUILTIN_COMORDPS): Ditto.
4263         (IX86_BUILTIN_COMUNORDPS): Ditto.
4264         (IX86_BUILTIN_COMFALSEPS): Ditto.
4265         (IX86_BUILTIN_COMTRUEPS): Ditto.
4266         (IX86_BUILTIN_COMEQPD): Ditto.
4267         (IX86_BUILTIN_COMNEPD): Ditto.
4268         (IX86_BUILTIN_COMLTPD): Ditto.
4269         (IX86_BUILTIN_COMLEPD): Ditto.
4270         (IX86_BUILTIN_COMGTPD): Ditto.
4271         (IX86_BUILTIN_COMGEPD): Ditto.
4272         (IX86_BUILTIN_COMUEQPD): Ditto.
4273         (IX86_BUILTIN_COMUNEPD): Ditto.
4274         (IX86_BUILTIN_COMULTPD): Ditto.
4275         (IX86_BUILTIN_COMULEPD): Ditto.
4276         (IX86_BUILTIN_COMUGTPD): Ditto.
4277         (IX86_BUILTIN_COMUGEPD): Ditto.
4278         (IX86_BUILTIN_COMORDPD): Ditto.
4279         (IX86_BUILTIN_COMUNORDPD): Ditto.
4280         (IX86_BUILTIN_COMFALSEPD): Ditto.
4281         (IX86_BUILTIN_COMTRUEPD): Ditto.
4282         (IX86_BUILTIN_PCOMEQUB): Ditto.
4283         (IX86_BUILTIN_PCOMNEUB): Ditto.
4284         (IX86_BUILTIN_PCOMLTUB): Ditto.
4285         (IX86_BUILTIN_PCOMLEUB): Ditto.
4286         (IX86_BUILTIN_PCOMGTUB): Ditto.
4287         (IX86_BUILTIN_PCOMGEUB): Ditto.
4288         (IX86_BUILTIN_PCOMFALSEUB): Ditto.
4289         (IX86_BUILTIN_PCOMTRUEUB): Ditto.
4290         (IX86_BUILTIN_PCOMEQUW): Ditto.
4291         (IX86_BUILTIN_PCOMNEUW): Ditto.
4292         (IX86_BUILTIN_PCOMLTUW): Ditto.
4293         (IX86_BUILTIN_PCOMLEUW): Ditto.
4294         (IX86_BUILTIN_PCOMGTUW): Ditto.
4295         (IX86_BUILTIN_PCOMGEUW): Ditto.
4296         (IX86_BUILTIN_PCOMFALSEUW): Ditto.
4297         (IX86_BUILTIN_PCOMTRUEUW): Ditto.
4298         (IX86_BUILTIN_PCOMEQUD): Ditto.
4299         (IX86_BUILTIN_PCOMNEUD): Ditto.
4300         (IX86_BUILTIN_PCOMLTUD): Ditto.
4301         (IX86_BUILTIN_PCOMLEUD): Ditto.
4302         (IX86_BUILTIN_PCOMGTUD): Ditto.
4303         (IX86_BUILTIN_PCOMGEUD): Ditto.
4304         (IX86_BUILTIN_PCOMFALSEUD): Ditto.
4305         (IX86_BUILTIN_PCOMTRUEUD): Ditto.
4306         (IX86_BUILTIN_PCOMEQUQ): Ditto.
4307         (IX86_BUILTIN_PCOMNEUQ): Ditto.
4308         (IX86_BUILTIN_PCOMLTUQ): Ditto.
4309         (IX86_BUILTIN_PCOMLEUQ): Ditto.
4310         (IX86_BUILTIN_PCOMGTUQ): Ditto.
4311         (IX86_BUILTIN_PCOMGEUQ): Ditto.
4312         (IX86_BUILTIN_PCOMFALSEUQ): Ditto.
4313         (IX86_BUILTIN_PCOMTRUEUQ): Ditto.
4314         (IX86_BUILTIN_PCOMEQB): Ditto.
4315         (IX86_BUILTIN_PCOMNEB): Ditto.
4316         (IX86_BUILTIN_PCOMLTB): Ditto.
4317         (IX86_BUILTIN_PCOMLEB): Ditto.
4318         (IX86_BUILTIN_PCOMGTB): Ditto.
4319         (IX86_BUILTIN_PCOMGEB): Ditto.
4320         (IX86_BUILTIN_PCOMFALSEB): Ditto.
4321         (IX86_BUILTIN_PCOMTRUEB): Ditto.
4322         (IX86_BUILTIN_PCOMEQW): Ditto.
4323         (IX86_BUILTIN_PCOMNEW): Ditto.
4324         (IX86_BUILTIN_PCOMLTW): Ditto.
4325         (IX86_BUILTIN_PCOMLEW): Ditto.
4326         (IX86_BUILTIN_PCOMGTW): Ditto.
4327         (IX86_BUILTIN_PCOMGEW): Ditto.
4328         (IX86_BUILTIN_PCOMFALSEW): Ditto.
4329         (IX86_BUILTIN_PCOMTRUEW): Ditto.
4330         (IX86_BUILTIN_PCOMEQD): Ditto.
4331         (IX86_BUILTIN_PCOMNED): Ditto.
4332         (IX86_BUILTIN_PCOMLTD): Ditto.
4333         (IX86_BUILTIN_PCOMLED): Ditto.
4334         (IX86_BUILTIN_PCOMGTD): Ditto.
4335         (IX86_BUILTIN_PCOMGED): Ditto.
4336         (IX86_BUILTIN_PCOMFALSED): Ditto.
4337         (IX86_BUILTIN_PCOMTRUED): Ditto.
4338         (IX86_BUILTIN_PCOMEQQ): Ditto.
4339         (IX86_BUILTIN_PCOMNEQ): Ditto.
4340         (IX86_BUILTIN_PCOMLTQ): Ditto.
4341         (IX86_BUILTIN_PCOMLEQ): Ditto.
4342         (IX86_BUILTIN_PCOMGTQ): Ditto.
4343         (IX86_BUILTIN_PCOMGEQ): Ditto.
4344         (IX86_BUILTIN_PCOMFALSEQ): Ditto.
4345         (IX86_BUILTIN_PCOMTRUEQ): Ditto.
4346         (enum multi_arg_type): New enum for describing the various SSE5
4347         intrinsic argument types.
4348         (bdesc_multi_arg): New table for SSE5 intrinsics.
4349         (ix86_init_mmx_sse_builtins): Add SSE5 intrinsic support.
4350         (ix86_expand_multi_arg_builtin): New function for creating SSE5
4351         intrinsics.
4352         (ix86_expand_builtin): Add SSE5 intrinsic support.
4353         (ix86_sse5_valid_op_p): New function to validate SSE5 3 and 4
4354         operand instructions.
4355         (ix86_expand_sse5_multiple_memory): New function to split the
4356         second memory reference from SSE5 instructions.
4357         (type_has_variadic_args_p): Delete in favor of stdarg_p.
4358         (ix86_return_pops_args): Use stdarg_p to determine if the function
4359         has variable arguments.
4360         (ix86_setup_incoming_varargs): Ditto.
4361         (x86_this_parameter): Ditto.
4362
4363         * config/i386/i386-protos.h (ix86_expand_sse5_unpack): Add
4364         declaration.
4365         (ix86_expand_sse5_pack): Ditto.
4366         (ix86_sse5_valid_op_p): Ditto.
4367         (ix86_expand_sse5_multiple_memory): Ditto.
4368
4369         * config/i386/i386.md (UNSPEC_SSE5_INTRINSIC): Add new UNSPEC
4370         constant for SSE5 support.
4371         (UNSPEC_SSE5_UNSIGNED_CMP): Ditto.
4372         (UNSPEC_SSE5_TRUEFALSE): Ditto.
4373         (UNSPEC_SSE5_PERMUTE): Ditto.
4374         (UNSPEC_SSE5_ASHIFT): Ditto.
4375         (UNSPEC_SSE5_LSHIFT): Ditto.
4376         (UNSPEC_FRCZ): Ditto.
4377         (UNSPEC_CVTPH2PS): Ditto.
4378         (UNSPEC_CVTPS2PH): Ditto.
4379         (PCOM_FALSE): Add new constant for true/false SSE5 comparisons.
4380         (PCOM_TRUE): Ditto.
4381         (COM_FALSE_S): Ditto.
4382         (COM_FALSE_P): Ditto.
4383         (COM_TRUE_S): Ditto.
4384         (COM_TRUE_P): Ditto.
4385         (type attribute): Add ssemuladd, sseiadd1, ssecvt1, sse4arg types.
4386         (unit attribute): Add support for ssemuladd, ssecvt1, sseiadd1 sse4arg
4387         types.
4388         (memory attribute): Ditto.
4389         (sse4_1_round<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
4390         Use SSE4_1_ROUND_* constants instead of hard coded numbers.
4391         (rint<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
4392         (floor<mode>2): Ditto.
4393         (ceil<mode>2): Ditto.
4394         (btrunc<mode>2): Ditto.
4395         (nearbyintdf2): Ditto.
4396         (nearbyintsf2): Ditto.
4397         (sse_setccsf): Disable if SSE5.
4398         (sse_setccdf): Ditto.
4399         (sse5_setcc<mode>): New support for SSE5 conditional move.
4400         (sse5_pcmov_<mode>): Ditto.
4401
4402         * config/i386/sse.md (SSEMODE1248): New mode iterator for SSE5.
4403         (SSEMODEF4): Ditto.
4404         (SSEMODEF2P): Ditto.
4405         (ssemodesuffixf4): New mode attribute for SSE5.
4406         (ssemodesuffixf2s): Ditto.
4407         (ssemodesuffixf2c): Ditto.
4408         (sserotatemax): Ditto.
4409         (ssescalarmode): Ditto.
4410         (sse_maskcmpv4sf3): Disable if SSE5.
4411         (sse_maskcmpv2df3): Ditto.
4412         (sse_vmmaskcmpv4sf3): Ditto.
4413         (sse5_fmadd<mode>4): Add SSE5 floating point multiply/add instructions.
4414         (sse5_vmfmadd<mode>4): Ditto.
4415         (sse5_fmsub<mode>4): Ditto.
4416         (sse5_vmfmsub<mode>4): Ditto.
4417         (sse5_fnmadd<mode>4): Ditto.
4418         (sse5_vmfnmadd<mode>4): Ditto.
4419         (sse5_fnmsub<mode>4): Ditto.
4420         (sse5_vmfnmsub<mode>4): Ditto.
4421         (sse5i_fmadd<mode>4): Ditto.
4422         (sse5i_fmsub<mode>4): Ditto.
4423         (sse5i_fnmadd<mode>4): Ditto.
4424         (sse5i_fnmsub<mode>4): Ditto.
4425         (sse5i_vmfmadd<mode>4): Ditto.
4426         (sse5i_vmfmsub<mode>4): Ditto.
4427         (sse5i_vmfnmadd<mode>4): Ditto.
4428         (sse5i_vmfnmsub<mode>4): Ditto.
4429         (mulv16qi3): Add SSE5 support.
4430         (mulv4si3): Ditto.
4431         (sse5_mulv4si3): New insn for 32-bit multiply support on SSE5.
4432         (sse2_mulv4si3): Disable if SSE5.
4433         (sse4_1_roundpd): Use TARGET_ROUND instead of TARGET_SSE4_1.
4434         (sse4_1_roundps): Ditto.
4435         (sse4_1_roundsd): Ditto.
4436         (sse4_1_roundss): Ditto.
4437         (sse_maskcmpv4sf3): Disable if SSE5 so the SSE5 instruction will
4438         be generated.
4439         (sse_maskcmpsf3): Ditto.
4440         (sse_vmmaskcmpv4sf3): Ditto.
4441         (sse2_maskcmpv2df3): Ditto.
4442         (sse2_maskcmpdf3): Ditto.
4443         (sse2_vmmaskcmpv2df3): Ditto.
4444         (sse2_eq<mode>3): Ditto.
4445         (sse2_gt<mode>3): Ditto.
4446         (sse5_pcmov_<mode>): Add SSE5 support.
4447         (vec_unpacku_hi_v16qi): Ditto.
4448         (vec_unpacks_hi_v16qi): Ditto.
4449         (vec_unpacku_lo_v16qi): Ditto.
4450         (vec_unpacks_lo_v16qi): Ditto.
4451         (vec_unpacku_hi_v8hi): Ditto.
4452         (vec_unpacks_hi_v8hi): Ditto.
4453         (vec_unpacku_lo_v8hi): Ditto.
4454         (vec_unpacks_lo_v8hi): Ditto.
4455         (vec_unpacku_hi_v4si): Ditto.
4456         (vec_unpacks_hi_v4si): Ditto.
4457         (vec_unpacku_lo_v4si): Ditto.
4458         (vec_unpacks_lo_v4si): Ditto.
4459         (sse5_pmacsww): New SSE5 intrinsic insn.
4460         (sse5_pmacssww): Ditto.
4461         (sse5_pmacsdd): Ditto.
4462         (sse5_pmacssdd): Ditto.
4463         (sse5_pmacssdql): Ditto.
4464         (sse5_pmacssdqh): Ditto.
4465         (sse5_pmacsdqh): Ditto.
4466         (sse5_pmacsswd): Ditto.
4467         (sse5_pmacswd): Ditto.
4468         (sse5_pmadcsswd): Ditto.
4469         (sse5_pmadcswd): Ditto.
4470         (sse5_pcmov_<move>): Conditional move support on SSE5.
4471         (sse5_phaddbw): New SSE5 intrinsic insn.
4472         (sse5_phaddbd): Ditto.
4473         (sse5_phaddbq): Ditto.
4474         (sse5_phaddwd): Ditto.
4475         (sse5_phaddwq): Ditto.
4476         (sse5_phadddq): Ditto.
4477         (sse5_phaddubw): Ditto.
4478         (sse5_phaddubd): Ditto.
4479         (sse5_phaddubq): Ditto.
4480         (sse5_phadduwd): Ditto.
4481         (sse5_phadduwq): Ditto.
4482         (sse5_phaddudq): Ditto.
4483         (sse5_phsubbw): Ditto.
4484         (sse5_phsubwd): Ditto.
4485         (sse5_phsubdq): Ditto.
4486         (sse5_pperm): Ditto.
4487         (sse5_pperm_sign_v16qi_v8hi): New insns for pack/unpack with SSE5.
4488         (sse5_pperm_zero_v16qi_v8hi): Ditto.
4489         (sse5_pperm_sign_v8hi_v4si): Ditto.
4490         (sse5_pperm_zero_v8hi_v4si): Ditto.
4491         (sse5_pperm_sign_v4si_v2di): Ditto.
4492         (sse5_pperm_sign_v4si_v2di): Ditto.
4493         (sse5_pperm_pack_v2di_v4si): Ditto.
4494         (sse5_pperm_pack_v4si_v8hi): Ditto.
4495         (sse5_pperm_pack_v8hi_v16qi): Ditto.
4496         (sse5_perm<mode>): New SSE5 intrinsic insn.
4497         (rotl<mode>3): Ditto.
4498         (sse5_rotl<mode>3): Ditto.
4499         (sse5_ashl<mode>3): Ditto.
4500         (sse5_lshl<mode>3): Ditto.
4501         (sse5_frcz<mode>2): Ditto.
4502         (sse5s_frcz<mode>2): Ditto.
4503         (sse5_cvtph2ps): Ditto.
4504         (sse5_cvtps2ph): Ditto.
4505         (sse5_vmmaskcmp<mode>3): Ditto.
4506         (sse5_com_tf<mode>3): Ditto.
4507         (sse5_maskcmp<mode>3): Ditto.
4508         (sse5_maskcmp_uns<mode>3): Ditto.
4509         (sse5_maskcmp_uns2<mode>3): Ditto.
4510         (sse5_pcom_tf<mode>3): Ditto.
4511
4512         * config/i386/predicates.md (sse5_comparison_float_operator):
4513         New predicate to match the comparison operators supported by
4514         the SSE5 com instruction.
4515         (ix86_comparison_int_operator): New predicate to match just the
4516         signed int comparisons.
4517         (ix86_comparison_uns_operator): New predicate to match just the
4518         unsigned int comparisons.
4519
4520         * doc/invoke.texi (-msse5): Add documentation.
4521         (-mfused-madd): Ditto.
4522
4523         * doc/extend.texi (x86 intrinsics): Document new SSE5 intrinsics.
4524
4525         * config.gcc (i[34567]86-*-*): Include bmmintrin.h and
4526         mmintrin-common.h.
4527         (x86_64-*-*): Ditto.
4528
4529         * config/i386/cpuid.h (bit_SSE5): Define SSE5 bit.
4530
4531         * config/i386/bmmintrin.h: New file, provide common x86 compiler
4532         intrinisics for SSE5.
4533
4534         * config/i386/smmintrin.h: Move instructions shared with SSE5 to
4535         mmintrin-common.h.
4536
4537         * config/i386/mmintrin-common.h: New file, to contain common
4538         instructions between SSE4.1 and SSE5.
4539
4540         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration): Use
4541         FOREACH_FUNCTION_ARGS to iterate over the argument list.
4542         (gen_regparm_prefix): Ditto.
4543
4544         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix): Use
4545         FOREACH_FUNCTION_ARGS to iterate over the argument list.  Use
4546         prototype_p to determine if a function is prototyped.
4547
4548 2009-08-25 Ville Voutilainen <ville.voutilainen@gmail.com>
4549
4550         * c-common.c (c_common_reswords) add the alignof keyword,
4551         with same RID as __alignof and __alignof__
4552
4553 2009-08-25  Anatoly Sokolov  <aesok@post.ru>
4554
4555         * hooks.h (hook_bool_const_int_const_int_true): Declare.
4556         * hooks.c (hook_bool_const_int_const_int_true): New function.
4557         * target.h (struct gcc_target): Add can_eliminate field.
4558         * target-def.h (TARGET_CAN_ELIMINATE): Define.
4559         (TARGET_INITIALIZER): Use TARGET_CAN_ELIMINATE.
4560         * ira.c (setup_eliminable_regset): Use can_eliminate target hook.
4561         * reload1.c (update_eliminables, init_elim_table): (Ditto.).
4562         (elim_table): Revise comment.
4563         * system.h (CAN_ELIMINATE): Poison.
4564         * defaults.h (CAN_ELIMINATE): Remove.
4565         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
4566
4567         * config/alpha/vms.h (CAN_ELIMINATE): Remove macro.
4568         * config/alpha/alpha.c (TARGET_CAN_ELIMINATE) [TARGET_ABI_OPEN_VMS]:
4569         Define macro.
4570         (alpha_vms_can_eliminate): Declare as static, change return type to
4571         bool.
4572         * config/alpha/alpha-protos.h (alpha_vms_can_eliminate): Remove.
4573
4574         * config/arm/arm.h (CAN_ELIMINATE): Remove macro.
4575         * config/arm/arm.c (TARGET_CAN_ELIMINATE): Define macro.
4576         (arm_can_eliminate): New function.
4577
4578         * config/avr/avr.h (CAN_ELIMINATE): Remove macro.
4579         * config/avr/avr.c (TARGET_CAN_ELIMINATE): Define macro.
4580         (avr_can_eliminate): Declare as static.
4581         * config/avr/avr-protos.h (avr_can_eliminate): Remove.
4582
4583         * config/bfin/bfin.h (CAN_ELIMINATE): Remove macro.
4584         * config/bfin/bfin.c (TARGET_CAN_ELIMINATE): Define macro.
4585         (bfin_can_eliminate): New function.
4586
4587         * config/crx/crx.h (CAN_ELIMINATE): Remove macro.
4588         * config/crx/crx.c (TARGET_CAN_ELIMINATE): Define macro.
4589         (crx_can_eliminate): New function.
4590
4591         * config/fr30/fr30.h (CAN_ELIMINATE): Remove macro.
4592         * config/fr30/fr30.c (TARGET_CAN_ELIMINATE): Define macro.
4593         (fr30_can_eliminate): New function.
4594
4595         * config/frv/frv.h (CAN_ELIMINATE): Remove macro.
4596         * config/frv/frv.c (TARGET_CAN_ELIMINATE): Define macro.
4597         (frv_can_eliminate): New function.
4598
4599         * config/h8300/h8300.h (CAN_ELIMINATE): Remove macro.
4600         * config/h8300/h8300.c (TARGET_CAN_ELIMINATE): Define macro.
4601         (h8300_can_eliminate): New function.
4602
4603         * config/i386/i386.h (CAN_ELIMINATE): Remove macro.
4604         * config/i386/i386.c (TARGET_CAN_ELIMINATE): Define macro.
4605         (i386_can_eliminate): Declare as static, change return type to bool.
4606         * config/i386/i386-protos.h (i386_can_eliminate): Remove.
4607
4608         * config/ia64/ia64.h (CAN_ELIMINATE): Remove macro.
4609         * config/ia64/ia64.c (TARGET_CAN_ELIMINATE): Define macro.
4610         (ia64_can_eliminate): New function.
4611
4612         * config/iq2000/iq2000.h (CAN_ELIMINATE): Remove macro.
4613         * config/iq2000/iq2000.c (TARGET_CAN_ELIMINATE): Define macro.
4614         (iq2000_can_eliminate): New function.
4615
4616         * config/m32r/m32r.h (CAN_ELIMINATE): Remove macro.
4617         * config/m32r/m32r.c (TARGET_CAN_ELIMINATE): Define macro.
4618         (m32r_can_eliminate): New function.
4619
4620         * config/m68hc11/m68hc11.h (CAN_ELIMINATE): Remove macro.
4621         * config/m68hc11/m68hc11.c (TARGET_CAN_ELIMINATE): Define macro.
4622         (m68hc11_can_eliminate): New function.
4623
4624         * config/m68k/m68k.h (CAN_ELIMINATE): Remove macro.
4625         * config/m68k/m68k.c (TARGET_CAN_ELIMINATE): Define macro.
4626         (m68k_can_eliminate): New function.
4627
4628         * config/mep/mep.h (CAN_ELIMINATE): Remove macro.
4629         * config/mep/mep.c (TARGET_CAN_ELIMINATE): Define macro.
4630         (mep_can_eliminate): New function.
4631
4632         * config/mips/mips.h (CAN_ELIMINATE): Remove macro.
4633         * config/mips/mips.c (TARGET_CAN_ELIMINATE): Define macro.
4634         (mips_can_eliminate): New function.
4635
4636         * config/rs6000/rs6000.h (CAN_ELIMINATE): Remove macro.
4637         * config/rs6000/rs6000.c (TARGET_CAN_ELIMINATE): Define macro.
4638         (rs6000_can_eliminate): New function.
4639
4640         * config/s390/s390.h (CAN_ELIMINATE): Remove macro.
4641         * config/s390/s390.c (TARGET_CAN_ELIMINATE): Define macro.
4642         (s390_can_eliminate): Declare as static.
4643         * config/s390/s390-protos.h (sparc_can_eliminate): Remove.
4644
4645         * config/score/score.h (CAN_ELIMINATE): Remove macro.
4646         * config/score/score.c (TARGET_CAN_ELIMINATE): Define macro.
4647         (score_can_eliminate): New function.
4648
4649         * config/sparc/sparc.h (CAN_ELIMINATE): Remove macro.
4650         * config/sparc/sparc.c (TARGET_CAN_ELIMINATE): Define macro.
4651         (sparc_can_eliminate): Declare as static.
4652         * config/sparc/sparc-protos.h (sparc_can_eliminate): Remove.
4653
4654         * config/stormy16/stormy16.h (CAN_ELIMINATE): Remove macro.
4655         * config/stormy16/stormy16.c (TARGET_CAN_ELIMINATE): Define macro.
4656         (xstormy16_can_eliminate): New function.
4657
4658         * config/v850/v850.h (CAN_ELIMINATE): Remove macro.
4659         * config/v850/v850.c (TARGET_CAN_ELIMINATE): Define macro.
4660         (v850_can_eliminate): New function.
4661
4662 2009-08-25  Uros Bizjak  <ubizjak@gmail.com>
4663
4664         * config/alpha/alpha.md (*cmpdf_ieee_ext[123]): Remove.
4665         (*cmpdf_internal): Enable for all ALPHA_FPTM levels.
4666         (*movdfcc_ext[1234]): Disable for IEEE mode.
4667
4668 2009-08-25  Eric Botcazou  <ebotcazou@adacore.com>
4669
4670         * gimplify.c (prepare_gimple_addressable): New static function.
4671         (gimplify_modify_expr_to_memcpy): Invoke it on the RHS before marking
4672         it addressable.
4673         (gimplify_addr_expr): Invoke it similarly on the operand instead of
4674         manually fiddling with it.
4675
4676 2009-08-25  Michael Matz  <matz@suse.de>
4677
4678         * expr.h (jumpifnot_1, jumpif_1, do_jump_1): Declare.
4679         * dojump.c (do_jump_by_parts_greater): Take two operands instead of
4680         full expression.
4681         (do_jump_by_parts_equality, do_compare_and_jump): Ditto.
4682         (jumpifnot_1, jumpif_1): New wrappers for do_jump_1.
4683         (do_jump): Split out code for simple binary comparisons into ...
4684         (do_jump_1): ... this, taking the individual operands and code.
4685         Change callers to helper function above accordingly.
4686         * expr.c (expand_expr_real_1): Use jumpifnot_1 for simple binary
4687         comparisons.
4688
4689 2009-08-25  Michael Matz  <matz@suse.de>
4690
4691         * expr.h (struct separate_ops, sepops): New type for passing
4692         around an exploded simple expression.
4693         * optabs.c (expand_widen_pattern_expr, expand_vec_shift_expr):
4694         Use this structure instead of expression tree.
4695         (get_vcond_icode, expand_vec_cond_expr_p): Don't take whole
4696         expression, only its type.
4697         (expand_vec_cond_expr): Take type and individual operands instead
4698         of full expression.
4699         * optabs.h (expand_widen_pattern_expr, expand_vec_cond_expr,
4700         expand_vec_shift_expr): Change prototype accordingly.
4701         * tree-vect-stmts.c (vectorizable_condition): Change call of
4702         expand_vec_cond_expr_p to pass only type.
4703         * expr.c (do_store_flags): Change prototype and implementation
4704         to take an exploded expression.
4705         (expand_expr_real_1): New local ops initialized with details
4706         of the full expression.  Use it instead of full
4707         expression in calls to do_store_flags, expand_vec_cond_expr,
4708         expand_widen_pattern_expr and expand_vec_shift_expr.
4709
4710 2009-08-25  Michael Matz  <matz@suse.de>
4711
4712         * expr.c (expand_expr_real_1): New local treeop0, treeop1,
4713         treeop2 initialized with first three operands of the full expression.
4714         Substitute all TREE_OPERAND (exp, [012]) calls with them.
4715
4716 2009-08-25  Kai Tietz  <kai.tietz@onevision.com>
4717
4718         * gcc/gthr-win32.h (__UNUSED_PARAM): Define, if not already present.
4719         (__gthread_objc_condition_allocate): Mark arguments as unused.
4720         (__gthread_objc_condition_deallocate): Likewise.
4721         (__gthread_objc_condition_wait): Likewise.
4722         (__gthread_objc_condition_broadcast): Likewise.
4723         (__gthread_objc_condition_signal): Likewise.
4724         (__gthread_objc_thread_detach): Cast via INT_PTR to pointer.
4725         (__gthread_objc_thread_id): Likewise.
4726
4727 2009-08-25  Janus Weil  <janus@gcc.gnu.org>
4728
4729         PR middle-end/41149
4730         * tree-pretty-print.c (print_call_name): Print the correct call name
4731         for procedure pointer components.
4732
4733 2009-08-24  Steve Ellcey  <sje@cup.hp.com>
4734
4735         * config/ia64/ia64.c (ia64_promote_function_mode): Call
4736         default_promote_function_mode when not VMS.
4737
4738 2009-08-24  Olivier Hainque  <hainque@adacore.com>
4739
4740         * convert.c (convert_to_integer): Don't assume an input pointer is
4741         POINTER_SIZE wide.  Fetch from the type instead.
4742
4743 2009-08-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
4744
4745         * configure.ac (AC_PREREQ): Bump to 2.64.
4746
4747 2009-08-24  Rafael Avila de Espindola  <espindola@google.com>
4748
4749         * gcc.c (standard_exec_prefix_1,standard_exec_prefix_2): Remove.
4750         (process_command): Don't search standard_exec_prefix_1 and
4751         standard_exec_prefix_2.
4752
4753 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4754
4755         * config/arm/arm.c (output_return_instruction): Handle for
4756         unified syntax.
4757
4758 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4759
4760         * config/arm/arm.c (arm_select_cc_mode): Handle subreg.
4761
4762 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4763
4764         * config/arm/vfp.md (*arm_movdi_vfp): Mark as predicable.
4765         (*arm_movdf_vfp): Likewise.
4766
4767 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4768
4769         * config/arm/neon.md (vashl<mode>3): Rename from ashl<mode>3.
4770         (vashr<mode>3): Rename from ashr<mode>3.
4771         (vlshr<mode>3): Rename from lshr<mode>3.
4772
4773 2009-08-24  Kai Tietz  <kai.tietz@onevision.com>
4774
4775         PR/40786
4776         * c-format.c (format_wanted_type): Add new member scalar_identity_flag.
4777         (check_format_info_main): Use scalar_identify_flag.
4778         (check_format_types): Check for scalar size identity if
4779         scalar_identify_flag is set.
4780         (printf_length_specs): Extend by new field.
4781         (asm_fprintf_length_specs): Likewise.
4782         (gcc_diag_length_specs): Likewise.
4783         (scanf_length_specs): Likewise.
4784         (strfmon_length_specs): Likewise.
4785         (gcc_gfc_length_specs): Likewise.
4786         * config/i386/msformat-c.c (ms_printf_length_specs): Likewise.
4787         (ms_printf_flag_specs): Likewise.
4788         * c-format.h (format_length_info): Add new member scalar_identity_flag.
4789
4790 2009-08-23  Uros Bizjak  <ubizjak@gmail.com>
4791
4792         PR target/40718
4793         * config/i386/i386.c (*call_pop_1): Disable for sibling calls.
4794         (*call_value_pop_1): Ditto.
4795         (*sibcall_pop_1): New insn pattern.
4796         (*sibcall_value_pop_1): Ditto.
4797
4798 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
4799
4800         PR target/41081
4801         * config/rs6000/rs6000.md (rotlsi3_64, ashlsi3_64, lshrsi3_64,
4802         ashrsi3_64): New.
4803
4804 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
4805
4806         PR target/41081
4807         * fwprop.c (try_fwprop_subst): Allow multiple sets.
4808         (get_reg_use_in): New function.
4809         (forward_propagate_subreg): Propagate through subreg of zero_extend
4810         or sign_extend.
4811
4812 2009-08-22  Kaz Kojima  <kkojima@gcc.gnu.org>
4813
4814         * config/sh/t-sh (TARGET_LIBGCC2_CFLAGS): Define.
4815         * config/sh/t-netbsd (TARGET_LIBGCC2_CFLAGS): Add -mieee.
4816
4817 2009-08-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
4818
4819         * configure.ac: Remove --with-datarootdir, --with-docdir,
4820         --with-htmldir switches.  No need to call AC_SUBST for
4821         datarootdir, docdir, htmldir any more.
4822         * configure: Regenerate.
4823         * doc/install.texi (Configuration): Document --datarootdir,
4824         --docdir, --htmldir, --pdfdir; update documentation for
4825         --infodir, --mandir.
4826         (Prerequisites): Bump Autoconf version to 2.64, Automake to 1.11,
4827         M4 to 1.4.6.
4828
4829         * aclocal.m4: Regenerate.
4830         * config.in: Regenerate.
4831         * configure: Regenerate.
4832
4833 2009-08-21  Douglas B Rupp  <rupp@gnat.com>
4834             Olivier Hainque  <hainque@adacore.com>
4835
4836         * config/ia64/ia64.c: Include libfuncs.h.
4837         (TARGET_PROMOTE_FUNCITON_MODE): Define target macro.
4838         (ia64_expand_call): Use reg 25 on VMS.
4839         (ia64_initialize_trampoline): Fix for VMS ABI.
4840         (ia64_function_arg_offset): Always returns 0 when TARGET_ABI_OPEN_VMS.
4841         (ia64_function_arg): Initialize reg 25 on VMS.
4842         Fix OpenVMS ABI issues for varargs.
4843         For OpenVMS, emit the Argument Information register set in the
4844         incoming/sibcall case as well.
4845         (ia64_arg_type): New function.
4846         (ia64_function_arg_advance): Keep track of cum->words.
4847         Fix OpenVMS ABI issues for varargs.
4848         (ia64_function_value): On VMS, promote mode of non-aggregate types.
4849         (ia64_override_options): Set flag_no_common on VMS.
4850         (ia64_init_builtins): Disable FWRITE builtin.
4851         (ia64_asm_output_external): Call DO_CRTL_NAMES.
4852         (ia64_vms_init_libfuncs): Add decc$ routines.
4853         (ia64_vms_valid_pointer_mode): New function.
4854         (ia64_struct_value_rtx): Allways NULL_RTX on VMS.
4855         (ia64_promote_function_mode): New function
4856         * config/ia64/ia64.h (TARGET_ABI_OPEN_VMS): Define as 0 for default.
4857         (LONG_DOUBLE_TYPE_SIZE): Force to 64 on VMS.
4858         (LIBCGC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
4859         (INIT_CUMULATIVE_ARGS): Add atypes for VMS.
4860         (INIT_CUMULATIVE_INCOMING_ARGS): Likewise.
4861         (ASM_OUTPUT_DEF): Use ISDIGIT instead of isdigit.
4862         Suppress trailing '#' if VALUE is numeric.
4863         * config/ia64/vms.h (PROMOTE_FUNCTION_MODE): Remove, code moved to
4864         ia64_promote_function_mode.
4865         (TARGET_VALID_POINTER_MODE): Define.
4866
4867 2009-08-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
4868
4869         PR target/40671
4870         * config/rs6000/rs6000.c (rs6000_override_options): Use
4871         TARGET_64BIT instead of TARGET_POWERPC64 to set the size of pointers.
4872
4873         PR target/41145
4874         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Fix
4875         reporting of vector + decimal/boolean/complex error.
4876
4877 2009-08-21  Jakub Jelinek  <jakub@redhat.com>
4878
4879         * config/rs6000/rs6000.c (rs6000_init_builtins): Fix type of
4880         __vector double TYPE_DECL.
4881
4882 2009-08-21  Richard Earnshaw  <rearnsha@arm.com>
4883
4884         * arm.h (MACHMODE): New define.  Include insn-modes.h if available.
4885         (CUMULATIVE_ARGS): Use MACHMODE for declaration of aapcs_vfp_mode.
4886         * arm.c (aapcs_vfp_is_call_or_return_candidate): Change base_mode
4887         to pointer to enum machine_mode.  Update all callers as needed.
4888
4889 2009-08-21 Uros Bizjak <ubizjak@gmail.com>
4890
4891         * config/alpha/alpha.md (exception_receiver): Emit alternative
4892         GP load sequence if flag_reorder_blocks_and_partition is set.
4893         (*exception_receiver_2): Also enable when
4894         flag_reorder_blocks_and_partition is set.
4895
4896 2009-08-20  Matt Rice  <ratmice@gmail.com>
4897             Diego Novillo  <dnovillo@google.com>
4898
4899         * Makefile.in (PLUGIN_HEADERS): Include incpath.h and
4900         tree-ssa-sccvn.h.
4901
4902 2009-08-20  Richard Guenther  <rguenther@suse.de>
4903
4904         * c-objc-common.h (LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): Do not define.
4905         * c-tree.h (c_dup_lang_specific_decl): Remove.
4906         (struct lang_decl, struct lang_type): Move definitions ...
4907         * c-lang.h: ... here.  New file.
4908         * c-decl.c: Include c-lang.h.
4909         (c_dup_lang_specific_decl): Remove.
4910         * c-typeck.c: Include c-lang.h.
4911         * Makefile.in (c-decl.o): Add c-lang.h dependency.
4912         (c-typeck.o): Likewise.
4913         * c-config-lang.in (gtfiles): Add c-lang.h.
4914         * gengtype.c (get_output_file_with_visibility): Handle c-lang.h
4915         like c-tree.h.
4916
4917 2009-08-20  Uros Bizjak  <ubizjak@gmail.com>
4918
4919         * config/alpha/alpha.c (alpha_end_function): Do not clear
4920         crtl->emit structure and free insn locators if cfun->is_thunk is true,
4921         this is now handled in generic code.
4922
4923 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
4924
4925         * config/s390/s390.c (Z10_PREDICT_DISTANCE): New macro.
4926         (s390_z10_fix_long_loop_prediction): New function.
4927         (s390_z10_optimize_cmp): INSN walk moved to callee - s390_reorg.
4928         (s390_reorg): Walk over the INSNs and invoke
4929         s390_z10_fix_long_loop_prediction and s390_z10_optimize_cmp.
4930
4931 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
4932
4933         * config/s390/s390.md ("*brx_stage1_<GPR:mode>", "*brxg_64bit",
4934         "*brx_64bit", "*brx_31bit"): New patterns.
4935         * config/s390/s390.c ('E'): New output modifier.
4936
4937 2009-08-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4938             Richard Earnshaw  <richard.earnshaw@arm.com>
4939
4940         * config/arm/arm.c (arm_emit_movpair): Handle CONST_INT.
4941         * config/arm/arm.md (*arm_movtas_ze): New pattern for movt.
4942
4943 2009-08-19  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4944
4945         * pa.md (reload_inhi, reload_outhi, reload_inqi, reload_outqi): New
4946         patterns.
4947         * pa.c (emit_move_sequence): Check if address of operand1 is valid
4948         for mode mode of operand0 when doing secondary reload for SAR.
4949
4950 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
4951
4952         PR middle-end/41123
4953         * expr.c (expand_expr_real_1) <normal_inner_ref>: Handle all kinds
4954         of CONCAT, not just bitpos 0 bitsize size of the whole CONCAT.
4955
4956 2009-08-19  Jason Merrill  <jason@redhat.com>
4957
4958         * doc/invoke.texi (C++ Dialect Options): Note change of minimum
4959         supported template depth in C++0x.
4960
4961 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
4962
4963         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Don't call
4964         free_after_compilation.
4965         * config/score/score7.c (score7_output_mi_thunk): Likewise.
4966         * config/score/score3.c (score3_output_mi_thunk): Likewise.
4967         * config/ia64/ia64.c (ia64_output_mi_thunk): Likewise.
4968         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
4969         * config/sh/sh.c (sh_output_mi_thunk): Likewise.
4970         * config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
4971         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
4972
4973 2009-08-19  Ian Lance Taylor  <iant@google.com>
4974
4975         * doc/md.texi (Insn Canonicalizations): Correct canonicalization
4976         of (plus (mult (neg B) C) A).
4977
4978 2009-08-18  Michael Matz  <matz@suse.de>
4979
4980         * omp-low.c (optimize_omp_library_calls): Use types_compatible_p
4981         instead of comparing TYPE_MAIN_VARIANT for equality.
4982         * tree-vect-patterns.c (vect_recog_dot_prod_pattern,
4983         vect_recog_widen_mult_pattern, vect_recog_widen_sum_pattern): Ditto.
4984         * tree-vect-loop.c (vect_is_simple_reduction): Ditto.
4985         * gimplify.c (goa_lhs_expr_p): Ditto and use
4986         STRIP_USELESS_TYPE_CONVERSION.
4987
4988 2009-08-18  Michael Matz  <matz@suse.de>
4989
4990         * tree-ssa-structalias.c (create_variable_info_for): Also mark
4991         first field in a struct.
4992         (intra_create_variable_infos): Don't deal with flag_argument_noalias.
4993
4994 2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
4995
4996         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
4997         locators before emit_insn is called.  Remove assert that
4998         cfun->is_thunk.
4999         (alpha_end_function): Clear crtl->emit structure and free insn
5000         locators if cfun->is_thunk is true.
5001
5002 2009-08-18  Jason Merrill  <jason@redhat.com>
5003
5004         * config/elfos.h (ASM_DECLARE_OBJECT_NAME): Use gnu_unique_object
5005         type if available.
5006         * configure.ac: Test for it.
5007         * configure, config.in: Regenerate.
5008         * doc/install.texi: Document --enable-gnu-unique-object.
5009
5010 2009-08-18  Richard Guenther  <rguenther@suse.de>
5011
5012         PR middle-end/41094
5013         * builtins.c (fold_builtin_pow): Fold pow(pow(x,y),z) to
5014         pow(x,y*z) only if x is nonnegative.
5015
5016 2009-08-18  Jakub Jelinek  <jakub@redhat.com>
5017
5018         * bb-reorder.c (fix_up_fall_thru_edges): Only call invert_jump
5019         on jumps.
5020
5021         PR target/40971
5022         * config/rs6000/rs6000.c (rs6000_legitimize_address): For
5023         [DT][FDI]mode ensure the offset isn't 4/8/12 bytes below 0x8000.
5024
5025 2009-08-17  DJ Delorie  <dj@redhat.com>
5026
5027         * config/m32c/m32c.md (UNS_FSETB, UNS_FREIT): New.
5028         * config/m32c/prologue.md (epilogue_freit): New.
5029         (fset_b): New.
5030         * config/m32c/m32c.c (m32c_function_needs_enter): Add prototype.
5031         (bank_switch_p): Likewise.
5032         (fast_interrupt_p): Likewise.
5033         (interrupt_p): Likewise.
5034         (m32c_conditional_register_usage): Round memregs size up.
5035         (need_to_save): We only need to save $a0 when we use ENTER.
5036         (interrupt_p): Check for fast_interrupt too.
5037         (bank_switch_p): New.
5038         (fast_interrupt_p): New.
5039         (m32c_attribute_table): Add bank_switch and fast_interrupt.
5040         (m32c_emit_prolog): Support bank switching and fast interrupts.
5041         * doc/extend.texi (Function Attributes): Add bank_switch and
5042         fast_interrupt.
5043
5044 2009-08-17  Douglas B Rupp  <rupp@gnat.com>
5045
5046         * config/alpha/alpha.c (vms_valid_pointer_mode): New function.
5047         * config/alpha/vms.h (TARGET_VALID_POINTER_MODE): Define.
5048
5049 2009-08-16  Douglas B Rupp  <rupp@gnat.com>
5050
5051         * doc/invoke.texi (Target options): Add new option list for IA-64/VMS.
5052         (menu): Add IA-64/VMS Options.
5053         (IA-64/VMS Options): Likewise.
5054
5055 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
5056
5057         PR target/38599
5058         * config/mips/mips.md (*lwxs): Use :P for pointer values.
5059
5060 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
5061
5062         * config/mips/mips-protos.h (mips_push_asm_switch): New function.
5063         (mips_pop_asm_switch): Likewise.
5064         * config/mips/mips.c (set_noreorder, set_nomacro, set_noat): Replace
5065         with...
5066         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
5067         (mips_push_asm_switch_1, mips_pop_asm_switch_1): New functions.
5068         (mips_push_asm_switch, mips_pop_asm_switch): Likewise.
5069         (mips_print_operand_punctuation): Use them.  Check mips_noreorder
5070         instead of set_noreorder.
5071         (mips_output_function_prologue): Use the new functions.
5072         (mips_output_function_epilogue): Likewise.
5073         (mips_need_noat_wrapper_p): New function, split out from...
5074         (mips_final_prescan_insn, mips_final_postscan_insn): ...here.
5075         Use mips_push_asm_switch and mips_pop_asm_switch.
5076         * config/mips/mips.h (FUNCTION_PROFILER): Use mips_push_asm_switch
5077         and mips_pop_asm_switch.
5078         (ASM_OUTPUT_REG_POP): Likewise.
5079         (DBR_OUTPUT_SEQEND): Remove boilerplate comment.
5080         Use mips_pop_asm_switch.
5081         (mips_asm_switch): New structure.
5082         (set_noreorder, set_nomacro): Replace with...
5083         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
5084         * config/mips/mips.md (fix_truncdfsi2_macro): Use mips_nomacro
5085         instead of set_nomacro.
5086         (fix_truncsfsi2_macro): Likewise.
5087         (cprestore): Likewise.
5088         (hazard): Use mips_noreorder instead of set_noreorder.
5089         * config/mips/sdemtk.h (FUNCTION_PROFILER): As for mips.h.
5090
5091 2009-08-16  Uros Bizjak  <ubizjak@gmail.com>
5092
5093         * config/alpha/alpha.c (alpha_end_function): Handle NULL_RTX returned
5094         from prev_active_insn.
5095
5096 2009-08-16  Anatoly Sokolov  <aesok@post.ru>
5097
5098         * config/avr/avr.h (AVR_HAVE_8BIT_SP): New macros.
5099         * config/avr/avr.c (avr_override_options): Initialize
5100         avr_current_arch variable.
5101         (avr_cpu_cpp_builtins): Define __AVR_HAVE_8BIT_SP__ or
5102         __AVR_HAVE_16BIT_SP__ according to the device type.
5103         (expand_prologue, output_movhi): Use AVR_HAVE_8BIT_SP instead of
5104         TARGET_TINY_STACK.
5105         (expand_epilogue): Use correct QI mode frame pointer for tiny stack.
5106         Use AVR_HAVE_8BIT_SP instead of TARGET_TINY_STACK.
5107
5108 2009-08-16  Dodji Seketeli  <dodji@redhat.com>
5109
5110         PR debug/37801
5111         * gcc/dwarf2out.c (gen_inlined_subroutine_die): Concentrate on
5112         generating inlined subroutine die only. We shouldn't be
5113         called for anything else.
5114         (gen_block_die): Don't generate inline subroutine debug info for
5115         abstract blocks.
5116
5117 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
5118
5119         * graphite-poly.c (print_pbb): Print PBB index.
5120
5121 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
5122
5123         PR middle-end/40981
5124         * graphite-interchange.c (ppl_max_for_le): Moved...
5125         * graphite-poly.c (pbb_number_of_iterations): Call ppl_max_for_le.
5126         * graphite-ppl.c (ppl_max_for_le): ... here.  Correct the use of
5127         ppl_Pointset_Powerset_C_Polyhedron_maximize.
5128         * graphite-ppl.h (ppl_max_for_le): Declared.
5129
5130 2009-08-14  Olatunji Ruwase <tjruwase@google.com>
5131
5132         * doc/extend.texi (Symbol-Renaming Pragmas): redefine_extname is
5133         supported on all platforms.
5134         * target.h (struct gcc_target): Remove handle_pragma_redefine_extname.
5135         * c-cppbuiltin.c: Remove use of targetm.handle_pragma_redefine_extname.
5136         * c-pragma.c: Likewise.
5137         * target-def.h (TARGET_INITIALIZER): Remove
5138         TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
5139         * config/sol2.h: Remove use of TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
5140
5141 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
5142
5143         * config/ia64/fde-vms.c: New file.
5144         * config/ia64/fde-glibc.c (_Unwind_FindTableEntry): Add dummy arg.
5145         * config/ia64/unwind-ia64.c (UNW_ accessors): Move to unwind-ia64.h
5146         (MD_UNW_COMPATIBLE_PERSONALITY_P): Provide default.
5147         (uw_frame_state_for): Only register a personality routine if it is
5148         known to be compatible with our expectations.
5149         (_Unwind_FindEnclosingFunction, uw_frame_state_for):
5150         Declare unw_table_entry stack variable and
5151         mod all calls to _Unwind_FindTableEntry to add arg.
5152         * config/ia64/unwind-ia64.h (UNW_ accessors): Move here.
5153         (_Unwind_FindTableEntry): Add arg to prototype.
5154
5155 2009-08-14  Eric Botcazou  <ebotcazou@adacore.com>
5156
5157         * config/ia64/unwind-ia64.c (struct _Unwind_Context): Add new
5158         field 'signal_pfs_loc'.
5159         (uw_frame_state_for): Remove duplicate code dealing with leaf
5160         procedures without unwind info.
5161         If in the frame after unwinding through a signal handler, restore
5162         the AR.PFS register instead of the CFM if AR.PFS has not been saved.
5163         * config/ia64/linux-unwind.h (ia64_fallback_frame_state): Do not set
5164         'pfs_loc' to the AR.PFS location in the signal context; instead
5165         set 'signal_pfs_loc'.
5166         Manually generate the unwind info for the AR.PFS register.
5167         (ABI_MARKER_OLD_LINUX_SIGTRAMP, ABI_MARKER_OLD_LINUX_INTERRUPT,
5168         ABI_MARKER_LINUX_SIGTRAMP, ABI_MARKER_LINUX_INTERRUPT): Define.
5169         (ia64_handle_unwabi): Test 'fs->unwabi' against them.
5170         Do not set 'pfs_loc' to the AR.PFS location in the signal context;
5171         instead set 'signal_pfs_loc'.
5172         Remove code preventing the AR.PFS register from being restored
5173         from the signal context.
5174
5175 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
5176             Tristan Gingold  <gingold@adacore.com>
5177
5178         * config.gcc (ia64-hp-*vms*): Insert ia64/t-ia64 in tmake_file.
5179         * config/ia64/t-vms: New file.
5180         * config/ia64/vms64.h: New file.
5181         * config/ia64/vms.h: New file.
5182         * config/ia64/vms-crtinit.asm: New file.
5183         * config/ia64/vms_symvec_libgcc_s.opt: New file.
5184         * config/ia64/vms-unwind.h: New file.
5185
5186 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
5187
5188         * config/alpha/alpha.c (alpha_emit_conditional_move): Handle
5189         TFmode compares.
5190
5191 2009-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5192
5193         PR middle-end/30789
5194         * builtins.c (do_mpc_arg2): Make extern, define for any MPC version.
5195         Move declaration...
5196         * real.h (do_mpc_arg2): ... here.
5197         * fold-const.c (const_binop): Use MPC for complex MULT_EXPR
5198         and RDIV_EXPR.
5199
5200 2009-08-14  Rafael Avila de Espindola  <espindola@google.com>
5201
5202         * final.c (add_debug_prefix_map): Don't use GC memory for
5203         old_prefix and new_prefix.
5204
5205 2009-08-14  Richard Guenther  <rguenther@suse.de>
5206
5207         * ipa-prop.c (compute_complex_pass_through): If we cannot
5208         compute a non-varying offset for IPA_JF_ANCESTOR punt.
5209
5210 2009-08-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
5211
5212         * c-lex.c (c_lex_with_flags): Increase size of local variable
5213         to avoid memory clobber.
5214
5215 2009-08-14  Paolo Bonzini  <bonzini@gnu.org>
5216
5217         PR target/40934
5218         * config/i386/i386.c (ix86_fp_comparison_strategy):
5219         Only enable/disable sahf at function granularity.
5220
5221 2009-08-14  Hans-Peter Nilsson  <hp@axis.com>
5222
5223         PR rtl-optimization/41064
5224         * reload1.c (reload_as_needed): Don't call extract_insn
5225         for known invalid replacements after calling
5226         validate_replace_rtx_group and verify_changes.
5227
5228 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
5229
5230         PR target/41019
5231         * config/i386/sse.md (SSEMODE124C8): New mode iterator.
5232         (vcond<SSEMODEF2P:mode>): Assert that operation is supported by
5233         ix86_expand_fp_vcond.
5234         (vcond<SSEMODE124C8:mode>): Use SSEMODE124C8 instead of SSEMODE124.
5235         Assert that operation is supported by ix86_expand_int_vcond.
5236         (vcondu<SSEMODE124C8:mode>): Ditto.
5237
5238 2009-08-13  DJ Delorie  <dj@redhat.com>
5239
5240         * config/i386/djgpp-stdint.h: New.
5241         * config.gcc (djgpp): Use it.
5242
5243 2009-08-13  Kaz Kojima  <kkojima@gcc.gnu.org>
5244
5245         * config/sh/sh.c (sh_override_options): When flag_exceptions or
5246         flag_unwind_tables is on, turn flag_reorder_blocks_and_partition off.
5247
5248 2009-08-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
5249
5250         * tree-ssa-loop-prefetch.c
5251         (prune_ref_by_group_reuse): Enhance probabilistic analysis
5252         for long-stride pruning.
5253         (compute_miss_rate): New function to compute the probability
5254         that two memory references access different cache lines.
5255
5256 2009-08-13  Dave Korn  <dave.korn.cygwin@gmail.com>
5257
5258         * gcc/config/i386/cygwin.h (LINK_SPEC): Add --enable-auto-image-base.
5259
5260 2009-08-13  Richard Guenther  <rguenther@suse.de>
5261
5262         PR middle-end/41047
5263         * tree-ssa-ccp.c (ccp_fold): When folding pointer additions
5264         use the constant pointer type.
5265         * gimplify.c (canonicalize_addr_expr): Canonicalize independent
5266         of CV qualifiers on the target pointer type.
5267         * tree-ssa.c (useless_type_conversion_p): Move incomplete pointer
5268         conversion check before restrict check.
5269
5270 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
5271
5272         PR target/41029
5273         * config/sh/sh.md (reload_outdf__RnFRm+4): Fix thinko.
5274
5275 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
5276
5277         * config/sh/sh.c (sh_promote_function_mode): Add ATTRIBUTE_UNUSED.
5278
5279 2009-08-12  Richard Guenther  <rguenther@suse.de>
5280
5281         PR tree-optimization/41011
5282         * ipa-cp.c (ipcp_lattice_from_jfunc): Deal with failing fold
5283         and reference constructing.
5284
5285 2009-08-12  Xinliang David Li  <davidxl@google.com>
5286
5287         PR tree-optimization/41012
5288         * tree-flow.h : New external interface.
5289         * gimple-low.c (check_call_arg): Change to public function.
5290         Remove argument mismatch check in lowering.
5291         * tree-inline.h (tree_can_inline_p): Interface change.
5292         * tree-inline.c (tree_can_inline_p): Fold argument mismatch check
5293         into this function.
5294         * ipa-inline.c (cgraph_decide_inlining_of_small_functions):
5295         Call change to tree_can_inline_p function.
5296         (cgraph_decide_inlining_incrementally): Ditto.
5297
5298 2009-08-12  Richard Sandiford  <rdsandiford@googlemail.com>
5299
5300         PR tree-optimization/41031
5301         * tree-outof-ssa.c (insert_value_copy_on_edge): Use promote_decl_mode
5302         on the partition variable rather than promote_mode on the source
5303         type.  Assert that the partition variable's type has the same
5304         mode as the source value's.
5305
5306 2009-08-12  Paolo Bonzini  <bonzini@gnu.org>
5307
5308         * doc/tm.texi (TARGET_PROMOTE_FUNCTION_MODE): Add documentation
5309         for for_return == 2.
5310         * function.c (assign_parm_setup_reg): Use for_return == 2, improve
5311         comments.
5312         * calls.c (expand_call): Fix typo.
5313         * explow.c (promote_decl_mode): Use for_return == 2 for RESULT_DECL
5314         and PARM_DECL.
5315         * stmt.c (expand_value_return): Use promote_function_mode to copy out
5316         of pseudo.
5317         * targhooks.c (default_promote_function_mode): Handle for_return == 2.
5318         * config/cris/cris.c (cris_promote_function_mode): Likewise.
5319         * config/mmix/mmix.c (mmix_promote_function_mode): Likewise.
5320         * config/pa/pa.c (pa_promote_function_mode): Likewise.
5321
5322 2009-08-12  Andrew Haley  <aph@redhat.com>
5323
5324         * config/arm/arm.c (arm_init_libfuncs): Add __sync_synchronize.
5325
5326 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
5327
5328         PR bootstrap/40103
5329         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
5330
5331 2009-08-12  Richard Guenther  <rguenther@suse.de>
5332
5333         * alias.c (get_alias_set): Honor TYPE_STRUCTURAL_EQUALITY_P.
5334         * gimplify.c (gimplify_modify_expr): Do not use
5335         lang_hooks.types_compatible_p.
5336         * tree-ssa.c (useless_type_conversion_p): For aggregates
5337         just return false if the canonical types differ.
5338
5339 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
5340
5341         PR middle-end/40980
5342         * sese.c (convert_for_phi_arg): New.
5343         (add_guard_exit_phis): Use convert_for_phi_arg.
5344
5345 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
5346
5347         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Dont add
5348         unknown subscript upper bounds.
5349
5350 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
5351             Pranav Garg  <pranav.garg2107@gmail.com>
5352
5353         * graphite-interchange.c (gather_access_strides): Removed.
5354         (ppl_max_for_le): New.
5355         (build_linearized_memory_access): New.
5356         (memory_stride_in_loop): New.
5357         (pbb_interchange_profitable_p): Reimplemented.
5358         * graphite-ppl.h (ppl_new_id_map): New.
5359         (ppl_interchange): New.
5360
5361 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
5362
5363         * graphite-interchange.c (compute_subscript): Removed.
5364         (compute_array_size_cstr): Removed.
5365         (compute_array_size_poly): Removed.
5366         (compute_array_size): Removed.
5367         (gather_access_strides_poly): Removed.
5368         (gather_access_strides): Empty.
5369
5370 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
5371
5372         * graphite-dependences.c (dependence_polyhedron_1): Replace
5373         pdr_nb_subscripts with PDR_NB_SUBSCRIPTS.
5374         (graphite_legal_transform_dr): Same.
5375         (graphite_carried_dependence_level_k): Same.
5376         * graphite-poly.c (new_poly_dr): Add a parameter nb_subscripts.
5377         Initialize PDR_NB_SUBSCRIPTS.
5378         (print_pdr_access_layout): Replace pdr_nb_subscripts with
5379         PDR_NB_SUBSCRIPTS.
5380         * graphite-poly.h (struct poly_dr): Add nb_subscripts field.
5381         (PDR_NB_SUBSCRIPTS): New.
5382         (pdr_nb_subscripts): Removed.
5383         (pdr_dim): Simplified.
5384         * graphite-sese-to-poly.c (build_poly_dr): Replace pdr_nb_subscripts
5385         with PDR_NB_SUBSCRIPTS.
5386
5387 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
5388
5389         * graphite-interchange.c (compute_array_size): Remove use of
5390         PDR_DATA_CONTAINER.
5391         * graphite-poly.c (new_poly_dr): Remove argument data_container.
5392         Do not initialize PDR_DATA_CONTAINER.
5393         (print_pdr): Do not print PDR_DATA_CONTAINER.
5394         * graphite-poly.h (struct poly_dr): Remove data_container field.
5395         (PDR_DATA_CONTAINER): Removed.
5396         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Remove use of
5397         PDR_DATA_CONTAINER.
5398         (build_poly_dr): Same.
5399
5400 2009-08-12  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
5401             Sebastian Pop  <sebastian.pop@amd.com>
5402
5403         * graphite-dependences.c (graphite_legal_transform_dr): Work on a
5404         copy of the dependence polyhedron.  Free the temporary objects.
5405         (graphite_carried_dependence_level_k): Free unused objects before
5406         returning.
5407
5408         * testsuite/gcc.dg/graphite/interchange-1.c: XFAILed.
5409         * testsuite/gcc.dg/graphite/interchange-2.c: XFAILed.
5410         * testsuite/gcc.dg/graphite/interchange-3.c: XFAILed.
5411         * testsuite/gcc.dg/graphite/interchange-4.c: XFAILed.
5412         * testsuite/gcc.dg/graphite/interchange-7.c: XFAILed.
5413
5414 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
5415
5416         * graphite-blocking.c (scop_do_strip_mine): Call store_scattering.
5417         Early return without analyzing the data dependences if no
5418         transform has been done.  Call restore_scattering if the transform
5419         is not legal.
5420         (graphite-interchange.c): Same.
5421         * graphite-poly.c (print_scattering_function): Test for
5422         PBB_TRANSFORMED.
5423         (graphite_read_transforms): Initialize PBB_TRANSFORMED.
5424         (apply_poly_transforms): Do not gcc_assert that
5425         the transform is legal.
5426         (new_poly_bb): Initialize PBB_TRANSFORMED, PBB_SAVED and PBB_ORIGINAL.
5427         Do not initialize PBB_NB_SCATTERING_TRANSFORM, PBB_NB_LOCAL_VARIABLES,
5428         PBB_TRANSFORMED_SCATTERING, and PBB_ORIGINAL_SCATTERING.
5429         (free_poly_dr): Free PBB_TRANSFORMED, PBB_SAVED, and PBB_ORIGINAL.
5430         * graphite-poly.h (struct poly_scattering): New.
5431         (struct poly_bb): Add original, transformed, and saved fields.
5432         Remove transformed_scattering, original_scattering,
5433         nb_local_variables and nb_scattering_transform fields.
5434         (PBB_ORIGINAL, PBB_TRANSFORMED, PBB_SAVED): New.
5435         (poly_scattering_new): New.
5436         (poly_scattering_free): New.
5437         (poly_scattering_copy): New.
5438         (store_scattering_pbb): New.
5439         (store_scattering): New.
5440         (restore_scattering_pbb): New.
5441         (restore_scattering): New.
5442         * graphite-sese-to-poly.c (build_pbb_scattering_polyhedrons):
5443         Initialize PBB_TRANSFORMED and PBB_ORIGINAL.
5444
5445 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
5446
5447         * graphite-poly.c (print_pbb): Add parentheses in the pretty print.
5448         (print_scop): Same.
5449
5450 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
5451
5452         * Makefile.in (graphite.o): Depends on PREDICT_H.
5453         * graphite.c: Include predict.h.
5454         (graphite_finalize): Call tree_estimate_probability.
5455         * predict.c (predict_loops): Do not call scev_initialize and
5456         scev_finalize.
5457         (tree_estimate_probability_bb): New.
5458         (tree_estimate_probability): Do not initialize loops: move that
5459         code to the driver.  Call tree_estimate_probability_bb.
5460         (tree_estimate_probability_driver): New.
5461         (pass_profile): Use tree_estimate_probability_driver.
5462         * predict.h (tree_estimate_probability): Declared.
5463
5464 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
5465
5466         * graphite-clast-to-gimple.c (gloog): Add time to TV_GRAPHITE_CODE_GEN.
5467         * graphite-dependences.c (graphite_legal_transform): Add time to
5468         TV_GRAPHITE_DATA_DEPS.
5469         (dependency_between_pbbs_p): Same.
5470         * timevar.def (TV_GRAPHITE_DATA_DEPS, TV_GRAPHITE_CODE_GEN): New.
5471
5472 2009-08-12  Andrey Belevantsev  <abel@ispras.ru>
5473
5474         PR rtl-optimization/41033
5475         * alias.c (nonoverlapping_component_refs_p): Punt when strict
5476         aliasing is disabled.
5477
5478 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
5479
5480         * config/mips/predicates.md (qi_mask_operand, hi_mask_operand,
5481         si_mask_operand, and_load_operand, low_bitmask_operand,
5482         and_reg_operand, and_operand): New predicates.
5483         * config/mips/constraints.md (Yb, Yh, Yw, Yz): New constraints.
5484         * config/mips/mips.c (and_operands_ok): New function.
5485         * config/mips/mips-protos.h (and_operands_ok): Declare it.
5486         * config/mips/mips.md (move_type): Add ext_ins and logical.
5487         (type): Handle them.
5488         (and<mode>3): Use and_reg_operand as the second operand's predicate.
5489         (*and<mode>3): Add alternatives for lbu, lhu, lwu, <d>ext and
5490         shift_shift.  Remove commutative constraint modifier.
5491         (*and<mode>3_mips16): Add alternatives for lbu, lhu, lwu and
5492         shift_shift.
5493         (*clear_upper32_dext): Remove define_insn_and_split.
5494         (*clear_upper32): Turn this define_insn_and_split ...
5495         (splitter for ANDing register with 0xffff_ffff): .. into this.
5496
5497 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
5498
5499         * combine.c (try_widen_shift_mode): Factor out code to check if an
5500         integer constant is a low-order bitmask from here ...
5501         * rtlanal.c (low_bitmask_len): ... to here.
5502         * rtl.h (low_bitmask_len): Declare.
5503
5504 2009-08-11  Uros Bizjak  <ubizjak@gmail.com>
5505
5506         PR target/8603
5507         * config/alpha/alpha.md (addsi3): Remove expander.
5508         (addsi3): Rename from *addsi3_internal insn pattern.
5509         (subsi3): Remove expander.
5510         (subsi3): Rename from *subsi3_internal insn pattern.
5511
5512 2009-08-11  Douglas B Rupp  <rupp@gnat.com>
5513
5514         * config/alpha/alpha.c (alpha_init_builtins): Nullify FWRITE and
5515         FWRITE_UNLOCKED.
5516
5517 2009-08-11  Vasiliy Fofanov  <fofanov@adacore.com>
5518             Eric Botcazou  <botcazou@adacore.com>
5519             Douglas B Rupp  <rupp@gnat.com>
5520
5521         * config/alpha/alpha.c (alpha_return_in_memory): On VMS, ensure
5522         that records that fit in 64 bits are returned by immediate value,
5523         as required by OpenVMS Calling Standard.
5524         (function_value): Adjust for above modification.
5525         (alpha_va_start) <TARGET_ABI_OPEN_VMS>: Use
5526         virtual_incoming_args_rtx as base object, not next_arg.
5527         * config/alpha/vms.h: (DEFAULT_PCC_STRUCT_RETURN): Define as 0.
5528
5529 2009-08-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
5530
5531         * reload.c (find_reloads_subreg_address): Check the original
5532         req_equiv_mem address to detect the case where an address is
5533         not valid in the outer mode.
5534
5535 2009-08-11  Richard Guenther  <rguenther@suse.de>
5536
5537         PR bootstrap/40788
5538         * builtins.c (gimplify_va_arg_expr): Do not call SET_EXPR_LOCATION.
5539
5540 2009-08-10  Douglas B Rupp  <rupp@gnat.com>
5541
5542         * config/alpha/vms.h (OPTIMIZATION_OPTIONS): Remove
5543         (OVERRIDE_OPTIONS): Incorporate removed OPTIMIZATION_OPTIONS.
5544
5545 2009-08-10  Olivier Hainque  <hainqueu@adacore.com>
5546             Douglas B Rupp  <rupp@gnat.com>
5547
5548         * config/alpha/alpha.c (alpha_sa_size): Force procedure type to
5549         PT_STACK when frame_pointer_needed on OpenVMS.
5550         (alpha_pv_save_size, alpha_using_fp): Remove.
5551         (alpha_vms_can_eliminate): New function. Support for CAN_ELIMINATE
5552         with proper processing for PT_NULL.
5553         (alpha_vms_initial_elimination_offset): New function. Support for
5554         INITIAL_ELIMINATION_OFFSET with proper processing for PT_NULL.
5555         (alpha_sa_size): Force procedure type to PT_STACK when
5556         frame_pointer_needed on OpenVMS.
5557         * config/alpha/alpha-protos.h (alpha_pv_save_size): Remove prototype.
5558         (alpha_using_fp): Likewise.
5559         (alpha_vms_can_eliminate): Add prototype.
5560         (alpha_vms_initial_elimination_offset): Likewise.
5561         * config/alpha/vms.h (CAN_ELIMINATE, INITIAL_ELIMINATION_OFFSET):
5562         Call alpha_vms_can_eliminate and alpha_vms_initial_elimination_offset.
5563
5564 2009-08-10  Eric Botcazou  <botcazou@adacore.com>
5565             Douglas B Rupp  <rupp@gnat.com>
5566
5567         * config/alpha/alpha.c (common_object_handler): New function.
5568         (vms_attribute_table): Declare a single attribute "common_object".
5569         (vms_output_aligned_decl_common): New global function.
5570         (SECTION_VMS_OVERLAY): Delete.
5571         (SECTION_VMS_GLOBAL): Likewise.
5572         (SECTION_VMS_INITIALIZE): Likewise.
5573         (vms_asm_named_section): Remove support for above flags.
5574         (vms_section_type_flags): Delete.
5575         (TARGET_SECTION_TYPE_FLAGS): Likewise.
5576         * config/alpha/alpha-protos.h (vms_output_aligned_decl_common): New.
5577         * config/alpha/vms.h (ASM_OUTPUT_ALIGNED_COMMON): Delete.
5578         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New macro.
5579
5580 2009-08-10  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
5581
5582         PR target/41015
5583         * longlong.h [__sh__] (udiv_qrnnd): Add T register to clobber list.
5584         (sub_ddmmss): Likewise.
5585
5586 2009-08-10  Andreas Tobler  <a.tobler@schweiz.org>
5587
5588         PR bootstrap/41018
5589         * config/rs6000/freebsd.h: Define SVR4_ASM_SPEC. Adjust copyright
5590         year.
5591
5592 2009-08-10  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
5593
5594         PR target/37053
5595         * reload1.c (reload_as_needed): Use cancel_changes to completely
5596         undo a failed replacement attempt.
5597
5598 2009-08-10  Richard Guenther  <rguenther@suse.de>
5599
5600         PR middle-end/41006
5601         * tree-ssa.c (useless_type_conversion_p_1): Fold into ...
5602         (useless_type_conversion_p): ... here.  Require pointer targets
5603         to be compatible.
5604
5605 2009-08-10  Dodji Seketeli  <dodji@redhat.com>
5606
5607         PR c++/40866
5608         * tree-inline.c (copy_statement_list): The resulting copy shouldn't
5609         loose the original type of the statement list.
5610
5611 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
5612
5613         * config/alpha/alpha.c: Include libfuncs.h
5614         (avms_asm_output_extern): New function.
5615         (alpha_init_libfuncs): Init some decc libfuncs.
5616         * config/alpha/alpha-protos.h (avms_asm_output_external): Declare.
5617         * config/alpha/vms.h (ASM_OUTPUT_EXTERNAL): Define.
5618         (DO_CRTL_NAMES): Define.
5619         (LIB_SPEC): Remove.
5620         * config/alpha/vms64.h: (POINTERS_EXTEND_UNSIGNED): Remove undef.
5621         (LONG_TYPE_SIZE): Define.
5622         (TARGET_OS_CPP_BUILTINS): Define with __LONG_POINTERS=1
5623         (SUBTARGET_SWITCHES): Define malloc64 switch.
5624         (TARGET_DEFAULT): Default MASK_MALLOC64 set.
5625         (MASK_RETURN_ADDR): Define.
5626         doc/invoke.texi (mmalloc64): Document switch.
5627
5628 2009-08-09  Olivier Hainque  <hainque@adacore.com>
5629             Douglas B Rupp  <rupp@gnat.com>
5630
5631         * config/alpha/alpha.c (struct machine_function): New flag for VMS,
5632         uses_condition_handler.
5633         (alpha_expand_builtin_establish_vms_condition_handler): New expander.
5634         (alpha_expand_builtin_revert_vms_condition_handler): New expander.
5635         (enum alpha_builtin): New ALPHA_BUILTIN_REVERT_VMS_CONDITION_HANDLER
5636         and ALPHA_BUILTIN_ESTABLISH_VMS_CONDITION_HANDLER values.
5637         (code_for_builtin): New insn codes for the new alpha_builtins.
5638         (alpha_init_builtins): Register the new functions as BUILT_IN_MD.
5639         (alpha_sa_size): Account for uses_condition_handler.
5640         (alpha_expand_prologue): Likewise.
5641         (alpha_start_function): Likewise.
5642         (alpha_expand_epilogue): Likewise.
5643         * config/alpha/alpha-protos.h: Prototype the new alpha.c builtin
5644         establish/revert expanders.
5645         * config/alpha/alpha.h (DWARF_FRAME_REGNUM): Define.
5646         * config/alpha/alpha.md (builtin_establish_vms_condition_handler):
5647         New expander, resorting to the alpha.c associated function.
5648         (builtin_revert_vms_condition_handler): Likewise.
5649         * config/alpha/vms-gcc_shell_handler.c: New file. Implements
5650         __gcc_shell_handler, the static VMS condition handler used as
5651         an indirection wrapper to the current dynamically established
5652         handler.
5653         * config/alpha/vms-unwind.h: Complete rewrite.
5654         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Add vms-gcc_shell_handler.c
5655         * config/alpha/vms.h (MD_UNWIND_SUPPORT):
5656
5657 2009-08-09  Eric Botcazou  <botcazou@adacore.com>
5658             Douglas B Rupp  <rupp@gnat.com>
5659
5660         * config/alpha/alpha.c (alpha_links): Add 'target' field.
5661         (alpha_need_linkage): Handle aliases.  Return function symbol.
5662         (alpha_use_linkage): Rename 'linkage' argument to 'func'.
5663         Use ultimate alias target for the linkage name.
5664         * config/alpha/alpha.md (movmemdi): Use the symbol returned
5665         by alpha_need_linkage for the function symbol.
5666         (setmemdi): Likewise.
5667
5668 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
5669
5670         * config/alpha/alpha.c (TARGET_ASM_UNALIGNED_*_OP): Define if on VMS.
5671         * config/alpha/vms.h (OBJECT_FORMAT_ELF): Define.
5672         (ASM_WEAKEN_LABEL): Define.
5673         (CRT_CALL_STATIC_FUNCTION): Define.
5674         (STARTFILE_SPEC): Add crtbegin.o crtbeginS.o.
5675         (ENDFILE_SPEC): Define.
5676         (INIT_SECTION_ASM_OP): Define.
5677         * config/alpha/vms-dwarf2eh.asm (__EH_FRAME_BEGIN__): Remove.
5678         * config/alpha/t-vms (EXTRA_PARTS): Add crtbegin.o crtbeginS.o
5679         crtend.o crtendS.o.
5680         (MULTILIB_OSDIRNAMES): Define.
5681         (shlib_version): Define.
5682         (SHLIB_EXT): Define.
5683         (SHLIB_OBJS): Define.
5684         (SHLIB_NAME): Define.
5685         (SHLIB_MULTILIB): Define.
5686         (SHLIB_INSTALL): Define.
5687         (SHLIB_SYMVEC): Define.
5688         (SHLIB_SYMVECX2): Define.
5689         (SHLIB_LINK): Define.
5690
5691 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
5692
5693         * config/alpha/alpha.c (alpha_initialize_trampoline):
5694         Initialize VMS trampoline IAW ABI for bounded procedure calls.
5695         (alpha_start_function): Emit transfer address on nested functions
5696         for VMS trampoline call.
5697         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Remove vms_tramp.asm
5698         since no longer used.
5699         * config/alpha/vms-tramp.asm: Remove.
5700         * config/alpha/vms.h (TRAMPOLINE_TEMPLATE): Leave undefined
5701         since now only data initialized at runtime.
5702
5703 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
5704
5705         * config/alpha/vms.h (HANDLE_SYSV_PRAGMA): Define.
5706         (LINK_GCC_C_SEQUENCE_SPEC): Define.
5707         (MD_EXEC_PREFIX): Remove, no longer used.
5708         (MD_STARTFILE_PREFIX): Likewise.
5709         (INCLUDE_DEFAULTS): Likewise.
5710         * config/alpha/t-vms:
5711         (vms-dwarf2.o, vms-dwarf2eh.o): Use GCC_FOR_TARGET to compile.
5712
5713 2009-08-09  Richard Guenther  <rguenther@suse.de>
5714
5715         PR tree-optimization/41016
5716         * tree-ssa-ifcombine.c (get_name_for_bit_test): Fix tuplification bug.
5717         (operand_precision): Remove.
5718         (integral_operand_p): Likewise.
5719         (recognize_single_bit_test): Adjust.
5720
5721 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
5722
5723         * c-common.c (c_fully_fold_internal): Issue a warning if a binary
5724         operation overflows.  Likewise non-cast unary arithmetic.
5725         If one arm of a conditional expression is always taken,
5726         inhibit evaluation warnings for the other arm.  Likewise inhibit
5727         evaluation warnings for the second && or || operand if the first
5728         operand is enough to determine the result.
5729         * c-typeck.c (build_conditional_expr): Apply the same inhibition
5730         rules here.
5731         (build_binary_op): Prevent duplicate evaluation warnings.
5732
5733 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
5734
5735         * tree-out-of-ssa.c (insert_value_copy_on_edge): If the source
5736         and destination have different modes, Use promote_mode to
5737         determine the signedness of the conversion.  Assert that the
5738         promoted source mode matches the destination mode.  Don't pass
5739         the destination and destination mode to expand_expr if the source
5740         mode is different.  Simplify conversion logic.
5741
5742 2009-08-09  Ira Rosen  <irar@il.ibm.com>
5743
5744         PR tree-optimization/41008
5745         * tree-vect-loop.c (vect_is_simple_reduction): Get operands
5746         from condition only in case it's a comparison. Adjust checks.
5747
5748 2009-08-09  Bernd Schmidt  <bernd.schmidt@analog.com>
5749
5750         * tree-dfa.c (renumber_gimple_stmt_uids_in_blocks): New function.
5751         * tree-flow.h (renumber_gimple_stmt_uids_in_blocks): Declare it.
5752         * tree-ssa-loop-ivopts.c (comp_cost): Make COST an integer.
5753         (enum iv_position): Add IP_AFTER_USE and IP_BEFORE_USE.
5754         (dump_cand): Handle them.
5755         (struct iv_cand): New members COST_STEP and AINC_USE.
5756         (stmt_after_increment): Likewise.
5757         (stmt_after_inc_pos): Renamed from stmt_after_ip_original_pos.  All
5758         callers changed.  Use gimple_uid comparison instead of scanning.
5759         (add_candidate_1): When looking for identical candidates, take
5760         AINC_USE into account.  Set it for new candidates.
5761         (force_expr_to_var_cost): Cast target_spill_cost to int.
5762         (get_address_cost): New arguments STMT_AFTER_INC and MAY_AUTOINC.
5763         All callers changed.  Check for availability of autoinc addressing
5764         modes, both in general for a given mode, and in the specific use case.
5765         (get_computation_cost_at): New argument CAN_AUTOINC.  All callers
5766         changed.
5767         (get_computation_cost): Likewise.
5768         (autoinc_possible_for_pair, set_autoinc_for_original_candidates,
5769         add_autoinc_candidates): New static functions.
5770         (add_candidate): Call add_autoinc_candidates for candidates based on
5771         a USE_ADDRESS use.
5772         (find_iv_candidates): Call set_autoinc_for_original_candidates.
5773         (determine_use_iv_cost_address): If we have an autoinc candidate at
5774         the matching use, verify autoinc is possible and subtract the cost
5775         of the candidate's step from the cost.
5776         (determine_iv_cost): Record the cost of the increment in the COST_STEP
5777         member of the candidate.
5778         (tree_ssa_iv_optimize_loop): Swap the calls to determine_iv_costs and
5779         determine_use_iv_costs.  Call renumber_gimple_stmt_uids_in_blocks.
5780
5781 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
5782
5783         * config.build (ia64-hp-*vms*): New target.
5784         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
5785         with ia64-hp-*vms*.
5786         * config.gcc (ia64-hp-*vms*): New target.
5787         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
5788         with ia64-hp-*vms*.
5789         * config.host (ia64-hp-*vms*): New target.
5790         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
5791         with ia64-hp-*vms*.
5792
5793 2009-08-08  Richard Guenther  <rguenther@suse.de>
5794
5795         PR tree-optimization/40991
5796         * tree-ssa-pre.c (eliminate): Delay purging EH edges.
5797
5798 2009-08-08  Richard Sandiford  <rdsandiford@googlemail.com>
5799
5800         * combine.c (gen_lowpart_or_truncate): Exclude CONST_INTs from
5801         mode check.  Do truncations in an integer mode.
5802         (force_to_mode): Handle subregs for all mode types.  Only do
5803         arithmetic simplifications on integer modes.
5804
5805 2009-08-07  Richard Guenther  <rguenther@suse.de>
5806
5807         PR tree-optimization/40999
5808         * tree-ssa-ccp.c (get_symbol_constant_value): Handle CONST_DECLs.
5809         (maybe_fold_reference): Lookup constant initializers.
5810         (fold_gimple_assign): Likewise.
5811
5812 2009-08-07  Richard Guenther  <rguenther@suse.de>
5813
5814         * tree-ssa.c (useless_type_conversion_p_1): Only for types
5815         that require structural equality defer to the langhook.
5816
5817 2009-08-07  Martin Jambor  <mjambor@suse.cz>
5818
5819         * ipa-prop.h (enum jump_func_type): New value IPA_JF_ANCESTOR, changed
5820         comments.
5821         (struct ipa_pass_through_data): New type.
5822         (struct ipa_ancestor_jf_data): New type.
5823         (union jump_func_value): Removed field formal_id, added fields
5824         pass_through and ancestor.
5825         (struct ipa_param_call_note): Changed type of formal_id to int from
5826         unsigned.
5827         * ipa-prop.c (ipa_print_node_jump_functions): Print pass through with
5828         operations jump functions and ancestor jump functions.
5829         (compute_complex_pass_through): New function.
5830         (compute_scalar_jump_functions): Call compute_complex_pass_through,
5831         reflect changes in the jump function strucutre.
5832         (update_jump_functions_after_inlining): Ignore complex pass-through
5833         and ancestor jump functions.
5834         * ipa-cp.c (ipcp_lattice_from_jfunc): Added support for ancestor and
5835         polynomial pass-through with operation jump functions.
5836
5837 2009-08-07  Jakub Jelinek  <jakub@redhat.com>
5838
5839         * dwarf2out.c (output_fde): When doing hot/cold partitioning, use
5840         fde->dw_fde_begin as begin label instead of hot/cold label.
5841         Use LLSDAC label instead of LLSDA for second section lsda.
5842         (dwarf2out_do_cfi_startproc): Add SECOND argument.  Use LLSDAC
5843         label instead of LLSDA if it is true.
5844         (dwarf2out_begin_prologue, dwarf2out_switch_text_section): Adjust
5845         callers.
5846         * except.c (add_call_site, dw2_size_of_call_site_table): Add
5847         SECTION argument.  Use it as index into crtl->eh.call_site_record
5848         array.
5849         (dw2_output_call_site_table): Likewise.  Add CS_FORMAT argument,
5850         use it to determine how to print table entries instead of using
5851         #ifdef HAVE_AS_LEB128.  For SECTION > 0 use hot resp. cold
5852         label instead of normal begin label as base.
5853         (sjlj_assign_call_site_values): Adjust add_call_site caller.
5854         (convert_to_eh_region_ranges): When doing hot/cold partitioning,
5855         ensure no EH range spans between sections and that landing pads
5856         are always in the corresponding section.
5857         (sjlj_size_of_call_site_table, sjlj_output_call_site_table): Adjust
5858         for crtl->eh.call_site_record being an array rather than scalar.
5859         (output_one_function_exception_table): New function, copied
5860         from output_function_exception_table.  Adjust
5861         dw2_size_of_call_site_table, dw2_output_call_site_table
5862         callers.  For SECOND section use *C suffixed labels.
5863         (output_function_exception_table): Call
5864         output_one_function_exception_table and, when doing hot/cold
5865         partitioning, also another time for the second section.
5866         * opts.c: Include except.h.
5867         (decode_options): Allow -freorder-blocks-and-partition with
5868         exceptions, unless SJLJ or TARGET_UNWIND_INFO.
5869         * Makefile.in (opts.o): Depend on $(EXCEPT_H).
5870         * function.h (struct rtl_eh): Change call_site_record from
5871         scalar into array of 2 elements.
5872
5873 2009-08-07  Martin Jambor  <mjambor@suse.cz>
5874
5875         * ipa-prop.c (count_formal_params_1): New function.
5876         (ipa_get_vector_of_formal_parms): New function.
5877         (get_vector_of_formal_parm_types): New function.
5878         (ipa_modify_formal_parameters): New function.
5879         (ipa_modify_call_arguments): New function.
5880         (index_in_adjustments_multiple_times_p): New function.
5881         (ipa_combine_adjustments): New function.
5882         (ipa_dump_param_adjustments): New function.
5883         * ipa-prop.h (struct ipa_parm_adjustment): New type.
5884         (ipa_get_vector_of_formal_parms): Declare.
5885         (ipa_modify_formal_parameters): Declare.
5886         (ipa_modify_call_arguments): Declare.
5887         (ipa_combine_adjustments): Declare.
5888         (ipa_dump_param_adjustments): Declare.
5889         (build_ref_for_offset): Declare.
5890         * Makefile.in (tree-sra.o): Add ipa-prop.h to dependencies.
5891         * tree-sra.c: Include ipa-prop.c.
5892         (build_ref_for_offset): Make public.
5893
5894 2009-08-06  Neil Vachharajani  <nvachhar@gmail.com>
5895
5896         * value-prof.c (init_pid_map): Replace xmalloc with XCNEWVEC.
5897
5898 2009-08-06  Thomas Schwinge  <tschwinge@gnu.org>
5899
5900         * gcc/doc/extend.texi (__builtin_extract_return_address)
5901         (__builtin_frob_return_address): Document.
5902
5903 2009-08-06  Paul Brook  <paul@codesourcery.com>
5904
5905         * config/arm/lib1funcs.asm (ARM_DIV_BODY): Add Thumb-2 implementation.
5906         (udivsi3, aeabi_uidivmod, divsi3, aeabi_idivmod): Only use Thumb-1
5907         implementation on ARMv6-M.
5908
5909 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
5910
5911         * doc/extend.texi (pcs): Document new attribute for ARM.
5912
5913 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
5914
5915         * arm.c (pcs_attribute_args): Comment out unsupported attribute
5916         variants.
5917
5918 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
5919
5920         * arm.c (arm_handle_pcs_attribute): Pass the entire name object to
5921         warning ().
5922
5923 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
5924
5925         * arm.c (arm_handle_pcs_attribute): Use %qE in warning.
5926
5927 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
5928
5929         Merge ARM/hard_vfp_branch to trunk.
5930
5931         2009-08-04  Richard Earnshaw  <rearnsha@arm.com>
5932
5933         * arm.c (libcall_eq): New function.
5934         (libcall_hash): New function.
5935         (add_libcall): New function.
5936         (arm_libcall_uses_aapcs_base): New function.
5937         (arm_libcall_value): Use arm_libcall_uses_aapcs_base to check for
5938         libcalls using the base PCS.
5939         (arm_init_cumulative_args): Likewise.
5940
5941         2009-07-20  Joseph Myers  <joseph@codesourcery.com>
5942
5943         * config/arm/arm.c (arm_libcall_value, arm_init_cumulative_args):
5944         Use base ABI for conversion libfuncs between HFmode and SFmode.
5945
5946         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
5947
5948         * config/arm/arm.c (aapcs_vfp_sub_candidate): Use V2SImode and
5949         V4SImode as representatives of all 64-bit and 128-bit vector
5950         types.  Allow vector types without vector modes.
5951         (aapcs_vfp_is_call_or_return_candidate): Handle vector types
5952         without vector modes like BLKmode.
5953         (aapcs_vfp_allocate): Handle TImode for non-TARGET_NEON like
5954         BLKmode.  Avoid unsupported vector modes or TImode moves for
5955         non-TARGET_NEON.
5956         (aapcs_vfp_allocate_return_reg): Likewise.
5957         (arm_vector_mode_supported_p): Only support V2SImode, V4HImode and
5958         V8QImode if TARGET_NEON || TARGET_IWMMXT.
5959
5960         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
5961
5962         * config/arm/arm.c (arm_handle_pcs_attribute): New.
5963         (arm_get_pcs_model): Pass attribute arguments to
5964         arm_pcs_from_attribute.
5965         (arm_init_cumulative_args): Use base AAPCS for conversions from
5966         floating-point types to DImode.
5967         (arm_attribute_table): Add pcs attribute.
5968         (arm_handle_pcs_attribute): New.
5969         * config/arm/bpabi.h (DECLARE_LIBRARY_RENAMES): When renaming
5970         conversions from floating-point types to DImode, also declare them
5971         to use base AAPCS and declare functions they call to use base
5972         AAPCS and their RTABI names.
5973
5974         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
5975
5976         * doc/invoke.texi (-mfloat-abi=@var{name}): Remove statement about
5977         -mfloat-abi=hard not being supported for VFP.
5978
5979         2009-05-11  Kazu Hirata  <kazu@codesourcery.com>
5980
5981         * config/sparc/sparc.c (sparc_emit_float_lib_cmp): Pass a libcall
5982         SYMBOL_REF to hard_libcall_value.
5983
5984         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
5985             Richard Earnshaw  <rearnsha@arm.com>
5986
5987         * config/arm/arm.c (aapcs_layout_arg): Once a co-processor argument
5988         has been put on the stack, all remaining co-processory arguments for
5989         that co-processor also go on the stack.
5990
5991         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
5992
5993         * config/arm/arm.c (arm_return_in_memory): Handle returning
5994         vectors of suitable size in registers also for AAPCS case.
5995
5996         2009-01-13  Richard Earnshaw <rearnsha@arm.com>
5997
5998         * doc/tm.texi (TARGET_LIBCALL_VALUE): Add missing end statement.
5999
6000         2008-12-09  Richard Earnshaw <rearnsha@arm.com>
6001
6002         ARM Hard-VFP calling convention
6003         * target-def.h (TARGET_LIBCALL_VALUE): New hook.
6004         * target.h (gcc_target): Add libcall_value to table of call hooks.
6005         * targhooks.h (default_libcall_value): Default implementation.
6006         * targhooks.c (default_libcall_value): Likewise.
6007         * doc/tm.texi (TARGET_LIBCALL_VALUE): Document it.
6008         * optabs.c (expand_unop): Use it.
6009         * expr.h (hard_libcall_value): Pass the function RTX through.
6010         * calls.c (emit_library_call_value_1): Update call to
6011         hard_libcall_value.
6012         * explow.c (hard_libcall_value): Use new target hook.
6013         * testsuite/lib/target-supports.exp
6014         (check_effective_target_arm_hard_vfp_ok): New hook.
6015         (check_effective_target_arm_neon_ok): Improve test for neon
6016         availability.
6017         * testsuite/gcc.target/arm/eabi1.c: Only run test in base variant.
6018         * config/arm/arm.c: Include cgraph.h
6019         (TARGET_FUNCTION_VALUE): Override default hook.
6020         (arm_pcs_default): New variable.
6021         (arm_override_options): Don't fault hard calling convention with VFP.
6022         Add support for AAPCS variants.
6023         (arm_function_value): Make static.  Handle AAPCS variants.
6024         (arm_libcall_value): New function.
6025         (arm_apply_result_size): Handle VFP registers in results.
6026         (arm_return_in_memory): Rework all AAPCS variants; handle hard-vfp
6027         conventions.
6028         (pcs_attribute_args): New variable.
6029         (arm_pcs_from_attribute): New function.
6030         (arm_get_pcs_model): New function.
6031         (aapcs_vfp_cum_init): New function.
6032         (aapcs_vfp_sub_candidate): New function.
6033         (aapcs_vfp_is_return_candidate): New function.
6034         (aapcs_vfp_is_call_candidate): New function.
6035         (aapcs_vfp_allocate): New function.
6036         (aapcs_vfp_allocate_return_reg): New function.
6037         (aapcs_vfp_advance): New function.
6038         (aapcs_cp_arg_layout): New variable.
6039         (aapcs_select_call_coproc): New function.
6040         (aapcs_select_return_coproc): New function.
6041         (aapcs_allocate_return_reg): New function.
6042         (aapcs_libcall_value): New function.
6043         (aapcs_layout_arg): New function.
6044         (arm_init_cumulative_args): Initialize AAPCS args data.
6045         (arm_function_arg): Handle AAPCS variants using new interface.
6046         (arm_arg_parital_bytes): Likewise.
6047         (arm_function_arg_advance): New function.
6048         (arm_function_ok_for_sibcall): Ensure that sibling calls agree on
6049         calling conventions.
6050         (arm_setup_incoming_varargs): Handle new AAPCS args data.
6051         * arm.h (NUM_VFP_ARG_REGS): Define.
6052         (LIBCALL_VALUE): Update.
6053         (FUNCTION_VALUE): Delete.
6054         (FUNCTION_VALUE_REGNO_P): Add VFP regs.
6055         (arm_pcs): New enum.
6056         (CUMULATIVE_ARGS): New data to support AAPCS argument marshalling.
6057         (FUNCTION_ARG_ADVANCE): Call arm_function_arg_advance.
6058         (FUNCTION_ARG_REGNO_P): Add VFP regs.
6059         * arm-protos.h (arm_function_arg_advance): Add.
6060         (aapcs_libcall_value): Add.
6061         (arm_function_value): Delete.
6062
6063 2009-08-06  Uros Bizjak  <ubizjak@gmail.com>
6064             H.J. Lu  <hongjiu.lu@intel.com>
6065
6066         PR target/40957
6067         * config/i386/i386.c (standard_sse_mode_p): Remove.
6068         (standard_sse_constant_p): Return 2 for integer mode
6069         vector_all_ones_operand when SSE2 is enabled.
6070         (standard_sse_constant_opcode)<case 2>: Always return [v]pcmpeqd.
6071         (ix86_expand_vector_move): Do not check for negative values from
6072         standard_sse_constant_p.
6073
6074 2009-08-06  Richard Guenther  <rguenther@suse.de>
6075
6076         * tree-ssa.c (useless_type_conversion_p_1): Make function and
6077         array type comparisons frontend independent.
6078         * Makefile.in (tree-ssa.o): Add $(TARGET_H) dependency.
6079         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Always fill
6080         out array reference lower bound and element size operands.
6081         (ao_ref_init_from_vn_reference): Properly compute the offset
6082         for ARRAY_RANGE_REF.
6083         (vn_reference_fold_indirect): Fill out array reference lower
6084         bound and element size operands.
6085         * tree-ssa-pre.c (phi_translate_1): Fail if we have to translate
6086         a non gimple valued reference operand which can happen for
6087         array reference lower bound or element size.
6088         (create_component_ref_by_pieces_1): Properly generate the
6089         element size operand for array references.
6090
6091 2009-08-06  Richard Guenther  <rguenther@suse.de>
6092
6093         PR tree-optimization/40964
6094         * tree.c (iterative_hash_host_wide_int): Export.
6095         * tree.h (iterative_hash_host_wide_int): Declare.
6096         * tree-ssa-structalias.c (heapvar_map): New struct.
6097         (heapvar_map_eq): New function.
6098         (heapvar_map_hash): Likewise.
6099         (heapvar_lookup): Adjust.
6100         (heapvar_insert): Likewise.
6101         (make_constraint_from_heapvar): Allow multiple heap variables
6102         per decl at different offsets.
6103         (init_alias_heapvars): Adjust.
6104
6105 2009-08-04  David Daney  <ddaney@caviumnetworks.com>
6106
6107         * config/mips/mips.h (TARGET_SYNC_AFTER_SC): New macro.
6108         * mips_output_sync_loop (mips_output_sync_loop): Only emit
6109         trailing sync if TARGET_SYNC_AFTER_SC.
6110
6111 2009-08-05  David Daney  <ddaney@caviumnetworks.com>
6112
6113         * gcc/config/mips/sync.md (sync_compare_and_swap<mode>,
6114         compare_and_swap_12, sync_add<mode>, sync_<optab>_12,
6115         sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12,
6116         sync_old_nand_12, sync_new_nand_12, sync_sub<mode>,
6117         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
6118         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
6119         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
6120         sync_new_nand<mode>, sync_lock_test_and_set<mode>,
6121         test_and_set_12): Rewrite calls to mips_output_sync_loop.
6122         * gcc/config/mips/mips-protos.h (mips_output_sync_loop): Make
6123         the prototype declaration match the definition.
6124         * gcc/config/mips/mips.c (mips_output_sync_loop):  Emit sync
6125         instructions explicitly.  Add barrier_before and operands
6126         parameters.
6127         * gcc/config/mips/mips.h (MIPS_COMPARE_AND_SWAP,
6128         MIPS_COMPARE_AND_SWAP_12, MIPS_SYNC_OP, MIPS_SYNC_OP_12,
6129         MIPS_SYNC_OLD_OP_12, MIPS_SYNC_NEW_OP_12, MIPS_SYNC_OLD_OP,
6130         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
6131         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE,
6132         MIPS_SYNC_EXCHANGE_12): Remove sync instructions.
6133
6134 2009-08-05  Andrew Pinski  <pinskia@gmail.com>
6135
6136         * tree-ssa-alias.c: Fix intervals to use [) syntax.
6137
6138 2009-08-05  Uros Bizjak  <ubizjak@gmail.com>
6139             Mikulas Patocka  <mikulas@artax.karlin.mff.cuni.cz>
6140
6141         PR target/40906
6142         * config/i386/i386.c (ix86_split_long_move): Fix push of multi-part
6143         source operand.
6144
6145 2009-08-05  Jakub Jelinek  <jakub@redhat.com>
6146
6147         PR rtl-optimization/40924
6148         * dse.c (canon_address): Before calling cselib_expand_value_rtx
6149         make sure canon_rtx (mem_address) isn't simpler than
6150         canon_rtx (expanded_mem_address).
6151
6152 2009-08-05  Li Feng  <nemokingdom@gmail.com>
6153
6154         * graphite-sese-to-poly.c (build_pbb_drs): Remove build alias set
6155         for each poly_bb_p.
6156         (build_scop_drs): Build alias set for each SCoP.
6157
6158 2009-08-04  Sandra Loosemore  <sandra@codesourcery.com>
6159
6160         * doc/invoke.texi (MIPS Options): Document new 1004K -march options.
6161         * config/mips/mips.c (mips_cpu_info_table): Add 1004K cores.
6162         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Add pattern for 1004K.
6163         (MIPS_ARCH_FLOAT_SPEC): Likewise.
6164         (BASE_DRIVER_SELF_SPECS): Likewise.
6165
6166 2009-08-04  Andrew Pinski  <pinskia@gmail.com>
6167
6168         * tree-ssa-alias.c: Fix some comment typos.
6169
6170 2009-08-04  Kaz Kojima  <kkojima@gcc.gnu.org>
6171
6172         * config/sh/linux-atomic.asm (ATOMIC_BOOL_COMPARE_AND_SWAP,
6173         ATOMIC_OP_AND_FETCH, ATOMIC_COMBOP_AND_FETCH): Define.
6174
6175 2009-08-03  Janis Johnson  <janis187@us.ibm.com>
6176
6177         PR c/39902
6178         * simplify-rtx.c (simplify_binary_operation_1): Disable
6179         simplifications for decimal float operations.
6180
6181 2009-08-03  Jakub Jelinek  <jakub@redhat.com>
6182
6183         PR middle-end/40943
6184         * tree-ssa.c (warn_uninitialized_var): Even on LHS warn for
6185         operand of INDIRECT_REF.
6186
6187 2009-08-03  Uros Bizjak  <ubizjak@gmail.com>
6188
6189         * config/alpha/alpha.c (alpha_legitimate_constant_p): Reject CONST
6190         constants referencing TLS symbols.
6191
6192 2009-08-03  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
6193
6194         * config/sh/linux-atomic.asm (ATOMIC_COMPARE_AND_SWAP): Rename
6195         __sync_compare_and_swap_* to __sync_val_compare_and_swap_*.
6196
6197 2009-08-03  Richard Guenther  <rguenther@suse.de>
6198
6199         * tree.c (make_vector_type): Build a main variant first,
6200         get the canonical one and then build the variant.
6201         * tree-ssa.c (useless_type_conversion_p_1): Handle
6202         fixed-point types.
6203         (useless_type_conversion_p): Conversions to pointers to
6204         incomplete record types are useless.
6205
6206 2009-08-03  Richard Guenther  <rguenther@suse.de>
6207
6208         * tree-cfg.c (pass_warn_unused_result): Mark name that no dump
6209         file will be created.
6210         * omp-low.c (pass_diagnose_omp_blocks): Likewise.
6211         * toplev.c (compile_file): Adjust comment.
6212
6213 2009-08-03  Kaz Kojima  <kkojima@gcc.gnu.org>
6214
6215         * config/sh/sh-protos.h (sh_promote_function_mode): Remove.
6216         * config/sh/sh.c (sh_promote_function_mode): Wrap long lines.
6217         (TARGET_PROMOTE_FUNCTION_MODE): Define.
6218         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
6219         (sh_promote_function_mode): Fix typo.
6220
6221 2009-08-03  Andreas Krebbel  <krebbel1@de.ibm.com>
6222
6223         * explow.c (promote_mode): Mark TYPE and PUNSIGNEDP as possibly unused.
6224
6225 2009-08-02  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6226
6227         * pa.c (pa_promote_function_mode): Remove ATTRIBUTE_UNUSED from
6228         declaration arguments.
6229
6230 2009-08-02  Uros Bizjak  <ubizjak@gmail.com>
6231
6232         * config/i386/i386.c (ix86_expand_fp_compare): Use const0_rtx instead
6233         of GEN_INT (0x00) and const1_rtx instead of GEN_INT (0x01).
6234         (ix86_split_ashl): Ditto.
6235         (ix86_expand_vector_init_one_nonzero): Ditto.
6236         (ix86_expand_vector_set): Ditto.
6237         (ix86_expand_reduc_v4sf): Ditto.
6238
6239 2009-08-02  Paolo Bonzini  <bonzini@gnu.org>
6240
6241         * explow.c (promote_function_mode): Remove assert.
6242         * config/sh/sh.c (sh_promote_function_mode): Declare.
6243
6244 2009-08-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6245
6246         * config/pa/pa.c (pa_promote_function_mode): Declare.
6247         Change to static.  Fix promote_mode call.
6248
6249         * gthr-dce.h (CONST_CAST2): Define if not defined.
6250         (__gthread_setspecific): Use CONST_CAST2 to fix warning.
6251
6252         * config.gcc (hppa[12]*-*-hpux10*): Add stdint support.
6253
6254 2009-08-01  Paolo Bonzini  <bonzini@gnu.org>
6255
6256         * expr.c (store_constructor): Use promote_decl_mode.  Remove
6257         now write-only variable unsignedp.
6258         (expand_expr_real_1): Use promote_decl_mode.
6259         * expr.h (promote_function_mode, promote_decl_mode): New.
6260         (promote_mode): Remove last argument.
6261         * function.c (assign_temp): Drop last argument of promote_mode.
6262         (assign_parm_find_data_types): Use promote_function_mode.
6263         (assign_parm_setup_reg): Likewise.
6264         (expand_function_end): Use promote_function_mode.
6265         * calls.c (initialize_argument_information): Use promote_function_mode.
6266         (precompute_arguments): Use promote_mode instead of checking if
6267         only PROMOTE_FUNCTION_MODE is defined.
6268         (expand_call): When making sibcall decisions, use promote_function_mode.
6269         Below, remove an if for targetm.calls.promote_function_return and
6270         and use promote_function_mode.
6271         (emit_library_call_value_1): Use promote_function_mode, fix bug
6272         where promote_mode was passed FOR_CALL == 0 for a return value in an
6273         assertion.
6274         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
6275         * explow.c (promote_function_mode, promote_decl_mode): New.
6276         (promote_mode): Keep only the FOR_CALL == 0 case.
6277         * combine.c (setup_incoming_promotion): Remove test of
6278         promote_function_args.  Use promote_function_mode.
6279         * stmt.c (expand_value_return): Use promote_decl_mode.
6280         (expand_decl): Use promote_decl_mode.
6281
6282         * expr.c (store_constructor): Use promote_decl_mode.  Remove
6283         now write-only variable unsignedp.
6284         (expand_expr_real_1): Use promote_decl_mode.
6285         * expr.h (promote_function_mode, promote_decl_mode): New.
6286         (promote_mode): Remove last argument.
6287         * function.c (assign_temp): Drop last argument of promote_mode.
6288         (assign_parm_find_data_types): Use promote_function_mode.
6289         (assign_parm_setup_reg): Likewise.
6290         (expand_function_end): Use promote_function_mode.
6291         * calls.c (initialize_argument_information): Use promote_function_mode.
6292         (precompute_arguments): Use promote_mode instead of checking if
6293         only PROMOTE_FUNCTION_MODE is defined.
6294         (expand_call): When making sibcall decisions, use promote_function_mode.
6295         Below, remove an if for targetm.calls.promote_function_return and
6296         and use promote_function_mode.
6297         (emit_library_call_value_1): Use promote_function_mode, fix bug
6298         where promote_mode was passed FOR_CALL == 0 for a return value in an
6299         assertion.
6300         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
6301         * explow.c (promote_function_mode, promote_decl_mode): New.
6302         (promote_mode): Keep only the FOR_CALL == 0 case.
6303         * combine.c (setup_incoming_promotion): Remove test of
6304         promote_function_args.  Use promote_function_mode.
6305         * stmt.c (expand_value_return): Use promote_decl_mode.
6306         (expand_decl): Use promote_decl_mode.
6307
6308         * explow.c (promote_function_mode): Just call the target hook.
6309         * targhooks.c (default_promote_function_mode,
6310         default_promote_function_mode_always_promote): New.
6311         * targhooks.h (default_promote_function_mode,
6312         default_promote_function_mode_always_promote): Declare.
6313         * target.h (promote_function_args, promote_function_return): Remove.
6314         (promote_function_mode): New.
6315         * target-def.h (TARGET_PROMOTE_FUNCTION_ARGS,
6316         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
6317         (TARGET_PROMOTE_FUNCTION_MODE): New.
6318         (TARGET_CALLS): Adjust.
6319         * system.h (TARGET_PROMOTE_FUNCTION_ARGS,
6320         TARGET_PROMOTE_FUNCTION_RETURN, PROMOTE_FUNCTION_MODE): Poison.
6321
6322         * config/s390/s390.h (PROMOTE_FUNCTION_MODE): Move...
6323         * config/s390/s390.c (s390_promote_function_mode): ... here,
6324         with pointer handling.
6325         (TARGET_PROMOTE_FUNCTION_MODE): Define.
6326         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
6327
6328         * config/sparc/sparc.h (PROMOTE_FUNCTION_MODE): Move...
6329         * config/sparc/sparc.c (sparc_promote_function_mode): ... here,
6330         with pointer handling.
6331         (TARGET_PROMOTE_FUNCTION_MODE): Define.
6332         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
6333
6334         * config/sh/sh-protos.h (sh_promote_function_mode): New.
6335         * config/sh/sh.c (sh_promote_function_mode): New.
6336         (TARGET_PROMOTE_FUNCTION_MODE): Define.
6337         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
6338
6339         * config/cris/cris.h (PROMOTE_FUNCTION_MODE): Move...
6340         * config/cris/cris.c (cris_promote_function_mode): ... here.
6341         (TARGET_PROMOTE_FUNCTION_MODE): Define.
6342         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
6343
6344         * config/mmix/mmix.h (PROMOTE_FUNCTION_MODE): Move...
6345         * config/mmix/mmix.c (mmix_promote_function_mode): ... here.
6346         (TARGET_PROMOTE_FUNCTION_MODE): Define.
6347         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
6348
6349         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Move...
6350         * config/arm/arm.c (arm_promote_function_mode): ... here, without
6351         complex type handling.
6352         (TARGET_PROMOTE_FUNCTION_MODE): Define.
6353         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
6354
6355         * config/pa/pa.c (pa_promote_function_mode): New.
6356         (TARGET_PROMOTE_FUNCTION_MODE): Define.
6357         (TARGET_PROMOTE_FUNCTION_RETURN): Remove.
6358
6359         * config/alpha/alpha.c (TARGET_PROMOTE_FUNCTION_ARGS,
6360         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
6361         (TARGET_PROMOTE_FUNCTION_MODE): Define equivalently.
6362         * config/xtensa/xtensa.c: Likewise.
6363         * config/stormy16/stormy16.c: Likewise.
6364         * config/iq2000/iq2000.c: Likewise.
6365         * config/rs6000/rs6000.c: Likewise.
6366         * config/picochip/picochip.c: Likewise.
6367         * config/arc/arc.c: Likewise.
6368         * config/mcore/mcore.c: Likewise.
6369         * config/score/score.c: Likewise.
6370         * config/mips/mips.c: Likewise.
6371         * config/bfin/bfin.c: Likewise.
6372         * config/ia64/ia64.c: Likewise (disabled though).
6373
6374         * config/frv/frv.h: Remove pointless remark.
6375
6376         * doc/tm.texi (PROMOTE_FUNCTION_MODE,
6377         TARGET_PROMOTE_FUNCTION_ARGS,
6378         TARGET_PROMOTE_FUNCTION_RETURN): Consolidate into...
6379         (TARGET_PROMOTE_FUNCTION_MODE): ... this.
6380
6381 2009-08-01  Sebastian Pop  <sebastian.pop@amd.com>
6382
6383         * doc/invoke.texi (-fgraphite-force-parallel): Renamed
6384         -floop-parallelize-all.
6385         * toplev.c (process_options): Rename flag_graphite_force_parallel to
6386         flag_loop_parallelize_all.
6387         * tree-ssa-loop.c (gate_graphite_transforms): Same.
6388         * graphite.c (graphite_transform_loops): Same.
6389         * common.opt: Same.
6390         * graphite-poly.c (apply_poly_transforms): Same.
6391
6392 2009-07-31  Richard Earnshaw  <rearnsha@arm.com>
6393
6394         PR tree-optimization/40914
6395         * ipa-prop.c (ipa_get_ptr_load_param): New argument use_delta,
6396         if set, then check the delta field of the PMF record.
6397         (ipa_get_stmt_member_ptr_load_param): Propagate new param use_delta.
6398         (ipa_analyze_call_uses): Handle machines where the vbit for a PMF
6399         call is stored in the delta.
6400
6401 2009-07-31  Adam Nemet  <anemet@caviumnetworks.com>
6402
6403         * config/mips/mips.md (*clear_upper32_dext): New pattern.
6404
6405 2009-07-31  Uros Bizjak  <ubizjak@gmail.com>
6406
6407         * config/i386/bsd.h (ASM_BYTE): New define.
6408         * config/i386/darwin.h (ASM_BYTE): Rename from ASM_BYTE_OP.
6409         * config/i386/att.h (ASM_BYTE): New define. Use ASM_BYTE instead of
6410         .byte.  Use fputs or putc instead of fprintf where appropriate.
6411         * config/i386/i386-interix.h: Use ASM_BYTE instead of .byte.  Use
6412         fputs or putc instead of fprintf where appropriate.
6413         * config/i386/i386elf.h: Ditto.
6414         * config/i386/sysv4.h: Ditto.
6415
6416         * config/i386/i386.c (TARGET_ASM_BYTE_OP): New define.
6417         * config/i386/i386.md (x86_sahf_1): Use ASM_BYTE instead of .byte.
6418         (*tls_global_dynamic_64): Ditto.
6419
6420 2009-07-31  Christian Bruel  <christian.bruel@st.com>
6421
6422         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
6423
6424 2009-07-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
6425
6426         * config/arm/arm.c (arm_arm_address_cost): Fix typo.
6427         Remove dead code for MINUS.
6428
6429 2009-07-31  Anthony Green  <green@moxielogic.com>
6430
6431         * config/moxie/moxie.c (moxie_expand_prologue): Use $r5 instead of
6432         $r12 in prologue.
6433         (moxie_expand_epilogue): Ditto for epilogue.
6434         (moxie_setup_incoming_varargs): ABI change.  Use 5 registers for
6435         incoming arguments.
6436         (moxie_function_arg): Ditto.
6437         (moxie_pass_by_reference): Ditto.
6438         (moxie_arg_partial_bytes): Ditto.
6439         * config/moxie/moxie.h (CALL_USED_REGISTERS): Ditto.
6440         (FUNCTION_ARG_ADVANCE) Ditto.
6441         (REG_PARM_STACK_SPACE) Ditto.
6442         (FUNCTION_ARG_REGNO_P) Dito.
6443
6444         * config.gcc: Add moxie linux config support.
6445         * gcc/config/moxie/uclinux.h: New file.
6446
6447 2009-07-31  DJ Delorie  <dj@redhat.com>
6448
6449         * config/sh/sh.md (UNSPECV_SP_SWITCH_B): New.
6450         (UNSPECV_SP_SWITCH_E): New.
6451         (sp_switch_1): Change to an unspec.
6452         (sp_switch_2): Change to an unspec.  Don't use post-inc when we
6453         replace $r15.
6454         * config/sh/sh.c (sh_expand_prologue): Use the constant pool to
6455         reference the new stack's address
6456
6457 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
6458
6459         * Makefile.in (OBJS-common): Added dependence on graphite-blocking.o,
6460         graphite-clast-to-gimple.o, graphite-dependences.o,
6461         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
6462         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o.
6463         (graphite-blocking.o,
6464         graphite-clast-to-gimple.o, graphite-dependences.o,
6465         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
6466         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o): New.
6467         * cfgloop.c (alloc_loop): Set loop->can_be_parallel to false.
6468         * cfgloop.h (struct loop): Add can_be_parallel field.
6469         * common.opt (fgraphite-identity): Moved up.
6470         (fgraphite-force-parallel): New flag.
6471         * graphite.c: Rewrite.
6472         * graphite.h: Rewrite.
6473         * passes.c (init_optimization_passes): Schedule a pass of DCE and LIM
6474         after Graphite.
6475         * toplev.c (graphite_out_file): New file descriptor.
6476         (graphite_in_file): New.
6477         (process_options): flag_graphite_force_parallel cannot be used without
6478         Graphite.
6479         * tree-ssa-loop.c: Include toplev.h.
6480         (gate_graphite_transforms): Enable flag_graphite for
6481         flag_graphite_force_parallel.
6482
6483 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
6484
6485         * ChangeLog.graphite: New.
6486         * graphite-blocking.c: New.
6487         * graphite-clast-to-gimple.c: New.
6488         * graphite-clast-to-gimple.h: New.
6489         * graphite-dependences.c: New.
6490         * graphite-dependences.h: New.
6491         * graphite-interchange.c: New.
6492         * graphite-poly.c: New.
6493         * graphite-poly.h: New.
6494         * graphite-ppl.c: New.
6495         * graphite-ppl.h: New.
6496         * graphite-scop-detection.c: New.
6497         * graphite-scop-detection.h: New.
6498         * graphite-sese-to-poly.c: New.
6499         * graphite-sese-to-poly.h: New.
6500         * sese.c: New.
6501         * sese.h: New.
6502
6503 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
6504
6505         * tree-chrec.c (evolution_function_right_is_integer_cst): New.
6506         * tree-chrec.h (evolution_function_right_is_integer_cst): Declared.
6507
6508 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
6509
6510         * tree-chrec.c (operator_is_linear): Handle BIT_NOT_EXPR.
6511         (scev_is_linear_expression): Return false if the evolution is not
6512         affine multivariate.
6513
6514 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
6515
6516         * tree-data-ref.c (graphite_find_data_references_in_stmt): New.
6517         * tree-data-ref.h (graphite_find_data_references_in_stmt): Declared.
6518
6519 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
6520
6521         * tree-data-ref.c (debug_data_references): New.
6522         (debug_data_reference): New.
6523         * tree-data-ref.h (debug_data_references): Declared.
6524         (debug_data_reference): Declared.
6525
6526 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
6527
6528         * tree-data-ref.c (stmt_simple_memref_p: Removed.
6529         * tree-data-ref.h (scop_p): Removed.
6530         (struct data_reference): Remove field scop.
6531         (DR_SCOP): Removed.
6532         (stmt_simple_memref_p): Removed.
6533
6534 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
6535
6536         * cfgloop.h (create_empty_loop_on_edge): Pass an extra argument.
6537         * cfgloopmanip.c (create_empty_loop_on_edge): Leave the loop_latch
6538         basic block empty.
6539
6540 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
6541
6542         * doc/invoke.texi (-fgraphite-force-parallel): Documented.
6543
6544 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
6545
6546         * doc/invoke.texi (-fgraphite-identity): Documented.
6547
6548 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
6549
6550         * tree-scalar-evolution.c: Fix comment.
6551         (instantiate_scev_1): Return unknow from scev instantiation if the
6552         result is not above instantiate_below.
6553
6554 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
6555
6556         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop): Not
6557         static anymore.  Instantiate the symbols that may have been introduced
6558         by chrec_apply.
6559         * tree-scalar-evolution.h (compute_overall_effect_of_inner_loop):
6560         Declared.
6561
6562 2009-07-30  DJ Delorie  <dj@redhat.com>
6563
6564         * config/mep/mep.c (mep_asm_init_sections): Add section flags and
6565         .vliw directive to VLIW sections.
6566
6567 2009-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
6568
6569         * Makefile.in (AUTOCONF, ACLOCAL, ACLOCAL_AMFLAGS, aclocal_deps):
6570         New variables.
6571         ($(srcdir)/configure, $(srcdir)/aclocal.m4): New rules.
6572         (AUTOHEADER): New variable.
6573         ($(srcdir)/cstamp-h.in): Use it.
6574
6575 2009-07-30  Michael Meissner  <meissner@linux.vnet.ibm.com>
6576             Pat Haugen  <pthaugen@us.ibm.com>
6577             Revital Eres <ERES@il.ibm.com>
6578
6579         * config/rs6000/vector.md (VEC_F): Add VSX support.
6580         (VEC_A): Ditto.
6581         (VEC_N): Ditto.
6582         (mov<mode>): Ditto.
6583         (vector_load_<mode>): Ditto.
6584         (vector_store_<mode>): Ditto.
6585         (vector GPR move split): Ditto.
6586         (vec_reload_and_plus_<mptrsize>): Ditto.
6587         (vec_reload_and_reg_<mptrsize>): Ditto.
6588         (add<mode>3): Ditto.
6589         (sub<mode>3): Ditto.
6590         (mul<mode>3): Ditto.
6591         (neg<mode>2): Ditto.
6592         (abs<mode>2): Ditto.
6593         (smin<mode>3): Ditto.
6594         (smax<mode>3): Ditto.
6595         (vector_eq<mode>): Ditto.
6596         (vector_gt<mode>): Ditto.
6597         (vector_ge<mode>): Ditto.
6598         (vector_gtu<mode>): Ditto.
6599         (vector_select_<mode>_uns): Ditto.
6600         (vector_eq_<mode>_p): Ditto.
6601         (vector_gt_<mode>_p): Ditto.
6602         (vector_ge_<mode>_p): Ditto.
6603         (vector_gtu_<mode>_p): Ditto.
6604         (cr6_test_for_zero): Ditto.
6605         (cr6_test_for_zero_reverse): Ditto.
6606         (cr6_test_for_lt): Ditto.
6607         (cr6_test_for_lt_reverse): Ditto.
6608         (xor<mode>3): Ditto.
6609         (ior<mode>3): Ditto.
6610         (and<mode>3): Ditto.
6611         (one_cmpl<mode>2): Ditto.
6612         (nor<mode>2): Ditto.
6613         (andc<mode>2): Ditto.
6614         (float<VEC_int<mode>2): Ditto.
6615         (unsigned_float<VEC_int><mode>2): Ditto.
6616         (fix_trunc<mode><VEC_int>2): Ditto.
6617         (fixuns_trunc<mode><VEC_int>2): Ditto.
6618         (vec_init<mode>):
6619         (vec_set<mode>): Ditto.
6620         (vec_extract<mode>): Ditto.
6621         (vec_interleave_highv4sf): Ditto.
6622         (vec_interleave_lowv4sf): Ditto.
6623         (vec_realign_load_<mode>): Ditto.
6624         (vec_shl_<mode>): Ditto.
6625         (vec_shr_<mode>): Ditto.
6626         (div<mode>3): New patterns for VSX.
6627         (vec_interleave_highv2df): Ditto.
6628         (vec_interleave_lowv2df): Ditto.
6629         (vec_pack_trunc_v2df): Ditto.
6630         (vec_pack_sfix_trunc_v2df): Ditto.
6631         (vec_pack_ufix_trunc_v2df): Ditto.
6632         (vec_unpacks_hi_v4sf): Ditto.
6633         (vec_unpacks_lo_v4sf): Ditto.
6634         (vec_unpacks_float_hi_v4si): Ditto.
6635         (vec_unpacks_float_lo_v4si): Ditto.
6636         (vec_unpacku_float_hi_v4si): Ditto.
6637         (vec_unpacku_float_lo_v4si): Ditto.
6638         (movmisalign<mode>): Ditto.
6639         (vector_ceil<mode>2): New patterns for vectorizing math library.
6640         (vector_floor<mode>2): Ditto.
6641         (vector_btrunc<mode>2): Ditto.
6642         (vector_copysign<mode>3): Ditto.
6643
6644         * config/rs6000/predicates.md (easy_vector_constant_msb): New
6645         predicate for setting the high bit in each word, used for copysign.
6646
6647         * config/rs6000/ppc-asm.h (f19): Whitespace.
6648         (f32-f63): Define if VSX.
6649         (v0-v31): Define if Altivec.
6650         (vs0-vs63): Define if VSX.
6651
6652         * config/rs6000/t-rs6000 (MD_INCLUDES): Add power7.md and vsx.md.
6653
6654         * config/rs6000/power7.md: New file, provide tuning parameters for
6655         -mcpu=power7.
6656
6657         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Add VSX support.
6658         (rs6000_cpu_cpp_builtins): Ditto.
6659         (altivec_overloaded_builtins): Ditto.
6660         (altivec_resolve_overloaded_builtin): Ditto.
6661
6662         * config/rs6000/rs6000.opt (-mno-vectorize-builtins): Add new
6663         debug switch to disable vectorizing simple math builtin
6664         functions.
6665
6666         * config/rs6000/rs6000.c (rs6000_builtin_vectorized_function):
6667         Vectorize simple math builtin functions.
6668         (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define target
6669         hook to vectorize math builtins.
6670         (rs6000_override_options): Enable -mvsx on -mcpu=power7.
6671         (rs6000_builtin_conversion): Add VSX/power7 support.
6672         (rs6000_builtin_vec_perm): Ditto.
6673         (vsplits_constant): Add support for loading up a vector constant
6674         with just the high bit set in each part.
6675         (rs6000_expand_vector_init): Add VSX/power7 support.
6676         (rs6000_expand_vector_set): Ditto.
6677         (rs6000_expand_vector_extract): Ditto.
6678         (rs6000_emit_move): Ditto.
6679         (bdesc_3arg): Ditto.
6680         (bdesc_2arg): Ditto.
6681         (bdesc_1arg): Ditto.
6682         (rs6000_expand_ternop_builtin): Ditto.
6683         (altivec_expand_builtin): Ditto.
6684         (rs6000_expand_unop_builtin): Ditto.
6685         (rs6000_init_builtins): Ditto.
6686         (altivec_init_builtins): Ditto.
6687         (builtin_function_type): Ditto.
6688         (rs6000_common_init_builtins): Ditto.
6689         (rs6000_handle_altivec_attribute); Ditto.
6690         (rs6000_mangle_type): Ditto.
6691         (rs6000_vector_mode_supported_p): Ditto.
6692         (rs6000_mode_dependent_address): Altivec addresses with AND -16
6693         are mode dependent.
6694
6695         * config/rs6000/vsx.md: New file for VSX support.
6696
6697         * config/rs6000/rs6000.h (EASY_VECTOR_MSB): New macro for
6698         identifing values with just the most significant bit set.
6699         (enum rs6000_builtins): Add builtins for VSX.  Add simple math
6700         vectorized builtins.
6701
6702         * config/rs6000/altivec.md (UNSPEC_VRFIP): Delete.
6703         (UNSPEC_VRFIM): Delete.
6704         (splitter for loading up vector with most significant bit): New
6705         splitter for vectorizing copysign.
6706         (altivec_vrfiz): Rename from altivec_fturncv4sf2.  Add support for
6707         vectorizing simple math functions.
6708         (altivec_vrfip): Add support for vectorizing simple math functions.
6709         (altivec_vrfim): Ditto.
6710         (altivec_copysign_v4sf3): New insn for Altivec copysign support.
6711
6712         * config/rs6000/rs6000.md (UNSPEC_BPERM): New constant.
6713         (power7.md, vsx.md): Include for power7 support.
6714         (copysigndf3): Use VSX instructions if -mvsx.
6715         (negdf2_fpr): Ditto.
6716         (absdf2_fpr): Ditto.
6717         (nabsdf2_fpr): Ditto.
6718         (adddf3_fpr): Ditto.
6719         (subdf3_fpr): Ditto.
6720         (muldf3_fpr): Ditto.
6721         (divdf3_fpr): Ditto.
6722         (fix_truncdfdi2_fpr): Ditto.
6723         (cmpdf_internal1): Ditto.
6724         (fred, fred_fpr): Convert into expander/insn to add VSX support.
6725         (btruncdf2, btruncdf2_fpr): Ditto.
6726         (ceildf2, ceildf2_fpr): Ditto.
6727         (floordf2, floordf2_fpr): Ditto.
6728         (floatdidf2, floatdidf2_fpr): Ditto.
6729         (fmadddf4_fpr): Name insn.  Use VSX instructions if -mvsx.
6730         (fmsubdf4_fpr): Ditto.
6731         (fnmadddf4_fpr_1): Ditto.
6732         (fnmadddf4_fpr_2): Ditto.
6733         (fnmsubdf4_fpr_1): Ditto.
6734         (fnmsubdf4_fpr_2): Ditto.
6735         (fixuns_truncdfdi2): Add expander for VSX support.
6736         (fix_truncdfdi2): Ditto.
6737         (fix_truncdfsi2): Ditto.
6738         (ftruncdf2): Ditto.
6739         (btruncsf2): Whitespace.
6740         (movdf_hardfloat32): Add support for VSX registers.
6741         (movdf_softfloat32): Ditto.
6742         (movdf_hardfloat64): Ditto.
6743         (movdf_hardfloat64_mfpgpr): Ditto.
6744         (movdf_softfloat64): Ditto.
6745         (movti splitters): Add check for vector registers supporting
6746         TImode in the future.
6747         (bpermd): Add power7 bpermd instruction.
6748
6749         * config/rs6000/altivec.h (vec_div): Define if VSX.
6750         (vec_mul): Ditto.
6751         (vec_msub): Ditto.
6752         (vec_nmadd): Ditto.
6753         (vec_nearbyint): Ditto.
6754         (vec_rint): Ditto.
6755         (vec_sqrt): Ditto.
6756         (all predicates): Use the generic builtin function, and not the V4SF
6757         specific function so that the predicates will work with VSX's V2DF.
6758         (vec_all_*): Ditto.
6759         (vec_any_*): Ditto.
6760
6761         * doc/extend.texi (PowerPC Altivec/VSX Built-in Functions):
6762         Document new VSX functions and types.
6763
6764         * doc/invoke.texi (PowerPc options): Document -mpopcntd, -mvsx
6765         switches.
6766
6767         * doc/md.texi (PowerPC constraints): Document "wd", "wf", "ws",
6768         "wa", and "j" constraints.  Modify "v" to talk about Altivec
6769         instead of just vector.
6770
6771 2009-07-30  Andrew MacLeod  <amacleod@redhat.com>
6772
6773         PR debug/26475
6774         * tree-into-ssa.c (insert_phi_nodes_for, rewrite_add_phi_arguments): Set
6775         location for phi arguments.
6776         (rewrite_update_phi_arguments): Find locations for reaching defs.
6777         * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis):
6778         Add location to add_phi_arg calls.
6779         * tree-loop-districbution.c (update_phis_for_loop_copy): Add locations.
6780         * tree-ssa-loop-manip.c (create_iv, add_exit_phis_edge,
6781         split_loop_exit_edge, tree_transform_and_unroll_loop): Add locations.
6782         * tree-tailcall.c (add_successor_phi_arg, eliminate_tail_call,
6783         create_tailcall_accumulator, tree_optimize_tail_calls_1): Add locations.
6784         * tree.h (struct phi_arg_d): Add location_t to PHI arguments.
6785         * tree-phinodes.c (make_phi_node): Initialize location.
6786         (resize_phi_node): Initialize location to UNKNOWN_LOCATION.
6787         (add_phi_arg): Add location parameter.
6788         (remove_phi_arg_num): Move location when moving phi argument.
6789         * omp-low.c (expand_parallel_call, expand_omp_for_static_chunk): Set
6790         location.
6791         * tree-vect-loop-manip.c (slpeel_update_phis_for_duplicate_loop,
6792         slpeel_update_phi_nodes_for_guard1,
6793         slpeel_update_phi_nodes_for_guard2,
6794         slpeel_tree_duplicate_loop_to_edge_cfg, set_prologue_iterations,
6795         vect_loop_versioning): Set locations.
6796         * tree-parloops.c (create_phi_for_local_result,
6797         transform_to_exit_first_loop, create_parallel_loop): Add locations.
6798         * gimple-pretty-print.c (dump_gimple_phi): Dump lineno's if present.
6799         * tree-vect-loop.c (get_initial_def_for_induction,
6800         vect_create_epilog_for_reduction, vect_finalize_reduction): Add
6801         locations.
6802         * tree-flow-inline.h (gimple_phi_arg_location): New.  Return locus.
6803         (gimple_phi_arg_location_from_edge): New.  Return locus from an edge.
6804         (gimple_phi_arg_set_location): New.  Set locus.
6805         (gimple_phi_arg_has_location): New.  Check for locus.
6806         (redirect_edge_var_map_location): New.  Return locus from var_map.
6807         * tree-vect-data-refs.c (vect_setup_realignment): Set location.
6808         * tree-ssa-phiopt.c (conditional_replacement): Set locus when
6809         combining PHI arguments.
6810         (cond_store_replacement): Set location.
6811         * cfgexpand.c (gimple_assign_rhs_to_tree): Transfer locus if possible.
6812         * grpahite.c (add_loop_exit_phis, add_guard_exit_phis,
6813         scop_add_exit_phis_edge): Add locations.
6814         * tree-cfgcleanup.c (remove_forwarder_block,
6815         remove_forwarder_block_with_phi): Add locations.
6816         * tree-ssa-pre.c (insert_into_preds_of_block): Add locations.
6817         * tree-predcom.c (initialize_root_vars, initialize_root_vars_lm): Add
6818         locations.
6819         * tree-ssa-dce.c (forward_edge_to_pdom): Add locations.
6820         * tree-ssa.c (redirect_edge_var_map_add, ssa_redirect_edge,
6821         flush_pending_stmts): Add source location.
6822         * lambda-code.c (perfect_nestify): Maintain location stack with argument
6823         stack to preserve locations.
6824         * tree-vect-stmts.c (vectorizable_load): Add location.
6825         * tree-inline.c (copy_phis_for_bb): Copy locus.
6826         (setup_one_parameter): Add call locus to inlined parameter stmts.
6827         (initialize_inlined_parameters): Pass in call location as parameter
6828         assignment locus.
6829         (tree_function_versioning): Pass location to setup_one_parameter.
6830         * tree-ssa-phiprop.c (phiprop_insert_phi): Set locations.
6831         * tree-outof-ssa.c (struct _elim_graph): Add source_location vecs for
6832         copy and edge lists.
6833         (insert_partition_copy_on_edge, insert_value_copy_on_edge,
6834         insert_rtx_to_part_on_edge, insert_part_to_rtx_on_edge): Provide a
6835         locus parameter and override the stmt default if provided.
6836         (new_elim_graph, clear_elim_graph, delete_elim_graph,
6837         elim_graph_add_edge, elim_graph_remove_succ_edge,
6838         FOR_EACH_ELIM_GRAPH_SUCC, FOR_EACH_ELIM_GRAPH_PRED, eliminate_build,
6839         elim_forward, elim_unvisited_predecessor, elim_backward, elim_create,
6840         eliminate_phi):  Add locus info in elimination graph for each edge and
6841         value copy.
6842         (insert_backedge_copies): Copy locus if present.
6843         * tree-flow.h (struct _edge_var_map): Add locus field.
6844         * tree-switch_conversions.c (fix_phi_nodes): Add locations.
6845         * tree-cfg.c (reinstall_phi_args, gimple_make_forwarder_block,
6846         add_phi_args_after_copy_edge, gimple_lv_adjust_loop_header_phi): Add
6847         locations.
6848         * ipa-struct-reorg.c (make_edge_and_fix_phis_of_dest): Add locations.
6849
6850 2009-07-30  Martin Jambor  <mjambor@suse.cz>
6851
6852         PR tree-optimization/40570
6853         * ipa-inline.c (cgraph_decide_inlining): Watch out for dead single
6854         use inlining loops.
6855
6856 2009-07-30  Razya Ladelsky <razya@il.ibm.com>
6857
6858         * ssa-loop-manip.c: Include langhooks.h.
6859         (rewrite_phi_with_iv): New.
6860         (rewrite_all_phi_nodes_with_iv): New.
6861         (canonicalize_loop_ivs): Move here from tree-parloops.c.
6862         Remove reduction_list argument. Use rewrite_all_phi_nodes_with_iv.
6863         * tree-parloops.c (loop_parallel_p): Move out all conditions
6864         except dependency check.
6865         (canonicalize_loop_ivs): Move to tree-ssa-loop-manip.c.
6866         (gen_parallel_loop): Call canonicalize_loop_ivs without
6867         reduction_list argument.
6868         (build_new_reduction): New.
6869         (gather_scalar_reductions): New.
6870         (try_get_loop_niter): New.
6871         (try_create_reduction_list): New.
6872         (parallleize_loops): Change the parallel conditions check.
6873         * tree-flow.h (canonicalize_loop_ivs): Remove one argument.
6874         * Makefile.in (tree-ssa-loop-manip.o): Add langhooks.h dependency.
6875
6876 2009-07-30  Dave Korn  <dave.korn.cygwin@gmail.com>
6877
6878         * opt-functions.awk (opt_args): Allow argument to be enclosed in
6879         curly braces.
6880         * doc/options.texi (Option properties):  Mention new quoting syntax.
6881
6882 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
6883
6884         * config/alpha/alpha.c (alpha_start_function):
6885         Handle VMS_DEBUG_MAIN_POINTER
6886         * config/alpha/vms.h (VMS_DEBUG_MAIN_POINTER): Define new macro.
6887         * doc/invoke.texi: Document -mdebug-main switch.
6888
6889 2009-07-29  Richard Henderson  <rth@redhat.com>
6890
6891         * cgraph.c (cgraph_set_call_stmt_including_clones): Tidy.
6892         (cgraph_create_edge_including_clones): Likewise.
6893         * tree-inline.c (copy_bb): Operate on the correct edges
6894         when updating the callgraph.
6895
6896 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
6897
6898         * config/alpha/vms-cc.c: Deleted.
6899         * config/alpha/vms-ld.c: Deleted.
6900         * config/alpha/t-vms64: Moved to config/vms
6901         * config/alpha/vms-crt0-64.c: Moved to config/vms
6902         * config/alpha/vms-crt0.c: Moved to config/vms
6903         * config/alpha/vms-psxcrt0-64.c: Moved to config/vms
6904         * config/alpha/vms-psxcrt0.c: Moved to config/vms
6905         * config/alpha/xm-vms.h: Moved to config/vms
6906         * config/alpha/x-vms: Moved to config/vms
6907         * config/alpha/t-vms (vcrt0.o, pcrt0.o): Move rules to new file
6908         config/vms/t-vms.
6909         * config/vms/t-vms: Moved here from config/alpha. Alpha specific
6910         parts removed. (STMP_FIXPROTO, STMP_FIXINC, LIMITS_H_TEST): Set.
6911         (version): Set.
6912         * config/vms/t-vms64: Moved here from config/alpha
6913         * config/vms/vms-crt0-64.c: Moved here from config/alpha.
6914         (argc,argv,envp): Enforce 32bit malloc'ing.
6915         * config/vms/vms-psxcrt0-64.c: Likewise.
6916         * config/vms/vms-crt0.c: Moved here from config/alpha.
6917         * config/vms/vms-psxcrt0.c: Likewise.
6918         * config/vms/vms-crtl-64.h: New file.
6919         * config/vms/vms-crtl.h: New file.
6920         * config/vms/vms.opt: New file.
6921         * config/vms/xm-vms64.h: New file.
6922         * config/vms/xm-vms.h: Moved here from config/alpha.
6923         (STANARD_EXEC_PREFIX, STANDARD_STARTFILE_PREFIX, STANDARD_INCLUDE_DIR):
6924         Set.
6925         * config/vms/x-vms: Moved here from config/alpha.
6926         (version, VMS_EXTRA_PARTS): Moved to t-vms.
6927         (vms-ld.o, vms-cc.o): Removed.
6928         (LN, LN_S, USE_COLLECT2, POD2MAN): Set.
6929
6930 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
6931
6932         * dwarf2out.c (add_name_and_src_coords_attributes): Push on the
6933         correct stack (obvious VMS fix).
6934
6935 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
6936
6937         * dwarf2out.c (output_file_names): Output VMS style file name, size,
6938         date, version info if VMS_DEBUGGING_INFO defined.
6939         * vmsdgbout.c (vms_file_stats_name): New functon. VMS style file name,
6940         size, date calculating code moved here.
6941
6942 2009-07-29  Paul Brook  <paul@codesourcery.com>
6943
6944         * config/arm/lib1funcs.asm (clear_cache): Use ARM_FUNC_START and
6945         do_push/do_pop.
6946
6947 2009-07-29  Uros Bizjak  <ubizjak@gmail.com>
6948
6949         PR target/40577
6950         * config/alpha/alpha.c (alpha_expand_unaligned_store): Convert src
6951         to DImode when generating insq_le insn.
6952
6953 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
6954
6955         * dwarf2out.c (DWARF2_INDIRECT_STRING_SUPPORT_MISSING_ON_TARGET):
6956         New macro set for VMS_DEBUGGGING_INFO.
6957         (AT_string_form): Use it.
6958
6959 2009-07-28  DJ Delorie  <dj@redhat.com>
6960
6961         * config/mep/mep.c (vtext_section): New.
6962         (vftext_section): New.
6963         (ftext_section): New.
6964         (mep_select_section): Add support for functions.
6965         (mep_unique_section): Likewise.
6966         (mep_asm_init_sections): Likewise.
6967         (mep_encode_section_info): Remove it from here.
6968
6969         * config/mep/mep.h (USE_SELECT_SECTION_FOR_FUNCTIONS): Define.
6970
6971 2009-07-28  Paolo Bonzini  <bonzinI@gnu.org>
6972
6973         * tree.h (TREE_DEPRECATED): Document it is used for types too.
6974         (TYPE_VECTOR_OPAQUE): Use default_def_flag
6975
6976 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
6977
6978         * dwarf2out.c (output_file_names): Test new macro
6979         DWARF2_DIR_SHOULD_END_WITH_SEPARATOR.
6980         (add_comp_dir_attribute): Likewise.
6981
6982 2009-07-28  Kai Tietz  <kai.tietz@onevision.com>
6983
6984         * config/i386/mingw-w64.h (LINK_SPEC): Add
6985         separating space between commands.
6986
6987 2009-07-28  Jan Hubicka  <jh@suse.cz>
6988
6989         PR tree-optimization/40759
6990         * tree-ssa-dce.c (mark_virtual_phi_result_for_renaming): Mark all uses
6991         for renaming.
6992
6993 2009-07-27  DJ Delorie  <dj@redhat.com>
6994
6995         * config/mep/mep.c (mep_expand_builtin_saveregs): Make sure 64-bit
6996         types are dword-aligned.
6997         (mep_expand_va_start): Likewise.
6998
6999 2009-07-27  Olivier Hainque  <hainque@adacore.com>
7000             Douglas B Rupp  <rupp@gnat.com>
7001
7002         * convert.c (convert_to_pointer): Don't assume the target
7003         pointer type is POINTER_SIZE long. Fetch its precision instead.
7004
7005 2009-07-27  Douglas B Rupp  <rupp@gnat.com>
7006
7007         * system.h (fopen): Undefine if macro.
7008
7009 2009-07-27  Jakub Jelinek  <jakub@redhat.com>
7010
7011         * dwarf2out.c (output_cfi_p): Removed.
7012         (output_cfis): New function.
7013         (output_fde): New function, split from output_call_frame_info.
7014         (output_call_frame_info): Use it.
7015         (dwarf2out_switch_text_section): Use output_cfis.
7016
7017 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
7018
7019         * config/i386/cygming.h (DWARF2_UNWIND_INFO): Error build when
7020         TARGET_BI_ARCH is specified without enabling SJLJ.
7021         * config/i386/mingw32.h (MD_UNWIND_SUPPORT): Define MD_UNWIND_SUPPORT,
7022         if TARGET_64BIT and TARGET_BI_ARCH aren't defined.
7023
7024 2009-07-26  Mikael Pettersson <mikpe@it.uu.se>
7025
7026         * arm.md (negdi2): Use DImode if forcing a value into a register.
7027
7028 2009-07-26  Ira Rosen  <irar@il.ibm.com>
7029
7030         PR tree-optimization/40801
7031         * tree-vect-stmts.c (vectorizable_call): Get previous copy
7032         of vector operand from the previous copy of vector statement.
7033         Pass the correct definition type value to
7034         vect_get_vec_def_for_stmt_copy().
7035
7036 2009-07-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7037
7038         * collect2.c (scan_libraries): Use CONST_CAST2 to perform char ** to
7039         const char ** conversion.
7040
7041 2009-07-25 David Daney <ddaney@caviumnetworks.com>
7042
7043         * system.h (gcc_assert): Invoke __builtin_unreachable() instead of
7044         fancy_abort() if !ENABLE_ASSERT_CHECKING.
7045         (gcc_unreachable): Invoke __builtin_unreachable() if
7046         !ENABLE_ASSERT_CHECKING.
7047
7048 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
7049
7050         PR rtl-optimization/40445
7051         * emit-rtl.c (next_nonnote_insn_bb): New function.
7052         * rtl.h (next_nonnote_insn_bb): Declare new function.
7053         * cfgcleanup.c (try_optimize_cfg): Don't remove an empty block
7054         with no successors that is the successor of the ENTRY_BLOCK.
7055         Continue from the top after removing an empty fallthrough block.
7056         * cfgrtl.c (get_last_bb_insn): Call next_nonnote_insn_bb instead
7057         of next_nonnote_insn.
7058
7059 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
7060
7061         * cfgcleanup.c (old_insns_match_p): Handle the case of empty blocks.
7062
7063 2009-07-25  Martin Jambor  <mjambor@suse.cz>
7064
7065         * c-common.c (c_common_attribute_table): New element for noclone.
7066         (handle_noclone_attribute): New function. Forward-declare.
7067         * tree-inline.c (tree_versionable_function_p): Check for noclone
7068         attribute.
7069         * doc/extend.texi (Labels as Values): Document need for noclone.
7070         (Function Attributes): Document noclone attribute.
7071
7072 2009-07-25  Jakub Jelinek  <jakub@redhat.com>
7073
7074         PR rtl-optimization/34999
7075         * dwarf2out.c (struct dw_fde_struct): Add dw_fde_switch_cfi
7076         and dw_fde_switched_cold_to_hot fields.
7077         (output_cfi_p): New function.
7078         (output_call_frame_info): If fde->dw_fde_switched_sections,
7079         output 2 FDEs instead of one with corrupted header.
7080         (dwarf2out_do_cfi_startproc): New function.
7081         (dwarf2out_begin_prologue): Use it.  Initialize fde->dw_fde_switch_cfi
7082         and fde->dw_fde_switched_cold_to_hot.
7083         (dwarf2out_switch_text_section): Compute
7084         fde->dw_fde_switched_cold_to_hot.  Switch to new text section here.
7085         If dwarf2out_do_cfi_asm, emit .cfi_endproc before it and call
7086         dwarf2out_do_cfi_startproc plus emit again currently active CFI insns.
7087         Otherwise, compute fde->dw_fde_switch_cfi.
7088
7089 2009-07-24  Cary Coutant  <ccoutant@google.com>
7090
7091         * tree-cfg.c (assign_discriminator): Add explicit parentheses.
7092
7093 2009-07-24  Cary Coutant  <ccoutant@google.com>
7094
7095         * cfghooks.c (split_block): Copy discriminator to new block.
7096         * tree-cfg.c (assign_discriminator): Check location of last
7097         instruction in block as well as first.
7098
7099 2009-07-24  Uros Bizjak  <ubizjak@gmail.com>
7100
7101         * config/i386/linux.c: Use fputs or putc instead of fprintf
7102         where appropriate.
7103         * config/i386/gas.h: Ditto.
7104         * config/i386/x86-64.h: Ditto.
7105         * config/i386/att.h: Ditto.
7106
7107 2009-07-24  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
7108
7109         * expmed.c (emit_store_flag): Use a recursive call to optimize the
7110         xor case.
7111
7112 2009-07-24  Martin Jambor  <mjambor@suse.cz>
7113
7114         * ipa-prop.h (struct ipa_node_params): New flag node_enqued.
7115         (ipa_push_func_to_list_1): Declare.
7116         (ipa_push_func_to_list): New function.
7117
7118         * ipa-prop.c (ipa_push_func_to_list_1): New function.
7119         (ipa_init_func_list): Call ipa_push_func_to_list_1.
7120         (ipa_push_func_to_list): Removed.
7121         (ipa_pop_func_from_list): Clear node_enqueued flag.
7122
7123 2009-07-24  Andreas Krebbel  <krebbel1@de.ibm.com>
7124
7125         * config/s390/s390.c (override_options): Default
7126         max-unrolled-insns to 100 for z10 tuning.
7127
7128 2009-07-24  Tobias Grosser  <grosser@fim.uni-passau.de>
7129
7130         * Makefile.in (TREE_DATA_REF_H, tree-vrp.o, tree-cfg.o, tree-if-conv.o
7131         tree-ssa-loop.o, tree-ssa-loop-niter.o, tree-ssa-loop-ivcanon.o,
7132         tree-ssa-loop-prefetch.o, tree-predcom.o, tree-affine.o,
7133         tree-scalar-evolution.o, tree-data-ref.o, tree-vect-loop.o,
7134         tree-vect-data-refs.o, tree-loop-linear.o, tree-loop-distribution.o
7135         tree-parloops.o, tree-pretty-printer.o, fold-const.o, tree-ssa-dce.o,
7136         lambda-code.o, params.o): Cleanup use of SCEV_H and TREE_DATA_REF_H.
7137
7138 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
7139
7140         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR): Remove and
7141         use default set in mingw32.h header.
7142         * config/i386/mingw32.h (STANDARD_INCLUDE_DIR): Use for 32-bit and
7143         64-bit /mingw/include path.
7144         (STANDARD_STARTFILE_PREFIX_1): Use for 32-bit and 64-bit /mingw/lib
7145         path.
7146
7147 2009-07-23  Neil Vachharajani  <nvachhar@google.com>
7148
7149         PR rtl-optimization/40209
7150         * loop-iv.c (iv_analysis_loop_init): Call df_note_add_problem.
7151
7152 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
7153
7154         * config/i386/i386.c: Use ASM_LONG instead of .long.  Concatenate
7155         ASM_LONG, LPREFIX, MCOUNT_NAME and PROFILE_COUNT_REGISTER strings
7156         with the rest of string where appropriate.  Use fputs or putc
7157         instead of fprintf where appropriate.
7158
7159 2009-07-22  Michael Meissner  <meissner@linux.vnet.ibm.com>
7160             Pat Haugen  <pthaugen@us.ibm.com>
7161             Revital Eres <ERES@il.ibm.com>
7162
7163         * config/rs6000/vector.md: New file.  Move most of the vector
7164         expander support here from altivec.md to allow for the VSX vector
7165         unit in the future.  Add support for secondary_reload patterns.
7166         Rewrite the patterns for vector comparison, and vector comparison
7167         predicate instructions so that the RTL expresses the desired
7168         behavior, instead of using unspec.
7169
7170         * config/rs6000/constraints.md ("f" constraint): Use
7171         rs6000_constraints to hold the precalculated register class.
7172         ("d" constraint): Ditto.
7173         ("wd" constraint): New constraint for VSX.
7174         ("wf" constraint): Ditto.
7175         ("ws" constraint): Ditto.
7176         ("wa" constraint): Ditto.
7177         ("wZ" constraint): Ditto.
7178         ("j" constraint): Ditto.
7179
7180         * config/rs6000/predicates.md (vsx_register_operand): New
7181         predicate for VSX.
7182         (vfloat_operand): New predicate for vector.md.
7183         (vint_operand): Ditto.
7184         (vlogical_operand): Ditto.
7185         (easy_fp_constant): If VSX, 0.0 is an easy constant.
7186         (easy_vector_constant): Add VSX support.
7187         (altivec_indexed_or_indirect_operand): New predicate for
7188         recognizing Altivec style memory references with AND -16.
7189
7190         * config/rs6000/rs6000.c (rs6000_vector_reload): New static global
7191         for vector secondary reload support.
7192         (rs6000_vector_reg_class): Delete, replacing it with
7193         rs6000_constraints.
7194         (rs6000_vsx_reg_class): Ditto.
7195         (rs6000_constraints): New array to hold the register classes of
7196         each of the register constraints that can vary at runtime.
7197         (builtin_mode_to_type): New static array for builtin function type
7198         creation.
7199         (builtin_hash_table): New static hash table for builtin function
7200         type creation.
7201         (TARGET_SECONDARY_RELOAD): Define target hook.
7202         (TARGET_IRA_COVER_CLASSES): Ditto.
7203         (rs6000_hard_regno_nregs_internal): If -mvsx, floating point
7204         registers are 128 bits if VSX memory reference instructions are used.
7205         (rs6000_hard_regno_mode_ok): For VSX, only check if the VSX memory
7206         unit is being used.
7207         (rs6000_debug_vector_unit): Move into rs6000_debug_reg_global.
7208         (rs6000_debug_reg_global): Move -mdebug=reg statements here.
7209         Print several of the scheduling related parameters.
7210         (rs6000_init_hard_regno_mode_ok): Switch to putting constraints in
7211         rs6000_constraints instead of rs6000_vector_reg_class.  Move
7212         -mdebug=reg code to rs6000_debug_reg_global.  Add support for
7213         -mvsx-align-128 debug switch.  Drop testing float_p if VSX or
7214         Altivec.  Add VSX support.  Setup for secondary reload support on
7215         Altivec/VSX registers.
7216         (rs6000_override_options): Make power7 set the scheduling groups
7217         like the power5.  Add support for new debug switches to override
7218         the scheduling defaults.  Temporarily disable -mcpu=power7 from
7219         setting -mvsx.  Add support for debug switches -malways-hint,
7220         -msched-groups, and -malign-branch-targets.
7221         (rs6000_buitlin_conversion): Add support for returning unsigned
7222         vector conversion functions to fix regressions due to stricter
7223         type checking.
7224         (rs6000_builtin_mul_widen_even): Ditto.
7225         (rs6000_builtin_mul_widen_odd): Ditto.
7226         (rs6000_builtin_vec_perm): Ditto.
7227         (rs6000_vec_const_move): On VSX, use xxlxor to clear register.
7228         (rs6000_expand_vector_init): Initial VSX support for using xxlxor
7229         to zero a register.
7230         (rs6000_emit_move): Fixup invalid const symbol_ref+reg that is
7231         generated upstream.
7232         (bdesc_3arg): Add builtins for unsigned types.  Add builtins for
7233         VSX types for bit operations.  Changes to accomidate vector.md.
7234         (bdesc_2arg): Ditto.
7235         (bdesc_1arg): Ditto.
7236         (struct builtin_description_predicates): Rewrite predicate
7237         handling so that RTL describes the operation, instead of passing
7238         the instruction to be used as a string argument.
7239         (bdesc_altivec_preds): Ditto.
7240         (altivec_expand_predicate_builtin): Ditto.
7241         (altivec_expand_builtin): Ditto.
7242         (rs6000_expand_ternop_builtin): Use a switch instead of an if
7243         statement for vsldoi support.
7244         (altivec_expand_ld_builtin): Change to use new names from vector.md.
7245         (altivec_expand_st_builtin): Ditto.
7246         (paired_expand_builtin): Whitespace changes.
7247         (rs6000_init_builtins): Add V2DF/V2DI types.  Initialize the
7248         builtin_mode_to_type table for secondary reload.  Call
7249         builtin_function_type to build random builtin functions.
7250         (altivec_init_builtins): Change to use builtin_function_type to
7251         create builtin function types dynamically as we need them.
7252         (builtin_hash_function): New support for hashing the tree types
7253         for builtin function as we need it, rather than trying to build
7254         all of the trees that we need.  Add initial preliminary VSX support.
7255         (builtin_function_type): Ditto.
7256         (builtin_function_eq): Ditto.
7257         (builtin_hash_struct): Ditto.
7258         (rs6000_init_builtins): Ditto.
7259         (rs6000_common_init_builtins): Ditto.
7260         (altivec_init_builtins): Ditto.
7261         (rs6000_common_init_builtins): Ditto.
7262         (enum reload_reg_type): New enum for simplifing reg classes.
7263         (rs6000_reload_register_type): Simplify register classes into GPR,
7264         Vector, and other registers.  Altivec and VSX addresses in reload.
7265         (rs6000_secondary_reload_inner): Ditto.
7266         (rs6000_ira_cover_classes): New target hook, that returns the
7267         appropriate cover classes, based on -mvsx being used or not.
7268         (rs6000_secondary_reload_class): Add VSX support.
7269         (get_vec_cmp_insn): Delete, rewrite vector conditionals.
7270         (get_vsel_insn): Ditto.
7271         (rs6000_emit_vector_compare): Rewrite vector conditional support
7272         so that where we can, we use RTL operators, instead of blindly use
7273         UNSPEC.
7274         (rs6000_emit_vector_select): Ditto.
7275         (rs6000_emit_vector_cond_expr): Ditto.
7276         (rs6000_emit_minmax): Directly generate min/max under altivec, vsx.
7277         (create_TOC_reference): Add -mdebug=addr support.
7278         (emit_frame_save): VSX loads/stores need register indexed addressing.
7279
7280         * config/rs6000/rs6000.md: Include vector.md.
7281
7282         * config/rs6000/t-rs6000 (MD_INCLUDES): Add vector.md.
7283
7284         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
7285         support for V2DI, V2DF in logical, permute, select operations.
7286
7287         * config/rs6000/rs6000.opt (-mvsx-scalar-double): Add new debug
7288         switch for vsx/power7.
7289         (-mvsx-scalar-memory): Ditto.
7290         (-mvsx-align-128): Ditto.
7291         (-mallow-movmisalign): Ditto.
7292         (-mallow-df-permute): Ditto.
7293         (-msched-groups): Ditto.
7294         (-malways-hint): Ditto.
7295         (-malign-branch-targets): Ditto.
7296
7297         * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Delete, use target
7298         hook instead.
7299         (IRA_COVER_CLASSES_PRE_VSX): Cover classes if not -mvsx.
7300         (IRA_COVER_CLASSES_VSX): Cover classes if -mvsx.
7301         (rs6000_vector_reg_class): Delete.
7302         (rs6000_vsx_reg_class): Ditto.
7303         (enum rs6000_reg_class_enum): New enum for the constraints that
7304         vary based on target switches.
7305         (rs6000_constraints): New array to hold the register class for all
7306         of the register constraints that vary based on the switches used.
7307         (ALTIVEC_BUILTIN_*_UNS): Add unsigned builtin functions.
7308         (enum rs6000_builtins): Add unsigned varients for the builtin
7309         declarations returned by target hooks for expanding multiplies,
7310         select, and permute operations.  Add VSX builtins.
7311         (enum rs6000_builtin_type_index): Add entries for VSX.
7312         (V2DI_type_node): Ditto.
7313         (V2DF_type_node): Ditto.
7314         (unsigned_V2DI_type_node): Ditto.
7315         (bool_long_type_node): Ditto.
7316         (intDI_type_internal_node): Ditto.
7317         (uintDI_type_internal_node): Ditto.
7318         (double_type_internal_node): Ditto.
7319
7320         * config/rs6000/altivec.md (whole file): Move all expanders to
7321         vector.md from altivec.md.  Rename insn matching functions to be
7322         altivec_foo.
7323         (UNSPEC_VCMP*): Delete, rewrite vector comparisons.
7324         (altivec_vcmp*): Ditto.
7325         (UNSPEC_VPERM_UNS): New, add for unsigned types using vperm.
7326         (VM): New iterator for moves that includes the VSX types.
7327         (altivec_vperm_<mode>): Add VSX types.  Add unsigned types.
7328         (altivec_vperm_<mode>_uns): New, for unsigned types.
7329         (altivec_vsel_*): Rewrite vector comparisons and predicate builtins.
7330         (altivec_eq<mode>): Ditto.
7331         (altivec_gt<mode>): Ditto.
7332         (altivec_gtu<mode>): Ditto.
7333         (altivec_eqv4sf): Ditto.
7334         (altivec_gev4sf): Ditto.
7335         (altivec_gtv4sf): Ditto.
7336         (altivec_vcmpbfp_p): Ditto.
7337
7338 2009-07-23  Richard Earnshaw  <rearnsha@arm.com>
7339
7340         * arm.md (split for ior/xor with shift and zero-extend): Cast op3 to
7341         unsigned HWI.
7342
7343 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
7344
7345         PR target/40832
7346         * config/i386/i386.c (output_387_ffreep): Rewrite to use
7347         ASM_SHORT instead of .word.
7348         * config/i386/i386.md (*tls_global_dynamic_64): Use ASM_SHORT
7349         instead of .word in asm template.
7350
7351 2009-07-22  Vladimir Makarov  <vmakarov@redhat.com>
7352
7353         PR target/37488
7354         * ira-lives.c (bb_has_abnormal_call_pred): New function.
7355         (process_bb_node_lives): Use it.
7356
7357         * ira.c (setup_cover_and_important_classes): Don't setup
7358         ira_important_class_nums.  Add cover classes to the end of
7359         important classes.
7360         (cover_class_order, comp_reg_classes_func, reorder_important_classes):
7361         New.
7362         (find_reg_class_closure): Use reorder_important_classes.
7363
7364         * config/i386/i386.h (IRA_COVER_CLASSES): Remove.
7365
7366         * config/i386/i386.c (i386_ira_cover_classes): New function.
7367         (TARGET_IRA_COVER_CLASSES): Redefine.
7368
7369         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Add a comment about
7370         importance of order of cover classes in the array.
7371
7372 2009-07-22  Diego Novillo  <dnovillo@google.com>
7373
7374         * tree-pass.h (TDF_EH): Define.
7375         * gimple-pretty-print.c (dump_gimple_stmt): If FLAGS
7376         contains TDF_EH, print the EH region number holding GS.
7377         * tree-dump.c (dump_options): Add "eh".
7378         * doc/invoke.texi: Document it.
7379
7380 2009-07-22  Doug Kwan  <dougkwan@google.com>
7381
7382         * config/arm/arm.md (subdi3) Copy non-reg values to DImode registers.
7383
7384 2009-07-22  Michael Matz  <matz@suse.de>
7385
7386         PR tree-optimization/35229
7387         PR tree-optimization/39300
7388
7389         * tree-ssa-pre.c (includes): Include tree-scalar-evolution.h.
7390         (inhibit_phi_insertion): New function.
7391         (insert_into_preds_of_block): Call it for REFERENCEs.
7392         (init_pre): Initialize and finalize scalar evolutions.
7393         * Makefile.in (tree-ssa-pre.o): Depend on tree-scalar-evolution.h .
7394
7395 2009-07-22  Uros Bizjak  <ubizjak@gmail.com>
7396
7397         * config/i386/predicates.md (zero_extended_scalar_load_operand):
7398         Use CONST_VECTOR_NUNITS to determine number of elements.
7399
7400 2009-07-22  Andreas Krebbel  <krebbel1@de.ibm.com>
7401
7402         * config/s390/constraints.md (ZQ, ZR, ZS, ZT): New constraints.
7403         (U, W): Constraints are now deprecated and will be removed if we
7404         run out of letters.
7405         * config/s390/s390.md (U, W): Replaced with ZQZR, ZSZT throughout
7406         the file.
7407         ("prefetch"): Add the stcmh instruction for prefetching.
7408         * config/s390/s390.c (s390_symref_operand_p): Function moved. No
7409         changes.
7410         (s390_short_displacement): Return always true if compiling for
7411         machines not providing the long displacement facility.
7412         (s390_mem_constraint): Support the new constraint letter Z.
7413         (s390_check_qrst_address): New function.
7414
7415 2009-07-21  DJ Delorie  <dj@redhat.com>
7416
7417         * config/mep/mep.c (mep_legitimize_arg): Leave control registers
7418         alone too.
7419
7420 2009-07-21  Jason Merrill  <jason@redhat.com>
7421
7422         * c-common.c (max_tinst_depth): Increase default to 1024.
7423
7424 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
7425
7426         * config/i386/sse.md (vec_unpacku_float_hi_v4si): New expander.
7427         (vec_unpacku_float_lo_v4si): Ditto.
7428
7429 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
7430
7431         PR target/40811
7432         * config/i386/sse.md (sse2_cvtudq2ps): New expander.
7433         (enum ix86_builtins): Add IX86_BUILTIN_CVTUDQ2PS.
7434         (builtin_description): Add __builtin_ia32_cvtudq2ps.
7435         (ix86_vectorize_builtin_conversion): Handle IX86_BUILTIN_CVTUDQ2PS.
7436
7437 2009-07-21  Jakub Jelinek  <jakub@redhat.com>
7438
7439         PR tree-optimization/40813
7440         * tree-inline.c (copy_bb): Regimplify RHS after last stmt, not before
7441         it.
7442
7443 2009-07-21  Kaz Kojima  <kkojima@gcc.gnu.org>
7444
7445         * config/sh/sh.c (sh_gimplify_va_arg_expr): Wrap the result
7446         with a NOP_EXPR if needed.
7447
7448 2009-07-21  Paul Brook <paul@codesourcery.com>
7449
7450         * tree-vectorizer.c (increase_alignment): Handle nested arrays.
7451         Terminate debug dump with newline.
7452
7453 2009-07-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7454
7455         * pa.c (compute_zdepwi_operands): Limit deposit length to 32 - lsb.
7456         Cast "1" to unsigned HOST_WIDE_INT.
7457         (compute_zdepdi_operands): Limit maximum length to 64 bits.  Limit
7458         deposit length to the maximum length - lsb.  Extend length if
7459         HOST_BITS_PER_WIDE_INT is 32.
7460
7461 2009-07-20  Olatunji Ruwase <tjruwase@google.com>
7462
7463         * cgraph.h (constant_pool_htab): New function.
7464         (constant_descriptor_tree): Move from varasm.c.
7465         * varasm.c (constant_pool_htab): New function.
7466         (constant_descriptor_tree): Move to cgraph.h.
7467
7468 2009-07-20  Olatunji Ruwase  <tjruwase@google.com>
7469
7470         * toplev.c: Invoke FINISH_UNIT callbacks before call to finalize().
7471
7472 2009-07-20  Shujing Zhao  <pearly.zhao@oracle.com>
7473
7474         * Makefile.in (TREE_INLINE_H, tree-inline.o, cgraph.o): Remove
7475         $(VARRAY_H).
7476
7477 2009-07-20  Xinliang David Li  <davidxl@google.com>
7478
7479         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add length check.
7480
7481 2009-07-20  Adam Nemet  <anemet@caviumnetworks.com>
7482
7483         * config/mips/mips.md (move_type): Add arith.
7484         (type): Handle arith.
7485         (zero_extendsidi2): Rename this into ...
7486         (*zero_extendsidi2): ... this.  Don't match if ISA_HAS_EXT_INS.
7487         (zero_extendsidi2): New expander.
7488         (*zero_extendsidi2_dext): New pattern.
7489
7490 2009-07-20  Nick Clifton  <nickc@redhat.com>
7491
7492         * config.gcc (mips64-*-*): Add definition of tm_defines in order
7493         to set MIPS_ABI_DEFAULT.
7494         * config/mips/vr.h (MIPS_ABI_DEFAULT): Remove definition.
7495
7496 2009-07-20  Jakub Jelinek  <jakub@redhat.com>
7497
7498         * tree-object-size.c (addr_object_size): Handle unions with
7499         array in it as last field of structs in __bos (, 1) as __bos (, 0).
7500
7501         PR tree-optimization/40792
7502         * tree.c (build_function_type_skip_args): Remove bogus assert.
7503
7504 2009-07-20  Jan Hubicka  <jh@suse.cz>
7505             Martin Jambor  <mjambor@suse.cz>
7506
7507         * cgraph.h (combined_args_to_skip): New field.
7508         * cgraph.c (cgraph_create_virtual_clone): Properly handle
7509         combined_args_to_skip and args_to_skip.
7510         * tree-inline.c (update_clone_info): New function.
7511         (tree_function_versioning): Call update_clone_info.
7512         * cgraphunit.c: (cgraph_materialize_clone): Dump materialized
7513         functions.
7514         (cgraph_materialize_all_clones): More extensive dumping, working
7515         with combined_args_to_skip rather than args_to_skip.
7516
7517 2009-07-20  Ira Rosen  <irar@il.ibm.com>
7518
7519         * tree-vectorizer.h (vectorizable_condition): Add parameters.
7520         * tree-vect-loop.c (vect_is_simple_reduction): Support COND_EXPR.
7521         (get_initial_def_for_reduction): Likewise.
7522         (vectorizable_reduction): Skip the check of first operand in case
7523         of COND_EXPR. Add check that it is outer loop vectorization if
7524         nested cycle was detected. Call vectorizable_condition() for
7525         COND_EXPR. If reduction epilogue cannot be created do not fail for
7526         nested cycles (if it is not double reduction). Assert that there
7527         is only one type in the loop in case of COND_EXPR. Call
7528         vectorizable_condition() to vectorize COND_EXPR.
7529         * tree-vect-stmts.c (vectorizable_condition): Update comment.
7530         Add parameters. Allow nested cycles if called from
7531         vectorizable_reduction(). Use reduction vector variable if provided.
7532         (vect_analyze_stmt): Call vectorizable_reduction() before
7533         vectorizable_condition().
7534         (vect_transform_stmt): Update call to vectorizable_condition().
7535
7536 2009-07-20  Christian Bruel  <christian.bruel@st.com>
7537
7538         * config/sh/sh.opt (-mfmovd): Resurrect and document.
7539         * doc/invoke.texi (-mfmovd): Likewise.
7540         * config/sh/sh.h (TARGET_FMOVD, MASK_FMOVD): Remove default setting.
7541
7542 2009-07-20  Jan Hubicka  <jh@suse.cz>
7543
7544         * tree-ssa-dce.c (remove_dead_phis): Only look for abnormal PHIs
7545         when handling SSA name.
7546
7547 2009-07-19  Jan Hubicka  <jh@suse.cz>
7548
7549         PR tree-optimization/40676
7550         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do renaming on all
7551         virtual PHIs in empty BBs.
7552
7553 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
7554
7555         * combine.c (make_compound_operation) <SUBREG>: If force_to_mode
7556         re-expanded the compound use gen_lowpart instead to convert to the
7557         desired mode.
7558
7559 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
7560
7561         * combine.c (try_widen_shift_mode): Add COUNT, OUTER_CODE and
7562         OUTER_CONST arguments.
7563         <LSHIFTRT>: Use them to allow widening if the bits shifted in from
7564         the new wider mode will be masked off.
7565         (simplify_shift_const_1): Adjust calls to try_widen_shift_mode.
7566
7567 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
7568
7569         * combine.c (try_widen_shift_mode) <LSHIFTRT>: Allow widening if the
7570         high-order bits are zero.
7571
7572 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
7573
7574         * combine.c (simplify_shift_const_1): Split code to determine
7575         shift_mode into ...
7576         (try_widen_shift_mode): ... here.  Allow widening for ASHIFTRT if the
7577         new bits shifted in are identical to the old sign bit.
7578
7579 2009-07-18  Richard Guenther  <rguenther@suse.de>
7580
7581         PR c/40787
7582         * gimplify.c (gimplify_call_expr): Reject code using results from
7583         functions returning void.
7584
7585 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
7586
7587         * doc/md.texi: Document the new PowerPC "es" constraint.
7588         Document that "m" can include automodified addresses on this target,
7589         and explain how %U must be used.  Extend the "Q" and "Z" documentation
7590         to suggest "es" as well as "m".
7591         * config/rs6000/constraints.md (es): New memory constraint.
7592         (Q, Z): Update strings to match new documentation.
7593
7594 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
7595
7596         * config/rs6000/rs6000.c (rs6000_mode_dependent_address): Allow any
7597         offset from virtual_stack_vars_rtx and arg_pointer_rtx.
7598         * config/rs6000/predicates.md (volatile_mem_operand): Use
7599         offsettable_nonstrict_memref_p.
7600         * config/rs6000/rs6000.md (*floatsidf2_internal): Remove split check.
7601         (*floatunssidf2_internal): Likewise.
7602         (*fix_truncdfsi2_internal): Likewise.
7603         (*fix_trunctfsi2_internal): Likewise.
7604
7605 2009-07-17  Anatoly Sokolov  <aesok@post.ru>
7606
7607         * config/avr/avr-devices.c (avr_mcu_t): Add atmega8u2, atmega16u2 and
7608         atmega32u2 devices.
7609         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
7610
7611 2009-07-17  Richard Guenther  <rguenther@suse.de>
7612
7613         PR c/40401
7614         * tree-pass.h (pass_diagnose_omp_blocks): Declare.
7615         (pass_warn_unused_result): Likewise.
7616         (TODO_set_props): Remove.
7617         * omp-low.c (diagnose_omp_structured_block_errors): Change to
7618         run as a pass.
7619         (pass_diagnose_omp_blocks): Define.
7620         * c-decl.c (pop_file_scope): Do not finalize the CU here.
7621         (c_gimple_diagnostics_recursively): Remove.
7622         (finish_function): Do not call it.
7623         (c_write_global_declarations): Continue after errors.
7624         Finalize the CU here.
7625         * c-gimplify.c (c_genericize): Do not gimplify here.
7626         * c-common.c (c_warn_unused_result): Move ...
7627         * tree-cfg.c (do_warn_unused_result): ... here.
7628         (run_warn_unused_result): New function.
7629         (gate_warn_unused_result): New function.
7630         (pass_warn_unused_result): New pass.
7631         * c-common.h (c_warn_unused_result): Remove.
7632         * flags.h (flag_warn_unused_result): Declare.
7633         * c-opts.c (c_common_init_options): Enable flag_warn_unused_result.
7634         * opts.c (flag_warn_unused_result): Initialize to false.
7635         * toplev.c (compile_file): Add comment.
7636         * omp-low.c (create_omp_child_function): Do not register
7637         the function with the frontend.
7638         (diagnose_omp_structured_block_errors): Prepare to be
7639         called as optimization pass.
7640         (gate_diagnose_omp_blocks): New function.
7641         (pass_diagnose_omp_blocks): New pass.
7642         * cgraph.h (cgraph_optimize): Remove.
7643         (cgraph_analyze_function): Likewise.
7644         * cgraph.c (cgraph_add_new_function): Gimplify C++ thunks.
7645         * cgraphunit.c (cgraph_lower_function): Lower nested functions
7646         before their parents here.
7647         (cgraph_finalize_function): Not here.
7648         (cgraph_analyze_function): Gimplify functions here.
7649         (cgraph_finalize_compilation_unit): Continue after errors.
7650         Optimize the callgraph from here.
7651         (cgraph_optimize): Make static.
7652         * langhooks.c (write_global_declarations): Finalize the CU.
7653         * gimplify.c (gimplify_asm_expr): Do not emit ASMs with errors.
7654         (gimplify_function_tree): Assert we gimplify only once.
7655         Set PROP_gimple_any property.
7656         * tree-nested.c (gimplify_all_functions): New function.
7657         (lower_nested_functions): Gimplify all nested functions.
7658         * gimple.h (diagnose_omp_structured_block_errors): Remove.
7659         * passes.c (init_optimization_passes): Add pass_warn_unused_result
7660         and pass_diagnose_omp_blocks after gimplification.  Do not
7661         set TODO_set_props on all_lowering_passes.
7662         (execute_one_pass): Do not handle TODO_set_props.
7663         * Makefile.in (cgraphunit.o): Add $(TREE_DUMP_H) dependency.
7664         (gimplify.o): Add tree-pass.h dependency.
7665         * tree-inline.c (copy_statement_list): Properly copy STATEMENT_LIST.
7666         (copy_tree_body_r): Properly handle TARGET_EXPR like SAVE_EXPR.
7667         (unsave_r): Likewise.
7668         * c-omp.c (c_finish_omp_atomic): Set DECL_CONTEXT on the
7669         temporary variable.
7670
7671 2009-07-17  Sandra Loosemore  <sandra@codesourcery.com>
7672
7673         * doc/service.texi (Service): Restore previously removed link,
7674         which isn't broken after all.
7675
7676 2009-07-17  Richard Guenther  <rguenther@suse.de>
7677
7678         PR tree-optimization/40321
7679         * tree-ssa-pre.c (add_to_exp_gen): Also add names defined by
7680         PHI nodes to the maximal set.
7681         (make_values_for_phi): Add PHI arguments to the maximal set.
7682         (execute_pre): Dump PHI_GEN and the maximal set.
7683
7684 2009-07-17  Jakub Jelinek  <jakub@redhat.com>
7685
7686         PR c++/40780
7687         * gimplify.c (gimplify_conversion): Don't change non-conversions into
7688         VIEW_CONVERT_EXPR.
7689
7690 2009-07-16  Sandra Loosemore  <sandra@codesourcery.com>
7691
7692         * doc/extend.texi (Nested Functions): Replace broken link with
7693         textual reference.
7694         * doc/service.texi (Service): Remove broken link.
7695
7696 2009-07-16  H.J. Lu  <hongjiu.lu@intel.com>
7697
7698         PR bootstrap/40781
7699         * builtins.c (expand_builtin_memcmp): Use loc instead of
7700         EXPR_LOCATION (exp).
7701         (expand_builtin_strncmp): Likewise.
7702
7703 2009-07-17  Aldy Hernandez  <aldyh@redhat.com>
7704             Manuel López-Ibáñez  <manu@gcc.gnu.org>
7705
7706         PR 40435
7707         * tree-complex.c, tree-loop-distribution.c, tree.c, tree.h,
7708         builtins.c, fold-const.c, omp-low.c, cgraphunit.c, tree-ssa-ccp.c,
7709         tree-ssa-dom.c, gimple-low.c, expr.c, tree-ssa-ifcombine.c,
7710         c-decl.c, stor-layout.c, tree-if-conv.c, c-typeck.c, gimplify.c,
7711         calls.c, tree-sra.c, tree-mudflap.c, tree-ssa-copy.c,
7712         tree-ssa-forwprop.c, c-convert.c, c-omp.c, varasm.c,
7713         tree-inline.c, c-common.c, c-common.h, gimple.c,
7714         tree-switch-conversion.c, gimple.h, tree-cfg.c, c-parser.c,
7715         convert.c: Add location argument to fold_{unary,binary,ternary},
7716         fold_build[123], build_call_expr, build_size_arg,
7717         build_fold_addr_expr, build_call_array, non_lvalue, size_diffop,
7718         fold_build1_initializer, fold_build2_initializer,
7719         fold_build3_initializer, fold_build_call_array,
7720         fold_build_call_array_initializer, fold_single_bit_test,
7721         omit_one_operand, omit_two_operands, invert_truthvalue,
7722         fold_truth_not_expr, build_fold_indirect_ref, fold_indirect_ref,
7723         combine_comparisons, fold_builtin_*, fold_call_expr,
7724         build_range_check, maybe_fold_offset_to_address, round_up,
7725         round_down.
7726
7727 2009-07-16  Jason Merrill  <jason@redhat.com>
7728
7729         PR libstdc++/37907
7730         * c-common.c (c_common_reswords): Add __is_standard_layout
7731         and __is_trivial.
7732         * c-common.h (enum rid): Add RID_IS_STD_LAYOUT and RID_IS_TRIVIAL.
7733         * doc/implement-cxx.texi: New.
7734         * doc/gcc.texi: Include it.
7735
7736 2009-07-16  DJ Delorie  <dj@redhat.com>
7737
7738         * config/m32c/m32c.c (m32c_compare_redundant): Avoid removing
7739         compares that may be indirectly affected by previous instructions.
7740
7741 2009-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7742
7743         * builtins.c (do_mpc_arg2): New.
7744         (fold_builtin_2): Fold builtin cpow.
7745         * real.h (HAVE_mpc_pow): New.
7746
7747 2009-07-16  Bingfeng Mei  <bmei@broadcom.com>
7748
7749         * modulo-sched.c (sms_schedule): stage_count <= 1 as correct
7750         comparison to skip unprofitable schedule
7751
7752 2009-07-16  Simon Baldwin  <simonb@google.com>
7753
7754         * gcc.c (option_map): New flag -no-canonical-prefixes.
7755         * (display_help): Print help text for new flag.
7756         * (process_command): Move options translation and language specifics
7757         and handle new flag early.  Use it to set a function pointer to a
7758         prefix builder.  Replace make_relative_prefix calls with calls to
7759         the function pointed to.  Ignore new flag in regular options handling.
7760         * doc/invoke.texi (Overall Options): Documented -no-canonical-prefixes.
7761
7762 2009-07-15  DJ Delorie  <dj@redhat.com>
7763
7764         * config/mep/mep.md (sibcall_internal): Change register to avoid
7765         argument registers.
7766         (sibcall_value_internal): Likewise.
7767
7768 2009-07-15  Eric Botcazou  <ebotcazou@adacore.com>
7769
7770         PR rtl-optimization/40710
7771         * resource.c (mark_target_live_regs): Reset DF problem to LR.
7772
7773 2009-07-15  Adam Nemet  <anemet@caviumnetworks.com>
7774
7775         * config/mips/mips.md (*extenddi_truncate<mode>,
7776         *extendsi_truncate<mode>): Change type attribute to move_type
7777         with shift_shift.  Split out code handling exts from here ...
7778         (*extend<GPR:mode>_truncate<SHORT:mode>_exts): ... to this new
7779         pattern.
7780         (*extendhi_truncateqi): Change type attribute to move_type with
7781         shift_shift.  Split out code handling exts from here ...
7782         (*extendhi_truncateqi_exts): ... to this new pattern.
7783
7784 2009-07-15  Uros Bizjak  <ubizjak@gmail.com>
7785
7786         * config/i386/sse.md (copysign<mode>3): Use "and-not" SSE instruction
7787         instead of "and" with inverted sign bit mask value.  Use
7788         "nonimmediate_operand" for operand 1 and operand 2 predicate.
7789         Allocate registers only for operand 4 and operand 5.
7790
7791 2009-07-15  Jakub Jelinek  <jakub@redhat.com>
7792
7793         PR middle-end/40747
7794         * fold-const.c (fold_cond_expr_with_comparison): When folding
7795         < and <= to MIN, make sure the MIN uses the same type as the
7796         comparison's operands.
7797
7798 2009-07-15  Richard Earnshaw  <rearnsha@arm.com>
7799
7800         * arm.md (ior_xor): New code iterator.
7801         (split for ior/xor with shift and zero-extend): New split pattern.
7802         * arm/predicates.md (subreg_lowpart_operator): New special predicate.
7803
7804 2009-07-15  Richard Guenther  <rguenther@suse.de>
7805
7806         * tree-ssa-structalias.c (make_constraint_from_heapvar): Initialize
7807         offset member.
7808
7809 2009-07-15  Richard Guenther  <rguenther@suse.de>
7810
7811         PR middle-end/40753
7812         * alias.c (ao_ref_from_mem): Reject FUNCTION_DECL and LABEL_DECL bases.
7813
7814 2009-07-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
7815
7816         * config/m68k/linux-unwind.h (m68k_fallback_frame_state): Update to
7817         handle 2.6.30 kernel.
7818
7819 2009-07-15  DJ Delorie  <dj@redhat.com>
7820
7821         * config/mep/mep.md (sibcall_internal): Change register to allow
7822         for 24-bit addresses.
7823         (sibcall_value_internal): Likewise.
7824
7825 2009-07-14  Ghassan Shobaki  <ghassan.shobaki@amd.com>
7826
7827         * doc/invoke.texi: Added descriptions of the  scheduling heuristics
7828         that are enabled/disabled by the flags introduced by a previous patch.
7829
7830 2009-07-14  DJ Delorie  <dj@redhat.com>
7831
7832         * config/mep/mep.md (sibcall_internal): Include non-toggling
7833         non-jmp case.
7834         (sibcall_value_internal): Likewise.
7835
7836 2009-07-14  Taras Glek  <tglek@mozilla.com>
7837             Rafael Espindola  <espindola@google.com>
7838
7839         * doc/sourcebuild.texi: Document install-plugin target.
7840         * configure.ac: Added install-plugin target to language makefiles.
7841         * configure: Regenerate.
7842         * Makefile.in: (install-plugin): Install more headers,
7843         depend on lang.install-plugin.
7844
7845 2009-07-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
7846
7847         * tree-vrp.c (vrp_evaluate_conditional): Mark strings for
7848         translation.
7849
7850 2009-07-14  DJ Delorie  <dj@redhat.com>
7851
7852         * config/mep/mep.c (mep_vliw_jmp_match): New function.
7853         * config/mep/mep-protos.h (mep_vliw_jmp_match): Prototype it.
7854         * config/mep/mep.md (sibcall_internal): Change test from
7855         mep_vliw_mode_match to mep_vliw_jmp_match.
7856         (sibcall_value_internal): Likewise.
7857
7858 2009-07-14  Uros Bizjak  <ubizjak@gmail.com>
7859
7860         * config/i386/sse.md (copysign<mode>3): New expander.
7861         * config/i386/i386-protos.h (ix86_build_signbit_mask): New prototype.
7862         * config/i386/i386.c (ix86_build_signbit_mask): Make public.
7863         Use ix86_build_const_vector.
7864         (enum ix86_builtins): Add IX86_BUILTIN_CPYSGNPS and
7865         IX86_BUILTIN_CPYSGNPD.
7866         (builtin_description): Add __builtin_ia32_copysignps and
7867         __builtin_ia32_copysignpd.
7868         (ix86_builtin_vectorized_function): Handle BUILT_IN_COPYSIGN
7869         and BUILT_IN_COPYSIGNF.
7870
7871 2009-07-13  Jason Merrill  <jason@redhat.com>
7872
7873         * builtins.c (can_trust_pointer_alignment): New fn.
7874         (get_pointer_alignment): Factor it out from here.
7875         * tree.h: Declare it.
7876
7877 2009-07-14  David Edelsohn  <edelsohn@gnu.org>
7878
7879         * config/rs6000/predicates.md (offsettable_mem_operand): Test
7880         RTX_AUTOINC class.
7881
7882 2009-07-14  Dodji Seketeli  <dodji@redhat.com>
7883
7884         PR debug/40705
7885         PR c++/403057
7886         * dwarf2.out.c (gen_type_die_with_usage): Added comment.
7887
7888 2009-07-14  Richard Guenther  <rguenther@suse.de>
7889             Andrey Belevantsev <abel@ispras.ru>
7890
7891         PR middle-end/40745
7892         * cfgexpand.c (partition_stack_vars): Do not bother to update
7893         alias information when not optimizing.
7894
7895 2009-07-14  Richard Guenther  <rguenther@suse.de>
7896             Andrey Belevantsev <abel@ispras.ru>
7897
7898         * tree-ssa-alias.h (refs_may_alias_p_1): Declare.
7899         (pt_solution_set): Likewise.
7900         * tree-ssa-alias.c (refs_may_alias_p_1): Export.
7901         * tree-ssa-structalias.c (pt_solution_set): New function.
7902         * final.c (rest_of_clean_state): Free SSA data structures.
7903         * print-rtl.c (print_decl_name): Remove.
7904         (print_mem_expr): Implement in terms of print_generic_expr.
7905         * alias.c (ao_ref_from_mem): New function.
7906         (rtx_refs_may_alias_p): Likewise.
7907         (true_dependence): Query alias-export info.
7908         (canon_true_dependence): Likewise.
7909         (write_dependence_p): Likewise.
7910         * tree-dfa.c (get_ref_base_and_extent): For void types leave
7911         size unknown.
7912         * emit-rtl.c (component_ref_for_mem_expr): Remove.
7913         (mem_expr_equal_p): Use operand_equal_p.
7914         (set_mem_attributes_minus_bitpos): Do not use
7915         component_ref_for_mem_expr.
7916         * cfgexpand.c (add_partitioned_vars_to_ptset): New function.
7917         (update_alias_info_with_stack_vars): Likewise.
7918         (partition_stack_vars): Call update_alias_info_with_stack_vars.
7919         * tree-ssa.c (delete_tree_ssa): Do not release SSA names
7920         explicitly nor clear stmt operands.
7921         Free the decl-to-pointer map.
7922         * tree-optimize.c (execute_free_datastructures): Do not free
7923         SSA data structures here.
7924         * tree-flow.h (struct gimple_df): Add decls_to_pointers member.
7925         * Makefile.in (emit-rtl.o): Add pointer-set.h dependency.
7926         (alias.o): Add tree-ssa-alias.h, pointer-set.h and $(TREE_FLOW_H)
7927         dependencies.
7928         (print-rtl.o): Add $(DIAGNOSTIC_H) dependency.
7929
7930 2009-07-13  DJ Delorie  <dj@redhat.com>
7931
7932         * config/mep/mep.h (CC1_SPEC): Tweak parameters to trigger
7933         unrolling at the right iteration count.
7934
7935         * config/mep/mep.c (mep_expand_prologue): Fix frame pointer
7936         calculations.
7937
7938 2009-07-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
7939
7940         * haifa-sched.c (rank_for_schedule): Introduced flags to
7941         enable/disable individual scheduling heuristics.
7942         * common.opt: Introduced flags to enable/disable individual
7943         heuristics in the scheduler.
7944         * doc/invoke.texi: Introduced flags to enable/disable individual
7945         heuristics in the scheduler.
7946
7947 2009-07-13  Kai Tietz  <kai.tietz@onevision.com>
7948
7949         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Remove file
7950         config/i386/mingw-tls.c.
7951         * config/i386/mingw-tls.c: Removed.
7952
7953 2009-07-13  Ira Rosen  <irar@il.ibm.com>
7954
7955         * tree-vect-loop.c (get_initial_def_for_reduction): Ensure that the
7956         checks access only relevant statements.
7957         (vectorizable_reduction): Likewise.
7958
7959 2009-07-12  Kai Tietz  <kai.tietz@onevision.com>
7960
7961         * config/i386/cygming.h (TARGET_OS_CPP_BUILTINS): Define _X86_
7962         just for 32-bit case.
7963
7964 2009-07-12  Jan Hubicka  <jh@suse.cz>
7965
7966         PR tree-optimization/40585
7967         * except.c (expand_resx_expr): When there already is resume
7968         instruction, produce linked list.
7969         (build_post_landing_pads): Assert that resume is empty.
7970         (connect_post_landing_pads): Handle resume lists.
7971         (dump_eh_tree): Dump resume list.
7972
7973 2009-07-12  Ira Rosen  <irar@il.ibm.com>
7974
7975         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
7976         with additional argument.
7977         * tree-vectorizer.h (enum vect_def_type): Add
7978         vect_double_reduction_def.
7979         (vect_is_simple_reduction): Add argument.
7980         * tree-vect-loop.c (vect_determine_vectorization_factor): Fix
7981         indentation.
7982         (vect_analyze_scalar_cycles_1): Detect double reduction. Call
7983         vect_is_simple_reduction with additional argument.
7984         (vect_analyze_loop_operations): Handle exit phi nodes in case of
7985         double reduction.
7986         (reduction_code_for_scalar_code): Handle additional codes by
7987         returning ERROR_MARK for them. Fix comment and indentation.
7988         (vect_is_simple_reduction): Fix comment, add argument to specify
7989         double reduction. Detect double reduction.
7990         (get_initial_def_for_induction): Fix indentation.
7991         (get_initial_def_for_reduction): Fix comment and indentation.
7992         Handle double reduction. Create initial definitions that do not
7993         require adjustment if ADJUSTMENT_DEF is NULL. Handle additional cases.
7994         (vect_create_epilog_for_reduction): Fix comment, add argument to
7995         handle double reduction. Use PLUS_EXPR in case of MINUS_EXPR in
7996         epilogue result extraction. Create double reduction phi node and
7997         replace relevant uses.
7998         (vectorizable_reduction): Call vect_is_simple_reduction with
7999         additional argument. Fix indentation. Update epilogue code treatment
8000         according to the changes in reduction_code_for_scalar_code. Check
8001         for double reduction. Call vect_create_epilog_for_reduction with
8002         additional argument.
8003         * tree-vect-stmts.c (process_use): Handle double reduction, update
8004         documentation.
8005         (vect_mark_stmts_to_be_vectorized): Handle double reduction.
8006         (vect_get_vec_def_for_operand): Likewise.
8007
8008 2009-07-12  Danny Smith  <dansmister@gmail.com>
8009
8010         * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't
8011         dllexport if !TREE_PUBLIC.
8012         (i386_pe_maybe_record_exported_symbol): Assert TREE_PUBLIC.
8013
8014 2009-07-11  Anatoly Sokolov  <aesok@post.ru>
8015
8016         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Redefine.
8017         (avr_extra_arch_macro) Remove declatation.
8018         * config/avr/avr.c (avr_cpu_cpp_builtins): New function.
8019         (avr_extra_arch_macro) Declare as static.
8020         * config/avr/avr-protos.h (avr_cpu_cpp_builtins): Dclare.
8021
8022 2009-07-11  Jan Hubicka  <jh@suse.cz>
8023
8024         PR middle-end/48388
8025         * except.c (can_be_reached_by_runtime): Test for NULL aka bitmap.
8026
8027 2009-07-11  Jakub Jelinek  <jakub@redhat.com>
8028
8029         PR debug/40713
8030         * dwarf2out.c (dw_fde_struct): Add in_std_section and
8031         cold_in_std_section bits.
8032         (dwarf2out_begin_prologue): Initialize them.
8033         (dwarf2out_finish): Don't emit FDE range into .debug_ranges
8034         if already covered by text_section or cold_text_section range.
8035
8036         PR rtl-optimization/40667
8037         * defaults.h (MINIMUM_ALIGNMENT): Define if not defined.
8038         * doc/tm.texi (MINIMUM_ALIGNMENT): Document it.
8039         * config/i386/i386.h (MINIMUM_ALIGNMENT): Define.
8040         * config/i386/i386.c (ix86_minimum_alignment): New function.
8041         * config/i386/i386-protos.h (ix86_minimum_alignment): New prototype.
8042         * cfgexpand.c (expand_one_var): Use MINIMIM_ALIGNMENT.
8043         * emit-rtl.c (gen_reg_rtx): Likewise.
8044         * function.c (assign_parms): Likewise.  If nominal_type needs
8045         bigger alignment than FUNCTION_ARG_BOUNDARY, use its alignment
8046         rather than passed_type's alignment.
8047
8048         PR target/40668
8049         * function.c (assign_parm_setup_stack): Adjust
8050         MEM_OFFSET (data->stack_parm) if promoted_mode is different
8051         from nominal_mode on big endian.
8052
8053 2009-07-11  Paolo Bonzini  <bonzini@gnu.org>
8054
8055         * expmed.c (emit_store_flag_1): Fix choice of zero vs. sign extension.
8056
8057 2009-07-10  DJ Delorie  <dj@redhat.com>
8058
8059         * config/mep/mep.c (mep_can_inline_p): Correct logic, and simplify.
8060
8061 2009-07-10  Mark Mitchell  <mark@codesourcery.com>
8062
8063         * config/arm/thumb2.md (thumb2_cbz): Correct computation of length
8064         attribute.
8065         (thumb2_cbnz): Likewise.
8066
8067 2009-07-10  David Daney  <ddaney@caviumnetworks.com>
8068
8069         PR target/39079
8070         * config.gcc (supported_defaults): Add synci.
8071         (with_synci): Add validation.
8072         (all_defaults): Add synci.
8073         * config/mips/mips.md (clear_cache): Use TARGET_SYNCI instead of
8074         ISA_HAS_SYNCI.
8075         (synci): Same.
8076         * config/mips/mips.opt (msynci): New option.
8077         * config/mips/mips.c (mips_override_options): Warn on use of
8078         -msynci for targets that do now support it.
8079         * gcc/config/mips/mips.h (OPTION_DEFAULT_SPECS): Add a default for
8080         msynci.
8081         * gcc/doc/invoke.texi (-msynci): Document the new option.
8082         * doc/install.texi (--with-synci): Document the new option.
8083
8084 2009-07-10  Richard Guenther  <rguenther@suse.de>
8085
8086         PR tree-optimization/40496
8087         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Create
8088         the PHI result with a compatible type.
8089
8090 2009-07-10  Manuel López-Ibáñez  <manu@gcc.gnu.org>
8091
8092         PR 25509
8093         PR 40614
8094         * c.opt (Wunused-result): New.
8095         * doc/invoke.texi: Document it.
8096         * c-common.c (c_warn_unused_result): Use it.
8097
8098 2009-07-09  DJ Delorie  <dj@redhat.com>
8099
8100         * targhooks.c (default_target_can_inline_p): Rename from
8101         default_target_option_can_inline_p.
8102         * targhooks.h (default_target_can_inline_p): Likewise.
8103         * target-def.h (TARGET_CAN_INLINE_P): Rename from
8104         TARGET_OPTION_CAN_INLINE_P.
8105         * config/i386/i386.c (TARGET_CAN_INLINE_P): Likewise.
8106         * config/mep/mep.c (TARGET_CAN_INLINE_P): Likewise.
8107         (mep_target_can_inline_p): Rename from
8108         mep_target_option_can_inline_p.
8109
8110         PR target/40626
8111         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Add coprocessor
8112         registers used to pass vectors.
8113
8114         * config/mep/mep.c (mep_option_can_inline_p): Remove error call.
8115
8116 2009-07-09  Tom Tromey  <tromey@redhat.com>
8117
8118         * unwind-dw2-fde-darwin.c: Include dwarf2.h.
8119         * config/mmix/mmix.c: Include dwarf2.h.
8120         * config/rs6000/darwin-fallback.c: Include dwarf2.h.
8121         * config/xtensa/unwind-dw2-xtensa.c: Include dwarf2.h.
8122         * config/sh/sh.c: Include dwarf2.h.
8123         * config/i386/i386.c: Include dwarf2.h.
8124         * Makefile.in (DWARF2_H): Remove 'elf'.
8125         * except.c: Include dwarf2.h.
8126         * unwind-dw2.c: Include dwarf2.h.
8127         * dwarf2out.c: Include dwarf2.h.
8128         * unwind-dw2-fde-glibc.c: Include dwarf2.h.
8129         * unwind-dw2-fde.c: Include dwarf2.h.
8130         * dwarf2asm.c: Include dwarf2.h.
8131
8132 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
8133
8134         * haifa-sched.c (insn_finishes_cycle_p): New static function.
8135         (max_issue): Use it.
8136         * sched-int.h (struct sched_info: insn_finishes_block_p): New
8137         scheduler hook.
8138         * sched-rgn.c (rgn_insn_finishes_block_p): Implement it.
8139         (region_sched_info): Update.
8140         * sched-ebb.c (ebb_sched_info): Update.
8141         * modulo-sched.c (sms_sched_info): Update.
8142         * sel-sched-ir.c (sched_sel_haifa_sched_info): Update.
8143
8144 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
8145
8146         * varasm.c (build_constant_desc): Don't share RTL in pool entries.
8147
8148 2009-07-09  Basile Starynkevitch  <basile@starynkevitch.net>
8149
8150         * plugin.c (try_init_one_plugin): passes RTLD_GLOBAL to dlopen.
8151
8152 2009-07-09  Jakub Jelinek  <jakub@redhat.com>
8153
8154         PR middle-end/40692
8155         * fold-const.c (fold_cond_expr_with_comparison): Don't replace
8156         arg1 with arg01 if arg1 is already INTEGER_CST.
8157
8158 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
8159
8160         * simplify-rtx.c (simplify_binary_operation_1) <AND>:
8161         Transform (and (truncate)) into (truncate (and)).
8162
8163 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
8164
8165         * combine.c (make_extraction): Check TRULY_NOOP_TRUNCATION before
8166         creating LHS paradoxical subregs.  Fix surrounding returns to
8167         use NULL_RTX rather than 0.
8168
8169 2009-07-08  DJ Delorie  <dj@redhat.com>
8170
8171         * config/mep/mep.c: (mep_option_can_inline_p): New.
8172         (TARGET_OPTION_CAN_INLINE_P): Define.
8173
8174 2009-07-08  Mark Wielaard  <mjw@redhat.com>
8175
8176         PR debug/40659
8177         * dwarf2out.c (add_data_member_location_attribute): When we have
8178         only a constant offset don't emit a new location description using
8179         DW_OP_plus_uconst, but just add the constant with add_AT_int, when
8180         dwarf_version > 2.
8181
8182 2009-07-08  Richard Henderson  <rth@redhat.com>
8183
8184         PR target/38900
8185         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move to i386.c.
8186         (enum reg_class): Add CLOBBERED_REGS.
8187         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Likewise.
8188         * config/i386/i386.c (ix86_conditional_register_usage): Moved
8189         from CONDITIONAL_REGISTER_USAGE; build CLOBBERED_REGS for 64-bit.
8190         (ix86_function_ok_for_sibcall): Tidy.  Disallow MS->SYSV sibcalls.
8191         (ix86_expand_call): Use sibcall_insn_operand when needed.  Don't
8192         force 64-bit sibcalls into R11.
8193         * config/i386/constraints.md (U): New constraint.
8194         * config/i386/i386.md (sibcall_1, sibcall_value_1): Use it.
8195         (sibcall_1_rex64, sibcall_value_1_rex64): Likewise.
8196         (sibcall_1_rex64_v, sibcall_value_1_rex64_v): Remove.
8197
8198 2009-07-08  Shujing Zhao  <pearly.zhao@oracle.com>
8199
8200         * basic-block.h (dump_regset, debug_regset): Remove duplicate
8201         prototypes.
8202         * c-objc-common.h (c_initialize_diagnostics): Ditto.
8203         * ebitmap.h (dump_ebitmap): Ditto.
8204         * optabs.h (optab_libfunc): Ditto.
8205         * tree.h (tree_expr_nonzero_warnv_p): Ditto.
8206         * tree-flow.h (vect_can_force_dr_alignment_p,
8207         get_vectype_for_scalar_type): Ditto.
8208         (vectorize_loops): Move prototype to ...
8209         * tree-vectorizer.h: ... here. Also, adjust comment.
8210         (vect_set_verbosity_level): Remove duplicate prototype.
8211         * tree-ssa-loop.c: Include tree-vectorizer.h.
8212         * Makefile.in (tree-ssa-loop.o): Depend on tree-vectorizer.h.
8213
8214 2009-07-08  Nick Clifton  <nickc@redhat.com>
8215
8216         * config/i386/unix.h (ASM_COMMENT_START): Add a space after the
8217         forward slash.
8218
8219 2009-07-08  DJ Delorie  <dj@redhat.com>
8220
8221         * config/mep/mep-ivc2.cpu (cpmovtocsar0_C3, cpmovtocsar1_C3,
8222         cpmovtocc_C3, cpmovtocsar0_P0S_P1, cpmovtocsar1_P0S_P1,
8223         cpmovtocc_P0S_P1): Mark volatile.  Note which registers are
8224         written to.
8225         * config/mep/intrinsics.md: Regenerated.
8226         * config/mep/mep.c (mep_interrupt_saved_reg): Save IVC2 control
8227         registers when asm() or calls are detected.
8228
8229 2009-07-08  Manuel López-Ibáñez  <manu@gcc.gnu.org>
8230
8231         PR c++/31246
8232         * gimplify.c (gimplify_expr): Propagate no_warning flag when
8233         gimplifying.
8234         * gimple (gimple_build_call_from_tree): Likewise.
8235         * tree-cfg.c (remove_useless_stmts_warn_notreached): Check
8236         no_warning flag before warning.
8237
8238 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
8239
8240         * tree.c (set_expr_locus): Remove.
8241         * tree.h (EXPR_LOCUS,SET_EXPR_LOCUS,set_expr_locus): Remove.
8242         * c-typeck.c (c_finish_stmt_expr):  Replace EXPR_LOCUS by
8243         EXPR_LOCATION.
8244         * gimplify.c (internal_get_tmp_var): Likewise.
8245         (gimplify_call_expr): Likewise.
8246         (gimplify_one_sizepos): Likewise.
8247
8248 2009-07-07  Eric Botcazou  <ebotcazou@adacore.com>
8249
8250         PR debug/40666
8251         * dbxout.c (dbxout_symbol) <PARM_DECL>: Deal with parameters pointing
8252         to variables for debugging purposes.
8253
8254 2009-06-23  Mark Loeser  <mark@halcy0n.com>
8255
8256         PR build/40010
8257         * Makefile.in (gcc.pod): Depend on gcc-vers.texi.
8258
8259 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
8260
8261         * pretty-print.c (pp_base_format): Remove %J.
8262         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
8263         gcc_cxxdiag_char_table): Likewise.
8264         (init_dynamic_diag_info): Likewise.
8265
8266 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
8267
8268         * pretty-print.c (pp_base_format): Remove %H.
8269         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
8270         gcc_cxxdiag_char_table): Likewise.
8271         (init_dynamic_diag_info): Likewise.
8272         * config/mep/mep.c (mep_select_section): Likewise.
8273
8274 2009-07-07  Duncan Sands  <baldrick@free.fr>
8275
8276         * final.c (pass_clean_state): Give the pass a name.
8277         * passes.c (pass_rest_of_compilation): Likewise.
8278         * tree-optimize.c (pass_all_optimizations): Likewise.
8279
8280 2009-07-07  H.J. Lu  <hongjiu.lu@intel.com>
8281
8282         * config/ia64/ia64.c (ia64_handle_model_attribute): Remove
8283         an extra 'decl' for error_at.
8284
8285 2009-07-07  Jakub Jelinek  <jakub@redhat.com>
8286
8287         PR middle-end/40669
8288         * tree-tailcall.c (adjust_return_value_with_ops,
8289         create_tailcall_accumulator): Set DECL_GIMPLE_REG_P on the temporary
8290         if it has complex or vector type.
8291
8292 2009-07-07  Olivier Hainque  <hainque@adacore.com>
8293
8294         * config/alpha/t-osf4 (SHLIB_LINK): Do not hide the dummy weak
8295         pthread symbols.
8296
8297 2009-07-07  Basile Starynkevitch  <basile@starynkevitch.net>
8298
8299         * Makefile.in: added more lists of includes to PLUGIN_HEADERS.
8300
8301 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
8302
8303         * cgraphunit.c: Replace %J by an explicit location.  Update all calls.
8304         * c-decl.c: Likewise.
8305         * function.c: Likewise.
8306         * varasm.c: Likewise.
8307         * tree-ssa.c: Likewise.
8308         * c-common.c: Likewise.
8309         * tree-cfg.c: Likewise.
8310         * config/spu/spu.c: Likewise.
8311         * config/ia64/ia64.c: Likewise.
8312         * config/v850/v850.c: Likewise.
8313
8314 2009-07-06  DJ Delorie  <dj@redhat.com>
8315
8316         * config/mep/mep-core.cpu (fsft, ssarb): Mark as VOLATILE.
8317         * config/mep/mep-ivc2.cpu (many): Add VOLATILE to more insns that make
8318         unspecified accesses to control registers.
8319         * config/mep/intrinsics.md: Regenerate.
8320         * config/mep/intrinsics.h: Regenerate.
8321         * config/mep/mep-intrin.h: Regenerate.
8322
8323 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
8324
8325         * c-lex.c: Replace %H by an explicit location. Update all calls.
8326         * c-common.c: Likewise.
8327         * c-decl.c: Likewise.
8328         * c-typeck.c: Likewise.
8329         * fold-const.c: Likewise.
8330         * gimplify.c: Likewise.
8331         * stmt.c: Likewise.
8332         * tree-cfg.c: Likewise.
8333         * tree-ssa-loop-niter.c: Likewise.
8334         * tree-vrp.c: Likewise.
8335         * value-prof.c: Likewise.
8336
8337 2009-07-06  Diego Novillo  <dnovillo@google.com>
8338
8339         * tree-dfa.c (dump_variable): Write DECL_INITIAL for VAR
8340         if it has one.  Handle cases where VAR does not have an
8341         annotation or cfun is NULL.
8342
8343 2009-07-06  Diego Novillo  <dnovillo@google.com>
8344
8345         * tree.c: Include debug.h.
8346         (initialize_tree_contains_struct): New.
8347         (init_ttree): Call it.
8348         (tree_node_structure_for_code): Factor out of ...
8349         (tree_node_structure): ... here.
8350         * treestruct.def (TS_PHI_NODE): Remove.
8351         (TS_GIMPLE_STATEMENT): Remove.
8352
8353 2009-07-06  Diego Novillo  <dnovillo@google.com>
8354
8355         * tree-pretty-print.c (dump_generic_node): Protect against NULL op0.
8356         (debug_tree_chain): Handle cycles.
8357
8358 2009-07-06  Nick Clifton  <nickc@redhat.com>
8359             DJ Delorie  <dj@redhat.com>
8360
8361         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
8362         __FMOVD_ENABLED__ is defined.
8363         * config/sh/sh.h
8364         (TARGET_FMOVD): Provide a default definition.
8365         (MASK_FMOVD): Likewise.
8366         (TARGET_CPU_CPP_BUILTINS): Define
8367         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
8368         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
8369         two fmov instructions depending upon whether TARGET_FMOVD is enabled.
8370         (split for DF load from memory into register): Also handle
8371         MEMs which consist of REG+DISP addressing.
8372         (split for DF store from register to memory): Likewise.
8373         (movsf_ie): Always use single fp_mode.
8374         * config/sh/sh.c (sh_override_options): Do not automatically
8375         enable TARGET_MOVD for the SH2A when supporting doubles - leave
8376         that to the -mfmovd command line switch.
8377         (broken_move): Do not restrict fldi test to only the SH4 and SH4A.
8378         (fldi_ok): Always allow.
8379         * config/sh/sh.opt (mfmovd): Remove this switch.
8380         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
8381
8382 2009-07-06  J"orn Rennecke  <joern.rennecke@arc.com>
8383             Kaz Kojima  <kkojima@gcc.gnu.org>
8384
8385         PR rtl-optimization/30807
8386         * postreload.c (reload_combine): For every new use of REG_SUM,
8387         record the use of BASE.
8388
8389 2009-07-06  Jan Hubicka  <jh@suse.cz>
8390
8391         * params.def: Revert my accidental commit at 2009-06-30.
8392
8393 2009-07-04  Ian Lance Taylor  <iant@google.com>
8394
8395         PR target/40636
8396         * config/i386/msformat-c.c (mingw_format_attributes): Declare as
8397         EXPORTED_CONST.
8398         (mingw_format_attribute_overrides): Likewise.
8399
8400 2009-07-04  Jakub Jelinek  <jakub@redhat.com>
8401
8402         PR debug/40596
8403         * dwarf2out.c (based_loc_descr): For crtl->stack_realign_tried
8404         don't check cfa.reg.  Instead of cfa.indirect use
8405         fde && fde->drap_reg != INVALID_REGNUM test.
8406
8407 2009-07-04  Eric Botcazou  <ebotcazou@adacore.com>
8408
8409         * postreload.c (reload_combine): Replace CONST_REG with INDEX_REG.
8410
8411 2009-07-03  Vladimir Makarov  <vmakarov@redhat.com>
8412
8413         PR target/40587
8414         * ira.c (build_insn_chain): Use DF_LR_OUT instead of df_get_live_out.
8415
8416 2009-07-03  Richard Guenther  <rguenther@suse.de>
8417
8418         PR tree-optimization/40640
8419         * tree-switch-conversion.c (build_arrays): Perform arithmetic
8420         in original type.
8421
8422 2009-07-03  Jan Hubicka  <jh@suse.cz>
8423
8424         * ipa-inline.c (cgraph_decide_inlining_incrementally): When optimizing
8425         for size, reduce amount of inlining.
8426
8427 2009-07-03  Richard Guenther  <rguenther@suse.de>
8428
8429         PR middle-end/34163
8430         * tree-chrec.c (chrec_convert_1): Fold (T2)(t +- x) to (T2)t +- (T2)x
8431         if t +- x is known to not overflow and the conversion widens the
8432         operation.
8433         * Makefile.in (tree-chrec.o): Add $(FLAGS_H) dependency.
8434
8435 2009-07-03  Jan Hubicka  <jh@suse.cz>
8436
8437         * ipa-pure-const.c (analyze): Update loop optimizer init.
8438         * tree-ssa-loop-iv-canon.c (empty_loop_p, remove_empty_loop,
8439         try_remove_empty_loop, remove_empty_loops): Remove.
8440         * tree-ssa-loop.c (tree_ssa_empty_loop, pass_empty_loop): Remove.
8441         * tree-ssa-dce.c (find_obviously_necessary_stmts): Use finiteness info
8442         to mark regular loops as neccesary.
8443         (degenerate_phi_p): New function.
8444         (propagate_necessity, remove_dead_phis): Use it.
8445         (forward_edge_to_pdom): Likewise.
8446         (eliminate_unnecessary_stmts): Take care to remove uses of results of
8447         virtual PHI nodes that became unreachable.
8448         (perform_tree_ssa_dce): Initialize/deinitialize loop optimizer.
8449         * tree-flow.h (remove_empty_loops): Remove.
8450         * passes.c (init_optimization_passes): Remove.
8451
8452 2009-07-03  Uros Bizjak  <ubizjak@gmail.com>
8453
8454         * config/i386/i386.md (fix_trunc<mode>_fisttp_i387_1): Use
8455         can_create_pseudo_p.
8456         (*fix_trunc<mode>_i387_1): Ditto.
8457         (*floathi<mode>2_1): Ditto.
8458         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): Ditto.
8459         (*fistdi2_1): Ditto.
8460         (*fist<mode>2_1): Ditto.
8461         (frndintxf2_floor): Ditto.
8462         (*fist<mode>2_floor_1): Ditto.
8463         (frndintxf2_ceil): Ditto.
8464         (*fist<mode>2_ceil_1): Ditto.
8465         (frndintxf2_trunc): Ditto.
8466         (frndintxf2_mask_pm): Ditto.
8467         (fxam<mode>2_i387_with_temp): Ditto.
8468         * config/i386/sse.md (mulv16qi3): Ditto.
8469         (*sse2_mulv4si3): Ditto.
8470         (mulv2di3): Ditto.
8471         (sse4_2_pcmpestr): Ditto.
8472         (sse4_2_pcmpistr): Ditto.
8473
8474 2009-07-03  Jan Hubicka  <jh@suse.cz>
8475
8476         * tree-ssa-dce.c (bb_contains_live_stmts): New bitmap.
8477         (mark_stmt_necessary): Set it.
8478         (mark_operand_necessary): Set it.
8479         (mark_control_dependent_edges_necessary): Set it.
8480         (mark_virtual_phi_result_for_renaming): New function.
8481         (get_live_post_dom): New function.
8482         (forward_edge_to_pdom): New function.
8483         (remove_dead_stmt): Fix handling of control dependences.
8484         (tree_dce_init): Init new bitmap.
8485         (tree_dce_done): Free it.
8486
8487 2009-07-02  Richard Guenther  <rguenther@suse.de>
8488
8489         PR bootstrap/40617
8490         * tree-ssa-structalias.c (new_var_info): Initialize
8491         is_restrict_var.
8492
8493 2009-07-02  Jan Hubicka  <jh@suse.cz>
8494
8495         * ipa-pure-const.c (check_op): Use PTA info to see if indirect_ref is
8496         local.
8497
8498 2009-07-02  Paolo Bonzini  <bonzini@gnu.org>
8499
8500         * expmed.c (emit_cstore, emit_store_flag_1): Accept target_mode
8501         instead of recomputing it.  Adjust calls.
8502         (emit_store_flag): Adjust recursive calls.
8503
8504 2009-07-02  Richard Guenther  <rguenther@suse.de>
8505
8506         * tree-ssa-live.c (remove_unused_locals): Do not remove
8507         heap variables.
8508         * tree-ssa-structalias.c (handle_lhs_call): Delay setting
8509         of DECL_EXTERNAL for HEAP variables.
8510         (compute_points_to_sets): Set DECL_EXTERNAL for escaped
8511         HEAP variables.  Do not adjust RESTRICT vars.
8512         (find_what_var_points_to): Nobody cares if something
8513         points to READONLY.
8514
8515 2009-07-02  Ben Elliston  <bje@au.ibm.com>
8516
8517         * unwind-dw2-fde-glibc.c (_Unwind_IteratePhdrCallback): Move
8518         pc_low and pc_high declarations to the top of the function.
8519
8520 2009-07-01  DJ Delorie  <dj@redhat.com>
8521
8522         * config/mep/mep.c (mep_handle_option): Leave IVC2 control
8523         registers as fixed.
8524         (mep_interrupt_saved_reg): Save appropriate IVC2 control registers.
8525         * config/mep/mep-ivc2.cpu: Add VOLATILE to insns that make
8526         unspecified accesses to control registers.
8527         * config/mep/intrinsics.md: Regenerate.
8528         * config/mep/intrinsics.h: Regenerate.
8529         * config/mep/mep-intrin.h: Regenerate.
8530
8531 2009-07-01  Anthony Green  <green@moxielogic.com>
8532
8533         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
8534         instruction when possible.
8535         (moxie_expand_prologue): Ditto.  Also, save an instruction and
8536         some complexity by popping off of $r12 instead of $sp.
8537         * config/moxie/moxie.md (movsi_pop): Don't assume $sp.  Take two
8538         operands.
8539
8540 2009-07-01  Richard Henderson  <rth@redhat.com>
8541
8542         PR bootstrap/40347
8543         * function.c (reposition_prologue_and_epilogue_notes): If epilogue
8544         contained no insns, reposition note before last insn.
8545
8546 2009-07-01  Richard Henderson  <rth@redhat.com>
8547
8548         PR debug/40431
8549         * dwarf2out.c (def_cfa_1): Revert 2009-06-11 change for
8550         DW_CFA_def_cfa_offset and DW_CFA_def_cfa.
8551
8552 2009-07-01  Michael Meissner  <meissner@linux.vnet.ibm.com>
8553
8554         PR bootstrap/40558
8555         * config/rs6000/rs6000.c (print_operand): Undo change that breaks
8556         darwin9 for printing reg addresses with %y.
8557
8558 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
8559
8560         * combine.c (force_to_mode): Handle TRUNCATE.  Factor out
8561         truncation from operands in binary operations.
8562
8563 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
8564
8565         Revert:
8566         2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
8567         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
8568         subreg of op0 to the original op0.
8569
8570         * expmed.c (store_bit_field_1): Use a temporary as the destination
8571         instead of a paradoxical subreg when we need to truncate the result.
8572
8573 2009-07-01  DJ Delorie  <dj@redhat.com>
8574
8575         * config/mep/mep-ivc2.cpu (cmov, cmovc, cmovh): Add intrinsic
8576         names to VLIW variants.
8577         (ivc2rm, ivc2crn): Make data type consistent with non-VLIW variants.
8578         * config/mep/intrinsics.md: Regenerate.
8579         * config/mep/intrinsics.h: Regenerate.
8580         * config/mep/mep-intrin.h: Regenerate.
8581
8582 2009-07-01  Jakub Jelinek  <jakub@redhat.com>
8583
8584         PR debug/40462
8585         * jump.c (returnjump_p): Revert last patch.
8586         * dwarf2out.c (dwarf2out_begin_epilogue): Handle SEQUENCEs.
8587
8588 2009-07-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8589
8590         PR target/40575
8591         * pa.md (casesi32p): Use jump table label to determine the offset
8592         of the jump table.
8593         (casesi64p): Likewise.
8594
8595         * pa.c (forward_branch_p): Return bool type.  Use instruction
8596         addresses when available.  Assert that INSN has a jump label.
8597         (pa_adjust_insn_length): Don't call forward_branch_p if INSN doesn't
8598         have a jump label.
8599
8600 2009-07-01  Richard Guenther  <rguenther@suse.de>
8601
8602         PR tree-optimization/19831
8603         * tree-ssa-dce.c (propagate_necessity): Calls to functions
8604         that only act as barriers do not make any previous stores necessary.
8605         * tree-ssa-structalias.c (handle_lhs_call): Delay making
8606         HEAP variables global, do not add a constraint from nonlocal.
8607         (find_func_aliases): Handle escapes through return statements.
8608         (compute_points_to_sets): Make escaped HEAP variables global.
8609
8610 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
8611
8612         PR bootstrap/40597
8613         * expmed.c (emit_store_flag): Perform a conversion if necessary,
8614         after reducing a DImode cstore to SImode.
8615
8616 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
8617
8618         * expr.c (expand_expr_real_1): Reinstate fallthrough to
8619         TRUTH_ANDIF_EXPR if do_store_flag returns NULL.
8620
8621 2009-07-01  Maciej W. Rozycki  <macro@linux-mips.org>
8622
8623         * config/vax/vax.h (TARGET_BSD_DIVMOD): New macro.  Set to 1.
8624         * config/vax/linux.h (TARGET_BSD_DIVMOD): New macro.  Redefine the
8625         to 0.
8626         * config/vax/vax.c (vax_init_libfuncs): Only redefine udiv_optab
8627         and umod_optab if TARGET_BSD_DIVMOD.
8628         * config/vax/lib1funcs.asm: New file.
8629         * config/vax/t-linux: New file.
8630         * config.gcc (vax-*-linux*): Set tmake_file to vax/t-linux.
8631
8632 2009-06-30  Jakub Jelinek  <jakub@redhat.com>
8633
8634         PR c++/40566
8635         * convert.c (convert_to_integer) <case COND_EXPR>: Don't convert
8636         to type arguments that have void type.
8637
8638         PR debug/40573
8639         * dwarf2out.c (gen_formal_parameter_die): Call
8640         equate_decl_number_to_die if node is different from origin.
8641
8642 2009-06-30  Anthony Green  <green@moxielogic.com>
8643
8644         Clean up moxie port for --enable-build-with-cxx.
8645         * config/moxie/moxie.c (moxie_function_value): First two
8646         parameters are const_tree, not tree.
8647         * config/moxie/moxie.h (enum reg_class): Rename CC_REG to CC_REGS.
8648         (REG_CLASS_NAMES): Ditto.
8649         (REGNO_REG_CLASS): Ditto.
8650         * config/moxie/moxie-protos.h (moxie_override_options): Declare.
8651         (moxie_function_value): Fix constyness of arguments.
8652
8653 2009-06-30  Eric Botcazou  <ebotcazou@adacore.com>
8654
8655         * cgraphunit.c (cgraph_finalize_compilation_unit): Call
8656         finalize_size_functions before further processing.
8657         * stor-layout.c: Include cgraph.h, tree-inline.h and tree-dump.h.
8658         (variable_size): Call self_referential_size on size expressions
8659         that contain a PLACEHOLDER_EXPR.
8660         (size_functions): New static variable.
8661         (copy_self_referential_tree_r): New static function.
8662         (self_referential_size): Likewise.
8663         (finalize_size_functions): New global function.
8664         * tree.c: Include tree-inline.h.
8665         (push_without_duplicates): New static function.
8666         (find_placeholder_in_expr): New global function.
8667         (substitute_in_expr) <tcc_declaration>: Return the replacement object
8668         on equality.
8669         <tcc_expression>: Likewise.
8670         <tcc_vl_exp>: If the replacement object is a constant, try to inline
8671         the call in the expression.
8672         * tree.h (finalize_size_functions): Declare.
8673         (find_placeholder_in_expr): Likewise.
8674         (FIND_PLACEHOLDER_IN_EXPR): New macro.
8675         (substitute_placeholder_in_expr): Update comment.
8676         * tree-inline.c (remap_decl): Do not unshare trees if do_not_unshare
8677         is true.
8678         (copy_tree_body_r): Likewise.
8679         (copy_tree_body): New static function.
8680         (maybe_inline_call_in_expr): New global function.
8681         * tree-inline.h (struct copy_body_data): Add do_not_unshare field.
8682         (maybe_inline_call_in_expr): Declare.
8683         * Makefile.in (tree.o): Depend on TREE_INLINE_H.
8684         (stor-layout.o): Depend on CGRAPH_H, TREE_INLINE_H, TREE_DUMP_H and
8685         GIMPLE_H.
8686
8687 2009-06-30  Richard Guenther  <rguenther@suse.de>
8688
8689         * tree-ssa-dce.c (mark_all_reaching_defs_necessary_1): Always
8690         continue walking.
8691         (propagate_necessity): Do not mark reaching defs of stores
8692         as necessary.
8693
8694 2009-06-30  Jan Hubicka  <jh@suse.cz>
8695
8696         * cfgloopanal.c (check_irred): Move into ...
8697         (mark_irreducible_loops): ... here; return true if ireducible
8698         loops was found.
8699         * ipa-pure-const.c: Include cfgloop.h and tree-scalar-evolution.h
8700         (analyze_function): Try to prove loop finiteness.
8701         * cfgloop.h (mark_irreducible_loops): Update prototype.
8702         * Makefile.in (ipa-pure-const.o): Add dependency on SCEV and CFGLOOP.
8703
8704 2009-06-30  Basile Starynkevitch  <basile@starynkevitch.net>
8705
8706         * Makefile.in (PLUGIN_HEADERS): added ggc, tree-dump, pretty-print.
8707
8708 2009-06-30  Ira Rosen  <irar@il.ibm.com>
8709
8710         PR tree-optimization/40542
8711         * tree-vect-stmts.c (vect_analyze_stmt): Don't vectorize volatile
8712         types.
8713
8714 2009-06-30  Martin Jambor  <mjambor@suse.cz>
8715
8716         PR tree-optimization/40582
8717         * tree-sra.c (build_ref_for_offset_1): Use types_compatible_p rather
8718         than useless_type_conversion_p.
8719         (generate_subtree_copies): Increment sra_stats.subtree_copies at a
8720         proper place.
8721
8722 2009-06-30  Martin Jambor  <mjambor@suse.cz>
8723
8724         PR middle-end/40554
8725         * tree-sra.c (sra_modify_expr): Add access->offset to start_offset.
8726
8727 2009-06-30  Richard Guenther  <rguenther@suse.de>
8728
8729         * tree-ssa-alias.c (walk_aliased_vdefs_1): Change interface to
8730         use ao_ref references.
8731         (walk_aliased_vdefs): Likewise.
8732         * tree-ssa-alias.h (walk_aliased_vdefs): Adjust prototype.
8733         * tree-ssa-dce.c (struct ref_data): Remove.
8734         (mark_aliased_reaching_defs_necessary_1): Use the ao_ref argument.
8735         (mark_aliased_reaching_defs_necessary): Adjust.
8736         (mark_all_reaching_defs_necessary_1): Likewise.
8737
8738 2009-06-30  Paolo Bonzini  <bonzini@gnu.org>
8739
8740         PR boostrap/40597
8741         * expmed.c (emit_cstore): New name of emit_store_flag_1.
8742         (emit_store_flag_1): Extract from emit_store_flag, adjust
8743         calls to (what now is) emit_cstore.
8744         (emit_store_flag): Call emit_store_flag_1 and also use it
8745         for what used to be recursive calls.
8746
8747 2009-06-30  Wei Guozhi  <carrot@google.com>
8748
8749         PR/40416
8750         * tree-ssa-sink.c (statement_sink_location): Stop sinking expression
8751         if the target bb post dominates from bb.
8752         * config/i386/i386.c (memory_address_length): Check existence of base
8753         register before using it.
8754
8755 2009-06-30  Nick Clifton  <nickc@redhat.com>
8756             DJ Delorie  <dj@redhat.com>
8757
8758         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
8759         __FMOVD_ENABLED__ is defined.
8760         * config/sh/sh.h
8761         (TARGET_FMOVD): Provide a default definition.
8762         (MASK_FMOVD): Likewise.
8763         (TARGET_CPU_CPP_BUILTINS): Define
8764         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
8765         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
8766         two fmov instructions depending upon whether TARGET_FMOVD is
8767         enabled.
8768         (split for DF load from memory into register): Also handle
8769         MEMs which consist of REG+DISP addressing.
8770         (split for DF store from register to memory): Likewise.
8771         * config/sh/sh.opt (mfmovd): Remove this switch.
8772         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
8773         * config/sh/sh.c (sh_override_options): Do not automatically
8774         enable TARGET_MOVD for the SH2A when supporting doubles - leave
8775         that to the -mfmovd command line switch.
8776
8777         * config/sh/sh.c (broken_move): Do not restrict fldi test to only
8778         the SH4 and SH4A.
8779         (fldi_ok): Always allow.
8780         * config/sh/sh.md (movsf_ie): Always use single fp_mode.
8781
8782 2009-06-29  DJ Delorie  <dj@redhat.com>
8783
8784         * doc/install.texi (mep-x-elf): Correct chip's full name.
8785
8786 2009-06-29  H.J. Lu  <hongjiu.lu@intel.com>
8787
8788         * doc/extend.texi: Fix typo.
8789
8790 2009-06-29  Tom Tromey  <tromey@redhat.com>
8791
8792         * dwarf2.h: Remove.
8793         * Makefile.in (DWARF2_H): New variable.
8794         (except.o): Use it.
8795         (dwarf2out.o): Likewise.
8796         (dwarf2asm.o): Likewise.
8797         * config/i386/t-i386: Use DWARF2_H.
8798         * except.c: Include elf/dwarf2.h.
8799         * unwind-dw2.c: Include elf/dwarf2.h.
8800         * dwarf2out.c: Include elf/dwarf2.h.
8801         (dw_loc_descr_struct) <dw_loc_opc>: Now a bitfield.
8802         <dtprel>: New field.
8803         (dwarf_stack_op_name): Don't handle INTERNAL_DW_OP_tls_addr.
8804         (size_of_loc_descr): Likewise.
8805         (output_loc_operands_raw): Likewise.
8806         (output_loc_operands): Handle new dtprel field.
8807         (loc_checksum): Update.
8808         (loc_descriptor_from_tree_1) <VAR_DDECL>: Set dtprel field.
8809         * unwind-dw2-fde-glibc.c: Include elf/dwarf2.h.
8810         * unwind-dw2-fde.c: Include elf/dwarf2.h.
8811         * dwarf2asm.c: Include elf/dwarf2.h.
8812         * unwind-dw2-fde-darwin.c: Include elf/dwarf2.h.
8813         * config/mmix/mmix.c: Include elf/dwarf2.h.
8814         * config/rs6000/darwin-fallback.c: Include elf/dwarf2.h.
8815         * config/xtensa/unwind-dw2-xtensa.c: Include elf/dwarf2.h.
8816         * config/sh/sh.c: Include elf/dwarf2.h.
8817         * config/i386/i386.c: Include elf/dwarf2.h.
8818
8819 2009-06-29  DJ Delorie  <dj@redhat.com>
8820
8821         * config/mep/mep.h (CPP_SPEC): Remove __cop macro.
8822
8823         * doc/extend.texi: Add MeP attributes and pragmas.
8824         * doc/invoke.text: Add MeP Options.
8825         * doc/contrib.texi: Add MeP contribution.
8826         * doc/md.texi: Add MeP constraints.
8827         * doc/install.texi: Add MeP target.
8828
8829 2009-06-30  Anatoly Sokolov  <aesok@post.ru>
8830
8831         * target.h (struct gcc_target): Add frame_pointer_required field.
8832         * target-def.h (TARGET_FRAME_POINTER_REQUIRED): New.
8833         (TARGET_INITIALIZER): Use TARGET_FRAME_POINTER_REQUIRED.
8834         * ira.c (setup_eliminable_regset): Use frame_pointer_required target
8835         hook.
8836         * reload1.c (update_eliminables): (Ditto.).
8837         * gcc/system.h (FRAME_POINTER_REQUIRED): Poison.
8838         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
8839         (INITIAL_FRAME_POINTER_OFFSET): (Ditto.).
8840
8841         * config/arc/arc.h (FRAME_POINTER_REQUIRED): Remove macro.
8842
8843         * config/arm/arm.h (FRAME_POINTER_REQUIRED): Remove macro.
8844         * config/arm/arm.c (TARGET_FRAME_POINTER_REQUIRED): Define.
8845         (arm_frame_pointer_required): New function.
8846
8847         * config/avr/avr.h (FRAME_POINTER_REQUIRED): Remove macro.
8848         * config/avr/avr.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
8849         (avr_frame_pointer_required_p): Declare as static.
8850         * config/avr/avr-protos.h (avr_frame_pointer_required_p): Remove.
8851
8852         * config/bfin/bfin.h (FRAME_POINTER_REQUIRED): Remove macro.
8853         * config/bfin/bfin.c (TARGET_FRAME_POINTER_REQUIRED): Define.
8854         (bfin_frame_pointer_required): Make as static, change return type
8855         to bool.
8856         * config/bfin/bfin-protos.h (bfin_frame_pointer_required): Remove.
8857
8858         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Remove macro.
8859         * config/cris/cris.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
8860         (cris_frame_pointer_required): New function.
8861
8862         * config/crx/crx.h (FRAME_POINTER_REQUIRED): Remove macro.
8863
8864         * config/fr30/fr30.h (FRAME_POINTER_REQUIRED): Remove macro.
8865         * config/fr30/fr30.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
8866         (fr30_frame_pointer_required): New function.
8867
8868         * config/frv/frv.h (FRAME_POINTER_REQUIRED): Remove macro.
8869         * config/frv/frv.c (TARGET_FRAME_POINTER_REQUIRED): Define.
8870         (frv_frame_pointer_required): Make as static, change return type
8871         to bool.
8872         * config/bfin/bfin-protos.h (frv_frame_pointer_required): Remove.
8873
8874         * config/i386/i386.h (FRAME_POINTER_REQUIRED): Remove macro.
8875         * config/i386/i386.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
8876         (ix86_frame_pointer_required): Make as static, change return type to
8877         bool.
8878         * config/i386/i386-protos.h (ix86_frame_pointer_required): Remove.
8879
8880         * config/m32c/m32c.h (FRAME_POINTER_REQUIRED): Remove macro.
8881         * config/m32c/m32c.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
8882
8883         * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Remove macro.
8884
8885         * config/mcore/mcore.h (CAN_ELIMINATE): Remove macro.
8886
8887         * config/mep/mep.h (FRAME_POINTER_REQUIRED): Remove macro.
8888
8889         * config/mips/mips.h (FRAME_POINTER_REQUIRED): Remove macro.
8890         * config/mips/mips.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
8891         (mips_frame_pointer_required): Make as static.
8892         * config/mips/mips-protos.h (mips_frame_pointer_required): Remove.
8893
8894         * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Remove macro.
8895         * config/mmix/mmix.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
8896         (mmix_frame_pointer_required): Mew function.
8897
8898         * config/moxie/moxie.h (FRAME_POINTER_REQUIRED): Remove macro.
8899         * config/moxie/moxie.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
8900
8901         * config/pa/pa.h (FRAME_POINTER_REQUIRED): Remove macro.
8902
8903         * config/score/score.h (FRAME_POINTER_REQUIRED): Remove macro.
8904
8905         * config/sh/sh.h (CAN_ELIMINATE): Remove macro.
8906
8907         * config/sparc/sparc.h (FRAME_POINTER_REQUIRED): Remove macro.
8908         (CAN_ELIMINATE): Redefine.
8909         * config/sparc/sparc.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
8910         (sparc_frame_pointer_required): New function.
8911         (sparc_can_eliminate): New function.
8912         * config/sparc/sparc-protos.h (sparc_can_eliminate): Declare.
8913
8914         * config/vax/vax.h (FRAME_POINTER_REQUIRED): Remove macro.
8915         * config/vax/vax.c (TARGET_FRAME_POINTER_REQUIRED): Define.
8916
8917         * config/xtensa/xtensa.h (FRAME_POINTER_REQUIRED): Remove macro.
8918         * config/xtensa/xtensa.c (TARGET_FRAME_POINTER_REQUIRED): Define.
8919         (xtensa_frame_pointer_required): Make as static, change return type
8920         to bool.
8921         * config/xtensa/xtensa-protos.h (xtensa_frame_pointer_required):
8922         Remove.
8923
8924 2009-06-29  Olatunji Ruwase  <tjruwase@google.com>
8925
8926         * doc/plugins.texi: Document PLUGIN_START_UNIT.
8927         * toplev.c (compile_file): Call PLUGIN_START_UNIT.
8928         * gcc-plugin.h (PLUGIN_START_UNIT): Added new event.
8929         * plugin.c (plugin_event_name): Added PLUGIN_START_UNIT.
8930         (register_callback): Handle PLUGIN_START_UNIT.
8931         (invoke_plugin_callbacks): Handle PLUGIN_START_UNIT.
8932
8933 2009-06-29  Eric Botcazou  <ebotcazou@adacore.com>
8934
8935         * tree.c (process_call_operands): Propagate TREE_READONLY from the
8936         operands.
8937         (PROCESS_ARG): Do not clear TREE_READONLY if CONSTANT_CLASS_P.
8938         (build3_stat): Propagate TREE_READONLY for COND_EXPR.
8939
8940 2009-06-29  Daniel Jacobowitz  <dan@codesourcery.com>
8941
8942         * config/arm/arm.h (REGISTER_MOVE_COST): Increase VFP register
8943         move cost.
8944
8945 2009-06-29  Uros Bizjak  <ubizjak@gmail.com>
8946
8947         * doc/extend.texi (Additional Floating Types): __float128 is also
8948         supported on i386 targets.
8949
8950 2009-06-29  Richard Guenther  <rguenther@suse.de>
8951
8952         PR middle-end/14187
8953         * tree-ssa-alias.h (struct pt_solution): Add vars_contains_restrict
8954         flag.
8955         (pt_solutions_same_restrict_base): Declare.
8956         * tree-ssa-structalias.c (struct variable_info): Add is_restrict_var
8957         flag.
8958         (new_var_info): Initialize is_global_var properly for SSA_NAMEs.
8959         (make_constraint_from, make_copy_constraint): Move earlier.
8960         (make_constraint_from_heapvar): New function.
8961         (make_constraint_from_restrict): Likewise.
8962         (handle_lhs_call): Use it.
8963         (find_func_aliases): Use it to track conversions to restrict
8964         qualified pointers.
8965         (struct fieldoff): Add only_restrict_pointers flag.
8966         (push_fields_onto_fieldstack): Initialize it.
8967         (create_variable_info_for): Track global restrict qualified pointers.
8968         (intra_create_variable_infos): Use make_constraint_from_heapvar.
8969         Track restrict qualified pointer arguments.
8970         (set_uids_in_ptset): Use varinfo is_global_var flag.
8971         (find_what_var_points_to): Set the vars_contains_restrict flag.
8972         Always create the points-to solution for sets including restrict tags.
8973         (pt_solutions_same_restrict_base): New function.
8974         * tree-ssa-alias.c (ptr_derefs_may_alias_p): For two restrict
8975         qualified pointers use pt_solutions_same_restrict_base as
8976         additional source for disambiguation.
8977
8978 2009-06-29  Richard Guenther  <rguenther@suse.de>
8979
8980         PR middle-end/38212
8981         * alias.c (find_base_decl): Remove.
8982         (get_deref_alias_set_1): Remove restrict handling.
8983         * c-common.c (c_apply_type_quals_to_decl): Do not set
8984         DECL_POINTER_ALIAS_SET.
8985         * gimplify.c (find_single_pointer_decl_1): Remove.
8986         (find_single_pointer_decl): Likewise.
8987         (internal_get_tmp_var): Remove restrict handling.
8988         (gimple_regimplify_operands): Likewise.
8989         * omp-low.c (expand_omp_atomic_pipeline): Do not set
8990         DECL_POINTER_ALIAS_SET. Use ref-all pointers.
8991         * print-tree.c (print_node): Do not print DECL_POINTER_ALIAS_SET.
8992         * tree.c (restrict_base_for_decl): Remove.
8993         (init_ttree): Do not allocate it.
8994         (make_node_stat): Do not set DECL_POINTER_ALIAS_SET.  Set
8995         LABEL_DECL_UID for label decls.
8996         (copy_node_stat): Do not copy restrict information.
8997         (decl_restrict_base_lookup): Remove.
8998         (decl_restrict_base_insert): Likewise.
8999         (print_restrict_base_statistics): Likewise.
9000         (dump_tree_statistics): Do not call print_restrict_base_statistics.
9001         * tree.h (DECL_POINTER_ALIAS_SET): Remove.
9002         (DECL_POINTER_ALIAS_SET_KNOWN_P): Likewise.
9003         (struct tree_decl_common): Rename pointer_alias_set to label_decl_uid.
9004         (LABEL_DECL_UID): Adjust.
9005         (DECL_BASED_ON_RESTRICT_P): Remove.
9006         (DECL_GET_RESTRICT_BASE): Likewise.
9007         (SET_DECL_RESTRICT_BASE): Likewise.
9008         (struct tree_decl_with_vis): Remove based_on_restrict_p flag.
9009
9010         * config/i386/i386.c (ix86_gimplify_va_arg): Use ref-all pointers
9011         instead of DECL_POINTER_ALIAS_SET.
9012         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
9013         * config/s390/s390.c (s390_gimplify_va_arg): Likewise.
9014         * config/spu/spu.c (spu_gimplify_va_arg_expr): Likewise.
9015
9016 2009-06-29  Richard Guenther  <rguenther@suse.de>
9017
9018         PR tree-optimization/40579
9019         * tree-vrp.c (vrp_evaluate_conditional): Bail out early if
9020         the IL to simplify has constants that overflowed.
9021
9022 2009-06-28  Uros Bizjak  <ubizjak@gmail.com>
9023
9024         PR tree-optimization/40550
9025         * tree-vect-generic.c (expand_vector_operations_1): Compute in
9026         vector_compute_type only when the size of vector_compute_type is
9027         less than the size of type.
9028
9029 2009-06-28  Eric Botcazou  <ebotcazou@adacore.com>
9030
9031         * fold-const.c (contains_label_1): Fix comments.
9032         (contains_label_p): Do not walk trees multiple time.
9033
9034 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
9035
9036         * config/i386/i386.h (enum ix86_fpcmp_strategy): New.
9037         * config/i386/i386.md (cbranchxf4, cstorexf4, cbranch<MODEF>4,
9038         cstore<MODEF>4, mov<X87MODEF>cc): Change predicate to
9039         ix86_fp_comparison_operator.
9040         (*fp_jcc_1_mixed, *fp_jcc_1_sse, *fp_jcc_1_387, *fp_jcc_2_mixed,
9041         *fp_jcc_2_sse, *fp_jcc_2_387): Delete
9042         (*fp_jcc_3_387, *fp_jcc_4_387, *fp_jcc_5_387, *fp_jcc_6_387,
9043         *fp_jcc_7_387, *fp_jcc_8<MODEF>_387): Eliminate call to
9044         !ix86_use_fcomi_compare, change ix86_fp_jump_nontrivial_p call
9045         to !TARGET_CMOVE, change predicate to ix86_fp_comparison_operator.
9046         (related splits): Change predicate to ix86_fp_comparison_operator.
9047         * config/i386/predicates.md: Use ix86_trivial_fp_comparison_operator
9048         instead of ix86_fp_comparison_codes.
9049         (ix86_trivial_fp_comparison_operator,
9050         ix86_fp_comparison_operator): New.
9051         * config/i386/i386-protos.h (ix86_fp_comparison_strategy): New.
9052         (ix86_expand_compare): Eliminate last two parameters.
9053         (ix86_fp_jump_nontrivial_p): Kill.
9054         * config/i386/i386.c (put_condition_code): Eliminate call to
9055         ix86_fp_comparison_codes and subsequent assertion.
9056         (ix86_fp_comparison_codes): Eliminate.
9057         (ix86_fp_swap_condition): New.
9058         (ix86_fp_comparison_arithmetics_cost, ix86_fp_comparison_fcomi_cost,
9059         ix86_fp_comparison_sahf_cost, ix86_use_fcomi_compare): Consolidate
9060         into ix86_fp_comparison_cost and ix86_fp_comparison_strategy.
9061         (ix86_prepare_fp_compare_args): Use ix86_fp_comparison_strategy
9062         and ix86_fp_swap_condition.
9063         (ix86_expand_fp_compare): Eliminate code for second jump/bypass jump.
9064         Use ix86_fp_comparison_strategy.
9065         (ix86_expand_compare): Likewise.  Eliminate last two arguments.
9066         (ix86_fp_jump_nontrivial_p): Eliminate.
9067         (ix86_expand_branch): Treat SFmode/DFmode/XFmode as simple.  Adjust
9068         call to ix86_expand_compare.
9069         (ix86_split_fp_branch, ix86_expand_setcc,
9070         ix86_expand_carry_flag_compare, ix86_expand_int_movcc,
9071         ix86_expand_fp_movcc): Eliminate code for second jump/bypass jump.
9072
9073 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
9074
9075         * config/arm/arm.c (arm_final_prescan_ins): Eliminate code
9076         related to jump_clobbers.
9077         * config/arm/arm.md (conds): Remove jump_clob case.
9078         (addsi3_cbranch, addsi3_cbranch_scratch, subsi3_cbranch, two
9079         splits): Change comparison_operator to arm_comparison_operator.
9080         (*arm_buneq, *arm_bltgt, *arm_buneq_reversed, *arm_bltgt_reversed):
9081         Eliminate.
9082
9083 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
9084
9085         * dojump.c (do_compare_rtx_and_jump): Try swapping the
9086         condition for floating point modes.
9087         * expmed.c (emit_store_flag_1): Move here a bigger part
9088         of emit_store_flag.
9089         (emit_store_flag): Try swapping the condition for floating point
9090         modes.
9091         * optabs.c (emit_cmp_and_jump_insns): Cope with constant op0 better.
9092
9093 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
9094
9095         * expr.c (expand_expr_real_1): Just use do_store_flag.
9096         (do_store_flag): Drop support for TRUTH_NOT_EXPR.  Use
9097         emit_store_flag_force.
9098         * expmed.c (emit_store_flag_force): Copy here trick
9099         previously in expand_expr_real_1.  Try reversing the comparison.
9100         (emit_store_flag_1): Work if target is NULL.
9101         (emit_store_flag): Work if target is NULL, using the result mode
9102         from the comparison.  Use split_comparison, restructure final part
9103         to simplify conditionals.
9104
9105 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
9106
9107         * builtins.c (expand_errno_check): Use do_compare_rtx_and_jump.
9108         * dojump.c (do_jump): Change handling of floating-point
9109         ops to use just do_compare_and_jump.
9110         (split_comparison): New.
9111         (do_compare_rtx_and_jump): Add here logic coming previously
9112         in do_jump, using split_comparison.
9113
9114 2009-06-27  H.J. Lu  <hongjiu.lu@intel.com>
9115
9116         PR target/40489
9117         * config/ia64/ia64.c (ia64_reorg): Check NULL insn.
9118
9119 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
9120
9121         * tree-ssa-alias.c: Fix unintentional commit.
9122
9123 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
9124
9125         * passes.c (execute_one_pass): Fix unintentional commit.
9126
9127 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
9128
9129         * df-problems.c (df_set_seen, df_unset_seen): Delete.
9130         (df_rd_local_compute, df_md_local_compute): Inline them.
9131
9132         (df_md_scratch): New.
9133         (df_md_alloc, df_md_free): Allocate/free it.
9134         (df_md_local_compute): Only include live registers in init.
9135         (df_md_transfer_function): Prune the in-set computed by
9136         the confluence function, and the gen-set too.
9137
9138 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
9139
9140         PR rtl-optimization/26854
9141         * timevar.def: Remove TV_DF_RU, add TV_DF_MD.
9142         * df-problems.c (df_rd_add_problem): Fix comment.
9143         (df_md_set_bb_info, df_md_free_bb_info, df_md_alloc,
9144         df_md_simulate_artificial_defs_at_top,
9145         df_md_simulate_one_insn, df_md_bb_local_compute_process_def,
9146         df_md_bb_local_compute, df_md_local_compute, df_md_reset,
9147         df_md_transfer_function, df_md_init, df_md_confluence_0,
9148         df_md_confluence_n, df_md_free, df_md_top_dump, df_md_bottom_dump,
9149         problem_MD, df_md_add_problem): New.
9150         * df.h (DF_MD, DF_MD_BB_INFO, struct df_md_bb_info, df_md,
9151         df_md_get_bb_info): New.
9152         (DF_LAST_PROBLEM_PLUS1): Adjust.
9153
9154         * Makefile.in (fwprop.o): Include domwalk.h.
9155         * fwprop.c: Include domwalk.h.
9156         (reg_defs, reg_defs_stack): New.
9157         (bitmap_only_bit_between): Remove.
9158         (process_defs): New.
9159         (process_uses): Use reg_defs and local_md instead of
9160         bitmap_only_bit_between and local_rd.
9161         (single_def_use_enter_block): New, from build_single_def_use_links.
9162         (single_def_use_leave_block): New.
9163         (build_single_def_use_links): Remove code moved to
9164         single_def_use_enter_block, invoke domwalk.
9165         (use_killed_between): Adjust comment.
9166
9167 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
9168
9169         * bitmap.h (bitmap_ior_and_into): New.
9170         * bitmap.c (bitmap_ior_and_into): New.
9171
9172 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
9173
9174         * domwalk.h (struct dom_walk_data): Remove all callbacks except
9175         before_dom_children_before_stmts and after_dom_children_after_stmts.
9176         Rename the two remaining callbacks to just before_dom_children and
9177         after_dom_children. Remove other GIMPLE statement walking bits.
9178         * domwalk.c (walk_dominator_tree): Remove now unsupported features.
9179         * graphite.c: Do not include domwalk.h.
9180         * tree-into-ssa.c (interesting_blocks): New global.
9181         (struct mark_def_sites_global_data): Remove it and names_to_rename.
9182         (mark_def_sites, rewrite_stmt, rewrite_add_phi_arguments,
9183         rewrite_update_stmt, rewrite_update_phi_arguments): Simplify
9184         now that they're not domwalk callbacks.
9185         (rewrite_initialize_block): Rename to...
9186         (rewrite_enter_block): ... this, place after called functions.  Test
9187         interesting_blocks, call rewrite_stmt and rewrite_add_phi_arguments.
9188         (rewrite_finalize_block): Rename to...
9189         (rewrite_leave_block): ... this, place after called functions.
9190         (rewrite_update_init_block): Rename to...
9191         (rewrite_update_enter_block): ... this, place after called functions.
9192         Test interesting_blocks, call rewrite_update_stmt and
9193         rewrite_update_phi_arguments.
9194         (rewrite_update_fini_block): Rename to...
9195         (rewrite_leave_block): ... this, place after called functions.
9196         (rewrite_blocks): Remove last argument, simplify initialization of
9197         walk_data.
9198         (mark_def_sites_initialize_block): Rename to...
9199         (mark_def_sites_block): ... this, call mark_def_sites.
9200         (mark_def_sites_blocks): Remove argument, simplify initialization of
9201         walk_data.
9202         (rewrite_into_ssa): Adjust for interesting_blocks_being a global.
9203         (update_ssa): Likewise.
9204         * tree-ssa-dom.c (optimize_stmt): Simplify now that it's not a domwalk
9205         callback.
9206         (tree_ssa_dominator_optimize): Simplify initialization of walk_data.
9207         (dom_opt_initialize_block): Rename to...
9208         (dom_opt_enter_block): ... this, place after called functions.  Walk
9209         statements here, inline propagate_to_outgoing_edges.
9210         (dom_opt_finalize_block): Rename to...
9211         (dom_opt_leave_block): ... this, place after called functions.
9212         * tree-ssa-dse.c (dse_optimize_stmt): Simplify now that it's not a
9213         domwalk callback.
9214         (dse_enter_block, dse_record_phi): New.
9215         (dse_record_phis): Delete.
9216         (dse_finalize_block): Rename to...
9217         (dse_leave_block): ... this.
9218         (tree_ssa_dse): Simplify initialization of walk_data.
9219         * tree-ssa-loop-im.c (determine_invariantness, move_computations):
9220         Adjust initialization of walk_data.
9221         * tree-ssa-loop-unswitch.c: Do not include domwalk.h.
9222         * tree-ssa-loop-phiopt.c (get_non_trapping):
9223         Adjust initialization of walk_data.
9224         * tree-ssa-loop-threadedge.c: Do not include domwalk.h.
9225         * tree-ssa-uncprop.c (uncprop_into_successor_phis): Simplify now that
9226         it's not a domwalk callback.
9227         (uncprop_initialize_block): Rename to...
9228         (dse_enter_block): ... this, call uncprop_into_successor_phis.
9229         (dse_finalize_block): Rename to...
9230         (dse_leave_block): ... this.
9231         (tree_ssa_uncprop): Simplify initialization of walk_data.
9232         * Makefile.in: Adjust dependencies.
9233
9234 2009-06-27  Richard Earnshaw  <rearnsha@arm.com>
9235
9236         * arm.md (casesi): Fix test for Thumb1.
9237         (thumb1_casesi_internal_pic): Likewise.
9238         (thumb1_casesi_dispatch): Likewise.
9239
9240 2009-06-26  Daniel Gutson  <dgutson@codesourcery.com>
9241
9242         * config/arm/arm-cores.def: Added core cortex-m0.
9243         * config/arm/arm-tune.md: Regenerated.
9244         * doc/invoke.texi: Added entry for cpu ARM Cortex-M0.
9245
9246 2009-06-26  DJ Delorie  <dj@redhat.com>
9247
9248         * config/mep/mep.opt (mfar): Remove -mfar as it doesn't do anything.
9249
9250         * config/mep/mep.c (mep_bundle_insns): Account for the fact that
9251         the scheduler doesn't tag jump insns.
9252
9253 2009-06-26  H.J. Lu  <hongjiu.lu@intel.com>
9254
9255         * c-decl.c (merge_decls): Re-indent.
9256
9257 2009-06-26  Janis Johnson  <janis187@us.ibm.com>
9258
9259         PR c/39902
9260         * tree.c (real_zerop, real_onep, real_twop, real_minus_onep):
9261         Special-case decimal float constants.
9262
9263 2009-06-26  Richard Henderson  <rth@redhat.com>
9264
9265         * function.h (struct function): Add cannot_be_copied_reason,
9266         and cannot_be_copied_set.
9267         * tree-inline.c (has_label_address_in_static_1): Rename from
9268         inline_forbidden_p_2; don't set inline_forbidden_reason here.
9269         (cannot_copy_type_1): Rename from inline_forbidden_p_op; likewise
9270         don't set inline_forbidden_reason.
9271         (copy_forbidden): New function, split out of inline_forbidden_p.
9272         (inline_forbidden_p_stmt): Don't check for nonlocal labels here.
9273         (inline_forbidden_p): Use copy_forbidden.
9274         (tree_versionable_function_p): Likewise.
9275         (inlinable_function_p): Merge into tree_inlinable_function_p.
9276         (tree_function_versioning): Remap cfun->nonlocal_goto_save_area.
9277         * ipa-cp.c (ipcp_versionable_function_p): New function.
9278         (ipcp_cloning_candidate_p): Use it.
9279         (ipcp_node_modifiable_p): Likewise.
9280
9281 2009-06-26  Olatunji Ruwase  <tjruwase@google.com>
9282
9283         * builtins.c (expand_builtin_alloca): Handle builtin alloca
9284         that is marked not to be inlined. Remove flag_mudflap use.
9285         * tree-mudflap.c: Rename mf_xform_derefs to mf_xfrom_statements.
9286         (mf_xform_statements): Mark builtin alloca calls as un-inlineable.
9287
9288 2009-06-26  Steve Ellcey  <sje@cup.hp.com>
9289
9290         PR bootstrap/40338
9291         * config/pa/t-pa-hpux10 (TARGET_LIBGCC2_CFLAGS): Add -frandom-seed.
9292         * config/pa/t-pa-hpux11 (TARGET_LIBGCC2_CFLAGS): Ditto.
9293
9294 2009-06-26  Kai Tietz  <kai.tietz@onevision.com>
9295
9296         * config/i386/mingw-tls.c (__mingwthr_key_dtor): Remove for none
9297         shared libgcc.
9298         (__mingwthr_remove_key_dtor): Likewise.
9299
9300 2009-06-26  Richard Guenther  <rguenther@suse.de>
9301
9302         * tree-ssa-structalias.c (do_ds_constraint): Simplify escape handling.
9303
9304 2009-06-26  Steven Bosscher  <steven@gcc.gnu.org>
9305
9306         PR middle-end/40525
9307         * ifcvt.c (dead_or_predicable): If predicating MERGE_BB fails,
9308         try the non-cond_exec path also.
9309
9310 2009-06-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
9311
9312         PR target/40468
9313         * pa.c (branch_to_delay_slot_p, branch_needs_nop_p): New functions.
9314         (output_cbranch): Use new functions.
9315         (output_lbranch, output_bb, output_bvb, output_dbra, output_movb):
9316         Likewise.
9317
9318 2009-06-25  Michael Meissner  <meissner@linux.vnet.ibm.com>
9319             Pat Haugen  <pthaugen@us.ibm.com>
9320             Revital Eres <ERES@il.ibm.com>
9321
9322         * config/rs6000/rs6000.c (print_operand): Correct lossage message
9323         for %c error.  Add %x support to print VSX registers as a unified
9324         register set, instead of separate float and altivec registers.
9325         Switch to use VECTOR_MEM_ALTIVEC_P instead of TARGET_ALTIVEC for
9326         %y case, and add support for VSX pre-modify addresses.
9327         (output_toc): Add assert for CONST containing an integer constant
9328         in the PLUS case.
9329         (rs6000_adjust_cost): Add POWER7 support.
9330         (insn_must_be_first_in_group): Ditto.
9331         (insn_must_be_last_in_group): Ditto.
9332         (rs6000_emit_popcount): Ditto.
9333         (rs6000_vector_mode_supported_p): Ditto.
9334
9335         * config/rs6000/rs6000-protos.h (rs6000_secondary_reload_class):
9336         Change some of the functions called by macros to being called
9337         through a pointer, so debug functions can be inserted if
9338         -mdebug=addr or -mdebug=cost.
9339         (rs6000_preferred_reload_class_ptr): Ditto.
9340         (rs6000_secondary_reload_class_ptr): Ditto.
9341         (rs6000_secondary_memory_needed_ptr): Ditto.
9342         (rs6000_cannot_change_mode_class_ptr): Ditto.
9343         (rs6000_secondary_reload_inner): Ditto.
9344         (rs6000_legitimize_reload_address): Ditto.
9345         (rs6000_legitimize_reload_address_ptr): Ditto.
9346         (rs6000_mode_dependent_address): Ditto.
9347         (rs6000_mode_dependent_address_ptr): Ditto.
9348
9349         * config/rs6000/rs6000.c (reg_offset_addressing_ok_p): New
9350         function to return true if the mode allows reg + integer
9351         addresses.
9352         (virtual_stack_registers_memory_p): New function to return true if
9353         the address refers to a virtual stack register.
9354         (rs6000_legitimate_offset_address_p): Move code to say whether a
9355         mode supports reg+int addressing to reg_offset_addressing_ok_p and
9356         call it.
9357         (rs6000_legitimate_address_p): Add checks for modes that only can
9358         do reg+reg addressing.  Start adding VSX support.
9359         (rs6000_legitimize_reload_address): Ditto.
9360         (rs6000_legitimize_address): Ditto.
9361         (rs6000_debug_legitimate_address_p): New debug functions for
9362         -mdebug=addr and -mdebug=cost.
9363         (rs6000_debug_rtx_costs): Ditto.
9364         (rs6000_debug_address_costs): Ditto.
9365         (rs6000_debug_adjust_cost): Ditto.
9366         (rs6000_debug_legitimize_address): Ditto.
9367         (rs6000_legitimize_reload_address_ptr): Point to call normal
9368         function or debug function.  Make functions called via pointer
9369         static.
9370         (rs6000_mode_dependent_address_ptr): Ditto.
9371         (rs6000_secondary_reload_class_ptr): Ditto.
9372         (rs6000_hard_regno_mode_ok): Add preliminary VSX support.
9373         (rs6000_emit_move): Add -mdebug=addr support.  Change an abort
9374         into a friendlier error.
9375         (rs6000_init_builtins): Add initial VSX support.
9376         (rs6000_adjust_cost): Fix some spacing issues.
9377
9378         * config/rs6000/rs6000.h (enum reg_class): Add VSX_REGS.
9379         (REG_CLASS_NAMES): Ditto.
9380         (REG_CLASS_CONTENTS): Ditto.
9381         (PREFERRED_RELOAD_CLASS): Move from a macro to calling through a
9382         pointer, to add -mdebug=addr support.
9383         (CANNOT_CHANGE_MODE_CLASS): Ditto.
9384         (SECONDARY_RELOAD_CLASS): Call through a pointer to add
9385         -mdebug=addr support.
9386         (LEGITIMIZE_RELOAD_ADDRESS): Ditto.
9387         (GO_IF_MODE_DEPENDENT_ADDRESS): Ditto.
9388         (enum rs6000_builtins): Add RS6000_BUILTIN_BSWAP_HI.
9389
9390         * config/rs6000/rs6000.md (bswaphi*): Add support for swapping
9391         16-bit values.
9392         (bswapsi*): Set attribute types for load/store.  Add combiner
9393         patterns to eliminate zero extend on 64-bit.
9394         (bswapdi*): Add support for swapping 64-bit values.  Use ldbrx and
9395         stdbrx if the hardware supports those instructions.
9396
9397 2009-06-25  Ian Lance Taylor  <iant@google.com>
9398
9399         * doc/invoke.texi (Option Summary): Mention -static-libstdc++.
9400         (Link Options): Document -static-libstdc++.
9401
9402 2009-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9403
9404         PR target/38731
9405         * config/rs6000/rs6000.c (LOCAL_ALIGNMENT): Redefine to just use
9406         DATA_ALIGNMENT instead.
9407
9408 2009-06-25  Richard Guenther  <rguenther@suse.de>
9409
9410         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Disambiguate
9411         indirect references against the callused/escaped solutions.
9412         (call_may_clobber_ref_p_1): Likewise.
9413
9414 2009-06-25  Martin Jambor  <mjambor@suse.cz>
9415
9416         PR tree-optimization/40493
9417         * tree-sra.c (sra_modify_expr): Correct BIT_FIELD_REF argument numbers.
9418         (enum unscalarized_data_handling): New type.
9419         (handle_unscalarized_data_in_subtree): Return what has been done.
9420         (load_assign_lhs_subreplacements): Handle left flushes differently.
9421         (sra_modify_assign): Use unscalarized_data_handling, simplified
9422         condition determining whether to remove the statement.
9423
9424 2009-06-25  Basile Starynkevitch  <basile@starynkevitch.net>
9425
9426         * doc/plugins.texi (Building GCC plugins): Correct typo in Makefile
9427         excerpt - @ should be doubled for texinfo.
9428
9429 2009-06-24  Ian Lance Taylor  <iant@google.com>
9430
9431         * config/arc/arc.c: Include "df.h".
9432         (arc_attribute_table): Make static.  Move higher in file.
9433         (arc_address_cost): Call SMALL_INT on INTVAL, not rtx.
9434         (output_shift): Initialize n later to avoid warning.
9435         * config/arm/arm.c (arm_attribute_table): Make static.  Move
9436         higher in file.
9437         * config/avr/avr.c (avr_attribute_table): Make static.  Move
9438         higher in file.
9439         (reg_class_tab): Change array type from int to enum reg_class.
9440         (avr_jump_mode): Change GET_MODE to GET_CODE when checking for
9441         LABEL_REF.
9442         (out_tsthi, ashlhi3_out): Don't use AS2 with "or" or "and".
9443         (lshrhi3_out): Likewise.
9444         (class_likely_spilled_p): Change return type to bool.
9445         (avr_rtx_costs): Use local code variable with enum type.
9446         * config/avr/avr.md (movmemhi): Use add_reg_note.
9447         (andhi3, andsi3): Don't use AS2 with "and".
9448         (iorhi3, iorsi3): Don't use AS2 with "or".
9449         * config/avr/avr-protos.h (class_likely_spilled_p): Update declaration.
9450         * config/crx/crx.c: Include "df.h".
9451         (crx_attribute_table): Make static.
9452         * config/m32r/m32r.c: Include "df.h".
9453         (m32r_attribute_table): Make static.  Move higher in file.
9454         (pop): Use add_reg_note.
9455         (block_move_call): Change 0 to LCT_NORMAL in function call.
9456         * config/m32r/m32r.md (movsi_insn): Remove unused local value.
9457         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Likewise.
9458         * config/m32r/m32r-protos.h (m32r_compute_function_type): Always
9459         declare, not just when TREE_CODE is defined.
9460         * config/m68hc11/m68hc11.c: Include "expr.h".
9461         (m68hc11_attribute_table): Make static.  Move higher in file.
9462         (m68hc11_small_indexed_indirect_p): Change 0 to VOIDmode in
9463         function call.
9464         (m68hc11_register_indirect_p): Likewise.
9465         (m68hc11_function_arg_padding): Change return type to enum
9466         direction.
9467         (emit_move_after_reload): Use add_reg_note.
9468         (m68hc11_emit_logical): Change code parameter to enum rtx_code.
9469         (m68hc11_split_logical): Likewise.
9470         (m68hc11_rtx_costs): Add local code_and outer_code variables with
9471         enum type.
9472         * config/m68hc11/predicates.md (reg_or_some_mem_operand): Change 0
9473         to VOIDmode in function call.
9474         * config/m68hc11/m68hc11-protos.h: Don't check TREE_CODE to see if
9475         tree is defined.
9476         (m68hc11_split_logical): Update declaration.
9477         (m68hc11_function_arg_padding): Update declaration.
9478         * config/mcore/mcore.c (regno_reg_class): Change form array of int
9479         to array of enum reg_class.
9480         (mcore_attribute_table): Make static.  Move higher in file.
9481         (mcore_rtx_costs): Add cast to enum type.
9482         * config/mcore/mcore.h (regno_reg_class): Update declaration.
9483         (GO_IF_LEGITIMATE_INDEX): Add cast to avoid warning.
9484         * config/sh/sh.c (sh_attribute_table): Make static.  Move higher
9485         in file.
9486         * config/sh/predicates.md (trapping_target_operand): Rename and to
9487         and_expr.
9488         * config/sparc/sparc.c (sparc_attribute_table): Make static.  Move
9489         higher in file.
9490         * config/spu/spu.c (spu_attribute_table): Make static.  Move
9491         higher in file.
9492         * config/v850/v850.c (v850_attribute_table): Make static.  Move
9493         higher in file.
9494         (v850_rtx_costs): Use local code with enum type.
9495         (expand_epilogue): Add cast.
9496         * config/v850/v850-c.c (ghs_pragma_section): Initialize repeat.
9497
9498 2009-06-23  Takashi YOSHII  <yoshii.takashi@renesas.com>
9499
9500         PR target/40515
9501         * doc/invoke.texi (SH Options): Document -m2a, -m2a-single,
9502         -m2a-single-only and -m2a-nofpu.
9503         * config/sh/sh.opt: Document m2a generates FPU code.
9504
9505 2009-06-24  Anatoly Sokolov  <aesok@post.ru>
9506
9507         * defaults.h (CAN_ELIMINATE): Provide default.
9508         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
9509         * config/alpha/alpha.h (CAN_ELIMINATE): Delete.
9510         * config/m32c/m32c.h (CAN_ELIMINATE): Delete.
9511         * config/spu/spu.h (CAN_ELIMINATE): Delete.
9512         * config/xtensa/xtensa.h (CAN_ELIMINATE): Delete.
9513         * config/moxie/moxie.h (CAN_ELIMINATE): Delete.
9514         * config/cris/cris.h (CAN_ELIMINATE): Delete.
9515         * config/mn10300/mn10300.h (CAN_ELIMINATE): Delete.
9516         * config/pa/pa64-linux.h (CAN_ELIMINATE): Delete.
9517         * config/mmix/mmix.h (CAN_ELIMINATE): Delete.
9518
9519 2009-06-24  DJ Delorie  <dj@redhat.com>
9520
9521         * mep-ext-cop.cpu: Fix copyright notice.
9522         * mep-default: Fix copyright notice.
9523         * mep-core: Fix copyright notice.
9524         * mep: Fix copyright notice.
9525         * mep-ivc2: Fix copyright notice.
9526         * mep-c5: Fix copyright notice.
9527
9528 2009-06-24  Denis Chertykov  <chertykov@gmail.com>
9529
9530         * doc/contrib.texi (Contributors):
9531
9532 2009-06-24  Andreas Krebbel  <krebbel1@de.ibm.com>
9533
9534         PR middle-end/40501
9535         * tree-ssa-math-opts.c (execute_optimize_bswap): Convert the bswap
9536         src and dst operands if necessary.
9537
9538 2009-06-23  DJ Delorie  <dj@redhat.com>
9539
9540         Add MeP port.
9541         * config.gcc: Add mep support.
9542         * recog.c: Resurrect validate_replace_rtx_subexp().
9543         * recog.h: Likewise.
9544         * config/mep/: Add new port:
9545         * config/mep/constraints.md: New file.
9546         * config/mep/default.h: New file.
9547         * config/mep/intrinsics.h: New file.
9548         * config/mep/intrinsics.md: New file.
9549         * config/mep/ivc2-template.h: New file.
9550         * config/mep/mep-c5.cpu: New file.
9551         * config/mep/mep-core.cpu: New file.
9552         * config/mep/mep-default.cpu: New file.
9553         * config/mep/mep-ext-cop.cpu: New file.
9554         * config/mep/mep-intrin.h: New file.
9555         * config/mep/mep-ivc2.cpu: New file.
9556         * config/mep/mep-lib1.asm: New file.
9557         * config/mep/mep-lib2.c: New file.
9558         * config/mep/mep-pragma.c: New file.
9559         * config/mep/mep-protos.h: New file.
9560         * config/mep/mep-tramp.c: New file.
9561         * config/mep/mep.c: New file.
9562         * config/mep/mep.cpu: New file.
9563         * config/mep/mep.h: New file.
9564         * config/mep/mep.md: New file.
9565         * config/mep/mep.opt: New file.
9566         * config/mep/predicates.md: New file.
9567         * config/mep/t-mep: New file.
9568
9569 2009-06-23  Ian Lance Taylor  <iant@google.com>
9570
9571         * configure.ac: Invoke AC_PROG_CXX.  Separate C specific warnings
9572         from loose_warn into c_loose_warn and from strict_warn into
9573         c_strict_warn.  Set and substitute warn_cxxflags.  Check for
9574         --enable-build-with-cxx.  Set and substitute
9575         ENABLE_BUILD_WITH_CXX.  Set and substitute HOST_LIBS.
9576         * Makefile.in (CXXFLAGS): New variable.
9577         (C_LOOSE_WARN, C_STRICT_WARN): New variables.
9578         (GCC_WARN_CFLAGS): Add $(C_LOOSE_WARN).  Add $(C_STRICT_WARN) if
9579         the default is the same as $(STRICT_WARN).
9580         (GCC_WARN_CXXFLAGS, WARN_CXXFLAGS): New variables.
9581         (CXX): New variable.
9582         (COMPILER): New value if ENABLE_BUILD_WITH_CXX.
9583         (COMPILER_FLAGS, LINKER, LINKER_FLAGS): Likewise.
9584         (ALL_COMPILERFLAGS, ALL_LINKERFLAGS): Likewise.
9585         (HOST_LIBS): New variable.
9586         (GCC_CFLAGS): Add $(C_LOOSE_WARN).
9587         (ALL_CXXFLAGS): New variable.
9588         (LIBS, BACKENDLIBS): Add $(HOST_LIBS).
9589         * doc/install.texi (Configuration): Document
9590         --enable-build-with-cxx, --with-stage1-ldflags,
9591         --with-stage1-libs, --with-boot-ldflags, --with-boot-libs.
9592         * configure: Rebuild.
9593
9594 2009-06-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
9595
9596         * config/arm/arm.c (arm_override_options): Fix braces and formatting
9597         from previous commit.
9598
9599 2009-06-23  Ian Lance Taylor  <iant@google.com>
9600
9601         * Makefile.in ($(out_object_file)): Depend upon $(DF_H).
9602
9603 2009-06-23  Ian Lance Taylor  <iant@google.com>
9604
9605         * reload.c (alternative_allows_const_pool_ref): Mark mem parameter
9606         with ATTRIBUTE_UNUSED.
9607
9608 2009-06-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
9609             Pat Haugen  <pthaugen@us.ibm.com>
9610             Revital Eres  <eres@il.ibm.com>
9611
9612         * config.in (HAVE_AS_POPCNTD): Add default definition.
9613         (HAVE_AS_LWSYNC): Ditto.
9614
9615         * configure.ac (gcc_cv_as_powerpc_mfpgpr): Provide real binutils
9616         release number.
9617         (gcc_cv_as_powerpc_cmpb): Ditto.
9618         (gcc_cv_as_powerpc_dfp): Ditto.
9619         (gcc_cv_as_powerpc_vsx): Ditto.
9620         (gcc_cv_as_powerpc_popcntd): Add feature test for assembler
9621         supporting the popcntd/lwsync instructions.
9622         (gcc_cv_as_powerpc_lwsync): Ditto.
9623         * configure: Regenerate.
9624
9625         * config/rs6000/aix53.h (ASM_CPU_SPEC): Add support for
9626         -mcpu=native and -mcpu=power7.
9627         * config/rs6000/aix61.h (ASM_CPU_SPEC): Ditto.
9628
9629         * config/rs6000/linux64.opt (-mprofile-kernel): Move switch to be
9630         a variable instead of a mask to reduce the number of mask bits.
9631         * config/rs6000/sysv4.opt (-mbit-align): Ditto.
9632         (-mbit-word): Ditto.
9633         (-mregnames): Ditto.
9634         * config/rs6000/rs6000.opt (-mupdate): Ditto.
9635         (-mfused-madd): Ditto.
9636
9637         * config/rs6000/rs6000.opt (-mpopcntd): New switch for non-VSX ISA
9638         2.06 instructions.
9639         (-mvsx): New switch for VSX instructions.
9640         (-misel): Move from a variable to a mask to allow it to be set by
9641         -mcpu=.
9642
9643         * config/rs6000/rs6000-protos.h (rs6000_hard_regno_nregs): Change
9644         function declaration to an array declaration.
9645         (rs6000_hard_regno_nregs): New external array declaration.
9646
9647         * config/rs6000/t-rs6000 (MD_INCLUDES): Define, add all of the .md
9648         files included by rs6000.md.
9649
9650         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Use
9651         SET_PROFILE_KERNEL macro to reset the -mprofile-kernel switch.
9652
9653         * config/rs6000/rs6000.c (rs6000_isel): Delete, -misel moved to be
9654         a target mask.
9655         (rs6000_debug_reg): New -mdebug= variables.
9656         (rs6000_debug_addr): Ditto.
9657         (rs6000_debug_cost): Ditto.
9658         (rs6000_pmode): New variable to hold Pmode.
9659         (rs6000_pointer_size): New variable to hold POINTER_SIZE.
9660         (rs6000_class_max_nregs): New array to hold CLASS_MAX_NREGS
9661         calculated at compiler start.
9662         (rs6000_hard_regno_nregs): Change function to an array which holds
9663         HARD_REGNO_NREGS calculated at compiler start.
9664         (rs6000_explicit_options): Delete isel field.
9665         (rs6000_vector_unit): New array to hold which vector unit
9666         supports arithmetic options for a given type.
9667         (rs6000_vector_mem): New array to hold which vector unit supports
9668         memory reference operations for a given type.
9669         (rs6000_vector_align): New array to given the alignment of each
9670         vector type.
9671         (power7_cost): New basic costs for power7.
9672         (SET_PROFILE_KERNEL): New macro for resetting -mprofile-kernel.
9673         (rs6000_hard_regno_nregs_internal): New function, moved from
9674         HARD_REGNO_NREGS, to calculate the number of registers each hard
9675         register takes for each type.
9676         (rs6000_debug_reg_print): New function for -mdebug=reg support.
9677         (rs6000_debug_vector_unit): New array, map rs6000_vector to string.
9678         (+rs6000_init_hard_regno_mode_ok): New function, move calculation
9679         of HARD_REGNO_NREGS, CLASS_MAX_NREGS, REGNO_REG_CLASS, and vector
9680         unit information here so it is calculated once at compiler startup
9681         time.
9682         (rs6000_override_options): Make -misel a target mask.  Add more
9683         power7 target masks.  Setup Pmode and POINTER_SIZE.  Add initial
9684         VSX support.  Add support for -mdebug=reg, -mdebug=addr, and
9685         -mdebug=cost.
9686         (POWERPC_MASKS): Add MASK_POPCNTD, MASK_VSX, and MASK_ISEL.
9687         (rs6000_handle_option): Move -misel from variable to target mask.
9688         (rs6000_builtin_mask_for_load): Add VSX support.
9689         (rs6000_conditional_register_usage): Ditto.
9690         (USE_ALTIVEC_FOR_ARG_P): Ditto.
9691         (function_arg_boundary): Ditto.
9692         (rs6000_expand_builtin): Ditto.
9693         (def_builtin): Make abort message a little friendlier.
9694         (rs6000_emit_int_cmove): Add support for 64-bit isel.
9695
9696         * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Depend on the
9697         assembler support the popcntd instruction instead of a vsx
9698         instruction to enable power7 support.
9699         (ASM_CPU_SPEC): Add support for -mcpu=native and -mcpu=power7.
9700         (EXTRA_SPECS): Add ASM_CPU_NATIVE_SPEC to allow passing the right
9701         option to the assembler if -mcpu=native.
9702         (ASM_CPU_NATIVE_SPEC): Ditto.
9703         (TARGET_POPCNTD): If assembler doesn't support popcntd, turn off
9704         ISA 2.06 features.
9705         (TARGET_LWSYNC_INSTRUCTION): Define whether it is safe to issue
9706         the lwsync instruction.
9707         (enum processor_type): Add PROCESSOR_POWER7.
9708         (rs6000_debug_reg): New -mdebug= options.
9709         (rs6000_debug_addr): Ditto.
9710         (rs6000_debug_cost): Ditto.
9711         (rs6000_isel): Delete.
9712         (enum rs6000_vector): New enum to say what vector unit we have.
9713         (VECTOR_UNIT_*): New macros to say which vector unit has
9714         arithmetic operations for a given type.
9715         (VECTOR_MEM_*): New macros to say which vector unit has memory
9716         operations for a given type.
9717         (TARGET_LDBRX): Whether the machine supports the ldbrx
9718         instruction.
9719         (TARGET_ISEL): Delete, -misel moved to be a mask.
9720         (TARGET_ISEL64): New macro for 64-bit isel support.
9721         (UNITS_PER_VSX_WORD): New macro.
9722         (POINTER_SIZE): Move to be an external variable, rather than
9723         calculating whether we are generating 32 ot 64-bit code.
9724         (Pmode): Ditto.
9725         (STACK_BOUNDARY): Add VSX support.
9726         (LOCAL_ALIGNMENT): Ditto.
9727         (SLOW_UNALIGNED_ACCESS): Ditto.
9728         (VSX_REGNO_P): New macro for VSX support.
9729         (VFLOAT_REGNO_P): Ditto.
9730         (VINT_REGNO_P): Ditto.
9731         (VLOGICAL_REGNO_P): Ditto.
9732         (VSX_VECTOR_MODE): Ditto.
9733         (VSX_SCALAR_MODE): Ditto.
9734         (VSX_MODE): Ditto.
9735         (VSX_MOVE_MODE): Ditto.
9736         (VSX_REG_CLASS_P): Ditto.
9737         (HARD_REGNO_NREGS): Instead of calling a function, use an array
9738         lookup.
9739         (UNITS_PER_SIMD_WORD): Add VSX support.
9740         (MODES_TIEABLE_P): Ditto.
9741         (STARTING_FRAME_OFFSET): Ditto.
9742         (STACK_DYNAMIC_OFFSET): Ditto.
9743         (EPILOGUE_USES): Ditto.
9744         (REGNO_REG_CLASS): Move to array lookup.
9745         (CLASS_MAX_NREGS): Ditto.
9746         (rs6000_vector_reg_class): Add declaration.
9747         (ADDITIONAL_REGISTER_NAMES): Add VSX names for the registers that
9748         overlap with the floating point and Altivec registers.
9749
9750         * config/rs6000/e500.h (CHECK_E500_OPTIONS): Disallow -mvsx.
9751
9752         * config/rs6000/driver-rs6000.c (asm_names): New static array to
9753         give the appropriate asm switches if -mcpu=native.
9754         (host_detect_local_cpu): Add support for "asm".
9755         (host_detect_local_cpu): Follow GNU code guidelines for name.
9756
9757         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Move
9758         -mbit-word to a variable instead of being a target mask.
9759
9760         * config/rs6000/sync.md (lwsync): If the assembler supports it,
9761         emit the lwsync instruction instead of emitting the instruction as
9762         an integer constant.
9763
9764         * config/rs6000/spe.md (spe_fixuns_truncdfsi2): Rename from
9765         fixuns_trundfsi2, move expander into rs6000.md.
9766
9767         * config/rs6000/rs6000.md (cpu): Add power7.
9768         (sel, *ptrsize): New mode attributes for 32/64-bit isel.
9769         (logical predicate patterns): Change the single instruction
9770         primitives that set CR0 to be fast_compare instead of compare.
9771         (norsi*): Ditto.
9772         (popcntwsi2): Add support for ISA 2.06 popcount instructions.
9773         (popcntddi2): Ditto.
9774         (popcount<mode>): Ditto.
9775         (floating multiply/add insns): Name the floating point
9776         multiply/add insns.
9777         (isel_signed_<mode>): Add support for -misel on 64-bit systems.
9778         (isel_unsigned_<mode>): Ditto.
9779         (fixuns_trundfsi2): Move expander here from spe.md.
9780         (smindi3): Define if we have -misel on 64-bit systems.
9781         (smaxdi3): Ditto.
9782         (umindi3): Ditto.
9783         (umaxdi3): Ditto.
9784
9785 2009-06-23  Anatoly Sokolov  <aesok@post.ru>
9786
9787         * config.gcc (avr-*-rtems*, avr-*-*): Set extra_gcc_objs and
9788         extra_objs.
9789         * config/avr/avr.c (avr_current_device): New variable.
9790         (avr_arch_types, avr_mcu_types): Move to avr-deveces.c.
9791         (avr_arch, mcu_type_s): Move to avr.h.
9792         * config/avr/avr.h (base_arch_s). Add reserved2, arch_name and
9793         default_data_section_start fields.
9794         (avr_arch): Moved from avr.c.
9795         (mcu_type_s): Moved from avr.c. Add short_sp, data_section_start and
9796         library_name fields.
9797         (avr_current_device, avr_mcu_types, avr_arch_types,
9798         avr_device_to_arch, avr_device_to_data_start,
9799         avr_device_to_startfiles, avr_device_to_devicelib): Declare.
9800         (EXTRA_SPEC_FUNCTIONS): Define.
9801         (LINK_SPEC): Remove device name to '-m ...' and '-Tdata ...' linker
9802         options mapping. Use device_to_arch and device_to_data_start insted.
9803         (STARTFILE_SPEC): Use device_to_startfile instead of crt_binutils.
9804         (CRT_BINUTILS_SPECS, EXTRA_SPECS): Remove.
9805         * config/avr/t-avr (driver-avr.o, avr-devices.o): New rules.
9806         * config/avr/driver-avr.c: New file.
9807         * config/avr/avr-devices.c: New file.
9808
9809 2009-06-23  Jakub Jelinek  <jakub@redhat.com>
9810
9811         * var-tracking.c (unshare_variable): Force initialized to
9812         be VAR_INIT_STATUS_INITIALIZED unless flag_var_tracking_uninit.
9813         (set_variable_part): Likewise.
9814         (struct variable_union_info): Remove pos_src field.
9815         (vui_vec, vui_allocated): New variables.
9816         (variable_union): Pass VAR_INIT_STATUS_UNKNOWN to unshare_variable
9817         unconditionally.  Avoid XCVECNEW/free for every sorting, for dst_l
9818         == 1 use a simpler sorting algorithm.  Compute pos field right
9819         away, don't fill in pos_src.  For dst_l == 2 avoid qsort.
9820         Avoid quadratic comparison if !flag_var_tracking_uninit.
9821         (variable_canonicalize): Pass VAR_INIT_STATUS_UNKNOWN to
9822         unshare_variable unconditionally.
9823         (dataflow_set_different_2): Removed.
9824         (dataflow_set_different): Don't traverse second hash table.
9825         (compute_bb_dataflow): Pass VAR_INIT_STATUS_UNINITIALIZED
9826         unconditionally to var_reg_set or var_mem_set.
9827         (emit_notes_in_bb): Likewise.
9828         (delete_variable_part): Pass VAR_INIT_STATUS_UNKNOWN to
9829         unshare_variable.
9830         (emit_note_insn_var_location): Don't set initialized to
9831         VAR_INIT_STATUS_INITIALIZED early.
9832         (vt_finalize): Free vui_vec if needed, clear vui_vec and
9833         vui_allocated.
9834         * rtl.c (rtx_equal_p): Don't implement on top of rtx_equal_p_cb.
9835
9836         * tree-object-size.c (addr_object_size): Instead of checking
9837         for non-NULL TREE_CHAIN of the FIELD_DECL check that there
9838         are no FIELD_DECLs following it.
9839
9840 2009-06-23  Andreas Krebbel  <krebbel1@de.ibm.com>
9841
9842         * tree-ssa-math-opts.c (find_bswap): Increase the search depth in
9843         order to match bswaps with signed source operands.
9844
9845 2009-06-23  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
9846
9847         * sdbout.c (sdbout_one_type): Fix braces in switch.
9848
9849 2009-06-23  Richard Guenther  <rguenther@suse.de>
9850
9851         * tree-ssa-structalias.c (struct variable_info): Add is_global_var
9852         member.
9853         (var_anything, anything_tree, var_nothing, nothing_tree, var_readonly,
9854         readonly_tree, var_escaped, escaped_tree, var_nonlocal, nonlocal_tree,
9855         var_callused, callused_tree, var_storedanything, storedanything_tree,
9856         var_integer, integer_tree): Remove global variables.
9857         (new_var_info): Do not pass new id, append the new var to the
9858         global variable vector.
9859         (do_ds_constraint): Use is_global_var member of the variable-info.
9860         (new_scalar_tmp_constraint_exp): Adjust.
9861         (create_function_info_for): Likewise.
9862         (create_variable_info_for): Likewise.
9863         (find_what_var_points_to): Remove dead code.
9864         (init_base_vars): Simplify.
9865         (compute_points_to_sets): Adjust.
9866
9867 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
9868
9869         * combine.c (try_combine): Dump information about the insns we're
9870         combining.
9871
9872 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
9873
9874         * combine.c (combine_simplify_rtx): Remove TRULY_NOOP_TRUNCATION
9875         check when calling force_to_mode on TRUNCATE's operand.
9876
9877 2009-06-22  Ian Lance Taylor  <iant@google.com>
9878
9879         * config/rs6000/rs6000.opt: Move msched-epilog before msched-prolog.
9880
9881 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
9882
9883         * config/arm/arm.md (prologue_use): Set length of fake insn to 0.
9884
9885 2009-06-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
9886
9887         * doc/invoke.texi (Link Options): -nodefaultlibs and -nostdlib
9888         override library linkage flags such as -static-libgcc or
9889         -shared-libgcc.
9890
9891 2009-06-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
9892
9893         * config/m68k/m68k-devices.def: Add line for MCF5221x.
9894
9895 2009-06-22  Ian Lance Taylor  <iant@google.com>
9896
9897         * config/linux.opt: Put mglibc ahead of muclibc.
9898
9899         * c-decl.c (diagnose_mismatched_decls): Add -Wc++-compat warning
9900         for duplicate decls.
9901
9902 2009-06-22  Matthias Klose  <doko@ubuntu.com>
9903
9904         * Makefile.in (install-plugin): Remove extra `/' after $(DESTDIR).
9905
9906 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
9907
9908         PR objc/28050
9909         * c-parser.c (c_parser_objc_message_args): Return error_mark_node
9910         instead of NULL if a parser error occurs.
9911
9912 2009-06-22  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
9913
9914         * dwarf2out.c (dwarf2_debug_hooks): Initialize
9915         non-DWARF2_DEBUGGING_INFO version.
9916
9917 2009-06-22  Kai Tietz  <kai.tietz@onevision.com>
9918
9919         * config.gcc (i[34567]86-*-mingw*, x86_64-*-mingw*): Add
9920         i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file.
9921
9922         * config/i386/mingw32.h (LIBGCC2_HAS_TF_MODE): Define.
9923         (LIBGCC2_TF_CEXT): Define.
9924         (TF_SIZE): Define.
9925
9926 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
9927
9928         PR target/40463
9929         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Fix definition.
9930
9931 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
9932
9933         * config/arm/arm.c (arm_override_options): Disable
9934         -mcaller-super-interworking and -mcallee-super-interworking.
9935         * doc/invoke.texi (ARM Options): Document this.
9936
9937 2009-06-22  Nathan Sidwell  <nathan@codesourcery.com>
9938
9939         * config/arm/arm.c (arm_print_operand): Deal with HIGH.
9940         * config/arm/constraints.md (j): New constraint for movw operands.
9941         (N): Remove thumb2 meaning.
9942         * config/arm/arm.md (*arm_movw): Delete.
9943         (*arm_movsi_insn): Use j constraint for movw instead of N constraint.
9944         * config/arm/vfp.md (*arm_movsi_vfp, *thumb2_movsi_vfp): Likewise.
9945         * config/arm/thumb2.md (*thumb2_movsi_insn): Likewise.
9946
9947 2009-06-22  Martin Jambor  <mjambor@suse.cz>
9948
9949         PR tree-optimization/40492
9950         * tree-sra.c (sra_modify_assign): Pass zero offsets to
9951         build_ref_for_offset.
9952
9953 2009-06-22  Shujing Zhao  <pearly.zhao@oracle.com>
9954
9955         * alias.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P, CALL_P, NOTE_P and
9956         JUMP_TABLE_DATA_P predicates where applicable.
9957         * auto-inc-dec.c: Ditto.
9958         * builtins.c: Ditto.
9959         * caller-save.c: Ditto.
9960         * calls.c: Ditto.
9961         * cfgcleanup.c: Ditto.
9962         * cfglayout.c: Ditto.
9963         * cfgrtl.c: Ditto.
9964         * combine.c: Ditto.
9965         * combine-stack-adj.c: Ditto.
9966         * cse.c: Ditto.
9967         * cselib.c: Ditto.
9968         * dbxout.c: Ditto.
9969         * df-scan.c: Ditto.
9970         * dse.c: Ditto.
9971         * dwarf2asm.c: Ditto.
9972         * dwarf2out.c: Ditto.
9973         * emit-rtl.c: Ditto.
9974         * except.c: Ditto.
9975         * explow.c: Ditto.
9976         * expmed.c: Ditto.
9977         * expr.c: Ditto.
9978         * final.c: Ditto.
9979         * function.c: Ditto.
9980         * fwprop.c: Ditto.
9981         * gcse.c: Ditto.
9982         * genpreds.c: Ditto.
9983         * genrecog.c: Ditto.
9984         * ifcvt.c: Ditto.
9985         * ira-costs.c: Ditto.
9986         * ira-lives.c: Ditto.
9987         * jump.c: Ditto.
9988         * loop-iv.c: Ditto.
9989         * lower-subreg.c: Ditto.
9990         * modulo-sched.c: Ditto.
9991         * optabs.c: Ditto.
9992         * postreload.c: Ditto.
9993         * print-rtl.c: Ditto.
9994         * recog.c: Ditto.
9995         * reginfo.c: Ditto.
9996         * regmove.c: Ditto.
9997         * reload1.c: Ditto.
9998         * reload.c: Ditto.
9999         * reorg.c: Ditto.
10000         * rtlanal.c: Ditto.
10001         * rtl.c: Ditto.
10002         * sched-vis.c: Ditto.
10003         * sdbout.c: Ditto.
10004         * sel-sched-ir.c: Ditto.
10005         * simplify-rtx.c: Ditto.
10006         * targhooks.c: Ditto.
10007         * var-tracking.c: Ditto.
10008         * vmsdbgout.c: Ditto.
10009
10010 2009-06-22  Matthias Klose  <doko@ubuntu.com>
10011
10012         * Makefile.in (install-plugin): Always use DESTDIR.
10013
10014 2009-06-22  Olivier Hainque  <hainque@adacore.com>
10015
10016         * config/pa/pa.c (output_call): Don't optimize post call jumps
10017         into return address adjustments if the call may throw.
10018
10019 2009-06-21  Richard Earnshaw  <rearnsha@arm.com>
10020
10021         * arm.c (thumb1_output_casesi): New function.
10022         * arm.h (CASE_VECTOR_PC_RELATIVE): Thumb-1 code is also relative if
10023         optimizing for size or PIC.
10024         (CASE_VECTOR_SHORTEN_MODE): Handle thumb-1.
10025         * arm.md (UNSPEC_THUMB1_CASESI): New constant.
10026         (casesi): Handle Thumb-1 when optimizing for size or PIC.
10027         (thumb1_casesi_internal_pic): New expand rule.
10028         (thumb1_casesi_dispatch): New pattern.
10029         * aout.h (ASM_OUTPUT_ADDR_DIFF_ELT): Use shortened vectors for
10030         thumb-1 mode.
10031         * coff.h (JUMP_TABLES_IN_TEXT_SECTION): Thumb-1 jump tables are now
10032         in the text seciton when PIC or optimizing for size.
10033         * elf.h (JUMP_TABLES_IN_TEXT_SECTION): Likewise.
10034         * lib1funcs.asm ([__ARM_EABI__]): Add an attribute describing stack
10035         preservation properties of code.
10036         (__gnu_thumb1_case_sqi, __gnu_thumb1_case_uqi): New functions.
10037         (__gnu_thumb1_case_shi, __gnu_thumb1_case_uhi): New functions.
10038         (__gnu_thumb1_case_si): New function.
10039         * t-arm (LIB1ASMSRC): Define here.
10040         (LIB1ASMFUNCS): Add some common functions.
10041         * t-arm-elf (LIB1ASMSRC): Delete.
10042         (LIB1ASMFUNCS): Append to existing set.
10043         * t-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
10044         * t-strongarm-elf (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
10045         * t-symbian (LIB1ASMFUNCS): Likewise.
10046         * t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
10047         * t-wince-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
10048
10049 2009-06-21  Richard Guenther  <rguenther@suse.de>
10050
10051         PR tree-optimization/38729
10052         * tree-ssa-loop-niter.c (find_loop_niter_by_eval): Restrict
10053         to loops with a single exit if -fno-expensive-optimizations.
10054
10055 2009-06-21  Jakub Jelinek  <jakub@redhat.com>
10056
10057         * var-tracking.c (struct shared_hash_def, shared_hash): New types.
10058         (dataflow_set): Change vars type from htab_t to shared_hash.
10059         (shared_hash_pool, empty_shared_hash): New variables.
10060         (vars_clear): Removed.
10061         (shared_hash_shared, shared_hash_htab, shared_hash_copy,
10062         shared_hash_find_slot_unshare, shared_hash_find_slot,
10063         shared_hash_find_slot_noinsert, shared_hash_find): New
10064         static inlines.
10065         (shared_hash_unshare, shared_hash_destroy): New functions.
10066         (unshare_variable): Unshare set->vars if shared, use
10067         shared_hash_htab.
10068         (vars_copy): Use htab_traverse_noresize instead of htab_traverse.
10069         (get_init_value, find_src_set_src, dump_dataflow_set,
10070         clobber_variable_part, emit_notes_for_differences): Use
10071         shared_hash_htab.
10072         (dataflow_set_init): Remove second argument, set vars to
10073         empty_shared_hash instead of creating a new htab.
10074         (dataflow_set_clear): Call shared_hash_destroy and set vars
10075         to empty_shared_hash instead of calling vars_clear.
10076         (dataflow_set_copy): Don't call vars_copy, instead just share
10077         the src htab with dst.
10078         (variable_union): Use shared_hash_*, use initially NO_INSERT
10079         lookup if set->vars is shared.  Don't keep slot cleared before
10080         calling unshare_variable.  Unshare set->vars if needed.
10081         Even ->refcount == 1 vars must be unshared if set->vars is shared
10082         and var needs to be modified.
10083         (variable_canonicalize): New function.
10084         (dataflow_set_union): If dst->vars is empty, just share src->vars
10085         with dst->vars and traverse with variable_canonicalize to canonicalize
10086         and unshare what is needed.
10087         (dataflow_set_different): If old_set and new_set use the same shared
10088         htab, they aren't different.  If number of htab elements is different,
10089         htabs are different.  Use shared_hash_*.
10090         (dataflow_set_destroy): Call shared_hash_destroy instead of
10091         htab_delete.
10092         (compute_bb_dataflow, emit_notes_in_bb, vt_emit_notes): Don't pass
10093         second argument to dataflow_set_init.
10094         (vt_initialize): Likewise.  Initialize shared_hash_pool and
10095         empty_shared_hash, move bb in/out initialization afterwards.
10096         Use variable_htab_free instead of NULL as changed_variables del hook.
10097         (variable_was_changed): Change type of second argument to pointer to
10098         dataflow_set.  When inserting var into changed_variables, bump
10099         refcount.  Unshare set->vars if set is shared htab and slot needs to
10100         be cleared.
10101         (set_variable_part): Use shared_hash_*, use initially NO_INSERT
10102         lookup if set->vars is shared.  Unshare set->vars if needed.
10103         Even ->refcount == 1 vars must be unshared if set->vars is shared
10104         and var needs to be modified.  Adjust variable_was_changed caller.
10105         (delete_variable_part): Use shared_hash_*.  Even ->refcount == 1
10106         vars must be unshared if set->vars is shared and var needs to be
10107         modified.  Adjust variable_was_changed caller.
10108         (emit_note_insn_var_location): Don't pool_free var.
10109         (emit_notes_for_differences_1): Initialize empty_var->refcount to 0
10110         instead of 1.
10111         (vt_finalize): Call htab_delete on empty_shared_hash->htab and
10112         free_alloc_pool on shared_hash_pool.
10113
10114 2009-06-20  Anthony Green  <green@moxielogic.com>
10115
10116         * config/moxie/sfp-machine.h (__gcc_CMPtype, CMPtype): Define.
10117         * config/moxie/moxie.h (LOAD_EXTEND_OP): Define.
10118
10119 2009-06-20  Richard Guenther  <rguenther@suse.de>
10120
10121         * tree-ssa-structalias.c (find_func_aliases): For memset use
10122         a constraint from NULL if we memset to zero.
10123         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Add builtins
10124         we explicitly handle that do not read from memory.
10125         (call_may_clobber_ref_p_1): Properly handle builtins that may
10126         set errno.
10127
10128 2009-06-20  Richard Guenther  <rguenther@suse.de>
10129
10130         PR tree-optimization/40495
10131         * tree-ssa-structalias.c (get_constraint_exp_for_temp): Remove.
10132         (new_scalar_tmp_constraint_exp): New function.
10133         (process_constraint): Do not create temporary decls.
10134         (process_all_all_constraints): Likewise.
10135         (handle_const_call): Likewise.
10136         (create_function_info_for): Do not set decl.
10137
10138 2009-06-19  Ian Lance Taylor  <iant@google.com>
10139
10140         * config/rs6000/rs6000.c (rs6000_explicit_options): Make static.
10141         (rs6000_attribute_table): Make static; move before use.
10142
10143 2009-06-19  Eric Botcazou  <ebotcazou@adacore.com>
10144
10145         * tree.c (substitute_in_expr) <COMPONENT_REF>: Tweak and reformat.
10146         <tcc_vl_exp>: Call process_call_operands on the new CALL_EXPR.
10147         Propagate the TREE_READONLY flag without overwriting it.
10148         (substitute_placeholder_in_expr) <tcc_vl_exp>: Likewise.
10149         Propagate the TREE_READONLY flag onto the result.
10150         (process_call_operands): Move around.  Use correct constant value.
10151
10152 2009-06-19  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
10153
10154         PR target/40482
10155         * config/arm/arm.c (thumb_shiftable_const): Truncate val to 32 bits.
10156         * config/arm/arm.md: Likewise.
10157
10158 2009-06-19  Ian Lance Taylor  <iant@google.com>
10159
10160         * tree-cfg.c (gimple_redirect_edge_and_branch): Change ERROR_MARK
10161         to GIMPLE_ERROR_MARK.
10162
10163         * c-typeck.c (build_conditional_expr): Add op1_original_type and
10164         op2_original_type parameters.  Warn about using different enum types.
10165         * c-parser.c (c_parser_conditional_expression): Pass original
10166         types to build_conditional_expr.
10167         * c-tree.h (build_conditional_expr): Update declaration.
10168
10169 2009-06-19  Ian Lance Taylor  <iant@google.com>
10170
10171         * config/i386/i386.c (ix86_function_specific_save): Test that
10172         fields match values, rather than testing the values are in a
10173         certain range.
10174
10175 2009-06-19  Richard Guenther  <rguenther@suse.de>
10176
10177         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Handle
10178         ADDR_EXPR pointers.
10179         (ptr_derefs_may_alias_p): Likewise.
10180         (ptr_deref_may_alias_ref_p_1): New function.
10181         (ptr_deref_may_alias_ref_p): Likewise.
10182         (ref_maybe_used_by_call_p_1): Handle builtins that are not
10183         covered by looking at the ESCAPED solution.
10184         (call_may_clobber_ref_p_1): Likewise.
10185         * tree-ssa-structalias.c (get_constraint_for_ptr_offset):
10186         Handle NULL_TREE offset.  Do not produce redundant constraints.
10187         (process_all_all_constraints): New helper function.
10188         (do_structure_copy): Use it.
10189         (handle_lhs_call): Likewise.
10190         (find_func_aliases): Handle some builtins with pointer arguments
10191         and/or return values explicitly.
10192
10193 2009-06-19  Ian Lance Taylor  <iant@google.com>
10194
10195         * varasm.c (const_rtx_hash_1): Remove const qualifier from shift.
10196
10197 2009-06-19  Ian Lance Taylor  <iant@google.com>
10198
10199         * rtl.h (SUBREG_PROMOTED_UNSIGNED_P): Add cast to int.
10200
10201 2009-06-19  Ian Lance Taylor  <iant@google.com>
10202
10203         * ggc-page.c (ggc_pch_write_object): Initialize emptyBytes.
10204         * sdbout.c (sdb_debug_hooks): Initialize non-SDB_DEBUGGING_INFO
10205         version.
10206
10207         * c-decl.c (finish_decl): If -Wc++-compat, warn about
10208         uninitialized const.
10209
10210 2009-06-19  Ian Lance Taylor  <iant@google.com>
10211
10212         * dse.c (struct store_info): Rename bitmap field to bmap.  Change
10213         all uses.
10214
10215         * c-decl.c (in_struct, struct_types): Remove.
10216         (struct c_binding): Add in_struct field.
10217         (c_binding_ptr): Define type, along with VEC.
10218         (struct c_struct_parse_info): Define.
10219         (struct_parse_info): New static variable.
10220         (bind): Initialize in_struct field.
10221         (start_struct): Remove enclosing_in_struct and
10222         enclosing_struct_types parameters.  Add
10223         enclosing_struct_parse_info parameter.  Change all callers.  Set
10224         struct_parse_info rather than in_struct and struct_types.
10225         (grokfield): If -Wc++-compat and there is a symbol binding for the
10226         field name, set the in_struct flag and push it on the
10227         struct_parse_info->fields vector.
10228         (warn_cxx_compat_finish_struct): New static function.
10229         (finish_struct): Remove enclosing_in_struct and
10230         enclosing_struct_types parameters.  Add
10231         enclosing_struct_parse_info parameter.  Change all callers.  Don't
10232         set C_TYPE_DEFINED_IN_STRUCT here.  Call
10233         warn_cxx_compat_finish_struct.  Free struct_parse_info and set to
10234         parameter.  Only push on struct_types if warn_cxx_compat.
10235         (finish_enum): Only push on struct_types if warn_cxx_compat.
10236         (declspecs_add_type): Add loc parameter.  Change all callers.
10237         Change all error calls to error_at.  Pass loc, not input_location,
10238         to pedwarn calls.  Warn if -Wc++-compat and a typedef name is
10239         defined in a struct.  If -Wc++-compat and parsing a struct, record
10240         that a typedef name was used.
10241         * c-parser.c (c_parser_declspecs): Get location to pass to
10242         declspecs_add_type.
10243         (c_parser_struct_or_union_specifier): Update calls to start_struct
10244         and finish_struct.
10245         * c-tree.h (struct c_struct_parse_info): Declare.
10246         (finish_struct, start_struct): Update declarations.
10247         (declspecs_add_type): Update declaration.
10248
10249 2009-06-19  Ian Lance Taylor  <iant@google.com>
10250
10251         * c-decl.c (grokdeclarator): If -Wc++-compat, warn about a global
10252         variable with an anonymous type.
10253
10254 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
10255
10256         * see.c: Remove for real.
10257
10258 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
10259
10260         * optabs.h (enum optab_index): Add new OTI_significand.
10261         (significand_optab): Define corresponding macro.
10262         * optabs.c (init_optabs): Initialize significand_optab.
10263         * genopinit.c (optabs): Implement significand_optab using
10264         significand?f2 patterns.
10265         * builtins.c (expand_builtin_mathfn): Handle
10266         BUILT_IN_SIGNIFICAND{,F,L}.
10267         (expand_builtin): Expand BUILT_IN_SIGNIFICAND{,F,L} using
10268         expand_builtin_mathfn if flag_unsafe_math_optimizations is set.
10269
10270         * config/i386/i386.md (significandxf2, significand<mode>2): New
10271         expanders to implement significandf, significand and significandl
10272         built-ins as inline x87 intrinsics.
10273
10274 2009-06-18  Anatoly Sokolov  <aesok@post.ru>
10275
10276         * config/avr/avr.c (avr_override_options): Remove setting value of
10277         PARAM_INLINE_CALL_COST.
10278
10279 2009-06-18  Richard Henderson  <rth@redhat.com>
10280
10281         PR 40488
10282         * tree-pass.h (TDF_ASMNAME): New.
10283         * tree-dump.c (dump_options): Add asmname.
10284         * doc/invoke.texi: Document it.
10285
10286         * tree-pretty-print.c (maybe_dump_asm_name): Merge into...
10287         (dump_decl_name): ...here.
10288         (dump_function_name): New flags arg; mind TDF_ASMNAME.
10289         (dump_generic_node): Update dump_function_name calls.
10290         (print_call_name): New flags arg; update all dump calls.
10291         * diagnostic.h (print_call_name): Update.
10292         * gimple-pretty-print.c (dump_gimple_call): Update.
10293
10294 2009-06-18  H.J. Lu  <hongjiu.lu@intel.com>
10295
10296         PR target/40470
10297         * config/i386/i386.h (CLASS_LIKELY_SPILLED_P): Add SSE_FIRST_REG.
10298
10299 2009-06-18  Diego Novillo  <dnovillo@google.com>
10300
10301         * doc/plugins.texi: Document plugin_is_GPL_compatible.
10302         * plugin.c (str_license): Declare.
10303         (try_init_one_plugin): Assert that the symbol
10304         'plugin_is_GPL_compatible' exists.
10305
10306 2009-06-18  Sergei Dyshel  <sergeid@il.ibm.com>
10307
10308         * see.c: Remove.
10309         * Makefile.in (OBJS-common): Remove see.o.
10310         (see.o): Remove.
10311         * common.opt (fsee): Mark as preserved for backward compatibility.
10312         * opts.c (common_handle_option): Add OPT_fsee to the backward
10313         compatibility section.
10314         * passes.c (init_optimization_passes, pass_see): Remove pass.
10315         * timevar.def (TV_SEE): Remove.
10316         * tree-pass.h (pass_see): Remove declaration.
10317         * doc/invoke.texi (-fsee): Remove documentation.
10318
10319 2009-06-18  Martin Jambor  <mjambor@suse.cz>
10320
10321         * tree-sra.c: Include statistics.h
10322         (sra_stats): New variable.
10323         (sra_initialize): Clear sra_stats.
10324         (create_access_replacement): Increment sra_stats.replacements.
10325         (get_access_replacement): Do not return twice.
10326         (analyze_all_variable_accesses): Increment statistics counter by the
10327         number of scalarized aggregates.
10328         (generate_subtree_copies): Increment sra_stats.subtree_copies.
10329         (sra_modify_expr): Increment sra_stats.exprs.
10330         (load_assign_lhs_subreplacements): Increment sra_stats.subreplacements.
10331         (sra_modify_assign): Increment sra_stats.exprs,
10332         sra_stats.separate_lhs_rhs_handling and sra_stats.deleted.
10333         (perform_intra_sra): Update statistics counters.
10334         * Makefile.in (tree-sra.o): Add statistics.h to dependencies.
10335
10336 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
10337
10338         * config/arm/arm.c (TARGET_SCALAR_MODE_SUPPORTED_P): Redefine.
10339         (arm_scalar_mode_supported_p): New function.
10340
10341 2009-06-18  Paul Brook  <paul@codesourcery.com>
10342             Sandra Loosemore  <sandra@codesourcery.com>
10343
10344         * config/arm/sfp-machine.h (_FP_NANFRAC_H, _FP_NANSIGN_H): Define.
10345         (__extendhfsf2, __truncsfhf2): Define.
10346         * config/arm/fp16.c: New file.
10347         * config/arm/t-bpabi (LIB2FUNCS_STATIC_EXTRA): Add fp16.c.
10348         * config/arm/t-symbian (LIB2FUNCS_STATIC_EXTRA):  Add fp16.c.
10349
10350 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
10351
10352         * doc/extend.texi (Half-Precision): New section.
10353         * doc/invoke.texi (Option Summary): List -mfp16-format.
10354         (ARM Options): List neon-fp16 as -mfpu value.  Document -mfp16-format.
10355         * config/arm/arm.opt (mfp16-format=): New.
10356         * config/arm/arm.c: Include intl.h.
10357         (TARGET_INVALID_PARAMETER_TYPE): Redefine.
10358         (TARGET_INVALID_RETURN_TYPE): Redefine.
10359         (TARGET_PROMOTED_TYPE): Redefine.
10360         (TARGET_CONVERT_TO_TYPE): Redefine.
10361         (arm_fp16_format): Define.
10362         (all_fpus): Add entry for neon-fp16.
10363         (fp_model_for_fpu): Likewise.
10364         (struct fp16_format): Declare.
10365         (all_fp16_formats): Define.
10366         (arm_init_libfuncs): Add entries for HFmode conversions and arithmetic
10367         functions.
10368         (arm_override_options): Set arm_fp16_format. Call sorry for fp16
10369         and no ldrh.
10370         (arm_legitimate_index_p): Treat HFmode like HImode.
10371         (thumb1_legitimate_address_p): Make it recognize HFmode constants.
10372         (coproc_secondary_reload_class): Special-case HFmode.
10373         (arm_print_operand): Add 'z' specifier for vld1.16/vst1.16.
10374         (arm_hard_regno_mode_ok): Allow HFmode values in VFP registers.
10375         (arm_init_fp16_builtins): New.
10376         (arm_init_builtins): Call it.
10377         (arm_invalid_parameter_type): New.
10378         (arm_invalid_return_type): New.
10379         (arm_promoted_type): New.
10380         (arm_convert_to_type).
10381         (arm_file_start): Deal with neon-fp16 as fpu_name.  Emit tag for fp16
10382         format.
10383         (arm_emit_fp16_const): New function.
10384         (arm_mangle_type): Mangle __fp16 as "Dh".
10385         * config/arm/arm.h (TARGET_VFPD32): Make it know about
10386         FPUTYPE_NEON_FP16.
10387         (TARGET_NEON_FP16): New.
10388         (TARGET_NEON): Make it know about FPUTYPE_NEON_FP16.
10389         (enum fputype): Add FPUTYPE_NEON_FP16.
10390         (enum arm_fp16_format_type): Declare.
10391         (arm_fp16_format): Declare.
10392         (LARGEST_EXPONENT_IS_NORMAL): Define.
10393         * config/arm/arm-protos.h (arm_emit_fp16_const): Declare.
10394         * config/arm/arm-modes.def (HFmode): Define.
10395         * config/arm/vfp.md: (*movhf_vfp): New.
10396         (extendhfsf2): New.
10397         (truncsfhf2): New.
10398         * config/arm/arm.md: (fpu): Add neon_fp16.
10399         (floatsihf2, floatdihf2): New.
10400         (fix_trunchfsi2, fix_trunchfdi2): New.
10401         (truncdfhf2): New.
10402         (extendhfdf2): New.
10403         (movhf): New.
10404         (*arm32_movhf): New.
10405         (*thumb1_movhf): New.
10406         (consttable_2): Add check for HFmode constants.
10407         (consttable_4): Handle HFmode constants.
10408
10409 2009-06-18  Uros Bizjak  <ubizjak@gmail.com>
10410
10411         * convert.c (convert_to_integer): Convert (int)logb() into ilogb().
10412
10413 2009-06-17  Olivier Hainque  <hainque@adacore.com>
10414
10415         * collect2.c (main): Use CONST_CAST2 to perform char ** to
10416         const char ** conversion in AIX specific section.
10417
10418 2009-06-17  H.J. Lu  <hongjiu.lu@intel.com>
10419
10420         * config/i386/i386.c (ix86_special_builtin_type): Remove
10421         UINT64_FTYPE_PINT.  Add UINT64_FTYPE_PUNSIGNED.
10422         (bdesc_special_args): Updated.
10423         (ix86_init_mmx_sse_builtins): Likewise.
10424         (ix86_expand_special_args_builtin): Likewise.
10425
10426 2009-06-17  Richard Henderson  <rth@redhat.com>
10427
10428         * tree-pretty-print.c (maybe_dump_asm_name): New.
10429         (dump_decl_name): Use it.
10430         (PRINT_FUNCTION_NAME): Merge into...
10431         (dump_function_name): ... here.  Use maybe_dump_asm_name.
10432
10433 2009-06-17  Cary Coutant  <ccoutant@google.com>
10434
10435         * dbxout.c (dbxout_source_line): Add is_stmt parameter.
10436         Change caller.
10437         * debug.c (struct gcc_debug_hooks): Change placeholder for
10438         source_line hook.
10439         (debug_nothing_int_charstar_int): Replaced by...
10440         (debug_nothing_int_charstar_int_bool): ...this.
10441         * debug.h (struct gcc_debug_hooks): Add is_stmt parameter to
10442         source_line prototype.
10443         (debug_nothing_int_charstar_int): Replaced by...
10444         (debug_nothing_int_charstar_int_bool): ...this.
10445         * defaults.h (SUPPORTS_DISCRIMINATOR): New constant.
10446         * dwarf2out.c (dwarf2out_source_line): Add is_stmt parameter.
10447         Output is_stmt operand when necessary.
10448         * final.c (final_scan_insn): Pass is_stmt to source_line debug hook.
10449         (notice_source_line): Add is_stmt parameter.
10450         * sdbout.c (sdbout_source_line): Add is_stmt parameter.
10451         * vmsdbgout.c (vmsdbgout_source_line): Add is_stmt parameter.
10452         Change callers.
10453         * xcoffout.c (xcoffout_source_line): Add is_stmt parameter.
10454         * xcoffout.h (xcoffout_source_line): Add is_stmt parameter.
10455
10456 2009-06-17  Ian Lance Taylor  <iant@google.com>
10457
10458         * expr.c (struct move_by_pieces_d): Rename from move_by_pieces.
10459         Change all uses.
10460         (struct store_by_pieces_d): Rename from store_by_pieces.  Change
10461         call uses.
10462
10463 2009-06-17  Adam Nemet  <anemet@caviumnetworks.com>
10464
10465         * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS,
10466         STRIP_USELESS_TYPE_CONVERSION): Use tree_strip_nop_conversions,
10467         tree_strip_sign_nop_conversions and
10468         tree_ssa_strip_useless_type_conversions rather than stripping
10469         the operations here.
10470         (tree_strip_nop_conversions, tree_strip_sign_nop_conversions):
10471         Declare them.
10472         * gimple.h (tree_ssa_strip_useless_type_conversions): Declare it.
10473         * tree-ssa.c (tree_ssa_strip_useless_type_conversions): New function.
10474         * tree.c (tree_nop_conversion, tree_sign_nop_conversion,
10475         tree_strip_nop_conversions, tree_strip_sign_nop_conversions): New
10476         functions.
10477
10478 2009-06-17  Michael Eager  <eager@eagercon.com>
10479
10480         * config/rs6000/constraints.md (register_constraint "d"): New.
10481         * config/rs6000/dfp.md (movsd_store, extendsddd2, extendsdtd2,
10482         truncddsd2, *negdd2_fpr, *absdd2_fpr, *nabsdd2_fpr,
10483         *movdd_hardfloat32, *movdd_hardfloat64_mfpgpr, *movdd_hardfloat64,
10484         *negtd2_fp, *abstd2_fpr, *nabstd2_fpr, *movtd_internal, extendddtd2,
10485         trunctddd2, adddd3, addtd3, subdd3, subtd3, muldd3, multd3, divdd3,
10486         divtd3, *cmpdd_internal1, *cmptd_internal1, floatditd2, ftruncdd2,
10487         fixdddi2, ftrunctd2, fixtddi2): replace 'f' constraint with 'd'
10488         * config/rs6000/ppu_intrinsics.h (__mffs, __mtfsf, __mtfsfi, __fabs,
10489         __fnabs, __fmadd, __fmsub, __fnmadd, __fnmsub, __fsel, __frsqrte,
10490         __fsqrt, __fmul, __fmuls, __frsp, __fcfid, __fctid, __fctidz, __fctiw,
10491         __fctiwz): Same.
10492         * config/rs6000/rs6000.md (*extendsfdf2_fpr, *truncdfsf2_fpr,
10493         *fseldfsf4, *negdf2_fpr, *absdf2_fpr, *nabsdf2_fpr, *adddf3_fpr,
10494         *subdf3_fpr, *muldf3_fpr, *divdf3_fpr, recipdf3, fred, sqrtdf2,
10495         *fseldfdf4, *fselsfdf4, *floatsidf2_internal, *floatunssidf2_internal,
10496         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
10497         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2, rounddf2,
10498         stfiwx, floatdidf2, fix_truncdfdi2, floatdisf2_internal1,
10499         *movdf_hardfloat32, *movdf_hardfloat64_mfpgpr, *movdf_hardfloat64,
10500         *movtf_internal, *extenddftf2_internal, trunctfdf2_internal1,
10501         trunctfdf2_internal2, trunctfsf2_fprs, fix_trunc_helper,
10502         *fix_trunctfsi2_internal, negtf2_internal, *movdi_internal32,
10503         *movdi_mfpgpr, *movdi_internal64, *movdf_update1, *movdf_update2,
10504         *cmpdf_internal1, *cmptf_internal1, *cmptf_internal2): Same.
10505         * doc/md.texi: Describe PowerPC 'd' constraint, update 'f' constraint.
10506
10507 2009-06-16  Ian Lance Taylor  <iant@google.com>
10508
10509         * profile.c (total_num_never_executed): Don't define.
10510         (compute_branch_probabilities): Don't count or print
10511         num_never_executed.
10512         (init_branch_prob): Don't set total_num_never_executed.
10513         (end_branch_prob): Don't print total_num_never_executed.
10514
10515 2009-06-17  David Daney  <ddaney@caviumnetworks.com>
10516
10517         * jump.c (cleanup_barriers): Handle case of no insns before a barrier.
10518
10519 2009-06-17  David Edelsohn  <edelsohn@gnu.org>
10520
10521         * config/rs6000/dfp.md (nabsdd2_fpr): Correct mode.
10522         (nabstd2_fpr): Same.
10523
10524 2009-06-17  Steve Ellcey  <sje@cup.hp.com>
10525
10526         * expr.c (expand_assignment): Change complex type check.
10527
10528 2009-06-17  Basile Starynkevitch  <basile@starynkevitch.net>
10529
10530         * doc/plugins.texi (Building GCC plugins): Added new section.
10531
10532 2009-06-17  Ian Lance Taylor  <iant@google.com>
10533
10534         * c-pch.c (get_ident): Don't set size of templ array.
10535         (pch_init): Don't set size of partial_pch array.
10536
10537         * c-typeck.c (digest_init): If -Wc++-compat, warn about using a
10538         string constant to intialize an array whose size is the length of
10539         the string.
10540
10541 2009-06-17  Richard Guenther  <rguenther@suse.de>
10542
10543         PR tree-optimization/40389
10544         * tree-ssa-structalias.c (handle_rhs_call): Restrict NRV case
10545         to addressable types.
10546         * gimple.c (walk_stmt_load_store_addr_ops): Likewise.
10547
10548 2009-06-17  Richard Guenther  <rguenther@suse.de>
10549
10550         PR middle-end/40460
10551         * tree-chrec.h (build_polynomial_chrec): If we cannot determine
10552         if there is no evolution of left in the loop bail out.
10553         * tree-chrec.c (chrec_fold_multiply_poly_poly): CSE one
10554         chrec_fold_multiply.
10555
10556 2009-06-16  J"orn Rennecke  <joern.rennecke@arc.com>
10557             Janis Johnson  <janis187@us.ibm.com>
10558
10559         PR target/39254
10560         * config/rs6000/rs6000.c (rs6000_emit_move): Don't emit a USE
10561         for the symbol ref of a constant that is the source of a move
10562         - nor for any other not-obvious-label-ref constants.
10563
10564 2009-06-16  Olatunji Ruwase  <tjruwase@google.com>
10565
10566         * plugin.c (position_pass): Skip newly inserted pass during list
10567         traversal to avoid repeated insertion.
10568
10569 2009-06-16  Ian Lance Taylor  <iant@google.com>
10570
10571         * vec.h (VEC_stack_alloc): Define different version if
10572         GATHER_STATISTICS is defined, to accept and ignore MEM_STAT.
10573         (DEF_VEC_ALLOC_FUNC_P_STACK): Remove MEM_STAT_DECL.
10574         (DEF_VEC_ALLOC_FUNC_O_STACK): Likewise.
10575         (DEF_VEC_ALLOC_FUNC_I_STACK): Likewise.
10576
10577 2009-06-16  H.J. Lu  <hongjiu.lu@intel.com>
10578
10579         * config.gcc (extra_headers): Add ia32intrin.h for x86.
10580
10581         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_BSRSI,
10582         IX86_BUILTIN_BSRDI.  IX86_BUILTIN_RDPMC, IX86_BUILTIN_RDTSC.
10583         IX86_BUILTIN_RDTSCP.  IX86_BUILTIN_ROLQI, IX86_BUILTIN_ROLHI,
10584         IX86_BUILTIN_RORQI and IX86_BUILTIN_RORHI.
10585         (ix86_special_builtin_type): Add UINT64_FTYPE_VOID,
10586         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
10587         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
10588         (bdesc_special_args): Add __builtin_ia32_rdtsc and
10589         __builtin_ia32_rdtscp.
10590         (bdesc_args): Add __builtin_ia32_bsrsi, __builtin_ia32_bsrdi,
10591         __builtin_ia32_rolqi, __builtin_ia32_rolhi, __builtin_ia32_rorqi
10592         and __builtin_ia32_rorhi.
10593         (ix86_init_mmx_sse_builtins): Handle UINT64_FTYPE_VOID,
10594         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
10595         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
10596         (ix86_expand_args_builtin): Likewise.
10597         (ix86_expand_special_args_builtin): Likewise.
10598
10599         * config/i386/i386.md (UNSPECV_RDTSCP): New.
10600         (UNSPECV_RDTSC): Likewise.
10601         (UNSPECV_RDPMC): Likewise.
10602         (*bsr): Renamed to ...
10603         (bsr): This
10604         (*bsr_rex64): Renamed to ...
10605         (bsr_rex64): This.
10606         (rdpmc): New.
10607         (*rdpmc): Likewise.
10608         (*rdpmc_rex64): Likewise.
10609         (rdtsc): Likewise.
10610         (*rdtsc): Likewise.
10611         (*rdtsc_rex64): Likewise.
10612         (rdtscp): Likewise.
10613         (*rdtscp): Likewise.
10614         (*rdtscp_rex64): Likewise.
10615
10616         * config/i386/ia32intrin.h: New.
10617
10618         * config/i386/x86intrin.h: Include <ia32intrin.h>.
10619
10620 2009-06-16  Ian Lance Taylor  <iant@google.com>
10621
10622         * ira-build.c (copy_info_to_removed_store_destinations):
10623         Initialize parent_a.
10624
10625 2009-06-16  Ian Lance Taylor  <iant@google.com>
10626
10627         * c-decl.c (grokdeclarator): Change size_varies to bool.
10628
10629 2009-06-16  Ian Lance Taylor  <iant@google.com>
10630
10631         * sel-sched.c: Make forward declarations of move_op_hooks and
10632         fur_hooks explicitly extern.
10633
10634 2009-06-16  Ian Lance Taylor  <iant@google.com>
10635
10636         * df-problems.c (df_byte_lr_alloc): Don't set problem_data to itself.
10637         * vec.c (vec_gc_o_reserve_1): Don't set alloc to itself.
10638
10639 2009-06-16  Ian Lance Taylor  <iant@google.com>
10640
10641         * resource.c (mark_referenced_resources): Change
10642         include_delayed_effects parameter to bool.  Change all callers.
10643         (mark_end_of_function_resources): Likewise.
10644         * reorg.c (insn_references_resource_p): Likewise.
10645         (insn_sets_resource_p): Likewise.
10646         * resource.h (mark_referenced_resources): Update declaration.
10647         (mark_end_of_function_resources): Update declaration.
10648
10649 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
10650
10651         * config/rs6000/aix.h (LIBSTDCXX_STATIC): Remove -lstdc++.
10652
10653 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
10654
10655         * doc/install.texi (*-*-aix): Update explanation of XLC bootstrap.
10656         GCC can bootstrap on AIX with GNU Binutils 2.20.
10657
10658 2009-06-16  Ian Lance Taylor  <iant@google.com>
10659
10660         * Makefile.in (tree-vect-stmts.o): Depend upon $(TOPLEV_H).
10661
10662 2009-06-16  Ian Lance Taylor  <iant@google.com>
10663
10664         * toplev.h (floor_log2): If GCC_VERSION >= 3004, declare as static
10665         inline, not extern inline.
10666         (exact_log2): Likewise.
10667         * toplev.c (floor_log2): Only define if GCC_VERSION < 3004. Don't
10668         test CLZ_HWI.
10669         (exact_log2): Likewise, but don't test CTZ_HWI.
10670
10671 2009-06-16  Ian Lance Taylor  <iant@google.com>
10672
10673         * bitmap.c (bitmap_clear): Don't declare as inline.
10674         * gimple.c (gimplify_assign): Likewise.
10675         * tree-ssa-sccvn.c (vn_nary_op_compute_hash): Likewise.
10676         * haifa-sched.c (insn_cost): Don't declare with HAIFA_INLINE.
10677         (sched_scan_info): Remove duplicate definition.
10678
10679 2009-06-16  Ian Lance Taylor  <iant@google.com>
10680
10681         * c-common.c (skip_evaluation): Don't define.
10682         (c_inhibit_evaluation_warnings): Define global variable.
10683         (overflow_warning): Check c_inhibit_evaluation_warnings rather
10684         than skip_evaluation.
10685         (convert_and_check, warn_for_div_by_zero): Likewise.
10686         * c-common.h (skip_evaluation): Don't declare.
10687         (c_inhibit_evaluation_warnings): Declare.
10688         * c-parser.c (c_parser_typeof_specifier): Set
10689         c_inhibit_evaluation_warnings rather than skip_evaluation.
10690         (c_parser_conditional_expression): Likewise.
10691         (c_parser_binary_expression): Likewise.
10692         (c_parser_sizeof_expression): Likewise.
10693         (c_parser_alignof_expression): Likewise.
10694         * c-typeck.c (build_indirect_ref): Check
10695         c_inhibit_evaluation_warnings rather than skip_evaluation.
10696         (build_conditional_expr, build_binary_op): Likewise.
10697
10698 2009-06-16  Richard Guenther  <rguenther@suse.de>
10699
10700         * tree-ssa-alias.c (is_escape_site): Remove.
10701         * tree-ssa-alias.h (enum escape_type): Remove.
10702         (is_escape_site): Likewise.
10703         * tree-ssa-structalias.c (find_func_aliases): Handle escapes
10704         via casts and asms without deferring to is_escape_site.
10705
10706 2009-06-16  Jakub Jelinek  <jakub@redhat.com>
10707
10708         PR middle-end/40446
10709         * expr.c (expand_expr_real_1) <case VIEW_CONVERT_EXPR>: Don't
10710         use gen_lowpart if op0 has complex mode.
10711
10712 2009-06-16  Richard Guenther  <rguenther@suse.de>
10713
10714         * tree-ssa-structalias.c (do_ds_constraint): Stores in global
10715         variables add them to ESCAPED.
10716         (find_func_aliases): Do not make all indirectly stored values escaped.
10717
10718 2009-06-16  Rafael Avila de Espindola  <espindola@google.com>
10719
10720         * config/i386/winnt.c (i386_pe_encode_section_info): Update call to
10721         make_decl_one_only.
10722
10723 2009-06-16  Martin Jambor  <mjambor@suse.cz>
10724
10725         PR tree-optimization/40432
10726         * tree-sra.c (sra_modify_assign): When creating VIEW_CONVERT_EXPR,
10727         check whether we need to force gimple register operand.
10728
10729 2009-06-16  Martin Jambor  <mjambor@suse.cz>
10730
10731         PR tree-optimization/40413
10732         * tree-sra.c (load_assign_lhs_subreplacements): Pass offset to
10733         build_ref_for_offset.
10734         (propagate_subacesses_accross_link): Fix a typo in a comment.
10735
10736 2009-06-16  Ira Rosen  <irar@il.ibm.com>
10737
10738         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
10739         with additional parameter.
10740         * tree-vectorizer.h (enum vect_def_type): Add new value
10741         vect_nested_cycle.
10742         (enum vect_relevant): Add comments.
10743         (vect_is_simple_reduction): Add new argument.
10744         * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Add comments.
10745         Detect nested cycles.
10746         (vect_is_simple_reduction): Update documentation, add an argument to
10747         distinguish inner-loop reduction from nested cycle, detect nested
10748         cycles, fix printings and indentation, don't swap operands in case
10749         of nested cycle.
10750         (get_initial_def_for_reduction): Handle subtraction.
10751         (vect_create_epilog_for_reduction): Add new argument to specify
10752         reduction variable.
10753         (vect_finalize_reduction): Handle subtraction, fix comments.
10754         (vectorizable_reduction): Handle nested cycles. In case of nested
10755         cycle keep track of the reduction variable position. Call
10756         vect_is_simple_reduction with additional parameter. Use original
10757         statement code in reduction epilogue for nested cycle. Call
10758         vect_create_epilog_for_reduction with additional parameter.
10759         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Assert
10760         inner-loop vectorization.
10761         (vect_recog_widen_sum_pattern): Likewise.
10762         * tree-vect-stmts.c (process_use): Distinguish between nested cycles
10763         and reductions.
10764         (vect_mark_stmts_to_be_vectorized): Likewise.
10765         (vect_get_vec_def_for_operand): Handle nested cycles.
10766
10767 2009-06-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10768
10769         * doc/invoke.texi (Debugging Options): Fix option index entries
10770         for -fdump-statistics, -frandom-seed add entries for
10771         -fdump-tree-original, -fdump-tree-optimized, -frandom-seed.
10772         (FRV Options): Fix entries for -mTLS, -mtls.
10773         (HPPA Options): Fix entries for -mgnu-ld, -mhp-ld.
10774         (i386 and x86-64 Options): Fix entry for -mno-red-zone.
10775         (M68hc1x Options): Fix @itemx for -mnominmax.
10776         (MCore Options): Fix entry for -mno-lsim.
10777         (MMIX Options): Fix entry for -mabi=mmixware.
10778         (PDP-11 Options): Fix entry for -mbcopy-builtin.
10779
10780 2009-06-16  Basile Starynkevitch  <basile@starynkevitch.net>
10781
10782         * doc/plugins.texi (Interacting with the GCC Garbage Collector):
10783         Mention the plugin mode of gengtype.
10784         * doc/gty.texi (Source Files Containing Type Information): Likewise.
10785         * gengtype.c: Updated copyright.
10786         (plugin_files, nb_plugin_files) Added new static variables.
10787         (measure_input_list) Care about plugin_files.
10788         (write_rtx_next): Added early return in plugin mode.
10789         (create_file): Updated copyright year in generated file. Added
10790         asserts.
10791         (oprintf): Added early return if NULL outf.
10792         (get_output_file_with_visibility): Care of plugin_files.
10793         (get_output_file_name): May return null.
10794         (write_local): Added early return.
10795         (put_mangled_filename): Ditto.
10796         (finish_root_table): Added check for base_files.
10797         (write_roots): Care about null when plugins.
10798         (main): Added plugin mode.
10799
10800 2009-06-15  Ian Lance Taylor  <iant@google.com>
10801
10802         * df-problems.c (df_simulate_one_insn_forwards): Fix braces in switch.
10803         * gcov.c (read_count_file): Add braces around variables declared
10804         before label.
10805
10806         * c.opt (Wjump-misses-init): New warning.
10807         * c-opts.c (c_common_handle_option): Set warn_jump_misses_init for
10808         -Wall and -Wc++-compat if not already set.
10809         (c_common_post_options): Clear warn_jump_misses_init if it was not
10810         set.
10811         * c-decl.c (struct c_binding): Change type field to a union with
10812         new label field.  Make it the first field in the struct.  Update
10813         references to type to use u.type instead.
10814         (struct c_spot_bindings): Define.
10815         (struct c_goto_bindings): Define.
10816         (c_goto_bindings_p): Define, along with VECs.
10817         (struct c_label_vars): Define.
10818         (struct c_scope): Add has_label_bindings field.
10819         (bind_label, set_spot_bindings): New static functions.
10820         (decl_jump_unsafe, update_spot_bindings): New static functions.
10821         (update_label_decls): New static function.
10822         (pop_scope): Call update_label_decls.  Don't call c_end_vm_scope.
10823         Update binding u.label field to shadowed field.
10824         (c_binding_start_stmt_expr): New function.
10825         (c_binding_end_stmt_expr): New function.
10826         (pushdecl): Don't call c_begin_vm_scope.
10827         (make_label): Add defining and p_label_vars parameters.  Change
10828         all callers.
10829         (lookup_label): Correct test for whether a label has not yet been
10830         defined.  Call bind_label rather than bind.
10831         (warn_about_goto): New static function.
10832         (lookup_label_for_goto): New function.
10833         (declare_label): Call bind_label rather than bind.
10834         (check_earlier_gotos): New static function.
10835         (define_label): Don't give errors about jumping into statement
10836         expressions or scopes of variably modified types.  Call
10837         set_spot_bindings and check_earlier_gotos.  Call bind_label
10838         instead of bind.  Don't set label_context_stack_se or
10839         label_context_stack_vm.
10840         (c_get_switch_bindings): New function.
10841         (c_release_switch_bindings): New function.
10842         (c_check_switch_jump_warnings): New function.
10843         (start_function): Don't set label_context_stack_se or
10844         label_context_stack_vm.
10845         (finish_function): Likewise.
10846         * c-typeck.c (label_context_stack_se): Don't define.
10847         (label_context_stack_vm): Don't define.
10848         (c_finish_goto_label): Call lookup_label_for_goto rather than
10849         lookup_label.  Don't give errors about jumping into a statement
10850         expression or the scope of a variably modified type.  Don't set
10851         label_context_stack_se or label_context_stack_vm.
10852         (struct c_switch): Remove blocked_stmt_expr and blocked_vm
10853         fields.  Add bindings field.
10854         (c_start_case): Don't set deleted fields.  Set bindings field.
10855         (do_case): Rework order of tests.  Don't check blocked_stmt_expr
10856         or blocked_vm.  Call c_check_switch_jump_warnings.
10857         (c_finish_case): Don't test blocked_stmt_expr field.  Call
10858         c_release_switch_bindings.
10859         (c_begin_stmt_expr): Don't increment blocked_stmt_expr in
10860         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
10861         set label_context_stack_se.  Call c_bindings_start_stmt_expr.
10862         (c_finish_stmt_expr): Don't decrement blocked_stmt_expr in
10863         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
10864         set label_context_stack_se.  Call c_bindings_end_stmt_expr.
10865         (c_begin_vm_scope, c_end_vm_scope): Don't define.
10866         * c-tree.h (C_DECL_UNJUMPABLE_STMT_EXPR): Don't define.
10867         (C_DECL_UNDEFINABLE_STMT_EXPR): Don't define.
10868         (C_DECL_UNJUMPABLE_VM): Don't define.
10869         (C_DECL_UNDEFINABLE_VM): Don't define.
10870         (struct c_label_list): Don't define.
10871         (struct c_label_context_se): Don't define.
10872         (struct c_label_context_vm): Don't define.
10873         (struct c_spot_bindings): Declare.
10874         (c_bindings_start_stmt_expr): Declare.
10875         (c_bindings_end_stmt_expr): Declare.
10876         (lookup_label_for_goto): Declare.
10877         (c_get_switch_bindings, c_release_switch_bindings): Declare.
10878         (c_check_switch_jump_warnings): Declare.
10879         (label_context_stack_se, label_context_stack_vm): Don't declare.
10880         (c_finish_goto_label): Update declaration.
10881         (c_begin_vm_scope, c_end_vm_scope): Don't declare.
10882         * doc/invoke.texi (Option Summary): Mention -Wjump-misses-init.
10883         (Warning Options): Document -Wjump-misses-init.
10884
10885 2009-06-15  Jakub Jelinek  <jakub@redhat.com>
10886
10887         * tree-object-size.c (addr_object_size): Fix a pasto in the last
10888         change.
10889
10890 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
10891
10892         * cgraph.c (cgraph_make_node_local): Use DECL_COMDAT_GROUP.
10893
10894 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
10895
10896         * except.c (init_eh): Use BUILTINS_LOCATION when calling build_decl.
10897
10898 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
10899
10900         * tree-eh.c (lower_try_finally_switch): Initialize tf_loc.
10901
10902 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
10903
10904         * cgraphunit.c (cgraph_function_versioning,save_inline_function_body):
10905         Use DECL_COMDAT_GROUP instead of DECL_ONE_ONLY.
10906         * cgraph.c (cgraph_create_virtual_clone): Use DECL_COMDAT_GROUP.
10907         * config/i386/i386.c (ix86_file_end): Compute DECL_COMDAT_GROUP.
10908         * dwarf2asm.c (dw2_force_const_mem): Update call to
10909         make_decl_one_only.
10910         * langhooks-def.h (lhd_comdat_group, LANG_HOOKS_COMDAT_GROUP): Remove.
10911         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_COMDAT_GROUP.
10912         * langhooks.c (lhd_comdat_group): Remove.
10913         * langhooks.h (lang_hooks_for_decls): Remove comdat_group.
10914         * tree.h (DECL_COMDAT_GROUP): New.
10915         (DECL_ONE_ONLY): Use DECL_COMDAT_GROUP.
10916         (tree_decl_with_vis): Add comdat_group. Remove one_only.
10917         (make_decl_one_only): Change signature.
10918         * varasm.c (get_emutls_init_templ_addr, emutls_decl): Update call to
10919         make_decl_one_only.
10920         (make_decl_one_only): Change signature.
10921         (default_elf_asm_named_section): Use DECL_COMDAT_GROUP.
10922
10923 2009-06-15  Richard Guenther  <rguenther@suse.de>
10924
10925         PR middle-end/40439
10926         * tree.c (widest_int_cst_value): Fix bootstrap on 32bit HWI hosts.
10927
10928 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
10929
10930         * tree-ssa-math-opts.c: Remove extra divide.
10931
10932 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
10933
10934         * config/s390/s390.md ("bswap<mode>2"): Only available on z900.
10935
10936 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
10937
10938         * passes.c: Add bswap pass.
10939         * tree-pass.h: Add pass_optimize_bswap declaration.
10940         * tree-ssa-math-opts.c: Include diagnostics.h for print_gimple_stmt.
10941         Include rtl.h, expr.h and optabs.h for optab_handler check.
10942         (struct symbolic_number, pass_optimize_bswap): New definition.
10943         (do_shift_rotate, verify_symbolic_number_p): New functions.
10944         (find_bswap_1, find_bswap, execute_optimize_bswap): New functions.
10945         (gate_optimize_bswap): New function.
10946         * tree.c (widest_int_cst_value): New function.
10947         * tree.h (widest_int_cst_value): Prototype added.
10948
10949 2009-06-14  Steven Bosscher  <steven@gcc.gnu.org>
10950
10951         * cfgcleanup.c (old_insns_match_p): Remove code to substitute
10952         REG_EQUAL/REG_EQUIV notes.
10953
10954 2009-06-14  Richard Guenther  <rguenther@suse.de>
10955
10956         PR middle-end/40389
10957         * gimple.c (walk_stmt_load_store_addr_ops): The LHS of a call
10958         has its address taken if NRV was applied and it is addressable.
10959         * tree-ssa-structalias.c (get_constraint_for_address_of): New
10960         function split out from ...
10961         (get_constraint_for_1): ... here.
10962         (handle_rhs_call): Use it to mark the return slot escaped if
10963         it is addressable and NRV was applied.
10964
10965 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
10966
10967         * config/rs6000/rs6000-protos.h (altivec_resolve_overloaded_builtin):
10968         Change first argument type to location_t.
10969         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Same.
10970         Do not set input_location.
10971         Use loc instead of input_location throughout.
10972
10973 2009-06-13  Richard Guenther  <rguenther@suse.de>
10974
10975         PR tree-optimization/40421
10976         * tree-predcom.c (should_unroll_loop_p): Remove.
10977         (tree_predictive_commoning_loop): Use can_unroll_loop_p.
10978
10979 2009-06-13  Michael Meissner  <meissner@linux.vnet.ibm.com>
10980
10981         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
10982         Add location argument.
10983
10984 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
10985
10986         * config/alpha/alpha.c (alpha_build_builtin_va_list): Pass location to
10987         build_decl.
10988         * config/s390/s390.c (s390_build_builtin_va_list): Same.
10989         (s390_gimplify_va_arg): Pass location to create_artificial_label.
10990         * config/spu/spu-protos.h: Add location to
10991         spu_resolve_overloaded_builtin.
10992         * config/spu/spu.c (spu_build_builtin_va_list): Pass location to
10993         spu_build_builtin_va_list.
10994         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Add location
10995         argument.  Pass location to build_function_call_vec.
10996         * config/sh/sh.c (sh_build_builtin_va_list): Pass location to
10997         build_decl.
10998         (emit_fpu_switch): Same.
10999         (sh_gimplify_va_arg_expr): Pass location to create_artificial_label.
11000         * config/xtensa/xtensa.c (xtensa_build_builtin_va_list): Pass location
11001         to build_decl and create_artificial_label.
11002         (xtensa_gimplify_va_arg_expr): Same.
11003         * config/stormy16/stormy16.c (xstormy16_build_builtin_va_list): Same.
11004         (xstormy16_gimplify_va_arg_expr): Same.
11005         * config/iq2000/iq2000.c (iq2000_expand_prologue): Same.
11006         * config/arm/arm.c (arm_build_builtin_va_list): Same.
11007         * config/mips/mips.c (mips_build_builtin_va_list): Same.
11008         (mips16_build_function_stub): Same.
11009         (mips16_build_call_stub): Same.
11010
11011 2009-06-13  Richard Earnshaw  <rearnsha@arm.com>
11012
11013         PR target/40327
11014         * arm/constraints.md (Pa, Pb): New constraints.
11015         * arm/arm.md (thumb1_addsi3): Support more complex additions.  Add a
11016         split pattern to deal with them.
11017
11018 2009-06-13  Joerg Sonnenberger  <joerg@britannica.bec.de>
11019
11020         * doc/invoke.texi: Add missing option -Wp,OPTION in list,
11021         fix index entry for -Xpreprocessor.
11022
11023 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
11024
11025         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
11026         Add location argument to build_decl call.
11027         * config/rs6000/rs6000.c (rs6000_build_builtin_va_list): Same.
11028         (rs6000_init_builtins): Same.
11029         (spe_init_builtins): Same.
11030         (rs6000_gimplify_va_arg): Add location argument to
11031         create_artificial_label call.
11032
11033 2009-06-12  Steven Bosscher  <steven@gcc.gnu.org>
11034
11035         * timevar.def (TV_COMBINE_STACK_ADJUST): New timevar.
11036         * combine-stack-adj.c (pass_stack_adjustments): Use it.
11037         * Makefile.in: Fix GGC dependency for gcse.o.
11038
11039 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
11040
11041         * tree-pretty-print.c (dump_generic_node): Dump column numbers.
11042         * gimple-pretty-print.c (dump_gimple_stmt): Same.
11043         * gimplify.c (gimplify_modify_expr): Set location for GIMPLE_ASSIGNs
11044         created.
11045         * c-parser.c (c_parser_binary_expression): Use current column while
11046         building binary operations.
11047         * common.opt (fshow-column): Enable by default.
11048         * tree-vrp.c (check_array_ref): Use warning_at.
11049         (check_array_bounds): Use location from call back if expr has no
11050         location.
11051         * tree.h: Add location argument to maybe_fold_*.
11052         * tree-ssa-ccp.c (ccp_fold): Pass location to maybe_fold_*.
11053         (maybe_fold_offset_to_array_ref): Add location argument and use it.
11054         (maybe_fold_offset_to_component_ref): Same.
11055         (maybe_fold_offset_to_reference): Same.
11056         (maybe_fold_offset_to_address): Same.
11057         (maybe_fold_stmt_indirect): Same.
11058         (maybe_fold_stmt_addition): Same.
11059         (fold_stmt_r): Pass location to maybe_fold_*.
11060         (fold_gimple_assign): Same.
11061         * c-tree.h: Add location argument to finish_decl,
11062         default_function_array_conversion, store_init_value.
11063         * c-decl.c (define_label): Use error_at.
11064         (c_make_fname_decl): Pass location to finish_decl.
11065         (finish_decl): New location argument.
11066         (build_compound_literal): Pass location to store_init_value.
11067         (grokdeclarator): Pass location to finish_decl.
11068         (grokfield): Same.
11069         * c-typeck.c (array_to_pointer_conversion): New location argument.
11070         (function_to_pointer_conversion): Same.
11071         (default_function_array_conversion): Same.
11072         (parser_build_unary_op): Pass location to overflow_warning.
11073         (parser_build_binary_op): Same.  Use warning_at.
11074         (build_unary_op): Pass location to array_to_pointer_conversion.
11075         (build_c_cast): Pass location to digest_init.
11076         (build_modify_expr): New location argument.
11077         (convert_for_assignment): Same.
11078         (store_init_value): Same.
11079         (digest_init): Same.
11080         (output_init_element): Pass location to digest_init and
11081         array_to_pointer_conversion.
11082         (c_finish_return): Pass location to convert_for_assignment.
11083         * gimplify.c (gimplify_conversion): Pass location to
11084         maybe_fold_offset_to_address.
11085         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Pass location
11086         to maybe_fold_stmt_addition.
11087         * c-omp.c (c_finish_omp_atomic): Pass new location to
11088         build_modify_expr.
11089         (c_finish_omp_for): Same.
11090         * c-common.c (overflow_warning): New argument.
11091         * c-common.h: New argument to build_modify_expr, overflow_warning.
11092         * c-parser.c (c_parser_declaration_or_fndef): Pass location to
11093         finish_decl.
11094         (c_parser_initializer): Pass location to
11095         default_function_array_conversion.
11096         (c_parser_initelt): Same.
11097         (c_parser_initval): Same.
11098         (c_parser_asm_operands): Same.
11099         (c_parser_expr_no_commas): Same.  Pass location to build_modify_expr.
11100         (c_parser_conditional_expression): Same.
11101         (c_parser_binary_expression): Add location info to stack.  Use it.
11102         (c_parser_unary_expression): Pass location to
11103         default_function_array_conversion, parser_build_unary_op,
11104         build_indirect_ref, c_parser_postfix_expression_after_primary.
11105         (c_parser_postfix_expression_after_primary): New location argument.
11106         Use it.
11107         (c_parser_expression_conv): Pass location to
11108         default_function_array_conversion.
11109         (c_parser_expr_list): Same.
11110         (c_parser_omp_atomic): Same.
11111         (c_parser_omp_for_loop): Same.
11112         * c-tree.h: (struct c_declarator): Add comment to id_loc.
11113         (build_array_declarator): New argument.
11114         * c-decl.c (build_array_declarator): Add location argument.
11115         (grokdeclarator): Set id_loc for cdk_array.
11116         * c-parser.c (c_parser_direct_declarator_inner): Pass location to
11117         build_array_declarator.
11118         * tree.c (build_omp_clause): Add location argument.
11119         * tree.h (OMP_CLAUSE_HAS_LOCATION): New macro.
11120         (OMP_CLAUSE_LOCATION): New macro.
11121         (struct tree_omp_clause): Add location field.
11122         (build_omp_clause): Add argument.
11123         * testsuite/gcc.dg/gomp/for-1.c: Fix column.
11124         * cp/pt.c (tsubst_omp_for_iterator): Pass location to
11125         build_omp_clause.
11126         * cp/parser.c (cp_parser_omp_var_list_no_open): Same.
11127         (cp_parser_omp_clause_collapse): Same.
11128         (cp_parser_omp_clause_default): Same.
11129         (cp_parser_omp_clause_if): Same.
11130         (cp_parser_omp_clause_nowait): Same.
11131         (cp_parser_omp_clause_num_threads): Same.
11132         (cp_parser_omp_clause_ordered): Same.
11133         (cp_parser_omp_clause_schedule): Same.
11134         (cp_parser_omp_clause_untied): Same.
11135         (cp_parser_omp_for_loop): Same.
11136         (cp_parser_omp_parallel): Pass location to c_split_parallel_clauses.
11137         * c-tree.h (c_start_case): Add location argument.
11138         (c_process_expr_stmt): Same.
11139         (c_finish_goto_*): Same.
11140         * tree-parloops.c (initialize_reductions): Pass location to
11141         build_omp_clause.
11142         (create_parallel_loop): Same.
11143         * fortran/trans-openmp.c (gfc_trans_omp_variable_list): Same.
11144         (gfc_trans_omp_reduction_list): Same.
11145         (gfc_trans_omp_clauses): Same.
11146         (gfc_trans_omp_do): Same.
11147         * c-typeck.c (c_finish_goto_label): Same.
11148         (c_finish_goto_ptr): New location argument.
11149         (c_start_case): Same.
11150         (emit_side_effect_warnings): Same.
11151         (c_process_expr_stmt): Same.
11152         (c_finish_stmt_expr): Same.
11153         (c_finish_omp_clauses): Use error_at instead of error.
11154         * gimplify.c (gimplify_adjust_omp_clauses_1): Pass location to
11155         build_omp_clause.
11156         * c-omp.c (c_split_parallel_clauses): New location argument.
11157         * tree-nested.c (convert_nonlocal_reference_stmt): Pass location
11158         to build_omp_clause.
11159         (convert_local_reference_stmt): Same.
11160         (convert_gimple_call): Same.
11161         * c-common.h (c_split_parallel_clauses): New argument.
11162         * c-parser.c (c_parser_statement_after_labels): Pass location to
11163         c_finish_goto_label.
11164         (c_parser_switch_statement): Pass location to c_start_case.
11165         (c_parser_for_statement): Pass location to c_finish_expr_stmt,
11166         and c_process_expr_stmt.
11167         (c_parser_omp_variable_list): Add location argument.
11168         (c_parser_omp_clause_collapse): Pass location to build_omp_clause.
11169         (c_parser_omp_clause_default): Same.
11170         (c_parser_omp_clause_if): Same.
11171         (c_parser_omp_clause_num_threads): Same.
11172         (-c_parser_omp_clause_ordered): Same.
11173         (c_parser_omp_clause_reduction): Pass location to
11174         c_parser_omp_variable_list.
11175         (c_parser_omp_clause_schedule): Pass location to build_omp_clause.
11176         (c_parser_omp_clause_untied): Same.
11177         (c_parser_omp_for_loop): Pass location to c_process_expr_stmt.
11178         (c_parser_omp_parallel): Pass location to c_split_parallel_clauses.
11179
11180         * c-tree.h (check_for_loop_decls, undeclared_variable,
11181         build_component_ref, build_array_ref, build_external_ref,
11182         c_expr_sizeof_expr, c_expr_sizeof_type, parser_build_unary_op,
11183         build_conditional_expr, build_compound_expr, c_cast_expr,
11184         build_c_cast, build_asm_expr, c_end_compound_stmt, c_finish_stmt_expr,
11185         c_finish_return, c_finish_omp_parallel, c_finish_omp_task): New
11186         argument.
11187         * c-semantics.c (build_stmt): Same.
11188         (build_case_label): Same.
11189         * c-decl.c (c_finish_incomplete_decl): Pass location on down.
11190         (undeclared_variable): New argument.
11191         (make_label): Same.
11192         (lookup_label): Pass location on down.
11193         (define_label): Same.
11194         (finish_decl): Same.
11195         (build_compound_literal): Same.
11196         (finish_struct): Same.
11197         (finish_function): Do not set location here.
11198         (check_for_loop_decls): New argument.
11199         * tree.c (save_expr): Set location.
11200         (build_empty_stmt): New argument.
11201         * tree.h (build_empty_stmt): New argument to build_empty_stmt.
11202         (CAN_HAVE_LOCATION_P): Make sure we have a non empty node.
11203         * builtins.c (gimplify_va_arg_expr): Use locations.
11204         (expand_builtin_sync_operation): Same.
11205         * c-typeck.c (build_component_ref): New argument.
11206         (build_array_ref): Same.
11207         (build_external_ref): Same.
11208         (c_expr_sizeof_expr): Same.
11209         (c_expr_sizeof_type): Same.
11210         (parser_build_unary_op): Same.
11211         (build_conditional_expr): Same.
11212         (build_compound_expr): Pass location on down.
11213         (build_compound_expr): New argument.
11214         (build_c_cast): Same.
11215         (c_cast_expr): Same.
11216         (build_asm_expr): Same.
11217         (c_finish_return): Same.
11218         (c_process_expr_stmt): Pass location on down.
11219         (c_finish_stmt_expr): New argument.
11220         (push_clenaup): Same.
11221         (c_finish_omp_parallel): Same.
11222         (c_finish_omp_task): Same.
11223         * gimplify.c (gimplify_call_expr): Pass location on down.
11224         * c-omp.c (c_finish_omp_master): New argument.
11225         (c_finish_omp_critical): Same.
11226         (c_finish_omp_ordered): Same.
11227         (c_finish_omp_barrier): Same.
11228         (-c_finish_omp_taskwait): Same.
11229         (c_finish_omp_atomic): Same.
11230         (c_finish_omp_flush): Same.
11231         * tree-inline.c (copy_tree_body_r): Pass location on down.
11232         (inline_forbidden_p): Remove use of input_location.
11233         * c-gimplify.c (c_build_bind_expr): New argument.
11234         * c-common.c (c_common_truthvalue_conversion): Pass location on down.
11235         (c_sizeof_or_alignof_type): New argument.
11236         (c_alignof_expr): Same.
11237         (build_va_arg): Same.
11238         (c_add_case_label): Same.
11239         * c-common.h (c_sizeof_or_alignof_type, c_alignof_expr,
11240         c_sizeof, c_alignof, build_va_arg, build_stmt, build_case_label,
11241         c_build_bind_expr, objc_build_selector_expr, objc_build_throw_stmt,
11242         c_finish_omp_master, c_finish_omp_critical, c_finish_omp_ordered,
11243         c_finish_omp_barrier, c_finish_omp_atomic, c_finish_omp_flush,
11244         c_finish_omp_taskwait, c_finish_omp_for, c_split_parallel_clauses):
11245         New argument.
11246         * stub-objc.c (objc_build_selector_expr): Same.
11247         (objc_build_throw_stmt): Same.
11248         * c-parser.c (c_parser_declaration_or_fndef): Pass location on down.
11249         (c_parser_initelt): Same.
11250         (c_parser_compound_statement): Same.
11251         (c_parser_compound_statement_nostart): Same.
11252         (c_parser_label): Same.
11253         (c_parser_statement_after_labels): Same.
11254         (c_parser_if_body): Same.
11255         (c_parser_else_body): Same.
11256         (c_parser_if_statement): Same.
11257         (c_parser_switch_statement): Same.
11258         (c_parser_while_statement): Same.
11259         (c_parser_do_statement): Same.
11260         (c_parser_for_statement): Same.
11261         (c_parser_asm_statement): Same.
11262         (c_parser_conditional_expression): Same.
11263         (c_parser_binary_expression): Same.
11264         (c_parser_cast_expression): Same.
11265         (c_parser_unary_expression): Same.
11266         (c_parser_sizeof_expression): Same.
11267         (c_parser_alignof_expression): Same.
11268         (c_parser_postfix_expression): Same.
11269         (c_parser_expression): Same.
11270         (c_parser_objc_receiver): Same.
11271         (c_parser_omp_variable_list): Same.
11272         (c_parser_omp_structured_block): Same.
11273         (c_parser_omp_atomic): New argument.
11274         (c_parser_omp_barrier): Same.
11275         (c_parser_omp_critical): Same.
11276         (c_parser_omp_flush): Pass location on down.
11277         (c_parser_omp_for_loop): New argument.
11278         (c_parser_omp_for): Same.
11279         (c_parser_omp_master): Same.
11280         (c_parser_omp_ordered): Same.
11281         (c_parser_omp_sections_scope): Same.
11282         (c_parser_omp_sections): Same.
11283         (c_parser_omp_parallel): Same.
11284         (c_parser_omp_single): Same.
11285         (c_parser_omp_task): Same.
11286         (c_parser_omp_taskwait): Pass location on down.
11287         (c_parser_omp_construct): Same.
11288         (c_parser_omp_threadprivate): Same.
11289         * dwarf2asm.c, targhooks.c, optabs.c, tree.c, tree.h, target.h,
11290         builtins.c, omp-low.c, cgraphunit.c, tree-call-cdce.c,
11291         tree-ssa-alias.c, gimple-low.c, c-tree.h, expr.c, tree-parloops.c,
11292         c-decl.c, tree-eh.c, langhooks.c, function.c, stor-layout.c,
11293         c-typeck.c, gimplify.c, c-pragma.c, expmed.c, except.c, coverage.c,
11294         emit-rtl.c, cfgexpand.c, tree-mudflap.c, varasm.c, tree-nested.c,
11295         rtl.h, tree-inline.c, tree-profile.c, c-common.c, c-common.h,
11296         tree-switch-conversion.c, tree-cfg.c, ipa-struct-reorg.c, c-parser.c,
11297         config/i386/i386.c, stmt.c:
11298         Add location argument to the following function definitions and/or
11299         function calls: build_decl, objcp_start_struct, objcp_finish_struct,
11300         start_struct, finish_struct, PUSH_FIELD, create_artificial_label,
11301         cp_make_fname_decl, pushtag, implicitly_declare, c_make_fname_decl,
11302         build_compound_literal, parser_xref_tag, resolve_overloaded_builtin,
11303         do_case, c_finish_bc_stmt, build_compound_literal,
11304         build_function_call.
11305         * c-decl.c (build_compound_literal): Add location argument.
11306         Make all diagnostic calls use location.
11307         (start_struct): Same.
11308         (finish_struct): Same.
11309         (start_enum): Same.
11310         (build_enumerator): Same.
11311         (start_function): Same.
11312         (grokdeclarator): Make all diagnostic calls use location.
11313         (store_parm_decls_oldstyle): Same.
11314         * c-typeck.c (build_function_call): Add location argument.
11315         Make all diagnostic calls use location.
11316         (do_case): Same.
11317         (c_finish_bc_stmt): Same.
11318         * tree-nested.c (get_trampoline_type): Add argument.
11319         Pass location to build_decl.
11320         (lookup_tramp_for_decl): Pass location to get_trampoline_type.
11321         * rtl.h (RTL_LOCATION): New.
11322         * c-common.c (c_add_case_label): Add location argument.
11323         Make all diagnostic calls use location.
11324         * c-common.h: Add location argument to make_fname_decl, do_case,
11325         c_add_case_label, build_function_call, resolve_overloaded_builtin.
11326         * c-parser.c (c_parser_enum_specifier): Rename ident_loc to enum_loc.
11327         Set it appropriately for every case.  Pass enum_loc to start_enum
11328         call.  Pass value_loc first to build_enumerator.  Pass enum_loc to
11329         parser_xref_tag.
11330         (c_parser_struct_or_union_specifier): Save location.  Use it for
11331         start_struct, finish_struct, and parser_xref_tag.
11332
11333 2009-06-12  Ian Lance Taylor  <iant@google.com>
11334
11335         * fold-const.c (fold_unary): Rename local variable and to and_expr.
11336
11337         * c-opts.c (c_common_handle_option): For -Wc++-compat set
11338         cpp_opts->warn_cxx_operator_names.
11339
11340 2009-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11341
11342         PR tree-opt/38865
11343         * tree-ssa-sccvn.c (visit_reference_op_load): If vn_reference_lookup
11344         is returns NULL and OP is a VCE, look through the VCE.
11345
11346 2009-06-12  Ian Lance Taylor  <iant@google.com>
11347
11348         PR bootstrap/40430
11349         * collect2.c (main): Use CONST_CAST2 in code inside #if
11350         LINK_ELIMINATE_DUPLICATE_LDIRECTORIES.
11351
11352 2009-06-12  Joey Ye  <joey.ye@intel.com>
11353
11354         PR middle-end/39146
11355         * cfgexpand.c (get_decl_align_unit): Update
11356         max_used_stack_slot_alignment with align instead of
11357         stack_alignment_needed.
11358
11359         * function.c (assign_stack_local_1): Update
11360         max_used_stack_slot_alignment with alignment_in_bits instead
11361         of stack_alignment_needed.
11362         (locate_and_pad_parm): Don't update max_used_stack_slot_alignment
11363         here.
11364
11365 2009-06-12  Jakub Jelinek  <jakub@redhat.com>
11366
11367         * dwarf2out.c (last_var_location_insn): New variable.
11368         (dwarf2out_end_epilogue): Clear last_var_location_insn.
11369         (dwarf2out_var_location): Don't record anything after last real
11370         insn.  Only change labels if there were any real instructions
11371         in between last note and this one, or if changed sections.
11372
11373 2009-06-11  Richard Henderson  <rth@redhat.com>
11374
11375         * alpha.c (alpha_expand_prologue): Add a REF_CFA_REGISTER
11376         note when storing the frame pointer in a register.
11377         (FRP): Don't redefine to nothing for epilogue.
11378         (alpha_expand_epilogue): Mark register and sp restores.
11379         (unicosmk_gen_dsib): Don't mark weird frame pointer adjust.
11380
11381         * config/alpha/alpha.c (alpha_emit_setcc): Fix test for
11382         when gen_lowpart is needed.
11383
11384 2009-06-11  Richard Henderson  <rth@redhat.com>
11385
11386         * dwarf2out.c (def_cfa_1): Likewise for DW_CFA_cfa_offset.
11387
11388         * dwarf2out.c (need_data_align_sf_opcode): New.
11389         (div_data_align): Move earlier.
11390         (def_cfa_1, reg_save): Use it.
11391
11392 2009-06-11  H.J. Lu  <hongjiu.lu@intel.com>
11393
11394         * config/i386/i386.c (OPTION_MASK_ISA_CRC32_SET): New.
11395         (OPTION_MASK_ISA_CRC32_UNSET): Likewise.
11396         (ix86_handle_option): Handle OPT_mcrc32.
11397         (ix86_target_string): Add -mcrc32.
11398         (bdesc_args): Enable crc32 builtins with OPTION_MASK_ISA_CRC32.
11399
11400         * config/i386/i386.h (TARGET_CRC32): New.
11401
11402         * config/i386/i386.md (sse4_2_crc32<mode>): Also check TARGET_CRC32.
11403         (sse4_2_crc32di): Likewise.
11404
11405         * config/i386/i386.opt (mcrc32): New.
11406
11407         * doc/invoke.texi: Document -mcrc32.
11408
11409 2009-06-11  Richard Henderson  <rth@redhat.com>
11410
11411         * common.opt (gdwarf-): Accept a version number.
11412         * doc/invoke.texi (gdwarf-): Update docs.
11413         * opth-gen.awk: Special case -gdwarf+ to OPT_gdwarfplus.
11414         * opts.c (common_handle_option) [OPT_gdwarf_]: Verify dwarf
11415         version level, and record it.
11416
11417         * dwarf2.h (DW_CIE_VERSION): Remove.
11418         * dwarf2out.c (DWARF_VERSION): Remove.
11419         (add_fde_cfi): Skip DW_CFA_set_loc addition for dwarf3.
11420         (output_call_frame_info): Use CIE version 3 for dwarf3,
11421         or if the return register column is out of range for version 1.
11422         (dwarf_stack_op_name): Add all dwarf3 values.
11423         (DEBUG_PUBTYPES_SECTION): New.
11424         (size_of_die) [dw_val_class_die_ref]: Handle DW_FORM_ref_addr
11425         encoding change for dwarf3.
11426         (output_die) [dw_val_class_die_ref]: Likewise.
11427         (output_compilation_unit_header): Emit correct version for dwarf3.
11428         (output_line_info): Likewise.
11429         (output_pubnames): Update for DWARF_VERSION removal.
11430         (output_aranges): Likewise.
11431         (gen_subprogram_die): Emit DW_OP_call_frame_cfa if emitting dwarf3.
11432         (dwarf2out_init): Don't ifdef DEBUG_PUBTYPES_SECTION.
11433         (dwarf2out_finish): Likewise.
11434
11435 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
11436
11437         * system.h (gcc_assert, gcc_unreachable): Revert accidental commit
11438         in r148403.
11439
11440 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
11441
11442         PR c/39252
11443         * doc/extend.texi ( __builtin_unreachable): Document new builtin.
11444         * builtins.c (expand_builtin_unreachable): New function.
11445         (expand_builtin): Handle BUILT_IN_UNREACHABLE case.
11446         * builtins.def (BUILT_IN_UNREACHABLE): Add new builtin.
11447         * cfgcleanup.c (try_optimize_cfg): Delete empty blocks with no
11448         successors.
11449         * cfgrtl.c (rtl_verify_flow_info): Handle empty blocks when
11450         searching for missing barriers.
11451
11452 2009-06-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
11453
11454         * config/darwin.h (LINK_COMMAND_SPEC): Adjust spec to link libcov
11455         when -fprofile-generate* was passed.
11456         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
11457
11458 2009-06-11  Anthony Green  <green@moxielogic.com>
11459
11460         * config/moxie/moxie.md: Define length attribute for all instructions.
11461         (rCC): Define.
11462         (*b<cond:code>): Support limited branch ranges for new PC-relative
11463         branch instructions.
11464         * config/moxie/moxie.h (HAS_LONG_UNCOND_BRANCH): Define.
11465
11466 2009-06-11  Jakub Jelinek  <jakub@redhat.com>
11467
11468         * config/i386/i386.c (min_insn_size): Use get_attr_length
11469         for normal insns other than TYPE_MULTI, TYPE_OTHER and TYPE_FCMP.
11470         For __asm return 0.
11471
11472         * config/i386/i386.c (ix86_pad_returns): Use emit_jump_insn_before
11473         instead of emit_insn_before.
11474
11475 2009-06-10  Ian Lance Taylor  <iant@google.com>
11476
11477         PR bootstrap/40408
11478         * graphite.c (add_conditions_to_domain): Change SWITCH_EXPR to
11479         GIMPLE_SWITCH.
11480
11481 2009-06-10  Revital Eres  <eres@il.ibm.com>
11482
11483         * passes.c (init_optimization_passes): Reschedule
11484         predictive-commoning pass before complete unroll pass.
11485
11486 2009-06-10  Martin Jambor  <mjambor@suse.cz>
11487
11488         * cgraph.c (cgraph_node_can_be_local_p): New function.
11489         (cgraph_make_node_local): New function.
11490         * cgraph.h (cgraph_node_can_be_local_p): Declare.
11491         (cgraph_make_node_local): Declare.
11492
11493 2009-06-10  Nathan Froyd  <froydnj@codesourcery.com>
11494
11495         * tree.h (tree_base): Add packed_flag and user_align fields.
11496         Decrease size of spare field.
11497         (TYPE_USER_ALIGN): Use user_align from tree_base.
11498         (DECL_USER_ALIGN): Likewise.
11499         (TYPE_PACKED): Use packed_flag from tree_base.
11500         (DECL_PACKED): Likewise.
11501         (tree_type): Delete packed_flag and user_align fields.  Widen
11502         precision field.  Widen mode field and shuffle fields to align
11503         mode on an 8-bit boundary.
11504         (tree_decl_common): Delete decl_flag_1 and user_align fields.
11505         Renumber decl_flag_* fields.  Fix comments.  Widen
11506         decl_common_unused field.
11507         (DECL_HAS_VALUE_EXPR_P): Adjust for renumbering of decl_flag_* fields.
11508         (DECL_EXTERNAL): Likewise.
11509         (DECL_BIT_FIELD): Likewise.
11510         (DECL_NONADDRESSABLE_P): Likewise.
11511         (TYPE_DECL_SUPRESS_DEBUG): Likewise.
11512         * config/arm/arm-modes.def (XImode): Make it an INT_MODE.
11513
11514 2009-06-10  Ian Lance Taylor  <iant@google.com>
11515
11516         * vec.h (DEF_VEC_ALLOC_I): Use DEF_VEC_NONALLOC_FUNCS_I.
11517         (DEF_VEC_ALLOC_P): Use DEF_VEC_NONALLOC_FUNCS_P.
11518         (DEF_VEC_ALLOC_O): Use DEF_VEC_NONALLOC_FUNCS_O.
11519         (DEF_VEC_ALLOC_FUNC_P): Only define VEC_OP (T,A,alloc).
11520         (DEF_VEC_NONALLOC_FUNCS_P): New macro, broken out of old
11521         DEF_VEC_ALLOC_FUNC_P.
11522         (DEF_VEC_ALLOC_FUNC_O): Only define VEC_OP (T,A,alloc).
11523         (DEF_VEC_NONALLOC_FUNCS_O): New macro, broken out of old
11524         DEF_VEC_ALLOC_FUNC_O.
11525         (DEF_VEC_ALLOC_FUNC_I): Only define VEC_OP (T,A,alloc).
11526         (DEF_VEC_NONALLOC_FUNCS_I): New macro, broken out of old
11527         DEF_VEC_ALLOC_FUNC_I.
11528         (vec_stack_p_reserve, vec_stack_p_reserve_exact): Declare.
11529         (vec_stack_p_reserve_exact_1): Declare.
11530         (vec_stack_o_reserve, vec_stack_o_reserve_exact): Declare.
11531         (vec_stack_free): Declare.
11532         (VEC_stack_alloc): Define.
11533         (DEF_VEC_ALLOC_P_STACK, DEF_VEC_ALLOC_FUNC_P_STACK): Define.
11534         (DEF_VEC_ALLOC_O_STACK, DEF_VEC_ALLOC_FUNC_O_STACK): Define.
11535         (DEF_VEC_ALLOC_I_STACK, DEF_VEC_ALLOC_FUNC_I_STACK): Define.
11536         * vec.c (void_p): New type.  Call DEF_VEC_P and DEF_VEC_ALLOC_P
11537         for void_p.
11538         (stack_vecs): New static variable.
11539         (vec_stack_p_reserve_exact_1): New function.
11540         (vec_stack_o_reserve_1): New static function.
11541         (vec_stack_p_reserve, vec_stack_p_reserve_exact): New functions.
11542         (vec_stack_o_reserve, vec_stack_o_reserve_exact): New functions.
11543         (vec_stack_free): New function.
11544         * df-scan.c (df_ref): Use DEF_VEC_P and DEF_VEC_ALLOC_P_STACK.
11545         (VEC_df_ref_stack_alloc): Define.
11546         (df_mw_hardreg_ptr): New type.  Use DEF_VEC_P and
11547         DEF_VEC_ALLOC_P_STACK.
11548         (VEC_df_mw_hardreg_ptr_stack_alloc): Define.
11549         (struct df_collection_rec): Change _vec fields to VEC.  Remove
11550         _use fields.
11551         (df_free_collection_rec): Adjust for new fields.
11552         (df_insn_rescan): Use new df_collection_rec fields.
11553         (df_notes_rescan, df_canonize_collection_rec): Likewise.
11554         (df_ref_create_structure, df_ref_record): Likewise.
11555         (df_get_conditional_uses, df_get_call_refs): Likewise.
11556         (df_insn_refs_collect, df_bb_refs_collect): Likewise.
11557         (df_bb_refs_record, df_record_entry_block_defs): Likewise.
11558         (df_record_exit_block_uses, df_bb_verify): Likewise.
11559         (df_swap_refs): Change ref_vec parameter to VEC.  Change all callers.
11560         (df_sort_and_compress_refs): Change ref_vec parameter to VEC.
11561         Remove count parameter.  Change return type to void.  Change all
11562         callers.
11563         (df_sort_and_compress_mws): Change mw_vec parameter to VEC.
11564         Remove count parameter.  Change return type to void.  Change all
11565         callers.
11566         (df_install_refs): Change old_vec parameter to VEC.  Remove count
11567         parameter.  Change all callers.
11568         (df_install_mws): Change old_vec parameter to VEC.  Remove count
11569         parameter.  Change all callers.
11570         (df_refs_verify): Change new_rec parameter to VEC.  Change call
11571         callers.
11572         (df_mws_verify): Likewise.
11573
11574 2009-06-10  Alexandre Oliva  <aoliva@redhat.com>
11575
11576         * gcc.c (compare_files): Cast munmap argumento to caddr_t.
11577
11578 2009-06-10  H.J. Lu  <hongjiu.lu@intel.com>
11579
11580         * doc/extend.texi: Add description for __builtin_ia32_crc32di.
11581
11582 2009-06-10  Anthony Green  <green@moxielogic.com>
11583
11584         * config/moxie/crti.asm: New file.
11585         * config/moxie/crtn.asm: New file.
11586         * config/moxie/moxie.c: New file.
11587         * config/moxie/moxie.h: New file.
11588         * config/moxie/sfp-machine.h: New file.
11589         * config/moxie/moxie-protos.h: New file.
11590         * config/moxie/t-moxie: Created.
11591         * config/moxie/t-moxie-softfp: Created.
11592         * config/moxie/moxie.md: Created.
11593         * config/moxie/constraints.md: Created.
11594         * config.gcc: Add moxie support.
11595         * doc/md.texi (Machine Constraints): Add moxie constraints.
11596         * doc/contrib.texi (Contributors): Mention moxie port.
11597         * doc/install.texi (Specific): Mention the moxie port.
11598
11599 2009-06-09  Ian Lance Taylor  <iant@google.com>
11600
11601         * system.h (HAVE_DESIGNATED_INITIALIZERS): Don't define if
11602         compiling with C++.
11603         * optabs.c (optab_table): Only use designated initializers if
11604         HAVE_DESIGNATED_INITIALIZERS is defined.
11605         (convert_optab_table): Likewise.
11606         (init_optabs): Always call init_insn_codes if
11607         HAVE_DESIGNATED_INITIALIZERS is not defined.
11608
11609 2009-06-09  Ian Lance Taylor  <iant@google.com>
11610
11611         * targhooks.c (default_builtin_vectorized_function): Change fn
11612         parameter to unsigned int.
11613         (default_builtin_vectorized_conversion): Change code parameter to
11614         unsigned int.
11615         (default_builtin_reciprocal): Change fn parameter to unsigned int.
11616         * targhooks.h: Update declarations.
11617         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Change code
11618         parameter to unsigned int.
11619
11620         * c-typeck.c (comptypes_check_enum_int): New static function.
11621         (comptypes_internal): Add enum_and_int_p parameter.  Change all
11622         callers.
11623         (comp_target_types): Add location parameter.  Change all callers.
11624         (tagged_types_tu_compatible_p): Add enum_and_int_p parameter.
11625         Change all callers.
11626         (function_types_compatible_p, type_lists_compatible_p): Likewise.
11627         (build_conditional_expr): Add colon_loc parameter.  Change all
11628         callers.
11629         (convert_for_assignment): Add location parameter.  Change all callers.
11630         * c-parser.c (c_parser_conditional_expression): Pass location of
11631         colon to build_conditional_expr.
11632         * c-tree.h (build_conditional_expr): Update declaration.
11633
11634 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
11635
11636         * graphite.c: Revert previous patch.
11637
11638 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
11639
11640         PR bootstrap/40103
11641         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
11642
11643 2009-06-09  Ghassan Shobaki  <ghassan.shobaki@amd.com>
11644
11645         * tree-ssa-loop-prefetch.c
11646         (loop_prefetch_arrays): Fixed a portability problem in printf format
11647         string.
11648
11649 2009-06-09  Martin Jambor  <mjambor@suse.cz>
11650
11651         PR tree-optimization/40351
11652         * tree-sra.c (propagate_subacesses_accross_link): Check that a
11653         refrence to a potential artifical subaccess can be constructed.
11654
11655 2009-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
11656
11657         * config/sh/sh-protos.h (sh_optimization_options): Declare.
11658         (sh_override_options): Likewise.
11659         * config/sh/sh.c: Include params.h.
11660         (sh_optimization_options): New.
11661         (sh_override_options): Likewise.
11662         * config/sh/sh.c (OPTIMIZATION_OPTIONS): Use sh_optimization_options.
11663         (OVERRIDE_OPTIONS): Use sh_override_options.
11664
11665 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
11666
11667         * dwarf2out.c (emit_cfa_remember): New variable.
11668         (add_fde_cfi): If emit_cfa_remember, recurse to add
11669         DW_CFA_remember_state first.
11670         (dwarf2out_begin_epilogue): Don't add_fde_cfi DW_CFA_remember_state,
11671         instead just set emit_cfa_remember.
11672
11673 2009-06-08  Jan Hubicka  <jh@suse.cz>
11674
11675         PR debug/40126
11676         * dwarf2out.c (dwarf2out_abstract_function): Free decl_loc_table.
11677
11678 2009-06-08  Jan Hubicka  <jh@suse.cz>
11679
11680         PR middle-end/39834
11681         * cgraphunit.c (save_inline_function_body): Do not copy transform
11682         hooks for saved inline bodies.
11683         * ipa-passes.c (do_per_function): Do not add the hoks multiple times
11684         for given function.
11685
11686 2009-06-08  Adam Nemet  <anemet@caviumnetworks.com>
11687
11688         * jump.c (returnjump_p): Handle delayed branches.  Add missing
11689         function comment.
11690
11691 2009-06-08  Jan Hubicka  <jh@suse.cz>
11692
11693         PR middle-end/40102
11694         * cgraph.c (cgraph_create_edge_including_clones): Also asume that the
11695         original node might've been modified.
11696         * tree-inline.c (copy_bb): Do not assume that all clones are the same.
11697
11698 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
11699
11700         * tree-object-size.c (addr_object_size): Add OSI argument.
11701         Handle also INDIRECT_REF with SSA_NAME inside of it as base address.
11702         (compute_builtin_object_size, expr_object_size): Adjust callers.
11703         (plus_stmt_object_size): Call addr_object_size instead of
11704         compute_builtin_object_size.
11705
11706 2009-06-08  Ghassan Shobaki  <ghassan.shobaki@amd.com>
11707             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
11708
11709         * tree-ssa-loop-prefetch.c
11710         (gather_memory_references): Introduced a counter for the number of
11711         memory references.
11712         (anything_to_prefetch_p): Introduced a counter for the number of
11713         prefetches.
11714         (is_loop_prefetching_profitable): New function with a cost model
11715         for prefetching.
11716         (loop_prefetch_arrays): Use the new cost model to determine if
11717         prefetching is profitable.
11718         * params.def (MIN_INSN_TO_PREFETCH_RATIO,
11719         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
11720         * params.h (MIN_INSN_TO_PREFETCH_RATIO,
11721         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
11722         * doc/invoke.texi (MIN_INSN_TO_PREFETCT_RATIO,
11723         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
11724
11725 2009-06-08  Michael Matz  <matz@suse.de>
11726
11727         PR debug/40012
11728         * cfgexpand.c (set_rtl): Store place also in DECL_RTL, if all
11729         partitions use the same.
11730         (expand_one_var): Deal with DECL_RTL sometimes begin set also
11731         for basevars of SSA_NAMEs.
11732         (expand_used_vars): Reset TREE_USED for basevars of SSA_NAMEs,
11733         to not expand them twice.
11734         (gimple_expand_cfg): Clear DECL_RTL for those decls that have
11735         multiple places.
11736
11737 2009-06-08  Alexandre Oliva  <aoliva@redhat.com>
11738
11739         * common.opt (fcompare-debug=, fcompare-debug-second): New.
11740         (fdump-final-insns=, gtoggle): New.
11741         * doc/invoke.texi: Document them.
11742         * final.c (rest_of_clean_state): Dump final insn stream.
11743         * gcc.c (invoke_as): Hook in -fcompare-debug.
11744         (static_spec_functions): Add compare-debug-dump-opt,
11745         compare-debug-self-opt and compare-debug-auxbase-opt.
11746         (compare_debug, compare_debug_second, compare_debug_opt): New.
11747         (switches_debug_check, n_switches_debug_check): New.
11748         (debug_auxbase_opt, debug_check_temp_file): New.
11749         (process_command): Handle -fno-compare-debug, -fcompare-debug and
11750         -fcompare-debug=*.
11751         (do_self_spec): Handle arguments after switches.
11752         (do_spec_1): Add .gk extension to temp file basenames for compare.
11753         (check_live_switch): Take SWITCH_IGNORE into account, and earlier.
11754         (cc1_options): Use it instead of normal auxbase computation for
11755         the second compare-debug compilation.
11756         (compare_files): New.
11757         (main): Set up and implement compare debug mode.
11758         (compare_debug_dump_opt_spec_function): New.
11759         (compare_debug_self_opt_spec_function): New.
11760         (compare_debug_auxbase_opt_spec_function): New.
11761         * toplev.c (process_options): Handle flag_gtoggle,
11762         flag_dump_final_insns.
11763         * coverage.c (coverage_begin_output): Don't overwrite .gcno file
11764         during -fcompare-debug-second compilation.
11765
11766 2009-06-07  Ian Lance Taylor  <iant@google.com>
11767
11768         * dwarf2.h (enum dwarf_location_atom): Add INTERNAL_DW_OP_tls_addr.
11769         * dwarf2out.c (INTERNAL_DW_OP_tls_addr): Don't #define.
11770
11771         * c-common.c (c_do_switch_warnings): Don't exit early for -Wswitch
11772         with no default node.  Change warning with %H to warning_at.
11773         Don't clear warn_switch around case checking.
11774         * doc/invoke.texi (Warning Options): Clarify distinction between
11775         -Wswitch and -Wswitch-enum.
11776
11777 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
11778
11779         * tree-pass.h (TODO_update_ssa_any): Document internal use only.
11780
11781 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
11782
11783         * gbl-ctors.h: Add header guard.
11784
11785 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
11786
11787         * tree-flow.h (make_value_handle, set_value_handle, sort_vuses,
11788         sort_vuses_heap, vn_lookup_or_add, vn_lookup_or_add_with_stmt,
11789         vn_lookup_or_add_with_vuses, vn_add, vn_add_with_vuses,
11790         vn_lookup_with_stmt, vn_lookup, vn_lookup_with_vuses): Remove
11791         prototypes for removed functions.
11792         (expressions_equal_p): Move to ...
11793         * tree-ssa-sccvn.h: ... here and ...
11794         * matrix-reorg.c: ... adjust includes.
11795
11796 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
11797
11798         * ipa-struct-reorg.c (do_reorg_1): Fix whitespace in dump output.
11799
11800 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
11801
11802         * c-decl.c (finish_decl): Use bool for variable was_incomplete.
11803         (finish_function): Remove erroneous whitespace.
11804
11805 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
11806
11807         * tree-cfg.c (gimple_merge_blocks): Commentary typo fix.
11808         (verify_stmts): Print statement who's gimple_bb is set to a wrong BB
11809
11810 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
11811
11812         * errors.c (internal_error): Commentary typo fix.
11813         * gimple-iterator.c (gsi_insert_seq_on_edge): Ditto.
11814         * tree-ssa-pre.c: Ditto.
11815
11816 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
11817
11818         * basic-block.h (ENTRY_BLOCK, EXIT_BLOCK): Document that neither of
11819         them is supposed to hold actual statements.
11820
11821 2009-06-06  Ian Lance Taylor  <iant@google.com>
11822
11823         * doc/extend.texi (Attribute Syntax): Document that C++ labels on
11824         empty statements can now have attributes.
11825
11826 2009-06-05  Shujing Zhao  <pearly.zhao@oracle.com>
11827
11828         * config/mips/mips.c: Use REG_P and CONST_INT_P where applicable.
11829         * config/mips/mips.md: Ditto.
11830
11831 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
11832
11833         * config/rs6000/eabi.asm (__eabi_convert): Don't define if
11834         _RELOCATABLE.
11835         (__eabi_uconvert): Likewise.
11836
11837 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
11838
11839         * config/rs6000/ppc-asm.h: Protect auto-host.h inclusion and
11840         CFI_* definitions with IN_GCC.
11841
11842 2009-06-05  David Edelsohn  <edelsohn@gnu.org>
11843
11844         * xcoffout.h (xcoffout_source_line): Update prototype.
11845
11846 2009-06-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11847
11848         * builtins.c (do_mpc_ckconv, do_mpc_arg1): Use
11849         mpc_realref/mpc_imagref instead of MPC_RE/MPC_IM.
11850
11851 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
11852
11853         PR middle-end/40340
11854         * tree-ssa-live.c (remove_unused_scope_block_p): Don't prune
11855         inlined_function_outer_scope_p blocks for artificial inlines
11856         even at -g0/-g1.
11857         * tree.c (tree_nonartificial_location): Rewrite using
11858         block_nonartificial_location.
11859
11860 2009-06-05  Revital Eres  <eres@il.ibm.com>
11861             Leehod Baruch  <leehod@il.ibm.com>
11862
11863         * expr.c (expand_assignment): Expand MISALIGNED_INDIRECT_REF.
11864         (expand_expr_real_1): Remove comment.
11865         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
11866         Vectorize misaligned access when the target supports it.
11867         (vect_supportable_dr_alignment): Check for unaligned access support.
11868         * tree-vect-stmts.c (vectorizable_store): Generate misaligned store
11869         and remove asset.
11870
11871 2009-06-05  Julian Brown  <julian@codesourcery.com>
11872
11873         * config/arm/ieee754-df.S (cmpdf2): Avoid writing below SP.
11874         * config/arm/ieee754-sf.S (cmpsf2): Likewise.
11875
11876 2009-06-05  Richard Guenther  <rguenther@suse.de>
11877
11878         PR bootstrap/40350
11879         * dwarf2out.c (dwarf2out_begin_function): Mark discriminator
11880         as possibly unused.
11881
11882 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
11883
11884         * config/s390/s390.c (global_not_special_regno_p): New static inline.
11885         (save_gprs): Don't tell unwinder when a global register is saved.
11886         (s390_emit_epilogue): Emit needed epilogue unwind info.
11887
11888 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
11889
11890         * dwarf2out.c (deferred_asm_name): New.
11891         (add_name_and_src_coords_attributes): Defer creation of
11892         DW_AT_MIPS_linkage_name attribute if DECL_ASSEMBLER_NAME was not
11893         computed yet.
11894         (move_linkage_attr): New.
11895         (dwarf2out_finish): Revisit deferrals and emit attributes at the
11896         right place.
11897
11898 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
11899
11900         * tree-nested.c (finalize_nesting_tree_1): Declare the
11901         frame_decl in the binding tree.
11902
11903 2009-06-04  Cary Coutant  <ccoutant@google.com>
11904
11905         * basic-block.h (struct basic_block_def): Add discriminator field.
11906         * dbxout.c (dbxout_source_line): Add new parameter.  Change all
11907         callers.
11908         * debug.c (do_nothing_debug_hooks): Add additional entry.
11909         (debug_nothing_int_charstar_int): New function.
11910         * debug.h (struct gcc_debug_hooks): Add parameter to source_line hook.
11911         (debug_nothing_int_charstar_int): New declaration.
11912         * dwarf2out.c (dwarf2out_source_line): Add new parameter.  Write
11913         discriminator value in .loc directive.
11914         * final.c (last_discriminator): New variable.
11915         (discriminator): New variable.
11916         (final_start_function): Initialize above variables, pass current
11917         discriminator to debug hook.
11918         (notice_source_line): Check for discriminator change.
11919         * gimple-pretty-print.c (dump_bb_header): Print discriminator value.
11920         * sdbout.c (sdbout_source_line): New parameter.
11921         * tree-cfg.c (struct locus_discrim_map): New structure type.
11922         (discriminator_per_locus): New hash table.
11923         (build_gimple_cfg): Allocate and free discriminator hash table.
11924         (make_edges): Call assign_discriminator.
11925         (locus_map_hash): New function.
11926         (locus_map_eq): New function.
11927         (next_discriminator_for_locus): New function.
11928         (same_line_p): New function.
11929         (assign_discriminator): New function.
11930         (make_cond_expr_edges): Call assign_discriminator.
11931         (make_gimple_switch_edges): Likewise.
11932         (first_non_label_stmt): New function.
11933         * vmsdbgout.c (vmsdbgout_source_line): Add new parameter.  Change
11934         all callers.
11935         * xcoffout.c (xcoffout_source_line): Add new parameter.
11936
11937         * configure.ac (gcc_cv_as_discriminator): New configury check for
11938         gas support for discriminator.
11939         * configure: Regenerate.
11940         * config.in: Regenerate.
11941
11942 2009-06-04  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
11943
11944         * config/arm/arm.c (thumb2_legitimate_index_p): Initialize
11945         val after checking for integers.
11946
11947 2009-06-04  Uros Bizjak  <ubizjak@gmail.com>
11948
11949         * config/i386/i386.h (X86_64_MS_REGPARM_MAX): Rename from
11950         X64_REGPARM_MAX.
11951         (REGPARM_MAX): Use X86_64_MS_REGPARM_MAX.
11952         (X86_64_MS_SSE_REGPARM_MAX): Rename from X64_SSE_REGPARM_MAX.
11953         (SSE_REGPARM_MAX): Use X86_64_MS_SSE_REGPARM_MAX.
11954         * config/i386/i386.c: Use X86_64_MS_REGPARM_MAX instead of
11955         X64_REGPARM_MAX.  Use X86_64_MS_SSE_REGPARM_MAX instead of
11956         X64_SSE_REGPARM_MAX.
11957         * config/i386/i386.md: Use X86_64_MS_SSE_REGPARM_MAX instead of
11958         X64_SSE_REGPARM_MAX.
11959
11960 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
11961
11962         * gcc.c (report_times_to_file): New.
11963         (execute): Implement it.
11964         (process_command): Support -time=.
11965         * doc/invoke.texi: Document it.
11966
11967 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
11968
11969         * tree-ssa-live.c (remove_unused_scope_block_p): Keep variables
11970         that have value exprs.
11971
11972 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
11973
11974         * dwarf2asm.c (dw2_force_const_mem): Defer creation of
11975         declarations for constants until...
11976         (dw2_output_indirect_constant_1): ... this point.
11977
11978 2009-06-04  Richard Earnshaw  <rearnsha@arm.com>
11979
11980         PR target/10242
11981         * arm.md (arm_addsi3): Don't try to split an add with an
11982         eliminable register until after reload has completed.
11983
11984 2009-06-03  Ian Lance Taylor  <iant@google.com>
11985
11986         * dummy-checksum.c (executable_checksum): Use EXPORTED_CONST.
11987         * genattrtab.c (write_length_unit_log): Likewise.
11988         * genchecksum.c (dosum): Likewise.
11989         * gengtype.c (write_rtx_next): Likewise.
11990         (finish_root_table, write_roots): Likewise.
11991         * gimple.c (gimple_ops_offset_): Likewise.
11992         * tree-nomudflap.c (gt_ggc_r_gt_tree_mudflap_h): Likewise.
11993         * config/arc/arc.c (arc_attribute_table): Likewise.
11994         * config/arm/arm.c (arm_attribute_table): Likewise.
11995         * config/avr/avr.c (avr_attribute_table): Likewise.
11996         * config/crx/crx.c (crx_attribute_table): Likewise.
11997         * config/m32r/m32r.c (m32r_attribute_table): Likewise.
11998         * config/m68hc11/m68hc11.c (m68hc11_attribute_table): Likewise.
11999         * config/mcore/mcore.c (mcore_attribute_table): Likewise.
12000         * config/rs6000/rs6000.c (rs6000_attribute_table): Likewise.
12001         * config/sh/sh.c (sh_attribute_table): Likewise.
12002         * config/sparc/sparc.c (sparc_attribute_table): Likewise.
12003         * config/spu/spu.c (spu_attribute_table): Likewise.
12004         * config/v850/v850.c (v850_attribute_table): Likewise.
12005
12006         * config/alpha/alpha.c (vms_attribute_table): Make static.
12007         * config/bfin/bfin.c (bfin_attribute_table): Likewise.
12008         * config/h8300/h8300.c (h8300_attribute_table): Likewise.
12009         * config/mips/mips.c (mips_attribute_table): Likewise.
12010
12011         * Makefile.in (dummy-checksum.o): Depend upon $(CONFIG_H) and
12012         $(SYSTEM_H).
12013         (cc1-checksum.o): Likewise.
12014
12015 2009-06-03  Steve Ellcey  <sje@cup.hp.com>
12016
12017         * config/ia64/vect.md (*movv2sf_internal): Handle big endian case.
12018
12019 2009-06-03  Jakub Jelinek  <jakub@redhat.com>
12020
12021         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Return generated
12022         insn if it is changing sp.  Use gen_add3_insn instead of
12023         conditionally gen_addsi3 and gen_adddi3.
12024         (offset_below_red_zone_p): New static inline function.
12025         (rs6000_emit_epilogue): Emit needed epilogue unwind info.
12026         Use gen_add3_insn instead of conditionally gen_addsi3 and gen_adddi3.
12027         * config/rs6000/ppc-asm.h: Include auto-host.h.
12028         (CFI_STARTPROC, CFI_ENDPROC, CFI_DEF_CFA_REGISTER, CFI_OFFSET,
12029         CFI_RESTORE): Define.
12030         * config/rs6000/crtresxgpr.asm: Add unwind info.
12031         * config/rs6000/crtresxfpr.asm: Likewise.
12032         * config/rs6000/crtresgpr.asm: Likewise.
12033         * config/rs6000/crtresfpr.asm: Likewise.
12034         * config/rs6000/crtsavgpr.asm: Likewise.
12035         * config/rs6000/crtsavfpr.asm: Likewise.
12036
12037         * dwarf2out.c (output_cfi_directive): Pass 1 instead of 0 to second
12038         argument of DWARF2_FRAME_REG_OUT macros.
12039
12040 2009-06-03  Julian Brown  <julian@codesourcery.com>
12041
12042         * config/arm/arm.c (arm_hard_regno_mode_ok): Permit values of four
12043         words or less (including TImode) in core registers.
12044
12045 2009-06-03  Richard Guenther  <rguenther@suse.de>
12046
12047         PR middle-end/40328
12048         * fold-const.c (fold_convert): Fold the build COMPLEX_EXPR.
12049
12050 2009-06-03  Andrey Belevantsev  <abel@ispras.ru>
12051
12052         * statistics.c (statistics_counter_event): Do not record event
12053         in pass dump if its number == -1.
12054         (curr_statistics_hash): Add assert that we never get passes
12055         with static number == -1.
12056
12057 2009-06-03  Richard Guenther  <rguenther@suse.de>
12058             Andrey Belevantsev  <abel@ispras.ru>
12059
12060         * cfgexpand.c (discover_nonconstant_array_refs_r): Make only
12061         non-BLKmode arrays addressable.
12062
12063 2009-06-03  Maxim Kuvyrkov  <maxim@codesourcery.com>
12064
12065         * config/m68k/linux.h (HAVE_GAS_BALIGN_AND_P2ALIGN): Move to ...
12066         * config/m68k/m68k.h: ... here.
12067         * testsuite/gcc.dg/falign-labels.c (dg-options): Don't restrict for
12068         m68k and fido.
12069
12070 2009-06-03  Martin Jambor  <mjambor@suse.cz>
12071
12072         PR tree-optimization/40323
12073         * ipa-prop.c (get_ssa_def_if_simple_copy): Break if not single
12074         assignment.
12075
12076 2009-06-03  Richard Guenther  <rguenther@suse.de>
12077
12078         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
12079         consistently.
12080
12081 2009-06-03  Shujing Zhao  <pearly.zhao@oracle.com>
12082
12083         * config/sh/predicates.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
12084         JUMP_P, CALL_P, NONJUMP_INSN_P, NOTE_P, BARRIER_P and
12085         JUMP_TABLE_DATA_P where applicable.
12086         * config/sh/sh.c: Ditto.
12087         * config/sh/sh.h: Ditto.
12088         * config/sh/sh.md: Ditto.
12089         * config/sh/symbian.c: Ditto.
12090
12091 2009-06-03  Uros Bizjak  <ubizjak@gmail.com>
12092
12093         * config/i386/driver-i386.c (describe_cache): Optimize
12094         concatenation of strings.  Use snprintf instead of sprintf.
12095         (host_detect_local_cpu): Ditto.  Ignore -march and -mtune for native
12096         target when not compiling with GCC.
12097
12098 2009-06-02  Kaz Kojima  <kkojima@gcc.gnu.org>
12099
12100         * config/sh/sh.c: Revert last change.
12101         (sh_expand_epilogue): Emit a blockage insn before the frame
12102         pointer adjustment unconditionally.
12103
12104 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
12105
12106         * config/pa/pa-hpux.h (LINK_SPEC): Remove "%<fwhole-program".
12107         * config/pa/pa-hpux10.h (LINK_SPEC): Likewise.
12108         * config/pa/pa-hpux11.h (LINK_SPEC): Likewise.
12109         * gcc.c (set_collect_gcc_options): Don't add -fwhole-program
12110         to COLLECT_GCC_OPTIONS.
12111
12112 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
12113
12114         * collect2.c (target_system_root): New variable.
12115         (main): Handle --sysroot=.
12116         (ignore_library): Strip the sysroot from the library path.
12117
12118 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
12119
12120         * Makefile.in (COLLECT2_OBJS): Add collect2-aix.o.
12121         (collect2.o): Depend on collect2-aix.h.
12122         (collect2-aix.o): New rule.
12123         * collect2-aix.h: New file.
12124         * collect2-aix.c: Likewise.
12125         * collect2.c: Include collect2-aix.h.  Don't undefine
12126         OBJECT_FORMAT_COFF if CROSS_AIX_SUPPORT is defined.
12127         Guard native includes with #ifndef CROSS_DIRECTORY_STRUCTURE.
12128         Use TARGET_AIX_VERSION instead of _AIX51.
12129         * config/rs6000/aix43.h (TARGET_AIX_VERSION): Define.
12130         * config/rs6000/aix51.h (TARGET_AIX_VERSION): Likewise.
12131         * config/rs6000/aix52.h (TARGET_AIX_VERSION): Likewise.
12132         * config/rs6000/aix53.h (TARGET_AIX_VERSION): Likewise.
12133         * config/rs6000/aix61.h (TARGET_AIX_VERSION): Likewise.
12134
12135 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
12136
12137         * collect2.c (ignore_library): Avoid premature post-increment
12138         and null deference.
12139
12140 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
12141
12142         * Makefile.in (libgcc.mvars): Add TARGET_SYSTEM_ROOT.
12143         * config/rs6000/aix.h (LINK_SYSCALLS_SPEC): Add %R to the
12144         !CROSS_DIRECTORY_STRUCTURE alternative and use it for
12145         CROSS_DIRECTORY_STRUCTURE too.
12146         (LINK_LIBG_SPEC): Likewise.
12147         (LIB_SPEC): Add %R to sysroot paths.
12148         * config/rs6000/aix43.h (CPP_SPEC): Add %R to sysroot paths.
12149         (CPLUSPLUS_CPP_SPEC, LIB_SPEC): Likewise.
12150         * config/rs6000/aix51.h: As for aix43.h.
12151         * config/rs6000/aix52.h: Likewise.
12152         * config/rs6000/aix53.h: Likewise.
12153         * config/rs6000/aix61.h: Likewise.
12154         * config/rs6000/t-aix52 (SHLIB_LINK): Add $(TARGET_SYSTEM_ROOT)
12155         to the beginning of sysroot paths.
12156
12157 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
12158
12159         * print_rtl (print_rtx): Don't print modes in EXPR_LISTs and
12160         INSN_LISTs that are out of the REG_NOTE range.
12161
12162 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
12163
12164         * loop-unroll.c (struct iv_to_split): Add pointer to next.
12165         (struct var_to_expand): Likewise.
12166         (struct opt_info): Add head and tail for linked lists of the above.
12167         (analyze_insn_to_expand_var): Initialize next.
12168         (analyze_iv_to_split_insn): Likewise.
12169         (analyze_insns_in_loop): Create linked lists.
12170         (allocate_basic_variable): Simplify for use without hash table.
12171         (insert_var_expansion_initialization): Likewise, make it type-safer.
12172         (combine_var_copies_in_loop_exit): Likewise.
12173         (apply_opt_in_copies): Walk lists rather than hash tables.
12174         (release_var_copies): Simplified and inlined by hand into...
12175         (free_opt_info): ... this function.
12176
12177 2009-06-02  Richard Guenther  <rguenther@suse.de>
12178
12179         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
12180         for field decls.
12181
12182 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
12183
12184         * cfgexpand.c (gimple_expand_cfg): Discard the source location
12185         only for builtins that are not overridden.
12186
12187 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
12188
12189         * gengtype.c (adjust_field_rtx_def): Add NOTE_INSN_DELETED_LABEL's
12190         label string.
12191
12192 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
12193
12194         * df-core.c (df_ref_debug): Honor -fdump-noaddr.
12195
12196 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
12197
12198         * combine.c (move_deaths): Compare LUIDs within the same BB only.
12199
12200 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
12201
12202         * common.opt (fdump-unnumbered-links): New.
12203         * doc/invoke.texi (-fdump-unnumbered-links): Document it.
12204         * print-rtl.c (flag_dump_unnumbered_links): New.
12205         (print_rtx): Test it.
12206
12207 2009-06-02  Richard Earnshaw  <rearnsha@arm.com>
12208
12209         * arm.c (arm_get_frame_offsets): Prefer using r3 for padding a
12210         push/pop multiple to 8-byte alignment.
12211
12212 2009-06-01  Jakub Jelinek  <jakub@redhat.com>
12213
12214         * config/i386/i386.c (queued_cfa_restores): New static variable.
12215         (ix86_add_cfa_restore_note, ix86_add_queued_cfa_restore_notes): New
12216         functions.
12217         (pro_epilogue_adjust_stack): Call ix86_add_queued_cfa_restore_notes.
12218         (ix86_emit_restore_reg_using_pop): Add RED_OFFSET argument.
12219         Set RTX_FRAME_RELATED_P immediately after adding a REG_CFA_* note.
12220         Call ix86_add_cfa_restore_note instead of adding REG_CFA_OFFSET
12221         note unconditionally.
12222         (ix86_emit_restore_regs_using_mov): Likewise.
12223         (ix86_emit_restore_sse_regs_using_mov): Likewise.
12224         (ix86_emit_restore_regs_using_pop): Add RED_OFFSET argument, pass
12225         it through to ix86_emit_restore_reg_using_pop.
12226         (ix86_emit_leave): Add RED_OFFSET argument.  Call
12227         ix86_add_queued_cfa_restore_notes.  Call ix86_add_cfa_restore_note
12228         instead of adding REG_CFA_OFFSET note unconditionally.
12229         (ix86_expand_epilogue): Compute RED_OFFSET, pass it down to
12230         the above functions.  Call ix86_add_queued_cfa_restore_notes when
12231         needed.
12232
12233         * dwarf2out.c (dwarf2out_cfi_label): Add FORCE argument, if true,
12234         force output of the label even for dwarf2out_do_cfi_asm.
12235         (add_fde_cfi): If -g2 and above and cfi might change CFA,
12236         force creation of CFI label and chain DW_CFA_set_loc jumping to it
12237         for convert_cfa_to_fb_loc_list.  Adjust other dwarf2out_cfi_label
12238         caller.
12239         (dwarf2out_stack_adjust, dwarf2out_frame_debug,
12240         dwarf2out_begin_epilogue, dwarf2out_frame_debug_restore_state): Adjust
12241         dwarf2out_cfi_label callers.
12242         * tree.h (dwarf2out_cfi_label): Adjust prototype.
12243         * config/arm/arm.c (thumb_pushpop, thumb1_output_function_prologue):
12244         Adjust dwarf2out_cfi_label callers.
12245         * config/vax/vax.c (vax_output_function_prologue): Likewise.
12246
12247         * config/i386/i386.h (struct machine_cfa_state,
12248         struct machine_function): Guard with ifndef USED_FOR_TARGET
12249         instead of not IN_LIBGCC2 and not in IN_TARGET_LIBS.
12250
12251         PR other/40024
12252         * emutls.c (__emutls_get_address): Change arr->size to mean number
12253         of allocated arr->data entries instead of # of slots + 1.
12254
12255         PR middle-end/40316
12256         * recog.c (peep2_reinit_state): New function.
12257         (peephole2_init_state): Use it at the end of a basic block and also
12258         when seeing a RTX_FRAME_RELATED_P insn.
12259
12260 2009-06-01  Steve Ellcey  <sje@cup.hp.com>
12261
12262         * ia64.md (floatdirf2, fix_truncrfdi, floatunsdirf,
12263         fixuns_truncrfdi2): New.
12264         (fix_truncxfdi2_alts, fixuns_truncxfdi2_alts,
12265         *nmaddsf4_alts, *nmadddf4_alts, *nmadddf4_truncsf_alts,
12266         *mulxf3_alts, *mulxf3_truncsf_alts, *mulxf3_truncdf_alts,
12267         *maddxf4_alts, *maddxf4_alts_truncsf, *maddxf4_alts_truncdf,
12268         *nmaddxf4_alts, *nmaddxf4_truncsf_alts, *nmaddxf4_truncdf_alts,
12269         *recip_approx): Remove.
12270         (divsi3 modsi3, udivsi3, umodsi3, divsi3_internal, divdi3,
12271         moddi3, udivdi3, umoddi3, divdi3_internal_lat, divdi3_internal_thr,
12272         divsf3, sqrtsf2, divdf3, sqrtdf2, divxf3, sqrtxf2): Modify and
12273         move to div.md.
12274         * div.md (fix_truncrfdi2_alts, fixuns_truncrfdi2_alt,
12275         setf_exp_rf): New.
12276
12277 2009-06-01  Ian Lance Taylor  <iant@google.com>
12278
12279         * attribs.c (register_attribute): Use CONST_CAST.
12280         * collect2.c (main): Use CONST_CAST2.
12281         (scan_prog_file): Likewise.
12282         * gcc.c (process_command, main): Likewise.
12283         * toplev.c (toplev_main): Likewise.
12284
12285         * c-typeck.c (handle_warn_cast_qual): New static function,
12286         partially broken out of build_c_cast.
12287         (build_c_cast): Call handle_warn_cast_qual.
12288         * doc/invoke.texi (Warning Options): Document new effect of
12289         -Wcast-qual.
12290
12291 2009-06-01  Aldy Hernandez  <aldyh@redhat.com>
12292
12293         * diagnostic.c (diagnostic_build_prefix): Always print columns.
12294         (diagnostic_report_current_module): Print columns.
12295         * common.opt (flag_show_column): Enable by default.
12296
12297 2009-06-01  Luis Machado  <luisgpm@br.ibm.com>
12298
12299         * alias.c (find_base_term): Check for NULL term before returning.
12300
12301 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
12302
12303         Revert due to PR40320:
12304         2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
12305         * calls.c (emit_library_call_value_1): Don't force_operand for move
12306         and push insns.
12307
12308 2009-06-01  Olivier Hainque  <hainque@adacore.com>
12309             Eric Botcazou  <ebotcazou@adacore.com>
12310
12311         * tree.h (CONSTRUCTOR_BITFIELD_P): True if NODE, a FIELD_DECL, is
12312         to be processed as a bitfield for constructor output purposes.
12313         * output.h (initializer_constant_valid_for_bitfield_p): Declare
12314         new function.
12315         * varasm.c (oc_local_state): New type, output_constructor
12316         local state to support communication with helpers.
12317         (oc_outer_state): New type, output_constructor outer state of
12318         relevance in recursive calls.
12319         (output_constructor_array_range): New output_constructor helper,
12320         extracted code for an array range element.
12321         (output_constructor_regular_field): New output_constructor helper,
12322         extracted code for an element that is not a bitfield.
12323         (output_constructor_bitfield): New output_constructor helper,
12324         extracted code for a bitfield element.  Accept an OUTER state
12325         argument for recursive processing.  Recurse on record or array
12326         CONSTRUCTOR values, possibly past noop conversions.
12327         (initializer_constant_valid_for_bitfield_p): New predicate.  Whether
12328         VALUE is a valid constant-valued expression for use in a static
12329         bit-field initializer.
12330         (output_constructor): Rework to use helpers.  Accept and honor an
12331         OUTER state argument for recursive calls.  Return total size.  Be
12332         prepared for nested constructors initializing bitfields.
12333         (output_constant): Feed OUTER in calls to output_constructor.
12334
12335 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
12336
12337         * calls.c (emit_library_call_value_1): Don't force_operand for move
12338         and push insns.
12339
12340 2009-06-01  Nick Clifton  <nickc@redhat.com>
12341
12342         * doc/invoke.texi (IA-64 Options): Fix typo.
12343
12344 2009-06-01  Ira Rosen  <irar@il.ibm.com>
12345
12346         PR tree-optimization/39129
12347         * tree-vect-loop-manip.c (conservative_cost_threshold): Change the
12348         printed message.
12349         (vect_do_peeling_for_loop_bound): Use
12350         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
12351         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
12352         (vect_loop_versioning): Likewise.
12353         (vect_create_cond_for_alias_checks): Fix indentation.
12354         * tree-vectorizer.h (struct _loop_vec_info): Fix indentation of the
12355         macros.
12356         (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT): Define.
12357         (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Likewise.
12358         * tree-vect-loop.c (vect_analyze_loop_form): Change "too many BBs" to
12359         "control flow in loop".
12360         (vect_estimate_min_profitable_iters): Use
12361         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
12362         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
12363         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
12364         (vect_create_data_ref_ptr): Don't mention array dimension in printing.
12365         * tree-vect-stmts.c (vectorizable_store): Replace the check that the
12366         statement belongs to a group of strided accesses with the exact code
12367         check.
12368         (vectorizable_load): Likewise.
12369         * tree-vect-slp.c (vect_analyze_slp_instance): Spell out "basic block".
12370         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
12371
12372 2009-06-01  Gerald Pfeifer  <gerald@pfeifer.com>
12373
12374         * config/freebsd-stdint.h: New file.
12375         * config.gcc (*-*-freebsd): Set use_gcc_stdint=wrap.
12376         Add freebsd-stdint.h to tm_file.
12377
12378 2009-06-01  Richard Earnshaw  <rearnsha@arm.com>
12379
12380         * arm/thumb2.md (thumb2_zero_extendhidi2): New insn and split.
12381         (thumb2_extendhidi2): Likewise.
12382
12383 2009-05-31  Ian Lance Taylor  <iant@google.com>
12384
12385         * regstat.c (regstat_n_sets_and_refs): Remove duplicate definition.
12386
12387 2009-05-31  Ian Lance Taylor  <iant@google.com>
12388
12389         * Makefile.in (except.o): Depend upon gt-except.h, not gt-$(EXCEPT_H).
12390         (ipa-cp.o): Depend upon $(FIBHEAP_H) and $(PARAMS_H).
12391         (ipa-reference.o): Depend upon gt-ipa-reference.h.
12392
12393 2009-05-31  Jason Merrill  <jason@redhat.com>
12394
12395         * tree-pretty-print.c (print_call_name): Take the callee, not the
12396         call itself.  Make non-static.  Use dump_function_name for functions.
12397         (dump_generic_node): Adjust.
12398         * diagnostic.h: Declare print_call_name.
12399         * gimple-pretty-print.c (dump_gimple_call): Use it.
12400
12401 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
12402
12403         * config/sh/sh.md (ashldi3_std): New define_expand.
12404         (ashldi3): Use it.
12405
12406 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
12407
12408         PR target/40313
12409         * config/sh/sh.c: Include debug.h.
12410         (sh_expand_epilogue): Emit a blockage insn before the frame
12411         pointer adjustment also when dwarf2out_do_frame returns true.
12412
12413 2009-05-31  Richard Earnshaw  <rearnsha@arm.com>
12414
12415         * arm/thumb2.md (thumb2_extendsidi2): Add a split sub-pattern.
12416         (thumb2_extendqidi2): New pattern.
12417
12418 2009-05-31  Ira Rosen  <irar@il.ibm.com>
12419
12420         * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1): Don't
12421         mark phis for renaming.
12422         * tree-vectorizer.c (vect_memsyms_to_rename): Remove.
12423         (vectorize_loops): Don't allocate and free vect_memsyms_to_rename.
12424         Call mark_sym_for_renaming.
12425         * tree-vectorizer.h (vect_memsyms_to_rename): Remove.
12426         * tree-vect-loop.c (vect_transform_loop): Remove
12427         vect_memsyms_to_rename initialization and a call to
12428         mark_set_for_renaming.
12429
12430 2009-05-31  Jakub Jelinek  <jakub@redhat.com>
12431
12432         PR middle-end/40304
12433         * config/i386/i386.c (pro_epilogue_adjust_stack): Mark insns
12434         frame related even if !set_cfa && style < 0.
12435
12436 2009-05-30  Kai Tietz  <kai.tietz@onevision.com>
12437
12438         * config/i386/mingw-tls.c: New file.
12439         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Add mingw-tls.c file.
12440         * gthr-win32.h (MINGW32_SUPPORTS_MT_EH): Define it for targets
12441         defining _WIN32 but not __CYGWIN__.
12442
12443 2009-05-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12444
12445         * configure.ac: Add MPC support.
12446
12447         * config.in, configure: Regenerate.
12448
12449 2009-05-29  Richard Henderson  <rth@redhat.com>
12450
12451         * cfgcleanup.c (try_crossjump_to_edge): Only skip past
12452         NOTE_INSN_BASIC_BLOCK.
12453         * cfglayout.c (duplicate_insn_chain): Copy epilogue insn marks.
12454         Duplicate NOTE_INSN_EPILOGUE_BEG notes.
12455         * cfgrtl.c (can_delete_note_p): Allow NOTE_INSN_EPILOGUE_BEG
12456         to be deleted.
12457         * dwarf2out.c (struct cfa_loc): Change indirect field to bitfield,
12458         add in_use field.
12459         (add_cfi): Disable check redefining cfa away from drap.
12460         (lookup_cfa_1): Add remember argument; handle remember/restore.
12461         (lookup_cfa): Pass remember argument.
12462         (cfa_remember): New.
12463         (compute_barrier_args_size_1): Remove sibcall check.
12464         (dwarf2out_frame_debug_def_cfa): New.
12465         (dwarf2out_frame_debug_adjust_cfa): New.
12466         (dwarf2out_frame_debug_cfa_offset): New.
12467         (dwarf2out_frame_debug_cfa_register): New.
12468         (dwarf2out_frame_debug_cfa_restore): New.
12469         (dwarf2out_frame_debug): Handle REG_CFA_* notes.
12470         (dwarf2out_begin_epilogue): New.
12471         (dwarf2out_frame_debug_restore_state): New.
12472         (dw_cfi_oprnd1_desc): Handle DW_CFA_remember_state,
12473         DW_CFA_restore_state.
12474         (output_cfi_directive): Likewise.
12475         (convert_cfa_to_fb_loc_list): Likewise.
12476         (dw_cfi_oprnd1_desc): Handle DW_CFA_restore.
12477         * dwarf2out.h: Update.
12478         * emit-rtl.c (try_split): Don't split RTX_FRAME_RELATED_P.
12479         (copy_insn_1): Early out for null.
12480         * final.c (final_scan_insn): Call dwarf2out_begin_epilogue
12481         and dwarf2out_frame_debug_restore_state.
12482         * function.c (prologue, epilogue, sibcall_epilogue): Remove.
12483         (prologue_insn_hash, epilogue_insn_hash): New.
12484         (free_after_compilation): Adjust freeing accordingly.
12485         (record_insns): Create hash table if needed; push insns into
12486         hash instead of array.
12487         (maybe_copy_epilogue_insn): New.
12488         (contains): Search hash table instead of array.
12489         (sibcall_epilogue_contains): Remove.
12490         (thread_prologue_and_epilogue_insns): Split eh_return insns
12491         and mark them as epilogues.
12492         (reposition_prologue_and_epilogue_notes): Rewrite epilogue
12493         scanning in terms of basic blocks.
12494         * insn-notes.def (CFA_RESTORE_STATE): New.
12495         * jump.c (returnjump_p_1): Accept EH_RETURN.
12496         (eh_returnjump_p_1, eh_returnjump_p): New.
12497         * reg-notes.def (CFA_DEF_CFA, CFA_ADJUST_CFA, CFA_OFFSET,
12498         CFA_REGISTER, CFA_RESTORE): New.
12499         * rtl.def (EH_RETURN): New.
12500         * rtl.h (eh_returnjump_p, maybe_copy_epilogue_insn): Declare.
12501
12502         * config/bfin/bfin.md (UNSPEC_VOLATILE_EH_RETURN): Remove.
12503         (eh_return_internal): Use eh_return rtx; split w/ epilogue.
12504
12505         * config/i386/i386.c (gen_push): Update cfa state.
12506         (pro_epilogue_adjust_stack): Add set_cfa argument.  When true,
12507         add a CFA_ADJUST_CFA note.
12508         (ix86_dwarf_handle_frame_unspec): Remove.
12509         (ix86_expand_prologue): Update cfa state.
12510         (ix86_emit_restore_reg_using_pop): New.
12511         (ix86_emit_restore_regs_using_pop): New.
12512         (ix86_emit_leave): New.
12513         (ix86_emit_restore_regs_using_mov): Add CFA_RESTORE notes.
12514         (ix86_expand_epilogue): Add notes for unwinding the epilogue.
12515         * config/i386/i386.h (struct machine_cfa_state): New.
12516         (ix86_cfa_state): New.
12517         * config/i386/i386.md (UNSPEC_EH_RETURN): Remove.
12518         (eh_return_internal): Merge from eh_return_<mode>,
12519         use eh_return rtx, split w/ epilogue.
12520
12521 2009-05-29  Ian Lance Taylor  <iant@google.com>
12522
12523         * builtins.c (validate_gimple_arglist): Don't use va_arg with
12524         enum type.
12525         * calls.c (emit_library_call_value_1): Likewise.
12526
12527         * c-typeck.c (c_build_va_arg): New function.
12528         * c-tree.h (c_build_va_arg): Declare.
12529         * c-parser.c (c_parser_postfix_expression): Call c_build_va_arg
12530         instead of build_va_arg.
12531
12532 2009-05-29  Eric Botcazou  <ebotcazou@adacore.com>
12533
12534         * tree-ssa-loop-ivopts.c (strip_offset_1) <MULT_EXPR>: New case.
12535         (force_expr_to_var_cost) <NEGATE_EXPR>: Likewise.
12536         (ptr_difference_cost): Use affine combinations to compute it.
12537         (difference_cost): Likewise.
12538         (get_computation_cost_at): Compute more accurate cost for addresses
12539         if the ratio is a multiplier allowed in addresses.
12540         For non-addresses, consider that an additional offset or symbol is
12541         added only once.
12542
12543 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
12544
12545         * config/i386/i386.c (ix86_decompose_address): Avoid useless
12546         0 displacement.  Add 0 displacement if base is %[er]bp or %r13.
12547
12548         * config/i386/i386.md (prefix_data16, prefix_rep): Set to 0 for
12549         TYPE_SSE{MULADD,4ARG,IADD1,CVT1} by default.
12550         (prefix_rex): For UNIT_MMX don't imply the prefix by default
12551         if MODE_DI.
12552         (prefix_extra): Default to 2 for TYPE_SSE{MULADD,4ARG} and
12553         to 1 for TYPE_SSE{IADD1,CVT1}.
12554         (prefix_vex_imm8): Removed.
12555         (length_vex): Only pass 1 as second argument to
12556         ix86_attr_length_vex_default if prefix_extra is 0.
12557         (modrm): For TYPE_INCDEC only set to 0 if not TARGET_64BIT.
12558         (length): For prefix vex computation use length_immediate
12559         attribute instead of prefix_vex_imm8.
12560         (cmpqi_ext_3_insn, cmpqi_ext_3_insn_rex64,
12561         addqi_ext_1, addqi_ext_1_rex64, *testqi_ext_0, andqi_ext_0,
12562         *andqi_ext_0_cc, *iorqi_ext_0, *xorqi_ext_0, *xorqi_cc_ext_1,
12563         *xorqi_cc_ext_1_rex64): Override modrm attribute to 1.
12564         (extendsidi2_rex64, extendhidi2, extendqidi2, extendhisi2,
12565         *extendhisi2_zext, extendqihi2, extendqisi2, *extendqisi2_zext): Emit
12566         a space in between the operands.
12567         (*anddi_1_rex64, *andsi_1): Likewise.  Override prefix_rex to 1
12568         if one operand is 0xff and the other one si, di, bp or sp.
12569         (*andhi_1): Override prefix_rex to 1 if one operand is 0xff and the
12570         other one si, di, bp or sp.
12571         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Add mode attribute.
12572         (*ffssi_1, *ffsdi_1, ctzsi2, ctzdi2): Add
12573         type and mode attributes.
12574         (*bsr, *bsr_rex64, *bsrhi): Add type attribute.
12575         (*cmpfp_i_mixed, *cmpfp_iu_mixed): For TYPE_SSECOMI, clear
12576         prefix_rep attribute and set prefix_data16 attribute iff MODE_DF.
12577         (*cmpfp_i_sse, *cmpfp_iu_sse): Clear prefix_rep attribute and set
12578         prefix_data16 attribute iff MODE_DF.
12579         (*movsi_1): For TYPE_SSEMOV MODE_SI set prefix_data16 attribute.
12580         (fix_trunc<mode>di_sse): Set prefix_rex attribute.
12581         (*adddi_4_rex64, *addsi_4): Use const128_operand instead of
12582         constm128_operand in length_immediate computation.
12583         (*addhi_4): Likewise.  Fix mode attribute to MODE_HI.
12584         (anddi_1_rex64): Use movzbl/movzwl instead of movzbq/movzwq.
12585         (*avx_ashlti3, sse2_ashlti3, *avx_lshrti3, sse2_lshrti3): Set
12586         length_immediate attribute to 1.
12587         (x86_fnstsw_1, x86_fnstcw_1, x86_fldcw_1): Fix length attribute.
12588         (*movdi_1_rex64): Override prefix_rex or prefix_data16 attributes
12589         for certain alternatives.
12590         (*movdf_nointeger, *movdf_integer_rex64, *movdf_integer): Override
12591         prefix_data16 attribute if MODE_V1DF.
12592         (*avx_setcc<mode>, *sse_setcc<mode>, *sse5_setcc<mode>): Set
12593         length_immediate to 1.
12594         (set_got_rex64, set_rip_rex64): Remove length attribute, set
12595         length_address to 4, set mode attribute to MODE_DI.
12596         (set_got_offset_rex64): Likewise.  Set length_immediate to 0.
12597         (fxam<mode>2_i387): Set length attribute to 4.
12598         (*prefetch_sse, *prefetch_sse_rex, *prefetch_3dnow,
12599         *prefetch_3dnow_rex): Override length_address attribute.
12600         (sse4_2_crc32<mode>): Override prefix_data16 and prefix_rex
12601         attributes.
12602         * config/i386/predicates.md (ext_QIreg_nomode_operand): New predicate.
12603         (constm128_operand): Removed.
12604         * config/i386/i386.c (memory_address_length): For
12605         disp && !index && !base in 64-bit mode account for SIB byte if
12606         print_operand_address can't optimize disp32 into disp32(%rip)
12607         and UNSPEC doesn't imply (%rip) addressing.  Add 1 to length
12608         for fs: or gs: segment.
12609         (ix86_attr_length_immediate_default): When checking if shortform
12610         is possible, truncate immediate to the length of the non-shortened
12611         immediate.
12612         (ix86_attr_length_address_default): Ignore MEM_P operands
12613         with X constraint.
12614         (ix86_attr_length_vex_default): Only check for DImode on
12615         GENERAL_REG_P operands.
12616         * config/i386/sse.md (<sse>_comi, <sse>_ucomi): Clear
12617         prefix_rep attribute, set prefix_data16 attribute iff MODE_DF.
12618         (sse_cvttps2pi): Clear prefix_rep attribute.
12619         (sse2_cvttps2dq, *sse2_cvtpd2dq, sse2_cvtps2pd): Clear prefix_data16
12620         attribute.
12621         (*sse2_cvttpd2dq): Don't clear prefix_rep attribute.
12622         (*avx_ashr<mode>3, ashr<mode>3, *avx_lshr<mode>3, lshr<mode>3,
12623         *avx_ashl<mode>3, ashl<mode>3): Set length_immediate attribute to 1
12624         iff operand 2 is const_int_operand.
12625         (*vec_dupv4si, avx_shufpd256_1, *avx_shufpd_<mode>,
12626         sse2_shufpd_<mode>): Set length_immediate attribute to 1.
12627         (sse2_pshufd_1): Likewise.  Set prefix attribute to maybe_vex
12628         instead of vex.
12629         (sse2_pshuflw_1, sse2_pshufhw_1): Set length_immediate to 1 and clear
12630         prefix_data16.
12631         (sse2_unpckhpd, sse2_unpcklpd, sse2_storehpd, *vec_concatv2df): Set
12632         prefix_data16 attribute for movlpd and movhpd instructions.
12633         (sse2_loadhpd, sse2_loadlpd, sse2_movsd): Likewise.  Override
12634         length_immediate for shufpd instruction.
12635         (sse2_movntsi, sse3_lddqu): Clear prefix_data16 attribute.
12636         (avx_cmpp<avxmodesuffixf2c><mode>3,
12637         avx_cmps<ssemodesuffixf2c><mode>3, *avx_maskcmp<mode>3,
12638         <sse>_maskcmp<mode>3, <sse>_vmmaskcmp<mode>3,
12639         avx_shufps256_1, *avx_shufps_<mode>, sse_shufps_<mode>,
12640         *vec_dupv4sf_avx, *vec_dupv4sf): Set length_immediate attribute to 1.
12641         (*avx_cvtsi2ssq, *avx_cvtsi2sdq): Set length_vex attribute to 4.
12642         (sse_cvtsi2ssq, sse2_cvtsi2sdq): Set prefix_rex attribute to 1.
12643         (sse2_cvtpi2pd, sse_loadlps, sse2_storelpd): Override
12644         prefix_data16 attribute for the first alternative to 1.
12645         (*avx_loadlps): Override length_immediate for the first alternative.
12646         (*vec_concatv2sf_avx): Override length_immediate and prefix_extra
12647         attributes for second alternative.
12648         (*vec_concatv2sf_sse4_1): Override length_immediate and
12649         prefix_data16 attributes for second alternative.
12650         (*vec_setv4sf_avx, *avx_insertps, vec_extract_lo_<mode>,
12651         vec_extract_hi_<mode>, vec_extract_lo_v16hi,
12652         vec_extract_hi_v16hi, vec_extract_lo_v32qi,
12653         vec_extract_hi_v32qi): Set prefix_extra and length_immediate to 1.
12654         (*vec_setv4sf_sse4_1, sse4_1_insertps, *sse4_1_extractps): Set
12655         prefix_data16 and length_immediate to 1.
12656         (*avx_mulv2siv2di3, *avx_mulv4si3, sse4_2_gtv2di3): Set prefix_extra
12657         to 1.
12658         (*avx_<code><mode>3, *avx_eq<mode>3, *avx_gt<mode>3): Set
12659         prefix_extra attribute for variants that don't have 0f prefix alone.
12660         (*avx_pinsr<ssevecsize>): Likewise.  Set length_immediate to 1.
12661         (*sse4_1_pinsrb, *sse2_pinsrw, *sse4_1_pinsrd, *sse4_1_pextrb,
12662         *sse4_1_pextrb_memory, *sse2_pextrw, *sse4_1_pextrw_memory,
12663         *sse4_1_pextrd): Set length_immediate to 1.
12664         (*sse4_1_pinsrd): Likewise.  Set prefix_extra to 1.
12665         (*sse4_1_pinsrq, *sse4_1_pextrq): Set prefix_rex and length_immediate
12666         to 1.
12667         (*vec_extractv2di_1_rex64_avx, *vec_extractv2di_1_rex64,
12668         *vec_extractv2di_1_avx, *vec_extractv2di_1_sse2): Override
12669         length_immediate to 1 for second alternative.
12670         (*vec_concatv2si_avx, *vec_concatv2di_rex64_avx): Override
12671         prefix_extra and length_immediate attributes for the first
12672         alternative.
12673         (vec_concatv2si_sse4_1): Override length_immediate to 1 for the
12674         first alternative.
12675         (*vec_concatv2di_rex64_sse4_1): Likewise.  Override prefix_rex
12676         to 1 for the first and third alternative.
12677         (*vec_concatv2di_rex64_sse): Override prefix_rex to 1 for the second
12678         alternative.
12679         (*sse2_maskmovdqu, *sse2_maskmovdqu_rex64): Override length_vex
12680         attribute.
12681         (*sse_sfence, sse2_mfence, sse2_lfence): Override length_address
12682         attribute to 0.
12683         (*avx_phaddwv8hi3, *avx_phadddv4si3, *avx_phaddswv8hi3,
12684         *avx_phsubwv8hi3, *avx_phsubdv4si3, *avx_phsubswv8hi,
12685         *avx_pmaddubsw128, *avx_pmulhrswv8hi3, *avx_pshufbv16qi3,
12686         *avx_psign<mode>3): Set prefix_extra attribute to 1.
12687         (ssse3_phaddwv4hi3, ssse3_phadddv2si3, ssse3_phaddswv4hi3,
12688         ssse3_phsubwv4hi3, ssse3_phsubdv2si3, ssse3_phsubswv4hi3,
12689         ssse3_pmaddubsw, *ssse3_pmulhrswv4hi, ssse3_pshufbv8qi3,
12690         ssse3_psign<mode>3): Override prefix_rex attribute.
12691         (*avx_palignrti): Override prefix_extra and length_immediate to 1.
12692         (ssse3_palignrti): Override length_immediate to 1.
12693         (ssse3_palignrdi): Override length_immediate to 1, override
12694         prefix_rex attribute.
12695         (abs<mode>2): Override prefix_rep to 0, override prefix_rex attribute.
12696         (sse4a_extrqi): Override length_immediate to 2.
12697         (sse4a_insertqi): Likewise.  Override prefix_data16 to 0.
12698         (sse4a_insertq): Override prefix_data16 to 0.
12699         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>,
12700         avx_blendvp<avxmodesuffixf2c><avxmodesuffix>,
12701         avx_dpp<avxmodesuffixf2c><avxmodesuffix>, *avx_mpsadbw,
12702         *avx_pblendvb, *avx_pblendw, avx_roundp<avxmodesuffixf2c>256,
12703         avx_rounds<avxmodesuffixf2c>256): Override prefix_extra
12704         and length_immediate to 1.
12705         (sse4_1_blendp<ssemodesuffixf2c>, sse4_1_dpp<ssemodesuffixf2c>,
12706         sse4_2_pcmpestr, sse4_2_pcmpestri, sse4_2_pcmpestrm,
12707         sse4_2_pcmpestr_cconly, sse4_2_pcmpistr, sse4_2_pcmpistri,
12708         sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): Override prefix_data16
12709         and length_immediate to 1.
12710         (sse4_1_blendvp<ssemodesuffixf2c>): Override prefix_data16 to 1.
12711         (sse4_1_mpsadbw, sse4_1_pblendw): Override length_immediate to 1.
12712         (*avx_packusdw, avx_vtestp<avxmodesuffixf2c><avxmodesuffix>,
12713         avx_ptest256): Override prefix_extra to 1.
12714         (sse4_1_roundp<ssemodesuffixf2c>, sse4_1_rounds<ssemodesuffixf2c>):
12715         Override prefix_data16 and length_immediate to 1.
12716         (sse5_pperm_zero_v16qi_v8hi, sse5_pperm_sign_v16qi_v8hi,
12717         sse5_pperm_zero_v8hi_v4si, sse5_pperm_sign_v8hi_v4si,
12718         sse5_pperm_zero_v4si_v2di, sse5_pperm_sign_v4si_v2di,
12719         sse5_vrotl<mode>3, sse5_ashl<mode>3, sse5_lshl<mode>3): Override
12720         prefix_data16 to 0 and prefix_extra to 2.
12721         (sse5_rotl<mode>3, sse5_rotr<mode>3): Override length_immediate to 1.
12722         (sse5_frcz<mode>2, sse5_vmfrcz<mode>2): Don't override prefix_extra
12723         attribute.
12724         (*sse5_vmmaskcmp<mode>3, sse5_com_tf<mode>3,
12725         sse5_maskcmp<mode>3, sse5_maskcmp<mode>3, sse5_maskcmp_uns<mode>3):
12726         Override prefix_data16 and prefix_rep to 0, length_immediate to 1
12727         and prefix_extra to 2.
12728         (sse5_maskcmp_uns2<mode>3, sse5_pcom_tf<mode>3): Override
12729         prefix_data16 to 0, length_immediate to 1 and prefix_extra to 2.
12730         (*avx_aesenc, *avx_aesenclast, *avx_aesdec, *avx_aesdeclast,
12731         avx_vpermilvar<mode>3,
12732         avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>,
12733         avx_vbroadcastss256, avx_vbroadcastf128_p<avxmodesuffixf2c>256,
12734         avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>,
12735         avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>):
12736         Override prefix_extra to 1.
12737         (aeskeygenassist, pclmulqdq): Override length_immediate to 1.
12738         (*vpclmulqdq, avx_vpermil<mode>, avx_vperm2f128<mode>3,
12739         vec_set_lo_<mode>, vec_set_hi_<mode>, vec_set_lo_v16hi,
12740         vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Override
12741         prefix_extra and length_immediate to 1.
12742         (*avx_vzeroall, avx_vzeroupper, avx_vzeroupper_rex64): Override
12743         modrm to 0.
12744         (*vec_concat<mode>_avx): Override prefix_extra and length_immediate
12745         to 1 for the first alternative.
12746         * config/i386/mmx.md (*mov<mode>_internal_rex64): Override
12747         prefix_rep, prefix_data16 and/or prefix_rex attributes in certain
12748         cases.
12749         (*mov<mode>_internal_avx, *movv2sf_internal_rex64,
12750         *movv2sf_internal_avx, *movv2sf_internal): Override
12751         prefix_rep attribute for certain alternatives.
12752         (*mov<mode>_internal): Override prefix_rep or prefix_data16
12753         attributes for certain alternatives.
12754         (*movv2sf_internal_rex64_avx): Override prefix_rep and length_vex
12755         attributes for certain alternatives.
12756         (*mmx_addv2sf3, *mmx_subv2sf3, *mmx_mulv2sf3,
12757         *mmx_<code>v2sf3_finite, *mmx_<code>v2sf3, mmx_rcpv2sf2,
12758         mmx_rcpit1v2sf3, mmx_rcpit2v2sf3, mmx_rsqrtv2sf2, mmx_rsqit1v2sf3,
12759         mmx_haddv2sf3, mmx_hsubv2sf3, mmx_addsubv2sf3,
12760         *mmx_eqv2sf3, mmx_gtv2sf3, mmx_gev2sf3, mmx_pf2id, mmx_pf2iw,
12761         mmx_pi2fw, mmx_floatv2si2, mmx_pswapdv2sf2, *mmx_pmulhrwv4hi3,
12762         mmx_pswapdv2si2): Set prefix_extra attribute to 1.
12763         (mmx_ashr<mode>3, mmx_lshr<mode>3, mmx_ashl<mode>3): Set
12764         length_immediate to 1 if operand 2 is const_int_operand.
12765         (*mmx_pinsrw, mmx_pextrw, mmx_pshufw_1, *vec_dupv4hi,
12766         *vec_extractv2si_1): Set length_immediate attribute to 1.
12767         (*mmx_uavgv8qi3): Override prefix_extra attribute to 1 if
12768         using old 3DNOW insn rather than SSE/3DNOW_A.
12769         (mmx_emms, mmx_femms): Clear modrm attribute.
12770
12771 2009-05-29  Martin Jambor  <mjambor@suse.cz>
12772
12773         * tree-sra.c:  New implementation of SRA.
12774
12775         * params.def (PARAM_SRA_MAX_STRUCTURE_SIZE): Removed.
12776         (PARAM_SRA_MAX_STRUCTURE_COUNT): Removed.
12777         (PARAM_SRA_FIELD_STRUCTURE_RATIO): Removed.
12778         * params.h (SRA_MAX_STRUCTURE_SIZE): Removed.
12779         (SRA_MAX_STRUCTURE_COUNT): Removed.
12780         (SRA_FIELD_STRUCTURE_RATIO): Removed.
12781         * doc/invoke.texi (sra-max-structure-size): Removed.
12782         (sra-field-structure-ratio): Removed.
12783
12784 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
12785
12786         PR middle-end/40291
12787         * builtins.c (expand_builtin_memcmp): Convert len to sizetype
12788         before expansion.
12789
12790 2009-05-29  Andrey Belevantsev  <abel@ispras.ru>
12791
12792         PR rtl-optimization/40101
12793         * sel-sched-ir.c (get_seqno_by_preds): Allow returning negative
12794         seqno.  Adjust comment.
12795         * sel-sched.c (find_seqno_for_bookkeeping): Assert that when
12796         inserting bookkeeping before a jump, the jump is not scheduled.
12797         When no positive seqno found, provide a value.  Add comment.
12798
12799 2009-05-29  Richard Guenther  <rguenther@suse.de>
12800
12801         * tree-ssa-alias.c (nonaliasing_component_refs_p): Remove
12802         short-cutting on the first component.
12803
12804 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
12805
12806         PR middle-end/39958
12807         * omp-low.c (scan_omp_1_op): Call remap_type on TREE_TYPE
12808         for trees other than decls/types.
12809
12810 2009-05-29  Richard Guenther  <rguenther@suse.de>
12811
12812         * tree-ssa-operands.c (get_expr_operands): Do not handle
12813         INDIRECT_REFs in the handled-component case.  Remove
12814         unused get_ref_base_and_extent case.
12815         * tree-dfa.c (get_ref_base_and_extent): Avoid calling
12816         tree_low_cst and host_integerp where possible.
12817         * tree-ssa-structalias.c (equiv_class_label_eq): Check hash
12818         codes for equivalence.
12819         * dce.c (find_call_stack_args): Avoid redundant bitmap queries.
12820
12821 2009-05-29  David Billinghurst <billingd@gcc.gnu.org>
12822
12823         * config.gcc: Add i386/t-fprules-softfp and soft-fp/t-softfp
12824         to tmake_file for i[34567]86-*-cygwin*.
12825
12826 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
12827
12828         PR target/40017
12829         * config/rs6000/rs6000-c.c (_Bool_keyword): New variable.
12830         (altivec_categorize_keyword, init_vector_keywords,
12831         rs6000_cpu_cpp_builtins): Define _Bool as conditional macro
12832         similar to bool.
12833
12834 2009-05-29  Kai Tietz  <kai.tietz@onevision.com>
12835
12836         * tree.c (handle_dll_attribute): Check if node is
12837         of kind FUNCTION_DECL for DECL_DECLARED_INLINE_P check.
12838
12839 2009-05-29  Richard Earnshaw  <rearnsha@arm.com>
12840
12841         * config/arm/thumb2.md (thumb2_zero_extendsidi2): Add a split
12842         component.
12843         (thumb2_zero_extendqidi2): Likewise.
12844
12845 2009-05-28  Kaz Kojima  <kkojima@gcc.gnu.org>
12846
12847         * config/sh/sh.c (sh_expand_t_scc): Use gen_xorsi3_movrt
12848         instead of gen_movrt.
12849         * config/sh/sh.md (movrt): Remove.
12850
12851 2009-05-28  Steve Ellcey  <sje@cup.hp.com>
12852
12853         * doc/invoke.texi (IA-64 Options):
12854         Add -msdata, -mfused-madd, -mno-inline-float-divide,
12855         -mno-inline-int-divide, -mno-inline-sqrt, -msched-spec-ldc,
12856         -msched-spec-control-ldc, -msched-prefer-non-data-spec-insns,
12857         -msched-prefer-non-control-spec-insns,
12858         -msched-stop-bits-after-every-cycle,
12859         -msched-count-spec-in-critical-path,
12860         -msel-sched-dont-check-control-spec, -msched-fp-mem-deps-zero-cost
12861         -msched-max-memory-insns-hard-limit, -msched-max-memory-insns.
12862         Remove -mt, -pthread, -msched-ldc, -mno-sched-control-ldc,
12863         and -msched-spec-verbose.
12864
12865 2009-05-28  Joseph Myers  <joseph@codesourcery.com>
12866
12867         * config/arm/lib1funcs.asm (__clear_cache): Define if L_clear_cache.
12868         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define to give an
12869         error if used.
12870         * config/arm/t-linux-eabi (LIB1ASMFUNCS): Add _clear_cache.
12871
12872 2009-05-28  Richard Guenther  <rguenther@suse.de>
12873
12874         * tree-ssa-alias.c (ao_ref_init): New function.
12875         (ao_ref_base): Likewise.
12876         (ao_ref_base_alias_set): Likewise.
12877         (ao_ref_alias_set): Likewise.
12878         (refs_may_alias_p_1): Change signature.
12879         (refs_may_alias_p): Adjust.
12880         (refs_anti_dependent_p): Likewise.
12881         (refs_output_dependent_p): Likewise.
12882         (call_may_clobber_ref_p_1): Change signature.
12883         (call_may_clobber_ref_p): Adjust.
12884         (stmt_may_clobber_ref_p_1): New function split out from ...
12885         (stmt_may_clobber_ref_p): ... here.
12886         (maybe_skip_until): Adjust signature.
12887         (get_continuation_for_phi): Likewise.
12888         (walk_non_aliased_vuses): Likewise.
12889         * tree-ssa-alias.h (struct ao_ref_s): New structure type.
12890         (ao_ref_init): Declare.
12891         (ao_ref_base): Likewise.
12892         (ao_ref_alias_set): Likewise.
12893         (stmt_may_clobber_ref_p_1): Likewise.
12894         (walk_non_aliased_vuses): Adjust.
12895         * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): New function.
12896         (get_ref_from_reference_ops): remove.
12897         (vn_reference_lookup_2): Adjust signature.
12898         (vn_reference_lookup_3): Do not re-build trees.  Handle unions.
12899         (vn_reference_lookup_pieces): Adjust signature, do not re-build trees.
12900         (vn_reference_lookup): Adjust.
12901         (vn_reference_insert): Likewise.
12902         (vn_reference_insert_pieces): Adjust signature.
12903         (visit_reference_op_call): Adjust.
12904         * tree-ssa-pre.c (get_expr_type): Simplify.
12905         (phi_translate_1): Adjust.
12906         (compute_avail): Likewise.
12907         (translate_vuse_through_block): Do not re-build trees.
12908         (value_dies_in_block_x): Likewise.
12909         * tree-ssa-sccvn.h (struct vn_reference_s): Add type and alias-set
12910         fields.
12911         (vn_reference_lookup_pieces): Adjust declaration.
12912         (vn_reference_insert_pieces): Likewise.
12913
12914 2009-05-28  Benjamin Kosnik  <bkoz@redhat.com>
12915
12916         * tree-ssa-copy.c (replace_exp_1): Move op for warning-free use
12917         with checking disabled.
12918
12919 2009-05-28  Dave Korn  <dave.korn.cygwin@gmail.com>
12920
12921         PR target/37216
12922
12923         * configure.ac (HAVE_GAS_ALIGNED_COMM):  Add autoconf test and
12924         macro definition for support of three-operand format aligned
12925         .comm directive in assembler on cygwin/pe/mingw target OS.
12926         * configure:  Regenerate.
12927         * config.h:  Regenerate.
12928
12929         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common):  Use
12930         aligned form of .comm directive if -mpe-aligned-commons is in effect.
12931         * config/i386/cygming.opt (-mpe-aligned-commons):  Add new option.
12932
12933         * doc/invoke.texi (-mpe-aligned-commons):  Document new target option.
12934         * doc/tm.texi (ASM_OUTPUT_COMMON):  Document zero size commons.
12935
12936 2009-05-28  Ira Rosen  <irar@il.ibm.com>
12937
12938         PR tree-optimization/40254
12939         * tree-data-ref.c (dr_analyze_innermost): Take POFFSET into account
12940         in analysis of basic blocks.
12941
12942 2009-05-28  Adam Nemet  <anemet@caviumnetworks.com>
12943
12944         PR middle-end/33699
12945         * target.h (struct gcc_target): Fix indentation.  Add const_anchor.
12946         * target-def.h (TARGET_CONST_ANCHOR): New macro.
12947         (TARGET_INITIALIZER): Use it.
12948         * cse.c (CHEAPER): Move it up to the other macros.
12949         (insert): Rename this ...
12950         (insert_with_costs): ... to this.  Add cost parameters.  Update
12951         function comment.
12952         (insert): New function.  Call insert_with_costs.
12953         (compute_const_anchors, insert_const_anchor, insert_const_anchors,
12954         find_reg_offset_for_const, try_const_anchors): New functions.
12955         (cse_insn): Call try_const_anchors.  Adjust cost of src_related
12956         when using a const-anchor.  Call insert_const_anchors.
12957         * config/mips/mips.c (mips_set_mips16_mode): Set targetm.const_anchor.
12958         * doc/tm.texi (Misc): Document TARGET_CONST_ANCHOR.
12959
12960 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
12961
12962         * tree-inline.c (remap_decls): Enable nonlocalized variables
12963         when not optimizing.
12964
12965 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
12966
12967         * tree-ssa-live.c (remove_unused_locals): Skip when not optimizing.
12968         Simplify other tests involving optimize.
12969
12970 2009-05-27  Tom Tromey  <tromey@redhat.com>
12971
12972         * unwind-dw2.c (_Unwind_DebugHook): New function.
12973         (uw_install_context): Call _Unwind_DebugHook.
12974
12975 2009-05-27  Tom Tromey  <tromey@redhat.com>
12976
12977         * system.h (CONST_CAST2): Use C++ const_cast when compiled as C++
12978
12979 2009-05-27  Ian Lance Taylor  <iant@google.com>
12980
12981         * Makefile.in (LINKER, LINKER_FLAGS): Define.
12982         (LINKER_FOR_BUILD, BUILD_LINKERFLAGS): Define.
12983         (ALL_LINKERFLAGS): Define.
12984         (xgcc$(exeext)): Change $(COMPILER) to $(LINKER).
12985         (cpp$(exeext), cc1-dummy$(exeext), cc1$(exeext)): Likewise.
12986         (collect2$(exeext), mips-tfile, mips-tdump): Likewise.
12987         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
12988         (build/gen%$(build_exeext)): Change $(COMPILER_FOR_BUILD) to
12989         $(LINKER_FOR_BUILD).
12990         (build/gcov-iov$(build_exeext)): Likewise.
12991
12992 2009-05-27  Julian Brown  <julian@codesourcery.com>
12993
12994         * gcse.c (target.h): Include.
12995         (can_assign_to_reg_without_clobbers_p): Check that the target allows
12996         copy of argument to a pseudo register.
12997
12998 2009-05-27  Diego Novillo  <dnovillo@google.com>
12999
13000         * tree-ssa-live.c (dump_scope_block): Document arguments.
13001         (dump_scope_blocks): Document.
13002         (debug_scope_blocks): New.
13003         * tree-flow.h (debug_scope_blocks): Declare.
13004
13005 2009-05-21  Denis Chertykov  <denisc@overta.ru>
13006
13007         * doc/contrib.texi (Contributors): Add myself to the list.
13008
13009 2009-05-27  Olivier Hainque  <hainque@adacore.com>
13010
13011         * expr.c (target_align): New function.  Alignment the TARGET of an
13012         assignment may be assume to have.
13013         (highest_pow2_factor_for_target): Use it instead of relying on
13014         immediate tree attributes of TARGET, not necessarily honored when
13015         intermediate bitfields are involved.
13016
13017 2009-05-27  H.J. Lu  <hongjiu.lu@intel.com>
13018
13019         PR target/40266
13020         * config/i386/driver-i386.c (host_detect_local_cpu): Support
13021         AVX, SSE4, AES, PCLMUL and POPCNT.
13022
13023 2009-05-27  Diego Novillo  <dnovillo@google.com>
13024
13025         * tree-pretty-print.c (dump_location): New.
13026         (dump_generic_node): Call it.
13027         Factor code to handle BLOCK nodes ...
13028         (dump_block_node): ... here.
13029
13030 2009-05-27  Rafael Avila de Espindola  <espindola@google.com>
13031
13032         * Makefile.in (GCC_PLUGIN_H): New. Replace all uses of gcc-plugin.h
13033         with it.
13034         * doc/plugins.texi: Document that gcc-plugin.h must be the first to be
13035         included.
13036         * gcc-plugin.h: Include config.h and system.h.
13037         (IN_GCC): Define if not defined.
13038
13039 2009-05-27  Hans-Peter Nilsson  <hp@axis.com>
13040
13041         PR middle-end/40249
13042         * Makefile.in (CRTSTUFF_CFLAGS): Replace -fno-inline-functions
13043         with -fno-inline.
13044
13045 2009-05-27  Shujing Zhao  <pearly.zhao@oracle.com>
13046
13047         * config/m32r/m32r.c: Use REG_P, MEM_P and CONST_INT_P where
13048         applicable.
13049         * config/m32r/m32r.h: Ditto.
13050         * config/m32r/m32r.md: Ditto.
13051         * config/m32r/predicates.md: Ditto.
13052
13053 2009-05-27  Alexandre Oliva  <aoliva@redhat.com>
13054
13055         * cgraph.c (dump_cgraph_node): Honor -fdump-noaddr.
13056
13057 2009-05-26  Basile Starynkevitch  <basile@starynkevitch.net>
13058
13059         * doc/plugins.texi
13060         (Loading plugins): typo.
13061         (Plugin callbacks): Documented PLUGIN_INFO, PLUGIN_GGC_START,
13062         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
13063         (Interacting with the GCC Garbage Collector): Added new section.
13064         (Giving information about a plugin): Added new section for
13065         PLUGIN_INFO.
13066         * ggc.h (ggc_register_root_tab): Added declaration.
13067         * gcc-plugin.h (PLUGIN_GGC_START, PLUGIN_GGC_MARKING)
13068         (PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS): Added new events.
13069         (register_callback): Improved comment in declaration.
13070         * ggc-common.c (const_ggc_root_tab_t) Added new typedef for vectors.
13071         (extra_root_vec) Added static variable for dynamic roots registration.
13072         (ggc_register_root_tab) Added new routine.
13073         (ggc_mark_roots) Added iteration inside extra_root_vec, and invoke
13074         PLUGIN_GGC_MARKING event.
13075         * ggc-zone.c: Include plugin.h.
13076         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
13077         * ggc-page.c: Include plugin.h.
13078         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
13079         * plugin.c (plugin_event_name): added names of PLUGIN_GGC_START,
13080         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS
13081         (register_callback): check lack of callbacks for
13082         pseudo-events. Added handling of PLUGIN_REGISTER_GGC_ROOTS,
13083         PLUGIN_GGC_START, PLUGIN_GGC_MARKING, PLUGIN_GGC_END.
13084         (invoke_plugin_callbacks): Handle PLUGIN_GGC_START,
13085         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
13086         * Makefile.in (ggc-common.o, ggc-zone.o, ggc-page.o): Added
13087         dependency on plugin.h.
13088         (plugin.o): Added dependency on ggc.h...
13089
13090 2009-05-26  Richard Guenther  <rguenther@suse.de>
13091
13092         PR middle-end/40248
13093         Revert
13094         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
13095         with mismatched comparison modes.
13096
13097         * expr.c (expand_expr_real_1): Expand the operand of a
13098         VIEW_CONVERT_EXPR in its natural mode.
13099
13100 2009-05-26  Ian Lance Taylor  <iant@google.com>
13101
13102         * Makefile.in (COMPILER, COMPILER_FLAGS): Define.
13103         (COMPILER_FOR_BUILD, BUILD_COMPILERFLAGS): Define.
13104         (ALL_COMPILERFLAGS): Define.
13105         (.c.o, xgcc$(exeext), cpp$(exeext)): Use $(COMPILER).
13106         (cc1-dummy$(exeext), cc1$(exeext)): Likewise.
13107         (collect2$(exeext), collect2.o): Likewise.
13108         (c-opts.o, c-cppbuiltin.o, c-pch.o, gcc.o, gccspec.o): Likewise.
13109         (gcc-options.o, version.o, prefix.o, toplev.o): Likewise.
13110         ($(out_object_file), mips-tfile, mips-tdump): Likewise.
13111         (libbackend.o, intl.o, cppdefault.o): Likewise.
13112         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
13113         (build/%.o): Use $(COMPILER_FOR_BUILD).
13114         (build/gen%$(build_exeext)): Likewise.
13115         (build/gcov-iov$(build_exeext)): LIkewise.
13116         * config/t-darwin (darwin.o): Use $(COMPILER).
13117         (darwin-c.o, darwin-f.o, darwin-driver.o): Likewise.
13118         * config/t-sol2 (sol2-c.o): Likewise.
13119         (sol2.o): Likewise.
13120         * config/t-vxworks (vxworks.o): Likewise.
13121         * config/x-darwin (host-darwin.o): Likewise.
13122         * config/x-hpux (host-hpux.o): Likewise.
13123         * config/x-linux (host-linux.o): Likewise.
13124         * config/x-solaris (host-solaris.o): Likewise.
13125         * config/alpha/x-alpha (driver-alpha.o): Likewise.
13126         * config/arm/t-arm (arm-c.o): Likewise.
13127         * config/arm/t-pe (pe.o): Likewise.
13128         * config/arm/t-wince-pe (pe.o): Likewise.
13129         * config/i386/t-cygming (winnt.o): Likewise.
13130         (winnt-cxx.o, winnt-stubs.o, msformat-c.o): Likewise.
13131         * config/i386/t-cygwin (cygwin1.o): Likewise.
13132         (cygwin2.o): Likewise.
13133         * config/i386/t-i386 (i386-c.o): Likewise.
13134         * config/i386/t-interix (winnt.o): Likewise.
13135         * config/i386/t-netware (netware.o): Likewise.
13136         * config/i386/t-nwld (nwld.o): Likewise.
13137         * config/i386/x-darwin (host-i386-darwin.o): Likewise.
13138         * config/i386/x-i386 (driver-i386.o): Likewise.
13139         * config/i386/x-cygwin (host-cygwin.o): Likewise.
13140         * config/i386/x-mingw32 (host-mingw32.o): Likewise.
13141         * config/ia64/t-ia64 (ia64-c.o): Likewise.
13142         * config/m32c/t-m32c (m32c-pragma.o): Likewise.
13143         * config/mips/x-native (driver-native.o): Likewise.
13144         * config/rs6000/t-rs6000 (rs6000-c.o): Likewise.
13145         * config/rs6000/x-darwin (host-ppc-darwin.o): Likewise.
13146         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Likewise.
13147         * config/rs6000/x-rs6000 (driver-rs6000.o): Likewise.
13148         * config/score/t-score-elf (score7.o): Likewise.
13149         (score3.o): Likewise.
13150         * config/sh/t-sh (sh-c.o): Likewise.
13151         * config/sh/t-symbian (sh-c.o): Likewise.
13152         (symbian.o): Likewise.
13153         * config/spu/t-spu-elf (spu-c.o): Likewise.
13154         * config/v850/t-v850 (v850-c.o): Likewise.
13155         * config/v850/t-v850e (v850-c.o): Likewise.
13156
13157 2009-05-26  Richard Guenther  <rguenther@suse.de>
13158
13159         PR tree-optimization/40122
13160         * tree-ssa-ccp.c (ccp_fold): Fold vector CONSTRUCTORs to
13161         VECTOR_CSTs if possible.
13162         (fold_gimple_assign): Likewise.
13163
13164 2009-05-26  Richard Guenther  <rguenther@suse.de>
13165
13166         PR middle-end/40252
13167         * fold-const.c (fold_binary): Use the correct types for building
13168         rotates.
13169
13170 2009-05-26  Richard Guenther  <rguenther@suse.de>
13171
13172         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove
13173         redundant calls to merge_alias_info.
13174         (bump_vector_ptr): Likewise.
13175         * tree-ssa-copy.c (merge_alias_info): Remove.
13176         (replace_exp_1): Remove call to merge_alias_info.
13177         (propagate_tree_value): Likewise.
13178         (fini_copy_prop): Propagate points-to info.
13179         * tree-flow.h (merge_alias_info): Remove.
13180
13181 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
13182
13183         * config/picochip/picochip.C (PARAM_INLINE_CALL_COST): Remove.
13184
13185 2009-05-25  Jan Hubicka  <jh@suse.cz>
13186
13187         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
13188         * cgraph.h (struct inline_summary): New filed self_wize,
13189         size_inlining_benefit, self_time and time_inlining_benefit.
13190         (struct cgraph_global_info): Replace insns by time ans size fields.
13191         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
13192         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
13193         (ipcp_update_callgraph): Do not touch function bodies.
13194         * ipa-inline.c: Include except.h
13195         (MAX_TIME): New constant.
13196         (overall_insns): Remove.
13197         (leaf_node_p): New.
13198         (overall_size, max_benefit): New static variables.
13199         (cgraph_estimate_time_after_inlining): New function.
13200         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
13201         (cgraph_clone_inlined_nodes): Update size.
13202         (cgraph_mark_inline_edge): Update size.
13203         (cgraph_estimate_growth): Use size info.
13204         (cgraph_check_inline_limits): Check size.
13205         (cgraph_default_inline_p): Likewise.
13206         (cgraph_edge_badness): Compute badness based on benefit and size cost.
13207         (cgraph_decide_recursive_inlining): Check size.
13208         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
13209         and times.
13210         (cgraph_decide_inlining): Likewise.
13211         (cgraph_decide_inlining_incrementally): Likewise; honor
13212         PARAM_EARLY_INLINING_INSNS.
13213         (likely_eliminated_by_inlining_p): New predicate.
13214         (estimate_function_body_sizes): New function.
13215         (compute_inline_parameters): Use it.
13216         * except.c (must_not_throw_labels): New function.
13217         * except.h (must_not_throw_labels): Declare.
13218         * tree-inline.c (init_inline_once): Kill inlining_weigths
13219         * tree-ssa-structalias.c: Avoid uninitialized warning.
13220         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
13221         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
13222         (PARAM_INLINE_CALL_COST): Remove.
13223         (PARAM_EARLY_INLINING_INSNS): New.
13224
13225 2009-05-25  Richard Guenther  <rguenther@suse.de>
13226
13227         PR tree-optimization/36327
13228         * tree-ssa-alias.c (walk_non_aliased_vuses): Add second walker
13229         callback for reference translation or lookup at the point of may-defs.
13230         * tree-ssa-alias.h (walk_non_aliased_vuses): Adjust prototype.
13231         * tree-ssa-sccvn.c (get_ref_from_reference_ops): Bail out
13232         for union COMPONENT_REFs.
13233         (vn_reference_lookup_3): New callback.  Lookup from memset
13234         and CONSTRUCTOR assignment, translate through struct copies.
13235         (vn_reference_lookup_pieces): Make sure to not free the
13236         passed operands array.  Adjust walk_non_aliased_vuses call.
13237         (vn_reference_lookup): Adjust walk_non_aliased_vuses call,
13238         make sure we do not leak memory.
13239
13240 2009-05-25  Richard Guenther  <rguenther@suse.de>
13241
13242         * tree-ssa-alias.h (dump_points_to_solution): Declare.
13243         * tree-inline.c (expand_call_inline): Reset the escaped and
13244         callused solutions.
13245         * tree-ssa-structalias.c (pass_build_ealias): New.
13246         * tree-pass.h (pass_build_ealias): Declare.
13247         * passes.c (init_optimization_passes): Add PTA during
13248         early optimizations.
13249         * tree-ssa-alias.c (dump_alias_info): Dump the ESCAPED
13250         and CALLUSED solutions.
13251         (dump_points_to_solution): New function, split out from ...
13252         (dump_points_to_info_for): ... here.
13253         * tree-parloops.c (parallelize_loops): Reset the escaped and
13254         callused solutions.
13255
13256 2009-05-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
13257
13258         PR bootstrap/40027
13259         * config/i386/i386.c (USE_HIDDEN_LINKONCE): Only define if missing.
13260         * config/i386/sol2.h [!TARGET_GNU_LD] (USE_HIDDEN_LINKONCE): Define.
13261
13262 2009-05-25  Ira Rosen  <irar@il.ibm.com>
13263
13264         PR tree-optimization/40238
13265         * tree-vect-stmts.c (vect_init_vector): Insert initialization
13266         statements after basic block's labels.
13267         * tree-vect-slp.c (vect_slp_transform_bb): Call destroy_bb_vec_info()
13268         to free the allocated memory.
13269
13270 2009-05-24  Kaz Kojima  <kkojima@gcc.gnu.org>
13271
13272         * gcc/config/sh/sh.c (sh_set_return_address): Mark store of
13273         return address with a USE.
13274
13275 2009-05-24  Richard Guenther  <rguenther@suse.de>
13276
13277         PR middle-end/40233
13278         * tree.c (make_vector_type): Build the TYPE_DEBUG_REPRESENTATION_TYPEs
13279         array type from the main variant of the inner type.
13280
13281 2009-05-24  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
13282
13283         * config/vax/vax-protos.h (legitimate_constant_address_p): Change
13284         definition to bool (from int) to un-break build.
13285         (legitimate_constant_p, vax_mode_dependent_address_p): Likewise.
13286
13287 2009-05-24  Paolo Bonzini  <bonzini@gnu.org>
13288
13289         * tree-ssa-operands.h (push_stmt_changes, pop_stmt_changes,
13290         discard_stmt_changes): Delete.
13291         * tree-ssa-operands.c (scb_stack): Delete.
13292         (init_ssa_operands): Do not initialize it.
13293         (fini_ssa_operands): Do not free it.
13294         (push_stmt_changes, pop_stmt_changes, discard_stmt_changes): Delete.
13295
13296         * tree-cfg.c (replace_uses_by): Replace pop_stmt_changes with
13297         update_stmt, remove the others.  Fix comments.
13298         * tree-dfa.c (optimize_stack_restore): Likewise.
13299         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Likewise.
13300         * tree-ssa-loop-ivopts.c (rewrite_use): Likewise.
13301         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
13302         * tree-ssa-ccp.c (optimize_stack_restore, execute_fold_all_builtins):
13303         Likewise.
13304         * tree-ssa-propagate.c (substitute_and_fold): Likewise.
13305         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
13306         (dom_opt_finalize_block): Likewise, adjusting access to
13307         stmts_to_rescan.
13308         (optimize_stmt): Likewise, adjusting access to stmts_to_rescan.
13309         (stmts_to_rescan): Change item type to gimple.
13310         (tree_ssa_dominator_optimize): Change type of stmts_to_rescan.
13311
13312 2009-05-24  Ira Rosen  <irar@il.ibm.com>
13313
13314         * doc/passes.texi (Tree-SSA passes): Document SLP pass.
13315         * tree-pass.h (pass_slp_vectorize): New pass.
13316         * params.h (SLP_MAX_INSNS_IN_BB): Define.
13317         * timevar.def (TV_TREE_SLP_VECTORIZATION): Define.
13318         * tree-vectorizer.c (timevar.h): Include.
13319         (user_vect_verbosity_level): Declare.
13320         (vect_location): Fix comment.
13321         (vect_set_verbosity_level): Update user_vect_verbosity_level
13322         instead of vect_verbosity_level.
13323         (vect_set_dump_settings): Add an argument. Ignore user defined
13324         verbosity if dump flags require higher level of verbosity. Print to
13325         stderr only for loop vectorization.
13326         (vectorize_loops): Update call to vect_set_dump_settings.
13327         (execute_vect_slp): New function.
13328         (gate_vect_slp): Likewise.
13329         (struct gimple_opt_pass pass_slp_vectorize): New.
13330         * tree-vectorizer.h (struct _bb_vec_info): Define along macros to
13331         access its members.
13332         (vec_info_for_bb): New function.
13333         (struct _stmt_vec_info): Add bb_vinfo and a macro for its access.
13334         (VECTORIZATION_ENABLED): New macro.
13335         (SLP_ENABLED, SLP_DISABLED): Likewise.
13336         (vect_is_simple_use): Add bb_vec_info argument.
13337         (new_stmt_vec_info, vect_analyze_data_ref_dependences,
13338         vect_analyze_data_refs_alignment, vect_verify_datarefs_alignment,
13339         vect_analyze_data_ref_accesses, vect_analyze_data_refs,
13340         vect_schedule_slp, vect_analyze_slp): Likewise.
13341         (vect_analyze_stmt): Add slp_tree argument.
13342         (find_bb_location): Declare.
13343         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
13344         * tree-vect-loop.c (new_loop_vec_info): Adjust function calls.
13345         (vect_analyze_loop_operations, vect_analyze_loop,
13346         get_initial_def_for_induction, vect_create_epilog_for_reduction,
13347         vect_finalize_reduction, vectorizable_reduction,
13348         vectorizable_live_operation, vect_transform_loop): Likewise.
13349         * tree-data-ref.c (dr_analyze_innermost): Update comment,
13350         skip evolution analysis if analyzing a basic block.
13351         (dr_analyze_indices): Likewise.
13352         (initialize_data_dependence_relation): Skip the test whether the
13353         object is invariant for basic blocks.
13354         (compute_all_dependences): Skip dependence analysis for data
13355         references in basic blocks.
13356         (find_data_references_in_stmt): Don't fail in case of invariant
13357         access in basic block.
13358         (find_data_references_in_bb): New function.
13359         (find_data_references_in_loop): Move code to
13360         find_data_references_in_bb and add a call to it.
13361         (compute_data_dependences_for_bb): New function.
13362         * tree-data-ref.h (compute_data_dependences_for_bb): Declare.
13363         * tree-vect-data-refs.c (vect_check_interleaving): Adjust to the case
13364         that STEP is 0.
13365         (vect_analyze_data_ref_dependence): Check for interleaving in case of
13366         unknown dependence in basic block and fail in case of dependence in
13367         basic block.
13368         (vect_analyze_data_ref_dependences): Add bb_vinfo argument, get data
13369         dependence instances from either loop or basic block vectorization
13370         info.
13371         (vect_compute_data_ref_alignment): Check if it is loop vectorization
13372         before calling nested_in_vect_loop_p.
13373         (vect_compute_data_refs_alignment): Add bb_vinfo argument, get data
13374         dependence instances from either loop or basic block vectorization
13375         info.
13376         (vect_verify_datarefs_alignment): Likewise.
13377         (vect_enhance_data_refs_alignment): Adjust function calls.
13378         (vect_analyze_data_refs_alignment): Likewise.
13379         (vect_analyze_group_access): Fix printing. Skip different checks if
13380         DR_STEP is 0. Keep strided stores either in loop or basic block
13381         vectorization data structure. Fix indentation.
13382         (vect_analyze_data_ref_access): Fix comments, allow zero step in
13383         basic blocks.
13384         (vect_analyze_data_ref_accesses): Add bb_vinfo argument, get data
13385         dependence instances from either loop or basic block vectorization
13386         info.
13387         (vect_analyze_data_refs): Update comment. Call
13388         compute_data_dependences_for_bb to analyze basic blocks.
13389         (vect_create_addr_base_for_vector_ref): Check for outer loop only in
13390         case of loop vectorization. In case of basic block vectorization use
13391         data-ref itself as a base.
13392         (vect_create_data_ref_ptr): In case of basic block vectorization:
13393         don't advance the pointer, add new statements before the current
13394         statement.  Adjust function calls.
13395         (vect_supportable_dr_alignment): Support only aligned accesses in
13396         basic block vectorization.
13397         * common.opt (ftree-slp-vectorize): New flag.
13398         * tree-vect-patterns.c (widened_name_p): Adjust function calls.
13399         (vect_pattern_recog_1): Likewise.
13400         * tree-vect-stmts.c (process_use): Likewise.
13401         (vect_init_vector): Add new statements in the beginning of the basic
13402         block in case of basic block SLP.
13403         (vect_get_vec_def_for_operand): Adjust function calls.
13404         (vect_finish_stmt_generation): Likewise.
13405         (vectorizable_call): Add assert that it is loop vectorization, adjust
13406         function calls.
13407         (vectorizable_conversion, vectorizable_assignment): Likewise.
13408         (vectorizable_operation): In case of basic block SLP, take
13409         vectorization factor from statement's type and skip the relevance
13410         check. Adjust function calls.
13411         (vectorizable_type_demotion): Add assert that it is loop
13412         vectorization, adjust function calls.
13413         (vectorizable_type_promotion): Likewise.
13414         (vectorizable_store): Check for outer loop only in case of loop
13415         vectorization. Adjust function calls. For basic blocks, skip the
13416         relevance check and don't advance pointers.
13417         (vectorizable_load): Likewise.
13418         (vectorizable_condition): Add assert that it is loop vectorization,
13419         adjust function calls.
13420         (vect_analyze_stmt): Add argument. In case of basic block SLP, check
13421         that it is not reduction, get vector type, call only supported
13422         functions, skip loop specific parts.
13423         (vect_transform_stmt): Check for outer loop only in case of loop
13424         vectorization.
13425         (new_stmt_vec_info): Add new argument and initialize bb_vinfo.
13426         (vect_is_simple_use): Fix comment, add new argument, fix conditions
13427         for external definition.
13428         * passes.c (pass_slp_vectorize): New pass.
13429         * tree-vect-slp.c (find_bb_location): New function.
13430         (vect_get_and_check_slp_defs): Add argument, adjust function calls,
13431         check for patterns only in loops.
13432         (vect_build_slp_tree): Add argument, adjust function calls, fail in
13433         case of multiple types in basic block SLP.
13434         (vect_mark_slp_stmts_relevant): New function.
13435         (vect_supported_load_permutation_p): Fix comment.
13436         (vect_analyze_slp_instance): Add argument. In case of basic block
13437         SLP, take vectorization factor from statement's type, check that
13438         unrolling factor is 1. Adjust function call. Save SLP instance in
13439         either loop or basic block vectorization structure. Return FALSE,
13440         if SLP failed.
13441         (vect_analyze_slp): Add argument. Get strided stores groups from
13442         either loop or basic block vectorization structure. Return FALSE
13443         if basic block SLP failed.
13444         (new_bb_vec_info): New function.
13445         (destroy_bb_vec_info, vect_slp_analyze_node_operations,
13446         vect_slp_analyze_operations, vect_slp_analyze_bb): Likewise.
13447         (vect_schedule_slp): Add argument. Get SLP instances from either
13448         loop or basic block vectorization structure. Set vectorization factor
13449         to be 1 for basic block SLP.
13450         (vect_slp_transform_bb): New function.
13451         * params.def (PARAM_SLP_MAX_INSNS_IN_BB): Define.
13452
13453 2009-05-23  Mark Mitchell  <mark@codesourcery.com>
13454
13455         * final.c (shorten_branches): Do not align labels for jump tables.
13456         (final_scan_insn): Use JUMP_TABLE_DATA_P.
13457
13458 2009-05-23  Eric Botcazou  <ebotcazou@adacore.com>
13459
13460         * doc/passes.texi: Standardize spelling of RTL, Tree and Tree SSA.
13461         Remove outdated reference to flow.c and fix nits.
13462         * doc/gccint.texi: Tweak RTL description.
13463         * doc/rtl.texi: Likewise.
13464
13465 2009-05-23  Denis Chertykov  <chertykov@gmail.com>
13466
13467         * config/avr/avr.c: Change my email address.
13468         * config/avr/avr.h: Likewise.
13469         * config/avr/avr.md: Likewise.
13470         * config/avr/avr-protos.h: Likewise.
13471         * config/avr/libgcc.S: Likewise.
13472
13473 2009-05-22  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
13474
13475         * config/spu/spu-protos.h (aligned_mem_p, spu_valid_mov): Remove.
13476         (spu_split_load, spu_split_store): Change return type to int.
13477         (spu_split_convert): Declare.
13478         * config/spu/predicates.md (spu_mem_operand): Remove.
13479         (spu_mov_operand): Update.
13480         (spu_dest_operand, shiftrt_operator, extend_operator): Define.
13481         * config/spu/spu.c (regno_aligned_for_load): Remove.
13482         (reg_aligned_for_addr, spu_expand_load): Define.
13483         (spu_expand_extv): Reimplement and handle MEM.
13484         (spu_expand_insv): Handle MEM.
13485         (spu_sched_reorder): Handle insn's with length 0.
13486         (spu_legitimate_address_p): Reimplement.
13487         (store_with_one_insn_p): Return TRUE for any mode with size
13488         larger than 16 bytes.
13489         (address_needs_split): Define.
13490         (spu_expand_mov): Call spu_split_load and spu_split_store for MEM
13491         operands.
13492         (spu_convert_move): Define.
13493         (spu_split_load): Use spu_expand_load and change all MEM's to TImode.
13494         (spu_split_store): Change all MEM's to TImode.
13495         (spu_init_expanders): Preallocate registers that correspond to
13496         LAST_VIRTUAL_REG+1 and LAST_VIRTUAL_REG+2 and set them with
13497         mark_reg_pointer.
13498         (spu_split_convert): Define.
13499         * config/spu/spu.md (QHSI, QHSDI): New mode iterators.
13500         (_move<mode>, _movdi, _movti): Update predicate and condition.
13501         (load, store): Change to define_split.
13502         (extendqiti2, extendhiti2, extendsiti2, extendditi2): Simplify to
13503         extend<mode>ti2.
13504         (zero_extendqiti2, zero_extendhiti2, <v>lshr<mode>3_imm): Define.
13505         (lshr<mode>3, lshr<mode>3_imm, lshr<mode>3_re): Simplify to one
13506         define_insn_and_split of lshr<mode>3.
13507         (shrqbybi_<mode>, shrqby_<mode>): Simplify to define_expand.
13508         (<v>ashr<mode>3_imm): Define.
13509         (extv, extzv, insv): Allow MEM operands.
13510         (trunc_shr_ti<mode>, trunc_shr_tidi, shl_ext_<mode>ti,
13511         shl_ext_diti, sext_trunc_lshr_tiqisi, zext_trunc_lshr_tiqisi,
13512         sext_trunc_lshr_tihisi, zext_trunc_lshr_tihisi): Define for combine.
13513         (_spu_convert2): Change to define_insn_and_split and remove the
13514         corresponding define_peephole2.
13515         (stack_protect_set, stack_protect_test, stack_protect_test_si):
13516         Change predicates to memory_operand.
13517
13518 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
13519
13520         * config/arm/thumb2.md: Add 16-bit multiply instructions.
13521
13522 2009-05-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
13523
13524         PR tree-optimization/40219
13525         * tree.c (iterative_hash_expr): Make sure the builtin function is
13526         a normal builtin function and not a front end or back end builtin
13527         before indexing into the built_in_decls array.
13528
13529 2009-05-22  Richard Guenther  <rguenther@suse.de>
13530
13531         PR middle-end/38964
13532         * alias.c (write_dependence_p): Do not use TBAA for answering
13533         anti-dependence or output-dependence.
13534         * tree-ssa-structalias.c (set_uids_in_ptset): Remove TBAA pruning code.
13535         (emit_pointer_definition): Remove.
13536         (emit_alias_warning): Likewise.
13537         (find_what_var_points_to): Remove TBAA pruning code.
13538         (find_what_p_points_to): Likewise.  Do not warn about strict-aliasing
13539         violations.
13540         (compute_points_to_sets): Remove code computing the set of
13541         dereferenced pointers.
13542         * tree-data-ref.c (dr_may_alias_p): Properly use the split
13543         oracle for querying anti and output dependencies.
13544         * tree-ssa-alias.c (refs_may_alias_p_1): Add argument specifying
13545         if TBAA may be applied.
13546         (refs_anti_dependent_p): New function.
13547         (refs_output_dependent_p): Likewise.
13548         * tree-ssa-alias.h (refs_anti_dependent_p): Declare.
13549         (refs_output_dependent_p): Likewise.
13550         * doc/tree-ssa.texi (Memory model): New section.
13551         * doc/c-tree.texi (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
13552         * doc/gimple.texi (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
13553         * cfgexpand.c (expand_gimple_basic_block): Do not handle
13554         GIMPLE_CHANGE_DYNAMIC_TYPE or CHANGE_DYNAMIC_TYPE_EXPR.
13555         * expr.c (expand_expr_real_1): Likewise.
13556         * gimple-low.c (lower_stmt): Likewise.
13557         * gimple-pretty-print.c (dump_gimple_stmt): Likewise.
13558         (dump_gimple_cdt): Remove.
13559         * gimple.c (gss_for_code): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
13560         (gimple_size): Likewise.
13561         (walk_gimple_op): Likewise.
13562         (is_gimple_stmt): Likewise.
13563         (walk_stmt_load_store_addr_ops): Likewise.
13564         (gimple_build_cdt): Remove.
13565         * gimple.def (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
13566         * gimple.h (gimple_cdt_new_type): Remove.
13567         (gimple_cdt_new_type_ptr): Likewise.
13568         (gimple_cdt_set_new_type): Likewise.
13569         (gimple_cdt_location): Likewise.
13570         (gimple_cdt_location_ptr): Likewise.
13571         (gimple_cdt_set_location): Likewise.
13572         * gimplify.c (gimplify_expr): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
13573         * tree-cfg.c (remove_useless_stmts_1): Do not handle
13574         GIMPLE_CHANGE_DYNAMIC_TYPE.
13575         (verify_types_in_gimple_stmt): Likewise.
13576         * tree-inline.c (estimate_num_insns): Likewise.
13577         (expand_call_inline): Do not copy DECL_NO_TBAA_P.
13578         (copy_decl_to_var): Likewise.
13579         (copy_result_decl_to_var): Likewise.
13580         * tree-pretty-print.c (dump_generic_node): Do not handle
13581         CHANGE_DYNAMIC_TYPE_EXPR.
13582         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
13583         * tree-ssa-operands.c (get_expr_operands): Likewise.
13584         * tree-ssa-structalias.c (struct variable_info): Remove
13585         no_tbaa_pruning member.
13586         (new_var_info): Do not set it based on DECL_NO_TBAA_P.
13587         (unify_nodes): Do not copy it.
13588         (find_func_aliases): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
13589         (dump_solution_for_var): Do not dump no_tbaa_pruning state.
13590         (set_uids_in_ptset): Do not check it.
13591         (find_what_var_points_to): Likewise.
13592         (compute_tbaa_pruning): Remove.
13593         (compute_points_to_sets): Do not call it.
13594         * tree.c (walk_tree_1): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
13595         * tree.def (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
13596         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Remove.
13597         (CHANGE_DYNAMIC_TYPE_LOCATION): Likewise.
13598         (DECL_NO_TBAA_P): Likewise.
13599         (struct tree_decl_common): Move no_tbaa_flag to unused flags section.
13600         * omp-low.c (copy_var_decl): Do not copy DECL_NO_TBAA_P.
13601         (expand_omp_atomic_pipeline): Do not set it.
13602         * print-tree.c (print_node): Do not dump it.
13603         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
13604         redundant check.
13605
13606 2009-05-22 Vladimir Makarov <vmakarov@redhat.com>
13607
13608         PR target/39856
13609         * reg-stack.c (subst_stack_regs_pat): Remove gcc_assert for note
13610         for clobber.
13611
13612 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
13613
13614         * tree.c (handle_dll_attribute): Mark dllexport'd inlines as
13615         non-external.
13616
13617 2009-05-22  Ben Elliston  <bje@au.ibm.com>
13618
13619         * Makefile.in (bversion.h, s-bversion): New targets.
13620         (TOPLEV_H): Add bversion.h.
13621         * toplev.h: Include "bversion.h".
13622         (ATTRIBUTE_GCC_DIAG): When building with checking disabled, use
13623         the __format__ attribute only if compiling with the same version
13624         of GCC as the sources (the "build version").
13625
13626 2009-05-22  Ben Elliston  <bje@au.ibm.com>
13627
13628         * c-format.c (handle_format_attribute): Fix comment typo.
13629
13630 2009-05-21  Steve Ellcey  <sje@cup.hp.com>
13631
13632         PR target/37846
13633         * config/ia64/ia64.opt (mfused-madd): New.
13634         * config/ia64/ia64.h (TARGET_DEFAULT): Set MASK_FUSED_MADD.
13635         * config/ia64/hpux.h (TARGET_DEFAULT): Ditto.
13636         * config/ia64/ia64.md (maddsf4, msubsf4, nmaddsf4,
13637         madddf4, madddf4_trunc, msubdf4, msubdf4_trunc, nmadddf4,
13638         nmadddf4_truncsf, maddxf4, maddxf4_truncsf, maddxf4_truncdf,
13639         msubxf4, msubxf4_truncsf msubxf4_truncdf, nmaddxf4,
13640         nmaddxf4_truncsf, nmaddxf4_truncdf): Check TARGET_FUSED_MADD.
13641         * config/ia64/vect.md (addv2sf3, subv2sf3): Force fpma/fpms
13642         instruction if !TARGET_FUSED_MADD.
13643         (fpma, fpms): Remove colon from name.
13644
13645 2009-05-22  Richard Guenther  <rguenther@suse.de>
13646
13647         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Record
13648         TMR_ORIGINAL.  Always either record TMR_SYMBOL or TMR_BASE.
13649         * tree-ssa-pre.c (create_component_ref_by_pieces_1): Handle
13650         TARGET_MEM_REF.
13651         (create_expression_by_pieces): Only convert if necessary.
13652         * gimplify.c (gimplify_expr): Handle TARGET_MEM_REF.
13653         * tree-ssa-loop-im.c (gen_lsm_tmp_name): Handle INTEGER_CST.
13654
13655 2009-05-21  Adam Nemet  <anemet@caviumnetworks.com>
13656
13657         * config/mips/mips.md (*extzv_trunc<mode>_exts): Turn into a
13658         regular pattern from a template and rename it ...
13659         (*extzv_truncsi_exts): ... to this.
13660
13661 2009-05-21  Richard Guenther  <rguenther@suse.de>
13662
13663         * cgraph.h (struct cgraph_node): Remove inline_decl member.
13664         * ipa-inline.c (cgraph_mark_inline_edge): Do not check it.
13665         (cgraph_default_inline_p): Likewise.
13666         (cgraph_decide_inlining_incrementally): Likewise.
13667
13668 2009-05-21  H.J. Lu  <hongjiu.lu@intel.com>
13669             Uros Bizjak  <ubizjak@gmail.com>
13670
13671         * config/i386/cpuid.h (bit_MOVBE): New.
13672
13673         * config/i386/driver-i386.c (host_detect_local_cpu): Check movbe.
13674
13675         * config/i386/i386.c (OPTION_MASK_ISA_MOVBE_SET): New.
13676         (OPTION_MASK_ISA_MOVBE_UNSET): Likewise.
13677         (ix86_handle_option): Handle OPT_mmovbe.
13678         (ix86_target_string): Add -mmovbe.
13679         (pta_flags): Add PTA_MOVBE.
13680         (processor_alias_table): Add PTA_MOVBE to "atom".
13681         (override_options): Handle PTA_MOVBE.
13682
13683         * config/i386/i386.h (TARGET_MOVBE): New.
13684
13685         * config/i386/i386.md (bswapsi2): Check TARGET_MOVBE.
13686         (*bswapsi_movbe): New.
13687         (*bswapdi_movbe): Likewise.
13688         (bswapdi2): Renamed to ...
13689         (*bswapdi_1): This.
13690         (bswapdi2): New expander.
13691
13692         * config/i386/i386.opt (mmovbe): New.
13693
13694         * doc/invoke.texi: Document -mmovbe.
13695
13696 2009-05-21  Taras Glek  <tglek@mozilla.com>
13697
13698         * plugin.c (try_init_one_plugin): Updated to new plugin_init API.
13699         * gcc-plugin.h (plugin_init): Updated signature.
13700         * gcc-plugin.h (plugin_name_args): Moved to this header.
13701         * doc/plugins.texi (plugin_init): Updated documention to reflect
13702         API change.
13703         * doc/plugins.texi (plugin_name_args): Added to documention.
13704
13705 2009-05-21  Mark Mitchell  <mark@codesourcery.com>
13706
13707         * config/arm/neon.md (*mul<mode>3add<mode>_neon): New pattern.
13708         (*mul<mode>3neg<mode>add<mode>_neon): Likewise.
13709
13710 2009-05-21  Shujing Zhao  <pearly.zhao@oracle.com>
13711
13712         * config/i386/i386.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P and
13713         JUMP_TABLE_DATA_P predicates where applicable.
13714         * config/i386/predicates.md: Ditto.
13715         * config/i386/sse.md: Ditto.
13716
13717 2009-05-21  Jakub Jelinek  <jakub@redhat.com>
13718
13719         * config/i386/i386.md (adddi_4_rex64, addsi_4, addhi_4): For
13720         operand2 -128 override length_immediate attribute to 1.
13721         * config/i386/predicates.md (constm128_operand): New predicate.
13722
13723         * config/i386/i386.c (memory_address_length): Handle %r12
13724         the same as %rsp and %r13 the same as %rbp.  For %rsp and %rbp
13725         also check REGNO.
13726         (ix86_attr_length_address_default): For MODE_SI lea in 64-bit
13727         mode look through optional ZERO_EXTEND and SUBREG.
13728         * config/i386/i386.md (R12_REG): New define_constant.
13729         (prefix_data16): For sse unit set also for MODE_TI insns.
13730         (prefix_rex): For -m32 always return 0.  For TYPE_IMOVX
13731         insns set if operand 1 is ext_QIreg_operand.
13732         (modrm): For TYPE_IMOV clear only if not MODE_DI.  For
13733         TYPE_{ALU{,1},ICMP,TEST} insn clear if there is non-shortened
13734         immediate.
13735         (*movdi_extzv_1, zero_extendhidi2, zero_extendqidi2): Change
13736         mode from MODE_DI to MODE_SI.
13737         (movdi_1_rex64): Override modrm and length_immediate attributes
13738         only for movabs (TYPE_IMOV, alternative 2).
13739         (zero_extendsidi2_rex64): Clear prefix_0f attribute if TYPE_IMOVX.
13740         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit,
13741         *float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit,
13742         *float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit,
13743         *float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Set
13744         prefix_rex attribute if DImode.
13745         (*adddi_1_rex64, *adddi_2_rex64, *adddi_3_rex64, *adddi_5_rex64,
13746         *addsi_1, *addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
13747         *addsi_3_zext, *addsi_5, *addhi_1_lea, *addhi_1, *addhi_2, *addhi_3,
13748         *addhi_5, *addqi_1_lea, *addqi_1): Override length_immediate
13749         attribute to 1 if TYPE_ALU and operand 2 is const128_operand.
13750         (pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64):
13751         Likewise.  For TYPE_IMOV clear length_immediate attribute.
13752         (*ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashldi3_cconly_rex64,
13753         *ashlsi3_1, *ashlsi3_1_zext, *ashlsi3_cmp, **ashlsi3_cconly,
13754         *ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1, *ashlhi3_cmp,
13755         *ashlhi3_cconly, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
13756         *ashlqi3_cconly): Override length_immediate attribute to 0 if TYPE_ALU
13757         or one operand TYPE_ISHIFT.
13758         (*ashrdi3_1_one_bit_rex64, *ashrdi3_one_bit_cmp_rex64,
13759         *ashrdi3_one_bit_cconly_rex64, *ashrsi3_1_one_bit,
13760         *ashrsi3_1_one_bit_zext, *ashrsi3_one_bit_cmp,
13761         *ashrsi3_one_bit_cconly, *ashrsi3_one_bit_cmp_zext,
13762         *ashrhi3_1_one_bit, *ashrhi3_one_bit_cmp, *ashrhi3_one_bit_cconly,
13763         *ashrqi3_1_one_bit, *ashrqi3_1_one_bit_slp, *ashrqi3_one_bit_cmp,
13764         *ashrqi3_one_bit_cconly, *lshrdi3_1_one_bit_rex64,
13765         *lshrdi3_cmp_one_bit_rex64, *lshrdi3_cconly_one_bit_rex64,
13766         *lshrsi3_1_one_bit, *lshrsi3_1_one_bit_zext, *lshrsi3_one_bit_cmp,
13767         *lshrsi3_one_bit_cconly, *lshrsi3_cmp_one_bit_zext,
13768         *lshrhi3_1_one_bit, *lshrhi3_one_bit_cmp, *lshrhi3_one_bit_cconly,
13769         *lshrqi3_1_one_bit, *lshrqi3_1_one_bit_slp, *lshrqi2_one_bit_cmp,
13770         *lshrqi2_one_bit_cconly, *rotlsi3_1_one_bit_rex64, *rotlsi3_1_one_bit,
13771         *rotlsi3_1_one_bit_zext, *rotlhi3_1_one_bit, *rotlqi3_1_one_bit_slp,
13772         *rotlqi3_1_one_bit, *rotrdi3_1_one_bit_rex64, *rotrsi3_1_one_bit,
13773         *rotrsi3_1_one_bit_zext, *rotrhi3_one_bit, *rotrqi3_1_one_bit,
13774         *rotrqi3_1_one_bit_slp): Override length_immediate attribute to 0,
13775         set mode attribute, don't override length attribute.
13776         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Set prefix_0f attribute
13777         to 1.
13778         (return_internal_long): Set length attribute to 2 instead of 1.
13779         (*strmovqi_rex_1, *strsetqi_rex_1, *rep_stosqi_rex64,
13780         *cmpstrnqi_nz_rex_1, *cmpstrnqi_rex_1, *strlenqi_rex_1): Clear
13781         prefix_rex attribute.
13782         * config/i386/predicates.md (ext_QIreg_operand, const128_operand):
13783         New predicates.
13784         (memory_displacement_only_operand): Always return 0 for TARGET_64BIT.
13785
13786 2009-05-21  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
13787
13788         * config/arm/thumb2.md (orsi_notsi_si): Fix typo in pattern.
13789
13790 2009-05-20  Ian Lance Taylor  <iant@google.com>
13791
13792         * tree.c (build_tree_list_vec_stat): New function.
13793         (ctor_to_vec): New function.
13794         (build_nt_call_vec): New function.
13795         (build_call_array): Change args to be a const pointer.
13796         (build_call_vec): New function.
13797         * tree.h (build_nt_call_vec): Declare.
13798         (build_tree_list_vec_stat): Declare.
13799         (build_tree_list_vec): Define.
13800         (build_call_array): Update declaration.
13801         (build_call_vec): Declare.
13802         (ctor_to_vec): Declare.
13803         * c-common.c (tree_vector_cache): New static variable.
13804         (make_tree_vector): New function.
13805         (release_tree_vector): New function.
13806         (make_tree_vector_single): New function.
13807         (make_tree_vector_copy): New function.
13808         * c-common.h (tree_vector_cache, make_tree_vector): Declare.
13809         (make_tree_vector_single, make_tree_vector_copy): Declare.
13810         * c-parser.c (cached_expr_list_1, cached_expr_list_2): Remove.
13811         (c_parser_expr_list): Don't manage cache here, instead call
13812         make_tree_vector.
13813         (c_parser_release_expr_list): Remove static function.
13814         (c_parser_vec_to_tree_list): Remove static function.
13815         (c_parser_attributes): Call build_tree_list_vec instead of
13816         c_parser_vec_to_tree_list.  Call release_tree_vector instead of
13817         c_parser_release_expr_list.
13818         (c_parser_postfix_expression_after_primary): Likewise.
13819         (c_parser_objc_keywordexpr): Likewise.
13820
13821 2009-05-20  Sandra Loosemore  <sandra@codesourcery.com>
13822
13823         * doc/tm.texi (Misc): Document TARGET_INVALID_PARAMETER_TYPE,
13824         TARGET_INVALID_RETURN_TYPE, TARGET_PROMOTED_TYPE, and
13825         TARGET_CONVERT_TO_TYPE.
13826         * hooks.c (hook_tree_const_tree_null): Define.
13827         * hooks.h (hook_tree_const_tree_null): Declare.
13828         * target.h (struct gcc_target):  Add invalid_parameter_type,
13829         invalid_return_type, promoted_type, and convert_to_type fields.
13830         * target-def.h: (TARGET_INVALID_PARAMETER_TYPE): Define.
13831         (TARGET_INVALID_RETURN_TYPE): Define.
13832         (TARGET_PROMOTED_TYPE): Define.
13833         (TARGET_CONVERT_TO_TYPE): Define.
13834         (TARGET_INITIALIZER): Update for new fields.
13835         * c-decl.c (grokdeclarator): Check targetm.invalid_return_type.
13836         (grokparms): Check targetm.invalid_parameter_type.
13837         * c-typeck.c (default_conversion): Check targetm.promoted_type.
13838         * c-convert.c (convert): Check targetm.convert_to_type.
13839
13840 2009-05-20  Adam Nemet  <anemet@caviumnetworks.com>
13841
13842         * config/mips/mips.md (*extenddi_truncate<mode>,
13843         *extendsi_truncate<mode>): Emit exts if supported.  Add attribute
13844         defintions.
13845         (*extendhi_truncateqi): New define_insn_and_sptit.
13846
13847 2009-05-20  Jakub Jelinek  <jakub@redhat.com>
13848
13849         PR middle-end/40204
13850         * fold-const.c (fold_binary) <case BIT_AND_EXPR>: Avoid infinite
13851         recursion if build_int_cst_type returns the same INTEGER_CST as arg1.
13852
13853 2009-05-20  Eric Botcazou  <ebotcazou@adacore.com>
13854
13855         * fold-const.c (build_fold_addr_expr_with_type): Take the address of
13856         the operand of VIEW_CONVERT_EXPR.
13857
13858 2009-05-20  H.J. Lu  <hongjiu.lu@intel.com>
13859
13860         * config/i386/driver-i386.c (host_detect_local_cpu): Check
13861         extended family and model for Intel processors.  Support Intel Atom.
13862
13863 2009-05-20  Olivier Hainque  <hainque@adacore.com>
13864
13865         * gstab.h (stab_code_type): Define, to be used instead of the
13866         __stab_debug_code enum, made anonymous.  Add 2009 to the copyright
13867         notice.
13868         * dbxout.c (STAB_CODE_TYPE): Remove #define and replace use
13869         occurrences by stab_code_type.
13870         * mips-tfile.c (STAB_CODE_TYPE): Remove #define, unused.
13871
13872 2009-05-20  Martin Jambor  <mjambor@suse.cz>
13873
13874         * tree-flow.h (insert_edge_copies_seq): Undeclare.
13875         (sra_insert_before): Likewise.
13876         (sra_insert_after): Likewise.
13877         (sra_init_cache): Likewise.
13878         (sra_type_can_be_decomposed_p): Likewise.
13879         * tree-mudflap.c (insert_edge_copies_seq): Copied here from tree-sra.c
13880         * tree-sra.c (sra_type_can_be_decomposed_p): Made static.
13881         (sra_insert_before): Likewise.
13882         (sra_insert_after): Likewise.
13883         (sra_init_cache): Likewise.
13884         (insert_edge_copies_seq): Made static and moved upwards.
13885
13886         * tree-complex.c (extract_component): Added VIEW_CONVERT_EXPR switch
13887         case.
13888
13889         * tree-flow-inline.h (contains_view_convert_expr_p): New function.
13890
13891         * ipa-prop.c (get_ssa_def_if_simple_copy): New function.
13892         (determine_cst_member_ptr): Call get_ssa_def_if_simple_copy to skip
13893         simple copies.
13894
13895 2009-05-20  Richard Guenther  <rguenther@suse.de>
13896
13897         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
13898         with mismatched comparison modes.
13899
13900 2009-05-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
13901
13902         * config/arm/arm.md (*arm_iorsi3): Refactored for only ARM.
13903         (peephole ior (reg, int) -> mov, ior): Refactored for only ARM.
13904         * config/arm/thumb2.md (*thumb_andsi_not_shiftsi_si): Allow bic
13905         with shifts for Thumb2.
13906         (orsi_notsi): New for orn.
13907         (*thumb_orsi_notshiftsi_si): Allow orn with shifts.
13908         (*thumb2_iorsi3): Rewrite support for iorsi for Thumb2.
13909         * config/arm/arm.c (const_ok_for_op): Split case for IOR for Thumb2.
13910         (arm_gen_constant): Set can_invert for IOR and Thumb2, Add comments.
13911         Don't invert remainder for IOR.
13912
13913 2009-05-19  Zdenek Dvorak  <ook@ucw.cz>
13914
13915         PR tree-optimization/40087
13916         * tree-ssa-loop-niter.c (number_of_iterations_ne_max,
13917         number_of_iterations_ne): Rename never_infinite argument.
13918         (number_of_iterations_lt_to_ne, number_of_iterations_lt,
13919         number_of_iterations_le): Handle pointer-type ivs when
13920         exit_must_be_taken is false.
13921         (number_of_iterations_cond):  Do not always assume that
13922         exit_must_be_taken if the control variable is a pointer.
13923
13924 2009-05-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13925
13926         * c-typeck.c (build_binary_op): Allow % on integal vectors.
13927         * doc/extend.texi (Vector Extension): Document that % is allowed too.
13928
13929 2009-05-19  H.J. Lu  <hongjiu.lu@intel.com>
13930
13931         * config/i386/i386.c (ix86_avoid_jump_mispredicts): Check
13932         ASM_OUTPUT_MAX_SKIP_PAD instead of ASM_OUTPUT_MAX_SKIP_ALIGN.
13933
13934 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
13935
13936         PR c/40172
13937         * c.opt (Wlogical-op): Disabled by default.
13938         * c-opt (c_common_post_options): Do not enable Wlogical-op with
13939         Wextra.
13940         * doc/invoke.texi (Wlogical-op): Likewise.
13941
13942 2009-05-19  Eric Botcazou  <ebotcazou@adacore.com>
13943
13944         * tree-scalar-evolution.c (follow_ssa_edge_expr) <NOP_EXPR>: Turn
13945         into CASE_CONVERT.
13946         <PLUS_EXPR>: Strip useless type conversions instead of type nops.
13947         Propagate the type of the first operand.
13948         <ASSERT_EXPR>: Simplify.
13949         (follow_ssa_edge_in_rhs): Use gimple_expr_type to get the type.
13950         Rewrite using the RHS code as discriminant.
13951         <NOP_EXPR>: Turn into CASE_CONVERT.
13952         <PLUS_EXPR>: Propagate the type of the first operand.
13953
13954 2009-05-19  Steve Ellcey  <sje@cup.hp.com>
13955
13956         * config/ia64/ia64-protos.h (ia64_dconst_0_5): New.
13957         (ia64_dconst_0_375): New.
13958         * config/ia64/ia64.c (ia64_override_options): Remove
13959         -minline-sqrt-min-latency warning.
13960         (ia64_dconst_0_5_rtx, ia64_dconst_0_5): New.
13961         (ia64_dconst_0_375_rtx, ia64_dconst_0_375): New
13962         * config/ia64/ia64.md (*sqrt_approx): Remove.
13963         (sqrtsf2): Remove #if 0.
13964         (sqrtsf2_internal_thr): Rewrite and move to div.md.
13965         (sqrtdf): Remove assert.
13966         (sqrtdf2_internal_thr): Rewrite and move to div.md.
13967         (sqrtxf2): Remove #if 0.
13968         (sqrtxf2_internal_thr): Rewrite and move to div.md.
13969         * div.md (sqrt_approx_rf): New.
13970         (sqrtsf2_internal_thr): New implementation.
13971         (sqrtsf2_internal_lat): New.
13972         (sqrtdf2_internal_thr: New implementation.
13973         (sqrtxf2_internal): New implementation.
13974
13975 2009-05-19  Francois-Xavier Coudert  <fxcoudert@gmail.com>
13976             Hans-Peter Nilsson  <hp@axis.com>
13977
13978         * defaults.h (UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE)
13979         (WCHAR_TYPE, MODIFIED_WCHAR_TYPE, PTRDIFF_TYPE, WINT_TYPE)
13980         (INTMAX_TYPE, UINTMAX_TYPE, SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE)
13981         (INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE)
13982         (UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE)
13983         (INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE)
13984         (UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE)
13985         (INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE)
13986         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE)
13987         (SIZE_TYPE, PID_TYPE, CHAR16_TYPE, CHAR32_TYPE): Move defaults here...
13988         * c-common.c: ...from here.
13989
13990 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
13991
13992         * c-common.c (warn_logical_operator): Remove unnecessary conditionals.
13993
13994 2009-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13995
13996         * builtins.c (do_mpc_arg1): Separate MPFR/MPC C rounding types.
13997
13998 2009-05-19  Ben Elliston  <bje@au.ibm.com>
13999
14000         * unwind-dw2-fde.c (fde_unencoded_compare): Replace type punning
14001         assignments with memcpy calls.
14002         (add_fdes): Likewise.
14003         (binary_search_unencoded_fdes): Likewise.
14004         (linear_search_fdes): Eliminate type puns.
14005
14006 2009-05-19  Richard Guenther  <rguenther@suse.de>
14007
14008         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do
14009         not falsely claim to have propagated into all uses.
14010
14011 2009-05-19  Ben Elliston  <bje@au.ibm.com>
14012
14013         * doc/invoke.texi (C Dialect Options): Update OpenMP specification
14014         version to v3.0.
14015
14016 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
14017
14018         * config/sh/sh-protos.h (sh_legitimate_address_p): Remove.
14019         * config/sh/sh.c (sh_legitimate_address_p): Make static.
14020         (TARGET_LEGITIMATE_ADDRESS_P): New.
14021         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14022         * config/sh/sh.md: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
14023
14024 2009-05-18  Dodji Seketeli  <dodji@redhat.com>
14025
14026         PR debug/40109
14027         * dwarf2out.c (gen_type_die_with_usage): Generate the DIE as a
14028         child of the containing namespace's DIE.
14029
14030 2009-05-18  Adam Nemet  <anemet@caviumnetworks.com>
14031
14032         * config/mips/mips.md (*zero_extend<GPR:mode>_trunc<SHORT:mode>,
14033         *zero_extendhi_truncqi):  Move after the zero_extend patterns.
14034         (*extenddi_truncate<mode>, *extendsi_truncate<mode>): Move after the
14035         extend patterns.
14036
14037 2009-05-18  H.J. Lu  <hongjiu.lu@intel.com>
14038
14039         PR target/39942
14040         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Replace
14041         gen_align with gen_pad.
14042         (ix86_reorg): Check ASM_OUTPUT_MAX_SKIP_PAD instead of
14043         #ifdef ASM_OUTPUT_MAX_SKIP_ALIGN.
14044
14045         * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): New.
14046         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
14047
14048         * config/i386/i386.md (align): Renamed to ...
14049         (pad): This.  Replace ASM_OUTPUT_MAX_SKIP_ALIGN with
14050         ASM_OUTPUT_MAX_SKIP_PAD.
14051
14052 2009-05-18  Andreas Schwab  <schwab@linux-m68k.org>
14053
14054         * config.gcc: Fix variable syntax.
14055
14056         PR target/39531
14057         * config/m68k/m68k.c (output_andsi3): Mask off sign bit copies
14058         before calling exact_log2.
14059         (output_iorsi3): Likewise.
14060         (output_xorsi3): Likewise.
14061
14062 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
14063
14064         * config/sh/sh.c (expand_cbranchdi4): Use a scratch register
14065         for the none zero constant operand except for EQ and NE
14066         comprisons even when the first operand is R0.
14067
14068 2009-05-18  Andreas Krebbel  <krebbel1@de.ibm.com>
14069
14070         * config/s390/2064.md: Remove trailing whitespaces.
14071         * config/s390/2084.md: Likewise.
14072         * config/s390/constraints.md: Likewise.
14073         * config/s390/fixdfdi.h: Likewise.
14074         * config/s390/libgcc-glibc.ver: Likewise.
14075         * config/s390/s390-modes.def: Likewise.
14076         * config/s390/s390-protos.h: Likewise.
14077         * config/s390/s390.c: Likewise.
14078         * config/s390/s390.h: Likewise.
14079         * config/s390/s390.md: Likewise.
14080         * config/s390/tpf-unwind.h: Likewise.
14081
14082 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
14083
14084         * config/m68k/m68k.c (m68k_legitimize_address): Fix typo in signature.
14085
14086 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
14087
14088         M68K TLS support.
14089         * configure.ac (m68k-*-*): Check if binutils support TLS.
14090         * configure: Regenerate.
14091         * config/m68k/predicates.md (symbolic_operand): Extend comment.
14092         * config/m68k/constraints.md (Cu): New constraint.
14093         * config/m68k/m68k.md (UNSPEC_GOTOFF): Remove.
14094         (UNSPEC_RELOC16, UNSPEC_RELOC32): New constants.
14095         (movsi): Handle TLS symbols.
14096         (addsi3_5200): Handle XTLS symbols, indent.
14097         * config/m68k/m68k-protos.h (m68k_legitimize_tls_address): Declare.
14098         (m68k_tls_reference_p): Declare.
14099         (m68k_legitimize_address): Declare.
14100         (m68k_unwrap_symbol): Declare.
14101         * config/m68k/m68k.opt (mxtls): New option.
14102         * config/m68k/m68k.c (ggc.h): Include.
14103         (m68k_output_dwarf_dtprel): Implement hook.
14104         (TARGET_HAVE_TLS, TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
14105         (m68k_expand_prologue): Load GOT pointer when function needs it.
14106         (m68k_illegitimate_symbolic_constant_p): Handle TLS symbols.
14107         (m68k_legitimate_constant_address_p): Same.
14108         (m68k_decompose_address): Handle TLS references.
14109         (m68k_get_gp): New static function.
14110         (enum m68k_reloc): New contants.
14111         (TLS_RELOC_P): New macro.
14112         (m68k_wrap_symbol): New static function.
14113         (m68k_unwrap_symbol): New function.
14114         (m68k_final_prescan_insn_1): New static function.
14115         (m68k_final_prescan_insn): New function.
14116         (m68k_move_to_reg, m68k_wrap_symbol_into_got_ref): New static
14117         functions.
14118         (legitimize_pic_address): Handle TLS references..
14119         (m68k_tls_get_addr, m68k_get_tls_get_addr)
14120         (m68k_libcall_value_in_a0_p)
14121         (m68k_call_tls_get_addr, m68k_read_tp, m68k_get_m68k_read_tp)
14122         (m68k_call_m68k_read_tp): Helper variables and functions for ...
14123         (m68k_legitimize_tls_address): Handle TLS references.
14124         (m68k_tls_symbol_p, m68k_tls_reference_p_1, m68k_tls_reference_p):
14125         New functions.
14126         (m68k_legitimize_address): Handle TLS symbols.
14127         (m68k_get_reloc_decoration): New static function.
14128         (m68k_output_addr_const_extra): Handle UNSPEC_RELOC16 and
14129         UNSPEC_RELOC32.
14130         (m68k_output_dwarf_dtprel): Implement hook.
14131         (print_operand_address): Handle UNSPEC_RELOC16 adn UNSPEC_RELOC32.
14132         (m68k_libcall_value): Return result in A0 instead of D0 when asked by
14133         m68k_call_* routines.
14134         (sched_attr_op_type): Handle TLS symbols.
14135         (gt-m68k.h): Include.
14136         * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
14137         (LEGITIMATE_PIC_OPERAND_P): Support TLS.
14138
14139 2009-05-18  Martin Jambor  <mjambor@suse.cz>
14140
14141         * ipa-prop.c (ipa_check_stmt_modifications): Removed.
14142         (visit_store_addr_for_mod_analysis): New function.
14143         (ipa_detect_param_modifications): Use walk_stmt_load_store_addr_ops.
14144         (determine_cst_member_ptr): Use gimple_assign_single_p.
14145         (ipa_get_stmt_member_ptr_load_param): Use gimple_assign_single_p.
14146         (ipa_analyze_call_uses): Use !gimple_assign_rhs2 rather than number of
14147         operands.  Don't check number of operands of a NOP_EXPR.
14148
14149 2009-05-18  Eric Fisher  <joefoxreal@gmail.com>
14150
14151         * doc/tree-ssa.texi (SSA Operands): Fix a mistake.
14152
14153 2009-05-17  Manuel López-Ibáñez  <manu@gcc.gnu.org>
14154
14155         PR c/40172
14156         * c-common.c (warn_logical_operator): Don't warn if one of
14157         expression isn't always true or false.
14158
14159 2009-05-17  Kai Tietz  <kai.tietz@onevision.com>
14160
14161         * config/i386/biarch32.h: New file.
14162         * config.gcc: Add for target i386-w64-* the biarch32.h to tm_file.
14163
14164 2009-05-17  Adam Nemet  <anemet@caviumnetworks.com>
14165
14166         * config/mips/mips.md (*zero_extend<mode>_trunchi,
14167         *zero_extend<mode>_truncqi): Merge these into ...
14168         (*zero_extend<GPR:mode>_trunc<SHORT:mode>): ... this new pattern.
14169         Name the pattern following this as *zero_extendhi_truncqi.
14170
14171 2009-05-16  Brad Lucier  <lucier@math.purdue.edu>
14172
14173         PR middle-end/39301
14174         * hwint.h: Add macro HOST_WIDEST_INT_PRINT.
14175         * bitmap.c (bitmap_descriptor): Make fields HOST_WIDEST_INT.
14176         (output_info): Make field HOST_WIDEST_INT.
14177         (print_statistics): Use HOST_WIDEST_INT_PRINT.
14178         (dump_bitmat_statistics): Same.
14179
14180 2009-05-16  Francois-Xavier Coudert  <fxcoudert@gmail.com>
14181
14182         * config.gcc (use_gcc_stdint):  Set to wrap.
14183         * config/darwin.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
14184         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
14185         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
14186         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
14187         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
14188         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
14189         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
14190         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
14191
14192 2009-05-16  Joseph Myers  <joseph@codesourcery.com>
14193
14194         * config.gcc (mips*-*-*): Support arch_32, arch_64, tune_32 and
14195         tune_64.
14196         * config/mips/mips.h (MIPS_ABI_DEFAULT, MULTILIB_ABI_DEFAULT):
14197         Move definitions earlier.
14198         (OPT_ARCH64, OPT_ARCH32): Define.
14199         (OPTION_DEFAULT_SPECS): Add entries for arch_32, arch_64, tune_32
14200         and tune_64.
14201
14202 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
14203
14204         PR target/40153
14205         * arm.md (cstoresi_nltu_thumb1): Use a neg of ltu as the pattern name
14206         implies.
14207
14208 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
14209
14210         * arm.md (movdi2): Copy non-reg values to DImode registers.
14211
14212 2009-05-16  Jakub Jelinek  <jakub@redhat.com>
14213
14214         PR target/39942
14215         * final.c (label_to_max_skip): New function.
14216         (label_to_alignment): Only use LABEL_TO_ALIGNMENT if
14217         CODE_LABEL_NUMBER <= max_labelno.
14218         * output.h (label_to_max_skip): New prototype.
14219         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Renamed to...
14220         (ix86_avoid_jump_mispredicts): ... this.  Don't define if
14221         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.  Update comment.
14222         Handle CODE_LABELs with >= 16 byte alignment or with
14223         max_skip == (1 << align) - 1.
14224         (ix86_reorg): Don't call ix86_avoid_jump_mispredicts if
14225         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.
14226
14227         PR target/39942
14228         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Don't emit second
14229         .p2align 3 if MAX_SKIP is smaller than 7.
14230         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
14231
14232 2009-05-15  Ian Lance Taylor  <iant@google.com>
14233
14234         * alias.c (struct alias_set_entry_d): Rename from struct
14235         alias_set_entry.  Change all uses.
14236         * except.c (struct call_site_record_d): Rename from struct
14237         call_site_record.  Change all uses.
14238         * except.h (struct eh_region_d): Rename from struct eh_region.
14239         Change all uses.
14240         * gcse.c (struct hash_table_d): Rename from struct hash_table.
14241         Change all uses.
14242         * graphite.c (struct ivtype_map_elt_d): Rename fromstruct
14243         ivtype_map_elt.  Change all uses.
14244         (struct rename_map_elt_d): Rename fromstruct rename_map_elt.
14245         Change all uses.
14246         (struct ifsese_d): Rename fromstruct ifsese.  Change all uses.
14247         * graphite.h (struct name_tree_d): Rename from struct name_tree.
14248         Change all uses.
14249         (struct sese_d): Rename from struct sese.  Change all uses.
14250         * omega.h (struct eqn_d): Rename from struct eqn.  Change all uses.
14251         (struct omega_pb_d): Rename from struct omega_pb.  Change all uses.
14252         * optabs.h (struct optab_d): Rename from struct optab.  Change all
14253         uses.
14254         (struct convert_optab_d): Rename from struct convert_optab.
14255         Change all uses.
14256         * tree-pass.h (struct ipa_opt_pass_d): Rename fromstruct
14257         ipa_opt_pass.  Change all uses.
14258         * tree-predcom.c (struct dref_d): Rename from struct dref.  Change
14259         all uses.
14260
14261         * c-decl.c (pushtag): If -Wc++-compat, warn if the tag is already
14262         defined as a typedef.
14263         (grokdeclarator): If -Wc++-compat, warn if a typedef is already
14264         defined as a tag.
14265
14266 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
14267
14268         PR 16302
14269         * fold-const.c (make_range,build_range_check,merge_ranges): Move
14270         declaration to...
14271         (merge_ranges): Returns bool.
14272         * tree.h (make_range): .. to here.
14273         (build_range_check): Likewise.
14274         (merge_ranges): Likewise. Renamed from merge_ranges.
14275         * c-typeck.c (parser_build_binary_op): Update calls to
14276         warn_logical_operator.
14277         * c-common.c (warn_logical_operator): Add new warning.
14278         * c-common.h (warn_logical_operator): Update declaration.
14279
14280 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
14281
14282         * ira-conflicts.c (add_insn_allocno_copies): Fix wrong conditional.
14283
14284 2009-05-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14285
14286         * doc/install.texi: Document MPC requirements, flags etc.
14287
14288         * builtins.c (do_mpc_arg1, fold_builtin_ccos): New.
14289         (fold_builtin_cexp): Ensure we get a complex REAL_TYPE.
14290         Evaluate constant arguments.
14291         (fold_builtin_carg): Ensure we get a complex REAL_TYPE.
14292         (fold_builtin_1): Likewise, also evaluate constant arguments.
14293         Remove superfluous break.
14294         (do_mpc_ckconv): New.
14295         * real.h: Include mpc.h.
14296         * toplev.c (print_version): Output MPC version info if available.
14297
14298 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
14299
14300         * fold-const.c (fold_convert_const_real_from_real): Check for overflow.
14301
14302 2009-05-15  H.J. Lu  <hongjiu.lu@intel.com>
14303
14304         * config/i386/i386.c (ix86_reorg): Call optimize_function_for_speed_p
14305         only once.
14306
14307 2009-05-15  Jan Hubicka  <jh@suse.cz>
14308
14309         * doc/invoke.texi (max-early-inliner-iterations): New flag.
14310         * ipa-inline.c (enum inlining_mode): New INLINE_SIZE_NORECURSIVE.
14311         (try_inline): Fix return value.
14312         (cgraph_decide_inlining_incrementally): Honor new value.
14313         (cgraph_early_inlining): Handle indirect inlining.
14314         * params.def (PARAM_EARLY_INLINER_MAX_ITERATIONS): New.
14315
14316 2009-05-15  Jan Hubicka  <jh@suse.cz>
14317
14318         * cgraph.h (struct cgraph_node): Add finalized_by_frotnend flag.
14319         * cgraphunit.c (cgraph_finalize_function): Set it.
14320         (cgraph_expand_function): Use it.
14321
14322 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
14323
14324         * real.c (encode_ieee_half): Define.
14325         (decode_ieee_half): Define.
14326         (ieee_half_format): Define.
14327         (arm_half_format): Define.
14328         * real.h (ieee_half_format): Declare.
14329         (arm_half_format): Declare.
14330
14331 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
14332
14333         * optabs.c (prepare_float_lib_cmp):  Test that the comparison,
14334         swapped, and reversed optabs exist before trying to use them.
14335
14336 2009-05-15  Paul Brook  <paul@codesourcery.com>
14337             Sandra Loosemore  <sandra@codesourcery.com>
14338
14339         * config/arm/arm.c (neon_vector_mem_operand): Handle element/structure
14340         loads.  Allow PRE_DEC.
14341         (output_move_neon): Handle PRE_DEC.
14342         (arm_print_operand): Add 'A' for neon structure loads.
14343         * config/arm/arm-protos.h (neon_vector_mem_operand): Update prototype.
14344         * config/arm/neon.md (neon_mov): Update comment.
14345         * config/arm/constraints.md (Un, Us): Update neon_vector_mem_operand
14346         calls.
14347         (Um): New constraint.
14348
14349 2009-05-15  Jan Hubicka  <jh@suse.cz>
14350
14351         Revert the following patch until testsuite fallout is fixed:
14352         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
14353         * cgraph.h (struct inline_summary): New filed self_wize,
14354         size_inlining_benefit, self_time and time_inlining_benefit.
14355         (struct cgraph_global_info): Replace insns by time ans size fields.
14356         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
14357         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
14358         (ipcp_update_callgraph): Do not touch function bodies.
14359         * ipa-inline.c: Include except.h
14360         (MAX_TIME): New constant.
14361         (overall_insns): Remove
14362         (overall_size, max_benefit): New static variables.
14363         (cgraph_estimate_time_after_inlining): New function.
14364         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
14365         (cgraph_clone_inlined_nodes): Update size.
14366         (cgraph_mark_inline_edge): Update size.
14367         (cgraph_estimate_growth): Use size info.
14368         (cgraph_check_inline_limits): Check size.
14369         (cgraph_default_inline_p): Likewise.
14370         (cgraph_edge_badness): Compute badness based on benefit and size cost.
14371         (cgraph_decide_recursive_inlining): Check size.
14372         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
14373         and times.
14374         (cgraph_decide_inlining): Likewise.
14375         (cgraph_decide_inlining_incrementally): Likewise; honor
14376         PARAM_EARLY_INLINING_INSNS.
14377         (likely_eliminated_by_inlining_p): New predicate.
14378         (estimate_function_body_sizes): New function.
14379         (compute_inline_parameters): Use it.
14380         * except.c (must_not_throw_labels): New function.
14381         * except.h (must_not_throw_labels): Declare.
14382         * tree-inline.c (init_inline_once): Kill inlining_weigths
14383         * tree-ssa-structalias.c: Avoid uninitialized warning.
14384         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
14385         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
14386         (PARAM_INLINE_CALL_COST): Remove.
14387         (PARAM_EARLY_INLINING_INSNS): New.
14388
14389 2009-05-15  Richard Guenther  <rguenther@suse.de>
14390
14391         * tree-ssa-pre.c (eliminate): Use TODO_update_ssa_only_virtuals,
14392         not TODO_update_ssa.
14393
14394 2009-05-15  Richard Guenther  <rguenther@suse.de>
14395
14396         PR tree-optimization/39999
14397         * gimple.h (gimple_expr_type): Use the expression type looking
14398         through useless conversions.
14399         * tree-ssa-sccvn.c (vn_nary_op_lookup_stmt): Use gimple_expr_type.
14400         (vn_nary_op_insert_stmt): Likewise.
14401         (simplify_binary_expression): Likewise.
14402
14403 2009-05-15  Richard Guenther  <rguenther@suse.de>
14404
14405         * common.opt (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
14406         New options, enabled by default.
14407         * doc/invoke.texi (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
14408         Document.
14409         * tree-ssa-forwprop.c (gate_forwprop): Use flag_tree_forwprop.
14410         * tree-ssa-phiprop.c (gate_phiprop): Use flag_tree_phiprop.
14411         * tree-ssa-structalias.c (gate_tree_pta): New function.
14412         (pass_build_alias): Use it.
14413
14414 2009-05-15  Joseph Myers  <joseph@codesourcery.com>
14415
14416         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also
14417         recurse on an invariant address if a conversion from a pointer
14418         type to a wider integer type is involved.
14419
14420 2009-05-15  Jan Hubicka  <jh@suse.cz>
14421
14422         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
14423         * cgraph.h (struct inline_summary): New filed self_wize,
14424         size_inlining_benefit, self_time and time_inlining_benefit.
14425         (struct cgraph_global_info): Replace insns by time ans size fields.
14426         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
14427         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
14428         (ipcp_update_callgraph): Do not touch function bodies.
14429         * ipa-inline.c: Include except.h
14430         (MAX_TIME): New constant.
14431         (overall_insns): Remove
14432         (overall_size, max_benefit): New static variables.
14433         (cgraph_estimate_time_after_inlining): New function.
14434         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
14435         (cgraph_clone_inlined_nodes): Update size.
14436         (cgraph_mark_inline_edge): Update size.
14437         (cgraph_estimate_growth): Use size info.
14438         (cgraph_check_inline_limits): Check size.
14439         (cgraph_default_inline_p): Likewise.
14440         (cgraph_edge_badness): Compute badness based on benefit and size cost.
14441         (cgraph_decide_recursive_inlining): Check size.
14442         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
14443         and times.
14444         (cgraph_decide_inlining): Likewise.
14445         (cgraph_decide_inlining_incrementally): Likewise; honor
14446         PARAM_EARLY_INLINING_INSNS.
14447         (likely_eliminated_by_inlining_p): New predicate.
14448         (estimate_function_body_sizes): New function.
14449         (compute_inline_parameters): Use it.
14450         * except.c (must_not_throw_labels): New function.
14451         * except.h (must_not_throw_labels): Declare.
14452         * tree-inline.c (init_inline_once): Kill inlining_weigths
14453         * tree-ssa-structalias.c: Avoid uninitialized warning.
14454         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
14455         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
14456         (PARAM_INLINE_CALL_COST): Remove.
14457         (PARAM_EARLY_INLINING_INSNS): New.
14458         doc/invoke.texi (max-inline-insns-auto, early-inlining-insns): Update.
14459         (inline-call-cost): Remove.
14460         (early-inlining-insns): New.
14461
14462 2009-05-15  Eric Botcazou  <ebotcazou@adacore.com>
14463
14464         * dbxout.c (dbxout_range_type): Add LOW and HIGH parameters.  Use them
14465         for bounds.
14466         (print_int_cst_bounds_in_octal_p): Likewise.
14467         (dbxout_type): Adjust calls to above functions.  Be prepared to deal
14468         with subtypes.
14469         * dwarf2out.c (base_type_die): Likewise.
14470         (is_subrange_type): Delete.
14471         (subrange_type_die): Add LOW and HIGH parameters.  Use them for bounds.
14472         (modified_type_die): Call subrange_type_for_debug_p on subtypes.
14473         * fold-const.c (fold_truth_not_expr) <CONVERT_EXPR>: Do not strip it
14474         if the destination type is boolean.
14475         (build_range_check): Do not special-case subtypes.
14476         (fold_sign_changed_comparison): Likewise.
14477         (fold_unary): Likewise.
14478         * langhooks-def.h (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define.
14479         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_GET_SUBRANGE_BOUNDS.
14480         * langhooks.h (lang_hooks_for_types): Add get_subrange_bounds.
14481         * tree.c (subrange_type_for_debug_p): New predicate based on the
14482         former is_subrange_type.
14483         * tree.h (subrange_type_for_debug_p): Declare.
14484         * tree-chrec.c (avoid_arithmetics_in_type_p): Delete.
14485         (convert_affine_scev): Remove call to above function.
14486         (chrec_convert_aggressive): Likewise.
14487         * tree-ssa.c (useless_type_conversion_p_1): Do not specifically return
14488         false for conversions involving subtypes.
14489         * tree-vrp.c (vrp_val_max): Do not special-case subtypes.
14490         (vrp_val_min): Likewise.
14491         (needs_overflow_infinity): Likewise.
14492         (extract_range_from_unary_expr): Likewise.
14493
14494 2009-05-15  Paolo Bonzini  <bonzini@gnu.org>
14495
14496         * config/frv/frv.h: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
14497         * config/frv/frv.c: Likewise.
14498         * config/s390/s390.c: Likewise.
14499         * config/sparc/sparc.h: Likewise.
14500         * config/i386/i386.h: Likewise.
14501         * config/i386/i386.c: Likewise.
14502         * config/crx/crx.c: Likewise.
14503         * config/m68hc11/m68hc11.h: Likewise.
14504         * config/iq2000/iq2000.c: Likewise.
14505         * config/mn10300/mn10300.h: Likewise.
14506         * config/mn10300/mn10300.c: Likewise.
14507         * config/m68k/m68k.c: Likewise.
14508         * config/rs6000/rs6000.c: Likewise.
14509         * config/rs6000/xcoff.h: Likewise.
14510         * config/rs6000/linux64.h: Likewise.
14511         * config/rs6000/sysv4.h: Likewise.
14512         * config/score/score3.c: Likewise.
14513         * config/score/score7.c: Likewise.
14514         * config/score/score.c: Likewise.
14515         * config/arm/arm.md: Likewise.
14516         * config/mips/mips.c: Likewise.
14517         * config/mips/mips.md: Likewise.
14518         * config/bfin/bfin.h: Likewise.
14519         * config/pa/pa.c: Likewise.
14520         * config/pa/constraints.md: Likewise.
14521
14522         * config/pdp11/pdp11-protos.h (legitimate_address_p): Delete.
14523         * config/pdp11/pdp11.c (legitimate_address_p): Delete.
14524         * config/pdp11/pdp11.h: Use memory_address_p instead.
14525
14526 2009-05-14  Ian Lance Taylor  <iant@google.com>
14527
14528         * passes.c (finish_optimization_passes): Change i to int.
14529         * plugin.c (plugins_active_p): Change event to int.
14530         (dump_active_plugins): Likewise.
14531         * reginfo.c (invalid_mode_change_p): Change to to unsigned int.
14532         Add cast.
14533         * tree.c (tree_range_check_failed): Change c to unsigned int.
14534         (omp_clause_range_check_failed): Likewise.
14535         (build_common_builtin_nodes): Change mode to int.  Add cast.
14536         * config/ia64/ia64.c (is_emitted): Change r to unsigned int.
14537         (ia64_hard_regno_rename_ok, ia64_eh_uses): Likewise.
14538
14539         * c-typeck.c (build_unary_op): If -Wc++-compat, warn about using
14540         ++ or -- with a variable of enum type.
14541
14542 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
14543
14544         PR driver/40144
14545         * opts.c (common_handle_option): Add OPT_fcse_skip_blocks as a no-op.
14546
14547 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
14548
14549         * store-motion.c: Do not include params.h
14550         * Makefile.in: Fix dependencies for various files.
14551
14552 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
14553
14554         * auto-inc-dec.c: Fix pass description, remove apparent
14555         accidental duplication.
14556
14557 2009-05-14  H.J. Lu  <hongjiu.lu@intel.com>
14558
14559         PR middle-end/40147
14560         * ipa-utils.h (memory_identifier_string): Moved to ...
14561         * tree.h (memory_identifier_string): Here.  Add GTY(()).
14562
14563 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
14564
14565         * doc/tm.texi (TARGET_LEGITIMATE_ADDRESS_P): Refer mainly to this
14566         in the former documentation of...
14567         (GO_IF_LEGITIMATE_ADDRESS): ... this.
14568         * ira-conflicts.c (get_dup_num): Use address_operand.
14569         * targhooks.c (default_legitimate_address_p): New.
14570         * targhooks.h (default_legitimate_address_p): New.
14571         * reload.c (strict_memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]:
14572         Call hook.
14573         * recog.c (memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]: Call hook.
14574         * target.h (struct target): Add legitimate_address_p.
14575         * target-def.h (TARGET_LEGITIMATE_ADDRESS_P): New.
14576         (TARGET_INITIALIZER): Include it.
14577
14578         * config/alpha/alpha.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14579         * config/alpha/alpha-protos.h (alpha_legitimate_address_p): Remove.
14580         * config/alpha/alpha.c (alpha_legitimate_address_p): Make static.
14581         (TARGET_LEGITIMATE_ADDRESS_P): New.
14582
14583         * config/frv/frv.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14584         (REG_OK_STRICT_P): Delete.
14585         * config/frv/frv-protos.h (frv_legitimate_address_p): Rename to...
14586         (frv_legitimate_address_p_1): ... this.
14587         * config/frv/frv.c (frv_legitimate_address_p): Forward to...
14588         (frv_legitimate_address_p_1): ... the renamed old
14589         frv_legitimate_address_p.
14590         * config/frv/predicates.md: Adjust calls to frv_legitimate_address_p.
14591         (TARGET_LEGITIMATE_ADDRESS_P): New.
14592
14593         * config/s390/s390.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14594         * config/s390/s390-protos.h (legitimate_address_p): Remove.
14595         * config/s390/s390.c (legitimate_address_p): Rename to...
14596         (s390_legitimate_address_p): ... this, make static.
14597         (legitimize_address): Adjust call.
14598         (TARGET_LEGITIMATE_ADDRESS_P): New.
14599         * config/s390/constraints.md ("e"): Call strict_memory_address_p.
14600
14601         * config/m32c/m32c.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14602         * config/m32c/m32c-protos.h (m32c_legitimate_address_p): Remove.
14603         * config/m32c/m32c.c (m32c_legitimate_address_p): Make static.
14604         (TARGET_LEGITIMATE_ADDRESS_P): New.
14605
14606         * config/spu/spu.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14607         * config/spu/spu-protos.h (spu_legitimate_address): Remove.
14608         * config/spu/spu.c (spu_legitimate_address): Rename to...
14609         (spu_legitimate_address_p): ... this, make static.
14610         (TARGET_LEGITIMATE_ADDRESS_P): New.
14611
14612         * config/sparc/sparc.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14613         * config/sparc/sparc-protos.h (legitimate_address_p): Remove.
14614         * config/sparc/sparc.c (legitimate_address_p): Rename to...
14615         (sparc_legitimate_address_p): ... this, make static and return bool.
14616         (legitimize_address): Adjust call.
14617         (TARGET_LEGITIMATE_ADDRESS_P): New.
14618
14619         * config/i386/i386.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14620         * config/i386/i386-protos.h (legitimate_address_p): Remove.
14621         * config/i386/i386.c (legitimate_address_p): Rename to...
14622         (ix86_legitimate_address_p): ... this, make static.
14623         (constant_address_p): Move after it, adjust call.
14624         (TARGET_LEGITIMATE_ADDRESS_P): New.
14625
14626         * config/avr/avr.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14627         * config/avr/avr-protos.h (legitimate_address_p): Remove.
14628         * config/avr/avr.c (legitimate_address_p): Rename to...
14629         (avr_legitimate_address_p): ... this, make static.
14630         (legitimize_address): Adjust call.
14631         (TARGET_LEGITIMATE_ADDRESS_P): New.
14632
14633         * config/crx/crx.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14634         * config/crx/crx-protos.h (crx_legitimate_address_p): Remove.
14635         * config/crx/crx.c (crx_legitimate_address_p): Make static.
14636         (TARGET_LEGITIMATE_ADDRESS_P): New.
14637
14638         * config/xtensa/xtensa.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14639         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): Remove.
14640         * config/xtensa/xtensa.c (xtensa_legitimate_address_p): Make static.
14641         (TARGET_LEGITIMATE_ADDRESS_P): New.
14642
14643         * config/stormy16/stormy16.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14644         * config/stormy16/stormy16-protos.h (xstormy16_legitimate_address_p):
14645         Remove.
14646         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p):
14647         Make static.
14648         (TARGET_LEGITIMATE_ADDRESS_P): New.
14649
14650         * config/m68hc11/m68hc11.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14651         * config/m68hc11/m68hc11-protos.h (m68hc11_go_if_legitimate_address):
14652         Remove.
14653         * config/m68hc11/m68hc11.c (m68hc11_go_if_legitimate_address):
14654         Rename to...
14655         (m68hc11_legitimate_address_p): ... this, make static.
14656         (go_if_legitimate_address_internal): Rename to...
14657         (m68hc11_legitimate_address_p_1): ... this.
14658         (legitimize_address): Adjust call.
14659         (TARGET_LEGITIMATE_ADDRESS_P): New.
14660
14661         * config/iq2000/iq2000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14662         * config/iq2000/iq2000-protos.h (iq2000_legitimate_address_p): Remove.
14663         * config/iq2000/iq2000.c (iq2000_legitimate_address_p): Make static.
14664         (TARGET_LEGITIMATE_ADDRESS_P): New.
14665
14666         * config/mn10300/mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14667         * config/mn10300/mn10300-protos.h (legitimate_address_p): Remove.
14668         * config/mn10300/mn10300.c (legitimate_address_p): Rename to...
14669         (mn10300_legitimate_address_p): ... this, make static.
14670         (TARGET_LEGITIMATE_ADDRESS_P): New.
14671
14672         * config/m68k/m68k.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14673         * config/m68k/m68k-protos.h (m68k_legitimate_address_p): Remove.
14674         * config/m68k/m68k.c (m68k_legitimate_address_p): Make static.
14675         (TARGET_LEGITIMATE_ADDRESS_P): New.
14676
14677         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14678         (REG_OK_STRICT_FLAG, REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P): Delete.
14679         (INT_REG_OK_FOR_BASE_P, INT_REG_OK_FOR_INDEX_P): Move above.
14680         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14681         * config/rs6000/rs6000-protos.h (rs6000_legitimate_address): Remove.
14682         * config/rs6000/rs6000.c (rs6000_legitimate_address): Rename to...
14683         (rs6000_legitimate_address_p): ... this, make static.
14684         (TARGET_LEGITIMATE_ADDRESS_P): New.
14685         (REG_MODE_OK_FOR_BASE_P): Delete.
14686         (rs6000_legitimize_reload_address): Use INT_REG_OK_FOR_BASE_P.
14687
14688         * config/picochip/picochip.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14689         * config/picochip/picochip-protos.h (picochip_legitimate_address_p):
14690         Delete.
14691         * config/picochip/picochip.c (picochip_legitimate_address_p): Make
14692         static, adjust types.
14693         (TARGET_LEGITIMATE_ADDRESS_P): New.
14694
14695         * config/score/score.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14696         * config/score/score.c (score_address_p): Rename to...
14697         (score_legitimate_address_p): ... this.
14698         (TARGET_LEGITIMATE_ADDRESS_P): New.
14699         * config/score/score3.c (score3_address_p): Rename to...
14700         (score3_legitimate_address_p): ... this.
14701         * config/score/score7.c (score7_address_p): Rename to...
14702         (score7_legitimate_address_p): ... this.
14703
14704         * config/arm/arm.h (ARM_GO_IF_LEGITIMATE_ADDRESS,
14705         THUMB2_GO_IF_LEGITIMATE_ADDRESS, THUMB1_GO_IF_LEGITIMATE_ADDRESS,
14706         GO_IF_LEGITIMATE_ADDRESS): Delete.
14707         * config/arm/arm-protos.h (thumb1_legitimate_address_p,
14708         thumb2_legitimate_address_p): Delete.
14709         (arm_legitimate_address_p): Rename to...
14710         (arm_legitimate_address_outer_p): ... this.
14711         * config/arm/constraints.md ("Uq"): Adjust call.
14712         * config/arm/predicates.md (arm_extendqisi_mem_op): Likewise.
14713         * config/arm/arm.c (arm_legitimate_address_p): New, rename old one
14714         to...
14715         (arm_legitimate_address_outer_p): ... this.
14716         (thumb1_legitimate_address_p, thumb2_legitimate_address_p): Make
14717         static.
14718         (TARGET_LEGITIMATE_ADDRESS_P): New.
14719
14720         * config/mips/mips.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14721         * config/mips/mips-protos.h (mips_legitimate_address_p): Remove.
14722         * config/mips/mips.c (mips_legitimate_address_p): ... Make static.
14723         (TARGET_LEGITIMATE_ADDRESS_P): New.
14724
14725         * config/vax/vax.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14726         * config/vax/vax-protos.h (legitimate_address_p): Remove.
14727         * config/vax/vax.c (legitimate_address_p): Rename to...
14728         (vax_legitimate_address_p): ... this, make static.
14729         (TARGET_LEGITIMATE_ADDRESS_P): New.
14730
14731         * config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14732         * config/h8300/h8300-protos.h (h8300_legitimate_address_p): Remove.
14733         * config/h8300/h8300.c (h8300_legitimate_address_p): ... Make static.
14734         (TARGET_LEGITIMATE_ADDRESS_P): New.
14735
14736         * config/mmix/mmix.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14737         * config/mmix/mmix-protos.h (mmix_legitimize_address): Remove.
14738         * config/mmix/mmix.c (mmix_legitimate_address): Rename to...
14739         (mmix_legitimate_address_p): ... this, make static.
14740         (TARGET_LEGITIMATE_ADDRESS_P): New.
14741
14742         * config/bfin/bfin.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14743         * config/bfin/bfin-protos.h (bfin_legitimate_address_p): Remove.
14744         * config/bfin/bfin.c (bfin_legitimate_address_p): ... Make static.
14745         (TARGET_LEGITIMATE_ADDRESS_P): New.
14746
14747 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
14748
14749         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Remove handling
14750         of MODE_COMPLEX_INT.
14751
14752 2009-05-14  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
14753
14754         * config/alpha/alpha.c (alpha_initialize_trampoline): Change 0 to
14755         LCT_NORMAL in function call.
14756         * mips-tdump.c (print_file_desc): Add cast to enum type.
14757         * mips-tfile.c (add_ext_symbol): Add casts to enum types.
14758         (mark_stabs): Add casts to enum types.
14759         (parse_stabs_common): Add casts to enum types.
14760
14761 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
14762
14763         * config/mips/mips.c (mips_print_operand) <REG, MEM, default>:
14764         Check for invalid values of LETTER.
14765
14766 2009-05-13  Taras Glek  <tglek@mozilla.com>
14767
14768         * attribs.c (register_attribute): moved out attribute registration
14769         into register_attribute.
14770         * doc/plugins.texi: Documented register_attribute and
14771         PLUGIN_ATTRIBUTES.
14772         * gcc-plugin.h: Added forward decl for register_attribute.
14773         * gcc-plugin.h (plugins_event): Added PLUGIN_ATTRIBUTES.
14774         * plugin.c (register_callback, invoke_plugin_callbacks): Added
14775         PLUGIN_ATTRIBUTES boilerplate.
14776
14777 2009-05-14  Dave Korn  <dave.korn.cygwin@gmail.com>
14778
14779         * config/i386/msformat-c.c (ms_printf_length_specs):  Use enumeration
14780         values even in sentinel and empty entries.
14781         (ms_printf_flag_specs):  Likewise.
14782         (ms_scanf_flag_specs):  Likewise.
14783         (ms_strftime_flag_specs):  Likewise.
14784         (ms_print_char_table):  Likewise.
14785         (ms_scan_char_table):  Likewise.
14786         (ms_time_char_table):  Likewise.
14787
14788 2009-05-13  Doug Kwan  <dougkwan@google.com>
14789
14790         * tree-ssa-sccvn.c (compare_ops): Stabilize qsort.
14791
14792 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
14793
14794         * config/mips/mips.md (store): Add attributes for QI and HI.
14795         Update comment.
14796         (truncdisi2, truncdihi2, truncdiqi2): Merge these into ...
14797         (truncdi<mode>2): ... this new pattern.
14798
14799 2009-05-13  Brad Hards  <bradh@kde.org>
14800
14801         * Makefile.in (TEXI_GCCINT_FILES): Add plugins.texi.
14802
14803 2009-05-14  Jakub Jelinek  <jakub@redhat.com>
14804             Ben Elliston <bje@au.ibm.com>
14805
14806         PR middle-end/40035
14807         * dse.c (check_mem_read_rtx): Guard against width == -1.
14808
14809 2009-05-13  Michael Matz  <matz@suse.de>
14810
14811         PR middle-end/39976
14812         * tree-outof-ssa.c (maybe_renumber_stmts_bb): New function.
14813         (trivially_conflicts_p): New function.
14814         (insert_backedge_copies): Use it.
14815
14816 2009-05-13  Janis Johnson  <janis187@us.ibm.com>
14817
14818         * c-pragma.c (enum pragma_switch_t): Prefix constants with PRAGMA_.
14819         (handle_stdc_pragma): Use new enum constant names.
14820         (handle_pragma_float_const_decimal64): Ditto.
14821
14822 2009-05-13  Ian Lance Taylor  <iant@google.com>
14823
14824         * Makefile.in (build/gencheck.o): Depend upon all-tree.def, not
14825         tree.def.
14826
14827 2009-05-13  Nathan Sidwell  <nathan@codesourcery.com>
14828
14829         * config/m68k/t-uclinux (M68K_MLIB_CPU): Check for FL_UCLINUX.
14830         * config/m68k/m68k-devices.def: Add FL_UCLINUX to 68020 and 54455
14831         multilibs.
14832         * config/m68k/m68k.h (FL_UCLINUX): Define.
14833
14834 2009-05-13  Jan Hubicka  <jh@suse.cz>
14835
14836         * options.c (gfc_post_options): -fwhole-program imply -fwhole-file.
14837
14838 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
14839
14840         * config/sh/sh.h (OVERRIDE_OPTIONS): Clear flag_schedule_insns
14841         unless -fschedule-insns is specified.
14842
14843 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
14844
14845         PR target/39561
14846         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Don't set
14847         TARGET_EXPAND_CBRANCHDI4.
14848         * config/sh/sh.md (cbranchdi4): Don't check TARGET_EXPAND_CBRANCHDI4.
14849         * config/sh/sh.opt (mexpand-cbranchdi): Remove.
14850         (cmpeqdi): Fix comment.
14851
14852 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
14853
14854         * config/sh/sh-protos.h (sh_legitimate_index_p): Declare.
14855         (sh_legitimate_address_p): Likewise.
14856         * config/sh/sh.c (sh_legitimate_index_p): New.
14857         (sh_legitimate_address_p): Likewise.
14858         * config/sh/sh.h (REG_OK_FOR_BASE_P): Add STRICT parameter.
14859         (REG_OK_FOR_INDEX_P, SUBREG_OK_FOR_INDEX_P): Likewise.
14860         (MODE_DISP_OK_4, MODE_DISP_OK_8): Remove.
14861         (MAYBE_BASE_REGISTER_RTX_P): New macro.
14862         (MAYBE_INDEX_REGISTER_RTX_P): Likewise.
14863         (BASE_REGISTER_RTX_P): Use MAYBE_BASE_REGISTER_RTX_P.
14864         (INDEX_REGISTER_RTX_P): Use MAYBE_INDEX_REGISTER_RTX_P.
14865         (GO_IF_LEGITIMATE_INDEX): Use sh_legitimate_index_p.
14866         (GO_IF_LEGITIMATE_ADDRESS): Use sh_legitimate_address_p.
14867
14868 2009-05-12  Jan Hubicka  <jh@suse.cz>
14869
14870         * tree-inline.c (estimate_operator_cost): Add operands;
14871         when division happens by constant, it is cheap.
14872         (estimate_num_insns): Loads and stores are not having cost of 0;
14873         EH magic stuff is cheap; when computing runtime cost of switch,
14874         use log2 base of amount of its cases; builtin_expect has cost of 0;
14875         compute cost for moving return value of call.
14876         (init_inline_once): Initialize time_based flags.
14877         * tree-inline.h (eni_weights_d): Add time_based flag.
14878
14879 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
14880
14881         * df-core.c: Update head documentation.
14882
14883 2009-05-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
14884
14885         PR bootstrap/40118
14886         * rs6000.c (rs6000_generate_compare): Use op1b instead of
14887         shadowing exisiting variable op1.
14888
14889 2009-05-12  Uros Bizjak  <ubizjak@gmail.com>
14890
14891         PR target/37179
14892         * config/i386/driver-i386.c (processor_signatures): New enum.
14893         (SIG_GEODE): Move from vendor_signatures to processor_signatures.
14894         (host_detect_local_cpu): For SIG_AMD vendor, check for SIG_GEODE
14895         processor signature to detect geode processor.
14896
14897 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
14898
14899         Revert:
14900
14901         2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
14902
14903         * optabs.c (prepare_cmp_insn): Temporarily disable test that
14904         causes spurious differences between trunk and cond-optab branch.
14905
14906 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
14907
14908         * dojump.c (compare_from_rtx): Delete.
14909         * expmed.c (emit_store_flag): Only try cstore_optab.  Canonicalize
14910         any MODE_CC mode to the cstorecc4 pattern.  Use prepare_operand, fail
14911         if the comparison does not satisfy the predicate; test predicates for
14912         operands 2 and 3 of a cstore pattern.  Don't try cstore optab
14913         further if one existing pattern fails.
14914         * expr.h (compare_from_rtx): Delete.
14915         (prepare_operand): Declare it.
14916         * optabs.c: Change "lib call" to "libcall" throughout.
14917         (bcc_gen_fctn, setcc_gen_code, trap_rtx,
14918         HAVE_conditional_trap, emit_cmp_insn): Delete.
14919         (can_compare_p): Delete cmp_optab case.
14920         (prepare_float_lib_cmp): Return an rtx and a machine mode.
14921         Accept other parameters by value.
14922         (prepare_operand): Make non-static.
14923         (prepare_cmp_insn): Return an rtx and a machine mode.  Accept
14924         other parameters by value.  Try to widen operands here based on
14925         an optab_methods argument and looking at cbranch_optab.
14926         (emit_cmp_and_jump_insn_1): Accept test and mode, remove widening
14927         loop.  Use cbranch_optab directly.
14928         (emit_cmp_and_jump_insns): Fix comment.  Adjust call to
14929         prepare_cmp_insn and emit_cmp_and_jump_insn_1, remove obsolete
14930         assertion.
14931         (emit_conditional_move, emit_conditional_add): Inline what's needed
14932         of compare_from_rtx, using new prepare_cmp_insn for the rest.
14933         (init_optabs): Init cmp_optab with UNKNOWN, cbranch_optab
14934         with COMPARE.  Move cmov_optab and cstore_optab above
14935         with cbranch_optab, move cmp_optab down with ucmp_optab,
14936         remove tst_otpab.  Do not initialize trap_rtx.
14937         (gen_cond_trap): Do it here.  Use ctrap_optab.  Test predicate
14938         for trap code.  Do not check HAVE_conditional_trap.  Use
14939         prepare_cmp_insn.  Accept no predicate for operand 3.
14940         * optabs.h (OTI_cmp): Mark as used only for libcalls.
14941         (OTI_ctrap, ctrap_optab): New.
14942         (tst_optab): Delete.
14943         (bcc_gen_fctn, setcc_gen_code, emit_cmp_insn): Delete.
14944         * ifcvt.c (find_if_header): Replace HAVE_conditional_trap
14945         with lookup of ctrap_optab.
14946         * genopinit.c (cmp_optab, tst_optab, bcc_gen_fctn, setcc_gen_code):
14947         Delete.
14948         (ctrap_optab): New.
14949
14950         * combine.c (combine_simplify_rtx, simplify_set): Do not
14951         special case comparing against zero for cc0 machines.
14952         * simplify-rtx.c (simplify_binary_operation_1): Never remove
14953         COMPARE on cc0 machines.
14954         (simplify_relational_operation): Return a new expression when
14955         a COMPARE could be removed.
14956         * final.c (final_scan_insn): Compare cc_status values
14957         against LHS of a (compare FOO (const_int 0)) cc0 source.
14958         Also check if cc_status.value is the full compare.
14959
14960         * doc/md.texi (bCC, sCC, tstMM, cmpMM): Delete.
14961         (cstoreMM4): Document.
14962         (conditional_trap): Document ctrapMM4 instead.
14963         (sync_compare_and_swapMM): Refer to cbranchcc4.
14964         (Dependent Patterns): Eliminate obsolete information referring to
14965         the old jump optimization phase.
14966         (Canonicalization): Include cbranchcc4 case, omit canonicalization
14967         of compares with 0 on cc0 machines.
14968         (Jump Patterns): Refer to MODE_CC jump patterns preferably,
14969         avoiding references to cc0.  Remove text about storing operands
14970         in cmpMM.
14971         * doc/tm.texi (Condition Codes): Include blurb on different
14972         condition code representations, separate into subsections for
14973         CC0, MODE_CC and conditional execution.
14974
14975         * config/alpha/alpha-protos.h (alpha_emit_conditional_branch,
14976         alpha_emit_setcc): Accept operands and a machine mode.
14977         * config/alpha/alpha.c (alpha_emit_conditional_branch):
14978         Get code/op0/op1 from operands, use machine mode argument
14979         instead of alpha_compare.fp_p.  Emit the branch here.
14980         (alpha_emit_setcc): Likewise, and return boolean.
14981         (alpha_emit_conditional_move): Likewise.  Assert that
14982         cmp_op_mode == cmp_mode, and simplify accordingly.
14983         * config/alpha/alpha.h (struct alpha_compare, alpha_compare): Delete.
14984         * config/alpha/alpha.md (cmpdf, cmptf, cmpdi, bCC, sCC): Delete.
14985         (cbranchdf4, cbranchtf4, cbranchdi4, cstoredf4, cstoretf4,cstoredi4):
14986         Delete.
14987         (stack probe test): Use cbranchdi4.
14988         * config/alpha/predicates.md (alpha_cbranch_operator): New.
14989
14990         * config/arc/arc.c (gen_compare_reg): Do not emit cmp.
14991         * config/arc/arc.h (movsicc, movsfcc): Use it.
14992         (movdicc, *movdicc_insn, movdfcc, *movdfcc_insn): Remove.
14993         (cbranchsi4, cstoresi4): New.
14994         (cmpsi, bCC and sCC expanders): Remove.
14995
14996         * config/arm/arm.c (arm_compare_op0, arm_compare_op1): Delete.
14997         * config/arm/arm.h (arm_compare_op0, arm_compare_op1): Delete.
14998         * config/arm/predicates.md (arm_comparison_operator): Only include
14999         floating-point operators if there is a hardware floating-point unit.
15000         * config/arm/arm.md (cbranchsi4, cstoresi4): Enable for TARGET_32BIT,
15001         deferring to cbranch_cc and cstore_cc respectively.
15002         (cbranchsf4, cbranchdf4, cbranchdi4, cstoresf4, cstoredf4, cstoredi4,
15003         cbranch_cc, cstore_cc): New.
15004         (movsicc, movsfcc, movdfcc): Do not use arm_compare_op0 and
15005         arm_compare_op1.
15006         (bCC, sCC, cmpsi, cmpsf, cmpdf, cmpdi): Delete.
15007
15008         * config/avr/avr-protos.h (out_tstsi, out_tsthi): Adjust prototype.
15009         * config/avr/avr.c (out_tstsi, out_tsthi): Get the tested operand
15010         as an argument.
15011         (adjust_insn_length): Adjust calls.
15012         (avr_reorg): Handle (compare (foo) (const_int 0)).
15013         * config/avr/avr.md (tstqi, tsthi, tstsi): Remove.
15014         (*negated_tstqi, *negated_tsthi, *negated_tstsi): Unmacroize.
15015         (*reversed_tsthi, *reversed_tstsi): Add a scratch for simplicity.
15016         (cmpqi, cmphi, cmpsi): Prepend asterisk, fuse tst[qhs]i here.
15017         (bCC): Remove.
15018         (cbranchqi4, cbranchhi4, cbranchsi4): New.
15019         (tst -> sbrc/sbrs peephole2, cpse peephole): Wrap RHS with COMPARE.
15020
15021         * config/bfin/bfin.md (cmpbi, cmpsi, bCC, sCC): Delete.
15022         (cbranchsi4, cstorebi4, cstoresi4): New.
15023         (movbisi): This insn is duplicate, split it to zero_extend.
15024         * config/bfin/bfin.c (bfin_compare_op0, bfin_compare_op1): Delete
15025         (bfin_gen_compare): Do not use them.  Emit VOIDmode SET, not BImode.
15026         (bfin_optimize_loop): Use cbranch expander.
15027         * config/bfin/bfin.h (bfin_compare_op0, bfin_compare_op1): Delete.
15028         * config/bfin/predicates.md (bfin_cbranch_operator): Rename to...
15029         (bfin_bimode_comparison_operator): ... this.
15030         (bfin_direct_comparison_operator): New.
15031
15032         * config/cris/cris.c (cris_normal_notice_update_cc): Look
15033         inside (compare FOO (const_int 0)).
15034         (cris_rtx_costs): Handle ZERO_EXTRACT.
15035         * config/cris/cris.md (tstdi, tst<mode>, cmpdi): Delete.
15036         (*tstdi_non_v32): Fold in *cmpdi_non_v32.
15037         (*tstdi_v32): Delete.
15038         (*cmpdi_non_v32): Add M alternative for operand 1.
15039         (cmpsi, cmp<mode>): Make private.
15040         (*tstsi, *tst<mode>_cmp, *tst<mode>_non_cmp, *btst): Wrap LHS
15041         with COMPARE.
15042         (cbranch<mode>4, cbranchdi4, cstore<mode>4): New.
15043
15044         * config/crx/crx.md (cstore<mode>4, cbranchcc4): New.
15045         (cmp<mode>, bCOND_internal, b<code>, s<code>): Delete.
15046         (cbranch<mode>4, sCOND_internal): Use ordered_comparison_operator.
15047         (cc_reg_operand): New.
15048         (any_cond): Delete.
15049         * config/crx/crx.c (crx_compare_op0, crx_compare_op1,
15050         crx_expand_compare, crx_expand_branch, crx_expand_scond): Delete.
15051         * config/crx/crx.h (crx_compare_op0, crx_compare_op1): Delete.
15052         * config/crx/crx-protos.h (crx_expand_compare, crx_expand_branch,
15053         crx_expand_scond): Delete.
15054
15055         * config/fr30/fr30.md (cmp<mode>, bCC): Delete.
15056         (cbranchsi4): New.
15057         * config/fr30/fr30.c (fr30_compare_op0, fr30_compare_op1): Delete
15058         * config/fr30/fr30.h (fr30_compare_op0, fr30_compare_op1): Delete.
15059
15060         * config/frv/frv.md (cbranchsi4, cbranchsf4, cbranchdf4,
15061         cstoresi4, cstoresf4, cstoredf4): New.
15062         (cmpdi, cmpsi, cmpsf, cmpdf, bCC, sCC): Remove.
15063         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
15064         Receive the entire operands array.
15065         * config/frv/frv.h (frv_compare_op0, frv_compare_op1): Delete.
15066         * config/frv/frv.c (frv_compare_op0, frv_compare_op1): Delete.
15067         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
15068         Get test/op0/op1 from the operands array.
15069         (frv_emit_cond_move): Get test/op0/op1 from the test_rtx.
15070
15071         * config/h8300/h8300-protos.h (h8300_expand_branch): Accept operands.
15072         (h8300_expand_store): New.
15073         * config/h8300/h8300.c (h8300_rtx_costs): Handle (compare FOO
15074         (const_int 0)).
15075         (h8300_expand_branch): Emit compare here.  Adjust for new arguments.
15076         (h8300_expand_store): New.
15077         * config/h8300/h8300.md (btst combine patterns): Wrap with COMPARE
15078         or do not try to produce (set (cc0) REG).
15079         (peepholes): Wrap arguments with COMPARE.  Add a peephole to
15080         change a compare into a move to a scratch register.  Disable some
15081         peepholes when comparing with zero.
15082         (tstsi, tsthi, tstsi, cmpqi): Make private.
15083         (cmphi): Delete.
15084         (bCC, sCC): Delete.
15085         (cbranchqi4, cbranchhi4, cbranchsi4, cstoreqi4, cstorehi4,
15086         cstoresi4): New.
15087
15088         * config/i386/i386.c (ix86_expand_int_movcc, ix86_expand_int_addcc,
15089         ix86_expand_fp_movcc): Set ix86_compare_op0 and ix86_compare_op1.
15090         (ix86_emit_i387_log1p): Use gen_cbranchxf4.
15091         (ix86_emit_i387_log1p): Use cbranchxf2.
15092         (ix86_expand_setcc): Return void.
15093         * config/i386/i386-protos.h (ix86_expand_setcc): Return void.
15094         * config/i386/i386.md (cmpti, cmpdi, cmpsi, cmphi, cmpqi, cmpxf,
15095         cmp<MODEF>, cmpcc): Remove.
15096         (cbranchti4, cbranchdi4, cbranchsi4, cbranchhi4, cbranchqi4,
15097         cbranchxf4, cbranch<MODEF>4, cbranchcc4, cstoredi4, cstoresi4,
15098         cstorehi4, cstoreqi4, cstorexf4, cstore<MODEF>4, cstorecc): New.
15099         (sCC and bCC expanders): Remove.
15100         (stack_protect_test): Use cbranchcc4.
15101
15102         * config/ia64/ia64-protos.h (ia64_compare_op0, ia64_compare_op1):
15103         Delete.
15104         (ia64_expand_compare): Accept three rtx by reference and return void.
15105         * config/ia64/ia64.c (ia64_compare_op0, ia64_compare_op1): Delete.
15106         (ia64_expand_compare): Replace op0/op1 with *op0/*op1.  Get code
15107         from *expr.  Update *expr with the BImode comparison to do.
15108         * config/ia64/ia64.md (cmpbi, cmpsi, cmpdi, cmpsf, cmpdf, cmpxf,
15109         cmptf, bCC, sCC, conditional_trap): Delete.
15110         (cbranchbi4, cbranchsi4, cbranchdi4, cbranchsf4, cbranchdf4,
15111         cbranchxf4, cbranchtf4, cstorebi4, cstoresi4, cstoredi4, cstoresf4,
15112         cstoredf4, cstorexf4, cstoretf4, ctrapbi4, ctrapsi4, ctrapdi4,
15113         ctrapsf4, ctrapdf4, ctrapxf4, ctraptf4): New.
15114         * config/ia64/predicates.md (ia64_cbranch_operator): New.
15115
15116         * config/iq2000/iq2000-protos.h (gen_conditional_branch): Change
15117         type of last argument.
15118         * config/iq2000/iq2000.c (branch_cmp, branch_type): Remove.
15119         (gen_conditional_branch): Get code/cmp0/cmp1 from operands,
15120         use machine mode argument instead of branch_type.  Remove dead
15121         code for floating-point comparisons.
15122         * config/iq2000/iq2000.h (branch_cmp, branch_type): Remove.
15123         * config/iq2000/iq2000.md (cmpsi, cmpdi, cmpsf, cmpdf, tstsi, bCC):
15124         Remove.
15125         (cbranchsi4, cstoresi4): New.
15126         * config/iq2000/predicates.md (reg_or_const_operand): New.
15127
15128         * config/m32c/m32c.md (cbranch splitter): Use match_op_dup.
15129         * config/m32c/m32c.md (any_cond, gl_cond): Delete.
15130         (b<code>_op): Rewrite to...
15131         (bcc_op): ... this, using match_operator.
15132         (s<code>_op): Rewrite to...
15133         (scc_op): ... this, using match_operator.
15134         (s<code>_24_op): Rewrite to...
15135         (scc_op_24): ... this, using match_operator.
15136         (s<code>_<mode>): Rewrite to...
15137         (cstore<mode>4): ... this, using match_operator.
15138         (s<code>_<mode>_24): Rewrite to...
15139         (cstore<mode>4_24): ... this, using match_operator.
15140         * config/m32c/m32c-protos.h (m32c_cmp_flg_0, m32c_pend_compare,
15141         m32c_unpend_compare, m32c_expand_scc): Delete.
15142         * config/m32c/m32c.c (compare_op0, compare_op1, m32c_cmp_flg_0,
15143         m32c_pend_compare, m32c_unpend_compare, m32c_expand_scc): Delete.
15144         (m32c_expand_movcc): Change NE to EQ if necessary.
15145         (m32c_init_libfuncs): Modify cstore optab instead of setcc_gen_code.
15146
15147         * config/m32r/m32r-protos.h (gen_cond_store): New.
15148         * config/m32r/m32r.c (m32r_compare_op0, m32r_compare_op1): Delete.
15149         (gen_cond_store): New, from sCC patterns.
15150         (m32r_expand_block_move): Use cbranchsi4.
15151         * config/m32r/m32r.h (m32r_compare_op0, m32r_compare_op1): Delete.
15152         * config/m32r/m32r.md (cmpsi, bCC, sCC): Delete.
15153         (cbranchsi4, cstoresi4): New.
15154
15155         * config/m68hc11/m68hc11.c (m68hc11_compare_op0, m68hc11_compare_op1):
15156         Delete.
15157         (m68hc11_rtx_costs_1, m68hc11_rtx_costs): Handle ZERO_EXTRACT.
15158         (m68hc11_notice_update_cc): Look into a compare with 0.
15159         * config/m68hc11/m68hc11.h (m68hc11_compare_op0, m68hc11_compare_op1):
15160         Delete.
15161         * config/m68hc11/m68hc11.md (tstsi, tsthi, tstqi, cmpsi,
15162         cmphi, cmpqi, bCC): Delete.
15163         (cbranchsi4, cbranchhi4, cbranchqi4): New.
15164         (tstqi_1, tstqi_z_used, tstqi_1, bitcmpqi, bitcmpqi_z_used,
15165         bitcmpqi_12, bitcmphi, various splits and peephole2s): Wrap cc0<-reg
15166         sets with COMPARE.
15167
15168         * config/m68k/predicates.md (m68k_cstore_comparison_operator,
15169         const0_operand, const1_operand, m68k_subword_comparison_operand): New.
15170         * config/m68k/constraints.md (H): New.
15171         * config/m68k/m68k.md (tstdi): Remove define_expand, use name for
15172         the define_insn below.
15173         (tstsi, tsthi, tst<FP:mode>, cmphi, cmpqi, cmp<FP:mode>): Delete.
15174         (*tstsi_internal_68020_cf, *tstsi_internal, *tsthi_internal,
15175         *tstqi_internal, tst<mode>_6881, tst<mode>_cf, many unnamed
15176         patterns): Wrap RHS with COMPARE.
15177         (tst<FP>_68881, tst<FP>_cf): Use const0_operand.
15178         (*cmpdi_internal): Name this pattern.
15179         (cmpdi): Change to define_insn.
15180         (cbranchdi4, cstoredi4, cbranchsi4, cstoresi4, cbranchhi4, cstorehi4,
15181         cbranchqi4, cstoreqi4, cbranch<FP:mode>4, cstore<FP:mode>4): New.
15182         (scc0_di, scc0_di_5200, scc_di): Use the ordered_comparison_operator
15183         predicate.
15184         (seq, sne, sgt, sgtu, slt, sltu, sge, sgeu, sle, sleu, sordered,
15185         sunordered, suneq, sunge, sungt, sunle, sunlt, sltgt): Delete
15186         (conditional_trap): Change to...
15187         (ctrapdi4, ctrapsi4, ctraphi4, ctrapqi4): ... these.
15188         (*conditional_trap): Use the ordered_comparison_operator and
15189         const1_operand predicates.
15190         * config/m68k/m68k.c (m68k_last_compare_had_fp_operands): Delete.
15191         (m68k_expand_prologue): Use ctrapsi4 instead of cmpsi+conditional_trap.
15192         (m68k_rtx_costs): Look for ZERO_EXTRACT in a COMPARE.
15193         * config/m68k/m68k.h (m68k_last_compare_had_fp_operands): Delete.
15194
15195         * config/mcore/mcore-protos.h (arch_compare_op0, arch_compare_op1,
15196         mcore_modify_comparison, mcore_gen_compare_reg): Remove.
15197         (mcore_gen_compare): New.
15198         * config/mcore/mcore.c (arch_compare_op0, arch_compare_op1): Delete.
15199         (mcore_modify_comparison, mcore_gen_compare_reg): Fold into...
15200         (mcore_gen_compare): ... this.
15201         * config/mcore/mcore.md (cmpsi, bCC, sCC): Remove.
15202         (cbranchsi4, cstoresi4): New, using mcore_gen_compare.
15203         (stack probe pattern): Use cbranchsi4.
15204
15205         * config/mips/predicates.md (mips_cstore_operator): New.
15206         * config/mips/mips-ps-3d.md (movv2sfcc): Do not use cmp_operands.
15207         * config/mips/mips.md (any_cond): Delete.
15208         (conditional_trap): Rename to ctrap<GPR:mode>4.  Adjust predicates,
15209         always succeed.
15210         (fixuns_truncdfsi2, fixuns_truncdfdi2, fixuns_truncsfsi2,
15211         fixuns_truncsfdi2): Use cbranch patterns.
15212         (cmp<GPR:mode>, cmp<SCALARF:mode>): Delete.
15213         (b<code>): Change to cbranch<GPR:mode>4 and cbranch<SCALARF:mode>4.
15214         Adjust call to mips_expand_conditional_branch.
15215         (seq, sne, slt<u>, sle<u>, sgt<u>, sge<u>): Change to
15216         cstore<GPR:mode>4.
15217         * config/mips/mips-protos.h (mips_expand_conditional_branch,
15218         mips_expand_scc, mips_expand_conditional_trap): Adjust prototypes.
15219         * config/mips/mips.c (cmp_operands): Delete.
15220         (mips_emit_compare): Get comparison operands from *op0/*op1.
15221         (mips_expand_scc): Get code/op0/op1/target from operands.  Assert
15222         that it succeeds.  Use op0/op1 instead of cmp_operands.
15223         (mips_expand_conditional_branch, mips_expand_conditional_move,
15224         mips_expand_conditional_trap): Likewise.
15225         (mips_block_move_loop): Use cbranch patterns.
15226         * config/mips/mips.h (cmp_operands): Delete.
15227
15228         * config/mmix/mmix.c (mmix_valid_comparison): Delete.
15229         (mmix_gen_compare_reg): Just return a register in the right CC mode.
15230         * config/mmix/mmix.h (mmix_compare_op0, mmix_compare_op1): New.
15231         * config/mmix/mmix.md (cmpdi, cmpdf): Remove.
15232         (*cmpcc_folded): Rename to...
15233         (*cmpdi_folded): this.
15234         (*cmpcc): Rename to...
15235         (*cmps): ... this.
15236         (movdfcc, movdicc): Adjust for new semantics of mmix_gen_compare_reg.
15237         (bCC): Remove.
15238         (cbranchdi4): New.
15239         (cbranchdf4): New.  Handle invalid comparisons here.
15240         * config/mmix/predicates.md (float_comparison_operator): New.
15241
15242         * config/mn10300/mn10300.c (mn10300_rtx_costs): Consider 0 and
15243         zero_extract to be cheap in (compare (zero_extract) (const_int 0).
15244         * config/mn10300/mn10300.md (tst): Delete.
15245         (*tst_extqisi_am33, *tst_extqisi, *tst_exthisi_am33, *tst_exthisi):
15246         Name these patterns and wrap RHS in a compare.
15247         (*cmpsi): Make this pattern private.  Include tst.
15248         (*cmpsf): Make this pattern private.
15249         (and and zero_extract cc0 set): Wrap RHS in a COMPARE.
15250         (compare with zero peepholes): Likewise.
15251         (bCC): Remove.
15252         (cbranchsi4, cbranchsf4): New.
15253         (casesi): Use cbranchsi4.
15254
15255         * config/pa/pa.c (hppa_compare_op0, hppa_compare_op1,
15256         hppa_branch_type): Delete.
15257         (return_addr_rtx): Use cbranchsi4.
15258         (emit_bcond_fp): Accept all operands.  Replace CODE with NE.
15259         Emit CCFPmode comparison here.
15260         (gen_cmp_fp): Delete, now part of emit_bcond_fp.
15261         * config/pa/pa.h (enum cmp_type, hppa_compare_op0, hppa_compare_op1,
15262         hppa_branch_type): Delete.
15263         * config/pa/pa.md (cmpdi, cmpsi, cmpsf, cmpdf, sCC, bCC): Delete.
15264         (movsicc, movdicc): Remove references to hppa_compare_op0,
15265         hppa_compare_op1 and compare_from_rtx.
15266         (cbranchdi4, cbranchsi4, cbranchsf4, cbranchdf4, cstoresi4): New.
15267         (casesi): Use cbranchsi4.
15268
15269         * config/pdp11/pdp11-protos.h (output_jump): Change prototype.
15270         * config/pdp11/pdp11.c (output_jump): Embed opcodes here.
15271         * config/pdp11/pdp11.md (register_or_const0_operand): New.
15272         (cmpdf, cmphi, cmpqi): Make private.  Add tst alternatives.
15273         (cmpsi, tstsi, tstdf, tsthi, tstqi): Delete.
15274         (bCC): Delete.
15275         (cbranchdf4, cbranchhi4, cbranchqi4): New.
15276         (*branch, *branch_inverted): New.
15277
15278         * config/picochip/picochip.md (cbranchhi4): Use
15279         ordered_comparison_operator.
15280         (cmphi, bCC): Remove.
15281
15282         * config/rs6000/predicates.md (rs6000_cbranch_operator): New.
15283         (trap_comparison_operator): Delete.
15284         * config/rs6000/rs6000-protos.h (rs6000_emit_sCOND,
15285         rs6000_emit_cbranch): Accept mode and operands.
15286         * config/rs6000/rs6000.c (rs6000_compare_op0, rs6000_compare_op1,
15287         rs6000_compare_fp_p): Delete.
15288         (rs6000_generate_compare): Accept mode and comparison.  Extract code
15289         and op0/op1 from there.  Replace references to rs6000_compare_op0
15290         and rs6000_compare_op1.
15291         (rs6000_emit_sCOND): Adjust call to rs6000_generate_compare and
15292         extract result from passed operands.
15293         (rs6000_emit_cbranch): Adjust call to rs6000_generate_compare and
15294         extract loc from passed operands.
15295         (rs6000_emit_cmove): Likewise.
15296         * config/rs6000/rs6000.h (rs6000_compare_op0, rs6000_compare_op1,
15297         rs6000_compare_fp_p): Delete.
15298         * config/rs6000/rs6000.md (cmp<GPR>, cmp<FP>, bCC, sCC): Delete.
15299         (cbranch<GPR>4, cbranch<FP>4): New.
15300         (cstore<mode>4): New.  Consolidate here all choices about when to use
15301         portable or specialized sCC sequences.
15302         (stack_protect_test): Use cbranchsi4.
15303         (conditional_trap): Replace with ctrap<GPR>4.
15304         (conditional trap insn): Replace trap_comparison_operator with
15305         ordered_comparison_operator.
15306
15307         * config/s390/s390.c (s390_compare_op0, s390_compare_op1): Delete.
15308         (s390_emit_prologue): Use ctrap.
15309         * config/s390/s390.h (s390_compare_op0, s390_compare_op1): Delete.
15310         * config/s390/predicates.md (s390_eqne_operator, s390_scond_operator):
15311         New predicates replacing...
15312         * config/s390/s390.md (COMPARE, SCOND): ... these iterators.
15313         (cmp<GPR>, cmp<FP>, cmpcc): Delete.
15314         (trunc patterns): Use emit_cmp_and_jump_insns instead of cmp/branch.
15315         (add<mode>cc): Do not use s390_compare_op0/op1.
15316         (s<code>): Change to...
15317         (cstore<mode>4): ... this. Do not use s390_compare_op0/op1.
15318         (seq): Change to...
15319         (cstorecc4): ... this.  Handle EQ or NE equally.
15320         (*sne): Un-privatize for use in cstorecc4.
15321         (b<code>): Change to...
15322         (cbranch<GPR>4, cbranch<FP>4, cbranchcc4): ... these.
15323         (conditional_trap): Replace with...
15324         (ctrap<GPR>4, ctrap<FP>4): ... these.
15325         (stack_protect): Use cbranchcc4.
15326
15327         * config/score/score-conv.h (cmp_op0, cmp_op1): Delete.
15328         * config/score/score-protos.h (score_gen_cmp): Delete.
15329         * config/score/score.c (cmp_op0, cmp_op1, score_gen_cmp): Delete.
15330         (score_block_move-loop): Use cbranchsi4.
15331         * config/score/score.md (cbranchsi4): New.
15332         (cmpsi, bCC): Delete.
15333         * config/score/score3.c (cmp_op0, cmp_op1, score3_gen_cmp): Delete.
15334         (score3_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
15335         * config/score/score7.c (cmp_op0, cmp_op1, score7_gen_cmp): Delete.
15336         (score7_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
15337         * config/score/score3.h (score3_gen_cmp): Delete.
15338         * config/score/score7.h (score7_gen_cmp): Delete.
15339
15340         * config/sh/sh-protos.h (prepare_scc_operands): Rename to...
15341         (sh_emit_scc_to_t): ... this.  Return void.
15342         (from_compare): Rename to...
15343         (sh_emit_compare_and_branch): ... this.
15344         (sh_emit_compare_and_set): New.
15345         (sh_expand_t_scc): Accept operands.
15346         * config/sh/predicates.md (sh_float_comparison_operator): New.
15347         * config/sh/sh.c (sh_compare_op0, sh_compare_op1): Delete.
15348         (prepare_scc_operands): Rename to...
15349         (sh_emit_scc_to_t): ... this.  Return void.  Get op0/op1 from
15350         arguments.
15351         (sh_emit_cheap_store_flag): New.
15352         (sh_emit_set_t_insn): New.
15353         (from_compare): Rename to...
15354         (sh_emit_compare_and_branch): ... this.  Accept mode.  Rewrite
15355         handling of TARGET_SH2E floating point to avoid recursive call.
15356         Generate branch here.
15357         (sh_emit_compare_and_set): New.
15358         (sh_expand_t_scc): Get op0/op1 from arguments.
15359         (sh_emit_cheap_store_flag): New.
15360         * config/sh/sh.md (cbranchdi4, cbranchsi4): Include -mno-cbranchdi
15361         cases.
15362         (cbranchdi4_i): Use an "I08" constraint instead of an "i" constraint.
15363         (cmpsi, cmpdi, cmpsf, cmpdf): Delete.
15364         (movsicc, movdicc): Do nothing when it recreated operands from
15365         sh_compare_*. Use sh_emit_cheap_store_flag.  Adjust call to
15366         prepare_scc_operands (now sh_emit_scc_to_t).
15367         (udivdi3): Use cstoresi4.
15368         (beq_media, bne_media, bge_media, bgtu_media, bgeu_media, beq,
15369         bne, bgt, blt, ble, bge, bgtu, bltu, bgeu, bleu, bunordered): Delete.
15370         (cbranchint4_media, cbranchfp4_media): New.
15371         (casesi): Use cbranchdi4.
15372         (seq, slt, sle, sgt, sge, sgtu, sltu, sgeu, sne, sleu, sunordered):
15373         Delete.
15374         (cstore4_media, cstoresi4, cstoredi4, cstoresf4, cstoredf4): New.
15375         (movnegt): Remove second operand.
15376         (cbranchsf4, cbranchdf4): New.
15377         (stack_protect): Use cbranchdi4/cbranchsi4.
15378
15379         * config/sparc/sparc.c (sparc_compare_op0, sparc_compare_op1): Delete.
15380         (gen_compare_reg): Accept comparison, extract part of it to...
15381         (gen_compare_reg_1): ... this.
15382         (gen_compare_operator): Delete.
15383         (gen_v9_scc): Accept separate destination, comparison code and arms.
15384         Do not use sparc_compare_op0/sparc_compare_op1.
15385         (emit_scc_insn, emit_conditional_branch_insn): New.
15386         (emit_v9_brxx): Make static.  Remove useless assertion.
15387         (sparc_emit_float_lib_cmp): Return RTL instead of calling
15388         emit_cmp_insn.
15389         (sparc_expand_compare_and_swap_12): Use gen_compare_reg_1+cbranchcc4.
15390         * config/sparc/sparc-protos.h (gen_compare_reg,
15391         sparc_emit_float_lib_cmp): Adjust prototype.
15392         (emit_scc_insn, emit_conditional_branch_insn): New.
15393         (gen_v9_scc, emit_v9_brxx_insn, gen_compare_operator): Delete.
15394         * config/sparc/sparc.h (sparc_compare_op0, sparc_compare_op1): Delete.
15395         * config/sparc/sparc.md (P, I, F, V32, V32I, V64, V64I): Move all
15396         iterators to the top.
15397         (cmpsi, cmpdi, cmpsf, cmpdf, cmptf, seqsi_special_extend,
15398         snesi_special_extend, sCC, bCC, seqdi_special_trunc,
15399         snedi_special_trunc): Delete.
15400         (seqdi_special, snedi_special): Use expansion of seqdi_special_trunc
15401         and snedi_special_trunc.
15402         (cstoresi4, cstoredi4, cstore<F:mode>4, cbranchcc4, cbranchsi4,
15403         cbranchdi4, cbranch<F:mode>4): New.
15404         (mov<I:mode>cc, mov<F:mode>cc): Handle sparc_emit_float_lib_cmp
15405         here.  Use gen_compare_reg instead of gen_compare_operator.
15406         (conditional_trap): Replace with...
15407         (ctrapsi4, ctrapdi4): ... this.
15408         (stack_protect_test): Use cbranchcc4.
15409
15410         * config/spu/spu-protos.h (spu_emit_branch_or_set): Change second
15411         argument to rtx.
15412         * config/spu/spu.c (spu_compare_op0, spu_compare_op1): Remove.
15413         (spu_emit_branch_or_set): Get code/op0/op1 from second argument.
15414         Change spu_compare_op0/op1 to op0/op1 throughout.  Get target
15415         from operands[0] or operands[3] depending on is_set.
15416         * config/spu/spu.h (spu_compare_op0, spu_compare_op1): Remove.
15417         * config/spu/spu.md (cmp<mode:VQHSI>, cmp<mode:DTI>, cmp<mode:VSF>,
15418         cmpdf, bCC), sCC: Remove.
15419         (cbranch<mode:VQHSI>4, cbranch<mode:DTI>, cbranch<mode:VSF>4,
15420         cbranchdf4, cstore<mode:VQHSI>4, cstore<mode:DTI>, cstore<mode:VSF>4,
15421         cstoredf4): New.
15422         (mov<mode>cc): Accept ordered_comparison_operator, adjust call to
15423         spu_emit_branch_or_set.
15424
15425         * config/stormy16/stormy16-protos.h (xstormy16_emit_cbranch):
15426         Add two arguments.
15427         * config/stormy16/stormy16.h (xstormy16_compare_op0,
15428         xstormy16_compare_op1): Delete.
15429         * config/stormy16/stormy16.c (xstormy16_compare_op0,
15430         xstormy16_compare_op1): Delete.
15431         (xstormy16_emit_cbranch): Get op0/op1 from the new arguments.
15432         Adjust calls.
15433         * config/stormy16/stormy16.md (cbranchsi4, cbranchhi4): New.
15434         (cmphi, cmpsi, bCC): Remove.
15435
15436         * config/v850/v850.md (tstsi, cmpsi): Fold into...
15437         (*cmpsi): ... this one.
15438         (cbranchsi4, cstoresi4): New.
15439         (bCC expanders): Delete.
15440         (sCC insns): Fold into...
15441         (*setcc): ... this one.
15442         (casesi): Do not use gen_cmpsi and gen_bgtu.
15443         (various splits): Wrap "naked" RHS of a cc0 set with COMPARE.
15444         (movsicc): Simplify.
15445         * config/v850/v850.c (v850_rtx_costs): Handle ZERO_EXTRACT in COMPARE.
15446
15447         * config/vax/vax-protos.h (cond_name): New.
15448         (vax_output_conditional_branch): Remove.
15449         * config/vax/vax.c (cond_name): New.
15450         (vax_output_conditional_branch): Remove.
15451         * config/vax/vax.h (PRINT_OPERAND): Dispatch %c to cond_name.
15452         * config/vax/vax.md (tst<VAXint>, tst<VAXfp>): Remove.
15453         (cmp<VAXint>, cmp<VAXfp>): Privatize.  Add constraints for tst.
15454         (bit<VAXint>): Wrap source with (compare).
15455         (b<code> and following unnamed pattern): Rename to *branch and
15456         *branch_reversed.  Change macroization to match_operator.
15457         (cbranch<VAXint>4, cbranch<VAXfp>4): New.
15458
15459         * config/xtensa/predicates.md (xtensa_cstoresi_operator): New.
15460         * config/xtensa/xtensa-protos.h (xtensa_expand_conditional_branch):
15461         Change last argument to machine_mode.
15462         (xtensa_expand_scc): Add machine_mode argument.
15463         * config/xtensa/xtensa.c (branch_cmp, branch_type): Remove.
15464         (gen_conditional_move, xtensa_expand_conditional_branch,
15465         xtensa_expand_scc, xtensa_expand_conditional_move): Use mode
15466         instead of branch_type, fetch cmp0/cmp1/test_code from operands[].
15467         Adjust operand numbers.
15468         * config/xtensa/xtensa.h (enum cmp_type, branch_cmp, branch_type):
15469         Delete.
15470         * config/xtensa/xtensa.md (any_cond, any_scc): Delete.
15471         (cmpsi, cmpsf, b<code>, s<code>): Delete.
15472         (cbranchsi4, cbranchsf4, cstoresi4, cstoresf4): New.
15473
15474 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
15475
15476         * optabs.c (prepare_cmp_insn): Temporarily disable test that
15477         causes spurious differences between trunk and cond-optab branch.
15478
15479 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
15480
15481         PR target/37137
15482         * doc/install.texi (STAGE1_TFLAGS, BUILD_CONFIG): Document.
15483
15484 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
15485
15486         * tree.c (iterative_hash_pointer): Delete.
15487         (iterative_hash_expr): Short-circuit handling of NULL pointer.
15488         Hash UIDs and versions of SSA names.  Don't special-case built-in
15489         function declarations.
15490
15491 2009-05-11  Ian Lance Taylor  <iant@google.com>
15492
15493         PR bootstrap/40103
15494         * graphite.c: Force -Wc++-compat to only be a warning before
15495         #including "cloog/cloog.h".
15496
15497 2009-05-11  Martin Jambor  <mjambor@suse.cz>
15498
15499         * ipa-cp.c (ipcp_cloning_candidate_p): Add missing return false.
15500
15501 2009-05-11  Jan Hubicka  <jh@suse.cz>
15502
15503         * tree-ssa-loop-ivcanon.c: Include target.h
15504         (struct loop_size): new structure.
15505         (constant_after_peeling): New predicate.
15506         (tree_estimate_loop_size): New function.
15507         (estimated_unrolled_size): Rewrite for new estimates.
15508         (try_unroll_loop_completely): Use new estimates.
15509         * Makefile.in (tree-ssa-loop-ivcanon.o): Add dependenc on target.h
15510
15511 2009-05-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15512
15513         * config/spu/spu-c.c (spu_categorize_keyword): Update for recent
15514         libcpp interface change.
15515         (spu_macro_to_expand): Likewise.
15516
15517 2009-05-11  Paolo Bonzini  <bonzini@gnu.org>
15518
15519         PR tree-optimization/40026
15520         * gimplify.c (gimplify_init_constructor): Change initial conditional
15521         to assertion.  Rewrite TREE_OPERAND (*expr_p, 1) after
15522         optimize_compound_literals_in_ctor.
15523
15524 2009-05-11  Nathan Sidwell  <nathan@codesourcery.com>
15525
15526         * config/m68k/m68k-devices.def (52274, 52277, 5301x, 5225x, 51xx):
15527         New devices.
15528         * doc/invoke.texi (M680x0 Options): Document new coldfire cpus.
15529
15530 2009-05-11  H.J. Lu  <hongjiu.lu@intel.com>
15531
15532         * tree-vect-data-refs.c (vect_analyze_group_access): Use
15533         HOST_WIDE_INT for gap.
15534
15535 2009-05-11  Ira Rosen  <irar@il.ibm.com>
15536
15537         PR tree-optimization/40074
15538         * tree-vect-data-refs.c (vect_analyze_group_access): Take gaps into
15539         account in group size and step comparison.
15540
15541 2009-05-11  Richard Guenther  <rguenther@suse.de>
15542
15543         * passes.c (init_optimization_passes): Strip now incorrect comment.
15544         (execute_function_todo): Do not set PROP_alias.
15545         * tree-pass.h (PROP_alias): Remove.
15546         * tree-ssa-structalias.c (pass_build_alias): Do not provide PROP_alias.
15547         * tree-if-conv.c (pass_if_conversion): Do not require PROP_alias.
15548         * tree-nrv.c (pass_return_slot): Likewise.
15549         * tree-object-size.c (pass_object_sizes): Likewise.
15550         * tree-ssa-dom.c (pass_dominator): Likewise.
15551         (pass_phi_only_cprop): Likewise.
15552         * tree-ssa-dse.c (pass_dse): Likewise.
15553         * tree-ssa-phiopt.c (pass_phiopt): Likewise.
15554         (pass_cselim): Likewise.
15555         * tree-ssa-pre.c (pass_pre): Likewise.
15556         (pass_fre): Likewise.
15557         * tree-ssa-reassoc.c (pass_reassoc): Likewise.
15558         * tree-ssa-sink.c (pass_sink_code): Likewise.
15559         * tree-stdarg.c (pass_stdarg): Likewise.
15560         * tree-tailcall.c (pass_tail_calls): Likewise.
15561         * tree-vrp.c (pass_vrp): Likewise.
15562
15563 2009-05-10  Ian Lance Taylor  <iant@google.com>
15564
15565         * basic-block.h (enum profile_status): Break out of struct
15566         control_flow_graph.
15567         * cgraph.h (struct inline_summary): Break out of struct
15568         cgraph_local_info.
15569         * cgraphunit.c (enum cgraph_order_sort_kind): New enum, broken out
15570         of struct cgraph_order_sort.
15571         * combine.c (enum undo_kind): New enum, broken out of struct undo.
15572         * cse.c (struct branch_path): Break out of struct
15573         cse_basic_block_data.
15574         * except.h (enum eh_region_type): Break out of struct eh_region.
15575         * gcc.c (enum add_del): Break out of struct modify_target.
15576         * genrecog.c (enum decision_type): Break out of struct decision_test.
15577         * ggc-page.c (struct ggc_pch_ondisk): Break out of struct
15578         ggc_pch_data.
15579         * matrix-reorg.c (struct free_info): Break out of struct matrix_info.
15580         * regmove.c (enum match_use): New enum, broken out of struct match.
15581         * sched-int.h (enum post_call_group): New enum, broken out of
15582         struct deps.
15583         (struct deps_reg): Break out of struct deps.
15584         * target.h (struct asm_int_op): Break out of struct gcc_target.
15585         * tree-eh.c (struct goto_queue_node): Break out of struct
15586         leh_tf_state.
15587         * tree-inline.h (enum copy_body_cge_which): Break out of
15588         copy_body_data.
15589         * tree-pass.h (enum opt_pass_type): Break out of struct opt_pass.
15590
15591         * c-decl.c (in_struct, struct_types): New static variables.
15592         (pushtag): Add loc parameter.  Change all callers.
15593         (lookup_tag): Add ploc parameter.  Change all callers.
15594         (check_compound_literal_type): New function.
15595         (parser_xref_tag): Add loc parameter.  Change all callers.  If
15596         -Wc++-compat, warn about struct/union/enum types defined within a
15597         struct or union.
15598         (start_struct): Add enclosing_in_struct, enclosing_struct_types,
15599         and loc parameters.  Change all callers.  Change error calls to
15600         error_at, using loc.  For a redefinition, if the location of the
15601         original definition is known, report it.  Set in_struct and
15602         struct_types.  If -Wc++-compat warn if in sizeof, typeof, or alignof.
15603         (finish_struct): Add new parameters enclosing_in_struct and
15604         enclosing_struct_types.  Change all callers.  Set
15605         C_TYPE_DEFINED_IN_STRUCT for all struct/union/enum types defined
15606         in the struct.  If in a struct, add this struct to struct_types.
15607         (start_enum): Add loc parameter.  Change all callers.  Use
15608         error_at for errors, using loc.  For a redefinition, if the
15609         location of the original definition is known, report it.  If in a
15610         struct, add this enum type to struct_types.  If -Wc++-compat warn
15611         if in sizeof, typeof, or alignof.
15612         * c-parser.c (disable_extension_diagnostics): Disable -Wc++-compat.
15613         (enable_extension_diagnostics): Reenable -Wc++-compat if appropriate.
15614         (c_parser_enum_specifier): Get enum location for start_enum.
15615         (c_parser_struct_or_union_specifier): Get struct location for
15616         start_struct.  Save in_struct and struct_types status between
15617         start_struct and finish_struct.
15618         (c_parser_cast_expression): Get location of cast.
15619         (c_parser_alignof_expression): Get location of type.
15620         (c_parser_postfix_expression): Likewise.
15621         (c_parser_postfix_expression_after_paren_type): Add type_loc
15622         parameter.  Change all callers.  Call check_compound_literal_type.
15623         Use type_loc for error about variable size type.
15624         * c-typeck.c (build_external_ref): If -Wc++-compat, warn about a use
15625         of an enum constant from an enum type defined in a struct or union.
15626         (c_cast_expr): Add loc parameter.  Change all callers.  If
15627         -Wc++-compat, warn about defining a type in a cast.
15628         * c-tree.h (C_TYPE_DEFINED_IN_STRUCT): Define.
15629         (start_enum, start_struct, finish_struct): Update declarations.
15630         (parser_xref_tag, c_cast_expr): Update declarations.
15631         (check_compound_literal_type): Declare.
15632
15633 2009-05-11  Ben Elliston  <bje@au.ibm.com>
15634
15635         * config/rs6000/rs6000-c.c (altivec_categorize_keyword): Update
15636         for recent libcpp interface change.
15637         (rs6000_macro_to_expand): Likewise.
15638
15639 2009-05-10  Michael Matz  <matz@suse.de>
15640
15641         PR target/40031
15642         * config/arm/arm.c (require_pic_register): Emit on entry edge,
15643         not at entry of function.
15644
15645 2009-05-10  Richard Guenther  <rguenther@suse.de>
15646
15647         PR tree-optimization/40081
15648         Revert
15649         * tree-sra.c (instantiate_element): Instantiate scalar replacements
15650         using the main variant of the element type.  Do not fiddle with
15651         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
15652
15653         * tree-sra.c (sra_type_can_be_decomposed_p): Do not decompose
15654         structs with volatile fields.
15655
15656 2009-05-10  Jan Hubicka  <jh@suse.cz>
15657
15658         * tree-inline.c (delete_unreachable_blocks_update_callgraph): Declare.
15659         (estimate_move_cost): Assert that it does not get called for
15660         VOID_TYPE_P.
15661         (estimate_num_insns): Skip VOID types in argument handling.
15662         (optimize_inline_calls): Delete unreachable blocks and verify that
15663         callgraph is valid.
15664
15665 2009-05-10  Jan Hubicka  <jh@suse.cz>
15666
15667         * cgraphbuild.c (record_reference): Use cgraph_mark_address_taken_node.
15668         * cgraph.c (cgraph_mark_address_taken_node): New function.
15669         (dump_cgraph_node): Dump new flag.
15670         * cgraph.h (struct cgraph_node): Add address_taken.
15671         (cgraph_mark_address_taken_node): New function.
15672         * ipa.c (cgraph_postorder): Prioritize functions with address taken
15673         since new direct calls can be born.
15674
15675 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
15676
15677         * c-lex.c (c_lex_with_flags): Expect cpp_hashnode in
15678         tok->val.node.node.
15679
15680 2009-05-10  Jan Hubicka  <jh@suse.cz>
15681
15682         PR middle-end/40084
15683         * cgraph.c (cgraph_update_edges_for_call_stmt_node): Take old_call
15684         argument; rewrite.
15685         (cgraph_update_edges_for_call_stmt): Take old_decl argument.
15686         * cgraph.h (cgraph_update_edges_for_call_stmt): Update prototype.
15687         * tree-inline.c (copy_bb): Set frequency correctly.
15688         (fold_marked_statements): Update call to
15689         cgraph_update_edges_for_call_stmt.
15690
15691 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
15692
15693         * config/arc/arc.c (arc_handle_interrupt_attribute): Use %qE for
15694         identifiers in diagnostics.
15695         * config/arm/arm.c (arm_handle_fndecl_attribute,
15696         arm_handle_isr_attribute): Likewise.
15697         * config/avr/avr.c (avr_handle_progmem_attribute,
15698         avr_handle_fndecl_attribute, avr_handle_fntype_attribute): Likewise.
15699         * config/bfin/bfin.c (handle_int_attribute,
15700         bfin_handle_longcall_attribute, bfin_handle_l1_text_attribute,
15701         bfin_handle_l1_data_attribute, bfin_handle_longcall_attribute,
15702         bfin_handle_l1_text_attribute, bfin_handle_l1_data_attribute):
15703         Likewise.
15704         * config/darwin.c (darwin_handle_kext_attribute,
15705         darwin_handle_weak_import_attribute): Likewise.
15706         * config/h8300/h8300.c (h8300_handle_fndecl_attribute,
15707         h8300_handle_eightbit_data_attribute,
15708         h8300_handle_tiny_data_attribute): Likewise.
15709         * config/i386/i386.c (ix86_handle_cconv_attribute,
15710         ix86_handle_abi_attribute, ix86_handle_struct_attribute): Likewise.
15711         * config/i386/winnt.c (ix86_handle_shared_attribute,
15712         ix86_handle_selectany_attribute): Likewise.
15713         * config/ia64/ia64.c (ia64_handle_model_attribute): Likewise.
15714         * config/m32c/m32c.c (function_vector_handler): Likewise.
15715         * config/m68hc11/m68hc11.c (m68hc11_handle_page0_attribute,
15716         m68hc11_handle_fntype_attribute): Likewise.
15717         * config/m68k/m68k.c (m68k_handle_fndecl_attribute): Likewise.
15718         * config/mcore/mcore.c (mcore_handle_naked_attribute): Likewise.
15719         * config/mips/mips.c (mips_insert_attributes,
15720         mips_merge_decl_attributes, mips_expand_builtin): Likewise.
15721         * config/rs6000/rs6000.c (rs6000_handle_longcall_attribute,
15722         rs6000_handle_struct_attribute): Likewise.
15723         * config/sh/sh.c (sh_insert_attributes,
15724         sh_handle_resbank_handler_attribute,
15725         sh_handle_interrupt_handler_attribute,
15726         sh2a_handle_function_vector_handler_attribute,
15727         sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
15728         Likewise.
15729         * config/sh/symbian.c (sh_symbian_mark_dllimport): Likewise.
15730         * config/spu/spu.c (spu_handle_fndecl_attribute,
15731         spu_handle_vector_attribute): Likewise.
15732         * config/stormy16/stormy16.c
15733         (xstormy16_handle_interrupt_attribute): Likewise.
15734         * config/v850/v850-c.c (ghs_pragma_section): Likewise.
15735         * config/v850/v850.c (v850_handle_interrupt_attribute): Likewise.
15736
15737 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
15738
15739         * pretty-print.h (struct pretty_print_info): Add translate_identifiers.
15740         (pp_translate_identifiers): New.
15741         (pp_identifier): Only conditionally translate identifier to locale
15742         character set.
15743         * pretty-print.c (pp_construct): Set pp_translate_identifiers.
15744         (pp_base_tree_identifier): Only conditionally translate identifier
15745         to locale character set.
15746         * c-pretty-print.c (M_): Define.
15747         (pp_c_type_specifier, pp_c_primary_expression): Mark English
15748         fragments for conditional translation with M_.
15749         * tree-pretty-print.c (maybe_init_pretty_print): Disable
15750         identifier translation.
15751
15752 2009-05-10  Richard Guenther  <rguenther@suse.de>
15753
15754         PR tree-optimization/40081
15755         * tree-sra.c (instantiate_element): Instantiate scalar replacements
15756         using the main variant of the element type.  Do not fiddle with
15757         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
15758
15759 2009-05-09  Jan Hubicka  <jh@suse.cz>
15760
15761         PR middle-end/40080
15762         * cgraphunit.c (cgraph_materialize_all_clones): Do not redirect
15763         indirect calls; verify cgraph afterwards.
15764
15765 2009-05-09  Jan Hubicka  <jh@suse.cz>
15766
15767         PR bootstrap/40082
15768         * ipa.c (update_inlined_to_pointer): New function.
15769         (cgraph_remove_unreachable_nodes): Use it.
15770
15771 2009-05-09  Jan Hubicka  <jh@suse.cz>
15772
15773         * tree-eh.c (struct leh_state): Remove prev_try.
15774         (lower_try_finally, lower_catch, lower_eh_filter, lower_cleanup): Do
15775         not track prev_try.
15776         * except.c (gen_eh_region_cleanup, duplicate_eh_regions,
15777         copy_eh_region_1, copy_eh_region, redirect_eh_edge_to_label,
15778         remove_eh_handler_and_replace, foreach_reachable_handler,
15779         verify_eh_region, verify_eh_tree): Remove tracking of prev_try pointer.
15780         * except.h (struct eh_region): Remove eh_region_u_cleanup.
15781         (gen_eh_region_cleanup): Update prototype.
15782
15783 2009-05-09  Jan Hubicka  <jh@suse.cz>
15784
15785         PR middle-end/40043
15786         * except.c (copy_eh_region): Always set prev_try.
15787         (redirect_eh_edge_to_label): Find outer try.
15788         (foreach_reachable_handler): When looking for prev try
15789         handle case where previous try is not going to be taken.
15790
15791 2009-05-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
15792
15793         PR tree-optimization/40049
15794         * tree-vect-stmts.c (vectorizable_operation): If the machine has
15795         only vector/vector shifts, convert the type of the constant to the
15796         appropriate type to avoid building incorrect trees, which
15797         eventually have problems with garbage collection.
15798
15799 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
15800
15801         * fold-const.c (fold_binary): Do not fold multiplication by 1 or
15802         -1 for complex floating-point types if honoring signed zeros.
15803
15804 2009-05-08  Jan Hubicka  <jh@suse.cz>
15805
15806         * cgraphbuild.c (compute_call_stmt_bb_frequency): Accept function
15807         argument; handle correctly when profile is absent.
15808         (build_cgraph_edges): Update.
15809         (rebuild_cgraph_edges): Update.
15810         * cgraph.c: Do not include varray.h.
15811         (cgraph_set_call_stmt_including_clones): New function.
15812         (cgraph_create_edge_including_clones): Likewise
15813         (cgraph_update_edges_for_call_stmt_node): New static cfunction.
15814         (cgraph_update_edges_for_call_stmt): Handle clones.
15815         (cgraph_remove_node): Handle clone tree.
15816         (cgraph_remove_node_and_inline_clones): New function.
15817         (dump_cgraph_node): Dump clone tree.
15818         (cgraph_clone_node): Handle clone tree.
15819         (clone_function_name): Bring here from tree-inline.c.
15820         (cgraph_create_virtual_clone): New function.
15821         * cgraph.h (ipa_replace_map): Move here from ipa.h.
15822         (cgraph_clone_info): New function.
15823         (strut cgraph_node): Add clone_info and new clone tree pointers.
15824         (cgraph_remove_node_and_inline_clones,
15825         cgraph_set_call_stmt_including_clones,
15826         cgraph_create_edge_including_clones,
15827         cgraph_create_virtual_clone): Declare.
15828         (cgraph_function_versioning): Use VEC argument.
15829         (compute_call_stmt_bb_frequency): Update prototype.
15830         (cgraph_materialize_all_clones): New function.
15831         * ipa-cp.c (ipcp_update_cloned_node): Remove.
15832         (ipcp_create_replace_map): Update to VECtors.
15833         (ipcp_update_callgraph): Use virtual clones.
15834         (ipcp_update_bb_counts, ipcp_update_edges_counts): Remove.
15835         (ipcp_update_profiling): Do not update local profiling.
15836         (ipcp_insert_stage): Use VECtors and virtual clones.
15837         * cgraphunit.c (verify_cgraph_node): Verify clone tree.
15838         (clone_of_p): New function.
15839         (cgraph_preserve_function_body_p): Use clone tree.
15840         (cgraph_optimize): Materialize clones.
15841         (cgraph_function_versioning): Update for VECtors.
15842         (save_inline_function_body): Use clone tree.
15843         (cgraph_materialize_clone): New function.
15844         (cgraph_materialize_all_clones): Likewise.
15845         * ipa-inline.c (cgraph_default_inline_p): Use analyzed flags.
15846         * ipa.c: Include gimple.h.
15847         (cgraph_remove_unreachable_nodes): Use clone tree.
15848         * ipa-prop.c (ipa_note_param_call): Update call to
15849         compute_call_stmt_bb_frequencycall.
15850         * ipa-prop.h (ipa_replace_map): Move to cgraph.h.
15851         * tree-inline.c: Do not include varray.h or gt-tree-inline.h.
15852         (copy_bb): Handle updating of clone tree; add new edge when new call
15853         appears.
15854         (expand_call_inline): Be strict about every call having edge.
15855         (clone_fn_id_num, clone_function_name): Move to cgraph.c.
15856         (delete_unreachable_blocks_update_callgraph): New function.
15857         (tree_function_versioning): Use VECtors; always remove unreachable
15858         blocks and fold conditionals.
15859         * tree-inline.h: Do not include varray.h.
15860         (tree_function_versioning): Remove.
15861         * Makefile.in (GTFILES): Remove tree-inline.c
15862         * passes.c (do_per_function): Do only functions having body.
15863         * ipa-struct-reorg.c (do_reorg_1, collect_data_accesses): Handle clone
15864         tree.
15865
15866 2009-05-08  H.J. Lu  <hongjiu.lu@intel.com>
15867             Andrew Morrow  <acm@google.com>
15868
15869         PR c/36892
15870         * c-common.c (c_common_attribute_table): Permit deprecated
15871         attribute to take an optional argument.
15872         (handle_deprecated_attribute): If the optional argument to
15873         __attribute__((deprecated)) is not a string ignore the attribute
15874         and emit a warning.
15875
15876         * c-decl.c (grokdeclarator): Updated warn_deprecated_use call.
15877         * c-typeck.c (build_component_ref): Likewise.
15878         (build_external_ref): Likewise.
15879
15880         * toplev.c (warn_deprecated_use): Add an attribute argument.
15881         Emit the message associated with __attribute__((deprecated)).
15882
15883         * toplev.h (warn_deprecated_use): Updated.
15884
15885         * doc/extend.texi: Document new optional parameter to
15886         __attribute__((deprecated))
15887
15888 2009-05-08  Michael Eager <eager@eagercon.com>
15889
15890         * config/rs6000/rs6000.md (*movdf_softfloat32): replace
15891         !TARGET_DOUBLE_FLOAT with TARGET_SINGLE_FLOAT.
15892
15893 2009-05-08  Richard Guenther  <rguenther@suse.de>
15894
15895         PR tree-optimization/40062
15896         * tree-scalar-evolution.c (follow_ssa_edge_in_condition_phi):
15897         Avoid exponential behavior.
15898
15899 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
15900
15901         PR rtl-optimization/33928
15902         PR 26854
15903         * fwprop.c (use_def_ref, get_def_for_use, bitmap_only_bit_bitween,
15904         process_uses, build_single_def_use_links): New.
15905         (update_df): Update use_def_ref.
15906         (forward_propagate_into): Use get_def_for_use instead of use-def
15907         chains.
15908         (fwprop_init): Call build_single_def_use_links and let it initialize
15909         dataflow.
15910         (fwprop_done): Free use_def_ref.
15911         (fwprop_addr): Eliminate duplicate call to df_set_flags.
15912         * df-problems.c (df_rd_simulate_artificial_defs_at_top,
15913         df_rd_simulate_one_insn): New.
15914         (df_rd_bb_local_compute_process_def): Update head comment.
15915         (df_chain_create_bb): Use the new RD simulation functions.
15916         * df.h (df_rd_simulate_artificial_defs_at_top,
15917         df_rd_simulate_one_insn): New.
15918         * opts.c (decode_options): Enable fwprop at -O1.
15919         * doc/invoke.texi (-fforward-propagate): Document this.
15920
15921 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
15922
15923         PR c/24581
15924         * c-typeck.c (build_binary_op): Handle arithmetic between one real
15925         and one complex operand specially.
15926         * tree-complex.c (some_nonzerop): Do not identify a real value as
15927         zero if flag_signed_zeros.
15928
15929 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
15930
15931         PR rtl-optimization/33928
15932         * loop-invariant.c (record_use): Fix && vs. || mishap.
15933
15934 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
15935
15936         PR rtl-optimization/33928
15937         * loop-invariant.c (struct use): Add addr_use_p.
15938         (struct def): Add n_addr_uses.
15939         (struct invariant): Add cheap_address.
15940         (create_new_invariant): Set cheap_address.
15941         (record_use): Accept df_ref.  Set addr_use_p and update n_addr_uses.
15942         (record_uses): Pass df_ref to record_use.
15943         (get_inv_cost): Do not add inv->cost to comp_cost for cheap addresses
15944         used only as such.
15945
15946 2009-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
15947
15948         * config/sh/sh.c: Do not include c-pragma.h.
15949
15950 2009-05-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15951
15952         * config/spu/spu.c: Remove include of c-common.h.
15953
15954 2009-05-07  Janis Johnson  <janis187@us.ibm.com>
15955
15956         PR c/39037
15957         * c-common.h (mark_valid_location_for_stdc_pragma,
15958         valid_location_for_stdc_pragma_p, set_float_const_decimal64,
15959         clear_float_const_decimal64, float_const_decimal64_p): New.
15960         * c.opt (Wunsuffixed-float-constants): New.
15961         * c-lex.c (interpret_float): Use pragma FLOAT_CONST_DECIMAL64 for
15962         unsuffixed float constant, handle new warning.
15963         * c-cppbuiltin.c (c_cpp_builtins): Use cast for double constants.
15964         * c-decl.c (c_scope): New flag float_const_decimal64.
15965         (set_float_const_decimal64, clear_float_const_decimal64,
15966         float_const_decimal64_p): New.
15967         (push_scope): Set new flag.
15968         * c-parser.c (c_parser_translation_unit): Mark when it's valid
15969         to use STDC pragmas.
15970         (c_parser_external_declaration): Ditto.
15971         (c_parser_compound_statement_nostart): Ditto.
15972         * c-pragma.c (valid_location_for_stdc_pragma,
15973         mark_valid_location_for_stdc_pragma,
15974         valid_location_for_stdc_pragma_p, handle_stdc_pragma,
15975         handle_pragma_float_const_decimal64): New.
15976         (init_pragma): Register new pragma FLOAT_CONST_DECIMAL64.
15977         * cp/semantics.c (valid_location_for_stdc_pragma_p,
15978         set_float_const_decimal64, clear_float_const_decimal64,
15979         float_const_decimal64_p): New dummy functions.
15980         * doc/extend.texi (Decimal Float): Remove statement that the
15981         pragma, and suffix for double constants, are not supported.
15982         * doc/invoke.texi (Warning Options): List new option.
15983         (-Wunsuffixed-float-constants): New.
15984
15985 2009-05-08  Steven Bosscher  <steven@gcc.gnu.org>
15986
15987         * config/i386/i386.c: Do not include c-common.h.
15988
15989 2009-05-07  Mark Heffernan  <meheff@google.com>
15990
15991         * doc/invoke.texi (Debugging Options): Document change of debugging
15992         dump location.
15993         * opts.c (decode_options): Make dump_base_name relative to
15994         aux_base_name directory.
15995
15996 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
15997
15998         * config/picochip/picochip.h (NO_DOLLAR_IN_LABEL): Added.
15999         * config/picochip/libgccExtras/divmod15.asm : Removed redefiniton.
16000
16001 2009-05-07  Rafael Avila de Espindola  <espindola@google.com>
16002
16003         * Makefile.in (install-plugin): Simplify a bit.
16004
16005 2009-05-07  Paolo Bonzini  <bonzini@gnu.org>
16006
16007         * Makefile.in (OBJS-common): Add regcprop.o.
16008         (regcprop.o): New.
16009         * timevar.def (TV_CPROP_REGISTERS): New.
16010         * regrename.c (regrename_optimize): Return 0.
16011         (rest_of_handle_regrename): Delete.
16012         (pass_rename_registers): Point to regrename_optimize.
16013         (struct value_data_entry, struct value_data,
16014         kill_value_one_regno, kill_value_regno, kill_value,
16015         set_value_regno, init_value_data, kill_clobbered_value,
16016         kill_set_value, kill_autoinc_value, copy_value,
16017         mode_change_ok, maybe_mode_change, find_oldest_value_reg,
16018         replace_oldest_value_reg, replace_oldest_value_addr,
16019         replace_oldest_value_mem, copyprop_hardreg_forward_1,
16020         debug_value_data, validate_value_data): Move...
16021         * regcprop.c: ... here.
16022         (rest_of_handle_cprop): Delete.
16023         (pass_cprop_hardreg): Point to copyprop_hardreg_forward.
16024
16025 2009-05-07  Jakub Jelinek  <jakub@redhat.com>
16026
16027         PR middle-end/40057
16028         * dojump.c (prefer_and_bit_test): Use immed_double_const instead of
16029         GEN_INT for 1 << bitnum.
16030         (do_jump) <case BIT_AND_EXPR>: Use build_int_cst_wide_type instead of
16031         build_int_cst_type.
16032
16033 2009-05-07  Uros Bizjak  <ubizjak@gmail.com>
16034
16035         * doc/md.texi (Standard Pattern Names For Generation) [sync_nand]:
16036         Remove wrong description of "nand" operation.
16037
16038 2009-05-06  Richard Guenther  <rguenther@suse.de>
16039             Adam Nemet  <anemet@caviumnetworks.com>
16040
16041         * gimple.def (GIMPLE_ASSIGN): Fix incorrect information in the
16042         comment.  Add that if LHS is not a gimple register, then RHS1 has
16043         to be a single object (GIMPLE_SINGLE_RHS).
16044
16045 2009-05-06  Adam Nemet  <anemet@caviumnetworks.com>
16046
16047         * expr.c (get_def_for_expr): Move it up in the file.
16048         (store_field): When expanding a bit-field store, look at the
16049         defining gimple stmt for the masking conversion.
16050
16051 2009-05-06  Janis Johnson  <janis187@us.ibm.com>
16052
16053         PR middle-end/39986
16054         * dfp.c (encode_decimal32, decode_decimal32, encode_decimal64,
16055         decode_decimal64, encode_decimal128, decode_decimal128): Avoid
16056         32-bit memcpy into long.
16057
16058 2009-05-06  Jakub Jelinek  <jakub@redhat.com>
16059
16060         * dwarf2out.c (new_reg_loc_descr): Don't ever create DW_OP_regX.
16061         (one_reg_loc_descriptor): Create DW_OP_regX here instead of calling
16062         new_reg_loc_descr.
16063         (loc_by_reference): If loc is DW_OP_regX, change it into DW_OP_bregX 0
16064         instead of appending DW_OP_deref*.
16065
16066 2009-05-06  Michael Matz  <matz@suse.de>
16067
16068         PR middle-end/40021
16069         * cfgexpand.c (maybe_cleanup_end_of_block): New static function.
16070         (expand_gimple_cond): Use it to cleanup CFG and superfluous jumps.
16071
16072 2009-05-06  Rafael Avila de Espindola  <espindola@google.com>
16073
16074         * Makefile.in (install-plugin): Fix srcdir handling.
16075
16076 2009-05-06  Andrey Belevantsev  <abel@ispras.ru>
16077
16078         * tree-ssa.c (execute_update_address_taken): Handle TARGET_MEM_REF
16079         when processing for not_regs_needed bitmap.
16080         * gimple.c (walk_stmt_load_store_addr_ops): When visiting address,
16081         handle TARGET_MEM_REF in lhs.  Check TMR_BASE for NULL while
16082         handling it for rhs.
16083
16084 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
16085
16086         * config/i386/i386.md (unnamed inc/dec peephole): Use
16087         optimize_insn_for_size_p instead of optimize_size.
16088         * config/i386/predicates.md (incdec_operand): Likewise.
16089         (aligned_operand): Likewise.
16090         * config/i386/sse.md (divv8sf3): Likewise.
16091         (sqrtv8sf2): Likewise.
16092
16093 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
16094
16095         * config/i386/i386.c (ix86_build_signbit_mask): Make it static.
16096
16097         * config/i386/i386-protos.h (ix86_build_signbit_mask): Removed.
16098
16099 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
16100
16101         * config/i386/i386.md (*avx_<code><mode>3_finite): Replace
16102         ssemodesuffixf2c with avxmodesuffixf2c.
16103
16104 2009-05-06  Joseph Myers  <joseph@codesourcery.com>
16105
16106         PR c/40032
16107         * c-decl.c (grokdeclarator): Handle incomplete type of unnamed field.
16108
16109 2009-05-05  Jakub Jelinek  <jakub@redhat.com>
16110
16111         * tree.h: Remove DECL_BY_REFERENCE from private_flag comment.
16112         (struct tree_base): Adjust spacing for 8 bit boundaries.
16113         (struct tree_decl_common): Add decl_by_reference_flag bit.
16114         (DECL_BY_REFERENCE): Adjust.
16115         * print-tree.c (print_node): For VAR_DECL, PARM_DECL or RESULT_DECL,
16116         print DECL_BY_REFERENCE bit.
16117         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Revert last change.
16118         * dwarf2out.c (loc_by_reference, gen_decl_die): Check
16119         DECL_BY_REFERENCE for all VAR_DECLs, not just non-static ones.
16120         (gen_variable_die): Likewise.  Check TREE_PRIVATE/TREE_PROTECTED
16121         unconditionally.
16122
16123         PR middle-end/39666
16124         * gimplify.c (gimplify_switch_expr): If case labels cover the whole
16125         range of the type, but default label is missing, add it with one
16126         of the existing labels instead of adding a new label for it.
16127
16128 2009-05-05  Joseph Myers  <joseph@codesourcery.com>
16129
16130         * dwarf.h: Remove.
16131
16132 2009-05-05  Rafael Avila de Espindola  <espindola@google.com>
16133
16134         * Makefile.in (enable_plugin, plugin_includedir): New.
16135         (install): Depend on install-plugin.
16136         (PLUGIN_HEADERS): New.
16137         (install-plugin): New.
16138         * config.gcc: Add vxworks-dummy.h to tm_file for x86 and x86-64.
16139
16140 2009-05-05  Richard Guenther  <rguenther@suse.de>
16141
16142         PR tree-optimization/40022
16143         * tree-ssa-phiprop.c (struct phiprop_d): Exchange vop_stmt for
16144         the only vuse.
16145         (phivn_valid_p): Fix tuplification error, simplify.
16146         (phiprop_insert_phi): Add dumps.
16147         (propagate_with_phi): Simplify.
16148
16149 2009-05-05  Richard Guenther  <rguenther@suse.de>
16150
16151         PR middle-end/40023
16152         * builtins.c (gimplify_va_arg_expr): Properly build the address.
16153
16154 2009-05-05  Shujing Zhao  <pearly.zhao@oracle.com>
16155
16156         * tree.h (strip_float_extensions): Remove duplicate declaration.
16157         (build_low_bits_mask, debug_fold_checksum, expand_function_end,
16158         expand_function_start, stack_protect_prologue, stack_protect_epilogue,
16159         block_ultimate_origin): Rearrange the declarations line to match the
16160         comment that indicates the .c file which the functions are defined.
16161         (dwarf2out_*, set_decl_rtl): Add comment.
16162         (get_base_address): Adjust comment.
16163         (change_decl_assembler_name, maybe_fold_*, build_addr): Rearrange the
16164         declarations line and add comment.
16165         (is_builtin_name): Add blank after function name, for clarity.
16166
16167 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
16168
16169         * attribs.c (decl_attributes): Use %qE for identifiers in
16170         diagnostics.
16171         * cgraphunit.c (verify_cgraph_node): Translate function names to
16172         locale character set in diagnostics.
16173         * coverage.c (get_coverage_counts): Use %qE for identifiers in
16174         diagnostics.
16175         * doc/invoke.texi (-finstrument-functions-exclude-function-list):
16176         Document that functions are named in UTF-8.
16177         * expr.c (expand_expr_real_1): Translate function names to locale
16178         character set in diagnostics.
16179         * gimplify.c (omp_notice_variable, omp_is_private,
16180         gimplify_scan_omp_clauses): Use %qE for identifiers in
16181         diagnostics.
16182         * langhooks.c (lhd_print_error_function): Translate function names
16183         to locale character set.
16184         * langhooks.h (decl_printable_name): Document that return value is
16185         in internal character set.
16186         * stmt.c: Include pretty-print.h
16187         (tree_conflicts_with_clobbers_p): Use %qE for identifiers in
16188         diagnostics.
16189         (resolve_operand_name_1): Translate named operand name to locale
16190         character set.
16191         * stor-layout.c (finalize_record_size): Use %qE for identifiers in
16192         diagnostics.
16193         * toplev.c (announce_function): Translate function names to locale
16194         character set.
16195         (warn_deprecated_use): Use %qE for identifiers in diagnostics.
16196         (default_tree_printer): Use pp_identifier or translate identifiers
16197         to locale character set.  Mark "<anonymous>" for translation.
16198         * tree-mudflap.c (mx_register_decls, mudflap_finish_file): Use %qE
16199         for identifiers in diagnostics.
16200         * tree.c (handle_dll_attribute): Use %qE for identifiers in
16201         diagnostics.
16202         * varasm.c (output_constructor): Use %qE for identifiers in
16203         diagnostics.
16204
16205 2009-05-04  Rafael Avila de Espindola  <espindola@google.com>
16206
16207         * configure.ac: use ` ` instead of $()
16208         * configure: Regenerate.
16209
16210 2009-05-05  Ben Elliston  <bje@au.ibm.com>
16211
16212         * config/pa/linux-atomic.c: Eliminate conditional include of
16213         errno.h on non-LP64 systems to simplify build requirements.
16214
16215 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
16216
16217         * c-common.c (handle_mode_attribute): Use %qE for identifiers in
16218         diagnostics.
16219         * c-decl.c (check_bitfield_type_and_width): Make orig_name a tree
16220         and pass value to identifier_to_locale.
16221         (warn_variable_length_array): Make name a tree.
16222         (grokdeclarator): Separate diagnostic texts for named and unnamed
16223         declarators.  Use %qE for named declarators.
16224         * c-parser.c (c_lex_one_token): Use %qE for identifiers in
16225         diagnostics.
16226         * c-pragma.c (pop_alignment, handle_pragma_pack): Use %qE for
16227         identifiers in diagnostics.
16228         * c-typeck.c (push_member_name, start_init): Pass identifiers to
16229         identifier_to_locale.  Mark "anonymous" strings for translation.
16230
16231 2009-05-04  Michael Eager <eager@eagercon.com>
16232
16233         * config/rs6000/rs6000.c (rs6000_legitimate_address): Allow
16234         address for DImode/DFmode only if double-precision FP regs.
16235
16236 2009-05-04  Michael Eager <eager@eagercon.com>
16237
16238         * config/rs6000/rs6000.c (rs6000_libcall_value): Add
16239         TARGET_SINGLE_FLOAT check.
16240
16241 2009-05-04  Michael Eager <eager@eagercon.com>
16242
16243         * config/rs6000/xilinx.h: Add CPP_SPEC for -mxilinx-fpu options.
16244
16245 2009-05-04  Michael Eager <eager@eagercon.com>
16246
16247         * gcc/config.gcc: (powerpc-xilinx-eabi*): Add tm t-xilinx
16248         * config/rs6000/t-xilinx: New
16249
16250 2009-05-04  Paolo Bonzini  <bonzini@gnu.org>
16251
16252         * doc/tm.texi (LEGITIMIZE_ADDRESS): Revise documentation.
16253         * gcc/defaults.h (LEGITIMIZE_ADDRESS): Delete.
16254         * gcc/explow.c (memory_address): Use target hook.
16255         * gcc/targhooks.c (default_legitimize_address): New.
16256         * gcc/targhooks.h (default_legitimize_address): New.
16257         * gcc/target.h (legitimize_address): New.
16258         * gcc/target-def.h (TARGET_LEGITIMIZE_ADDRESS): New.
16259         (TARGET_INITIALIZER): Include it.
16260         * gcc/system.h (LEGITIMIZE_ADDRESS): Poison.
16261
16262         * config/bfin/bfin-protos.h (legitimize_address): Remove.
16263         * config/bfin/bfin.c (legitimize_address): Remove.
16264         * config/bfin/bfin.h (LEGITIMIZE_ADDRESS): Remove.
16265         * config/m68hc11/m68hc11-protos.h (m68hc11_legitimize_address):
16266         Remove.
16267         * config/m68hc11/m68hc11.c (m68hc11_legitimize_address): Remove.
16268         * config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Remove.
16269
16270         * gcc/config/arm/arm.h (LEGITIMIZE_ADDRESS, ARM_LEGITIMIZE_ADDRESS,
16271         THUMB_LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS): Delete.
16272         * gcc/config/s390/s390.h (LEGITIMIZE_ADDRESS): Delete.
16273         * gcc/config/m32c/m32c.h (LEGITIMIZE_ADDRESS): Delete.
16274         * gcc/config/sparc/sparc.h (LEGITIMIZE_ADDRESS): Delete.
16275         * gcc/config/m32r/m32r.h (LEGITIMIZE_ADDRESS): Delete.
16276         * gcc/config/i386/i386.h (LEGITIMIZE_ADDRESS): Delete.
16277         * gcc/config/sh/sh.h (LEGITIMIZE_ADDRESS): Delete.
16278         * gcc/config/avr/avr.h (LEGITIMIZE_ADDRESS): Delete.
16279         * gcc/config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Delete.
16280         * gcc/config/iq2000/iq2000.h (LEGITIMIZE_ADDRESS): Delete.
16281         * gcc/config/mn10300/mn10300.h (LEGITIMIZE_ADDRESS): Delete.
16282         * gcc/config/m68k/m68k.h (LEGITIMIZE_ADDRESS): Delete.
16283         * gcc/config/score/score.h (LEGITIMIZE_ADDRESS): Delete.
16284         * gcc/config/pa/pa.h (LEGITIMIZE_ADDRESS): Delete.
16285         * gcc/config/mips/mips.h (LEGITIMIZE_ADDRESS): Delete.
16286         * gcc/config/alpha/alpha.h (LEGITIMIZE_ADDRESS): Delete.
16287         * gcc/config/frv/frv.h (LEGITIMIZE_ADDRESS): Delete.
16288         * gcc/config/spu/spu.h (LEGITIMIZE_ADDRESS): Delete.
16289         * gcc/config/xtensa/xtensa.h (LEGITIMIZE_ADDRESS): Delete.
16290         * gcc/config/cris/cris.h (LEGITIMIZE_ADDRESS): Delete.
16291         * gcc/config/rs6000/rs6000.h (LEGITIMIZE_ADDRESS): Delete.
16292         * gcc/config/picochip/picochip.h (LEGITIMIZE_ADDRESS): Delete.
16293
16294         * gcc/config/s390/s390-protos.h (legitimize_address): Delete.
16295         * gcc/config/m32c/m32c-protos.h (m32c_legitimize_address): Delete.
16296         * gcc/config/sparc/sparc-protos.h (legitimize_address): Delete.
16297         * gcc/config/i386/i386-protos.h (legitimize_address): Delete.
16298         * gcc/config/avr/avr-protos.h (legitimize_address): Delete.
16299         * gcc/config/mn10300/mn10300-protos.h (legitimize_address): Delete.
16300         * gcc/config/score/score-protos.h (score_legitimize_address): Delete.
16301         * gcc/config/arm/arm-protos.h (arm_legitimize_address,
16302         (thumb_legitimize_address): Delete.
16303         * gcc/config/pa/pa-protos.h (hppa_legitimize_address): Delete.
16304         * gcc/config/mips/mips-protos.h (mips_legitimize_address): Delete.
16305         * gcc/config/alpha/alpha-protos.h (alpha_legitimize_address): Delete.
16306         * gcc/config/frv/frv-protos.h (frv_legitimize_address): Delete.
16307         * gcc/config/spu/spu-protos.h (spu_legitimize_address): Delete.
16308         * gcc/config/xtensa/xtensa-protos.h (xtensa_legitimize_address):
16309         Delete.
16310         * gcc/config/rs6000/rs6000-protos.h (rs6000_legitimize_address):
16311         Delete.
16312
16313         * config/arm/arm.c (arm_legitimize_address): Maybe call Thumb version.
16314         * config/m32c/m32c.c (m32c_legitimize_address): Standardize.
16315         * config/m32r/m32r.c (m32r_legitimize_address): New.
16316         * config/m68k/m68k.c (m68k_legitimize_address): New.
16317         * config/score/score.c (score_legitimize_address): Standardize.
16318         * config/score/score3.c (score3_legitimize_address): Standardize.
16319         * config/score/score3.h (score3_legitimize_address): Adjust.
16320         * config/score/score7.c (score7_legitimize_address): Standardize.
16321         * config/score/score7.h (score7_legitimize_address): Adjust.
16322         * config/sh/sh.c (sh_legitimize_address): New.
16323         * config/iq2000/iq2000.c (iq2000_legitimize_address): New.
16324
16325         * gcc/config/s390/s390.c (legitimize_address): Rename to...
16326         (s390_legitimize_address): ... this.
16327         * gcc/config/sparc/sparc.c (legitimize_address): Rename to...
16328         (sparc_legitimize_address): ... this.
16329         * gcc/config/i386/i386.c (legitimize_address): Rename to...
16330         (ix86_legitimize_address): ... this.
16331         * gcc/config/avr/avr.c (legitimize_address): Rename to...
16332         (avr_legitimize_address): ... this.
16333         * gcc/config/mn10300/mn10300.c (legitimize_address): Rename to...
16334         (mn10300_legitimize_address): ... this.
16335         * config/alpha/alpha.c (alpha_legitimize_address): Wrap...
16336         (alpha_legitimize_address_1): ... the old alpha_legitimize_address.
16337         (alpha_expand_mov): Adjust call.
16338
16339         * config/frv/frv.c (frv_legitimize_address): Return x on failure.
16340         * config/spu/spu.c (spu_legitimize_address): Likewise.
16341         * config/xtensa/xtensa.c (xtensa_legitimize_address): Likewise.
16342         * config/rs6000/rs6000.c (rs6000_legitimize_address): Likewise.
16343
16344 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
16345
16346         * intl.c (locale_encoding, locale_utf8): New.
16347         (gcc_init_libintl): Initialize locale_encoding and locale_utf8.
16348         * intl.h (locale_encoding, locale_utf8): Declare.
16349         * pretty-print.c: Include ggc.h.  Include iconv.h if HAVE_ICONV.
16350         (pp_base_tree_identifier, decode_utf8_char, identifier_to_locale):
16351         New.
16352         * pretty-print.h (pp_identifier): Call identifier_to_locale on ID
16353         argument.
16354         (pp_tree_identifier): Define to call pp_base_tree_identifier.
16355         (pp_base_tree_identifier): Declare as function.
16356         (identifier_to_locale): Declare.
16357         * Makefile.in (pretty-print.o): Update dependencies.
16358         * varasm.c (finish_aliases_1): Use %qE for identifiers in diagnostics.
16359
16360 2009-05-04  Richard Guenther  <rguenther@suse.de>
16361
16362         PR middle-end/40015
16363         * builtins.c (fold_builtin_memory_op): Do not decay to element
16364         type if the size matches the whole array.
16365
16366 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
16367
16368         * expmed.c (synth_mult): When trying out a shift, pass the result
16369         of a signed shift.
16370
16371 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
16372
16373         * expmed.c (shiftsub_cost): Rename to shiftsub0_cost.
16374         (shiftsub1_cost): New.
16375         (init_expmed): Compute shiftsub1_cost.
16376         (synth_mult): Optimize multiplications by constants of the form
16377         -(2^^m-1) for some constant positive integer m.
16378
16379 2009-05-03  Richard Guenther  <rguenther@suse.de>
16380
16381         PR c/39983
16382         * c-typeck.c (array_to_pointer_conversion): Do not built
16383         ADDR_EXPRs of arrays of pointer-to-element type.
16384         * c-gimplify.c (c_gimplify_expr): Revert change fixing
16385         up wrong ADDR_EXPRs after-the-fact.
16386         * c-common.c (strict_aliasing_warning): Strip pointer
16387         conversions for obtaining the original type.
16388         * builtins.c (fold_builtin_memset): Handle array types.
16389         (fold_builtin_memory_op): Handle folded POINTER_PLUS_EXPRs
16390         and array types
16391
16392 2009-05-03  Richard Guenther  <rguenther@suse.de>
16393
16394         PR middle-end/23329
16395         * tree-ssa.c (useless_type_conversion_p_1): Use get_deref_alias_set.
16396         Do not lose casts from array types with unknown extent to array
16397         types with known extent.
16398         * tree-ssa-copy.c (may_propagate_copy): Remove hack checking for
16399         alias set compatibility.
16400
16401 2009-05-03  Manuel López-Ibáñez  <manu@gcc.gnu.org>
16402
16403         * flags.h (extra_warnings): Delete.
16404         * toplev.c (process_options): Handle Wuninitialized here.
16405         * opts.c (extra_warnings): Delete.
16406         (set_Wextra): Delete.
16407         (common_handle_option): -Wextra can be handled automatically.
16408         * c-opts.c (c_common_handle_option): Delete obsolete code.
16409         (c_common_post_options): Simplify comment.
16410         * common.opt (W): Add Var.
16411         (Wextra): Add Var.
16412         (Wuninitialized): Initialize to -1.
16413
16414 2009-05-03  Adam Nemet  <anemet@caviumnetworks.com>
16415             Richard Guenther  <rguenther@suse.de>
16416
16417         * expr.c (get_def_for_expr): New function.
16418         (expand_expr_real_1) <PLUS_EXPR, MINUS_EXPR>: Adjust to work with
16419         SSA rather than trees.
16420         <MULT_EXPR>: Likewise.  Use subexp0 and subexp1 instead of
16421         TREE_OPERAND (exp, 0) and TREE_OPERAND (exp, 1).
16422
16423 2009-05-03  Joseph Myers  <joseph@codesourcery.com>
16424
16425         * c-common.c (reswords): Add _Imaginary.
16426         * c-common.c (enum rid): Add RID_IMAGINARY.
16427
16428 2009-05-03  Paolo Bonzini  <bonzini@gnu.org>
16429
16430         * tree.h (TYPE_VECTOR_OPAQUE): Fix documentation.
16431         Patch by Richard Guenther.
16432
16433 2009-05-03  Anatoly Sokolov  <aesok@post.ru>
16434
16435         * defaults.h (FRAME_POINTER_REQUIRED): Provide default.
16436         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
16437         * config/alpha/alpha.h (FRAME_POINTER_REQUIRED): Delete.
16438         * config/s390/s390.h (FRAME_POINTER_REQUIRED): Delete.
16439         * config/spu/spu.h (FRAME_POINTER_REQUIRED): Delete.
16440         * config/sh/sh.h (FRAME_POINTER_REQUIRED): Delete.
16441         * config/pdp11/pdp11.h (FRAME_POINTER_REQUIRED): Delete.
16442         * config/stormy16/stormy16.h (FRAME_POINTER_REQUIRED): Delete.
16443         * config/m68hc11/m68hc11.h (FRAME_POINTER_REQUIRED): Delete.
16444         * config/iq2000/iq2000.h (FRAME_POINTER_REQUIRED): Delete.
16445         * config/mn10300/mn10300.h (FRAME_POINTER_REQUIRED): Delete.
16446         * config/ia64/ia64.h (FRAME_POINTER_REQUIRED): Delete.
16447         * config/m68k/m68k.h (FRAME_POINTER_REQUIRED): Delete.
16448         * config/rs6000/rs6000.h (FRAME_POINTER_REQUIRED): Delete.
16449         * config/picochip/picochip.h (FRAME_POINTER_REQUIRED): Delete.
16450         * config/mcore/mcore.h (FRAME_POINTER_REQUIRED): Delete.
16451         * config/h8300/h8300.h (FRAME_POINTER_REQUIRED): Delete.
16452         * config/v850/v850.h (FRAME_POINTER_REQUIRED): Delete.
16453
16454 2009-05-02  Richard Guenther  <rguenther@suse.de>
16455
16456         PR tree-optimization/39940
16457         * tree-ssa-pre.c (eliminate): Make sure we may propagate before
16458         doing so.
16459
16460 2009-05-02  Richard Guenther  <rguenther@suse.de>
16461
16462         PR middle-end/40001
16463         * tree-ssa.c (execute_update_addresses_taken): Properly check
16464         if we can mark a variable DECL_GIMPLE_REG_P.
16465         * gimple.c (is_gimple_reg): Re-order check for DECL_GIMPLE_REG_P
16466         back to the end of the function.
16467         (is_gimple_reg_type): Remove complex type special casing.
16468         * gimplify.c (gimplify_bind_expr): Do not set DECL_GIMPLE_REG_P
16469         if not optimizing.
16470
16471 2009-05-02  Ben Elliston  <bje@au.ibm.com>
16472
16473         * doc/collect2.texi (Collect2): Document search path behaviour
16474         when configured with --with-ld.
16475
16476 2009-05-02  Jan Hubicka  <jh@suse.cz>
16477
16478         * tree-ssa-coalesce.c (coalesce_cost): Do not take ciritical
16479         parameter; update callers.
16480         (coalesce_cost_edge): EH edges are costier because they needs
16481         splitting even if not critical and even more costier when there are
16482         multiple EH predecestors.
16483
16484 2009-05-02  Jan Hubicka  <jh@suse.cz>
16485
16486         * except.c (remove_eh_handler_and_replace): Handle updating after
16487         removing TRY blocks.
16488
16489 2009-05-02  Eric Botcazou  <ebotcazou@adacore.com>
16490
16491         * store-motion.c (compute_store_table): Add ENABLE_CHECKING guard.
16492
16493 2009-05-02  Steven Bosscher  <steven@gcc.gnu.org>
16494
16495         * varasm.c: Do not include c-pragma.h.
16496         * attribs.c: Do not incude c-common.h.
16497
16498 2009-05-01  Michael Matz  <matz@suse.de>
16499
16500         * calls.c (initialize_argument_information): Handle SSA names like
16501         decls with a non MEM_P DECL_RTL.
16502
16503 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
16504
16505         * ipa-reference.c: Do not include c-common.h, include splay-tree.h.
16506         * ipa-utils.c: Likewise.
16507         * ipa-type-escape.c: Likewise.
16508         * cgraphunit.c Do not include c-common.h.
16509         * ipa-pure-const.c: Likewise.
16510         * tree-if-conv.c: Likewise.
16511         * matrix-reorg.c: Do not include c-common.h and c-tree.h.
16512         * ipa-struct-reorg.c: Likewise.
16513         * tree-nomudflap.c: Likewise.
16514         * tree-ssa-structalias.c: Likewise.
16515
16516 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
16517
16518         * store-motion.c: Many cleanups to make this pass a first-class
16519         citizen instead of an appendix to gcse load motion.  Add TODO list
16520         to make this pass faster/cleaner/better.
16521
16522         (struct ls_expr): Post gcse.c-split cleanups.
16523         Rename to st_expr.  Rename "loads" field to "antic_stores".  Rename
16524         "stores" field to "avail_stores".
16525         (pre_ldst_mems): Rename to store_motion_mems.
16526         (pre_ldst_table): Rename to store_motion_mems_table.
16527         (pre_ldst_expr_hash): Rename to pre_st_expr_hash, update users.
16528         (pre_ldst_expr_eq): Rename to pre_st_expr_eq, update users.
16529         (ldst_entry): Rename to st_expr_entry, update users.
16530         (free_ldst_entry): Rename to free_st_expr_entry, update users.
16531         (free_ldst_mems): Rename to free_store_motion_mems, update users.
16532         (enumerate_ldsts): Rename to enumerate_store_motion_mems,
16533         update caller.
16534         (first_ls_expr): Rename to first_st_expr, update users.
16535         (next_ls_expr): Rename to next_st_expr, update users.
16536         (print_ldst_list): Rename to print_store_motion_mems.  Print names of
16537         fields properly for store motion instead of names inherited from load
16538         motion in gcse.c.
16539         (ANTIC_STORE_LIST, AVAIL_STORE_LIST): Remove.
16540         (LAST_AVAIL_CHECK_FAILURE): Explain what this is.  Undefine when we
16541         are done with it.
16542
16543         (ae_kill): Rename to st_kill, update users.
16544         (ae_gen): Rename to st_avloc, update users.
16545         (transp): Rename to st_transp, update users.
16546         (pre_insert_map): Rename to st_insert_map, update users.
16547         (pre_delete_map): Rename to st_delete_map, update users.
16548         (insert_store, build_store_vectors, free_store_memory,
16549         one_store_motion_pass): Update for abovementioned changes.
16550
16551         (gcse_subst_count, gcse_create_count): Remove.
16552         (one_store_motion_pass): New statistics counters "n_stores_deleted"
16553         and "n_stores_created", local variables.
16554
16555         (extract_mentioned_regs, extract_mentioned_regs_1): Rewrite to
16556         use for_each_rtx.
16557
16558         (regvec, compute_store_table_current_insn): Remove.
16559         (reg_set_info, reg_clear_last_set): Remove.
16560         (compute_store_table): Use DF caches instead of local dataflow
16561         solvers.
16562
16563 2009-05-01  Joseph Myers  <joseph@codesourcery.com>
16564
16565         * c-objc-common.c (c_tree_printer): Print identifiers with
16566         pp_identifier, not pp_string.  Mark "({anonymous})" for
16567         translation.
16568         * c-pretty-print.c (pp_c_ws_string): New.
16569         (pp_c_cv_qualifier, pp_c_type_specifier,
16570         pp_c_specifier_qualifier_list, pp_c_parameter_type_list,
16571         pp_c_storage_class_specifier, pp_c_function_specifier,
16572         pp_c_attributes, pp_c_bool_constant, pp_c_constant,
16573         pp_c_primary_expression, pp_c_postfix_expression,
16574         pp_c_unary_expression, pp_c_shift_expression,
16575         pp_c_relational_expression, pp_c_equality_expression,
16576         pp_c_logical_and_expression, pp_c_logical_or_expression): Mostly
16577         use pp_string and pp_c_ws_string in place of pp_identifier and
16578         pp_c_identifier for non-identifiers.  Mark English strings for
16579         translation.
16580         * c-pretty-print.h (pp_c_ws_string): Declare.
16581
16582 2009-04-30  Paul Pluzhnikov  <ppluzhnikov@google.com>
16583             Roland McGrath <roland@redhat.com>
16584
16585         * configure.ac (HAVE_LD_BUILDID): New check for ld --build-id support.
16586         (ENABLE_LD_BUILDID): New configuration option.
16587         * gcc.c [HAVE_LD_BUILDID and ENABLE_LD_BUILDID]
16588         (LINK_BUILDID_SPEC): New macro.
16589         (init_spec): If defined, prepend it between LINK_EH_SPEC and
16590         link_spec.
16591         * doc/install.texi: Document --enable-linker-build-id option.
16592         * configure: Rebuild.
16593         * config.in: Rebuild.
16594
16595 2009-04-30  Adam Nemet  <anemet@caviumnetworks.com>
16596
16597         * config/mips/mips.h (FRAME_GROWS_DOWNWARD,
16598         MIPS_GP_SAVE_AREA_SIZE): Define new macros.
16599         (STARTING_FRAME_OFFSET): Return 0 if FRAME_GROWS_DOWNWARD.  Use
16600         MIPS_GP_SAVE_AREA_SIZE.
16601         * config/mips/mips.c (struct mips_frame_info): Update comment
16602         before arg_pointer_offset and hard_frame_pointer_offset.
16603         (mips_compute_frame_info): Update diagram before function: to
16604         correctly use stack_pointer_rtx for fp_sp_offset and gp_sp_offset, to
16605         indicate the position of frame_pointer_rtx with -fstack-protector and
16606         to show args_size.  Don't allocate cprestore area for leaf functions
16607         if FRAME_GROWS_DOWNWARD.  Use MIPS_GP_SAVE_AREA_SIZE to set
16608         cprestore_size.
16609         (mips_initial_elimination_offset): Update for FRAME_GROWS_DOWNWARD.
16610
16611 2009-04-30  Michael Matz  <matz@suse.de>
16612
16613         PR tree-optimization/39955
16614         * config/rs6000/rs6000.c (rs6000_check_sdmode): Also check SSA_NAMEs.
16615
16616 2009-04-30  Dave Korn  <dave.korn.cygwin@gmail.com>
16617
16618         * ira.c (setup_cover_and_important_classes):  Use safe macro
16619         REG_CLASS_FOR_CONSTRAINT instead of calling regclass_for_constraint
16620         directly.
16621         * genpreds.c (write_tm_preds_h):  Output suitable definition of
16622         REG_CLASS_FOR_CONSTRAINT.
16623
16624 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
16625
16626         * alloc-pool.c (alloc_pool_descriptor): Use an insert_opion value
16627         instead of an int.
16628         * bitmap.c (bitmap_descriptor): Likewise.
16629         * ggc-common.c (loc_descriptor): Likewise.
16630         * varray.c (varray_descriptor): Likewise.
16631         * vec.c (vec_descriptor): Likewise.
16632
16633 2009-04-30  Eric Botcazou  <ebotcazou@adacore.com>
16634
16635         * Makefile.in (dce.o): Add $(EXCEPT_H).
16636         * dce.c: Include except.h and delete redundant vector definitions.
16637         (deletable_insn_p): Return false for non-call insns that can throw
16638         if DF is running.
16639
16640 2009-04-30  Steven Bosscher  <steven@gcc.gnu.org>
16641
16642         * gcse.c (ae_gen): Remove.
16643         (can_assign_to_reg_p): Rename to can_assign_to_reg_without_clobbers_p
16644         and make non-static function to make it available in store-motion.c.
16645         Update call sites with search-and-replace.
16646         (enumerate_ldsts, reg_set_info, reg_clear_last_set, store_ops_ok,
16647         extract_mentioned_regs, extract_mentioned_regs_helper,
16648         find_moveable_store, compute_store_table, load_kills_store, find_loads,
16649         store_killed_in_insn, store_killed_after, store_killed_before,
16650         build_store_vectors, insert_insn_start_basic_block, insert-store,
16651         remove_reachable_equiv_notes, replace_store_insn, delete_store,
16652         free_store_memory, one_store_motion_pass, gate_rtl_store_motion,
16653         execute_rtl_store_motion, pass_rtl_store_motion): Move to...
16654         * store-motion.c: ...new file.  Also copy data structures from gcse.c
16655         and clean up to remove parts not used by store motion.
16656         * rtl.h (can_assign_to_reg_without_clobbers_p): Add prototype.
16657         * Makefile.in (store-motion.o): New rule. Add to OBJS-common.
16658
16659 2009-04-30  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
16660
16661         PR target/38571
16662         * config/arm/arm.h (FUNCTION_BOUNDARY): Set to 16 for thumb
16663         when optimizing for size.
16664
16665 2009-04-30  Hans-Peter Nilsson  <hp@axis.com>
16666
16667         * gcse.c (gcse_constant_p): Fix typo in last change.
16668
16669 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
16670
16671         * plugin.c: Include plugin-version.h only if ENABLE_PLUGIN is defined.
16672
16673 2009-04-30  Andreas Krebbel  <krebbel1@de.ibm.com>
16674
16675         * gcse.c (gcse_constant_p): Make sure the constant is sharable.
16676
16677 2009-04-29  James E. Wilson  <wilson@codesourcery.com>
16678
16679         * config/mips/mips.c (mips_add_offset): Use gen_int_mode for
16680         CONST_HIGH_PART result.
16681
16682 2009-04-29  Anatoly Sokolov  <aesok@post.ru>
16683
16684         * config/avr/avr.c (initial_elimination_offset): Rename to
16685         avr_initial_elimination_offset.
16686         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p,
16687         change return type to bool.
16688         (avr_can_eliminate): New function.
16689         * config/avr/avr.h (CAN_ELIMINATE): Use avr_can_eliminate.
16690         (FRAME_POINTER_REQUIRED): Use avr_frame_pointer_required_p.
16691         (INITIAL_ELIMINATION_OFFSET): Use avr_initial_elimination_offset.
16692         * config/avr/avr-protos.h (initial_elimination_offset): Rename to
16693         avr_initial_elimination_offset.
16694         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p.
16695         (avr_initial_elimination_offset): Define.
16696
16697 2009-04-29  Eric Botcazou  <ebotcazou@adacore.com>
16698             Steven Bosscher  <steven@gcc.gnu.org>
16699
16700         PR rtl-optimization/39938
16701         * Makefile.in (cfgrtl.o): Add $(INSN_ATTR_H).
16702         * cfgrtl.c: Include insn-attr.h.
16703         (rest_of_pass_free_cfg): New function.
16704         (pass_free_cfg): Use rest_of_pass_free_cfg as execute function.
16705         * resource.c (init_resource_info): Remove call to df_analyze.
16706
16707 2009-04-29  Richard Guenther  <rguenther@suse.de>
16708
16709         PR target/39943
16710         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Only
16711         allow conversion to signed integers.
16712
16713 2009-04-29  Richard Guenther  <rguenther@suse.de>
16714
16715         * tree-cfg.c (verify_gimple_assign_binary): Allow vector
16716         shifts of floating point vectors if the shift amount is
16717         a constant multiple of the element size.
16718
16719 2009-04-29  Andreas Krebbel  <krebbel1@de.ibm.com>
16720             Michael Matz  <matz@suse.de>
16721
16722         PR middle-end/39927
16723         PR bootstrap/39929
16724         * tree-outof-ssa.c (emit_partition_copy): New function.
16725         (insert_partition_copy_on_edge, insert_rtx_to_part_on_edge,
16726         insert_part_to_rtx_on_edge): Perform the partition base var
16727         copy using emit_partition_copy.
16728         (insert_value_copy_on_edge): Convert constants to the right mode.
16729         (insert_rtx_to_part_on_edge): Add UNSIGNEDSRCP parameter.
16730         (elim_create): Pass the sign of the src to insert_rtx_to_part_on_edge.
16731
16732 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
16733
16734         * config/bfin/bfin.c (bfin_optimize_loop): If we need a scratch reg,
16735         scan backwards to try to find a constant to initialize it.
16736
16737         * config/bfin/bfin.c (bfin_optimize_loop): When looking for the last
16738         insn before the loop_end instruction, don't look past labels.
16739
16740 2009-04-29  Richard Guenther  <rguenther@suse.de>
16741
16742         PR middle-end/39937
16743         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not
16744         loose type conversions.
16745         (forward_propagate_addr_expr): Fix tuplification bug.  Remove
16746         stmts only if there are no uses of its definition.
16747
16748 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
16749
16750         * config/bfin/bfin.h (splitting_loops): Declare.
16751         * config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315):
16752         Reorder bit definitions to be ascending.
16753         (WA_LOAD_LCREGS, ENABLE_WA_LOAD_LCREGS): New macros.
16754         * config/bfin/bfin.c (splitting_loops): New variable.
16755         (bfin_cpus): Add WA_LOAD_LCREGS as needed.
16756         (struct loop_info): Remove members INIT and LOOP_INIT.
16757         (bfin_optimize_loop): Don't set them.  Reorder the code that generates
16758         the LSETUP sequence.  Allow LC to be loaded from any register, but
16759         also add a case to push/pop a PREG scratch if ENABLE_WA_LOAD_LCREGS.
16760         (bfin_reorg_loops): When done, split all BB_ENDs with splitting_loops
16761         set to 1.
16762         * config/bfin/bfin.md (loop_end splitter): Use splitting_loops instead
16763         of reload_completed.
16764
16765         From Jie Zhang:
16766         * config/bfin/bfin.md (movsi_insn): Refine constraints.
16767
16768 2009-04-29  Rafael Avila de Espindola  <espindola@google.com>
16769
16770         * Makefile.in (PLUGIN_VERSION_H): New.
16771         (OBJS-common): Remove plugin-version.o.
16772         (plugin.o): Depend on (PLUGIN_VERSION_H).
16773         (plugin-version.o): Remove.
16774         * configure: Regenerate
16775         * configure.ac: Create plugin-version.h.
16776         * gcc-plugin.h (plugin_gcc_version): Remove.
16777         (plugin_default_version_check): Change signature.
16778         * plugin-version.c: Remove.
16779         * plugin.c: Include plugin-version.h.
16780         (str_plugin_gcc_version_name): Remove.
16781         (try_init_one_plugin): Pass gcc version to plugin_init.
16782         (plugin_default_version_check): Both gcc and plugin versions are now
16783         arguments.
16784
16785 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
16786
16787         * config/bfin/bfin.c (bfin_optimize_loop): Unify handling of
16788         problematic last insns.  Test for TYPE_CALL rather than CALL_P.
16789         Remove special case testing for last insn of inner loops. Don't fail
16790         if the loop ends with a jump, emit an extra nop instead.
16791
16792         * config/bfin/bfin.c (bfin_register_move_cost): Test for subsets of
16793         DREGS rather than comparing directly.  Remove code that tries to
16794         account for latencies.
16795
16796 2009-04-29  Richard Guenther  <rguenther@suse.de>
16797
16798         PR tree-optimization/39941
16799         * tree-ssa-pre.c (eliminate): Schedule update-ssa after
16800         eliminating an indirect call.
16801
16802 2009-04-29  Richard Guenther  <rguenther@suse.de>
16803
16804         * tree-cfg.c (verify_types_in_gimple_reference): Add require_lvalue
16805         parameter.  Allow invariants as base if !require_lvalue.
16806         (verify_gimple_assign_single): Adjust.
16807
16808 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
16809
16810         * config/bfin/bfin.md (sp_or_sm, spm_string, spm_name): New macro.
16811         (ss<spm_name>hi3, ss<spm_name>hi3_parts, ss<spm_name>hi3_low_parts,
16812         ss<spm_name_hi3_high_parts): New patterns, replacing ssaddhi3,
16813         ssubhi3, ssaddhi3_parts and sssubhi3_parts.
16814         (flag_mulhi3_parts): Produce a HImode output rather than trying to set
16815         a VEC_SELECT.
16816         * config/bfin/bfin.c (bfin_expand_builtin,
16817         case BFIN_BUILTIN_CPLX_SQU): Adjust accordingly.
16818
16819 2009-04-28  Richard Guenther  <rguenther@suse.de>
16820
16821         * tree-vect-loop.c (get_initial_def_for_induction): Use
16822         correct types for pointer increment.
16823
16824 2009-04-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16825
16826         * toplev.c (print_version): Update GMP version string calculation.
16827
16828 2009-04-28  Eric Botcazou  <ebotcazou@adacore.com>
16829
16830         PR rtl-optimization/39938
16831         * resource.c (init_resource_info): Add call to df_analyze.
16832
16833 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
16834
16835         * config/alpha/alpha.md (usegp): Cast the result of
16836         alpha_find_lo_sum_using_gp to enum attr_usegp.
16837         * config/alpha/alpha.c (override_options): Remove end-of-structure
16838         marker element from cpu_table.  Use array size of cpu_table to handle
16839         -mcpu and -mtune options.
16840         (tls_symbolic_operand_type): Change 0 to TLS_MODEL_NONE.
16841
16842 2009-04-28  Joseph Myers  <joseph@codesourcery.com>
16843
16844         * config.gcc (powerpc*-*-* | rs6000-*-*): Add
16845         rs6000/option-defaults.h to tm_file.  Support cpu_32, cpu_64,
16846         tune_32 and tune_64.
16847         * doc/install.texi (--with-cpu-32, --with-cpu-64): Document
16848         support on PowerPC.
16849         * config/rs6000/rs6000.h (OPTION_DEFAULT_SPECS): Move to ...
16850         * config/rs6000/option-defaults.h: ... here.  New file.
16851         (OPT_64, OPT_32): Define.
16852         (MASK_64BIT): Define to 0 if not already defined.
16853         (OPT_ARCH64, OPT_ARCH32): Define.
16854         (OPTION_DEFAULT_SPECS): Add entries for cpu_32, cpu_64, tune_32
16855         and tune_64.
16856
16857 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
16858
16859         * config/arm/arm.c (arm_override_options): Emit error on using
16860         fpa with AAPCS.
16861
16862 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
16863
16864         PR rtl-optimization/39914
16865         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
16866         registers for allocnos created from user-defined variables only
16867         when not optimizing.
16868
16869 2009-04-28  Richard Guenther  <rguenther@suse.de>
16870
16871         PR middle-end/39937
16872         * fold-const.c (fold_binary): Use distribute_real_division only
16873         on float types.
16874
16875 2009-04-28  Steve Ellcey  <sje@cup.hp.com>
16876
16877         * config.gcc (hppa*64*-*-hpux11*): Set use_gcc_stdint and
16878         add hpux-stdint.h to tm_file.
16879         (hppa[12]*-*-hpux11*): Ditto.
16880         (ia64*-*-hpux*): Ditto.
16881         * config/hpux-stdint.h: New.
16882         * config/ia64/hpux.h (TARGET_OS_CPP_BUILTINS): Set
16883         __STDC_EXT__ for all compiles.
16884         * config/pa/pa-hpux.h: Ditto.
16885         * config/pa/pa-hpux10.h: Ditto.
16886         * config/pa/pa-hpux11.h: Ditto.
16887
16888 2009-04-28  Catherine Moore  <clm@codesourcery.com>
16889
16890         * debug.h (set_name): Add comment.
16891
16892 2009-04-28  Andrew Pinski  <pinskia@gmail.com>
16893
16894         PR target/39929
16895         * config/darwin.c (machopic_gen_offset): Check
16896         currently_expanding_to_rtl if current_ir_type returns IR_GIMPLE.
16897         * config/arm/arm.c (require_pic_register): Likewise.
16898
16899 2009-04-28  Paolo Bonzini  <bonzini@gnu.org>
16900
16901         * config/m32c/m32c.c (TARGET_PROMOTE_FUNCTION_RETURN,
16902         m32c_promote_function_return, TARGET_PROMOTE_PROTOTYPES,
16903         m32c_promote_prototypes): Delete.
16904
16905 2009-04-28  Michael Matz  <matz@suse.de>
16906
16907         PR middle-end/39922
16908         * tree-outof-ssa.c (insert_value_copy_on_edge): Don't convert
16909         constants.
16910
16911 2009-04-28  Richard Guenther  <rguenther@suse.de>
16912
16913         * tree-vect-stmts.c (vect_get_vec_def_for_operand): Fix type error.
16914
16915 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
16916
16917         * config/arm/arm-cores.def: Add support for arm1156t2f-s.
16918         * doc/invoke.texi (ARM Options): Document support for arm1156t2f-s.
16919         * config/arm/arm-tune.md: Regenerate.
16920
16921 2009-04-28  Alexander Monakov  <amonakov@ispras.ru>
16922
16923         * sel-sched-ir.c (maybe_tidy_empty_bb): Do not attempt to delete a
16924         block if there are complex incoming edges.
16925         (sel_merge_blocks): Remove useless assert.
16926         (sel_redirect_edge_and_branch): Check that edge was redirected.
16927         * sel-sched-ir.h (_eligible_successor_edge_p): Remove assert.
16928         (sel_find_rgns): Delete declaration.
16929         * sel-sched.c (purge_empty_blocks): Attempt to remove first block of
16930         the region when it is not a preheader.
16931
16932 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
16933
16934         PR c/39323
16935         * config/alpha/elf.h (MAX_OFILE_ALIGNMENT): Sync with elfos.h
16936
16937 2009-04-28  Richard Guenther  <rguenther@suse.de>
16938
16939         * tree.h (SSA_NAME_VALUE): Remove.
16940         (struct tree_ssa_name): Remove value_handle member.
16941         * tree-vrp.c (execute_vrp): Initialize/free the value-handle
16942         array for jump threading.
16943         * tree-ssa-propagate.c (ssa_prop_init): Do not initialize
16944         SSA_NAME_VALUEs.
16945         * print-tree.c (print_node): Do not dump SSA_NAME_VALUEs.
16946         * tree-flow.h (threadedge_initialize_values): Declare.
16947         (threadedge_finalize_values): Likewise.
16948         * tree-ssa-threadedge.c (ssa_name_values): New global variable.
16949         (SSA_NAME_VALUE): Define.
16950         (threadedge_initialize_values): New function.
16951         (threadedge_finalize_values): Likewise.
16952         * tree-ssa-dom.c (ssa_name_values): New global variable.
16953         (SSA_NAME_VALUE): Define.
16954         (tree_ssa_dominator_optimize): Initialize/free the value-handle array.
16955
16956 2009-04-28  Ira Rosen  <irar@il.ibm.com>
16957
16958         * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks):
16959         Use REPORT_VECTORIZED_LOCATIONS instead
16960         REPORT_VECTORIZED_LOOPS.
16961         * tree-vectorizer.c (vect_verbosity_level): Make static.
16962         (vect_loop_location): Rename to vect_location.
16963         (vect_set_verbosity_level): Update comment.
16964         (vect_set_dump_settings): Use REPORT_VECTORIZED_LOCATIONS
16965         and vect_location.
16966         (vectorize_loops): Fix comment. Use REPORT_VECTORIZED_LOCATIONS
16967         and vect_location. Use REPORT_UNVECTORIZED_LOCATIONS
16968         instead REPORT_UNVECTORIZED_LOOPS.
16969         * tree-vectorizer.h (enum vect_def_type): Rename vect_invariant_def
16970         and vect_loop_def to vect_external_def and vect_internal_def.
16971         (enum verbosity_levels): Rename REPORT_VECTORIZED_LOOPS
16972         and REPORT_UNVECTORIZED_LOOPS to REPORT_VECTORIZED_LOCATIONS and
16973         REPORT_UNVECTORIZED_LOCATIONS.
16974         (enum vect_relevant): Update comment. Rename vect_unused_in_loop
16975         and vect_used_in_loop and to vect_unused_in_scope and
16976         vect_used_in_scope.
16977         (STMT_VINFO_RELEVANT_P): Use vect_unused_in_scope.
16978         (vect_verbosity_level): Remove declaration.
16979         (vect_analyze_operations): Likewise.
16980         (vect_analyze_stmt): Declare.
16981         * tree-vect-loop.c (vect_determine_vectorization_factor): Use
16982         REPORT_UNVECTORIZED_LOCATIONS.
16983         (vect_get_loop_niters): Fix indentation.
16984         (vect_analyze_loop_form): Use REPORT_UNVECTORIZED_LOCATIONS.
16985         (vect_analyze_loop_operations): New function.
16986         (vect_analyze_loop): Call vect_analyze_loop_operations instead of
16987         vect_analyze_operations.
16988         (vect_is_simple_reduction): Use new names.
16989         (vectorizable_live_operation, vect_transform_loop): Likewise.
16990         * tree-vect-data-refs.c (vect_check_interleaving): Add a return value
16991         to specify whether the data references can be a part of interleaving
16992         chain.
16993         (vect_analyze_data_ref_dependence): Use new names.
16994         (vect_analyze_data_refs_alignment, vect_analyze_data_refs): Likewise.
16995         (vect_create_addr_base_for_vector_ref): Remove redundant code.
16996         * tree-vect-patterns.c (widened_name_p): Use new names.
16997         (vect_recog_dot_prod_pattern): Likewise.
16998         * tree-vect-stmts.c (vect_stmt_relevant_p): Use new names.
16999         (process_use, vect_mark_stmts_to_be_vectorized,
17000         vect_model_simple_cost, vect_model_store_cost,
17001         vect_get_vec_def_for_operand, vect_get_vec_def_for_stmt_copy,
17002         vectorizable_call, vectorizable_conversion, vectorizable_assignment,
17003         vectorizable_operation, vectorizable_type_demotion,
17004         vectorizable_type_promotion, vectorizable_store, vectorizable_load,
17005         vectorizable_condition): Likewise.
17006         (vect_analyze_operations): Split into vect_analyze_loop_operations
17007         and ...
17008         (vect_analyze_stmt): ... new function.
17009         (new_stmt_vec_info): Use new names.
17010         (vect_is_simple_use): Use new names and fix comment.
17011         * tree-vect-slp.c (vect_get_and_check_slp_defs): Use new names.
17012         (vect_build_slp_tree, vect_analyze_slp, vect_schedule_slp): Likewise.
17013
17014 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
17015
17016         PR target/39911
17017         * config/i386/i386.c (print_operand) ['Z']: Handle floating point
17018         and integer modes for x87 operands.  Do not ICE for unsupported size,
17019         generate error instead.  Generate error for unsupported operand types.
17020         ['z']: Do not handle HImode memory operands specially.  Warning
17021         for floating-point operands.  Fallthru to 'Z' for unsupported operand
17022         types.  Do not ICE for unsupported size, generate error instead.
17023         (output_387_binary_op): Use %Z to output operands.
17024         (output_fp_compare): Ditto.
17025         (output_387_reg_move): Ditto.
17026
17027 2009-04-28  Ben Elliston  <bje@au.ibm.com>
17028
17029         PR c++/35652
17030         Revert:
17031
17032         2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
17033
17034         * builtins.c (c_strlen): Do not warn here.
17035         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
17036         * c-common.c (pointer_int_sum): Take an explicit location.
17037         Warn about offsets out of bounds.
17038         * c-common.h (pointer_int_sum): Adjust declaration.
17039
17040 2009-04-27  Ian Lance Taylor  <iant@google.com>
17041
17042         * collect2.c (is_ctor_dtor): Change type of ret field in struct
17043         names to symkind.
17044         * dce.c (run_fast_df_dce): Change type of old_flags to int.
17045         * df-core.c (df_set_flags): Change return type to int.  Change
17046         type of old_flags to int.
17047         (df_clear_flags): Likewise.
17048         * df-scan.c (df_def_record_1): Change 0 to VOIDmode.
17049         (df_get_conditional_uses): Likewise.
17050         * df.h (df_set_flags, df_clear_flags): Update declarations.
17051         * dwarf2out.c (struct indirect_string_node): Change type of form
17052         field to enum dwarf_form.
17053         (AT_string_form): Change return type to enum dwarf_form.
17054         * fixed-value.c (fixed_compare): Add cast to enum type.
17055         * fwprop.c (update_df): Change 0 to VOIDmode.
17056         * gensupport.c: Change 0 to UNKNOWN.
17057         * gimple.h (gimple_cond_code): Add cast to enum type.
17058         * haifa-sched.c (reemit_notes): Add cast to enum type.
17059         * hooks.c (hook_int_void_no_regs): Remove function.
17060         * hooks.h (hook_int_void_no_regs): Remove declaration.
17061         * optabs.c (expand_widen_pattern_expr): Change 0 to VOIDmode.
17062         * predict.c (combine_predictions_for_insn): Add casts to enum type.
17063         * real.c (real_arithmetic): Add cast to enum type.
17064         (real_compare): Likewise.
17065         * target.h (struct gcc_target): Change return type of
17066         branch_target_register_class to enum reg_class.
17067         * target-def.h (TARGET_BRANCH_TARGET_REGISTER_CLASS): Define as
17068         default_branch_target_register_class.
17069         * targhooks.c (default_branch_target_register_class): New function.
17070         * targhooks.h (default_branch_target_register_class): Declare.
17071         * tree-data-ref.c (print_direction_vector): Add cast to enum type.
17072         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Remove
17073         cast to int.
17074         * tree-vect-loop.c (vect_create_epilog_for_reduction): Change 0 to
17075         ERROR_MARK.
17076         * tree-vect-slp.c (vect_build_slp_tree): Change 0 to
17077         vect_uninitialized_def.  Change 0 to ERROR_MARK.
17078         * tree-vect-stmts.c (supportable_widening_operation): Don't
17079         initialize icode1 and icode2.
17080         * tree-vectorizer.h (enum vect_def_type): Add vect_uninitialized_def.
17081         * config/sol2-c.c (cmn_err_length_specs): Change 0 to FMT_LEN_none
17082         and to STD_C89.
17083         (cmn_err_flag_specs): Change 0 to STD_C89.
17084         (cmn_err_char_table): Likewise.
17085         * config/arm/arm.c (get_arm_condition_code): Change type of code
17086         to enum arm_cond_code.
17087         (IWMMXT_BUILTIN): Change 0 to UNKNOWN.
17088         (IWMMXT_BUILTIN2): Likewise.
17089         (neon_builtin_type_bits): Don't define typedef.
17090         (neon_builtin_datum): Change type of bits field to int.
17091         (arm_expand_neon_args): Add cast to enum type.
17092         * config/ia64/ia64.c (tls_symbolic_operand_type): Change 0 to
17093         TLS_MODEL_NONE.
17094         * config/i386/i386.c (bdesc_multi_arg): Change 0 to UNKNOWN.  Add
17095         casts to enum type.
17096         * config/mips/mips.c (LOONGSON_BUILTIN_ALIAS): Change 0 to
17097         MIPS_FP_COND_f.
17098         * config/mips/mips.md (jal_macro): Return enum constant.
17099         (single_insn): Likewise.
17100         * config/rs6000/rs6000.c (bdesc_altivec_preds): Change 0 to
17101         CODE_FOR_nothing.
17102         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
17103         casts to enum type.
17104         * config/s390/s390.c (s390_tune_flags): Change type to int.
17105         (s390_arch_flags): Likewise.
17106         (s390_handle_arch_option): Change flags field of struct pta to int.
17107         * config/s390/s390.h (s390_tune_flags): Update declaration.
17108         (s390_arch_flags): Likewise.
17109         * config/sh/sh.c (prepare_move_operands): Compare
17110         tls_symbolic_operand result with enum constant.
17111         (sh_reorg): Change PUT_MODE to PUT_REG_NOTE_KIND.
17112         (sh_expand_prologue): Add cast to enum type.
17113         (sh_expand_epilogue): Likewise.
17114         (tls_symbolic_operand): Change return type to enum tls_model.
17115         (fpscr_set_from_mem): Add cast to enum type.
17116         (legitimize_pic_address): Compare tls_symbolic_operand result with
17117         enum constant.
17118         (sh_target_reg_class): Change return type to enum reg_class.
17119         * config/sh/sh.h (OVERRIDE_OPTIONS): Change CPU_xxx to
17120         PROCESSOR_xxx.
17121         * config/sh/sh-protos.h (tls_symbolic_operand): Update declaration.
17122         * config/sparc/sparc.c (sparc_override_options): Add cast to enum type.
17123         * config/sparc/sparc.md (empty_delay_slot): Return enum constant.
17124         (pic, calls_alloca, calls_eh_return, leaf_function): Likewise.
17125         (delayed_branch, tls_call_delay): Likewise.
17126         (eligible_for_sibcall_delay): Likewise.
17127         (eligible_for_return_delay): Likewise.
17128         * config/spu/spu.c (expand_builtin_args): Add cast to enum type.
17129         (spu_expand_builtin_1): Likewise.
17130
17131         * c-typeck.c (convert_for_assignment): Issue -Wc++-compat warnings
17132         for all types of conversions.
17133         (output_init_element): Issue -Wc++-compat warning if needed when
17134         initializing a bitfield with enum type.
17135         * c-parser.c (c_parser_expression): Set original_type to
17136         original_type of right hand operand of comma operator.
17137
17138 2009-04-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
17139
17140         * doc/c-tree.texi (Types, Functions, Expression trees): Fix
17141         grammar nits.
17142         * doc/cfg.texi (Maintaining the CFG, Liveness information): Likewise.
17143         * doc/cpp.texi (Standard Predefined Macros)
17144         (Implementation-defined behavior): Likewise.
17145         * doc/extend.texi (Function Attributes, Type Attributes): Likewise.
17146         * doc/gimple.texi (GIMPLE Exception Handling)
17147         (@code{GIMPLE_ASSIGN}): Likewise.
17148         * doc/install.texi (Prerequisites, Configuration, Specific): Likewise.
17149         * doc/invoke.texi (Warning Options, Optimize Options)
17150         (AVR Options, Darwin Options): Likewise.
17151         (Optimize Options): Reformulate -fwhole-program description.
17152         * doc/loop.texi (Lambda): Likewise.
17153         * doc/md.texi (Output Template, Define Constraints)
17154         (Standard Names, Insn Splitting): Likewise.
17155         * doc/options.texi (Option properties): Likewise.
17156         * doc/passes.texi (Tree-SSA passes): Likewise.
17157         * doc/rtl.texi (Side Effects, Assembler, Insns): Likewise.
17158         * doc/tm.texi (Register Classes, Old Constraints, Scalar Return)
17159         (File Names and DBX): Likewise.
17160         * doc/trouble.texi (Incompatibilities): Likewise.
17161
17162 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
17163
17164         * spu.c (spu_machine_dependent_reorg): Make sure branch label on hint
17165         instruction is correct.
17166
17167 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
17168
17169         Allow non-constant arguments to conversion intrinsics.
17170         * spu-protos.h (exp2_immediate_p, spu_gen_exp2): Declare.
17171         * predicates.md (spu_inv_exp2_operand, spu_exp2_operand): New.
17172         * spu.c (print_operand): Handle 'v' and 'w'.
17173         (exp2_immediate_p, spu_gen_exp2): Define.
17174         * spu-builtins.def (spu_convts, spu_convtu, spu_convtf_0,
17175         spu_convtf_1): Update parameter descriptions.
17176         * spu-builtins.md (spu_csflt, spu_cuflt, spu_cflts, spu_cfltu): Update.
17177         * constraints.md ('v', 'w'): New.
17178         * spu.md (UNSPEC_CSFLT, UNSPEC_CFLTS, UNSPEC_CUFLT, UNSPEC_CFLTU):
17179         Remove.
17180         (i2f, I2F): New define_mode_attr.
17181         (floatsisf2, floatv4siv4sf2, fix_truncsfsi2, fix_truncv4sfv4si2,
17182         floatunssisf2, floatunsv4siv4sf2, fixuns_truncsfsi2,
17183         fixuns_truncv4sfv4si2):  Update to use mode attribute.
17184         (float<mode><i2f>2_mul, float<mode><i2f>2_div,
17185         fix_trunc<mode><f2i>2_mul, floatuns<mode><i2f>2_mul,
17186         floatuns<mode><i2f>2_div, fixuns_trunc<mode><f2i>2_mul): New
17187         patterns for combine.
17188
17189 2009-04-27  Steven Bosscher  <steven@gcc.gnu.org>
17190
17191         * dbgcnt.def (cprop1, cprop2, gcse, jump_bypass): Remove
17192         (cprop, hoist, pre, store_motion): New debug counters.
17193         * tree-pass.h (pass_tracer): Move to list of gimple passes, it
17194         is not an RTL pass anymore.
17195         (pass_profiling): Remove extern decl for pass removed in 2005.
17196         (pass_gcse, pass_jump_bypass): Remove.
17197         * final.c (rest_of_clean_state): Set flag_rerun_cse_after_global_opts
17198         to 0 for clean state.
17199         * toplev.h (flag_rerun_cse_after_global_opts): Add extern declaration.
17200         * cse.c (gate_handle_cse_after_global_opts,
17201         rest_of_handle_cse_after_global_opts): New functions.
17202         (pass_cse_after_global_opts): New pass, does local CSE.
17203         * timevar.def (TV_GCSE, TV_CPROP1, TV_CPROP2, TV_BYPASS): Remove.
17204         (TV_CPROP): New timevar.
17205         * gcse.c (flag_rerun_cse_after_global_opts): New global variable.
17206         (run_jump_opt_after_gcse, max_gcse_regno): Remove global vars.
17207         (gcse_main, recompute_all_luids): Remove.
17208         (compute_hash_table_work): Call max_reg_num instead of reading
17209         max_gcse_regno.
17210         (cprop_jump): Don't set run_jump_opt_after_gcse.
17211         (constprop_register): Always allow to alter jumps.
17212         (cprop_insn): Likewise.
17213         (do_local_cprop): Likewise.
17214         (local_cprop_pass): Likewise.  Return non-zero if something changed.
17215         (cprop): Remove function, fold interesting bits into one_cprop_pass.
17216         (find_implicit_sets): Add note about missed optimization opportunity.
17217         (one_cprop_pass): Rewrite to be "the" CPROP pass, called from the
17218         pass_rtl_cprop execute function.
17219         Don't bother tracking the pass number, each pass gets its own dumpfile
17220         now anyway.
17221         Always allow to alter jumpsand bypass jumps.
17222         (bypass_block): Don't ignore regno >= max_gcse_regno, find_bypass_set
17223         will just find no suitable set.
17224         (pre_edge_insert): Fix dumping, this function is for PRE only.
17225         (one_pre_gcse_pass): Rewrite to be "the" PRE pass, called from the
17226         pass_rtl_pre execute function.
17227         (hoist_code): Return non-zero if something changed.  Keep track of
17228         substitutions and insertions for statistics gathering similar to PRE.
17229         (one_code_hoisting_pass): Rewrite to be "the" code hoisting pass,
17230         called from the pass_rtl_hoist execute function.  Show pass statistics.
17231         (compute_store_table): Use max_reg_num directly instead of using the
17232         formerly global max_gcse_regno.
17233         (build_store_vectors): Likewise.
17234         (replace_store_insn): Fix dumping.
17235         (store_motion): Rename to ...
17236         (one_store_motion_pass): ... this.  Rewrite to be "the" STORE_MOTION
17237         pass, called from the pass_rtl_store_motion execute function.  Keep
17238         track of substitutions and insertions for statistics gathering similar
17239         to PRE.
17240         (bypass_jumps): Remove, fold interesting bits into ...
17241         (one_cprop_pass): ... this.  Rewrite to be "the" CPROP pass, called
17242         from the pass_rtl_cprop execute function.
17243         (gate_handle_jump_bypass, rest_of_handle_jump_bypass,
17244         pass_jump_bypass): Remove.
17245         (gate_handle_gcse, rest_of_handle_gcse): Remove.
17246         (gate_rtl_cprop, execute_rtl_cprop, pass_rtl_cprop): New.
17247         (gate_rtl_pre, execute_rtl_pre, pass_rtl_pre): New.
17248         (gate_rtl_hoist, execute_rtl_hoist, pass_rtl_hoist): New.
17249         (gate_rtl_store_motion, execute_rtl_store_motion,
17250         pass_rtl_store_motion): New.
17251         * common.opt: Remove flag_cse_skip_blocks, adjust documentation to
17252         make it clear that -fcse-skip-blocks is a no-op for backward compat.
17253         * passes.c (init_optimization_passes): Remove pass_gcse and
17254         pass_jump_bypass.  Schedule cprop, pre, hoist, cprop, store_motion,
17255         and cse_after_global_opts in place of pass_gcse.  Schedule cprop
17256         instead of pass_jump_bypass.
17257
17258 2009-04-27  Richard Guenther  <rguenther@suse.de>
17259
17260         PR middle-end/39928
17261         * gimplify.c (gimplify_expr): If we are required to create
17262         a temporary make sure it ends up as register.
17263
17264 2009-04-27  H.J. Lu  <hongjiu.lu@intel.com>
17265
17266         PR target/39903
17267         * config/i386/i386.c (construct_container): Don't call
17268         gen_reg_or_parallel with BLKmode on X86_64_SSE_CLASS,
17269         X86_64_SSESF_CLASS and X86_64_SSEDF_CLASS.
17270
17271 2009-04-27  Michael Matz  <matz@suse.de>
17272
17273         * ssaexpand.h (struct ssaexpand): Member 'values' is a bitmap.
17274         (get_gimple_for_ssa_name): Adjust, lookup using SSA_NAME_DEF_STMT.
17275         * tree-ssa-live.h: (find_replaceable_exprs): Return a bitmap.
17276         (dump_replaceable_exprs): Take a bitmap.
17277         * cfgexpand.c (gimple_cond_pred_to_tree): Handle bitmap instead of
17278         array.
17279         (expand_gimple_basic_block): Likewise.
17280         * tree-ssa-ter.c (struct temp_expr_table_d): Make
17281         replaceable_expressions member a bitmap.
17282         (free_temp_expr_table): Pass back and deal with bitmap, not gimple*.
17283         (mark_replaceable): Likewise.
17284         (find_replaceable_in_bb, dump_replaceable_exprs): Likewise.
17285         * tree-outof-ssa.c (remove_ssa_form): 'values' is a bitmap.
17286
17287 2009-04-27  Richard Guenther  <rguenther@suse.de>
17288
17289         * tree-cfg.c (remove_useless_stmts): Verify stmts afterwards.
17290         (verify_stmts): Dispatch to gimple/type verification code.
17291         * tree-inline.c (remap_gimple_op_r): Work around C++ FE
17292         issue with call argument types.
17293
17294 2009-04-27  Michael Matz  <matz@suse.de>
17295
17296         * tree-into-ssa.c (regs_to_rename, mem_syms_to_rename): Remove.
17297         (init_update_ssa, delete_update_ssa, update_ssa): Remove references
17298         to above.
17299
17300 2009-04-27  Richard Sandiford  <rdsandiford@googlemail.com>
17301             Eric Botcazou  <ebotcazou@adacore.com>
17302
17303         * resource.c (find_basic_block): Use BLOCK_FOR_INSN to look up
17304         a label's basic block.
17305         (mark_target_live_regs): Tidy and rework obsolete comments.
17306         Change back DF problem to LIVE.  If a label starts a basic block,
17307         assume that all registers that used to be live then still are.
17308         (init_resource_info): If a label starts a basic block, set its
17309         BLOCK_FOR_INSN accordingly.
17310         (fini_resource_info): Undo the setting of BLOCK_FOR_INSN.
17311
17312 2009-04-27  Richard Guenther  <rguenther@suse.de>
17313
17314         * tree-flow-inline.h (function_ann): Remove.
17315         (get_function_ann): Likewise.
17316         * tree-dfa.c (create_function_ann): Remove.
17317         * tree-flow.h (struct static_var_ann_d): Remove.
17318         (struct function_ann_d): Likewise.
17319         (union tree_ann_d): Remove fdecl member.
17320         (function_ann_t): Remove.
17321         (function_ann, get_function_ann, create_function_ann): Remove
17322         declarations.
17323
17324 2009-04-27  Uros Bizjak  <ubizjak@gmail.com>
17325
17326         * config/alpha/alpha.c (code_for_builtin): Declare as enum insn_code.
17327
17328 2009-04-27  Jan Hubicka  <jh@suse.cz>
17329
17330         * ipa-pure-const.c (struct funct_state_d): New fields
17331         state_previously_known, looping_previously_known; remove
17332         state_set_in_source.
17333         (analyze_function): Use new fields.
17334         (propagate): Avoid assumption that state_set_in_source imply
17335         nonlooping.
17336
17337         * tree-ssa-loop-niter.c (finite_loop_p): New function.
17338         * tree-ssa-loop-ivcanon.c (empty_loop_p): Use it.
17339         * cfgloop.h (finite_loop_p): Declare.
17340
17341 2009-04-26  Michael Matz  <matz@suse.de>
17342
17343         * tree-flow.h (tree_ann_common_d): Remove aux and value_handle members.
17344
17345 2009-04-26  Michael Matz  <matz@suse.de>
17346
17347         * tree-pass.h (pass_del_ssa, pass_mark_used_blocks,
17348         pass_free_cfg_annotations, pass_free_datastructures): Remove decls.
17349         * gimple-low.c (mark_blocks_with_used_vars, mark_used_blocks,
17350         pass_mark_used_blocks): Remove.
17351         * tree-optimize.c (pass_free_datastructures,
17352         execute_free_cfg_annotations, pass_free_cfg_annotations): Remove.
17353         * passes.c (init_optimization_passes): Don't call
17354         pass_mark_used_blocks, remove dead code.
17355
17356 2009-04-26  H.J. Lu  <hongjiu.lu@intel.com>
17357
17358         * tree-outof-ssa.c (rewrite_trees): Add ATTRIBUTE_UNUSED.
17359         * tree-ssa-live.h (register_ssa_partition): Likewise.
17360
17361 2009-04-26  Michael Matz  <matz@suse.de>
17362
17363         Expand from SSA.
17364         * builtins.c (fold_builtin_next_arg): Handle SSA names.
17365         * tree-ssa-copyrename.c (rename_ssa_copies): Use ssa_name() directly.
17366         * tree-ssa-coalesce.c (create_outofssa_var_map): Mark only useful
17367         SSA names.
17368         (compare_pairs): Swap cost comparison.
17369         (coalesce_ssa_name): Don't use change_partition_var.
17370         * tree-nrv.c (struct nrv_data): Add modified member.
17371         (finalize_nrv_r): Set it.
17372         (tree_nrv): Use it to update statements.
17373         (pass_nrv): Require PROP_ssa.
17374         * tree-mudflap.c (mf_decl_cache_locals,
17375         mf_build_check_statement_for): Use make_rename_temp.
17376         (pass_mudflap_2): Require PROP_ssa, run ssa update at finish.
17377         * alias.c (find_base_decl): Handle SSA names.
17378         * emit-rtl (set_reg_attrs_for_parm): Make non-static.
17379         (component_ref_for_mem_expr): Don't leak SSA names into RTL.
17380         * rtl.h (set_reg_attrs_for_parm): Declare.
17381         * tree-optimize.c (pass_cleanup_cfg_post_optimizing): Rename
17382         to "optimized", remove unused locals at finish.
17383         (execute_free_datastructures): Make global, call
17384         delete_tree_cfg_annotations.
17385         (execute_free_cfg_annotations): Don't call
17386         delete_tree_cfg_annotations.
17387
17388         * ssaexpand.h: New file.
17389         * expr.c (toplevel): Include ssaexpand.h.
17390         (expand_assignment): Handle SSA names the same as register variables.
17391         (expand_expr_real_1): Expand SSA names.
17392         * cfgexpand.c (toplevel): Include ssaexpand.h.
17393         (SA): New global variable.
17394         (gimple_cond_pred_to_tree): Fold TERed comparisons into predicates.
17395         (SSAVAR): New macro.
17396         (set_rtl): New helper function.
17397         (add_stack_var): Deal with SSA names, use set_rtl.
17398         (expand_one_stack_var_at): Likewise.
17399         (expand_one_stack_var): Deal with SSA names.
17400         (stack_var_size_cmp): Use code (SSA_NAME / DECL) as tie breaker
17401         before unique numbers.
17402         (expand_stack_vars): Use set_rtl.
17403         (expand_one_var): Accept SSA names, add asserts for them, feed them
17404         to above subroutines.
17405         (expand_used_vars): Expand all partitions (without default defs),
17406         then only the local decls (ignoring those expanded already).
17407         (expand_gimple_cond): Remove edges when jumpif() expands an
17408         unconditional jump.
17409         (expand_gimple_basic_block): Don't clear EDGE_EXECUTABLE here,
17410         or remove abnormal edges.  Ignore insns setting the LHS of a TERed
17411         SSA name.
17412         (gimple_expand_cfg): Call into rewrite_out_of_ssa, initialize
17413         members of SA; deal with PARM_DECL partitions here; expand
17414         all PHI nodes, free tree datastructures and SA.  Commit instructions
17415         on edges, clear EDGE_EXECUTABLE and remove abnormal edges here.
17416         (pass_expand): Require and destroy PROP_ssa, verify SSA form, flow
17417         info and statements at start, collect garbage at finish.
17418         * tree-ssa-live.h (struct _var_map): Remove partition_to_var member.
17419         (VAR_ANN_PARTITION) Remove.
17420         (change_partition_var): Don't declare.
17421         (partition_to_var): Always return SSA names.
17422         (var_to_partition): Only accept SSA names.
17423         (register_ssa_partition): Only check argument.
17424         * tree-ssa-live.c (init_var_map): Don't allocate partition_to_var
17425         member.
17426         (delete_var_map): Don't free it.
17427         (var_union): Only accept SSA names, simplify.
17428         (partition_view_init): Mark only useful SSA names as used.
17429         (partition_view_fini): Only deal with SSA names.
17430         (change_partition_var): Remove.
17431         (dump_var_map): Use ssa_name instead of partition_to_var member.
17432         * tree-ssa.c (delete_tree_ssa): Don't remove PHI nodes on RTL
17433         basic blocks.
17434         * tree-outof-ssa.c (toplevel): Include ssaexpand.h and expr.h.
17435         (struct _elim_graph): New member const_dests; nodes member vector of
17436         ints.
17437         (set_location_for_edge): New static helper.
17438         (create_temp): Remove.
17439         (insert_partition_copy_on_edge, insert_part_to_rtx_on_edge,
17440         insert_value_copy_on_edge, insert_rtx_to_part_on_edge): New functions.
17441         (new_elim_graph): Allocate const_dests member.
17442         (clean_elim_graph): Truncate const_dests member.
17443         (delete_elim_graph): Free const_dests member.
17444         (elim_graph_size): Adapt to new type of nodes member.
17445         (elim_graph_add_node): Likewise.
17446         (eliminate_name): Likewise.
17447         (eliminate_build): Don't take basic block argument, deal only with
17448         partition numbers, not variables.
17449         (get_temp_reg): New static helper.
17450         (elim_create): Use it, deal with RTL temporaries instead of trees.
17451         (eliminate_phi): Adjust all calls to new signature.
17452         (assign_vars, replace_use_variable, replace_def_variable): Remove.
17453         (rewrite_trees): Only do checking.
17454         (edge_leader, stmt_list, leader_has_match, leader_match): Remove.
17455         (same_stmt_list_p, identical_copies_p, identical_stmt_lists_p,
17456         init_analyze_edges_for_bb, fini_analyze_edges_for_bb,
17457         contains_tree_r, MAX_STMTS_IN_LATCH,
17458         process_single_block_loop_latch, analyze_edges_for_bb,
17459         perform_edge_inserts): Remove.
17460         (expand_phi_nodes): New global function.
17461         (remove_ssa_form): Take ssaexpand parameter.  Don't call removed
17462         functions, initialize new parameter, remember partitions having a
17463         default def.
17464         (finish_out_of_ssa): New global function.
17465         (rewrite_out_of_ssa): Make global.  Adjust call to remove_ssa_form,
17466         don't reset in_ssa_p here, don't disable TER when mudflap.
17467         (pass_del_ssa): Remove.
17468         * tree-flow.h (struct var_ann_d): Remove out_of_ssa_tag and
17469         partition members.
17470         (execute_free_datastructures): Declare.
17471         * Makefile.in (SSAEXPAND_H): New variable.
17472         (tree-outof-ssa.o, expr.o, cfgexpand.o): Depend on SSAEXPAND_H.
17473         * basic-block.h (commit_one_edge_insertion): Declare.
17474         * passes.c (init_optimization_passes): Move pass_nrv and
17475         pass_mudflap2 before pass_cleanup_cfg_post_optimizing, remove
17476         pass_del_ssa, pass_free_datastructures, pass_free_cfg_annotations.
17477         * cfgrtl.c (commit_one_edge_insertion): Make global, don't declare.
17478         (redirect_branch_edge): Deal with super block when expanding, split
17479         out jump patching itself into ...
17480         (patch_jump_insn): ... here, new static helper.
17481
17482 2009-04-26  Michael Matz  <matz@suse.de>
17483
17484         * tree-ssa-copyrename.c (rename_ssa_copies): Don't iterate
17485         beyond num_ssa_names.
17486         * tree-ssa-ter.c (free_temp_expr_table): Likewise.
17487         * tree-ssa-coalesce.c (create_outofssa_var_map): Likewise.
17488
17489 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
17490
17491         PR inline-asm/39543
17492         * fwprop.c (forward_propagate_asm): New function.
17493         (forward_propagate_and_simplify): Propagate also into __asm, if it
17494         doesn't increase the number of referenced registers.
17495
17496         PR c/39889
17497         * stmt.c (warn_if_unused_value): Look through NON_LVALUE_EXPR.
17498
17499 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
17500
17501         * tree-nested.c (get_nonlocal_vla_type): If not optimizing, call
17502         note_nonlocal_vla_type for nonlocal VLAs.
17503         (note_nonlocal_vla_type, note_nonlocal_block_vlas,
17504         contains_remapped_vars, remap_vla_decls): New functions.
17505         (convert_nonlocal_reference_stmt): If not optimizing, call
17506         note_nonlocal_block_vlas on GIMPLE_BIND block vars.
17507         (nesting_copy_decl): Return {VAR,PARM,RESULT}_DECL unmodified
17508         if it wasn't found in var_map.
17509         (finalize_nesting_tree_1): Call remap_vla_decls.  If outermost
17510         GIMPLE_BIND doesn't have gimple_bind_block, chain debug_var_chain
17511         to BLOCK_VARS (DECL_INITIAL (root->context)) instead of calling
17512         declare_vars.
17513         * gimplify.c (nonlocal_vlas): New variable.
17514         (gimplify_var_or_parm_decl): Add debug VAR_DECLs for non-local
17515         referenced VLAs.
17516         (gimplify_body): Create and destroy nonlocal_vlas.
17517
17518         * dwarf2out.c (loc_descr_plus_const): New function.
17519         (build_cfa_aligned_loc, tls_mem_loc_descriptor,
17520         mem_loc_descriptor, loc_descriptor_from_tree_1,
17521         descr_info_loc, gen_variable_die): Use it.
17522
17523         * tree.h (DECL_BY_REFERENCE): Note that it is also valid for
17524         !TREE_STATIC VAR_DECLs.
17525         * dwarf2out.c (loc_by_reference, gen_decl_die): Handle
17526         DECL_BY_REFERENCE on !TREE_STATIC VAR_DECLs.
17527         (gen_variable_die): Likewise.  Don't look at TREE_PRIVATE if
17528         DECL_BY_REFERENCE is valid.
17529         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Don't look at TREE_PRIVATE
17530         for PARM_DECLs, RESULT_DECLs or !TREE_STATIC VAR_DECLs.
17531         * tree-nested.c (get_nonlocal_debug_decl, get_local_debug_decl):
17532         Copy DECL_BY_REFERENCE.
17533         (struct nesting_copy_body_data): New type.
17534         (nesting_copy_decl): New function.
17535         (finalize_nesting_tree_1): Remap types of debug_var_chain variables,
17536         if they have variable length.
17537
17538 2009-04-26  Michael Matz  <matz@suse.de>
17539
17540         * tree-sra.c (sra_build_assignment): Don't use into_ssa mode,
17541         mark new temporaries for renaming.
17542
17543 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
17544
17545         PR c/39581
17546         * c-decl.c (global_bindings_p): Return negative value.
17547         (c_variable_size): New.  Based on variable_size from
17548         stor-layout.c.
17549         (grokdeclarator): Call c_variable_size not variable_size.
17550
17551 2009-04-26  Uros Bizjak  <ubizjak@gmail.com>
17552
17553         * config/i386/i386.c (print_operand) ['z']: Fix typo.
17554
17555 2009-04-26  Kai Tietz  <kai.tietz@onevision.com>
17556
17557         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR):
17558         Redefine it to just use mingw/include.
17559         (ASM_SPEC): Rules for -m32 and -m64.
17560         (LINK_SPEC): Use Likewise.
17561         (SPEC_32): New define.
17562         (SPEC_64): Likewise.
17563         (SUB_LINK_SPEC): Likewise.
17564         (MULTILIB_DEFAULTS): New define.
17565         * config/i386/t-mingw-w64 (MULTILIB_OPTIONS):
17566         Add multilib options.
17567         (MULTILIB_DIRNAMES): Likewise.
17568         (MULTILIB_OSDIRNAMES): Likewise.
17569         (LIBGCC): Likewise.
17570         (INSTALL_LIBGCC): Likewise.
17571
17572 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
17573
17574         PR c/39556
17575         * c-tree.h (enum c_inline_static_type): New.
17576         (record_inline_static): Declare.
17577         * c-decl.c (struct c_inline_static, c_inline_statics,
17578         record_inline_static, check_inline_statics): New.
17579         (pop_file_scope): Call check_inline_statics.
17580         (start_decl): Call record_inline_static instead of pedwarning
17581         directly for static in inline function.
17582         * c-typeck.c (build_external_ref): Call record_inline_static
17583         instead of pedwarning directly for static referenced in inline
17584         function.
17585
17586 2009-04-26  Steven Bosscher  <steven@gcc.gnu.org>
17587
17588         * df-scan.c (df_insn_rescan): Salvage insn's LUID if the insn is
17589         not new but only being rescanned.
17590         * gcse.c (uid_cuid, max_uid, INSN_CUID, max_cuid, struct reg_set,
17591         reg_set_table, REG_SET_TABLE_SLOP, reg_set_in_block,
17592         alloc_reg_set_mem, free_reg_set_mem, record_one_set,
17593         record_set_info, compute_set, grealloc): Remove.
17594         (recompute_all_luids): New function.
17595         (gcse_main): Don't compute sets, and don't do related memory
17596         allocations/free-ing.  If something changed before the end of the
17597         pass, update LUIDs using recompute_all_luids.
17598         (alloc_gcse_mem): Don't compute LUIDs.  Don't allocate reg_set memory.
17599         (free_gcse_mem): Don't free it either.
17600         (oprs_unchanged_p, load_killed_in_block, record_last_reg_set_info):
17601         Use the df insn LUIDs.
17602         (load_killed_in_block): Likewise.
17603         (compute_hash_table_work): Don't compute reg_set_in_block.
17604         (compute_transp): Use DF_REG_DEF_CHAINs.
17605         (local_cprop_pass): Don't use compute_sets and related functions.
17606         (one_cprop_pass, pre_gcse, one_pre_gcse_pass, one_code_hoisting_pass):
17607         Use get_max_uid() instead of max_cuid.
17608         (insert_insn_end_basic_block, pre_insert_copy_insn,
17609         update_ld_motion_stores): Don't try to
17610         keep reg_set tables up to date.
17611         (pre_insert_copies): Use df insn LUIDs.
17612         (sbitmap pre_redundant_insns): Replace with uses of INSN_DELETED_P.
17613         (reg_set_info): Don't use extra bitmap argument.
17614         (compute_store_table): Don't compute reg_set_in_block.  Use DF scan
17615         information to compute regs_set_in_block.
17616         (free_store_memory, store_motion): Don't nullify reg_set_in_block.
17617         (bypass_jumps): Don't use compute_sets and friends.
17618
17619 2009-04-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
17620
17621         PR testsuite/39710
17622         * opts.c (undocumented_msg): Do not leave blank even with
17623         ENABLE_CHECKING.
17624
17625 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
17626
17627         * c-decl.c (build_enumerator): Allow values folding to integer
17628         constants but not integer constant expressions with a pedwarn if
17629         pedantic.
17630
17631 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
17632
17633         PR c/39582
17634         * c-typeck.c (c_expr_sizeof_type): Create a C_MAYBE_CONST_EXPR
17635         with non-null C_MAYBE_CONST_EXPR_PRE if size of a variable-length
17636         type is an integer constant.
17637
17638 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
17639
17640         PR target/39897
17641         * config/i386/i386.c (print_operand) ['z']: Revert handling of
17642         HImode operands.
17643
17644 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
17645
17646         PR c/39564
17647         * c-decl.c (grokdeclarator): Diagnose declarations of functions
17648         with variably modified return type and no storage class
17649         specifiers, except for the case of nested functions.  Distinguish
17650         extern declarations of functions with variably modified return
17651         types from those of objects with variably modified types.
17652
17653 2009-04-25  Jan Hubicka  <jh@suse.cz>
17654
17655         * tree.c (list_equal_p): New function.
17656         * tree.h (list_equal_p): Declare.
17657         * coretypes.h (edge_def, edge, const_edge, basic_block_def
17658         basic_block_def, basic_block, const_basic_block): New.
17659         * tree-eh.c (make_eh_edge): EH edges are not abnormal.
17660         (redirect_eh_edge): New function.
17661         (make_eh_edge_update_phi): EH edges are not abnormal.
17662         * except.c: Include tree-flow.h.
17663         (list_match): New function.
17664         (eh_region_replaceable_by_p): New function.
17665         (replace_region): New function.
17666         (hash_type_list): New function.
17667         (hash_eh_region): New function.
17668         (eh_regions_equal_p): New function.
17669         (merge_peers): New function.
17670         (remove_unreachable_regions): Verify EH tree when checking;
17671         merge peers.
17672         (copy_eh_region_1): New function.
17673         (copy_eh_region): New function.
17674         (push_reachable_handler): New function.
17675         (build_post_landing_pads, dw2_build_landing_pads): Be ready for
17676         regions without label but with live RESX.
17677         * except.h (redirect_eh_edge_to_label): New.
17678         * tree-flow.h (redirect_eh_edge): New.
17679         * coretypes.h (edge_def, edge, const_edge, basic_block_def
17680         basic_block_def, basic_block, const_basic_block): Remove.
17681         * Makefile.in (except.o): Add dependency on tree-flow.h
17682         * tree-cfg.c (gimple_redirect_edge_and_branch): Handle EH edges.
17683         * basic-block.h (edge, const_edge, basic_block, const_basic_block):
17684         Remove.
17685
17686 2009-04-25  Eric Botcazou  <ebotcazou@adacore.com>
17687
17688         PR bootstrap/39645
17689         * config/sparc/sparc.c (sparc_gimplify_va_arg): Set TREE_ADDRESSABLE
17690         on the destination of memcpy.
17691
17692 2009-04-25  Paolo Bonzini  <bonzini@gnu.org>
17693
17694         * doc/tm.texi (REGNO_OK_FOR_BASE_P, REGNO_MODE_OK_FOR_BASE_P,
17695         REGNO_MODE_OK_FOR_REG_BASE_P, REGNO_MODE_CODE_OK_FOR_BASE_P,
17696         REGNO_OK_FOR_INDEX_P): Mention strict/nonstrict difference.
17697
17698 2009-04-25  Jan Hubicka  <jh@suse.cz>
17699
17700         * tree-eh.c (tree_remove_unreachable_handlers): Handle shared labels.
17701         (tree_empty_eh_handler_p): Allow non-EH predecestors; allow region
17702         to be reached by different label than left.
17703         (update_eh_edges): Update comment; remove edge_to_remove if possible
17704         and return true if suceeded.
17705         (cleanup_empty_eh): Accept sharing map; handle shared regions.
17706         (cleanup_eh): Compute sharing map.
17707         * except.c (remove_eh_handler_and_replace): Add argument if we should
17708         update regions.
17709         (remove_unreachable_regions): Update for label sharing.
17710         (label_to_region_map): Likewise.
17711         (get_next_region_sharing_label): New function.
17712         (remove_eh_handler_and_replace): Add update_catch_try parameter; update
17713         prev_try pointers.
17714         (remove_eh_handler): Update.
17715         (remove_eh_region_and_replace_by_outer_of): New function.
17716         * except.h (struct eh_region): Add next_region_sharing_label.
17717         (remove_eh_region_and_replace_by_outer_of,
17718         get_next_region_sharing_label): Declare.
17719         * tree-cfgcleanup.c (tree_forwarder_block_p): Simplify.
17720
17721 2009-04-25  Jan Hubicka  <jh@suse.cz>
17722
17723         * tree-cfg.c (split_critical_edges): Split also edges where we can't
17724         insert code even if they are not critical.
17725
17726 2009-04-25  Jan Hubicka  <jh@suse.cz>
17727
17728         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
17729         (gimple_can_remove_branch_p): EH edges won't remove branch by
17730         redirection.
17731         * tree-inline.c (update_ssa_across_abnormal_edges): Do handle
17732         updating of non-abnormal EH edges.
17733         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
17734         (gimple_can_remove_branch_p): EH edges are unremovable by redirection.
17735         (split_critical_edges): Split also edges where emitting code on them
17736         will lead to splitting later.
17737
17738 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
17739             H.J. Lu  <hongjiu.lu@intel.com>
17740
17741         PR target/39590
17742         * configure.ac (HAVE_AS_IX86_FILDQ): On x86 targets check whether
17743         the configured assembler supports fildq and fistpq mnemonics.
17744         (HAVE_AS_IX86_FILDS): Rename from HAVE_GAS_FILDS_FISTS.
17745         * configure: Regenerated.
17746         * config.in: Ditto.
17747
17748         * config/i386/i386.c (print_operand): Handle 'Z'.
17749         ['z']: Remove handling of special fild/fist suffixes.
17750         (output_fix_trunc): Use '%Z' to output suffix of fist{,p,tp} insn.
17751         * config/i386/i386.md (*floathi<mode>2_i387): Use '%Z' to output
17752         suffix of fild insn.
17753         (*floatsi<mode>2_vector_mixed): Ditto.
17754         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Ditto.
17755         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Ditto.
17756         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
17757         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387): Ditto.
17758         * config/i386/gas.h (GAS_MNEMONICS): Remove.
17759
17760 2009-04-25  Ben Elliston  <bje@au.ibm.com>
17761
17762         * genrecog.c (validate_pattern): Do not warn for VOIDmode CALLs as
17763         the source of a set operation.
17764
17765 2009-04-25  Anatoly Sokolov  <aesok@post.ru>
17766
17767         * target.h (struct gcc_target): Add case_values_threshold field.
17768         * target-def.h (TARGET_CASE_VALUES_THRESHOLD): New.
17769         (TARGET_INITIALIZER): Use TARGET_CASE_VALUES_THRESHOLD.
17770         * targhooks.c (default_case_values_threshold): New function.
17771         * targhooks.h (default_case_values_threshold): Declare function.
17772         * stmt.c (expand_case): Use case_values_threshold target hook.
17773         * expr.h (case_values_threshold): Remove declartation.
17774         * expr.c (case_values_threshold): Remove function.
17775         * doc/tm.texi (CASE_VALUES_THRESHOLD): Revise documentation.
17776
17777         * config/avr/avr.h (CASE_VALUES_THRESHOLD): Remove macro.
17778         * config/avr/avr.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
17779         (avr_case_values_threshold): Declare as static.
17780         * config/avr/avr-protos.h (avr_case_values_threshold): Remove.
17781
17782         * config/avr/mn10300.h (CASE_VALUES_THRESHOLD): Remove macro.
17783         * config/avr/mn10300.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
17784         (mn10300_case_values_threshold): New function.
17785
17786 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
17787
17788         * ira.c (setup_cover_and_important_classes): Add enum cast.
17789
17790 2009-04-24  Vladimir Makarov  <vmakarov@redhat.com>
17791
17792         * genpreds.c (write_enum_constraint_num): Output definition of
17793         CONSTRAINT_NUM_DEFINED_P macro.
17794         * ira.c (setup_cover_and_important_classes): Use
17795         CONSTRAINT_NUM_DEFINED_P instead of CONSTRAINT__LIMIT in #ifdef.
17796
17797 2009-04-24  DJ Delorie  <dj@redhat.com>
17798
17799         * config/sh/sh.h (LIBGCC2_DOUBLE_TYPE_SIZE): Test
17800         __SH2A_SINGLE_ONLY__ also.
17801
17802 2009-04-24  Steve Ellcey  <sje@cup.hp.com>
17803
17804         * config/ia64/ia64.md (movfs_internal): Allow flt constants.
17805         (movdf_internal): Ditto.
17806         * config/ia64/ia64.c (ia64_legitimate_constant_p): Allow
17807         SFmode and DFmode constants.
17808         (ia64_print_operand): Add 'G' format for printing
17809         floating point constants.
17810
17811 2009-04-24  Richard Guenther  <rguenther@suse.de>
17812
17813         * tree-vrp.c (extract_range_from_binary_expr): Handle overflow
17814         from unsigned additions.
17815
17816 2009-04-24  Joseph Myers  <joseph@codesourcery.com>
17817
17818         * c-typeck.c (set_init_index): Allow array designators that are
17819         not integer constant expressions with a pedwarn if pedantic.
17820
17821 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
17822
17823         * simplify-rtx.c (simplify_binary_operation_1, case AND): Result is
17824         zero if no overlap in nonzero bits between the operands.
17825
17826 2009-04-24  Ian Lance Taylor  <iant@google.com>
17827
17828         * combine.c (record_value_for_reg): Change 0 to VOIDmode, twice.
17829         (record_dead_and_set_regs): Likewise.
17830         * df.h (struct df_mw_hardreg): Change flags field to int.
17831         (struct df_base_ref): Likewise.
17832         (struct df): Change changeable_flags field to int.
17833         * df-scan.c (df_defs_record): Change clobber_flags to int.
17834         * dwarf2.h (enum dwarf_tag): Make lo_user and hi_user values enum
17835         constants rather than #define macros.
17836         (enum dwarf_attribute, enum dwarf_location_atom): Likewise.
17837         (enum dwarf_type, enum dwarf_endianity_encoding): Likewise.
17838         (enum dwarf_calling_convention): Likewise.
17839         (enum dwarf_line_number_x_ops): Likewise.
17840         (enum dwarf_call_frame_info): Likewise.
17841         (enum dwarf_source_language): Likewise.
17842         * dwarf2out.c (int_loc_descriptor): Add cast to enum type.
17843         (add_calling_convention_attribute): Likewise.
17844         * fold-const.c (fold_undefer_overflow_warnings): Add cast to enum type.
17845         (combine_comparisons): Change compcode to int.  Add cast to enum type.
17846         * genrecog.c (maybe_both_true_2): Change c to int.
17847         (write_switch): Likewise.  Add cast to enum type.
17848         * gimplify.c (gimplify_omp_for): Handle return values from
17849         gimplify_expr using MIN rather than bitwise or.
17850         (gimplify_expr): Add cast to enum type.
17851         * ipa-prop.c (update_jump_functions_after_inlining): Change
17852         IPA_BOTTOM to IPA_JF_UNKNOWN.
17853         * ira.c (setup_class_subset_and_memory_move_costs): Change mode to int.
17854         Add casts to enum type.
17855         (setup_cover_and_important_classes): Change cl to int.  Add casts
17856         to enum type.
17857         (setup_class_translate): Change cl and mode to int.
17858         (ira_init_once): Change mode to int.
17859         (free_register_move_costs): Likewise.
17860         (setup_prohibited_mode_move_regs): Add casts to enum type.
17861         * langhooks.c (add_builtin_function_common): Rework assertion that
17862         value fits bitfield.
17863         * mcf.c (add_fixup_edge): Change type parameter to edge_type.
17864         * omega.c (omega_do_elimination): Avoid math on enum types.
17865         * optabs.c (expand_vec_shift_expr): Remove casts to int.
17866         * opts.c (set_debug_level): Change 2 to enum constant.  Use new
17867         int local to handle integral_argment value.
17868         * regmove.c (try_auto_increment): Change PUT_MODE to
17869         PUT_REG_NOTE_KIND.
17870         * reload.c (push_secondary_reload): Add casts to enum type.
17871         (secondary_reload_class, find_valid_class): Likewise.
17872         * reload1.c (emit_input_reload_insns): Likewise.
17873         * rtl.h (NOTE_VAR_LOCATION_STATUS): Likewise.
17874         * sel-sched.c (init_hard_regs_data): Change cur_mode to int.
17875         * sel-sched-ir.c (hash_with_unspec_callback): Change 0 to enum
17876         constant.
17877         * tree.c (build_common_builtin_nodes): Add casts to enum type.
17878         * tree-complex.c (complex_lattice_t): Typedef to int rather than
17879         enum type.
17880         (expand_complex_libcall): Add casts to enum type.
17881         * tree-into-ssa.c (get_ssa_name_ann): Change 0 to enum constant.
17882         * tree-vect-loop.c (vect_model_reduction_cost): Compare reduc_code
17883         with ERROR_MARK, not NUM_TREE_CODES.
17884         (vect_create_epilog_for_reduction): Likewise.
17885         (vectorizable_reduction): Don't initialize epiloc_reduc_code.
17886         When not using it, set it to ERROR_MARK rather than NUM_TREE_CODES.
17887         * tree-vect-patterns.c (vect_pattern_recog_1): Change vec_mode to
17888         enum machine_mode.
17889         * tree-vect-stmts.c (new_stmt_vec_info): Change 0 to
17890         vect_unused_in_loop.  Change 0 to loop_vect.
17891         * tree-vectorizer.c (vect_set_verbosity_level): Add casts to enum type.
17892         * var-tracking.c (get_init_value): Change return type to enum
17893         var_init_status.
17894         * vec.h (DEF_VEC_FUNC_P) [iterate]: Cast 0 to type T.
17895         * config/arm/arm.c (fp_model_for_fpu): Change to array to enum
17896         arm_fp_model.
17897         (arm_override_options): Add casts to enum type.
17898         (arm_emit_tls_decoration): Likewise.
17899         * config/i386/i386.c (ix86_function_specific_restore): Add casts
17900         to enum type.
17901         * config/i386/i386-c.c (ix86_pragma_target_parse): Likewise.
17902         * config/ia64/ia64.c (ia64_expand_compare): Change magic to int.
17903         * config/rs6000/rs6000.c (rs6000_override_options): Add casts to
17904         enum type.
17905         * config/s390/s390.c (code_for_builtin_64): Change to array of
17906         enum insn_code.
17907         (code_for_builtin_31): Likewise.
17908         (s390_expand_builtin): Change code_for_builtin to enum insn_code
17909         const *.
17910         * config/sparc/sparc.c (sparc_override_options): Change value
17911         field in struct code_model to enum cmodel.  In initializer change
17912         0 to NULL and add cast to enum type.
17913
17914         * c-typeck.c (build_modify_expr): Add lhs_origtype parameter.
17915         Change all callers.  Issue a -Wc++-compat warning using
17916         lhs_origtype if necessary.
17917         (convert_for_assignment): Issue -Wc++-compat warnings about
17918         invalid conversions to enum type on assignment.
17919         * c-common.h (build_modify_expr): Update declaration.
17920
17921 2009-04-24  Nick Clifton  <nickc@redhat.com>
17922
17923         * config/iq2000/iq2000.c (function_arg): Handle TImode values.
17924         (function_arg_advance): Likewise.
17925         * config/iq2000/iq2000.md (movsi_internal2): Fix the length of the
17926         5th alternative.
17927
17928 2009-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
17929
17930         * config/s390/constraints.md ('I', 'J'): Fix condition.
17931
17932 2009-04-24  Diego Novillo  <dnovillo@google.com>
17933
17934         * gengtype-parse.c (parse_error): Add newline after message.
17935
17936 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
17937
17938         * config/i386/sse.md (avxmodesuffixs): Removed.
17939         (*avx_pinsr<avxmodesuffixs>): Renamed to ...
17940         (*avx_pinsr<ssevecsize>): This.
17941
17942 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
17943
17944         * loop-iv.c (replace_single_def_regs): Look for REG_EQUAL notes;
17945         follow chains of regs with a single definition, and allow expressions
17946         that are function_invariant_p.
17947         (simple_rhs_p): Allow expressions that are function_invariant_p.
17948
17949 2009-04-24  Paolo Bonzini  <bonzini@gnu.org>
17950
17951         PR middle-end/39867
17952         * fold-const.c (fold_cond_expr_with_comparison): When folding
17953         > and >= to MAX, make sure the MAX uses the same type as the
17954         comparison's operands.
17955
17956 2009-04-24  Nick Clifton  <nickc@redhat.com>
17957
17958         * config/frv/frv.c (frv_frame_access): Do not use reg+reg
17959         addressing for DImode accesses.
17960         (frv_print_operand_address): Handle PLUS case.
17961         * config/frv/frv.h (FIXED_REGISTERS): Mark link register as fixed.
17962
17963 2009-04-24  Jakub Jelinek  <jakub@redhat.com>
17964
17965         PR rtl-optimization/39794
17966         * alias.c (canon_true_dependence): Add x_addr argument.
17967         * rtl.h (canon_true_dependence): Adjust prototype.
17968         * cse.c (check_dependence): Adjust canon_true_dependence callers.
17969         * cselib.c (cselib_invalidate_mem): Likewise.
17970         * gcse.c (compute_transp): Likewise.
17971         * dse.c (scan_reads_nospill): Likewise.
17972         (record_store, check_mem_read_rtx): Likewise.  For non-const-or-frame
17973         addresses pass base->val_rtx as mem_addr, for const-or-frame addresses
17974         canon_base_addr of the group, plus optional offset.
17975         (struct group_info): Rename canon_base_mem to
17976         canon_base_addr.
17977         (get_group_info): Set canon_base_addr to canon_rtx of base, not
17978         canon_rtx of base_mem.
17979
17980 2009-04-23  Paolo Bonzini  <bonzini@gnu.org>
17981
17982         * config/sh/sh.c (sh_expand_prologue, sh_expand_epilogue):
17983         Use memory_address_p instead of GO_IF_LEGITIMATE_ADDRESS.
17984
17985 2009-04-23  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
17986
17987         * config/spu/spu-builtins.h: Delete file.
17988
17989         * config/spu/spu.h (enum spu_builtin_type): Move here from
17990         spu-builtins.h.
17991         (struct spu_builtin_description): Likewise.  Add GTY marker.
17992         Do not use enum spu_function_code or enum insn_code.
17993         (spu_builtins): Add extern declaration.
17994
17995         * config/spu/spu.c: Do not include "spu-builtins.h".
17996         (enum spu_function_code, enum spu_builtin_type_index,
17997         V16QI_type_node, V8HI_type_node, V4SI_type_node, V2DI_type_node,
17998         V4SF_type_node, V2DF_type_node, unsigned_V16QI_type_node,
17999         unsigned_V8HI_type_node, unsigned_V4SI_type_node,
18000         unsigned_V2DI_type_node): Move here from spu-builtins.h.
18001         (spu_builtin_types): Make static.  Add GTY marker.
18002         (spu_builtins): Add extern declaration with GTY marker.
18003         Include "gt-spu.h".
18004
18005         * config/spu/spu-c.c: Do not include "spu-builtins.h".
18006         (spu_resolve_overloaded_builtin): Do not use spu_function_code.
18007         Check programmatically whether all parameters are scalar.
18008
18009         * config/spu/t-spu-elf (spu.o, spu-c.o): Update dependencies.
18010
18011 2009-04-23  Eric Botcazou  <ebotcazou@adacore.com>
18012
18013         * gimplify.c (gimplify_modify_expr_rhs) <VAR_DECL>: Do not do a direct
18014         assignment from the constructor either if the target is volatile.
18015
18016 2009-04-23  Daniel Jacobowitz  <dan@codesourcery.com>
18017
18018         * config/arm/arm.md (insv): Do not share operands[0].
18019
18020 2009-04-23  Nathan Sidwell  <nathan@codesourcery.com>
18021
18022         * config/vxlib-tls.c (active_tls_threads): Delete.
18023         (delete_hook_installed): New.
18024         (tls_delete_hook): Don't delete the delete hook.
18025         (tls_destructor): Delete it here.
18026         (__gthread_set_specific): Adjust installing the delete hook.
18027         (tls_delete_hook): Use __gthread_enter_tsd_dtor_context and
18028         __gthread_leave_tsd_dtor_context.
18029
18030 2009-04-23  Rafael Avila de Espindola  <espindola@google.com>
18031
18032         * c-format.c (gcc_tdiag_char_table): Add support for %E.
18033
18034 2009-04-23  Uros Bizjak  <ubizjak@gmail.com>
18035
18036         * config/alpha/alpha.c (alpha_legitimize_reload_address): Add cast to
18037         enum type.
18038         (alpha_rtx_costs): Ditto.
18039         (emit_unlikely_jump): Use add_reg_note.
18040         (emit_frame_store_1): Ditto.
18041         (alpha_expand_prologue): Ditto.
18042         (alpha_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
18043         * config/alpha/alpha.c (Unicos/Mk address splitter): Use add_reg_note.
18044
18045 2009-04-23  Nick Clifton  <nickc@redhat.com>
18046
18047         * config/v850/v850.md (epilogue): Remove suppressed code.
18048         (return): Rename to return_simple and remove test of frame size.
18049         * config/v850/v850.c (expand_epilogue): Rename call to gen_return
18050         to gen_return_simple.
18051
18052 2009-04-22  Jing Yu  <jingyu@google.com>
18053
18054         PR testsuite/39781
18055         * config/arm/arm.h: Define HANDLE_PRAGMA_PACK_PUSH_POP.
18056
18057 2009-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18058
18059         PR C/31499
18060         * c-typeck.c (process_init_element): Treat VECTOR_TYPE like ARRAY_TYPE
18061         and RECORD_TYPE/UNION_TYPE.  When outputing the actual element and the
18062         value is a VECTOR_CST, the element type is the element type of the
18063         vector.
18064
18065 2009-04-22  DJ Delorie  <dj@redhat.com>
18066
18067         * config/m32c/m32c.h: Update GTY annotations to new syntax.
18068
18069 2009-04-22  Jakub Jelinek  <jakub@redhat.com>
18070
18071         * alias.c (find_base_term): Move around LO_SUM case, so that
18072         CONST falls through into PLUS/MINUS handling.
18073
18074         PR c/39855
18075         * fold-const.c (fold_binary) <case LSHIFT_EXPR>: When optimizing
18076         into 0, use omit_one_operand.
18077
18078 2009-04-23  Ben Elliston  <bje@au.ibm.com>
18079
18080         * config/rs6000/linux-unwind.h (get_regs): Remove type
18081         puns. Change the type of `pc' to an array of unsigned ints and
18082         update all users.  Constify frame24.
18083
18084 2009-04-22  DJ Delorie  <dj@redhat.com>
18085
18086         * config/m32c/m32c.c (m32c_special_page_vector_p): Move
18087         declarations before code.
18088         (current_function_special_page_vector): Likewise.
18089         (m32c_expand_insv): Silence a warning.
18090
18091 2009-04-21  Taras Glek  <tglek@mozilla.com>
18092
18093         * alias.c: Update GTY annotations to new syntax.
18094         * basic-block.h: Likewise.
18095         * bitmap.h: Likewise.
18096         * c-common.h: Likewise.
18097         * c-decl.c: Likewise.
18098         * c-parser.c: Likewise.
18099         * c-pragma.c: Likewise.
18100         * c-tree.h: Likewise.
18101         * cfgloop.h: Likewise.
18102         * cgraph.h: Likewise.
18103         * config/alpha/alpha.c: Likewise.
18104         * config/arm/arm.h: Likewise.
18105         * config/avr/avr.h: Likewise.
18106         * config/bfin/bfin.c: Likewise.
18107         * config/cris/cris.c: Likewise.
18108         * config/darwin.c: Likewise.
18109         * config/frv/frv.c: Likewise.
18110         * config/i386/i386.c: Likewise.
18111         * config/i386/i386.h: Likewise.
18112         * config/i386/winnt.c: Likewise.
18113         * config/ia64/ia64.h: Likewise.
18114         * config/iq2000/iq2000.c: Likewise.
18115         * config/mips/mips.c: Likewise.
18116         * config/mmix/mmix.h: Likewise.
18117         * config/pa/pa.c: Likewise.
18118         * config/pa/pa.h: Likewise.
18119         * config/rs6000/rs6000.c: Likewise.
18120         * config/s390/s390.c: Likewise.
18121         * config/sparc/sparc.c: Likewise.
18122         * config/xtensa/xtensa.c: Likewise.
18123         * cselib.h: Likewise.
18124         * dbxout.c: Likewise.
18125         * dwarf2out.c: Likewise.
18126         * except.c: Likewise.
18127         * except.h: Likewise.
18128         * fixed-value.h: Likewise.
18129         * function.c: Likewise.
18130         * function.h: Likewise.
18131         * gimple.h: Likewise.
18132         * integrate.c: Likewise.
18133         * optabs.c: Likewise.
18134         * output.h: Likewise.
18135         * real.h: Likewise.
18136         * rtl.h: Likewise.
18137         * stringpool.c: Likewise.
18138         * tree-data-ref.c: Likewise.
18139         * tree-flow.h: Likewise.
18140         * tree-scalar-evolution.c: Likewise.
18141         * tree-ssa-address.c: Likewise.
18142         * tree-ssa-alias.h: Likewise.
18143         * tree-ssa-operands.h: Likewise.
18144         * tree.c: Likewise.
18145         * tree.h: Likewise.
18146         * varasm.c: Likewise.
18147         * varray.h: Likewise.
18148         * vec.h: Likewise.
18149         * coretypes.h: Do not define GTY macro if it is already defined.
18150         * doc/gty.texi: Update GTY documentation to new syntax.
18151         * gengtype-lex.l: Enforce attribute-like syntax for GTY
18152         annotations on structs.
18153         * gengtype-parse.c: Likewise.
18154
18155 2009-04-22  Mark Heffernan  <meheff@google.com>
18156
18157         * gcc.c (LINK_COMMAND_SPEC): Link with gcov with -fprofile-generate=.
18158
18159 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
18160
18161         * config/arm/arm.c (arm_rtx_costs_1): Use power_of_two_operand
18162         where appropriate.
18163
18164 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
18165
18166         * config/arm/arm.c (arm_size_rtx_costs): Treat a PLUS with a shift
18167         the same as a PLUS without a shift.  Increase the cost of a
18168         CONST_INT in MULT.
18169
18170 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18171
18172         * Makefile.in: Update dependencies.
18173         * errors.c (warning): Remove unused parameter 'opt'. Returns 'void'.
18174         * errors.h: Remove bogus comment about compatibility.
18175         (warning): Update declaration.
18176         * genautomata.c: Update all calls to warning.
18177         * gimple.c: Do not include errors.h. Include toplev.h.
18178         * tree-ssa-structalias.c: Do not include errors.h.
18179         * omega.c: Likewise.
18180         * tree-ssa-reassoc.c: Likewise.
18181         * config/spu/spu-c.c: Likewise.
18182         * config/spu/t-spu-elf: Update dependencies.
18183
18184 2009-04-22  Richard Guenther  <rguenther@suse.de>
18185
18186         PR tree-optimization/39824
18187         * tree-ssa-ccp.c (fold_const_aggregate_ref): For INDIRECT_REFs
18188         make sure the types are compatible.
18189
18190 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18191
18192         PR c++/14875
18193         * c-common.c (c_parse_error): Take a token_flags parameter.
18194         Use token_type for the token type instead.
18195         Pass token_flags to cpp_type2name.
18196         * c-common.h (c_parse_error): Update declaration.
18197         * c-parser.c (c_parser_error): Pass 0 as token flags.
18198
18199 2009-04-22  Andrey Belevantsev  <abel@ispras.ru>
18200
18201         PR rtl-optimization/39580
18202         * sel-sched-ir.c (insert_in_history_vect): Remove incorrect gcc_assert.
18203
18204 2009-04-22  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
18205
18206         * function.c (expand_function_end): Do not emit a jump to the "naked"
18207         return label for fall-through returns.
18208         * except.c (sjlj_emit_function_exit): Always place the call to the
18209         unregister function at the location installed by expand_function_end.
18210
18211 2009-04-22  Richard Guenther  <rguenther@suse.de>
18212
18213         PR tree-optimization/39845
18214         * tree-switch-conversion.c (build_arrays): Add new referenced vars.
18215         (gen_inbound_check): Likewise.
18216
18217 2009-04-22  Nathan Sidwell  <nathan@codesourcery.com>
18218
18219         * gthr-vxworks.h (struct __gthread_once_t): Add alignment and
18220         padding for PPC.
18221         (__GTHREAD_ONCE_INIT): Adjust ppc initializer.
18222         * config/vxlib.c (__gthread_once): Add race guard for PPC.
18223
18224 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
18225
18226         * config/sh/sh.c (shift_insns_rtx, shiftcosts, gen_shifty_op,
18227         sh_dynamicalize_shift_p, shl_and_scr_length): Truncate
18228         shift counts to avoid out-of-bounds array accesses.
18229
18230 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
18231
18232         * config/sparc/sparc.h (POINTER_SIZE): Fix comment.
18233         (Pmode): Move above.
18234
18235 2009-04-22  Uros Bizjak  <ubizjak@gmail.com>
18236
18237         * config/alpha/alpha.c: Use REG_P, MEM_P, CONST_INT_P, JUMP_P,
18238         NONJUMP_INSN_P, CALL_P, LABEL_P and NOTE_P predicates instead of
18239         GET_CODE macro.  Use IN_RANGE macro where appropriate.
18240         * config/alpha/alpha.h: Ditto.
18241         * config/alpha/alpha.md: Ditto.
18242         * config/alpha/constraints.md: Ditto.
18243         * config/alpha/predicates.md: Ditto.
18244
18245 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
18246
18247         * defaults.h (GO_IF_MODE_DEPENDENT_ADDRESS): Provide empty default.
18248         * config/frv/frv.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18249         * config/s390/s390.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18250         * config/m32c/m32c.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18251         * config/spu/spu.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18252         * config/i386/i386.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18253         * config/sh/sh.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18254         * config/pdp11/pdp11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18255         * config/avr/avr.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18256         * config/crx/crx.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18257         * config/fr30/fr30.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18258         * config/m68hc11/m68hc11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18259         * config/cris/cris.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18260         * config/iq2000/iq2000.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18261         * config/mn10300/mn10300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18262         * config/ia64/ia64.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18263         * config/m68k/m68k.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18264         * config/picochip/picochip.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18265         * config/arc/arc.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18266         * config/mcore/mcore.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18267         * config/score/score.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18268         * config/arm/arm.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18269         * config/pa/pa.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18270         * config/mips/mips.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18271         * config/v850/v850.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18272         * config/mmix/mmix.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18273         * config/bfin/bfin.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18274
18275 2009-04-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
18276
18277         * cfghooks.c (tidy_fallthru_edges): Remove find_basic_blocks
18278         references from comments.
18279         * cfgbuild.c: (count_basic_blocks): Delete.
18280         (find_basic_blocks_1): Delete.
18281         (find_basic_blocks): Delete.
18282         * except.c (finish_eh_generation): Make static.  Move comment from
18283         except.h here.  Remove find_basic_blocks references from comments.
18284         * except.h (finish_eh_generation): Delete.
18285         * basic-block.h (find_basic_blocks): Delete.
18286         * config/sh/sh.c (sh_output_mi_thunk): Delete a "#if 0" block.
18287
18288 2009-04-22  Dave Korn  <dave.korn.cygwin@gmail.com>
18289
18290         * sdbout.c (sdbout_symbol):  Pass VOIDmode to eliminate_regs.
18291         (sdbout_parms):  Likewise.
18292
18293 2009-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
18294
18295         * config/sh/sh.c (prepare_cbranch_operands): Use
18296         LAST_AND_UNUSED_RTX_CODE instead of CODE_FOR_nothing.
18297         (expand_cbranchdi4): Likewise.
18298         (from_compare): Add cast to enum type.
18299         (expand_cbranchsi4): Use add_reg_note.
18300         (output_stack_adjust, push, pop, sh_expand_prologue): Likewise.
18301         (sh_insn_length_adjustment): Use sh_cpu_attr instead of sh_cpu.
18302         (sh_initialize_trampoline): Change 0 to LCT_NORMAL in function call.
18303         (sh_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
18304         * config/sh/sh.md (cbranchsi4): Use LAST_AND_UNUSED_RTX_CODE
18305         instead of CODE_FOR_nothing.
18306         (cbranchdi4): Likewise.  Fix the order of arguments for
18307         gen_rtx_fmt_ee.
18308         (push_fpscr): Use add_reg_note.
18309         (pop_fpscr, movdf_i4+1, reload_outdf__RnFRm+3, reload_outdf__RnFRm+4,
18310         reload_outdf__RnFRm+5, fpu_switch+1, fpu_switch+2): Likewise.
18311
18312 2009-04-21  Joseph Myers  <joseph@codesourcery.com>
18313
18314         * ABOUT-GCC-NLS, ChangeLog, ChangeLog-1997, ChangeLog-1998,
18315         ChangeLog-1999, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
18316         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
18317         ChangeLog-2007, ChangeLog-2008, ChangeLog.dataflow, ChangeLog.lib,
18318         ChangeLog.ptr, ChangeLog.tree-ssa, ChangeLog.tuples, FSFChangeLog,
18319         FSFChangeLog.10, FSFChangeLog.11, LANGUAGES, ONEWS, acinclude.m4,
18320         config/alpha/gnu.h, config/alpha/libgcc-alpha-ldbl.ver,
18321         config/alpha/t-osf4, config/alpha/t-vms, config/alpha/va_list.h,
18322         config/alpha/x-vms, config/arc/t-arc,
18323         config/arm/README-interworking, config/arm/arm-c.c,
18324         config/arm/gentune.sh, config/arm/libgcc-bpabi.ver,
18325         config/arm/t-arm, config/arm/t-arm-elf, config/arm/t-arm-softfp,
18326         config/arm/t-bpabi, config/arm/t-linux, config/arm/t-linux-eabi,
18327         config/arm/t-netbsd, config/arm/t-pe, config/arm/t-strongarm-elf,
18328         config/arm/t-symbian, config/arm/t-vxworks, config/arm/t-wince-pe,
18329         config/avr/t-avr, config/bfin/elf.h, config/bfin/libgcc-bfin.ver,
18330         config/bfin/linux.h, config/bfin/t-bfin, config/bfin/t-bfin-elf,
18331         config/bfin/t-bfin-linux, config/bfin/t-bfin-uclinux,
18332         config/bfin/uclinux.h, config/cris/mulsi3.asm, config/cris/t-cris,
18333         config/cris/t-elfmulti, config/crx/t-crx,
18334         config/darwin-ppc-ldouble-patch.def, config/darwin-sections.def,
18335         config/divmod.c, config/fr30/t-fr30, config/frv/libgcc-frv.ver,
18336         config/frv/t-frv, config/frv/t-linux, config/h8300/genmova.sh,
18337         config/h8300/t-h8300, config/i386/athlon.md,
18338         config/i386/darwin-libgcc.10.4.ver,
18339         config/i386/darwin-libgcc.10.5.ver, config/i386/libgcc-glibc.ver,
18340         config/i386/mach.h, config/i386/netbsd.h, config/i386/t-crtpc,
18341         config/i386/t-cygming, config/i386/t-cygwin, config/i386/t-i386,
18342         config/i386/t-linux64, config/i386/t-nwld,
18343         config/i386/t-rtems-i386, config/i386/t-sol2-10,
18344         config/i386/x-mingw32, config/ia64/div.md, config/ia64/elf.h,
18345         config/ia64/ia64.opt, config/ia64/libgcc-glibc.ver,
18346         config/ia64/libgcc-ia64.ver, config/ia64/linux.h,
18347         config/ia64/sysv4.h, config/ia64/t-hpux, config/ia64/t-ia64,
18348         config/iq2000/abi, config/iq2000/lib2extra-funcs.c,
18349         config/iq2000/t-iq2000, config/libgcc-glibc.ver,
18350         config/m32r/libgcc-glibc.ver, config/m32r/t-linux,
18351         config/m32r/t-m32r, config/m68hc11/t-m68hc11,
18352         config/m68k/t-floatlib, config/m68k/t-linux, config/m68k/t-mlibs,
18353         config/m68k/t-uclinux, config/mcore/t-mcore,
18354         config/mcore/t-mcore-pe, config/mips/20kc.md, config/mips/4130.md,
18355         config/mips/5400.md, config/mips/5500.md, config/mips/crti.asm,
18356         config/mips/crtn.asm, config/mips/irix-crti.asm,
18357         config/mips/irix-crtn.asm, config/mips/libgcc-mips16.ver,
18358         config/mips/mips-dsp.md, config/mips/mips-dspr2.md,
18359         config/mips/mips-fixed.md, config/mips/sb1.md,
18360         config/mips/sr71k.md, config/mips/t-elf, config/mips/t-gofast,
18361         config/mips/t-iris6, config/mips/t-isa3264,
18362         config/mips/t-libgcc-mips16, config/mips/t-linux64,
18363         config/mips/t-mips, config/mips/t-r3900, config/mips/t-rtems,
18364         config/mips/t-sb1, config/mips/t-sde, config/mips/t-sdemtk,
18365         config/mips/t-slibgcc-irix, config/mips/t-sr71k, config/mips/t-st,
18366         config/mips/t-vr, config/mips/t-vxworks, config/mmix/t-mmix,
18367         config/mn10300/t-linux, config/mn10300/t-mn10300,
18368         config/pa/pa32-regs.h, config/pa/t-hpux-shlib, config/pa/t-linux,
18369         config/pa/t-linux64, config/pa/t-pa64, config/pdp11/t-pdp11,
18370         config/picochip/libgccExtras/clzsi2.asm,
18371         config/picochip/t-picochip, config/rs6000/darwin-ldouble-format,
18372         config/rs6000/darwin-libgcc.10.4.ver,
18373         config/rs6000/darwin-libgcc.10.5.ver,
18374         config/rs6000/libgcc-ppc-glibc.ver, config/rs6000/ppc-asm.h,
18375         config/rs6000/t-aix43, config/rs6000/t-aix52,
18376         config/rs6000/t-darwin, config/rs6000/t-fprules,
18377         config/rs6000/t-fprules-fpbit, config/rs6000/t-linux64,
18378         config/rs6000/t-lynx, config/rs6000/t-netbsd,
18379         config/rs6000/t-ppccomm, config/rs6000/t-ppcendian,
18380         config/rs6000/t-ppcgas, config/rs6000/t-rs6000,
18381         config/rs6000/t-rtems, config/rs6000/t-spe,
18382         config/rs6000/t-vxworks, config/s390/libgcc-glibc.ver,
18383         config/score/t-score-elf, config/sh/divcost-analysis,
18384         config/sh/libgcc-glibc.ver, config/sh/t-netbsd, config/sh/t-sh,
18385         config/sh/t-sh64, config/sh/t-superh, config/sh/t-symbian,
18386         config/sparc/libgcc-sparc-glibc.ver, config/sparc/sol2-bi.h,
18387         config/sparc/sol2-gas.h, config/sparc/sol2-gld-bi.h,
18388         config/sparc/t-elf, config/sparc/t-linux64, config/sparc/t-sol2,
18389         config/stormy16/stormy-abi, config/stormy16/t-stormy16,
18390         config/t-darwin, config/t-libunwind, config/t-libunwind-elf,
18391         config/t-linux, config/t-lynx, config/t-slibgcc-elf-ver,
18392         config/t-slibgcc-sld, config/t-sol2, config/t-vxworks,
18393         config/udivmod.c, config/udivmodsi4.c, config/v850/t-v850,
18394         config/v850/t-v850e, config/xtensa/t-xtensa, diagnostic.def,
18395         gdbinit.in, glimits.h, gstab.h, gsyms.h, java/ChangeLog,
18396         java/ChangeLog.ptr, java/ChangeLog.tree-ssa, libgcc-std.ver,
18397         limitx.h, version.c, xcoff.h: Add copyright and license notices.
18398         * config/h8300/genmova.sh: Include copyright and license notices
18399         in generated output.
18400         * config/h8300/mova.md: Regenerate.
18401         * doc/install.texi2html: Include word "Copyright" in copyright
18402         notice and use name "Free Software Foundation, Inc.".
18403         * ChangeLog, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
18404         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
18405         ChangeLog-2007, ChangeLog-2008: Correct dates.
18406
18407 2009-04-21  Eric Botcazou  <ebotcazou@adacore.com>
18408
18409         * c-common.c (c_common_truthvalue_conversion): Use LOCATION to build
18410         NE_EXPR operations as well.
18411         * c-parser.c (c_parser_condition): Do not set location information on
18412         the condition.
18413         (c_parser_conditional_expression): Likewise.
18414         (c_parser_binary_expression): Set location information on operators.
18415         * c-typeck.c (build_unary_op) <TRUTH_NOT_EXPR>: Reset the location if
18416         TRUTH_NOT_EXPR has been folded.
18417         * fold-const.c (fold_truth_not_expr): Copy location information from
18418         the incoming expression to the outgoing one.
18419         * gimplify.c (shortcut_cond_r): Add locus parameter.  Pass it to
18420         recursive calls on the LHS of the operator but pass that of the
18421         operator to recursive calls on the RHS of the operator.  Set it
18422         on the COND_EXPR.
18423         (shortcut_cond_expr): Set the locus of the operator on the second
18424         COND_EXPR and that of the expression on the first in degenerate cases.
18425         Pass the locus of the expression to calls to shortcut_cond_r.
18426         Set the locus of the 'then' block on the associated jump, if any.
18427         (gimplify_boolean_expr): Add locus parameter.  Set it on the COND_EXPR.
18428         (gimplify_expr) <TRUTH_ANDIF_EXPR>: Pass the locus of the outer
18429         expression to call to gimplify_boolean_expr.
18430
18431 2009-04-21  Kai Tietz  <kai.tietz@onevision.com>
18432
18433         * config.gcc: Add additional configuration for
18434         i686-w64-mingw* and x86_64-w64-mingw* triplet.
18435         * config/i386/mingw-w64.h: New mingw-w64 specific header.
18436         (CPP_SPEC): Redefine for allowing -municode option.
18437         (STARTFILE_SPEC): Likewise.
18438         * config/i386/t-mingw-w64: New.
18439         * config/i386/mingw-w64.opt: New.
18440         (municode): Add new target option.
18441         * doc/invoke.texi (municode): Add documentation for new option.
18442
18443 2009-04-21  Ian Lance Taylor  <iant@google.com>
18444
18445         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
18446         Correct test for number of arguments.
18447         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Likewise.
18448
18449 2009-04-21  Andreas Schwab  <schwab@linux-m68k.org>
18450
18451         * config/m68k/linux.h (FINALIZE_TRAMPOLINE): Use enum for second
18452         argument of emit_library_call.
18453
18454 2009-04-21  Richard Guenther  <rguenther@suse.de>
18455
18456         PR middle-end/39829
18457         * gimple.c (walk_stmt_load_store_addr_ops): Catch addresses
18458         inside VIEW_CONVERT_EXPRs.
18459
18460 2009-04-21  Martin Jambor  <mjambor@suse.cz>
18461
18462         * tree-switch-conversion.c (build_constructors): Split a long line.
18463         (constructor_contains_same_values_p): New function.
18464         (build_one_array): Create assigns of constants if possible, do not
18465         call mark_sym_for_renaming, call update_stmt.
18466         (build_arrays): Call make_ssa_name (create_tmp_var ()) instead of
18467         make_rename_temp.  Do not call mark_symbols_for_renaming, call
18468         update_stmt.
18469         (gen_def_assigns): Do not call mark_symbols_for_renaming or
18470         find_new_referenced_vars, call update_stmt.
18471         (gen_inbound_check): Use create_tmp_var and create ssa names manually
18472         instead of calling make_rename_temp.  Do not call
18473         find_new_referenced_vars or mark_symbols_for_renaming, call
18474         update_stmt.
18475
18476 2009-04-21  Richard Guenther  <rguenther@suse.de>
18477
18478         PR tree-optimization/39827
18479         * tree-ssa-phiprop.c (propagate_with_phi): Check SSA_NAME is in range.
18480         (tree_ssa_phiprop): Pass the correct array size.
18481
18482 2009-04-21  Uros Bizjak  <ubizjak@gmail.com>
18483
18484         * config/alpha/alpha.md (tune): Add cast to enum attr_tune.
18485
18486 2009-04-21  Manuel López-Ibáñez  <manu@gcc.gnu.org>
18487
18488         PR 16202
18489         * c-typeck.c (lvalue_p): Move declaration ...
18490         * c-common.h (lvalue_p): ... to here.
18491         * c-common.c (candidate_equal_p): New.
18492         (add_tlist): Use it.
18493         (merge_tlist): Use it.
18494         (warn_for_collisions_1): Likewise.
18495         (warning_candidate_p): Accept more candidates.
18496         (verify_tree): A warning candidate can be an expression. Use
18497         candidate_equal_p.
18498
18499 2009-04-21  Ben Elliston  <bje@au.ibm.com>
18500
18501         PR target/5267
18502         * doc/invoke.texi (RS/6000 and PowerPC Options): Add documentation
18503         for -mcall-eabi, -mcall-aixdesc, -mcall-freebsd and -mcall-openbsd
18504         options.  Remove -mcall-solaris documentation.
18505
18506 2009-04-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18507
18508         PR c++/13358
18509         * doc/invoke.texi (-Wlong-long): Update description.
18510         * c-lex (interpret_integer): Only warn if there was no previous
18511         overflow and -Wlong-long is enabled.
18512         * c-decl.c (declspecs_add_type): Drop redundant flags.
18513         * c.opt (Wlong-long): Init to -1.
18514         * c-opts.c (sanitize_cpp_opts): Synchronize cpp's warn_long_long
18515         and front-end warn_long_long. Wlong-long only depends on other
18516         flags if it is uninitialized.
18517         * c-parser.c (disable_extension_diagnostics): warn_long_long is
18518         the same for CPP and FE.
18519         (restore_extension_diagnostics): Likewise.
18520
18521 2009-04-20  Ian Lance Taylor  <iant@google.com>
18522
18523         Fix enum conversions which are invalid in C++:
18524         * auto-inc-dec.c (attempt_change): Change 0 to SET in function call.
18525         * calls.c (store_one_arg): Change 0 to EXPAND_NORMAL in function call.
18526         * cse.c (hash_rtx_cb): Change 0 to VOIDmode in function call.
18527         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add cast to enum type.
18528         * dbxout.c (dbxout_symbol): Change 0 to VOIDmode in function call.
18529         (dbxout_parms): Likewise.
18530         * df-core.c (df_set_flags): Change changeable_flags parameter to int.
18531         (df_clear_flags): Likewise.
18532         * df-problems.c (df_rd_bb_local_compute_process_def): Change
18533         top_flag parameter to int.
18534         (df_chain_create_bb_process_use): Likewise.
18535         (df_chain_add_problem): Change chain_flags parameter to unsigned int.
18536         Remove cast.
18537         * df-scan.c (df_ref_create): Change ref_flags parameter to int.
18538         (df_ref_create_structure, df_def_record_1): Likewise.
18539         (df_defs_record, df_uses_record, df_get_call_refs): Likewise.
18540         (df_notes_rescan): Change 0 to VOIDmode in function call.
18541         (df_get_call_refs, df_insn_refs_collect): Likewise.
18542         (df_bb_regs_collect): Likewise.
18543         (df_entry_block_defs_collect): Likewise.
18544         (df_exit_block_uses_collect): Likewise.
18545         * df.h: Update declarations.
18546         * double-int.c (double_int_divmod): Add cast to enum type.
18547         * dse.c (replace_inc_dec): Reverse parameters to gen_int_mode.
18548         * dwarf2out.c (new_reg_loc_descr): Add casts to enum type.
18549         (based_loc_descr): Likewise.
18550         (loc_descriptor_from_tree_1): Change first_op and second_op to
18551         enum dwarf_location_atom.  Add cast to enum type.
18552         * expmed.c (init_expmed): Change 0 to SET in function call.
18553         * expr.c (init_expr_target): Change 0 to VOIDmode in function call.
18554         (expand_expr_real_1): Change 0 to EXPAND_NORMAL in function call.
18555         (do_store_flag): Likewise.
18556         * fixed-value.h (struct fixed_value): Change mode to enum
18557         machine_mode.
18558         * function.c (assign_parms): Change 0 to VOIDmode in function call.
18559         * genautomata.c (insert_automaton_decl): Change 1 to INSERT in
18560         function call.
18561         (insert_insn_decl, insert_decl, insert_state): Likewise.
18562         (automata_list_finish): Likewise.
18563         * genrecog.c (process_define_predicate): Add cast to enum type.
18564         * gensupport.c (init_predicate_table): Add cast to enum type.
18565         * gimple.c (gimple_build_return): Change 0 to ERROR_MARK in
18566         function call.
18567         (gimple_build_call_1, gimple_build_label): Likewise.
18568         (gimple_build_goto, gimple_build_asm_1): Likewise.
18569         (gimple_build_switch_1, gimple_build_cdt): Likewise.
18570         * gimple.h (GIMPLE_CHECK): Change 0 to ERROR_MARK in function call.
18571         (enum fallback): Rename from enum fallback_t.
18572         (fallback_t): Typedef as int.
18573         * gimple-low.c (lower_builtin_setjmp): Change TSI_SAME_STMT to
18574         GSI_SAME_STMT in function call.
18575         * ira.c (setup_class_subset_and_memory_move_costs): Add casts to
18576         enum type.
18577         (setup_reg_class_relations): Likewise.
18578         (setup_reg_class_nregs): Change cl to int.  Add casts to enum type.
18579         (setup_prohibited_class_mode_regs): Add cast to enum type.
18580         (setup_prohibited_mode_move_regs): Likewise.
18581         * ira-costs.c (record_reg_classes): Change rclass to enum reg_class.
18582         (record_address_regs): Change i to enum reg_class.
18583         * lists.c (alloc_EXPR_LIST): Add cast to enum type.
18584         * machmode.h (GET_MODE_CLASS): Cast value to enum mode_class.
18585         (GET_MODE_WIDER_MODE): Cast value to enum machine_mode.
18586         (GET_MODE_2XWIDER_MODE): Likewise.
18587         (GET_CLASS_NARROWEST_MODE): Likewise.
18588         * omp-low.c (expand_omp_for): Add cast to enum type.
18589         * optabs.c (debug_optab_libfuncs): Add casts to enum type.
18590         * opts.c (enable_warning_as_error): Change kind to diagostic_t.
18591         * postreload.c (reload_cse_simplify_operands): Change rclass local
18592         to enum reg_class.
18593         * predict.c (combine_predictions_for_insn): Change best_predictor
18594         and predictor to enum br_predictor.
18595         (combine_predictions_for_bb): Likewise.
18596         (build_predict_expr): Change assignment to PREDICT_EXPR_OUTCOME to
18597         use SET_PREDICT_EXPR_OUTCOME.
18598         * real.c (real_arithmetic): Change icode to code in function call.
18599         * reginfo.c (init_move_cost): Add casts to enum type.
18600         (init_reg_sets_1, init_fake_stack_mems): Likewise.
18601         * regmove.c (regclass_compatible_p): Change class0 and class1 to
18602         enum reg_class.
18603         * reload.c (find_valid_class): Add casts to enum type.
18604         (push_reload): Change 0 to NO_REGS in function call.
18605         (find_reloads): Change this_alternative to array of enum
18606         reg_class.  Remove some now-unnecessary casts.
18607         (make_memloc): Change 0 to VOIDmode in function call.
18608         * reload1.c (reload): Change 0 to VOIDmode in function call.
18609         (eliminate_regs_1, elimination_effects): Likewise.
18610         (eliminate_regs_in_insn): Likewise.
18611         (emit_input_reload_insns): Add cast to enum type.
18612         (delete_output_reload): Change 0 to VOIDmode in function call.
18613         * reorg.c (insn_sets_resource_p): Convert include_delayed_effects
18614         to enum type in function call.
18615         * tree.h (PREDICT_EXPR_OUTCOME): Add cast to enum type.
18616         (SET_PREDICT_EXPR_OUTCOME): Define.
18617         * tree-dump.c (get_dump_file_info): Change phase parameter to int.
18618         (get_dump_file_name, dump_begin, dump_enabled_p): Likewise.
18619         (dump_initialized_p, dump_flag_name, dump_end): Likewise.
18620         (dump_function): Likewise.
18621         * tree-dump.h: Update declarations.
18622         * tree-pass.h: Update declarations.
18623         * varasm.c (assemble_integer): Change mclass to enum mode_class.
18624         * config/arm/arm.c (thumb_legitimize_reload_address): Add cast to
18625         enum type.
18626         (arm_rtx_costs_1): Correct parenthesization.
18627         (arm_rtx_costs): Add casts to enum type.
18628         (adjacent_mem_locations): Reverse arguments to const_ok_for_op.
18629         (vfp_emit_fstmd): Use add_rg_note.
18630         (emit_multi_reg_push, emit_sfm): Likewise.
18631         (thumb_set_frame_pointer): Likewise.
18632         (arm_expand_prologue): Likewise.
18633         (arm_regno_class): Change return type to enum reg_class.
18634         (thumb1_expand_prologue): Use add_reg_note.
18635         * config/arm/arm-protos.h (arm_regno_class): Update declaration.
18636         * config/arm/arm.h (INITIALIZE_TRAMPOLINE): Change 0 to LCT_NORMAL
18637         in function call.
18638         * config/arm/gentune.sh: Add cast to enum type.
18639         * config/arm/arm-tune.md: Rebuild.
18640         * config/i386/i386.c (ix86_expand_prologue): Use add_reg_note.
18641         (ix86_split_fp_branch, predict_jump): Likewise.
18642         (ix86_expand_multi_arg_builtin): Change sub_code from enum
18643         insn_code to enum rtx_code.
18644         (ix86_builtin_vectorized_function): Add cast to enum type.
18645         * config/i386/i386.md (truncdfsf2): Change slot to enum
18646         ix86_stack_slot.
18647         (truncxf<mode>2, isinf<mode>2): Likewise.
18648         * config/i386/i386-c.c (ix86_pragma_target_parse): Add cast to
18649         enum type.
18650         * config/ia64/ia64.c (ia64_split_tmode_move): Use add_reg_note.
18651         (spill_restore_mem, do_spill, ia64_expand_prologue): Likewise.
18652         (insert_bundle_state): Change 1 to INSERT in function call.
18653         (ia64_add_bundle_selector_before): Likewise.
18654         * config/ia64/ia64.md (cpu attr): Add cast to enum type.
18655         (save_stack_nonlocal): Change 0 to LCT_NORMAL in function call.
18656         (restore_stack_nonlocal): Likewise.
18657         * config/mips/mips.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL in
18658         function call.
18659         * config/mips/mips.c (mips_binary_cost): Change 0 to SET in
18660         function call.
18661         (mips_rtx_costs): Likewise.
18662         (mips_override_options): Add casts to enum type.
18663         * config/mips/sdemtk.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL
18664         in function call.
18665         * config/pa/pa.c (legitimize_pic_address): Use add_reg_note.
18666         (store_reg, set_reg_plus_d): Likewise.
18667         (hppa_expand_prologue, hppa_profile_hook): Likewise.
18668         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Add
18669         cast to enum type.
18670         (altivec_expand_vec_set_builtin): Change 0 to EXPAND_NORMAL in
18671         function call.
18672         (emit_unlikely_jump): Use add_reg_note.
18673         (rs6000_emit_allocate_stack): Likewise.
18674         (rs6000_frame_related, rs6000_emit_prologue): Likewise.
18675         (output_toc): Change 1 to INSERT in function call.
18676         (output_profile_hook): Change 0 to LCT_NORMAL in function call.
18677         (rs6000_initialize_trampoline): Likewise.
18678         (rs6000_init_dwarf_reg_sizes_extra): Change 0 to EXPAND_NORMAL in
18679         function call.
18680         * config/s390/s390.c (s390_rtx_costs): Add cast to enum type.
18681         (s390_expand_movmem): Change 0 to OPTAB_DIRECT in function call.
18682         (s390_expand_setmem, s390_expand_cmpmem): Likewise.
18683         (save_gprs): Use add_reg_note.
18684         (s390_emit_prologue): Likewise.
18685         (s390_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
18686         * config/sparc/sparc.c (sparc_expand_prologue): Use add_reg_note.
18687         (sparc_fold_builtin): Add cast to enum type.
18688         * config/spu/spu.c (spu_emit_branch_or_set): Change ior_code to
18689         enum insn_code.
18690         (spu_expand_prologue): Use add_reg_note.
18691         (expand_builtin_args): Change 0 to EXPAND_NORMAL in function call.
18692
18693 2009-04-20  Ian Lance Taylor  <iant@google.com>
18694
18695         * c-parser.c (c_parser_attributes): Change VEC back to tree list.
18696         (c_parser_postfix_expression_after_primary): Get VEC for list of
18697         arguments.  Get original types of arguments.  Call
18698         build_function_call_vec.
18699         (cached_expr_list_1, cached_expr_list_2): New static variables.
18700         (c_parser_expr_list): Change return type to VEC *.  Add
18701         p_orig_types parameter.  Change all callers.
18702         (c_parser_release_expr): New static function.
18703         (c_parser_vec_to_tree_list): New static function.
18704         * c-typeck.c (build_function_call): Rewrite to build a VEC and
18705         call build_function_call_vec.
18706         (build_function_call_vec): New function, based on old
18707         build_function_call.
18708         (convert_arguments): Remove nargs and argarray parameters.  Change
18709         values to a VEC.  Add origtypes parameter.
18710         (build_modify_expr): Add rhs_origtype parameter.  Change all callers.
18711         (convert_for_assignment): Add origtype parameter.  Change all
18712         callers.  If warn_cxx_compat, check for conversion to an enum
18713         type when calling a function.
18714         (store_init_value): Add origtype parameter.  Change all callers.
18715         (digest_init): Likewise.
18716         (struct init_node): Add origtype field.
18717         (add_pending_init): Add origtype parameter.  Change all callers.
18718         (output_init_element): Likewise.
18719         (output_pending_init_elements): Pass origtype from init_node to
18720         output_init_element.
18721         (process_init_element): Pass origtype from c_expr to
18722         output_init_element.
18723         (c_finish_return): Add origtype parameter.  Change all callers.
18724         * c-common.c (sync_resolve_size): Change params to VEC *.  Change
18725         caller.
18726         (sync_resolve_params): Likewise.
18727         (sync_resolve_return): Change params to first_param.  Change caller.
18728         (resolve_overloaded_builtins): Change params to VEC *.  Change
18729         callers.  Save first parameter around call to build_function_call_vec.
18730         * c-decl.c (finish_decl): Add origtype parameter.  Change all
18731         callers.  Call build_function_call_vec rather than
18732         build_function_call for cleanup.
18733         * c-tree.h: Update declarations.
18734         * c-common.h: Update declarations.
18735         * stub-objc.c (objc_rewrite_function_call): Change parameter from
18736         params to first_param.
18737         * target.h (struct gcc_target): Change resolve_overloaded_builtin
18738         params parameter from tree to void *.
18739         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
18740         Change arglist parameter to have type void *, and to be a pointer
18741         to a VEC.
18742         * config/rs6000/rs6000-protos.h
18743         (altivec_resolve_overloaded_builtin): Update declaration.
18744         * config/spu/spu-c.c (spu_resolved_overloaded_builtin): Change
18745         fnargs parameter to have type void *, and to be a pointer to a
18746         VEC.  Call build_function_call_vec instead of
18747         build_function_call.
18748         * config/spu/spu-protos.h (spu_expand_builtin): Update declaration.
18749
18750 2009-04-20  Joey Ye  <joey.ye@intel.com>
18751             Xuepeng Guo  <xuepeng.guo@intel.com>
18752             H.J. Lu  <hongjiu.lu@intel.com>
18753
18754         * config/i386/atom.md: Add bypasses with ix86_dep_by_shift_count.
18755
18756         * config/i386/i386.c (LEA_SEARCH_THRESHOLD): New macro.
18757         (IX86_LEA_PRIORITY): Likewise.
18758         (distance_non_agu_define): New function.
18759         (distance_agu_use): Likewise.
18760         (ix86_lea_for_add_ok): Likewise.
18761         (ix86_dep_by_shift_count): Likewise.
18762
18763         * config/i386/i386.md: Call ix86_lea_for_add_ok to decide we
18764         should split for LEA.
18765
18766         * config/i386/i386-protos.h (ix86_lea_for_add_ok): Declare new
18767         function.
18768         (ix86_dep_by_shift_count): Likewise.
18769
18770 2009-04-20  Richard Guenther  <rguenther@suse.de>
18771
18772         * expr.c (handled_component_p): Move ...
18773         * tree.h (handled_component_p): ... here.
18774         * tree.def: Re-order BIT_FIELD_REF, COMPONENT_REF,
18775         ARRAY_REF, ARRAY_RANGE_REF, VIEW_CONVERT_EXPR, IMAGPART_EXPR
18776         and REALPART_EXPR to be in one group.
18777
18778 2009-04-20  Richard Guenther  <rguenther@suse.de>
18779
18780         * basic-block.h (get_all_dominated_blocks): Declare.
18781         * dominance.c (get_all_dominated_blocks): New function.
18782         * tree-cfg.c (get_all_dominated_blocks): Remove.
18783         (remove_edge_and_dominated_blocks): Adjust.
18784         * tree-ssa-phiprop.c (tree_ssa_phiprop_1): Fold in ...
18785         (tree_ssa_phiprop): ... here.  Use get_all_dominated_blocks
18786         instead of recursing.
18787
18788 2009-04-20  Doug Kwan  <dougkwan@google.com>
18789
18790         * cgraph.h (cgraph_node_ptr): New type for vector functions.
18791         (struct cgraph_node_set_def): New type.
18792         (cgraph_node_set) New type. Also declare vector functions.
18793         (struct cgraph_node_set_element_def): New type.
18794         (cgraph_node_set_element): Ditto.
18795         (cgraph_node_set_iterator): New iterator type.
18796         (cgraph_node_set_new, cgraph_node_set_find, cgraph_node_set_add,
18797         cgraph_node_set_remove, dump_cgraph_node_set,
18798         debug_cgraph_node_set): New prototypes.
18799         (csi_end_p, csi_next, csi_node, csi_start, cgraph_node_in_set_p,
18800         cgraph_node_set_size): New inlines.
18801         * tree-pass.h (struct cgraph_node_set_def): New decl to avoid
18802         including cgraph.h.
18803         (struct ipa_opt_pass): Add struct cgraph_node_set_def
18804         argument to function 'write_summary'.
18805         * ipa.c: Include ggc.h.
18806         (hash_cgraph_node_set_element,
18807         eq_cgraph_node_set_element, cgraph_node_set_new,
18808         cgraph_node_set_add, cgraph_node_set_remove,
18809         cgraph_node_set_find, dump_cgraph_node_set,
18810         debug_cgraph_node_set): New functions.
18811         * Makefile.in (ipa.o): Add dependency on GGC_H.
18812
18813 2009-04-20  Ira Rosen  <irar@il.ibm.com>
18814
18815         PR tree-optimization/39675
18816         * tree-vect-loop.c (vect_transform_loop): Remove currently redundant
18817         check of the return code of vect_schedule_slp. Check that
18818         stmt_vec_info still exists for the statement, before checking its
18819         vectorization type.
18820
18821 2009-04-20  Michael Matz  <matz@suse.de>
18822
18823         * Makefile.in (generated_files): Take out $(simple_generated_c).
18824
18825 2009-04-19  Dave Korn  <dave.korn.cygwin@gmail.com>
18826
18827         * config/i386/cygwin-stdint.h (INTPTR_TYPE):  Remove "long".
18828         (UINTPTR_TYPE):  Likewise.
18829
18830 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
18831
18832         PR c/37481
18833         * c-typeck.c (digest_init): Check for initializing an array with a
18834         string literal.
18835
18836 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
18837
18838         PR c/19771
18839         * c-semantics.c (pop_stmt_list): Propagate
18840         STATEMENT_LIST_HAS_LABEL to parent statement list.
18841
18842 2009-04-19  Adam Nemet  <anemet@caviumnetworks.com>
18843
18844         * config/mips/mips.h (mips_tune_attr): New macro.
18845         * config/mips/mips.md (cpu): Use it.
18846
18847 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
18848
18849         PR c/38243
18850         * c-decl.c (shadow_tag_warned): Diagnose use of restrict when
18851         declaring a tag.
18852
18853 2009-04-19  Diego Novillo  <dnovillo@google.com>
18854
18855         * toplev.c (compile_file): Move call to coverage_finish ...
18856         * cgraphunit.c (ipa_passes): ... here.
18857         Call cgraph_process_new_functions.
18858         * ipa-utils.c (get_base_var): Handle CONSTRUCTOR.
18859         * Makefile.in (cgraphunit.o): Add dependency on COVERAGE_H.
18860
18861 2009-04-19  Jan Hubicka  <jh@suse.cz>
18862
18863         * cgraph.c (cgraph_create_edge, cgraph_set_call_stmt): Set proper
18864         cfun.
18865         (dump_cgraph_node): Dump can throw external flag.
18866         * ipa-pure-const.c (propagate): Fix propagation of nothrow flags.
18867
18868 2009-04-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
18869
18870         PR c/32061
18871         PR c++/36954
18872         * doc/invoke.texi: Add -Wlogical-op to -Wextra.
18873         * common.opt (Wlogical-op): Move from here...
18874         * c.opt (Wlogical-op): ... to here.
18875         * c-typeck.c (parser_build_binary_op): Update call to
18876         warn_logical_operator.
18877         * c-opts.c (c_common_post_options): Enable warn_logical_op with
18878         extra_warnings.
18879         * c-common.c (warn_logical_op): Update.
18880         * c-common.h (warn_logical_op): Update declaration.
18881
18882 2009-04-19  Eric Botcazou  <ebotcazou@adacore.com>
18883
18884         * tree.c (protected_set_expr_location): Fix formatting.
18885
18886 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
18887
18888         PR c/27676
18889         * c-typeck.c (readonly_warning): new.
18890         (build_unary_op, build_modify_expr): Use readonly_warning for
18891         storing into something readonly but not const-qualified.
18892
18893 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
18894
18895         PR c/22367
18896         * c-typeck.c (build_unary_op): Check for taking address of
18897         expression of type void.
18898
18899 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
18900
18901         PR c/35210
18902         * c-typeck.c (build_function_call): Check for calling a function
18903         with qualified void return types.  Call require_complete_type when
18904         generating a trap.
18905
18906 2009-04-18  Jan Hubicka  <jh@suse.cz>
18907
18908         * cgraph.c (cgraph_make_edge, dump_cgraph_node, cgraph_set_call_stmt):
18909         Set nothrow flag.
18910         * cgraph.h (struct function): Reduce loop_nest to 30 bits; add
18911         can_throw_external flag.
18912         * ipa-reference.c (ipa_utils_reduced_inorder): Update call.
18913         * ipa-pure-const.c (ignore_edge): New function.
18914         (propagate): Compute order for NOTHROW computation; set NOTHROWs
18915         only over can_throw_external edges.
18916         (local_pure_const): Add nothrow flag.
18917         * ipa-utils.c (searchc): Add ignore_edge callback.
18918         (ipa_utils_reduced_inorder): Add ignore_edge callback.
18919         * ipa-utils.h (ipa_utils_reduced_inorder): Update prototype.
18920         (set_nothrow_function_flags): Update cgraph.
18921         * tree-cfg.c (verify_stmt): Relax nothrow checking when in IPA mode.
18922
18923 2009-04-18  Richard Guenther  <rguenther@suse.de>
18924
18925         PR middle-end/39804
18926         * tree-ssa-ccp.c (fold_stmt_1): New function factored from ...
18927         (fold_stmt): ... this and ...
18928         (fold_stmt_inplace): ... this.
18929         (fold_stmt_1): Fold references in calls and asms.
18930         * tree-cfg.c (remove_useless_stmts_cond): Use fold_stmt.
18931
18932 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
18933
18934         * tree-vrp.c (ssa_name_nonzero_p): Remove.
18935         * tree.h: Remove the prototype for ssa_name_nonzero_p.
18936
18937 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
18938
18939         * tree.c (function_args_count): Remove.
18940         * tree.h: Remove the prototype for function_args_count.
18941
18942 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
18943
18944         * tree-iterator.c (expr_only): Remove.
18945         * tree.h: Remove the prototype for expr_only.
18946
18947 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
18948
18949         * reginfo.c (cannot_change_mode_set_regs): Remove.
18950         * rtl.h: Remove the prototype for cannot_change_mode_set_regs.
18951
18952 2009-04-08  Anatoly Sokolov  <aesok@post.ru>
18953
18954         * config/avr/avr.md (*rotlsi3_8, *rotlsi3_16, *rotlsi3_24 ): Check
18955         whether operands 0 and 1 overlaps.
18956
18957 2009-04-18  Manuel López-Ibáñez  <manu@gcc.gnu.org>
18958
18959         PR middle-end/36902
18960         * tree-vrp.c (check_array_ref): Pass a location_t instead of a
18961         pointer. Use warning_at instead of warning.
18962         (search_for_addr_array): Likewise.
18963         (check_array_bounds): Likewise.
18964         (check_all_array_refs): Check that the incoming edge is not in the
18965         list of edges to be removed.
18966         (check_all_array_refs): Avoid the temporal pointer.
18967         (vrp_visit_cond_stmt): Fix typo.
18968         (simplify_switch_using_ranges): Handle the case where the switch
18969         index is an integer constant.
18970
18971 2009-04-18  Adam Nemet  <anemet@caviumnetworks.com>
18972
18973         * config/mips/mips.c (mips_final_postscan_insn): Make it static.
18974
18975 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
18976
18977         * doc/extend.texi, doc/invoke.texi: Fix typos.
18978
18979 2009-04-17  Cary Coutant  <ccoutant@google.com>
18980
18981         * tree-flow-inline.h (get_lineno): Fix inverted test.
18982
18983 2009-04-17  Diego Novillo  <dnovillo@google.com>
18984
18985         * tree-ssa-pre.c (create_expression_by_pieces): Remove
18986         assertion for AVAIL_OUT.
18987
18988 2009-04-17  Mike Frysinger  <vapier@gentoo.org>
18989
18990         PR target/38627
18991         * config/sh/lib1funcs.asm [__ELF__ && __linux__]: Add .note.GNU-stack.
18992         * config/sh/linux-atomic.asm: Likewise.
18993
18994 2009-04-17  Diego Novillo  <dnovillo@google.com>
18995
18996         * except.c (debug_eh_tree): New.
18997         (struct eh_region, struct eh_status): Move ...
18998         * except.h: ... here.
18999         (add_type_for_runtime): Declare extern.
19000         (lookup_type_for_runtime): Likewise.
19001         (debug_eh_tree): Declare.
19002         * Makefile.in (GTFILES): List except.h before except.c
19003
19004 2009-04-17  Diego Novillo  <dnovillo@google.com>
19005
19006         * omp-low.c (create_omp_child_function): Set DECL_CONTEXT for DECL.
19007         * cgraphunit.c (cgraph_build_static_cdtor): Likewise.
19008         * tree-dfa.c (find_referenced_vars_in): Factor out of ...
19009         (find_vars_r): ... here.
19010         * tree-flow.h (find_referenced_vars_in): Declare.
19011         * tree-ssa-pre.c (create_expression_by_pieces): Assert
19012         that AVAIL_OUT exists for BLOCK.
19013         * Makefile.in (CGRAPH_H): Add dependency on cif-code.def
19014         (tree-loop-distribution.o): Fix dependency on TREE_VECTORIZER_H.
19015         (tree-parloops.o): Likewise.
19016
19017 2009-04-17  Simon Baldwin  <simonb@google.com>
19018
19019         * toplev.c (default_tree_printer): Add handling for %E format.
19020
19021 2009-04-17  Diego Novillo  <dnovillo@google.com>
19022
19023         * tree-pretty-print.c (dump_generic_node): Add break after
19024         TREE_BINFO handler.  Handle COMPLEX_TYPE, REAL_TYPE and
19025         FIXED_POINT_TYPE.  Handle NULL TREE_TYPEs.  Handle METHOD_TYPE and
19026         FUNCTION_TYPE together.  Call print_struct_decl when printing
19027         structures and TDF_SLIM is not given.
19028         (print_struct_decl): Fix logic for detecting recursion.
19029
19030 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
19031
19032         PR 31567
19033         * gcc.c (create_at_file): New.
19034         (compile_input_file_p): New.
19035         (do_spec_1): Use @args files for %i. Use create_at_file for %o.
19036         * main.c (main): Update call to toplev_main.
19037         * toplev.c (toplev_main): Change signature. Call expandargv.
19038         * toplev.h (toplev_main): Change signature.
19039
19040 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
19041
19042         * dwarf2out.c (field_byte_offset): Use the type size as the field size
19043         if the latter is not constant.
19044
19045 2009-04-17  David Edelsohn  <edelsohn@gnu.org>
19046
19047         * dbxout.c (xcoff_debug_hooks): Add set_name_debug_nothing.
19048
19049 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
19050
19051         * dbxout.c (dbxout_block): Reinstate test on TREE_USED.
19052         * tree-ssa-live.c (remove_unused_scope_block_p): Update TREE_USED bit.
19053
19054 2009-04-17  Richard Guenther  <rguenther@suse.de>
19055
19056         * tree-ssa-structalias.c (get_constraint_for_component_ref):
19057         Handle component references view-converting an invariant address.
19058
19059 2009-04-17  Adam Nemet  <anemet@caviumnetworks.com>
19060
19061         * doc/tm.texi (TARGET_DEFAULT_TARGET_FLAGS,
19062         TARGET_MIN_ANCHOR_OFFSET, TARGET_MAX_ANCHOR_OFFSET,
19063         TARGET_HAVE_SRODATA_SECTION, TARGET_HAVE_TLS,
19064         TARGET_UNWIND_TABLES_DEFAULT, TARGET_TERMINATE_DW2_EH_FRAME_INFO):
19065         Use @deftypevr rather than @deftypevar.
19066
19067 2009-04-17  Richard Guenther  <rguenther@suse.de>
19068
19069         * tree-ssa-forwprop.c (get_prop_dest_stmt): Clean up tuplification.
19070         (get_prop_source_stmt): Likewise.
19071         (can_propagate_from): Likewise.
19072
19073 2009-04-17  Andrew Stubbs  <ams@codesourcery.com>
19074
19075         * configure.ac: Add new AC_SUBST for TM_ENDIAN_CONFIG,
19076         TM_MULTILIB_CONFIG and TM_MULTILIB_EXCEPTIONS_CONFIG.
19077         (--with-multilib-list): Add default value.
19078         * configure: Regenerate.
19079         * Makefile.in (TM_ENDIAN_CONFIG): Define.
19080         (TM_MULTILIB_CONFIG, TM_MULTILIB_EXCEPTIONS_CONFIG): Define.
19081         * config.gcc (sh-*-*): Switch to using TM_ENDIAN_CONFIG,
19082         TM_MULTILIB_CONFIG, and TM_MULTILIB_EXCEPTIONS_CONFIG.
19083         Don't add default cpu to multilib list unnecessarily, but do enable
19084         the relevant compiler option..
19085         Add support for --with-multilib-list=<blank> and
19086         --with-multilib-list=!<somelib> to supress unwanted multilibs.
19087         * config/sh/t-sh (DEFAULT_ENDIAN, OTHER_ENDIAN): New variables.
19088         (MULTILIB_ENDIAN, MULTILIB_CPUS): Delete variables.
19089         (MULTILIB_OPTIONS): Redefine using OTHER_ENDIAN and
19090         TM_MULTILIB_CONFIG.
19091         (MULTILIB_EXCEPTIONS): Add TM_MULTILIB_EXCEPTIONS_CONFIG.
19092         (MULTILIB_OSDIRNAMES): New variable.
19093         * config/sh/t-1e: Delete file.
19094         * config/sh/t-mlib-sh1: Delete file.
19095         * config/sh/t-mlib-sh2: Delete file.
19096         * config/sh/t-mlib-sh2a: Delete file.
19097         * config/sh/t-mlib-sh2a-nofpu: Delete file.
19098         * config/sh/t-mlib-sh2a-single: Delete file.
19099         * config/sh/t-mlib-sh2a-single-only: Delete file.
19100         * config/sh/t-mlib-sh2e: Delete file.
19101         * config/sh/t-mlib-sh3e: Delete file.
19102         * config/sh/t-mlib-sh4: Delete file.
19103         * config/sh/t-mlib-sh4-nofpu: Delete file.
19104         * config/sh/t-mlib-sh4-single: Delete file.
19105         * config/sh/t-mlib-sh4-single-only: Delete file.
19106         * config/sh/t-mlib-sh4a: Delete file.
19107         * config/sh/t-mlib-sh4a-nofpu: Delete file.
19108         * config/sh/t-mlib-sh4a-single: Delete file.
19109         * config/sh/t-mlib-sh4a-single-only: Delete file.
19110         * config/sh/t-mlib-sh4al: Delete file.
19111         * config/sh/t-mlib-sh5-32media: Delete file.
19112         * config/sh/t-mlib-sh5-32media-nofpu: Delete file.
19113         * config/sh/t-mlib-sh5-64media: Delete file.
19114         * config/sh/t-mlib-sh5-64media-nofpu: Delete file.
19115         * config/sh/t-mlib-sh5-compact: Delete file.
19116         * config/sh/t-mlib-sh5-compact-nofpu: Delete file.
19117         * config/sh/t-linux: Don't override MULTILIB_EXCEPTIONS.
19118         * doc/install.texi (Options specification): Add
19119         --with-multilib-list and --with-endian.
19120
19121 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
19122
19123         * Makefile.in (REVISION_s): Always include quotes. Change ifdef to use
19124         REVISION_c.
19125         (OBJS-common): Add plugin-version.o.
19126         (plugin-version.o): New.
19127         * gcc-plugin.h (plugin_gcc_version): New.
19128         (plugin_default_version_check): New.
19129         (plugin_init_func, plugin_init): Add version argument.
19130         * plugin-version.c: New.
19131         * plugin.c (str_plugin_gcc_version_name): New.
19132         (try_init_one_plugin): Read plugin_gcc_version from the plugin and
19133         pass it to the init function.
19134         (plugin_default_version_check): New.
19135
19136 2009-04-17  Richard Guenther  <rguenther@suse.de>
19137
19138         * tree-ssa-alias.c (refs_may_alias_p_1): Do not use TBAA
19139         for decl-vs-decl disambiguation.
19140
19141 2009-04-17  Andreas Krebbel  <krebbel1@de.ibm.com>
19142
19143         * config/s390/s390.h (s390_tune_attr): New macro definition.
19144         * config/s390/s390.md (cpu attribute): Map to s390_tune_attr.
19145
19146 2009-04-17  Richard Guenther  <rguenther@suse.de>
19147
19148         * tree-ssa-ccp.c (struct fold_stmt_r_data): Remove.
19149         (fold_stmt_r): Likewise.
19150         (maybe_fold_reference): New function.
19151         (fold_gimple_assign): Handle cases fold_stmt_r did.
19152         (fold_stmt): Do not use fold_stmt_r.
19153         (fold_stmt_inplace): Likewise.
19154
19155 2009-04-17  Richard Guenther  <rguenther@suse.de>
19156
19157         * tree-ssa-dom.c (gimple_assign_unary_useless_conversion_p): Remove.
19158         (record_equivalences_from_stmt): Remove useless checks and
19159         simplifications.
19160         * tree-ssa-pre.c (eliminate): Avoid converting a constant if
19161         the type is already suitable.
19162
19163 2009-04-17  Paolo Bonzini  <bonzini@gnu.org>
19164
19165         * config/sh/sh.h (FUNCTION_VALUE): Fix call to sh_promote_prototypes.
19166
19167 2009-04-17  Uros Bizjak  <ubizjak@gmail.com>
19168
19169         * config/arm/sfp-machine.h (__gcc_CMPtype): New typedef.
19170         (CMPtype): Define as __gcc_CMPtype.
19171
19172 2009-04-17  Aurelien Jarno  <aurelien@aurel32.net>
19173
19174         * config.gcc: Add soft-fp/t-softfp and i386/t-linux to tmake_file
19175         for i[34567]86-*-kfreebsd*-gnu*, x86_64-*-kfreebsd*-gnu*.
19176
19177 2009-04-17  Richard Guenther  <rguenther@suse.de>
19178
19179         PR tree-optimization/39746
19180         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Remove
19181         special-casing for builtins and static variable use/def.
19182         (call_may_clobber_ref_p_1): Likewise.
19183
19184 2009-04-16  Ian Lance Taylor  <iant@google.com>
19185
19186         * df.h: Include "timevar.h".
19187         (struct df_problem): Change tv_id field to timevar_id_t.
19188         * tree-pass.h: Include "timevar.h".
19189         (struct opt_pass): Change tv_id field to timevar_id_t.
19190         * timevar.h (timevar_id_t): Define TV_NONE.
19191         * passes.c (execute_one_ipa_transform_pass): Check for tv_id !=
19192         TV_NONE rather than tv_id != 0.
19193         (execute_one_pass): Likewise.
19194         * Makefile.in (DF_H): Add $(TIMEVAR_H).
19195         (TREE_PASS_H): Define.  Change all instances of tree-pass.h in
19196         dependencies to $(TREE_PASS_H).
19197         * bt-load.c (pass_branch_target_load_optimize1): Set tv_id field
19198         to TV_NONE.
19199         (pass_branch_target_load_optimize2): Likewise.
19200         * cfglayout.c (pass_into_cfg_layout_mode): Likewise.
19201         (pass_outof_cfg_layout_mode): Likewise.
19202         * cgraphbuild.c (pass_remove_cgraph_callee_edges): Likewise.
19203         (pass_rebuild_cgraph_edges): Likewise.
19204         (pass_remove_cgraph_callee_edges): Likewise.
19205         * df-core.c (pass_df_initialize_opt): Likewise.
19206         (pass_df_initialize_no_opt): Likewise.
19207         (pass_df_finish): Likewise.
19208         * emit-rtl.c (pass_unshare_all_rtl): Likewise.
19209         * except.c (pass_set_nothrow_function_flags): Likewise.
19210         (pass_convert_to_eh_region_ranges): Likewise.
19211         * final.c (pass_compute_alignments): Likewise.
19212         * function.c (pass_instantiate_virtual_regs): Likewise.
19213         (pass_init_function): Likewise.
19214         (pass_leaf_regs): Likewise.
19215         (pass_match_asm_constraints): Likewise.
19216         * gimple-low.c (pass_lower_cf): Likewise.
19217         (pass_mark_used_blocks): Likewise.
19218         * init-regs.c (pass_initialize_regs): Likewise.
19219         * integrate.c (pass_initial_value_sets): Likewise.
19220         * ira.c (pass_ira): Likewise.
19221         * jump.c (pass_cleanup_barriers): Likewise.
19222         * omp-low.c (pass_expand_omp): Likewise.
19223         (pass_lower_omp): Likewise.
19224         * matrix-reorg.c (pass_ipa_matrix_reorg): Likewise.
19225         * recog.c (pass_split_all_insns): Likewise.
19226         (pass_split_after_reload): Likewise.
19227         (pass_split_before_regstack): Likewise.
19228         (pass_split_before_sched2): Likewise.
19229         (pass_split_for_shorten_branches): Likewise.
19230         * reginfo.c (pass_reginfo_init): Likewise.
19231         (pass_subregs_of_mode_init): Likewise.
19232         (pass_subregs_of_mode_finish): Likewise.
19233         * passes.c (pass_postreload): Likewise.
19234         * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
19235         * tree-cfg.c (pass_remove_useless_stmts): Likewise.
19236         (pass_warn_function_return): Likewise.
19237         (pass_warn_function_noreturn): Likewise.
19238         * tree-complex.c (pass_lower_complex): Likewise.
19239         (pass_lower_complex_O0): Likewise.
19240         * tree-if-conv.c (pass_if_conversion): Likewise.
19241         * tree-into-ssa.c (pass_build_ssa): Likewise.
19242         * tree-mudflap.c (pass_mudflap_1): Likewise.
19243         (pass_mudflap_2): Likewise.
19244         * tree-nomudflap.c (pass_mudflap_1): Likewise.
19245         (pass_mudflap_2): Likewise.
19246         * tree-nrv.c (pass_return_slot): Likewise.
19247         * tree-object-size.c (pass_object_sizes): Likewise.
19248         * tree-optimize.c (pass_all_optimizations): Likewise.
19249         (pass_early_local_passes): Likewise.
19250         (pass_all_early_optimizations): Likewise.
19251         (pass_cleanup_cfg): Likewise.
19252         (pass_cleanup_cfg_post_optimizing): Likewise.
19253         (pass_free_datastructures): Likewise.
19254         (pass_free_cfg_annotations): Likewise.
19255         (pass_fixup_cfg): Likewise.
19256         (pass_init_datastructures): Likewise.
19257         * tree-ssa.c (pass_early_warn_uninitialized): Likewise.
19258         (pass_late_warn_uninitialized): Likewise.
19259         (pass_update_address_taken): Likewise.
19260         * tree-ssa-ccp.c (pass_fold_builtins): Likewise.
19261         * tree-ssa-math-opts.c (pass_cse_reciprocals): Likewise.
19262         (pass_cse_sincos): Likewise.
19263         (pass_convert_to_rsqrt): Likewise.
19264         * tree-ssa-structalias.c (pass_build_alias): Likewise.
19265         * tree-stdarg.c (pass_stdarg): Likewise.
19266         * tree-tailcall.c (pass_tail_recursion): Likewise.
19267         (pass_tail_calls): Likewise.
19268         * tree-vect-generic.c (pass_lower_vector): Likewise.
19269         (pass_lower_vector_ssa): Likewise.
19270         * tree-vectorizer.c (pass_ipa_increase_alignment): Likewise.
19271
19272 2009-04-16  Joseph Myers  <joseph@codesourcery.com>
19273
19274         * config/mips/mips.c (mips_rtx_cost_data): Use SOFT_FP_COSTS in
19275         XLR entry.
19276         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC):
19277         Handle -march=xlr.
19278         * config/mips/xlr.md (ir_xlr_alu): Also accept insn types move,
19279         logical and signext.
19280
19281 2009-04-16  Kaz Kojima  <kkojima@gcc.gnu.org>
19282
19283         PR target/39767
19284         * config/sh/predicates.md (arith_operand): Check if the operand
19285         of TRUNCATE is a REG.
19286
19287 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
19288
19289         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
19290         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
19291
19292 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
19293
19294         * tree-iterator.c (tsi_split_statement_list_after,
19295         tsi_split_statement_list_before): Remove.
19296         * tree-iterator.h: Remove the prototypes for
19297         tsi_split_statement_list_after and tsi_split_statement_list_before.
19298
19299 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
19300
19301         * tree-ssa-propagate.c (stmt_makes_single_load): Remove.
19302         * tree-ssa-propagate.h: Remove the prototype for
19303         stmt_makes_single_load.
19304
19305 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
19306
19307         * emit-rtl.c (set_mem_attrs_from_reg): Remove.
19308         * rtl.h: Remove the prototype for set_mem_attrs_from_reg.
19309
19310 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
19311
19312         * tree-iterator.c (EXPR_LAST_BODY): Remove.
19313
19314 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
19315
19316         * except.c (eh_region_outer_p): Remove.
19317         * except.h: Remove the prototype for eh_region_outer_p.
19318
19319 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
19320
19321         * function.c (current_function_assembler_name): Remove.
19322         * function.h: Remove the prototype for
19323         current_function_assembler_name.
19324
19325 2009-04-16  Ian Lance Taylor  <iant@google.com>
19326
19327         * rtlanal.c (alloc_reg_note): New function, broken out of add_reg_note.
19328         (add_reg_note): Call alloc_reg_note.
19329         * rtl.h (alloc_reg_note): Declare.
19330         * combine.c (try_combine): Use alloc_reg_note.
19331         (recog_for_combine, move_deaths): Likewise.
19332         (distribute_notes): Use alloc_reg_note and add_reg_note.
19333         * haifa-sched.c (sched_create_recovery_edges): Use add_reg_note.
19334         * combine-stack-adj.c (adjust_frame_related_expr): Likewise.
19335         * reload1.c (eliminate_regs_1): Use alloc_reg_note.
19336
19337 2009-04-16  Vladimir Makarov  <vmakarov@redhat.com>
19338
19339         PR rtl-optimization/39762
19340         * ira-int.h (ira_register_move_cost, ira_may_move_in_cost,
19341         ira_may_move_out_cost): Add comments about way of their usage.
19342         (ira_get_register_move_cost, ira_get_may_move_cost): New functions.
19343
19344         * ira-conflicts.c (process_regs_for_copy): Use function
19345         ira_get_register_move_cost instead of global
19346         ira_register_move_cost.
19347
19348         * ira-color.c (update_copy_costs, calculate_allocno_spill_cost,
19349         color_pass, move_spill_restore, update_curr_costs): Ditto.
19350
19351         * ira-lives.c (process_single_reg_class_operands): Ditto.
19352
19353         * ira-emit.c (emit_move_list): Ditto.
19354
19355         * ira-costs.c (copy_cost): Don't call ira_init_register_move_cost.
19356         (record_reg_classes): Ditto.  Use functions
19357         ira_get_register_move_cost and ira_get_may_move_cost instead of
19358         global vars ira_register_move_cost, ira_may_move_out_cost and
19359         ira_may_move_in_cost.
19360         (record_address_regs): Don't call ira_init_register_move_cost.
19361         Use function ira_get_may_move_cost instead of global
19362         ira_may_move_in_cost.
19363         (process_bb_node_for_hard_reg_moves): Use function
19364         ira_get_register_move_cost instead of global ira_register_move_cost.
19365         (ira_costs): Don't call ira_init_register_move_cost.
19366
19367 2009-04-16  Richard Guenther  <rguenther@suse.de>
19368
19369         * tree-cfg.c (verify_gimple_assign_binary):
19370         Allow POINTER_PLUS_EXPR-like PLUS_EXPR for vectors.
19371         * ipa-struct-reorg.c (gen_size): Fold the built expressions.
19372         (create_general_new_stmt): Note that this function is broken.
19373
19374 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
19375
19376         * common.opt (fhelp): Add Var(help_flag).
19377         * gcc-plugin.h (plugin_info): Add help.
19378         * plugin.c (plugin_name_args): Add help.
19379         (register_plugin_info): Set plugin->help.
19380         (print_help_one_plugin): New.
19381         (print_plugins_help): New.
19382         * plugin.h (print_plugins_help): New.
19383         * toplev.c (toplev_main): Call print_plugins_help if needed.
19384
19385 2009-04-16  Richard Guenther  <rguenther@suse.de>
19386
19387         * gimple.c (gimple_copy): Do not clear addresses_taken bitmap.
19388         (gimple_ior_addresses_taken_1): New function.
19389         (gimple_ior_addresses_taken): Likewise.
19390         * gimple.h (struct gimple_statement_with_ops_base): Remove
19391         addresses_taken member.
19392         (gimple_ior_addresses_taken): Declare.
19393         (gimple_addresses_taken, gimple_addresses_taken_ptr,
19394         gimple_set_addresses_taken): Remove.
19395         * ipa-reference.c (mark_address): New function.
19396         (scan_stmt_for_static_refs): Use it for marking addresses taken.
19397         * tree-ssa-operands.c (add_to_addressable_set): Rename to ...
19398         (mark_address_taken): ... this.  Just set TREE_ADDRESSABLE.
19399         (gimple_add_to_addresses_taken): Remove.
19400         (get_tmr_operands): Call mark_address_taken.
19401         (get_asm_expr_operands): Likewise.
19402         (get_expr_operands): Likewise.
19403         (build_ssa_operands): Do not clear the addresses_taken bitmap.
19404         (free_stmt_operands): Do not free it.
19405         * tree-ssa.c (delete_tree_ssa): Likewise.
19406         (execute_update_addresses_taken): Use gimple_ior_addresses_taken.
19407
19408 2009-04-16  Richard Guenther  <rguenther@suse.de>
19409
19410         * gimple.h (walk_stmt_load_store_addr_ops): Declare.
19411         (walk_stmt_load_store_ops): Likewise.
19412         * gimple.c (get_base_loadstore): New function.
19413         (walk_stmt_load_store_addr_ops): Likewise.
19414         (walk_stmt_load_store_ops): Likewise.
19415         * ipa-pure-const.c (check_op): Simplify.
19416         (check_load, check_store): New functions.
19417         (check_stmt): Use walk_stmt_load_store_ops.
19418         * ipa-reference.c (mark_load): Adjust signature.
19419         (mark_store): Likewise.
19420         (scan_stmt_for_static_refs): Use walk_stmt_load_store_addr_ops.
19421
19422 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
19423
19424         * gcc-plugin.h (plugin_event): Add PLUGIN_INFO.
19425         (plugin_info): New.
19426         * opts.c (common_handle_option): Don't call print_version.
19427         * plugin.c (plugin_name_args): Add version.
19428         (register_plugin_info): New.
19429         (register_callback): Handle PLUGIN_INFO.
19430         (try_init_one_plugin): New.
19431         (init_one_plugin): Use try_init_one_plugin. Only free plugin_name_args
19432         if failed to init.
19433         (finalize_one_plugin): New.
19434         (finalize_plugins): New.
19435         (print_one_plugin): New.
19436         (print_plugins_versions): New.
19437         * plugin.h (print_plugins_versions): New.
19438         (finalize_plugins): New.
19439         * toplev.c (compile_file): Don't call initialize_plugins.
19440         (print_version): Call print_plugins_versions.
19441         (toplev_main): Call initialize_plugins. Print version if needed.
19442         Call finalize_plugins.
19443
19444 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
19445
19446         * common.opt (fversion): New.
19447         * gcc.c (print_version): New.
19448         (process_command): Don't print the version. Just set print_version.
19449         (main): Print version. Call subprocesses if print_version and
19450         verbose_flag are set.
19451         * opts.c (common_handle_option): Handle OPT_fversion.
19452
19453 2009-04-16  Richard Guenther  <rguenther@suse.de>
19454             Ira Rosen  <irar@il.ibm.com>
19455
19456         PR tree-optimization/39698
19457         * tree-vect-loop.c (get_initial_def_for_reduction): Use the
19458         type of the reduction variable.  Only generate the def if
19459         it is needed.
19460
19461         * omp-low.c (expand_omp_for_generic): When converting to a pointer
19462         make sure to first convert to an integer of the same precision.
19463         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer): Retain
19464         the type of the evolution correctly in computing the new
19465         induction variable base.
19466
19467 2009-04-16  Richard Guenther  <rguenther@suse.de>
19468
19469         PR middle-end/39625
19470         * tree-cfg.c (make_blocks): Split statements with to-be
19471         abnormal SSA names on the lhs.
19472
19473 2009-04-16  Paolo Bonzini  <bonzini@gnu.org>
19474
19475         * c-common.c (vector_targets_convertible_p, vector_types_convertible_p):
19476         Use TYPE_VECTOR_OPAQUE instead of targetm.vector_opaque_p.
19477         * c-typeck.c (really_start_incremental_init): Likewise.
19478         * target-def.h (TARGET_VECTOR_OPAQUE_P): Remove.
19479         (TARGET_INITIALIZER): Remove it.
19480         * target.h (struct target): Remove vector_opaque_p.
19481         * tree.c (build_opaque_vector_type): New.
19482         * tree.h (TYPE_VECTOR_OPAQUE): New.
19483         (build_opaque_vector_type): Declare.
19484         * doc/tm.texi (TARGET_VECTOR_OPAQUE_P): Remove.
19485         * config/rs6000/rs6000.c (build_opaque_vector_type,
19486         rs6000_is_vector_type, TARGET_VECTOR_OPAQUE_P): Remove.
19487         (rs6000_init_builtins): Use build_opaque_vector_type for
19488         opaque_V4SI_type_node.
19489
19490 2009-04-15  Catherine Moore  <clm@codesourcery.com>
19491
19492         * debug.h (set_name):  Declare.
19493         * dwarf2out.c (dwarf2out_set_name): Declare.
19494         (dwarf2_debug_hooks): Add set_name.
19495         (find_AT_string): New.
19496         (add_AT_string): Call find_AT_string.
19497         (dwarf2out_set_name): New.
19498         * cp/decl.c (grokdeclarator): Call set_name.
19499         * vmsdbgout.c (vmsdbg_debug_hooks): Add set_name_debug_nothing.
19500         * debug.c (do_nothing_debug_hooks):  Likewise.
19501         * dbxout.c (dbx_debug_hooks): Likewise.
19502         * sdbout.c (sdb_debug_hooks): Likewise.
19503
19504 2009-04-15  Michael Eager  <eager@eagercon.com>
19505
19506         * config/rs6000/rs6000.c (rs6000_function_value): Set function return
19507         reg for single-precision FPU.
19508         * config/rs6000/rs6000.md (movsi_internal1): Only for
19509         !TARGET_SINGLE_FPU.
19510         (movsi_internal1_single): New. Add pattern to move SI values to/from
19511         single-precision FP regs.
19512
19513 2009-04-15  Richard Guenther  <rguenther@suse.de>
19514
19515         * omp-low.c (lower_rec_input_clauses): Build correct address
19516         expressions.
19517         (expand_omp_for_generic): Fix multiplication type.
19518         * tree-loop-distribution.c (build_size_arg): Build a size_t argument.
19519         (generate_memset_zero): Fix types.
19520         * tree-profile.c (prepare_instrumented_value): Correctly
19521         widen a pointer.
19522
19523 2009-04-15  Ian Lance Taylor  <iant@google.com>
19524
19525         * c.opt (Wenum-compare): Enable for C and Objc.  Initialize to -1.
19526         * c-opts.c (c_common_handle_option): For C, set warn_enum_compare
19527         for -Wall and for -Wc++-compat.
19528         (c_common_post_options): For C++, set warn_enum_compare if not
19529         already set.
19530         * c-tree.h (struct c_expr): Add field original_type.
19531         (build_external_ref): Update declaration.
19532         * c-parser.c (c_parser_braced_init): Set original_type.
19533         (c_parser_initelt): Likewise.
19534         (c_parser_expr_no_commas): Likewise.
19535         (c_parser_conditional_expression): Likewise.
19536         (c_parser_cast_expression): Likewise.
19537         (c_parser_unary_expression): Likewise.  Pull setting of
19538         original_code to top of function.
19539         (c_parser_sizeof_expression): Set original_type.
19540         (c_parser_alignof_expression): Likewise.
19541         (c_parser_postfix_expression): Likewise.  Pull setting of
19542         original_code to top of function.
19543         (c_parser_postfix_expression_after_paren_type): Set original_type.
19544         (c_parser_postfix_expression_after_primary): Likewise.
19545         (c_parser_expression): Likewise.
19546         * c-typeck.c (build_external_ref): Add type parameter.  Change all
19547         callers.
19548         (c_expr_sizeof_expr): Set original_type field.
19549         (parser_build_unary_op): Likewise.
19550         (parser_build_binary_op): Likewise.  Optionally warn about
19551         comparisons of enums of different types.
19552         (digest_init): Set original_type field.
19553         (really_start_incremental_init): Likewise.
19554         (push_init_level, pop_init_level): Likewise.
19555         * doc/invoke.texi (Warning Options): -Wenum-compare now
19556         supported in C.
19557
19558 2009-04-15  Richard Guenther  <rguenther@suse.de>
19559
19560         * tree-ssa-pre.c (eliminate): When replacing a PHI node carry
19561         out a necessary conversion.
19562         * tree-ssa-sccvn.c (run_scc_vn): Also assign value-ids to
19563         names we didn't value number.
19564         * tree-mudflap.c (mf_build_check_statement_for): Use correct types.
19565
19566 2009-04-15  Richard Guenther  <rguenther@suse.de>
19567
19568         PR tree-optimization/39764
19569         * tree-ssa-ccp.c (get_value): Canonicalize value with
19570         canonicalize_float_value.
19571
19572 2009-04-15  Jan Hubicka  <jh@suse.cz>
19573
19574         * builtins.def (va_start, va_end, va_copy): Fix my previous commit.
19575         Wrong version of patch.
19576
19577 2009-04-15  Jan Hubicka  <jh@suse.cz>
19578
19579         * builtins.def (va_start, va_end, va_copy): Mark nothrow.
19580
19581 2009-04-15  Nathan Sidwell  <nathan@codesourcery.com>
19582
19583         * config/rs6000/rs6000.c (rs6000_init_builtins): Set TYPE_NAME of
19584         our distinct integral and vector types.
19585
19586 2009-04-15  Rafael Avila de Espindola  <espindola@google.com>
19587
19588         * class.c (build_vtbl_ref_1): Remove call to assemble_external.
19589         * init.c (build_vtbl_address): Remove call to assemble_external.
19590
19591 2009-04-14  Daniel Jacobowitz  <dan@codesourcery.com>
19592
19593         * config/rs6000/rs6000.c (rs6000_dwarf_register_span): Fix debug
19594         output for other floating point modes.
19595
19596 2009-04-14  Diego Novillo  <dnovillo@google.com>
19597
19598         * diagnostic.c (diagnostic_report_diagnostic): Do not
19599         warn about loaded plugins for DK_ERROR and DK_WARNING.
19600         * c-decl.c (declspecs_add_type): Move call to
19601         invoke_plugin_callbacks ...
19602         * c-parser.c (c_parser_declspecs): ... here.
19603         * plugin.c (dump_active_plugins): Tidy output.
19604
19605 2009-04-14  Diego Novillo  <dnovillo@google.com>
19606             Le-Chun Wu  <lcwu@google.com>
19607
19608         * configure.ac: Add --enable-plugin support.
19609         Define ENABLE_PLUGIN and PLUGINLIBS when specified.
19610         * Makefile.in (PLUGIN_H): Define.
19611         Export ENABLE_PLUGIN and GMPINC to site.exp.
19612         Add PLUGINLIBS to link command.
19613         Add/modify dependencies for plugin.o and files including plugin.h.
19614         (plugin.o): New.
19615         * config.in: Regenerate.
19616
19617         * opts.c (common_handle_option): Handle OPT_fplugin_ and
19618         OPT_fplugin_arg_.
19619
19620 2009-04-14  Le-Chun Wu  <lcwu@google.com>
19621
19622         * tree-pass.h (register_one_dump_file): Add a prototype for
19623         register_one_dump_file.
19624         * toplev.c (compile_file): Call initialize_plugins.
19625         (do_compile): Call invoke_plugin_callbacks.
19626         (toplev_main): Call invoke_plugin_callbacks.
19627         * common.opt: Add -fplugin= and -fplugin-arg-.
19628         * gcc-plugin.h: New public header file for plugins to include.
19629         * plugin.c: New source file.
19630         * plugin.h: New internal header file.
19631         * passes.c (register_one_dump_file): Make it external.
19632
19633         * c-parser.c (c_parser_declspecs): Call invoke_plugin_callbacks.
19634
19635 2009-04-14  Diego Novillo  <dnovillo@google.com>
19636
19637         * doc/plugins.texi: New.
19638         * doc/gccint.texi: Add reference to Plugins chapter.
19639         * doc/invoke.texi: Document -fplugin and -fplugin-arg
19640         * diagnostic.c (diagnostic_report_diagnostic): Warn about
19641         loaded plugins, if any.
19642         * timevar.def (TV_PLUGIN_INIT): Define.
19643         (TV_PLUGIN_RUN): Define.
19644         * plugin.c: Include timevar.h
19645         (plugins_active_p): New.
19646         (dump_active_plugins): New.
19647         (debug_active_plugins): New.
19648
19649 2009-04-14  Joseph Myers  <joseph@codesourcery.com>
19650
19651         * config/sol2.h (LINK_ARCH32_SPEC_BASE): Use %R with absolute
19652         library paths.
19653         * config/sparc/sol2-bi.h (LINK_ARCH64_SPEC_BASE): Likewise.
19654
19655 2009-04-14  Kazu Hirata  <kazu@codesourcery.com>
19656
19657         * config/arm/arm.c (arm_rtx_costs_1): Treat a minus with a shift
19658         the same as a minus without a shift.
19659
19660 2009-04-14  Nick Clifton  <nickc@redhat.com>
19661
19662         * config/stormy16/stormy16.md (ineqbranch_1): Do not assume that
19663         comparisons with small integers will always produce a short
19664         branch.
19665
19666 2009-04-14  Rafael Avila de Espindola  <espindola@google.com>
19667
19668         Merge:
19669         2008-12-19  Diego Novillo  <dnovillo@google.com>
19670
19671         * cgraph.c (dump_cgraph_node): Show memory address of NODE.
19672
19673 2009-04-14  Richard Guenther  <rguenther@suse.de>
19674
19675         * tree-cfg.c (verify_gimple_assign_unary): Adjust vector code
19676         verification.
19677         (verify_gimple_assign_binary): Likewise.  Handle shifts and
19678         rotates correctly.
19679         (verify_gimple_phi): Print the mismatched argument position.
19680         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer):
19681         Fix types.
19682         (vect_update_init_of_dr): Likewise.
19683         * matrix-reorg.c (transform_access_sites): Do what the
19684         comment suggests.
19685         * omp-low.c (expand_omp_atomic_pipeline): Use the correct types.
19686
19687 2009-04-13  Michael Eager  <eager@eagercon.com>
19688
19689         * config/rs6000/rs6000-c.c: generate defines if rs6000_xilinx_fpu:
19690         _XFPU, _XFPU_SP_LITE, _XFPU_SP_FULL, _XFPU_DP_LITE, _XFPU_DP_FULL
19691         * config/rs6000/xilinx.h: New.  Spec for powerpc-xilinx-eabi
19692         * config.gcc (powerpc-xilinx-eabi): add xilinx.h to tm_file,
19693         remove duplicate config
19694
19695 2009-04-13  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
19696
19697         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Dump
19698         file_name:line_number type locator of the call site.
19699
19700 2009-04-13  Vladimir Makarov  <vmakarov@redhat.com>
19701
19702         * genautomata.c: Put blank after comma.
19703         (automaton_decls): New.
19704         (struct unit_usage): Add comments to member next.
19705         (store_alt_unit_usage): Keep the list ordered.
19706         (unit_present_on_list_p, equal_alternatives_p): New.
19707         (check_regexp_units_distribution): Check units distribution
19708         correctness correctly.
19709         (main): Don't write automata if error is found.  Return correct
19710         exit code.
19711
19712         * config/m68k/cf.md (cfv4_ds): Remove.
19713         (cfv4_pOEP1, cfv4_sOEP1, cfv4_pOEP2,cfv4_sOEP2, cfv4_pOEP3,
19714         cfv4_sOEP3): Assign to cfv4_oep instead of cfv4_ds.
19715
19716         * config/rs6000/power4.md (lsuq_power4, iq_power4, fpq_power4,
19717         power4-load-ext, power4-store, power4-store-update,
19718         power4-fpstore, power4-fpstore-update, power4-two, power4-three,
19719         power4-insert, power4-compare, power4-lmul-cmp, power4-imul-cmp,
19720         power4-lmul, , power4-imul, power4-imul3, power4-sdiv,
19721         power4-sqrt, power4-isync): Modify reservation to make correct
19722         unit distribution to automata.
19723
19724         * config/rs6000/power5.md (iq_power5, fpq_power5, power5-store,
19725         power5-store-update, power5-two, power5-three, power5-lmul,
19726         power5-imul, power5-imul3, power5-sdiv, power5-sqrt): Ditto.
19727
19728 2009-04-13  Adam Nemet  <anemet@caviumnetworks.com>
19729
19730         * except.c (pass_set_nothrow_function_flags): Set name and add
19731         TODO_dump_func.
19732         (set_nothrow_function_flags): Mention in the dump file when
19733         changing a function to nothrow.
19734
19735 2009-04-13  Ozkan Sezer  <sezeroz@gmail.com>
19736
19737         PR/39066
19738         * gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Use __SIZE_TYPE__
19739         instead of unsigned long.
19740
19741 2009-04-13  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
19742
19743         * config/arm/arm.c (return_used_this_function): Remove.
19744         (arm_output_function_prologue): Remove use of
19745         return_used_this_function.
19746         (output_return_instruction): Replace use of
19747         return_used_this_function
19748         by cfun->machine->return_used_this_function.
19749         (arm_output_epilogue): Likewise.
19750         (arm_output_function_epilogue): Likewise.
19751         (thumb_unexpanded_epilogue): Likewise.
19752         * config/arm/arm.h (struct machine_function):
19753         New member return_used_this_function.
19754
19755 2009-04-12  Mark Mitchell  <mark@codesourcery.com>
19756
19757         * doc/install.texi: Correct description of default directory for
19758         --with-gxx-include-dir.
19759
19760 2009-04-12  Eric Botcazou  <ebotcazou@adacore.com>
19761
19762         * fold-const.c (build_range_check): Properly deal with enumeral and
19763         boolean base types.
19764
19765 2009-04-12  Steven Bosscher  <steven@gcc.gnu.org>
19766
19767         * doc/invoke.texi (max_gcse_passes): Remove documentation.
19768         * params.def (PARAM_MAX_GCSE_PASSES): Remove.
19769         * params.h (MAX_GCSE_PASSES): Remove.
19770         * gcse.c (gcse_main): Run CPROP1, PRE or HOIST, and CPROP2
19771         in sequence.  Remove ability to run multiple passes.
19772         (bypass_jumps): Report run as third CPROP pass.
19773
19774 2009-04-12  Adam Nemet  <anemet@caviumnetworks.com>
19775
19776         PR middle-end/39651
19777         * except.c (can_throw_external): Look at each insn in a SEQUENCE
19778         when deciding whether the whole SEQUENCE can throw.
19779
19780 2009-04-12  Uros Bizjak  <ubizjak@gmail.com>
19781
19782         PR target/39740
19783         * config/alpha/predicates.md (local_symbolic_operand): Return 1 for
19784         offseted label references.
19785
19786 2009-04-11  Jan Hubicka  <jh@suse.cz>
19787
19788         * tree-ssa-pre.c (eliminate): Fix call of update_stmt.
19789
19790 2009-04-11  Richard Guenther  <rguenther@suse.de>
19791
19792         PR middle-end/39732
19793         * tree-inline.c (declare_return_variable): Mark DECL_BY_REFERENCE
19794         return variables as TREE_ADDRESSABLE.
19795
19796 2009-04-11  Richard Guenther  <rguenther@suse.de>
19797
19798         PR tree-optimization/39713
19799         * tree-ssa-sccvn.c (vn_get_expr_for): Make sure built
19800         reference trees have SSA_NAME operands.
19801
19802 2009-04-11  Richard Guenther  <rguenther@suse.de>
19803
19804         PR c/39712
19805         * c-gimplify.c (c_gimplify_expr): Adjust check for mismatched
19806         address expressions.
19807
19808 2009-04-11  Dave Korn  <dave.korn.cygwin@gmail.com>
19809
19810         * config/i386/cygwin-stdint.h (INT_LEAST32_TYPE):  Update to
19811         match changes in Cygwin 1.7
19812         (UINT_LEAST32_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE,
19813         UINT_FAST16_TYPE, UINT_FAST32_TYPE):  Likewise.
19814
19815 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
19816
19817         PR tree-optimization/39701
19818         * doc/invoke.texi (Optimization Options): Document change in
19819         meaning and initialization of -fdelete-null-pointer-checks.
19820
19821 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
19822
19823         PR middle-end/39701
19824         * common.opt (-fdelete-null-pointer-checks): Initialize to 1.
19825
19826         * opts.c (decode_options): Don't set flag_delete_null_pointer_checks
19827         here.
19828
19829         * doc/invoke.texi: Update -fdelete-null-pointer-checks.
19830
19831 2009-04-10  Chao-ying Fu  <fu@mips.com>
19832
19833         * doc/tm.texi (Instruction Output): Document
19834         TARGET_ASM_FINAL_POSTSCAN_INSN.
19835         * target.h (final_postscan_insn): New field in asm_out.
19836         * target-def.h (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
19837         (TARGET_ASM_OUT): Add TARGET_ASM_FINAL_POSTSCAN_INSN.
19838         * final.c (final_scan_insn): Call
19839         targetm.asm_out.final_postscan_insn after outputting
19840         an asm macro and a normal instruction.
19841
19842         * config/mips/mips.h (FINAL_PRESCAN_INSN): New define.
19843         * config/mips/mips-protos.h (mips_final_prescan_insn): Declare.
19844         * config/mips/mips.c (mips_at_reg_p): New for_each_rtx callback.
19845         (mips_final_prescan_insn, mips_final_postscan_insn): New functions.
19846         (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
19847
19848 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
19849
19850         PR middle-end/39701
19851         * fold-const.c (tree_single_nonzero_warnv_p): Pass non-static
19852         variables as non-NULL even with -fdelete-null-pointer-checks.
19853
19854 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
19855
19856         * config/rs6000/darwin-vecsave.asm: Remove extra "*/".
19857
19858 2009-04-09  H.J. Lu  <hongjiu.lu@intel.com>
19859
19860         PR target/39678
19861         * config/i386/i386.c (classify_argument): Handle SCmode with
19862         (bit_offset % 64) != 0.
19863
19864 2009-04-09  Sandra Loosemore  <sandra@codesourcery.com>
19865
19866         * doc/invoke.texi (Optimize Options): Add cross-reference to
19867         -Q --help=optimizers examples.
19868
19869 2009-04-10  Ben Elliston  <bje@au.ibm.com>
19870
19871         PR target/36800
19872         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Do not set
19873         regalign for the reg == fpr and TDmode case.
19874
19875 2009-04-09  David Ayers  <ayers@fsfe.org>
19876
19877         PR objc/29200
19878         * objc/objc-act.c (warn_with_method): Remove helper function.
19879         (check_duplicates): Call warning and inform directly.
19880         (really_start_method): Likewise.
19881
19882 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
19883
19884         * expmed.c (expand_divmod): Always use a comparison for a division
19885         by a large unsigned integer.
19886
19887         * fold-const.c (tree_single_nonzero_warnv_p): Always treat decls
19888         for things others than variables or functions as nonzero.
19889
19890 2009-04-09  Nick Clifton  <nickc@redhat.com>
19891
19892         * unwind-compat.c: Change copyright header to refer to version
19893         3 of the GNU General Public License with version 3.1 of the
19894         GCC Runtime Library Exception and to point readers at the
19895         COPYING3 and COPYING3.RUNTIME files and the FSF's license web page.
19896         * config/alpha/crtfastmath.c: Likewise.
19897         * config/alpha/linux-unwind.h: Likewise.
19898         * config/alpha/qrnnd.asm: Likewise.
19899         * config/alpha/vms-crt0-64.c: Likewise.
19900         * config/alpha/vms-crt0.c: Likewise.
19901         * config/alpha/vms-dwarf2.asm: Likewise.
19902         * config/alpha/vms-dwarf2eh.asm: Likewise.
19903         * config/alpha/vms-psxcrt0-64.c: Likewise.
19904         * config/alpha/vms-psxcrt0.c: Likewise.
19905         * config/alpha/vms_tramp.asm: Likewise.
19906         * config/arc/initfini.c: Likewise.
19907         * config/arc/lib1funcs.asm: Likewise.
19908         * config/arm/bpabi-v6m.S: Likewise.
19909         * config/arm/bpabi.S: Likewise.
19910         * config/arm/bpabi.c: Likewise.
19911         * config/arm/crti.asm: Likewise.
19912         * config/arm/crtn.asm: Likewise.
19913         * config/arm/ieee754-df.S: Likewise.
19914         * config/arm/ieee754-sf.S: Likewise.
19915         * config/arm/lib1funcs.asm: Likewise.
19916         * config/arm/libunwind.S: Likewise.
19917         * config/arm/linux-atomic.c: Likewise.
19918         * config/arm/mmintrin.h: Likewise.
19919         * config/arm/pr-support.c: Likewise.
19920         * config/arm/unaligned-funcs.c: Likewise.
19921         * config/arm/unwind-arm.c: Likewise.
19922         * config/arm/unwind-arm.h: Likewise.
19923         * config/avr/libgcc.S: Likewise.
19924         * config/bfin/crti.s: Likewise.
19925         * config/bfin/crtlibid.s: Likewise.
19926         * config/bfin/crtn.s: Likewise.
19927         * config/bfin/lib1funcs.asm: Likewise.
19928         * config/bfin/linux-unwind.h: Likewise.
19929         * config/cris/arit.c: Likewise.
19930         * config/cris/cris_abi_symbol.c: Likewise.
19931         * config/darwin-64.c: Likewise.
19932         * config/darwin-crt2.c: Likewise.
19933         * config/darwin-crt3.c: Likewise.
19934         * config/darwin.h: Likewise.
19935         * config/dbxelf.h: Likewise.
19936         * config/dfp-bit.c: Likewise.
19937         * config/dfp-bit.h: Likewise.
19938         * config/elfos.h: Likewise.
19939         * config/fixed-bit.c: Likewise.
19940         * config/fixed-bit.h: Likewise.
19941         * config/fp-bit.c: Likewise.
19942         * config/fp-bit.h: Likewise.
19943         * config/fr30/crti.asm: Likewise.
19944         * config/fr30/crtn.asm: Likewise.
19945         * config/fr30/lib1funcs.asm: Likewise.
19946         * config/freebsd-spec.h: Likewise.
19947         * config/frv/cmovd.c: Likewise.
19948         * config/frv/cmovh.c: Likewise.
19949         * config/frv/cmovw.c: Likewise.
19950         * config/frv/frvbegin.c: Likewise.
19951         * config/frv/frvend.c: Likewise.
19952         * config/frv/lib1funcs.asm: Likewise.
19953         * config/glibc-stdint.h: Likewise.
19954         * config/h8300/clzhi2.c: Likewise.
19955         * config/h8300/crti.asm: Likewise.
19956         * config/h8300/crtn.asm: Likewise.
19957         * config/h8300/ctzhi2.c: Likewise.
19958         * config/h8300/fixunssfsi.c: Likewise.
19959         * config/h8300/lib1funcs.asm: Likewise.
19960         * config/h8300/parityhi2.c: Likewise.
19961         * config/h8300/popcounthi2.c: Likewise.
19962         * config/i386/ammintrin.h: Likewise.
19963         * config/i386/att.h: Likewise.
19964         * config/i386/avxintrin.h: Likewise.
19965         * config/i386/biarch64.h: Likewise.
19966         * config/i386/bmmintrin.h: Likewise.
19967         * config/i386/cpuid.h: Likewise.
19968         * config/i386/cross-stdarg.h: Likewise.
19969         * config/i386/crtfastmath.c: Likewise.
19970         * config/i386/crtprec.c: Likewise.
19971         * config/i386/cygming-crtbegin.c: Likewise.
19972         * config/i386/cygming-crtend.c: Likewise.
19973         * config/i386/cygwin.asm: Likewise.
19974         * config/i386/emmintrin.h: Likewise.
19975         * config/i386/gmm_malloc.h: Likewise.
19976         * config/i386/gthr-win32.c: Likewise.
19977         * config/i386/i386.h: Likewise.
19978         * config/i386/immintrin.h: Likewise.
19979         * config/i386/linux-unwind.h: Likewise.
19980         * config/i386/linux64.h: Likewise.
19981         * config/i386/mm3dnow.h: Likewise.
19982         * config/i386/mmintrin-common.h: Likewise.
19983         * config/i386/mmintrin.h: Likewise.
19984         * config/i386/nmmintrin.h: Likewise.
19985         * config/i386/pmm_malloc.h: Likewise.
19986         * config/i386/pmmintrin.h: Likewise.
19987         * config/i386/smmintrin.h: Likewise.
19988         * config/i386/sol2-c1.asm: Likewise.
19989         * config/i386/sol2-ci.asm: Likewise.
19990         * config/i386/sol2-cn.asm: Likewise.
19991         * config/i386/sol2-gc1.asm: Likewise.
19992         * config/i386/tmmintrin.h: Likewise.
19993         * config/i386/unix.h: Likewise.
19994         * config/i386/w32-unwind.h: Likewise.
19995         * config/i386/wmmintrin.h: Likewise.
19996         * config/i386/x86-64.h: Likewise.
19997         * config/i386/x86intrin.h: Likewise.
19998         * config/i386/xmmintrin.h: Likewise.
19999         * config/ia64/crtbegin.asm: Likewise.
20000         * config/ia64/crtend.asm: Likewise.
20001         * config/ia64/crtfastmath.c: Likewise.
20002         * config/ia64/crti.asm: Likewise.
20003         * config/ia64/crtn.asm: Likewise.
20004         * config/ia64/fde-glibc.c: Likewise.
20005         * config/ia64/lib1funcs.asm: Likewise.
20006         * config/ia64/linux-unwind.h: Likewise.
20007         * config/ia64/quadlib.c: Likewise.
20008         * config/ia64/unwind-ia64.c: Likewise.
20009         * config/linux.h: Likewise.
20010         * config/m32c/m32c-lib1.S: Likewise.
20011         * config/m32c/m32c-lib2-trapv.c: Likewise.
20012         * config/m32c/m32c-lib2.c: Likewise.
20013         * config/m32r/initfini.c: Likewise.
20014         * config/m68hc11/larith.asm: Likewise.
20015         * config/m68hc11/m68hc11-crt0.S: Likewise.
20016         * config/m68k/cf.md: Likewise.
20017         * config/m68k/crti.s: Likewise.
20018         * config/m68k/crtn.s: Likewise.
20019         * config/m68k/lb1sf68.asm: Likewise.
20020         * config/m68k/linux-unwind.h: Likewise.
20021         * config/mcore/crti.asm: Likewise.
20022         * config/mcore/crtn.asm: Likewise.
20023         * config/mcore/lib1.asm: Likewise.
20024         * config/mips/linux-unwind.h: Likewise.
20025         * config/mips/loongson.h: Likewise.
20026         * config/mips/mips16.S: Likewise.
20027         * config/mmix/crti.asm: Likewise.
20028         * config/mmix/crtn.asm: Likewise.
20029         * config/pa/fptr.c: Likewise.
20030         * config/pa/hpux-unwind.h: Likewise.
20031         * config/pa/lib2funcs.asm: Likewise.
20032         * config/pa/linux-atomic.c: Likewise.
20033         * config/pa/linux-unwind.h: Likewise.
20034         * config/pa/milli64.S: Likewise.
20035         * config/pa/quadlib.c: Likewise.
20036         * config/pa/stublib.c: Likewise.
20037         * config/picochip/libgccExtras/adddi3.asm: Likewise.
20038         * config/picochip/libgccExtras/ashlsi3.asm: Likewise.
20039         * config/picochip/libgccExtras/ashlsi3.c: Likewise.
20040         * config/picochip/libgccExtras/ashrsi3.asm: Likewise.
20041         * config/picochip/libgccExtras/ashrsi3.c: Likewise.
20042         * config/picochip/libgccExtras/cmpsi2.asm: Likewise.
20043         * config/picochip/libgccExtras/divmod15.asm: Likewise.
20044         * config/picochip/libgccExtras/divmodhi4.asm: Likewise.
20045         * config/picochip/libgccExtras/divmodsi4.asm: Likewise.
20046         * config/picochip/libgccExtras/longjmp.asm: Likewise.
20047         * config/picochip/libgccExtras/lshrsi3.asm: Likewise.
20048         * config/picochip/libgccExtras/lshrsi3.c: Likewise.
20049         * config/picochip/libgccExtras/parityhi2.asm: Likewise.
20050         * config/picochip/libgccExtras/popcounthi2.asm: Likewise.
20051         * config/picochip/libgccExtras/setjmp.asm: Likewise.
20052         * config/picochip/libgccExtras/subdi3.asm: Likewise.
20053         * config/picochip/libgccExtras/ucmpsi2.asm: Likewise.
20054         * config/picochip/libgccExtras/udivmodhi4.asm: Likewise.
20055         * config/picochip/libgccExtras/udivmodsi4.asm: Likewise.
20056         * config/rs6000/750cl.h: Likewise.
20057         * config/rs6000/altivec.h: Likewise.
20058         * config/rs6000/biarch64.h: Likewise.
20059         * config/rs6000/crtresfpr.asm: Likewise.
20060         * config/rs6000/crtresgpr.asm: Likewise.
20061         * config/rs6000/crtresxfpr.asm: Likewise.
20062         * config/rs6000/crtresxgpr.asm: Likewise.
20063         * config/rs6000/crtsavfpr.asm: Likewise.
20064         * config/rs6000/crtsavgpr.asm: Likewise.
20065         * config/rs6000/darwin-asm.h: Likewise.
20066         * config/rs6000/darwin-fallback.c: Likewise.
20067         * config/rs6000/darwin-fpsave.asm: Likewise.
20068         * config/rs6000/darwin-ldouble.c: Likewise.
20069         * config/rs6000/darwin-tramp.asm: Likewise.
20070         * config/rs6000/darwin-unwind.h: Likewise.
20071         * config/rs6000/darwin-vecsave.asm: Likewise.
20072         * config/rs6000/darwin-world.asm: Likewise.
20073         * config/rs6000/e500crtres32gpr.asm: Likewise.
20074         * config/rs6000/e500crtres64gpr.asm: Likewise.
20075         * config/rs6000/e500crtres64gprctr.asm: Likewise.
20076         * config/rs6000/e500crtrest32gpr.asm: Likewise.
20077         * config/rs6000/e500crtrest64gpr.asm: Likewise.
20078         * config/rs6000/e500crtresx32gpr.asm: Likewise.
20079         * config/rs6000/e500crtresx64gpr.asm: Likewise.
20080         * config/rs6000/e500crtsav32gpr.asm: Likewise.
20081         * config/rs6000/e500crtsav64gpr.asm: Likewise.
20082         * config/rs6000/e500crtsav64gprctr.asm: Likewise.
20083         * config/rs6000/e500crtsavg32gpr.asm: Likewise.
20084         * config/rs6000/e500crtsavg64gpr.asm: Likewise.
20085         * config/rs6000/e500crtsavg64gprctr.asm: Likewise.
20086         * config/rs6000/eabi-ci.asm: Likewise.
20087         * config/rs6000/eabi-cn.asm: Likewise.
20088         * config/rs6000/eabi.asm: Likewise.
20089         * config/rs6000/linux-unwind.h: Likewise.
20090         * config/rs6000/linux64.h: Likewise.
20091         * config/rs6000/paired.h: Likewise.
20092         * config/rs6000/paired.md: Likewise.
20093         * config/rs6000/ppc64-fp.c: Likewise.
20094         * config/rs6000/ppu_intrinsics.h: Likewise.
20095         * config/rs6000/rs6000.h: Likewise.
20096         * config/rs6000/si2vmx.h: Likewise.
20097         * config/rs6000/sol-ci.asm: Likewise.
20098         * config/rs6000/sol-cn.asm: Likewise.
20099         * config/rs6000/spe.h: Likewise.
20100         * config/rs6000/spu2vmx.h: Likewise.
20101         * config/rs6000/sysv4.h: Likewise.
20102         * config/rs6000/tramp.asm: Likewise.
20103         * config/rs6000/vec_types.h: Likewise.
20104         * config/s390/linux-unwind.h: Likewise.
20105         * config/s390/tpf-unwind.h: Likewise.
20106         * config/score/crti.asm: Likewise.
20107         * config/score/crtn.asm: Likewise.
20108         * config/sh/crt1.asm: Likewise.
20109         * config/sh/crti.asm: Likewise.
20110         * config/sh/crtn.asm: Likewise.
20111         * config/sh/divtab-sh4-300.c: Likewise.
20112         * config/sh/divtab-sh4.c: Likewise.
20113         * config/sh/divtab.c: Likewise.
20114         * config/sh/lib1funcs-4-300.asm: Likewise.
20115         * config/sh/lib1funcs-Os-4-200.asm: Likewise.
20116         * config/sh/lib1funcs.asm: Likewise.
20117         * config/sh/lib1funcs.h: Likewise.
20118         * config/sh/linux-atomic.asm: Likewise.
20119         * config/sh/linux-unwind.h: Likewise.
20120         * config/sh/shmedia.h: Likewise.
20121         * config/sh/sshmedia.h: Likewise.
20122         * config/sh/ushmedia.h: Likewise.
20123         * config/sparc/crtfastmath.c: Likewise.
20124         * config/sparc/linux-unwind.h: Likewise.
20125         * config/sparc/sol2-c1.asm: Likewise.
20126         * config/sparc/sol2-ci.asm: Likewise.
20127         * config/sparc/sol2-cn.asm: Likewise.
20128         * config/spu/divmodti4.c: Likewise.
20129         * config/spu/divv2df3.c: Likewise.
20130         * config/spu/float_disf.c: Likewise.
20131         * config/spu/float_unsdidf.c: Likewise.
20132         * config/spu/float_unsdisf.c: Likewise.
20133         * config/spu/float_unssidf.c: Likewise.
20134         * config/spu/mfc_multi_tag_release.c: Likewise.
20135         * config/spu/mfc_multi_tag_reserve.c: Likewise.
20136         * config/spu/mfc_tag_release.c: Likewise.
20137         * config/spu/mfc_tag_reserve.c: Likewise.
20138         * config/spu/mfc_tag_table.c: Likewise.
20139         * config/spu/multi3.c: Likewise.
20140         * config/spu/spu_internals.h: Likewise.
20141         * config/spu/spu_intrinsics.h: Likewise.
20142         * config/spu/spu_mfcio.h: Likewise.
20143         * config/spu/vec_types.h: Likewise.
20144         * config/spu/vmx2spu.h: Likewise.
20145         * config/stormy16/stormy16-lib2.c: Likewise.
20146         * config/svr4.h: Likewise.
20147         * config/sync.c: Likewise.
20148         * config/v850/lib1funcs.asm: Likewise.
20149         * config/vxlib-tls.c: Likewise.
20150         * config/vxlib.c: Likewise.
20151         * config/vxworks-dummy.h: Likewise.
20152         * config/xtensa/crti.asm: Likewise.
20153         * config/xtensa/crtn.asm: Likewise.
20154         * config/xtensa/ieee754-df.S: Likewise.
20155         * config/xtensa/ieee754-sf.S: Likewise.
20156         * config/xtensa/lib1funcs.asm: Likewise.
20157         * config/xtensa/lib2funcs.S: Likewise.
20158         * config/xtensa/linux-unwind.h: Likewise.
20159         * config/xtensa/unwind-dw2-xtensa.c: Likewise.
20160         * config/xtensa/unwind-dw2-xtensa.h: Likewise.
20161         * coretypes.h: Likewise.
20162         * crtstuff.c: Likewise.
20163         * defaults.h: Likewise.
20164         * dwarf2.h: Likewise.
20165         * emutls.c: Likewise.
20166         * gbl-ctors.h: Likewise.
20167         * gcov-io.h: Likewise.
20168         * ginclude/float.h: Likewise.
20169         * ginclude/iso646.h: Likewise.
20170         * ginclude/stdarg.h: Likewise.
20171         * ginclude/stdbool.h: Likewise.
20172         * ginclude/stddef.h: Likewise.
20173         * ginclude/stdfix.h: Likewise.
20174         * ginclude/stdint-gcc.h: Likewise.
20175         * ginclude/tgmath.h: Likewise.
20176         * gthr-aix.h: Likewise.
20177         * gthr-dce.h: Likewise.
20178         * gthr-gnat.c: Likewise.
20179         * gthr-gnat.h: Likewise.
20180         * gthr-lynx.h: Likewise.
20181         * gthr-mipssde.h: Likewise.
20182         * gthr-nks.h: Likewise.
20183         * gthr-posix.c: Likewise.
20184         * gthr-posix.h: Likewise.
20185         * gthr-posix95.h: Likewise.
20186         * gthr-rtems.h: Likewise.
20187         * gthr-single.h: Likewise.
20188         * gthr-solaris.h: Likewise.
20189         * gthr-tpf.h: Likewise.
20190         * gthr-vxworks.h: Likewise.
20191         * gthr-win32.h: Likewise.
20192         * gthr.h: Likewise.
20193         * libgcc2.c: Likewise.
20194         * libgcc2.h: Likewise.
20195         * libgcov.c: Likewise.
20196         * tsystem.h: Likewise.
20197         * typeclass.h: Likewise.
20198         * unwind-c.c: Likewise.
20199         * unwind-compat.h: Likewise.
20200         * unwind-dw2-fde-compat.c: Likewise.
20201         * unwind-dw2-fde-darwin.c: Likewise.
20202         * unwind-dw2-fde-glibc.c: Likewise.
20203         * unwind-dw2-fde.c: Likewise.
20204         * unwind-dw2-fde.h: Likewise.
20205         * unwind-dw2.c: Likewise.
20206         * unwind-dw2.h: Likewise.
20207         * unwind-generic.h: Likewise.
20208         * unwind-pe.h: Likewise.
20209         * unwind-sjlj.c: Likewise.
20210         * unwind.inc: Likewise.
20211         * config/arm/neon-gen.ml: Change generated copyright header to
20212         refer to version 3 of the GNU General Public License with
20213         version 3.1 of the GCC Runtime Library Exception and to point
20214         readers at the COPYING3 and COPYING3.RUNTIME files and the
20215         FSF's license web page.
20216         * config/arm/arm_neon.h: Regenerate.
20217
20218 2009-04-09  Jakub Jelinek  <jakub@redhat.com>
20219
20220         * config/cris/cris.md: Change copyright header to refer to version
20221         3 of the GNU General Public License.
20222         * doc/install.texi2html: Change copyright header to refer to version
20223         3 of the GNU General Public License and to point readers at the
20224         COPYING3 file and the FSF's license web page.
20225         * config/vax/linux.h: Likewise.
20226
20227 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
20228
20229         * config/i386/i386.md (cmpcc): New.
20230         * config/i386/sync.md (sync_compare_and_swap*): Set FLAGS_REG.
20231         (sync_compare_and_swap_cc*): Delete.
20232
20233         * config/s390/s390.c (s390_compare_emitted): Remove.
20234         (s390_emit_compare): Handle MODE_CC s390_compare_op0 like
20235         s390_compare_emitted used to be handled.  Assert that modes match.
20236         (s390_emit_compare_and_swap): Use s390_emit_compare, do not
20237         refer to sync_compare_and_swap_ccsi.
20238         * config/s390/s390.h (s390_compare_emitted): Remove.
20239         * config/s390/s390.md (seq): Look for MODE_CC s390_compare_op0
20240         instead of s390_compare_emitted.
20241         (stack_protect_test, sync_compare_and_swap_cc): Set s390_compare_op0
20242         instead of s390_compare_emitted.
20243         * config/s390/s390.md (cmpcc): New.
20244         (sync_compare_and_swapqi, sync_compare_and_swaphi): Clobber
20245         CC_REGNUM, do not pretend it's set.
20246         (sync_compare_and_swap_cc*): Delete.
20247         * config/s390/predicates.md (cc_reg_operand): New.
20248
20249         * expr.c (sync_compare_and_swap_cc): Delete.
20250         * optabs.h (sync_compare_and_swap_cc): Delete.
20251         * optabs.c (prepare_cmp_insn): Ignore which specific CCmode
20252         is being used with can_compare_p.
20253         (emit_cmp_and_jump_insn_1): Likewise when looking in the optab.
20254         (find_cc_set): New.
20255         (expand_bool_compare_and_swap): Do not use sync_compare_and_swap_cc,
20256         look for a MODE_CC set instead.  Use emit_store_flag.
20257         (expand_compare_and_swap_loop): Likewise, with some additional
20258         complication to avoid a force_reg when useless.  Use
20259         emit_cmp_and_jump_insns.
20260         * genopinit.c (optabs): Delete sync_compare_and_swap_cc.
20261         * doc/md.texi (sync_compare_and_swap_cc): Merge with
20262         sync_compare_and_swap documentation.
20263
20264 2009-04-09  Jan Hubicka  <jh@suse.cz>
20265
20266         * except.c (find_prev_try): Break out from ....
20267         (duplicate_eh_regions): ... here; properly update prev_try pointers
20268         when duplication part of tree.
20269         (dump_eh_tree): Improve dumping.
20270         (verify_eh_region): New.
20271         (verify_eh_tree): Use it.
20272
20273 2009-04-06  Richard Guenther  <rguenther@suse.de>
20274
20275         * c-gimplify.c (c_gimplify_expr): Fix the invalid GENERIC
20276         &ARRAY addresses by adjusting their types and prepending
20277         a conversion.
20278         * tree-cfg.c (verify_gimple_assign_single): Verify that
20279         addresses are correct.
20280
20281 2009-04-09  Richard Guenther  <rguenther@suse.de>
20282
20283         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Move non-constant
20284         indices into an array reference if possible.
20285         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
20286         Fold POINTER_PLUS_EXPR statements with invariant address.
20287
20288 2009-04-09  Alan Modra  <amodra@bigpond.net.au>
20289
20290         PR target/39634
20291         * config.gcc (powerpc64-*-linux*): Always build biarch.
20292
20293 2009-04-09  Joseph Myers  <joseph@codesourcery.com>
20294
20295         PR c/39613
20296         * c-typeck.c (do_case): If case label is not an INTEGER_CST, fold
20297         it and pedwarn if this results in an INTEGER_CST.
20298
20299 2009-04-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
20300
20301         * doc/install.texi: Update minimum GMP version.  Remove obsolete
20302         text in MPFR section.
20303
20304 2009-04-08  Jakub Jelinek  <jakub@redhat.com>
20305
20306         * dwarf2out.c (class_scope_p): New static inline.
20307         (class_or_namespace_scope_p): Use it.
20308         (gen_variable_die): Use DW_TAG_member tag for static data member
20309         declarations instead of DW_TAG_variable.
20310
20311         PR middle-end/39573
20312         * omp-low.c (expand_omp_taskreg): Finalize taskreg static local_decls
20313         variables.
20314
20315 2009-04-08  Richard Guenther  <rguenther@suse.de>
20316
20317         * tree-ssa-sccvn.c (valueize_refs): Do not continue to
20318         valueize random data.
20319
20320 2009-04-08  David Edelsohn  <edelsohn@gnu.org>
20321
20322         * config.gcc (aix tm_file):  Add aix-stdint.h.
20323         (aix tm clause use_gcc_stdint):  Set to wrap.
20324         * config/rs6000/aix-stdint.h:  New file.
20325
20326 2009-04-08  Richard Guenther  <rguenther@suse.de>
20327
20328         PR middle-end/36291
20329         * tree-dfa.c (add_referenced_var): Do not recurse into
20330         global initializers.
20331         * tree-ssa-ccp.c (get_symbol_constant_value): Add newly
20332         exposed variables.
20333         (fold_const_aggregate_ref): Likewise.
20334
20335 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
20336
20337         * recog.c (ordered_comparison_operator): New.
20338         * gensupport.c (std_preds): Add it.
20339         * doc/md.texi (Machine-Independent Predicates): Document it.
20340
20341 2009-04-08  Jan Hubicka  <jh@suse.cz>
20342
20343         * tree-eh.c (cleanup_eh): When not optimizing, do not try EH merging.
20344         * function.h (rtl_eh): Remove exception_handler_label_map.
20345         * except.c (ehl_hash, ehl_eq, add_ehl_entry,
20346         remove_exception_handler_label, for_each_eh_label_1): Remove.
20347         (rtl_remove_unreachable_regions): Remove.
20348         (convert_from_eh_region_ranges): Do not remove unreachable regions.
20349         (find_exception_handler_labels): Don't build the hashtable.
20350         (maybe_remove_eh_handler): Remove.
20351         (for_each_eh_label): Rewrite to walk the tree.
20352         (rest_of_handle_eh): Do not cleanup cfg prior EH construction.
20353         * except.h (maybe_remove_eh_handler): Remove.
20354         * passes.c (init_optimization_passes): Schedule second EH cleanup
20355         before out-of-ssa.
20356         * cfgrtl.c (rtl_delete_block, rtl_merge_blocks,
20357         cfg_layout_merge_blocks): Do not call maybe_remove_eh_handler.
20358
20359 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
20360
20361         * genoutput.c (validate_optab_operands): New.
20362         (gen_insn, gen_expand): Call it.
20363
20364         * genflags.c (gen_insn): Detect misused iterators.
20365         (main): Pass line_no to gen_insn, exit with status 1 on error.
20366
20367         * genextract.c (line_no): Make global.
20368         (VEC_safe_set_locstr): Change assertion to error message.
20369         (main): Exit with status 1 on error.
20370
20371 2009-04-08  Joseph Myers  <joseph@codesourcery.com>
20372
20373         PR c/39614
20374         PR c/39673
20375         * c-common.h (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
20376         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
20377         EXPR_INT_CONST_OPERANDS): Remove duplicate definitions.
20378         * c-convert.c (convert): Do not call fold on results of conversion
20379         functions when the result is a C_MAYBE_CONST_EXPR.
20380         * c-parser.c (c_parser_postfix_expression): Do not fold condition
20381         of __builtin_choose_expr.
20382         * c-typeck.c (remove_c_maybe_const_expr): New.
20383         (build_unary_op, build_conditional_expr, build_compound_expr,
20384         build_binary_op, c_objc_common_truthvalue_conversion): Call
20385         remove_c_maybe_const_expr on any input C_MAYBE_CONST_EXPR with
20386         integer operands.
20387
20388 2009-04-08  Bingfeng Mei  <bmei@broadcom.com>
20389
20390         * fold-const.c (const_binop): Combine two VECTOR_CST under operation
20391         CODE to produce a new one. Add a prototype to use fold_convert_const
20392
20393 2009-04-08  Danny Smith  <dannysmith@users.sourceforge.net>
20394
20395         PR bootstrap/39660
20396         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Don't
20397         mix declarations and code.
20398
20399 2009-04-08  Ben Elliston  <bje@au.ibm.com>
20400
20401         * gcc.c: Replace `CC' with `GCC' throughout.
20402
20403 2009-04-07  H.J. Lu  <hongjiu.lu@intel.com>
20404
20405         * doc/invoke.texi: Document Atom support.
20406
20407 2009-04-07  Jason Merrill  <jason@redhat.com>
20408
20409         PR c++/25185
20410         * c-common.h, c-common.c: Add flag_pretty_templates.
20411         * c-opts.c (c_common_handle_option): Set it.
20412         * c.opt: Add -fno-pretty-templates.
20413         * doc/invoke.texi (C++ Dialect Options): Likewise.
20414
20415 2009-04-07  Uros Bizjak  <ubizjak@gmail.com>
20416
20417         * config/ia64/ia64.c (ia64_builtins): Add IA64_BUILTIN_HUGE_VALQ.
20418         (ia64_init_builtins): Handle IA64_BUILTIN_HUGE_VALQ.
20419         (ia64_expand_builtin): Likewise.
20420
20421 2009-04-07  Martin Jambor  <mjambor@suse.cz>
20422
20423         * tree-ssa-alias.c (refs_may_alias_p_1): Check for
20424         is_gimple_min_invariant rather than CONSTANT_CLASS_P so that invariant
20425         ADDR_EXPRS are include too.
20426
20427 2009-04-07  Richard Guenther  <rguenther@suse.de>
20428
20429         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Non-aliased
20430         decls are only used if passes as parameters or if they are
20431         local statics and the call is not to a builtin.
20432         (call_may_clobber_ref_p_1): Likewise.
20433
20434 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
20435
20436         * expr.c (do_store_flag): Remove last argument.  Simplify code
20437         to avoid duplication of tests already done by can_compare_p.
20438         (expand_expr_real_1): Adjust caller.
20439
20440 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
20441
20442         * optabs.c (can_compare_p): Test the predicate of a
20443         cbranch and cstore pattern.
20444
20445 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
20446
20447         * expr.c (convert_move): Use emit_store_flag instead of
20448         "emulating" it.
20449
20450 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
20451
20452         * config/i386/i386.c (ix86_compare_emitted): Remove.
20453         (ix86_expand_compare, ix86_expand_branch): Handle MODE_CC
20454         ix86_compare_op0 like ix86_compare_emitted used to be handled.
20455         * config/i386/i386.h (ix86_compare_emitted): Remove.
20456         * config/i386/i386.md (stack_protect_test): Set ix86_compare_op0
20457         instead of ix86_compare_emitted.
20458         * config/i386/sync.md (sync_compare_and_swap_cc): Likewise.
20459
20460 2009-04-07  Andrew Stubbs  <ams@codesourcery.com>
20461
20462         * config.gcc (sh-*-*): Add sysroot-suffix.h to tm_file.
20463         Add t-sysroot-suffix to tmake_file.
20464         * config/print-sysroot-suffix.sh: New file.
20465         * config/t-sysroot-suffix: New file.
20466
20467 2009-04-07  Ben Elliston  <bje@au.ibm.com>
20468
20469         * libgcc2.c (INFINITY): Use __builtin_huge_val, not __builtin_inf,
20470         as the latter produces a warning when the target does not support
20471         infinity.
20472
20473 2009-04-07  Ben Elliston  <bje@au.ibm.com>
20474
20475         * dfp.c: Replace type punning assignments with memcpy throughout.
20476         * Makefile.in (dfp.o-warn): Remove.
20477
20478 2009-04-07  Alan Modra  <amodra@bigpond.net.au>
20479
20480         PR target/39634
20481         * config.gcc: Merge powerpc-*-linux* and powerpc64-*-linux*.
20482         Include soft-fp/t-softfp after rs6000/t-linux64.
20483
20484 2009-04-06  Eric Botcazou  <ebotcazou@adacore.com>
20485
20486         * stor-layout.c (set_sizetype): Use the full precision of their
20487         machine mode for bitsize types.
20488
20489 2009-04-06  H.J. Lu  <hongjiu.lu@intel.com>
20490
20491         * config/i386/i386.md: Revert 2 accidental checkins.
20492
20493 2009-04-06  Joey Ye  <joey.ye@intel.com>
20494             Xuepeng Guo  <xuepeng.guo@intel.com>
20495             H.J. Lu  <hongjiu.lu@intel.com>
20496
20497         Atom pipeline model, tuning and insn selection.
20498         * config.gcc (atom): Add atom config options and target.
20499
20500         * config/i386/atom.md: New.
20501
20502         * config/i386/i386.c (atom_cost): New cost.
20503         (m_ATOM): New macro flag.
20504         (initial_ix86_tune_features): Set m_ATOM.
20505         (x86_accumulate_outgoing_args): Likewise.
20506         (x86_arch_always_fancy_math_387): Likewise.
20507         (processor_target): Add Atom cost.
20508         (cpu_names): Add Atom cpu name.
20509         (override_options): Set Atom ISA.
20510         (ix86_issue_rate): New case PROCESSOR_ATOM.
20511         (ix86_adjust_cost): Likewise.
20512
20513         * config/i386/i386.h (TARGET_ATOM): New target macro.
20514         (ix86_tune_indices): Add X86_TUNE_OPT_AGU.
20515         (TARGET_OPT_AGU): New target option.
20516         (target_cpu_default): Add TARGET_CPU_DEFAULT_atom.
20517         (processor_type): Add PROCESSOR_ATOM.
20518
20519         * config/i386/i386.md (cpu): Add new value "atom".
20520         (use_carry, movu): New attr.
20521         (atom.md): Include atom.md.
20522         (adddi3_carry_rex64): Set attr "use_carry".
20523         (addqi3_carry): Likewise.
20524         (addhi3_carry): Likewise.
20525         (addsi3_carry): Likewise.
20526         (*addsi3_carry_zext): Likewise.
20527         (subdi3_carry_rex64): Likewise.
20528         (subqi3_carry): Likewise.
20529         (subhi3_carry): Likewise.
20530         (subsi3_carry): Likewise.
20531         (x86_movdicc_0_m1_rex64): Likewise.
20532         (*x86_movdicc_0_m1_se): Likewise.
20533         (x86_movsicc_0_m1): Likewise.
20534         (*x86_movsicc_0_m1_se): Likewise.
20535         (*adddi_1_rex64): Emit add insn as much as possible.
20536         (*addsi_1): Likewise.
20537         (return_internal): Set atom_unit.
20538         (return_internal_long): Likewise.
20539         (return_pop_internal): Likewise.
20540         (*rcpsf2_sse): Set atom_sse_attr attr.
20541         (*qrt<mode>2_sse): Likewise.
20542         (*prefetch_sse): Likewise.
20543
20544         * config/i386/i386-c.c (ix86_target_macros_internal): New case
20545         PROCESSOR_ATOM.
20546         (ix86_target_macros_internal): Likewise.
20547
20548         * config/i386/sse.md (cpu): Set attr "atom_sse_attr".
20549         (*prefetch_sse_rex): Likewise.
20550         (sse_rcpv4sf2): Likewise.
20551         (sse_vmrcpv4sf2): Likewise.
20552         (sse_sqrtv4sf2): Likewise.
20553         (<sse>_vmsqrt<mode>2): Likewise.
20554         (sse_ldmxcsr): Likewise.
20555         (sse_stmxcsr): Likewise.
20556         (*sse_sfence): Likewise.
20557         (sse2_clflush): Likewise.
20558         (*sse2_mfence): Likewise.
20559         (*sse2_lfence): Likewise.
20560         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Set attr "movu".
20561         (<sse>_movup<ssemodesuffixf2c>): Likewise.
20562         (avx_movdqu<avxmodesuffix>): Likewise.
20563         (avx_lddqu<avxmodesuffix>): Likewise.
20564         (sse2_movntv2di): Change attr "type" to "ssemov".
20565         (sse2_movntsi): Likewise.
20566         (rsqrtv8sf2): Change attr "type" to "sseadd".
20567         (sse3_addsubv2df3): Set attr "atom_unit".
20568         (sse3_h<plusminus_insn>v4sf3): Likewise.
20569         (*sse2_pmaddwd): Likewise.
20570         (*vec_extractv2di_1_rex64): Likewise.
20571         (*vec_extractv2di_1_avx): Likewise.
20572         (sse2_psadbw): Likewise.
20573         (ssse3_phaddwv8hi3): Likewise.
20574         (ssse3_phaddwv4hi3): Likewise.
20575         (ssse3_phadddv4si3): Likewise.
20576         (ssse3_phadddv2si3): Likewise.
20577         (ssse3_phaddswv8hi3): Likewise.
20578         (ssse3_phaddswv4hi3): Likewise.
20579         (ssse3_phsubwv8hi3): Likewise.
20580         (ssse3_phsubwv4hi3): Likewise.
20581         (ssse3_phsubdv4si3): Likewise.
20582         (ssse3_phsubdv2si3): Likewise.
20583         (ssse3_phsubswv8hi3): Likewise.
20584         (ssse3_phsubswv4hi3): Likewise.
20585         (ssse3_pmaddubsw128): Likewise.
20586         (sse3_pmaddubsw: Likewise.
20587         (ssse3_palignrti): Likewise.
20588         (ssse3_palignrdi): Likewise.
20589
20590 2009-04-06  Gerald Pfeifer  <gerald@pfeifer.com>
20591
20592         * doc/install.texi (Specific): Fix two cross-references to MinGW.
20593
20594 2009-04-06  Richard Guenther  <rguenther@suse.de>
20595
20596         PR tree-optimization/28868
20597         * tree-ssa-pre.c (inserted_phi_names): New bitmap to keep track
20598         of which PHI results we inserted.
20599         (insert_into_preds_of_block): Record inserted PHIs.
20600         (eliminate): Eliminate redundant PHI nodes.
20601         (init_pre): Init inserted_phi_names.
20602
20603 2009-04-06  Richard Guenther  <rguenther@suse.de>
20604
20605         PR tree-optimization/39643
20606         * tree-ssa-ccp.c (ccp_fold): Fold REALPART_EXPRs and
20607         IMAGPART_EXPRs of complex constants.
20608         (execute_fold_all_builtins): If we folded a call queue
20609         TODO_update_address_taken.
20610
20611 2009-04-06  Jan Hubicka  <jh@suse.cz>
20612
20613         PR middle-end/39659
20614         * except.c (remove_unreachable_regions): Propagate may_contain_throw
20615         flag.
20616
20617 2009-04-06  Andrew Stubbs  <ams@codesourcery.com>
20618
20619         * config/sh/lib1funcs.asm (ic_invalidate): Move ICBI out of the
20620         delay slot.
20621         (ic_invalidate_array): Likewise.
20622
20623 2009-04-06  Hariharan Sandanagobalane  <hariharan@picochip.com>
20624
20625         * calls.c (emit_library_call_value_1): Fix a problem with parameter
20626         alignment for library calls.
20627
20628 2009-04-06  Danny Smith  <dannysmith@users.sourceforge.net>
20629
20630         * config.gcc (mingw32 tm_file):  Add mingw-stdint.h.
20631         (mingw32 tm clause use_gcc_stdint):  Set to wrap.
20632         * config/i386/mingw-stdint.h:  New file.
20633
20634 2009-04-05  Richard Guenther  <rguenther@suse.de>
20635
20636         PR tree-optimization/39648
20637         * tree-ssa-sccvn.c (vn_reference_fold_indirect): Work around
20638         our &A vs. &A[0] IL deficiencies.
20639
20640 2009-04-04  Jan Hubicka  <jh@suse.cz>
20641
20642         * except.c (sjlj_find_directly_reachable_regions): Be ready for
20643         removed toplevel regions.
20644         (sjlj_mark_call_sites): Likewise.
20645
20646 2009-04-04  Dave Korn  <dave.korn.cygwin@gmail.com>
20647
20648         * config.gcc (cygwin tm_file):  Add cygwin-stdint.h.
20649         (cygwin tm clause use_gcc_stdint):  Set to wrap.
20650         * config/i386/cygwin-stdint.h:  New file.
20651
20652 2009-04-04  Richard Guenther  <rguenther@suse.de>
20653
20654         * Makefile.in (tree-ssa-copy.o): Add $(CFGLOOP_H) dependency.
20655         * tree-ssa-copy.c (init_copy_prop): Do not propagate through
20656         single-argument PHIs if we are in loop-closed SSA form.
20657         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Pass extra guards
20658         for the pre-condition.
20659         (slpeel_tree_peel_loop_to_edge): Likewise.
20660         (vect_build_loop_niters): Take an optional sequence to append stmts.
20661         (vect_generate_tmps_on_preheader): Likewise.
20662         (vect_do_peeling_for_loop_bound): Take extra guards for the
20663         pre-condition.
20664         (vect_do_peeling_for_alignment): Adjust.  Unconditionally apply
20665         the cost model check.
20666         (vect_loop_versioning): Take stmt and stmt list to put pre-condition
20667         guards if we are going to peel.  Do not apply versioning in that case.
20668         * tree-vectorizer.h (vect_loop_versioning): Adjust declaration.
20669         (vect_do_peeling_for_loop_bound): Likewise.
20670         * tree-vect-loop.c (vect_transform_loop): If we are peeling for
20671         loop bound only record extra pre-conditions, do not apply loop
20672         versioning.
20673
20674 2009-04-04  Richard Guenther  <rguenther@suse.de>
20675
20676         * tree-ssa-operands.c (pop_stmt_changes): Remove automatic
20677         renaming code.
20678
20679 2009-04-04  Jan Hubicka  <jh@suse.cz>
20680
20681         * tree-ssa-uncprop.c (associate_equivalences_with_edges): Use
20682         last_basic_block for size of bb->index indexed array.
20683         * bt-load.c (compute_defs_uses_and_gen, compute_kill,
20684         compute_out, link_btr_uses, build_btr_def_use_webs,
20685         build_btr_def_use_webs, migrate_btr_defs): Likewise.
20686
20687 2009-04-04  Jan Hubicka  <jh@suse.cz>
20688
20689         * except.c (remove_eh_handler_and_replace): Break out from ...
20690         (remove_eh_handler): ... here.
20691         (bring_to_root): New function.
20692         (remove_unreachable_regions): Collect MUST_NOT_THROW, unify runtime
20693         handled ones, bring others to root of tree.
20694
20695 2009-04-04  Jan Hubicka  <jh@suse.cz>
20696
20697         * tree-eh.c (tree_empty_eh_handler_p): Pattern match more curefully.
20698         (all_phis_safe_to_merge): New function.
20699         (update_info): New structure.
20700         (make_eh_edge_and_update_phi, update_eh_edges): New functions.
20701         (cleanup_empty_eh): Update SSA if possible.
20702
20703 2009-04-04  Richard Guenther  <rguenther@suse.de>
20704
20705         * tree-ssa.c (verify_ssa): With -O0 we do not need VOPs.
20706         * tree-ssa-operands.c (append_vdef): Do not append VOPs at -O0.
20707         (append_vuse): Likewise.
20708
20709 2009-04-04  Jakub Jelinek  <jakub@redhat.com>
20710
20711         * unwind-dw2.h (_Unwind_FrameState): Add REG_UNDEFINED enum value.
20712         * unwind-dw2.c (execute_cfa_program): Set how to REG_UNDEFINED
20713         instead of REG_UNSAVED for DW_CFA_undefined.
20714         (uw_update_context_1): Handle REG_UNDEFINED the same as REG_UNSAVED.
20715         (uw_update_context): If RA column is REG_UNDEFINED, mark it as
20716         outermost frame.
20717
20718 2009-04-04  Richard Earnshaw  <rearnsha@arm.com>
20719
20720         PR target/39501
20721         * arm.md (movsfcc): Disable if not TARGET_HARD_FLOAT.
20722         * testsuite/gcc.c-torture/execute/pr39501.c: New file.
20723         * testsuite/gcc.c-torture/execute/pr39501.x: New file.
20724
20725 2009-04-04  Richard Guenther  <rguenther@suse.de>
20726
20727         PR tree-optimization/8781
20728         PR tree-optimization/37892
20729         * tree-ssa-sccvn.h (vn_reference_fold_indirect): Declare.
20730         * tree-ssa-sccvn.c (vn_reference_fold_indirect): New function.
20731         (valueize_refs): Call it for *& valueizations.
20732         (shared_reference_ops_from_ref): Rename to ...
20733         (valueize_shared_reference_ops_from_ref): ... this and valueize.
20734         (shared_reference_ops_from_call): Rename to ...
20735         (valueize_shared_reference_ops_from_call): ... this and valueize.
20736         (vn_reference_lookup): Update.
20737         (visit_reference_op_call): Likewise.
20738         * tree-ssa-pre.c (phi_translate_1): Fold *&.
20739         (eliminate): Value-replace the call address in call statements.
20740
20741 2009-04-04  Richard Guenther  <rguenther@suse.de>
20742
20743         PR tree-optimization/39636
20744         * tree-ssa-forwprop.c
20745         (forward_propagate_addr_into_variable_array_index): Check for
20746         GIMPLE_ASSIGN before accessing the rhs code.
20747
20748 2009-04-03  Jason Merrill  <jason@redhat.com>
20749
20750         * stor-layout.c (set_sizetype): Set TYPE_CANONICAL.
20751
20752 2009-04-03  Steve Ellcey  <sje@cup.hp.com>
20753
20754         * config/ia64/ia64.md (extendsfdf2, extendsfxf2, extenddfxf2,
20755         truncdfsf2, truncxfsf2, truncxfdf2, floatdixf2, fix_truncsfdi2,
20756         fix_truncdfdi2, fix_truncxfdi2, fix_truncxfdi2_alts, floatunsdisf2,
20757         floatunsdidf2, floatunsdixf2, fixuns_truncsfdi2, fixuns_truncdfdi2,
20758         fixuns_truncxfdi2, fixuns_truncxfdi2_alts, divsi3_internal,
20759         smuldi3_highpart, umuldi3_highpart, ctzdi2, *getf_exp_xf,
20760         divdi3_internal_lat, divdi3_internal_thr, mulditi3, *mulditi3_internal,
20761         umulditi3, *umulditi3_internal, addsf3, mulsf3, abssf2, negsf2,
20762         *nabssf2, sminsf3, smaxsf3, *maddsf4, *msubsf4, *nmulsf3, *nmaddsf4,
20763         *nmaddsf4_alts, divsf3, *sqrt_approx, sqrtsf2, sqrtsf2_internal_thr,
20764         adddf3, *adddf3_trunc, muldf3, *muldf3_trunc, absdf2, negdf2, *nabsdf2,
20765         smindf3, smaxdf3, *madddf4, *madddf4_trunc, *msubdf4, *msubdf4_trunc,
20766         *nmuldf3, *nmuldf3_trunc, *nmadddf4, *nmadddf4_alts, *nmadddf4_truncsf,
20767         *nmadddf4_truncsf_alts, divdf3, sqrtdf2, sqrtdf2_internal_thr, divxf3,
20768         sqrtxf2, sqrtxf2_internal_thr, *recip_approx):
20769         Use fr_reg_or_fp01_operand instead of fr_register_operand
20770
20771         * config/ia64/div.md (extend<mode>rf2, truncrf<mode>2,
20772         recip_approx_rf, divsf3_internal_thr, divsf3_internal_lat,
20773         divdf3_internal_thr, divdf3_internal_lat divxf3_internal): Ditto.
20774
20775 2009-04-03  Vladimir Makarov  <vmakarov@redhat.com>
20776
20777         PR rtl-optimization/39607
20778         PR rtl-optimization/39631
20779
20780         Revert:
20781
20782         2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
20783         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
20784         instead of DF_LR_OUT.
20785         * ira-lives.c (process_bb_node_lives): Ditto.
20786         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
20787         instead of DF_LR_{OUT,IN}.
20788         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
20789         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
20790
20791 2009-04-03  Steven Bosscher  <steven@gcc.gnu.org>
20792
20793         * omp-low.c (pass_expand_omp): Don't claim to provide PROP_gimple_lomp.
20794         (execute_lower_omp): Always run but take the short way out if -fopenmp
20795         is not given.
20796         (gate_lower_omp): Remove, forcing the pass manager to always run the
20797         pass and always set PROP_gimple_lomp.
20798         (pass_lower_omp): Remove gate function.
20799         * matrix-reorg.c (pass_ipa_matrix_reorg): Don't claim to provide
20800         PROP_trees.  Instead, require it.
20801         * ipa-cp.c (pass_ipa_cp): Likewise.
20802         * ipa-inline.c (pass_early_inline): Don't claim to provide PROP_cfg.
20803         (pass_ipa_early_inline, pass_inline_parameters, pass_ipa_inline): Idem.
20804         * tree-profile.c (pass_tree_profile): Don't claim to provide PROP_cfg
20805         and PROP_gimple_leh.
20806
20807 2009-04-03  Richard Guenther  <rguenther@suse.de>
20808
20809         PR middle-end/13146
20810         PR tree-optimization/23940
20811         PR tree-optimization/33237
20812         PR middle-end/33974
20813         PR middle-end/34093
20814         PR tree-optimization/36201
20815         PR tree-optimization/36230
20816         PR tree-optimization/38049
20817         PR tree-optimization/38207
20818         PR tree-optimization/38230
20819         PR tree-optimization/38301
20820         PR tree-optimization/38585
20821         PR middle-end/38895
20822         PR tree-optimization/38985
20823         PR tree-optimization/39299
20824         * tree-ssa-structalias.h: Remove.
20825         * tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
20826         (NULL_DEF_OPERAND_P): Make of type def_operand_p.
20827         (struct vuse_element_d): Remove.
20828         (struct vuse_vec_d): Likewise.
20829         (VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
20830         VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
20831         SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
20832         VUSE_ELEMENT_VAR): Likewise.
20833         (struct voptype_d): Likewise.
20834         (NUM_VOP_FREE_BUCKETS): Likewise.
20835         (struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
20836         (struct stmt_operands_d): Remove.
20837         (VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
20838         VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
20839         VDEF_NUM, VDEF_VECT): Likewise.
20840         (copy_virtual_operands): Remove.
20841         (operand_build_cmp): Likewise.
20842         (create_ssa_artificial_load_stmt): Likewise.
20843         (enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
20844         (struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
20845         vuse_index and mayuse_index members.  Pack and move done and iter_type
20846         members to the front.
20847         (SSA_OP_VMAYUSE): Remove.
20848         (SSA_OP_VIRTUAL_USES): Adjust.
20849         (FOR_EACH_SSA_VDEF_OPERAND): Remove.
20850         (unlink_stmt_vdef): Declare.
20851         (add_to_addressable_set): Remove.
20852         * tree-vrp.c (stmt_interesting_for_vrp): Adjust.
20853         (vrp_visit_stmt): Likewise.
20854         * doc/tree-ssa.texi (Alias analysis): Update.
20855         * doc/invoke.texi (max-aliased-vops): Remove docs.
20856         (avg-aliased-vops): Likewise.
20857         * tree-into-ssa.c (syms_to_rename): Remove.
20858         (need_to_update_vops_p): Likewise.
20859         (need_to_initialize_update_ssa_p): Rename to ...
20860         (update_ssa_initialized_fn): ... this.  Track function we are
20861         initialized for.
20862         (symbol_marked_for_renaming): Simplify.
20863         (add_new_name_mapping): Do not set need_to_update_vops_p.
20864         (dump_currdefs): Use SYMS_TO_RENAME.
20865         (rewrite_update_stmt): Always walk all uses/defs.
20866         (dump_update_ssa): Adjust.
20867         (init_update_ssa): Take function argument.  Track what we are
20868         initialized for.
20869         (delete_update_ssa): Reset SYMS_TO_RENAME and update_ssa_initialized_fn.
20870         (create_new_def_for): Initialize for cfun, assert we are initialized
20871         for cfun.
20872         (mark_sym_for_renaming): Simplify.
20873         (mark_set_for_renaming): Do not initialize update-ssa.
20874         (need_ssa_update_p): Simplify.  Take function argument.
20875         (name_mappings_registered_p): Assert we ask for the correct function.
20876         (name_registered_for_update_p): Likewise.
20877         (ssa_names_to_replace): Likewise.
20878         (release_ssa_name_after_update_ssa): Likewise.
20879         (update_ssa): Likewise.  Use SYMS_TO_RENAME.
20880         (dump_decl_set): Do not print a newline.
20881         (debug_decl_set): Do it here.
20882         (dump_update_ssa): And here.
20883         * tree-ssa-loop-im.c (move_computations): Adjust.
20884         (movement_possibility): Likewise.
20885         (determine_max_movement): Likewise.
20886         (gather_mem_refs_stmt): Likewise.
20887         * tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
20888         or NAME_MEMORY_TAG.
20889         * tree-complex.c (update_all_vops): Remove.
20890         (expand_complex_move): Adjust.
20891         * tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
20892         Simplify test for memory referencing statement.  Exclude
20893         non-invariant ADDR_EXPRs.
20894         * tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
20895         * tree-loop-distribution.c (generate_memset_zero): Adjust.
20896         (rdg_flag_uses): Likewise.
20897         * tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
20898         related code.
20899         (tree_optimize_tail_calls_1): Also split the
20900         edge from the entry block if we have degenerate PHI nodes in
20901         the first basic block.
20902         * tree.c (init_ttree): Remove memory-tag related code.
20903         (tree_code_size): Likewise.
20904         (tree_node_structure): Likewise.
20905         (build7_stat): Re-write to be build6_stat.
20906         * tree.h (MTAG_P, TREE_MEMORY_TAG_CHECK, TMR_TAG): Remove.
20907         (SSA_VAR_P): Adjust.
20908         (struct tree_memory_tag): Remove.
20909         (struct tree_memory_partition_tag): Likewise.
20910         (union tree_node): Adjust.
20911         (build7): Re-write to be build6.
20912         * tree-pass.h (pass_reset_cc_flags): Remove.
20913         (TODO_update_address_taken): New flag.
20914         (pass_simple_dse): Remove.
20915         * ipa-cp.c (ipcp_update_callgraph): Update SSA form.
20916         * params.h (MAX_ALIASED_VOPS): Remove.
20917         (AVG_ALIASED_VOPS): Likewise.
20918         * omp-low.c (expand_omp_taskreg): Update SSA form.
20919         * tree-ssa-dse.c (dse_optimize_stmt): Properly query if the rhs
20920         aliases the lhs in a copy stmt.
20921         * tree-ssa-dse.c (struct address_walk_data): Remove.
20922         (memory_ssa_name_same): Likewise.
20923         (memory_address_same): Likewise.
20924         (get_kill_of_stmt_lhs): Likewise.
20925         (dse_possible_dead_store_p): Simplify, use the oracle.  Handle
20926         unused stores.  Look through PHI nodes into post-dominated regions.
20927         (dse_optimize_stmt): Simplify.  Properly remove stores.
20928         (tree_ssa_dse): Compute dominators.
20929         (execute_simple_dse): Remove.
20930         (pass_simple_dse): Likewise.
20931         * ipa-reference.c (scan_stmt_for_static_refs): Open-code
20932         gimple_loaded_syms and gimple_stored_syms computation.
20933         * toplev.c (dump_memory_report): Dump alias and pta stats.
20934         * tree-ssa-sccvn.c (vn_reference_compute_hash): Simplify.
20935         (vn_reference_eq): Likewise.
20936         (vuses_to_vec, copy_vuses_from_stmt, vdefs_to_vec,
20937         copy_vdefs_from_stmt, shared_lookup_vops, shared_vuses_from_stmt,
20938         valueize_vuses): Remove.
20939         (get_def_ref_stmt_vuses): Simplify.  Rename to ...
20940         (get_def_ref_stmt_vuse): ... this.
20941         (vn_reference_lookup_2): New function.
20942         (vn_reference_lookup_pieces): Use walk_non_aliased_vuses for
20943         walking equivalent vuses.  Simplify.
20944         (vn_reference_lookup): Likewise.
20945         (vn_reference_insert): Likewise.
20946         (vn_reference_insert_pieces): Likewise.
20947         (visit_reference_op_call): Simplify.
20948         (visit_reference_op_load): Likewise.
20949         (visit_reference_op_store): Likewise.
20950         (init_scc_vn): Remove shared_lookup_vuses initialization.
20951         (free_scc_vn): Remove shared_lookup_vuses freeing.
20952         (sort_vuses, sort_vuses_heap): Remove.
20953         (get_ref_from_reference_ops): Export.
20954         * tree-ssa-sccvn.h (struct vn_reference_s): Replace vuses
20955         vector with single vuse pointer.
20956         (vn_reference_lookup_pieces, vn_reference_lookup,
20957         vn_reference_insert, vn_reference_insert_pieces): Adjust prototypes.
20958         (shared_vuses_from_stmt): Remove.
20959         (get_ref_from_reference_ops): Declare.
20960         * tree-ssa-loop-manip.c (slpeel_can_duplicate_loop_p): Adjust.
20961         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
20962         memory-tag related code.
20963         * tree-ssa-ccp.c (get_symbol_constant_value): Remove memory-tag code.
20964         (likely_value): Add comment, skip static-chain of call statements.
20965         (surely_varying_stmt_p): Adjust.
20966         (gimplify_and_update_call_from_tree): Likewise.
20967         (execute_fold_all_builtins): Do not rebuild alias info.
20968         (gimplify_and_update_call_from_tree): Properly update VOPs.
20969         * tree-ssa-loop-ivopts.c (get_ref_tag): Remove.
20970         (copy_ref_info): Remove memory-tag related code.
20971         * tree-call-cdce.c (tree_call_cdce): Rename the VOP.
20972         * ipa-pure-const.c (check_decl): Remove memory-tag related code.
20973         (check_stmt): Open-code gimple_loaded_syms and gimple_stored_syms
20974         computation.
20975         * tree-ssa-dom.c (gimple_p): Remove typedef.
20976         (eliminate_redundant_computations): Adjust.
20977         (record_equivalences_from_stmt): Likewise.
20978         (avail_expr_hash): Likewise.
20979         (avail_expr_eq): Likewise.
20980         * tree-ssa-propagate.c (update_call_from_tree): Properly update VOPs.
20981         (stmt_makes_single_load): Likewise.
20982         (stmt_makes_single_store): Likewise.
20983         * tree-ssa-alias.c: Rewrite completely.
20984         (debug_memory_partitions, dump_mem_ref_stats, debug_mem_ref_stats,
20985         debug_mem_sym_stats, dump_mem_sym_stats_for_var,
20986         debug_all_mem_sym_stats, debug_mp_info, update_mem_sym_stats_from_stmt,
20987         delete_mem_ref_stats, create_tag_raw, dump_points_to_info,
20988         dump_may_aliases_for, debug_may_aliases_for, new_type_alias):
20989         Remove public functions.
20990         (pass_reset_cc_flags): Remove.
20991         (pass_build_alias): Move ...
20992         * tree-ssa-structalias.c (pass_build_alias): ... here.
20993         * tree-ssa-alias.c (may_be_aliased): Move ...
20994         * tree-flow-inline.h (may_be_aliased): ... here.
20995         tree-ssa-alias.c (struct count_ptr_d, count_ptr_derefs,
20996         count_uses_and_derefs): Move ...
20997         * gimple.c: ... here.
20998         * gimple.h (count_uses_and_derefs): Declare.
20999         * tree-ssa-alias.c (dump_alias_stats, ptr_deref_may_alias_global_p,
21000         ptr_deref_may_alias_decl_p, ptr_derefs_may_alias_p,
21001         same_type_for_tbaa, nonaliasing_component_refs_p, decl_refs_may_alias_p,
21002         indirect_ref_may_alias_decl_p, indirect_refs_may_alias_p,
21003         ref_maybe_used_by_call_p, ref_maybe_used_by_stmt_p,
21004         call_may_clobber_ref_p, stmt_may_clobber_ref_p, maybe_skip_until,
21005         get_continuation_for_phi, walk_non_aliased_vuses, walk_aliased_vdefs):
21006         New functions.
21007         * tree-dfa.c (refs_may_alias_p): Move ...
21008         * tree-ssa-alias.c (refs_may_alias_p): ... here.  Extend.
21009         * tree-ssa-alias.h: New file.
21010         * tree-ssa-sink.c (is_hidden_global_store): Adjust.
21011         (statement_sink_location): Likewise.
21012         * opts.c (decode_options): Do not adjust max-aliased-vops or
21013         avg-aliased-vops values.
21014         * timevar.def (TV_TREE_MAY_ALIAS): Remove.
21015         (TV_CALL_CLOBBER): Likewise.
21016         (TV_FLOW_SENSITIVE): Likewise.
21017         (TV_FLOW_INSENSITIVE): Likewise.
21018         (TV_MEMORY_PARTITIONING): Likewise.
21019         (TV_ALIAS_STMT_WALK): New timevar.
21020         * tree-ssa-loop-ivcanon.c (empty_loop_p): Adjust.
21021         * tree-ssa-address.c (create_mem_ref_raw): Use build6.
21022         (get_address_description): Remove memory-tag related code.
21023         * tree-ssa-ifcombine.c (bb_no_side_effects_p): Adjust.
21024         * treestruct.def (TS_MEMORY_TAG, TS_MEMORY_PARTITION_TAG): Remove.
21025         * tree-eh.c (cleanup_empty_eh): Do not leave stale SSA_NAMEs
21026         and immediate uses in statements.  Document.
21027         * gimple-pretty-print.c (dump_gimple_mem_ops): Adjust.
21028         (dump_symbols): Remove.
21029         (dump_gimple_mem_ops): Do not dump loaded or stored syms.
21030         * alias.c (get_deref_alias_set): New function split out from ...
21031         (get_alias_set): ... here.
21032         * alias.h (get_deref_alias_set): Declare.
21033         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove unused
21034         type parameter.  Remove restrict pointer handling.  Create a
21035         ref-all pointer in case type-based alias sets do not conflict.
21036         (vect_analyze_data_refs): Remove SMT related code.
21037         * tree-vect-stmts.c (vectorizable_store): Re-instantiate TBAA assert.
21038         (vectorizable_load): Likewise.
21039         * tree-data-ref.h (struct dr_alias): Remove symbol_tag field.
21040         (DR_SYMBOL_TAG, DR_VOPS): Remove.
21041         * tree-data-ref.c (dr_may_alias_p): Use the alias-oracle.
21042         Ignore vops and SMTs.
21043         (dr_analyze_alias): Likewise..
21044         (free_data_ref): Likewise.
21045         (create_data_ref): Likewise.
21046         (analyze_all_data_dependences): Likewise.
21047         (get_references_in_stmt): Adjust.
21048         * tree-flow-inline.h (gimple_aliases_computed_p,
21049         gimple_addressable_vars, gimple_call_clobbered_vars,
21050         gimple_call_used_vars, gimple_global_var, may_aliases, memory_partition,
21051         factoring_name_p, mark_call_clobbered, clear_call_clobbered,
21052         compare_ssa_operands_equal, symbol_mem_tag, set_symbol_mem_tag,
21053         gimple_mem_ref_stats): Remove.
21054         (gimple_vop): New function.
21055         (op_iter_next_use): Remove vuses and mayuses cases.
21056         (op_iter_next_def): Remove vdefs case.
21057         (op_iter_next_tree): Remove vuses, mayuses and vdefs cases.
21058         (clear_and_done_ssa_iter): Do not set removed fields.
21059         (op_iter_init): Likewise.  Skip vuse and/or vdef if requested.
21060         Assert we are not iterating over vuses or vdefs if not also
21061         iterating over uses or defs.
21062         (op_iter_init_use): Likewise.
21063         (op_iter_init_def): Likewise.
21064         (op_iter_next_vdef): Remove.
21065         (op_iter_next_mustdef): Likewise.
21066         (op_iter_init_vdef): Likewise.
21067         (compare_ssa_operands_equal): Likewise.
21068         (link_use_stmts_after): Handle vuse operand.
21069         (is_call_used): Use is_call_clobbered.
21070         (is_call_clobbered): Global variables are always call clobbered,
21071         query the call-clobbers bitmap.
21072         (mark_call_clobbered): Ignore global variables.
21073         (clear_call_clobbered): Likewise.
21074         * tree-ssa-coalesce.c (create_outofssa_var_map): Adjust
21075         virtual operands sanity check.
21076         * tree.def (NAME_MEMORY_TAG, SYMBOL_MEMORY_TAG, MEMORY_PARTITION_TAG):
21077         Remove.
21078         (TARGET_MEM_REF): Remove TMR_TAG operand.
21079         * tree-dfa.c (add_referenced_var): Initialize call-clobber state.
21080         Remove call-clobber related code.
21081         (remove_referenced_var): Likewise.  Do not clear mpt or symbol_mem_tag.
21082         (dump_variable): Do not dump SMTs, memory stats, may-aliases or
21083         partitions or escape reason.
21084         (get_single_def_stmt, get_single_def_stmt_from_phi,
21085         get_single_def_stmt_with_phi): Remove.
21086         (dump_referenced_vars): Tidy.
21087         (get_ref_base_and_extent): Allow bare decls.
21088         (collect_dfa_stats): Adjust.
21089         * graphite.c (rename_variables_in_stmt): Adjust.
21090         (graphite_copy_stmts_from_block): Likewise.
21091         (translate_clast): Likewise.
21092         * tree-ssa-pre.c (struct bb_bitmap_sets): Add expr_dies bitmap.
21093         (EXPR_DIES): New.
21094         (translate_vuse_through_block): Use the oracle.
21095         (phi_translate_1): Adjust.
21096         (value_dies_in_block_x): Use the oracle.  Cache the outcome
21097         in EXPR_DIES.
21098         (valid_in_sets): Check if the VUSE for
21099         a REFERENCE is available.
21100         (eliminate): Do not remove stmts during elimination,
21101         instead queue and remove them afterwards.
21102         (do_pre): Do not rebuild alias info.
21103         (pass_pre): Run TODO_rebuild_alias before PRE.
21104         * tree-ssa-live.c (remove_unused_locals): Remove memory-tag code.
21105         * tree-sra.c (sra_walk_function): Use gimple_references_memory_p.
21106         (mark_all_v_defs_stmt): Remove.
21107         (mark_all_v_defs_seq): Adjust.
21108         (sra_replace): Likewise.
21109         (scalarize_use): Likewise.
21110         (scalarize_copy): Likewise.
21111         (scalarize_init): Likewise.
21112         (scalarize_ldst): Likewise.
21113         (todoflags): Remove.
21114         (tree_sra): Do not rebuild alias info.
21115         (tree_sra_early): Adjust.
21116         (pass_sra): Run TODO_update_address_taken before SRA.
21117         * tree-predcom.c (set_alias_info): Remove.
21118         (prepare_initializers_chain): Do not call it.
21119         (mark_virtual_ops_for_renaming): Adjust.
21120         (mark_virtual_ops_for_renaming_list): Remove.
21121         (initialize_root_vars): Adjust.
21122         (initialize_root_vars_lm): Likewise.
21123         (prepare_initializers_chain): Likewise.
21124         * tree-ssa-copy.c (may_propagate_copy): Remove memory-tag related code.
21125         (may_propagate_copy_into_stmt): Likewise.
21126         (merge_alias_info): Do nothing for now.
21127         (propagate_tree_value_into_stmt): Adjust.
21128         (stmt_may_generate_copy): Likewise.
21129         * tree-ssa-forwprop.c (tidy_after_forward_propagate_addr): Do
21130         not mark symbols for renaming.
21131         (forward_propagate_addr_expr): Match up push/pop_stmt_changes
21132         with the same statement, make sure to update the new pointed-to one.
21133         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do not copy
21134         call statements, do not mark symbols for renaming.
21135         (mark_operand_necessary): Dump something.
21136         (ref_may_be_aliased): New function.
21137         (mark_aliased_reaching_defs_necessary_1): New helper function.
21138         (mark_aliased_reaching_defs_necessary): Likewise.
21139         (mark_all_reaching_defs_necessary_1): Likewise.
21140         (mark_all_reaching_defs_necessary): Likewise.
21141         (propagate_necessity): Do not process virtual PHIs.  For
21142         non-aliased loads mark all reaching definitions as necessary.
21143         For aliased loads and stores mark the immediate dominating
21144         aliased clobbers as necessary.
21145         (visited): New global static.
21146         (perform_tree_ssa_dce): Free visited bitmap after propagating
21147         necessity.
21148         (remove_dead_phis): Perform simple dead virtual PHI removal.
21149         (remove_dead_stmt): Properly unlink virtual operands when
21150         removing stores.
21151         (eliminate_unnecessary_stmts): Schedule PHI removal after
21152         stmt removal.
21153         * tree-ssa-ter.c (is_replaceable_p): Adjust.
21154         (process_replaceable): Likewise.
21155         (find_replaceable_in_bb): Likewise.
21156         * tree-ssa.c (verify_ssa_name): Verify all VOPs are
21157         based on the single gimple vop.
21158         (verify_flow_insensitive_alias_info): Remove.
21159         (verify_flow_sensitive_alias_info): Likewise.
21160         (verify_call_clobbering): Likewise.
21161         (verify_memory_partitions): Likewise.
21162         (verify_alias_info): Likewise.
21163         (verify_ssa): Adjust..
21164         (execute_update_addresses_taken): Export.  Update SSA
21165         manually.  Optimize only when optimizing.  Use a local bitmap.
21166         (pass_update_address_taken): Remove TODO_update_ssa, add
21167         TODO_dump_func.
21168         (pass_update_address_taken): Just use TODO_update_address_taken.
21169         (init_tree_ssa): Do not initialize addressable_vars.
21170         (verify_ssa): Verify new VUSE / VDEF properties.
21171         Verify that all stmts definitions have the stmt as SSA_NAME_DEF_STMT.
21172         Do not call verify_alias_info.
21173         (delete_tree_ssa): Clear the VUSE, VDEF operands.
21174         Do not free the loaded and stored syms bitmaps.  Reset the escaped
21175         and callused solutions.  Do not free addressable_vars.
21176         Remove memory-tag related code.
21177         (warn_uninitialized_var): Aliases are always available.
21178         * tree-ssa-loop-prefetch.c (gather_memory_references): Adjust.
21179         * lambda-code.c (can_put_in_inner_loop): Adjust.
21180         (can_put_after_inner_loop): Likewise.
21181         (perfect_nestify): Likewise.
21182         * tree-vect-stmts.c (vect_stmt_relevant_p): Adjust.
21183         (vect_gen_widened_results_half): Remove CALL_EXPR handling.
21184         (vectorizable_conversion): Do not mark symbols for renaming.
21185         * tree-inline.c (remap_gimple_stmt): Clear VUSE/VDEF.
21186         (expand_call_inline): Unlink the calls virtual operands before
21187         replacing it.
21188         (tree_function_versioning): Do not call update_ssa if we are not
21189         updating clones.  Simplify.
21190         * tree-ssa-phiprop.c (phivn_valid_p): Adjust.
21191         (propagate_with_phi): Likewise..
21192         * tree-outof-ssa.c (create_temp): Remove memory tag and call
21193         clobber code.  Assert we are not aliased or global.
21194         * tree-flow.h: Include tree-ssa-alias.h
21195         (enum escape_type): Remove.
21196         (struct mem_sym_stats_d): Likewise.
21197         (struct mem_ref_stats_d): Likewise.
21198         (struct gimple_df): Add vop member.  Remove global_var,
21199         call_clobbered_vars, call_used_vars, addressable_vars,
21200         aliases_compted_p and mem_ref_stats members.  Add syms_to_rename,
21201         escaped and callused members.
21202         (struct ptr_info_def): Remove all members, add points-to solution
21203         member pt.
21204         (struct var_ann_d): Remove in_vuse_list, in_vdef_list,
21205         call_clobbered, escape_mask, mpt and symbol_mem_tag members.
21206         * Makefile.in (TREE_FLOW_H): Add tree-ssa-alias.h.
21207         (tree-ssa-structalias.o): Remove tree-ssa-structalias.h.
21208         (tree-ssa-alias.o): Likewise.
21209         (toplev.o): Add tree-ssa-alias.h
21210         (GTFILES): Remove tree-ssa-structalias.h, add tree-ssa-alias.h.
21211         * gimple.c (gimple_set_bb): Fix off-by-one error.
21212         (is_gimple_reg): Do not handle memory tags.
21213         (gimple_copy): Also copy virtual operands.
21214         Delay updating the statement.  Do not reset loaded and stored syms.
21215         (gimple_set_stored_syms): Remove.
21216         (gimple_set_loaded_syms): Likewise.
21217         (gimple_call_copy_skip_args): Copy the virtual operands
21218         and mark the new statement modified.
21219         * tree-ssa-structalias.c (may_alias_p): Remove.
21220         (set_uids_in_ptset): Take the alias set to prune with as
21221         parameter.  Fold in the alias test of may_alias_p.
21222         (compute_points_to_sets): Compute whether a ptr is dereferenced
21223         in a local sbitmap.
21224         (process_constraint): Deal with &ANYTHING on the lhs, reject all
21225         other ADDRESSOF constraints on the lhs.
21226         (get_constraint_for_component_ref): Assert that we don't get
21227         ADDRESSOF constraints from the base of the reference.
21228         Properly generate UNKNOWN_OFFSET for DEREF if needed.
21229         (struct variable_info): Remove collapsed_to member.
21230         (get_varinfo_fc): Remove.
21231         (new_var_info): Do not set collapsed_to.
21232         (dump_constraint): Do not follow cycles.
21233         (dump_constraint_graph): Likewise.
21234         (build_pred_graph): Likewise.
21235         (build_succ_graph): Likewise.
21236         (rewrite_constraints): Likewise.
21237         (do_simple_structure_copy): Remove.
21238         (do_rhs_deref_structure_copy): Remove.
21239         (do_lhs_deref_structure_copy): Remove.
21240         (collapse_rest_of_var): Remove.
21241         (do_structure_copy): Re-implement.
21242         (pta_stats): New global variable.
21243         (dump_pta_stats): New function.
21244         (struct constraint_expr): Make offset signed.
21245         (UNKNOWN_OFFSET): Define special value.
21246         (dump_constraint): Dump UNKNOWN_OFFSET as UNKNOWN.
21247         (solution_set_expand): New helper function split out from ...
21248         (do_sd_constraint): ... here.
21249         (solution_set_add): Handle UNKNOWN_OFFSET.  Handle negative offsets.
21250         (do_ds_constraint): Likewise.
21251         (do_sd_constraint): Likewise.  Do not special-case ESCAPED = *ESCAPED
21252         and CALLUSED = *CALLUSED.
21253         (set_union_with_increment): Make inc argument signed.
21254         (type_safe): Remove.
21255         (get_constraint_for_ptr_offset): Handle unknown and negative
21256         constant offsets.
21257         (first_vi_for_offset): Handle offsets before start.  Bail
21258         out early for offsets beyond the variable extent.
21259         (first_or_preceding_vi_for_offset): New function.
21260         (init_base_vars): Add ESCAPED = ESCAPED + UNKNOWN_OFFSET constraint.
21261         Together with ESCAPED = *ESCAPED this properly computes reachability.
21262         (find_what_var_points_to): New function.
21263         (find_what_p_points_to): Implement in terms of find_what_var_points_to.
21264         (pt_solution_reset, pt_solution_empty_p, pt_solution_includes_global,
21265         pt_solution_includes_1, pt_solution_includes, pt_solutions_intersect_1,
21266         pt_solutions_intersect): New functions.
21267         (compute_call_used_vars): Remove.
21268         (compute_may_aliases): New main entry into PTA computation.
21269         * gimple.h (gimple_p): New typedef.
21270         (struct gimple_statement_base): Remove references_memory_p.
21271         (struct gimple_statement_with_memory_ops_base): Remove
21272         vdef_ops, vuse_ops, stores and loads members.  Add vdef and vuse
21273         members.
21274         (gimple_vuse_ops, gimple_set_vuse_ops, gimple_vdef_ops,
21275         gimple_set_vdef_ops, gimple_loaded_syms, gimple_stored_syms,
21276         gimple_set_references_memory): Remove.
21277         (gimple_vuse_op, gimple_vdef_op, gimple_vuse, gimple_vdef,
21278         gimple_vuse_ptr, gimple_vdef_ptri, gimple_set_vuse, gimple_set_vdef):
21279         New functions.
21280         * tree-cfg.c (move_block_to_fn): Fix off-by-one error.
21281         (verify_expr): Allow RESULT_DECL.
21282         (gimple_duplicate_bb): Do not copy virtual operands.
21283         (gimple_duplicate_sese_region): Adjust.
21284         (gimple_duplicate_sese_tail): Likewise.
21285         (mark_virtual_ops_in_region): Remove.
21286         (move_sese_region_to_fn): Do not call it.
21287         * passes.c (init_optimization_passes): Remove pass_reset_cc_flags
21288         and pass_simple_dse.
21289         (execute_function_todo): Handle TODO_update_address_taken,
21290         call execute_update_addresses_taken for TODO_rebuild_alias.
21291         (execute_todo): Adjust.
21292         (execute_one_pass): Init dump files early.
21293         * ipa-struct-reorg.c (finalize_var_creation): Do not mark vars
21294         call-clobbered.
21295         (create_general_new_stmt): Clear vops.
21296         * tree-ssa-reassoc.c (get_rank): Adjust.
21297         * tree-vect-slp.c (vect_create_mask_and_perm): Do not mark
21298         symbols for renaming.
21299         * params.def (PARAM_MAX_ALIASED_VOPS): Remove.
21300         (PARAM_AVG_ALIASED_VOPS): Likewise.
21301         * tree-ssanames.c (init_ssanames): Allocate SYMS_TO_RENAME.
21302         (duplicate_ssa_name_ptr_info): No need to copy the shared bitmaps.
21303         * tree-ssa-operands.c: Simplify for new virtual operand representation.
21304         (operand_build_cmp, copy_virtual_operands,
21305         create_ssa_artificial_load_stmt, add_to_addressable_set,
21306         gimple_add_to_addresses_taken): Remove public functions.
21307         (unlink_stmt_vdef): New function.
21308
21309 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
21310
21311         * config.gcc (powerpc-*-linux*): Merge variants.
21312
21313 2009-04-02  Chao-ying Fu  <fu@mips.com>
21314             James Grosbach  <james.grosbach@microchip.com>
21315
21316         * config/mips/mips.c (mips_frame_info): Add acc_mask, num_acc,
21317         num_cop0_regs, acc_save_offset, cop0_save_offset, acc_sp_offset,
21318         cop0_sp_offset.
21319         (machine_function): Add interrupt_handler_p, use_shadow_register_set_p,
21320         keep_interrupts_masked_p, use_debug_exception_return_p.
21321         (mips_attribute_table): Add interrupt, use_shadow_register_set,
21322         keep_interrupts_masked, use_debug_exception_return.
21323         (mips_interrupt_type_p, mips_use_shadow_register_set_p,
21324         mips_keep_interrupts_masked_p, mips_use_debug_exception_return_p):
21325         New functions.
21326         (mips_function_ok_for_sibcall): Return false for interrupt handlers.
21327         (mips_print_operand): Process COP0 registers to print $0 .. $31
21328         correctly for GAS to process.
21329         (mips_interrupt_extra_call_saved_reg_p): New function.
21330         (mips_cfun_call_saved_reg_p): For interrupt handlers, we need to check
21331         extra registers.
21332         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
21333         (mips_compute_frame_info): Add supports for interrupt context that
21334         includes doubleword accumulators and COP0 registers.
21335         (mips_for_each_saved_acc): New function.
21336         (mips_for_each_saved_gpr_and_fpr): Change the function name from
21337         mips_for_each_saved_reg.
21338         (mips_save_reg): Save accumulators.
21339         (mips_kernel_reg_p): A new for_each_rtx callback.
21340         (mips_expand_prologue): Support interrupt handlers.
21341         (mips_restore_reg): Restore accumulators.
21342         (mips_expand_epilogue): Support interrupt handlers.
21343         (mips_can_use_return_insn): Return false for interrupt handlers.
21344         (mips_epilogue_uses): New function.
21345         * config/mips/mips.md (UNSPEC_ERET, UNSPEC_DERET, UNSPEC_DI,
21346         UNSPEC_EHB, UNSPEC_RDPGPR, UNSPEC_COP0): New UNSPEC.
21347         (mips_eret, mips_deret, mips_di, mips_ehb, mips_rdpgpr,
21348         cop0_move): New instructions.
21349         * config/mips/mips-protos.h (mips_epilogue_uses): Declare.
21350         * config/mips/mips.h (K0_REG_NUM, K1_REG_NUM, KERNEL_REG_P): New
21351         defines.
21352         (COP0_STATUS_REG_NUM, COP0_CAUSE_REG_NUM, COP0_EPC_REG_NUM):
21353         New defines.
21354         (CAUSE_IPL, SR_IPL, SR_EXL, SR_IE): New defines.
21355         (MIPS_PROLOGUE_TEMP_REGNUM, MIPS_EPILOGUE_TEMP_REGNUM): For
21356         interrupt handlers, we use K0 as the temporary register.
21357         (EPILOGUE_USES): Change to a function call.
21358         * config/mips/sde.h (MIPS_EPILOGUE_TEMP_REGNUM): For interrupt
21359         handlers, we use K0 as the temporary register.
21360
21361         * doc/extend.texi (Function Attributes): Document interrupt,
21362         use_shadow_register_set, keep_interrupts_masked,
21363         use_debug_exception_return for MIPS attributes.
21364
21365 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
21366
21367         * config.gcc (powerpc64-*-gnu*): Add rs6000/default64.h to tm_file.
21368         Remove a number of t-files from tmake_file.
21369         * config/rs6000/sysv4.opt (mprototype): Name variable target_prototype.
21370         * config/rs6000/sysv4.h (TARGET_PROTOTYPE): Define.
21371         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Set
21372         target_prototype, not TARGET_PROTOTYPE.
21373         (LINK_OS_GNU_SPEC): Define.
21374         * config/rs6000/t-linux64 (LIB2FUNCS_EXTRA): Delete tramp.S
21375         and darwin-ldoubdle.c.
21376
21377 2009-04-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
21378
21379         PR driver/39293
21380         * gcc.c (save_temps_flag): Add support for -save-temps=obj.
21381         (cpp_options): Ditto.
21382         (default_compilers): Ditto.
21383         (display_help): Ditto.
21384         (process_command): Ditto.
21385         (do_spec_1): Ditto.
21386         (set_input): Use lbasename instead of duplicate code.
21387         (save_temps_prefix): New static for -save-temps=obj.
21388         (save_temps_length): Ditto.
21389
21390         * doc/invoke.texi (-save-temps=obj): Document new variant to
21391         -save-temps switch.
21392
21393 2009-04-02  Jeff Law  <law@redhat.com>
21394
21395         * reload1.c (fixup_eh_region_notes): Remove write-only "trap_count"
21396         variable.
21397
21398 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
21399
21400         * configure.ac: Support -Bstatic/-Bdynamic for linker version > 2.
21401         * configure: Regenerated.
21402
21403 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
21404
21405         * c-decl.c (merge_decls): Make sure newdecl and olddecl don't
21406         share the argument list.
21407
21408 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
21409
21410         Merge
21411
21412         2009-02-12  Diego Novillo  <dnovillo@google.com>
21413
21414         * varpool.c (debug_varpool): New.
21415         * cgraph.h (debug_varpool): Declare.
21416
21417 2009-04-02  Jan Hubicka  <jh@suse.cz>
21418
21419         * passes.c (init_optimization_passes): Remove two copies of ehcleanup
21420         pass.
21421
21422 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
21423
21424         * config/i386/i386.c (ix86_abi): Move initialization to ...
21425         (override_options): Here.
21426
21427 2009-04-02  Christian Bruel  <christian.bruel@st.com>
21428
21429         * config/sh/sh.c (sh_dwarf_register_span): New function.
21430         (TARGET_DWARF_REGISTER_SPAN): Define.
21431         * config/sh/sh-protos.h (sh_dwarf_register_span): Declare.
21432
21433 2009-04-02  Ira Rosen  <irar@il.ibm.com>
21434
21435         PR tree-optimization/39595
21436         * tree-vect-slp.c (vect_build_slp_tree): Check that the size of
21437         interleaved loads group is not  greater than the SLP group size.
21438
21439 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
21440
21441         * builtins.c (is_builtin_name): New.
21442         (called_as_built_in): Use is_builtin_name.
21443         * tree.h (is_builtin_name): New.
21444         * varasm.c (incorporeal_function_p): Use is_builtin_name
21445
21446 2009-04-02  Andrew Stubbs  <ams@codesourcery.com>
21447
21448         * config/sh/linux-unwind.h: Disable when inhibit_libc is defined.
21449
21450 2009-04-02  Dodji Seketeli  <dodji@redhat.com>
21451
21452         PR c++/26693
21453         * c-decl.c (clone_underlying_type): Move this ...
21454         * c-common.c (set_underlying_type): ... here.
21455         Also, make sure the function properly sets TYPE_STUB_DECL() on
21456         the newly created typedef variant type.
21457         * c-common.h (is_typedef_decl, set_underlying_type): Declare ...
21458         * c-common.c (is_typedef_decl, set_underlying_type): ... new entry
21459         points.
21460
21461 2009-04-02  Richard Guenther  <rguenther@suse.de>
21462
21463         PR tree-optimization/37221
21464         * tree-flow.h (degenerate_phi_result): Declare.
21465         * tree-ssa-dom.c (degenerate_phi_result): Export.
21466         * tree-scalar-evolution.c (analyze_initial_condition): If
21467         the initial condition is defined by a degenerate PHI node
21468         use the degenerate value.
21469
21470 2009-04-01  Eric Botcazou  <ebotcazou@adacore.com>
21471
21472         PR rtl-optimization/39588
21473         * combine.c (merge_outer_ops): Do not set the constant when this
21474         is not necessary.
21475         (simplify_shift_const_1): Do not modify it either in this case.
21476
21477 2009-04-01  Steven Bosscher  <steven@gcc.gnu.org>
21478
21479         * config/ia64/ia64.c (ia64_handle_option): Inform user that Itanium1
21480         tuning is deprecated if -mtune value is set to an Itanium1 variant.
21481
21482 2009-04-01  Janis Johnson  <janis187@us.ibm.com>
21483
21484         PR c/29027
21485         * c-lex.c (interpret_float): Default (no suffix) is double.
21486
21487 2009-04-1  Xinliang David Li  <davidxl@google.com>
21488
21489         * config/i386/i386.c (legitimate_constant_p): Recognize
21490         all one vector constant.
21491
21492 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
21493
21494         * config/vax/vax.c: Add #includes to silence warnings.
21495         Change #include order to silence two warnings.
21496
21497 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
21498
21499         * config/vax/linux.h (TARGET_DEFAULT): Add the MASK_QMATH flag bit.
21500         (ASM_SPEC): Pass -k to the assembler for PIC code.
21501
21502 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
21503
21504         * config.gcc: Add vax-*-linux* to the switch.
21505         * config/vax/linux.h: New file. (TARGET_VERSION,
21506         TARGET_OS_CPP_BUILTINS, TARGET_DEFAULT, CPP_SPEC, LINK_SPEC): Define.
21507
21508 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
21509
21510         * config/vax/vax.c (vax_output_int_move, adjacent_operands_p):
21511         Use predicate macros instead of GET_CODE() == foo.
21512         * config/vax/vax.md (movsi_2, movstrictqi, and<mode>3, ashrsi3,
21513         ashlsi3, rotrsi3, <unnamed>): Likewise.
21514
21515 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
21516
21517         * config/vax/builtins.md (jbbssiqi, jbbssihi, jbbssisi, jbbcciqi,
21518         jbbccihi, jbbccisi): Remova trailing whitespace.
21519         * config/vax/constraints.md: Likewise.
21520         * config/vax/elf.h: (ASM_PREFERRED_EH_DATA_FORMAT): Likewise.
21521         * config/vax/openbsd1.h (OBSD_OLD_GAS): Likewise.
21522         * config/vax/predicates.md: Likewise.
21523         * config/vax/vax.c (print_operand_address, vax_output_int_move,
21524         vax_expand_addsub_di_operands, adjacent_operands_p): Likewise.
21525         * config/vax/vax.h: Likewise.
21526         * config/vax/vax.md (nonlocal_goto): Likewise.
21527
21528 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
21529
21530         * config/vax/vax.c (vax_float_literal, vax_output_int_move)
21531         (indirectable_address_p, adjacent_operands_p): Add spaces around
21532         braces.
21533         * config/vax/vax-protos.h (adjacent_operands_p): Likewise.
21534
21535 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
21536
21537         * config/vax/vax.c (legitimate_constant_address_p,
21538         legitimate_constant_p, indirectable_address_p, nonindexed_address_p,
21539         index_term_p, reg_plus_index_p, legitimate_address_p,
21540         vax_mode_dependent_address_p): Update comments to match functions
21541         modified by the recent int->bool conversion.
21542
21543 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
21544
21545         * config/vax/builtins.md: Update copyright message.
21546         * config/vax/constraints.md: Likewise.
21547         * config/vax/netbsd-elf.h: Likewise.
21548         * config/vax/predicates.md: Likewise.
21549         * config/vax/vax-protos.h: Likewise.
21550         * config/vax/vax.c: Likewise.
21551         * config/vax/vax.h: Likewise.
21552         * config/vax/vax.md: Likewise.
21553         * config/vax/vax.opt: Likewise.
21554
21555 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
21556
21557         * config/vax/builtins.md (ffssi2, ffssi2_internal,
21558         sync_lock_test_and_set<mode>, sync_lock_release<mode>): Fix indention.
21559         * config/vax/constraints.md (B, R): Likewise.
21560         * config/vax/predicates.md (external_memory_operand,
21561         nonimmediate_addsub_di_operand): Likewise.
21562         * config/vax/vax.c (vax_output_int_add): Likewise.
21563         * config/vax/vax.md (movsi, movsi_2, mov<mode>, call_value,
21564         untyped_call): Likewise.
21565
21566 2009-04-01  Matt Thomas  <matt@3am-software.com>
21567
21568         * config/vax/predicates.md: New file.
21569         (symbolic_operand, local_symbolic_operand, external_symbolic_operand,
21570         external_const_operand, nonsymbolic_operand, external_memory_operand,
21571         indirect_memory_operand, indexed_memory_operand,
21572         illegal_blk_memory_operand, illegal_addsub_di_memory_operand,
21573         nonimmediate_addsub_di_operand, general_addsub_di_operand): New
21574         predicate.
21575         * config/vax/constraints.md: New file.
21576         (Z0, U06,  U08, U16, CN6, S08, S16, I, J, K, L, M, N, O, G, Q, B, R, T):
21577         New constraint.
21578         * config/vax/builtins.md: New file.
21579         (ffssi2, ffssi2_internal, sync_lock_test_and_set<mode>, jbbssiqi,
21580         jbbssihi, jbbssisi, sync_lock_release<mode>, jbbcciqi, jbbccihi,
21581         jbbccisi): Define.
21582         * config/vax/vax.opt (mqmath): Add option.
21583         * config/vax/vax.md (isfx): Extend with DI.
21584         (VAXintQH, VAXintQHSD): Define.
21585         (tst<mode>, cmp<mode>, *bit<mode>, movmemhi1, truncsiqi2, truncsihi2,
21586         mulsidi3, add<mode>3, sub<mode>, mul<mode>3, div<mode>3, and<mode>,
21587         and<mode>_const_int, ior<mode>3, xor<mode>3, neg<mode>2,
21588         one_cmpl<mode>2, ashlsi3, lshrsi3, rotlsi3): Update constraints.
21589         (movdi): Update constraints and use vax_output_int_move().
21590         (movsi, movsi_2, pushlclsymreg, pushextsymreg, movlclsymreg,
21591         movextsymreg, adddi3, adcdi3, subdi3, sbcdi3, pushextsym, movextsym,
21592         pushlclsym, movlclsym, movaddr<mode>, pushaddr<mode>,
21593         nonlocal_goto): New.
21594         (mov<mode>): Extend accepted operand types.
21595         (subdi3_old): Rename from subdi3, change update constraints and use
21596         a new implementation.
21597         * config/vax/vax.h (PCC_BITFIELD_TYPE_MATTERS): Add space.
21598         (FRAME_POINTER_CFA_OFFSET, IRA_COVER_CLASSES, CLASS_MAX_NREGS,
21599         MOVE_RATIO, CLEAR_RATIO): Define.
21600         (REG_CLASS_FROM_LETTER, CONST_OK_FOR_LETTER_P,
21601         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT): Delete.
21602         (PRINT_OPERAND): Redefine using a function instead of inlined code.
21603         * config/vax/vax.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Define.
21604         (split_quadword_operands): Make static and really allow variable
21605         splitting.
21606         (print_operand_address): Update for PIC generation.
21607         (print_operand, vax_builtin_setjmp_frame_value, vax_output_int_subtract,
21608         indexable_address_p, fixup_mathdi_operand,
21609         vax_expand_addsub_di_operands, adjacent_operands_p): New.
21610         (vax_float_literal, legitimate_constant_p,
21611         indirectable_constant_address_p, index_term_p,
21612         reg_plus_index_p): Return bool instead of int.
21613         (vax_rtx_costs): Fix cost for CONST_INT, indent and use HOST_WIDE_INT
21614         where needed.
21615         (vax_output_int_move, vax_output_int_add): Extend to allow PIC
21616         generation.
21617         (vax_output_conditional_branch): Indent.
21618         (legitimate_constant_address_p, indirectable_constant_address_p,
21619         indirectable_address_p, nonindexed_address_p, legitimate_address_p,
21620         vax_mode_dependent_address_p): Return bool instead of int, update for
21621         PIC generation.
21622         * config/vax/vax-protos.h (legitimate_constant_address_p,
21623         legitimate_constant_p, legitimate_address_p,
21624         vax_mode_dependent_address_p): Change declaration to bool.
21625         (legitimate_pic_operand_p, adjacent_operands_p, print_operand,
21626         vax_expand_addsub_di_operands, vax_output_int_subtract,
21627         vax_output_movmemsi): Declare.
21628         (split_quadword_operands, vax_float_literal): Delete declaration.
21629         * config/vax/netbsd-elf.h (CC1_SPEC, CC1PLUS_SPEC) Define.
21630         * config/vax/elf.h (NO_EXTERNAL_INDIRECT_ADDRESS,
21631         VAX_CC1_AND_CC1PLUS_SPEC, ASM_PREFERRED_EH_DATA_FORMAT,
21632         ASM_OUTPUT_DWARF_PCREL): Define.
21633         (ASM_SPEC): Change definition to allow PIC generation.
21634
21635 2009-04-01  Steve Ellcey  <sje@cup.hp.com>
21636
21637         * doc/sourcebuild.texi: Update front-end requirements.
21638
21639 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
21640
21641         PR target/39226
21642         * config/rs6000/rs6000.md (andsi3_internal5_nomc,
21643         anddi3_internal2_nomc, anddi3_internal3_nomc): Removed.
21644         (booldi3_internal3): Use boolean_or_operator instead of
21645         boolean_operator.
21646
21647 2009-04-01  Joseph Myers  <joseph@codesourcery.com>
21648
21649         PR c/39605
21650         * c-decl.c (grokdeclarator): Pedwarn for file-scope array
21651         declarator whose size is not an integer constant expression but
21652         folds to an integer constant, then treat it as a constant
21653         subsequently.
21654
21655 2009-04-01  Richard Guenther  <rguenther@suse.de>
21656
21657         * fold-const.c (fold_plusminus_mult_expr): Do not fold
21658         i * 4 + 2 to (i * 2 + 1) * 2.
21659
21660 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
21661
21662         PR c/37772
21663         * c-parser.c (c_parser_asm_statement): Skip until close paren and
21664         return if c_parser_asm_string_literal returned NULL.
21665
21666 2009-04-01  Nick Clifton  <nickc@redhat.com>
21667
21668         * config/m32c/m32c.h (LIBGCC2_UNITS_PER_WORD): Define if not
21669         already defined.
21670         * config/m32c/t-m32c (LIB2FUNCS_EXTRA): Add m32c-lib2-trapv.c.
21671         * config/m32c/m32c-lib2.c: Remove unused typedefs.  Rename the
21672         other typedefs to avoid conflicts with libgcc2.c.  Define labels
21673         to gain 16-bit bit-manipulation functions from libgcc2.c and then
21674         include it.
21675         * config/m32c/m32c-lib2-trapv.c: New file.  Define labels
21676         to gain 16-bit trapping arithmetic functions from libgcc2.c and
21677         then include it.
21678
21679 2009-04-01  Rafael Avila de Espindola  <espindola@google.com>
21680
21681         * varasm.c (default_function_rodata_section): Declare DOT as
21682         const char*.
21683
21684 2009-04-01  Kai Tietz  <kai.tietz@onevision.com>
21685             Andrey Galkin  <agalkin@hypercom.com>
21686
21687         PR/39492
21688         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address):
21689         Make object_name unique for each process.
21690
21691 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
21692
21693         PR other/39591
21694         * omp-low.c (remove_exit_barrier): Don't optimize if there are any
21695         addressable variables in the parallel that could go out of scope while
21696         running queued tasks.
21697
21698 2009-04-01  Anatoly Sokolov  <aesok@post.ru>
21699
21700         * config/avr/avr.h (avr_case_values_threshold): Remove declaration.
21701         (CASE_VALUES_THRESHOLD): Redefine.
21702         * config/avr/avr.c (avr_override_options): Remove initialization of
21703         avr_case_values_threshold variable.
21704         (avr_case_values_threshold): Remove variable. Add new function.
21705         * config/avr/avr-protos.h (avr_case_values_threshold): Declare.
21706         * config/avr/avr.opt (mno-tablejump): Remove option.
21707         * doc/invoke.texi (AVR Options): Remove -mno-tablejump.
21708
21709 2009-04-01  DJ Delorie  <dj@redhat.com>
21710
21711         * varasm.c (default_function_rodata_section): Don't assume
21712         anything about where the first '.' in the section name is.
21713
21714 2009-04-01  Alan Modra  <amodra@bigpond.net.au>
21715
21716         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Delete redundant
21717         rs6000_emit_stack_tie.
21718
21719 2009-03-31  Ian Lance Taylor  <iant@google.com>
21720
21721         * tree-eh.c (tree_remove_unreachable_handlers): Compare
21722         gimple_code with GIMPLE_RESX, not RESX.
21723
21724 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
21725
21726         * c-common.c (c_get_ident): New.
21727         (c_common_nodes_and_builtins): Call it for type names that may be NULL.
21728
21729 2009-04-01  Ben Elliston  <bje@au.ibm.com>
21730
21731         * config/rs6000/sysv4.opt (msdata): Improve option description.
21732
21733 2009-03-31  Steve Ellcey  <sje@cup.hp.com>
21734
21735         * config/ia64/ia64.md (divsf3_internal_lat): Remove.
21736         (divdf3_internal_lat): Remove.
21737         (divxf3_internal_lat): Remove.
21738         (divxf3_internal_thr): Remove.
21739         (divxf): Use divxf3_internal.
21740         * config/ia64/div.md (divsf3_internal_lat): New.
21741         (divdf3_internal_lat): New.
21742         (divxf3_internal): New.
21743
21744 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
21745
21746         PR c/448
21747         * Makefile.in (USE_GCC_STDINT): Define.
21748         (stmp-int-hdrs): Install stdint.h if applicable.
21749         * c-common.c (CHAR16_TYPE): Define in terms of UINT_LEAST16_TYPE
21750         if known.
21751         (CHAR32_TYPE): Define in terms of UINT_LEAST32_TYPE if known.
21752         (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE, INT64_TYPE,
21753         UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
21754         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
21755         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
21756         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
21757         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
21758         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
21759         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
21760         (c_common_nodes_and_builtins): Initialize
21761         underlying_wchar_type_node.  Do not initialize
21762         signed_wchar_type_node or unsigned_wchar_type_node.  Initialize
21763         nodes for new types.
21764         (c_stddef_cpp_builtins): Define macros for new types.
21765         * c-common.h (CTI_SIGNED_WCHAR_TYPE, CTI_UNSIGNED_WCHAR_TYPE):
21766         Remove.
21767         (CTI_UNDERLYING_WCHAR_TYPE, CTI_SIG_ATOMIC_TYPE, CTI_INT8_TYPE,
21768         CTI_INT16_TYPE, CTI_INT32_TYPE, CTI_INT64_TYPE, CTI_UINT8_TYPE,
21769         CTI_UINT16_TYPE, CTI_UINT32_TYPE, CTI_UINT64_TYPE,
21770         CTI_INT_LEAST8_TYPE, CTI_INT_LEAST16_TYPE, CTI_INT_LEAST32_TYPE,
21771         CTI_INT_LEAST64_TYPE, CTI_UINT_LEAST8_TYPE, CTI_UINT_LEAST16_TYPE,
21772         CTI_UINT_LEAST32_TYPE, CTI_UINT_LEAST64_TYPE, CTI_INT_FAST8_TYPE,
21773         CTI_INT_FAST16_TYPE, CTI_INT_FAST32_TYPE, CTI_INT_FAST64_TYPE,
21774         CTI_UINT_FAST8_TYPE, CTI_UINT_FAST16_TYPE, CTI_UINT_FAST32_TYPE,
21775         CTI_UINT_FAST64_TYPE, CTI_INTPTR_TYPE, CTI_UINTPTR_TYPE): Define.
21776         (signed_wchar_type_node, unsigned_wchar_type_node): Remove.
21777         (underlying_wchar_type_node, sig_atomic_type_node, int8_type_node,
21778         int16_type_node, int32_type_node, int64_type_node,
21779         uint8_type_node, uint16_type_node, c_uint32_type_node,
21780         c_uint64_type_node, int_least8_type_node, int_least16_type_node,
21781         int_least32_type_node, int_least64_type_node,
21782         uint_least8_type_node, uint_least16_type_node,
21783         uint_least32_type_node, uint_least64_type_node,
21784         int_fast8_type_node, int_fast16_type_node, int_fast32_type_node,
21785         int_fast64_type_node, uint_fast8_type_node, uint_fast16_type_node,
21786         uint_fast32_type_node, uint_fast64_type_node, intptr_type_node,
21787         uintptr_type_node): Define.
21788         * c-cppbuiltin.c (builtin_define_constants,
21789         builtin_define_type_minmax): New.
21790         (builtin_define_stdint_macros): Define more macros.
21791         (c_cpp_builtins): Define more limit macros.
21792         (type_suffix): New.
21793         (builtin_define_type_max): Define in terms of
21794         builtin_define_type_minmax.  Remove is_long parameter.  All
21795         callers changed.
21796         * config.gcc (use_gcc_stdint): Define.
21797         (tm_file): Add glibc-stdint.h for targets using glibc or uClibc.
21798         Add newlib-stdint.h for generic targets.
21799         * config/glibc-stdint.h, config/newlib-stdint.h,
21800         ginclude/stdint-gcc.h, ginclude/stdint-wrap.h: New.
21801         * config/m32c/m32c.h (UINTPTR_TYPE): Define.
21802         * config/score/score.h (UINTPTR_TYPE): Define.
21803         * config/sol2.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
21804         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
21805         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
21806         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
21807         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
21808         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
21809         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
21810         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
21811         * config/spu/spu.h (STDINT_LONG32): Define.
21812         * configure.ac (use_gcc_stdint): Substitute.
21813         * configure: Regenerate.
21814         * doc/cpp.texi (__SIG_ATOMIC_TYPE__, __INT8_TYPE__,
21815         __INT16_TYPE__, __INT32_TYPE__, __INT64_TYPE__, __UINT8_TYPE__,
21816         __UINT16_TYPE__, __UINT32_TYPE__, __UINT64_TYPE__,
21817         __INT_LEAST8_TYPE__, __INT_LEAST16_TYPE__, __INT_LEAST32_TYPE__,
21818         __INT_LEAST64_TYPE__, __UINT_LEAST8_TYPE__, __UINT_LEAST16_TYPE__,
21819         __UINT_LEAST32_TYPE_, __UINT_LEAST64_TYPE__, __INT_FAST8_TYPE__,
21820         __INT_FAST16_TYPE__, __INT_FAST32_TYPE__, __INT_FAST64_TYPE__,
21821         __UINT_FAST8_TYPE__, __UINT_FAST16_TYPE__, __UINT_FAST32_TYPE__,
21822         __UINT_FAST64_TYPE__, __INTPTR_TYPE__, __UINTPTR_TYPE__,
21823         __WINT_MAX__, __SIZE_MAX__, __PTRDIFF_MAX__, __UINTMAX_MAX__,
21824         __SIG_ATOMIC_MAX__, __INT8_MAX__, __INT16_MAX__, __INT32_MAX__,
21825         __INT64_MAX__, __UINT8_MAX__, __UINT16_MAX__, __UINT32_MAX__,
21826         __UINT64_MAX__, __INT_LEAST8_MAX__, __INT_LEAST16_MAX__,
21827         __INT_LEAST32_MAX__, __INT_LEAST64_MAX__, __UINT_LEAST8_MAX__,
21828         __UINT_LEAST16_MAX__, __UINT_LEAST32_MAX__, __UINT_LEAST64_MAX__,
21829         __INT_FAST8_MAX__, __INT_FAST16_MAX__, __INT_FAST32_MAX__,
21830         __INT_FAST64_MAX__, __UINT_FAST8_MAX__, __UINT_FAST16_MAX__,
21831         __UINT_FAST32_MAX__, __UINT_FAST64_MAX__, __INTPTR_MAX__,
21832         __UINTPTR_MAX__, __WCHAR_MIN__, __WINT_MIN__, __SIG_ATOMIC_MIN__,
21833         __INT8_C, __INT16_C, __INT32_C, __INT64_C, __UINT8_C, __UINT16_C,
21834         __UINT32_C, __UINT64_C, __INTMAX_C, __UINTMAX_C): Document.
21835         * doc/tm.texi (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE,
21836         INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
21837         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
21838         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
21839         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
21840         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
21841         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
21842         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Document.
21843
21844 2009-03-31  Bernd Schmidt  <bernd.schmidt@analog.com>
21845
21846         * loop-iv.c (suitable_set_for_replacement): Renamed from
21847         simplify_using_assignment; changed to return bool and to accept new
21848         args DEST and SRC.  Return true iff we find a source/destination pair
21849         that can be used to make a replacement, and fill SRC and DEST if so.
21850         Remove arg ALTERED.  Don't deal with altered regs here.  All callers
21851         changed.
21852         (simplify_using_initial_values): Deal with altered regs here and track
21853         more precisely the effect they have on the validity of our expression.
21854
21855         * loop-iv.c (simplify_using_condition): A condition of the form
21856         (EQ REG CONST) can be used to simply make a substitution.
21857         (simplify_using_initial_values): Keep track of conditions we have seen
21858         and keep using them to simplify new expressions, while applying the
21859         same substitutions to them as to the expression.
21860
21861         * simplify-rtx.c (simplify_relational_operation_1): Simplify
21862         (LTU (PLUS a C) C) or (LTU (PLUS a C) a) to (GEU a -C); likewise with
21863         GEU/LTU reversed.
21864
21865         * loop-iv.c (determine_max_iter): New arg OLD_NITER.  All callers
21866         changed.  Use this when trying to improve the upper bound.
21867         Generate the comparison by using simplify_gen_relational.
21868
21869         * loop-iv.c (simple_rhs_p): Allow more kinds of expressions.
21870
21871         * loop-iv.c (replace_single_def_regs, replace_in_expr): New static
21872         functions.
21873         (simplify_using_assignment, simplify_using_initial_values): Call
21874         replace_in_expr to make replacements.  Call replace_single_def_regs
21875         once on the initial version of the expression.
21876
21877 2009-03-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
21878
21879         PR target/27237
21880         * doc/invoke.texi (ARM Options): Update documentation for -mthumb.
21881
21882 2009-03-31  Richard Guenther  <rguenther@suse.de>
21883
21884         PR middle-end/31029
21885         * fold-const.c (fold_binary): Fold X +- Y CMP X to Y CMP 0 for
21886         equality comparisons.  Fold C - X CMP X if C % 2 == 1.
21887
21888 2009-03-31  Richard Guenther  <rguenther@suse.de>
21889
21890         * tree.h (div_if_zero_remainder): Declare.
21891         * fold-const.c (div_if_zero_remainder): Export.
21892         * tree-ssa-forwprop.c
21893         (forward_propagate_addr_into_variable_array_index): Handle
21894         constant array index addition outside of the variable index.
21895
21896 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
21897
21898         PR target/39592
21899         * config/i386/i386.md (*floatunssi<mode>2_1, two unnamed
21900         define_splits, floatunssi<mode>2): Require x87 conversions from
21901         DImode to be permitted.
21902
21903 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
21904
21905         PR preprocessor/15638
21906         * c-common.c (c_cpp_error): Handle CPP_DL_FATAL.
21907
21908 2009-03-31  Richard Guenther  <rguenther@suse.de>
21909
21910         PR middle-end/23401
21911         PR middle-end/27810
21912         * tree.h (DECL_GIMPLE_FORMAL_TEMP_P): Remove.
21913         (struct tree_decl_with_vis): Remove gimple_formal_temp member.
21914         * tree-eh.c (lower_eh_constructs_2): Move LHS assignment to
21915         a separate statement.
21916         * gimplify.c (pop_gimplify_context): Remove formal temp handling.
21917         (lookup_tmp_var): Likewise.
21918         (is_gimple_formal_tmp_or_call_rhs): Remove.
21919         (is_gimple_reg_or_call_rhs): Rename to ...
21920         (is_gimple_reg_rhs_or_call): ... this.
21921         (is_gimple_mem_or_call_rhs): Rename to ...
21922         (is_gimple_mem_rhs_or_call): ... this.
21923         (internal_get_tmp_var): Use is_gimple_reg_rhs_or_call.  Set
21924         DECL_GIMPLE_REG_P only if is_formal is true.
21925         (gimplify_compound_lval): Use is_gimple_reg.  Remove workaround
21926         for non-proper post-modify expression gimplification.
21927         (gimplify_self_mod_expr): For post-modify expressions gimplify
21928         the lvalue to a minimal lvalue.
21929         (rhs_predicate_for): Remove formal temp case.
21930         (gimplify_modify_expr_rhs): Likewise.
21931         (gimplify_addr_expr): Use is_gimple_reg.
21932         (gimplify_expr): Remove formal temp cases.
21933         (gimple_regimplify_operands): Likewise.
21934         * tree-ssa-pre.c (get_or_alloc_expr_for): Treat EXC_PTR_EXPR
21935         and FILTER_EXPR like constants.
21936         * gimple.c (walk_gimple_op): Fix val_only initialization, use
21937         is_gimple_reg.
21938         (is_gimple_formal_tmp_rhs): Remove.
21939         (is_gimple_reg_rhs): Remove special casing.
21940         (is_gimple_mem_rhs): Fix.
21941         (is_gimple_reg): Move DECL_GIMPLE_REG_P handling earlier.
21942         (is_gimple_formal_tmp_var): Remove.
21943         (is_gimple_formal_tmp_reg): Likewise.
21944         (is_gimple_min_lval): Allow invariant component ref parts.
21945         * gimple.h (is_gimple_formal_tmp_rhs, is_gimple_formal_tmp_var,
21946         is_gimple_formal_tmp_reg): Remove declarations.
21947         * tree-cfg.c (verify_expr): Verify that variables with address
21948         taken do not have DECL_GIMPLE_REG_P set.
21949         * tree-mudflap.c (mf_build_check_statement_for): Use
21950         force_gimple_operand instead of gimplify_expr.
21951
21952 2009-03-31  Ayal Zaks  <zaks@il.ibm.com>
21953
21954         * modulo-sched.c (sms_schedule_by_order): Pass the actual
21955         schedulable rows to compute_split_row.
21956
21957 2009-03-31  Ben Elliston  <bje@au.ibm.com>
21958
21959         PR target/31635
21960         * config/rs6000/rs6000.c (rs6000_handle_option): Handle
21961         OPT_mvrsave.
21962
21963 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
21964
21965         * doc/invoke.texi (RS/6000 and PowerPC Options):Document mtls-markers.
21966         * configure.ac (HAVE_AS_TLS_MARKERS): New gas feature check.
21967         * configure: Regenerate.
21968         * config.in: Regenerate.
21969         * config/rs6000/rs6000.opt (mtls-markers): Add.
21970         * config/rs6000/rs6000.h (TARGET_TLS_MARKERS): Define.
21971         * config/rs6000/rs6000.md (tls_gd_aix, tls_gd_sysv): Add splitter.
21972         (tls_ld_aix, tls_ld_sysv): Likewise.
21973         (tls_gd, tls_gd_call_aix, tls_gd_call_sysv): New insns.
21974         (tls_ld, tls_ld_call_aix, tls_ld_call_sysv): Likewise.
21975
21976 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
21977
21978         * config/spu/spu.c (spu_expand_prologue): Delete redundant code.
21979
21980 2009-03-30  Jan Hubicka  <jh@suse.cz>
21981
21982         * tree-eh.c (make_eh_edges): Set probability 100% to first edge
21983         out of RESX.
21984         (tree_remove_unreachable_handlers): Cleanup EH predecestor
21985         detection and label handling.
21986
21987 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
21988
21989         * ira-int.h (ira_allocno): Rename left_conflicts_num to
21990         left_conflicts_size.
21991         (ALLOCNO_LEFT_CONFLICTS_NUM): Rename to
21992         ALLOCNO_LEFT_CONFLICTS_SIZE.
21993
21994         * ira-color.c (allocno_spill_priority, push_allocno_to_stack,
21995         remove_allocno_from_bucket_and_push,
21996         allocno_spill_priority_compare, push_allocnos_to_stack,
21997         setup_allocno_available_regs_num): Use ALLOCNO_LEFT_CONFLICTS_SIZE
21998         instead of ALLOCNO_LEFT_CONFLICTS_NUM.
21999         (setup_allocno_left_conflicts_num): Ditto.  Rename to
22000         setup_allocno_left_conflicts_size.
22001         (put_allocno_into_bucket): Use ALLOCNO_LEFT_CONFLICTS_SIZE
22002         instead of ALLOCNO_LEFT_CONFLICTS_NUM and
22003         setup_allocno_left_conflicts_size instead of
22004         setup_allocno_left_conflicts_num.
22005
22006         * ira-build.c (ira_create_allocno): Use
22007         ALLOCNO_LEFT_CONFLICTS_SIZE instead of
22008         ALLOCNO_LEFT_CONFLICTS_NUM.
22009
22010 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
22011
22012         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
22013         instead of DF_LR_OUT.
22014
22015         * ira-lives.c (process_bb_node_lives): Ditto.
22016
22017         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
22018         instead of DF_LR_{OUT,IN}.
22019
22020         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
22021
22022         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
22023
22024 2009-03-30  Jan Hubicka  <jh@suse.cz>
22025
22026         * except.c (label_to_region_map): Fix thinko.
22027
22028 2009-03-30  Steve Ellcey  <sje@cup.hp.com>
22029
22030         PR middle-end/38237
22031         * tree.h (tree_find_value): New declaration.
22032         * tree.c (tree_find_value): New function.
22033         * varasm.c (assemble_external): Avoid duplicate entries on lists.
22034
22035 2009-03-30  Jakub Jelinek  <jakub@redhat.com>
22036
22037         PR debug/39563
22038         * c-decl.c (struct c_binding): Add locus field.
22039         (bind): Add locus argument, set locus field from it.
22040         (pop_scope): For b->nested VAR_DECL or FUNCTION_DECL,
22041         add a DECL_EXTERNAL copy of b->decl to current BLOCK_VARS.
22042         (push_file_scope, pushtag, pushdecl, pushdecl_top_level,
22043         implicitly_declare, undeclared_variable, lookup_label,
22044         declare_label, c_make_fname_decl, c_builtin_function,
22045         c_builtin_function_ext_scope, store_parm_decls_newstyle): Adjust
22046         bind callers.
22047
22048 2009-03-30  H.J. Lu  <hongjiu.lu@intel.com>
22049
22050         PR target/38781
22051         * config/i386/i386.c (classify_argument): Check total size of
22052         structure.
22053
22054 2009-03-30  Martin Jambor  <mjambor@suse.cz>
22055
22056         * ipa-prop.h (jump_func_type): Rename IPA_UNKNOWN, IPA_CONST,
22057         IPA_CONST_MEMBER_PTR, and IPA_PASS_THROUGH to IPA_JF_UNKNOWN,
22058         IPA_JF_CONST, IPA_JF_CONST_MEMBER_PTR, and IPA_JF_PASS_THROUGH
22059         respectively.
22060
22061         * tree-dfa.c (get_ref_base_and_extent): Return -1 maxsize if
22062         seen_variable_array_ref while also traversing a union.
22063
22064         * tree-inline.c (optimize_inline_calls): Do not call
22065         cgraph_node_remove_callees.
22066         * cgraphbuild.c (remove_cgraph_callee_edges): New function.
22067         (pass_remove_cgraph_callee_edges): New variable.
22068         * passes.c (init_optimization_passes): Add
22069         pass_remove_cgraph_callee_edges after early inlining and before all
22070         late intraprocedural passes.
22071
22072         * omp-low.c (expand_omp_taskreg): Always set current_function_decl.
22073
22074 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
22075
22076         * config/sparc/sparc.md (*nand<V64mode>_vis, *nand<V32mode>_vis):
22077         Fix typos in names.
22078
22079 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
22080
22081         * combine.c (simplify_comparison): Use have_insn_for.
22082         * dojump.c (do_jump): Likewise.
22083
22084 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
22085
22086         * config/sparc/sparc.c (sparc_compare_emitted): Remove.
22087         (gen_compare_reg, emit_v9_brxx_insn): Handle MODE_CC
22088         sparc_compare_op0 like sparc_compare_emitted used to be handled.
22089         (sparc_expand_compare_and_swap_12): Set sparc_compare_op0
22090         instead of sparc_compare_emitted.
22091         * config/sparc/sparc.h (sparc_compare_emitted): Remove.
22092         * config/sparc/sparc.md (stack_protect_test): Set sparc_compare_op0
22093         instead of sparc_compare_emitted.
22094
22095 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
22096
22097         * bb-reorder.c (partition_hot_cold_basic_blocks): Do not
22098         enter/exit cfglayout mode.
22099         (pass_partition_block): Require it.
22100         * combine.c (find_single_use, reg_dead_at_p): Use CFG.
22101         (combine_instructions): Track basic blocks instead of labels.
22102         (update_cfg_for_uncondjump): New.
22103         (try_combine): Use it.  Update jumps after rescanning.
22104         (pass_combine): Require PROP_cfglayout.
22105         * passes.c (pass_outof_cfg_layout_mode): Move after regmove.
22106
22107 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
22108
22109         * cfglayout.c (pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode):
22110         Provide/destroy PROP_cfglayout respectively.
22111         * gcse.c (pass_jump_bypass, pass_gcse): Require it.
22112         * tree-pass.h (PROP_cfglayout): New.
22113
22114 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
22115
22116         * fold-const.c (const_binop, fold_convert_const_real_from_fixed,
22117         fold_convert_const_fixed_from_fixed,
22118         fold_convert_const_fixed_from_int,
22119         fold_convert_const_fixed_from_real, fold_negate_const): Do not
22120         set TREE_CONSTANT_OVERFLOW.
22121         * tree.def: Remove mention of TREE_CONSTANT_OVERFLOW.
22122         * tree.h (TREE_CONSTANT_OVERFLOW): Delete.
22123
22124 2009-03-30  Ira Rosen  <irar@il.ibm.com>
22125
22126         * tree-vect-loop-manip.c: New file.
22127         * tree-vectorizer.c: Update documentation and included files.
22128         (vect_loop_location): Make extern.
22129         (rename_use_op): Move to tree-vect-loop-manip.c
22130         (rename_variables_in_bb, rename_variables_in_loop,
22131         slpeel_update_phis_for_duplicate_loop,
22132         slpeel_update_phi_nodes_for_guard1,
22133         slpeel_update_phi_nodes_for_guard2, slpeel_make_loop_iterate_ntimes,
22134         slpeel_tree_duplicate_loop_to_edge_cfg, slpeel_add_loop_guard,
22135         slpeel_can_duplicate_loop_p, slpeel_verify_cfg_after_peeling,
22136         set_prologue_iterations, slpeel_tree_peel_loop_to_edge,
22137         find_loop_location): Likewise.
22138         (new_stmt_vec_info): Move to tree-vect-stmts.c.
22139         (init_stmt_vec_info_vec, free_stmt_vec_info_vec, free_stmt_vec_info,
22140         get_vectype_for_scalar_type, vect_is_simple_use,
22141         supportable_widening_operation, supportable_narrowing_operation):
22142         Likewise.
22143         (bb_in_loop_p): Move to tree-vect-loop.c.
22144         (new_loop_vec_info, destroy_loop_vec_info,
22145         reduction_code_for_scalar_code, report_vect_op,
22146         vect_is_simple_reduction, vect_is_simple_iv_evolution): Likewise.
22147         (vect_can_force_dr_alignment_p): Move to tree-vect-data-refs.c.
22148         (vect_supportable_dr_alignment): Likewise.
22149         * tree-vectorizer.h (tree-data-ref.h): Include.
22150         (vect_loop_location): Declare.
22151         Reorganize function declarations according to the new file structure.
22152         * tree-vect-loop.c: New file.
22153         * tree-vect-analyze.c: Remove. Move functions to tree-vect-data-refs.c,
22154         tree-vect-stmts.c, tree-vect-slp.c, tree-vect-loop.c.
22155         * tree-vect-data-refs.c: New file.
22156         * tree-vect-patterns.c (timevar.h): Don't include.
22157         * tree-vect-stmts.c: New file.
22158         * tree-vect-transform.c: Remove. Move functions to tree-vect-stmts.c,
22159         tree-vect-slp.c, tree-vect-loop.c.
22160         * Makefile.in (OBJS-common): Remove tree-vect-analyze.o and
22161         tree-vect-transform.o. Add tree-vect-data-refs.o, tree-vect-stmts.o,
22162         tree-vect-loop.o, tree-vect-loop-manip.o, tree-vect-slp.o.
22163         (tree-vect-analyze.o): Remove.
22164         (tree-vect-transform.o): Likewise.
22165         (tree-vect-data-refs.o): Add rule.
22166         (tree-vect-stmts.o, tree-vect-loop.o, tree-vect-loop-manip.o,
22167         tree-vect-slp.o): Likewise.
22168         (tree-vect-patterns.o): Remove redundant dependencies.
22169         (tree-vectorizer.o): Likewise.
22170         * tree-vect-slp.c: New file.
22171
22172 2009-03-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
22173
22174         * optc-gen.awk: Warn if an option flag has multiple different
22175         help strings.
22176
22177 2009-03-30  Sebastian Pop  <sebastian.pop@amd.com>
22178
22179         * doc/invoke.texi (-floop-interchange, -floop-strip-mine,
22180         -floop-block): Document dependences on PPL, CLooG and Graphite.
22181
22182 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
22183
22184         PR rtl-optimization/323
22185         * c-common.c (c_fully_fold, convert_and_check,
22186         c_common_truthvalue_conversion): Handle EXCESS_PRECISION_EXPR.
22187         (c_fully_fold_internal): Disallow EXCESS_PRECISION_EXPR.
22188         * c-common.def (EXCESS_PRECISION_EXPR): New.
22189         * c-cppbuiltin.c (builtin_define_float_constants): Define
22190         constants with enough digits for long double.
22191         * c-lex.c (interpret_float): Interpret constant with excess
22192         precision where appropriate.
22193         * c-opts.c (c_common_post_options): Set
22194         flag_excess_precision_cmdline.  Give an error for
22195         -fexcess-precision=standard for C++ for processors where the
22196         option is significant.
22197         * c-parser.c (c_parser_conditional_expression): Handle excess
22198         precision in condition.
22199         * c-typeck.c (convert_arguments): Handle arguments with excess
22200         precision.
22201         (build_unary_op): Move excess precision outside operation.
22202         (build_conditional_expr): Likewise.
22203         (build_compound_expr): Likewise.
22204         (build_c_cast): Do cast on operand of EXCESS_PRECISION_EXPR.
22205         (build_modify_expr): Handle excess precision in RHS.
22206         (convert_for_assignment): Handle excess precision in converted
22207         value.
22208         (digest_init, output_init_element, process_init_element): Handle
22209         excess precision in initializer.
22210         (c_finish_return): Handle excess precision in return value.
22211         (build_binary_op): Handle excess precision in operands and add
22212         excess precision as needed for operation.
22213         * common.opt (-fexcess-precision=): New option.
22214         * config/i386/i386.h (X87_ENABLE_ARITH, X87_ENABLE_FLOAT): New.
22215         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
22216         For standard excess precision, output explicit conversion to and
22217         truncation from XFmode.
22218         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1,
22219         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp,
22220         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387, two unnamed
22221         define_splits, floatdi<X87MODEF:mode>2_i387_with_xmm, two unnamed
22222         define_splits, *floatunssi<mode>2_1, two unnamed define_splits,
22223         floatunssi<mode>2, add<mode>3, sub<mode>3, mul<mode>3, divdf3,
22224         divsf3, *fop_<mode>_comm_i387, *fop_<mode>_1_i387,
22225         *fop_<MODEF:mode>_2_i387, *fop_<MODEF:mode>_3_i387,
22226         *fop_df_4_i387, *fop_df_5_i387, *fop_df_6_i387, two unnamed
22227         define_splits, sqrt<mode>2): Disable where appropriate for
22228         standard excess precision.
22229         * convert.c (convert_to_real): Do not shorten arithmetic to type
22230         for which excess precision would be used.
22231         * defaults.h (TARGET_FLT_EVAL_METHOD_NON_DEFAULT): Define.
22232         * doc/invoke.texi (-fexcess-precision=): Document option.
22233         (-mfpmath=): Correct index entry.
22234         * flags.h (enum excess_precision, flag_excess_precision_cmdline,
22235         flag_excess_precision): New.
22236         * langhooks.c (lhd_post_options): Set
22237         flag_excess_precision_cmdline.
22238         * opts.c (common_handle_option): Handle -fexcess-precision=.
22239         * toplev.c (flag_excess_precision_cmdline, flag_excess_precision,
22240         init_excess_precision): New.
22241         (lang_dependent_init_target): Call init_excess_precision.
22242         * tree.c (excess_precision_type): New.
22243         * tree.h (excess_precision_type): Declare.
22244
22245 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
22246
22247         PR c/35235
22248         * c-typeck.c (build_component_ref): Do not copy qualifiers from
22249         non-lvalue to component.
22250
22251 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
22252
22253         PR preprocessor/34695
22254         * Makefile.in (c-opts.o): Depend on c-tree.h.
22255         * c-common.c: Move down include of diagnostic.h.
22256         (done_lexing, c_cpp_error): New.
22257         * c-common.h (done_lexing): Declare.
22258         * c-decl.c (c_write_global_declarations): Don't check cpp_errors
22259         (parse_in).
22260         * c-opts.c: Include c-tree.h.
22261         (c_common_init_options): Set preprocessor error callback.
22262         (c_common_handle_option): Do not set preprocessor
22263         inhibit_warnings, warnings_are_errors, warn_system_headers,
22264         pedantic_errors or inhibit_warnings flags.
22265         (c_common_post_options): Do not check cpp_errors (parse_in).
22266         (c_common_finish): Do not output dependencies if there were
22267         errors.  Do not check return value of cpp_finish.
22268         * c-ppoutput.c (pp_file_change): Set input_location.
22269         * c-tree.h (c_cpp_error): Declare.
22270         * diagnostic.c (diagnostic_set_info_translated): Also initialize
22271         override_column.
22272         (diagnostic_build_prefix): Check override_column.
22273         * diagnostic.h (diagnostic_info): Add override_column field.
22274         (diagnostic_override_column): Define.
22275
22276 2009-03-28  Paolo Bonzini  <bonzini@gnu.org>
22277
22278         * c-common.c (c_expand_expr, c_staticp): Remove.
22279         * c-common.def (COMPOUND_LITERAL_EXPR): Delete.
22280         * c-common.h (emit_local_var, c_staticp, COMPOUND_LITERAL_EXPR_DECL,
22281         COMPOUND_LITERAL_EXPR_DECL_EXPR): Remove.
22282         * c-gimplify.c (gimplify_compound_literal_expr,
22283         optimize_compound_literals_in_ctor): Remove.
22284         (c_gimplify_expr): Remove COMPOUND_LITERAL_EXPR handling.
22285         * c-objc-common.h (LANG_HOOKS_STATICP): Remove.
22286         * c-semantics.c (emit_local_var): Remove.
22287
22288         * langhooks-def.h (lhd_expand_expr): Remove.
22289         * langhooks.c (lhd_expand_expr): Remove.
22290         * langhooks.h (LANG_HOOKS_DEF): Remove LANG_HOOKS_EXPAND_EXPR.
22291
22292         * expr.c (expand_expr_real_1): Move COMPOUND_LITERAL_EXPR
22293         handling from c-semantics.c; don't call into langhook.
22294         (expand_expr_addr_expr_1): Check that we don't get non-GENERIC trees.
22295         * gimplify.c (gimplify_compound_literal_expr,
22296         optimize_compound_literals_in_ctor): Move from c-gimplify.c.
22297         (gimplify_init_constructor): Call optimize_compound_literals_in_ctor.
22298         (gimplify_modify_expr_rhs, gimplify_expr): Handle COMPOUND_LITERAL_EXPR
22299         as was done in c-gimplify.c.
22300         * tree.c (staticp): Move COMPOUND_LITERAL_EXPR handling from c_staticp.
22301         * tree.h (COMPOUND_LITERAL_EXPR_DECL, COMPOUND_LITERAL_EXPR_DECL_EXPR):
22302         Move from c-common.h.
22303         * tree.def (COMPOUND_LITERAL_EXPR): Move from c-common.def.
22304
22305         * tree.c (staticp): Do not call langhook.
22306         * langhooks.c (lhd_staticp): Delete.
22307         * langhooks-def.h (lhd_staticp): Delete prototype.
22308         (LANG_HOOKS_STATICP): Delete.
22309         (LANG_HOOKS_INITIALIZER): Delete LANG_HOOKS_STATICP.
22310
22311         * doc/c-tree.texi (Expression nodes): Refer to DECL_EXPRs
22312         instead of DECL_STMTs.
22313
22314 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
22315
22316         PR c/456
22317         PR c/5675
22318         PR c/19976
22319         PR c/29116
22320         PR c/31871
22321         PR c/35198
22322         * builtins.c (fold_builtin_sincos): Build COMPOUND_EXPR in
22323         void_type_node.
22324         (fold_call_expr): Return a NOP_EXPR from folding rather than the
22325         contained expression.
22326         * c-common.c (c_fully_fold, c_fully_fold_internal, c_save_expr): New.
22327         (c_common_truthvalue_conversion): Use c_save_expr.  Do not fold
22328         conditional expressions for C.
22329         (decl_constant_value_for_optimization): Move from
22330         decl_constant_value_for_broken_optimization in c-typeck.c.  Check
22331         whether optimizing and that the expression is a VAR_DECL not of
22332         array type instead of doing such checks in the caller.  Do not
22333         check pedantic.  Call gcc_unreachable for C++.
22334         * c-common.def (C_MAYBE_CONST_EXPR): New.
22335         * c-common.h (c_fully_fold, c_save_expr,
22336         decl_constant_value_for_optimization): New prototypes.
22337         (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
22338         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
22339         EXPR_INT_CONST_OPERANDS): Define.
22340         * c-convert.c (convert): Strip nops from expression.
22341         * c-decl.c (groktypename): Take extra parameters expr and
22342         expr_const_operands.  Update call to grokdeclarator.
22343         (start_decl): Update call to grokdeclarator.  Add statement for
22344         expressions used in type of decl.
22345         (grokparm): Update call to grokdeclarator.
22346         (push_parm_decl): Update call to grokdeclarator.
22347         (build_compound_literal): Add parameter non_const and build a
22348         C_MAYBE_COSNT_EXPR if applicable.
22349         (grokdeclarator): Take extra parameters expr and
22350         expr_const_operands.  Track expressions used in declaration
22351         specifiers and declarators.  Fold array sizes and track whether
22352         they are constant expressions and whether they are integer
22353         constant expressions.
22354         (parser_xref_tag): Set expr and expr_const_operands fields in
22355         return value.
22356         (grokfield): Update call to grokdeclarator.
22357         (start_function): Update call to grokdeclarator.
22358         (build_null_declspecs): Set expr and expr_const_operands fields in
22359         return value.
22360         (declspecs_add_type): Handle expressions in typeof specifiers.
22361         * c-parser.c (c_parser_declspecs): Set expr and
22362         expr_const_operands fields for declaration specifiers.
22363         (c_parser_enum_specifier): Likewise.
22364         (c_parser_struct_or_union_specifier): Likewise.
22365         (c_parser_typeof_specifier): Likewise.  Update call to
22366         groktypename.  Fold expression as needed.  Return expressions with
22367         type instead of adding statements.
22368         (c_parser_attributes): Update calls to c_parser_expr_list.
22369         (c_parser_statement_after_labels): Fold expression before passing
22370         to objc_build_throw_stmt.
22371         (c_parser_condition): Fold expression.
22372         (c_parser_asm_operands): Fold expression.
22373         (c_parser_conditional_expression): Use c_save_expr.  Update call
22374         to build_conditional_expr.
22375         (c_parser_alignof_expression): Update call to groktypename.
22376         (c_parser_postfix_expression): Preserve C_MAYBE_CONST_EXPR as
22377         original_code.  Fold expression argument of va_arg.  Create
22378         C_MAYBE_CONST_EXPR to preserve side effects of expressions in type
22379         argument to va_arg.  Update calls to groktypename.  Fold array
22380         index for offsetof.  Verify that first argument to
22381         __builtin_choose_expr has integer type.
22382         (c_parser_postfix_expression_after_paren_type): Update calls to
22383         groktypename and build_compound_literal.  Handle expressions with
22384         side effects in type name.
22385         (c_parser_postfix_expression_after_primary): Update call to
22386         c_parser_expr_list.  Set original_code for calls to
22387         __builtin_constant_p.
22388         (c_parser_expr_list): Take extra parameter fold_p.  Fold
22389         expressions if requested.
22390         (c_parser_objc_type_name): Update call to groktypename.
22391         (c_parser_objc_synchronized_statement): Fold expression.
22392         (c_parser_objc_receiver): Fold expression.
22393         (c_parser_objc_keywordexpr): Update call to c_parser_expr_list.
22394         (c_parser_omp_clause_num_threads, c_parser_omp_clause_schedule,
22395         c_parser_omp_atomic, c_parser_omp_for_loop): Fold expressions.
22396         * c-tree.h (CONSTRUCTOR_NON_CONST): Define.
22397         (struct c_typespec): Add elements expr and expr_const_operands.
22398         (struct c_declspecs): Add elements expr and expr_const_operands.
22399         (groktypename, build_conditional_expr, build_compound_literal):
22400         Update prototypes.
22401         (in_late_binary_op): Declare.
22402         * c-typeck.c (note_integer_operands): New function.
22403         (in_late_binary_op): New variable.
22404         (decl_constant_value_for_broken_optimization): Move to c-common.c
22405         and rename to decl_constant_value_for_optimization.
22406         (default_function_array_conversion): Do not strip nops.
22407         (default_conversion): Do not call
22408         decl_constant_value_for_broken_optimization.
22409         (build_array_ref): Do not fold result.
22410         (c_expr_sizeof_expr): Fold operand.  Use C_MAYBE_CONST_EXPR for
22411         result when operand is a VLA.
22412         (c_expr_sizeof_type): Update call to groktypename.  Handle
22413         expressions included in type name.  Use C_MAYBE_CONST_EXPR for
22414         result when operand names a VLA type.
22415         (build_function_call): Update call to build_compound_literal.
22416         Only fold result for calls to __builtin_* functions.  Strip
22417         NOP_EXPR from INTEGER_CST returned from such functions.  Fold
22418         the function designator.
22419         (convert_arguments): Fold arguments.  Update call to
22420         convert_for_assignment.
22421         (build_unary_op): Handle increment and decrement of
22422         C_MAYBE_CONST_EXPR.  Move lvalue checks for increment and
22423         decrement earlier.  Fold operand of increment and decrement.
22424         Handle address of C_MAYBE_CONST_EXPR.  Only fold expression being
22425         built for integer operand.  Wrap returns that are INTEGER_CSTs
22426         without being integer constant expressions or that have integer
22427         constant operands without being INTEGER_CSTs.
22428         (lvalue_p): Handle C_MAYBE_CONST_EXPR.
22429         (build_conditional_expr): Add operand ifexp_bcp.  Track whether
22430         result is an integer constant expression or can be used in
22431         unevaluated parts of one and avoid folding and wrap as
22432         appropriate.  Fold operands before possibly doing -Wsign-compare
22433         warnings.
22434         (build_compound_expr): Wrap result for C99 if operands can be used
22435         in integer constant expressions.
22436         (build_c_cast): Update call to digest_init.  Do not ignore
22437         overflow from casting floating-point constants to integers.  Wrap
22438         results that could be confused with integer constant expressions,
22439         null pointer constants or floating-point constants.
22440         (c_cast_expr): Update call to groktypename.  Handle expressions
22441         included in type name.
22442         (build_modify_expr): Handle modifying a C_MAYBE_CONST_EXPR.  Fold
22443         lhs inside possible SAVE_EXPR.  Fold RHS before assignment.
22444         Update calls to convert_for_assignment.
22445         (convert_for_assignment): Take new parameter
22446         null_pointer_constant.  Do not strip nops or call
22447         decl_constant_value_for_broken_optimization.  Set
22448         in_late_binary_op for conversions to boolean.
22449         (store_init_value): Update call to digest_init.
22450         (digest_init): Take new parameter null_pointer_constant.  Do not
22451         call decl_constant_value_for_broken_optimization.  pedwarn for
22452         initializers not constant expressions.  Update calls to
22453         convert_for_assignment.
22454         (constructor_nonconst): New.
22455         (struct constructor_stack): Add nonconst element.
22456         (really_start_incremental_init, push_init_level, pop_init_level):
22457         Handle constructor_nonconst and nonconst element.
22458         (set_init_index): Call constant_expression_warning for array
22459         designators.
22460         (output_init_element): Fold value.  Set constructor_nonconst as
22461         applicable.  pedwarn for initializers not constant expressions.
22462         Update call to digest_init.  Call constant_expression_warning
22463         where constant initializers are required.
22464         (process_init_element): Use c_save_expr.
22465         (c_finish_goto_ptr): Fold expression.
22466         (c_finish_return): Fold return value.  Update call to
22467         convert_for_assignment.
22468         (c_start_case): Fold switch expression.
22469         (c_process_expr_stmt): Fold expression.
22470         (c_finish_stmt_expr): Create C_MAYBE_CONST_EXPR as needed to
22471         ensure statement expression is not evaluated in constant expression.
22472         (build_binary_op): Track whether results are integer constant
22473         expressions or may occur in such, disable folding and wrap results
22474         as applicable.  Fold operands for -Wsign-compare warnings unless
22475         in_late_binary_op.
22476         (c_objc_common_truthvalue_conversion): Handle results folded to
22477         integer constants that are not integer constant expressions.
22478         * doc/extend.texi: Document when typeof operands are evaluated,
22479         that condition of __builtin_choose_expr is an integer constant
22480         expression, and more about use of __builtin_constant_p in
22481         initializers.
22482
22483 2009-03-29  Richard Guenther  <rguenther@suse.de>
22484
22485         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Properly
22486         propagate addresses of array references.
22487
22488 2009-03-29  Steven Bosscher  <steven@gcc.gnu.org>
22489
22490         * regmove.c (perhaps_ends_bb_p): Remove.
22491         (optimize_reg_copy_1): Don't call perhaps_ends_bb_p.  Get basic block
22492         from INSN and check that the main loop stays within that basic block.
22493         (optimize_reg_copy_1, optimize_reg_copy_3, fixup_match_2): Likewise.
22494         (regmove_forward_pass): Split out from regmove_optimize.  Use
22495         FOR_EACH_BB and FOR_BB_INSNS instead of traversing the insns stream.
22496         (regmove_backward_pass): Split out from regmove_optimize.  Use
22497         FOR_EACH_BB_REVERSE and FOR_BB_INSNS_REVERS_SAFE.
22498         (regmove_optimize): Simplify.
22499
22500 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
22501
22502         PR target/39545
22503         * config/i386/i386.c (classify_argument): Ignore flexible array
22504         member in struct and warn ABI change.
22505
22506 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
22507
22508         * config/i386/i386-protos.h (ix86_agi_dependent): New.
22509
22510         * config/i386/i386.c (ix86_agi_dependent): Rewrite.
22511         (ix86_adjust_cost): Updated.
22512
22513 2009-03-29  Jan Hubicka  <jh@suse.cz>
22514
22515         PR middle-end/28850
22516         * tree-pass.h (pass_cleanup_eh): New function.
22517         (remove_unreachable_regions): Break code handling RTL
22518         to rtl_remove_unreachable_regions; remove ERT_MUST_NOT_THROW
22519         that can not be reached by runtime.
22520         (can_be_reached_by_runtime): New function.
22521         (label_to_region_map): New function.
22522         (num_eh_regions): New function.
22523         (rtl_remove_unreachable_regions): New function.
22524         (convert_from_eh_region_ranges): Call rtl_remove_unreachable_regions.
22525         (remove_eh_region): New function.
22526         * except.h: Include sbitmap and vecprim.
22527         (remove_eh_region, remove_unreachable_regions, label_to_region_map,
22528         num_eh_regions): Declare.
22529         * passes.c (init_optimization_passes): Schedule cleanup_eh.
22530         * Makefile.in (EXCEPT_H): New; replace all uses of except.h by it.
22531         * tree-eh.c (tree_remove_unreachable_handlers): New function.
22532         (tree_empty_eh_handler_p): New function.
22533         (cleanup_empty_eh): New function.
22534         (cleanup_eh): New function.
22535         (pass_cleanup_eh): New function.
22536
22537 2009-03-29  Jan Hubicka  <jh@suse.cz>
22538
22539         * except.c (verify_eh_tree): Fix handling of fun!=cfun; be ready
22540         for removed regions.
22541
22542 2009-03-29  Jan Hubicka  <jh@suse.cz>
22543
22544         * except.c (dump_eh_tree): Dump all datastructures.
22545
22546 2009-03-29  Jan Hubicka  <jh@suse.cz>
22547
22548         * except.c (duplicate_eh_regions_0): Handle AKA bitmap.
22549         (duplicate_eh_regions_1): Likewise.
22550         (duplicate_eh_regions): Likewise; cleanup code gorwing the region
22551         vector; call EH verification.
22552         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
22553         Be ready for region being removed.
22554
22555 2009-03-29  Jan Hubicka  <jh@suse.cz>
22556
22557         * bitmap.c (bitmap_last_set_bit): New function.
22558         * bitmap.h (bitmap_last_set_bit): Declare.
22559
22560 2009-03-29  David Ayers  <ayers@fsfe.org>
22561
22562         PR objc/27377
22563         * c-typeck.c (build_conditional_expr): Emit ObjC warnings
22564         by calling objc_compare_types and surpress warnings about
22565         incompatible C pointers that are compatible ObjC pointers.
22566
22567 2009-03-29  Adam Nemet  <anemet@caviumnetworks.com>
22568
22569         * cgraphbuild.c (build_cgraph_edges, rebuild_cgraph_edges): Don't
22570         call initialize_inline_failed.
22571         (initialize_inline_failed): Move it from here ...
22572         * cgraph.c (initialize_inline_failed): ... to here.
22573         (cgraph_create_edge): Call initialize_inline_failed rather than
22574         setting inline_failed directly.
22575
22576 2009-03-29  Ben Elliston  <bje@au.ibm.com>
22577
22578         PR target/32542
22579         * sysv4.opt (msdata): Improve comment.
22580         * linux64.h (ASM_SPEC32): Do not pass -memb when -msdata is given.
22581         * sysv4.h (SVR4_ASM_SPEC): Likewise.
22582
22583 2009-03-29  Ben Elliston  <bje@au.ibm.com>
22584
22585         PR target/30451
22586         * config/rs6000/rs6000.md (*movti_ppc64): Correct the order of
22587         load and store attributes.
22588
22589 2009-03-29  Ben Elliston  <bje@au.ibm.com>
22590
22591         * config/i386/i386.c (enum ix86_builtins): Add IX86_BUILTIN_HUGE_VALQ.
22592         (ix86_init_builtins): Add built-in function __builtin_huge_valq.
22593         (ix86_expand_builtin): Handle IX86_BUILTIN_HUGE_VALQ.
22594         * doc/extend.texi (X86 Built-in Functions): Add index entries for
22595         __builtin_infq and __builtin_huge_valq.
22596
22597 2009-03-28  Anatoly Sokolov  <aesok@post.ru>
22598
22599         * config/avr/avr.c (avr_mcu_t): Add atmega8c1, atmega16c1 and
22600         atmega8m1 devices.
22601         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
22602         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.)
22603
22604 2009-03-28  Xinliang David Li  <davidxl@google.com>
22605
22606         * tree-ssa-ccp.c (ccp_finalize): Add dbg_count support.
22607         (do_dbg_cnt): New function.
22608
22609 2009-03-28  Jan Hubicka  <jh@suse.cz>
22610
22611         Merge from pretty-ipa:
22612
22613         2009-03-27  Jan Hubicka  <jh@suse.cz>
22614
22615         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
22616         * tree-pass.h (function_called_by_processed_nodes_p): Declare.
22617         * passes.c (function_called_by_processed_nodes_p): New.
22618         * ipa-pure-const.c (check_call): Fix handling of operands.
22619         (analyze_function): Dump debug output for skipped bodies.
22620         (local_pure_const): Use function_called_by_processed_nodes_p.
22621         * dwarf2out.c (reference_to_unused): Use output.
22622         * passes.c (do_per_function_toporder): Likewise.
22623
22624         2008-11-12  Jan Hubicka  <jh@suse.cz>
22625
22626         * tree-pass.h (pass_fixup_cfg, pass_local_pure_const): Declare.
22627         * ipa-pure-const.c (funct_state_d): Add can throw field; make
22628         state_set_in_source enum
22629         (check_decl): Ignore memory tags; do not set fake looping flags;
22630         dump diagnostics.
22631         (check_operand, check_tree, check_rhs_var, check_lhs_var,
22632         get_asm_expr_operands, scan_function_op, scan_function_stmt): Remove.
22633         (check_call, analyze_function): Rewrite.
22634         (check_stmt): New.
22635         (add_new_function): Update call of analyze_function.
22636         (generate_summary): Add call of analyze_function.
22637         (propagate): Propagate can_throw; handle state_set_in_source correctly.
22638         (local_pure_const): New function.
22639         (pass_local_pure_const): New pass.
22640         * ipa-inline.c (inline_transform): Set after_inlining.
22641         * tree-eh.c (stmt_can_throw_external): New.
22642         * tree-optimize.c (execute_fixup_cfg): Do not set after_inlining;
22643         work with aliasing built.
22644         * tree-flow.h (stmt_can_throw_external): New.
22645         * passes.c (init_optimization_passes): Schedule fixup_cfg pass early;
22646         and local pure/const pass in early and late optimization queue.
22647
22648 2009-03-28  Martin Jambor  <mjambor@suse.cz>
22649
22650         * fold-const.c (get_pointer_modulus_and_residue): New parameter
22651         allow_func_align.
22652         (fold_binary): Allow function decl aligment consideration is the
22653         second argument is integer constant one.
22654         * tree-ssa-forwprop.c (simplify_bitwise_and): New function.
22655         (tree_ssa_forward_propagate_single_use_vars): Handle assing statements
22656         with BIT_AND_EXPR on the RHS by calling simplify_bitwise_and.
22657
22658 2009-03-28  Jan Hubicka  <jh@suse.cz>
22659
22660         * dwarf2out.c (dwarf2out_begin_prologue): Use crtl->nothrow
22661         * tree-eh.c (stmt_could_throw_p): Remove check for WEAK decls.
22662         * function.h (rtl_data): Add nothrow flag.
22663         * except.c (set_nothrow_function_flags): Use crtl->nothrow;
22664         set DECL_NOTHROW for AVAILABLE functions.
22665
22666 2009-03-28  Jakub Jelinek  <jakub@redhat.com>
22667
22668         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): If macro
22669         following vector keyword has expansion starting with pixel or bool
22670         keyword, expand vector to __vector and pixel or bool to __pixel or
22671         __bool.
22672
22673         PR c++/39554
22674         * opts.c (warning_disallowed_functions, warn_disallowed_functions,
22675         warn_if_disallowed_function_p): Removed.
22676         (common_handle_option): Don't handle OPT_Wdisallowed_function_list_.
22677         * c-parser.c (c_parser_postfix_expression_after_primary): Don't call
22678         warning_if_disallowed_function_p.
22679         * flags.h (warn_if_disallowed_function_p,
22680         warn_disallowed_functions): Removed.
22681         * common.opt (Wdisallowed-function-list=): Removed.
22682         * doc/invoke.texi (-Wdisallowed-function-list=): Removed.
22683
22684 2009-03-28  Richard Guenther  <rguenther@suse.de>
22685
22686         PR tree-optimization/38723
22687         * tree-ssa-pre.c (compute_avail): Add all default definitions to
22688         the entry block.
22689
22690 2009-03-28  Jan Hubicka  <jh@suse.cz>
22691
22692         * tree-ssa-structalias.c (ipa_pta_execute): Fix bogus node->analyzed
22693         test introduced by my previous patch.
22694
22695 2009-03-28  Richard Guenther  <rguenther@suse.de>
22696
22697         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not leave
22698         the PHIs value undefined.
22699
22700 2009-03-28  Jan Hubicka  <jh@suse.cz>
22701
22702         * tree-pass.h (pass_fixup_cfg): New pass.
22703         * ipa-inline.c (inline_transform): Set
22704         always_inline_functions_inlined/after_inlining.
22705         * tree-optimize.c (execute_fixup_cfg): Do not set them here.
22706         (pass_fixup_cfg): New pass.
22707         * passes.c (init_optimization_passes): Add fixup_cfg.
22708
22709 2009-03-28  Richard Guenther  <rguenther@suse.de>
22710
22711         PR tree-optimization/38458
22712         * tree-ssa-copy.c (copy_prop_visit_phi_node): For the first
22713         argument use the arguments copy-of value.
22714
22715 2009-03-28  Richard Guenther  <rguenther@suse.de>
22716
22717         PR tree-optimization/38180
22718         * tree-ssa-ccp.c (get_default_value): Simplify.
22719         (likely_value): Likewise.
22720         (surely_varying_stmt_p): Properly handle VOP case.
22721         (ccp_initialize): Likewise.
22722         (ccp_fold): Handle propagating through *&.
22723         (fold_const_aggregate_ref): Also handle decls.
22724
22725 2009-03-28  Jan Hubicka  <jh@suse.cz>
22726
22727         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
22728         * cgraph.h (cgraph_node): Likewise.
22729         * cgraphunit.c (cgraph_process_new_functions): Set process flag.
22730         (cgraph_reset_node): Use process flag.
22731         (cgraph_mark_functions_to_output): Likewise.
22732         (cgraph_expand_function): Likewise.
22733         (cgraph_expand_all_functions): Likewise.
22734         (cgraph_output_in_order): Likewise.
22735         * dwarf2out.c (reference_to_unused): Likewise.
22736         * passes.c do_per_function_toporder): Likewise.
22737
22738 2009-03-28  Jan Hubicka  <jh@suse.cz>
22739
22740         Bring from lto-branch:
22741
22742         2008-09-03  Doug Kwan  <dougkwan@google.com>
22743
22744         * cgraphbuild.c (initialize_inline_failed): Use cgraph_inline_failed_t
22745         enums instead of reason strings.
22746         * cgraph.c (cgraph_create_edge): Same.
22747         (cgraph_inline_failed_string): New function.
22748         * cgraph.h (cgraph_inline_failed_t): New enum type.
22749         (cgraph_inline_failed_string): New prototype.
22750         (struct cgraph_edge): Change type of INLINED_FAILED from constant
22751         char pointer to cgraph_inline_failed_t.
22752         (cgraph_inline_p): Adjust prototype to use cgraph_inline_failed_t.
22753         (cgraph_default_inline_p): Ditto.
22754         * cgraphunit.c (cgraph_inline_p): Change type of parameter REASON
22755         to cgraph_inline_failed_t pointer.
22756         * cif-code.def: New file.
22757         * ipa-inline.c (cgraph_mark_inline_edge): Use an enum instead of a
22758         reason string.
22759         (cgraph_check_inline_limits): Change type of REASON to pointer to
22760         cgraph_inline_failed_t.  Replace reason strings with enums.
22761         (cgraph_default_inline_p): Ditto.
22762         (cgraph_recursive_inlining_p): Ditto.
22763         (update_caller_keys): Change type of FAILED_REASON to
22764         cgraph_inline_failed_t.
22765         (cgraph_set_inline_failed): Change type of REASON to pointer to
22766         cgraph_inline_failed_t.  Call cgraph_inline_failed_string to
22767         convert enums to strings for text output.
22768         (cgraph_decide_inlining_of_small_function): Change FAILED_REASON
22769         to be of type cgraph_inline_failed_t.  Replace reason strings with
22770         enums.  Call cgraph_inline_failed_string to covert enums
22771         to strings for text output.
22772         (cgraph_decide_inlining): Replace reason strings with enums.
22773         (cgraph_decide_inlining_incrementally): Change type of FAILED_REASON
22774         to cgraph_inline_failed_t type.  Call cgraph_inline_failed_string
22775         for text output.
22776         * tree-inline.c (expand_call_inline): Change type of REASON
22777         to cgraph_inline_failed_t.  Replace reason strings with enums.
22778         Call cgraph_inline_failed_string for text output.
22779         * Makefile.in (CGRAPH_H): Add cif-code.def to dependencies.
22780         (cgraph.o): Ditto.
22781
22782 2009-03-28  Jan Hubicka  <jh@suse.cz>
22783
22784         * cgraph.c (cgraph_node, cgraph_remove_node, dump_cgraph_node,
22785         cgraph_clone_node): Remove master clone handling.
22786         (cgraph_is_master_clone, cgraph_master_clone): Remove.
22787         * cgraph.h (master_clone): Remove.
22788         (cgraph_is_master_clone, cgraph_master_clone): Remove.
22789         * ipa-type-escape.c (type_escape_execute): Remove use of master clone.
22790         (tree-ssa-structalias.c (ipa_pta_execute): Likewise.
22791
22792 2009-03-28  Jan Hubicka  <jh@suse.cz>
22793
22794         * cgraph.c (cgraph_function_body_availability): Functions declared
22795         inline are always safe to assume that it is not going to be replaced.
22796
22797 2009-03-28  Richard Guenther  <rguenther@suse.de>
22798
22799         PR tree-optimization/38513
22800         * tree-ssa-pre.c (eliminate): Remove redundant stores.
22801         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
22802         EXC_PTR_EXPR and FILTER_EXPR.
22803         (get_ref_from_reference_ops): Likewise.
22804
22805 2009-03-28  Richard Guenther  <rguenther@suse.de>
22806
22807         PR tree-optimization/38968
22808         * tree-vect-analyze.c (vect_compute_data_ref_alignment):
22809         Use FLOOR_MOD_EXPR to compute misalignment.
22810
22811 2009-03-28  Richard Guenther  <rguenther@suse.de>
22812
22813         PR tree-optimization/37795
22814         * tree.h (combine_comparisons): Declare.
22815         * fold-const.c (combine_comparisons): Export.
22816         * tree-ssa-ifcombine.c (ifcombine_ifandif): Optimize two successive
22817         comparisons.
22818         (ifcombine_iforif): Use combine_comparisons.
22819
22820 2009-03-28  Jan Hubicka  <jh@suse.cz>
22821
22822         * tree-eh.c (inlinable_call_p): New function.
22823         (make_eh_edges): Use it.
22824         (verify_eh_edges): Use it.
22825         (stmt_can_throw_external, stmt_can_throw_internal): Use it.
22826         * except.c (reachable_next_level): Add inlinable_function argument
22827         (sjlj_find_directly_reachable_regions): Update.
22828         (add_reachable_handler): Do not set saw_any_handlers.
22829         (reachable_next_level): Handle MUST_NOT_THROW more curefully.
22830         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
22831         Add new inlinable call parameter.
22832         (can_throw_internal, can_throw_external): Update.
22833         * except.h (can_throw_internal_1, can_throw_external_1,
22834         foreach_reachable_handler): Update declaration.
22835
22836 2009-03-28  Joseph Myers  <joseph@codesourcery.com>
22837
22838         * config/arm/t-arm-coff, config/h8300/coff.h,
22839         config/i386/i386-aout.h, config/i386/i386-coff.h,
22840         config/libgloss.h, config/m68k/coff.h, config/m68k/m68k-aout.h,
22841         config/pdp11/2bsd.h, config/rs6000/aix41.h,
22842         config/rs6000/aix41.opt, config/rs6000/t-newas, config/sh/coff.h,
22843         fix-header.c, fixproto, gen-protos.c, protoize.c, scan-decls.c,
22844         scan-types.sh, scan.c, scan.h, sort-protos, sys-protos.h,
22845         sys-types.h: Remove.
22846         * Makefile.in: Remove protoize and fixproto support and references
22847         in comments.
22848         (SYSCALLS.c.X-warn, TARGET_GETGROUPS_T, STMP_FIXPROTO,
22849         PROTOIZE_INSTALL_NAME, UNPROTOIZE_INSTALL_NAME, FIXPROTO_DEFINES):
22850         Remove.
22851         (ALL_HOST_OBJS): Remove $(PROTO_OBJS).
22852         (MOSTLYCLEANFILES): Remove protoize$(exeext) and
22853         unprotoize$(exeext).
22854         (rest.encap): Don't depend on $(STMP_FIXPROTO)
22855         (.PHONY): Don't depend on proto.
22856         (libgcc-support): Don't depend on $(STMP_FIXPROTO).
22857         (proto, PROTO_OBJS, protoize$(exeext), unprotoize$(exeext),
22858         protoize.o, unprotoize.o, SYSCALLS.c.X, test-protoize-simple,
22859         deduced.h, GEN_PROTOS_OBJS, build/gen-protos$(build_exeext),
22860         build/gen-protos.o, build/scan.o, xsys-protos.h,
22861         build/fix-header$(build_exeext), build/fix-header.o,
22862         build/scan-decls.o, fixhdr.ready, stmp-fixproto,
22863         stmp-install-fixproto): Remove.
22864         (mostlyclean): Don't remove xsys-protos.hT, SYSCALLS.c.X,
22865         SYSCALLS.c or fixproto files.
22866         (install-common): Don't install protoize.
22867         (install-headers-tar, install-headers-cpio, install-headers-cp):
22868         Don't depend on $(STMP_FIXPROTO).
22869         (install-mkheaders): Don't depend on $(STMP_FIXPROTO).  Don't
22870         install fixproto files or write out fixproto settings.
22871         (uninstall): Don't uninstall protoize.
22872         * config.gcc (use_fixproto): Remove.
22873         (arm-*-coff*, armel-*-coff*, h8300-*-*, i[34567]86-*-aout*,
22874         i[34567]86-*-coff*, m68k-*-aout*, m68k-*-coff*, pdp11-*-bsd,
22875         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*, sh-*-*): Remove.
22876         * config/m32r/t-linux (STMP_FIXPROTO): Remove.
22877         * config/m68k/m68k.c: Remove M68K_TARGET_COFF-conditional code.
22878         * config/mips/t-iris (FIXPROTO_DEFINES): Remove.
22879         * config/pa/t-pa-hpux (FIXPROTO_DEFINES): Remove.
22880         * config/pdp11/pdp11.c: Remove TWO_BSD-conditional code.
22881         * config/t-svr4 (FIXPROTO_DEFINES): Remove.
22882         * config/t-vxworks (STMP_FIXPROTO): Remove.
22883         * configure.ac (AC_TYPE_GETGROUPS, TARGET_GETGROUPS_T,
22884         STMP_FIXPROTO): Remove.
22885         * config.in, configure: Regenerate.
22886         * crtstuff.c (gid_t, uid_t): Don't undefine.
22887         * doc/install.texi: Change m68k-coff to m68k-elf in example.
22888         (arm-*-coff, arm-*-aout: Remove target entries.
22889         (*-ibm-aix*): Mention removal of support for AIX 4.2 and older.
22890         Remove mention of AIX 4.1.
22891         (m68k-*-*): Remove mention of m68k-*-aout and m68k-*-coff*.
22892         * doc/invoke.texi (Running Protoize): Remove.
22893         * doc/trouble.texi (Actual Bugs): Remove mention of fixproto.
22894         (Protoize Caveats): Remove.
22895         * tsystem.h: Update comments on headers assumed to exist.
22896
22897 2009-03-27  Vladimir Makarov  <vmakarov@redhat.com>
22898
22899         * genautomata.c: Add a new year to the copyright.  Add a new
22900         reference.
22901         (struct insn_reserv_decl): Add comments for member bypass_list.
22902         (find_bypass): Remove.
22903         (insert_bypass): New.
22904         (process_decls): Use insert_bypass.
22905         (output_internal_insn_latency_func): Output all bypasses with the
22906         same input insn in one switch case.
22907
22908         * rtl.def (define_bypass): Describe bypass choice.
22909         * doc/md.texi (define_bypass): Ditto.
22910
22911 2009-03-27  Richard Guenther  <rguenther@suse.de>
22912
22913         * gimplify.c (mark_addressable): Export.
22914         * tree-flow.h (mark_addressable): Declare.
22915         * tree-ssa-loop-manip.c (create_iv): Mark the base addressable.
22916         * tree-ssa.c (verify_phi_args): Verify that address taken
22917         variables have TREE_ADDRESSABLE set.
22918
22919 2009-03-27  Richard Guenther  <rguenther@suse.de>
22920
22921         * fold-const.c (build_fold_addr_expr_with_type_1): Rename back to ...
22922         (build_fold_addr_expr_with_type): ... this.  Remove in_fold handling.
22923         Do not mark decls TREE_ADDRESSABLE.
22924         (build_fold_addr_expr): Adjust.
22925         (fold_addr_expr): Remove.
22926         (fold_unary): Use build_fold_addr_expr.
22927         (fold_comparison): Likewise.
22928         (split_address_to_core_and_offset): Likewise.
22929         * coverage.c (tree_coverage_counter_addr): Mark the array decl
22930         TREE_ADDRESSABLE.
22931         * gimplify.c (mark_addressable): Do not exclude RESULT_DECLs.
22932         (gimplify_modify_expr_to_memcpy): Mark source and destination
22933         addressable.
22934         * omp-low.c (create_omp_child_function): Mark the object decl
22935         TREE_ADDRESSABLE.
22936         (lower_rec_input_clauses): Mark the var we take the address of
22937         TREE_ADDRESSABLE.
22938         (lower_omp_taskreg): Mark the sender decl TREE_ADDRESSABLE.
22939
22940 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
22941
22942         PR middle-end/39315
22943         * cfgexpand.c (expand_one_stack_var_at): Change alignment
22944         limit to MAX_SUPPORTED_STACK_ALIGNMENT.
22945
22946 2009-03-27  Richard Guenther  <rguenther@suse.de>
22947
22948         PR tree-optimization/39120
22949         * tree-ssa-structalias.c (handle_rhs_call): Fill out return
22950         constraints.
22951         (handle_lhs_call): Process return constraints.  Add escape
22952         constraints if necessary.
22953         (handle_const_call): Fill out return constraints.  Make nested
22954         case more precise.  Avoid consttmp if possible.
22955         (handle_pure_call): Fill out return constraints.  Avoid
22956         callused if possible.
22957         (find_func_aliases): Simplify call handling.
22958
22959 2009-03-27  Richard Guenther  <rguenther@suse.de>
22960
22961         PR tree-optimization/39120
22962         * tree-ssa-structalias.c (do_sd_constraint): Do not use CALLUSED
22963         as a representative.
22964         (solve_graph): Do propagate CALLUSED.
22965         (handle_pure_call): Use a scalar constraint from CALLUSED for
22966         the return value.
22967         (find_what_p_points_to): CALLUSED shall not appear in poins-to
22968         solutions.
22969
22970 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
22971
22972         PR c/39323
22973         * c-common.c (handle_aligned_attribute): Properly check alignment
22974         overflow.  Use (1U << i) instead of (1 << i).
22975
22976         * emit-rtl.c (get_mem_align_offset): Use "unsigned int" for align.
22977
22978         * expr.h (get_mem_align_offset): Updated.
22979
22980         * tree.h (tree_decl_common): Change align to "unsigned int" and
22981         move it before pointer_alias_set.
22982
22983 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
22984             Jakub Jelinek  <jakub@redhat.com>
22985
22986         PR target/38034
22987         * config/ia64/sync.md (cmpxchg_rel_<mode>): Replace input
22988         gr_register_operand with gr_reg_or_0_operand.
22989         (cmpxchg_rel_di): Likewise.
22990         (sync_lock_test_and_set<mode>): Likewise.
22991
22992 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
22993
22994         * jump.c (rtx_renumbered_equal_p): Use subreg_get_info.
22995         (true_regnum): Likewise.
22996
22997         * rtlanal.c (subreg_info): Moved to ...
22998         * rtl.h (subreg_info): Here.  New.
22999         (subreg_get_info): New.
23000
23001         * rtlanal.c (subreg_get_info): Make it extern.
23002
23003 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
23004
23005         PR target/39472
23006         * config/i386/i386.c (ix86_abi): New.
23007         (override_options): Handle -mabi=.
23008         (ix86_function_arg_regno_p): Replace DEFAULT_ABI with ix86_abi.
23009         (ix86_call_abi_override): Likewise.
23010         (init_cumulative_args): Likewise.
23011         (function_arg_advance): Likewise.
23012         (function_arg_64): Likewise.
23013         (function_arg): Likewise.
23014         (ix86_pass_by_reference): Likewise.
23015         (ix86_function_value_regno_p): Likewise.
23016         (ix86_build_builtin_va_list_abi): Likewise.
23017         (setup_incoming_varargs_64): Likewise.
23018         (is_va_list_char_pointer): Likewise.
23019         (ix86_init_machine_status): Likewise.
23020         (ix86_reg_parm_stack_space): Use enum calling_abi on call_abi.
23021         (ix86_function_type_abi): Return enum calling_abi.  Rewrite
23022         for 64bit.  Replace DEFAULT_ABI with ix86_abi.
23023         (ix86_function_abi): Make it static and return enum calling_abi.
23024         (ix86_cfun_abi): Return enum calling_abi.  Replace DEFAULT_ABI
23025         with ix86_abi.
23026         (ix86_fn_abi_va_list): Updated.
23027
23028         * config/i386/i386.h (ix86_abi): New.
23029         (STACK_BOUNDARY): Replace DEFAULT_ABI with ix86_abi.
23030         (CONDITIONAL_REGISTER_USAGE): Likewise.
23031         (CUMULATIVE_ARGS): Change call_abi type to enum calling_abi.
23032         (machine_function): Likewise.
23033
23034         * config/i386/i386.md (untyped_call): Replace DEFAULT_ABI
23035         with ix86_abi.
23036         * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Likewise.
23037         (STACK_BOUNDARY): Likewise.
23038         * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Likewise.
23039
23040         * config/i386/i386.opt (mabi=): New.
23041
23042         * config/i386/i386-protos.h (ix86_cfun_abi): Changed to
23043         return enum calling_abi.
23044         (ix86_function_type_abi): Likewise.
23045         (ix86_function_abi): Removed.
23046
23047         * doc/invoke.texi: Document -mabi= option for x86.
23048
23049 2009-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
23050
23051         * builtins.c (real_dconstp): Delete.
23052         (fold_builtin_logarithm): Remove inaccurate log(e) special case.
23053
23054 2009-03-27  Dodji Seketeli  <dodji@redhat.com>
23055             Jakub Jelinek  <jakub@redhat.com>
23056
23057         PR debug/37959
23058         * dwarf2out.c (dwarf_attr_name): Handle DW_AT_explicit attribute.
23059         (gen_subprogram_die): When a function is explicit, generate the
23060         DW_AT_explicit attribute.
23061         * langhooks.h (struct lang_hooks_for_decls): Add
23062         function_decl_explicit_p langhook.
23063         * langhooks-def.h (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P): Define.
23064         (LANG_HOOKS_DECLS): Add LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P.
23065
23066 2009-03-27  Jakub Jelinek  <jakub@redhat.com>
23067
23068         * builtins.c (fold_builtin_memory_op): Optimize memmove
23069         into memcpy if we can prove source and destination don't overlap.
23070
23071         * tree-inline.c: Include gt-tree-inline.h.
23072         (clone_fn_id_num): New variable.
23073         (clone_function_name): New function.
23074         (tree_function_versioning): Use it.
23075         * Makefile.in (GTFILES): Add tree-inline.c.
23076
23077 2009-03-27  Mark Mitchell  <mark@codesourcery.com>
23078
23079         * BASE-VER: Change to 4.5.0.
23080
23081 2009-03-27  Xinliang David Li  <davidxl@google.com>
23082
23083         PR tree-optimization/39557
23084         * tree-ssa.c (warn_uninitialized_vars): free postdom info.
23085
23086 2009-03-27  Xinliang David Li  <davidxl@google.com>
23087
23088         PR tree-optimization/39548
23089         * tree-ssa-copy.c (copy_prop_visit_phi_node): Add copy
23090         candidate check.
23091
23092 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
23093
23094         * c-common.c (pointer_int_sum): Use %wd on return from
23095         tree_low_cst.
23096
23097 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
23098
23099         * c-common.c (pointer_int_sum): Use HOST_WIDE_INT_PRINT_DEC
23100         on return from tree_low_cst.
23101
23102 2009-03-27  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23103
23104         PR c++/36799
23105         * ginclude/stdarg.h (va_copy): Define also for
23106         __GXX_EXPERIMENTAL_CXX0X__.
23107
23108 2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23109
23110         PR c++/35652
23111         * builtins.h (c_strlen): Do not warn here.
23112         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
23113         * c-common.c (pointer_int_sum): Take an explicit location.
23114         Warn about offsets out of bounds.
23115         * c-common.h (pointer_int_sum): Adjust declaration.
23116
23117 2009-03-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23118
23119         * doc/invoke.texi (i386 and x86-64 Windows Options): Fix texinfo
23120         markup glitch.
23121
23122 2009-03-26  Jakub Jelinek  <jakub@redhat.com>
23123
23124         PR c++/39554
23125         * opts.c (warn_if_disallowed_function_p): Don't assume
23126         get_callee_fndecl must return non-NULL.
23127
23128 2009-03-26  Vladimir Makarov  <vmakarov@redhat.com>
23129
23130         PR rtl-optimization/39522
23131         * reload1.c (reload_as_needed): Invalidate reg_last_reload_reg too
23132         when reg_reloaded_valid is set.
23133
23134 2009-03-26  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
23135
23136         * config/spu/divv2df3.c: New file.
23137         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add it.
23138         (DPBIT_FUNCS): Filter out _div_df.
23139
23140 2009-03-26  Bernd Schmidt  <bernd.schmidt@analog.com>
23141
23142         * config/bfin/bfin.c (bfin_optimize_loop): If the LSETUP goes before
23143         a jump insn, count that jump in the distance to the loop start.
23144
23145 2009-03-25  Kaz Kojima  <kkojima@gcc.gnu.org>
23146
23147         PR target/39523
23148         * config/sh/sh.c (calc_live_regs): Fix condition for global
23149         registers except PIC_OFFSET_TABLE_REGNUM.
23150
23151 2009-03-25  Kai Tietz  <kai.tietz@onevision.com>
23152
23153         PR/39518
23154         * doc/invoke.texi (-mconsole): New.
23155         (-mcygwin): New.
23156         (-mno-cygwin): New.
23157         (-mdll): New.
23158         (-mnop-fun-dllimport): New.
23159         (-mthread): New.
23160         (-mwin32): New.
23161         (-mwindows): New.
23162         (sub section "i386 and x86-64 Windows Options"): New.
23163
23164 2009-03-25  Ralf Corsépius  <ralf.corsepius@rtems.org>
23165
23166         * config/arm/rtems-elf.h: Remove LINK_GCC_C_SEQUENCE_SPEC.
23167         * config/rs6000/t-rtems: Remove MULTILIB_EXTRA_OPTS.
23168
23169 2009-03-25  Richard Guenther  <rguenther@suse.de>
23170
23171         PR middle-end/39497
23172         * Makefile.in (dfp.o-warn): Use -fno-strict-aliasing instead
23173         of -Wno-error.
23174
23175 2009-03-25  Andrey Belevantsev  <abel@ispras.ru>
23176
23177         * config/ia64/ia64.c (ia64_set_sched_flags): Zero spec_info->mask when
23178         neither of haifa/selective schedulers are working.
23179
23180 2009-03-25  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23181
23182         * doc/invoke.texi (Debugging Options): Fix description of
23183         -fno-merge-debug-strings.
23184
23185 2009-03-24  Hans-Peter Nilsson  <hp@axis.com>
23186
23187         * config/cris/libgcc.ver: New version-script.
23188         * config/cris/t-linux (SHLIB_MAPFILES): Use it.
23189
23190         * configure.ac <GAS features, nop mnemonic>: Add pattern
23191         crisv32-*-* for "nop".
23192         <GAS features, Thread-local storage>: Add item for CRIS and CRIS v32.
23193         * configure: Regenerate.
23194
23195 2009-03-24  Ira Rosen  <irar@il.ibm.com>
23196
23197         PR tree-optimization/39529
23198         * tree-vect-transform.c (vect_create_data_ref_ptr): Call
23199         mark_sym_for_renaming for the tag copied to the new vector
23200         pointer.
23201
23202 2009-03-24  Arthur Loiret  <aloiret@debian.org>
23203
23204         * config.host (alpha*-*-linux*): Use driver-alpha.o and alpha/x-alpha.
23205         * config/alpha/linux.h (host_detect_local_cpu): Declare, add to
23206         EXTRA_SPEC_FUNCTIONS.
23207         (MCPU_MTUNE_NATIVE_SPECS, DRIVER_SELF_SPECS): New macros.
23208         * config/alpha/driver-alpha.c, config/alpha/x-alpha: New.
23209         * doc/invoke.texi (DEC Alpha Options): Document 'native' value for
23210         -march and -mtune options.
23211
23212 2009-03-24  Ralf Corsépius  <ralf.corsepius@rtems.org>
23213
23214         * config/m68k/t-rtems: Add m5329 multilib.
23215
23216 2009-03-24  Dodji Seketeli  <dodji@redhat.com>
23217             Jakub Jelinek  <jakub@redhat.com>
23218
23219         PR debug/39524
23220         * dwarf2out.c (gen_variable_die): Avoid adding duplicate declaration
23221         nodes.
23222
23223 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
23224
23225         PR c/39495
23226         * c-parser.c (c_parser_omp_for_loop): Call c_parser_binary_expression
23227         instead of c_parser_expression_conv, if original_code isn't one of the
23228         4 allowed comparison codes, fail.
23229
23230 2009-03-23  Richard Guenther  <rguenther@suse.de>
23231
23232         * cgraph.h (struct cgraph_node): Reorder fields for 64-bit hosts.
23233         * tree.h (struct tree_type): Likewise.
23234         * reload.h (struct insn_chain): Likewise.
23235         * dwarf2out.c (struct dw_loc_descr_struct): Likewise.
23236         * function.h (struct function): Likewise.
23237         * tree-ssa-structalias.c (struct equiv_class_label): Likewise.
23238
23239 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
23240
23241         PR tree-optimization/39516
23242         * lambda-code.c (perfect_nestify): Fix type of the uboundvar variable.
23243
23244 2009-03-23  Bingfeng Mei  <bmei@broadcom.com>
23245
23246         * config.gcc (need_64bit_hwint): Make clear that need_64bit_hwint
23247         should be set true if BITS_PER_WORD of target is bigger than 32
23248
23249 2009-03-22  Hans-Peter Nilsson  <hp@axis.com>
23250
23251         * config/cris/linux.h (CRIS_LINK_SUBTARGET_SPEC):
23252         Translate -B-options to -rpath-link.  Correct existing
23253         rpath-link and conditionalize on !nostdlib.
23254
23255 2009-03-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23256
23257         * doc/extend.texi (Function Attributes, Variable Attributes):
23258         Fix typos.
23259         * doc/invoke.texi (Debugging Options, Optimize Options)
23260         (i386 and x86-64 Options, MCore Options): Likewise.
23261
23262 2009-03-20  Jakub Jelinek  <jakub@redhat.com>
23263
23264         PR debug/37890
23265         * dwarf2out.c (gen_namespace_die): Add context_die argument and use
23266         it for block local namespace aliases.
23267         (gen_decl_die): Pass context_die to gen_namespace_die.
23268
23269 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
23270
23271         PR c/39495
23272         * c-omp.c (c_finish_omp_for): Allow NE_EXPR with TREE_TYPE (decl)'s
23273         minimum or maximum value.
23274
23275 2009-03-19  Alexandre Oliva  <aoliva@redhat.com>
23276
23277         * reginfo.c (globalize_reg): Recompute derived reg sets.
23278
23279 2009-03-19  Ozkan Sezer  <sezeroz@gmail.com>
23280
23281         PR target/39063
23282         * libgcc2.c (mprotect): Do not use signed arguments for
23283         VirtualProtect, use DWORD arguments.  Also fix the 'may
23284         be used uninitialized' warning for the np variable.
23285
23286 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
23287
23288         PR target/39496
23289         * config/i386/i386.c (ix86_function_regparm): Don't optimize local
23290         functions using regparm calling conventions when not optimizing.
23291         (ix86_function_sseregparm): Similarly for sseregparm calling
23292         conventions.
23293
23294 2009-03-19  Li Feng  <nemokingdom@gmail.com>
23295
23296         PR middle-end/39500
23297         * tree-data-ref.c (analyze_subscript_affine_affine): There is no
23298         dependence if the first conflict is after niter iterations.
23299
23300 2009-03-19  Hans-Peter Nilsson  <hp@axis.com>
23301
23302         PR middle-end/38609
23303         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Force for all
23304         functions with dynamic stack-pointer adjustments.
23305
23306 2009-03-19  Ben Elliston  <bje@au.ibm.com>
23307
23308         * doc/invoke.texi (RS/6000 and PowerPC Options): Fix -msdata-data
23309         option; change to -msdata=data.
23310
23311 2009-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23312
23313         * c.opt: Unify help texts for -Wdeprecated, -Wsystem-headers,
23314         and -fopenmp.
23315
23316 2009-03-18  Eric Botcazou  <ebotcazou@adacore.com>
23317
23318         PR target/35180
23319         * config/sparc/sparc.md (do_builtin_setjmp_setup): Prettify asm output.
23320
23321 2009-03-18  Sandra Loosemore  <sandra@codesourcery.com>
23322
23323         * doc/invoke.texi (Code Gen Options): Expand discussion of
23324         -fno-common.
23325
23326 2009-03-18  Jakub Jelinek  <jakub@redhat.com>
23327
23328         * dse.c (struct group_info): Reorder fields for 64-bit hosts.
23329         * matrix-reorg.c (struct matrix_info): Likewise.
23330         * tree-ssa-loop-ivopts.c (struct ivopts_data): Likewise.
23331         * rtl.h (struct mem_attrs): Likewise.
23332         * df.h (struct df): Likewise.
23333         * tree-data-ref.h (struct data_dependence_relation): Likewise.
23334         * ira-int.h (struct ira_allocno): Likewise.
23335         * df-scan.c (struct df_collection_rec): Likewise.
23336         * ira.c (struct equivalence): Likewise.
23337         * function.c (struct temp_slot): Likewise.
23338         * cfgloop.h (struct loop): Likewise.
23339
23340         PR debug/39485
23341         * function.c (use_register_for_decl): When not optimizing, disregard
23342         register keyword for variables with types containing methods.
23343
23344 2009-03-18  Sebastian Pop  <sebastian.pop@amd.com>
23345
23346         PR middle-end/39447
23347         * graphite.c (exclude_component_ref): Renamed contains_component_ref_p.
23348         (is_simple_operand): Call contains_component_ref_p before calling data
23349         reference analysis that would fail on COMPONENT_REFs.
23350
23351         * tree-vrp.c (search_for_addr_array): Fix formatting.
23352
23353 2009-03-18  Richard Guenther  <rguenther@suse.de>
23354
23355         * tree-vect-transform.c (vect_loop_versioning): Fold the
23356         generated comparisons.
23357         * tree-vectorizer.c (set_prologue_iterations): Likewise.
23358         (slpeel_tree_peel_loop_to_edge): Likewise.
23359
23360 2009-03-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23361
23362         PR middle-end/37805
23363         * opts.c (print_specific_help): In addition to `undocumented',
23364         accept `separate' and `joined' flags if passed alone.  Describe
23365         output by the first matched one of those.
23366         (common_handle_option): Skip over empty strings.
23367         * gcc.c (display_help): Fix help string for `--help='.
23368         * doc/invoke.texi (Option Summary, Overall Options): With
23369         `--help=', classes and qualifiers can both be repeated, but
23370         only the latter can be negated.  One should not pass only
23371         negated qualifiers.  Fix markup and examples.
23372
23373         Revert
23374         2008-10-14  Jakub Jelinek  <jakub@redhat.com>
23375         PR middle-end/37805
23376         * opts.c (common_handle_option): Don't ICE on -fhelp=joined
23377         and -fhelp=separate.
23378
23379 2009-03-17  Jing Yu  <jingyu@google.com>
23380
23381         PR middle-end/39378
23382         * function.h (struct rtl_data): Move is_thunk from here...
23383         (struct function): ...to here.
23384         * cp/method.c (use_thunk): Change is_thunk from crtl to cfun.
23385         * varasm.c (assemble_start_function): Change is_thunk from crtl to
23386         cfun.
23387         * config/alpha/alpha.c (alpha_sa_mask): Change is_thunk from crtl to
23388         cfun.
23389         (alpha_does_function_need_gp, alpha_start_function): Likewise.
23390         (alpha_output_function_end_prologue): Likewise.
23391         (alpha_end_function, alpha_output_mi_thunk_osf): Likewise.
23392         * config/rs6000/rs6000.c (rs6000_ra_ever_killed): Likewise.
23393         (rs6000_output_function_epilogue): Likewise.
23394         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
23395
23396 2009-03-17  Uros Bizjak  <ubizjak@gmail.com>
23397
23398         PR target/39482
23399         * config/i386/i386.md (*truncdfsf_mixed): Avoid combining registers
23400         from different units in a single alternative.
23401         (*truncdfsf_i387): Ditto.
23402         (*truncxfsf2_mixed): Ditto.
23403         (*truncxfdf2_mixed): Ditto.
23404
23405 2009-03-17  Jakub Jelinek  <jakub@redhat.com>
23406
23407         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Allow
23408         non-NAMESPACE_DECL IMPORTED_DECL_ASSOCIATED_DECL.
23409
23410         PR debug/39474
23411         * tree-ssa-live.c (remove_unused_locals): Don't remove local
23412         unused non-artificial variables when not optimizing.
23413
23414         PR debug/39471
23415         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Emit
23416         DW_TAG_imported_module even if decl is IMPORTED_DECL with
23417         NAMESPACE_DECL in its DECL_INITIAL.
23418
23419         PR middle-end/39443
23420         * optabs.c (set_user_assembler_libfunc): New function.
23421         * expr.h (set_user_assembler_libfunc): New prototype.
23422         * c-common.c: Include libfuncs.h.
23423         (set_builtin_user_assembler_name): Call set_user_assembler_libfunc
23424         for memcmp, memset, memcpy, memmove and abort.
23425         * Makefile.in (c-common.o): Depend on libfuncs.h.
23426
23427         PR debug/39412
23428         * dwarf2out.c (gen_inlined_enumeration_type_die,
23429         gen_inlined_structure_type_die, gen_inlined_union_type_die,
23430         gen_tagged_type_instantiation_die): Removed.
23431         (gen_decl_die): For TYPE_DECL_IS_STUB with non-NULL decl_origin
23432         do nothing.
23433
23434 2009-03-17  Janis Johnson  <janis187@us.ibm.com>
23435
23436         PR testsuite/38526
23437         * Makefile.in (site.exp): Rename TEST_GCC_EXEC_PREFIX and comment
23438         its use.
23439         (check-%): Don't set GCC_EXEC_PREFIX when invoking runtest.
23440         (check-parallel-%): Ditto.
23441         (check-consistency): Ditto.
23442
23443 2009-03-17  Kai Tietz  <kai.tietz@onevision.com>
23444
23445         * ipa-struct-reorg.c (create_general_new_stmt): Initialize
23446         local variable rhs by NULL_TREE.
23447
23448 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
23449
23450         PR target/39477
23451         * doc/extend.texi: Correct register behavior for regparm on Intel 386.
23452
23453 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
23454
23455         PR target/39476
23456         * config/i386/i386.c (ix86_function_regparm): Rewrite for 64bit.
23457
23458 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
23459
23460         PR target/39473
23461         * config/i386/i386.c (ix86_expand_call): Check extra clobbers
23462         for ms->sysv ABI calls only in 64bit mode.
23463
23464         * config/i386/i386.md (untyped_call): Support 32bit.
23465
23466 2009-03-16  H.J. Lu  <hongjiu.lu@intel.com>
23467
23468         * doc/extend.texi: Replace x86_65 with x86_64.
23469
23470 2009-03-16  Jakub Jelinek  <jakub@redhat.com>
23471
23472         PR tree-optimization/39455
23473         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Fix types
23474         mismatches for POINTER_TYPE_P (type).
23475         (number_of_iterations_le): Likewise.
23476
23477 2009-03-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
23478
23479         * config/picochip/picochip.c: Removed profiling support.
23480         * config/picochip/picochip.md: Removed profiling instruction.
23481         * config/picochip/picochip.h: Removed profiling builtin.
23482
23483 2009-03-16  Joseph Myers  <joseph@codesourcery.com>
23484
23485         * doc/install.texi (--with-host-libstdcxx): Document.
23486
23487 2009-03-14  Anatoly Sokolov  <aesok@post.ru>
23488
23489         PR target/34299
23490         * config/avr/avr.c (avr_handle_fndecl_attribute): Move code for
23491         generate a warning if the function name does not begin with
23492         "__vector" and the function has either the 'signal' or 'interrupt'
23493         attribute, from here to ...
23494         (avr_declare_function_name): ...here. New function.
23495         * config/avr/avr.h (ASM_DECLARE_FUNCTION_NAME): Redefine.
23496         * config/avr/avr-protos.h (avr_declare_function_name): Declare.
23497
23498 2009-03-14  Jakub Jelinek  <jakub@redhat.com>
23499
23500         PR bootstrap/39454
23501         * cse.c (fold_rtx): Don't modify original const_arg1 when
23502         canonicalizing SHIFT_COUNT_TRUNCATED shift count, do it on a
23503         separate variable instead.
23504         * rtlanal.c (nonzero_bits1) <case ASHIFTRT>: Don't assume anything
23505         from out of range shift counts.
23506         (num_sign_bit_copies1) <case ASHIFTRT, case ASHIFT>: Similarly.
23507
23508 2009-03-13  Catherine Moore  <clm@codesourcery.com>
23509
23510         * config/i386/x-mingw32 (host-mingw32.o): Replace
23511         diagnostic.h with $(DIAGNOSTIC_H).
23512
23513 2009-03-12  Jakub Jelinek  <jakub@redhat.com>
23514
23515         PR target/39431
23516         * config/i386/predicates.md (cmpxchg8b_pic_memory_operand): New
23517         predicate.
23518         * config/i386/sync.md (sync_compare_and_swap<mode>,
23519         sync_compare_and_swap_cc<mode>): For DImode with -m32 -fpic check
23520         if operands[1] is cmpxchg8b_pic_memory_operand, if not force address
23521         into a register.
23522         (sync_double_compare_and_swapdi_pic,
23523         sync_double_compare_and_swap_ccdi_pic): Require operand 1 to be
23524         cmpxchg8b_pic_memory_operand instead of just memory_operand.
23525
23526 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
23527
23528         PR target/39445
23529         * config/i386/i386.c (ix86_expand_push): Don't set memory alignment.
23530
23531 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
23532
23533         PR target/39327
23534         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
23535         (avx_addsubv4df3): Likewise.
23536         (*avx_addsubv4sf3): Likewise.
23537         (sse3_addsubv4sf3): Likewise.
23538
23539 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
23540
23541         PR target/38824
23542         * config/i386/i386.md: Compare REGNO on the new peephole2 patterns.
23543
23544 2009-03-12  Vladimir Makarov  <vmakarov@redhat.com>
23545
23546         PR debug/39432
23547         * ira-int.h (struct allocno): Fix comment for calls_crossed_num.
23548         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
23549         registers for allocnos created from user-defined variables.
23550
23551 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
23552
23553         PR target/39181
23554         * config/spu/spu.c (spu_expand_mov): Handle invalid subregs
23555         of non-integer mode as well.
23556
23557 2009-03-11  Adam Nemet  <anemet@caviumnetworks.com>
23558
23559         * gimplify.c (gimplify_call_expr): Don't set CALL_CANNOT_INLINE_P
23560         for functions for which the parameter types are unknown.
23561
23562 2009-03-11  Jakub Jelinek  <jakub@redhat.com>
23563
23564         PR target/39137
23565         * cfgexpand.c (get_decl_align_unit): Use LOCAL_DECL_ALIGNMENT macro.
23566         * defaults.h (LOCAL_DECL_ALIGNMENT): Define if not yet defined.
23567         * config/i386/i386.h (LOCAL_DECL_ALIGNMENT): Define.
23568         * config/i386/i386.c (ix86_local_alignment): For
23569         -m32 -mpreferred-stack-boundary=2 use 32-bit alignment for
23570         long long variables on the stack to avoid dynamic realignment.
23571         Allow the first argument to be a decl rather than type.
23572         * doc/tm.texi (LOCAL_DECL_ALIGNMENT): Document.
23573
23574 2009-03-11  Nick Clifton  <nickc@redhat.com>
23575
23576         PR target/5362
23577         * config/mcore/mcore.opt: Remove deprecated m4align and m8align
23578         options.
23579         Add description to mno-lsim option.
23580         * config/mcore/mcore.h: Remove comment about deprecated m4align
23581         option.
23582         (TARGET_DEFAULT): Remove deprecated MASK_M8ALIGN.
23583         * doc/invoke.texi: Add description of mno-lsim and
23584         mstack-increment options.
23585
23586         * config/fr30/fr30.opt: Document the -mno-lsim option.
23587         * doc/invoke.texi: Add descriptions of the FR30's -msmall-model
23588         and -mno-lsim options.
23589
23590 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
23591
23592         * fold-const.c (fold_comparison): Only call fold_inf_compare
23593         if the mode supports infinities.
23594
23595 2009-03-11  Jason Merrill  <jason@redhat.com>
23596
23597         PR debug/39086
23598         * tree-nrv.c (tree_nrv): Don't do this optimization if the front
23599         end already did.  Notice GIMPLE_CALL modifications of the result.
23600         Don't copy debug information from an ignored decl or a decl from
23601         another function.
23602
23603 2009-03-10  Richard Guenther  <rguenther@suse.de>
23604             Nathan Froyd  <froydnj@codesourcery.com>
23605
23606         PR middle-end/37850
23607         * libgcc2.c (__mulMODE3): Use explicit assignments to form the result.
23608         (__divMODE3): Likewise.
23609
23610 2009-03-09  Jakub Jelinek  <jakub@redhat.com>
23611
23612         PR tree-optimization/39394
23613         * gimplify.c (gimplify_type_sizes): Gimplify DECL_SIZE and
23614         DECL_SIZE_UNIT of variable length FIELD_DECLs.
23615
23616 2009-03-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
23617
23618         * recog.c (verfiy_changes): Disallow renaming of hard regs in
23619         inline asms for register asm ("") declarations.
23620
23621 2009-03-09  Eric Botcazou  <ebotcazou@adacore.com>
23622
23623         * fold-const.c (fold_unary): Fix comment.
23624
23625 2009-03-07  Jan Hubicka  <jh@suse.cz>
23626
23627         PR target/39361
23628         * tree-inline.c (setup_one_parameter): Do replacement of const
23629         argument by constant in SSA form.
23630
23631 2009-03-07  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
23632
23633         PR middle-end/38028
23634         * function.c (assign_parm_setup_stack): Use STACK_SLOT_ALIGNMENT to
23635         determine alignment passed to assign_stack_local.
23636         (assign_parms_unsplit_complex): Likewise.
23637         * except.c (sjlj_build_landing_pads): Likewise.
23638
23639 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
23640
23641         PR middle-end/39360
23642         * tree-flow.h (add_referenced_var): Return bool instead of void.
23643         * tree-dfa.c (add_referenced_var): Return result of
23644         referenced_var_check_and_insert call.
23645         * tree-inline.c (expand_call_inline): Call add_referenced_var instead
23646         of referenced_var_check_and_insert.
23647
23648         PR debug/39372
23649         * dwarf2out.c (add_abstract_origin_attribute): Return origin_die.
23650         (gen_variable_die): Emit DW_AT_location on abstract static variable's
23651         DIE, don't emit it if abstract origin already has it.
23652         * tree-cfg.c (remove_useless_stmts_bind): GIMPLE_BINDs with any
23653         BLOCK_NONLOCALIZED_VARS in its gimple_bind_block aren't useless.
23654
23655 2009-03-06  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
23656
23657         * genpreds.c (needs_variable): Fix parentheses at variable name
23658         detection.
23659         (write_tm_constrs_h): Indent generated code.
23660
23661 2009-03-06  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
23662
23663         * doc/extend.texi (Function Attributes): Add documentation
23664         for isr attributes.
23665
23666 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
23667
23668         PR debug/39387
23669         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): For IMPORTED_DECL
23670         take locus from its DECL_SOURCE_LOCATION instead of input_location.
23671
23672 2009-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
23673
23674         * config/bfin/bfin.c (bfin_discover_loop): When retrying fails, mark
23675         the loop as bad.
23676
23677 2009-03-05  Jakub Jelinek  <jakub@redhat.com>
23678
23679         PR debug/39379
23680         * tree-cfg.c (remove_useless_stmts_bind): Don't remove GIMPLE_BINDs
23681         with blocks containing IMPORTED_DECLs in BLOCK_VARS.
23682
23683 2009-03-05  Uros Bizjak  <ubizjak@gmail.com>
23684
23685         * config/i386/i386.md (R8_REG, R9_REG): New constants.
23686         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Use named
23687         constants instead of magic numbers.
23688         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
23689         (QI_REG_P): Ditto.
23690         * config/i386/i386.c (x86_64_int_parameter_registers): Ditto.
23691         (x86_64_ms_abi_int_parameter_registers): Ditto.
23692         (x86_64_int_return_registers): Ditto.
23693         (ix86_maybe_switch_abi): Ditto.
23694         (ix86_expand_call): Ditto for clobbered_registers array.
23695         (ix86_hard_regno_mode_ok): Ditto.
23696         (x86_extended_QIreg_mentioned_p): Ditto.
23697
23698 2009-03-05  J"orn Rennecke  <joern.rennecke@arc.com>
23699
23700         PR tree-optimization/39349
23701         * cse.c (cse_insn): Fix loop to stop at VOIDmode.
23702
23703         * combine.c (gen_lowpart_for_combine): Use omode when generating
23704         clobber.
23705
23706 2009-03-04  J"orn Rennecke  <joern.rennecke@arc.com>
23707
23708         PR rtl-optimization/39235
23709         * loop-iv.c (get_simple_loop_desc): Use XCNEW.
23710
23711 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
23712
23713         * graphite.c (nb_reductions_in_loop): Update simple_iv arguments.
23714
23715 2009-03-04  Richard Guenther  <rguenther@suse.de>
23716
23717         PR tree-optimization/39362
23718         * tree-ssa-sccvn.c (visit_use): Stores and copies from SSA_NAMEs
23719         that occur in abnormal PHIs should be varying.
23720
23721 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
23722
23723         * tree-scalar-evolution.c (analyze_scalar_evolution_in_loop):
23724         Extend comments.
23725         (simple_iv):  Take loop as an argument instead of statement.
23726         * tree-scalar-evolution.h (simple_iv): Declaration changed.
23727         * tree-ssa-loop-niter.c (number_of_iterations_exit): Update calls
23728         to simple_iv.
23729         * tree-ssa-loop-ivopts.c (determine_biv_step, find_givs_in_stmt_scev):
23730         Ditto.
23731         * tree-parloops.c (loop_parallel_p, canonicalize_loop_ivs): Ditto.
23732         * matrix-reorg.c (analyze_transpose): Ditto.
23733         * tree-data-ref.c (dr_analyze_innermost): Ditto.
23734         * tree-vect-analyze.c (vect_analyze_data_refs): Ditto.
23735         * tree-predcom.c (ref_at_iteration): Ditto.
23736         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Ditto.
23737
23738 2009-03-04  Richard Guenther  <rguenther@suse.de>
23739
23740         PR tree-optimization/39358
23741         * tree-ssa-structalias.c (do_sd_constraint): Fix check for
23742         escaped_id and callused_id.
23743         (solve_graph): Likewise.
23744
23745 2009-03-04  Richard Guenther  <rguenther@suse.de>
23746
23747         PR tree-optimization/39339
23748         * tree-sra.c (try_instantiate_multiple_fields): Make it
23749         no longer ICE on the above.
23750
23751 2009-03-03  Joseph Myers  <joseph@codesourcery.com>
23752
23753         * emit-rtl.c (adjust_address_1): Reduce offset to a signed value
23754         that fits within Pmode.
23755
23756 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
23757
23758         PR middle-end/10109
23759         * tm.texi (LIBCALL_VALUE): Update description.
23760
23761 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
23762
23763         PR middle-end/34443
23764         * doc/extend.texi (section): Update description.
23765
23766 2009-03-03  H.J. Lu  <hongjiu.lu@intel.com>
23767
23768         PR middle-end/39345
23769         * tree-inline.c (remapped_type): New.
23770         (can_be_nonlocal): Call remapped_type instead of remap_type.
23771
23772 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
23773
23774         PR fortran/39354
23775         * gimplify.c (goa_stabilize_expr): Handle tcc_comparison,
23776         TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR.
23777
23778 2009-03-03  Richard Guenther  <rguenther@suse.de>
23779
23780         PR middle-end/39272
23781         * tree.c (tree_nonartificial_location): New function.
23782         * tree.h (tree_nonartificial_location): Declare.
23783         * builtins.c (expand_builtin_memory_chk): Provide location
23784         of the call location for artificial function pieces.
23785         (maybe_emit_chk_warning): Likewise.
23786         (maybe_emit_sprintf_chk_warning): Likewise.
23787         (maybe_emit_free_warning): Likewise.
23788         * expr.c (expand_expr_real_1): Likewise.
23789
23790 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
23791
23792         PR tree-optimization/39343
23793         * tree-ssa-ccp.c (maybe_fold_offset_to_address): Don't check if
23794         COMPONENT_REF t has ARRAY_TYPE.
23795
23796 2009-03-02  Sebastian Pop  <sebastian.pop@amd.com>
23797
23798         PR middle-end/39335
23799         * tree-parloops.c (canonicalize_loop_ivs): Call fold_convert
23800         when the type precision of the induction variable should be
23801         larger than the type precision of nit.
23802         (gen_parallel_loop): Update use of canonicalize_loop_ivs.
23803         * graphite.c (graphite_loop_normal_form): Same.
23804         * tree-flow.h (canonicalize_loop_ivs): Update declaration.
23805
23806 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
23807
23808         * config/i386/i386.md (ST?_REG, MM?_REG): New constants.
23809         (*call_1_rex64_ms_sysv): Use named constants instead of magic
23810         numbers to describe clobbered registers.
23811         (*call_value_0_rex64_ms_sysv): Ditto.
23812         * config/i386/mmx.md (mmx_emms): Ditto.
23813         (mmx_femms): Ditto.
23814
23815 2009-03-02  Richard Sandiford  <rdsandiford@googlemail.com>
23816
23817         * config/mips/mips.c (mips_mdebug_abi_name): Fix the handling
23818         of ABI_64.
23819
23820 2009-03-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
23821
23822         * config/spu/spu.c (TARGET_SECTION_TYPE_FLAGS): Define.
23823         (spu_section_type_flags): New function.
23824
23825 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
23826
23827         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not copy
23828         reg_class_contents of FLOAT_REGS into a temporary.
23829
23830 2009-03-02  Richard Guenther  <rguenther@suse.de>
23831             Ira Rosen  <irar@il.ibm.com>
23832
23833         PR tree-optimization/39318
23834         * tree-vect-transform.c (vectorizable_call): Transfer the EH region
23835         information to the vectorized statement.
23836
23837 2009-03-01  Uros Bizjak  <ubizjak@gmail.com>
23838
23839         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not shadow "i"
23840         variable.  Use defined names instead of magic constants for REX SSE
23841         registers.
23842
23843 2009-03-01  Richard Guenther  <rguenther@suse.de>
23844
23845         PR tree-optimization/39331
23846         * omp-low.c (lower_send_shared_vars): Do not receive new
23847         values for the reference of DECL_BY_REFERENCE parms or results.
23848
23849 2009-03-01  Jan Hubicka  <jh@suse.cz>
23850
23851         PR debug/39267
23852         * tree.h (BLOCK_NONLOCALIZED_VARS, BLOCK_NUM_NONLOCALIZED_VARS,
23853         BLOCK_NONLOCALIZED_VAR): New macros.
23854         (tree_block): Add nonlocalized_vars.
23855         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die,
23856         gen_decl_die): Add origin argument.  Allow generation of die with
23857         origin at hand only.
23858         (gen_member_die, gen_type_die_with_usage, force_decl_die,
23859         declare_in_namespace, gen_namescpace_die, dwarf2out_decl): Update use
23860         of gen_*.
23861         (gen_block_die): Fix checking for unused blocks.
23862         (process_scope_var): Break out from .... ; work with origins only.
23863         (decls_for_scope) ... here; process nonlocalized list.
23864         (dwarf2out_ignore_block): Look for nonlocalized vars.
23865         * tree-ssa-live.c (remove_unused_scope_block_p): Look for nonlocalized
23866         vars.
23867         (dump_scope_block): Dump them.
23868         * tree-inline.c (remap_decls): Handle nonlocalized vars.
23869         (remap_block): Likewise.
23870         (can_be_nonlocal): New predicate.
23871         (copy_bind_expr, copy_gimple_bind): Update use of remap_block.
23872
23873 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23874
23875         * configure: Regenerate.
23876
23877 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23878
23879         * optc-gen.awk: No need to duplicate option flags twice.
23880         Reuse help texts for duplicate options which do not have any.
23881
23882         * gcc.c (display_help): Document --version.
23883
23884         * gcc.c (main): If print_help_list and verbose_flag, ensure
23885         driver output comes before subprocess output.
23886
23887         * optc-gen.awk: Assign all remaining fields to help string,
23888         space-separated, for multi-line help in *.opt.
23889
23890         * doc/invoke.texi (Warning Options): -Wsync-nand is C/C++ only.
23891         -Wno-pedantic-ms-format is for MinGW targets only.
23892
23893         * doc/options.texi (Option file format): Fix bad indentation,
23894         restoring dropped sentence.
23895
23896 2009-02-28  Jan Hubicka  <jh@suse.cz>
23897
23898         * tree-inline.c (tree_function_versioning): Output debug info.
23899
23900 2009-02-28  Jan Hubicka  <jh@suse.cz>
23901
23902         PR debug/39267
23903         * tree-inline.c (setup_one_parameter): Do not copy propagate
23904         arguments when not optimizing.
23905
23906 2009-02-28  H.J. Lu  <hongjiu.lu@intel.com>
23907
23908         PR target/39327
23909         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
23910         (avx_addsubv4df3): Likewise.
23911         (*avx_addsubv4sf3): Likewise.
23912         (sse3_addsubv4sf3): Likewise.
23913         (*avx_addsubv2df3): Likewise.
23914         (sse3_addsubv2df3): Likewise.
23915         (avx_unpckhps256): Correct item selectors.
23916         (avx_unpcklps256): Likewise.
23917         (avx_unpckhpd256): Likewise.
23918         (avx_unpcklpd256): Likewise.
23919
23920 2009-02-28  Jan Hubicka  <jh@suse.cz>
23921
23922         * tree-inline.c (expand_call_inline): Avoid duplicate declarations of
23923         static vars.
23924         (copy_arguments_for_versioning): If var is declared don't declare it.
23925         (tree_function_versioning): First setup substitutions and then copy
23926         args.
23927
23928 2009-02-27  Jan Hubicka  <jh@suse.cz>
23929
23930         PR debug/39267
23931         * cgraph.h (varpool_output_debug_info): Remove.
23932         * cgraphunit.c (varpool_output_debug_info): Remove.
23933         * dwarf2out.c (deferred_locations_struct): New struct
23934         (deferred_locations): New type.
23935         (deferred_locations_list): New static var.
23936         (deffer_location): New function.
23937         (gen_variable_die): Use it.
23938         (decls_for_scope): Output info on local static vars.
23939         (dwarf2out_finish): Process deferred locations.
23940         * varpool.c (varpool_output_debug_info): Remove.
23941
23942 2009-02-27  Jan Hubicka  <jh@suse.cz>
23943
23944         PR debug/39267
23945         * tree.h (TREE_PROTECTED): Fix comment.
23946         (BLOCK_HANDLER_BLOCK): Remove.
23947         (struct tree_block): Remove handler_block add body_block.
23948         (inlined_function_outer_scope_p): New.
23949         (is_body_block): Remove.
23950         * dbxout.c (dbxout_block): Remove BLOCK_HANDLER_BLOCK.
23951         * dwarf2out.c (is_inlined_entry_point): Remove.
23952         (add_high_low_attributes): Use inlined_function_outer_scope_p.
23953         (gen_block_die): Use is_inlined_entry_point check.  Remove body block
23954         code.
23955         * langhooks.h (struct lang_hooks): Remove no_bodu_blocks.
23956         * gimplify.c (gimplify_expr): Gimplify body blocks.
23957         * tree-ssa-live.c (remove_unused_scope_block_p): Allow removing wrapper
23958         block with multiple subblocks.
23959         (dump_scope_block): Prettier output; dump more flags and info.
23960         (dump_scope_blocks): New.
23961         (remove_unused_locals): Use dump_scope_blocks.
23962         * tree-flow.h (dump_scope_blocks): Declare.
23963         * tree-cfg.c (execute_build_cfg): Dump scope blocks.
23964         * stmt.c (is_body_block): Remove.
23965         * tree-inline.c (remap_block): Copy BODY_BLOCK info.
23966         * langhooks-def.h (LANG_HOOKS_NO_BODY_BLOCKS): Remove.
23967
23968 2009-02-27  Sebastian Pop  <sebastian.pop@amd.com>
23969
23970         PR middle-end/39308
23971         * graphite.c (graphite_loop_normal_form): Do not call
23972         number_of_iterations_exit from a gcc_assert.
23973
23974 2009-02-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
23975
23976         * config/s390/s390.c (s390_swap_cmp): Look for conditional
23977         jumps if COND is NULL.
23978         (find_cond_jump): New function.
23979         (s390_z10_optimize_cmp): Handling for reg-reg compares added.
23980         * config/s390/s390.md: Remove z10_cobra attribute value.
23981
23982 2009-02-26  Uros Bizjak  <ubizjak@gmail.com>
23983
23984         * config/alpha/alpha.h (alpha_expand_mov): Return false if
23985         force_const_mem returns NULL_RTX.
23986
23987 2009-02-26  Jan Hubicka  <jh@suse.cz>
23988
23989         PR debug/39267
23990         * cgraph.h (varpool_output_debug_info): Remove.
23991         * cgraphunit.c (varpool_output_debug_info): Remove.
23992         * dwarf2out.c (deferred_locations_struct): New struct
23993         (deferred_locations): New type.
23994         (deferred_locations_list): New static var.
23995         (deffer_location): New function.
23996         (gen_variable_die): Use it.
23997         (decls_for_scope): Output info on local static vars.
23998         (dwarf2out_finish): Process deferred locations.
23999         * varpool.c (varpool_output_debug_info): Remove.
24000
24001 2009-02-25  H.J. Lu  <hongjiu.lu@intel.com>
24002
24003         PR rtl-optimization/39241
24004         * jump.c (rtx_renumbered_equal_p): Remove 2 superfluous calls
24005         to subreg_offset_representable_p.
24006
24007 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
24008
24009         * regmove.c (regmove_optimize): Conform to struct rtl_opt_pass
24010         execute function prototype.  Get f and nregs from max_reg_num
24011         and get_insns.  Remove the first backward pass as it's dead,
24012         guard the forward pass by flag_expensive_optimizations.
24013         (rest_of_handle_regmove): Delete.
24014         (pass_regmove): Replace it with regmove_optimize.
24015
24016 2009-02-25  Martin Jambor  <mjambor@suse.cz>
24017
24018         PR tree-optimization/39259
24019         * tree-inline.c (initialize_cfun): Remove asserts for calls_setjmp and
24020         calls_alloca function flags.
24021         (copy_bb): Set calls_setjmp and alls_alloca function flags if such
24022         calls are detected.
24023
24024 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
24025
24026         * regmove.c (discover_flags_reg, flags_set_1, mark_flags_life_zones,
24027         flags_set_1_rtx, flags_set_1_set): Delete.
24028         (regmove_optimize): Do not call mark_flags_life_zones.
24029
24030 2009-02-24  Julian Brown  <julian@codesourcery.com>
24031
24032         PR target/35965
24033         * config/arm/arm.c (require_pic_register): Only set
24034         cfun->machine->pic_reg once per function.
24035
24036 2009-02-24  Sandra Loosemore  <sandra@codesourcery.com>
24037
24038         * doc/invoke.texi (Link Options): Document an easier way to pass
24039         options that take arguments to the GNU linker using -Xlinker and -Wl.
24040
24041 2009-02-24  Steve Ellcey  <sje@cup.hp.com>
24042
24043         PR target/33785
24044         * doc/tm.texi (TARGET_C99_FUNCTIONS): Fix description.
24045
24046 2009-02-24  Richard Guenther  <rguenther@suse.de>
24047
24048         PR debug/39285
24049         * dwarf2out.c (gen_enumeration_type_die): Handle CONST_DECLs.
24050
24051 2009-02-24  Richard Guenther  <rguenther@suse.de>
24052             Zdenek Dvorak  <ook@ucw.cz>
24053
24054         PR tree-optimization/39233
24055         * tree-ssa-loop-ivopts.c (add_candidate_1): Do not except pointers
24056         from converting them to a generic type.
24057
24058 2009-02-23  Sebastian Pop  <sebastian.pop@amd.com>
24059
24060         PR tree-optimization/39260
24061         * graphite.c (harmful_stmt_in_bb): Stop a SCoP when the basic block
24062         contains a condition with a real type.
24063         (build_scop_conditions_1): Conditions are always last_stmt of a bb.
24064
24065 2009-02-23  Jason Merrill  <jason@redhat.com>
24066
24067         PR c++/38880
24068         * varasm.c (initializer_constant_valid_p) [PLUS_EXPR]: Check
24069         narrowing_initializer_constant_valid_p.
24070         (narrowing_initializer_constant_valid_p): Don't return
24071         null_pointer_node for adding a pointer to itself.
24072
24073 2009-02-23  Jan Hubicka  <jh@suse.cz>
24074
24075         PR c/12245
24076         * ggc.h (htab_create_ggc): Use ggc_free to free hashtable when
24077         resizing.
24078
24079 2009-02-23  Jan Hubicka  <jh@suse.cz>
24080
24081         PR tree-optimization/37709
24082         * tree.c (block_ultimate_origin): Move here from dwarf2out.
24083         * tree.h (block_ultimate_origin): Declare.
24084         * dwarf2out.c (block_ultimate_origin): Move to tree.c
24085         * tree-ssa-live.c (remove_unused_scope_block_p):
24086         Eliminate blocks containig no instructions nor live variables nor
24087         nested blocks.
24088         (dump_scope_block): New function.
24089         (remove_unused_locals): Enable removal of dead blocks by default;
24090         enable dumping at TDF_DETAILS.
24091
24092 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
24093
24094         * config/i386/i386.c (classify_argument): Don't allow COImode
24095         and OImode.
24096         (function_arg_advance_32): Don't allow OImode.
24097         (function_arg_32): Likewise.
24098         (function_value_32): Likewise.
24099         (return_in_memory_32): Likewise.
24100         (function_arg_64): Remove OImode comment.
24101
24102 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
24103
24104         PR target/39261
24105         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
24106         ix86_expand_vector_set for V4DImode in 64bit mode only.
24107         (ix86_expand_vector_init_one_var): Likewise.
24108
24109 2009-02-21  Sebastian Pop  <sebastian.pop@amd.com>
24110
24111         * graphite.c (graphite_trans_loop_block): Adjust tile size to 51.
24112
24113 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
24114
24115         PR bootstrap/39257
24116         * loop-iv.c: Revert last change.
24117         * emit-rtl.c: Likewise.
24118
24119 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
24120
24121         PR target/39256
24122         * config/i386/i386.c (type_natural_mode): Remove an extra
24123         space in the warning message.
24124         (function_value_32): Handle 32-byte vector modes.
24125         (return_in_memory_32): Likewise.
24126
24127 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
24128
24129         * loop-iv.c (truncate_value): New function.
24130         (iv_subreg, get_iv_value, iv_number_of_iterations): Use it instead
24131         of lowpart_subreg.
24132         (lowpart_subreg): Move to...
24133         * emit-rtl.c: ...here.
24134
24135 2009-02-21  Danny Smith  <dannysmith@users.sourceforge.net>
24136
24137         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common): Revert
24138         accidental and undocumented change at revision 140860.
24139
24140 2009-02-21  Joseph Myers  <joseph@codesourcery.com>
24141
24142         * config/arm/arm.c (arm_gimplify_va_arg_expr): Update prototype to
24143         take gimple_seq * arguments.
24144         (arm_mangle_type): Use CONST_CAST_TREE on type argument passed to
24145         types_compatible_p langhook.
24146
24147 2009-02-20  Mark Mitchell  <mark@codesourcery.com>
24148             Joseph Myers  <joseph@codesourcery.com>
24149
24150         * config/arm/arm.c (arm_builtin_va_list): New function.
24151         (arm_expand_builtin_va_start): Likewise.
24152         (arm_gimplify_va_arg_expr): Likewise.
24153         (TARGET_BUILD_BUILTIN_VA_LIST): Define.
24154         (TARGET_BUILD_BUILTIN_VA_START): Likewise.
24155         (TARGET_BUILD_BUILTIN_VA_ARG_EXPR): Likewise.
24156         (va_list_type): New variable.
24157         (arm_mangle_type): Mangle va_list_type appropriately.
24158
24159 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
24160
24161         PR middle-end/39157
24162         * Makefile.in (loop-invariant.o): Depend on $(PARAMS_H).
24163         * params.h (LOOP_INVARIANT_MAX_BBS_IN_LOOP): Define.
24164         * params.def (loop-invariant-max-bbs-in-loop): New parameter.
24165         * opts.c (decode_options): Set loop-invariant-max-bbs-in-loop
24166         parameter to 1000 for -O1 by default.
24167         * doc/invoke.texi (loop-invariant-max-bbs-in-loop): Document new
24168         parameter.
24169         * loop-invariant.c: Include params.h.
24170         (move_loop_invariants): Don't call move_single_loop_invariants on
24171         very large loops.
24172
24173 2009-02-20  Jaka Mocnik  <jaka@xlab.si>
24174
24175         * calls.c (emit_library_call_value_1): Use slot_offset instead of
24176         offset when calculating bounds for indexing stack_usage_map.  Fixes
24177         a buffer overflow with certain target setups.
24178
24179 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
24180
24181         PR target/39240
24182         * calls.c (expand_call): Clear try_tail_call if caller and callee
24183         disagree in promotion of function return value.
24184
24185 2009-02-19  Jakub Jelinek  <jakub@redhat.com>
24186
24187         PR target/39175
24188         * c-common.c (c_determine_visibility): If visibility changed and
24189         DECL_RTL has been already set, call make_decl_rtl to update symbol
24190         flags.
24191
24192 2009-02-19  H.J. Lu  <hongjiu.lu@intel.com>
24193
24194         PR c++/39188
24195         * varasm.c (assemble_variable): Don't check DECL_NAME when
24196         globalizing a variable.
24197
24198 2009-02-19  Joseph Myers  <joseph@codesourcery.com>
24199
24200         PR c/38483
24201         * builtins.c (gimplify_va_arg_expr): Evaluate the va_list
24202         expression before any __builtin_trap call.
24203         * c-typeck.c (build_function_call): Convert and check function
24204         arguments before generating a call to a trap.  Evaluate the
24205         function arguments before the trap.
24206
24207 2009-02-19  Uros Bizjak  <ubizjak@gmail.com>
24208
24209         PR target/39228
24210         * config/i386/i386.md (isinfxf2): Split from isinf<mode>2.
24211         (UNSPEC_FXAM_MEM): New unspec.
24212         (fxam<mode>2_i387_with_temp): New insn and split pattern.
24213         (isinf<mode>2): Use MODEF mode iterator.  Force operand[1] through
24214         memory using fxam<mode>2_i387_with_temp to remove excess precision.
24215
24216 2009-02-19  Richard Guenther  <rguenther@suse.de>
24217
24218         PR tree-optimization/39207
24219         PR tree-optimization/39074
24220         * tree-ssa-structalias.c (storedanything_id, var_storedanything,
24221         storedanything_tree): New.
24222         (do_ds_constraint): Simplify ANYTHING shortcutting.  Update
24223         the STOREDANYTHING solution if the lhs solution contains ANYTHING.
24224         (build_succ_graph): Add edges from STOREDANYTHING to all
24225         non-direct nodes.
24226         (init_base_vars): Initialize STOREDANYTHING.
24227         (compute_points_to_sets): Free substitution info after
24228         building the succ graph.
24229         (ipa_pta_execute): Likewise.
24230
24231         * tree-ssa-structalias.c (struct variable_info): Add may_have_pointers
24232         field.
24233         (do_ds_constraint): Do not add to special var or non-pointer
24234         field solutions.
24235         (type_could_have_pointers): Split out from ...
24236         (could_have_pointers): ... here.  For arrays use the element type.
24237         (create_variable_info_for): Initialize may_have_pointers.
24238         (new_var_info): Likewise.
24239         (handle_lhs_call): Make the HEAP variable unknown-sized.
24240         (intra_create_variable_infos): Use a type with pointers for
24241         PARM_NOALIAS, make it unknown-sized.
24242
24243 2009-02-18  H.J. Lu  <hongjiu.lu@intel.com>
24244
24245         PR target/39224
24246         * config/i386/i386.c (ix86_return_in_memory): Properly check ABI.
24247
24248 2009-02-18  Jason Merrill  <jason@redhat.com>
24249
24250         PR target/39179
24251         * tree-ssa-ccp.c (get_symbol_constant_value): Don't assume zero
24252         value if DECL_EXTERNAL.
24253         * tree-sra.c (sra_walk_gimple_assign): Likewise.
24254         * target.h (gcc_target::binds_local_p): Clarify "module".
24255         * tree.h (TREE_PUBLIC): Clarify "module".
24256
24257 2009-02-17  Xuepeng Guo  <xuepeng.guo@intel.com>
24258
24259         PR target/38891
24260         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move the hunk of
24261         initialization for MS_ABI prior to the hunk of !TARGET_MMX.
24262
24263 2009-02-17  H.J. Lu  <hongjiu.lu@intel.com>
24264
24265         PR target/39082
24266         * c.opt (Wabi): Support C and ObjC.
24267         (Wpsabi): New.
24268
24269         * c-opts.c (c_common_handle_option): Handle OPT_Wabi.
24270
24271         * config/i386/i386.c (classify_argument): Warn once about the ABI
24272         change when passing union with long double.
24273
24274         * doc/invoke.texi: Update -Wabi for warning psABI changes.
24275
24276 2009-02-18  Joseph Myers  <joseph@codesourcery.com>
24277
24278         PR c/35447
24279         * c-parser.c (c_parser_compound_statement): Always enter and leave
24280         a scope.
24281
24282 2009-02-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
24283
24284         PR target/34587
24285         * config/darwin.h (SUPPORTS_INIT_PRIORITY): Define.
24286
24287 2009-02-18  Jakub Jelinek  <jakub@redhat.com>
24288
24289         PR tree-optimization/36922
24290         * tree-data-ref.c (initialize_matrix_A): Handle BIT_NOT_EXPR.
24291         * tree-scalar-evolution.c (interpret_rhs_expr, instantiate_scev_1):
24292         Likewise.
24293
24294 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
24295
24296         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
24297         to 0 for EABI64.
24298
24299 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
24300
24301         * config/mips/mips.md (type): Reclassify lui_movf as "unknown".
24302
24303 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
24304
24305         * config/mips/mips.c (mips_gimplify_va_arg_expr): Fix invalid
24306         tree sharing.
24307
24308 2009-02-17  Ruan Beihong  <ruanbeihong@gmail.com>
24309             Richard Sandiford  <rdsandiford@googlemail.com>
24310
24311         * config/mips/mips.c (CODE_FOR_loongson_biadd): Delete.
24312         * config/mips/loongson.md (reduc_uplus_<mode>): Rename to...
24313         (loongson_biadd): ...this.
24314
24315 2009-02-17  Richard Guenther  <rguenther@suse.de>
24316
24317         PR tree-optimization/39202
24318         * tree-ssa-structalias.c (do_structure_copy): Before collapsing
24319         a var make sure to follow existing collapses.
24320
24321 2009-02-17  Richard Guenther  <rguenther@suse.de>
24322
24323         PR middle-end/39214
24324         * langhooks.c (lhd_print_error_function): Check for NULL block.
24325
24326 2009-02-17  Richard Guenther  <rguenther@suse.de>
24327
24328         PR tree-optimization/39204
24329         * tree-ssa-pre.c (phi_translate_1): Lookup the value-number
24330         of the PHI arg.
24331
24332 2009-02-17  Uros Bizjak  <ubizjak@gmail.com>
24333
24334         * config/soft-fp/double.h: Update from glibc CVS.
24335
24336 2009-02-17  Richard Guenther  <rguenther@suse.de>
24337
24338         PR tree-optimization/39207
24339         * tree-ssa-structalias.c (find_what_p_points_to): Do not emit
24340         strict-aliasing warnings for pointers pointing to NULL.
24341
24342 2009-02-16  Joseph Myers  <joseph@codesourcery.com>
24343
24344         PR c/35446
24345         * c-parser.c (c_parser_braced_init): Call pop_init_level when
24346         skipping until next close brace.
24347
24348 2009-02-16  H.J. Lu  <hongjiu.lu@intel.com>
24349
24350         PR target/37049
24351         * config/i386/i386.c (ix86_expand_push): Set memory alignment
24352         to function argument boundary.
24353
24354 2009-02-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
24355
24356         * config/picochip/picochip.md (lea_add): Allow any nonimmediate
24357         in the lea_add. Reload eventually constraints it properly.
24358         * config/picochip/constraints.md: Remove the target constraint
24359         "b", since it is not needed anymore.
24360
24361 2009-02-16  Jakub Jelinek  <jakub@redhat.com>
24362
24363         * gthr-dce.h: Uglify function parameter and local variable names.
24364         * gthr-gnat.h: Likewise.
24365         * gthr-mipssde.h: Likewise.
24366         * gthr-nks.h: Likewise.
24367         * gthr-posix95.h: Likewise.
24368         * gthr-posix.h: Likewise.
24369         * gthr-rtems.h: Likewise.
24370         * gthr-single.h: Likewise.
24371         * gthr-solaris.h: Likewise.
24372         * gthr-tpf.h: Likewise.
24373         * gthr-vxworks.h: Likewise.
24374         * gthr-win32.h: Likewise.
24375
24376 2009-02-15  H.J. Lu  <hongjiu.lu@intel.com>
24377
24378         PR target/39196
24379         * config/i386/i386.md: Restrict the new peephole2 to move
24380         between MMX/SSE registers.
24381
24382 2009-02-15  Richard Guenther  <rguenther@suse.de>
24383
24384         Revert
24385         2009-02-13  Richard Guenther  <rguenther@suse.de>
24386
24387         * configure.ac: Enable LFS.
24388         * configure: Re-generate.
24389         * config.in: Likewise.
24390
24391 2009-02-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
24392
24393         * config/spu/spu_internals.h (spu_sr, spu_sra, spu_srqw,
24394         spu_srqwbyte, spu_srqwbytebc): Define.
24395         * config/spu/spu-builtins.def (spu_sr, spu_sra, spu_srqw,
24396         spu_srqwbyte, spu_srqwbytebc): New overloaded builtins.
24397         * config/spu/spu.md ("shrqbybi_<mode>", "shrqbi_<mode>",
24398         "shrqby_<mode>"): New insn-and-split patterns.
24399         * config/spu/spu.c (expand_builtin_args): Determine and return
24400         number of operands using spu_builtin_description data.
24401         (spu_expand_builtin_1): Use it.
24402
24403 2009-02-13  Steve Ellcey  <sje@cup.hp.com>
24404
24405         PR target/38056
24406         * config/ia64/ia64.c (ia64_function_ok_for_sibcall): Check
24407         TARGET_CONST_GP.
24408
24409 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
24410
24411         PR target/39149
24412         * config/i386/i386.c (override_options): Correct warning
24413         messages for -malign-loops, -malign-jumps and -malign-functions.
24414
24415 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
24416
24417         PR target/39152
24418         * config/i386/i386.md: Restrict the new peephole2 to move
24419         between the general purpose registers.
24420
24421 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
24422
24423         PR target/39162
24424         * config/i386/i386.c (type_natural_mode): Add a new argument.
24425         Return the original mode and warn ABI change if vector size is 32byte.
24426         (function_arg_advance): Updated.
24427         (function_arg): Likewise.
24428         (ix86_function_value): Likewise.
24429         (ix86_return_in_memory): Likewise.
24430         (ix86_sol10_return_in_memory): Likewise.
24431         (ix86_gimplify_va_arg): Likewise.
24432         (function_arg_32): Don't warn ABX ABI change here.
24433         (function_arg_64): Likewise.
24434
24435 2009-02-13  Bernd Schmidt  <bernd.schmidt@analog.com>
24436
24437         * loop-iv.c (implies_p): In the final case, test that operands 0
24438         of the two comparisons match.
24439
24440         * config/bfin/bfin.c (find_prev_insn_start): New function.
24441         (bfin_optimize_loop): Use it in some cases instead of PREV_INSN.
24442         (find_next_insn_start): Move.
24443
24444 2009-02-13  Richard Guenther  <rguenther@suse.de>
24445
24446         * configure.ac: Enable LFS.
24447         * configure: Re-generate.
24448         * config.in: Likewise.
24449
24450 2009-02-13  Joseph Myers  <joseph@codesourcery.com>
24451
24452         PR c/35444
24453         * c-parser.c (c_parser_parms_list_declarator): Discard pending
24454         sizes on syntax error after some arguments have been parsed.
24455
24456 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
24457
24458         * doc/invoke.texi (-fira): Remove.
24459
24460 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
24461
24462         * caller-save.c: Replace regclass.c with reginfo.c in comments.
24463         * recog.c: Likewise.
24464         * rtl.h: Likewise.
24465
24466 2009-02-12  Uros Bizjak  <ubizjak@gmail.com>
24467
24468         * longlong.h (sub_ddmmss): New for ia64. Ported from GMP 4.2.
24469         (umul_ppmm): Likewise.
24470         (count_leading_zeros): Likewise.
24471         (count_trailing_zeros): Likewise.
24472         (UMUL_TIME): Likewise.
24473
24474 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
24475
24476         * config.gcc (ia64*-*-linux*): Add ia64/t-fprules-softfp and
24477         soft-fp/t-softfp to tmake_file.
24478
24479         * config/ia64/ia64.c (ia64_soft_fp_init_libfuncs): New.
24480         (ia64_expand_compare): Use HPUX library for TFmode only for HPUX.
24481         (ia64_builtins) [IA64_BUILTIN_COPYSIGNQ, IA64_BUILTIN_FABSQ,
24482         IA64_BUILTIN_INFQ]: New.
24483         (ia64_init_builtins): Initialize __builtin_infq,
24484         __builtin_fabsq and __builtin_copysignq if not HPUX.
24485         (ia64_expand_builtin): Handle IA64_BUILTIN_COPYSIGNQ,
24486         IA64_BUILTIN_FABSQ and IA64_BUILTIN_INFQ.
24487
24488         * config/ia64/lib1funcs.asm (__divtf3): Define only if
24489         SHARED is defined.
24490         (__fixtfti): Likewise.
24491         (__fixunstfti): Likewise.
24492         (__floattitf): Likewise.
24493
24494         * config/ia64/libgcc-glibc.ver: New.
24495         * config/ia64/t-fprules-softfp: Likewise.
24496         * config/ia64/sfp-machine.h: Likewise.
24497
24498         * config/ia64/linux.h (LIBGCC2_HAS_TF_MODE): New.
24499         (LIBGCC2_TF_CEXT): Likewise.
24500         (TF_SIZE): Likewise.
24501         (TARGET_INIT_LIBFUNCS): Likewise.
24502
24503         * config/ia64/t-glibc (SHLINB_MAPFILES):
24504         Add $(srcdir)/config/ia64/libgcc-glibc.ver.
24505
24506 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
24507
24508         * config/i386/i386.c (construct_container): Rewrite processing
24509         BLKmode with X86_64_SSE_CLASS.
24510
24511 2009-02-12  Paolo Bonzini  <bonzini@gnu.org>
24512
24513         PR target/39152
24514         * config/i386/i386.md: Replace simplify_replace_rtx with
24515         replace_rtx in the new peephole2.
24516
24517 2009-02-12  Nathan Sidwell  <nathan@codesourcery.com>
24518
24519         * doc/invoke.texi (Optimize Options): Stop claiming inlining and
24520         loop unrolling do not happen at -O2.
24521
24522 2009-02-12  Michael Matz  <matz@suse.de>
24523
24524         * gcc.c (ASM_DEBUG_SPEC): Check for -g0.
24525
24526 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
24527
24528         * dwarf2out.c (dwarf2out_finish): Force output of comp_unit_die
24529         for -g3.
24530
24531 2009-02-12  Ben Elliston  <bje@au.ibm.com>
24532
24533         * config/rs6000/rs6000.md (allocate_stack): Use _stack form of
24534         patterns when updating the back chain.  Missed in the 2009-02-10
24535         change.
24536
24537 2009-02-11  Janis Johnson  <janis187@us.ibm.com>
24538
24539         * doc/extend.texi (Decimal Floating Types): Update identifier of
24540         draft TR and list of missing support.
24541
24542 2009-02-11  Jakub Jelinek  <jakub@redhat.com>
24543
24544         PR middle-end/39154
24545         * gimplify.c (omp_notice_variable): If adding GOVD_SEEN
24546         bit to variable length decl's flags, add it also to its
24547         pointer replacement variable.
24548
24549 2009-02-11  Uros Bizjak  <ubizjak@gmail.com>
24550             Jakub Jelinek  <jakub@redhat.com>
24551
24552         PR target/39118
24553         * config/i386/i386.md (UNSPEC_MEMORY_BLOCKAGE): New constant.
24554         (memory_blockage): New expander.
24555         (*memory_blockage): New insn pattern.
24556         * config/i386/i386.c (ix86_expand_prologue): Use memory_blockage
24557         instead of general blockage at the end of function prologue when
24558         frame pointer is used to access red zone area.  Do not emit blockage
24559         when profiling, it is emitted in generic code.
24560         (ix86_expand_epilogue): Emit memory_blockage at the beginning of
24561         function epilogue when frame pointer is used to access red zone area.
24562
24563 2009-02-11  Paolo Bonzini  <bonzini@gnu.org>
24564
24565         PR target/38824
24566         * config/i386/i386.md: Add two new peephole2 to avoid mov followed
24567         by arithmetic with memory operands.
24568         * config/i386/predicates.md (commutative_operator): New.
24569
24570 2009-02-10  Janis Johnson  <janis187@us.ibm.com>
24571
24572         * doc/extend.texi (Fixed-Point Types): Break long paragraphs into
24573         bulleted lists.
24574
24575 2009-02-10  Eric Botcazou  <ebotcazou@adacore.com>
24576
24577         * alias.h (record_alias_subset): Declare.
24578         * alias.c (record_alias_subset): Make global.
24579
24580 2009-02-10  Nick Clifton  <nickc@redhat.com>
24581
24582         * tree-parloops.c: Change license to GPLv3.
24583         * ipa-struct-reorg.c: Change license to GPLv3.
24584         * ipa-struct-reorg.h: Change license to GPLv3.
24585
24586 2009-02-10  Steve Ellcey  <sje@cup.hp.com>
24587
24588         PR c/39084
24589         * c-decl.c (start_struct): Return NULL on error.
24590
24591 2009-02-10  Jakub Jelinek  <jakub@redhat.com>
24592
24593         PR middle-end/39124
24594         * cfgloopmanip.c (remove_path): Call remove_bbs after
24595         cancel_loop_tree, not before it.
24596
24597         PR target/39139
24598         * function.h (struct function): Add has_local_explicit_reg_vars bit.
24599         * gimplify.c (gimplify_bind_expr): Set it if local DECL_HARD_REGISTER
24600         VAR_DECLs were seen.
24601         * tree-ssa-live.c (remove_unused_locals): Recompute
24602         cfun->has_local_explicit_reg_vars.
24603         * tree-ssa-sink.c (statement_sink_location): Don't sink BLKmode
24604         copies or clearings if cfun->has_local_explicit_reg_vars.
24605
24606 2009-02-10  Uros Bizjak  <ubizjak@gmail.com>
24607
24608         PR target/39118
24609         * config/i386/i386.c (expand_prologue): Emit blockage at the end
24610         of function prologue when frame pointer is used to access
24611         red zone area.
24612
24613 2009-02-10  Richard Guenther  <rguenther@suse.de>
24614
24615         PR middle-end/39127
24616         * gimplify.c (gimple_regimplify_operands): Always look if
24617         we need to create a temporary.
24618
24619 2009-02-10  Richard Guenther  <rguenther@suse.de>
24620
24621         PR tree-optimization/39132
24622         * tree-loop-distribution.c (todo): New global var.
24623         (generate_memset_zero): Trigger TODO_rebuild_alias.
24624         (tree_loop_distribution): Return todo.
24625
24626 2009-02-10  H.J. Lu  <hongjiu.lu@intel.com>
24627
24628         PR target/39119
24629         * config/i386/i386.c (x86_64_reg_class): Remove X86_64_AVX_CLASS.
24630         (x86_64_reg_class_name): Removed.
24631         (classify_argument): Return 0 if bytes > 32.  Return 0 if the
24632         first one isn't X86_64_SSE_CLASS or any other ones aren't
24633         X86_64_SSEUP_CLASS when size > 16bytes.  Don't turn
24634         X86_64_SSEUP_CLASS into X86_64_SSE_CLASS if the preceded one
24635         is X86_64_SSEUP_CLASS.  Set AVX modes to 1 X86_64_SSE_CLASS
24636         and 3 X86_64_SSEUP_CLASS.
24637         (construct_container): Remove X86_64_AVX_CLASS.  Handle 4
24638         registers with 1 X86_64_SSE_CLASS and 3 X86_64_SSEUP_CLASS.
24639
24640 2009-02-10  Ben Elliston  <bje@au.ibm.com>
24641
24642         * config/rs6000/rs6000.md (allocate_stack): Always use an update
24643         form instruction to update the stack back chain word, even if the
24644         user has disabled the generation of update instructions.
24645         (movdi_<mode>_update_stack): New.
24646         (movsi_update_stack): Likewise.
24647         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Likewise,
24648         always use an update form instruction to update the stack back
24649         chain word.
24650
24651 2009-02-09  Sebastian Pop  <sebastian.pop@amd.com>
24652
24653         PR middle-end/38953
24654         * graphite.c (if_region_set_false_region): After moving a region in
24655         the false branch of a condition, remove the empty dummy basic block.
24656         (gloog): Remove wrong fix for PR38953.
24657
24658 2009-02-09  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
24659
24660         * config/spu/spu.c (array_to_constant): Fix (latent) wrong-code
24661         generation due to implicit sign extension.
24662
24663 2009-02-09  Eric Botcazou  <ebotcazou@adacore.com>
24664
24665         PR middle-end/38981
24666         * tree-ssa-coalesce.c (add_coalesce): Cap the costs of coalesce pairs
24667         at MUST_COALESCE_COST-1 instead of MUST_COALESCE_COST.
24668
24669 2009-02-09  Richard Guenther  <rguenther@suse.de>
24670
24671         PR middle-end/35202
24672         * convert.c (convert_to_real): Disable (float)fn((double)x)
24673         to fnf(x) conversion if errno differences may occur and
24674         -fmath-errno is set.
24675
24676 2009-02-07  Anatoly Sokolov  <aesok@post.ru>
24677
24678         * config/avr/avr.c (avr_mcu_t): Add ata6289 device.
24679         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
24680         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
24681
24682 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
24683
24684         PR c/35434
24685         * c-common.c (handle_alias_attribute): Disallow attribute for
24686         anything not a FUNCTION_DECL or VAR_DECL.
24687
24688 2009-02-06  Janis Johnson  <janis187@us.ibm.com>
24689
24690         PR c/39035
24691         * real.c (do_compare): Special-case compare of zero against
24692         decimal float value.
24693
24694 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
24695
24696         PR c/36432
24697         * c-decl.c (grokdeclarator): Don't treat [] declarators in fields
24698         as indicating flexible array members unless the field itself is
24699         being declarared as the incomplete array.
24700
24701 2009-02-06  Jan Hubicka  <jh@suse.cz>
24702
24703         PR tree-optimization/38844
24704         * ipa-inline.c (try_inline): Stop inlining recursion when edge
24705         is already inlined.
24706
24707 2009-02-06  Richard Guenther  <rguenther@suse.de>
24708
24709         PR middle-end/38977
24710         * tree-cfg.c (need_fake_edge_p): Force a fake edge for
24711         fork because we may expand it as __gcov_fork.
24712
24713 2009-02-06  Nick Clifton  <nickc@redhat.com>
24714
24715         * config/m32c/m32c.h (PCC_BITFIELD_TYPE_MATTERS): Define to zero.
24716
24717 2009-02-06  Paolo Bonzini  <bonzini@gnu.org>
24718
24719         PR tree-optimization/35659
24720         * tree-ssa-sccvn.c (vn_constant_eq, vn_reference_eq, vn_nary_op_eq
24721         vn_phi_eq): Shortcut if hashcode does not match.
24722         (vn_reference_op_compute_hash): Do not call iterative_hash_expr for
24723         NULL operands.
24724         * tree-ssa-pre.c (pre_expr_hash): Look at hashcode if available,
24725         and avoid iterative_hash_expr.
24726         (FOR_EACH_VALUE_ID_IN_SET): New.
24727         (value_id_compare): Remove.
24728         (sorted_array_from_bitmap_set): Use FOR_EACH_VALUE_ID_IN_SET to
24729         sort expressions by value id.
24730
24731 2009-02-05  Kaz Kojima  <kkojima@gcc.gnu.org>
24732
24733         PR target/38991
24734         * config/sh/predicates.md (general_movsrc_operand): Don't check
24735         the subreg of system registers here.
24736
24737 2009-02-05  Jakub Jelinek  <jakub@redhat.com>
24738
24739         PR c++/39106
24740         * cgraphunit.c (cgraph_function_versioning): Clear also DECL_VIRTUAL_P
24741         on the copied decl.
24742
24743 2009-02-05  Paolo Bonzini  <bonzini@gnu.org>
24744
24745         PR rtl-optimization/39110
24746         * rtlanal.c (rtx_addr_can_trap_p_1): Shortcut unaligned
24747         addresses, not aligned ones.
24748
24749 2009-02-05  Daniel Berlin  <dberlin@dberlin.org>
24750             Richard Guenther  <rguenther@suse.de>
24751
24752         PR tree-optimization/39100
24753         * tree-ssa-structalias.c (do_ds_constraint): Actually do what the
24754         comment says and add edges.
24755
24756 2009-02-05  Joseph Myers  <joseph@codesourcery.com>
24757
24758         PR c/35435
24759         * c-common.c (handle_tls_model_attribute): Ignore attribute for
24760         non-VAR_DECLs without checking DECL_THREAD_LOCAL_P.
24761
24762 2009-02-04  Tobias Grosser  <grosser@fim.uni-passau.de>
24763
24764         * graphite.c (bb_in_sese_p, sese_build_livein_liveouts_use,
24765         sese_build_livein_liveouts_bb, sese_build_livein_liveouts,
24766         register_bb_in_sese, new_sese, free_sese): Moved.
24767         (dot_scop_1, build_scop_loop_nests, build_loop_iteration_domains,
24768         outermost_loop_in_scop, build_scop_iteration_domain,
24769         expand_scalar_variables_ssa_name, get_vdef_before_scop,
24770         limit_scops): Use bb_in_sese_p instead of bb_in_scop_p.
24771         Use loop_in_sese_p instead of loop_in_scop_p.
24772         (new_graphite_bb, gloog): Do not initialize SCOP_BBS_B.
24773         (new_scop, free_scop): Remove SCOP_LOOP2CLOOG_LOOP and SCOP_BBS_B.
24774         (scopdet_basic_block_info): Fix bug in scop detection.
24775         (new_loop_to_cloog_loop_str, hash_loop_to_cloog_loop,
24776         eq_loop_to_cloog_loop): Remove.
24777         (nb_loops_around_loop_in_scop, nb_loop
24778         ref_nb_loops): Moved here...
24779         * graphite.h (ref_nb_loops): ... from here.
24780         (struct scop): Remove bbs_b bitmap and loop2cloog_loop.
24781         (loop_domain_dim, loop_iteration_vector_dim): Remove.
24782         (SCOP_BBS_B, bb_in_scop_p, loop_in_scop_p): Removed.
24783         * testsuite/gcc.dg/graphite/scop-19.c: New
24784
24785 2009-02-04  Paolo Bonzini  <bonzini@gnu.org>
24786             Hans-Peter Nilsson  <hp@axis.com>
24787
24788         PR rtl-optimization/37889
24789         * rtlanal.c (rtx_addr_can_trap_p_1): Add offset and size arguments.
24790         Move offset handling from PLUS to before the switch.  Use new
24791         arguments when considering SYMBOL_REFs too.
24792         (rtx_addr_can_trap_p): Pass dummy offset and size.
24793         (enum may_trap_p_flags): Remove.
24794         (may_trap_p_1): Pass size from MEM_SIZE.
24795
24796         PR rtl-optimization/38921
24797         * loop-invariant.c (find_invariant_insn): Use may_trap_or_fault_p.
24798         * rtl.h (may_trap_after_code_motion_p): Delete prototype.
24799         * rtlanal.c (may_trap_after_code_motion_p): Delete.
24800         (may_trap_p, may_trap_or_fault_p): Pass 0/1 as flags.
24801
24802 2009-02-04  H.J. Lu  <hongjiu.lu@intel.com>
24803
24804         AVX Programming Reference (January, 2009)
24805         * config/i386/sse.md (*vpclmulqdq): New.
24806
24807 2009-02-04  Jakub Jelinek  <jakub@redhat.com>
24808
24809         PR tree-optimization/38977
24810         PR gcov-profile/38292
24811         * calls.c (special_function_p): Disregard __builtin_ prefix.
24812
24813 2009-02-04  Hariharan Sandanagobalane  <hariharan@picochip.com>
24814
24815         * config/picochip/picochip.c (GO_IF_LEGITIMATE_ADDRESS): Disallow
24816         non-indexable addresses even before reload.
24817
24818 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
24819
24820         PR c/29129
24821         * c-decl.c (grokdeclarator): Mark [*] arrays in field declarators
24822         as having variable size.  Do not give an error for unnamed
24823         parameters with [*] declarators.  Give a warning for type names
24824         with [*] declarators and mark them as variable size.
24825         * c-parser.c (c_parser_sizeof_expression): Do not give an error
24826         for sizeof applied to [*] type names.
24827
24828 2009-02-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
24829
24830         PR C++/36607
24831         * convert.c (convert_to_integer): Treat OFFSET_TYPE like INTEGER_TYPE.
24832
24833 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
24834
24835         * gcc.c (process_command): Update copyright notice dates.
24836         * gcov.c (print_version): Likewise.
24837         * gcov-dump.c (print_version): Likewise.
24838         * mips-tfile.c (main): Likewise.
24839         * mips-tdump.c (main): Likewise.
24840
24841 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
24842
24843         PR c/35433
24844         * c-typeck.c (composite_type): Set TYPE_SIZE and TYPE_SIZE_UNIT
24845         for composite type involving a zero-length array type.
24846
24847 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
24848
24849         PR target/35318
24850         * function.c (match_asm_constraints_1): Skip over
24851         initial optional % in the constraint.
24852
24853         PR inline-asm/39059
24854         * c-parser.c (c_parser_postfix_expression): If fixed point is not
24855         supported, don't accept FIXED_CSTs.
24856         * c-decl.c (finish_declspecs): Error if fixed point is not supported
24857         and _Sat is used without _Fract/_Accum.  Set specs->type to
24858         integer_type_node for cts_fract/cts_accum if fixed point is not
24859         supported.
24860
24861 2009-02-02  Catherine Moore  <clm@codesourcery.com>
24862
24863         * sde.h (SUBTARGET_ARM_SPEC): Don't assemble -fpic code as -mabicalls.
24864
24865 2009-02-02  Richard Sandiford  <rdsandiford@googlemail.com>
24866
24867         * config/mips/mips.h (FILE_HAS_64BIT_SYMBOLS): New macro.
24868         (ABI_HAS_64BIT_SYMBOLS): Use it.
24869         (DWARF2_ADDR_SIZE): Use it instead of ABI_HAS_64BIT_SYMBOLS.
24870
24871 2009-02-02  Paul Brook  <paul@codesourcery.com>
24872
24873         * config/arm/arm.md (arm_addsi3): Add r/r/k alternative.
24874
24875 2009-02-02  Jakub Jelinek  <jakub@redhat.com>
24876
24877         PR inline-asm/39058
24878         * recog.h (asm_operand_ok): Add constraints argument.
24879         * recog.c (asm_operand_ok): Likewise.  If it is set, for digits
24880         recurse on matching constraint.
24881         (check_asm_operands): Pass constraints as 3rd argument to
24882         asm_operand_ok.  Don't look up matching constraint here.
24883         * stmt.c (expand_asm_operands): Pass NULL as 3rd argument
24884         to asm_operand_ok.
24885
24886 2009-02-02  Ben Elliston  <bje@au.ibm.com>
24887
24888         * doc/tm.texi (Storage Layout): Fix TARGET_ALIGN_ANON_BITFIELD and
24889         TARGET_NARROW_VOLATILE_BITFIELD macro names.
24890
24891 2009-01-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
24892
24893         * doc/install.texi (hppa*-hp-hpux*): Update binutils and linker
24894         information.  Remove some obsolete information.  Reorganize.
24895
24896         * config/pa/fptr.c: Revert license to GPL 2.
24897         * config/pa/milli64.S: Likewise.
24898
24899 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
24900
24901         PR target/38904
24902         * mkmap-flat.awk (END):  Use pe_dll command-line arg to pass
24903         LIBRARY name in, instead of hard-coding it.
24904         * config.gcc (i[34567]86-*-pe | i[34567]86-*-cygwin*):  Add an
24905         extra target make frag to tmake_files according to EH model.
24906         (i[34567]86-*-mingw* | x86_64-*-mingw*):  Likewise.
24907         * config/i386/t-dw2-eh, config/i386/t-sjlj-eh:  Add new target
24908         frags that define makefile variable EH_MODEL appropriately.
24909         * config/i386/cygming.h (DWARF2_UNWIND_INFO):  Add comment.
24910         * config/i386/cygwin.h (LIBGCC_EH_EXTN):  Define to nothing or
24911         to "-sjlj" according to type of EH configured.
24912         (LIBGCC_SONAME):  Concatenate it to shared library base name.
24913         * config/i386/mingw32.h (LIBGCC_EH_EXTN):  Define to "_dw2" or
24914         to "_sjlj" according to type of EH configured.
24915         (LIBGCC_SONAME):  Concatenate it to shared library base name.
24916         * config/i386/t-cygming (SHLIB_SONAME):  Use EH_MODEL.
24917         (SHLIB_LINK):  Add missing semicolon to if-else construct.
24918         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
24919         string value of "pe_dll" command-line option.
24920         * config/i386/t-cygwin (SHLIB_EH_EXTENSION):  New helper.
24921         (SHLIB_SONAME):  Use it when overriding t-cygming default.
24922         (SHLIB_IMPLIB):  Override t-cygming default.
24923         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
24924         string value of "pe_dll" command-line option.
24925
24926 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
24927
24928         PR target/38952
24929         * config/i386/i386.c (ix86_builtin_setjmp_frame_value): New.
24930         (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Override default to point at it.
24931
24932 2009-01-31  Richard Guenther  <rguenther@suse.de>
24933
24934         PR tree-optimization/38937
24935         * tree-ssa-structalias.c (do_sd_constraint): Do not shortcut
24936         computing the transitive closure.
24937
24938 2009-01-30  Richard Guenther  <rguenther@suse.de>
24939
24940         PR tree-optimization/39041
24941         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
24942         Propagate variable indices only if the types match for this stmt.
24943
24944 2009-01-30  Jakub Jelinek  <jakub@redhat.com>
24945
24946         PR target/39013
24947         * c-decl.c (pop_scope): Set DECL_EXTERNAL for functions declared
24948         inline but never defined.
24949
24950 2009-01-30  Wolfgang Gellerich  <gellerich@de.ibm.com>
24951
24952         * config/s390/s390.md (*insv<mode>_reg_extimm): Removed.
24953         (*insv_h_di_reg_extimm): New insn.
24954         (*insv_l<mode>_reg_extimm): New insn.
24955
24956 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
24957
24958         * config/picochip/picochip.c (flag_conserve_stack): set
24959         PARAM_LARGE_STACK_FRAME and PARAM_STACK_FRAME_GROWTH to zero under
24960         fconserve-stack. Reduce call-overhead used by inliner.
24961
24962 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
24963
24964         PR/38157
24965         * common.opt (flag_conserve_stack): Initialised to zero.
24966
24967 2009-01-30  Kai Tietz  <kai.tietz@onevision.com>
24968
24969         PR/39002
24970         * config/i386/i386.c (ix86_can_use_return_insn_p): Check for nsseregs.
24971         (ix86_expand_epilogue): Take nsseregs in account to use proper restore
24972         method.
24973
24974 2009-01-29  H.J. Lu  <hongjiu.lu@intel.com>
24975
24976         * ira-color.c (allocno_reload_assign): Update comments.
24977         * regmove.c (regmove_optimize): Likewise.
24978
24979         * ra.h: Removed.
24980
24981 2009-01-29  Robert Millan  <rmh@aybabtu.com>
24982
24983         * config.gcc: Recognize GNU/kOpenSolaris (*-*-kopensolaris*-gnu).
24984         * config/i386/kopensolaris-gnu.h: New file.  Undefine
24985         `MD_UNWIND_SUPPORT'.
24986         * config/kopensolaris-gnu.h: New file (based on kfreebsd-gnu.h).
24987
24988 2009-01-29  Kazu Hirata  <kazu@codesourcery.com>
24989
24990         PR tree-optimization/39007
24991         * tree-loop-distribution.c (generate_builtin): Use
24992         recompute_dominator to compute the immediate dominator of the
24993         basic block just after the loop.
24994
24995 2009-01-29  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
24996
24997         * config/i386/sol2-10.h [!HAVE_AS_IX86_DIFF_SECT_DELTA]
24998         (ASM_OUTPUT_DWARF_PCREL): Define.
24999
25000 2009-01-29  Vladimir Makarov  <vmakarov@redhat.com>
25001
25002         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Modify description.
25003         * doc/passes.texi: Remove entries about regclass, local-alloc, and
25004         global.  Modify entries about regmove and IRA.
25005
25006         * ra-conflict.c: Remove the file.
25007
25008         * reload.c (push_reload, find_dummy_reload): Remove flag_ira.
25009
25010         * tree-pass.h (pass_local_alloc, pass_global_alloc): Remove.
25011         (pass_regclass_init): Rename to pass_reginfo_init.
25012
25013         * cfgloopanal.c (estimate_reg_pressure_cost): Remove flag_ira.
25014
25015         * toplev.h (flag_ira): Remove.
25016
25017         * caller-save.c (setup_save_areas): Remove flag_ira.
25018
25019         * ira-color.c (ira_reuse_stack_slot, ira_mark_new_stack_slot): Ditto.
25020
25021         * global.c: Remove the file.
25022
25023         * opts.c (decode_options): Remove flag_ira.
25024
25025         * hard-reg-set.h (losing_caller_save_reg_set): Remove.
25026
25027         * regmove.c: Modify file description.
25028         (find_use_as_address, try_auto_increment): Define them only if
25029         AUTO_INC_DEC is defined.
25030         (replacement_quality, replace_in_call_usage, fixup_match_1,
25031         stable_and_no_regs_but_for_p): Remove.
25032         (reg_set_in_bb): Make it static.
25033         (regmove_optimize): Remove flag_ira and code which worked for
25034         !flag_ira.
25035
25036         * local-alloc.c: Remove the file.
25037
25038         * common.opt (fira): Remove.
25039
25040         * ira.c: Include except.h.
25041         (eliminable_regset): Move from global.c.
25042         (mark_elimination): Ditto.  Remove flag_ira.
25043         (reg_renumber, struct equivalence, reg_equiv, equiv_mem,
25044         equiv_mem_modified, validate_equiv_mem_from_store,
25045         validate_equiv_mem, equiv_init_varies_p, equiv_init_movable_p,
25046         contains_replace_regs, memref_referenced_p, memref_used_between_p,
25047         no_equiv, recorded_label_ref): Move from local-alloc.c.
25048         (update_equiv_regs): Ditto.  Make it static.
25049         (print_insn_chain, print_insn_chains): Move it from global.c.
25050         (pseudo_for_reload_consideration_p): Ditto.  Remove flag_ira.
25051         (build_insn_chain): Ditto.  Make it static.
25052         (ra_init_live_subregs): Move from ra-conflict.c.  Make it static.
25053         Rename to init_live_subregs.
25054         (gate_ira): Remove flag_ira.
25055
25056         * regclass.c: Rename reginfo.c.  Change file description.
25057         (FORBIDDEN_INC_DEC_CLASSES): Remove.
25058         (reg_class_superclasses, forbidden_inc_dec_class, in_inc_dec): Remove.
25059         (init_reg_sets_1): Remove code for evaluation of
25060         reg_class_superclasses and losing_caller_save_reg_set.
25061         (init_regs): Remove init_reg_autoinc.
25062         (struct costs, costs, init_cost, ok_for_index_p_nonstrict,
25063         ok_for_base_p_nonstrict): Remove.
25064         (regclass_init): Rename to reginfo_init.  Don't initialize init_cost.
25065         (pass_regclass_init): Rename to pass_reginfo_init.  Modify
25066         corresponding entries.
25067         (dump_regclass, record_operand_costs, scan_one_insn,
25068         init_reg_autoinc, regclass, record_reg_classes, copy_cost,
25069         record_address_regs, auto_inc_dec_reg_p): Remove.
25070         (gt-regclass.h): Rename to gt-reginfo.h.
25071
25072         * rtl.h (dump_global_regs, retry_global_alloc,
25073         build_insn_chain, dump_local_alloc, update_equiv_regs): Remove.
25074
25075         * Makefile.in (RA_H): Remove.
25076         (OBJS-common): Remove global.o, local-alloc.o, and ra-conflict.o.
25077         Rename regclass.o to reginfo.o.
25078         (regclass.o): Rename to reginfo.o.  Rename gt-regclass.h to
25079         gt-reginfo.h.
25080         (global.o, local-alloc.o, ra-conflict.o): Remove entries.
25081         (GTFILES): Rename regclass.c to reginfo.c.
25082
25083         * passes.c (init_optimization_passes): Remove pass_local_alloc and
25084         pass_global_alloc.  Rename pass_regclass_init to pass_reginfo_init.
25085
25086         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
25087         count_spilled_pseudo, find_reg, alter_reg, delete_output_reload):
25088         Remove flag_ira.
25089         (finish_spills): Ditto.  Remove code for !flag_ira.
25090
25091 2009-01-29  Kenneth Zadeck  <zadeck@naturalbridge.com>
25092
25093         PR middle-end/35854
25094         * doc/invoke.texi (rtl debug options): Complete rewrite.
25095         * auto-inc-dec.c (pass_inc_dec): Rename pass from "auto-inc-dec"
25096         to auto_inc_dec".
25097         * mode-switching.c (pass_mode_switching): Rename pass from
25098         "mode-sw" to "mode_sw".
25099         * except.c (pass_convert_to_eh_ranges): Rename pass from
25100         "eh-ranges" to "eh_ranges".
25101         * lower-subreg.c (pass_lower_subreg): Renamed pass from "subreg"
25102         to "subreg1".
25103
25104
25105 2009-01-29  Andrey Belevantsev  <abel@ispras.ru>
25106             Alexander Monakov  <amonakov@ispras.ru>
25107
25108         PR middle-end/38857
25109         * sel-sched.c (count_occurrences_1): Check that *cur_rtx is a hard
25110         register.
25111         (move_exprs_to_boundary): Change return type and pass through
25112         should_move from move_op.  Relax assert.  Update usage ...
25113         (schedule_expr_on_boundary): ... here.  Use should_move instead of
25114         cant_move.
25115         (move_op_orig_expr_found): Indicate that insn was disconnected from
25116         stream.
25117         (code_motion_process_successors): Do not call after_merge_succs
25118         callback if original expression was not found when traversing any of
25119         the branches.
25120         (code_motion_path_driver): Change return type.  Update prototype.
25121         (move_op): Update comment.  Add a new parameter (should_move).  Update
25122         prototype.  Set *should_move based on indication provided by
25123         move_op_orig_expr_found.
25124
25125 2009-01-28  Pat Haugen  <pthaugen@us.ibm.com>
25126
25127         * doc/invoke.texi (avoid-indexed-addresses): Document new option.
25128         * config/rs6000/rs6000-protos.h (avoiding_indexed_address_p): Declare.
25129         * config/rs6000/rs6000.opt (avoid-indexed-addresses): New option.
25130         * config/rs6000/rs6000.c (rs6000_override_options): Default
25131         avoid-indexed-addresses on for Power6, off for everything else.
25132         (avoiding_indexed_address_p): New function.
25133         (rs6000_legitimize_address): Use it.
25134         (rs6000_legitimate_address): Likewise.
25135         * config/rs6000/rs6000.md (movXX_updateX): Likewise
25136
25137 2009-01-28  Kazu Hirata  <kazu@codesourcery.com>
25138
25139         PR tree-optimization/38997
25140         * tree-loop-distribution.c (generate_memset_zero): Use
25141         POINTER_PLUS_EXPR for a pointer addition.
25142
25143 2009-01-28  Andreas Krebbel  <krebbel1@de.ibm.com>
25144
25145         * config/s390/s390.md (bswap<mode>2): New pattern added.
25146
25147 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
25148
25149         * config/s390/s390.md (*tls_load_31): Added type attribute.
25150
25151 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
25152
25153         * config/s390/s390.md: Fix a few comments.
25154
25155 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
25156
25157         * config/s390/s390.md (*tmsi_reg): Fixed z10prop attribute.
25158         (*tm<mode>_full): Fixed z10prop attribute.
25159         (*tst<mode>_extimm): Fixed z10prop attribute.
25160         (*tst<mode>_cconly_extimm): Fixed z10prop attribute.
25161         (*tstqiCCT_cconly): Fixed z10prop attribute.
25162         (*cmpsi_ccu_zerohi_rlsi): Fixed z10prop attribute.
25163         (*movsi_larl): Fixed z10prop attribute.
25164         (*movsi_zarch): Fixed z10prop attribute.
25165         (*movsi_eas): Fixed z10prop attribute.
25166         (*movhi): Fixed z10prop attribute.
25167         (*movqi): Fixed z10prop attribute.
25168         (*movstrictqi): Fixed z10prop attribute.
25169         (*mov<mode>): Fixed z10prop attribute.
25170         (*movcc): Fixed z10prop attribute.
25171         (*sethighpartdi_64): Fixed z10prop attribute.
25172         (*zero_extendhi<mode>2_z10): Fixed z10prop attribute.
25173         (*negdi2_sign_cc): Fixed z10prop attribute.
25174         (*negdi2_sign): Fixed z10prop attribute.
25175         (*absdi2_sign_cc): Fixed z10prop attribute.
25176         (*absdi2_sign): Fixed z10prop attribute.
25177         (*negabsdi2_sign_cc): Fixed z10prop attribute.
25178         (*negabsdi2_sign): Fixed z10prop attribute.
25179         (*cmp_and_trap_signed_int<mode>): Fixed z10prop attribute.
25180         (*cmp_and_trap_unsigned_int<mode>): Fixed z10prop attribute.
25181         (doloop_si64): Fixed z10prop attribute.
25182         (doloop_si31): Fixed z10prop attribute.
25183         (doloop_long): Fixed z10prop attribute.
25184         (indirect_jump): Fixed z10prop attribute.
25185         (nop): Fixed z10prop attribute.
25186         (main_base_64): Fixed z10prop attribute.
25187         (reload_base_64): Fixed z10prop attribute.
25188
25189 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
25190
25191         PR rtl-optimization/38740
25192         * reorg.c (gate_handle_delay_slots): Avoid dbr scheduling
25193         if !optimize.
25194         * config/mips/mips.c (mips_reorg): Likewise.
25195
25196 2009-01-28  Richard Guenther  <rguenther@suse.de>
25197
25198         PR tree-optimization/38926
25199         * tree-ssa-pre.c (add_to_value): Assert we add only expressions
25200         with the correct value id to a value.
25201         (do_regular_insertion): Use the value number of edoubleprime
25202         for the value number of the expr.
25203
25204         Revert
25205         2008-08-21  Richard Guenther  <rguenther@suse.de>
25206
25207         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
25208         a PHI ask VN if it is already available.
25209         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
25210         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
25211
25212 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
25213
25214         PR middle-end/38934
25215         * tree-vrp.c (extract_range_from_assert): For LE_EXPR and LT_EXPR
25216         set to varying whenever max has TREE_OVERFLOW set, similarly
25217         for GE_EXPR and GT_EXPR and TREE_OVERFLOW min.
25218
25219 2009-01-28  Richard Guenther  <rguenther@suse.de>
25220
25221         PR middle-end/38908
25222         * tree-ssa.c (warn_uninitialized_var): Do not warn for seemingly
25223         uninitialized aggregate uses in call arguments.
25224
25225 2009-01-28  Paolo Bonzini  <bonzini@gnu.org>
25226
25227         PR tree-optimization/38984
25228         * tree-ssa-structalias.c (get_constraints_for_1): Do not use
25229         the nothing_id variable if -fno-delete-null-pointer-checks.
25230
25231 2009-01-28  Uros Bizjak  <ubizjak@gmail.com>
25232
25233         PR target/38988
25234         * config/i386/i386.md (set_rip_rex64): Wrap operand 1 in label_ref.
25235         (set_got_offset_rex64): Ditto.
25236
25237 2009-01-27  H.J. Lu  <hongjiu.lu@intel.com>
25238
25239         PR target/38941
25240         * doc/extend.texi: Improve local variable with asm reg.
25241
25242 2009-01-27  Adam Nemet  <anemet@caviumnetworks.com>
25243
25244         * c.opt (Wpacked-bitfield-compat): Change init value to -1.
25245         * c-opts.c (c_common_post_options): If -W*packed-bitfield-compat
25246         was not supplied then set warn_packed_bitfield_compat to the
25247         default value of 1.
25248         * stor-layout.c (place_field): Check warn_packed_bitfield_compat
25249         against 1.
25250
25251 2009-01-27  Richard Guenther  <rguenther@suse.de>
25252
25253         PR tree-optimization/38503
25254         * cfgexpand.c (expand_gimple_basic_block): Ignore
25255         GIMPLE_CHANGE_DYNAMIC_TYPE during expansion.
25256         * tree-ssa-structalias.c (set_uids_in_ptset): Do not prune
25257         variables that cannot have TBAA applied.
25258         (compute_points_to_sets): Do not remove GIMPLE_CHANGE_DYNAMIC_TYPE
25259         statements.
25260
25261 2009-01-27  Uros Bizjak  <ubizjak@gmail.com>
25262
25263         PR middle-end/38969
25264         * calls.c (initialize_argument_information): Do not wrap complex
25265         arguments in SAVE_EXPR.
25266
25267 2009-01-26  Andreas Tobler  <a.tobler@schweiz.org>
25268
25269         * config/t-vxworks (LIBGCC2_INCLUDES): Fix typo.
25270         (INSTALL_LIBGCC): Revert typo commit.
25271
25272 2009-01-26  Richard Guenther  <rguenther@suse.de>
25273
25274         PR tree-optimization/38745
25275         * tree-ssa-alias.c (update_alias_info_1): Exclude RESULT_DECL
25276         from special handling.
25277
25278 2009-01-26  Richard Guenther  <rguenther@suse.de>
25279
25280         PR tree-optimization/38745
25281         * tree-ssa.c (execute_update_addresses_taken): Do not include
25282         variables that cannot possibly be a register in not_reg_needs.
25283         Do not clear TREE_ADDRESSABLE on vars that may not become
25284         registers.
25285         * tree-ssa.c (update_alias_info_1): Include those in the set
25286         of addressable vars.
25287
25288 2009-01-26  Richard Guenther  <rguenther@suse.de>
25289
25290         PR middle-end/38851
25291         * Makefile.in (tree-ssa-dse.o): Add langhooks.h.
25292         * tree-ssa-dse.c: Include langhooks.h
25293         (execute_simple_dse): Remove stores with zero size.
25294
25295 2009-01-24  Jakub Jelinek  <jakub@redhat.com>
25296
25297         PR c/38957
25298         * c-typeck.c (c_finish_return): Handle POINTER_PLUS_EXPR the same way
25299         as PLUS_EXPR.
25300
25301 2009-01-24  Julian Brown  <julian@codesourcery.com>
25302
25303         * config/arm/t-linux-eabi (LIB2FUNCS_STATIC_EXTRA): Add
25304         config/arm/linux-atomic.c.
25305         * config/arm/linux-atomic.c: New.
25306
25307 2009-01-24  Eric Botcazou  <ebotcazou@adacore.com>
25308
25309         * config/sparc/linux.h (DBX_REGISTER_NUMBER): Delete.
25310         * config/sparc/linux64.h (DBX_REGISTER_NUMBER): Likewise.
25311         * config/sparc/sysv4.h (DBX_REGISTER_NUMBER): Likewise.
25312
25313 2009-01-24  H.J. Lu  <hongjiu.lu@intel.com>
25314
25315         PR c/38938
25316         * c-opts.c (c_common_handle_option): Update warn_pointer_sign
25317         properly.
25318
25319 2009-01-24  Sebastian Pop  <sebastian.pop@amd.com>
25320
25321         PR tree-optimization/38953
25322         * graphite.c (graphite_verify): Add a call to verify_loop_closed_ssa.
25323         (scop_adjust_phis_for_liveouts): Initialize false_i to zero.
25324         (gloog): Split the exit of the scop when the scop exit is a loop exit.
25325         (graphite_transform_loops): Only call cleanup_tree_cfg if gloog
25326         changed the CFG.
25327
25328 2009-01-24  Paul Brook  <paul@codesourcery.com>
25329
25330         * config/arm/neon.md (neon_type): Move to arm.md.
25331         (neon_mov<VSTRUCT>): Add neon_type attribute.
25332         * config/arm/arm.md (neon_type): Move to here.
25333         (conds): Add "unconditioal" and use as default for NEON insns.
25334
25335 2009-01-24  Ben Elliston  <bje@au.ibm.com>
25336
25337         * bitmap.h (BITMAP_FREE): Eliminate `implicit conversion from
25338         void *' warning from -Wc++-compat.
25339         * Makefile.in (dominance.o-warn): Remove.
25340
25341 2009-01-23  Paolo Bonzini  <bonzini@gnu.org>
25342
25343         PR tree-optimization/38932
25344         * fold-const.c (fold_unary_ignore_overflow): New.
25345         * tree.h (fold_unary_ignore_overflow): Declare.
25346         * tree-ssa-ccp.c (ccp_fold): Use fold_unary_ignore_overflow.
25347         * tree-ssa-sccvn.c (visit_reference_op_load,
25348         simplify_unary_expression): Likewise.
25349
25350 2009-01-22  Adam Nemet  <anemet@caviumnetworks.com>
25351
25352         * c-decl.c (finish_struct): Move code to set DECL_PACKED after
25353         DECL_BIT_FIELD is alreay known.  Also inherit packed for bitfields
25354         regardless of their type.
25355         * c-common.c (handle_packed_attribute): Don't ignore packed on
25356         bitfields.
25357         * c.opt (Wpacked-bitfield-compat): New warning option.
25358         * stor-layout.c (place_field): Warn if offset of a field changed.
25359         * doc/extend.texi (packed): Mention the ABI change.
25360         * doc/invoke.texi (-Wpacked-bitfield-compat): Document.
25361         (Warning Options): Add it to the list.
25362
25363 2009-01-22  H.J. Lu  <hongjiu.lu@intel.com>
25364
25365         * c-opts.c (c_common_post_options): Fix a typo in comments.
25366
25367 2009-01-22  Steve Ellcey  <sje@cup.hp.com>
25368
25369         PR middle-end/38615
25370         * gimplify.c (gimplify_init_constructor): Fix promotion of const
25371         variables to static.
25372         * doc/invoke.texi (-fmerge-all-constants): Update description.
25373
25374 2009-01-22  Uros Bizjak  <ubizjak@gmail.com>
25375
25376         PR target/38931
25377         * config/i386/i386.md (*movsi_1): Use type "mmx" for alternative 2.
25378         (*movdi_1_rex64): Use type "mmx" for alternative 5.
25379
25380 2009-01-22  Richard Earnshaw  <rearnsha@arm.com>
25381
25382         * arm.h (DATA_ALIGNMENT): Align structures, unions and arrays to
25383         a word boundary.
25384         (LOCAL_ALIGNMENT): Similarly.
25385
25386 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
25387             Joseph Myers  <joseph@codesourcery.com>
25388
25389         * config/arm/arm.c (all_architectures): Add iWMMXt2 entry.
25390         * config/arm/arm-cores.def: New ARM_CORE entry for iWMMXt2.
25391         * config/arm/arm-tune.md: Regenerate.
25392         * doc/invoke.texi (ARM Options): Document -mcpu=iwmmxt2 and
25393         -march=iwmmxt2.
25394
25395 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
25396
25397         * config/arm/bpabi.h (SUBTARGET_EXTRA_ASM_SPEC): Bump EABI
25398         version number to five.
25399
25400 2009-01-22  Dodji Seketeli  <dodji@redhat.com>
25401
25402         PR c++/38930
25403         * c-decl.c (clone_underlying_type): Revert PR c++/26693 changes.
25404         * c-common.c (set_underlying_type): Likewise.
25405         (is_typedef_decl ): Likewise
25406         * tree.h: Likewise
25407         (set_underlying_type): Likewise.
25408         (is_typedef_type): Likewise.
25409
25410 2009-01-21  Vladimir Makarov  <vmakarov@redhat.com>
25411
25412         PR middle-end/38587
25413         * ira-color.c (coalesce_spill_slots): Don't coalesce allocnos
25414         crossing setjmps.
25415
25416 2009-01-21  Dave Korn  <dave.korn.cygwin@gmail.com>
25417
25418         PR bootstrap/37660
25419         * config/i386/cygwin.h (SHARED_LIBGCC_SPEC):  New helper macro.
25420         (LIBGCC_SPEC):  Don't define.
25421         (REAL_LIBGCC_SPEC):  Define instead, using SHARED_LIBGCC_SPEC.
25422
25423 2009-01-21  Uros Bizjak  <ubizjak@gmail.com>
25424
25425         PR rtl-optimization/38879
25426         * alias.c (base_alias_check): Unaligned access via AND address can
25427         alias all surrounding object types except those with sizes equal
25428         or wider than the size of unaligned access.
25429
25430 2009-01-21  Dodji Seketeli  <dodji@redhat.com>
25431
25432         PR c++/26693
25433         * c-decl.c (clone_underlying_type): Move this ...
25434         * c-common.c (set_underlying_type): ... here.
25435         Also, make sure the function properly sets TYPE_STUB_DECL() on
25436         the newly created typedef variant type.
25437         (is_typedef_decl ): New entry point.
25438         * tree.h: Added a new member member_types_needing_access_check to
25439         struct tree_decl_non_common.
25440         (set_underlying_type): New entry point.
25441         (is_typedef_type): Likewise.
25442
25443 2009-01-21  Bingfeng Mei  <bmei@broadcom.com>
25444
25445         * alias.c (walk_mems_1, walk_mems_2, insn_alias_sets_conflict_p):
25446         Check whether two instructions have memory references that
25447         belong to conflicting alias sets.  walk_mems_1 and walk_mems_2
25448         are helper functions for traversing.
25449         * alias.h (insn_alias_sets_confilict_p): New prototypes.
25450         * ddg.c (add_inter_loop_mem_dep): Call insn_alias_sets_conflict_p
25451         not to draw dependency edge for instructions with non-conflicting
25452         alias sets.
25453
25454 2009-01-20  Joseph Myers  <joseph@codesourcery.com>
25455
25456         PR other/38758
25457         * longlong.h: Update copyright years.  Use soft-fp license notice.
25458         Sync __clz_tab declaration with glibc.
25459
25460 2009-01-20  Steve Ellcey  <sje@cup.hp.com>
25461
25462         PR target/30687
25463         * doc/extend.texi (syscall_linkage): New.
25464         (version_id): Modify.
25465
25466 2009-01-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
25467             Richard Guenther  <rguenther@suse.de>
25468
25469         PR tree-optimization/38747
25470         PR tree-optimization/38748
25471         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Disable the VCE
25472         conversion if the base address is an indirect reference and the
25473         aliasing sets could cause issues.
25474
25475 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
25476
25477         * common.opt (fgraphite, fgraphite-identity): Add comment for
25478         explaining why these options are not documented.
25479
25480 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
25481
25482         * graphite.c (stmt_simple_for_scop_p): Also handle cases when
25483         gimple_call_lhs is NULL.
25484
25485 2009-01-20  Paolo Bonzini  <bonzini@gnu.org>
25486
25487         PR target/38868
25488         * emit-rtl.c (adjust_address_1): Make sure memref is never
25489         overwritten.
25490
25491 2009-01-20  Ben Elliston  <bje@au.ibm.com>
25492
25493         * libgcov.c (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
25494         const qualifier from arg parameter. Remove unnecessary cast to char *.
25495         * gcov-io.h (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
25496         const qualifier from arg 2.
25497
25498 2009-01-19  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
25499
25500         * config/darwin.h: Add static-libgfortran to LINK_SPEC.
25501
25502 2009-01-19  Vladimir Makarov  <vmakarov@redhat.com>
25503
25504         PR c/38869
25505         * rtl.h (reinit_regs): New prototype.
25506         * regclass.c: Include ira.h.
25507         (reinit_regs): New.
25508         * Makefile.in (regclass.o): Add ira.h.
25509         * config/i386/i386.c (ix86_maybe_switch_abi): Use reinit_regs.
25510
25511 2009-01-18  H.J. Lu  <hongjiu.lu@intel.com>
25512
25513         PR target/38736
25514         * c-common.c (handle_aligned_attribute): Use
25515         ATTRIBUTE_ALIGNED_VALUE instead of BIGGEST_ALIGNMENT for
25516         default alignment value.
25517
25518         * c-cppbuiltin.c (c_cpp_builtins): Define __BIGGEST_ALIGNMENT__.
25519
25520         * defaults.h (ATTRIBUTE_ALIGNED_VALUE): New.
25521         * config/i386/i386.h (ATTRIBUTE_ALIGNED_VALUE): Likewise.
25522
25523         * doc/extend.texi: Update __attribute__ ((aligned)).  Document
25524         __BIGGEST_ALIGNMENT__.
25525
25526         * doc/tm.texi: Document ATTRIBUTE_ALIGNED_VALUE.
25527
25528 2009-01-18  Richard Guenther  <rguenther@suse.de>
25529
25530         PR tree-optimization/38819
25531         * tree-flow.h (operation_could_trap_helper_p): Declare.
25532         * tree-eh.c (operation_could_trap_helper_p): Export.
25533         * tree-ssa-sccvn.h (vn_nary_may_trap): Declare.
25534         * tree-ssa-sccvn.c (vn_nary_may_trap): New function.
25535         * tree-ssa-pre.c (insert_into_preds_of_block): Check if we
25536         are about to insert a possibly trapping instruction and fail
25537         in this case.
25538
25539 2009-01-18  Andreas Schwab  <schwab@suse.de>
25540
25541         * doc/install.texi (Configuration): Remove obsolete paragraph
25542         about use of --with-gnu-ld with --with-gnu-as.
25543
25544 2009-01-18  Kazu Hirata  <kazu@codesourcery.com>
25545
25546         * doc/extend.texi, doc/gimple.texi, doc/invoke.texi,
25547         doc/md.texi, doc/sourcebuild.texi, doc/tm.texi: Fix typos.
25548         Follow spelling conventions.
25549
25550 2009-01-18  Ben Elliston  <bje@au.ibm.com>
25551
25552         * bitmap.c (bitmap_obstack_alloc_stat): Adjust cast to eliminate
25553         C++ warning about implicit conversion from void * to struct
25554         bitmap_head_def *.
25555         (bitmap_obstack_free): Likewise for bitmap_element *.
25556         * Makefile.in (bitmap.o-warn): Remove.
25557
25558 2009-01-17  Dave Korn  <dave.korn.cygwin@gmail.com>
25559
25560         * Makefile.in (BACKENDLIBS):  Reorder to match dependencies.
25561
25562 2009-01-17  Sebastian Pop  <sebastian.pop@amd.com>
25563             Tobias Grosser  <tobi.grosser@amd.com>
25564
25565         * graphite.c (graphite_trans_scop_block): Do not block single
25566         nested loops.
25567
25568 2009-01-16  Alexandre Oliva  <aoliva@redhat.com>
25569
25570         * ebitmap.h (ebitmap_iter_init): Initialize all fields.
25571         * ipa-struct-reorg.c (gen_struct_type): Replace known-true
25572         test with assertion.
25573
25574 2009-01-16  Richard Guenther  <rguenther@suse.de>
25575
25576         PR tree-optimization/38835
25577         PR middle-end/36227
25578         * fold-const.c (fold_binary): Remove PTR + INT -> (INT)(PTR p+ INT)
25579         and INT + PTR -> (INT)(PTR p+ INT) folding.
25580         * tree-ssa-address.c (create_mem_ref): Properly use POINTER_PLUS_EXPR.
25581
25582 2009-01-16  Adam Nemet  <anemet@caviumnetworks.com>
25583
25584         PR target/38554
25585         * expmed.c (expand_shift): With SHIFT_COUNT_TRUNCATED, don't lift
25586         the subreg from a lowpart subreg if it is also casting the value.
25587
25588 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
25589             Tobias Grosser  <tobi.grosser@amd.com>
25590
25591         * graphite.c (compare_prefix_loops): New.
25592         (build_scop_canonical_schedules): Rewritten.
25593         (graphite_transform_loops): Move build_scop_canonical_schedules
25594         after build_scop_iteration_domain.
25595
25596 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
25597             Tobias Grosser  <tobi.grosser@amd.com>
25598
25599         * graphite.c (add_conditions_to_domain): Add the loops to
25600         the dimension of the iteration domain.  Do copy the domain
25601         only when it exists.
25602         (build_scop_conditions_1): Do not call add_conditions_to_domain.
25603         (add_conditions_to_constraints): New.
25604         (can_generate_code_stmt, can_generate_code): Removed.
25605         (gloog): Do not call can_generate_code.
25606         (graphite_transform_loops): Call add_conditions_to_constraints
25607         after building the iteration domain.
25608
25609 2009-01-16  Jakub Jelinek  <jakub@redhat.com>
25610
25611         PR tree-optimization/38789
25612         * tree-ssa-threadedge.c
25613         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
25614         __builtin_constant_p.
25615
25616 2009-01-16  Kenneth Zadeck  <zadeck@naturalbridge.com>
25617
25618         * dce.c (delete_unmarked_insns): Reversed the order that insns are
25619         examined before deleting them.
25620
25621 2009-01-16  Richard Earnshaw  <rearnsha@arm.com>
25622
25623         * function.c (aggregate_value_p): Correctly extract the function
25624         type from CALL_EXPR_FN lookup.
25625
25626 2009-01-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
25627
25628         * config/picochip/picochip.c (picochip_override_options): Revert
25629         CFI asm flag disable commited previously.
25630
25631 2009-01-15  Sebastian Pop  <sebastian.pop@amd.com>
25632             Tobias Grosser  <tobi.grosser@amd.com>
25633             Jan Sjodin  <jan.sjodin@amd.com>
25634
25635         * graphite.c (scan_tree_for_params): On substractions negate
25636         all the coefficients of the term.
25637         (clast_to_gcc_expression_red): New.  Handle reduction expressions
25638         of more than two operands.
25639         (clast_to_gcc_expression): Call clast_to_gcc_expression_red.
25640         (get_vdef_before_scop): Handle also the case of default definitions.
25641
25642 2009-01-15  Richard Sandiford  <rdsandiford@googlemail.com>
25643
25644         * caller-save.c (add_used_regs_1, add_used_regs): New functions.
25645         (insert_one_insn): Use them instead of REG_DEAD and REG_INC notes.
25646         Also use them when walking CALL_INSN_FUNCTION_USAGE.
25647
25648 2009-01-15  H.J. Lu  <hongjiu.lu@intel.com>
25649             Joey Ye  <joey.ye@intel.com>
25650
25651         PR middle-end/37843
25652         * cfgexpand.c (expand_stack_alignment): Don't update stack
25653         boundary nor check incoming stack boundary here.
25654         (gimple_expand_cfg): Update stack boundary and check incoming
25655         stack boundary here.
25656
25657 2009-01-15  Kenneth Zadeck  <zadeck@naturalbridge.com>
25658
25659         * dce.c (find_call_stack_args, delete_unmarked_insns): Fixed comments.
25660
25661 2009-01-14  Jakub Jelinek  <jakub@redhat.com>
25662
25663         PR rtl-optimization/38245
25664         * calls.c (expand_call): Add stack arguments to
25665         CALL_INSN_FUNCTION_USAGE even for pure calls (when
25666         ACCUMULATE_OUTGOING_ARGS) and even for args partially passed
25667         in regs and partially in memory or BLKmode arguments.
25668         (emit_library_call_value_1): Add stack arguments to
25669         CALL_INSN_FUNCTION_USAGE even for pure calls (when
25670         ACCUMULATE_OUTGOING_ARGS).
25671         * dce.c: Include tm_p.h.
25672         (find_call_stack_args): New function.
25673         (deletable_insn_p): Call it for CALL_P insns.  Add ARG_STORES
25674         argument.
25675         (mark_insn): Call find_call_stack_args for CALL_Ps.
25676         (prescan_insns_for_dce): Walk insns backwards in bb rather than
25677         forwards.  Allocate and free arg_stores bitmap if needed, pass it
25678         down to deletable_insn_p, don't mark stores set in arg_stores
25679         bitmap, clear the bitmap at the beginning of each bb.
25680         * Makefile.in (dce.o): Depend on $(TM_P_H).
25681
25682 2009-01-14  Michael Meissner  <gnu@the-meissners.org>
25683
25684         PR target/22599
25685         * config/i386/i386.c (print_operand): Add tests for 'D', 'C', 'F', 'f'
25686         to make sure the insn is a conditional test (bug 22599).  Reformat a
25687         few long lines.
25688
25689 2009-01-14  Sebastian Pop  <sebastian.pop@amd.com>
25690
25691         PR middle-end/38431
25692         * graphite.c (get_vdef_before_scop, scop_adjust_vphi): New.
25693         (scop_adjust_phis_for_liveouts): Call scop_adjust_vphi.
25694         (gloog): Do not call cleanup_tree_cfg.
25695         (graphite_transform_loops): Call cleanup_tree_cfg after all
25696         scops have been code generated.
25697
25698 2009-01-14  Basile Starynkevitch  <basile@starynkevitch.net>
25699         * doc/gty.texi (Invoking the garbage collector): Added new node
25700         and section documenting ggc_collect.
25701
25702 2009-01-14  Richard Guenther  <rguenther@suse.de>
25703
25704         PR tree-optimization/38826
25705         PR middle-end/38477
25706         * tree-ssa-structalias.c (emit_alias_warning): Emit the pointer
25707         initialization notes only if we actually emitted a warning.
25708         (intra_create_variable_infos): Add constraints for a result decl
25709         that is passed by hidden reference.
25710         (build_pred_graph): Mark all related variables non-direct on
25711         address-taking.
25712
25713 2009-01-14  Nick Clifton  <nickc@redhat.com>
25714
25715         * ira-conflicts.c: Include addresses.h for the definition of
25716         base_reg_class.
25717         (ira_build_conflicts): Use base_reg_class instead of BASE_REG_CLASS.
25718         * Makefile.in: Add a dependency of ira-conflicts.o on addresses.h.
25719
25720 2009-01-13  Vladimir Makarov  <vmakarov@redhat.com>
25721
25722         PR target/38811
25723         * Makefile.in (ira-lives.o): Add except.h.
25724
25725         * ira-lives.c: Include except.h.
25726         (process_bb_node_lives): Process can_throw_internal.
25727
25728 2009-01-13  Jakub Jelinek  <jakub@redhat.com>
25729
25730         PR rtl-optimization/38774
25731         * combine.c (simplify_set): When undoing cc_use change, don't do
25732         PUT_CODE on the newly created comparison, but instead put back the
25733         old comparison.
25734
25735 2009-01-13  Joseph Myers  <joseph@codesourcery.com>
25736
25737         * doc/invoke.texi (ARM Options): Update lists of -mcpu and -march
25738         values.  Remove duplicate arm8 entry.
25739
25740 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
25741
25742         PR tree-optimization/38786
25743         * graphite.c (expand_scalar_variables_ssa_name): New, outlined from
25744         the SSA_NAME case of expand_scalar_variables_expr.
25745         Set the type of an expression to the type of its assign statement.
25746         (expand_scalar_variables_expr): Also gather the scalar computation
25747         used to index the memory access.  Do not pass loop_p.
25748         Fix comment.  Stop recursion on tcc_constant or tcc_declaration.
25749         (expand_scalar_variables_stmt): Pass to expand_scalar_variables_expr
25750         the gimple_stmt_iterator where it inserts new code.
25751         Do not pass loop_p.
25752         (copy_bb_and_scalar_dependences): Do not pass loop_p.
25753         (translate_clast): Update call to copy_bb_and_scalar_dependences.
25754
25755 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
25756
25757         * graphite.h (debug_value): Removed.
25758         * graphite.c (debug_value): Removed.
25759
25760 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
25761
25762         * config/arm/arm.c (output_move_double): Don't synthesize thumb-2
25763         ldrd/strd with two 32-bit instructions.
25764
25765 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
25766
25767         * config/arm/arm.c (struct processors): Pass for speed down into
25768         cost helper functions.
25769         (const_ok_for_op): Handle COMPARE and inequality nodes.
25770         (arm_rtx_costs_1): Rewrite.
25771         (arm_size_rtx_costs): Update prototype.
25772         (arm_rtx_costs): Pass speed down to helper functions.
25773         (arm_slowmul_rtx_costs): Rework cost calculations.
25774         (arm_fastmul_rtx_costs, arm_xscale_rtx_costs): Likewise.
25775         (arm_9e_rtx_costs): Likewise.
25776
25777 2009-01-13  Uros Bizjak  <ubizjak@gmail.com>
25778
25779         * config/alpha/alpha.c (alpha_legitimate_address_p): Explicit
25780         relocations of local symbols wider than UNITS_PER_WORD are not valid.
25781         (alpha_legitimize_address): Do not split local symbols wider than
25782         UNITS_PER_WORD into HIGH/LO_SUM parts.
25783
25784 2009-01-13  Danny Smith  <dannysmith@users.sourceforge.net>
25785
25786         PR bootstrap/38580
25787         * gcc.c (process_command): Replace call to execvp with calls
25788         to pex_one and exit.
25789
25790 2009-01-03  Anatoly Sokolov  <aesok@post.ru>
25791
25792         PR target/29141
25793         * config/avr/t-avr (LIB1ASMFUNCS): Add _tablejump_elpm.
25794         * config/avr/libgcc.S (__do_global_ctors, __do_global_dtors): Add
25795         variant for devices with 3-byte PC.
25796         (__tablejump_elpm__): New.
25797
25798 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
25799
25800         PR c/32041
25801         * c-parser.c (c_parser_postfix_expression): Allow `->' in
25802         offsetof member-designator, handle it as `[0].'.
25803
25804 2009-01-12  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
25805
25806         * pa.c (pa_asm_output_mi_thunk): Use pc-relative branch to thunk
25807         function when not using named sections on targets with named sections
25808         if branch distance is less than 262132.
25809
25810 2009-01-12  Richard Earnshaw  <rearnsha@arm.com>
25811
25812         * combine.c (combine_instructions):  Recompute
25813         optimize_this_for_speed_p  for each BB in the main combine loop.
25814
25815 2009-01-12  Tomas Bily  <tbily@suse.cz>
25816
25817         PR middlend/38385
25818         * tree-loop-distribution.c (prop_phis): New function.
25819         (generate_builtin): Call prop_phis.
25820         * testsuite/gcc.dg/tree-ssa/pr38385.c: New file.
25821
25822 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
25823
25824         PR tree-optimization/38807
25825         * tree-ssa-reassoc.c (remove_visited_stmt_chain): Don't look at
25826         gimple_visited_p unless stmt is GIMPLE_ASSIGN.
25827
25828 2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
25829
25830         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
25831         subreg of op0 to the original op0.
25832
25833 2009-01-11  Laurent GUERBY  <laurent@guerby.net>
25834
25835         * doc/sourcebuild.texi (Source Tree): Move up intl and fixinc.
25836
25837 2009-01-11  Markus Schoepflin  <markus.schoepflin@comsoft.de>
25838
25839         PR debug/7055
25840         * mips-tfile.c (parse_def): Fix parsing of def strings
25841         starting with digits.
25842
25843 2009-01-10  Jakub Jelinek  <jakub@redhat.com>
25844
25845         PR target/38695
25846         * config/arm/arm.c (arm_is_long_call_p): Don't call
25847         arm_function_in_section_p if decl isn't a FUNCTION_DECL.
25848
25849 2009-01-09  Steven Bosscher  <steven@gcc.gnu.org>
25850
25851         * regrename.c (regrename_optimize): Fix dumping.
25852         (find_oldest_value_reg): Preserve REG_POINTER.
25853         (copy_hardreg_forward_1): Likewise.
25854
25855 2009-01-09  Diego Novillo  <dnovillo@google.com>
25856
25857         * gimple.h (struct gimple_statement_base) <uid>: Document
25858         the restrictions on its use.
25859         (gimple_uid): Tidy.
25860         (gimple_set_uid): Tidy.
25861
25862 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
25863
25864         * config/i386/i386.c (ix86_expand_movmem, ix86_expand_setmem): Add
25865         zero guard even if align_bytes != 0 and count is smaller than
25866         size_needed.
25867
25868 2009-01-09  Vladimir Makarov  <vmakarov@redhat.com>
25869
25870         PR rtl-optimization/38495
25871         * ira-emit.c (print_move_list, ira_debug_move_list): New functions.
25872         (add_range_and_copies_from_move_list): Print all added ranges.
25873         Add ranges to memory optimized destination.
25874
25875 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
25876
25877         PR target/38686
25878         PR target/38708
25879         * config/i386/i386.c (override_options): Reject
25880         -mstringop-strategy=rep_8byte with -m32.
25881         (ix86_expand_movmem): For size_needed == 1 set epilogue_size_needed
25882         to 1.  Do count comparison against epilogue_size_needed at compile
25883         time even when count_exp was constant forced into register.  For
25884         size_needed don't jump to epilogue, instead just avoid aligning
25885         and invoke the body algorithm.  If need_zero_guard, add zero guard
25886         even if count is non-zero, but smaller than size_needed + number of
25887         bytes that could be stored for alignment.
25888         (ix86_expand_setmem): For size_needed == 1 set epilogue_size_needed
25889         to 1.  If need_zero_guard, add zero guard even if count is non-zero,
25890         but smaller than size_needed + number of bytes that could be stored
25891         for alignment.  Compare size_needed with epilogue_size_needed instead
25892         of desired_align - align, don't adjust size_needed, pass
25893         epilogue_size_needed to the epilogue expanders.
25894
25895         PR c/35742
25896         * c-pretty-print.c (pp_c_expression): Handle GOTO_EXPR like BIND_EXPR.
25897
25898 2009-01-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
25899
25900         * pa.c (last_address): Change to unsigned.
25901         (update_total_code_bytes): Change argument to unsigned.  Don't
25902         check if insn addresses are set.
25903         (pa_output_function_epilogue): Set last_address to UINT_MAX if insn
25904         addresses are not set.
25905         (pa_asm_output_mi_thunk): Handle wrap when updating last_address.
25906
25907 2009-01-09  Nick Clifton  <nickc@redhat.com>
25908
25909         * config/sh/symbian.c: Replace uses of DECL_INLINE with
25910         DECL_DECLARED_INLINE_P.
25911
25912 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
25913
25914         PR middle-end/38347
25915         * dojump.c (do_jump_by_parts_zero_rtx): Use mode instead of
25916         GET_MODE (op0) in operand_subword_force calls.
25917
25918         PR middle-end/38771
25919         * fold-const.c (fold_unary): For COMPOUND_EXPR and COND_EXPR,
25920         fold_convert arg0 operands to TREE_TYPE (op0) first.
25921
25922 2009-01-08  Vladimir Makarov  <vmakarov@redhat.com>
25923
25924         * params.def (ira-max-conflict-table-size): Decrease default value
25925         to 1000.
25926
25927 2009-01-08  Jakub Jelinek  <jakub@redhat.com>
25928
25929         PR tree-optimization/37031
25930         * lambda-code.c (lambda_collect_parameters): Call pointer_set_destroy
25931         on parameter_set.
25932         (build_access_matrix): Reserve correct size for AM_MATRIX vector,
25933         allocate it using gc instead of heap, use VEC_quick_push instead of
25934         VEC_safe_push.
25935         * graphite.c (build_access_matrix): Allocate AM_MATRIX vector using gc
25936         instead of heap, use VEC_quick_push instead of VEC_safe_push.
25937         * tree-data-ref.h (struct access_matrix): Change matrix to gc
25938         allocated vector from heap allocated.
25939         * lambda.h: Add DEF_VEC_ALLOC_P for gc allocated lambda_vector.
25940         * tree-loop-linear.c (linear_transform_loops): Allocate nest
25941         vector only after perfect_loop_nest_depth call.
25942
25943 2009-01-08  Sebastian Pop  <sebastian.pop@amd.com>
25944             Jan Sjodin  <jan.sjodin@amd.com>
25945
25946         PR tree-optimization/38559
25947         * graphite.c (debug_value, copy_constraint,
25948         swap_constraint_variables, scale_constraint_variable, ): New.
25949         (get_lower_bound, get_upper_bound): Removed.
25950         (graphite_trans_bb_strip_mine): Clean up this code that works
25951         only for constant number of iterations.  Fully copy upper and
25952         lower bound constraints, not only the constant part of them.
25953         * graphite.h (debug_value): Declared.
25954
25955 2009-01-08  Ira Rosen  <irar@il.ibm.com>
25956
25957         PR tree-optimization/37194
25958         * tree-vect-transform.c (vect_estimate_min_profitable_iters):
25959         Don't add the cost of cost model guard in prologue to scalar
25960         outside cost in case of known number of iterations.
25961
25962 2009-01-07  Nathan Froyd  <froydnj@codesourcery.com>
25963             Alan Modra  <amodra@bigpond.net.au>
25964
25965         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check for
25966         non-word-aligned REG+CONST addressing.
25967
25968 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
25969
25970         PR target/38706
25971         * config/alpha/alpha.c (alpha_end_function): For TARGET_ABI_OSF, call
25972         free_after_compilation when outputting a thunk.
25973         (alpha_output_mi_thunk_osf): Assert that we are processing a thunk.
25974         Do not call free_after_compilation here.
25975
25976 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
25977
25978         * config/i386/i386.c (ix86_target_string): Use ARRAY_SIZE.
25979         (ix86_valid_target_attribute_inner_p): Ditto.
25980
25981 2009-01-07  Jan Sjodin  <jan.sjodin@amd.com>
25982
25983         PR tree-optimization/38492
25984         PR tree-optimization/38498
25985         * tree-check.c (operator_is_linear, scev_is_linear_expression): New.
25986         * tree-chrec.h (scev_is_linear_expression): Declared.
25987         * graphite.c (graphite_cannot_represent_loop_niter): New.
25988         (scopdet_basic_block_info): Call graphite_cannot_represent_loop_niter.
25989         (graphite_loop_normal_form): Use gcc_assert.
25990         (scan_tree_for_params): Use CASE_CONVERT.
25991         (phi_node_is_iv, bb_contains_non_iv_scalar_phi_nodes): New.
25992         (build_scop_conditions_1): Call bb_contains_non_iv_scalar_phi_nodes.
25993         Use gcc_assert.  Discard scops that contain unhandled cases.
25994         (build_scop_conditions): Return a boolean status for unhandled cases.
25995         (strip_mine_profitable_p): Print the loop number, not its depth.
25996         (is_interchange_valid): Pass the depth of the loop nest, don't
25997         recompute it wrongly.
25998         (graphite_trans_bb_block): Same.
25999         (graphite_trans_bb_block): Print tentative of loop blocking.
26000         (graphite_trans_scop_block): Do not print that the loop has been
26001         blocked.
26002         (graphite_transform_loops): Do not handle scops that contain condition
26003         scalar phi nodes.
26004
26005 2009-01-07  H.J. Lu  <hongjiu.lu@intel.com>
26006
26007         AVX Programming Reference (December, 2008)
26008         * config/i386/avxintrin.h (_mm256_stream_si256): New.
26009         (_mm256_stream_pd): Likewise.
26010         (_mm256_stream_ps): Likewise.
26011
26012         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVNTDQ256,
26013         IX86_BUILTIN_MOVNTPD256 and IX86_BUILTIN_MOVNTPS256.
26014         (ix86_special_builtin_type): Add VOID_FTYPE_PV4DI_V4DI.
26015         (bdesc_special_args): Add __builtin_ia32_movntdq256,
26016         __builtin_ia32_movntpd256 and __builtin_ia32_movntps256.
26017         (ix86_init_mmx_sse_builtins): Handle VOID_FTYPE_PV4DI_V4DI.
26018         (ix86_expand_special_args_builtin): Likewise.
26019
26020         * config/i386/sse.md (AVXMODEDI): New.
26021         (avx_movnt<mode>): Likewise.
26022         (avx_movnt<mode>): Likewise.
26023         (<sse>_movnt<mode>): Remove AVX support.
26024         (sse2_movntv2di): Likewise.
26025
26026 2009-01-07  Richard Guenther  <rguenther@suse.de>
26027
26028         PR middle-end/38751
26029         * fold-const.c (extract_muldiv): Remove obsolete comment.
26030         (fold_plusminus_mult_expr): Undo MINUS_EXPR
26031         to PLUS_EXPR canonicalization for the canonicalization.
26032
26033 2009-01-07  Gerald Pfeifer  <gerald@pfeifer.com>
26034
26035         * doc/install.texi (alpha*-dec-osf*): Remove note on 32-bit
26036         hosted cross-compilers generating less efficient code.
26037
26038 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
26039
26040         * function.h (rtl_data): Add a dbr_scheduled_p field.
26041         * reorg.c (dbr_schedule): Set it.
26042         (gate_handle_delay_slots): Check it.
26043         * config/mips/mips.c (mips_base_delayed_branch): Delete.
26044         (mips_reorg): Check flag_delayed_branch instead of
26045         mips_base_delayed_branch.
26046         (mips_override_options): Don't set mips_base_delayed_branch
26047         or flag_delayed_branch.
26048
26049 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
26050
26051         PR rtl-optimization/38426.
26052         * ira.c (ira): Set current_function_is_leaf earlier.
26053
26054 2009-01-06  Jakub Jelinek  <jakub@redhat.com>
26055
26056         PR rtl-optimization/38722
26057         * combine.c (try_combine): Don't modify PATTERN (i3) and notes
26058         too early, only set a flag and modify after last possible
26059         undo_all point.
26060
26061 2009-01-06  Janis Johnson  <janis187@us.ibm.com>
26062
26063         PR c/34252
26064         * ginclude/float.h: Rename DECnn_DEN to DECnn_SUBNORMAL_MIN.
26065         * real.c (decimal_single_format): Correct values of emin and emax.
26066         (decimal_double_format): Ditto.
26067         (decimal_quad_format): Ditto.
26068         * c-cppbuiltin.c (builtin_define_decimal_float_constants): Adjust
26069         computation of DECnn_MIN and DECnn_MAX for corrected values of
26070         emin and emax.  Define __DECnn_SUBNORMAL_MIN__ instead of
26071         __DECnn_MIN__, and adjust its computation for the corrected value
26072         of emin.
26073
26074 2009-01-06  Jan Hubicka  <jh@suse.cz>
26075
26076         PR target/38744
26077         * config/i386/i386.c (ix86_expand_call): Use ARRAY_SIZE.
26078
26079 2009-01-06  Gerald Pfeifer  <gerald@pfeifer.com>
26080
26081         * doc/contrib.texi (Contributors): Slightly adjust the end note.
26082         Add Robert Clark to the list of testers.
26083
26084 2009-01-06  Jan Hubicka  <jh@suse.cz>
26085             Kai Tietz  <kai.tietz@onevision.com>
26086
26087         * config/i386/i386.md (*msabi_syvabi): Add SSE regs clobbers.
26088         * config/i386/i386.c (ix86_expand_call): Add clobbers.
26089
26090 2009-01-06  Jan Hubicka  <jh@suse.cz>
26091             Kai Tietz  <kai.tietz@onevision.com>
26092
26093         * config/i386/i386.h (CONDITIONAL_CALL_USAGE): SSE regs are not used
26094         for w64 ABI.
26095         * config/i386/i386.c (struct ix86_frame): Add padding0 and nsseregs.
26096         (ix86_nsaved_regs): Count only general purpose regs.
26097         (ix86_nsaved_sseregs): New.
26098         (ix86_compute_frame_layout): Update nsseregs; set preferred alignment
26099         to 16 for w64; compute padding and size of sse reg save area.
26100         (ix86_emit_save_regs, ix86_emit_save_regs_using_mov): Save only
26101         general purpose regs.
26102         (ix86_emit_save_sse_regs_using_mov): New.
26103         (ix86_expand_prologue): Save SSE regs if needed.
26104         (ix86_emit_restore_regs_using_mov): Use only general purpose regs.
26105         (ix86_emit_restore_sse_regs_using_mov): New.
26106         (ix86_expand_epilogue): Save SSE regs if needed.
26107
26108 2009-01-06  Jan Hubicka  <jh@suse.cz>
26109             Kai Tietz  <kai.tietz@onevision.com>
26110
26111         * config/i386/i386.h (ACCUMULATE_OUTGOING_ARGS): Enable for MSABI
26112         * config/i386/i386.c (init_cumulative_args): Disallow calls of MSABI
26113         functions when accumulate outgoing args is off.
26114
26115 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
26116
26117         PR bootstrap/38742
26118         * ira-color.c (ira_reuse_stack_slot): Check ENABLE_IRA_CHECKING
26119         before using pseudos_have_intersected_live_ranges_p.
26120
26121         * ira-int.h (ira_assert): Always define.
26122
26123 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
26124
26125         AVX Programming Reference (December, 2008)
26126         * config/i386/avxintrin.h (_mm_permute2_pd): Removed.
26127         (_mm256_permute2_pd): Likewise.
26128         (_mm_permute2_ps): Likewise.
26129         (_mm256_permute2_ps): Likewise.
26130         * config/i386/i386.md (UNSPEC_VPERMIL2): Likewise.
26131         * config/i386/sse.md (avx_vpermil2<mode>3): Likewise.
26132
26133         * config/i386/i386.c (ix86_builtins): Remove
26134         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
26135         IX86_BUILTIN_VPERMIL2PD256 and IX86_BUILTIN_VPERMIL2PS256.
26136         (ix86_builtin_type): Remove V8SF_FTYPE_V8SF_V8SF_V8SI_INT,
26137         V4DF_FTYPE_V4DF_V4DF_V4DI_INT, V4SF_FTYPE_V4SF_V4SF_V4SI_INT
26138         and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
26139         (bdesc_args): Remove __builtin_ia32_vpermil2pd,
26140         __builtin_ia32_vpermil2ps, __builtin_ia32_vpermil2pd256 and
26141         __builtin_ia32_vpermil2ps256.
26142         (ix86_init_mmx_sse_builtins): Updated.
26143         (ix86_expand_args_builtin): Likewise.
26144
26145 2009-01-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
26146
26147         * pa.c (output_call): Relocate non-jump insns in the delay slot of
26148         long absolute calls when generating PA 2.0 code.
26149
26150 2009-01-05  Vladimir Makarov  <vmakarov@redhat.com>
26151
26152         PR rtl-optimization/38583
26153         * params.h (IRA_MAX_CONFLICT_TABLE_SIZE): New macro.
26154
26155         * params.def (ira-max-conflict-table-size): New.
26156
26157         * doc/invoke.texi (ira-max-conflict-table-size): Decribe.
26158
26159         * ira.h (ira_conflicts_p): New external definition.
26160
26161         * ira-conflicts.c (build_conflict_bit_table): Do not build too big
26162         table.  Report this.  Return result of building.
26163         (ira_build_conflicts): Use ira_conflicts_p.  Check result of
26164         building conflict table.
26165
26166         * ira-color.c (fast_allocation): Use num instead of ira_allocnos_num.
26167         (ira_color): Use ira_conflicts_p.
26168
26169         * global.c: Include ira.h.
26170         (pseudo_for_reload_consideration_p, build_insn_chain): Use
26171         ira_conflicts_p.
26172
26173         * Makefile.in (global.o): Add ira.h.
26174
26175         * ira-build.c (mark_all_loops_for_removal,
26176         propagate_some_info_from_allocno): New.
26177         (remove_unnecessary_allocnos): Call
26178         propagate_some_info_from_allocno.
26179         (remove_low_level_allocnos): New.
26180         (remove_unnecessary_regions): Add parameter.  Call
26181         mark_all_loops_for_removal and remove_low_level_allocnos.  Pass
26182         parameter to remove_unnecessary_regions.
26183         (ira_build): Remove all regions but root if the conflict table was
26184         not built.  Update conflict hard regs for allocnos crossing calls.
26185
26186         * ira.c (ira_conflicts_p): New global.
26187         (ira): Define and use ira_conflicts_p.
26188
26189         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
26190         count_spilled_pseudo, find_reg, alter_reg, finish_spills,
26191         emit_input_reload_insns, delete_output_reload): Use ira_conflicts_p.
26192
26193 2009-01-06  Ben Elliston  <bje@au.ibm.com>
26194
26195         * gengtype-lex.l (YY_NO_INPUT): Define.
26196
26197 2009-01-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
26198
26199         PR c/34911
26200         * c-common.c (handle_vector_size_attribute): Also reject
26201         BOOLEAN_TYPE types.
26202
26203 2009-01-05  Sebastian Pop  <sebastian.pop@amd.com>
26204
26205         PR tree-optimization/38492
26206         * graphite.c (rename_map_elt, debug_rename_elt,
26207         debug_rename_map_1, debug_rename_map, new_rename_map_elt,
26208         rename_map_elt_info, eq_rename_map_elts,
26209         get_new_name_from_old_name, bb_in_sese_p): Moved around.
26210         (sese_find_uses_to_rename_use): Renamed sese_build_livein_liveouts_use.
26211         (sese_find_uses_to_rename_bb): Renamed sese_build_livein_liveouts_bb.
26212         (sese_build_livein_liveouts): New.
26213         (new_sese, free_sese): New.
26214         (new_scop): Call new_sese.
26215         (free_scop): Call free_sese.
26216         (rename_variables_from_edge, rename_phis_end_scop): Removed.
26217         (register_old_new_names): Renamed register_old_and_new_names.
26218         (register_scop_liveout_renames, add_loop_exit_phis,
26219         insert_loop_close_phis, struct igp,
26220         default_liveout_before_guard, add_guard_exit_phis,
26221         insert_guard_phis, copy_renames): New.
26222         (translate_clast): Call insert_loop_close_phis and insert_guard_phis.
26223         (sese_add_exit_phis_edge): Renamed scop_add_exit_phis_edge.
26224         (rewrite_into_sese_closed_ssa): Renamed scop_insert_phis_for_liveouts.
26225         (scop_adjust_phis_for_liveouts): New.
26226         (gloog): Call scop_adjust_phis_for_liveouts.
26227
26228         * graphite.h (struct sese): Documented.  Added fields liveout,
26229         num_ver and livein.
26230         (SESE_LIVEOUT, SESE_LIVEIN, SESE_LIVEIN_VER, SESE_NUM_VER): New.
26231         (new_sese, free_sese, sese_build_livein_liveouts): Declared.
26232         (struct scop): Added field liveout_renames.
26233         (SCOP_LIVEOUT_RENAMES): New.
26234
26235 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
26236
26237         PR tree-optimization/38510
26238         * graphite.c (recompute_all_dominators): Call mark_irreducible_loops.
26239         (translate_clast): Call recompute_all_dominators before
26240         graphite_verify.
26241         (gloog): Call recompute_all_dominators before graphite_verify.
26242
26243 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
26244             Jan Sjodin  <jan.sjodin@amd.com>
26245
26246         PR tree-optimization/38500
26247         * graphite.c (create_sese_edges): Call fix_loop_structure after
26248         splitting blocks.
26249
26250 2009-01-05  Joel Sherrill  <joel.sherrill@oarcorp.com>
26251
26252         * config.gcc: Add m32r*-*-rtems*.
26253         * config/m32r/rtems.h: New file.
26254
26255 2009-01-05  Ben Elliston  <bje@au.ibm.com>
26256
26257         * Makefile.in (.po.gmo): Use mkinstalldirs, not test -d || mkdir.
26258         (.po.pox): Likewise.
26259         (po/gcc.pot): Likewise.
26260
26261 2009-01-04  David S. Miller  <davem@davemloft.net>
26262
26263         * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED_RTX): Delete.
26264         (STARTING_FRAME_OFFSET): Always set to zero.
26265
26266 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
26267
26268         * tree.def (LSHIFT_EXPR, RSHIFT_EXPR): Add commentary.
26269         * tree-cfg.c (verify_gimple_assign_binary): Allow shifts of
26270         fixed-point types, and vectors of the same.
26271
26272 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
26273
26274         * config/mips/sync.md (*mb_barrier): Rename to...
26275         (*memory_barrier): ...this.
26276
26277 2009-01-04  Jonathan Wakely  <jwakely.gcc@gmail.com>
26278
26279         * doc/extend.texi (Function Attributes): Move @cindex after @item
26280         for 'artificial' and 'flatten'. Fix grammar for 'externally_visible'
26281         and put in alphabetical order. Fix 'target' name and put in order.
26282         * doc/invoke.texi (-Wstrict-null-sentinel, -fipa-matrix-reorg): Fix
26283         typos.
26284
26285 2009-01-04  Uros Bizjak  <ubizjak@gmail.com>
26286
26287         * config/s390/s390.md (UNSPEC_MB): Rename from UNSPECV_MB.
26288         (memory_barrier): Expand as unspec instead of unspec_volatile.
26289         Remove mem:BLK from insn operands.  Use Pmode scratch register.
26290         (*memory_barrier): Define as unspec instead of unspec_volatile.
26291         Use (match_dup 0) as input operand.
26292
26293         * config/sparc/sparc.md (UNSPEC_MEMBAR): Rename from UNSPECV_MEMBAR.
26294         * config/sparc/sync.md (memory_barrier): Expand as unspec instead of
26295         unspec_volatile.  Remove mem:BLK from insn operands.  Use Pmode
26296         scratch register.  Remove operand 1.
26297         (*stbar): Define as unspec instead of unspec_volatile.
26298         Use (match_dup 0) as input operand, remove (const_int 8).
26299         (*membar): Define as unspec instead of unspec_volatile.
26300         Use (match_dup 0) as input operand, remove input operand 2.
26301
26302         * config/xtensa/xtensa.md (UNSPEC_MEMW): Rename from UNSPECV_MEMW.
26303         (memory_barrier): Expand as unspec instead of unspec_volatile.
26304         Remove mem:BLK from insn operands.  Use Pmode scratch register.
26305         (*memory_barrier): Define as unspec instead of unspec_volatile.
26306         Use (match_dup 0) as input operand.
26307
26308         * config/ia64/sync.md (memory_barrier): Redefine as expander pattern.
26309         Remove mem:BLK from insn operands.  Use Pmode scratch register.
26310         Set volatile flag on operand 0.
26311         (*memory_barrier): New insn pattern.
26312
26313         * config/rs6000/sync.md (memory_barrier): Remove mem:BLK from
26314         insn operands.
26315         (*memory_barrier): Use (match_dup 0) as input operand.
26316
26317         * config/mips/sync.md (memory_barrier): Redefine as expander pattern.
26318         Remove mem:BLK from insn operands.  Use Pmode scratch register.
26319         Set volatile flag on operand 0.
26320         (*mb_internal): New insn pattern.
26321
26322         * config/alpha/sync.md (*memory_barrier): Rename from *mb_internal.
26323
26324 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
26325
26326         PR middle-end/38586
26327         * function.c (struct temp_slot): Move to the section of the file
26328         that deals with temp slots.  Remove field 'address'.
26329         (temp_slot_address_table): New hash table of address -> temp slot.
26330         (struct temp_slot_address_entry): New struct, items for the table.
26331         (temp_slot_address_compute_hash, temp_slot_address_hash,
26332         temp_slot_address_eq, insert_temp_slot_address): Support functions
26333         for the new table.
26334         (find_temp_slot_from_address): Rewrite to use the new hash table.
26335         (remove_unused_temp_slot_addresses): Remove addresses of temp
26336         slots that have been made available.
26337         (remove_unused_temp_slot_addresses_1): Call-back for htab_traverse,
26338         worker function for remove_unused_temp_slot_addresses.
26339         (assign_stack_temp_for_type): Don't clear the temp slot address list.
26340         Add the temp slot address to the address -> temp slot map.
26341         (update_temp_slot_address): Update via insert_temp_slot_address.
26342         (free_temp_slots): Call remove_unused_temp_slot_addresses.
26343         (pop_temp_slots): Likewise.
26344         (init_temp_slots): Allocate the address -> temp slot map, or empty
26345         the map if it is already allocated.
26346         (prepare_function_start): Initialize temp slot processing.
26347
26348 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
26349
26350         PR middle-end/38584
26351         * cfgexpand.c (estimate_stack_frame_size): Simplify the estimate:
26352         Calculate the size of all stack vars assuming no packing of stack
26353         vars will happen, replacing a quadratic algorithm with a linear one.
26354
26355 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
26356
26357         PR target/38707
26358         * expmed.c (store_bit_field_1): Don't modify op0 if movstrict insn
26359         can't be used.
26360
26361 2009-01-03  Diego Novillo  <dnovillo@google.com>
26362
26363         * doc/contrib.texi: Update contributions.
26364
26365 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
26366
26367         PR c++/38705
26368         * builtins.c (fold_builtin_memory_op): Give up if either operand
26369         is volatile.  Set srctype or desttype to non-qualified version
26370         of the other type.
26371
26372         PR c/38700
26373         * builtins.c (fold_builtin_expect): Only check DECL_WEAK for VAR_DECLs
26374         and FUNCTION_DECLs.
26375
26376 2009-01-02  Kenneth Zadeck  <zadeck@naturalbridge.com>
26377
26378         PR rtl-optimization/35805
26379         * df-problems.c (df_lr_finalize): Add recursive call to resolve lr
26380         problem if fast dce is able to remove any instructions.
26381         * dce.c (dce_process_block): Fix dump message.
26382
26383 2009-01-02  Mark Mitchell  <mark@codesourcery.com>
26384
26385         PR 33649
26386         * tree-ssa-pre.c (compute_antic): Correct loop bounds.
26387
26388 2009-01-02  Jakub Jelinek  <jakub@redhat.com>
26389
26390         PR middle-end/38690
26391         * tree-flow.h (op_code_prio, op_prio): New prototypes.
26392         * tree-pretty-print.c (op_code_prio): New function.
26393         (op_prio): No longer static.  Use op_code_prio.
26394         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs):
26395         Use op_prio and op_code_prio to determine if () should be
26396         printed around operand(s) or not.
26397
26398         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs,
26399         dump_gimple_call, dump_gimple_switch, dump_gimple_cond,
26400         dump_gimple_label, dump_gimple_try, dump_symbols, dump_gimple_phi,
26401         dump_gimple_mem_ops, dump_bb_header, dump_bb_end, pp_cfg_jump): Use
26402         pp_character instead of pp_string for single letter printing.
26403
26404 2009-01-02  Richard Sandiford  <rdsandiford@googlemail.com>
26405
26406         * doc/extend.texi: Fix '#pragma GCC option' typo.
26407
26408 2009-01-02  Richard Guenther  <rguenther@suse.de>
26409
26410         * doc/install.texi (--enable-checking): Mention different
26411         default for stage1.
26412         (--enable-stage1-checking): Document.
26413
26414 2009-01-01  Andrew Pinski  <pinskia@gmail.com>
26415
26416         PR middle-end/30142
26417         * tree-cfg.c (verify_expr): Add INDIRECT_REF case.  Change MODIFY_EXPR
26418         case to be an error.
26419
26420 2009-01-02  Ben Elliston  <bje@au.ibm.com>
26421
26422         * config/fp-bit.h (pack_d): Constify argument.
26423         * config/fp-bit.c (makenan): Constify return type. Remove casts.
26424         (isnan): Constify argument.
26425         (isinf): Likewise.
26426         (iszero): Likewise.
26427         (pack_d): Likewise.
26428         (_fpadd_parts): Constify return type.
26429         (_fpmul_parts): Likewise.
26430         (_fpdiv_parts): Likewise.
26431
26432 2009-01-01  Jakub Jelinek  <jakub@redhat.com>
26433
26434         PR c/36489
26435         * c-typeck.c (add_pending_init): Add IMPLICIT argument.  Only
26436         warn about overwriting initializer with side-effects or
26437         -Woverride-init if !IMPLICIT.
26438         (output_init_element): Likewise.  Pass IMPLICIT down to
26439         add_pending_init.
26440         (process_init_element): Add IMPLICIT argument.  Pass it down
26441         to output_init_element.
26442         (push_init_element, pop_init_level, set_designator): Adjust
26443         process_init_element callers.
26444         (set_nonincremental_init, set_nonincremental_init_from_string):
26445         Adjust add_pending_init callers.
26446         (output_pending_init_elements): Adjust output_init_element callers.
26447         * c-tree.h (process_init_element): Adjust prototype.
26448         * c-parser.c (c_parser_initelt, c_parser_initval): Adjust
26449         process_init_element callers.
26450
26451 \f
26452 Copyright (C) 2009 Free Software Foundation, Inc.
26453
26454 Copying and distribution of this file, with or without modification,
26455 are permitted in any medium without royalty provided the copyright
26456 notice and this notice are preserved.