OSDN Git Service

* config/rs6000/rs6000.h (FUNCTION_VALUE): Remove macro.
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-09-24  Anatoly Sokolov  <aesok@post.ru>
2
3         * config/rs6000/rs6000.h (FUNCTION_VALUE): Remove macro.
4         * config/rs6000/rs6000-protos.h (rs6000_function_value): Remove.
5         * config/rs6000/rs6000.c (rs6000_function_value): Make static, add
6         'outgoing' argument.
7         (TARGET_FUNCTION_VALUE): Define.
8
9 2009-09-24  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
10
11         * config/darwin.h (DWARF2_DEBUGGING_INFO): Define as 1.
12
13 2009-09-24  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
14
15         PR bootstrap/41405
16         * common.opt: Initialize dwarf_strict to -1.
17         * toplev.c (process_options): Catch unset dwarf_strict
18         and set to 0 for all targets not overriding.
19         * config/darwin.c (darwin_override_options): Catch unset
20         dwarf_strict and override to 1.
21
22 2009-09-24  Jeff Law  <law@redhat.com>
23
24         * tree-into-ssa.c (rewrite_into_ssa): Free interesting_blocks. 
25
26 2009-09-24  Richard Guenther  <rguenther@suse.de>
27
28         PR tree-optimization/36143
29         PR tree-optimization/38747
30         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Only
31         create VIEW_CONVERT_EXPRs for TBAA compatible accesses.
32
33 2009-09-24  Jakub Jelinek  <jakub@redhat.com>
34
35         PR bootstrap/41457
36         * dwarf2out.c (add_const_value_attribute): For HIGH and CONST_FIXED,
37         return false instead of gcc_unreachable ().  For CONST return the
38         value returned by recursive call instead of always returning true.
39         (tree_add_const_value_attribute): Return the value returned by
40         add_const_value_attribute instead of always returning true if rtl
41         is non-NULL.
42
43 2009-09-23  Justin Seyster  <jrseys@gmail.com>
44
45         * Makefile.in (PLUGIN_HEADERS): Include real.h.
46
47 2009-09-24  Jakub Jelinek  <jakub@redhat.com>
48
49         * cgraphunit.c (cgraph_lower_function): Revert last change.
50         * targhooks.c (default_static_chain): Use !DECL_STATIC_CHAIN
51         instead of DECL_NO_STATIC_CHAIN.
52         * tree-cfg.c (verify_gimple_call): Likewise.
53         * tree-nested.c (get_chain_decl, get_chain_field,
54         convert_tramp_reference_op, convert_gimple_call): Likewise.
55         (convert_all_function_calls): Likewise.  Always set or clear
56         DECL_STATIC_CHAIN initially, for !n->outer clear it.
57         (lower_nested_functions): Remove DECL_NO_STATIC_CHAIN checking code.
58         * c-parser.c (c_parser_declaration_or_fndef): Set DECL_STATIC_CHAIN
59         if nested.
60         * print-tree.c (print_node): Handle DECL_STATIC_CHAIN instead of
61         DECL_NO_STATIC_CHAIN.
62         * config/i386/i386.c (ix86_static_chain): Use !DECL_STATIC_CHAIN
63         instead of DECL_NO_STATIC_CHAIN.
64         (ix86_function_regparm, find_drap_reg): Likewise.  Don't test
65         decl_function_context.
66         * varasm.c (initializer_constant_valid_p): Likewise.
67         * tree.h (DECL_NO_STATIC_CHAIN): Renamed to ...
68         (DECL_STATIC_CHAIN): ... this.
69         * config/moxie/moxie.c (moxie_static_chain): Use !DECL_STATIC_CHAIN
70         instead of DECL_NO_STATIC_CHAIN.
71
72 2009-09-23  Basile Starynkevitch  <basile@starynkevitch.net>
73             Rafael Avila de Espindola  <espindola@google.com>
74
75         * gengtype.c (nb_plugin_files): Make it unsigned to match
76         num_gt_files. Adjust other variables to avoid warnings.
77         (main): Allocate an all zero lang_bitmap before each plugin file name
78         to match regular file names.
79
80 2009-09-23  Richard Henderson  <rth@redhat.com>
81
82         * doc/tm.texi (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Remove.
83         (TARGET_STATIC_CHAIN): Mention that this hook must be used for
84         static chain passed in memory.
85         * system.h (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Poison.
86         * targhooks.c (default_static_chain): Don't handle STATIC_CHAIN,
87         STATIC_CHAIN_INCOMING.  Issue a sorry if there's no
88         STATIC_CHAIN_REGNUM defined.
89
90         * config/picochip/picochip-protos.h: s/class/klass/.
91         * config/picochip/picochip.c (TARGET_STATIC_CHAIN): New.
92         (picochip_static_chain): New.
93         * config/picochip/picochip.h (STATIC_CHAIN): Remove.
94         (STATIC_CHAIN_INCOMING): Remove.
95
96         * config/xtensa/xtensa.c (TARGET_STATIC_CHAIN): New.
97         (xtensa_static_chain): New.
98         * config/xtensa/xtensa.h (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Remove.
99
100 2009-09-23  Anatoly Sokolov  <aesok@post.ru>
101
102         * config/pa/pa.h (FUNCTION_VALUE): Remove macro.
103         * config/pa/pa-protos.h (function_value): Remove.
104         * config/pa/pa.c (pa_function_value): Rename from function_value.
105         Make static, add 'outgoing' argument.
106         (TARGET_FUNCTION_VALUE): Define.
107
108 2009-09-23  Anatoly Sokolov  <aesok@post.ru>
109
110         * config/avr/avr.c (avr_regs_to_save): Use current_function_is_leaf
111         instead of cfun->machine->is_leaf.
112         * config/avr/avr.h (machine_function): Remove is_leaf field.
113
114 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
115
116         PR debug/41439
117         * dwarf2out.c (address_of_int_loc_descriptor): Don't emit
118         DW_OP_piece after DW_OP_stack_value, adjust size calculations
119         for it, when DW_OP_stack_value and DW_OP_implicit_value has
120         the same size, prefer DW_OP_stack_value.
121         (loc_descriptor, loc_list_for_address_of_addr_expr_of_indirect_ref,
122         loc_list_from_tree): Don't emit DW_OP_piece after DW_OP_stack_value.
123
124 2009-09-23  Alexandre Oliva  <aoliva@redhat.com>
125
126         PR debug/41353
127         * var-tracking.c (add_with_sets): Sort MO_VAL_LOC last among uses.
128
129 2009-09-23  Alexandre Oliva  <aoliva@redhat.com>
130
131         PR debug/41248
132         * cfgexpand.c (convert_debug_memory_address): New.
133         (expand_debug_expr): Convert base address and offset to the same
134         mode.  Use it to convert addresses to other modes.  Accept
135         ptr_mode addresses.
136
137 2009-09-23  Richard Guenther  <rguenther@suse.de>
138
139         * alias.c (ao_ref_from_mem): Correct for negative MEM_OFFSET
140         produced for bigendian targets with promoted subregs.
141
142 2009-09-23  Richard Guenther  <rguenther@suse.de>
143
144         * value-prof.c (gimple_ic): Purge old EH edges only after building
145         the new ones.
146
147 2009-09-23  Nick Clifton  <nickc@redhat.com>
148
149         * config/arc/arc.c (arc_trampoline_init): Fix typo.
150
151 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
152
153         PR bootstrap/41405
154         * doc/invoke.texi: Document -gstrict-dwarf and -gno-strict-dwarf.
155
156         PR bootstrap/41436
157         * cgraphunit.c (cgraph_lower_function): Set DECL_NO_STATIC_CHAIN
158         on non-nested functions.
159
160 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
161             Jan Hubicka  <jh@suse.cz>
162
163         * dwarf2out.c (loc_list_plus_const): Only define if
164         DWARF2_DEBUGGING_INFO.
165         (address_of_int_loc_descriptor): Likewise.
166
167         PR debug/41411
168         * dwarf2out.c (mem_loc_descriptor): Handle HIGH.
169
170 2009-09-23  Uros Bizjak  <ubizjak@gmail.com>
171
172         PR c/39779
173         * c-typeck.c (build_binary_op) <short_shift>: Check that integer
174         constant is more than zero.
175
176 2009-09-23  Alan Modra  <amodra@bigpond.net.au>
177
178         PR target/40473
179         * config/rs6000/rs6000.c (rs6000_output_function_prologue): Don't
180         call final to emit non-scheduled prologue, instead insert at entry.
181
182 2009-09-22  Loren J. Rittle  <ljrittle@acm.org>
183             Joseph S. Myers  <joseph@codesourcery.com>
184
185         * doc/install.texi (*-*-freebsd*): Add proper format codes.
186
187 2009-09-22  Basile Starynkevitch  <basile@starynkevitch.net>
188             Rafael Avila de Espindola  <espindola@google.com>
189
190         * gengtype.c (is_file_equal): New function.
191         (close_output_files): Use is_file_equal. Free of->buf.
192
193 2009-09-22  Basile Starynkevitch  <basile@starynkevitch.net>
194             Rafael Avila de Espindola  <espindola@google.com>
195
196         * gengtype.c (write_types, write_local): Add the output_header
197         argument. Update all callers.
198
199 2009-09-22  Dodji Seketeli  <dodji@redhat.com>
200
201         * dwarf2out.c (template_parameter_pack_die,
202         gen_formal_parameter_pack_die ): New functions.
203         (make_ith_pack_parameter_name): Remove this function.
204         (dwarf_tag_name): Support printing DW_TAG_template_parameter_pack and
205         DW_TAG_formal_parameter_pack.
206         (gen_generic_params_dies): Represent each template parameter pack
207         by a DW_TAG_template_parameter_pack DIE. Argument pack elements are
208         represented by usual DW_TAG_template_*_parameter DIEs that are
209         children of the DW_TAG_template_parameter_pack element DIE.
210         (generic_parameter_die): This doesn't deal with parameter pack
211         names anymore. Don't generate DW_AT_name for some DIEs, e.g. children
212         of parameter pack DIEs.
213         (gen_formal_parameter_die): Add a flag to not emit DW_AT_name
214         in certain cases, e.g. for pack elements.
215         (gen_formal_types_die, gen_decl_die): Adjust usage of
216         gen_formal_parameter_die.
217         (gen_subprogram_die): Represent each function parameter pack by a
218         DW_TAG_formal_parameter_pack DIE. Arguments of of the pack are
219         represented by usual DW_TAG_formal_parameter DIEs that are children
220         of the DW_TAG_formal_parameter_pack DIE. Remove references to
221         ____builtin_va_alist decls as no part of the compiler uses those
222         anymore.
223         * langhooks.h (struct lang_hooks_for_decls): Add
224         function_parm_expanded_from_pack_p, get_generic_function_decl
225         and function_parameter_pack_p hooks.  Fix comment for
226         get_innermost_generic_parms hook.
227         * langhooks-def.h (LANG_HOOKS_FUNCTION_PARAMETER_PACK_P,
228         LANG_HOOKS_FUNCTION_PARM_EXPANDED_FROM_PACK_P ): Declare new hook
229         macros and use them to initialize lang_hook.
230
231 2009-09-22  Richard Henderson  <rth@redhat.com>
232
233         * system.h (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE): Poison.
234         (TRAMPOLINE_ADJUST_ADDRESS): Poison.
235         * target-def.h (TARGET_ASM_TRAMPOLINE_TEMPLATE): Don't conditionalize
236         on TRAMPOLINE_TEMPLATE.
237         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): Don't conditionalize on
238         TRAMPOLINE_ADJUST_ADDRESS.
239         * targhooks.c (default_asm_trampoline_template): Remove.
240         (default_trampoline_adjust_address): Remove.
241         (default_trampoline_init): Don't handle INITIALIZE_TRAMPOLINE.
242         * targhooks.h: Update decls.
243
244 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
245
246         * config/i386/cygming.h (TARGET_USE_JCR_SECTION): Enable.
247         * config/i386/cygwin.h (LIBGCJ_SONAME): Define.
248         * config/i386/mingw32.h (LIBGCJ_SONAME): Likewise.
249
250 2009-09-22  Alexandre Oliva  <aoliva@redhat.com>
251
252         PR debug/41295
253         * reload1.c (reload): Reset debug insns with pseudos without
254         equivalences.
255
256 2009-09-22  Janis Johnson  <janis187@us.ibm.com>
257
258         * config/i386/i386.c (ix86_scalar_mode_supported_p): Don't return
259         unconditional true for decimal float modes.
260         * config/rs6000/rs6000.c (rs6000_scalar_mode_supported_p): Ditto.
261         * config/s390/s390.c (s390_scalar_mode_supported_p): Ditto.
262
263 2009-09-22  Loren J. Rittle  <ljrittle@acm.org>
264
265         * unwind-dw2-fde-glibc.c: Define and use USE_PT_GNU_EH_FRAME.
266         Enable a new case for __FreeBSD__ >= 7.
267         * crtstuff.c:  Define USE_PT_GNU_EH_FRAME for __FreeBSD__ >= 7.
268         * config/t-freebsd: Define LIB2ADDEH and LIB2ADDEHDEP.
269         * config/freebsd-spec.h: Conditionally define LINK_EH_SPEC
270         and USE_LD_AS_NEEDED.
271
272         * doc/install.texi (*-*-freebsd*): Update target information.
273
274 2009-09-22  Richard Guenther  <rguenther@suse.de>
275
276         PR middle-end/41395
277         * tree-dfa.c (get_ref_base_and_extent): Handle trailing
278         arrays really properly.
279
280 2009-09-22  Richard Henderson  <rth@redhat.com>
281
282         PR target/41246
283         * target.h (struct gcc_target): Add asm_out.trampoline_template,
284         calls.static_chain, calls.trampoline_init,
285         calls.trampoline_adjust_address.
286         * target-def.h (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
287         (TARGET_STATIC_CHAIN, TARGET_TRAMPOLINE_INIT): New.
288         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
289         * builtins.c (expand_builtin_setjmp_receiver): Use
290         targetm.calls.static_chain; only clobber registers.
291         (expand_builtin_init_trampoline): Use targetm.calls.trampoline_init;
292         set up memory attributes properly for the trampoline block.
293         (expand_builtin_adjust_trampoline): Use
294         targetm.calls.trampoline_adjust_address.
295         * calls.c (prepare_call_address): Add fndecl argument.  Use
296         targetm.calls.static_chain.
297         * df-scan.c (df_need_static_chain_reg): Remove.
298         (df_get_entry_block_def_set): Use targetm.calls.static_chain;
299         consolodate static chain handling.
300         * doc/tm.texi: Document new hooks.
301         * emit-rtl.c (static_chain_rtx, static_chain_incoming_rtx): Remove.
302         (init_emit_regs): Don't initialize them.
303         * expr.h (prepare_call_address): Update decl.
304         * final.c (profile_function): Use targetm.calls.static_chain.
305         * function.c (expand_function_start): Likewise.
306         * rtl.h (static_chain_rtx, static_chain_incoming_rtx): Remove.
307         * stmt.c (expand_nl_goto_receiver): Use targetm.calls.static_chain;
308         only clobber registers.
309         * targhooks.c (default_static_chain): New.
310         (default_asm_trampoline_template, default_trampoline_init): New.
311         (default_trampoline_adjust_address): New.
312         * targhooks.h: Declare them.
313         * varasm.c (assemble_trampoline_template): Use
314         targetm.asm_out.trampoline_template.  Make the memory block const
315         and set its size.
316
317         * config/alpha/alpha.c (alpha_trampoline_init): Rename from
318         alpha_initialize_trampoline.  Make static.  Merge VMS parameter
319         differences into the TARGET_ABI_OPEN_VMS code block.
320         (TARGET_TRAMPOLINE_INIT): New.
321         * config/alpha/alpha.h (TRAMPOLINE_TEMPLATE): Remove.
322         (TRAMPOLINE_SECTION, INITIALIZE_TRAMPOLINE): Remove.
323         * config/alpha/vms.h (TRAMPOLINE_SIZE, TRAMPOLINE_ALIGNMENT): Remove.
324         (INITIALIZE_TRAMPOLINE): Remove.
325
326         * config/arc/arc.h (TRAMPOLINE_ALIGNMENT): New.
327         (TRAMPOLINE_TEMPLATE): Merge with ...
328         (INITIALIZE_TRAMPOLINE): ... this and move ...
329         * config/arc/arc.c (arc_trampoline_init): ... here.
330         (TARGET_TRAMPOLINE_INIT): New.
331
332         * config/arm/arm.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
333         (TARGET_TRAMPOLINE_INIT, TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
334         (arm_asm_trampoline_template): New.
335         (arm_trampoline_init, arm_trampoline_adjust_address): New.
336         * config/arm/arm.h (TRAMPOLINE_TEMPLATE, ARM_TRAMPOLINE_TEMPLATE,
337         THUMB2_TRAMPOLINE_TEMPLATE, THUMB1_TRAMPOLINE_TEMPLATE): Move all
338         code to arm_asm_trampoline_template.
339         (TRAMPOLINE_ADJUST_ADDRESS): Move code to
340         arm_trampoline_adjust_address.
341         (INITIALIZE_TRAMPOLINE): Move code to arm_trampoline_init;
342         adjust for target hook parameters.
343
344         * config/avr/avr.h (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE):
345         Remove.
346
347         * config/bfin/bfin-protos.h (initialize_trampoline): Remove.
348         * config/bfin/bfin.c (bfin_asm_trampoline_template): New.
349         (bfin_trampoline_init): Rename from initialize_trampoline;
350         make static; update for target hook parameters.
351         (TARGET_ASM_TRAMPOLINE_TEMPLATE, TARGET_TRAMPOLINE_INIT): New.
352         * config/bfin/bfin.h (TRAMPOLINE_TEMPLATE): Move code to
353         bfin_asm_trampoline_template.
354         (INITIALIZE_TRAMPOLINE): Remove.
355
356         * config/cris/cris.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
357         TARGET_TRAMPOLINE_INIT, cris_asm_trampoline_template,
358         cris_trampoline_init): New.
359         * config/cris/cris.h (TRAMPOLINE_TEMPLATE): Move code to
360         cris_asm_trampoline_template.
361         (INITIALIZE_TRAMPOLINE): Move code to cris_trampoline_init;
362         adjust for target hook parameters.
363
364         * config/crx/crx.h (INITIALIZE_TRAMPOLINE): Remove.
365
366         * config/fr30/fr30.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
367         TARGET_TRAMPOLINE_INIT, fr30_asm_trampoline_template,
368         fr30_trampoline_init): New.
369         * config/fr30/fr30.h (TRAMPOLINE_TEMPLATE): Move code to
370         fr30_asm_trampoline_template.
371         (INITIALIZE_TRAMPOLINE): Move code to fr30_trampoline_init;
372         adjust for target hook parameters.
373
374         * config/frv/frv.c (TARGET_TRAMPOLINE_INIT): New.
375         (frv_trampoline_init): Rename from frv_initialize_trampoline;
376         make static, adjust arguments for TARGET_TRAMPOLINE_INIT hook.
377         * config/frv/frv.h (INITIALIZE_TRAMPOLINE): Remove.
378         * config/frv/frv-protos.h (frv_initialize_trampoline): Remove.
379
380         * config/h8300/h8300.c (h8300_trampoline_init): New.
381         (TARGET_TRAMPOLINE_INIT): New.
382         * config/h8300/h8300.h (INITIALIZE_TRAMPOLINE): Move code
383         to h8300_trampoline_init and adjust for hook parameters.
384
385         * config/ia64/ia64-protos.h (ia64_initialize_trampoline): Remove.
386         * config/ia64/ia64.c (TARGET_TRAMPOLINE_INIT): New.
387         (ia64_trampoline_init): Rename from ia64_initialize_trampoline;
388         make static; adjust for hook parameters.
389         * config/ia64/ia64.h (INITIALIZE_TRAMPOLINE): Remove.
390
391         * config/iq2000/iq2000.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
392         (TARGET_TRAMPOLINE_INIT): New.
393         (iq2000_asm_trampoline_template, iq2000_trampoline_init): New.
394         * config/iq2000/iq2000.h (TRAMPOLINE_TEMPLATE): Move code to
395         iq2000_asm_trampoline_template.
396         (INITIALIZE_TRAMPOLINE): Move code to iq2000_trampoline_init.
397         (TRAMPOLINE_CODE_SIZE): New.
398         (TRAMPOLINE_SIZE): Use it.
399         (TRAMPOLINE_ALIGNMENT): Follow Pmode.
400
401         * config/m32c/m32c-protos.h (m32c_initialize_trampoline): Remove.
402         * config/m32c/m32c.c (TARGET_TRAMPOLINE_INIT): New.
403         (m32c_trampoline_init): Rename from m32c_initialize_trampoline;
404         adjust for hook parameters.
405         * config/m32c/m32c.h (INITIALIZE_TRAMPOLINE): Remove.
406
407         * config/m32r/m32r.c (TARGET_TRAMPOLINE_INIT): New.
408         (m32r_trampoline_init): New.
409         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Move code to
410         m32r_trampoline_init.
411
412         * config/m68hc11/m68hc11.c (TARGET_TRAMPOLINE_INIT): New.
413         (m68hc11_trampoline_init): Rename from m68hc11_initialize_trampoline;
414         make static; update for hook parameters.
415         * config/m68hc11/m68hc11-protos.h: Update.
416         * config/m68hc11/m68hc11.h (INITIALIZE_TRAMPOLINE): Remove.
417
418         * config/mcore/mcore.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
419         (TARGET_TRAMPOLINE_INIT): New.
420         (mcore_function_value): Fix typo.
421         (mcore_asm_trampoline_template, mcore_trampoline_init): New.
422         * config/mcore/mcore.h (TRAMPOLINE_TEMPLATE): Move code 
423         to mcore_asm_trampoline_template.
424         (INITIALIZE_TRAMPOLINE): Move code to mcore_trampoline_init.
425
426         * config/mep/mep.h (INITIALIZE_TRAMPOLINE): Remove.
427         * config/mep/mep.c (TARGET_TRAMPOLINE_INIT): New.
428         (mep_trampoline_init): Rename from mep_init_trampoline; make static;
429         update for hook parameters.
430         * config/mep/mep-protos.h (mep_init_trampoline): Remove.
431
432         * config/mips/mips.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
433         mips_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
434         mips_trampoline_init): New.
435         * config/mips/mips.h (TRAMPOLINE_TEMPLATE): Move code to
436         mips_asm_trampoline_template.
437         (INITIALIZE_TRAMPOLINE): Move code to mips_trampoline_init;
438         update for hook parameters.
439
440         * gcc/config/mmix/mmix.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
441         (TARGET_TRAMPOLINE_INIT): New.
442         (mmix_trampoline_size): Remove.
443         (mmix_asm_trampoline_template): Rename from mmix_trampoline_template;
444         make static.  Remove out-of-date tetra vs octa comment.
445         (mmix_trampoline_init): Rename from mmix_initialize_trampoline;
446         make static; update for hook parameters.
447         * config/mmix/mmix.h (TRAMPOLINE_TEMPLATE): Remove.
448         (INITIALIZE_TRAMPOLINE): Remove.
449         (TRAMPOLINE_SIZE): Use a constant instead of mmix_trampoline_size.
450         (TRAMPOLINE_ALIGNMENT): New.
451         * gcc/config/mmix/mmix-protos.h: Update.
452
453         * config/mn10300/mn10300.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
454         mn10300_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
455         mn10300_trampoline_init): New.
456         * config/mn10300/mn10300.h (TRAMPOLINE_TEMPLATE): Move code to
457         mn10300_asm_trampoline_template.
458         (INITIALIZE_TRAMPOLINE): Move code to mn10300_trampoline_init.
459
460         * config/moxie/moxie.c (moxie_static_chain,
461         moxie_asm_trampoline_template, moxie_trampoline_init,
462         TARGET_STATIC_CHAIN, TARGET_ASM_TRAMPOLINE_TEMPLATE,
463         TARGET_TRAMPOLINE_INIT): New.
464         * config/moxie/moxie.h (INITIALIZE_TRAMPOLINE): Move code to
465         moxie_trampoline_init.
466         (TRAMPOLINE_TEMPLATE): Move code to moxie_asm_trampoline_template.
467         (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Remove.
468
469         * gcc/config/pa/pa.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
470         pa_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
471         pa_trampoline_init, TARGET_TRAMPOLINE_ADJUST_ADDRESS,
472         pa_trampoline_adjust_address): New.
473         * config/pa/pa.h (TRAMPOLINE_TEMPLATE): Move code to
474         pa_asm_trampoline_template.
475         (TRAMPOLINE_ALIGNMENT): New.
476         (TRAMPOLINE_CODE_SIZE): Move to pa.c.
477         (INITIALIZE_TRAMPOLINE): Move code to pa_trampoline_init;
478         adjust for hook parameters.
479         (TRAMPOLINE_ADJUST_ADDRESS): Move code to pa_trampoline_adjust_address.
480
481         * config/pdp11/pdp11.c (pdp11_trampoline_init): New.
482         (TARGET_TRAMPOLINE_INIT): New.
483         * config/pdp11/pdp11.h (TRAMPOLINE_TEMPLATE): Remove.
484         (INITIALIZE_TRAMPOLINE): Move code to pdp11_trampoline_init.
485
486         * config/picochip/picochip.h (INITIALIZE_TRAMPOLINE): Remove.
487
488         * config/rs6000/rs6000-protos.h (rs6000_initialize_trampoline): Remove.
489         * config/rs6000/rs6000.c (TARGET_TRAMPOLINE_INIT): New.
490         (rs6000_trampoline_init): Rename from rs6000_initialize_trampoline;
491         make static; adjust parameters for the hook.
492         * config/rs6000/rs6000.h (INITIALIZE_TRAMPOLINE): Remove.
493
494         * config/s390/s390.c (s390_asm_trampoline_template): Rename from
495         s390_trampoline_template; make static.
496         (s390_trampoline_init): Rename from s390_initialize_trampoline;
497         make static; adjust for target hook.
498         (TARGET_ASM_TRAMPOLINE_TEMPLATE, TARGET_TRAMPOLINE_INIT): New.
499         * config/s390/s390-protos.h: Remove trampoline decls.
500         * config/s390/s390.h (INITIALIZE_TRAMPOLINE): Remove.
501         (TRAMPOLINE_TEMPLATE): Remove.
502         (TRAMPOLINE_ALIGNMENT): New.
503
504         * config/score/score-protos.h (score_initialize_trampoline): Remove.
505         * config/score/score.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
506         (TARGET_TRAMPOLINE_INIT): New.
507         (score_asm_trampoline_template): New.
508         (score_trampoline_init): Rename from score_initialize_trampoline;
509         make static; adjust for hook parameters.
510         * config/score/score.h (TRAMPOLINE_TEMPLATE): Move code to
511         score[37]_asm_trampoline_template.
512         (INITIALIZE_TRAMPOLINE): Remove.
513         * config/score/score3.c (score3_asm_trampoline_template): New.
514         (score3_trampoline_init): Rename from score3_initialize_trampoline;
515         adjust for target hook.
516         * config/score/score7.c (score7_asm_trampoline_template): New.
517         (score7_trampoline_init): Rename from score7_initialize_trampoline;
518         adjust for target hook.
519         * config/score/score3.h, config/score/score7.h: Update.
520
521         * config/sh/sh-protos.h (sh_initialize_trampoline): Remove.
522         * config/sh/sh.c (TARGET_TRAMPOLINE_INIT): New.
523         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
524         (sh_trampoline_init): Rename from sh_initialize_trampoline;
525         make static; adjust for target hook parameters.
526         (sh_trampoline_adjust_address): New.
527         * config/sh/sh.h (INITIALIZE_TRAMPOLINE): New.
528         (TRAMPOLINE_ADJUST_ADDRESS): Move code to sh_trampoline_adjust_address.
529
530         * config/sparc/sparc.c (TARGET_TRAMPOLINE_INIT): New.
531         (sparc32_initialize_trampoline): Rename from
532         sparc_initialize_trampoline; make static; replace tramp parameter
533         with m_tramp and update memory accesses.
534         (sparc64_initialize_trampoline): Similarly.
535         (sparc_trampoline_init): New.
536         * config/sparc/sparc-protos.h: Remove trampoline decls.
537         * config/sparc/sparc.h (INITIALIZE_TRAMPOLINE): Remove.
538         * config/sparc/sparc.md (nonlocal_goto): Don't use static_chain_rtx.
539
540         * config/spu/spu.c (TARGET_TRAMPOLINE_INIT): New.
541         (array_to_constant): Make ARR parameter const.
542         (spu_trampoline_init): Rename from spu_initialize_trampoline;
543         make static; update for hook parameters.
544         * config/spu/spu-protos.h: Update decls.
545         * config/spu/spu.h (INITIALIZE_TRAMPOLINE): Remove.
546
547         * config/stormy16/stormy16.c (xstormy16_trampoline_init): Rename
548         from xstormy16_initialize_trampoline; make static; update for
549         hook parameters.
550         (TARGET_TRAMPOLINE_INIT): New.
551         * config/stormy16/stormy16.h (INITIALIZE_TRAMPOLINE): Remove.
552
553         * config/v850/v850.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
554         (TARGET_TRAMPOLINE_INIT): New.
555         (v850_can_eliminate): Make static.
556         (v850_asm_trampoline_template, v850_trampoline_init): New.
557         * config/v850/v850.h (TRAMPOLINE_TEMPLATE): Move code to
558         v850_asm_trampoline_template.
559         (INITIALIZE_TRAMPOLINE): Move code to v850_trampoline_init
560         and adjust for target hook parameters.
561
562         * config/vax/vax.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
563         (TARGET_TRAMPOLINE_INIT): New.
564         (vax_asm_trampoline_template, vax_trampoline_init): New.
565         * config/vax/vax.h (TRAMPOLINE_TEMPLATE): Move code to
566         vax_asm_trampoline_template.
567         (INITIALIZE_TRAMPOLINE): Move code to vax_trampoline_init.
568
569         * config/xtensa/xtensa.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
570         (TARGET_TRAMPOLINE_INIT): New.
571         (xtensa_asm_trampoline_template): Rename from
572         xtensa_trampoline_template; make static.
573         (xtensa_trampoline_init): Rename from xtensa_initialize_trampoline;
574         make static; update for hook parameters.
575         * config/xtensa/xtensa-protos.h: Remove trampoline decls.
576         * config/xtensa/xtensa.h (TRAMPOLINE_TEMPLATE): Remove.
577         (INITIALIZE_TRAMPOLINE): Remove.
578
579         * config/i386/i386.c (ix86_function_regparm): Do not issue an
580         error for nested functions with regparm=3.
581         (ix86_compute_frame_layout): Adjust frame pointer offset for
582         ix86_static_chain_on_stack.
583         (ix86_expand_prologue): Handle ix86_static_chain_on_stack.
584         (ix86_emit_restore_reg_using_pop): Increment ix86_cfa_state->offset,
585         don't reset to UNITS_PER_WORD.
586         (ix86_emit_leave): Adjust ix86_cfa_state.
587         (ix86_expand_epilogue): Handle ix86_static_chain_on_stack.
588         (ix86_static_chain): New.
589         (ix86_trampoline_init): Rename from x86_initialize_trampoline;
590         make static; update for target hook parameters; use ix86_static_chain.
591         (TARGET_STATIC_CHAIN, TARGET_TRAMPOLINE_INIT): New.
592         * config/i386/i386.h (STATIC_CHAIN_REGNUM): Remove.
593         (INITIALIZE_TRAMPOLINE): Remove.
594         (TRAMPOLINE_SIZE): Use 24 for 64-bit.
595         (struct machine_function): Use BOOL_BITFIELD; rearrange bitfields
596         to the end.  Add static_chain_on_stack.
597         (ix86_static_chain_on_stack): New.
598
599         * config/m68k/m68k.c (TARGET_TRAMPOLINE_INIT): New.
600         (m68k_output_mi_thunk): Don't use static_chain_rtx.
601         (m68k_trampoline_init): New.
602         * config/m68k/m68k.h (INITIALIZE_TRAMPOLINE): Move code to
603         m68k_trampoline_init and adjust for hook parameters.
604         * config/m68k/netbsd-elf.h (TRAMPOLINE_TEMPLATE): Remove.
605         (TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE): Remove.
606
607 2009-09-22  Jakub Jelinek  <jakub@redhat.com>
608
609         * config/rs6000/rs6000.c (bdesc_2arg): Fix CODE_FOR_vector_gt* codes
610         for __builtin_altivec_vcmpgt{sb,uh,sh,uw}.
611
612         * reload1.c (reload): Call wrap_constant when substituting
613         reg for equiv inside of DEBUG_INSNs.
614
615         PR bootstrap/41405
616         * dwarf2out.c (base_type_die, record_type_tag, gen_subprogram_die,
617         add_call_src_coords_attributes, add_high_low_attributes,
618         gen_compile_unit_die, gen_type_die_with_usage force_decl_die,
619         gen_decl_die, dwarf2out_imported_module_or_decl_1, dwarf2out_finish,
620         dwarf2out_imported_module_or_decl): Avoid using DWARF3 additions
621         when -gdwarf-2 -gstrict-dwarf.
622         (loc_list_from_tree): Likewise.  Avoid using DWARF4 additions when
623         -gdwarf-[23] -gstrict-dwarf.
624         (address_of_int_loc_descriptor, loc_descriptor,
625         loc_list_for_address_of_addr_expr_of_indirect_ref): Avoid using
626         DWARF4 additions when -gdwarf-[23] -gstrict-dwarf.
627         * common.opt (gno-strict-dwarf, gstrict-dwarf): New options.
628
629 2009-09-22  Richard Guenther  <rguenther@suse.de>
630
631         PR tree-optimization/41428
632         * tree-ssa-ccp.c (ccp_fold_stmt): New function.
633         (ccp_finalize): Pass it to substitute_and_fold.
634
635 2009-09-22  Richard Guenther  <rguenther@suse.de>
636
637         * tree-ssa-propagate.h (ssa_prop_fold_stmt_fn): Declare.
638         (substitute_and_fold): Adjust prototype.
639         * tree-vrp.c (vrp_evaluate_conditional): Make static.
640         (simplify_stmt_using_ranges): Likewise.
641         (fold_predicate_in): Move here from tree-ssa-propagate.c.
642         (vrp_fold_stmt): New function.
643         (vrp_finalize): Pass it to substitute_and_fold.
644         * tree-flow.h (vrp_evaluate_conditional): Remove.
645         (simplify_stmt_using_ranges): Likewise.
646         * tree-ssa-ccp.c (ccp_finalize): Adjust call to substitute_and_fold.
647         * tree-ssa-copy.c (fini_copy_prop): Likewise.
648         * tree-ssa-propagate.c (struct prop_stats_d): Rename num_pred_folded
649         member.
650         (fold_predicate_in): Move to tree-vrp.c.
651         (substitute_and_fold): Use the callback instead of calling into
652         tree-vrp.c functions directly.
653
654 2009-09-22  Jakub Jelinek  <jakub@redhat.com>
655
656         * dwarf2out.c (address_of_int_loc_descriptor): Avoid signed/unsigned
657         comparison warning on rs6000.
658
659         PR middle-end/41429
660         * tree-cfg.c (remove_useless_stmts_tc): Call gsi_next (gsi) even for
661         GIMPLE_EH_MUST_NOT_THROW cleanup.
662         (verify_types_in_gimple_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.
663
664 2009-09-22  Jack Howarth  <howarth@bromo.med.uc.edu>
665
666         PR middle-end/41260
667         * gcc/config.gcc: Use darwin9.h and darwin10.h on darwin10 and later.
668         * gcc/config/darwin10.h: Add file to pass -no_compact_unwind on
669         LIB_SPEC for darwin10 and later since it always uses the unwinder in
670         libSystem which is derived from the gcc 4.2.1 unwinder.
671
672 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
673
674         PR middle-end/41357
675         * varasm.c (default_encode_section_info): Copy TLS model into
676         sym_ref flags regardless of backend support for TLS, for all
677         model types except TLS_MODEL_EMULATED.
678
679 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
680
681         PR bootstrap/41404
682         * dwarf2out.c (mem_loc_descriptor): Punt on CONST_STRING until
683         we can handle it correctly.
684
685 2009-09-21  Gerald Pfeifer  <gerald@pfeifer.com>
686
687         * doc/install.texi (os2): Remove section.
688
689 2009-09-21  Gerald Pfeifer  <gerald@pfeifer.com>
690
691         * doc/standards.texi (Objective-C): Adjust two URLs.
692
693 2009-09-21  Giuseppe Scrivano <gscrivano@gnu.org>
694
695         * tree-tailcall.c (process_assignment): Don't check if a
696         multiplication or an addition are already present.
697         (find_tail_calls): Combine multiple additions and multiplications.
698         (adjust_accumulator_values): Emit accumulators.
699
700 2009-09-21  Kai Tietz  <kai.tietz@onevision.com>
701
702         * config/i386/i386.c (ix86_expand_epilogue): Adjust offset for
703         xmm register restore.
704
705 2009-09-21  Jan Hubicka  <jh@suse.cz>
706
707         * dwarf2out.c (decl_loc_table_eq): Allow decl_loc_table to be NULL.
708         (dwarf2out_abstract_function): NULLify decl_loc_table at begginig and
709         restore at the end.
710
711 2009-09-21  Eric Botcazou  <ebotcazou@adacore.com>
712
713         * stor-layout.c (layout_type): Remove obsolete code.
714
715 2009-09-20  H.J. Lu  <hongjiu.lu@intel.com>
716
717         PR middle-end/41395
718         * opts.c (decode_options): Don't turn on flag_ipa_sra for opt2.
719
720 2009-09-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
721
722         PR middle-end/30789
723         * builtins.c (do_mpc_arg2): Accept DO_NONFINITE parameter.
724         (do_mpc_ckconv): Accept FORCE_CONVERT parameter.
725         (fold_builtin_2, do_mpc_arg1): Update accordingly.
726         * fold-const.c (const_binop): Likewise.
727         * real.h (do_mpc_arg2): Update prototype.
728
729 2009-09-20  Jan Hubicka  <jh@suse.cz>
730
731         * dwarf2out.c (add_const_value_attribute): Return true if successful.
732         (add_location_or_const_value_attribute): Rewrite using
733         loc_list_from_tree.
734         (tree_add_const_value_attribute): Return true if successful.
735         (tree_add_const_value_attribute_for_decl): Likewise.
736
737         * dwarf2out.c (address_of_int_loc_descriptor): Break out from ...
738         (loc_descriptor): ... here;
739         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
740         (cst_pool_loc_descr): Break out from ...; do not reffer constant
741         pool items that was not marked for output.
742         (loc_list_from_tree): ... here; handle special cases of ADDR_EXPR;
743         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
744         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
745         handle ALIGN_INDIRECT_REF, MISALIGNED_INDIRECT_REF, REALPART_EXPR,
746         IMAGPART_EXPR; handle address of INTEGER_CST; improve handling of
747         CONSTRUCTOR; handle REAL_CST, STRING_CST, COMPLEX_CST; use
748         DW_OP_stack_value to get address of items that are not available
749         as addresses.
750         (dw_loc_list): Handle single element lists correctly.
751
752 2009-09-20  Kai Tietz  <kai.tietz@onevision.com>
753             Pascal Obry  <obry@adacore.com>
754
755         * unwind-dw2-fde.c (classify_object_over_fdes):
756         Cast the constant 1 to _Unwind_Ptr.
757         (add_fdes): Likewise.
758         (linear_search_fdes): Likewise.
759
760 2009-09-20  Eric Botcazou  <ebotcazou@adacore.com>
761
762         * stor-layout.c (set_sizetype): Avoid useless type copy.
763
764 2009-09-20  Richard Sandiford  <rdsandiford@googlemail.com>
765
766         * configure.ac (gcc_cv_ld_mips_personality_relaxation): New
767         feature check.
768         (HAVE_LD_PERSONALITY_RELAXATION): New macro definition.
769         * configure, config.in: Regenerate.
770         * dwarf2asm.c (eh_data_format_name): Handle DW_EH_PE_indirect |
771         DW_EH_PE_absptr.
772         * config/mips/mips.h (TARGET_WRITABLE_EH_FRAME): New macro.
773         (ASM_PREFERRED_EH_DATA_FORMAT): Define.  Use MIPS_EH_INDIRECT
774         for global data if the output could be used in a shared library.
775         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
776         to 0 if TARGET_WRITABLE_EH_FRAME.
777
778 2009-09-20  Paolo Bonzini <bonzini@gnu.org>
779
780         PR rtl-optimization/39886
781         * combine.c (update_cfg_for_uncondjump): Set EDGE_FALLTHRU
782         just when insn is equal to BB_END (bb).
783
784 2009-09-19  Adam Nemet  <anemet@caviumnetworks.com>
785
786         * config/mips/mips.opt (mrelax-pic-calls): New option.
787         * config/mips/mips.c (mips_strip_unspec_address): Move it up in
788         the file.
789         (mips_unspec_call): Change "unspec_call" expander into this.
790         (mips_strip_unspec_call): New function.
791         (mips_got_load): Call mips_unspec_call instead of
792         gen_unspec_call<mode>.
793         (mips16_build_call_stub): Fix comment for fp_code.  Adjust call to
794         MIPS_CALL.
795         (mips_cfg_in_reorg): New function.
796         (mips16_lay_out_constants): Use it to decide whether to call
797         CFG-aware insn splitting.
798         (r10k_insert_cache_barriers): Move CFG set-up code from here to
799         mips_reorg.  Move DF set-up code from here ...
800         (mips_df_reorg): ... to here.  Call r10k_insert_cache_barriers
801         from here.
802         (mips_reorg): Call mips_df_reorg instead of
803         r10k_insert_cache_barriers.  Move CFG set-up code here from
804         r10k_insert_cache_barriers.
805         (mips_call_expr_from_insn): New function.
806         (mips_pic_call_symbol_from_set): Likewise.
807         (mips_find_pic_call_symbol): Likewise.
808         (mips_annotate_pic_call_expr): Likewise.
809         (mips_get_pic_call_symbol): Likewise.
810         (mips_annotate_pic_calls): Likewise.
811         (mips_override_options): Disable -mrelax-pic-calls unless PIC
812         calls are used.
813         (mips_set_mips16_mode): Disable -mrelax-pic-calls for MIPS16.
814         * config/mips/mips-protos.h (mips_get_pic_call_symbol): Declare it.
815         * config/mips/mips.h (MIPS_CALL): Use it to print the .reloc
816         directive.
817         * config/mips/mips.md (UNSPEC_CALL_ATTR): New unspec.
818         (unspec_call<mode>): Remove it.
819         (sibcall_internal, sibcall_value_internal,
820         sibcall_value_multiple_internal, call_internal, call_split,
821         call_value_internal, call_value_split,
822         call_value_multiple_internal, call_value_multiple_split): Pass
823         SIZE_OPNO to MIPS_CALL.
824         (call_internal_direct, call_direct_split,
825         call_value_internal_direct, call_value_direct_split): Pass -1 as
826         SIZE_OPNO to MIPS_CALL.
827         * configure.ac <mips*-*-*>: Add test for .reloc R_MIPS_JALR.
828         * configure: Regenerate.
829         * doc/invoke.texi (Option Summary): Add -mrelax-pic-calls
830         and -mno-relax-pic-calls.
831         (MIPS Options): Document -mrelax-pic-calls and -mno-relax-pic-calls.
832
833 2009-09-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
834
835         PR bootstrap/35619
836         * Makefile.in (stmp-fixinc): Ensure `include-fixed' is created
837         in the directory this rule is called from, rather than the
838         toplevel 'gcc' directory, to fix in-tree build.
839
840 2009-09-19  Chris Demetriou  <cgd@google.com>
841
842         PR preprocessor/28435:
843         * c-opts.c (c_common_handle_option): For -MD and -MMD, indicate
844         to cpplib that the preprocessor output is needed.
845
846 2009-09-19  Jakub Jelinek  <jakub@redhat.com>
847
848         * config/rs6000/rs6000.md (*save_gpregs_<mode>, *save_fpregs_<mode>,
849         *restore_gpregs_<mode>, *return_and_restore_gpregs_<mode>,
850         *return_and_restore_fpregs_<mode>,
851         *return_and_restore_fpregs_aix_<mode>): Remove 'z' operand modifier.
852
853         PR bootstrap/41397
854         * dwarf2out.c (mem_loc_descriptor) <case SUBREG>: Recurse
855         instead of assuming it has always a REG inside of it.
856
857 2009-09-18  Gerald Pfeifer  <gerald@pfeifer.com>
858
859         * config/freebsd.h: Update comment on types.
860         (WINT_TYPE): Define.
861
862 2009-09-18  Jason Merrill  <jason@redhat.com>
863
864         * c.opt: Add -fno-deduce-init-list.
865
866 2009-09-18  Neil Vachharajani  <nvachhar@google.com>
867
868         * value-prof.c (interesting_stringop_to_profile_p): Added output
869         argument to indicate which parameter is the size parameter.
870         * value-prof.c (gimple_stringop_fixed_value): Use
871         INTERESTING_STRINGOP_TO_PROFILE_P to find size argument.
872         * value-prof.c (gimple_stringops_transform): Update call sites to
873         INTERESTING_STRINGOP_TO_PROFILE_P to reflect parameter change.
874
875 2009-09-18  Uros Bizjak  <ubizjak@gmail.com>
876
877         PR target/38288
878         From David Binderman <dcb314@hotmail.com>:
879         * gcc/config/i386/i386.c (ix86_function_regparm): Remove useless
880         local variable f.  Remove stale comments.
881         (ix86_compute_frame_layout): Remove useless local variable total_size.
882         Remove #if 0'd code.
883         (legitimate_address_p): Remove useless local variables
884         reason_rtx and reason.
885         (ix86_split_copysign_const): Remove useless local variable op1.
886         (scale_counter): Remove useless local variable piece_size_mask.
887
888 2009-09-18  Jakub Jelinek  <jakub@redhat.com>
889
890         * stmt.c (expand_asm_operands): Set REG_ATTRS on the temporary from
891         output decl.
892
893 2009-09-17  Michael Haubenwallner  <michael.haubenwallner@salomon.at>
894
895         PR target/40913
896         * config/pa/t-hpux-shlib: Set soname in libgcc_s.sl.
897
898 2009-09-17  Jakub Jelinek  <jakub@redhat.com>
899
900         * c-decl.c (finish_struct): Adjust DECL_SOURCE_LOCATION of
901         TYPE_STUB_DECL.
902
903 2009-09-17  Alexandre Oliva  <aoliva@redhat.com>
904
905         * dwarf2out.c (loc_descriptor): Emit DW_OP_stack_value and
906         DW_OP_implicit_value even without dwarf_version 4.
907
908 2009-09-17  Jan Hubicka  <jh@suse.cz>
909
910         * dwarf2out.c: Include tree-pass.h and gimple.h.
911         (loc_list_plus_const): New function.
912         (loc_descriptor_from_tree_1): Rename to ...
913         (loc_descriptor_from_tree): ... remove original.
914         (loc_list_from_tree): New function.
915         (add_AT_location_description): Accept location list.
916         (tls_mem_loc_descriptor): Update call of loc_descriptor_from_tree.
917         (concatn_mem_loc_descriptor): Remove.
918         (mem_loc_descriptor): Handle CONCAT/CONCATN and VAR_LOCATION by
919         returning NULL.
920         (secname_for_decl): Move up.
921         (hidden_reference_p): New function; break out from ...
922         (loc_by_refernece): ... here; move up.
923         (dw_loc_list): New function.
924         (single_element_loc_list): New function.
925         (single_element_loc_list_p): New function.
926         (add_loc_descr_to_each): New function.
927         (add_loc_list): New function.
928         (loc_descr_from_tree): Make wraper of loc_list_from_tree.
929         (loc_list_from_tree): Reroganized from loc_descr_from_tree;
930         add diagnostics why expansion failed.
931         (add_location_or_const_value_attribute): Support location lists.
932         (add_bound_info): Likewise.
933         (descr_info_loc): Update call of loc_descriptor_from_tree.
934         (gen_variable_die): Work on location lists.
935         * final.c (pass_final): Add dump file.
936         * Makefile.in (dwarf2out.o): Add new dependencies.
937
938 2009-09-17  Janis Johnson  <janis187@us.ibm.com>
939
940         PR c/41049
941         * real.c decimal_from_integer, decimal_integer_string): New.
942         (real_from_integer): Use them as special case for decimal float.
943         * config/dfp-bit.c (_si_to_sd, _usi_to_sd): Use default rounding.
944         (_di_to_sd, _di_to_dd, _di_to_td, _udi_to_sd, _udi_to_dd, _udi_to_td):
945         Do not append zero after the decimal point in string to convert.
946
947 2009-09-17  Alexander Monakov  <amonakov@ispras.ru>
948
949         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Add bounds only
950         for ARRAY_REFs.  Use array_ref_{low,up}_bound to determine bounds.
951
952 2009-09-17  Martin Jambor  <mjambor@suse.cz>
953
954         * common.opt (fipa-sra): New switch.
955         * opts.c (decode_options): Turn flag_ipa_sra on for opt2.
956         * timevar.def (TV_IPA_SRA): New timevar.
957         * params.def (ipa-sra-ptr-growth-factor): New parameter.
958         * doc/invoke.texi: Document -fipa-sra and ipa-sra-ptr-growth-factor.
959         * tree-sra.c: Include cgraph.c.
960         (enum sra_mode): Added SRA_MODE_EARLY_IPA.
961         (struct access): Added fields stmt, grp_maybe_modified, grp_scalar_ptr
962         and grp_not_necessarilly_dereferenced.
963         (func_param_count): New variable.
964         (encountered_apply_args): New variable.
965         (bb_dereferences): New variable.
966         (final_bbs): New variable.
967         (no_accesses_representant): New variable.
968         (no_accesses_p): New function.
969         (dump_access): Dump the new fields.
970         (sra_initialize): Set encountered_apply_args to false.
971         (get_ssa_base_param): New function.
972         (mark_parm_dereference): New function.
973         (create_access): Caring for INIDRECT_REFs and different handling of
974         varialble length accesses in early IPA SRA.  Store the stmt - a new
975         parameter - to the new access.
976         (build_access_from_expr_1): New parameter stmt, passed to
977         create_access.  Handle INDIRECT_REFs.
978         (build_access_from_expr): Pass the current statement to
979         build_access_from_expr_1.
980         (disqualify_ops_if_throwing_stmt): Trigger only in intraprocedural
981         passes.
982         (build_accesses_from_assign): Pass the current statement to
983         build_access_from_expr_1.  Do not create assign links in IPA-SRA.
984         (scan_function): Call handle_ssa_defs on phi nodes.  Set bits in
985         final_bbs when necessary.  Check for calls to __builtin_apply_args.
986         Fixup EH info if anythng was changed.
987         (is_unused_scalar_param): New function.
988         (ptr_parm_has_direct_uses): New function.
989         (find_param_candidates): New function.
990         (mark_maybe_modified): New function.
991         (analyze_modified_params): New function.
992         (propagate_dereference_distances): New function.
993         (dump_dereferences_table): New function.
994         (analyze_caller_dereference_legality): New function.
995         (unmodified_by_ref_scalar_representative): New function.
996         (splice_param_accesses): New function.
997         (decide_one_param_reduction): New function.
998         (enum ipa_splicing_result): New type.
999         (splice_all_param_accesses): New function.
1000         (get_param_index): New function.
1001         (turn_representatives_into_adjustments): New function.
1002         (analyze_all_param_acesses): New function.
1003         (get_replaced_param_substitute): New function.
1004         (get_adjustment_for_base): New function.
1005         (replace_removed_params_ssa_names): New function.
1006         (sra_ipa_reset_debug_stmts): New function.
1007         (sra_ipa_modify_expr): New function.
1008         (sra_ipa_modify_assign): New function.
1009         (convert_callers): New function.
1010         (modify_function): New function.
1011         (ipa_sra_preliminary_function_checks): New function.
1012         (ipa_early_sra): New function.
1013         (ipa_early_sra_gate): New function.
1014         (pass_early_ipa_sra): New variable.
1015         * Makefile.in (tree-sra.o): Add cgraph.h to dependencies.
1016
1017 2009-09-17  Michael Matz  <matz@suse.de>
1018
1019         PR middle-end/41347
1020         * tree.c (build_type_attribute_qual_variant): Export.
1021         * tree.h (build_type_attribute_qual_variant): Declare.
1022         * tree-inline.c (remap_type_1): Use it to build variants with
1023         the original qualifiers and attributes.
1024
1025 2009-09-17  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
1026
1027         * cfglayout.c (fixup_reorder_chain): Accept conditional jumps
1028         without a fallthrough edge.
1029
1030 2009-09-16  DJ Delorie  <dj@redhat.com>
1031
1032         * config/m32c/m32c.c (m32c_emit_epilogue): Check for R8C or M16C
1033         chip and ignore the "fast_interrupt" attribute if so.
1034
1035 2009-09-16  Richard Henderson  <rth@redhat.com>
1036
1037         PR middle-end/41360
1038         * cfgbuild.c (find_bb_boundaries): Really re-instate 2009-09-02
1039         barrier fix.
1040
1041 2009-09-16  Richard Henderson  <rth@redhat.com>
1042
1043         PR target/41246
1044         * tree-cfg.c (verify_gimple_call): Validate that gimple_call_chain
1045         is set only if DECL_NO_STATIC_CHAIN is unset.
1046         * tree-nested.c (iter_nestinfo_start, iter_nestinfo_next): New.
1047         (FOR_EACH_NEST_INFO): New.
1048         (walk_all_functions): Use it.
1049         (finalize_nesting_tree): Likewise.
1050         (unnest_nesting_tree): Likewise.
1051         (free_nesting_tree): Use iter_nestinfo_start, iter_nestinfo_next.
1052         (get_chain_decl, get_chain_field): Reset DECL_NO_STATIC_CHAIN.
1053         (convert_gimple_call): Early out if gimple_call_chain already set.
1054         (convert_all_function_calls): Iterate until no new functions
1055         require a static chain.
1056         (finalize_nesting_tree_1): Assert DECL_NO_STATIC_CHAIN is unset
1057         when building a trampoline.  Use dump_function_to_file instead
1058         of dump_function.
1059         (lower_nested_functions): Open dump_file.  Validate that decls
1060         that have DECL_NO_STATIC_CHAIN from the front end don't have that
1061         bit reset by this pass.
1062
1063 2009-09-16  Michael Matz  <matz@suse.de>
1064
1065         PR fortran/41212
1066         * tree.h (struct tree_decl_common): Add decl_restricted_flag,
1067         shorten decl_common_unused.
1068         (DECL_RESTRICTED_P): New accessor.
1069         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Use it
1070         to disambiguate marked decls and restrict pointers.
1071
1072 2009-09-16  Richard Henderson  <rth@redhat.com>
1073
1074         PR middle-end/41360
1075         * cfgbuild.c (find_bb_boundaries): Re-instate 2009-09-02 barrier fix.
1076
1077 2009-09-16  Jakub Jelinek  <jakub@redhat.com>
1078
1079         * integrate.c (set_block_abstract_flags): Call
1080         set_decl_abstract_flags also on BLOCK_NONLOCALIZED_VARs.
1081
1082 2009-09-16  Richard Guenther  <rguenther@suse.de>
1083
1084         PR middle-end/34011
1085         * tree-flow-inline.h (may_be_aliased): Compute readonly variables
1086         as non-aliased.
1087
1088 2009-09-16  DJ Delorie  <dj@redhat.com>
1089             Kaz Kojima  <kkojima@gcc.gnu.org>
1090
1091         * config/sh/sh.c (output_stack_adjust): Add new argument frame_p.
1092         (sh_expand_prologue): Update calls to output_stack_adjust.
1093         (sh_expand_epilogue): Likewise.
1094
1095 2009-09-15  Adam Nemet  <anemet@caviumnetworks.com>
1096
1097         PR bootstrap/41349
1098         * reorg.c (redundant_insn): Don't count notes or DEBUG_INSNs when
1099         trying to limit the extent of searches in the insn stream.
1100
1101 2009-09-15  Nathan Froyd  <froydnj@codesourcery.com>
1102             Jakub Jelinek  <jakub@redhat.com>
1103
1104         PR target/41175
1105         PR target/40677
1106         * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence
1107         problem.
1108         (SAVRES_NOINLINE_GPRS_SAVES_LR, SAVRES_NOINLINE_FPRS_SAVES_LR,
1109         SAVRES_NOINLINE_FPRS_DOESNT_RESTORE_LR): New strategy bits.
1110         (rs6000_savres_strategy): Always save FP registers inline if the
1111         target doesn't support hardware double-precision.  Set the above
1112         bits in return value when needed.
1113         (rs6000_savres_routine_sym): Fix computation for cache selector.
1114         Mark the generated symbol as a function.  Rename exitp argument to
1115         lr.  Move code for determining the name of the symbol...
1116         (rs6000_savres_routine_name): ...here.  New function.  Add cases for
1117         getting the names right on AIX and 64-bit Linux.
1118         (savres_routine_name): New variable.
1119         (rs6000_make_savres_rtx): Rename exitp argument to lr.  Don't assert
1120         lr isn't set when savep.  Use r12 resp. r1 instead of r11 depending
1121         on what the target routine uses as a base register.  If savep && lr
1122         describe saving of r0 into memory slot.
1123         (rs6000_emit_prologue): Correct use of call_used_regs.  Fix out of
1124         line calls for AIX ABI.
1125         (rs6000_output_function_prologue): Use rs6000_savres_routine_name to
1126         determine FP save/restore functions.
1127         (rs6000_emit_stack_reset): Handle savres if sp_offset != 0 and
1128         frame_reg_rtx != sp_reg_rtx.  Use gen_add3_insn instead of
1129         gen_addsi3.
1130         (rs6000_emit_epilogue): Adjust computation of restore_lr.
1131         Duplicate restoration of LR and execute the appropriate one
1132         depending on whether GPRs are being restored inline.  Set r11 from
1133         offsetted frame_reg_rtx instead of sp_reg_rtx; if frame_reg_rtx is
1134         r11, adjust sp_offset.  Use gen_add3_insn instead of gen_addsi3.
1135         Fix out of line calls for AIX ABI.
1136         * config/rs6000/rs6000.md (*return_and_restore_fpregs_aix_<mode>):
1137         New insn.
1138         * config/rs6000/spe.md (*save_gpregs_spe): Use explicit match for
1139         register 11.
1140         (*restore_gpregs_spe): Likewise.
1141         (*return_and_restore_gpregs_spe): Likewise.
1142         * config/rs6000/linux64.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
1143         Define to empty string unconditionally.
1144         * config/rs6000/sysv4.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
1145         Define to empty string unconditionally.
1146         (GP_SAVE_INLINE, FP_SAVE_INLINE): Handle TARGET_64BIT the same as
1147         !TARGET_64BIT.
1148
1149 2009-09-15  Jan Hubicka  <jh@suse.cz>
1150
1151         * doc/invoke.texi (inline-insns-auto): Drop from 60 to 50.
1152         * params.def (inline-insns-auto): Likewise.
1153
1154 2009-09-15  Martin Jambor  <mjambor@suse.cz>
1155
1156         * ipa-inline.c (estimate_function_body_sizes): Dump info about
1157         individual statements only at TDF_DETAILS dump level.  Format
1158         source for 80 characters per line.
1159
1160 2009-09-15  Christian Bruel  <christian.bruel@st.com>
1161
1162         * regrename.c (do_replace): Update REG_DEAD notes.
1163
1164 2009-09-15  Revital Eres  <eres@il.ibm.com>
1165
1166         * doc/tm.texi (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Document.
1167         * targhooks.c (default_builtin_support_vector_misalignment):
1168         New builtin function.
1169         * targhooks.h (default_builtin_support_vector_misalignment):
1170         Declare.
1171         * target.h (builtin_support_vector_misalignment):
1172         New field in struct gcc_target.
1173         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Call
1174         new builtin function.
1175         * target-def.h (TARGET_SUPPORT_VECTOR_MISALIGNMENT):
1176         Define.
1177         * config/rs6000/rs6000.c
1178         (rs6000_builtin_support_vector_misalignment): New function.
1179         (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Define.
1180
1181 2009-09-15  Jie Zhang  <jie.zhang@analog.com>
1182
1183         * config/bfin/bfin.c (length_for_loop): Use NONDEBUG_INSN_P
1184         instead of INSN_P.
1185         (bfin_optimize_loop): Likewise.
1186         (bfin_gen_bundles): Likewise.
1187         (workaround_speculation): Likewise.
1188         (find_load): Return NULL_RTX for debug_insn.
1189
1190 2009-09-15  Uros Bizjak  <ubizjak@gmail.com>
1191
1192         * config/alpha/alpha.md (smaxsf3): Disable for IEEE mode.
1193         (sminsf3): Ditto.
1194
1195 2009-09-14  DJ Delorie  <dj@redhat.com>
1196
1197         * config/mep/mep.h (JUMP_TABLES_IN_TEXT_SECTION): Define.
1198         * config/mep/mep.c (mep_emit_cbranch): Don't use BEQZ/BNEI in
1199         VLIW mode.
1200
1201 2009-09-14  Richard Henderson  <rth@redhat.com>
1202             Jakub Jelinek  <jakub@redhat.com>
1203
1204         * builtins.c (expand_builtin_synchronize): Use gimple_build_asm_vec.
1205         * cfgbuild.c (make_edges): Handle asm goto.
1206         * cfglayout.c (fixup_reorder_chain): Likewise.
1207         * cfgrtl.c (patch_jump_insn): Likewise.
1208         * gimple-pretty-print.c (dump_gimple_asm): Likewise.
1209         * gimple.c (gimple_build_asm_1): Add and use nlabels parameter.
1210         (gimple_build_asm_vec): Add and use labels parameter.
1211         (gimple_build_asm): Remove.
1212         (walk_gimple_asm): Walk labels too.
1213         * gimple.def (GIMPLE_ASM): Update docs.
1214         * gimple.h: Update decls.
1215         (struct gimple_statement_asm): Change nc to use unsigned char;
1216         add nl member.
1217         (gimple_asm_nlabels): New.
1218         (gimple_asm_label_op, gimple_asm_set_label_op): New.
1219         * gimplify.c (gimplify_asm_expr): Copy labels from ASM_EXPR
1220         into gimple_build_asm_vec.
1221         * jump.c (mark_jump_label_asm): New.
1222         (mark_jump_label): Use it.
1223         (redirect_jump_1): Handle asm goto.
1224         (invert_jump_1): Soft fail if X is null.
1225         * recog.c (extract_asm_operands): New.
1226         (asm_noperands): Use it; handle asm labels.
1227         (decode_asm_operands): Use extract_asm_operands.
1228         (asm_operand_ok): Properly handle empty string.
1229         * reg-stack.c (get_asm_operands_in_out): Rename from
1230         get_asm_operand_n_inputs; use extract_asm_operands; return both
1231         inputs and outputs by reference; update all callers.
1232         * rtl.def (ASM_OPERANDS): Add label vector as operand 6.
1233         * rtl.h (ASM_OPERANDS_LABEL_VEC): New.
1234         (ASM_OPERANDS_LABEL_LENGTH, ASM_OPERANDS_LABEL): New.
1235         (ASM_OPERANDS_SOURCE_LOCATION): Renumber.
1236         (extract_asm_operands): Declare.
1237         * stmt.c (expand_asm_operands): Add and use labels parameter.
1238         (check_unique_operand_names): Likewise.
1239         (resolve_asm_operand_names, resolve_operand_name_1): Likewise.
1240         (expand_asm_stmt): Handle asm labels.
1241         * tree-cfg.c (make_gimple_asm_edges): New.
1242         (make_edges): Use it.
1243         (cleanup_dead_labels): Handle asm labels.
1244         (is_ctrl_altering_stmt): Likewise.
1245         (gimple_redirect_edge_and_branch): Likewise.
1246         * tree.def (ASM_EXPR): Add 5th operand.
1247         * tree.h (ASM_LABELS): New.
1248         (resolve_asm_operand_names): Update decl.
1249
1250         * c-parser.c (c_parser_asm_statement): Parse asm goto.
1251         (c_parser_asm_goto_operands): New.
1252         * c-tree.h (build_asm_expr): Update decl.
1253         * c-typeck.c (build_asm_expr): Add and use labels parameter.
1254         * doc/extend.texi: Document asm goto.
1255
1256 2009-09-14  Richard Henderson  <rth@redhat.com>
1257
1258         * except.h: Update declarations.
1259         (struct pointer_map_t): Forward declare.
1260         (ERT_UNKNOWN, ERT_THROW, ERT_CATCH): Remove.
1261         (struct eh_landing_pad_d, eh_landing_pad): New.
1262         (struct eh_catch_d, eh_catch): New.
1263         (struct eh_region_d): Remove next_region_sharing_label, aka,
1264         label, tree_label, landing_pad, post_landing_pad, resume,
1265         may_contain_throw.  Rename region_number to index.  Remove
1266         u.eh_catch, u.eh_throw.  Rename u.eh_try.eh_catch to first_catch.
1267         Add u.must_not_throw, landing_pads, exc_ptr_reg, filter_reg.
1268         (VEC(eh_landing_pad,gc)): New.
1269         (struct eh_status): Remove last_region_number.  Add lp_array,
1270         throw_stmt_table, ttype_data, ehspec_data.
1271         (ehr_next, FOR_ALL_EH_REGION_AT): New.
1272         (FOR_ALL_EH_REGION_FN, FOR_ALL_EH_REGION): New.
1273         * except.c (lang_protect_cleanup_actions): Return tree.
1274         (struct ehl_map_entry): Remove.
1275         (init_eh_for_function): Push zero entries for region and lp_array.
1276         (gen_eh_region): Add to region_array immediately.
1277         (gen_eh_region_catch): Operate on eh_catch objects.
1278         (gen_eh_landing_pad): New.
1279         (get_eh_region_may_contain_throw, get_eh_region_tree_label): Remove.
1280         (get_eh_region_no_tree_label, set_eh_region_tree_label): Remove.
1281         (get_eh_region_from_number, get_eh_region_from_number_fn): New.
1282         (get_eh_landing_pad_from_number_fn): New.
1283         (get_eh_landing_pad_from_number): New.
1284         (get_eh_region_from_lp_number_fn): New.
1285         (get_eh_region_from_lp_number): New.
1286         (expand_resx_stmt, note_eh_region_may_contain_throw): Remove.
1287         (get_exception_pointer, get_exception_filter): Remove.
1288         (collect_eh_region_array, can_be_reached_by_runtime): Remove.
1289         (current_function_has_exception_handlers): Simplify.
1290         (bring_to_root, eh_region_replaceable_by_p): Remove.
1291         (replace_region, hash_type_list, hash_eh_region): Remove.
1292         (eh_regions_equal_p, merge_peers, remove_unreachable_regions): Remove.
1293         (label_to_region_map, num_eh_regions): Remove.
1294         (get_next_region_sharing_label, must_not_throw_labels): Remove.
1295         (find_exception_handler_labels): Remove.
1296         (duplicate_eh_regions_0, find_prev_try): Remove.
1297         (struct duplicate_eh_regions_data): New.
1298         (duplicate_eh_regions_1): Rewrite.
1299         (duplicate_eh_regions): Return a pointer map instead of an
1300         integer offset.
1301         (copy_eh_region_1, copy_eh_region, push_reachable_handler): Remove.
1302         (redirect_eh_edge_to_label): Remove.
1303         (eh_region_outermost): Rewrite using eh_region pointers
1304         instead of integers.
1305         (add_ttypes_entry): Update for ttype_data move to eh_status.
1306         (add_ehspec_entry): Rewrite with VEC instead of varray.
1307         (assign_filter_values): Likewise.  Export.
1308         (build_post_landing_pads, connect_post_landing_pads): Remove.
1309         (dw2_build_landing_pads): Rewrite to use lp_array.
1310         (struct sjlj_lp_info, sjlj_find_directly_reachable_regions): Remove.
1311         (sjlj_assign_call_site_values): Rewrite to use lp_array.
1312         (sjlj_emit_dispatch_table, sjlj_build_landing_pads): Likewise.
1313         (sjlj_mark_call_sites): Update for landing pad numbers.
1314         (finish_eh_generation): Rewrite.
1315         (gate_handle_eh): Do nothing for no eh tree.
1316         (pass_rtl_eh): Move up near finish_eh_generation.
1317         (remove_eh_landing_pad): New.
1318         (remove_eh_handler): Export.
1319         (remove_eh_region, remove_eh_handler_and_replace): Remove.
1320         (for_each_eh_label): Rewrite to use lp_array.
1321         (make_reg_eh_region_note): New.
1322         (make_reg_eh_region_note_nothrow_nononlocal): New.
1323         (insn_could_throw_p): New.
1324         (copy_reg_eh_region_note_forward): New.
1325         (copy_reg_eh_region_note_backward): New.
1326         (check_handled, add_reachable_handler): Remove.
1327         (reachable_next_level, foreach_reachable_handler): Remove.
1328         (arh_to_landing_pad, arh_to_label, reachable_handlers): Remove.
1329         (get_eh_region_and_lp_from_rtx): New.
1330         (get_eh_region_from_rtx): New.
1331         (can_throw_internal_1, can_throw_external_1): Remove.
1332         (can_throw_internal): Use get_eh_region_from_rtx.
1333         (can_throw_external): Use get_eh_region_and_lp_from_rtx.
1334         (insn_nothrow_p, can_nonlocal_goto): New.
1335         (expand_builtin_eh_common, expand_builtin_eh_pointer): New.
1336         (expand_builtin_eh_filter, expand_builtin_eh_copy_values): New.
1337         (add_action_record): Use VEC not varray.
1338         (collect_one_action_chain): Update for eh_region changes.
1339         (convert_to_eh_region_ranges): Make static.  Use VEC not varray.
1340         Use get_eh_region_and_lp_from_rtx.
1341         (gate_convert_to_eh_region_ranges): New.
1342         (pass_convert_to_eh_region_ranges): Use it.
1343         (push_uleb128, push_sleb128): Use VEC not varray.
1344         (output_one_function_exception_table): Likewise.
1345         (dump_eh_tree): Update for eh_region changes.
1346         (verify_eh_tree): Likewise.
1347         (verify_eh_region, default_init_unwind_resume_libfunc): Remove.
1348         * tree-eh.c: Include target.h.
1349         (add_stmt_to_eh_lp_fn): Rename from add_stmt_to_eh_region_fn.
1350         Don't disallow GIMPLE_RESX; adjust argument check.
1351         (add_stmt_to_eh_lp): Rename from add_stmt_to_eh_region.
1352         (record_stmt_eh_region): Update for landing pad numbers;
1353         generate a landing pad if necessary.
1354         (remove_stmt_from_eh_lp): Rename from remove_stmt_from_eh_region.
1355         (remove_stmt_from_eh_lp_fn): Similarly.
1356         (lookup_stmt_eh_lp_fn): Rename from lookup_stmt_eh_region_fn.
1357         Update for lp numbers; don't special case missing throw_stmt_table.
1358         (lookup_expr_eh_lp): Similarly.
1359         (lookup_stmt_eh_lp): Rename from lookup_stmt_eh_region.
1360         (eh_seq, eh_region_may_contain_throw): New.
1361         (struct leh_state): Add ehp_region.
1362         (struct leh_tf_state): Remove eh_label.
1363         (emit_post_landing_pad): New.
1364         (emit_resx, emit_eh_dispatch): New.
1365         (note_eh_region_may_contain_throw): New.
1366         (frob_into_branch_around): Take eh_region not eh label;
1367         emit eh code into eh_seq.
1368         (honor_protect_cleanup_actions): Early exit for no actions.  Don't
1369         handle EXC_PTR_EXPR, FILTER_EXPR.  Use gimple_build_eh_must_not_throw,
1370         lower_eh_must_not_throw.  Emit code to eh_seq.
1371         (lower_try_finally_nofallthru): Emit eh code to eh_seq.
1372         (lower_try_finally_onedest): Likewise.
1373         (lower_try_finally_copy): Likewise.
1374         (lower_try_finally_switch): Likewise.
1375         (lower_try_finally): Initialize ehp_region.
1376         (lower_catch): Update for eh_catch objects.
1377         (lower_eh_filter): Don't handle must_not_throw.
1378         (lower_eh_must_not_throw): New.
1379         (lower_cleanup): Don't set eh_label.
1380         (lower_eh_constructs_2): Resolve eh builtins.
1381         Handle GIMPLE_EH_MUST_NOT_THROW.
1382         (lower_eh_constructs): Initialize eh_region_may_contain_throw.
1383         Add eh_seq to the end of the function body.
1384         (make_eh_dispatch_edges): New.
1385         (make_eh_edge): Remove.
1386         (make_eh_edges): Simplify for landing pads.
1387         (redirect_eh_edge_1): New.
1388         (redirect_eh_edge): Use it.
1389         (redirect_eh_dispatch_edge): New.
1390         (stmt_could_throw_p): Use a switch.  Allow RESX.
1391         (stmt_can_throw_external): Use lookup_stmt_eh_lp.
1392         (stmt_can_throw_internal): Likewise.
1393         (maybe_clean_eh_stmt_fn, maybe_clean_eh_stmt): New.
1394         (maybe_clean_or_replace_eh_stmt): Update for landing pads.
1395         (maybe_duplicate_eh_stmt_fn, maybe_duplicate_eh_stmt): New.
1396         (gate_refactor_eh): New.
1397         (pass_refactor_eh): Use it.
1398         (lower_resx, execute_lower_resx, pass_lower_resx): New.
1399         (lower_eh_dispatch, execute_lower_eh_dispatch): New.
1400         (gate_lower_ehcontrol, pass_lower_eh_dispatch): New.
1401         (remove_unreachable_handlers): Rename from
1402         tree_remove_unreachable_handlers; rewrite for landing pads;
1403         call remove_eh_handler directly.
1404         (remove_unreachable_handlers_no_lp): New.
1405         (unsplit_eh, unsplit_all_eh): New.
1406         (tree_empty_eh_handler_p, all_phis_safe_to_merge): Remove.
1407         (cleanup_empty_eh_merge_phis, cleanup_empty_eh_move_lp): New.
1408         (cleanup_empty_eh_unsplit): New.
1409         (cleanup_empty_eh): Rewrite.
1410         (cleanup_all_empty_eh): New.
1411         (execute_cleanup_eh): Rename from cleanup_eh.  Remove unreachable
1412         handlers first.  Use unsplit_all_eh, cleanup_all_empty_eh.
1413         (gate_cleanup_eh): New.
1414         (pass_cleanup_eh): Use it.
1415         (verify_eh_edges): Move later in file.  Expect one EH edge.
1416         (verify_eh_dispatch_edge): New.
1417
1418         * Makefile.in (FUNCTION_H): Use vecprim.h, not varray.h.
1419         (gtype-desc.o): Add TARGET_H.
1420         (tree.o): Use EXCEPT_H, not except.h.
1421         (cfgbuild.o): Add EXPR_H.
1422         (GTFILES): Add vecprim.h.
1423         * builtins.c (expand_builtin): Handle BUILT_IN_EH_POINTER,
1424         BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES.
1425         * builtins.def (BUILT_IN_UNWIND_RESUME, BUILT_IN_EH_POINTER,
1426         BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES): New.
1427         * calls.c (emit_call_1): Use make_reg_eh_region_note.
1428         * cfgbuild.c (control_flow_insn_p): Use can_nonlocal_goto; tidy
1429         calls to can_throw_internal.
1430         (rtl_make_eh_edge): Use get_eh_landing_pad_from_rtx.
1431         (make_edges): Don't handle RESX; use can_nonlocal_goto.
1432         * cfgexpand.c (expand_gimple_stmt_1): Don't handle RESX.
1433         (expand_gimple_stmt): Use make_reg_eh_region_note.
1434         (expand_debug_expr): Don't handle EXC_PTR_EXPR and FILTER_EXPR.
1435         (gimple_expand_cfg): Don't call convert_from_eh_region_ranges,
1436         or find_exception_handler_labels.
1437         * cfgrtl.c (rtl_verify_flow_info_1): Don't handle RESX.  Assert
1438         there is exacly one EH edge.  Use can_nonlocal_goto and
1439         can_throw_internal.
1440         * cgraphunit.c (update_call_expr): Use maybe_clean_eh_stmt_fn.
1441         (cgraph_materialize_all_clones): Use maybe_clean_or_replace_eh_stmt.
1442         * combine.c (can_combine_p, try_combine): Use insn_nothrow_p.
1443         * cse.c (count_reg_usage, insn_live_p): Use insn_could_throw_p.
1444         * dce.c (deletable_insn_p_1): Don't test may_trap_p.
1445         (deletable_insn_p): Use insn_nothrow_p; reorder nonjump insn test.
1446         * dse.c (scan_insn): Use insn_could_throw_p.
1447         * emit-rtl.c (try_split): Use copy_reg_eh_region_note_backward.
1448         * expr.c (expand_expr_real): Use make_reg_eh_region_note.
1449         (expand_expr_real_1): Don't handle RESX, EXC_PTR, or FILTER_EXPR.
1450         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't handle
1451         EXC_PTR_EXPR or FILTER_EXPR.
1452         (tree_expr_nonzero_warnv_p): Likewise.
1453         * function.h: Include vecprim.h, not varray.h
1454         (struct rtl_eh): Remove filter, exc_ptr, built_landing_pad members;
1455         move ttype_data and ehspec_data members to struct eh_status; change
1456         action_record_data member to a VEC.
1457         * gcse.c (hash_scan_set): Use can_throw_internal.
1458         * gengtype.c (open_base_files): Add target.h to gtype-desc.c.
1459         * gimple-iterator.c (gsi_replace): Use maybe_clean_or_replace_eh_stmt.
1460         * gimple-low.c (lower_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.
1461         (block_may_fallthru): Don't handle RESX_EXPR.
1462         * gimple-pretty-print.c (dump_gimple_label): Dump EH_LANDING_PAD_NR.
1463         (dump_gimple_eh_must_not_throw, dump_gimple_eh_dispatch): New.
1464         (dump_gimple_stmt): Dump landing pad information with TDF_EH;
1465         handle GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH.
1466         * gimple.c (gss_for_code): Handle GIMPLE_EH_MUST_NOT_THROW,
1467         GIMPLE_EH_DISPATCH, GIMPLE_RESX.
1468         (gimple_size): Likewise.
1469         (gimple_build_eh_dispatch, gimple_build_eh_must_not_throw): New.
1470         (gimple_build_resx): Use gimple_build_with_ops.
1471         (DEFTREECODE): Don't handle EXC_PTR_EXPR, FILTER_EXPR.
1472         (is_gimple_val): Likewise.
1473         (is_gimple_stmt): Remove RESX_EXPR.
1474         * gimple.def (GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH): New.
1475         (GIMPLE_RESX): Reorder with other EH constructs.
1476         * gimple.h (struct gimple_statement_eh_mnt): New.
1477         (struct gimple_statement_eh_ctrl): Rename from gimple_statement_resx.
1478         (gimple_eh_filter_must_not_throw): Remove.
1479         (gimple_eh_filter_set_must_not_throw): Remove.
1480         (gimple_eh_must_not_throw_fndecl): New.
1481         (gimple_eh_dispatch_region, gimple_eh_dispatch_set_region): New.
1482         (is_gimple_resx): New.
1483         * gimplify.c (gimplify_expr): Don't handle EXC_PTR_EXPR, RESX_EXPR.
1484         Don't copy EH_FILTER_MUST_NOT_THROW.
1485         * gsstruct.def (GSS_EH_MNT, GSS_EHCONTROL): New.
1486         * ipa-inline.c (estimate_function_body_sizes): Don't try to
1487         handle must_not_throw_labels specially.
1488         * ipa-pure-const.c (check_call): Update debug statement for LP.
1489         * ipa-type-escape.c (check_operand): Don't handle EXC_PTR or FILTER.
1490         * ipa-utils.c (get_base_var): Likewise.
1491         * libfunc.h (LTI_unwind_resume, unwind_resume_libfunc): Remove.
1492         * lower-subreg.c (move_eh_region_note): Remove.
1493         (resolve_simple_move): Use copy_reg_eh_region_note_forward.
1494         * omp-low.c (new_omp_context): Update for eh_lp_nr.
1495         (create_task_copyfn): Likewise.
1496         (maybe_catch_exception): Use gimple_build_eh_filter.
1497         * optabs.c (emit_libcall_block): Update test for no-nonlocal-goto
1498         REG_EH_REGION.  Use make_reg_eh_region_note_nothrow_nononlocal.
1499         * passes.c (init_optimization_passes): Add pass_lower_eh_dispatch
1500         and pass_lower_resx.
1501         * print-tree.c (print_node): Dump EH_LANDING_PAD_NR.
1502         * recog.c (peephole2_optimize): Use copy_reg_eh_region_note_backward,
1503         can_throw_internal, can_nonlocal_goto.
1504         * reload1.c (fixup_eh_region_note): Use insn_could_throw_p,
1505         copy_reg_eh_region_note_forward.
1506         (emit_input_reload_insns): Use copy_reg_eh_region_note_forward.
1507         (emit_output_reload_insns): Likewise.
1508         (copy_eh_notes): Remove.
1509         * rtl.def (RESX): Remove.
1510         * rtl.h: Update declarations.
1511         * sese.c (graphite_copy_stmts_from_block): Use maybe_duplicate_eh_stmt.
1512         * tree-cfg.c (make_edges): Handle GIMPLE_EH_DISPATCH.
1513         (update_eh_label): Remove.
1514         (cleanup_dead_labels_eh): New.
1515         (cleanup_deal_labels): Use it instead of update_eh_label.
1516         (gimple_merge_blocks): Update landing pad data structure when
1517         removing a landing pad label.
1518         (remove_useless_stmts_tc): Remove gimple_eh_filter_must_not_throw
1519         test; handle GIMPLE_EH_MUST_NOT_THROW.
1520         (is_ctrl_altering_stmt): Handle GIMPLE_EH_DISPATCH.
1521         (verify_gimple_assign_single): Don't handle EXC_PTR or FILTER_EXPR.
1522         (verify_types_in_gimple_stmt): Handle GIMPLE_EH_DISPATCH.
1523         (verify_stmt): Likewise.  Verify landing pads.
1524         (gimple_redirect_edge_and_branch): Handle GIMPLE_EH_DISPATCH.
1525         (gimple_duplicate_bb): Use maybe_duplicate_eh_stmt.
1526         (struct move_stmt_d): Add eh_map.
1527         (move_stmt_eh_region_nr, move_stmt_eh_region_tree_nr): New.
1528         (move_stmt_r): Remap eh region numbers in builtin calls,
1529         resx and eh_dispatch.
1530         (move_block_to_fn): Remove eh_offset parameter.  Use
1531         maybe_duplicate_eh_stmt_fn.
1532         (find_outermost_region_in_block): Operate on eh_region pointers
1533         instead of region numbers.
1534         (move_sese_region_to_fn): Expect eh_map instead of eh_offset from
1535         duplicate_eh_regions.
1536         * tree-cfgcleanup.c (tree_forwarder_block_p): Move entry block edge
1537         test earlier.  Disallow EH landing pads.
1538         * tree-cfa.c (create_tree_common_ann): Don't set ann->rn.
1539         * tree-flow.h: Update declarations.
1540         (struct tree_ann_common_d): Replace rn with lp_nr.
1541         * tree-inline.c (copy_tree_body_r): Don't handle RESX_EXPR.
1542         (remap_eh_region_nr, remap_eh_region_tree_nr): New.
1543         (remap_gimple_stmt): Remap eh region numbers in builtin calls,
1544         resx and eh_dispatch.
1545         (copy_bb): Use maybe_duplicate_eh_stmt_fn.
1546         (copy_edges_for_bb): Use make_eh_dispatch_edges.
1547         (copy_cfg_body): Expect eh_map instead of eh_region_offset
1548         from duplicate_eh_regions.
1549         (estimate_num_insns): Don't handle EXC_PTR_EXPR or FILTER_EXPR;
1550         update RESX; handle EH_DISPATCH.
1551         (expand_call_inline): Set eh_lp_nr, not eh_region.
1552         (maybe_inline_call_in_expr): Likewise.
1553         * tree-inline.h (struct copy_body_data): Replace eh_region with
1554         eh_lp_nr, eh_region_offset with eh_map.
1555         * tree-optimize.c (execute_fixup_cfg): Use maybe_clean_eh_stmt.
1556         * tree-pass.h (pass_lower_eh_dispatch, pass_lower_resx): New.
1557         * tree-pretty-print.c (dump_generic_node): Don't handle
1558         EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR.
1559         * tree-sra.c (scan_function): Use maybe_clean_eh_stmt.
1560         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Don't handle
1561         EXC_PTR_EXPR, FILTER_EXPR.
1562         * tree-ssa-operands.c (get_expr_operands): Likewise.
1563         * tree-ssa-propagate.c (valid_gimple_rhs_p): Likewise.
1564         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
1565         (ao_ref_init_from_vn_reference): Likewise.
1566         * tree-ssa-sink.c (statement_sink_location): Likewise.
1567         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
1568         (mark_virtual_phi_result_for_renaming): Export.  Tidy.
1569         * tree-ssa-pre.c (get_or_alloc_expr_for): Don't handle
1570         EXC_PTR_EXPR, FILTER_EXPR.
1571         (is_exception_related): Remove.
1572         (compute_avail): Don't call it.
1573         * tree-ssa-structalias.c: Remove VEC definitions for int and unsigned.
1574         * tree.c (find_decls_types_in_eh_region): Update for eh_region changes.
1575         (find_decls_types_in_node): Use FOR_ALL_EH_REGION_FN.
1576         (build_common_builtin_nodes): Add enable_cxa_end_cleanup parameter.
1577         Build EH builtins.
1578         (build_resx): Remove.
1579         * tree.def (EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR): Remove.
1580         * tree.h: Update declarations.
1581         (EH_FILTER_MUST_NOT_THROW): Remove.
1582         (struct tree_label_decl): Add eh_landing_pad_nr.
1583         (EH_LANDING_PAD_NR): New.
1584         * value-prof.c (gimple_ic): Tidy variable names.  Update for
1585         landing pad numbers.
1586         (gimple_stringop_fixed_value): Tidy variable names.  Assert
1587         that neither call stmt can throw.
1588         * vecprim.h (uchar): New.
1589         (VEC(uchar,heap), VEC(uchar,gc)): New.
1590
1591         * c-common.c (c_define_builtins): Update call to
1592         build_common_builtin_nodes.
1593         * c-parser.c (c_parse_file): Don't call
1594         default_init_unwind_resume_libfunc.
1595
1596 2009-09-14  Richard Sandiford  <rdsandiford@googlemail.com>
1597
1598         * config/mips/mips-protos.h (mips_cfun_has_cprestore_slot_p): Declare.
1599         (mips_cprestore_address_p): Likewise.
1600         (mips_save_gp_to_cprestore_slot): Likewise.
1601         (mips_restore_gp): Rename to...
1602         (mips_restore_gp_from_cprestore_slot): ...this.
1603         (mips_must_initialize_gp_p): Declare.
1604         (mips_emit_save_slot_move): Likewise.
1605         (mips_output_load_label): Return nothing.
1606         (mips_eh_uses): Declare.
1607         * config/mips/mips.h (TARGET_SPLIT_CALLS): Require epilogue_completed.
1608         (TARGET_CPRESTORE_DIRECTIVE): New macro.
1609         (TARGET_ABSOLUTE_JUMPS): Likewise.
1610         (EH_USES): Likewise.
1611         (FIRST_PSEUDO_REGISTER): Update comment.
1612         (MIPS_ABSOLUTE_JUMP): New macro, extracted from...
1613         (MIPS_CALL): ...here.
1614         (REGISTER_NAMES): Add $cprestore.
1615         * config/mips/mips.c (machine_function): Remove has_gp_insn_p.
1616         Add load_label_length, has_inflexible_gp_insn_p,
1617         has_flexible_gp_insn_p, must_initialize_gp_p and
1618         must_restore_gp_when_clobbered_p.
1619         (mips_expand_call): Don't generate split instructions here.
1620         (mips_split_call): Update the call to mips_restore_gp after
1621         the above name change.
1622         (mips16_cfun_returns_in_fpr_p): Move earlier in file.
1623         (mips_find_gp_ref): New function.
1624         (mips_insn_has_inflexible_gp_ref_p): Likewise.
1625         (mips_cfun_has_inflexible_gp_ref_p): Likewise.
1626         (mips_insn_has_flexible_gp_ref_p): Likewise.
1627         (mips_cfun_has_flexible_gp_ref_p): Likewise.
1628         (mips_function_has_gp_insn): Delete.
1629         (mips_global_pointer): Drop the df_regs_ever_live_p check.
1630         Use the new functions above.  Only return INVALID_REGNUM
1631         for TARGET_ABSOLUTE_JUMPS.
1632         (mips_must_initialize_gp_p): New function.
1633         (mips_get_cprestore_base_and_offset): New function, extracted from...
1634         (mips_cprestore_slot): ...here.  Take a bool parameter.
1635         (mips_cfun_has_cprestore_slot_p): New function.
1636         (mips_cprestore_address_p): Likewise.
1637         (mips_save_gp_to_cprestore_slot): Likewise.
1638         (mips_restore_gp): Rename to...
1639         (mips_restore_gp_from_cprestore_slot): ...this.  Assert
1640         epilogue_completed.  Update the call to mips_cprestore_slot.
1641         Test cfun->machine->must_restore_gp_when_clobbered_p.
1642         (mips_direct_save_slot_move_p): New function.
1643         (mips_emit_save_slot_move): Likewise.
1644         (mips_output_cplocal): Test mips_must_initialize_gp_p () instead
1645         of cfun->machine->global_pointer.
1646         (mips_output_function_prologue): Check mips_must_initialize_gp_p ().
1647         (mips_save_reg): Use mips_emit_save_slot_move.
1648         (mips_expand_prologue): Set must_initialize_gp_p.
1649         Use mips_cfun_has_cprestore_slot_p.  Use gen_potential_cprestore
1650         for all cprestore saves.  Emit a use_cprestore instruction after
1651         setting up the cprestore slot.
1652         (mips_restore_reg): Use mips_emit_save_slot_move.
1653         (mips_process_load_label): New function.
1654         (mips_load_label_length): Likewise.
1655         (mips_output_load_label): Don't return asm: output it here instead.
1656         Use mips_process_load_label.
1657         (mips_adjust_insn_length): Adjust the length of branch instructions
1658         that have length MAX_PIC_BRANCH_LENGTH.
1659         (mips_output_conditional_branch): Update the call to
1660         mips_output_load_label.  Assume the branch target is OPERANDS[0]
1661         rather than OPERANDS[1].  Use MIPS_ABSOLUTE_JUMP for absolute jumps.
1662         (mips_output_order_conditional_branch): Swap the meaning of
1663         OPERANDS[0] and OPERANDS[1].
1664         (mips_variable_issue): Don't count ghost instructions.
1665         (mips_expand_ghost_gp_insns): New function.
1666         (mips_reorg): Rerun mips_reorg_process_insns if it returns true.
1667         (mips_output_mi_thunk): Set must_initialize_gp_p.
1668         (mips_eh_uses): New function.
1669         * config/mips/predicates.md (cprestore_save_slot_operand)
1670         (cprestore_load_slot_operand): New predicates.
1671         * config/mips/mips.md (UNSPEC_POTENTIAL_CPRESTORE): New unspec.
1672         (UNSPEC_MOVE_GP): Likewise.
1673         (UNSPEC_CPRESTORE, UNSPEC_RESTORE_GP, UNSPEC_EH_RETURN)
1674         (UNSPEC_CONSTTABLE_INT, UNSPEC_CONSTTABLE_FLOAT): Bump to make room.
1675         (CPRESTORE_SLOT_REGNUM): New register.
1676         (MAX_PIC_BRANCH_LENGTH): New constant.
1677         (jal_macro): Use MIPS_ABSOLUTE_JUMPS.
1678         (length): Use MAX_PIC_BRANCH_LENGTH as a placeholder for PIC long
1679         branches.  Fix commentary.
1680         (loadgp_newabi_<mode>): Change from unspec_volatile to unspec.
1681         Only split if mips_must_initialize_gp_p; expand to nothing otherwise.
1682         Change type to "ghost".
1683         (loadgp_absolute_<mode>): Likewise.
1684         (loadgp_rtp_<mode>): Likewise.
1685         (copygp_mips16): Likewise.
1686         (loadgp_blockage): Remove redundant mode attribute.
1687         (potential_cprestore): New instruction.
1688         (cprestore): Turn into an unspec set.
1689         (use_cprestore): New instruction.
1690         (*branch_fp): Swap operands 0 and 1.  Remove redundant mode attribute.
1691         (*branch_fp_inverted): Likewise.
1692         (*branch_order<mode>): Likewise.
1693         (*branch_order<mode>_inverted): Likewise.
1694         (*branch_equality<mode>): Likewise.
1695         (*branch_equality<mode>_inverted): Likewise.
1696         (*branch_bit<bbv><mode>): Likewise.
1697         (*branch_bit<bbv><mode>_inverted): Likewise.
1698         (*branch_equality<mode>_mips16): Remove redundant mode.
1699         (jump): Turn into a define_expand.
1700         (*jump_absolute): New instruction.
1701         (*jump_pic): Likewise.
1702         (*jump_mips16): Rename previously-unnamed pattern.  Remove
1703         redundant mode attribute.
1704         (restore_gp): Split on epilogue_completed rather than
1705         reload_completed.  Change type to "ghost".
1706         (move_gp<mode>): New instruction.
1707         * config/mips/mips-dsp.md (mips_bposge): Swap operands 0 and 1.
1708         Remove redundant mode attribute.
1709         * config/mips/mips-ps-3d.md (bc1any4t): Likewise.
1710         (bc1any4f, bc1any2t, bc1any2f): Likewise.
1711         (*branch_upper_lower, *branch_upper_lower_inverted): Likewise.
1712
1713 2009-09-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
1714
1715         PR target/41210
1716         * config/rs6000/rs6000.c (rs6000_function_value): V2DF and V2DI
1717         are returned in the same register (vs34 or v2) that Altivec vector
1718         types are returned in.
1719         (rs6000_libcall_value): Ditto.
1720
1721         PR target/41331
1722         * config/rs6000/rs6000.c (rs6000_emit_move): Use gen_add3_insn
1723         instead of explicit addsi3/adddi3 calls.
1724         (rs6000_split_multireg_move): Ditto.
1725         (rs6000_emit_allocate_stack): Ditto.
1726         (rs6000_emit_prologue): Ditto.
1727         (rs6000_output_mi_thunk): Ditto.
1728
1729         * config/rs6000/rs6000.md (bswapdi*): Don't assume the pointer
1730         size is 64 bits if we can use 64-bit registers.
1731
1732 2009-09-14  Bernd Schmidt  <bernd.schmidt@analog.com>
1733
1734         * config/bfin/bfin.c (bfin_longcall_p): Don't use short calls for weak
1735         symbols.
1736
1737         From Jie Zhang <jie.zhang@analog.com>:
1738         * config/bfin/bfin.c (bfin_expand_prologue): Ask do_link to
1739         save FP and RETS with saveall attribute.
1740         (bfin_expand_epilogue): Ask do_unlink to restore FP and RETS
1741         with saveall attribute.
1742
1743         * config/bfin/bfin.c (bfin_expand_builtin,
1744         case BFIN_BUILTIN_MULT_1X32X32): Force constants to registers for the
1745         operands.
1746
1747         From Jie Zhang <jie.zhang@analog.com>:
1748         * config/bfin/bfin.c (bfin_expand_builtin): Initialize icodes
1749         before use in two places.
1750         * config/bfin/bfin.md (AREG): Define mode iterator.
1751         (reload_in, reload_out): Use mode iterator AREG.
1752
1753 2009-09-14  Richard Guenther  <rguenther@suse.de>
1754
1755         PR middle-end/41350
1756         * dwarf2out.c (dwarf2out_begin_prologue): Adjust non-CFI asm
1757         EH personality path.
1758
1759 2009-09-13  Richard Guenther  <rguenther@suse.de>
1760             Rafael Avila de Espindola  <espindola@google.com>
1761
1762         * langhooks-def.h (LANG_HOOKS_EH_RUNTIME_TYPE): Define.
1763         (LANG_HOOKS_EH_PERSONALITY): Likewise.
1764         (LANG_HOOKS_INITIALIZER): Adjust.
1765         (lhd_pass_through_t): Declare.
1766         * langhooks.h (struct lang_hooks): Add eh_runtime_type and
1767         eh_personality.
1768         * langhooks.c (lhd_pass_through_t): New function.
1769         * dwarf2out.c (output_call_frame_info, dwarf2out_do_cfi_startproc,
1770         dwarf2out_begin_prologue): Use personality from current_function_decl.
1771         * expr.h (get_personality_function): Declare.
1772         * expr.c (get_personality_function): New function.
1773         (build_personality_function): Likewise.
1774         * libfuncs.h (libfunc_index): Remove LTI_eh_personality.
1775         (eh_personality_libfunc): Remove.
1776         * optabs.c (build_libfunc_function): New function split out from ...
1777         (init_one_libfunc): ... here.
1778         * tree.h (DECL_FUNCTION_PERSONALITY): New.
1779         (tree_function_decl): Add personality.
1780         (lhd_gcc_personality): Declare.
1781         (build_personality_function): Likewise.
1782         * tree.c (gcc_eh_personality_decl): New.
1783         (lhd_gcc_personality): New function.
1784         * except.h (lang_eh_runtime_type): Remove.
1785         (enum eh_personality_kind): New.
1786         (build_personality_function): Declare.
1787         (function_needs_eh_personality): Declare.
1788         * except.c (lang_eh_runtime_type): Remove.
1789         (function_needs_eh_personality): New function.
1790         (add_type_for_runtime): Call lang_hooks.type_for_runtime instead.
1791         (sjlj_emit_function_enter, output_function_exception_table):
1792         Use personality from current_function_decl.
1793         * tree-eh.c (lower_eh_constructs): Set DECL_FUNCTION_PERSONALITY.
1794         * tree-inline.c (tree_can_inline_p): Do not inline across different
1795         EH personalities.
1796         (expand_call_inline): Likewise.  Adjust the callers EH personality.
1797         (tree_function_versioning): Copy DECL_FUNCTION_PERSONALITY.
1798         * cgraph.c (cgraph_add_new_function): Set DECL_FUNCTION_PERSONALITY.
1799         * Makefile.in (cgraph.o): Add $(EXCEPT_H) dependency.
1800         (c-parser.o): Likewise
1801         * c-tree.h (c_eh_initialized_p): Remove.
1802         (c_maybe_initialize_eh): Likewise.
1803         * c-decl.c (finish_decl): Don't call c_maybe_initialize_eh.
1804         (finish_decl): Don't call c_maybe_initialize_eh.
1805         (c_eh_initialized_p): Remove.
1806         (c_maybe_initialize_eh): Likewise.
1807         * c-parser.c (c_parser_omp_construct): Likewise.
1808         (c_parse_file): Initialize exception handling.
1809
1810 2009-09-13  Kai Tietz  <kai.tietz@onevision.com>
1811
1812         * config.gcc (tm_file): Remove i386/biarch32.h
1813         for i?86-w64-mingw* case.
1814         (i?86-*-mingw* andx86_64-*-mingw*): Add multilib
1815         support.
1816         * config.host: Set for x64 mingw the option
1817         use_long_long_for_widest_fast_int to yes.
1818
1819 2009-09-13  Eric Botcazou  <ebotcazou@adacore.com>
1820
1821         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
1822         * dbxout.c (dbxout_function_end): Do not test DECL_IGNORED_P.
1823         (dbxout_begin_function): Likewise.
1824         * final.c (dwarf2_debug_info_emitted_p): New predicate.
1825         (final_start_function): Do not emit debug info if DECL_IGNORED_P is
1826         set on the function.
1827         (final_end_function): Likewise.
1828         (final_scan_insn): Likewise.
1829         (rest_of_handle_final): Likewise.
1830         * varasm.c (assemble_start_function): Likewise.
1831         * config/rs6000/xcoff.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
1832
1833 2009-09-12  Jason Merrill  <jason@redhat.com>
1834
1835         * dbgcnt.c (dbg_cnt_process_single_pair): constify.
1836         * opts.c (common_handle_option): constify.
1837
1838 2009-09-12  Gerald Pfeifer  <gerald@pfeifer.com>
1839
1840         * doc/install.texi (avr): Remove obsolete reference site.
1841
1842 2009-09-12  Gerald Pfeifer  <gerald@pfeifer.com>
1843         
1844         * doc/install.texi (Binaries): Adjust AIX link.
1845
1846 2009-09-12  Akim Demaille  <demaille@gostai.com>
1847
1848         * doc/invoke.texi (-fstrict-aliasing): Correct two examples.
1849         Use an imperative sentence.
1850
1851 2009-09-11  Richard Henderson  <rth@redhat.com>
1852
1853         * gsstruct.def (DEFGSSTRUCT): Remove printable-name argument; add
1854         structure-name and has-tree-operands arguments; update all entries.
1855         * gimple.def (DEFGSCODE): Replace 3rd argument with GSS_symbol;
1856         update all entries.
1857         * gimple.c (gimple_ops_offset_): Use HAS_TREE_OP argument.
1858         (gsstruct_code_size): New.
1859         (gss_for_code_): New.
1860         (gss_for_code): Remove.
1861         (gimple_size): Rewrite using gsstruct_code_size.
1862         (gimple_statement_structure): Move to gimple.h.
1863         * gimple.h (gimple_ops_offset_, gss_for_code_): Declare.
1864         (gss_for_code, gimple_statement_structure): New.
1865         (gimple_ops): Use new arrays; tidy.
1866
1867 2009-09-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1868
1869         * config/pa/predicates.md (symbolic_operand): Require a CONST symbolic
1870         operand to be a PLUS expression.
1871         * config/pa/pa.c (pa_secondary_reload): Likewise.
1872
1873 2009-09-11  Jakub Jelinek  <jakub@redhat.com>
1874
1875         * combine.c (propagate_for_debug_subst): Call wrap_constant on top.
1876
1877         * print-rtl.c (print_rtx): Use JUMP_LABEL (in_rtx) instead of
1878         XEXP (in_rtx, 8).
1879
1880 2009-09-11  Bernd Schmidt  <bernd.schmidt@analog.com>
1881
1882         From Jie Zhang <jie.zhang@analog.com>:
1883         * doc/extend.texi (node Function Attributes): Document l2
1884         function attribute.
1885         (node Blackfin Variable Attributes): Document l2 variable attributes.
1886
1887 2009-09-11  Loren J. Rittle  <ljrittle@acm.org>
1888
1889         * config.gcc (*-*-freebsd*): Enable default_use_cxa_atexit
1890         to match the system compiler's configuration at inflection point.
1891         Add comment to remark a remaining difference with system compiler.
1892
1893         * configure.ac (*-*-freebsd*): Enable check for __stack_chk_fail.
1894         * configure: Regenerate.
1895
1896 2009-09-11  Bernd Schmidt  <bernd.schmidt@analog.com>
1897
1898         From Jie Zhang <jie.zhang@analog.com>:
1899         * config/bfin/bfin.c (bfin_expand_call): Handle L2 functions.
1900         (bfin_handle_l2_attribute): New.
1901         (bfin_attribute_table): Add l2 attribute.
1902
1903 2009-09-11  Michael Matz  <matz@suse.de>
1904
1905         PR middle-end/41275
1906         * tree-inline.c (remap_decls): Don't put DECL_EXTERNAL decls
1907         on the local_decls list.
1908
1909 2009-09-11  Alexandre Oliva  <aoliva@redhat.com>
1910
1911         PR debug/41276
1912         PR debug/41307
1913         * cselib.c (cselib_expand_value_rtx_cb): Document callback
1914         interface.
1915         (cselib_expand_value_rtx_1): Use callback for SUBREGs.  Adjust
1916         for VALUEs, to implement the documented interface.
1917         * var-tracking.c (vt_expand_loc_callback): Handle SUBREGs.
1918         Adjust for VALUEs and anything else, to implement the
1919         documented interface.
1920
1921 2009-09-10  Nathan Froyd  <froydnj@codesourcery.com>
1922
1923         * config/rs6000/rs6000.h (DATA_ALIGNMENT): Check that we are dealing
1924         with actual SPE/paired vector modes before using 64-bit alignment.
1925         Check that TYPE is a REAL_TYPE for TARGET_E500_DOUBLE.
1926
1927 2009-09-10  DJ Delorie  <dj@redhat.com>
1928
1929         * config/mep/mep.md (eh_epilogue): Defer until after epilogue is
1930         emitted.
1931
1932         * config/mep/mep.h (LEGITIMATE_CONSTANT_P): New.
1933         * config/mep/mep.c (mep_legitimate_constant_p): New.
1934         * config/mep/mep-protos.h: Prototype it.
1935
1936 2009-09-10  Richard Henderson  <rth@redhat.com>
1937
1938         * print-rtl.c (print_rtx): Fix JUMP_LABEL index.
1939
1940 2009-09-10  Jason Merrill  <jason@redhat.com>
1941
1942         * tree.c (chain_index): New fn.
1943         * tree.h: Declare it.
1944
1945 2009-09-10  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1946
1947         * config/sol2-c.c (cmn_err_length_specs): Initialize
1948         scalar_identity_flag.
1949
1950 2009-09-10  Richard Henderson  <rth@redhat.com>
1951
1952         * tree.h (struct tree_decl_common): Move align member earlier;
1953         move label_decl_uid member ...
1954         (struct tree_label_decl): ... here.
1955         (LABEL_DECL_UID): Update to match.
1956
1957         * tree-cfg.c (dump_function_to_file): Dump eh tree with TDF_EH,
1958         not TDF_DETAILS.
1959
1960         * tree-cfg.c (gimple_redirect_edge_and_branch): Do
1961         gimple_try_redirect_by_replacing_jump test after no-op and EH tests.
1962
1963         * tree-cfg.c (split_edge_bb_loc): Don't disallow placement at
1964         dest_prev if the edge is complex.
1965
1966         * tree-cfg.c (is_ctrl_stmt): Use a switch.
1967
1968         * tree-cfg.c (gimple_can_merge_blocks_p): Move label and
1969         loop latch tests earlier.
1970
1971         * gimple-iterator.c (gimple_find_edge_insert_loc): Insert
1972         before GIMPLE_RETURN, not after its predecessor; insert
1973         before GIMPLE_RESX.
1974
1975         * gimple-iterator.c (gimple_find_edge_insert_loc): Use
1976         gimple_seq_empty_p to test for no PHI nodes.
1977         * tree-cfg.c (split_critical_edges): Likewise.
1978
1979         * c-common.h (c_dialect_cxx, c_dialect_objc): Boolify.
1980
1981 2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
1982
1983         * final.c (shorten_branches) : Ignore DEBUG_INSN_P instructions
1984         introduced by the VTA branch merge.
1985
1986 2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
1987
1988         * ira-conflicts.c: Use fputs or putc instead of fprintf
1989         where appropriate.
1990         * cfg.c: Ditto.
1991         * toplev.c: Ditto.
1992         * tree-switch-conversion.c: Ditto.
1993
1994 2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
1995
1996         * config/picochip/picochip.c : Ignore DEBUG_INSN_P instructions
1997         introduced by the VTA branch merge.
1998
1999 2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
2000
2001         Revert:
2002         2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
2003
2004         PR rtl-optimization/39779
2005         * expr.c (convert_modes): Return when mode == oldmode after
2006         CONST_INTs are processed.
2007
2008 2009-09-10  Nick Clifton  <nickc@redhat.com>
2009
2010         * config/mep/mep.c (mep_encode_section_info): Copy weakness
2011         attribute and referring decl when creating renamed symbol.
2012
2013 2009-09-10  Richard Guenther  <rguenther@suse.de>
2014
2015         PR middle-end/41257
2016         * cgraphunit.c (cgraph_emit_thunks): Emit thunks only for
2017         reachable nodes.
2018         (cgraph_finalize_compilation_unit): Compute reachability
2019         before emitting thunks.  Properly process aliases before
2020         possibly removing unreachable nodes.
2021
2022 2009-09-10  Richard Guenther  <rguenther@suse.de>
2023
2024         PR middle-end/41254
2025         * tree.c (struct free_lang_data_d): Add worklist member.
2026         (find_decls_types_r): Push onto the worklist instead of recursing.
2027         Handle TREE_BINFOs properly.
2028         (find_decls_types): New function wrapped around find_decls_types_r
2029         to process the worklist.
2030         (find_decls_types_in_eh_region): Use it.
2031         (find_decls_types_in_node): Likewise.
2032         (find_decls_types_in_var): Likewise.
2033         (free_lang_data_in_cgraph): Likewise.  Free the worklist.
2034         * tree.h (RECORD_OR_UNION_TYPE_P): New.
2035         (AGGREGATE_TYPE_P): Adjust.
2036
2037 2009-09-09  Jason Merrill  <jason@redhat.com>
2038
2039         * configure.ac: Check glibc version even if we have an in-tree
2040         assembler.
2041
2042 2009-09-09  Anthony Green  <green@moxielogic.com>
2043
2044         * config/moxie/moxie.md (*movsi, *movhi, *movqi): Use xor to load
2045         the constant 0 when appropriate.
2046         * config/moxie/constraints.md: Add constraint O.
2047
2048         * config/moxie/moxie.c (moxie_setup_incoming_varargs): Adjust
2049         to pass up to 6 32-bit argument values in registers.
2050         (moxie_function_arg): Ditto.
2051         (moxie_arg_partial_bytes): Ditto.
2052         * config/moxie/moxie.h (FUNCTION_ARG_ADVANCE): Ditto.
2053         (REG_PARM_STACK_SPACE): Ditto.
2054         (FUNCTION_ARG_REGNO_P): Ditto.
2055
2056         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
2057         instruction to allocate stack space.
2058
2059 2009-09-09  Segher Boessenkool  <segher@kernel.crashing.org>
2060
2061         * config/rs6000/rs6000.md (bswapdi2_64bit): Fix
2062         unnecessarily stringent constraints.  Fix address
2063         calculation in the splitters.
2064
2065 2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
2066
2067         PR rtl-optimization/39779
2068         * expr.c (convert_modes): Return when mode == oldmode after
2069         CONST_INTs are processed.
2070
2071 2009-09-09  Kai Tietz  <kai.tietz@onevision.com>
2072
2073         PR/41315
2074         * config/i386.c (ix86_can_use_return_insn_p): Check for padding0, too.
2075         (ix86_expand_prologue): Take frame.padding0 into logic of
2076         to_allocate checks.
2077         (ix86_expand_epilogue): Likewise.
2078
2079 2009-09-09  Jakub Jelinek  <jakub@redhat.com>
2080
2081         * config/t-slibgcc-elf-ver (SHLIB_MAKE_SOLINK, SHLIB_INSTALL_SOLINK):
2082         New variables.
2083         (SHLIB_LINK, SHLIB_INSTALL): Use them.
2084         * config/t-slibgcc-libgcc: New file.
2085         * config.gcc (powerpc*-*-linux*, powerpc*-*-gnu*): Use it.
2086
2087 2009-09-09  Martin Jambor  <mjambor@suse.cz>
2088
2089         PR tree-optimization/41089
2090         * tree-sra.c (find_var_candidates): Do not consider va_lists in
2091         early SRA.
2092
2093 2009-09-09  Richard Henderson  <rth@redhat.com>
2094
2095         * gimple.h (CASE_GIMPLE_OMP): New.
2096         (is_gimple_omp): Use it.
2097         * tree-cfg.c (is_ctrl_altering_stmt): Likewise.
2098         (verify_gimple_debug): Likewise.
2099
2100 2009-09-09  Richard Guenther  <rguenther@suse.de>
2101
2102         PR tree-optimization/41101
2103         * tree-ssa-pre.c (maximal_set): Remove.
2104         (compute_antic_aux): Treat the maximal set as implicitly all ones.
2105         Defer all blocks we didn't visit at least one successor.
2106         (add_to_exp_gen): Do not add to the maximal set.
2107         (make_values_for_phi): Likewise.
2108         (compute_avail): Likewise.
2109         (init_pre): Do not allocate the maximal set.
2110         (execute_pre): Do not dump it.
2111
2112 2009-09-09  Martin Jambor  <mjambor@suse.cz>
2113
2114         * tree-cfg.c (verify_gimple_phi): Check that gimple_phi_result is
2115         an SSA_NAME rather than a is_gimple_variable.
2116
2117 2009-09-09  Richard Guenther  <rguenther@suse.de>
2118
2119         PR middle-end/41317
2120         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Remove
2121         code dealing with plain pointer bases.
2122         (maybe_fold_offset_to_reference): Likewise.
2123         (maybe_fold_stmt_addition): Adjust.
2124
2125 2009-09-09  Richard Guenther  <rguenther@suse.de>
2126
2127         * tree.c (free_lang_data_in_type): Do not free the type variant
2128         chains.
2129         (free_lang_data): Merge char_type_node with its properly signed
2130         variant.
2131         (pass_ipa_free): Collect after freeing language specific data.
2132
2133 2009-09-09  Michael Matz  <matz@suse.de>
2134
2135         PR middle-end/41268
2136         * cfgexpand.c (expand_gimple_stmt_1): Use an int for storing
2137         SUBREG_PROMOTED_UNSIGNED_P, instead of a bool.
2138         * rtl.h (struct rtx, SUBREG_PROMOTED_UNSIGNED_P): Update comments
2139         to reflect reality.
2140
2141 2009-09-08  DJ Delorie  <dj@redhat.com>
2142
2143         * config/mep/mep.c (conversions[]): Add "ml" pattern.
2144
2145 2009-09-04  Jason Merrill  <jason@redhat.com>
2146
2147         * tree.c (tree_find_value): Remove.
2148         * tree.h: Remove prototype.
2149         * varasm.c (assemble_external): Use value_member instead.
2150
2151 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
2152
2153         * toplev.c (process_options): Choose default debugging type when
2154         gtoggle enables debug info and type is unset.
2155
2156 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
2157
2158         PR debug/41276
2159         PR debug/41307
2160         * cselib.c (cselib_expand_value_rtx_1): Don't return copy of
2161         invalid subreg.
2162
2163 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
2164
2165         * configure: Rebuilt with modified libtool.m4.
2166
2167 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
2168
2169         PR debug/41229
2170         PR debug/41291
2171         PR debug/41300
2172         * tree-ssa.c (execute_update_addresses_taken): Update debug insns.
2173
2174 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
2175
2176         * tree-ssa-loop-ivopts.c (get_phi_with_result): Remove.
2177         (remove_statement): Likewise.
2178         (rewrite_use_nonlinear_expr): Adjust.
2179         (remove_unused_ivs): Collect SSA NAMEs to remove and call...
2180         * tree-ssa.c (release_defs_bitset): ... this.  New.
2181         * tree-flow.h (release_defs_bitset): Declare.
2182
2183 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
2184
2185         PR debug/41232
2186         * tree-ssa-phiopt.c (minmax_replacement): Skip debug stmts
2187         in the middle block.
2188
2189 2009-09-08  Kai Tietz  <kai.tietz@onevision.com>
2190
2191         * tree-ssa-reassoc.c (find_operand_rank): Cast pointer
2192         via intptr_t to long type.
2193         (insert_operand_rank): Cast long type via intptr_t to
2194         pointer type.
2195         * genattrtab.c (RTL_HASH): Use intptr_t to cast from
2196         pointer to scalar.
2197         * c-pretty-print.c (pp_c_tree_decl_identifier): Cast
2198         from pointer to unsigned via uintptr_t.
2199
2200         * configure.ac (GCC_STDINT_TYPES): Initialize intptr_t,
2201         uintptr_t, HAVE_INTTYPES_H, HAVE_STDINT_H, HAVE_UINTPTR_T,
2202         and HAVE_INTPTR_T.
2203         * configure: Regenerated.
2204         * config.in: Regenerated
2205         * system.h (stdint.h): Add include.
2206         (inttypes.h): Likewise.
2207         * Makefile.in (aclocal): Add config/stdint.m4.
2208         * aclocal.m4: Regenerated.
2209
2210 2009-09-08  Bernd Schmidt  <bernd.schmidt@analog.com>
2211
2212         * config/bfin/bfin.c (np_check_regno, np_after_branch): New static
2213         variables.
2214         (note_np_check_stores): New function.
2215         (harmless_null_pointer_p): New function.
2216         (trapping_loads_p): New args NP_REG and AFTER_NP_BRANCH.  Callers
2217         changed.  Take into account whether we're in the shadow of a condjump
2218         that tested NP_REG for NULL.
2219         Lose all code that tested for SEQUENCEs.
2220         (workaround_speculation): Avoid inserting NOPs for loads that are
2221         either always executed or a NULL pointer.
2222
2223 2009-09-08  Jan Hubicka  <jh@suse.cz>
2224
2225         * doc/invoke.texi (early-inlining-insns): Reduce from 12 to 8.
2226         * params.def (early-inlining-insns): Likewise.
2227
2228 2009-09-08  Jakub Jelinek  <jakub@redhat.com>
2229
2230         PR rtl-optimization/41239
2231         * sched-int.h (struct deps): Add last_function_call_may_noreturn field.
2232         * sched-rgn.c (deps_join): Join also last_function_call_may_noreturn
2233         lists.
2234         * sched-deps.c (sched_analyze_insn): Prevent moving trapping insns
2235         across calls, as the calls might not always return normally.
2236         (call_may_noreturn_p): New function.
2237         (deps_analyze_insn): Update last_function_call_may_noreturn list.
2238         (init_deps): Initialize it.
2239         (remove_from_deps): Also remove calls from
2240         last_function_call_may_noreturn list.
2241
2242 2009-09-07  Richard Henderson  <rth@redhat.com>
2243
2244         * tree-ssa-sccvn.c (vn_reference_lookup_3): Don't assume there are
2245         more VR->OPERANDS than LHS operands.  Free LHS before returning.
2246
2247 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
2248
2249         * config/bfin/bfin.md (UNSPEC_VOLATILE_STALL): New constant.
2250         (attr "addrtype"): New member "spreg".
2251         Use it if mem_spfp_address_operand is true for the address.
2252         (attr "type"): New entry "stall".
2253         (cpu_unit "load"): New.
2254         (insn_reservations "load32", "loadp", "loadi"): Add reservation of
2255         "load".
2256         (insn_reservation "loadsp"): New.
2257         (insn_reservation "load_stall1"): New.
2258         (insn_reservation "load_stall3"): New.
2259         (stall): New insn.
2260         * config/bfin/predicates.md (const1_operand, const3_operand): New.
2261         (mem_p_address_operand): Exclude stack and frame pointer based
2262         addresses.
2263         (mem_spfp_address_operand): New; match them here.
2264         * config/bfin/bfin.c (add_sched_insns_for_speculation): New function.
2265         (bfin_reorg): Call it if scheduling insns.
2266         (bfin_gen_bundles): Remove dummy insns created by
2267         add_sched_insns_for_speculation.
2268
2269         From Jie Zhang <jie.zhang@analog.com>:
2270         * config/bfin/bfin-protos.h (enum bfin_cpu_type, bfin_cpu_type,
2271         bfin_si_revision, bfin_workarounds): Move these ...
2272         * config/bfin/bfin.h: ... here.
2273
2274         From Mike Frysinger  <michael.frysinger@analog.com>
2275         * config/bfin/bfin-protos.h (bfin_cpu_type): Add BFIN_CPU_BF542M,
2276         BFIN_CPU_BF544M, BFIN_CPU_BF547M, BFIN_CPU_BF548M, and BFIN_CPU_BF549M.
2277         * config/bfin/bfin.c (bfin_cpus[]): Add 0.3 for bf542m, bf544m,
2278         bf547m, bf548m, and bf549m.
2279         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF542M__
2280         for BFIN_CPU_BF542M, __ADSPBF544M__ for BFIN_CPU_BF544M,
2281         __ADSPBF547M__ for BFIN_CPU_BF547M, __ADSPBF548M__ for
2282         BFIN_CPU_BF548M, and __ADSPBF549M__ for BFIN_CPU_BF549M.
2283         * config/bfin/t-bfin-elf (MULTILIB_MATCHES): Select bf532-none for
2284         bf542m-none, bf544m-none, bf547m-none, bf548m-none, and bf549m-none.
2285         * config/bfin/t-bfin-linux (MULTILIB_MATCHES): Likewise.
2286         * config/bfin/t-bfin-uclinux (MULTILIB_MATCHES): Likewise.
2287         * doc/invoke.texi (Blackfin Options): Document that -mcpu now accepts
2288         bf542m, bf544m, bf547m, bf548m, and bf549m.
2289
2290         From Jie Zhang <jie.zhang@analog.com>:
2291         * config/bfin/predicates.md (p_register_operand): New predicate.
2292         (dp_register_operand): New predicate.
2293         * config/bfin/bfin-protos.h (WA_05000074): Define.
2294         (ENABLE_WA_05000074): Define.
2295         * config/bfin/bfin.c (bfin_cpus[]): Add WA_05000074 for all cpus.
2296         (bfin_gen_bundles): Put dsp32shiftimm instruction in slot[0].
2297         * config/bfin/bfin.md (define_attr type): Add dsp32shiftimm.
2298         (define_attr addrtype): Allow load/store register to be P register.
2299         (define_attr storereg): New.
2300         (define_cpu_unit anomaly_05000074): New.
2301         (define_insn_reservation dsp32shiftimm): New.
2302         (define_insn_reservation dsp32shiftimm_anomaly_05000074): New.
2303         (define_insn_reservation loadp): Cannot use slot2.
2304         (define_insn_reservation loadsp): Cannot use slot2.
2305         (define_insn_reservation storep): Cannot use slot2. Does not
2306         apply when working around 05000074.
2307         (define_insn_reservation storep_anomaly_05000074): New.
2308         (define_insn_reservation storei): Does not apply when working
2309         around 05000074.
2310         (define_insn_reservation storei_anomaly_05000074): New.
2311         (define_attr length): Add dsp32shiftimm case.
2312         (define_insn movsi_insn32, movsi_insv, ashlsi3_insn, ashrsi3,
2313         ror_one, rol_one, lshrsi3, lshrpdi3, ashrpdi3, movhiv2hi_low,
2314         movhiv2hi_high, composev2hi, packv2hi, movv2hi_hi,
2315         ssashiftv2hi3, ssashifthi3, ssashiftsi3, lshiftv2hi3, lshifthi3):
2316         Set type as dsp32shiftimm for dsp32shiftimm alternatives.
2317
2318 2009-09-07  Martin Jambor  <mjambor@suse.cz>
2319
2320         PR middle-end/41282
2321         * tree-sra.c (create_artificial_child_access): Return NULL if
2322         build_ref_for_offset fails.
2323         (propagate_subacesses_accross_link): Allow build_ref_for_offset
2324         and create_artificial_child_access to fail.
2325
2326 2009-09-06  Dmitry Gorbachev  <d.g.gorbachev@gmail.com>
2327
2328         PR c++/41214
2329         * unwind-dw2.c (uw_init_context_1): Mark noinline.
2330         * config/ia64/unwind-ia64.c (uw_init_context_1): Likewise.
2331         * config/xtensa/unwind-dw2-xtensa.c (uw_init_context_1): Likewise.
2332
2333 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
2334
2335         * config/bfin/bfin.c (bfin_optimize_loop): When creating a new basic
2336         block, ensure it has an exit edge.  Emit a barrier after a jump.
2337
2338 2009-09-07  Nick Clifton  <nickc@redhat.com>
2339
2340         * gcc.c (this_is_linker_script): New variable.  Like
2341         this_is_library_file but for the %T constructor.
2342         (end_going_arg): If this_is_linker_script is set then locate the
2343         script and insert a --script switch before it
2344         (do_spec_2): Initialise this_is_linker_script.
2345         (do_spec_1): Likewise.  Handle %T construct.
2346         (eval_spec_function): Preserve this_is_linker_script.
2347         * doc/invoke.texi: Document %T construct in spec files.
2348         * config/m32c/m32c.h (LIB_SPEC): Use it.
2349
2350 2009-09-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
2351
2352         * rtl.h (PREFETCH_SCHEDULE_BARRIER_P): New macro.
2353         * sched-deps.c (sched_analyze_2): Make prefetches a hard barrier
2354         when volatile flag is set.
2355         * doc/rtl.texi (PREFETCH_SCHEDULE_BARRIER_P): Add documentation pieces.
2356
2357 2009-09-06  Eric Botcazou  <ebotcazou@adacore.com>
2358
2359         PR bootstrap/41241
2360         * combine-stack-adj.c (try_apply_stack_adjustment): Handle stores.
2361         (combine_stack_adjustments_for_block): Allow insns between stack
2362         adjustments and stores with corresponding pre-(dec|inc)rement or
2363         pre-modify operation.
2364
2365 2009-09-06  Jakub Jelinek  <jakub@redhat.com>
2366
2367         PR bootstrap/41241
2368         * combine-stack-adj.c (struct csa_memlist): Rename to...
2369         (struct csa_reflist): ... this.  Rename mem field to ref.
2370         (free_csa_memlist): Rename to...
2371         (free_csa_reflist): ... this.
2372         (record_one_stack_memref): Rename to...
2373         (record_one_stack_ref): ... this.  Handle also REG_P.
2374         (try_apply_stack_adjustment): Handle also REG_P.
2375         (struct record_stack_memrefs_data): Rename to...
2376         (struct record_stack_refs_data): ... this.  Rename memlist field to
2377         reflist.
2378         (record_stack_memrefs): Rename to...
2379         (record_stack_refs): ... this.  For DEBUG_INSNs keep traversing
2380         subexpressions instead of failing when a MEM contains SP references.
2381         For SP itself in DEBUG_INSNs queue it also onto reflist chain.
2382         (combine_stack_adjustments_for_block): Adjust for mem to ref renaming.
2383
2384 2009-09-06  Richard Guenther  <rguenther@suse.de>
2385
2386         PR middle-end/41144
2387         * tree.c (build_array_type): Do not record types marked
2388         with structural equality in the canonical type hashtable.
2389
2390 2009-09-06  Richard Guenther  <rguenther@suse.de>
2391
2392         PR middle-end/41261
2393         * tree-ssa-alias.c (refs_may_alias_p_1): Bail out for function decls.
2394
2395 2009-09-05  Richard Guenther  <rguenther@suse.de>
2396
2397         PR middle-end/41181
2398         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Use the correct type.
2399
2400 2009-09-05  Richard Guenther  <rguenther@suse.de>
2401
2402         PR debug/41273
2403         * tree-ssa-operands.c (get_tmr_operands): Pass through opf_no_vops.
2404
2405 2009-09-05  Richard Guenther  <rguenther@suse.de>
2406
2407         PR middle-end/41271
2408         * tree-ssa.c (useless_type_conversion_p): Drop qualifiers
2409         before comparing function argument types.
2410
2411 2009-09-05  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
2412
2413         PR target/41024
2414         * config/i386/mingw-w64.h (ASM_SPEC): Pass -v instead of -V to
2415         the assembler.
2416
2417 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
2418
2419         Revert:
2420         2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
2421
2422         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
2423         locators before emit_insn is called.
2424
2425 2009-09-04  Vladimir Makarov  <vmakarov@redhat.com>
2426
2427         PR bootstrap/41241
2428         * ira.c (update_equiv_reg): Revert my previous patch for the PR.
2429         * reginfo.c (resize_reg_info): Call allocate_reg_info if necessary.
2430         (reginfo_init): Don't call allocate_reg_info.
2431
2432 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
2433
2434         PR target/41262
2435         * config/alpha/alpha.c (alpha_does_function_need_gp): Use
2436         NONDEBUG_INSN_P instead of INSN_P.
2437
2438 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
2439
2440         PR debug/41225
2441         * tree-vect-stmts.c (vect_stmt_relevant_p): Skip debug uses.
2442
2443 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
2444
2445         PR target/41252
2446         * config/arm/vfp.md (*cmpdf_split_vfp): Fix src mode in the second
2447         pattern of the split.
2448
2449 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
2450
2451         * toplev.c (process_options): Move setter of flag_var_tracking
2452         before other tests that depend on it.  Move down setter of
2453         flag_rename_registers.  Don't enable var-tracking-assignments
2454         by default if selective scheduling is enabled.  Warn if both
2455         are enabled.
2456
2457 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
2458
2459         * var-tracking.c (dv_is_decl_p): Adjust NULL behavior to match
2460         comment.  Use switch statement to catch overlaps between rtx
2461         and tree codes.  Accept FUNCTION_DECLs in addition to those in...
2462         (IS_DECL_CODE): ... here. Remove.
2463         (check_value_is_not_decl): Remove.
2464         (dv_from_decl, dv_from_value): Check after conversion.
2465
2466 2009-09-04  Richard Guenther  <rguenther@suse.de>
2467
2468         PR middle-end/41257
2469         * (cgraph_finalize_compilation_unit): Move finalizing aliases
2470         after emitting tunks.  Move emitting thunks and ctors from ...
2471         (cgraph_optimize): ... here.  Remove redundant
2472         cgraph_analyze_functions.
2473         * varasm.c (find_decl_and_mark_needed): Remove no longer
2474         necessary check.
2475         (finish_aliases_1): Adjust check for thunk aliases.
2476
2477 2009-09-04  Daniel Gutson  <dgutson@codesourcery.com>
2478
2479         * config/arm/arm.md (ctzsi2): Added braces
2480         to avoid warning that broke booststrap.
2481
2482 2009-09-04  Martin Jambor  <mjambor@suse.cz>
2483
2484         PR tree-optimization/41112
2485         * tree-sra.c (build_ref_for_offset_1): Signal that we cannot
2486         handle variable-bounded arrays.
2487         (expr_with_var_bounded_array_refs_p): New function.
2488         (analyze_access_subtree): Call expr_with_var_bounded_array_refs_p.
2489
2490 2009-09-04  Wolfgang Gellerich  <gellerich@de.ibm.com>
2491
2492         * config/s390/2097.md: Removed two incorrect bypasses.
2493         (z10_fsimpdf): Fixed latency.
2494         (z10_fhex): New insn_reservation.
2495         (z10_floaddf): Fixed latency.
2496         (z10_floadsf): Fixed latency.
2497         (z10_ftrunctf): Fixed latency.
2498         (z10_ftruncdf): Fixed latency.
2499         * config/s390/s390.c (z10_cost): Fixed values.
2500         (s390_adjust_priority): Added z10 path.
2501         * config/s390/s390.md (type): Added fhex.
2502         (*mov<mode>_64dfp): Updated type attribute.
2503         (*mov<mode>_64): Updated type attribute.
2504         (*mov<mode>_31): Updated type attribute.
2505         (*mov<mode>"): Likewise.
2506         * config/s390/2084.md (x_fsimpdf): Updated condition.
2507
2508 2009-09-04  Andreas Krebbel  <krebbel1@de.ibm.com>
2509
2510         * config/s390/s390.md ("*fmadd<mode>", "*fmsub<mode>"): Enable mem
2511         RTXs in the predicate for operand 1.
2512
2513 2009-09-03  Daniel Gutson  <dgutson@codesourcery.com>
2514
2515         * config/arm/arm.md (UNSPEC_RBIT): New constant.
2516         (rbitsi2): New insn.
2517         (ctzsi2): New expand.
2518         * config/arm/arm.h (CTZ_DEFINED_VALUE_AT_ZERO): New macro.
2519
2520 2009-09-03  Martin Jambor  <mjambor@suse.cz>
2521
2522         * tree-sra.c (duplicate_expr_for_different_base): Removed.
2523         (create_artificial_child_access): Use build_ref_for_offset instead
2524         of duplicate_expr_for_different_base.
2525         (propagate_subacesses_accross_link): Likewise.
2526
2527 2009-09-03  Richard Sandiford  <rdsandiford@googlemail.com>
2528
2529         * config/mips/mips.c (USEFUL_INSN_P): Use NONDEBUG_INSN_P instead
2530         of INSN_P.
2531         (mips16e_collect_argument_saves): Skip debug instructions.
2532         (mips_74k_agen_init): Use CALL_P || JUMP_P instead of !NONJUMP_INSN_P.
2533         (mips16_lay_out_constants): Use USEFUL_INSN_P instead of INSN_P.
2534         (r10k_insert_cache_barriers): Likewise.
2535         (mips_reorg_process_insns): Likewise.
2536
2537 2009-09-03  Vladimir Makarov  <vmakarov@redhat.com>
2538
2539         PR bootstrap/41241
2540         * ira.c (update_equiv_reg): Remove check on class likely spill.
2541
2542 2009-09-03  Jakub Jelinek  <jakub@redhat.com>
2543
2544         PR debug/41236
2545         * dwarf2out.c (loc_descriptor): Don't use SUBREG_REG macro on
2546         SIGN_EXTEND or ZERO_EXTEND.  Don't assume there is a REG inside of
2547         it or SUBREG.
2548
2549         PR debug/41238
2550         * function.c (assign_parm_find_stack_rtl): Don't set mem attributes on
2551         the stack slot if it is passed by invisible reference.
2552         * var-tracking.c (vt_add_function_parameters): Handle arguments passed
2553         by invisible reference.
2554
2555 2009-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
2556
2557         * config/bfin/linux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
2558         * config/bfin/uclinux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
2559         * config/bfin/bfin.h (TARGET_SUPPORTS_SYNC_CALLS): Provide default of
2560         0.
2561         * config/bfin/sync.md: New file.
2562         * config/bfin/bfin.md: Include it.
2563         (UNSPEC_ATOMIC): New.
2564         (UNSPEC_ONES): Provide a unique number.
2565
2566         From Jie Zhang <jie.zhang@analog.com>:
2567         * config/bfin/bfin.c (ret_regs): New.
2568         (must_save_fp_p): Don't return true because of frame_pointer_needed.
2569         (must_save_rets_p): New.
2570         (n_regs_saved_by_prologue): Use must_save_rets_p instead of
2571         current_function_is_leaf.
2572         (do_link): Likewise.
2573         (do_unlink): Likewise.
2574         (expand_interrupt_handler_prologue): Use ret_regs array.
2575         (expand_interrupt_handler_epilogue): Use ret_regs array and
2576         pass return register to gen_return_internal.
2577         (bfin_expand_epilogue): Pass return register to
2578         gen_return_internal.
2579         (bfin_expand_call): Explicitly clobber RETS.
2580         * config/bfin/bfin.h (FUNCTION_RETURN_REGISTERS): Define.
2581         * config/bfin/bfin.md (call_symbol_fdpic, call_value_symbol_fdpic,
2582         call_insn_fdpic, call_value_insn_fdpic, call_symbol,
2583         call_value_symbol, call_insn, call_value_insn): Explicitly clobber
2584         RETS.
2585         (return_internal): Take a reg rtx rather than the register number.
2586
2587 2009-09-03  H.J. Lu  <hongjiu.lu@intel.com>
2588
2589         * tree-parloops.c (parallelize_loops): Cast to HOST_WIDE_INT
2590         when comparing against estimated_loop_iterations_int return.
2591
2592 2009-09-03  Richard Guenther  <rguenther@suse.de>
2593
2594         * dwarf2out.c (dwarf2out_do_cfi_asm): Remove check of
2595         eh_personality_libfunc.
2596
2597 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
2598
2599         * tree-parloops.c (separate_decls_in_region): Add space.
2600
2601 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
2602
2603         * tree-parloops.c (separate_decls_in_region): Change the condition
2604         checking if there are reductions in the loop.
2605
2606 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
2607
2608         PR tree-optimization/38275
2609         * tree-parloops.c (parallelize_loops): Replace profitability condition
2610         for expected number of iterations.
2611
2612 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
2613
2614         * doc/invoke.texi (BUILD_CONFIG): Document --with-build-config.
2615         (bootstrap-debug): Explain conditions in which it becomes default.
2616         (bootstrap-debug-big): Rather than duplicate bootstrap-debug,
2617         make it add to it.
2618
2619 2009-09-03  Namhyung Kim  <namhyung@gmail.com>
2620
2621         * doc/invoke.texi (Optimize Options): Move
2622         -finline-small-functions to the -O2 list.
2623
2624 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
2625
2626         * toplev.c (process_options): Enable var-tracking-assignments
2627         by default if var-tracking is enabled.
2628
2629 2009-09-02  David Daney  <ddaney@caviumnetworks.com>
2630
2631         * cfgbuild.c (find_bb_boundaries): Split blocks containing a
2632         barrier.
2633         * emit-rtl.c (prev_nonnote_insn_bb): New function.
2634         * rtl.h (prev_nonnote_insn_bb): Declare it.
2635
2636 2009-09-03  Diego Novillo  <dnovillo@google.com>
2637
2638         * cgraph.c (cgraph_node_for_decl): New.
2639         * cgraph.h (cgraph_node_for_decl): Declare.
2640         * tree.c (host_integerp): Return 0 if T is NULL.
2641
2642 2009-09-03  Diego Novillo  <dnovillo@google.com>
2643
2644         * tree.h (struct alias_pair): Move from varasm.c.
2645         (alias_pairs): Likewise.
2646         (TYPE_MAXVAL): Define.
2647         (TYPE_MINVAL): Define.
2648         (iterative_hash_host_wide_int): Declare.
2649         (remove_unreachable_alias_pairs): Declare.
2650         * tree-pass.h (pass_ipa_free_lang_data): Declare.
2651         * diagnostic.c (default_diagnostic_starter): Make extern.
2652         (default_diagnostic_finalizer): Make extern.
2653         * diagnostic.h (default_diagnostic_starter): Declare.
2654         (default_diagnostic_finalizer): Declare.
2655         (default_tree_printer): Declare.
2656         * toplev.c (default_tree_printer): Make extern.
2657
2658 2009-09-03  Richard Guenther  <rguenther@suse.de>
2659             Diego Novillo  <dnovillo@google.com>
2660
2661         * cgraph.c (cgraph_add_new_function): Remove gimplification.
2662         * cgraphunit.c (cgraph_expand_function): Do not emit
2663         associated thunks from here.
2664         (cgraph_emit_thunks): New.
2665         (cgraph_optimize): Call it.
2666         Return if any IPA pass finds an error.
2667         * varasm.c (finish_aliases_1): Ignore errorneous aliases used
2668         by thunks.
2669
2670 2009-09-03  Simon Baldwin  <simonb@google.com>
2671             Rafael Espindola  <espindola@google.com>
2672             Richard Guenther  <rguenther@suse.de>
2673             Doug Kwan  <dougkwan@google.com>
2674             Diego Novillo  <dnovillo@google.com>
2675
2676         * tree.c: Include tree-pass.h, langhooks-def.h,
2677         diagnostic.h, cgraph.h, timevar.h, except.h and debug.h.
2678         (free_lang_data_in_type): New.
2679         (need_assembler_name_p): New.
2680         (free_lang_data_in_block): New.
2681         (free_lang_data_in_decl): New.
2682         (struct free_lang_data_d): New.
2683         (add_tree_to_fld_list): New.
2684         (find_decls_types_r): New.
2685         (get_eh_types_for_runtime): New.
2686         (find_decls_types_in_eh_region): New.
2687         (find_decls_types_in_node): New.
2688         (find_decls_types_in_var): New.
2689         (free_lang_data_in_cgraph): New.
2690         (free_lang_data): New.
2691         (gate_free_lang_data): New.
2692         (pass_ipa_free_lang_data): New.
2693
2694 2009-09-03  Diego Novillo  <dnovillo@google.com>
2695
2696         * timevar.def (TV_IPA_FREE_LANG_DATA): Define.
2697         * langhooks.h (struct lang_hooks): Add field free_lang_data.
2698         (lang_hooks): Remove const qualifier.
2699         * ipa.c (cgraph_remove_unreachable_nodes): Call
2700         remove_unreachable_alias_pairs.
2701         * except.c (add_type_for_runtime): Check if TYPE has
2702         already been converted.
2703         (lookup_type_for_runtime): Likewise.
2704         (check_handled): Handle converted types.
2705         * varasm.c (remove_unreachable_alias_pairs): New.
2706         * gimple.c: Include demangle.h.
2707         (gimple_decl_printable_name): New.
2708         (gimple_fold_obj_type_ref): New.
2709         * gimple.h (gimple_decl_printable_name): Declare.
2710         (gimple_fold_obj_type_ref): Declare.
2711         * passes.c (init_optimization_passes): Add pass
2712         pass_ipa_free_lang_data.
2713         * langhooks-def.h (LANG_HOOKS_FREE_LANG_DATA): Define.
2714         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_FREE_LANG_DATA.
2715
2716 2009-09-03  Diego Novillo  <dnovillo@google.com>
2717
2718         * c-lang.c (lang_hooks): Remove const qualifier.
2719
2720 2009-09-02  Loren James Rittle  <ljrittle@acm.org>
2721
2722         * doc/install.texi (*-*-freebsd*): Update target information.
2723
2724 2009-09-02  Anatoly Sokolov  <aesok@post.ru>
2725
2726         * hard-reg-set.h (call_fixed_regs): Remove.
2727         * reginfo.c (call_fixed_regs): Remove.
2728         (init_reg_sets_1): Remove initialization of call_fixed_regs.
2729         (globalize_reg): Don't use call_fixed_regs.
2730         * caller-save.c (init_caller_save): Use call_fixed_reg_set instead of
2731         call_fixed_regs.
2732
2733 2009-09-01  Michael Matz  <matz@suse.de>
2734
2735         * expr.h (emit_storent_insn, expand_expr_real_1,
2736         expand_expr_real_2): Declare.
2737         * expr.c (emit_storent_insn, expand_expr_real_1,
2738         expand_expr_real_2): Export.
2739         (store_expr): Setting and evaluating dont_return_target is useless.
2740         (expand_expr_real_1, <case GOTO_EXPR, RETURN_EXPR, SWITCH_EXPR,
2741         LABEL_EXPR and ASM_EXPR>): Move to gcc_unreachable.
2742         * except.c (expand_resx_expr): Rename to ...
2743         (expand_resx_stmt): ... this.  Rewrite to take gimple statement.
2744         * except.h (expand_resx_stmt): Declare.
2745         * stmt.c: Add include gimple.h
2746         (expand_asm_expr): Rename to ...
2747         (expand_asm_stmt): ... this. Rewrite to take gimple statement.
2748         (expand_case): Rewrite to take gimple statement.
2749         * tree.h (expand_asm_stmt): Declare.
2750         (expand_case): Change prototype.
2751         * Makefile.in (stmt.o): Depend on gimple.h.
2752         * builtins.c (expand_builtin_synchronize): Build gimple asm
2753         statement, not an ASM_EXPR.
2754         * cfgexpand.c (gimple_cond_pred_to_tree, set_expr_location_r,
2755         gimple_to_tree, release_stmt_tree): Remove.
2756         (expand_gimple_cond): Don't call gimple_cond_pred_to_tree or
2757         ggc_free, but hold comparison code and operands separately.
2758         Call jumpif_1 and jumpifnot_1 instead of jumpif and jumpifnot.
2759         (expand_call_stmt, expand_gimple_stmt_1,
2760         expand_gimple_stmt): New helpers.
2761         (expand_gimple_tailcall): Don't call gimple_to_tree, expand_expr_stmt,
2762         release_stmt_tree.  Call expand_gimple_stmt instead.
2763         (expand_gimple_basic_block): Ditto.
2764
2765         * calls.c (emit_call_1): Don't look at EH regions here, make
2766         fntree parameter useless.
2767         (expand_call): New local rettype for TREE_TYPE(exp), use it
2768         throughout.  Remove local p, use addr instead.
2769         Don't look at EH regions here.
2770
2771 2009-09-02  Vladimir Makarov  <vmakarov@redhat.com>
2772
2773         * doc/invoke.texi (-fsched-pressure): Document it.
2774         (-fsched-reg-pressure-heuristic): Remove it.
2775
2776         * reload.c (ira.h): Include.
2777         (find_reloads): Add choosing reload on number of small spilled
2778         classes.
2779
2780         * haifa-sched.c (ira.h): Include.
2781         (sched_pressure_p, sched_regno_cover_class, curr_reg_pressure,
2782         saved_reg_pressure, curr_reg_live, saved_reg_live,
2783         region_ref_regs): New variables.
2784         (sched_init_region_reg_pressure_info, mark_regno_birth_or_death,
2785         initiate_reg_pressure_info, setup_ref_regs,
2786         initiate_bb_reg_pressure_info, save_reg_pressure,
2787         restore_reg_pressure, dying_use_p, print_curr_reg_pressure): New
2788         functions.
2789         (setup_insn_reg_pressure_info): New function.
2790         (rank_for_schedule): Add pressure checking and insn issue time.
2791         Remove comparison of insn reg weights.
2792         (ready_sort): Set insn reg pressure info.
2793         (update_register_pressure, setup_insn_max_reg_pressure,
2794         update_reg_and_insn_max_reg_pressure,
2795         sched_setup_bb_reg_pressure_info): New functions.
2796         (schedule_insn): Add code for printing and updating reg pressure info.
2797         (find_set_reg_weight, find_insn_reg_weight): Remove.
2798         (ok_for_early_queue_removal): Do nothing if pressure_only_p.
2799         (debug_ready_list): Print reg pressure info.
2800         (schedule_block): Ditto.  Check insn issue time.
2801         (sched_init): Set up sched_pressure_p.  Allocate and set up some
2802         reg pressure related info.
2803         (sched_finish): Free some reg pressure related info.
2804         (fix_tick_ready): Make insn always ready if pressure_p.
2805         (init_h_i_d): Don't call find_insn_reg_weight.
2806         (haifa_finish_h_i_d): Free insn reg pressure info.
2807
2808         * ira-int.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
2809         ira_memory_move_cost, ira_class_hard_regs,
2810         ira_class_hard_regs_num, ira_no_alloc_regs,
2811         ira_available_class_regs, ira_reg_class_cover_size,
2812         ira_reg_class_cover, ira_class_translate): Move to ira.h.
2813
2814         * ira-lives.c (single_reg_class): Check mode to find how many
2815         registers are necessary for operand.
2816         (ira_implicitly_set_insn_hard_regs): New.
2817
2818         * common.opt (fsched-pressure): New options.
2819         (fsched-reg-pressure-heuristic): Remove.
2820
2821         * ira.c (setup_eliminable_regset): Rename to
2822         ira_setup_eliminable_regset.  Make it external.
2823         (expand_reg_info): Pass cover class to setup_reg_classes.
2824         (ira): Call resize_reg_info instead of allocate_reg_info.
2825
2826         * sched-deps.c: Include ira.h.
2827         (implicit_reg_pending_clobbers, implicit_reg_pending_uses): New.
2828         (create_insn_reg_use, create_insn_reg_set, setup_insn_reg_uses,
2829         reg_pressure_info, insn_use_p, mark_insn_pseudo_birth,
2830         mark_insn_hard_regno_birth, mark_insn_reg_birth,
2831         mark_pseudo_death, mark_hard_regno_death, mark_reg_death,
2832         mark_insn_reg_store, mark_insn_reg_clobber,
2833         setup_insn_reg_pressure_info): New.
2834         (sched_analyze_1): Update implicit_reg_pending_uses.
2835         (sched_analyze_insn): Find implicit sets, uses, clobbers of regs.
2836         Use them to create dependencies.  Set insn reg uses and pressure
2837         info.  Process reg_pending_uses in one place.
2838         (free_deps): Free implicit sets.
2839         (remove_from_deps): Remove implicit sets if necessary.  Check
2840         implicit sets when clearing reg_last_in_use.
2841         (init_deps_global): Clear implicit_reg_pending_clobbers and
2842         implicit_reg_pending_uses.
2843
2844         * ira.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
2845         ira_memory_move_cost, ira_class_hard_regs,
2846         ira_class_hard_regs_num, ira_no_alloc_regs,
2847         ira_available_class_regs, ira_reg_class_cover_size,
2848         ira_reg_class_cover, ira_class_translate): Move from ira-int.h.
2849         (ira_setup_eliminable_regset, ira_set_pseudo_classes,
2850         ira_implicitly_set_insn_hard_regs): New prototypes.
2851
2852         * ira-costs.c (pseudo_classes_defined_p, allocno_p,
2853         cost_elements_num): New variables.
2854         (allocno_costs, total_costs): Rename to costs and
2855         total_allocno_costs.
2856         (COSTS_OF_ALLOCNO): Rename to COSTS.
2857         (allocno_pref): Rename to pref.
2858         (allocno_pref_buffer): Rename to pref_buffer.
2859         (common_classes): Rename to regno_cover_class.
2860         (COST_INDEX): New.
2861         (record_reg_classes): Set allocno attributes only if allocno_p.
2862         (record_address_regs): Ditto.  Use COST_INDEX instead of ALLOCNO_NUM.
2863         (scan_one_insn): Use COST_INDEX and COSTS instead of ALLOCNO_NUM
2864         and COSTS_OF_ALLOCNO.
2865         (print_costs): Rename to print_allocno_costs.
2866         (print_pseudo_costs): New.
2867         (process_bb_node_for_costs): Split into 2 functions with new
2868         function process_bb_for_costs.  Pass BB to process_bb_for_costs.
2869         (find_allocno_class_costs): Rename to find_costs_and_classes.  Add
2870         new parameter dump_file.  Use cost_elements_num instead of
2871         ira_allocnos_num.  Make one iteration if preferred classes were
2872         already calculated for scheduler.  Make 2 versions of code
2873         depending on allocno_p.
2874         (setup_allocno_cover_class_and_costs): Check allocno_p.  Use
2875         regno_cover_class and COSTS instead of common_classes and
2876         COSTS_OF_ALLOCNO.
2877         (init_costs, finish_costs): New.
2878         (ira_costs): Set up allocno_p and cost_elements_num.  Call
2879         init_costs and finish_costs.
2880         (ira_set_pseudo_classes): New.
2881
2882         * rtl.h (allocate_reg_info): Remove.
2883         (resize_reg_info): Change return type.
2884         (reg_cover_class): New.
2885         (setup_reg_classes): Add new parameter.
2886
2887         * sched-int.h (struct deps_reg): New member implicit_sets.
2888         (sched_pressure_p, sched_regno_cover_class): New external definitions.
2889         (INCREASE_BITS): New macro.
2890         (struct reg_pressure_data, struct reg_use_data): New.
2891         (struct _haifa_insn_data): Remove reg_weight.  Add members
2892         reg_pressure, reg_use_list, reg_set_list, and
2893         reg_pressure_excess_cost_change.
2894         (struct deps): New member implicit_sets.
2895         (pressure_p): New variable.
2896         (COVER_CLASS_BITS, INCREASE_BITS): New macros.
2897         (struct reg_pressure_data, struct reg_use_data): New.
2898         (INSN_REG_WEIGHT): Remove.
2899         (INSN_REG_PRESSURE, INSN_MAX_REG_PRESSURE, INSN_REG_USE_LIST,
2900         INSN_REG_SET_LIST, INSN_REG_PRESSURE_EXCESS_COST_CHANGE): New macros.
2901         (sched_init_region_reg_pressure_info,
2902         sched_setup_bb_reg_pressure_info): New prototypes.
2903
2904         * reginfo.c (struct reg_pref): New member coverclass.
2905         (reg_cover_class): New function.
2906         (reginfo_init, pass_reginfo_init): Move after free_reg_info.
2907         (reg_info_size): New variable.
2908         (allocate_reg_info): Make static.  Setup reg_info_size.
2909         (resize_reg_info): Use reg_info_size.  Return flag of resizing.
2910         (setup_reg_classes): Add a new parameter.  Setup cover class too.
2911
2912         * Makefile.in (reload.o, haifa-sched.o, sched-deps.o): Add ira.h to
2913         the dependencies.
2914
2915         * sched-rgn.c (deps_join): Set up implicit_sets.
2916         (schedule_region): Set up region and basic blocks pressure
2917         relative info.
2918
2919         * passes.c (init_optimization_passes): Move
2920         pass_subregs_of_mode_init before pass_sched.
2921
2922 2009-09-02  Martin Jambor  <mjambor@suse.cz>
2923
2924         * tree-sra.c (struct access): New field grp_hint.
2925         (dump_access): Dump grp_hint.
2926         (sort_and_splice_var_accesses): Set grp_hint if a group is read
2927         multiple times.
2928         (analyze_access_subtree): Only scalarize accesses with grp_hint set or
2929         those which have been specifically read and somehow written to.
2930         (propagate_subacesses_accross_link): Set grp_hint of right child and
2931         also possibly of the left child.
2932
2933 2009-09-02  Jakub Jelinek  <jakub@redhat.com>
2934
2935         * tree-object-size.c (addr_object_size): Always use object_size_type
2936         0 or 2 when determining the pointer pointed object size.
2937
2938 2009-09-02  Richard Guenther  <rguenther@suse.de>
2939
2940         Revert
2941         2009-08-31  Richard Guenther  <rguenther@suse.de>
2942
2943         * builtins.c (fold_builtin_memory_op): Use the alias oracle
2944         to query if the memory regions for memmove overlap.
2945         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
2946         asserts on pointers, instead deal with odd trees.
2947         (ptr_derefs_may_alias_p): Likewise.
2948         (refs_may_alias_p_1): Constructor bases also never alias.
2949
2950 2009-08-01  Christian Bruel  <christian.bruel@st.com>
2951
2952         Revert:
2953         2009-07-31  Christian Bruel  <christian.bruel@st.com>
2954         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
2955
2956 2009-09-01  Alexandre Oliva  <aoliva@redhat.com>
2957
2958         * doc/invoke.texi (-fvar-tracking-assignments): New.
2959         (-fvar-tracking-assignments-toggle): New.
2960         (-fdump-final-insns=file): Mark filename as optional.
2961         (--param min-nondebug-insn-uid): New.
2962         (-gdwarf-@{version}): Mention version 4.
2963         * opts.c (common_handle_option): Accept it.
2964         * tree-vrp.c (find_assert_locations_1): Skip debug stmts.
2965         * regrename.c (regrename_optimize): Drop last.  Don't count debug
2966         insns as uses.  Don't reject change because of debug insn.
2967         (do_replace): Reject DEBUG_INSN as chain starter.  Take base_regno
2968         from the chain starter, and check for inexact matches in DEBUG_INSNS.
2969         (scan_rtx_reg): Accept inexact matches in DEBUG_INSNs.
2970         (build_def_use): Simplify and fix the marking of DEBUG_INSNs.
2971         * sched-ebb.c (schedule_ebbs): Skip boundary debug insns.
2972         * fwprop.c (forward_propagate_and_simplify): ...into debug insns.
2973         * doc/gimple.texi (is_gimple_debug): New.
2974         (gimple_debug_bind_p): New.
2975         (is_gimple_call, gimple_assign_cast_p): End sentence with period.
2976         * doc/install.texi (bootstrap-debug): More details.
2977         (bootstrap-debug-big, bootstrap-debug-lean): Document.
2978         (bootstrap-debug-lib): More details.
2979         (bootstrap-debug-ckovw): Update.
2980         (bootstrap-time): New.
2981         * tree-into-ssa.c (mark_def_sites): Skip debug stmts.
2982         (insert_phi_nodes_for): Insert debug stmts.
2983         (rewrite_stmt): Take iterator.  Insert debug stmts.
2984         (rewrite_enter_block): Adjust.
2985         (maybe_replace_use_in_debug_stmt): New.
2986         (rewrite_update_stmt): Use it.
2987         (mark_use_interesting): Return early for debug stmts.
2988         * tree-ssa-loop-im.c (rewrite_bittest): Propagate DEFs into debug
2989         stmts before replacing stmt.
2990         (move_computations_stmt): Likewise.
2991         * ira-conflicts.c (add_copies): Skip debug insns.
2992         * regstat.c (regstat_init_n_sets_and_refs): Discount debug insns.
2993         (regstat_bb_compute_ri): Skip debug insns.
2994         * tree-ssa-threadupdate.c (redirection_block_p): Skip debug stmts.
2995         * tree-ssa-loop-manip.c (find_uses_to_rename_stmt,
2996         check_loop_closed_ssa_stmt): Skip debug stmts.
2997         * tree-tailcall.c (find_tail_calls): Likewise.
2998         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Likewise.
2999         * tree.h (MAY_HAVE_DEBUG_STMTS): New.
3000         (build_var_debug_value_stat): Declare.
3001         (build_var_debug_value): Define.
3002         (target_for_debug_bind): Declare.
3003         * reload.c (find_equiv_reg): Skip debug insns.
3004         * rtlanal.c (reg_used_between_p): Skip debug insns.
3005         (side_effects_p): Likewise.
3006         (canonicalize_condition): Likewise.
3007         * ddg.c (create_ddg_dep_from_intra_loop_link): Check that non-debug
3008         insns never depend on debug insns.
3009         (create_ddg_dep_no_link): Likewise.
3010         (add_cross_iteration_register_deps): Use ANTI_DEP for debug insns.
3011         Don't add inter-loop dependencies for debug insns.
3012         (build_intra_loop_deps): Likewise.
3013         (create_ddg): Count debug insns.
3014         * ddg.h (struct ddg::num_debug): New.
3015         (num_backargs): Pair up with previous int field.
3016         * diagnostic.c (diagnostic_report_diagnostic): Skip notes on
3017         -fcompare-debug-second.
3018         * final.c (get_attr_length_1): Skip debug insns.
3019         (rest_of_clean-state): Don't dump CFA_RESTORE_STATE.
3020         * gcc.c (invoke_as): Call compare-debug-dump-opt.
3021         (driver_self_specs): Map -fdump-final-insns to
3022         -fdump-final-insns=..
3023         (get_local_tick): New.
3024         (compare_debug_dump_opt_spec_function): Test for . argument and
3025         compute output name.  Compute temp output spec without flag name.
3026         Compute -frandom-seed.
3027         (OPT): Undef after use.
3028         * cfgloopanal.c (num_loop_insns): Skip debug insns.
3029         (average_num_loop_insns): Likewise.
3030         * params.h (MIN_NONDEBUG_INSN_UID): New.
3031         * gimple.def (GIMPLE_DEBUG): New.
3032         * ipa-reference.c (scan_stmt_for_static_refs): Skip debug stmts.
3033         * auto-inc-dec.c (merge_in_block): Skip debug insns.
3034         (merge_in_block): Fix whitespace.
3035         * toplev.c (flag_var_tracking): Update comment.
3036         (flag_var_tracking_assignments): New.
3037         (flag_var_tracking_assignments_toggle): New.
3038         (process_options): Don't open final insns dump file if we're not
3039         going to write to it.  Compute defaults for var_tracking.
3040         * df-scan.c (df_insn_rescan_debug_internal): New.
3041         (df_uses_record): Handle debug insns.
3042         * haifa-sched.c (ready): Initialize n_debug.
3043         (contributes_to_priority): Skip debug insns.
3044         (dep_list_size): New.
3045         (priority): Use it.
3046         (rank_for_schedule): Likewise.  Schedule debug insns as soon as
3047         they're ready.  Disregard previous debug insns to make decisions.
3048         (queue_insn): Never queue debug insns.
3049         (ready_add, ready_remove_first, ready_remove): Count debug insns.
3050         (schedule_insn): Don't reject debug insns because of issue rate.
3051         (get_ebb_head_tail, no_real_insns_p): Skip boundary debug insns.
3052         (queue_to_ready): Skip and discount debug insns.
3053         (choose_ready): Let debug insns through.
3054         (schedule_block): Check boundary debug insns.  Discount debug
3055         insns, schedule them early.  Adjust whitespace.
3056         (set_priorities): Check for boundary debug insns.
3057         (add_jump_dependencies): Use dep_list_size.
3058         (prev_non_location_insn): New.
3059         (check_cfg): Use it.
3060         * tree-ssa-loop-ivopts.c (find-interesting_users): Skip debug
3061         stmts.
3062         (remove_unused_ivs): Reset debug stmts.
3063         * modulo-sched.c (const_iteration_count): Skip debug insns.
3064         (res_MII): Discount debug insns.
3065         (loop_single_full_bb_p): Skip debug insns.
3066         (sms_schedule): Likewise.
3067         (sms_schedule_by_order): Likewise.
3068         (ps_has_conflicts): Likewise.
3069         * caller-save.c (refmarker_fn): New.
3070         (save_call_clobbered_regs): Replace regs with saved mem in
3071         debug insns.
3072         (mark_referenced_regs): Take pointer, mark and arg.  Adjust.
3073         Call refmarker_fn mark for hardregnos.
3074         (mark_reg_as_referenced): New.
3075         (replace_reg_with_saved_mem): New.
3076         * ipa-pure-const.c (check_stmt): Skip debug stmts.
3077         * cse.c (cse_insn): Canonicalize debug insns.  Skip them when
3078         searching back.
3079         (cse_extended_basic_block): Skip debug insns.
3080         (count_reg_usage): Likewise.
3081         (is_dead_reg): New, split out of...
3082         (set_live_p): ... here.
3083         (insn_live_p): Use it for debug insns.
3084         * tree-stdarg.c (check_all_va_list_escapes): Skip debug stmts.
3085         (execute_optimize_stdarg): Likewise.
3086         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
3087         * tree-ssa-propagate.c (substitute_and_fold): Don't regard
3088         changes in debug stmts as changes.
3089         * sel-sched.c (moving_insn_creates_bookkeeping_block_p): New.
3090         (moveup_expr): Don't move across debug insns.  Don't move
3091         debug insn if it would create a bookkeeping block.
3092         (moveup_expr_cached): Don't use cache for debug insns that
3093         are heads of blocks.
3094         (compute_av_set_inside_bb): Skip debug insns.
3095         (sel_rank_for_schedule): Schedule debug insns first.  Remove
3096         dead code.
3097         (block_valid_for_bookkeeping_p); Support lax searches.
3098         (create_block_for_bookkeeping): Adjust block numbers when
3099         encountering debug-only blocks.
3100         (find_place_for_bookkeeping): Deal with debug-only blocks.
3101         (generate_bookkeeping_insn): Accept no place to insert.
3102         (remove_temp_moveop_nops): New argument full_tidying.
3103         (prepare_place_to_insert): Deal with debug insns.
3104         (advance_state_on_fence): Debug insns don't start cycles.
3105         (update_boundaries): Take fence as argument.  Deal with
3106         debug insns.
3107         (schedule_expr_on_boundary): No full_tidying on debug insns.
3108         (fill_insns): Deal with debug insns.
3109         (track_scheduled_insns_and_blocks): Don't count debug insns.
3110         (need_nop_to_preserve_insn_bb): New, split out of...
3111         (remove_insn_from_stream): ... this.
3112         (fur_orig_expr_not_found): Skip debug insns.
3113         * rtl.def (VALUE): Move up.
3114         (DEBUG_INSN): New.
3115         * tree-ssa-sink.c (all_immediate_uses_same_place): Skip debug stmts.
3116         (nearest_common_dominator_of_uses): Take debug_stmts argument.
3117         Set it if debug stmts are found.
3118         (statement_sink_location): Skip debug stmts.  Propagate
3119         moving defs into debug stmts.
3120         * ifcvt.c (first_active_insn): Skip debug insns.
3121         (last_active_insns): Likewise.
3122         (cond_exec_process_insns): Likewise.
3123         (noce_process_if_block): Likewise.
3124         (check_cond_move_block): Likewise.
3125         (cond_move_convert_if_block): Likewise.
3126         (block_jumps_and_fallthru_p): Likewise.
3127         (dead_or_predicable): Likewise.
3128         * dwarf2out.c (debug_str_hash_forced): New.
3129         (find_AT_string): Add comment.
3130         (gen_label_for_indirect_string): New.
3131         (get_debug_string_label): New.
3132         (AT_string_form): Use it.
3133         (mem_loc_descriptor): Handle non-TLS symbols.  Handle MINUS , DIV,
3134         MOD, AND, IOR, XOR, NOT, ABS, NEG, and CONST_STRING.  Accept but
3135         discard COMPARE, IF_THEN_ELSE, ROTATE, ROTATERT, TRUNCATE and
3136         several operations that cannot be represented with DWARF opcodes.
3137         (loc_descriptor): Ignore SIGN_EXTEND and ZERO_EXTEND.  Require
3138         dwarf_version 4 for DW_OP_implicit_value and DW_OP_stack_value.
3139         (dwarf2out_var_location): Take during-call mark into account.
3140         (output_indirect_string): Update comment.  Output if there are
3141         label and references.
3142         (prune_indirect_string): New.
3143         (prune_unused_types): Call it if debug_str_hash_forced.
3144         More in dwarf2out.c, from Jakub Jelinek <jakub@redhat.com>:
3145         (dw_long_long_const): Remove.
3146         (struct dw_val_struct): Change val_long_long type to rtx.
3147         (print_die, attr_checksum, same_dw_val_p, loc_descriptor): Adjust for
3148         val_long_long change to CONST_DOUBLE rtx from a long hi/lo pair.
3149         (output_die): Likewise.  Use HOST_BITS_PER_WIDE_INT size of each
3150         component instead of HOST_BITS_PER_LONG.
3151         (output_loc_operands): Likewise.  For const8* assert
3152         HOST_BITS_PER_WIDE_INT rather than HOST_BITS_PER_LONG is >= 64.
3153         (output_loc_operands_raw): For const8* assert HOST_BITS_PER_WIDE_INT
3154         rather than HOST_BITS_PER_LONG is >= 64.
3155         (add_AT_long_long): Remove val_hi and val_lo arguments, add
3156         val_const_double.
3157         (size_of_die): Use HOST_BITS_PER_WIDE_INT size multiplier instead of
3158         HOST_BITS_PER_LONG for dw_val_class_long_long.
3159         (add_const_value_attribute): Adjust add_AT_long_long caller.  Don't
3160         handle TLS SYMBOL_REFs.  If CONST wraps a constant, tail recurse.
3161         (dwarf_stack_op_name): Handle DW_OP_implicit_value and
3162         DW_OP_stack_value.
3163         (size_of_loc_descr, output_loc_operands, output_loc_operands_raw):
3164         Handle DW_OP_implicit_value.
3165         (extract_int): Move prototype earlier.
3166         (mem_loc_descriptor): For SUBREG punt if inner
3167         mode size is wider than DWARF2_ADDR_SIZE.  Handle SIGN_EXTEND
3168         and ZERO_EXTEND by DW_OP_shl and DW_OP_shr{a,}.  Handle
3169         EQ, NE, GT, GE, LT, LE, GTU, GEU, LTU, LEU, SMIN, SMAX, UMIN,
3170         UMAX, SIGN_EXTRACT, ZERO_EXTRACT.
3171         (loc_descriptor): Compare mode size with DWARF2_ADDR_SIZE
3172         instead of Pmode size.
3173         (loc_descriptor): Add MODE argument.  Handle CONST_INT, CONST_DOUBLE,
3174         CONST_VECTOR, CONST, LABEL_REF and SYMBOL_REF if mode != VOIDmode,
3175         attempt to handle other expressions.  Don't handle TLS SYMBOL_REFs.
3176         (concat_loc_descriptor, concatn_loc_descriptor,
3177         loc_descriptor_from_tree_1): Adjust loc_descriptor callers.
3178         (add_location_or_const_value_attribute): Likewise.  For single
3179         location loc_lists attempt to use add_const_value_attribute
3180         for constant decls.  Add DW_AT_const_value even if
3181         NOTE_VAR_LOCATION is VAR_LOCATION with CONSTANT_P or CONST_STRING
3182         in its expression.
3183         * cfgbuild.c (inside_basic_block_p): Handle debug insns.
3184         (control_flow_insn_p): Likewise.
3185         * tree-parloops.c (eliminate_local_variables_stmt): Handle debug stmt.
3186         (separate_decls_in_region_debug_bind): New.
3187         (separate_decls_in_region): Process debug bind stmts afterwards.
3188         * recog.c (verify_changes): Handle debug insns.
3189         (extract_insn): Likewise.
3190         (peephole2_optimize): Skip debug insns.
3191         * dse.c (scan_insn): Skip debug insns.
3192         * sel-sched-ir.c (return_nop_to_pool): Take full_tidying argument.
3193         Pass it on.
3194         (setup_id_for_insn): Handle debug insns.
3195         (maybe_tidy_empty_bb): Adjust whitespace.
3196         (tidy_control_flow): Skip debug insns.
3197         (sel_remove_insn): Adjust for debug insns.
3198         (sel_estimate_number_of_insns): Skip debug insns.
3199         (create_insn_rtx_from_pattern): Handle debug insns.
3200         (create_copy_of_insn_rtx): Likewise.
3201         * sel-sched-.h (sel_bb_end): Declare.
3202         (sel_bb_empty_or_nop_p): New.
3203         (get_all_loop_exits): Use it.
3204         (_eligible_successor_edge_p): Likewise.
3205         (return_nop_to_pool): Adjust.
3206         * tree-eh.c (tre_empty_eh_handler_p): Skip debug stmts.
3207         * ira-lives.c (process_bb_node_lives): Skip debug insns.
3208         * gimple-pretty-print.c (dump_gimple_debug): New.
3209         (dump_gimple_stmt): Use it.
3210         (dump_bb_header): Skip gimple debug stmts.
3211         * regmove.c (optimize_reg_copy_1): Discount debug insns.
3212         (fixup_match_2): Likewise.
3213         (regmove_backward_pass): Likewise.  Simplify combined
3214         replacement.  Handle debug insns.
3215         * function.c (instantiate_virtual_regs): Handle debug insns.
3216         * function.h (struct emit_status): Add x_cur_debug_insn_uid.
3217         * print-rtl.h: Include cselib.h.
3218         (print_rtx): Print VALUEs.  Split out and recurse for VAR_LOCATIONs.
3219         * df.h (df_inns_rescan_debug_internal): Declare.
3220         * gcse.c (alloc_hash_table): Estimate n_insns.
3221         (cprop_insn): Don't regard debug insns as changes.
3222         (bypass_conditional_jumps): Skip debug insns.
3223         (one_pre_gcse_pass): Adjust.
3224         (one_code_hoisting_pass): Likewise.
3225         (compute_ld_motion_mems): Skip debug insns.
3226         (one_cprop_pass): Adjust.
3227         * tree-if-conv.c (tree_if_convert_stmt): Reset debug stmts.
3228         (if_convertible_stmt_p): Handle debug stmts.
3229         * init-regs.c (initialize_uninitialized_regs): Skip debug insns.
3230         * tree-vect-loop.c (vect_is_simple_reduction): Skip debug stmts.
3231         * ira-build.c (create_bb_allocnos): Skip debug insns.
3232         * tree-flow-inline.h (has_zero_uses): Discount debug stmts.
3233         (has_single_use): Likewise.
3234         (single_imm_use): Likewise.
3235         (num_imm_uses): Likewise.
3236         * tree-ssa-phiopt.c (empty_block_p): Skip debug stmts.
3237         * tree-ssa-coalesce.c (build_ssa_conflict_graph): Skip debug stmts.
3238         (create_outofssa_var_map): Likewise.
3239         * lower-subreg.c (adjust_decomposed_uses): New.
3240         (resolve_debug): New.
3241         (decompose_multiword_subregs): Use it.
3242         * tree-dfa.c (find_referenced_vars): Skip debug stmts.
3243         * emit-rtl.c: Include params.h.
3244         (cur_debug_insn_uid): Define.
3245         (set_new_first_and_last_insn): Set cur_debug_insn_uid too.
3246         (copy_rtx_if_shared_1): Handle debug insns.
3247         (reset_used_flags): Likewise.
3248         (set_used_flags): LIkewise.
3249         (get_max_insn_count): New.
3250         (next_nondebug_insn): New.
3251         (prev_nondebug_insn): New.
3252         (make_debug_insn_raw): New.
3253         (emit_insn_before_noloc): Handle debug insns.
3254         (emit_jump_insn_before_noloc): Likewise.
3255         (emit_call_insn_before_noloc): Likewise.
3256         (emit_debug_insn_before_noloc): New.
3257         (emit_insn_after_noloc): Handle debug insns.
3258         (emit_jump_insn_after_noloc): Likewise.
3259         (emit_call_insn_after_noloc): Likewise.
3260         (emit_debug_insn_after_noloc): Likewise.
3261         (emit_insn_after): Take loc from earlier non-debug insn.
3262         (emit_jump_insn_after): Likewise.
3263         (emit_call_insn_after): Likewise.
3264         (emit_debug_insn_after_setloc): New.
3265         (emit_debug_insn_after): New.
3266         (emit_insn_before): Take loc from later non-debug insn.
3267         (emit_jump_insn_before): Likewise.
3268         (emit_call_insn_before): Likewise.
3269         (emit_debug_insn_before_setloc): New.
3270         (emit_debug_insn_before): New.
3271         (emit_insn): Handle debug insns.
3272         (emit_debug_insn): New.
3273         (emit_jump_insn): Handle debug insns.
3274         (emit_call_insn): Likewise.
3275         (emit): Likewise.
3276         (init_emit): Take min-nondebug-insn-uid into account.
3277         Initialize cur_debug_insn_uid.
3278         (emit_copy_of_insn_after): Handle debug insns.
3279         * cfgexpand.c (gimple_assign_rhs_to_tree): Do not overwrite
3280         location of single rhs in place.
3281         (maybe_dump_rtl_for_gimple_stmt): Dump lineno.
3282         (floor_sdiv_adjust): New.
3283         (cell_sdiv_adjust): New.
3284         (cell_udiv_adjust): New.
3285         (round_sdiv_adjust): New.
3286         (round_udiv_adjust): New.
3287         (wrap_constant): Moved from cselib.
3288         (unwrap_constant): New.
3289         (expand_debug_expr): New.
3290         (expand_debug_locations): New.
3291         (expand_gimple_basic_block): Drop hiding redeclaration.  Expand
3292         debug bind stmts.
3293         (gimple_expand_cfg): Expand debug locations.
3294         * cselib.c: Include tree-pass.h.
3295         (struct expand_value_data): New.
3296         (cselib_record_sets_hook): New.
3297         (PRESERVED_VALUE_P, LONG_TERM_PRESERVED_VALUE_P): New.
3298         (cselib_clear_table): Move, and implemnet in terms of...
3299         (cselib_reset_table_with_next_value): ... this.
3300         (cselib_get_next_unknown_value): New.
3301         (discard_useless_locs): Don't discard preserved values.
3302         (cselib_preserve_value): New.
3303         (cselib_preserved_value_p): New.
3304         (cselib_preserve_definitely): New.
3305         (cselib_clear_preserve): New.
3306         (cselib_preserve_only_values): New.
3307         (new_cselib_val): Take rtx argument.  Dump it in details.
3308         (cselib_lookup_mem): Adjust.
3309         (expand_loc): Take regs_active in struct.  Adjust.  Silence
3310         dumps unless details are requested.
3311         (cselib_expand_value_rtx_cb): New.
3312         (cselib_expand_value_rtx): Rename and reimplment in terms of...
3313         (cselib_expand_value_rtx_1): ... this.  Adjust.  Silence dumps
3314         without details.  Copy more subregs.  Try to resolve values
3315         using a callback.  Wrap constants.
3316         (cselib_subst_to_values): Adjust.
3317         (cselib_log_lookup): New.
3318         (cselib_lookup): Call it.
3319         (cselib_invalidate_regno): Don't count preserved values as useless.
3320         (cselib_invalidate_mem): Likewise.
3321         (cselib_record_set): Likewise.
3322         (struct set): Renamed to cselib_set, moved to cselib.h.
3323         (cselib_record_sets): Adjust.  Call hook.
3324         (cselib_process_insn): Reset table when it would be cleared.
3325         (dump_cselib_val): New.
3326         (dump_cselib_table): New.
3327         * tree-cfgcleanup.c (tree_forwarded_block_p): Skip debug stmts.
3328         (remove_forwarder_block): Support moving debug stmts.
3329         * cselib.h (cselib_record_sets_hook): Declare.
3330         (cselib_expand_callback): New type.
3331         (cselib_expand_value_rtx_cb): Declare.
3332         (cselib_reset_table_with_next_value): Declare.
3333         (cselib_get_next_unknown_value): Declare.
3334         (cselib_preserve_value): Declare.
3335         (cselib_preserved_value_p): Declare.
3336         (cselib_preserve_only_values): Declare.
3337         (dump_cselib_table): Declare.
3338         * cfgcleanup.c (flow_find_cross_jump): Skip debug insns.
3339         (try_crossjump_to_edge): Likewise.
3340         (delete_unreachable_blocks): Remove dominant GIMPLE blocks after
3341         dominated blocks when debug stmts are present.
3342         * simplify-rtx.c (delegitimize_mem_from_attrs): New.
3343         * tree-ssa-live.c (remove_unused_locals): Skip debug stmts.
3344         (set_var_live_on_entry): Likewise.
3345         * loop-invariant.c (find_invariants_bb): Skip debug insns.
3346         * cfglayout.c (curr_location, last_location): Make static.
3347         (set_curr_insn_source_location): Don't avoid bouncing.
3348         (get_curr_insn_source_location): New.
3349         (get_curr_insn_block): New.
3350         (duplicate_insn_chain): Handle debug insns.
3351         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Propagate
3352         into debug stmts.
3353         * common.opt (fcompare-debug): Move to sort order.
3354         (fdump-unnumbered-links): Likewise.
3355         (fvar-tracking-assignments): New.
3356         (fvar-tracking-assignments-toggle): New.
3357         * tree-ssa-dce.c (mark_stmt_necessary): Don't mark blocks
3358         because of debug stmts.
3359         (mark_stmt_if_obviously_necessary): Mark debug stmts.
3360         (eliminate_unnecessary_stmts): Walk dominated blocks before
3361         dominators.
3362         * tree-ssa-ter.c (find_replaceable_in_bb): Skip debug stmts.
3363         * ira.c (memref_used_between_p): Skip debug insns.
3364         (update_equiv_regs): Likewise.
3365         * sched-deps.c (sd_lists_size): Accept empty list.
3366         (sd_init_insn): Mark debug insns.
3367         (sd_finish_insn): Unmark them.
3368         (sd_add_dep): Reject non-debug deps on debug insns.
3369         (fixup_sched_groups): Give debug insns group treatment.
3370         Skip debug insns.
3371         (sched_analyze_reg): Don't mark debug insns for sched before call.
3372         (sched_analyze_2): Handle debug insns.
3373         (sched_analyze_insn): Compute next non-debug insn.  Handle debug
3374         insns.
3375         (deps_analyze_insn): Handle debug insns.
3376         (deps_start_bb): Skip debug insns.
3377         (init_deps): Initialize last_debug_insn.
3378         * tree-ssa.c (target_for_debug_bind): New.
3379         (find_released_ssa_name): New.
3380         (propagate_var_def_into_debug_stmts): New.
3381         (propagate_defs_into_debug_stmts): New.
3382         (verify_ssa): Skip debug bind stmts without values.
3383         (warn_uninialized_vars): Skip debug stmts.
3384         * target-def.h (TARGET_DELEGITIMIZE_ADDRESS): Set default.
3385         * rtl.c (rtx_equal_p_cb): Handle VALUEs.
3386         (rtx_equal_p): Likewise.
3387         * ira-costs.c (scan_one_insn): Skip debug insns.
3388         (process_bb_node_for_hard_reg_moves): Likewise.
3389         * rtl.h (DEBUG_INSN_P): New.
3390         (NONDEBUG_INSN_P): New.
3391         (MAY_HAVE_DEBUG_INSNS): New.
3392         (INSN_P): Accept debug insns.
3393         (RTX_FRAME_RELATED_P): Likewise.
3394         (INSN_DELETED_P): Likewise
3395         (PAT_VAR_LOCATION_DECL): New.
3396         (PAT_VAR_LOCATION_LOC): New.
3397         (PAT_VAR_OCATION_STATUS): New.
3398         (NOTE_VAR_LOCATION_DECL): Reimplement.
3399         (NOTE_VAR_LOCATION_LOC): Likewise.
3400         (NOTE_VAR_LOCATION_STATUS): Likewise.
3401         (INSN_VAR_LOCATION): New.
3402         (INSN_VAR_LOCATION_DECL): New.
3403         (INSN_VAR_LOCATION_LOC): New.
3404         (INSN_VAR_LOCATION_STATUS): New.
3405         (gen_rtx_UNKNOWN_VAR_LOC): New.
3406         (VAR_LOC_UNKNOWN_P): New.
3407         (NOTE_DURING_CALL_P): New.
3408         (SCHED_GROUP_P): Accept debug insns.
3409         (emit_debug_insn_before): Declare.
3410         (emit_debug_insn_before_noloc): Declare.
3411         (emit_debug_insn_beore_setloc): Declare.
3412         (emit_debug_insn_after): Declare.
3413         (emit_debug_insn_after_noloc): Declare.
3414         (emit_debug_insn_after_setloc): Declare.
3415         (emit_debug_insn): Declare.
3416         (make_debug_insn_raw): Declare.
3417         (prev_nondebug_insn): Declare.
3418         (next_nondebug_insn): Declare.
3419         (delegitimize_mem_from_attrs): Declare.
3420         (get_max_insn_count): Declare.
3421         (wrap_constant): Declare.
3422         (unwrap_constant): Declare.
3423         (get_curr_insn_source_location): Declare.
3424         (get_curr_insn_block): Declare.
3425         * tree-inline.c (insert_debug_decl_map): New.
3426         (processing_debug_stmt): New.
3427         (remap_decl): Don't create new mappings in debug stmts.
3428         (remap_gimple_op_r): Don't add references in debug stmts.
3429         (copy_tree_body_r): Likewise.
3430         (remap_gimple_stmt): Handle debug bind stmts.
3431         (copy_bb): Skip debug stmts.
3432         (copy_edges_for_bb): Likewise.
3433         (copy_debug_stmt): New.
3434         (copy_debug_stmts): New.
3435         (copy_body): Copy debug stmts at the end.
3436         (insert_init_debug_bind): New.
3437         (insert_init_stmt): Take id.  Skip and emit debug stmts.
3438         (setup_one_parameter): Remap variable earlier, register debug mapping.
3439         (estimate_num_insns): Skip debug stmts.
3440         (expand_call_inline): Preserve debug_map.
3441         (optimize_inline_calls): Check for no debug_stmts left-overs.
3442         (unsave_expr_now): Preserve debug_map.
3443         (copy_gimple_seq_and_replace_locals): Likewise.
3444         (tree_function_versioning): Check for no debug_stmts left-overs.
3445         Init and destroy debug_map as needed.  Split edges unconditionally.
3446         (build_duplicate_type): Init and destroy debug_map as needed.
3447         * tree-inline.h: Include gimple.h instead of pointer-set.h.
3448         (struct copy_body_data): Add debug_stmts and debug_map.
3449         * sched-int.h (struct ready_list): Add n_debug.
3450         (struct deps): Add last_debug_insn.
3451         (DEBUG_INSN_SCHED_P): New.
3452         (BOUNDARY_DEBUG_INSN_P): New.
3453         (SCHEDULE_DEBUG_INSN_P): New.
3454         (sd_iterator_cond): Accept empty list.
3455         * combine.c (create_log_links): Skip debug insns.
3456         (combine_instructions): Likewise.
3457         (cleanup_auto_inc_dec): New.  From Jakub Jelinek: Make sure the
3458         return value is always unshared.
3459         (struct rtx_subst_pair): New.
3460         (auto_adjust_pair): New.
3461         (propagate_for_debug_subst): New.
3462         (propagate_for_debug): New.
3463         (try_combine): Skip debug insns.  Propagate removed defs into
3464         debug insns.
3465         (next_nonnote_nondebug_insn): New.
3466         (distribute_notes): Use it.  Skip debug insns.
3467         (distribute_links): Skip debug insns.
3468         * tree-outof-ssa.c (set_location_for_edge): Likewise.
3469         * resource.c (mark_target_live_regs): Likewise.
3470         * var-tracking.c: Include cselib.h and target.h.
3471         (enum micro_operation_type): Add MO_VAL_USE, MO_VAL_LOC, and
3472         MO_VAL_SET.
3473         (micro_operation_type_name): New.
3474         (enum emit_note_where): Add EMIT_NOTE_AFTER_CALL_INSN.
3475         (struct micro_operation_def): Update comments.
3476         (decl_or_value): New type.  Use instead of decls.
3477         (struct emit_note_data_def): Add vars.
3478         (struct attrs_def): Use decl_or_value.
3479         (struct variable_tracking_info_def): Add permp, flooded.
3480         (struct location_chain_def): Update comment.
3481         (struct variable_part_def): Use decl_or_value.
3482         (struct variable_def): Make var_part a variable length array.
3483         (valvar_pool): New.
3484         (scratch_regs): New.
3485         (cselib_hook_called): New.
3486         (dv_is_decl_p): New.
3487         (dv_is_value_p): New.
3488         (dv_as_decl): New.
3489         (dv_as_value): New.
3490         (dv_as_opaque): New.
3491         (dv_onepart_p): New.
3492         (dv_pool): New.
3493         (IS_DECL_CODE): New.
3494         (check_value_is_not_decl): New.
3495         (dv_from_decl): New.
3496         (dv_from_value): New.
3497         (dv_htab_hash): New.
3498         (variable_htab_hash): Use it.
3499         (variable_htab_eq): Support values.
3500         (variable_htab_free): Free from the right pool.
3501         (attrs_list_member, attrs_list_insert): Use decl_or_value.
3502         (attrs_list_union): Adjust.
3503         (attrs_list_mpdv_union): New.
3504         (tie_break_pointers): New.
3505         (canon_value_cmp): New.
3506         (unshare_variable): Return possibly-modified slot.
3507         (vars_copy_1): Adjust.
3508         (var_reg_decl_set): Adjust.  Split out of...
3509         (var_reg_set): ... this.
3510         (get_init_value): Adjust.
3511         (var_reg_delete_and_set): Adjust.
3512         (var_reg_delete): Adjust.
3513         (var_regno_delete): Adjust.
3514         (var_mem_decl_set): Split out of...
3515         (var_mem_set): ... this.
3516         (var_mem_delete_and_set): Adjust.
3517         (var_mem_delete): Adjust.
3518         (val_store): New.
3519         (val_reset): New.
3520         (val_resolve): New.
3521         (variable_union): Adjust.  Speed up merge of 1-part vars.
3522         (variable_canonicalize): Use unshared slot.
3523         (VALUED_RECURSED_INTO): New.
3524         (find_loc_in_1pdv): New.
3525         (struct dfset_merge): New.
3526         (insert_into_intersection): New.
3527         (intersect_loc_chains): New.
3528         (loc_cmp): New.
3529         (canonicalize_loc_order_check): New.
3530         (canonicalize_values_mark): New.
3531         (canonicalize_values_star): New.
3532         (variable_merge_over_cur): New.
3533         (variable_merge_over_src): New.
3534         (dataflow_set_merge): New.
3535         (dataflow_set_equiv_regs): New.
3536         (remove_duplicate_values): New.
3537         (struct dfset_post_merge): New.
3538         (variable_post_merge_new_vals): New.
3539         (variable_post_merge_perm_vals): New.
3540         (dataflow_post_merge_adjust): New.
3541         (find_mem_expr_in_1pdv): New.
3542         (dataflow_set_preserve_mem_locs): New.
3543         (dataflow_set_remove_mem_locs): New.
3544         (dataflow_set_clear_at_call): New.
3545         (onepart_variable_different_p): New.
3546         (variable_different_p): Use it.
3547         (dataflow_set_different_1): Adjust.  Make detailed dump more verbose.
3548         (track_expr_p): Add need_rtl parameter.  Don't generate rtl
3549         if not needed.
3550         (track_loc_p): Pass it true.
3551         (struct count_use_info): New.
3552         (find_use_val): New.
3553         (replace_expr_with_values): New.
3554         (log_op_type): New.
3555         (use_type): New, partially split out of...
3556         (count_uses): ... this.  Count new micro-ops.
3557         (count_uses_1): Adjust.
3558         (count_stores): Adjust.
3559         (count_with_sets): New.
3560         (VAL_NEEDS_RESOLUTION): New.
3561         (VAL_HOLDS_TRACK_EXPR): New.
3562         (VAL_EXPR_IS_COPIED): New.
3563         (VAL_EXPR_IS_CLOBBERED): New.
3564         (add_uses): Adjust.  Generate new micro-ops.
3565         (add_uses_1): Adjust.
3566         (add_stores): Generate new micro-ops.
3567         (add_with_sets): New.
3568         (find_src_status): Adjust.
3569         (find_src_set_src): Adjust.
3570         (compute_bb_dataflow): Use dataflow_set_clear_at_call.
3571         Handle new micro-ops.  Canonicalize value equivalances.
3572         (vt_find_locations): Compute total size of hash tables for
3573         dumping.  Perform merge for var-tracking-assignments.  Don't
3574         disregard single-block loops.
3575         (dump_attrs_list): Handle decl_or_value.
3576         (dump_variable): Take variable.  Deal with decl_or_value.
3577         (dump_variable_slot): New.
3578         (dump_vars): Use it.
3579         (dump_dataflow_sets): Adjust.
3580         (set_slot_part): New, extended to support one-part variables
3581         after splitting out of...
3582         (set_variable_part): ... this.
3583         (clobber_slot_part): New, split out of...
3584         (clobber_variable_part): ... this.
3585         (delete_slot_part): New, split out of...
3586         (delete_variable_part): .... this.
3587         (check_wrap_constant): New.
3588         (vt_expand_loc_callback): New.
3589         (vt_expand_loc): New.
3590         (emit_note_insn_var_location): Adjust.  Handle values.  Handle
3591         EMIT_NOTE_AFTER_CALL_INSN.
3592         (emit_notes_for_differences_1): Adjust.  Handle values.
3593         (emit_notes_for_differences_2): Likewise.
3594         (emit_notes_for_differences): Adjust.
3595         (emit_notes_in_bb): Take pointer to set.  Emit AFTER_CALL_INSN notes.
3596         Adjust.  Handle new micro-ops.
3597         (vt_add_function_parameters): Adjust.  Create and bind values.
3598         (vt_initialize): Adjust.  Initialize scratch_regs and
3599         valvar_pool, flooded and perm..  Initialize and use cselib.  Log
3600         operations.  Move some code to count_with_sets and add_with_sets.
3601         (delete_debug_insns): New.
3602         (vt_debug_insns_local): New.
3603         (vt_finalize): Release permp, valvar_pool, scratch_regs.  Finish
3604         cselib.
3605         (var_tracking_main): If var-tracking-assignments is enabled
3606         but var-tracking isn't, delete debug insns and leave.  Likewise
3607         if we exceed limits or fail the stack adjustments tests, and
3608         after all var-tracking processing.
3609         More in var-tracking, from Jakub Jelinek <jakub@redhat.com>:
3610         (dataflow_set): Add traversed_vars.
3611         (value_chain, const_value_chain): New typedefs.
3612         (value_chain_pool, value_chains): New variables.
3613         (value_chain_htab_hash, value_chain_htab_eq, add_value_chain,
3614         add_value_chains, add_cselib_value_chains, remove_value_chain,
3615         remove_value_chains, remove_cselib_value_chains): New functions.
3616         (shared_hash_find_slot_unshare_1, shared_hash_find_slot_1,
3617         shared_hash_find_slot_noinsert_1, shared_hash_find_1): New
3618         static inlines.
3619         (shared_hash_find_slot_unshare, shared_hash_find_slot,
3620         shared_hash_find_slot_noinsert, shared_hash_find): Update.
3621         (dst_can_be_shared): New variable.
3622         (unshare_variable): Unshare set->vars if shared, use shared_hash_*.
3623         Clear dst_can_be_shared.  If set->traversed_vars is non-NULL and
3624         different from set->vars, look up slot again instead of using the
3625         passed in slot.
3626         (dataflow_set_init): Initialize traversed_vars.
3627         (variable_union): Use shared_hash_*.  Use initially NO_INSERT
3628         lookup if set->vars is shared.  Don't keep slot cleared before
3629         calling unshare_variable.  Unshare set->vars if needed.  Adjust
3630         unshare_variable callers.  Clear dst_can_be_shared if needed.
3631         Even ->refcount == 1 vars must be unshared if set->vars is shared
3632         and var needs to be modified.
3633         (dataflow_set_union): Set traversed_vars during canonicalization.
3634         (VALUE_CHANGED, DECL_CHANGED): Define.
3635         (set_dv_changed, dv_changed_p): New static inlines.
3636         (track_expr_p): Clear DECL_CHANGED.
3637         (dump_dataflow_sets): Set it.
3638         (variable_was_changed): Call set_dv_changed.
3639         (emit_note_insn_var_location): Likewise.
3640         (changed_variables_stack): New variable.
3641         (check_changed_vars_1, check_changed_vars_2): New functions.
3642         (emit_notes_for_changes): Do nothing if changed_variables is
3643         empty.  Traverse changed_variables with check_changed_vars_1,
3644         call check_changed_vars_2 on each changed_variables_stack entry.
3645         (emit_notes_in_bb): Add SET argument.  Just clear it at the
3646         beginning, use it instead of local &set, don't destroy it at the end.
3647         (vt_emit_notes): Call dataflow_set_clear early on all
3648         VTI(bb)->out sets, never use them, instead use emit_notes_in_bb
3649         computed set, dataflow_set_clear also VTI(bb)->in when we are
3650         done with the basic block.  Initialize changed_variables_stack,
3651         free it afterwards.  If ENABLE_CHECKING verify that after noting
3652         differences to an empty set value_chains hash table is empty.
3653         (vt_initialize): Initialize value_chains and value_chain_pool.
3654         (vt_finalize): Delete value_chains htab, free value_chain_pool.
3655         (variable_tracking_main): Call dump_dataflow_sets before calling
3656         vt_emit_notes, not after it.
3657         * tree-flow.h (propagate_defs_into_debug_stmts): Declare.
3658         (propagate_var_def_into_debug_stmts): Declare.
3659         * df-problems.c (df_lr_bb_local_compute): Skip debug insns.
3660         (df_set_note): Reject debug insns.
3661         (df_whole_mw_reg_dead_p): Take added_notes_p argument.  Don't
3662         add notes to debug insns.
3663         (df_note_bb_compute): Adjust.  Likewise.
3664         (df_simulate_uses): Skip debug insns.
3665         (df_simulate_initialize_backwards): Likewise.
3666         * reg-stack.c (subst_stack_regs_in_debug_insn): New.
3667         (subst_stack_regs_pat): Reject debug insns.
3668         (convert_regs_1): Handle debug insns.
3669         * Makefile.in (TREE_INLINE_H): Take pointer-set.h from GIMPLE_H.
3670         (print-rtl.o): Depend on cselib.h.
3671         (cselib.o): Depend on TREE_PASS_H.
3672         (var-tracking.o): Depend on cselib.h and TARGET_H.
3673         * sched-rgn.c (rgn_estimate_number_of_insns): Discount debug insns.
3674         (init_ready_list): Skip boundary debug insns.
3675         (add_branch_dependences): Skip debug insns.
3676         (free_block_dependencies): Check for blocks with only debug insns.
3677         (compute_priorities): Likewise.
3678         * gimple.c (gss_for_code): Handle GIMPLE_DEBUG.
3679         (gimple_build_with_ops_stat): Take subcode as unsigned.  Adjust
3680         all callers.
3681         (gimple_build_debug_bind_stat): New.
3682         (empty_body_p): Skip debug stmts.
3683         (gimple_has_side_effects): Likewise.
3684         (gimple_rhs_has_side_effects): Likewise.
3685         * gimple.h (enum gimple_debug_subcode, GIMPLE_DEBUG_BIND): New.
3686         (gimple_build_debug_bind_stat): Declare.
3687         (gimple_build_debug_bind): Define.
3688         (is_gimple_debug): New.
3689         (gimple_debug_bind_p): New.
3690         (gimple_debug_bind_get_var): New.
3691         (gimple_debug_bind_get_value): New.
3692         (gimple_debug_bind_get_value_ptr): New.
3693         (gimple_debug_bind_set_var): New.
3694         (gimple_debug_bind_set_value): New.
3695         (GIMPLE_DEBUG_BIND_NOVALUE): New internal temporary macro.
3696         (gimple_debug_bind_reset_value): New.
3697         (gimple_debug_bind_has_value_p): New.
3698         (gsi_next_nondebug): New.
3699         (gsi_prev_nondebug): New.
3700         (gsi_start_nondebug_bb): New.
3701         (gsi_last_nondebug_bb): New.
3702         * sched-vis.c (print_pattern): Handle VAR_LOCATION.
3703         (print_insn): Handle DEBUG_INSN.
3704         * tree-cfg.c (remove_bb): Walk stmts backwards.  Let loc
3705         of first insn prevail.
3706         (first_stmt): Skip debug stmts.
3707         (first_non_label_stmt): Likewise.
3708         (last_stmt): Likewise.
3709         (has_zero_uses_1): New.
3710         (single_imm_use_1): New.
3711         (verify_gimple_debug): New.
3712         (verify_types_in_gimple_stmt): Handle debug stmts.
3713         (verify_stmt): Likewise.
3714         (debug_loop_num): Skip debug stmts.
3715         (remove_edge_and_dominated_blocks): Remove dominators last.
3716         * tree-ssa-reasssoc.c (rewrite_expr_tree): Propagate into debug stmts.
3717         (linearize_expr): Likewise.
3718         * config/i386/i386.c (ix86_delegitimize_address): Call
3719         default implementation.
3720         * config/ia64/ia64.c (ia64_safe_itanium_class): Handle debug insns.
3721         (group_barrier_needed): Skip debug insns.
3722         (emit_insn_group_barriers): Likewise.
3723         (emit_all_insn_group_barriers): Likewise.
3724         (ia64_variable_issue): Handle debug insns.
3725         (ia64_dfa_new_cycle): Likewise.
3726         (final_emit_insn_group_barriers): Skip debug insns.
3727         (ia64_dwarf2out_def_steady_cfa): Take frame argument.  Don't
3728         def cfa without frame.
3729         (process_set): Likewise.
3730         (process_for_unwind_directive): Pass frame on.
3731         * config/rs6000/rs6000.c (TARGET_DELEGITIMIZE_ADDRESS): Define.
3732         (rs6000_delegitimize_address): New.
3733         (rs6000_debug_adjust_cost): Handle debug insns.
3734         (is_microcoded_insn): Likewise.
3735         (is_cracked_insn): Likewise.
3736         (is_nonpipeline_insn): Likewise.
3737         (insn_must_be_first_in_group): Likewise.
3738         (insn_must_be_last_in_group): Likewise.
3739         (force_new_group): Likewise.
3740         * cfgrtl.c (rtl_split_block): Emit INSN_DELETED note if block
3741         contains only debug insns.
3742         (rtl_merge_blocks): Skip debug insns.
3743         (purge_dead_edges): Likewise.
3744         (rtl_block_ends_with_call_p): Skip debug insns.
3745         * dce.c (deletable_insn_p): Handle VAR_LOCATION.
3746         (mark_reg_dependencies): Skip debug insns.
3747         * params.def (PARAM_MIN_NONDEBUG_INSN_UID): New.
3748         * tree-ssanames.c (release_ssa_name): Propagate def into debug stmts.
3749         * tree-ssa-threadedge.c
3750         (record_temporary_equivalences_from_stmts): Skip debug stmts.
3751         * regcprop.c (replace_oldest_value_addr): Skip debug insns.
3752         (replace_oldest_value_mem): Use ALL_REGS for debug insns.
3753         (copyprop_hardreg_forward_1): Handle debug insns.
3754         * reload1.c (reload): Skip debug insns.  Replace unassigned
3755         pseudos in debug insns with their equivalences.
3756         (eliminate_regs_in_insn): Skip debug insns.
3757         (emit_input_reload_insns): Skip debug insns at first, adjust
3758         them later.
3759         * tree-ssa-operands.c (add_virtual_operand): Reject debug stmts.
3760         (get_indirect_ref_operands): Pass opf_no_vops on.
3761         (get_expr_operands): Likewise.  Skip debug stmts.
3762         (parse_ssa_operands): Scan debug insns with opf_no_vops.
3763
3764 2009-09-01  Richard Henderson  <rth@redhat.com>
3765
3766         * tree-ssa-ccp.c (ccp_initialize): Make sure to simulate
3767         stmt_ends_pp_p statements at least once.
3768         * tree-vrp.c (vrp_initialize): Likewise.
3769         (vrp_visit_stmt): Be prepared for non-interesting stmts.
3770
3771 2009-09-01  Dodji Seketeli  <dodji@redhat.com>
3772
3773         PR bootstrap/41205
3774         Fix AIX bootstrap after PR debug/30161
3775         * dwarf2out.c (make_ith_pack_parameter_name): Don't used strnlen
3776         that is a GNU extension.
3777         (tmpl_value_parm_die_table): Move the definition of this global
3778         outside #ifdef DWARF2_DEBUGGING_INFO region.
3779
3780 2009-09-01  Richard Guenther  <rguenther@suse.de>
3781
3782         * tree.c (tree_expr_size): New function.
3783         * tree.h (tree_expr_size): Declare.
3784         * rtlanal.c (rtx_addr_can_trap_p_1): Adjust comment.
3785         * builtins.c (fold_builtin_memory_op): Use tree_expr_size.
3786         * langhooks.c (lhd_expr_size): Remove.
3787         * langhooks.h (struct lang_hooks): Remove expr_size.
3788         * explow.c (expr_size): Use tree_expr_size.
3789         (int_expr_size): Likewise.
3790         * langhooks-def.h (lhd_expr_size): Remove.
3791         (LANG_HOOKS_EXPR_SIZE): Likewise.
3792         (LANG_HOOKS_INITIALIZER): Adjust.
3793
3794 2009-09-01  Richard Guenther  <rguenther@suse.de>
3795
3796         * tree-flow.h (mark_addressable): Move declaration ...
3797         * tree.h (mark_addressable): ... here.
3798         * stmt.c (expand_asm_operands): Use mark_addressable, not
3799         lang_hooks.mark_addressable.
3800         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
3801         LANG_HOOKS_MARK_ADDRESSABLE.
3802         * langhooks.h (struct lang_hooks): Remove mark_addressable langhook.
3803         * c-objc-common.h (LANG_HOOKS_MARK_ADDRESSABLE): Remove.
3804
3805 2009-08-31  Chris Demetriou  <cgd@google.com>
3806
3807         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Never
3808         vectorize if not TARGET_SSE2.
3809
3810 2009-08-31  DJ Delorie  <dj@redhat.com>
3811
3812         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Exclude coprocessor
3813         registers if no coprocessor is enabled.
3814
3815 2009-08-31  Dodji Seketeli  <dodji@redhat.com>
3816
3817         PR debug/30161
3818         * cgraph.h (cgraph_get_node): Declare ...
3819         * cgraph.c (cgraph_get_node): ... new function.
3820         * dwarf2out.c (gen_generic_params_dies,
3821         generic_parameter_die, tree_add_const_value_attribute_for_decl,
3822         make_ith_pack_parameter_name,
3823         append_entry_to_tmpl_value_parm_die_table,
3824         gen_remaining_tmpl_value_param_die_attribute): New functions.
3825         (gen_subprogram_die): Generate debug info for template parameters
3826         if debug info level is higher than DINFO_LEVEL_TERSE.
3827         Use tree_add_const_value_attribute_for_decl instead of
3828         tree_add_const_value_attribute.
3829         (gen_const_die): Use tree_add_const_value_attribute_for_decl
3830         instead of tree_add_const_value_attribute.
3831         (gen_struct_or_union_type_die): Generate debug
3832         info for template parameters if debug info level is higher than
3833         DINFO_LEVEL_TERSE.
3834         (tree_add_const_value_attribute): Handle integral and pointer
3835         constants. Update comment.
3836         (dwarf_tag_name): Support DW_TAG_GNU_template_template_param.
3837         (dwarf_attr_name): Support DW_AT_GNU_template_name.
3838         (reference_to_unused): Fix thinko. Remove redundant predicates from
3839         tests.
3840         (tree_add_const_value_attribute): Make this work for constant
3841         expressions only.
3842         tree_add_const_value_attribute_for_decl is to be used for variable
3843         DECLs now.
3844         (add_location_or_const_value_attribute): Use
3845         tree_add_const_value_attribute_for_decl now.
3846         (dwarf2out_finish): Emit the DW_AT_const_value attribute of
3847         DW_TAG_template_value_param DIEs after function DIEs have been
3848         emitted.
3849         * langhooks.h (lang_hooks_for_types): Add
3850         get_argument_pack_elems.
3851         (lang_hooks_for_decls): Add generic_generic_parameter_decl_p.
3852         (lang_hooks): Added get_innermost_generic_parms,
3853         get_innermost_generic_args.
3854         * langhooks-def.h (LANG_HOOKS_GET_INNERMOST_GENERIC_PARMS,
3855         LANG_HOOKS_GET_INNERMOST_GENERIC_ARGS,
3856         LANG_HOOKS_GET_ARGUMENT_PACK_ELEMS,
3857         LANG_HOOKS_GENERIC_GENERIC_PARAMETER_DECL_P): New language hooks.
3858
3859 2009-08-31  DJ Delorie  <dj@redhat.com>
3860
3861         * config/mep/mep.c (machine_function): Add frame_locked flag.  Set
3862         it once we start generating the prologue or epilogue.
3863         (mep_call_saves_register): If the frame is locked, re-use
3864         cached values.
3865         (mep_assign_save_slots): New, broken out from mep_expand_prologue.
3866         (mep_expand_prologue): Call it.
3867         (mep_expand_epilogue): Likewise.
3868         (mep_start_function): Use the same logic as mep_expand_prologue.
3869         (mep_pass_by_reference): Make logic more readable.
3870         (mep_return_in_memory): Zero-sized objects are passed in memory.
3871         (mep_reorg_noframe): Make sure we have accurate REG_DEAD notes.
3872
3873 2009-08-31  Richard Guenther  <rguenther@suse.de>
3874
3875         * builtins.c (fold_builtin_memory_op): Use the alias oracle
3876         to query if the memory regions for memmove overlap.
3877         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
3878         asserts on pointers, instead deal with odd trees.
3879         (ptr_derefs_may_alias_p): Likewise.
3880         (refs_may_alias_p_1): Constructor bases also never alias.
3881
3882 2009-08-31  Gerald Pfeifer  <gerald@pfeifer.com>
3883
3884         * doc/install.texi (Final install): Adjust reference on where to
3885         order printed manuals.
3886
3887 2009-08-30  Olivier Hainque  <hainque@adacore.com>
3888
3889         * dwarf2out.c (switch_to_frame_table_section): Move
3890         definition prior to first use.
3891
3892 2009-08-30  Richard Guenther  <rguenther@suse.de>
3893
3894         PR tree-optimization/41186
3895         * tree-ssa-alias.c (ptr_deref_may_alias_ref_p): Remove.
3896         (ao_ref_init_from_ptr_and_size): New function.
3897         (ref_maybe_used_by_call_p_1): Be more precise tracking
3898         used ranges for builtin functions.
3899         (ref_maybe_used_by_call_p): Adjust.
3900         (call_may_clobber_ref_p_1): Be more precise tracking clobbered
3901         ranges for builtin functions.
3902         * tree-ssa-alias.h (ao_ref_init_from_ptr_and_size): Declare.
3903
3904 2009-08-30  Alan Modra  <amodra@bigpond.net.au>
3905
3906         PR target/41081
3907         * fwprop.c (get_reg_use_in): Delete.
3908         (free_load_extend): New function.
3909         (forward_propagate_subreg): Use it.
3910
3911 2009-08-29  Kaz Kojima  <kkojima@gcc.gnu.org>
3912
3913         * config.gcc (sh*-*-elf): Add superh stuff only for sh*-superh-elf.
3914
3915 2009-08-29  Kai Tietz<kai.tietz@onevision.com>
3916
3917         PR/41184
3918         * config/i386.c (ix86_expand_epilogue): Correct stack adjustment for
3919         padding.
3920
3921 2009-08-29  Douglas B Rupp  <rupp@gnat.com>
3922
3923         * crtstuff.c (__do_global_dtors_aux): Use atexit if no
3924         fini or fini_array section.
3925
3926 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
3927
3928         * graphite-dependences.c (graphite_legal_transform_bb): Call
3929         pbb_remove_duplicate_pdrs.
3930         * graphite-poly.c (can_collapse_pdr): Removed.
3931         (pdr_find_duplicate): Removed.
3932         (can_collapse_pdrs): New.
3933         (pbb_remove_duplicate_pdrs): New.
3934         (new_poly_dr): Do not look for duplicates.
3935         * graphite-poly.h (struct poly_bb): New field pdr_duplicates_removed.
3936         (PBB_PDR_DUPLICATES_REMOVED): New.
3937         (pbb_remove_duplicate_pdrs): Declared.
3938
3939 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
3940
3941         * graphite-interchange.c (pbb_interchange_profitable_p): Adjust
3942         the strides by multiplying by PDR_NB_REFS.
3943         * graphite-poly.c (can_collapse_pdr): New.
3944         (pdr_find_duplicate): New.
3945         (new_poly_dr): Call pdr_find_duplicate.  Collapse duplicate PDRs.
3946         Initialize PDR_NB_REFS.
3947         * graphite-poly.h (struct poly_dr): Add field nb_refs.
3948         (PDR_NB_REFS): New.
3949         (new_poly_dr): Number of subscripts is a graphite_dim_t.
3950
3951 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
3952
3953         PR middle-end/40965
3954         * graphite-poly.c (apply_poly_transforms): Remove legality test before
3955         any transform.
3956
3957 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
3958
3959         * graphite-dependences.c (pddr_original_scattering): Return NULL
3960         for read-read dependence relations.
3961         * graphite-poly.h (enum poly_dr_type): Fix comment.
3962         (pdr_read_p): New.
3963         (pdr_write_p): New.
3964         (pdr_may_write_p): New.
3965
3966 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
3967
3968         * graphite-poly.h (enum POLY_DR_TYPE): Renamed poly_dr_type.
3969         (struct poly_dr): Same.
3970         (new_poly_dr): Same.
3971         * graphite-poly.c (new_poly_dr): Same.
3972         * graphite-dependences.c (dot_deps): Disable call to system.
3973
3974 2009-08-28  Cary Coutant  <ccoutant@google.com>
3975
3976         PR debug/41063
3977         * dwarf2out.c (gen_type_die_with_usage): Use proper context for
3978         struct/union/enum types local to a function.
3979
3980 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
3981             Sebastian Pop  <sebastian.pop@amd.com>
3982
3983         * graphite-blocking.c (pbb_strip_mine_loop_depth): Renamed
3984         pbb_strip_mine_time_depth.  Changed the implementation so that
3985         transformation is expressed as a transformation on
3986         time (scatttering) dimensions.  Also, ensures that the 2d+1
3987         scheduling format is preserved.
3988         (pbb_strip_mine_profitable_p): Profitability is based on the
3989         iteration number of a given time (scattering) dimension,
3990         and not on a original loop depth dimension.
3991         (pbb_strip_mine): Call pbb_number_of_iterations_at_time.
3992         (pbb_do_strip_mine): Call psct_dynamic_dim.
3993         * graphite-poly.c (pbb_number_of_iterations_at_time): New.
3994         * graphite-poly.h (pbb_number_of_iterations_at_time): Declared.
3995         (pbb_nb_dynamic_scattering_transform): New.
3996         (psct_dynamic_dim): New.
3997
3998 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
3999
4000         * graphite-ppl.c (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
4001         * graphite-ppl.h (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
4002         * graphite-poly.c (pbb_number_of_iterations): Rename ppl_max_for_le.
4003         * graphite-interchange.c (build_linearized_memory_access): Same.
4004         (memory_stride_in_loop): Same.
4005
4006 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
4007
4008         * graphite-dependences.c (pddr_original_scattering): New.
4009         (graphite_legal_transform_dr): Call pddr_original_scattering.
4010         (dot_deps_1): New.
4011         (dot_deps): New.
4012         * graphite-dependences.h (dot_deps): Declared.
4013         * graphite-poly.c (new_poly_dr): Initialize PDR_ID.
4014         (print_pdr): Print PDR_ID.
4015         * graphite-poly.h (struct poly_dr): Add field id.
4016         (PDR_ID): New.
4017         (pbb_index): New.
4018         * graphite-scop-detection.c (dot_all_scops_1): Cleanup comment.
4019
4020 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
4021
4022         * graphite-dependences.c (graphite_carried_dependence_level_k): Do
4023         not delete the original dependence relation.
4024
4025 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
4026
4027         * graphite-dependences.c (new_poly_dr_pair): Renamed new_poly_ddr.
4028         (eq_poly_dr_pair_p): Renamed eq_poly_ddr_p.
4029         (hash_poly_dr_pair_p): Renamed hash_poly_ddr_p.
4030         (free_poly_ddr): New.
4031         (pddr_is_empty): New.
4032         (dependence_polyhedron_1): Now returns a poly_ddr_p.
4033         (dependence_polyhedron): Same.  Remove useless gcc_assert.
4034         Remove fprintfs.
4035         (graphite_legal_transform_dr): Call pddr_is_empty and free_poly_ddr.
4036         (graphite_carried_dependence_level_k): Call pddr_is_empty.
4037         * graphite-dependences.h (enum poly_dependence_kind): New.
4038         (poly_dr_pair): Renamed poly_ddr.  Added a field kind.
4039         (PDRP_SOURCE): Renamed PDDR_SOURCE.
4040         (PDRP_SINK): Renamed PDDR_SINK.
4041         (PDRP_DDP): Renamed PDDR_DDP.
4042         (PDDR_KIND): New.
4043         (free_poly_ddr): Declared.
4044         * graphite-poly.c (new_scop): Use the new hash function names.
4045         * graphite-poly.h (struct scop): Renamed field original_pdr_pairs
4046         into original_pddrs.
4047         (SCOP_ORIGINAL_PDR_PAIRS): Renamed SCOP_ORIGINAL_PDDRS.
4048
4049 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
4050
4051         * cfgloopmanip.c (create_empty_loop_on_edge): Generate upper
4052         bounds with LT_EXPR to make niter analysis more precise on code
4053         generated by Graphite.
4054
4055 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
4056
4057         * graphite-dependences.c (graphite_legal_transform_dr): Fix formatting.
4058         (graphite_legal_transform_bb): Same.
4059         (poly_drs_may_alias_p): Same.
4060
4061 2009-08-28  Richard Guenther  <rguenther@suse.de>
4062
4063         * tree.def: Remove note about obsolete TYPE_NONCOPIED_PARTS.
4064
4065 2009-08-28  Jan Beulich  <jbeulich@novell.com>
4066
4067         * config/i386/netware.c: Include langhooks.h.
4068         (i386_nlm_encode_section_info): Simplify.
4069         (netware_override_options): Delete.
4070         * config/i386/netware.h (netware_override_options): Delete
4071         declaration.
4072         (OVERRIDE_OPTIONS): Delete definition.
4073         (SUBTARGET_OVERRIDE_OPTIONS): Define.
4074         (ASM_COMMENT_START): Define.
4075         * config/i386/nwld.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Define.
4076
4077 2009-08-28  Jan Beulich  <jbeulich@novell.com>
4078
4079         * configure.ac: For in-tree ld, do a plain version check to
4080         determine whether comdat groups are supported.
4081         * configure: Regenerate.
4082
4083 2009-08-28  Olivier Hainque  <hainque@adacore.com>
4084
4085         * collect2.c (DO_COLLECT_EXPORT_LIST): New internal macro,
4086         always defined.  Reflect definition or absence of such for
4087         COLLECT_EXPORT_LIST.  Readability helper.
4088         (scanfilter): New enum, to help control what symbols
4089         are to be considered or ignored by scan_prog_file.
4090         (enum pass): Rename as "scanpass", moved together with scanfilter
4091         prior to scan_prog_file's prototype.
4092         (scan_prog_file): Accept and honor scanpass and scanfilter arguments.
4093         Group prototype with the scanpass/scanfilter definitions, factorize
4094         head comments for the several implementations at the prototype.
4095         (main): Reorganize the first pass link control to let AIX
4096         drag only the needed frame tables in executables.  Prevent
4097         frame tables collection during the scan aimed at static ctors.
4098         Pre-link and scan for frame tables later to compensate.
4099         * doc/tm.texi (ASM_OUTPUT_DWARF_TABLE_REF): New macro.
4100         A C statement to issue assembly directives that create a reference
4101         to the given DWARF table identifier label from the current function
4102         section.
4103         * dwarf2out.c (switch_to_eh_frame_section): Add a BACK argument
4104         to differentiate first time section entry.  Only emit a .data
4105         tables start identifier label the first time around.
4106         (switch_to_frame_table_section): New function.  Helper for
4107         output_call_frame_info to switch possibly BACK into the eh_frame
4108         or the debug_frame section depending on FOR_EH.
4109         (output_call_frame_info): Use helper to first enter the proper
4110         frame section.
4111         (output_fde): Use ASM_OUTPUT_DWARF_TABLE_REF when defined to
4112         emit a link to the frame table start label from each function
4113         section.
4114         * config/rs6000/rs6000.c (rs6000_aix_asm_output_dwarf_table_ref):
4115         New function.  Implementation of ASM_OUTPUT_DWARF_TABLE_REF.
4116         * config/rs6000/rs6000-protos.h: Declare it.
4117         * config/rs6000/aix.h (ASM_OUTPUT_DWARF_TABLE_REF): Define.
4118
4119 2009-08-27  Kaz Kojima  <kkojima@gcc.gnu.org>
4120
4121         * config/sh/sh.c (split_branches): Check the result of
4122         next_active_insn.
4123
4124 2009-08-27  Steve Ellcey  <sje@cup.hp.com>
4125
4126         * config/ia64/hpux.h (LIB_SPEC): Add -lrt for when
4127         using -pthread -fopenmp
4128
4129 2009-08-27  Gerald Pfeifer  <gerald@pfeifer.com>
4130
4131         * doc/service.texi (service directory): Update URL.
4132
4133 2009-08-27  Uros Bizjak  <ubizjak@gmail.com>
4134
4135         PR rtl-optimization/40861
4136         * simplify-rtx.c (simplify_subreg): Do not call simplify_gen_subreg to
4137         extract word from a multi-word subreg for negative byte positions.
4138
4139 2009-08-27  Tristan Gingold  <gingold@adacore.com>
4140             Douglas B Rupp  <rupp@gnat.com>
4141
4142         * config/ia64/ia64.c (ia64_attribute_table): Add "common_object" entry.
4143         (SECTION_VMS_OVERLAY): Define.
4144         (ia64_vms_common_object_attribute): Added.  Handle the "common_object"
4145         attribute.
4146         (ia64_vms_elf_asm_named_section): Added.  Generate .section pseudo-op
4147         for common_object.
4148         (ia64_vms_output_aligned_decl_common): Added.  Generate pseudo-op for
4149         common_object declarations.
4150         (ia64_section_type_flags): Set section flag for common_object.
4151         * config/ia64/ia64-protos.h
4152         (ia64_vms_output_aligned_decl_common): Declare.
4153         (ia64_vms_elf_asm_named_section): Declare.
4154
4155 2009-08-27  Michael Matz  <matz@suse.de>
4156
4157         * expr.c (expand_expr_real_2): New function taking exploded
4158         unary or binary expression, split out from ...
4159         (expand_expr_real_1): ... here.  Move over all unary/binary
4160         switch parts to above function, in particular these codes:
4161         PAREN_EXPR, NOP_EXPR, CONVERT_EXPR, POINTER_PLUS_EXPR, PLUS_EXPR,
4162         MINUS_EXPR, MULT_EXPR, TRUNC_DIV_EXPR, FLOOR_DIV_EXPR, CEIL_DIV_EXPR,
4163         ROUND_DIV_EXPR, EXACT_DIV_EXPR, RDIV_EXPR, TRUNC_MOD_EXPR,
4164         FLOOR_MOD_EXPR, CEIL_MOD_EXPR, ROUND_MOD_EXPR, FIXED_CONVERT_EXPR,
4165         FIX_TRUNC_EXPR, FLOAT_EXPR, NEGATE_EXPR, ABS_EXPR, MAX_EXPR, MIN_EXPR,
4166         BIT_NOT_EXPR, TRUTH_AND_EXPR, BIT_AND_EXPR, TRUTH_OR_EXPR,
4167         BIT_IOR_EXPR, TRUTH_XOR_EXPR, BIT_XOR_EXPR, LROTATE_EXPR, RROTATE_EXPR,
4168         LSHIFT_EXPR, RSHIFT_EXPR, LT_EXPR, LE_EXPR, GT_EXPR, GE_EXPR, EQ_EXPR,
4169         NE_EXPR, UNORDERED_EXPR, ORDERED_EXPR, UNLT_EXPR, UNLE_EXPR, UNGT_EXPR,
4170         UNGE_EXPR, UNEQ_EXPR, LTGT_EXPR, TRUTH_NOT_EXPR, COMPLEX_EXPR,
4171         WIDEN_SUM_EXPR, REDUC_MAX_EXPR, REDUC_MIN_EXPR, REDUC_PLUS_EXPR,
4172         VEC_EXTRACT_EVEN_EXPR, VEC_EXTRACT_ODD_EXPR, VEC_INTERLEAVE_HIGH_EXPR,
4173         VEC_INTERLEAVE_LOW_EXPR, VEC_LSHIFT_EXPR, VEC_RSHIFT_EXPR,
4174         VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR, VEC_UNPACK_FLOAT_HI_EXPR,
4175         VEC_UNPACK_FLOAT_LO_EXPR, VEC_WIDEN_MULT_HI_EXPR,
4176         VEC_WIDEN_MULT_LO_EXPR, VEC_PACK_TRUNC_EXPR, VEC_PACK_SAT_EXPR,
4177         VEC_PACK_FIX_TRUNC_EXPR.
4178         (<case PAREN_EXPR>): Call set_mem_attributes() with type, not the
4179         full expression.
4180
4181 2009-08-27  Richard Guenther  <rguenther@suse.de>
4182
4183         * gengtype.c (main): Handle uint64_t.
4184         * ipa-utils.c (get_base_var): Indent properly.
4185         * tree-ssa-live.c (debug_scope_block): New function.
4186         * tree-flow.h (debug_scope_block): Declare.
4187         * tree-ssa-copy.c (replace_exp_1): Add vertical space.
4188         * basic-block.h (enum profile_status): Rename to
4189         enum profile_status_d.
4190         (x_profile_status): Adjust type.
4191
4192 2009-08-27  Dodji Seketeli  <dodji@redhat.com>
4193
4194         PR debug/41170
4195         * dwarf2out.c (get_context_die): Declare this static function.
4196         (gen_type_die_with_usage): Make sure a DIE is a generated for
4197         the context of a typedef.
4198
4199 2009-08-26  Anatoly Sokolov  <aesok@post.ru>
4200
4201         * doc/invoke.texi (AVR Options): Remove documentation of -minit-stack
4202         switch.
4203
4204 2009-08-26  Richard Sandiford  <rdsandiford@googlemail.com>
4205
4206         * config/mips/mips-protos.h (mips_output_sync): Declare.
4207         (mips_sync_loop_insns): Likewise.
4208         (mips_output_sync_loop): Replace first two parameters with an rtx.
4209         * config/mips/mips.c (mips_multi_member): New structure.
4210         (mips_multi_members): New variable.
4211         (mips_multi_start): New function.
4212         (mips_multi_add): Likewise.
4213         (mips_multi_add_insn): Likewise.
4214         (mips_multi_add_label): Likewise.
4215         (mips_multi_last_index): Likewise.
4216         (mips_multi_copy_insn): Likewise.
4217         (mips_multi_set_operand): Likewise.
4218         (mips_multi_write): Likewise.
4219         (mips_print_operand_punctuation): Remove '%|' and '%-'.
4220         (mips_init_print_operand_punct): Update accordingly.
4221         (mips_start_ll_sc_sync_block): New function.
4222         (mips_end_ll_sc_sync_block): Likewise.
4223         (mips_output_sync): Likewise.
4224         (mips_sync_insn1_template): Likewise.
4225         (mips_sync_insn2_template): Likewise.
4226         (mips_get_sync_operand): Likewise.
4227         (mips_process_sync_loop): Likewise.
4228         (mips_output_sync_loop): Use mips_process_sync_loop.
4229         (mips_sync_loop_insns): New function.
4230         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Delete.
4231         (MIPS_COMPARE_AND_SWAP_12): Likewise.
4232         (MIPS_COMPARE_AND_SWAP_12_ZERO_OP): Likewise.
4233         (MIPS_COMPARE_AND_SWAP_12_NONZERO_OP): Likewise.
4234         (MIPS_SYNC_OP, MIPS_SYNC_OP_12): Likewise.
4235         (MIPS_SYNC_OP_12_AND, MIPS_SYNC_OP_12_XOR): Likewise.
4236         (MIPS_SYNC_OLD_OP_12): Likewise.
4237         (MIPS_SYNC_OLD_OP_12_AND, MIPS_SYNC_OLD_OP_12_XOR): Likewise.
4238         (MIPS_SYNC_NEW_OP_12): Likewise.
4239         (MIPS_SYNC_NEW_OP_12_AND, MIPS_SYNC_NEW_OP_12_XOR): Likewise.
4240         (MIPS_SYNC_OLD_OP, MIPS_SYNC_NEW_OP): Likewise.
4241         (MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND, MIPS_SYNC_NEW_NAND): Likewise.
4242         (MIPS_SYNC_EXCHANGE, MIPS_SYNC_EXCHANGE_12): Likewise.
4243         (MIPS_SYNC_EXCHANGE_12_ZERO_OP): Likewise.
4244         (MIPS_SYNC_EXCHANGE_12_NONZER_OP): Likewise.
4245         * config/mips/mips.md (sync_mem): New attribute.
4246         (sync_oldval, sync_newval, sync_inclusive_mask): Likewise.
4247         (sync_exclusive_mask, sync_required_oldval): Likewise.
4248         (sync_insn1_op2, sync_insn1, sync_insn2): Likewise.
4249         (sync_release_barrier): Likewise.
4250         (length): Handle sync loops.
4251         (sync): Use mips_output_sync.
4252         * config/mips/sync.md (*memory_barrier): Use mips_output_sync.
4253         (sync_compare_and_swap<mode>): Set the new sync_* attributes
4254         and use mips_output_sync_loop.
4255         (compare_and_swap_12, sync_add<mode>, sync_<optab>_12): Likewise.
4256         (sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12): Likewise.
4257         (sync_old_nand_12, sync_new_nand_12, sync_sub<mode>): Likewise.
4258         (sync_old_add<mode>, sync_old_sub<mode>): Likewise.
4259         (sync_new_add<mode>, sync_new_sub<mode>): Likewise.
4260         (sync_<optab><mode>, sync_old_<optab><mode>): Likewise.
4261         (sync_new_<optab><mode>, sync_nand<mode>): Likewise.
4262         (sync_old_nand<mode>, sync_new_nand<mode>): Likewise.
4263         (sync_lock_test_and_set<mode>, test_and_set_12): Likewise.
4264
4265 2009-08-26  Richard Guenther  <rguenther@suse.de>
4266
4267         PR middle-end/41163
4268         * gimplify.c (gimplify_addr_expr): Canonicalize ADDR_EXPRs if
4269         the types to not match.
4270         * tree-cfg.c (verify_gimple_assign_single): Adjust ADDR_EXPR
4271         verification.
4272         * tree-ssa.c (useless_type_conversion_p): Conversions to
4273         pointers to unprototyped functions are useless.
4274
4275 2009-08-26  Richard Guenther  <rguenther@suse.de>
4276
4277         * tree-ssa-structalias.c (create_variable_info_for): Remove strange
4278         whole-program condition, prepare to be called for non-globals.
4279         (intra_create_variable_infos): For restrict qualified DECL_BY_REFERENCE
4280         params build a representative with known type and track its fields.
4281
4282 2009-08-26  Uros Bizjak  <ubizjak@gmail.com>
4283
4284         * config/alpha/sync.md: Update comment about unpredictable LL/SC lock
4285         clearing by a taken branch.
4286         (sync_<fetchop_name><mode>): Split when epilogue_completed is set,
4287         effectively after bbro pass.
4288         (sync_nand<mode>): Ditto.
4289         (sync_old_<fetchop_name><mode>): Ditto.
4290         (sync_old_nand<mode>): Ditto.
4291         (sync_new_<fetchop_name><mode>): Dito.
4292         (sync_new_nand<mode>): Ditto.
4293         (sync_compare_and_swap<mode>_1): Ditto.
4294         (*sync_compare_and_swap<mode>): Ditto.
4295         (sync_lock_test_and_set<mode>_1): Ditto.
4296         ("sync_lock_test_and_set<mode>): Ditto.
4297
4298 2009-08-25  Douglas B Rupp  <rupp@gnat.com>
4299
4300         * hwint.h (HOST_LONG_FORMAT): New macro
4301         * bitmap.c, c-decl.c, mips-tfile.c, print-rtl.c, print-tree.c:
4302         Use HOST_PTR_PRINTF.
4303         * system.h (HOST_PTR_PRINTF): Resurrect old macro
4304         * doc/hostconfig.texi (HOST_LONG_FORMAT): Document.
4305         (HOST_PTR_PRINTF): Document.
4306
4307 2009-08-25 Jan Hubicka  <jh@suse.cz>
4308
4309         * config/i386/bmmintrin.h: Replace by #error.
4310
4311         Revert:
4312         Michael Meissner  <michael.meissner@amd.com>
4313         Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
4314         Tony Linthicum  <tony.linthicum@amd.com>
4315
4316         * config/i386/i386.h (TARGET_SSE5): New macro for SSE5.
4317         (TARGET_ROUND): New macro for the round/ptest instructions which
4318         are shared between SSE4.1 and SSE5.
4319         (OPTION_MASK_ISA_ROUND): Ditto.
4320         (OPTION_ISA_ROUND): Ditto.
4321         (TARGET_FUSED_MADD): New macro for -mfused-madd swtich.
4322         (TARGET_CPU_CPP_BUILTINS): Add SSE5 support.
4323
4324         * config/i386/i386.opt (-msse5): New switch for SSE5 support.
4325         (-mfused-madd): New switch to give users control over whether the
4326         compiler optimizes to use the multiply/add SSE5 instructions.
4327
4328         * config/i386/i386.c (enum pta_flags): Add PTA_SSE5.
4329         (ix86_handle_option): Turn off 3dnow if -msse5.
4330         (override_options): Add SSE5 support.
4331         (print_operand): %Y prints comparison codes for SSE5 com/pcom
4332         instructions.
4333         (ix86_expand_sse_movcc): Add SSE5 support.
4334         (ix86_expand_sse5_unpack): New function to use pperm to unpack a
4335         vector type to the next largest size.
4336         (ix86_expand_sse5_pack): New function to use pperm to pack a
4337         vector type to the next smallest size.
4338         (IX86_BUILTIN_FMADDSS): New for SSE5 intrinsic.
4339         (IX86_BUILTIN_FMADDSD): Ditto.
4340         (IX86_BUILTIN_FMADDPS): Ditto.
4341         (IX86_BUILTIN_FMADDPD): Ditto.
4342         (IX86_BUILTIN_FMSUBSS): Ditto.
4343         (IX86_BUILTIN_FMSUBSD): Ditto.
4344         (IX86_BUILTIN_FMSUBPS): Ditto.
4345         (IX86_BUILTIN_FMSUBPD): Ditto.
4346         (IX86_BUILTIN_FNMADDSS): Ditto.
4347         (IX86_BUILTIN_FNMADDSD): Ditto.
4348         (IX86_BUILTIN_FNMADDPS): Ditto.
4349         (IX86_BUILTIN_FNMADDPD): Ditto.
4350         (IX86_BUILTIN_FNMSUBSS): Ditto.
4351         (IX86_BUILTIN_FNMSUBSD): Ditto.
4352         (IX86_BUILTIN_FNMSUBPS): Ditto.
4353         (IX86_BUILTIN_FNMSUBPD): Ditto.
4354         (IX86_BUILTIN_PCMOV_V2DI): Ditto.
4355         (IX86_BUILTIN_PCMOV_V4SI): Ditto.
4356         (IX86_BUILTIN_PCMOV_V8HI): Ditto.
4357         (IX86_BUILTIN_PCMOV_V16QI): Ditto.
4358         (IX86_BUILTIN_PCMOV_V4SF): Ditto.
4359         (IX86_BUILTIN_PCMOV_V2DF): Ditto.
4360         (IX86_BUILTIN_PPERM): Ditto.
4361         (IX86_BUILTIN_PERMPS): Ditto.
4362         (IX86_BUILTIN_PERMPD): Ditto.
4363         (IX86_BUILTIN_PMACSSWW): Ditto.
4364         (IX86_BUILTIN_PMACSWW): Ditto.
4365         (IX86_BUILTIN_PMACSSWD): Ditto.
4366         (IX86_BUILTIN_PMACSWD): Ditto.
4367         (IX86_BUILTIN_PMACSSDD): Ditto.
4368         (IX86_BUILTIN_PMACSDD): Ditto.
4369         (IX86_BUILTIN_PMACSSDQL): Ditto.
4370         (IX86_BUILTIN_PMACSSDQH): Ditto.
4371         (IX86_BUILTIN_PMACSDQL): Ditto.
4372         (IX86_BUILTIN_PMACSDQH): Ditto.
4373         (IX86_BUILTIN_PMADCSSWD): Ditto.
4374         (IX86_BUILTIN_PMADCSWD): Ditto.
4375         (IX86_BUILTIN_PHADDBW): Ditto.
4376         (IX86_BUILTIN_PHADDBD): Ditto.
4377         (IX86_BUILTIN_PHADDBQ): Ditto.
4378         (IX86_BUILTIN_PHADDWD): Ditto.
4379         (IX86_BUILTIN_PHADDWQ): Ditto.
4380         (IX86_BUILTIN_PHADDDQ): Ditto.
4381         (IX86_BUILTIN_PHADDUBW): Ditto.
4382         (IX86_BUILTIN_PHADDUBD): Ditto.
4383         (IX86_BUILTIN_PHADDUBQ): Ditto.
4384         (IX86_BUILTIN_PHADDUWD): Ditto.
4385         (IX86_BUILTIN_PHADDUWQ): Ditto.
4386         (IX86_BUILTIN_PHADDUDQ): Ditto.
4387         (IX86_BUILTIN_PHSUBBW): Ditto.
4388         (IX86_BUILTIN_PHSUBWD): Ditto.
4389         (IX86_BUILTIN_PHSUBDQ): Ditto.
4390         (IX86_BUILTIN_PROTB): Ditto.
4391         (IX86_BUILTIN_PROTW): Ditto.
4392         (IX86_BUILTIN_PROTD): Ditto.
4393         (IX86_BUILTIN_PROTQ): Ditto.
4394         (IX86_BUILTIN_PROTB_IMM): Ditto.
4395         (IX86_BUILTIN_PROTW_IMM): Ditto.
4396         (IX86_BUILTIN_PROTD_IMM): Ditto.
4397         (IX86_BUILTIN_PROTQ_IMM): Ditto.
4398         (IX86_BUILTIN_PSHLB): Ditto.
4399         (IX86_BUILTIN_PSHLW): Ditto.
4400         (IX86_BUILTIN_PSHLD): Ditto.
4401         (IX86_BUILTIN_PSHLQ): Ditto.
4402         (IX86_BUILTIN_PSHAB): Ditto.
4403         (IX86_BUILTIN_PSHAW): Ditto.
4404         (IX86_BUILTIN_PSHAD): Ditto.
4405         (IX86_BUILTIN_PSHAQ): Ditto.
4406         (IX86_BUILTIN_FRCZSS): Ditto.
4407         (IX86_BUILTIN_FRCZSD): Ditto.
4408         (IX86_BUILTIN_FRCZPS): Ditto.
4409         (IX86_BUILTIN_FRCZPD): Ditto.
4410         (IX86_BUILTIN_CVTPH2PS): Ditto.
4411         (IX86_BUILTIN_CVTPS2PH): Ditto.
4412         (IX86_BUILTIN_COMEQSS): Ditto.
4413         (IX86_BUILTIN_COMNESS): Ditto.
4414         (IX86_BUILTIN_COMLTSS): Ditto.
4415         (IX86_BUILTIN_COMLESS): Ditto.
4416         (IX86_BUILTIN_COMGTSS): Ditto.
4417         (IX86_BUILTIN_COMGESS): Ditto.
4418         (IX86_BUILTIN_COMUEQSS): Ditto.
4419         (IX86_BUILTIN_COMUNESS): Ditto.
4420         (IX86_BUILTIN_COMULTSS): Ditto.
4421         (IX86_BUILTIN_COMULESS): Ditto.
4422         (IX86_BUILTIN_COMUGTSS): Ditto.
4423         (IX86_BUILTIN_COMUGESS): Ditto.
4424         (IX86_BUILTIN_COMORDSS): Ditto.
4425         (IX86_BUILTIN_COMUNORDSS): Ditto.
4426         (IX86_BUILTIN_COMFALSESS): Ditto.
4427         (IX86_BUILTIN_COMTRUESS): Ditto.
4428         (IX86_BUILTIN_COMEQSD): Ditto.
4429         (IX86_BUILTIN_COMNESD): Ditto.
4430         (IX86_BUILTIN_COMLTSD): Ditto.
4431         (IX86_BUILTIN_COMLESD): Ditto.
4432         (IX86_BUILTIN_COMGTSD): Ditto.
4433         (IX86_BUILTIN_COMGESD): Ditto.
4434         (IX86_BUILTIN_COMUEQSD): Ditto.
4435         (IX86_BUILTIN_COMUNESD): Ditto.
4436         (IX86_BUILTIN_COMULTSD): Ditto.
4437         (IX86_BUILTIN_COMULESD): Ditto.
4438         (IX86_BUILTIN_COMUGTSD): Ditto.
4439         (IX86_BUILTIN_COMUGESD): Ditto.
4440         (IX86_BUILTIN_COMORDSD): Ditto.
4441         (IX86_BUILTIN_COMUNORDSD): Ditto.
4442         (IX86_BUILTIN_COMFALSESD): Ditto.
4443         (IX86_BUILTIN_COMTRUESD): Ditto.
4444         (IX86_BUILTIN_COMEQPS): Ditto.
4445         (IX86_BUILTIN_COMNEPS): Ditto.
4446         (IX86_BUILTIN_COMLTPS): Ditto.
4447         (IX86_BUILTIN_COMLEPS): Ditto.
4448         (IX86_BUILTIN_COMGTPS): Ditto.
4449         (IX86_BUILTIN_COMGEPS): Ditto.
4450         (IX86_BUILTIN_COMUEQPS): Ditto.
4451         (IX86_BUILTIN_COMUNEPS): Ditto.
4452         (IX86_BUILTIN_COMULTPS): Ditto.
4453         (IX86_BUILTIN_COMULEPS): Ditto.
4454         (IX86_BUILTIN_COMUGTPS): Ditto.
4455         (IX86_BUILTIN_COMUGEPS): Ditto.
4456         (IX86_BUILTIN_COMORDPS): Ditto.
4457         (IX86_BUILTIN_COMUNORDPS): Ditto.
4458         (IX86_BUILTIN_COMFALSEPS): Ditto.
4459         (IX86_BUILTIN_COMTRUEPS): Ditto.
4460         (IX86_BUILTIN_COMEQPD): Ditto.
4461         (IX86_BUILTIN_COMNEPD): Ditto.
4462         (IX86_BUILTIN_COMLTPD): Ditto.
4463         (IX86_BUILTIN_COMLEPD): Ditto.
4464         (IX86_BUILTIN_COMGTPD): Ditto.
4465         (IX86_BUILTIN_COMGEPD): Ditto.
4466         (IX86_BUILTIN_COMUEQPD): Ditto.
4467         (IX86_BUILTIN_COMUNEPD): Ditto.
4468         (IX86_BUILTIN_COMULTPD): Ditto.
4469         (IX86_BUILTIN_COMULEPD): Ditto.
4470         (IX86_BUILTIN_COMUGTPD): Ditto.
4471         (IX86_BUILTIN_COMUGEPD): Ditto.
4472         (IX86_BUILTIN_COMORDPD): Ditto.
4473         (IX86_BUILTIN_COMUNORDPD): Ditto.
4474         (IX86_BUILTIN_COMFALSEPD): Ditto.
4475         (IX86_BUILTIN_COMTRUEPD): Ditto.
4476         (IX86_BUILTIN_PCOMEQUB): Ditto.
4477         (IX86_BUILTIN_PCOMNEUB): Ditto.
4478         (IX86_BUILTIN_PCOMLTUB): Ditto.
4479         (IX86_BUILTIN_PCOMLEUB): Ditto.
4480         (IX86_BUILTIN_PCOMGTUB): Ditto.
4481         (IX86_BUILTIN_PCOMGEUB): Ditto.
4482         (IX86_BUILTIN_PCOMFALSEUB): Ditto.
4483         (IX86_BUILTIN_PCOMTRUEUB): Ditto.
4484         (IX86_BUILTIN_PCOMEQUW): Ditto.
4485         (IX86_BUILTIN_PCOMNEUW): Ditto.
4486         (IX86_BUILTIN_PCOMLTUW): Ditto.
4487         (IX86_BUILTIN_PCOMLEUW): Ditto.
4488         (IX86_BUILTIN_PCOMGTUW): Ditto.
4489         (IX86_BUILTIN_PCOMGEUW): Ditto.
4490         (IX86_BUILTIN_PCOMFALSEUW): Ditto.
4491         (IX86_BUILTIN_PCOMTRUEUW): Ditto.
4492         (IX86_BUILTIN_PCOMEQUD): Ditto.
4493         (IX86_BUILTIN_PCOMNEUD): Ditto.
4494         (IX86_BUILTIN_PCOMLTUD): Ditto.
4495         (IX86_BUILTIN_PCOMLEUD): Ditto.
4496         (IX86_BUILTIN_PCOMGTUD): Ditto.
4497         (IX86_BUILTIN_PCOMGEUD): Ditto.
4498         (IX86_BUILTIN_PCOMFALSEUD): Ditto.
4499         (IX86_BUILTIN_PCOMTRUEUD): Ditto.
4500         (IX86_BUILTIN_PCOMEQUQ): Ditto.
4501         (IX86_BUILTIN_PCOMNEUQ): Ditto.
4502         (IX86_BUILTIN_PCOMLTUQ): Ditto.
4503         (IX86_BUILTIN_PCOMLEUQ): Ditto.
4504         (IX86_BUILTIN_PCOMGTUQ): Ditto.
4505         (IX86_BUILTIN_PCOMGEUQ): Ditto.
4506         (IX86_BUILTIN_PCOMFALSEUQ): Ditto.
4507         (IX86_BUILTIN_PCOMTRUEUQ): Ditto.
4508         (IX86_BUILTIN_PCOMEQB): Ditto.
4509         (IX86_BUILTIN_PCOMNEB): Ditto.
4510         (IX86_BUILTIN_PCOMLTB): Ditto.
4511         (IX86_BUILTIN_PCOMLEB): Ditto.
4512         (IX86_BUILTIN_PCOMGTB): Ditto.
4513         (IX86_BUILTIN_PCOMGEB): Ditto.
4514         (IX86_BUILTIN_PCOMFALSEB): Ditto.
4515         (IX86_BUILTIN_PCOMTRUEB): Ditto.
4516         (IX86_BUILTIN_PCOMEQW): Ditto.
4517         (IX86_BUILTIN_PCOMNEW): Ditto.
4518         (IX86_BUILTIN_PCOMLTW): Ditto.
4519         (IX86_BUILTIN_PCOMLEW): Ditto.
4520         (IX86_BUILTIN_PCOMGTW): Ditto.
4521         (IX86_BUILTIN_PCOMGEW): Ditto.
4522         (IX86_BUILTIN_PCOMFALSEW): Ditto.
4523         (IX86_BUILTIN_PCOMTRUEW): Ditto.
4524         (IX86_BUILTIN_PCOMEQD): Ditto.
4525         (IX86_BUILTIN_PCOMNED): Ditto.
4526         (IX86_BUILTIN_PCOMLTD): Ditto.
4527         (IX86_BUILTIN_PCOMLED): Ditto.
4528         (IX86_BUILTIN_PCOMGTD): Ditto.
4529         (IX86_BUILTIN_PCOMGED): Ditto.
4530         (IX86_BUILTIN_PCOMFALSED): Ditto.
4531         (IX86_BUILTIN_PCOMTRUED): Ditto.
4532         (IX86_BUILTIN_PCOMEQQ): Ditto.
4533         (IX86_BUILTIN_PCOMNEQ): Ditto.
4534         (IX86_BUILTIN_PCOMLTQ): Ditto.
4535         (IX86_BUILTIN_PCOMLEQ): Ditto.
4536         (IX86_BUILTIN_PCOMGTQ): Ditto.
4537         (IX86_BUILTIN_PCOMGEQ): Ditto.
4538         (IX86_BUILTIN_PCOMFALSEQ): Ditto.
4539         (IX86_BUILTIN_PCOMTRUEQ): Ditto.
4540         (enum multi_arg_type): New enum for describing the various SSE5
4541         intrinsic argument types.
4542         (bdesc_multi_arg): New table for SSE5 intrinsics.
4543         (ix86_init_mmx_sse_builtins): Add SSE5 intrinsic support.
4544         (ix86_expand_multi_arg_builtin): New function for creating SSE5
4545         intrinsics.
4546         (ix86_expand_builtin): Add SSE5 intrinsic support.
4547         (ix86_sse5_valid_op_p): New function to validate SSE5 3 and 4
4548         operand instructions.
4549         (ix86_expand_sse5_multiple_memory): New function to split the
4550         second memory reference from SSE5 instructions.
4551         (type_has_variadic_args_p): Delete in favor of stdarg_p.
4552         (ix86_return_pops_args): Use stdarg_p to determine if the function
4553         has variable arguments.
4554         (ix86_setup_incoming_varargs): Ditto.
4555         (x86_this_parameter): Ditto.
4556
4557         * config/i386/i386-protos.h (ix86_expand_sse5_unpack): Add
4558         declaration.
4559         (ix86_expand_sse5_pack): Ditto.
4560         (ix86_sse5_valid_op_p): Ditto.
4561         (ix86_expand_sse5_multiple_memory): Ditto.
4562
4563         * config/i386/i386.md (UNSPEC_SSE5_INTRINSIC): Add new UNSPEC
4564         constant for SSE5 support.
4565         (UNSPEC_SSE5_UNSIGNED_CMP): Ditto.
4566         (UNSPEC_SSE5_TRUEFALSE): Ditto.
4567         (UNSPEC_SSE5_PERMUTE): Ditto.
4568         (UNSPEC_SSE5_ASHIFT): Ditto.
4569         (UNSPEC_SSE5_LSHIFT): Ditto.
4570         (UNSPEC_FRCZ): Ditto.
4571         (UNSPEC_CVTPH2PS): Ditto.
4572         (UNSPEC_CVTPS2PH): Ditto.
4573         (PCOM_FALSE): Add new constant for true/false SSE5 comparisons.
4574         (PCOM_TRUE): Ditto.
4575         (COM_FALSE_S): Ditto.
4576         (COM_FALSE_P): Ditto.
4577         (COM_TRUE_S): Ditto.
4578         (COM_TRUE_P): Ditto.
4579         (type attribute): Add ssemuladd, sseiadd1, ssecvt1, sse4arg types.
4580         (unit attribute): Add support for ssemuladd, ssecvt1, sseiadd1 sse4arg
4581         types.
4582         (memory attribute): Ditto.
4583         (sse4_1_round<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
4584         Use SSE4_1_ROUND_* constants instead of hard coded numbers.
4585         (rint<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
4586         (floor<mode>2): Ditto.
4587         (ceil<mode>2): Ditto.
4588         (btrunc<mode>2): Ditto.
4589         (nearbyintdf2): Ditto.
4590         (nearbyintsf2): Ditto.
4591         (sse_setccsf): Disable if SSE5.
4592         (sse_setccdf): Ditto.
4593         (sse5_setcc<mode>): New support for SSE5 conditional move.
4594         (sse5_pcmov_<mode>): Ditto.
4595
4596         * config/i386/sse.md (SSEMODE1248): New mode iterator for SSE5.
4597         (SSEMODEF4): Ditto.
4598         (SSEMODEF2P): Ditto.
4599         (ssemodesuffixf4): New mode attribute for SSE5.
4600         (ssemodesuffixf2s): Ditto.
4601         (ssemodesuffixf2c): Ditto.
4602         (sserotatemax): Ditto.
4603         (ssescalarmode): Ditto.
4604         (sse_maskcmpv4sf3): Disable if SSE5.
4605         (sse_maskcmpv2df3): Ditto.
4606         (sse_vmmaskcmpv4sf3): Ditto.
4607         (sse5_fmadd<mode>4): Add SSE5 floating point multiply/add instructions.
4608         (sse5_vmfmadd<mode>4): Ditto.
4609         (sse5_fmsub<mode>4): Ditto.
4610         (sse5_vmfmsub<mode>4): Ditto.
4611         (sse5_fnmadd<mode>4): Ditto.
4612         (sse5_vmfnmadd<mode>4): Ditto.
4613         (sse5_fnmsub<mode>4): Ditto.
4614         (sse5_vmfnmsub<mode>4): Ditto.
4615         (sse5i_fmadd<mode>4): Ditto.
4616         (sse5i_fmsub<mode>4): Ditto.
4617         (sse5i_fnmadd<mode>4): Ditto.
4618         (sse5i_fnmsub<mode>4): Ditto.
4619         (sse5i_vmfmadd<mode>4): Ditto.
4620         (sse5i_vmfmsub<mode>4): Ditto.
4621         (sse5i_vmfnmadd<mode>4): Ditto.
4622         (sse5i_vmfnmsub<mode>4): Ditto.
4623         (mulv16qi3): Add SSE5 support.
4624         (mulv4si3): Ditto.
4625         (sse5_mulv4si3): New insn for 32-bit multiply support on SSE5.
4626         (sse2_mulv4si3): Disable if SSE5.
4627         (sse4_1_roundpd): Use TARGET_ROUND instead of TARGET_SSE4_1.
4628         (sse4_1_roundps): Ditto.
4629         (sse4_1_roundsd): Ditto.
4630         (sse4_1_roundss): Ditto.
4631         (sse_maskcmpv4sf3): Disable if SSE5 so the SSE5 instruction will
4632         be generated.
4633         (sse_maskcmpsf3): Ditto.
4634         (sse_vmmaskcmpv4sf3): Ditto.
4635         (sse2_maskcmpv2df3): Ditto.
4636         (sse2_maskcmpdf3): Ditto.
4637         (sse2_vmmaskcmpv2df3): Ditto.
4638         (sse2_eq<mode>3): Ditto.
4639         (sse2_gt<mode>3): Ditto.
4640         (sse5_pcmov_<mode>): Add SSE5 support.
4641         (vec_unpacku_hi_v16qi): Ditto.
4642         (vec_unpacks_hi_v16qi): Ditto.
4643         (vec_unpacku_lo_v16qi): Ditto.
4644         (vec_unpacks_lo_v16qi): Ditto.
4645         (vec_unpacku_hi_v8hi): Ditto.
4646         (vec_unpacks_hi_v8hi): Ditto.
4647         (vec_unpacku_lo_v8hi): Ditto.
4648         (vec_unpacks_lo_v8hi): Ditto.
4649         (vec_unpacku_hi_v4si): Ditto.
4650         (vec_unpacks_hi_v4si): Ditto.
4651         (vec_unpacku_lo_v4si): Ditto.
4652         (vec_unpacks_lo_v4si): Ditto.
4653         (sse5_pmacsww): New SSE5 intrinsic insn.
4654         (sse5_pmacssww): Ditto.
4655         (sse5_pmacsdd): Ditto.
4656         (sse5_pmacssdd): Ditto.
4657         (sse5_pmacssdql): Ditto.
4658         (sse5_pmacssdqh): Ditto.
4659         (sse5_pmacsdqh): Ditto.
4660         (sse5_pmacsswd): Ditto.
4661         (sse5_pmacswd): Ditto.
4662         (sse5_pmadcsswd): Ditto.
4663         (sse5_pmadcswd): Ditto.
4664         (sse5_pcmov_<move>): Conditional move support on SSE5.
4665         (sse5_phaddbw): New SSE5 intrinsic insn.
4666         (sse5_phaddbd): Ditto.
4667         (sse5_phaddbq): Ditto.
4668         (sse5_phaddwd): Ditto.
4669         (sse5_phaddwq): Ditto.
4670         (sse5_phadddq): Ditto.
4671         (sse5_phaddubw): Ditto.
4672         (sse5_phaddubd): Ditto.
4673         (sse5_phaddubq): Ditto.
4674         (sse5_phadduwd): Ditto.
4675         (sse5_phadduwq): Ditto.
4676         (sse5_phaddudq): Ditto.
4677         (sse5_phsubbw): Ditto.
4678         (sse5_phsubwd): Ditto.
4679         (sse5_phsubdq): Ditto.
4680         (sse5_pperm): Ditto.
4681         (sse5_pperm_sign_v16qi_v8hi): New insns for pack/unpack with SSE5.
4682         (sse5_pperm_zero_v16qi_v8hi): Ditto.
4683         (sse5_pperm_sign_v8hi_v4si): Ditto.
4684         (sse5_pperm_zero_v8hi_v4si): Ditto.
4685         (sse5_pperm_sign_v4si_v2di): Ditto.
4686         (sse5_pperm_sign_v4si_v2di): Ditto.
4687         (sse5_pperm_pack_v2di_v4si): Ditto.
4688         (sse5_pperm_pack_v4si_v8hi): Ditto.
4689         (sse5_pperm_pack_v8hi_v16qi): Ditto.
4690         (sse5_perm<mode>): New SSE5 intrinsic insn.
4691         (rotl<mode>3): Ditto.
4692         (sse5_rotl<mode>3): Ditto.
4693         (sse5_ashl<mode>3): Ditto.
4694         (sse5_lshl<mode>3): Ditto.
4695         (sse5_frcz<mode>2): Ditto.
4696         (sse5s_frcz<mode>2): Ditto.
4697         (sse5_cvtph2ps): Ditto.
4698         (sse5_cvtps2ph): Ditto.
4699         (sse5_vmmaskcmp<mode>3): Ditto.
4700         (sse5_com_tf<mode>3): Ditto.
4701         (sse5_maskcmp<mode>3): Ditto.
4702         (sse5_maskcmp_uns<mode>3): Ditto.
4703         (sse5_maskcmp_uns2<mode>3): Ditto.
4704         (sse5_pcom_tf<mode>3): Ditto.
4705
4706         * config/i386/predicates.md (sse5_comparison_float_operator):
4707         New predicate to match the comparison operators supported by
4708         the SSE5 com instruction.
4709         (ix86_comparison_int_operator): New predicate to match just the
4710         signed int comparisons.
4711         (ix86_comparison_uns_operator): New predicate to match just the
4712         unsigned int comparisons.
4713
4714         * doc/invoke.texi (-msse5): Add documentation.
4715         (-mfused-madd): Ditto.
4716
4717         * doc/extend.texi (x86 intrinsics): Document new SSE5 intrinsics.
4718
4719         * config.gcc (i[34567]86-*-*): Include bmmintrin.h and
4720         mmintrin-common.h.
4721         (x86_64-*-*): Ditto.
4722
4723         * config/i386/cpuid.h (bit_SSE5): Define SSE5 bit.
4724
4725         * config/i386/bmmintrin.h: New file, provide common x86 compiler
4726         intrinisics for SSE5.
4727
4728         * config/i386/smmintrin.h: Move instructions shared with SSE5 to
4729         mmintrin-common.h.
4730
4731         * config/i386/mmintrin-common.h: New file, to contain common
4732         instructions between SSE4.1 and SSE5.
4733
4734         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration): Use
4735         FOREACH_FUNCTION_ARGS to iterate over the argument list.
4736         (gen_regparm_prefix): Ditto.
4737
4738         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix): Use
4739         FOREACH_FUNCTION_ARGS to iterate over the argument list.  Use
4740         prototype_p to determine if a function is prototyped.
4741
4742 2009-08-25 Ville Voutilainen <ville.voutilainen@gmail.com>
4743
4744         * c-common.c (c_common_reswords) add the alignof keyword,
4745         with same RID as __alignof and __alignof__
4746
4747 2009-08-25  Anatoly Sokolov  <aesok@post.ru>
4748
4749         * hooks.h (hook_bool_const_int_const_int_true): Declare.
4750         * hooks.c (hook_bool_const_int_const_int_true): New function.
4751         * target.h (struct gcc_target): Add can_eliminate field.
4752         * target-def.h (TARGET_CAN_ELIMINATE): Define.
4753         (TARGET_INITIALIZER): Use TARGET_CAN_ELIMINATE.
4754         * ira.c (setup_eliminable_regset): Use can_eliminate target hook.
4755         * reload1.c (update_eliminables, init_elim_table): (Ditto.).
4756         (elim_table): Revise comment.
4757         * system.h (CAN_ELIMINATE): Poison.
4758         * defaults.h (CAN_ELIMINATE): Remove.
4759         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
4760
4761         * config/alpha/vms.h (CAN_ELIMINATE): Remove macro.
4762         * config/alpha/alpha.c (TARGET_CAN_ELIMINATE) [TARGET_ABI_OPEN_VMS]:
4763         Define macro.
4764         (alpha_vms_can_eliminate): Declare as static, change return type to
4765         bool.
4766         * config/alpha/alpha-protos.h (alpha_vms_can_eliminate): Remove.
4767
4768         * config/arm/arm.h (CAN_ELIMINATE): Remove macro.
4769         * config/arm/arm.c (TARGET_CAN_ELIMINATE): Define macro.
4770         (arm_can_eliminate): New function.
4771
4772         * config/avr/avr.h (CAN_ELIMINATE): Remove macro.
4773         * config/avr/avr.c (TARGET_CAN_ELIMINATE): Define macro.
4774         (avr_can_eliminate): Declare as static.
4775         * config/avr/avr-protos.h (avr_can_eliminate): Remove.
4776
4777         * config/bfin/bfin.h (CAN_ELIMINATE): Remove macro.
4778         * config/bfin/bfin.c (TARGET_CAN_ELIMINATE): Define macro.
4779         (bfin_can_eliminate): New function.
4780
4781         * config/crx/crx.h (CAN_ELIMINATE): Remove macro.
4782         * config/crx/crx.c (TARGET_CAN_ELIMINATE): Define macro.
4783         (crx_can_eliminate): New function.
4784
4785         * config/fr30/fr30.h (CAN_ELIMINATE): Remove macro.
4786         * config/fr30/fr30.c (TARGET_CAN_ELIMINATE): Define macro.
4787         (fr30_can_eliminate): New function.
4788
4789         * config/frv/frv.h (CAN_ELIMINATE): Remove macro.
4790         * config/frv/frv.c (TARGET_CAN_ELIMINATE): Define macro.
4791         (frv_can_eliminate): New function.
4792
4793         * config/h8300/h8300.h (CAN_ELIMINATE): Remove macro.
4794         * config/h8300/h8300.c (TARGET_CAN_ELIMINATE): Define macro.
4795         (h8300_can_eliminate): New function.
4796
4797         * config/i386/i386.h (CAN_ELIMINATE): Remove macro.
4798         * config/i386/i386.c (TARGET_CAN_ELIMINATE): Define macro.
4799         (i386_can_eliminate): Declare as static, change return type to bool.
4800         * config/i386/i386-protos.h (i386_can_eliminate): Remove.
4801
4802         * config/ia64/ia64.h (CAN_ELIMINATE): Remove macro.
4803         * config/ia64/ia64.c (TARGET_CAN_ELIMINATE): Define macro.
4804         (ia64_can_eliminate): New function.
4805
4806         * config/iq2000/iq2000.h (CAN_ELIMINATE): Remove macro.
4807         * config/iq2000/iq2000.c (TARGET_CAN_ELIMINATE): Define macro.
4808         (iq2000_can_eliminate): New function.
4809
4810         * config/m32r/m32r.h (CAN_ELIMINATE): Remove macro.
4811         * config/m32r/m32r.c (TARGET_CAN_ELIMINATE): Define macro.
4812         (m32r_can_eliminate): New function.
4813
4814         * config/m68hc11/m68hc11.h (CAN_ELIMINATE): Remove macro.
4815         * config/m68hc11/m68hc11.c (TARGET_CAN_ELIMINATE): Define macro.
4816         (m68hc11_can_eliminate): New function.
4817
4818         * config/m68k/m68k.h (CAN_ELIMINATE): Remove macro.
4819         * config/m68k/m68k.c (TARGET_CAN_ELIMINATE): Define macro.
4820         (m68k_can_eliminate): New function.
4821
4822         * config/mep/mep.h (CAN_ELIMINATE): Remove macro.
4823         * config/mep/mep.c (TARGET_CAN_ELIMINATE): Define macro.
4824         (mep_can_eliminate): New function.
4825
4826         * config/mips/mips.h (CAN_ELIMINATE): Remove macro.
4827         * config/mips/mips.c (TARGET_CAN_ELIMINATE): Define macro.
4828         (mips_can_eliminate): New function.
4829
4830         * config/rs6000/rs6000.h (CAN_ELIMINATE): Remove macro.
4831         * config/rs6000/rs6000.c (TARGET_CAN_ELIMINATE): Define macro.
4832         (rs6000_can_eliminate): New function.
4833
4834         * config/s390/s390.h (CAN_ELIMINATE): Remove macro.
4835         * config/s390/s390.c (TARGET_CAN_ELIMINATE): Define macro.
4836         (s390_can_eliminate): Declare as static.
4837         * config/s390/s390-protos.h (sparc_can_eliminate): Remove.
4838
4839         * config/score/score.h (CAN_ELIMINATE): Remove macro.
4840         * config/score/score.c (TARGET_CAN_ELIMINATE): Define macro.
4841         (score_can_eliminate): New function.
4842
4843         * config/sparc/sparc.h (CAN_ELIMINATE): Remove macro.
4844         * config/sparc/sparc.c (TARGET_CAN_ELIMINATE): Define macro.
4845         (sparc_can_eliminate): Declare as static.
4846         * config/sparc/sparc-protos.h (sparc_can_eliminate): Remove.
4847
4848         * config/stormy16/stormy16.h (CAN_ELIMINATE): Remove macro.
4849         * config/stormy16/stormy16.c (TARGET_CAN_ELIMINATE): Define macro.
4850         (xstormy16_can_eliminate): New function.
4851
4852         * config/v850/v850.h (CAN_ELIMINATE): Remove macro.
4853         * config/v850/v850.c (TARGET_CAN_ELIMINATE): Define macro.
4854         (v850_can_eliminate): New function.
4855
4856 2009-08-25  Uros Bizjak  <ubizjak@gmail.com>
4857
4858         * config/alpha/alpha.md (*cmpdf_ieee_ext[123]): Remove.
4859         (*cmpdf_internal): Enable for all ALPHA_FPTM levels.
4860         (*movdfcc_ext[1234]): Disable for IEEE mode.
4861
4862 2009-08-25  Eric Botcazou  <ebotcazou@adacore.com>
4863
4864         * gimplify.c (prepare_gimple_addressable): New static function.
4865         (gimplify_modify_expr_to_memcpy): Invoke it on the RHS before marking
4866         it addressable.
4867         (gimplify_addr_expr): Invoke it similarly on the operand instead of
4868         manually fiddling with it.
4869
4870 2009-08-25  Michael Matz  <matz@suse.de>
4871
4872         * expr.h (jumpifnot_1, jumpif_1, do_jump_1): Declare.
4873         * dojump.c (do_jump_by_parts_greater): Take two operands instead of
4874         full expression.
4875         (do_jump_by_parts_equality, do_compare_and_jump): Ditto.
4876         (jumpifnot_1, jumpif_1): New wrappers for do_jump_1.
4877         (do_jump): Split out code for simple binary comparisons into ...
4878         (do_jump_1): ... this, taking the individual operands and code.
4879         Change callers to helper function above accordingly.
4880         * expr.c (expand_expr_real_1): Use jumpifnot_1 for simple binary
4881         comparisons.
4882
4883 2009-08-25  Michael Matz  <matz@suse.de>
4884
4885         * expr.h (struct separate_ops, sepops): New type for passing
4886         around an exploded simple expression.
4887         * optabs.c (expand_widen_pattern_expr, expand_vec_shift_expr):
4888         Use this structure instead of expression tree.
4889         (get_vcond_icode, expand_vec_cond_expr_p): Don't take whole
4890         expression, only its type.
4891         (expand_vec_cond_expr): Take type and individual operands instead
4892         of full expression.
4893         * optabs.h (expand_widen_pattern_expr, expand_vec_cond_expr,
4894         expand_vec_shift_expr): Change prototype accordingly.
4895         * tree-vect-stmts.c (vectorizable_condition): Change call of
4896         expand_vec_cond_expr_p to pass only type.
4897         * expr.c (do_store_flags): Change prototype and implementation
4898         to take an exploded expression.
4899         (expand_expr_real_1): New local ops initialized with details
4900         of the full expression.  Use it instead of full
4901         expression in calls to do_store_flags, expand_vec_cond_expr,
4902         expand_widen_pattern_expr and expand_vec_shift_expr.
4903
4904 2009-08-25  Michael Matz  <matz@suse.de>
4905
4906         * expr.c (expand_expr_real_1): New local treeop0, treeop1,
4907         treeop2 initialized with first three operands of the full expression.
4908         Substitute all TREE_OPERAND (exp, [012]) calls with them.
4909
4910 2009-08-25  Kai Tietz  <kai.tietz@onevision.com>
4911
4912         * gcc/gthr-win32.h (__UNUSED_PARAM): Define, if not already present.
4913         (__gthread_objc_condition_allocate): Mark arguments as unused.
4914         (__gthread_objc_condition_deallocate): Likewise.
4915         (__gthread_objc_condition_wait): Likewise.
4916         (__gthread_objc_condition_broadcast): Likewise.
4917         (__gthread_objc_condition_signal): Likewise.
4918         (__gthread_objc_thread_detach): Cast via INT_PTR to pointer.
4919         (__gthread_objc_thread_id): Likewise.
4920
4921 2009-08-25  Janus Weil  <janus@gcc.gnu.org>
4922
4923         PR middle-end/41149
4924         * tree-pretty-print.c (print_call_name): Print the correct call name
4925         for procedure pointer components.
4926
4927 2009-08-24  Steve Ellcey  <sje@cup.hp.com>
4928
4929         * config/ia64/ia64.c (ia64_promote_function_mode): Call
4930         default_promote_function_mode when not VMS.
4931
4932 2009-08-24  Olivier Hainque  <hainque@adacore.com>
4933
4934         * convert.c (convert_to_integer): Don't assume an input pointer is
4935         POINTER_SIZE wide.  Fetch from the type instead.
4936
4937 2009-08-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
4938
4939         * configure.ac (AC_PREREQ): Bump to 2.64.
4940
4941 2009-08-24  Rafael Avila de Espindola  <espindola@google.com>
4942
4943         * gcc.c (standard_exec_prefix_1,standard_exec_prefix_2): Remove.
4944         (process_command): Don't search standard_exec_prefix_1 and
4945         standard_exec_prefix_2.
4946
4947 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4948
4949         * config/arm/arm.c (output_return_instruction): Handle for
4950         unified syntax.
4951
4952 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4953
4954         * config/arm/arm.c (arm_select_cc_mode): Handle subreg.
4955
4956 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4957
4958         * config/arm/vfp.md (*arm_movdi_vfp): Mark as predicable.
4959         (*arm_movdf_vfp): Likewise.
4960
4961 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4962
4963         * config/arm/neon.md (vashl<mode>3): Rename from ashl<mode>3.
4964         (vashr<mode>3): Rename from ashr<mode>3.
4965         (vlshr<mode>3): Rename from lshr<mode>3.
4966
4967 2009-08-24  Kai Tietz  <kai.tietz@onevision.com>
4968
4969         PR/40786
4970         * c-format.c (format_wanted_type): Add new member scalar_identity_flag.
4971         (check_format_info_main): Use scalar_identify_flag.
4972         (check_format_types): Check for scalar size identity if
4973         scalar_identify_flag is set.
4974         (printf_length_specs): Extend by new field.
4975         (asm_fprintf_length_specs): Likewise.
4976         (gcc_diag_length_specs): Likewise.
4977         (scanf_length_specs): Likewise.
4978         (strfmon_length_specs): Likewise.
4979         (gcc_gfc_length_specs): Likewise.
4980         * config/i386/msformat-c.c (ms_printf_length_specs): Likewise.
4981         (ms_printf_flag_specs): Likewise.
4982         * c-format.h (format_length_info): Add new member scalar_identity_flag.
4983
4984 2009-08-23  Uros Bizjak  <ubizjak@gmail.com>
4985
4986         PR target/40718
4987         * config/i386/i386.c (*call_pop_1): Disable for sibling calls.
4988         (*call_value_pop_1): Ditto.
4989         (*sibcall_pop_1): New insn pattern.
4990         (*sibcall_value_pop_1): Ditto.
4991
4992 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
4993
4994         PR target/41081
4995         * config/rs6000/rs6000.md (rotlsi3_64, ashlsi3_64, lshrsi3_64,
4996         ashrsi3_64): New.
4997
4998 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
4999
5000         PR target/41081
5001         * fwprop.c (try_fwprop_subst): Allow multiple sets.
5002         (get_reg_use_in): New function.
5003         (forward_propagate_subreg): Propagate through subreg of zero_extend
5004         or sign_extend.
5005
5006 2009-08-22  Kaz Kojima  <kkojima@gcc.gnu.org>
5007
5008         * config/sh/t-sh (TARGET_LIBGCC2_CFLAGS): Define.
5009         * config/sh/t-netbsd (TARGET_LIBGCC2_CFLAGS): Add -mieee.
5010
5011 2009-08-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5012
5013         * configure.ac: Remove --with-datarootdir, --with-docdir,
5014         --with-htmldir switches.  No need to call AC_SUBST for
5015         datarootdir, docdir, htmldir any more.
5016         * configure: Regenerate.
5017         * doc/install.texi (Configuration): Document --datarootdir,
5018         --docdir, --htmldir, --pdfdir; update documentation for
5019         --infodir, --mandir.
5020         (Prerequisites): Bump Autoconf version to 2.64, Automake to 1.11,
5021         M4 to 1.4.6.
5022
5023         * aclocal.m4: Regenerate.
5024         * config.in: Regenerate.
5025         * configure: Regenerate.
5026
5027 2009-08-21  Douglas B Rupp  <rupp@gnat.com>
5028             Olivier Hainque  <hainque@adacore.com>
5029
5030         * config/ia64/ia64.c: Include libfuncs.h.
5031         (TARGET_PROMOTE_FUNCITON_MODE): Define target macro.
5032         (ia64_expand_call): Use reg 25 on VMS.
5033         (ia64_initialize_trampoline): Fix for VMS ABI.
5034         (ia64_function_arg_offset): Always returns 0 when TARGET_ABI_OPEN_VMS.
5035         (ia64_function_arg): Initialize reg 25 on VMS.
5036         Fix OpenVMS ABI issues for varargs.
5037         For OpenVMS, emit the Argument Information register set in the
5038         incoming/sibcall case as well.
5039         (ia64_arg_type): New function.
5040         (ia64_function_arg_advance): Keep track of cum->words.
5041         Fix OpenVMS ABI issues for varargs.
5042         (ia64_function_value): On VMS, promote mode of non-aggregate types.
5043         (ia64_override_options): Set flag_no_common on VMS.
5044         (ia64_init_builtins): Disable FWRITE builtin.
5045         (ia64_asm_output_external): Call DO_CRTL_NAMES.
5046         (ia64_vms_init_libfuncs): Add decc$ routines.
5047         (ia64_vms_valid_pointer_mode): New function.
5048         (ia64_struct_value_rtx): Allways NULL_RTX on VMS.
5049         (ia64_promote_function_mode): New function
5050         * config/ia64/ia64.h (TARGET_ABI_OPEN_VMS): Define as 0 for default.
5051         (LONG_DOUBLE_TYPE_SIZE): Force to 64 on VMS.
5052         (LIBCGC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
5053         (INIT_CUMULATIVE_ARGS): Add atypes for VMS.
5054         (INIT_CUMULATIVE_INCOMING_ARGS): Likewise.
5055         (ASM_OUTPUT_DEF): Use ISDIGIT instead of isdigit.
5056         Suppress trailing '#' if VALUE is numeric.
5057         * config/ia64/vms.h (PROMOTE_FUNCTION_MODE): Remove, code moved to
5058         ia64_promote_function_mode.
5059         (TARGET_VALID_POINTER_MODE): Define.
5060
5061 2009-08-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
5062
5063         PR target/40671
5064         * config/rs6000/rs6000.c (rs6000_override_options): Use
5065         TARGET_64BIT instead of TARGET_POWERPC64 to set the size of pointers.
5066
5067         PR target/41145
5068         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Fix
5069         reporting of vector + decimal/boolean/complex error.
5070
5071 2009-08-21  Jakub Jelinek  <jakub@redhat.com>
5072
5073         * config/rs6000/rs6000.c (rs6000_init_builtins): Fix type of
5074         __vector double TYPE_DECL.
5075
5076 2009-08-21  Richard Earnshaw  <rearnsha@arm.com>
5077
5078         * arm.h (MACHMODE): New define.  Include insn-modes.h if available.
5079         (CUMULATIVE_ARGS): Use MACHMODE for declaration of aapcs_vfp_mode.
5080         * arm.c (aapcs_vfp_is_call_or_return_candidate): Change base_mode
5081         to pointer to enum machine_mode.  Update all callers as needed.
5082
5083 2009-08-21 Uros Bizjak <ubizjak@gmail.com>
5084
5085         * config/alpha/alpha.md (exception_receiver): Emit alternative
5086         GP load sequence if flag_reorder_blocks_and_partition is set.
5087         (*exception_receiver_2): Also enable when
5088         flag_reorder_blocks_and_partition is set.
5089
5090 2009-08-20  Matt Rice  <ratmice@gmail.com>
5091             Diego Novillo  <dnovillo@google.com>
5092
5093         * Makefile.in (PLUGIN_HEADERS): Include incpath.h and
5094         tree-ssa-sccvn.h.
5095
5096 2009-08-20  Richard Guenther  <rguenther@suse.de>
5097
5098         * c-objc-common.h (LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): Do not define.
5099         * c-tree.h (c_dup_lang_specific_decl): Remove.
5100         (struct lang_decl, struct lang_type): Move definitions ...
5101         * c-lang.h: ... here.  New file.
5102         * c-decl.c: Include c-lang.h.
5103         (c_dup_lang_specific_decl): Remove.
5104         * c-typeck.c: Include c-lang.h.
5105         * Makefile.in (c-decl.o): Add c-lang.h dependency.
5106         (c-typeck.o): Likewise.
5107         * c-config-lang.in (gtfiles): Add c-lang.h.
5108         * gengtype.c (get_output_file_with_visibility): Handle c-lang.h
5109         like c-tree.h.
5110
5111 2009-08-20  Uros Bizjak  <ubizjak@gmail.com>
5112
5113         * config/alpha/alpha.c (alpha_end_function): Do not clear
5114         crtl->emit structure and free insn locators if cfun->is_thunk is true,
5115         this is now handled in generic code.
5116
5117 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
5118
5119         * config/s390/s390.c (Z10_PREDICT_DISTANCE): New macro.
5120         (s390_z10_fix_long_loop_prediction): New function.
5121         (s390_z10_optimize_cmp): INSN walk moved to callee - s390_reorg.
5122         (s390_reorg): Walk over the INSNs and invoke
5123         s390_z10_fix_long_loop_prediction and s390_z10_optimize_cmp.
5124
5125 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
5126
5127         * config/s390/s390.md ("*brx_stage1_<GPR:mode>", "*brxg_64bit",
5128         "*brx_64bit", "*brx_31bit"): New patterns.
5129         * config/s390/s390.c ('E'): New output modifier.
5130
5131 2009-08-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
5132             Richard Earnshaw  <richard.earnshaw@arm.com>
5133
5134         * config/arm/arm.c (arm_emit_movpair): Handle CONST_INT.
5135         * config/arm/arm.md (*arm_movtas_ze): New pattern for movt.
5136
5137 2009-08-19  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5138
5139         * pa.md (reload_inhi, reload_outhi, reload_inqi, reload_outqi): New
5140         patterns.
5141         * pa.c (emit_move_sequence): Check if address of operand1 is valid
5142         for mode mode of operand0 when doing secondary reload for SAR.
5143
5144 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
5145
5146         PR middle-end/41123
5147         * expr.c (expand_expr_real_1) <normal_inner_ref>: Handle all kinds
5148         of CONCAT, not just bitpos 0 bitsize size of the whole CONCAT.
5149
5150 2009-08-19  Jason Merrill  <jason@redhat.com>
5151
5152         * doc/invoke.texi (C++ Dialect Options): Note change of minimum
5153         supported template depth in C++0x.
5154
5155 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
5156
5157         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Don't call
5158         free_after_compilation.
5159         * config/score/score7.c (score7_output_mi_thunk): Likewise.
5160         * config/score/score3.c (score3_output_mi_thunk): Likewise.
5161         * config/ia64/ia64.c (ia64_output_mi_thunk): Likewise.
5162         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
5163         * config/sh/sh.c (sh_output_mi_thunk): Likewise.
5164         * config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
5165         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
5166
5167 2009-08-19  Ian Lance Taylor  <iant@google.com>
5168
5169         * doc/md.texi (Insn Canonicalizations): Correct canonicalization
5170         of (plus (mult (neg B) C) A).
5171
5172 2009-08-18  Michael Matz  <matz@suse.de>
5173
5174         * omp-low.c (optimize_omp_library_calls): Use types_compatible_p
5175         instead of comparing TYPE_MAIN_VARIANT for equality.
5176         * tree-vect-patterns.c (vect_recog_dot_prod_pattern,
5177         vect_recog_widen_mult_pattern, vect_recog_widen_sum_pattern): Ditto.
5178         * tree-vect-loop.c (vect_is_simple_reduction): Ditto.
5179         * gimplify.c (goa_lhs_expr_p): Ditto and use
5180         STRIP_USELESS_TYPE_CONVERSION.
5181
5182 2009-08-18  Michael Matz  <matz@suse.de>
5183
5184         * tree-ssa-structalias.c (create_variable_info_for): Also mark
5185         first field in a struct.
5186         (intra_create_variable_infos): Don't deal with flag_argument_noalias.
5187
5188 2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
5189
5190         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
5191         locators before emit_insn is called.  Remove assert that
5192         cfun->is_thunk.
5193         (alpha_end_function): Clear crtl->emit structure and free insn
5194         locators if cfun->is_thunk is true.
5195
5196 2009-08-18  Jason Merrill  <jason@redhat.com>
5197
5198         * config/elfos.h (ASM_DECLARE_OBJECT_NAME): Use gnu_unique_object
5199         type if available.
5200         * configure.ac: Test for it.
5201         * configure, config.in: Regenerate.
5202         * doc/install.texi: Document --enable-gnu-unique-object.
5203
5204 2009-08-18  Richard Guenther  <rguenther@suse.de>
5205
5206         PR middle-end/41094
5207         * builtins.c (fold_builtin_pow): Fold pow(pow(x,y),z) to
5208         pow(x,y*z) only if x is nonnegative.
5209
5210 2009-08-18  Jakub Jelinek  <jakub@redhat.com>
5211
5212         * bb-reorder.c (fix_up_fall_thru_edges): Only call invert_jump
5213         on jumps.
5214
5215         PR target/40971
5216         * config/rs6000/rs6000.c (rs6000_legitimize_address): For
5217         [DT][FDI]mode ensure the offset isn't 4/8/12 bytes below 0x8000.
5218
5219 2009-08-17  DJ Delorie  <dj@redhat.com>
5220
5221         * config/m32c/m32c.md (UNS_FSETB, UNS_FREIT): New.
5222         * config/m32c/prologue.md (epilogue_freit): New.
5223         (fset_b): New.
5224         * config/m32c/m32c.c (m32c_function_needs_enter): Add prototype.
5225         (bank_switch_p): Likewise.
5226         (fast_interrupt_p): Likewise.
5227         (interrupt_p): Likewise.
5228         (m32c_conditional_register_usage): Round memregs size up.
5229         (need_to_save): We only need to save $a0 when we use ENTER.
5230         (interrupt_p): Check for fast_interrupt too.
5231         (bank_switch_p): New.
5232         (fast_interrupt_p): New.
5233         (m32c_attribute_table): Add bank_switch and fast_interrupt.
5234         (m32c_emit_prolog): Support bank switching and fast interrupts.
5235         * doc/extend.texi (Function Attributes): Add bank_switch and
5236         fast_interrupt.
5237
5238 2009-08-17  Douglas B Rupp  <rupp@gnat.com>
5239
5240         * config/alpha/alpha.c (vms_valid_pointer_mode): New function.
5241         * config/alpha/vms.h (TARGET_VALID_POINTER_MODE): Define.
5242
5243 2009-08-16  Douglas B Rupp  <rupp@gnat.com>
5244
5245         * doc/invoke.texi (Target options): Add new option list for IA-64/VMS.
5246         (menu): Add IA-64/VMS Options.
5247         (IA-64/VMS Options): Likewise.
5248
5249 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
5250
5251         PR target/38599
5252         * config/mips/mips.md (*lwxs): Use :P for pointer values.
5253
5254 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
5255
5256         * config/mips/mips-protos.h (mips_push_asm_switch): New function.
5257         (mips_pop_asm_switch): Likewise.
5258         * config/mips/mips.c (set_noreorder, set_nomacro, set_noat): Replace
5259         with...
5260         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
5261         (mips_push_asm_switch_1, mips_pop_asm_switch_1): New functions.
5262         (mips_push_asm_switch, mips_pop_asm_switch): Likewise.
5263         (mips_print_operand_punctuation): Use them.  Check mips_noreorder
5264         instead of set_noreorder.
5265         (mips_output_function_prologue): Use the new functions.
5266         (mips_output_function_epilogue): Likewise.
5267         (mips_need_noat_wrapper_p): New function, split out from...
5268         (mips_final_prescan_insn, mips_final_postscan_insn): ...here.
5269         Use mips_push_asm_switch and mips_pop_asm_switch.
5270         * config/mips/mips.h (FUNCTION_PROFILER): Use mips_push_asm_switch
5271         and mips_pop_asm_switch.
5272         (ASM_OUTPUT_REG_POP): Likewise.
5273         (DBR_OUTPUT_SEQEND): Remove boilerplate comment.
5274         Use mips_pop_asm_switch.
5275         (mips_asm_switch): New structure.
5276         (set_noreorder, set_nomacro): Replace with...
5277         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
5278         * config/mips/mips.md (fix_truncdfsi2_macro): Use mips_nomacro
5279         instead of set_nomacro.
5280         (fix_truncsfsi2_macro): Likewise.
5281         (cprestore): Likewise.
5282         (hazard): Use mips_noreorder instead of set_noreorder.
5283         * config/mips/sdemtk.h (FUNCTION_PROFILER): As for mips.h.
5284
5285 2009-08-16  Uros Bizjak  <ubizjak@gmail.com>
5286
5287         * config/alpha/alpha.c (alpha_end_function): Handle NULL_RTX returned
5288         from prev_active_insn.
5289
5290 2009-08-16  Anatoly Sokolov  <aesok@post.ru>
5291
5292         * config/avr/avr.h (AVR_HAVE_8BIT_SP): New macros.
5293         * config/avr/avr.c (avr_override_options): Initialize
5294         avr_current_arch variable.
5295         (avr_cpu_cpp_builtins): Define __AVR_HAVE_8BIT_SP__ or
5296         __AVR_HAVE_16BIT_SP__ according to the device type.
5297         (expand_prologue, output_movhi): Use AVR_HAVE_8BIT_SP instead of
5298         TARGET_TINY_STACK.
5299         (expand_epilogue): Use correct QI mode frame pointer for tiny stack.
5300         Use AVR_HAVE_8BIT_SP instead of TARGET_TINY_STACK.
5301
5302 2009-08-16  Dodji Seketeli  <dodji@redhat.com>
5303
5304         PR debug/37801
5305         * gcc/dwarf2out.c (gen_inlined_subroutine_die): Concentrate on
5306         generating inlined subroutine die only. We shouldn't be
5307         called for anything else.
5308         (gen_block_die): Don't generate inline subroutine debug info for
5309         abstract blocks.
5310
5311 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
5312
5313         * graphite-poly.c (print_pbb): Print PBB index.
5314
5315 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
5316
5317         PR middle-end/40981
5318         * graphite-interchange.c (ppl_max_for_le): Moved...
5319         * graphite-poly.c (pbb_number_of_iterations): Call ppl_max_for_le.
5320         * graphite-ppl.c (ppl_max_for_le): ... here.  Correct the use of
5321         ppl_Pointset_Powerset_C_Polyhedron_maximize.
5322         * graphite-ppl.h (ppl_max_for_le): Declared.
5323
5324 2009-08-14  Olatunji Ruwase <tjruwase@google.com>
5325
5326         * doc/extend.texi (Symbol-Renaming Pragmas): redefine_extname is
5327         supported on all platforms.
5328         * target.h (struct gcc_target): Remove handle_pragma_redefine_extname.
5329         * c-cppbuiltin.c: Remove use of targetm.handle_pragma_redefine_extname.
5330         * c-pragma.c: Likewise.
5331         * target-def.h (TARGET_INITIALIZER): Remove
5332         TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
5333         * config/sol2.h: Remove use of TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
5334
5335 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
5336
5337         * config/ia64/fde-vms.c: New file.
5338         * config/ia64/fde-glibc.c (_Unwind_FindTableEntry): Add dummy arg.
5339         * config/ia64/unwind-ia64.c (UNW_ accessors): Move to unwind-ia64.h
5340         (MD_UNW_COMPATIBLE_PERSONALITY_P): Provide default.
5341         (uw_frame_state_for): Only register a personality routine if it is
5342         known to be compatible with our expectations.
5343         (_Unwind_FindEnclosingFunction, uw_frame_state_for):
5344         Declare unw_table_entry stack variable and
5345         mod all calls to _Unwind_FindTableEntry to add arg.
5346         * config/ia64/unwind-ia64.h (UNW_ accessors): Move here.
5347         (_Unwind_FindTableEntry): Add arg to prototype.
5348
5349 2009-08-14  Eric Botcazou  <ebotcazou@adacore.com>
5350
5351         * config/ia64/unwind-ia64.c (struct _Unwind_Context): Add new
5352         field 'signal_pfs_loc'.
5353         (uw_frame_state_for): Remove duplicate code dealing with leaf
5354         procedures without unwind info.
5355         If in the frame after unwinding through a signal handler, restore
5356         the AR.PFS register instead of the CFM if AR.PFS has not been saved.
5357         * config/ia64/linux-unwind.h (ia64_fallback_frame_state): Do not set
5358         'pfs_loc' to the AR.PFS location in the signal context; instead
5359         set 'signal_pfs_loc'.
5360         Manually generate the unwind info for the AR.PFS register.
5361         (ABI_MARKER_OLD_LINUX_SIGTRAMP, ABI_MARKER_OLD_LINUX_INTERRUPT,
5362         ABI_MARKER_LINUX_SIGTRAMP, ABI_MARKER_LINUX_INTERRUPT): Define.
5363         (ia64_handle_unwabi): Test 'fs->unwabi' against them.
5364         Do not set 'pfs_loc' to the AR.PFS location in the signal context;
5365         instead set 'signal_pfs_loc'.
5366         Remove code preventing the AR.PFS register from being restored
5367         from the signal context.
5368
5369 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
5370             Tristan Gingold  <gingold@adacore.com>
5371
5372         * config.gcc (ia64-hp-*vms*): Insert ia64/t-ia64 in tmake_file.
5373         * config/ia64/t-vms: New file.
5374         * config/ia64/vms64.h: New file.
5375         * config/ia64/vms.h: New file.
5376         * config/ia64/vms-crtinit.asm: New file.
5377         * config/ia64/vms_symvec_libgcc_s.opt: New file.
5378         * config/ia64/vms-unwind.h: New file.
5379
5380 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
5381
5382         * config/alpha/alpha.c (alpha_emit_conditional_move): Handle
5383         TFmode compares.
5384
5385 2009-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5386
5387         PR middle-end/30789
5388         * builtins.c (do_mpc_arg2): Make extern, define for any MPC version.
5389         Move declaration...
5390         * real.h (do_mpc_arg2): ... here.
5391         * fold-const.c (const_binop): Use MPC for complex MULT_EXPR
5392         and RDIV_EXPR.
5393
5394 2009-08-14  Rafael Avila de Espindola  <espindola@google.com>
5395
5396         * final.c (add_debug_prefix_map): Don't use GC memory for
5397         old_prefix and new_prefix.
5398
5399 2009-08-14  Richard Guenther  <rguenther@suse.de>
5400
5401         * ipa-prop.c (compute_complex_pass_through): If we cannot
5402         compute a non-varying offset for IPA_JF_ANCESTOR punt.
5403
5404 2009-08-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
5405
5406         * c-lex.c (c_lex_with_flags): Increase size of local variable
5407         to avoid memory clobber.
5408
5409 2009-08-14  Paolo Bonzini  <bonzini@gnu.org>
5410
5411         PR target/40934
5412         * config/i386/i386.c (ix86_fp_comparison_strategy):
5413         Only enable/disable sahf at function granularity.
5414
5415 2009-08-14  Hans-Peter Nilsson  <hp@axis.com>
5416
5417         PR rtl-optimization/41064
5418         * reload1.c (reload_as_needed): Don't call extract_insn
5419         for known invalid replacements after calling
5420         validate_replace_rtx_group and verify_changes.
5421
5422 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
5423
5424         PR target/41019
5425         * config/i386/sse.md (SSEMODE124C8): New mode iterator.
5426         (vcond<SSEMODEF2P:mode>): Assert that operation is supported by
5427         ix86_expand_fp_vcond.
5428         (vcond<SSEMODE124C8:mode>): Use SSEMODE124C8 instead of SSEMODE124.
5429         Assert that operation is supported by ix86_expand_int_vcond.
5430         (vcondu<SSEMODE124C8:mode>): Ditto.
5431
5432 2009-08-13  DJ Delorie  <dj@redhat.com>
5433
5434         * config/i386/djgpp-stdint.h: New.
5435         * config.gcc (djgpp): Use it.
5436
5437 2009-08-13  Kaz Kojima  <kkojima@gcc.gnu.org>
5438
5439         * config/sh/sh.c (sh_override_options): When flag_exceptions or
5440         flag_unwind_tables is on, turn flag_reorder_blocks_and_partition off.
5441
5442 2009-08-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
5443
5444         * tree-ssa-loop-prefetch.c
5445         (prune_ref_by_group_reuse): Enhance probabilistic analysis
5446         for long-stride pruning.
5447         (compute_miss_rate): New function to compute the probability
5448         that two memory references access different cache lines.
5449
5450 2009-08-13  Dave Korn  <dave.korn.cygwin@gmail.com>
5451
5452         * gcc/config/i386/cygwin.h (LINK_SPEC): Add --enable-auto-image-base.
5453
5454 2009-08-13  Richard Guenther  <rguenther@suse.de>
5455
5456         PR middle-end/41047
5457         * tree-ssa-ccp.c (ccp_fold): When folding pointer additions
5458         use the constant pointer type.
5459         * gimplify.c (canonicalize_addr_expr): Canonicalize independent
5460         of CV qualifiers on the target pointer type.
5461         * tree-ssa.c (useless_type_conversion_p): Move incomplete pointer
5462         conversion check before restrict check.
5463
5464 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
5465
5466         PR target/41029
5467         * config/sh/sh.md (reload_outdf__RnFRm+4): Fix thinko.
5468
5469 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
5470
5471         * config/sh/sh.c (sh_promote_function_mode): Add ATTRIBUTE_UNUSED.
5472
5473 2009-08-12  Richard Guenther  <rguenther@suse.de>
5474
5475         PR tree-optimization/41011
5476         * ipa-cp.c (ipcp_lattice_from_jfunc): Deal with failing fold
5477         and reference constructing.
5478
5479 2009-08-12  Xinliang David Li  <davidxl@google.com>
5480
5481         PR tree-optimization/41012
5482         * tree-flow.h : New external interface.
5483         * gimple-low.c (check_call_arg): Change to public function.
5484         Remove argument mismatch check in lowering.
5485         * tree-inline.h (tree_can_inline_p): Interface change.
5486         * tree-inline.c (tree_can_inline_p): Fold argument mismatch check
5487         into this function.
5488         * ipa-inline.c (cgraph_decide_inlining_of_small_functions):
5489         Call change to tree_can_inline_p function.
5490         (cgraph_decide_inlining_incrementally): Ditto.
5491
5492 2009-08-12  Richard Sandiford  <rdsandiford@googlemail.com>
5493
5494         PR tree-optimization/41031
5495         * tree-outof-ssa.c (insert_value_copy_on_edge): Use promote_decl_mode
5496         on the partition variable rather than promote_mode on the source
5497         type.  Assert that the partition variable's type has the same
5498         mode as the source value's.
5499
5500 2009-08-12  Paolo Bonzini  <bonzini@gnu.org>
5501
5502         * doc/tm.texi (TARGET_PROMOTE_FUNCTION_MODE): Add documentation
5503         for for_return == 2.
5504         * function.c (assign_parm_setup_reg): Use for_return == 2, improve
5505         comments.
5506         * calls.c (expand_call): Fix typo.
5507         * explow.c (promote_decl_mode): Use for_return == 2 for RESULT_DECL
5508         and PARM_DECL.
5509         * stmt.c (expand_value_return): Use promote_function_mode to copy out
5510         of pseudo.
5511         * targhooks.c (default_promote_function_mode): Handle for_return == 2.
5512         * config/cris/cris.c (cris_promote_function_mode): Likewise.
5513         * config/mmix/mmix.c (mmix_promote_function_mode): Likewise.
5514         * config/pa/pa.c (pa_promote_function_mode): Likewise.
5515
5516 2009-08-12  Andrew Haley  <aph@redhat.com>
5517
5518         * config/arm/arm.c (arm_init_libfuncs): Add __sync_synchronize.
5519
5520 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
5521
5522         PR bootstrap/40103
5523         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
5524
5525 2009-08-12  Richard Guenther  <rguenther@suse.de>
5526
5527         * alias.c (get_alias_set): Honor TYPE_STRUCTURAL_EQUALITY_P.
5528         * gimplify.c (gimplify_modify_expr): Do not use
5529         lang_hooks.types_compatible_p.
5530         * tree-ssa.c (useless_type_conversion_p): For aggregates
5531         just return false if the canonical types differ.
5532
5533 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
5534
5535         PR middle-end/40980
5536         * sese.c (convert_for_phi_arg): New.
5537         (add_guard_exit_phis): Use convert_for_phi_arg.
5538
5539 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
5540
5541         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Dont add
5542         unknown subscript upper bounds.
5543
5544 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
5545             Pranav Garg  <pranav.garg2107@gmail.com>
5546
5547         * graphite-interchange.c (gather_access_strides): Removed.
5548         (ppl_max_for_le): New.
5549         (build_linearized_memory_access): New.
5550         (memory_stride_in_loop): New.
5551         (pbb_interchange_profitable_p): Reimplemented.
5552         * graphite-ppl.h (ppl_new_id_map): New.
5553         (ppl_interchange): New.
5554
5555 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
5556
5557         * graphite-interchange.c (compute_subscript): Removed.
5558         (compute_array_size_cstr): Removed.
5559         (compute_array_size_poly): Removed.
5560         (compute_array_size): Removed.
5561         (gather_access_strides_poly): Removed.
5562         (gather_access_strides): Empty.
5563
5564 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
5565
5566         * graphite-dependences.c (dependence_polyhedron_1): Replace
5567         pdr_nb_subscripts with PDR_NB_SUBSCRIPTS.
5568         (graphite_legal_transform_dr): Same.
5569         (graphite_carried_dependence_level_k): Same.
5570         * graphite-poly.c (new_poly_dr): Add a parameter nb_subscripts.
5571         Initialize PDR_NB_SUBSCRIPTS.
5572         (print_pdr_access_layout): Replace pdr_nb_subscripts with
5573         PDR_NB_SUBSCRIPTS.
5574         * graphite-poly.h (struct poly_dr): Add nb_subscripts field.
5575         (PDR_NB_SUBSCRIPTS): New.
5576         (pdr_nb_subscripts): Removed.
5577         (pdr_dim): Simplified.
5578         * graphite-sese-to-poly.c (build_poly_dr): Replace pdr_nb_subscripts
5579         with PDR_NB_SUBSCRIPTS.
5580
5581 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
5582
5583         * graphite-interchange.c (compute_array_size): Remove use of
5584         PDR_DATA_CONTAINER.
5585         * graphite-poly.c (new_poly_dr): Remove argument data_container.
5586         Do not initialize PDR_DATA_CONTAINER.
5587         (print_pdr): Do not print PDR_DATA_CONTAINER.
5588         * graphite-poly.h (struct poly_dr): Remove data_container field.
5589         (PDR_DATA_CONTAINER): Removed.
5590         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Remove use of
5591         PDR_DATA_CONTAINER.
5592         (build_poly_dr): Same.
5593
5594 2009-08-12  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
5595             Sebastian Pop  <sebastian.pop@amd.com>
5596
5597         * graphite-dependences.c (graphite_legal_transform_dr): Work on a
5598         copy of the dependence polyhedron.  Free the temporary objects.
5599         (graphite_carried_dependence_level_k): Free unused objects before
5600         returning.
5601
5602 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
5603
5604         * graphite-blocking.c (scop_do_strip_mine): Call store_scattering.
5605         Early return without analyzing the data dependences if no
5606         transform has been done.  Call restore_scattering if the transform
5607         is not legal.
5608         (graphite-interchange.c): Same.
5609         * graphite-poly.c (print_scattering_function): Test for
5610         PBB_TRANSFORMED.
5611         (graphite_read_transforms): Initialize PBB_TRANSFORMED.
5612         (apply_poly_transforms): Do not gcc_assert that
5613         the transform is legal.
5614         (new_poly_bb): Initialize PBB_TRANSFORMED, PBB_SAVED and PBB_ORIGINAL.
5615         Do not initialize PBB_NB_SCATTERING_TRANSFORM, PBB_NB_LOCAL_VARIABLES,
5616         PBB_TRANSFORMED_SCATTERING, and PBB_ORIGINAL_SCATTERING.
5617         (free_poly_dr): Free PBB_TRANSFORMED, PBB_SAVED, and PBB_ORIGINAL.
5618         * graphite-poly.h (struct poly_scattering): New.
5619         (struct poly_bb): Add original, transformed, and saved fields.
5620         Remove transformed_scattering, original_scattering,
5621         nb_local_variables and nb_scattering_transform fields.
5622         (PBB_ORIGINAL, PBB_TRANSFORMED, PBB_SAVED): New.
5623         (poly_scattering_new): New.
5624         (poly_scattering_free): New.
5625         (poly_scattering_copy): New.
5626         (store_scattering_pbb): New.
5627         (store_scattering): New.
5628         (restore_scattering_pbb): New.
5629         (restore_scattering): New.
5630         * graphite-sese-to-poly.c (build_pbb_scattering_polyhedrons):
5631         Initialize PBB_TRANSFORMED and PBB_ORIGINAL.
5632
5633 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
5634
5635         * graphite-poly.c (print_pbb): Add parentheses in the pretty print.
5636         (print_scop): Same.
5637
5638 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
5639
5640         * Makefile.in (graphite.o): Depends on PREDICT_H.
5641         * graphite.c: Include predict.h.
5642         (graphite_finalize): Call tree_estimate_probability.
5643         * predict.c (predict_loops): Do not call scev_initialize and
5644         scev_finalize.
5645         (tree_estimate_probability_bb): New.
5646         (tree_estimate_probability): Do not initialize loops: move that
5647         code to the driver.  Call tree_estimate_probability_bb.
5648         (tree_estimate_probability_driver): New.
5649         (pass_profile): Use tree_estimate_probability_driver.
5650         * predict.h (tree_estimate_probability): Declared.
5651
5652 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
5653
5654         * graphite-clast-to-gimple.c (gloog): Add time to TV_GRAPHITE_CODE_GEN.
5655         * graphite-dependences.c (graphite_legal_transform): Add time to
5656         TV_GRAPHITE_DATA_DEPS.
5657         (dependency_between_pbbs_p): Same.
5658         * timevar.def (TV_GRAPHITE_DATA_DEPS, TV_GRAPHITE_CODE_GEN): New.
5659
5660 2009-08-12  Andrey Belevantsev  <abel@ispras.ru>
5661
5662         PR rtl-optimization/41033
5663         * alias.c (nonoverlapping_component_refs_p): Punt when strict
5664         aliasing is disabled.
5665
5666 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
5667
5668         * config/mips/predicates.md (qi_mask_operand, hi_mask_operand,
5669         si_mask_operand, and_load_operand, low_bitmask_operand,
5670         and_reg_operand, and_operand): New predicates.
5671         * config/mips/constraints.md (Yb, Yh, Yw, Yz): New constraints.
5672         * config/mips/mips.c (and_operands_ok): New function.
5673         * config/mips/mips-protos.h (and_operands_ok): Declare it.
5674         * config/mips/mips.md (move_type): Add ext_ins and logical.
5675         (type): Handle them.
5676         (and<mode>3): Use and_reg_operand as the second operand's predicate.
5677         (*and<mode>3): Add alternatives for lbu, lhu, lwu, <d>ext and
5678         shift_shift.  Remove commutative constraint modifier.
5679         (*and<mode>3_mips16): Add alternatives for lbu, lhu, lwu and
5680         shift_shift.
5681         (*clear_upper32_dext): Remove define_insn_and_split.
5682         (*clear_upper32): Turn this define_insn_and_split ...
5683         (splitter for ANDing register with 0xffff_ffff): .. into this.
5684
5685 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
5686
5687         * combine.c (try_widen_shift_mode): Factor out code to check if an
5688         integer constant is a low-order bitmask from here ...
5689         * rtlanal.c (low_bitmask_len): ... to here.
5690         * rtl.h (low_bitmask_len): Declare.
5691
5692 2009-08-11  Uros Bizjak  <ubizjak@gmail.com>
5693
5694         PR target/8603
5695         * config/alpha/alpha.md (addsi3): Remove expander.
5696         (addsi3): Rename from *addsi3_internal insn pattern.
5697         (subsi3): Remove expander.
5698         (subsi3): Rename from *subsi3_internal insn pattern.
5699
5700 2009-08-11  Douglas B Rupp  <rupp@gnat.com>
5701
5702         * config/alpha/alpha.c (alpha_init_builtins): Nullify FWRITE and
5703         FWRITE_UNLOCKED.
5704
5705 2009-08-11  Vasiliy Fofanov  <fofanov@adacore.com>
5706             Eric Botcazou  <botcazou@adacore.com>
5707             Douglas B Rupp  <rupp@gnat.com>
5708
5709         * config/alpha/alpha.c (alpha_return_in_memory): On VMS, ensure
5710         that records that fit in 64 bits are returned by immediate value,
5711         as required by OpenVMS Calling Standard.
5712         (function_value): Adjust for above modification.
5713         (alpha_va_start) <TARGET_ABI_OPEN_VMS>: Use
5714         virtual_incoming_args_rtx as base object, not next_arg.
5715         * config/alpha/vms.h: (DEFAULT_PCC_STRUCT_RETURN): Define as 0.
5716
5717 2009-08-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
5718
5719         * reload.c (find_reloads_subreg_address): Check the original
5720         req_equiv_mem address to detect the case where an address is
5721         not valid in the outer mode.
5722
5723 2009-08-11  Richard Guenther  <rguenther@suse.de>
5724
5725         PR bootstrap/40788
5726         * builtins.c (gimplify_va_arg_expr): Do not call SET_EXPR_LOCATION.
5727
5728 2009-08-10  Douglas B Rupp  <rupp@gnat.com>
5729
5730         * config/alpha/vms.h (OPTIMIZATION_OPTIONS): Remove
5731         (OVERRIDE_OPTIONS): Incorporate removed OPTIMIZATION_OPTIONS.
5732
5733 2009-08-10  Olivier Hainque  <hainqueu@adacore.com>
5734             Douglas B Rupp  <rupp@gnat.com>
5735
5736         * config/alpha/alpha.c (alpha_sa_size): Force procedure type to
5737         PT_STACK when frame_pointer_needed on OpenVMS.
5738         (alpha_pv_save_size, alpha_using_fp): Remove.
5739         (alpha_vms_can_eliminate): New function. Support for CAN_ELIMINATE
5740         with proper processing for PT_NULL.
5741         (alpha_vms_initial_elimination_offset): New function. Support for
5742         INITIAL_ELIMINATION_OFFSET with proper processing for PT_NULL.
5743         (alpha_sa_size): Force procedure type to PT_STACK when
5744         frame_pointer_needed on OpenVMS.
5745         * config/alpha/alpha-protos.h (alpha_pv_save_size): Remove prototype.
5746         (alpha_using_fp): Likewise.
5747         (alpha_vms_can_eliminate): Add prototype.
5748         (alpha_vms_initial_elimination_offset): Likewise.
5749         * config/alpha/vms.h (CAN_ELIMINATE, INITIAL_ELIMINATION_OFFSET):
5750         Call alpha_vms_can_eliminate and alpha_vms_initial_elimination_offset.
5751
5752 2009-08-10  Eric Botcazou  <botcazou@adacore.com>
5753             Douglas B Rupp  <rupp@gnat.com>
5754
5755         * config/alpha/alpha.c (common_object_handler): New function.
5756         (vms_attribute_table): Declare a single attribute "common_object".
5757         (vms_output_aligned_decl_common): New global function.
5758         (SECTION_VMS_OVERLAY): Delete.
5759         (SECTION_VMS_GLOBAL): Likewise.
5760         (SECTION_VMS_INITIALIZE): Likewise.
5761         (vms_asm_named_section): Remove support for above flags.
5762         (vms_section_type_flags): Delete.
5763         (TARGET_SECTION_TYPE_FLAGS): Likewise.
5764         * config/alpha/alpha-protos.h (vms_output_aligned_decl_common): New.
5765         * config/alpha/vms.h (ASM_OUTPUT_ALIGNED_COMMON): Delete.
5766         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New macro.
5767
5768 2009-08-10  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
5769
5770         PR target/41015
5771         * longlong.h [__sh__] (udiv_qrnnd): Add T register to clobber list.
5772         (sub_ddmmss): Likewise.
5773
5774 2009-08-10  Andreas Tobler  <a.tobler@schweiz.org>
5775
5776         PR bootstrap/41018
5777         * config/rs6000/freebsd.h: Define SVR4_ASM_SPEC. Adjust copyright
5778         year.
5779
5780 2009-08-10  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
5781
5782         PR target/37053
5783         * reload1.c (reload_as_needed): Use cancel_changes to completely
5784         undo a failed replacement attempt.
5785
5786 2009-08-10  Richard Guenther  <rguenther@suse.de>
5787
5788         PR middle-end/41006
5789         * tree-ssa.c (useless_type_conversion_p_1): Fold into ...
5790         (useless_type_conversion_p): ... here.  Require pointer targets
5791         to be compatible.
5792
5793 2009-08-10  Dodji Seketeli  <dodji@redhat.com>
5794
5795         PR c++/40866
5796         * tree-inline.c (copy_statement_list): The resulting copy shouldn't
5797         loose the original type of the statement list.
5798
5799 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
5800
5801         * config/alpha/alpha.c: Include libfuncs.h
5802         (avms_asm_output_extern): New function.
5803         (alpha_init_libfuncs): Init some decc libfuncs.
5804         * config/alpha/alpha-protos.h (avms_asm_output_external): Declare.
5805         * config/alpha/vms.h (ASM_OUTPUT_EXTERNAL): Define.
5806         (DO_CRTL_NAMES): Define.
5807         (LIB_SPEC): Remove.
5808         * config/alpha/vms64.h: (POINTERS_EXTEND_UNSIGNED): Remove undef.
5809         (LONG_TYPE_SIZE): Define.
5810         (TARGET_OS_CPP_BUILTINS): Define with __LONG_POINTERS=1
5811         (SUBTARGET_SWITCHES): Define malloc64 switch.
5812         (TARGET_DEFAULT): Default MASK_MALLOC64 set.
5813         (MASK_RETURN_ADDR): Define.
5814         doc/invoke.texi (mmalloc64): Document switch.
5815
5816 2009-08-09  Olivier Hainque  <hainque@adacore.com>
5817             Douglas B Rupp  <rupp@gnat.com>
5818
5819         * config/alpha/alpha.c (struct machine_function): New flag for VMS,
5820         uses_condition_handler.
5821         (alpha_expand_builtin_establish_vms_condition_handler): New expander.
5822         (alpha_expand_builtin_revert_vms_condition_handler): New expander.
5823         (enum alpha_builtin): New ALPHA_BUILTIN_REVERT_VMS_CONDITION_HANDLER
5824         and ALPHA_BUILTIN_ESTABLISH_VMS_CONDITION_HANDLER values.
5825         (code_for_builtin): New insn codes for the new alpha_builtins.
5826         (alpha_init_builtins): Register the new functions as BUILT_IN_MD.
5827         (alpha_sa_size): Account for uses_condition_handler.
5828         (alpha_expand_prologue): Likewise.
5829         (alpha_start_function): Likewise.
5830         (alpha_expand_epilogue): Likewise.
5831         * config/alpha/alpha-protos.h: Prototype the new alpha.c builtin
5832         establish/revert expanders.
5833         * config/alpha/alpha.h (DWARF_FRAME_REGNUM): Define.
5834         * config/alpha/alpha.md (builtin_establish_vms_condition_handler):
5835         New expander, resorting to the alpha.c associated function.
5836         (builtin_revert_vms_condition_handler): Likewise.
5837         * config/alpha/vms-gcc_shell_handler.c: New file. Implements
5838         __gcc_shell_handler, the static VMS condition handler used as
5839         an indirection wrapper to the current dynamically established
5840         handler.
5841         * config/alpha/vms-unwind.h: Complete rewrite.
5842         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Add vms-gcc_shell_handler.c
5843         * config/alpha/vms.h (MD_UNWIND_SUPPORT):
5844
5845 2009-08-09  Eric Botcazou  <botcazou@adacore.com>
5846             Douglas B Rupp  <rupp@gnat.com>
5847
5848         * config/alpha/alpha.c (alpha_links): Add 'target' field.
5849         (alpha_need_linkage): Handle aliases.  Return function symbol.
5850         (alpha_use_linkage): Rename 'linkage' argument to 'func'.
5851         Use ultimate alias target for the linkage name.
5852         * config/alpha/alpha.md (movmemdi): Use the symbol returned
5853         by alpha_need_linkage for the function symbol.
5854         (setmemdi): Likewise.
5855
5856 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
5857
5858         * config/alpha/alpha.c (TARGET_ASM_UNALIGNED_*_OP): Define if on VMS.
5859         * config/alpha/vms.h (OBJECT_FORMAT_ELF): Define.
5860         (ASM_WEAKEN_LABEL): Define.
5861         (CRT_CALL_STATIC_FUNCTION): Define.
5862         (STARTFILE_SPEC): Add crtbegin.o crtbeginS.o.
5863         (ENDFILE_SPEC): Define.
5864         (INIT_SECTION_ASM_OP): Define.
5865         * config/alpha/vms-dwarf2eh.asm (__EH_FRAME_BEGIN__): Remove.
5866         * config/alpha/t-vms (EXTRA_PARTS): Add crtbegin.o crtbeginS.o
5867         crtend.o crtendS.o.
5868         (MULTILIB_OSDIRNAMES): Define.
5869         (shlib_version): Define.
5870         (SHLIB_EXT): Define.
5871         (SHLIB_OBJS): Define.
5872         (SHLIB_NAME): Define.
5873         (SHLIB_MULTILIB): Define.
5874         (SHLIB_INSTALL): Define.
5875         (SHLIB_SYMVEC): Define.
5876         (SHLIB_SYMVECX2): Define.
5877         (SHLIB_LINK): Define.
5878
5879 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
5880
5881         * config/alpha/alpha.c (alpha_initialize_trampoline):
5882         Initialize VMS trampoline IAW ABI for bounded procedure calls.
5883         (alpha_start_function): Emit transfer address on nested functions
5884         for VMS trampoline call.
5885         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Remove vms_tramp.asm
5886         since no longer used.
5887         * config/alpha/vms-tramp.asm: Remove.
5888         * config/alpha/vms.h (TRAMPOLINE_TEMPLATE): Leave undefined
5889         since now only data initialized at runtime.
5890
5891 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
5892
5893         * config/alpha/vms.h (HANDLE_SYSV_PRAGMA): Define.
5894         (LINK_GCC_C_SEQUENCE_SPEC): Define.
5895         (MD_EXEC_PREFIX): Remove, no longer used.
5896         (MD_STARTFILE_PREFIX): Likewise.
5897         (INCLUDE_DEFAULTS): Likewise.
5898         * config/alpha/t-vms:
5899         (vms-dwarf2.o, vms-dwarf2eh.o): Use GCC_FOR_TARGET to compile.
5900
5901 2009-08-09  Richard Guenther  <rguenther@suse.de>
5902
5903         PR tree-optimization/41016
5904         * tree-ssa-ifcombine.c (get_name_for_bit_test): Fix tuplification bug.
5905         (operand_precision): Remove.
5906         (integral_operand_p): Likewise.
5907         (recognize_single_bit_test): Adjust.
5908
5909 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
5910
5911         * c-common.c (c_fully_fold_internal): Issue a warning if a binary
5912         operation overflows.  Likewise non-cast unary arithmetic.
5913         If one arm of a conditional expression is always taken,
5914         inhibit evaluation warnings for the other arm.  Likewise inhibit
5915         evaluation warnings for the second && or || operand if the first
5916         operand is enough to determine the result.
5917         * c-typeck.c (build_conditional_expr): Apply the same inhibition
5918         rules here.
5919         (build_binary_op): Prevent duplicate evaluation warnings.
5920
5921 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
5922
5923         * tree-out-of-ssa.c (insert_value_copy_on_edge): If the source
5924         and destination have different modes, Use promote_mode to
5925         determine the signedness of the conversion.  Assert that the
5926         promoted source mode matches the destination mode.  Don't pass
5927         the destination and destination mode to expand_expr if the source
5928         mode is different.  Simplify conversion logic.
5929
5930 2009-08-09  Ira Rosen  <irar@il.ibm.com>
5931
5932         PR tree-optimization/41008
5933         * tree-vect-loop.c (vect_is_simple_reduction): Get operands
5934         from condition only in case it's a comparison. Adjust checks.
5935
5936 2009-08-09  Bernd Schmidt  <bernd.schmidt@analog.com>
5937
5938         * tree-dfa.c (renumber_gimple_stmt_uids_in_blocks): New function.
5939         * tree-flow.h (renumber_gimple_stmt_uids_in_blocks): Declare it.
5940         * tree-ssa-loop-ivopts.c (comp_cost): Make COST an integer.
5941         (enum iv_position): Add IP_AFTER_USE and IP_BEFORE_USE.
5942         (dump_cand): Handle them.
5943         (struct iv_cand): New members COST_STEP and AINC_USE.
5944         (stmt_after_increment): Likewise.
5945         (stmt_after_inc_pos): Renamed from stmt_after_ip_original_pos.  All
5946         callers changed.  Use gimple_uid comparison instead of scanning.
5947         (add_candidate_1): When looking for identical candidates, take
5948         AINC_USE into account.  Set it for new candidates.
5949         (force_expr_to_var_cost): Cast target_spill_cost to int.
5950         (get_address_cost): New arguments STMT_AFTER_INC and MAY_AUTOINC.
5951         All callers changed.  Check for availability of autoinc addressing
5952         modes, both in general for a given mode, and in the specific use case.
5953         (get_computation_cost_at): New argument CAN_AUTOINC.  All callers
5954         changed.
5955         (get_computation_cost): Likewise.
5956         (autoinc_possible_for_pair, set_autoinc_for_original_candidates,
5957         add_autoinc_candidates): New static functions.
5958         (add_candidate): Call add_autoinc_candidates for candidates based on
5959         a USE_ADDRESS use.
5960         (find_iv_candidates): Call set_autoinc_for_original_candidates.
5961         (determine_use_iv_cost_address): If we have an autoinc candidate at
5962         the matching use, verify autoinc is possible and subtract the cost
5963         of the candidate's step from the cost.
5964         (determine_iv_cost): Record the cost of the increment in the COST_STEP
5965         member of the candidate.
5966         (tree_ssa_iv_optimize_loop): Swap the calls to determine_iv_costs and
5967         determine_use_iv_costs.  Call renumber_gimple_stmt_uids_in_blocks.
5968
5969 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
5970
5971         * config.build (ia64-hp-*vms*): New target.
5972         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
5973         with ia64-hp-*vms*.
5974         * config.gcc (ia64-hp-*vms*): New target.
5975         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
5976         with ia64-hp-*vms*.
5977         * config.host (ia64-hp-*vms*): New target.
5978         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
5979         with ia64-hp-*vms*.
5980
5981 2009-08-08  Richard Guenther  <rguenther@suse.de>
5982
5983         PR tree-optimization/40991
5984         * tree-ssa-pre.c (eliminate): Delay purging EH edges.
5985
5986 2009-08-08  Richard Sandiford  <rdsandiford@googlemail.com>
5987
5988         * combine.c (gen_lowpart_or_truncate): Exclude CONST_INTs from
5989         mode check.  Do truncations in an integer mode.
5990         (force_to_mode): Handle subregs for all mode types.  Only do
5991         arithmetic simplifications on integer modes.
5992
5993 2009-08-07  Richard Guenther  <rguenther@suse.de>
5994
5995         PR tree-optimization/40999
5996         * tree-ssa-ccp.c (get_symbol_constant_value): Handle CONST_DECLs.
5997         (maybe_fold_reference): Lookup constant initializers.
5998         (fold_gimple_assign): Likewise.
5999
6000 2009-08-07  Richard Guenther  <rguenther@suse.de>
6001
6002         * tree-ssa.c (useless_type_conversion_p_1): Only for types
6003         that require structural equality defer to the langhook.
6004
6005 2009-08-07  Martin Jambor  <mjambor@suse.cz>
6006
6007         * ipa-prop.h (enum jump_func_type): New value IPA_JF_ANCESTOR, changed
6008         comments.
6009         (struct ipa_pass_through_data): New type.
6010         (struct ipa_ancestor_jf_data): New type.
6011         (union jump_func_value): Removed field formal_id, added fields
6012         pass_through and ancestor.
6013         (struct ipa_param_call_note): Changed type of formal_id to int from
6014         unsigned.
6015         * ipa-prop.c (ipa_print_node_jump_functions): Print pass through with
6016         operations jump functions and ancestor jump functions.
6017         (compute_complex_pass_through): New function.
6018         (compute_scalar_jump_functions): Call compute_complex_pass_through,
6019         reflect changes in the jump function strucutre.
6020         (update_jump_functions_after_inlining): Ignore complex pass-through
6021         and ancestor jump functions.
6022         * ipa-cp.c (ipcp_lattice_from_jfunc): Added support for ancestor and
6023         polynomial pass-through with operation jump functions.
6024
6025 2009-08-07  Jakub Jelinek  <jakub@redhat.com>
6026
6027         * dwarf2out.c (output_fde): When doing hot/cold partitioning, use
6028         fde->dw_fde_begin as begin label instead of hot/cold label.
6029         Use LLSDAC label instead of LLSDA for second section lsda.
6030         (dwarf2out_do_cfi_startproc): Add SECOND argument.  Use LLSDAC
6031         label instead of LLSDA if it is true.
6032         (dwarf2out_begin_prologue, dwarf2out_switch_text_section): Adjust
6033         callers.
6034         * except.c (add_call_site, dw2_size_of_call_site_table): Add
6035         SECTION argument.  Use it as index into crtl->eh.call_site_record
6036         array.
6037         (dw2_output_call_site_table): Likewise.  Add CS_FORMAT argument,
6038         use it to determine how to print table entries instead of using
6039         #ifdef HAVE_AS_LEB128.  For SECTION > 0 use hot resp. cold
6040         label instead of normal begin label as base.
6041         (sjlj_assign_call_site_values): Adjust add_call_site caller.
6042         (convert_to_eh_region_ranges): When doing hot/cold partitioning,
6043         ensure no EH range spans between sections and that landing pads
6044         are always in the corresponding section.
6045         (sjlj_size_of_call_site_table, sjlj_output_call_site_table): Adjust
6046         for crtl->eh.call_site_record being an array rather than scalar.
6047         (output_one_function_exception_table): New function, copied
6048         from output_function_exception_table.  Adjust
6049         dw2_size_of_call_site_table, dw2_output_call_site_table
6050         callers.  For SECOND section use *C suffixed labels.
6051         (output_function_exception_table): Call
6052         output_one_function_exception_table and, when doing hot/cold
6053         partitioning, also another time for the second section.
6054         * opts.c: Include except.h.
6055         (decode_options): Allow -freorder-blocks-and-partition with
6056         exceptions, unless SJLJ or TARGET_UNWIND_INFO.
6057         * Makefile.in (opts.o): Depend on $(EXCEPT_H).
6058         * function.h (struct rtl_eh): Change call_site_record from
6059         scalar into array of 2 elements.
6060
6061 2009-08-07  Martin Jambor  <mjambor@suse.cz>
6062
6063         * ipa-prop.c (count_formal_params_1): New function.
6064         (ipa_get_vector_of_formal_parms): New function.
6065         (get_vector_of_formal_parm_types): New function.
6066         (ipa_modify_formal_parameters): New function.
6067         (ipa_modify_call_arguments): New function.
6068         (index_in_adjustments_multiple_times_p): New function.
6069         (ipa_combine_adjustments): New function.
6070         (ipa_dump_param_adjustments): New function.
6071         * ipa-prop.h (struct ipa_parm_adjustment): New type.
6072         (ipa_get_vector_of_formal_parms): Declare.
6073         (ipa_modify_formal_parameters): Declare.
6074         (ipa_modify_call_arguments): Declare.
6075         (ipa_combine_adjustments): Declare.
6076         (ipa_dump_param_adjustments): Declare.
6077         (build_ref_for_offset): Declare.
6078         * Makefile.in (tree-sra.o): Add ipa-prop.h to dependencies.
6079         * tree-sra.c: Include ipa-prop.c.
6080         (build_ref_for_offset): Make public.
6081
6082 2009-08-06  Neil Vachharajani  <nvachhar@gmail.com>
6083
6084         * value-prof.c (init_pid_map): Replace xmalloc with XCNEWVEC.
6085
6086 2009-08-06  Thomas Schwinge  <tschwinge@gnu.org>
6087
6088         * gcc/doc/extend.texi (__builtin_extract_return_address)
6089         (__builtin_frob_return_address): Document.
6090
6091 2009-08-06  Paul Brook  <paul@codesourcery.com>
6092
6093         * config/arm/lib1funcs.asm (ARM_DIV_BODY): Add Thumb-2 implementation.
6094         (udivsi3, aeabi_uidivmod, divsi3, aeabi_idivmod): Only use Thumb-1
6095         implementation on ARMv6-M.
6096
6097 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
6098
6099         * doc/extend.texi (pcs): Document new attribute for ARM.
6100
6101 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
6102
6103         * arm.c (pcs_attribute_args): Comment out unsupported attribute
6104         variants.
6105
6106 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
6107
6108         * arm.c (arm_handle_pcs_attribute): Pass the entire name object to
6109         warning ().
6110
6111 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
6112
6113         * arm.c (arm_handle_pcs_attribute): Use %qE in warning.
6114
6115 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
6116
6117         Merge ARM/hard_vfp_branch to trunk.
6118
6119         2009-08-04  Richard Earnshaw  <rearnsha@arm.com>
6120
6121         * arm.c (libcall_eq): New function.
6122         (libcall_hash): New function.
6123         (add_libcall): New function.
6124         (arm_libcall_uses_aapcs_base): New function.
6125         (arm_libcall_value): Use arm_libcall_uses_aapcs_base to check for
6126         libcalls using the base PCS.
6127         (arm_init_cumulative_args): Likewise.
6128
6129         2009-07-20  Joseph Myers  <joseph@codesourcery.com>
6130
6131         * config/arm/arm.c (arm_libcall_value, arm_init_cumulative_args):
6132         Use base ABI for conversion libfuncs between HFmode and SFmode.
6133
6134         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
6135
6136         * config/arm/arm.c (aapcs_vfp_sub_candidate): Use V2SImode and
6137         V4SImode as representatives of all 64-bit and 128-bit vector
6138         types.  Allow vector types without vector modes.
6139         (aapcs_vfp_is_call_or_return_candidate): Handle vector types
6140         without vector modes like BLKmode.
6141         (aapcs_vfp_allocate): Handle TImode for non-TARGET_NEON like
6142         BLKmode.  Avoid unsupported vector modes or TImode moves for
6143         non-TARGET_NEON.
6144         (aapcs_vfp_allocate_return_reg): Likewise.
6145         (arm_vector_mode_supported_p): Only support V2SImode, V4HImode and
6146         V8QImode if TARGET_NEON || TARGET_IWMMXT.
6147
6148         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
6149
6150         * config/arm/arm.c (arm_handle_pcs_attribute): New.
6151         (arm_get_pcs_model): Pass attribute arguments to
6152         arm_pcs_from_attribute.
6153         (arm_init_cumulative_args): Use base AAPCS for conversions from
6154         floating-point types to DImode.
6155         (arm_attribute_table): Add pcs attribute.
6156         (arm_handle_pcs_attribute): New.
6157         * config/arm/bpabi.h (DECLARE_LIBRARY_RENAMES): When renaming
6158         conversions from floating-point types to DImode, also declare them
6159         to use base AAPCS and declare functions they call to use base
6160         AAPCS and their RTABI names.
6161
6162         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
6163
6164         * doc/invoke.texi (-mfloat-abi=@var{name}): Remove statement about
6165         -mfloat-abi=hard not being supported for VFP.
6166
6167         2009-05-11  Kazu Hirata  <kazu@codesourcery.com>
6168
6169         * config/sparc/sparc.c (sparc_emit_float_lib_cmp): Pass a libcall
6170         SYMBOL_REF to hard_libcall_value.
6171
6172         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
6173             Richard Earnshaw  <rearnsha@arm.com>
6174
6175         * config/arm/arm.c (aapcs_layout_arg): Once a co-processor argument
6176         has been put on the stack, all remaining co-processory arguments for
6177         that co-processor also go on the stack.
6178
6179         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
6180
6181         * config/arm/arm.c (arm_return_in_memory): Handle returning
6182         vectors of suitable size in registers also for AAPCS case.
6183
6184         2009-01-13  Richard Earnshaw <rearnsha@arm.com>
6185
6186         * doc/tm.texi (TARGET_LIBCALL_VALUE): Add missing end statement.
6187
6188         2008-12-09  Richard Earnshaw <rearnsha@arm.com>
6189
6190         ARM Hard-VFP calling convention
6191         * target-def.h (TARGET_LIBCALL_VALUE): New hook.
6192         * target.h (gcc_target): Add libcall_value to table of call hooks.
6193         * targhooks.h (default_libcall_value): Default implementation.
6194         * targhooks.c (default_libcall_value): Likewise.
6195         * doc/tm.texi (TARGET_LIBCALL_VALUE): Document it.
6196         * optabs.c (expand_unop): Use it.
6197         * expr.h (hard_libcall_value): Pass the function RTX through.
6198         * calls.c (emit_library_call_value_1): Update call to
6199         hard_libcall_value.
6200         * explow.c (hard_libcall_value): Use new target hook.
6201         * testsuite/lib/target-supports.exp
6202         (check_effective_target_arm_hard_vfp_ok): New hook.
6203         (check_effective_target_arm_neon_ok): Improve test for neon
6204         availability.
6205         * testsuite/gcc.target/arm/eabi1.c: Only run test in base variant.
6206         * config/arm/arm.c: Include cgraph.h
6207         (TARGET_FUNCTION_VALUE): Override default hook.
6208         (arm_pcs_default): New variable.
6209         (arm_override_options): Don't fault hard calling convention with VFP.
6210         Add support for AAPCS variants.
6211         (arm_function_value): Make static.  Handle AAPCS variants.
6212         (arm_libcall_value): New function.
6213         (arm_apply_result_size): Handle VFP registers in results.
6214         (arm_return_in_memory): Rework all AAPCS variants; handle hard-vfp
6215         conventions.
6216         (pcs_attribute_args): New variable.
6217         (arm_pcs_from_attribute): New function.
6218         (arm_get_pcs_model): New function.
6219         (aapcs_vfp_cum_init): New function.
6220         (aapcs_vfp_sub_candidate): New function.
6221         (aapcs_vfp_is_return_candidate): New function.
6222         (aapcs_vfp_is_call_candidate): New function.
6223         (aapcs_vfp_allocate): New function.
6224         (aapcs_vfp_allocate_return_reg): New function.
6225         (aapcs_vfp_advance): New function.
6226         (aapcs_cp_arg_layout): New variable.
6227         (aapcs_select_call_coproc): New function.
6228         (aapcs_select_return_coproc): New function.
6229         (aapcs_allocate_return_reg): New function.
6230         (aapcs_libcall_value): New function.
6231         (aapcs_layout_arg): New function.
6232         (arm_init_cumulative_args): Initialize AAPCS args data.
6233         (arm_function_arg): Handle AAPCS variants using new interface.
6234         (arm_arg_parital_bytes): Likewise.
6235         (arm_function_arg_advance): New function.
6236         (arm_function_ok_for_sibcall): Ensure that sibling calls agree on
6237         calling conventions.
6238         (arm_setup_incoming_varargs): Handle new AAPCS args data.
6239         * arm.h (NUM_VFP_ARG_REGS): Define.
6240         (LIBCALL_VALUE): Update.
6241         (FUNCTION_VALUE): Delete.
6242         (FUNCTION_VALUE_REGNO_P): Add VFP regs.
6243         (arm_pcs): New enum.
6244         (CUMULATIVE_ARGS): New data to support AAPCS argument marshalling.
6245         (FUNCTION_ARG_ADVANCE): Call arm_function_arg_advance.
6246         (FUNCTION_ARG_REGNO_P): Add VFP regs.
6247         * arm-protos.h (arm_function_arg_advance): Add.
6248         (aapcs_libcall_value): Add.
6249         (arm_function_value): Delete.
6250
6251 2009-08-06  Uros Bizjak  <ubizjak@gmail.com>
6252             H.J. Lu  <hongjiu.lu@intel.com>
6253
6254         PR target/40957
6255         * config/i386/i386.c (standard_sse_mode_p): Remove.
6256         (standard_sse_constant_p): Return 2 for integer mode
6257         vector_all_ones_operand when SSE2 is enabled.
6258         (standard_sse_constant_opcode)<case 2>: Always return [v]pcmpeqd.
6259         (ix86_expand_vector_move): Do not check for negative values from
6260         standard_sse_constant_p.
6261
6262 2009-08-06  Richard Guenther  <rguenther@suse.de>
6263
6264         * tree-ssa.c (useless_type_conversion_p_1): Make function and
6265         array type comparisons frontend independent.
6266         * Makefile.in (tree-ssa.o): Add $(TARGET_H) dependency.
6267         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Always fill
6268         out array reference lower bound and element size operands.
6269         (ao_ref_init_from_vn_reference): Properly compute the offset
6270         for ARRAY_RANGE_REF.
6271         (vn_reference_fold_indirect): Fill out array reference lower
6272         bound and element size operands.
6273         * tree-ssa-pre.c (phi_translate_1): Fail if we have to translate
6274         a non gimple valued reference operand which can happen for
6275         array reference lower bound or element size.
6276         (create_component_ref_by_pieces_1): Properly generate the
6277         element size operand for array references.
6278
6279 2009-08-06  Richard Guenther  <rguenther@suse.de>
6280
6281         PR tree-optimization/40964
6282         * tree.c (iterative_hash_host_wide_int): Export.
6283         * tree.h (iterative_hash_host_wide_int): Declare.
6284         * tree-ssa-structalias.c (heapvar_map): New struct.
6285         (heapvar_map_eq): New function.
6286         (heapvar_map_hash): Likewise.
6287         (heapvar_lookup): Adjust.
6288         (heapvar_insert): Likewise.
6289         (make_constraint_from_heapvar): Allow multiple heap variables
6290         per decl at different offsets.
6291         (init_alias_heapvars): Adjust.
6292
6293 2009-08-04  David Daney  <ddaney@caviumnetworks.com>
6294
6295         * config/mips/mips.h (TARGET_SYNC_AFTER_SC): New macro.
6296         * mips_output_sync_loop (mips_output_sync_loop): Only emit
6297         trailing sync if TARGET_SYNC_AFTER_SC.
6298
6299 2009-08-05  David Daney  <ddaney@caviumnetworks.com>
6300
6301         * gcc/config/mips/sync.md (sync_compare_and_swap<mode>,
6302         compare_and_swap_12, sync_add<mode>, sync_<optab>_12,
6303         sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12,
6304         sync_old_nand_12, sync_new_nand_12, sync_sub<mode>,
6305         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
6306         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
6307         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
6308         sync_new_nand<mode>, sync_lock_test_and_set<mode>,
6309         test_and_set_12): Rewrite calls to mips_output_sync_loop.
6310         * gcc/config/mips/mips-protos.h (mips_output_sync_loop): Make
6311         the prototype declaration match the definition.
6312         * gcc/config/mips/mips.c (mips_output_sync_loop):  Emit sync
6313         instructions explicitly.  Add barrier_before and operands
6314         parameters.
6315         * gcc/config/mips/mips.h (MIPS_COMPARE_AND_SWAP,
6316         MIPS_COMPARE_AND_SWAP_12, MIPS_SYNC_OP, MIPS_SYNC_OP_12,
6317         MIPS_SYNC_OLD_OP_12, MIPS_SYNC_NEW_OP_12, MIPS_SYNC_OLD_OP,
6318         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
6319         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE,
6320         MIPS_SYNC_EXCHANGE_12): Remove sync instructions.
6321
6322 2009-08-05  Andrew Pinski  <pinskia@gmail.com>
6323
6324         * tree-ssa-alias.c: Fix intervals to use [) syntax.
6325
6326 2009-08-05  Uros Bizjak  <ubizjak@gmail.com>
6327             Mikulas Patocka  <mikulas@artax.karlin.mff.cuni.cz>
6328
6329         PR target/40906
6330         * config/i386/i386.c (ix86_split_long_move): Fix push of multi-part
6331         source operand.
6332
6333 2009-08-05  Jakub Jelinek  <jakub@redhat.com>
6334
6335         PR rtl-optimization/40924
6336         * dse.c (canon_address): Before calling cselib_expand_value_rtx
6337         make sure canon_rtx (mem_address) isn't simpler than
6338         canon_rtx (expanded_mem_address).
6339
6340 2009-08-05  Li Feng  <nemokingdom@gmail.com>
6341
6342         * graphite-sese-to-poly.c (build_pbb_drs): Remove build alias set
6343         for each poly_bb_p.
6344         (build_scop_drs): Build alias set for each SCoP.
6345
6346 2009-08-04  Sandra Loosemore  <sandra@codesourcery.com>
6347
6348         * doc/invoke.texi (MIPS Options): Document new 1004K -march options.
6349         * config/mips/mips.c (mips_cpu_info_table): Add 1004K cores.
6350         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Add pattern for 1004K.
6351         (MIPS_ARCH_FLOAT_SPEC): Likewise.
6352         (BASE_DRIVER_SELF_SPECS): Likewise.
6353
6354 2009-08-04  Andrew Pinski  <pinskia@gmail.com>
6355
6356         * tree-ssa-alias.c: Fix some comment typos.
6357
6358 2009-08-04  Kaz Kojima  <kkojima@gcc.gnu.org>
6359
6360         * config/sh/linux-atomic.asm (ATOMIC_BOOL_COMPARE_AND_SWAP,
6361         ATOMIC_OP_AND_FETCH, ATOMIC_COMBOP_AND_FETCH): Define.
6362
6363 2009-08-03  Janis Johnson  <janis187@us.ibm.com>
6364
6365         PR c/39902
6366         * simplify-rtx.c (simplify_binary_operation_1): Disable
6367         simplifications for decimal float operations.
6368
6369 2009-08-03  Jakub Jelinek  <jakub@redhat.com>
6370
6371         PR middle-end/40943
6372         * tree-ssa.c (warn_uninitialized_var): Even on LHS warn for
6373         operand of INDIRECT_REF.
6374
6375 2009-08-03  Uros Bizjak  <ubizjak@gmail.com>
6376
6377         * config/alpha/alpha.c (alpha_legitimate_constant_p): Reject CONST
6378         constants referencing TLS symbols.
6379
6380 2009-08-03  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
6381
6382         * config/sh/linux-atomic.asm (ATOMIC_COMPARE_AND_SWAP): Rename
6383         __sync_compare_and_swap_* to __sync_val_compare_and_swap_*.
6384
6385 2009-08-03  Richard Guenther  <rguenther@suse.de>
6386
6387         * tree.c (make_vector_type): Build a main variant first,
6388         get the canonical one and then build the variant.
6389         * tree-ssa.c (useless_type_conversion_p_1): Handle
6390         fixed-point types.
6391         (useless_type_conversion_p): Conversions to pointers to
6392         incomplete record types are useless.
6393
6394 2009-08-03  Richard Guenther  <rguenther@suse.de>
6395
6396         * tree-cfg.c (pass_warn_unused_result): Mark name that no dump
6397         file will be created.
6398         * omp-low.c (pass_diagnose_omp_blocks): Likewise.
6399         * toplev.c (compile_file): Adjust comment.
6400
6401 2009-08-03  Kaz Kojima  <kkojima@gcc.gnu.org>
6402
6403         * config/sh/sh-protos.h (sh_promote_function_mode): Remove.
6404         * config/sh/sh.c (sh_promote_function_mode): Wrap long lines.
6405         (TARGET_PROMOTE_FUNCTION_MODE): Define.
6406         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
6407         (sh_promote_function_mode): Fix typo.
6408
6409 2009-08-03  Andreas Krebbel  <krebbel1@de.ibm.com>
6410
6411         * explow.c (promote_mode): Mark TYPE and PUNSIGNEDP as possibly unused.
6412
6413 2009-08-02  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6414
6415         * pa.c (pa_promote_function_mode): Remove ATTRIBUTE_UNUSED from
6416         declaration arguments.
6417
6418 2009-08-02  Uros Bizjak  <ubizjak@gmail.com>
6419
6420         * config/i386/i386.c (ix86_expand_fp_compare): Use const0_rtx instead
6421         of GEN_INT (0x00) and const1_rtx instead of GEN_INT (0x01).
6422         (ix86_split_ashl): Ditto.
6423         (ix86_expand_vector_init_one_nonzero): Ditto.
6424         (ix86_expand_vector_set): Ditto.
6425         (ix86_expand_reduc_v4sf): Ditto.
6426
6427 2009-08-02  Paolo Bonzini  <bonzini@gnu.org>
6428
6429         * explow.c (promote_function_mode): Remove assert.
6430         * config/sh/sh.c (sh_promote_function_mode): Declare.
6431
6432 2009-08-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6433
6434         * config/pa/pa.c (pa_promote_function_mode): Declare.
6435         Change to static.  Fix promote_mode call.
6436
6437         * gthr-dce.h (CONST_CAST2): Define if not defined.
6438         (__gthread_setspecific): Use CONST_CAST2 to fix warning.
6439
6440         * config.gcc (hppa[12]*-*-hpux10*): Add stdint support.
6441
6442 2009-08-01  Paolo Bonzini  <bonzini@gnu.org>
6443
6444         * expr.c (store_constructor): Use promote_decl_mode.  Remove
6445         now write-only variable unsignedp.
6446         (expand_expr_real_1): Use promote_decl_mode.
6447         * expr.h (promote_function_mode, promote_decl_mode): New.
6448         (promote_mode): Remove last argument.
6449         * function.c (assign_temp): Drop last argument of promote_mode.
6450         (assign_parm_find_data_types): Use promote_function_mode.
6451         (assign_parm_setup_reg): Likewise.
6452         (expand_function_end): Use promote_function_mode.
6453         * calls.c (initialize_argument_information): Use promote_function_mode.
6454         (precompute_arguments): Use promote_mode instead of checking if
6455         only PROMOTE_FUNCTION_MODE is defined.
6456         (expand_call): When making sibcall decisions, use promote_function_mode.
6457         Below, remove an if for targetm.calls.promote_function_return and
6458         and use promote_function_mode.
6459         (emit_library_call_value_1): Use promote_function_mode, fix bug
6460         where promote_mode was passed FOR_CALL == 0 for a return value in an
6461         assertion.
6462         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
6463         * explow.c (promote_function_mode, promote_decl_mode): New.
6464         (promote_mode): Keep only the FOR_CALL == 0 case.
6465         * combine.c (setup_incoming_promotion): Remove test of
6466         promote_function_args.  Use promote_function_mode.
6467         * stmt.c (expand_value_return): Use promote_decl_mode.
6468         (expand_decl): Use promote_decl_mode.
6469
6470         * expr.c (store_constructor): Use promote_decl_mode.  Remove
6471         now write-only variable unsignedp.
6472         (expand_expr_real_1): Use promote_decl_mode.
6473         * expr.h (promote_function_mode, promote_decl_mode): New.
6474         (promote_mode): Remove last argument.
6475         * function.c (assign_temp): Drop last argument of promote_mode.
6476         (assign_parm_find_data_types): Use promote_function_mode.
6477         (assign_parm_setup_reg): Likewise.
6478         (expand_function_end): Use promote_function_mode.
6479         * calls.c (initialize_argument_information): Use promote_function_mode.
6480         (precompute_arguments): Use promote_mode instead of checking if
6481         only PROMOTE_FUNCTION_MODE is defined.
6482         (expand_call): When making sibcall decisions, use promote_function_mode.
6483         Below, remove an if for targetm.calls.promote_function_return and
6484         and use promote_function_mode.
6485         (emit_library_call_value_1): Use promote_function_mode, fix bug
6486         where promote_mode was passed FOR_CALL == 0 for a return value in an
6487         assertion.
6488         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
6489         * explow.c (promote_function_mode, promote_decl_mode): New.
6490         (promote_mode): Keep only the FOR_CALL == 0 case.
6491         * combine.c (setup_incoming_promotion): Remove test of
6492         promote_function_args.  Use promote_function_mode.
6493         * stmt.c (expand_value_return): Use promote_decl_mode.
6494         (expand_decl): Use promote_decl_mode.
6495
6496         * explow.c (promote_function_mode): Just call the target hook.
6497         * targhooks.c (default_promote_function_mode,
6498         default_promote_function_mode_always_promote): New.
6499         * targhooks.h (default_promote_function_mode,
6500         default_promote_function_mode_always_promote): Declare.
6501         * target.h (promote_function_args, promote_function_return): Remove.
6502         (promote_function_mode): New.
6503         * target-def.h (TARGET_PROMOTE_FUNCTION_ARGS,
6504         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
6505         (TARGET_PROMOTE_FUNCTION_MODE): New.
6506         (TARGET_CALLS): Adjust.
6507         * system.h (TARGET_PROMOTE_FUNCTION_ARGS,
6508         TARGET_PROMOTE_FUNCTION_RETURN, PROMOTE_FUNCTION_MODE): Poison.
6509
6510         * config/s390/s390.h (PROMOTE_FUNCTION_MODE): Move...
6511         * config/s390/s390.c (s390_promote_function_mode): ... here,
6512         with pointer handling.
6513         (TARGET_PROMOTE_FUNCTION_MODE): Define.
6514         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
6515
6516         * config/sparc/sparc.h (PROMOTE_FUNCTION_MODE): Move...
6517         * config/sparc/sparc.c (sparc_promote_function_mode): ... here,
6518         with pointer handling.
6519         (TARGET_PROMOTE_FUNCTION_MODE): Define.
6520         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
6521
6522         * config/sh/sh-protos.h (sh_promote_function_mode): New.
6523         * config/sh/sh.c (sh_promote_function_mode): New.
6524         (TARGET_PROMOTE_FUNCTION_MODE): Define.
6525         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
6526
6527         * config/cris/cris.h (PROMOTE_FUNCTION_MODE): Move...
6528         * config/cris/cris.c (cris_promote_function_mode): ... here.
6529         (TARGET_PROMOTE_FUNCTION_MODE): Define.
6530         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
6531
6532         * config/mmix/mmix.h (PROMOTE_FUNCTION_MODE): Move...
6533         * config/mmix/mmix.c (mmix_promote_function_mode): ... here.
6534         (TARGET_PROMOTE_FUNCTION_MODE): Define.
6535         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
6536
6537         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Move...
6538         * config/arm/arm.c (arm_promote_function_mode): ... here, without
6539         complex type handling.
6540         (TARGET_PROMOTE_FUNCTION_MODE): Define.
6541         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
6542
6543         * config/pa/pa.c (pa_promote_function_mode): New.
6544         (TARGET_PROMOTE_FUNCTION_MODE): Define.
6545         (TARGET_PROMOTE_FUNCTION_RETURN): Remove.
6546
6547         * config/alpha/alpha.c (TARGET_PROMOTE_FUNCTION_ARGS,
6548         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
6549         (TARGET_PROMOTE_FUNCTION_MODE): Define equivalently.
6550         * config/xtensa/xtensa.c: Likewise.
6551         * config/stormy16/stormy16.c: Likewise.
6552         * config/iq2000/iq2000.c: Likewise.
6553         * config/rs6000/rs6000.c: Likewise.
6554         * config/picochip/picochip.c: Likewise.
6555         * config/arc/arc.c: Likewise.
6556         * config/mcore/mcore.c: Likewise.
6557         * config/score/score.c: Likewise.
6558         * config/mips/mips.c: Likewise.
6559         * config/bfin/bfin.c: Likewise.
6560         * config/ia64/ia64.c: Likewise (disabled though).
6561
6562         * config/frv/frv.h: Remove pointless remark.
6563
6564         * doc/tm.texi (PROMOTE_FUNCTION_MODE,
6565         TARGET_PROMOTE_FUNCTION_ARGS,
6566         TARGET_PROMOTE_FUNCTION_RETURN): Consolidate into...
6567         (TARGET_PROMOTE_FUNCTION_MODE): ... this.
6568
6569 2009-08-01  Sebastian Pop  <sebastian.pop@amd.com>
6570
6571         * doc/invoke.texi (-fgraphite-force-parallel): Renamed
6572         -floop-parallelize-all.
6573         * toplev.c (process_options): Rename flag_graphite_force_parallel to
6574         flag_loop_parallelize_all.
6575         * tree-ssa-loop.c (gate_graphite_transforms): Same.
6576         * graphite.c (graphite_transform_loops): Same.
6577         * common.opt: Same.
6578         * graphite-poly.c (apply_poly_transforms): Same.
6579
6580 2009-07-31  Richard Earnshaw  <rearnsha@arm.com>
6581
6582         PR tree-optimization/40914
6583         * ipa-prop.c (ipa_get_ptr_load_param): New argument use_delta,
6584         if set, then check the delta field of the PMF record.
6585         (ipa_get_stmt_member_ptr_load_param): Propagate new param use_delta.
6586         (ipa_analyze_call_uses): Handle machines where the vbit for a PMF
6587         call is stored in the delta.
6588
6589 2009-07-31  Adam Nemet  <anemet@caviumnetworks.com>
6590
6591         * config/mips/mips.md (*clear_upper32_dext): New pattern.
6592
6593 2009-07-31  Uros Bizjak  <ubizjak@gmail.com>
6594
6595         * config/i386/bsd.h (ASM_BYTE): New define.
6596         * config/i386/darwin.h (ASM_BYTE): Rename from ASM_BYTE_OP.
6597         * config/i386/att.h (ASM_BYTE): New define. Use ASM_BYTE instead of
6598         .byte.  Use fputs or putc instead of fprintf where appropriate.
6599         * config/i386/i386-interix.h: Use ASM_BYTE instead of .byte.  Use
6600         fputs or putc instead of fprintf where appropriate.
6601         * config/i386/i386elf.h: Ditto.
6602         * config/i386/sysv4.h: Ditto.
6603
6604         * config/i386/i386.c (TARGET_ASM_BYTE_OP): New define.
6605         * config/i386/i386.md (x86_sahf_1): Use ASM_BYTE instead of .byte.
6606         (*tls_global_dynamic_64): Ditto.
6607
6608 2009-07-31  Christian Bruel  <christian.bruel@st.com>
6609
6610         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
6611
6612 2009-07-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
6613
6614         * config/arm/arm.c (arm_arm_address_cost): Fix typo.
6615         Remove dead code for MINUS.
6616
6617 2009-07-31  Anthony Green  <green@moxielogic.com>
6618
6619         * config/moxie/moxie.c (moxie_expand_prologue): Use $r5 instead of
6620         $r12 in prologue.
6621         (moxie_expand_epilogue): Ditto for epilogue.
6622         (moxie_setup_incoming_varargs): ABI change.  Use 5 registers for
6623         incoming arguments.
6624         (moxie_function_arg): Ditto.
6625         (moxie_pass_by_reference): Ditto.
6626         (moxie_arg_partial_bytes): Ditto.
6627         * config/moxie/moxie.h (CALL_USED_REGISTERS): Ditto.
6628         (FUNCTION_ARG_ADVANCE) Ditto.
6629         (REG_PARM_STACK_SPACE) Ditto.
6630         (FUNCTION_ARG_REGNO_P) Dito.
6631
6632         * config.gcc: Add moxie linux config support.
6633         * gcc/config/moxie/uclinux.h: New file.
6634
6635 2009-07-31  DJ Delorie  <dj@redhat.com>
6636
6637         * config/sh/sh.md (UNSPECV_SP_SWITCH_B): New.
6638         (UNSPECV_SP_SWITCH_E): New.
6639         (sp_switch_1): Change to an unspec.
6640         (sp_switch_2): Change to an unspec.  Don't use post-inc when we
6641         replace $r15.
6642         * config/sh/sh.c (sh_expand_prologue): Use the constant pool to
6643         reference the new stack's address
6644
6645 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
6646
6647         * Makefile.in (OBJS-common): Added dependence on graphite-blocking.o,
6648         graphite-clast-to-gimple.o, graphite-dependences.o,
6649         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
6650         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o.
6651         (graphite-blocking.o,
6652         graphite-clast-to-gimple.o, graphite-dependences.o,
6653         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
6654         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o): New.
6655         * cfgloop.c (alloc_loop): Set loop->can_be_parallel to false.
6656         * cfgloop.h (struct loop): Add can_be_parallel field.
6657         * common.opt (fgraphite-identity): Moved up.
6658         (fgraphite-force-parallel): New flag.
6659         * graphite.c: Rewrite.
6660         * graphite.h: Rewrite.
6661         * passes.c (init_optimization_passes): Schedule a pass of DCE and LIM
6662         after Graphite.
6663         * toplev.c (graphite_out_file): New file descriptor.
6664         (graphite_in_file): New.
6665         (process_options): flag_graphite_force_parallel cannot be used without
6666         Graphite.
6667         * tree-ssa-loop.c: Include toplev.h.
6668         (gate_graphite_transforms): Enable flag_graphite for
6669         flag_graphite_force_parallel.
6670
6671 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
6672
6673         * ChangeLog.graphite: New.
6674         * graphite-blocking.c: New.
6675         * graphite-clast-to-gimple.c: New.
6676         * graphite-clast-to-gimple.h: New.
6677         * graphite-dependences.c: New.
6678         * graphite-dependences.h: New.
6679         * graphite-interchange.c: New.
6680         * graphite-poly.c: New.
6681         * graphite-poly.h: New.
6682         * graphite-ppl.c: New.
6683         * graphite-ppl.h: New.
6684         * graphite-scop-detection.c: New.
6685         * graphite-scop-detection.h: New.
6686         * graphite-sese-to-poly.c: New.
6687         * graphite-sese-to-poly.h: New.
6688         * sese.c: New.
6689         * sese.h: New.
6690
6691 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
6692
6693         * tree-chrec.c (evolution_function_right_is_integer_cst): New.
6694         * tree-chrec.h (evolution_function_right_is_integer_cst): Declared.
6695
6696 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
6697
6698         * tree-chrec.c (operator_is_linear): Handle BIT_NOT_EXPR.
6699         (scev_is_linear_expression): Return false if the evolution is not
6700         affine multivariate.
6701
6702 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
6703
6704         * tree-data-ref.c (graphite_find_data_references_in_stmt): New.
6705         * tree-data-ref.h (graphite_find_data_references_in_stmt): Declared.
6706
6707 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
6708
6709         * tree-data-ref.c (debug_data_references): New.
6710         (debug_data_reference): New.
6711         * tree-data-ref.h (debug_data_references): Declared.
6712         (debug_data_reference): Declared.
6713
6714 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
6715
6716         * tree-data-ref.c (stmt_simple_memref_p: Removed.
6717         * tree-data-ref.h (scop_p): Removed.
6718         (struct data_reference): Remove field scop.
6719         (DR_SCOP): Removed.
6720         (stmt_simple_memref_p): Removed.
6721
6722 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
6723
6724         * cfgloop.h (create_empty_loop_on_edge): Pass an extra argument.
6725         * cfgloopmanip.c (create_empty_loop_on_edge): Leave the loop_latch
6726         basic block empty.
6727
6728 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
6729
6730         * doc/invoke.texi (-fgraphite-force-parallel): Documented.
6731
6732 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
6733
6734         * doc/invoke.texi (-fgraphite-identity): Documented.
6735
6736 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
6737
6738         * tree-scalar-evolution.c: Fix comment.
6739         (instantiate_scev_1): Return unknow from scev instantiation if the
6740         result is not above instantiate_below.
6741
6742 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
6743
6744         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop): Not
6745         static anymore.  Instantiate the symbols that may have been introduced
6746         by chrec_apply.
6747         * tree-scalar-evolution.h (compute_overall_effect_of_inner_loop):
6748         Declared.
6749
6750 2009-07-30  DJ Delorie  <dj@redhat.com>
6751
6752         * config/mep/mep.c (mep_asm_init_sections): Add section flags and
6753         .vliw directive to VLIW sections.
6754
6755 2009-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
6756
6757         * Makefile.in (AUTOCONF, ACLOCAL, ACLOCAL_AMFLAGS, aclocal_deps):
6758         New variables.
6759         ($(srcdir)/configure, $(srcdir)/aclocal.m4): New rules.
6760         (AUTOHEADER): New variable.
6761         ($(srcdir)/cstamp-h.in): Use it.
6762
6763 2009-07-30  Michael Meissner  <meissner@linux.vnet.ibm.com>
6764             Pat Haugen  <pthaugen@us.ibm.com>
6765             Revital Eres <ERES@il.ibm.com>
6766
6767         * config/rs6000/vector.md (VEC_F): Add VSX support.
6768         (VEC_A): Ditto.
6769         (VEC_N): Ditto.
6770         (mov<mode>): Ditto.
6771         (vector_load_<mode>): Ditto.
6772         (vector_store_<mode>): Ditto.
6773         (vector GPR move split): Ditto.
6774         (vec_reload_and_plus_<mptrsize>): Ditto.
6775         (vec_reload_and_reg_<mptrsize>): Ditto.
6776         (add<mode>3): Ditto.
6777         (sub<mode>3): Ditto.
6778         (mul<mode>3): Ditto.
6779         (neg<mode>2): Ditto.
6780         (abs<mode>2): Ditto.
6781         (smin<mode>3): Ditto.
6782         (smax<mode>3): Ditto.
6783         (vector_eq<mode>): Ditto.
6784         (vector_gt<mode>): Ditto.
6785         (vector_ge<mode>): Ditto.
6786         (vector_gtu<mode>): Ditto.
6787         (vector_select_<mode>_uns): Ditto.
6788         (vector_eq_<mode>_p): Ditto.
6789         (vector_gt_<mode>_p): Ditto.
6790         (vector_ge_<mode>_p): Ditto.
6791         (vector_gtu_<mode>_p): Ditto.
6792         (cr6_test_for_zero): Ditto.
6793         (cr6_test_for_zero_reverse): Ditto.
6794         (cr6_test_for_lt): Ditto.
6795         (cr6_test_for_lt_reverse): Ditto.
6796         (xor<mode>3): Ditto.
6797         (ior<mode>3): Ditto.
6798         (and<mode>3): Ditto.
6799         (one_cmpl<mode>2): Ditto.
6800         (nor<mode>2): Ditto.
6801         (andc<mode>2): Ditto.
6802         (float<VEC_int<mode>2): Ditto.
6803         (unsigned_float<VEC_int><mode>2): Ditto.
6804         (fix_trunc<mode><VEC_int>2): Ditto.
6805         (fixuns_trunc<mode><VEC_int>2): Ditto.
6806         (vec_init<mode>):
6807         (vec_set<mode>): Ditto.
6808         (vec_extract<mode>): Ditto.
6809         (vec_interleave_highv4sf): Ditto.
6810         (vec_interleave_lowv4sf): Ditto.
6811         (vec_realign_load_<mode>): Ditto.
6812         (vec_shl_<mode>): Ditto.
6813         (vec_shr_<mode>): Ditto.
6814         (div<mode>3): New patterns for VSX.
6815         (vec_interleave_highv2df): Ditto.
6816         (vec_interleave_lowv2df): Ditto.
6817         (vec_pack_trunc_v2df): Ditto.
6818         (vec_pack_sfix_trunc_v2df): Ditto.
6819         (vec_pack_ufix_trunc_v2df): Ditto.
6820         (vec_unpacks_hi_v4sf): Ditto.
6821         (vec_unpacks_lo_v4sf): Ditto.
6822         (vec_unpacks_float_hi_v4si): Ditto.
6823         (vec_unpacks_float_lo_v4si): Ditto.
6824         (vec_unpacku_float_hi_v4si): Ditto.
6825         (vec_unpacku_float_lo_v4si): Ditto.
6826         (movmisalign<mode>): Ditto.
6827         (vector_ceil<mode>2): New patterns for vectorizing math library.
6828         (vector_floor<mode>2): Ditto.
6829         (vector_btrunc<mode>2): Ditto.
6830         (vector_copysign<mode>3): Ditto.
6831
6832         * config/rs6000/predicates.md (easy_vector_constant_msb): New
6833         predicate for setting the high bit in each word, used for copysign.
6834
6835         * config/rs6000/ppc-asm.h (f19): Whitespace.
6836         (f32-f63): Define if VSX.
6837         (v0-v31): Define if Altivec.
6838         (vs0-vs63): Define if VSX.
6839
6840         * config/rs6000/t-rs6000 (MD_INCLUDES): Add power7.md and vsx.md.
6841
6842         * config/rs6000/power7.md: New file, provide tuning parameters for
6843         -mcpu=power7.
6844
6845         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Add VSX support.
6846         (rs6000_cpu_cpp_builtins): Ditto.
6847         (altivec_overloaded_builtins): Ditto.
6848         (altivec_resolve_overloaded_builtin): Ditto.
6849
6850         * config/rs6000/rs6000.opt (-mno-vectorize-builtins): Add new
6851         debug switch to disable vectorizing simple math builtin
6852         functions.
6853
6854         * config/rs6000/rs6000.c (rs6000_builtin_vectorized_function):
6855         Vectorize simple math builtin functions.
6856         (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define target
6857         hook to vectorize math builtins.
6858         (rs6000_override_options): Enable -mvsx on -mcpu=power7.
6859         (rs6000_builtin_conversion): Add VSX/power7 support.
6860         (rs6000_builtin_vec_perm): Ditto.
6861         (vsplits_constant): Add support for loading up a vector constant
6862         with just the high bit set in each part.
6863         (rs6000_expand_vector_init): Add VSX/power7 support.
6864         (rs6000_expand_vector_set): Ditto.
6865         (rs6000_expand_vector_extract): Ditto.
6866         (rs6000_emit_move): Ditto.
6867         (bdesc_3arg): Ditto.
6868         (bdesc_2arg): Ditto.
6869         (bdesc_1arg): Ditto.
6870         (rs6000_expand_ternop_builtin): Ditto.
6871         (altivec_expand_builtin): Ditto.
6872         (rs6000_expand_unop_builtin): Ditto.
6873         (rs6000_init_builtins): Ditto.
6874         (altivec_init_builtins): Ditto.
6875         (builtin_function_type): Ditto.
6876         (rs6000_common_init_builtins): Ditto.
6877         (rs6000_handle_altivec_attribute); Ditto.
6878         (rs6000_mangle_type): Ditto.
6879         (rs6000_vector_mode_supported_p): Ditto.
6880         (rs6000_mode_dependent_address): Altivec addresses with AND -16
6881         are mode dependent.
6882
6883         * config/rs6000/vsx.md: New file for VSX support.
6884
6885         * config/rs6000/rs6000.h (EASY_VECTOR_MSB): New macro for
6886         identifing values with just the most significant bit set.
6887         (enum rs6000_builtins): Add builtins for VSX.  Add simple math
6888         vectorized builtins.
6889
6890         * config/rs6000/altivec.md (UNSPEC_VRFIP): Delete.
6891         (UNSPEC_VRFIM): Delete.
6892         (splitter for loading up vector with most significant bit): New
6893         splitter for vectorizing copysign.
6894         (altivec_vrfiz): Rename from altivec_fturncv4sf2.  Add support for
6895         vectorizing simple math functions.
6896         (altivec_vrfip): Add support for vectorizing simple math functions.
6897         (altivec_vrfim): Ditto.
6898         (altivec_copysign_v4sf3): New insn for Altivec copysign support.
6899
6900         * config/rs6000/rs6000.md (UNSPEC_BPERM): New constant.
6901         (power7.md, vsx.md): Include for power7 support.
6902         (copysigndf3): Use VSX instructions if -mvsx.
6903         (negdf2_fpr): Ditto.
6904         (absdf2_fpr): Ditto.
6905         (nabsdf2_fpr): Ditto.
6906         (adddf3_fpr): Ditto.
6907         (subdf3_fpr): Ditto.
6908         (muldf3_fpr): Ditto.
6909         (divdf3_fpr): Ditto.
6910         (fix_truncdfdi2_fpr): Ditto.
6911         (cmpdf_internal1): Ditto.
6912         (fred, fred_fpr): Convert into expander/insn to add VSX support.
6913         (btruncdf2, btruncdf2_fpr): Ditto.
6914         (ceildf2, ceildf2_fpr): Ditto.
6915         (floordf2, floordf2_fpr): Ditto.
6916         (floatdidf2, floatdidf2_fpr): Ditto.
6917         (fmadddf4_fpr): Name insn.  Use VSX instructions if -mvsx.
6918         (fmsubdf4_fpr): Ditto.
6919         (fnmadddf4_fpr_1): Ditto.
6920         (fnmadddf4_fpr_2): Ditto.
6921         (fnmsubdf4_fpr_1): Ditto.
6922         (fnmsubdf4_fpr_2): Ditto.
6923         (fixuns_truncdfdi2): Add expander for VSX support.
6924         (fix_truncdfdi2): Ditto.
6925         (fix_truncdfsi2): Ditto.
6926         (ftruncdf2): Ditto.
6927         (btruncsf2): Whitespace.
6928         (movdf_hardfloat32): Add support for VSX registers.
6929         (movdf_softfloat32): Ditto.
6930         (movdf_hardfloat64): Ditto.
6931         (movdf_hardfloat64_mfpgpr): Ditto.
6932         (movdf_softfloat64): Ditto.
6933         (movti splitters): Add check for vector registers supporting
6934         TImode in the future.
6935         (bpermd): Add power7 bpermd instruction.
6936
6937         * config/rs6000/altivec.h (vec_div): Define if VSX.
6938         (vec_mul): Ditto.
6939         (vec_msub): Ditto.
6940         (vec_nmadd): Ditto.
6941         (vec_nearbyint): Ditto.
6942         (vec_rint): Ditto.
6943         (vec_sqrt): Ditto.
6944         (all predicates): Use the generic builtin function, and not the V4SF
6945         specific function so that the predicates will work with VSX's V2DF.
6946         (vec_all_*): Ditto.
6947         (vec_any_*): Ditto.
6948
6949         * doc/extend.texi (PowerPC Altivec/VSX Built-in Functions):
6950         Document new VSX functions and types.
6951
6952         * doc/invoke.texi (PowerPc options): Document -mpopcntd, -mvsx
6953         switches.
6954
6955         * doc/md.texi (PowerPC constraints): Document "wd", "wf", "ws",
6956         "wa", and "j" constraints.  Modify "v" to talk about Altivec
6957         instead of just vector.
6958
6959 2009-07-30  Andrew MacLeod  <amacleod@redhat.com>
6960
6961         PR debug/26475
6962         * tree-into-ssa.c (insert_phi_nodes_for, rewrite_add_phi_arguments): Set
6963         location for phi arguments.
6964         (rewrite_update_phi_arguments): Find locations for reaching defs.
6965         * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis):
6966         Add location to add_phi_arg calls.
6967         * tree-loop-districbution.c (update_phis_for_loop_copy): Add locations.
6968         * tree-ssa-loop-manip.c (create_iv, add_exit_phis_edge,
6969         split_loop_exit_edge, tree_transform_and_unroll_loop): Add locations.
6970         * tree-tailcall.c (add_successor_phi_arg, eliminate_tail_call,
6971         create_tailcall_accumulator, tree_optimize_tail_calls_1): Add locations.
6972         * tree.h (struct phi_arg_d): Add location_t to PHI arguments.
6973         * tree-phinodes.c (make_phi_node): Initialize location.
6974         (resize_phi_node): Initialize location to UNKNOWN_LOCATION.
6975         (add_phi_arg): Add location parameter.
6976         (remove_phi_arg_num): Move location when moving phi argument.
6977         * omp-low.c (expand_parallel_call, expand_omp_for_static_chunk): Set
6978         location.
6979         * tree-vect-loop-manip.c (slpeel_update_phis_for_duplicate_loop,
6980         slpeel_update_phi_nodes_for_guard1,
6981         slpeel_update_phi_nodes_for_guard2,
6982         slpeel_tree_duplicate_loop_to_edge_cfg, set_prologue_iterations,
6983         vect_loop_versioning): Set locations.
6984         * tree-parloops.c (create_phi_for_local_result,
6985         transform_to_exit_first_loop, create_parallel_loop): Add locations.
6986         * gimple-pretty-print.c (dump_gimple_phi): Dump lineno's if present.
6987         * tree-vect-loop.c (get_initial_def_for_induction,
6988         vect_create_epilog_for_reduction, vect_finalize_reduction): Add
6989         locations.
6990         * tree-flow-inline.h (gimple_phi_arg_location): New.  Return locus.
6991         (gimple_phi_arg_location_from_edge): New.  Return locus from an edge.
6992         (gimple_phi_arg_set_location): New.  Set locus.
6993         (gimple_phi_arg_has_location): New.  Check for locus.
6994         (redirect_edge_var_map_location): New.  Return locus from var_map.
6995         * tree-vect-data-refs.c (vect_setup_realignment): Set location.
6996         * tree-ssa-phiopt.c (conditional_replacement): Set locus when
6997         combining PHI arguments.
6998         (cond_store_replacement): Set location.
6999         * cfgexpand.c (gimple_assign_rhs_to_tree): Transfer locus if possible.
7000         * grpahite.c (add_loop_exit_phis, add_guard_exit_phis,
7001         scop_add_exit_phis_edge): Add locations.
7002         * tree-cfgcleanup.c (remove_forwarder_block,
7003         remove_forwarder_block_with_phi): Add locations.
7004         * tree-ssa-pre.c (insert_into_preds_of_block): Add locations.
7005         * tree-predcom.c (initialize_root_vars, initialize_root_vars_lm): Add
7006         locations.
7007         * tree-ssa-dce.c (forward_edge_to_pdom): Add locations.
7008         * tree-ssa.c (redirect_edge_var_map_add, ssa_redirect_edge,
7009         flush_pending_stmts): Add source location.
7010         * lambda-code.c (perfect_nestify): Maintain location stack with argument
7011         stack to preserve locations.
7012         * tree-vect-stmts.c (vectorizable_load): Add location.
7013         * tree-inline.c (copy_phis_for_bb): Copy locus.
7014         (setup_one_parameter): Add call locus to inlined parameter stmts.
7015         (initialize_inlined_parameters): Pass in call location as parameter
7016         assignment locus.
7017         (tree_function_versioning): Pass location to setup_one_parameter.
7018         * tree-ssa-phiprop.c (phiprop_insert_phi): Set locations.
7019         * tree-outof-ssa.c (struct _elim_graph): Add source_location vecs for
7020         copy and edge lists.
7021         (insert_partition_copy_on_edge, insert_value_copy_on_edge,
7022         insert_rtx_to_part_on_edge, insert_part_to_rtx_on_edge): Provide a
7023         locus parameter and override the stmt default if provided.
7024         (new_elim_graph, clear_elim_graph, delete_elim_graph,
7025         elim_graph_add_edge, elim_graph_remove_succ_edge,
7026         FOR_EACH_ELIM_GRAPH_SUCC, FOR_EACH_ELIM_GRAPH_PRED, eliminate_build,
7027         elim_forward, elim_unvisited_predecessor, elim_backward, elim_create,
7028         eliminate_phi):  Add locus info in elimination graph for each edge and
7029         value copy.
7030         (insert_backedge_copies): Copy locus if present.
7031         * tree-flow.h (struct _edge_var_map): Add locus field.
7032         * tree-switch_conversions.c (fix_phi_nodes): Add locations.
7033         * tree-cfg.c (reinstall_phi_args, gimple_make_forwarder_block,
7034         add_phi_args_after_copy_edge, gimple_lv_adjust_loop_header_phi): Add
7035         locations.
7036         * ipa-struct-reorg.c (make_edge_and_fix_phis_of_dest): Add locations.
7037
7038 2009-07-30  Martin Jambor  <mjambor@suse.cz>
7039
7040         PR tree-optimization/40570
7041         * ipa-inline.c (cgraph_decide_inlining): Watch out for dead single
7042         use inlining loops.
7043
7044 2009-07-30  Razya Ladelsky <razya@il.ibm.com>
7045
7046         * ssa-loop-manip.c: Include langhooks.h.
7047         (rewrite_phi_with_iv): New.
7048         (rewrite_all_phi_nodes_with_iv): New.
7049         (canonicalize_loop_ivs): Move here from tree-parloops.c.
7050         Remove reduction_list argument. Use rewrite_all_phi_nodes_with_iv.
7051         * tree-parloops.c (loop_parallel_p): Move out all conditions
7052         except dependency check.
7053         (canonicalize_loop_ivs): Move to tree-ssa-loop-manip.c.
7054         (gen_parallel_loop): Call canonicalize_loop_ivs without
7055         reduction_list argument.
7056         (build_new_reduction): New.
7057         (gather_scalar_reductions): New.
7058         (try_get_loop_niter): New.
7059         (try_create_reduction_list): New.
7060         (parallleize_loops): Change the parallel conditions check.
7061         * tree-flow.h (canonicalize_loop_ivs): Remove one argument.
7062         * Makefile.in (tree-ssa-loop-manip.o): Add langhooks.h dependency.
7063
7064 2009-07-30  Dave Korn  <dave.korn.cygwin@gmail.com>
7065
7066         * opt-functions.awk (opt_args): Allow argument to be enclosed in
7067         curly braces.
7068         * doc/options.texi (Option properties):  Mention new quoting syntax.
7069
7070 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
7071
7072         * config/alpha/alpha.c (alpha_start_function):
7073         Handle VMS_DEBUG_MAIN_POINTER
7074         * config/alpha/vms.h (VMS_DEBUG_MAIN_POINTER): Define new macro.
7075         * doc/invoke.texi: Document -mdebug-main switch.
7076
7077 2009-07-29  Richard Henderson  <rth@redhat.com>
7078
7079         * cgraph.c (cgraph_set_call_stmt_including_clones): Tidy.
7080         (cgraph_create_edge_including_clones): Likewise.
7081         * tree-inline.c (copy_bb): Operate on the correct edges
7082         when updating the callgraph.
7083
7084 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
7085
7086         * config/alpha/vms-cc.c: Deleted.
7087         * config/alpha/vms-ld.c: Deleted.
7088         * config/alpha/t-vms64: Moved to config/vms
7089         * config/alpha/vms-crt0-64.c: Moved to config/vms
7090         * config/alpha/vms-crt0.c: Moved to config/vms
7091         * config/alpha/vms-psxcrt0-64.c: Moved to config/vms
7092         * config/alpha/vms-psxcrt0.c: Moved to config/vms
7093         * config/alpha/xm-vms.h: Moved to config/vms
7094         * config/alpha/x-vms: Moved to config/vms
7095         * config/alpha/t-vms (vcrt0.o, pcrt0.o): Move rules to new file
7096         config/vms/t-vms.
7097         * config/vms/t-vms: Moved here from config/alpha. Alpha specific
7098         parts removed. (STMP_FIXPROTO, STMP_FIXINC, LIMITS_H_TEST): Set.
7099         (version): Set.
7100         * config/vms/t-vms64: Moved here from config/alpha
7101         * config/vms/vms-crt0-64.c: Moved here from config/alpha.
7102         (argc,argv,envp): Enforce 32bit malloc'ing.
7103         * config/vms/vms-psxcrt0-64.c: Likewise.
7104         * config/vms/vms-crt0.c: Moved here from config/alpha.
7105         * config/vms/vms-psxcrt0.c: Likewise.
7106         * config/vms/vms-crtl-64.h: New file.
7107         * config/vms/vms-crtl.h: New file.
7108         * config/vms/vms.opt: New file.
7109         * config/vms/xm-vms64.h: New file.
7110         * config/vms/xm-vms.h: Moved here from config/alpha.
7111         (STANARD_EXEC_PREFIX, STANDARD_STARTFILE_PREFIX, STANDARD_INCLUDE_DIR):
7112         Set.
7113         * config/vms/x-vms: Moved here from config/alpha.
7114         (version, VMS_EXTRA_PARTS): Moved to t-vms.
7115         (vms-ld.o, vms-cc.o): Removed.
7116         (LN, LN_S, USE_COLLECT2, POD2MAN): Set.
7117
7118 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
7119
7120         * dwarf2out.c (add_name_and_src_coords_attributes): Push on the
7121         correct stack (obvious VMS fix).
7122
7123 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
7124
7125         * dwarf2out.c (output_file_names): Output VMS style file name, size,
7126         date, version info if VMS_DEBUGGING_INFO defined.
7127         * vmsdgbout.c (vms_file_stats_name): New functon. VMS style file name,
7128         size, date calculating code moved here.
7129
7130 2009-07-29  Paul Brook  <paul@codesourcery.com>
7131
7132         * config/arm/lib1funcs.asm (clear_cache): Use ARM_FUNC_START and
7133         do_push/do_pop.
7134
7135 2009-07-29  Uros Bizjak  <ubizjak@gmail.com>
7136
7137         PR target/40577
7138         * config/alpha/alpha.c (alpha_expand_unaligned_store): Convert src
7139         to DImode when generating insq_le insn.
7140
7141 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
7142
7143         * dwarf2out.c (DWARF2_INDIRECT_STRING_SUPPORT_MISSING_ON_TARGET):
7144         New macro set for VMS_DEBUGGGING_INFO.
7145         (AT_string_form): Use it.
7146
7147 2009-07-28  DJ Delorie  <dj@redhat.com>
7148
7149         * config/mep/mep.c (vtext_section): New.
7150         (vftext_section): New.
7151         (ftext_section): New.
7152         (mep_select_section): Add support for functions.
7153         (mep_unique_section): Likewise.
7154         (mep_asm_init_sections): Likewise.
7155         (mep_encode_section_info): Remove it from here.
7156
7157         * config/mep/mep.h (USE_SELECT_SECTION_FOR_FUNCTIONS): Define.
7158
7159 2009-07-28  Paolo Bonzini  <bonzinI@gnu.org>
7160
7161         * tree.h (TREE_DEPRECATED): Document it is used for types too.
7162         (TYPE_VECTOR_OPAQUE): Use default_def_flag
7163
7164 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
7165
7166         * dwarf2out.c (output_file_names): Test new macro
7167         DWARF2_DIR_SHOULD_END_WITH_SEPARATOR.
7168         (add_comp_dir_attribute): Likewise.
7169
7170 2009-07-28  Kai Tietz  <kai.tietz@onevision.com>
7171
7172         * config/i386/mingw-w64.h (LINK_SPEC): Add
7173         separating space between commands.
7174
7175 2009-07-28  Jan Hubicka  <jh@suse.cz>
7176
7177         PR tree-optimization/40759
7178         * tree-ssa-dce.c (mark_virtual_phi_result_for_renaming): Mark all uses
7179         for renaming.
7180
7181 2009-07-27  DJ Delorie  <dj@redhat.com>
7182
7183         * config/mep/mep.c (mep_expand_builtin_saveregs): Make sure 64-bit
7184         types are dword-aligned.
7185         (mep_expand_va_start): Likewise.
7186
7187 2009-07-27  Olivier Hainque  <hainque@adacore.com>
7188             Douglas B Rupp  <rupp@gnat.com>
7189
7190         * convert.c (convert_to_pointer): Don't assume the target
7191         pointer type is POINTER_SIZE long. Fetch its precision instead.
7192
7193 2009-07-27  Douglas B Rupp  <rupp@gnat.com>
7194
7195         * system.h (fopen): Undefine if macro.
7196
7197 2009-07-27  Jakub Jelinek  <jakub@redhat.com>
7198
7199         * dwarf2out.c (output_cfi_p): Removed.
7200         (output_cfis): New function.
7201         (output_fde): New function, split from output_call_frame_info.
7202         (output_call_frame_info): Use it.
7203         (dwarf2out_switch_text_section): Use output_cfis.
7204
7205 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
7206
7207         * config/i386/cygming.h (DWARF2_UNWIND_INFO): Error build when
7208         TARGET_BI_ARCH is specified without enabling SJLJ.
7209         * config/i386/mingw32.h (MD_UNWIND_SUPPORT): Define MD_UNWIND_SUPPORT,
7210         if TARGET_64BIT and TARGET_BI_ARCH aren't defined.
7211
7212 2009-07-26  Mikael Pettersson <mikpe@it.uu.se>
7213
7214         * arm.md (negdi2): Use DImode if forcing a value into a register.
7215
7216 2009-07-26  Ira Rosen  <irar@il.ibm.com>
7217
7218         PR tree-optimization/40801
7219         * tree-vect-stmts.c (vectorizable_call): Get previous copy
7220         of vector operand from the previous copy of vector statement.
7221         Pass the correct definition type value to
7222         vect_get_vec_def_for_stmt_copy().
7223
7224 2009-07-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7225
7226         * collect2.c (scan_libraries): Use CONST_CAST2 to perform char ** to
7227         const char ** conversion.
7228
7229 2009-07-25 David Daney <ddaney@caviumnetworks.com>
7230
7231         * system.h (gcc_assert): Invoke __builtin_unreachable() instead of
7232         fancy_abort() if !ENABLE_ASSERT_CHECKING.
7233         (gcc_unreachable): Invoke __builtin_unreachable() if
7234         !ENABLE_ASSERT_CHECKING.
7235
7236 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
7237
7238         PR rtl-optimization/40445
7239         * emit-rtl.c (next_nonnote_insn_bb): New function.
7240         * rtl.h (next_nonnote_insn_bb): Declare new function.
7241         * cfgcleanup.c (try_optimize_cfg): Don't remove an empty block
7242         with no successors that is the successor of the ENTRY_BLOCK.
7243         Continue from the top after removing an empty fallthrough block.
7244         * cfgrtl.c (get_last_bb_insn): Call next_nonnote_insn_bb instead
7245         of next_nonnote_insn.
7246
7247 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
7248
7249         * cfgcleanup.c (old_insns_match_p): Handle the case of empty blocks.
7250
7251 2009-07-25  Martin Jambor  <mjambor@suse.cz>
7252
7253         * c-common.c (c_common_attribute_table): New element for noclone.
7254         (handle_noclone_attribute): New function. Forward-declare.
7255         * tree-inline.c (tree_versionable_function_p): Check for noclone
7256         attribute.
7257         * doc/extend.texi (Labels as Values): Document need for noclone.
7258         (Function Attributes): Document noclone attribute.
7259
7260 2009-07-25  Jakub Jelinek  <jakub@redhat.com>
7261
7262         PR rtl-optimization/34999
7263         * dwarf2out.c (struct dw_fde_struct): Add dw_fde_switch_cfi
7264         and dw_fde_switched_cold_to_hot fields.
7265         (output_cfi_p): New function.
7266         (output_call_frame_info): If fde->dw_fde_switched_sections,
7267         output 2 FDEs instead of one with corrupted header.
7268         (dwarf2out_do_cfi_startproc): New function.
7269         (dwarf2out_begin_prologue): Use it.  Initialize fde->dw_fde_switch_cfi
7270         and fde->dw_fde_switched_cold_to_hot.
7271         (dwarf2out_switch_text_section): Compute
7272         fde->dw_fde_switched_cold_to_hot.  Switch to new text section here.
7273         If dwarf2out_do_cfi_asm, emit .cfi_endproc before it and call
7274         dwarf2out_do_cfi_startproc plus emit again currently active CFI insns.
7275         Otherwise, compute fde->dw_fde_switch_cfi.
7276
7277 2009-07-24  Cary Coutant  <ccoutant@google.com>
7278
7279         * tree-cfg.c (assign_discriminator): Add explicit parentheses.
7280
7281 2009-07-24  Cary Coutant  <ccoutant@google.com>
7282
7283         * cfghooks.c (split_block): Copy discriminator to new block.
7284         * tree-cfg.c (assign_discriminator): Check location of last
7285         instruction in block as well as first.
7286
7287 2009-07-24  Uros Bizjak  <ubizjak@gmail.com>
7288
7289         * config/i386/linux.c: Use fputs or putc instead of fprintf
7290         where appropriate.
7291         * config/i386/gas.h: Ditto.
7292         * config/i386/x86-64.h: Ditto.
7293         * config/i386/att.h: Ditto.
7294
7295 2009-07-24  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
7296
7297         * expmed.c (emit_store_flag): Use a recursive call to optimize the
7298         xor case.
7299
7300 2009-07-24  Martin Jambor  <mjambor@suse.cz>
7301
7302         * ipa-prop.h (struct ipa_node_params): New flag node_enqued.
7303         (ipa_push_func_to_list_1): Declare.
7304         (ipa_push_func_to_list): New function.
7305
7306         * ipa-prop.c (ipa_push_func_to_list_1): New function.
7307         (ipa_init_func_list): Call ipa_push_func_to_list_1.
7308         (ipa_push_func_to_list): Removed.
7309         (ipa_pop_func_from_list): Clear node_enqueued flag.
7310
7311 2009-07-24  Andreas Krebbel  <krebbel1@de.ibm.com>
7312
7313         * config/s390/s390.c (override_options): Default
7314         max-unrolled-insns to 100 for z10 tuning.
7315
7316 2009-07-24  Tobias Grosser  <grosser@fim.uni-passau.de>
7317
7318         * Makefile.in (TREE_DATA_REF_H, tree-vrp.o, tree-cfg.o, tree-if-conv.o
7319         tree-ssa-loop.o, tree-ssa-loop-niter.o, tree-ssa-loop-ivcanon.o,
7320         tree-ssa-loop-prefetch.o, tree-predcom.o, tree-affine.o,
7321         tree-scalar-evolution.o, tree-data-ref.o, tree-vect-loop.o,
7322         tree-vect-data-refs.o, tree-loop-linear.o, tree-loop-distribution.o
7323         tree-parloops.o, tree-pretty-printer.o, fold-const.o, tree-ssa-dce.o,
7324         lambda-code.o, params.o): Cleanup use of SCEV_H and TREE_DATA_REF_H.
7325
7326 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
7327
7328         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR): Remove and
7329         use default set in mingw32.h header.
7330         * config/i386/mingw32.h (STANDARD_INCLUDE_DIR): Use for 32-bit and
7331         64-bit /mingw/include path.
7332         (STANDARD_STARTFILE_PREFIX_1): Use for 32-bit and 64-bit /mingw/lib
7333         path.
7334
7335 2009-07-23  Neil Vachharajani  <nvachhar@google.com>
7336
7337         PR rtl-optimization/40209
7338         * loop-iv.c (iv_analysis_loop_init): Call df_note_add_problem.
7339
7340 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
7341
7342         * config/i386/i386.c: Use ASM_LONG instead of .long.  Concatenate
7343         ASM_LONG, LPREFIX, MCOUNT_NAME and PROFILE_COUNT_REGISTER strings
7344         with the rest of string where appropriate.  Use fputs or putc
7345         instead of fprintf where appropriate.
7346
7347 2009-07-22  Michael Meissner  <meissner@linux.vnet.ibm.com>
7348             Pat Haugen  <pthaugen@us.ibm.com>
7349             Revital Eres <ERES@il.ibm.com>
7350
7351         * config/rs6000/vector.md: New file.  Move most of the vector
7352         expander support here from altivec.md to allow for the VSX vector
7353         unit in the future.  Add support for secondary_reload patterns.
7354         Rewrite the patterns for vector comparison, and vector comparison
7355         predicate instructions so that the RTL expresses the desired
7356         behavior, instead of using unspec.
7357
7358         * config/rs6000/constraints.md ("f" constraint): Use
7359         rs6000_constraints to hold the precalculated register class.
7360         ("d" constraint): Ditto.
7361         ("wd" constraint): New constraint for VSX.
7362         ("wf" constraint): Ditto.
7363         ("ws" constraint): Ditto.
7364         ("wa" constraint): Ditto.
7365         ("wZ" constraint): Ditto.
7366         ("j" constraint): Ditto.
7367
7368         * config/rs6000/predicates.md (vsx_register_operand): New
7369         predicate for VSX.
7370         (vfloat_operand): New predicate for vector.md.
7371         (vint_operand): Ditto.
7372         (vlogical_operand): Ditto.
7373         (easy_fp_constant): If VSX, 0.0 is an easy constant.
7374         (easy_vector_constant): Add VSX support.
7375         (altivec_indexed_or_indirect_operand): New predicate for
7376         recognizing Altivec style memory references with AND -16.
7377
7378         * config/rs6000/rs6000.c (rs6000_vector_reload): New static global
7379         for vector secondary reload support.
7380         (rs6000_vector_reg_class): Delete, replacing it with
7381         rs6000_constraints.
7382         (rs6000_vsx_reg_class): Ditto.
7383         (rs6000_constraints): New array to hold the register classes of
7384         each of the register constraints that can vary at runtime.
7385         (builtin_mode_to_type): New static array for builtin function type
7386         creation.
7387         (builtin_hash_table): New static hash table for builtin function
7388         type creation.
7389         (TARGET_SECONDARY_RELOAD): Define target hook.
7390         (TARGET_IRA_COVER_CLASSES): Ditto.
7391         (rs6000_hard_regno_nregs_internal): If -mvsx, floating point
7392         registers are 128 bits if VSX memory reference instructions are used.
7393         (rs6000_hard_regno_mode_ok): For VSX, only check if the VSX memory
7394         unit is being used.
7395         (rs6000_debug_vector_unit): Move into rs6000_debug_reg_global.
7396         (rs6000_debug_reg_global): Move -mdebug=reg statements here.
7397         Print several of the scheduling related parameters.
7398         (rs6000_init_hard_regno_mode_ok): Switch to putting constraints in
7399         rs6000_constraints instead of rs6000_vector_reg_class.  Move
7400         -mdebug=reg code to rs6000_debug_reg_global.  Add support for
7401         -mvsx-align-128 debug switch.  Drop testing float_p if VSX or
7402         Altivec.  Add VSX support.  Setup for secondary reload support on
7403         Altivec/VSX registers.
7404         (rs6000_override_options): Make power7 set the scheduling groups
7405         like the power5.  Add support for new debug switches to override
7406         the scheduling defaults.  Temporarily disable -mcpu=power7 from
7407         setting -mvsx.  Add support for debug switches -malways-hint,
7408         -msched-groups, and -malign-branch-targets.
7409         (rs6000_buitlin_conversion): Add support for returning unsigned
7410         vector conversion functions to fix regressions due to stricter
7411         type checking.
7412         (rs6000_builtin_mul_widen_even): Ditto.
7413         (rs6000_builtin_mul_widen_odd): Ditto.
7414         (rs6000_builtin_vec_perm): Ditto.
7415         (rs6000_vec_const_move): On VSX, use xxlxor to clear register.
7416         (rs6000_expand_vector_init): Initial VSX support for using xxlxor
7417         to zero a register.
7418         (rs6000_emit_move): Fixup invalid const symbol_ref+reg that is
7419         generated upstream.
7420         (bdesc_3arg): Add builtins for unsigned types.  Add builtins for
7421         VSX types for bit operations.  Changes to accomidate vector.md.
7422         (bdesc_2arg): Ditto.
7423         (bdesc_1arg): Ditto.
7424         (struct builtin_description_predicates): Rewrite predicate
7425         handling so that RTL describes the operation, instead of passing
7426         the instruction to be used as a string argument.
7427         (bdesc_altivec_preds): Ditto.
7428         (altivec_expand_predicate_builtin): Ditto.
7429         (altivec_expand_builtin): Ditto.
7430         (rs6000_expand_ternop_builtin): Use a switch instead of an if
7431         statement for vsldoi support.
7432         (altivec_expand_ld_builtin): Change to use new names from vector.md.
7433         (altivec_expand_st_builtin): Ditto.
7434         (paired_expand_builtin): Whitespace changes.
7435         (rs6000_init_builtins): Add V2DF/V2DI types.  Initialize the
7436         builtin_mode_to_type table for secondary reload.  Call
7437         builtin_function_type to build random builtin functions.
7438         (altivec_init_builtins): Change to use builtin_function_type to
7439         create builtin function types dynamically as we need them.
7440         (builtin_hash_function): New support for hashing the tree types
7441         for builtin function as we need it, rather than trying to build
7442         all of the trees that we need.  Add initial preliminary VSX support.
7443         (builtin_function_type): Ditto.
7444         (builtin_function_eq): Ditto.
7445         (builtin_hash_struct): Ditto.
7446         (rs6000_init_builtins): Ditto.
7447         (rs6000_common_init_builtins): Ditto.
7448         (altivec_init_builtins): Ditto.
7449         (rs6000_common_init_builtins): Ditto.
7450         (enum reload_reg_type): New enum for simplifing reg classes.
7451         (rs6000_reload_register_type): Simplify register classes into GPR,
7452         Vector, and other registers.  Altivec and VSX addresses in reload.
7453         (rs6000_secondary_reload_inner): Ditto.
7454         (rs6000_ira_cover_classes): New target hook, that returns the
7455         appropriate cover classes, based on -mvsx being used or not.
7456         (rs6000_secondary_reload_class): Add VSX support.
7457         (get_vec_cmp_insn): Delete, rewrite vector conditionals.
7458         (get_vsel_insn): Ditto.
7459         (rs6000_emit_vector_compare): Rewrite vector conditional support
7460         so that where we can, we use RTL operators, instead of blindly use
7461         UNSPEC.
7462         (rs6000_emit_vector_select): Ditto.
7463         (rs6000_emit_vector_cond_expr): Ditto.
7464         (rs6000_emit_minmax): Directly generate min/max under altivec, vsx.
7465         (create_TOC_reference): Add -mdebug=addr support.
7466         (emit_frame_save): VSX loads/stores need register indexed addressing.
7467
7468         * config/rs6000/rs6000.md: Include vector.md.
7469
7470         * config/rs6000/t-rs6000 (MD_INCLUDES): Add vector.md.
7471
7472         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
7473         support for V2DI, V2DF in logical, permute, select operations.
7474
7475         * config/rs6000/rs6000.opt (-mvsx-scalar-double): Add new debug
7476         switch for vsx/power7.
7477         (-mvsx-scalar-memory): Ditto.
7478         (-mvsx-align-128): Ditto.
7479         (-mallow-movmisalign): Ditto.
7480         (-mallow-df-permute): Ditto.
7481         (-msched-groups): Ditto.
7482         (-malways-hint): Ditto.
7483         (-malign-branch-targets): Ditto.
7484
7485         * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Delete, use target
7486         hook instead.
7487         (IRA_COVER_CLASSES_PRE_VSX): Cover classes if not -mvsx.
7488         (IRA_COVER_CLASSES_VSX): Cover classes if -mvsx.
7489         (rs6000_vector_reg_class): Delete.
7490         (rs6000_vsx_reg_class): Ditto.
7491         (enum rs6000_reg_class_enum): New enum for the constraints that
7492         vary based on target switches.
7493         (rs6000_constraints): New array to hold the register class for all
7494         of the register constraints that vary based on the switches used.
7495         (ALTIVEC_BUILTIN_*_UNS): Add unsigned builtin functions.
7496         (enum rs6000_builtins): Add unsigned varients for the builtin
7497         declarations returned by target hooks for expanding multiplies,
7498         select, and permute operations.  Add VSX builtins.
7499         (enum rs6000_builtin_type_index): Add entries for VSX.
7500         (V2DI_type_node): Ditto.
7501         (V2DF_type_node): Ditto.
7502         (unsigned_V2DI_type_node): Ditto.
7503         (bool_long_type_node): Ditto.
7504         (intDI_type_internal_node): Ditto.
7505         (uintDI_type_internal_node): Ditto.
7506         (double_type_internal_node): Ditto.
7507
7508         * config/rs6000/altivec.md (whole file): Move all expanders to
7509         vector.md from altivec.md.  Rename insn matching functions to be
7510         altivec_foo.
7511         (UNSPEC_VCMP*): Delete, rewrite vector comparisons.
7512         (altivec_vcmp*): Ditto.
7513         (UNSPEC_VPERM_UNS): New, add for unsigned types using vperm.
7514         (VM): New iterator for moves that includes the VSX types.
7515         (altivec_vperm_<mode>): Add VSX types.  Add unsigned types.
7516         (altivec_vperm_<mode>_uns): New, for unsigned types.
7517         (altivec_vsel_*): Rewrite vector comparisons and predicate builtins.
7518         (altivec_eq<mode>): Ditto.
7519         (altivec_gt<mode>): Ditto.
7520         (altivec_gtu<mode>): Ditto.
7521         (altivec_eqv4sf): Ditto.
7522         (altivec_gev4sf): Ditto.
7523         (altivec_gtv4sf): Ditto.
7524         (altivec_vcmpbfp_p): Ditto.
7525
7526 2009-07-23  Richard Earnshaw  <rearnsha@arm.com>
7527
7528         * arm.md (split for ior/xor with shift and zero-extend): Cast op3 to
7529         unsigned HWI.
7530
7531 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
7532
7533         PR target/40832
7534         * config/i386/i386.c (output_387_ffreep): Rewrite to use
7535         ASM_SHORT instead of .word.
7536         * config/i386/i386.md (*tls_global_dynamic_64): Use ASM_SHORT
7537         instead of .word in asm template.
7538
7539 2009-07-22  Vladimir Makarov  <vmakarov@redhat.com>
7540
7541         PR target/37488
7542         * ira-lives.c (bb_has_abnormal_call_pred): New function.
7543         (process_bb_node_lives): Use it.
7544
7545         * ira.c (setup_cover_and_important_classes): Don't setup
7546         ira_important_class_nums.  Add cover classes to the end of
7547         important classes.
7548         (cover_class_order, comp_reg_classes_func, reorder_important_classes):
7549         New.
7550         (find_reg_class_closure): Use reorder_important_classes.
7551
7552         * config/i386/i386.h (IRA_COVER_CLASSES): Remove.
7553
7554         * config/i386/i386.c (i386_ira_cover_classes): New function.
7555         (TARGET_IRA_COVER_CLASSES): Redefine.
7556
7557         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Add a comment about
7558         importance of order of cover classes in the array.
7559
7560 2009-07-22  Diego Novillo  <dnovillo@google.com>
7561
7562         * tree-pass.h (TDF_EH): Define.
7563         * gimple-pretty-print.c (dump_gimple_stmt): If FLAGS
7564         contains TDF_EH, print the EH region number holding GS.
7565         * tree-dump.c (dump_options): Add "eh".
7566         * doc/invoke.texi: Document it.
7567
7568 2009-07-22  Doug Kwan  <dougkwan@google.com>
7569
7570         * config/arm/arm.md (subdi3) Copy non-reg values to DImode registers.
7571
7572 2009-07-22  Michael Matz  <matz@suse.de>
7573
7574         PR tree-optimization/35229
7575         PR tree-optimization/39300
7576
7577         * tree-ssa-pre.c (includes): Include tree-scalar-evolution.h.
7578         (inhibit_phi_insertion): New function.
7579         (insert_into_preds_of_block): Call it for REFERENCEs.
7580         (init_pre): Initialize and finalize scalar evolutions.
7581         * Makefile.in (tree-ssa-pre.o): Depend on tree-scalar-evolution.h .
7582
7583 2009-07-22  Uros Bizjak  <ubizjak@gmail.com>
7584
7585         * config/i386/predicates.md (zero_extended_scalar_load_operand):
7586         Use CONST_VECTOR_NUNITS to determine number of elements.
7587
7588 2009-07-22  Andreas Krebbel  <krebbel1@de.ibm.com>
7589
7590         * config/s390/constraints.md (ZQ, ZR, ZS, ZT): New constraints.
7591         (U, W): Constraints are now deprecated and will be removed if we
7592         run out of letters.
7593         * config/s390/s390.md (U, W): Replaced with ZQZR, ZSZT throughout
7594         the file.
7595         ("prefetch"): Add the stcmh instruction for prefetching.
7596         * config/s390/s390.c (s390_symref_operand_p): Function moved. No
7597         changes.
7598         (s390_short_displacement): Return always true if compiling for
7599         machines not providing the long displacement facility.
7600         (s390_mem_constraint): Support the new constraint letter Z.
7601         (s390_check_qrst_address): New function.
7602
7603 2009-07-21  DJ Delorie  <dj@redhat.com>
7604
7605         * config/mep/mep.c (mep_legitimize_arg): Leave control registers
7606         alone too.
7607
7608 2009-07-21  Jason Merrill  <jason@redhat.com>
7609
7610         * c-common.c (max_tinst_depth): Increase default to 1024.
7611
7612 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
7613
7614         * config/i386/sse.md (vec_unpacku_float_hi_v4si): New expander.
7615         (vec_unpacku_float_lo_v4si): Ditto.
7616
7617 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
7618
7619         PR target/40811
7620         * config/i386/sse.md (sse2_cvtudq2ps): New expander.
7621         (enum ix86_builtins): Add IX86_BUILTIN_CVTUDQ2PS.
7622         (builtin_description): Add __builtin_ia32_cvtudq2ps.
7623         (ix86_vectorize_builtin_conversion): Handle IX86_BUILTIN_CVTUDQ2PS.
7624
7625 2009-07-21  Jakub Jelinek  <jakub@redhat.com>
7626
7627         PR tree-optimization/40813
7628         * tree-inline.c (copy_bb): Regimplify RHS after last stmt, not before
7629         it.
7630
7631 2009-07-21  Kaz Kojima  <kkojima@gcc.gnu.org>
7632
7633         * config/sh/sh.c (sh_gimplify_va_arg_expr): Wrap the result
7634         with a NOP_EXPR if needed.
7635
7636 2009-07-21  Paul Brook <paul@codesourcery.com>
7637
7638         * tree-vectorizer.c (increase_alignment): Handle nested arrays.
7639         Terminate debug dump with newline.
7640
7641 2009-07-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7642
7643         * pa.c (compute_zdepwi_operands): Limit deposit length to 32 - lsb.
7644         Cast "1" to unsigned HOST_WIDE_INT.
7645         (compute_zdepdi_operands): Limit maximum length to 64 bits.  Limit
7646         deposit length to the maximum length - lsb.  Extend length if
7647         HOST_BITS_PER_WIDE_INT is 32.
7648
7649 2009-07-20  Olatunji Ruwase <tjruwase@google.com>
7650
7651         * cgraph.h (constant_pool_htab): New function.
7652         (constant_descriptor_tree): Move from varasm.c.
7653         * varasm.c (constant_pool_htab): New function.
7654         (constant_descriptor_tree): Move to cgraph.h.
7655
7656 2009-07-20  Olatunji Ruwase  <tjruwase@google.com>
7657
7658         * toplev.c: Invoke FINISH_UNIT callbacks before call to finalize().
7659
7660 2009-07-20  Shujing Zhao  <pearly.zhao@oracle.com>
7661
7662         * Makefile.in (TREE_INLINE_H, tree-inline.o, cgraph.o): Remove
7663         $(VARRAY_H).
7664
7665 2009-07-20  Xinliang David Li  <davidxl@google.com>
7666
7667         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add length check.
7668
7669 2009-07-20  Adam Nemet  <anemet@caviumnetworks.com>
7670
7671         * config/mips/mips.md (move_type): Add arith.
7672         (type): Handle arith.
7673         (zero_extendsidi2): Rename this into ...
7674         (*zero_extendsidi2): ... this.  Don't match if ISA_HAS_EXT_INS.
7675         (zero_extendsidi2): New expander.
7676         (*zero_extendsidi2_dext): New pattern.
7677
7678 2009-07-20  Nick Clifton  <nickc@redhat.com>
7679
7680         * config.gcc (mips64-*-*): Add definition of tm_defines in order
7681         to set MIPS_ABI_DEFAULT.
7682         * config/mips/vr.h (MIPS_ABI_DEFAULT): Remove definition.
7683
7684 2009-07-20  Jakub Jelinek  <jakub@redhat.com>
7685
7686         * tree-object-size.c (addr_object_size): Handle unions with
7687         array in it as last field of structs in __bos (, 1) as __bos (, 0).
7688
7689         PR tree-optimization/40792
7690         * tree.c (build_function_type_skip_args): Remove bogus assert.
7691
7692 2009-07-20  Jan Hubicka  <jh@suse.cz>
7693             Martin Jambor  <mjambor@suse.cz>
7694
7695         * cgraph.h (combined_args_to_skip): New field.
7696         * cgraph.c (cgraph_create_virtual_clone): Properly handle
7697         combined_args_to_skip and args_to_skip.
7698         * tree-inline.c (update_clone_info): New function.
7699         (tree_function_versioning): Call update_clone_info.
7700         * cgraphunit.c: (cgraph_materialize_clone): Dump materialized
7701         functions.
7702         (cgraph_materialize_all_clones): More extensive dumping, working
7703         with combined_args_to_skip rather than args_to_skip.
7704
7705 2009-07-20  Ira Rosen  <irar@il.ibm.com>
7706
7707         * tree-vectorizer.h (vectorizable_condition): Add parameters.
7708         * tree-vect-loop.c (vect_is_simple_reduction): Support COND_EXPR.
7709         (get_initial_def_for_reduction): Likewise.
7710         (vectorizable_reduction): Skip the check of first operand in case
7711         of COND_EXPR. Add check that it is outer loop vectorization if
7712         nested cycle was detected. Call vectorizable_condition() for
7713         COND_EXPR. If reduction epilogue cannot be created do not fail for
7714         nested cycles (if it is not double reduction). Assert that there
7715         is only one type in the loop in case of COND_EXPR. Call
7716         vectorizable_condition() to vectorize COND_EXPR.
7717         * tree-vect-stmts.c (vectorizable_condition): Update comment.
7718         Add parameters. Allow nested cycles if called from
7719         vectorizable_reduction(). Use reduction vector variable if provided.
7720         (vect_analyze_stmt): Call vectorizable_reduction() before
7721         vectorizable_condition().
7722         (vect_transform_stmt): Update call to vectorizable_condition().
7723
7724 2009-07-20  Christian Bruel  <christian.bruel@st.com>
7725
7726         * config/sh/sh.opt (-mfmovd): Resurrect and document.
7727         * doc/invoke.texi (-mfmovd): Likewise.
7728         * config/sh/sh.h (TARGET_FMOVD, MASK_FMOVD): Remove default setting.
7729
7730 2009-07-20  Jan Hubicka  <jh@suse.cz>
7731
7732         * tree-ssa-dce.c (remove_dead_phis): Only look for abnormal PHIs
7733         when handling SSA name.
7734
7735 2009-07-19  Jan Hubicka  <jh@suse.cz>
7736
7737         PR tree-optimization/40676
7738         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do renaming on all
7739         virtual PHIs in empty BBs.
7740
7741 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
7742
7743         * combine.c (make_compound_operation) <SUBREG>: If force_to_mode
7744         re-expanded the compound use gen_lowpart instead to convert to the
7745         desired mode.
7746
7747 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
7748
7749         * combine.c (try_widen_shift_mode): Add COUNT, OUTER_CODE and
7750         OUTER_CONST arguments.
7751         <LSHIFTRT>: Use them to allow widening if the bits shifted in from
7752         the new wider mode will be masked off.
7753         (simplify_shift_const_1): Adjust calls to try_widen_shift_mode.
7754
7755 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
7756
7757         * combine.c (try_widen_shift_mode) <LSHIFTRT>: Allow widening if the
7758         high-order bits are zero.
7759
7760 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
7761
7762         * combine.c (simplify_shift_const_1): Split code to determine
7763         shift_mode into ...
7764         (try_widen_shift_mode): ... here.  Allow widening for ASHIFTRT if the
7765         new bits shifted in are identical to the old sign bit.
7766
7767 2009-07-18  Richard Guenther  <rguenther@suse.de>
7768
7769         PR c/40787
7770         * gimplify.c (gimplify_call_expr): Reject code using results from
7771         functions returning void.
7772
7773 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
7774
7775         * doc/md.texi: Document the new PowerPC "es" constraint.
7776         Document that "m" can include automodified addresses on this target,
7777         and explain how %U must be used.  Extend the "Q" and "Z" documentation
7778         to suggest "es" as well as "m".
7779         * config/rs6000/constraints.md (es): New memory constraint.
7780         (Q, Z): Update strings to match new documentation.
7781
7782 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
7783
7784         * config/rs6000/rs6000.c (rs6000_mode_dependent_address): Allow any
7785         offset from virtual_stack_vars_rtx and arg_pointer_rtx.
7786         * config/rs6000/predicates.md (volatile_mem_operand): Use
7787         offsettable_nonstrict_memref_p.
7788         * config/rs6000/rs6000.md (*floatsidf2_internal): Remove split check.
7789         (*floatunssidf2_internal): Likewise.
7790         (*fix_truncdfsi2_internal): Likewise.
7791         (*fix_trunctfsi2_internal): Likewise.
7792
7793 2009-07-17  Anatoly Sokolov  <aesok@post.ru>
7794
7795         * config/avr/avr-devices.c (avr_mcu_t): Add atmega8u2, atmega16u2 and
7796         atmega32u2 devices.
7797         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
7798
7799 2009-07-17  Richard Guenther  <rguenther@suse.de>
7800
7801         PR c/40401
7802         * tree-pass.h (pass_diagnose_omp_blocks): Declare.
7803         (pass_warn_unused_result): Likewise.
7804         (TODO_set_props): Remove.
7805         * omp-low.c (diagnose_omp_structured_block_errors): Change to
7806         run as a pass.
7807         (pass_diagnose_omp_blocks): Define.
7808         * c-decl.c (pop_file_scope): Do not finalize the CU here.
7809         (c_gimple_diagnostics_recursively): Remove.
7810         (finish_function): Do not call it.
7811         (c_write_global_declarations): Continue after errors.
7812         Finalize the CU here.
7813         * c-gimplify.c (c_genericize): Do not gimplify here.
7814         * c-common.c (c_warn_unused_result): Move ...
7815         * tree-cfg.c (do_warn_unused_result): ... here.
7816         (run_warn_unused_result): New function.
7817         (gate_warn_unused_result): New function.
7818         (pass_warn_unused_result): New pass.
7819         * c-common.h (c_warn_unused_result): Remove.
7820         * flags.h (flag_warn_unused_result): Declare.
7821         * c-opts.c (c_common_init_options): Enable flag_warn_unused_result.
7822         * opts.c (flag_warn_unused_result): Initialize to false.
7823         * toplev.c (compile_file): Add comment.
7824         * omp-low.c (create_omp_child_function): Do not register
7825         the function with the frontend.
7826         (diagnose_omp_structured_block_errors): Prepare to be
7827         called as optimization pass.
7828         (gate_diagnose_omp_blocks): New function.
7829         (pass_diagnose_omp_blocks): New pass.
7830         * cgraph.h (cgraph_optimize): Remove.
7831         (cgraph_analyze_function): Likewise.
7832         * cgraph.c (cgraph_add_new_function): Gimplify C++ thunks.
7833         * cgraphunit.c (cgraph_lower_function): Lower nested functions
7834         before their parents here.
7835         (cgraph_finalize_function): Not here.
7836         (cgraph_analyze_function): Gimplify functions here.
7837         (cgraph_finalize_compilation_unit): Continue after errors.
7838         Optimize the callgraph from here.
7839         (cgraph_optimize): Make static.
7840         * langhooks.c (write_global_declarations): Finalize the CU.
7841         * gimplify.c (gimplify_asm_expr): Do not emit ASMs with errors.
7842         (gimplify_function_tree): Assert we gimplify only once.
7843         Set PROP_gimple_any property.
7844         * tree-nested.c (gimplify_all_functions): New function.
7845         (lower_nested_functions): Gimplify all nested functions.
7846         * gimple.h (diagnose_omp_structured_block_errors): Remove.
7847         * passes.c (init_optimization_passes): Add pass_warn_unused_result
7848         and pass_diagnose_omp_blocks after gimplification.  Do not
7849         set TODO_set_props on all_lowering_passes.
7850         (execute_one_pass): Do not handle TODO_set_props.
7851         * Makefile.in (cgraphunit.o): Add $(TREE_DUMP_H) dependency.
7852         (gimplify.o): Add tree-pass.h dependency.
7853         * tree-inline.c (copy_statement_list): Properly copy STATEMENT_LIST.
7854         (copy_tree_body_r): Properly handle TARGET_EXPR like SAVE_EXPR.
7855         (unsave_r): Likewise.
7856         * c-omp.c (c_finish_omp_atomic): Set DECL_CONTEXT on the
7857         temporary variable.
7858
7859 2009-07-17  Sandra Loosemore  <sandra@codesourcery.com>
7860
7861         * doc/service.texi (Service): Restore previously removed link,
7862         which isn't broken after all.
7863
7864 2009-07-17  Richard Guenther  <rguenther@suse.de>
7865
7866         PR tree-optimization/40321
7867         * tree-ssa-pre.c (add_to_exp_gen): Also add names defined by
7868         PHI nodes to the maximal set.
7869         (make_values_for_phi): Add PHI arguments to the maximal set.
7870         (execute_pre): Dump PHI_GEN and the maximal set.
7871
7872 2009-07-17  Jakub Jelinek  <jakub@redhat.com>
7873
7874         PR c++/40780
7875         * gimplify.c (gimplify_conversion): Don't change non-conversions into
7876         VIEW_CONVERT_EXPR.
7877
7878 2009-07-16  Sandra Loosemore  <sandra@codesourcery.com>
7879
7880         * doc/extend.texi (Nested Functions): Replace broken link with
7881         textual reference.
7882         * doc/service.texi (Service): Remove broken link.
7883
7884 2009-07-16  H.J. Lu  <hongjiu.lu@intel.com>
7885
7886         PR bootstrap/40781
7887         * builtins.c (expand_builtin_memcmp): Use loc instead of
7888         EXPR_LOCATION (exp).
7889         (expand_builtin_strncmp): Likewise.
7890
7891 2009-07-17  Aldy Hernandez  <aldyh@redhat.com>
7892             Manuel López-Ibáñez  <manu@gcc.gnu.org>
7893
7894         PR 40435
7895         * tree-complex.c, tree-loop-distribution.c, tree.c, tree.h,
7896         builtins.c, fold-const.c, omp-low.c, cgraphunit.c, tree-ssa-ccp.c,
7897         tree-ssa-dom.c, gimple-low.c, expr.c, tree-ssa-ifcombine.c,
7898         c-decl.c, stor-layout.c, tree-if-conv.c, c-typeck.c, gimplify.c,
7899         calls.c, tree-sra.c, tree-mudflap.c, tree-ssa-copy.c,
7900         tree-ssa-forwprop.c, c-convert.c, c-omp.c, varasm.c,
7901         tree-inline.c, c-common.c, c-common.h, gimple.c,
7902         tree-switch-conversion.c, gimple.h, tree-cfg.c, c-parser.c,
7903         convert.c: Add location argument to fold_{unary,binary,ternary},
7904         fold_build[123], build_call_expr, build_size_arg,
7905         build_fold_addr_expr, build_call_array, non_lvalue, size_diffop,
7906         fold_build1_initializer, fold_build2_initializer,
7907         fold_build3_initializer, fold_build_call_array,
7908         fold_build_call_array_initializer, fold_single_bit_test,
7909         omit_one_operand, omit_two_operands, invert_truthvalue,
7910         fold_truth_not_expr, build_fold_indirect_ref, fold_indirect_ref,
7911         combine_comparisons, fold_builtin_*, fold_call_expr,
7912         build_range_check, maybe_fold_offset_to_address, round_up,
7913         round_down.
7914
7915 2009-07-16  Jason Merrill  <jason@redhat.com>
7916
7917         PR libstdc++/37907
7918         * c-common.c (c_common_reswords): Add __is_standard_layout
7919         and __is_trivial.
7920         * c-common.h (enum rid): Add RID_IS_STD_LAYOUT and RID_IS_TRIVIAL.
7921         * doc/implement-cxx.texi: New.
7922         * doc/gcc.texi: Include it.
7923
7924 2009-07-16  DJ Delorie  <dj@redhat.com>
7925
7926         * config/m32c/m32c.c (m32c_compare_redundant): Avoid removing
7927         compares that may be indirectly affected by previous instructions.
7928
7929 2009-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7930
7931         * builtins.c (do_mpc_arg2): New.
7932         (fold_builtin_2): Fold builtin cpow.
7933         * real.h (HAVE_mpc_pow): New.
7934
7935 2009-07-16  Bingfeng Mei  <bmei@broadcom.com>
7936
7937         * modulo-sched.c (sms_schedule): stage_count <= 1 as correct
7938         comparison to skip unprofitable schedule
7939
7940 2009-07-16  Simon Baldwin  <simonb@google.com>
7941
7942         * gcc.c (option_map): New flag -no-canonical-prefixes.
7943         * (display_help): Print help text for new flag.
7944         * (process_command): Move options translation and language specifics
7945         and handle new flag early.  Use it to set a function pointer to a
7946         prefix builder.  Replace make_relative_prefix calls with calls to
7947         the function pointed to.  Ignore new flag in regular options handling.
7948         * doc/invoke.texi (Overall Options): Documented -no-canonical-prefixes.
7949
7950 2009-07-15  DJ Delorie  <dj@redhat.com>
7951
7952         * config/mep/mep.md (sibcall_internal): Change register to avoid
7953         argument registers.
7954         (sibcall_value_internal): Likewise.
7955
7956 2009-07-15  Eric Botcazou  <ebotcazou@adacore.com>
7957
7958         PR rtl-optimization/40710
7959         * resource.c (mark_target_live_regs): Reset DF problem to LR.
7960
7961 2009-07-15  Adam Nemet  <anemet@caviumnetworks.com>
7962
7963         * config/mips/mips.md (*extenddi_truncate<mode>,
7964         *extendsi_truncate<mode>): Change type attribute to move_type
7965         with shift_shift.  Split out code handling exts from here ...
7966         (*extend<GPR:mode>_truncate<SHORT:mode>_exts): ... to this new
7967         pattern.
7968         (*extendhi_truncateqi): Change type attribute to move_type with
7969         shift_shift.  Split out code handling exts from here ...
7970         (*extendhi_truncateqi_exts): ... to this new pattern.
7971
7972 2009-07-15  Uros Bizjak  <ubizjak@gmail.com>
7973
7974         * config/i386/sse.md (copysign<mode>3): Use "and-not" SSE instruction
7975         instead of "and" with inverted sign bit mask value.  Use
7976         "nonimmediate_operand" for operand 1 and operand 2 predicate.
7977         Allocate registers only for operand 4 and operand 5.
7978
7979 2009-07-15  Jakub Jelinek  <jakub@redhat.com>
7980
7981         PR middle-end/40747
7982         * fold-const.c (fold_cond_expr_with_comparison): When folding
7983         < and <= to MIN, make sure the MIN uses the same type as the
7984         comparison's operands.
7985
7986 2009-07-15  Richard Earnshaw  <rearnsha@arm.com>
7987
7988         * arm.md (ior_xor): New code iterator.
7989         (split for ior/xor with shift and zero-extend): New split pattern.
7990         * arm/predicates.md (subreg_lowpart_operator): New special predicate.
7991
7992 2009-07-15  Richard Guenther  <rguenther@suse.de>
7993
7994         * tree-ssa-structalias.c (make_constraint_from_heapvar): Initialize
7995         offset member.
7996
7997 2009-07-15  Richard Guenther  <rguenther@suse.de>
7998
7999         PR middle-end/40753
8000         * alias.c (ao_ref_from_mem): Reject FUNCTION_DECL and LABEL_DECL bases.
8001
8002 2009-07-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
8003
8004         * config/m68k/linux-unwind.h (m68k_fallback_frame_state): Update to
8005         handle 2.6.30 kernel.
8006
8007 2009-07-15  DJ Delorie  <dj@redhat.com>
8008
8009         * config/mep/mep.md (sibcall_internal): Change register to allow
8010         for 24-bit addresses.
8011         (sibcall_value_internal): Likewise.
8012
8013 2009-07-14  Ghassan Shobaki  <ghassan.shobaki@amd.com>
8014
8015         * doc/invoke.texi: Added descriptions of the  scheduling heuristics
8016         that are enabled/disabled by the flags introduced by a previous patch.
8017
8018 2009-07-14  DJ Delorie  <dj@redhat.com>
8019
8020         * config/mep/mep.md (sibcall_internal): Include non-toggling
8021         non-jmp case.
8022         (sibcall_value_internal): Likewise.
8023
8024 2009-07-14  Taras Glek  <tglek@mozilla.com>
8025             Rafael Espindola  <espindola@google.com>
8026
8027         * doc/sourcebuild.texi: Document install-plugin target.
8028         * configure.ac: Added install-plugin target to language makefiles.
8029         * configure: Regenerate.
8030         * Makefile.in: (install-plugin): Install more headers,
8031         depend on lang.install-plugin.
8032
8033 2009-07-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
8034
8035         * tree-vrp.c (vrp_evaluate_conditional): Mark strings for
8036         translation.
8037
8038 2009-07-14  DJ Delorie  <dj@redhat.com>
8039
8040         * config/mep/mep.c (mep_vliw_jmp_match): New function.
8041         * config/mep/mep-protos.h (mep_vliw_jmp_match): Prototype it.
8042         * config/mep/mep.md (sibcall_internal): Change test from
8043         mep_vliw_mode_match to mep_vliw_jmp_match.
8044         (sibcall_value_internal): Likewise.
8045
8046 2009-07-14  Uros Bizjak  <ubizjak@gmail.com>
8047
8048         * config/i386/sse.md (copysign<mode>3): New expander.
8049         * config/i386/i386-protos.h (ix86_build_signbit_mask): New prototype.
8050         * config/i386/i386.c (ix86_build_signbit_mask): Make public.
8051         Use ix86_build_const_vector.
8052         (enum ix86_builtins): Add IX86_BUILTIN_CPYSGNPS and
8053         IX86_BUILTIN_CPYSGNPD.
8054         (builtin_description): Add __builtin_ia32_copysignps and
8055         __builtin_ia32_copysignpd.
8056         (ix86_builtin_vectorized_function): Handle BUILT_IN_COPYSIGN
8057         and BUILT_IN_COPYSIGNF.
8058
8059 2009-07-13  Jason Merrill  <jason@redhat.com>
8060
8061         * builtins.c (can_trust_pointer_alignment): New fn.
8062         (get_pointer_alignment): Factor it out from here.
8063         * tree.h: Declare it.
8064
8065 2009-07-14  David Edelsohn  <edelsohn@gnu.org>
8066
8067         * config/rs6000/predicates.md (offsettable_mem_operand): Test
8068         RTX_AUTOINC class.
8069
8070 2009-07-14  Dodji Seketeli  <dodji@redhat.com>
8071
8072         PR debug/40705
8073         PR c++/403057
8074         * dwarf2.out.c (gen_type_die_with_usage): Added comment.
8075
8076 2009-07-14  Richard Guenther  <rguenther@suse.de>
8077             Andrey Belevantsev <abel@ispras.ru>
8078
8079         PR middle-end/40745
8080         * cfgexpand.c (partition_stack_vars): Do not bother to update
8081         alias information when not optimizing.
8082
8083 2009-07-14  Richard Guenther  <rguenther@suse.de>
8084             Andrey Belevantsev <abel@ispras.ru>
8085
8086         * tree-ssa-alias.h (refs_may_alias_p_1): Declare.
8087         (pt_solution_set): Likewise.
8088         * tree-ssa-alias.c (refs_may_alias_p_1): Export.
8089         * tree-ssa-structalias.c (pt_solution_set): New function.
8090         * final.c (rest_of_clean_state): Free SSA data structures.
8091         * print-rtl.c (print_decl_name): Remove.
8092         (print_mem_expr): Implement in terms of print_generic_expr.
8093         * alias.c (ao_ref_from_mem): New function.
8094         (rtx_refs_may_alias_p): Likewise.
8095         (true_dependence): Query alias-export info.
8096         (canon_true_dependence): Likewise.
8097         (write_dependence_p): Likewise.
8098         * tree-dfa.c (get_ref_base_and_extent): For void types leave
8099         size unknown.
8100         * emit-rtl.c (component_ref_for_mem_expr): Remove.
8101         (mem_expr_equal_p): Use operand_equal_p.
8102         (set_mem_attributes_minus_bitpos): Do not use
8103         component_ref_for_mem_expr.
8104         * cfgexpand.c (add_partitioned_vars_to_ptset): New function.
8105         (update_alias_info_with_stack_vars): Likewise.
8106         (partition_stack_vars): Call update_alias_info_with_stack_vars.
8107         * tree-ssa.c (delete_tree_ssa): Do not release SSA names
8108         explicitly nor clear stmt operands.
8109         Free the decl-to-pointer map.
8110         * tree-optimize.c (execute_free_datastructures): Do not free
8111         SSA data structures here.
8112         * tree-flow.h (struct gimple_df): Add decls_to_pointers member.
8113         * Makefile.in (emit-rtl.o): Add pointer-set.h dependency.
8114         (alias.o): Add tree-ssa-alias.h, pointer-set.h and $(TREE_FLOW_H)
8115         dependencies.
8116         (print-rtl.o): Add $(DIAGNOSTIC_H) dependency.
8117
8118 2009-07-13  DJ Delorie  <dj@redhat.com>
8119
8120         * config/mep/mep.h (CC1_SPEC): Tweak parameters to trigger
8121         unrolling at the right iteration count.
8122
8123         * config/mep/mep.c (mep_expand_prologue): Fix frame pointer
8124         calculations.
8125
8126 2009-07-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
8127
8128         * haifa-sched.c (rank_for_schedule): Introduced flags to
8129         enable/disable individual scheduling heuristics.
8130         * common.opt: Introduced flags to enable/disable individual
8131         heuristics in the scheduler.
8132         * doc/invoke.texi: Introduced flags to enable/disable individual
8133         heuristics in the scheduler.
8134
8135 2009-07-13  Kai Tietz  <kai.tietz@onevision.com>
8136
8137         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Remove file
8138         config/i386/mingw-tls.c.
8139         * config/i386/mingw-tls.c: Removed.
8140
8141 2009-07-13  Ira Rosen  <irar@il.ibm.com>
8142
8143         * tree-vect-loop.c (get_initial_def_for_reduction): Ensure that the
8144         checks access only relevant statements.
8145         (vectorizable_reduction): Likewise.
8146
8147 2009-07-12  Kai Tietz  <kai.tietz@onevision.com>
8148
8149         * config/i386/cygming.h (TARGET_OS_CPP_BUILTINS): Define _X86_
8150         just for 32-bit case.
8151
8152 2009-07-12  Jan Hubicka  <jh@suse.cz>
8153
8154         PR tree-optimization/40585
8155         * except.c (expand_resx_expr): When there already is resume
8156         instruction, produce linked list.
8157         (build_post_landing_pads): Assert that resume is empty.
8158         (connect_post_landing_pads): Handle resume lists.
8159         (dump_eh_tree): Dump resume list.
8160
8161 2009-07-12  Ira Rosen  <irar@il.ibm.com>
8162
8163         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
8164         with additional argument.
8165         * tree-vectorizer.h (enum vect_def_type): Add
8166         vect_double_reduction_def.
8167         (vect_is_simple_reduction): Add argument.
8168         * tree-vect-loop.c (vect_determine_vectorization_factor): Fix
8169         indentation.
8170         (vect_analyze_scalar_cycles_1): Detect double reduction. Call
8171         vect_is_simple_reduction with additional argument.
8172         (vect_analyze_loop_operations): Handle exit phi nodes in case of
8173         double reduction.
8174         (reduction_code_for_scalar_code): Handle additional codes by
8175         returning ERROR_MARK for them. Fix comment and indentation.
8176         (vect_is_simple_reduction): Fix comment, add argument to specify
8177         double reduction. Detect double reduction.
8178         (get_initial_def_for_induction): Fix indentation.
8179         (get_initial_def_for_reduction): Fix comment and indentation.
8180         Handle double reduction. Create initial definitions that do not
8181         require adjustment if ADJUSTMENT_DEF is NULL. Handle additional cases.
8182         (vect_create_epilog_for_reduction): Fix comment, add argument to
8183         handle double reduction. Use PLUS_EXPR in case of MINUS_EXPR in
8184         epilogue result extraction. Create double reduction phi node and
8185         replace relevant uses.
8186         (vectorizable_reduction): Call vect_is_simple_reduction with
8187         additional argument. Fix indentation. Update epilogue code treatment
8188         according to the changes in reduction_code_for_scalar_code. Check
8189         for double reduction. Call vect_create_epilog_for_reduction with
8190         additional argument.
8191         * tree-vect-stmts.c (process_use): Handle double reduction, update
8192         documentation.
8193         (vect_mark_stmts_to_be_vectorized): Handle double reduction.
8194         (vect_get_vec_def_for_operand): Likewise.
8195
8196 2009-07-12  Danny Smith  <dansmister@gmail.com>
8197
8198         * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't
8199         dllexport if !TREE_PUBLIC.
8200         (i386_pe_maybe_record_exported_symbol): Assert TREE_PUBLIC.
8201
8202 2009-07-11  Anatoly Sokolov  <aesok@post.ru>
8203
8204         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Redefine.
8205         (avr_extra_arch_macro) Remove declatation.
8206         * config/avr/avr.c (avr_cpu_cpp_builtins): New function.
8207         (avr_extra_arch_macro) Declare as static.
8208         * config/avr/avr-protos.h (avr_cpu_cpp_builtins): Dclare.
8209
8210 2009-07-11  Jan Hubicka  <jh@suse.cz>
8211
8212         PR middle-end/48388
8213         * except.c (can_be_reached_by_runtime): Test for NULL aka bitmap.
8214
8215 2009-07-11  Jakub Jelinek  <jakub@redhat.com>
8216
8217         PR debug/40713
8218         * dwarf2out.c (dw_fde_struct): Add in_std_section and
8219         cold_in_std_section bits.
8220         (dwarf2out_begin_prologue): Initialize them.
8221         (dwarf2out_finish): Don't emit FDE range into .debug_ranges
8222         if already covered by text_section or cold_text_section range.
8223
8224         PR rtl-optimization/40667
8225         * defaults.h (MINIMUM_ALIGNMENT): Define if not defined.
8226         * doc/tm.texi (MINIMUM_ALIGNMENT): Document it.
8227         * config/i386/i386.h (MINIMUM_ALIGNMENT): Define.
8228         * config/i386/i386.c (ix86_minimum_alignment): New function.
8229         * config/i386/i386-protos.h (ix86_minimum_alignment): New prototype.
8230         * cfgexpand.c (expand_one_var): Use MINIMIM_ALIGNMENT.
8231         * emit-rtl.c (gen_reg_rtx): Likewise.
8232         * function.c (assign_parms): Likewise.  If nominal_type needs
8233         bigger alignment than FUNCTION_ARG_BOUNDARY, use its alignment
8234         rather than passed_type's alignment.
8235
8236         PR target/40668
8237         * function.c (assign_parm_setup_stack): Adjust
8238         MEM_OFFSET (data->stack_parm) if promoted_mode is different
8239         from nominal_mode on big endian.
8240
8241 2009-07-11  Paolo Bonzini  <bonzini@gnu.org>
8242
8243         * expmed.c (emit_store_flag_1): Fix choice of zero vs. sign extension.
8244
8245 2009-07-10  DJ Delorie  <dj@redhat.com>
8246
8247         * config/mep/mep.c (mep_can_inline_p): Correct logic, and simplify.
8248
8249 2009-07-10  Mark Mitchell  <mark@codesourcery.com>
8250
8251         * config/arm/thumb2.md (thumb2_cbz): Correct computation of length
8252         attribute.
8253         (thumb2_cbnz): Likewise.
8254
8255 2009-07-10  David Daney  <ddaney@caviumnetworks.com>
8256
8257         PR target/39079
8258         * config.gcc (supported_defaults): Add synci.
8259         (with_synci): Add validation.
8260         (all_defaults): Add synci.
8261         * config/mips/mips.md (clear_cache): Use TARGET_SYNCI instead of
8262         ISA_HAS_SYNCI.
8263         (synci): Same.
8264         * config/mips/mips.opt (msynci): New option.
8265         * config/mips/mips.c (mips_override_options): Warn on use of
8266         -msynci for targets that do now support it.
8267         * gcc/config/mips/mips.h (OPTION_DEFAULT_SPECS): Add a default for
8268         msynci.
8269         * gcc/doc/invoke.texi (-msynci): Document the new option.
8270         * doc/install.texi (--with-synci): Document the new option.
8271
8272 2009-07-10  Richard Guenther  <rguenther@suse.de>
8273
8274         PR tree-optimization/40496
8275         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Create
8276         the PHI result with a compatible type.
8277
8278 2009-07-10  Manuel López-Ibáñez  <manu@gcc.gnu.org>
8279
8280         PR 25509
8281         PR 40614
8282         * c.opt (Wunused-result): New.
8283         * doc/invoke.texi: Document it.
8284         * c-common.c (c_warn_unused_result): Use it.
8285
8286 2009-07-09  DJ Delorie  <dj@redhat.com>
8287
8288         * targhooks.c (default_target_can_inline_p): Rename from
8289         default_target_option_can_inline_p.
8290         * targhooks.h (default_target_can_inline_p): Likewise.
8291         * target-def.h (TARGET_CAN_INLINE_P): Rename from
8292         TARGET_OPTION_CAN_INLINE_P.
8293         * config/i386/i386.c (TARGET_CAN_INLINE_P): Likewise.
8294         * config/mep/mep.c (TARGET_CAN_INLINE_P): Likewise.
8295         (mep_target_can_inline_p): Rename from
8296         mep_target_option_can_inline_p.
8297
8298         PR target/40626
8299         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Add coprocessor
8300         registers used to pass vectors.
8301
8302         * config/mep/mep.c (mep_option_can_inline_p): Remove error call.
8303
8304 2009-07-09  Tom Tromey  <tromey@redhat.com>
8305
8306         * unwind-dw2-fde-darwin.c: Include dwarf2.h.
8307         * config/mmix/mmix.c: Include dwarf2.h.
8308         * config/rs6000/darwin-fallback.c: Include dwarf2.h.
8309         * config/xtensa/unwind-dw2-xtensa.c: Include dwarf2.h.
8310         * config/sh/sh.c: Include dwarf2.h.
8311         * config/i386/i386.c: Include dwarf2.h.
8312         * Makefile.in (DWARF2_H): Remove 'elf'.
8313         * except.c: Include dwarf2.h.
8314         * unwind-dw2.c: Include dwarf2.h.
8315         * dwarf2out.c: Include dwarf2.h.
8316         * unwind-dw2-fde-glibc.c: Include dwarf2.h.
8317         * unwind-dw2-fde.c: Include dwarf2.h.
8318         * dwarf2asm.c: Include dwarf2.h.
8319
8320 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
8321
8322         * haifa-sched.c (insn_finishes_cycle_p): New static function.
8323         (max_issue): Use it.
8324         * sched-int.h (struct sched_info: insn_finishes_block_p): New
8325         scheduler hook.
8326         * sched-rgn.c (rgn_insn_finishes_block_p): Implement it.
8327         (region_sched_info): Update.
8328         * sched-ebb.c (ebb_sched_info): Update.
8329         * modulo-sched.c (sms_sched_info): Update.
8330         * sel-sched-ir.c (sched_sel_haifa_sched_info): Update.
8331
8332 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
8333
8334         * varasm.c (build_constant_desc): Don't share RTL in pool entries.
8335
8336 2009-07-09  Basile Starynkevitch  <basile@starynkevitch.net>
8337
8338         * plugin.c (try_init_one_plugin): passes RTLD_GLOBAL to dlopen.
8339
8340 2009-07-09  Jakub Jelinek  <jakub@redhat.com>
8341
8342         PR middle-end/40692
8343         * fold-const.c (fold_cond_expr_with_comparison): Don't replace
8344         arg1 with arg01 if arg1 is already INTEGER_CST.
8345
8346 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
8347
8348         * simplify-rtx.c (simplify_binary_operation_1) <AND>:
8349         Transform (and (truncate)) into (truncate (and)).
8350
8351 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
8352
8353         * combine.c (make_extraction): Check TRULY_NOOP_TRUNCATION before
8354         creating LHS paradoxical subregs.  Fix surrounding returns to
8355         use NULL_RTX rather than 0.
8356
8357 2009-07-08  DJ Delorie  <dj@redhat.com>
8358
8359         * config/mep/mep.c: (mep_option_can_inline_p): New.
8360         (TARGET_OPTION_CAN_INLINE_P): Define.
8361
8362 2009-07-08  Mark Wielaard  <mjw@redhat.com>
8363
8364         PR debug/40659
8365         * dwarf2out.c (add_data_member_location_attribute): When we have
8366         only a constant offset don't emit a new location description using
8367         DW_OP_plus_uconst, but just add the constant with add_AT_int, when
8368         dwarf_version > 2.
8369
8370 2009-07-08  Richard Henderson  <rth@redhat.com>
8371
8372         PR target/38900
8373         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move to i386.c.
8374         (enum reg_class): Add CLOBBERED_REGS.
8375         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Likewise.
8376         * config/i386/i386.c (ix86_conditional_register_usage): Moved
8377         from CONDITIONAL_REGISTER_USAGE; build CLOBBERED_REGS for 64-bit.
8378         (ix86_function_ok_for_sibcall): Tidy.  Disallow MS->SYSV sibcalls.
8379         (ix86_expand_call): Use sibcall_insn_operand when needed.  Don't
8380         force 64-bit sibcalls into R11.
8381         * config/i386/constraints.md (U): New constraint.
8382         * config/i386/i386.md (sibcall_1, sibcall_value_1): Use it.
8383         (sibcall_1_rex64, sibcall_value_1_rex64): Likewise.
8384         (sibcall_1_rex64_v, sibcall_value_1_rex64_v): Remove.
8385
8386 2009-07-08  Shujing Zhao  <pearly.zhao@oracle.com>
8387
8388         * basic-block.h (dump_regset, debug_regset): Remove duplicate
8389         prototypes.
8390         * c-objc-common.h (c_initialize_diagnostics): Ditto.
8391         * ebitmap.h (dump_ebitmap): Ditto.
8392         * optabs.h (optab_libfunc): Ditto.
8393         * tree.h (tree_expr_nonzero_warnv_p): Ditto.
8394         * tree-flow.h (vect_can_force_dr_alignment_p,
8395         get_vectype_for_scalar_type): Ditto.
8396         (vectorize_loops): Move prototype to ...
8397         * tree-vectorizer.h: ... here. Also, adjust comment.
8398         (vect_set_verbosity_level): Remove duplicate prototype.
8399         * tree-ssa-loop.c: Include tree-vectorizer.h.
8400         * Makefile.in (tree-ssa-loop.o): Depend on tree-vectorizer.h.
8401
8402 2009-07-08  Nick Clifton  <nickc@redhat.com>
8403
8404         * config/i386/unix.h (ASM_COMMENT_START): Add a space after the
8405         forward slash.
8406
8407 2009-07-08  DJ Delorie  <dj@redhat.com>
8408
8409         * config/mep/mep-ivc2.cpu (cpmovtocsar0_C3, cpmovtocsar1_C3,
8410         cpmovtocc_C3, cpmovtocsar0_P0S_P1, cpmovtocsar1_P0S_P1,
8411         cpmovtocc_P0S_P1): Mark volatile.  Note which registers are
8412         written to.
8413         * config/mep/intrinsics.md: Regenerated.
8414         * config/mep/mep.c (mep_interrupt_saved_reg): Save IVC2 control
8415         registers when asm() or calls are detected.
8416
8417 2009-07-08  Manuel López-Ibáñez  <manu@gcc.gnu.org>
8418
8419         PR c++/31246
8420         * gimplify.c (gimplify_expr): Propagate no_warning flag when
8421         gimplifying.
8422         * gimple (gimple_build_call_from_tree): Likewise.
8423         * tree-cfg.c (remove_useless_stmts_warn_notreached): Check
8424         no_warning flag before warning.
8425
8426 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
8427
8428         * tree.c (set_expr_locus): Remove.
8429         * tree.h (EXPR_LOCUS,SET_EXPR_LOCUS,set_expr_locus): Remove.
8430         * c-typeck.c (c_finish_stmt_expr):  Replace EXPR_LOCUS by
8431         EXPR_LOCATION.
8432         * gimplify.c (internal_get_tmp_var): Likewise.
8433         (gimplify_call_expr): Likewise.
8434         (gimplify_one_sizepos): Likewise.
8435
8436 2009-07-07  Eric Botcazou  <ebotcazou@adacore.com>
8437
8438         PR debug/40666
8439         * dbxout.c (dbxout_symbol) <PARM_DECL>: Deal with parameters pointing
8440         to variables for debugging purposes.
8441
8442 2009-06-23  Mark Loeser  <mark@halcy0n.com>
8443
8444         PR build/40010
8445         * Makefile.in (gcc.pod): Depend on gcc-vers.texi.
8446
8447 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
8448
8449         * pretty-print.c (pp_base_format): Remove %J.
8450         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
8451         gcc_cxxdiag_char_table): Likewise.
8452         (init_dynamic_diag_info): Likewise.
8453
8454 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
8455
8456         * pretty-print.c (pp_base_format): Remove %H.
8457         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
8458         gcc_cxxdiag_char_table): Likewise.
8459         (init_dynamic_diag_info): Likewise.
8460         * config/mep/mep.c (mep_select_section): Likewise.
8461
8462 2009-07-07  Duncan Sands  <baldrick@free.fr>
8463
8464         * final.c (pass_clean_state): Give the pass a name.
8465         * passes.c (pass_rest_of_compilation): Likewise.
8466         * tree-optimize.c (pass_all_optimizations): Likewise.
8467
8468 2009-07-07  H.J. Lu  <hongjiu.lu@intel.com>
8469
8470         * config/ia64/ia64.c (ia64_handle_model_attribute): Remove
8471         an extra 'decl' for error_at.
8472
8473 2009-07-07  Jakub Jelinek  <jakub@redhat.com>
8474
8475         PR middle-end/40669
8476         * tree-tailcall.c (adjust_return_value_with_ops,
8477         create_tailcall_accumulator): Set DECL_GIMPLE_REG_P on the temporary
8478         if it has complex or vector type.
8479
8480 2009-07-07  Olivier Hainque  <hainque@adacore.com>
8481
8482         * config/alpha/t-osf4 (SHLIB_LINK): Do not hide the dummy weak
8483         pthread symbols.
8484
8485 2009-07-07  Basile Starynkevitch  <basile@starynkevitch.net>
8486
8487         * Makefile.in: added more lists of includes to PLUGIN_HEADERS.
8488
8489 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
8490
8491         * cgraphunit.c: Replace %J by an explicit location.  Update all calls.
8492         * c-decl.c: Likewise.
8493         * function.c: Likewise.
8494         * varasm.c: Likewise.
8495         * tree-ssa.c: Likewise.
8496         * c-common.c: Likewise.
8497         * tree-cfg.c: Likewise.
8498         * config/spu/spu.c: Likewise.
8499         * config/ia64/ia64.c: Likewise.
8500         * config/v850/v850.c: Likewise.
8501
8502 2009-07-06  DJ Delorie  <dj@redhat.com>
8503
8504         * config/mep/mep-core.cpu (fsft, ssarb): Mark as VOLATILE.
8505         * config/mep/mep-ivc2.cpu (many): Add VOLATILE to more insns that make
8506         unspecified accesses to control registers.
8507         * config/mep/intrinsics.md: Regenerate.
8508         * config/mep/intrinsics.h: Regenerate.
8509         * config/mep/mep-intrin.h: Regenerate.
8510
8511 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
8512
8513         * c-lex.c: Replace %H by an explicit location. Update all calls.
8514         * c-common.c: Likewise.
8515         * c-decl.c: Likewise.
8516         * c-typeck.c: Likewise.
8517         * fold-const.c: Likewise.
8518         * gimplify.c: Likewise.
8519         * stmt.c: Likewise.
8520         * tree-cfg.c: Likewise.
8521         * tree-ssa-loop-niter.c: Likewise.
8522         * tree-vrp.c: Likewise.
8523         * value-prof.c: Likewise.
8524
8525 2009-07-06  Diego Novillo  <dnovillo@google.com>
8526
8527         * tree-dfa.c (dump_variable): Write DECL_INITIAL for VAR
8528         if it has one.  Handle cases where VAR does not have an
8529         annotation or cfun is NULL.
8530
8531 2009-07-06  Diego Novillo  <dnovillo@google.com>
8532
8533         * tree.c: Include debug.h.
8534         (initialize_tree_contains_struct): New.
8535         (init_ttree): Call it.
8536         (tree_node_structure_for_code): Factor out of ...
8537         (tree_node_structure): ... here.
8538         * treestruct.def (TS_PHI_NODE): Remove.
8539         (TS_GIMPLE_STATEMENT): Remove.
8540
8541 2009-07-06  Diego Novillo  <dnovillo@google.com>
8542
8543         * tree-pretty-print.c (dump_generic_node): Protect against NULL op0.
8544         (debug_tree_chain): Handle cycles.
8545
8546 2009-07-06  Nick Clifton  <nickc@redhat.com>
8547             DJ Delorie  <dj@redhat.com>
8548
8549         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
8550         __FMOVD_ENABLED__ is defined.
8551         * config/sh/sh.h
8552         (TARGET_FMOVD): Provide a default definition.
8553         (MASK_FMOVD): Likewise.
8554         (TARGET_CPU_CPP_BUILTINS): Define
8555         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
8556         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
8557         two fmov instructions depending upon whether TARGET_FMOVD is enabled.
8558         (split for DF load from memory into register): Also handle
8559         MEMs which consist of REG+DISP addressing.
8560         (split for DF store from register to memory): Likewise.
8561         (movsf_ie): Always use single fp_mode.
8562         * config/sh/sh.c (sh_override_options): Do not automatically
8563         enable TARGET_MOVD for the SH2A when supporting doubles - leave
8564         that to the -mfmovd command line switch.
8565         (broken_move): Do not restrict fldi test to only the SH4 and SH4A.
8566         (fldi_ok): Always allow.
8567         * config/sh/sh.opt (mfmovd): Remove this switch.
8568         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
8569
8570 2009-07-06  J"orn Rennecke  <joern.rennecke@arc.com>
8571             Kaz Kojima  <kkojima@gcc.gnu.org>
8572
8573         PR rtl-optimization/30807
8574         * postreload.c (reload_combine): For every new use of REG_SUM,
8575         record the use of BASE.
8576
8577 2009-07-06  Jan Hubicka  <jh@suse.cz>
8578
8579         * params.def: Revert my accidental commit at 2009-06-30.
8580
8581 2009-07-04  Ian Lance Taylor  <iant@google.com>
8582
8583         PR target/40636
8584         * config/i386/msformat-c.c (mingw_format_attributes): Declare as
8585         EXPORTED_CONST.
8586         (mingw_format_attribute_overrides): Likewise.
8587
8588 2009-07-04  Jakub Jelinek  <jakub@redhat.com>
8589
8590         PR debug/40596
8591         * dwarf2out.c (based_loc_descr): For crtl->stack_realign_tried
8592         don't check cfa.reg.  Instead of cfa.indirect use
8593         fde && fde->drap_reg != INVALID_REGNUM test.
8594
8595 2009-07-04  Eric Botcazou  <ebotcazou@adacore.com>
8596
8597         * postreload.c (reload_combine): Replace CONST_REG with INDEX_REG.
8598
8599 2009-07-03  Vladimir Makarov  <vmakarov@redhat.com>
8600
8601         PR target/40587
8602         * ira.c (build_insn_chain): Use DF_LR_OUT instead of df_get_live_out.
8603
8604 2009-07-03  Richard Guenther  <rguenther@suse.de>
8605
8606         PR tree-optimization/40640
8607         * tree-switch-conversion.c (build_arrays): Perform arithmetic
8608         in original type.
8609
8610 2009-07-03  Jan Hubicka  <jh@suse.cz>
8611
8612         * ipa-inline.c (cgraph_decide_inlining_incrementally): When optimizing
8613         for size, reduce amount of inlining.
8614
8615 2009-07-03  Richard Guenther  <rguenther@suse.de>
8616
8617         PR middle-end/34163
8618         * tree-chrec.c (chrec_convert_1): Fold (T2)(t +- x) to (T2)t +- (T2)x
8619         if t +- x is known to not overflow and the conversion widens the
8620         operation.
8621         * Makefile.in (tree-chrec.o): Add $(FLAGS_H) dependency.
8622
8623 2009-07-03  Jan Hubicka  <jh@suse.cz>
8624
8625         * ipa-pure-const.c (analyze): Update loop optimizer init.
8626         * tree-ssa-loop-iv-canon.c (empty_loop_p, remove_empty_loop,
8627         try_remove_empty_loop, remove_empty_loops): Remove.
8628         * tree-ssa-loop.c (tree_ssa_empty_loop, pass_empty_loop): Remove.
8629         * tree-ssa-dce.c (find_obviously_necessary_stmts): Use finiteness info
8630         to mark regular loops as neccesary.
8631         (degenerate_phi_p): New function.
8632         (propagate_necessity, remove_dead_phis): Use it.
8633         (forward_edge_to_pdom): Likewise.
8634         (eliminate_unnecessary_stmts): Take care to remove uses of results of
8635         virtual PHI nodes that became unreachable.
8636         (perform_tree_ssa_dce): Initialize/deinitialize loop optimizer.
8637         * tree-flow.h (remove_empty_loops): Remove.
8638         * passes.c (init_optimization_passes): Remove.
8639
8640 2009-07-03  Uros Bizjak  <ubizjak@gmail.com>
8641
8642         * config/i386/i386.md (fix_trunc<mode>_fisttp_i387_1): Use
8643         can_create_pseudo_p.
8644         (*fix_trunc<mode>_i387_1): Ditto.
8645         (*floathi<mode>2_1): Ditto.
8646         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): Ditto.
8647         (*fistdi2_1): Ditto.
8648         (*fist<mode>2_1): Ditto.
8649         (frndintxf2_floor): Ditto.
8650         (*fist<mode>2_floor_1): Ditto.
8651         (frndintxf2_ceil): Ditto.
8652         (*fist<mode>2_ceil_1): Ditto.
8653         (frndintxf2_trunc): Ditto.
8654         (frndintxf2_mask_pm): Ditto.
8655         (fxam<mode>2_i387_with_temp): Ditto.
8656         * config/i386/sse.md (mulv16qi3): Ditto.
8657         (*sse2_mulv4si3): Ditto.
8658         (mulv2di3): Ditto.
8659         (sse4_2_pcmpestr): Ditto.
8660         (sse4_2_pcmpistr): Ditto.
8661
8662 2009-07-03  Jan Hubicka  <jh@suse.cz>
8663
8664         * tree-ssa-dce.c (bb_contains_live_stmts): New bitmap.
8665         (mark_stmt_necessary): Set it.
8666         (mark_operand_necessary): Set it.
8667         (mark_control_dependent_edges_necessary): Set it.
8668         (mark_virtual_phi_result_for_renaming): New function.
8669         (get_live_post_dom): New function.
8670         (forward_edge_to_pdom): New function.
8671         (remove_dead_stmt): Fix handling of control dependences.
8672         (tree_dce_init): Init new bitmap.
8673         (tree_dce_done): Free it.
8674
8675 2009-07-02  Richard Guenther  <rguenther@suse.de>
8676
8677         PR bootstrap/40617
8678         * tree-ssa-structalias.c (new_var_info): Initialize
8679         is_restrict_var.
8680
8681 2009-07-02  Jan Hubicka  <jh@suse.cz>
8682
8683         * ipa-pure-const.c (check_op): Use PTA info to see if indirect_ref is
8684         local.
8685
8686 2009-07-02  Paolo Bonzini  <bonzini@gnu.org>
8687
8688         * expmed.c (emit_cstore, emit_store_flag_1): Accept target_mode
8689         instead of recomputing it.  Adjust calls.
8690         (emit_store_flag): Adjust recursive calls.
8691
8692 2009-07-02  Richard Guenther  <rguenther@suse.de>
8693
8694         * tree-ssa-live.c (remove_unused_locals): Do not remove
8695         heap variables.
8696         * tree-ssa-structalias.c (handle_lhs_call): Delay setting
8697         of DECL_EXTERNAL for HEAP variables.
8698         (compute_points_to_sets): Set DECL_EXTERNAL for escaped
8699         HEAP variables.  Do not adjust RESTRICT vars.
8700         (find_what_var_points_to): Nobody cares if something
8701         points to READONLY.
8702
8703 2009-07-02  Ben Elliston  <bje@au.ibm.com>
8704
8705         * unwind-dw2-fde-glibc.c (_Unwind_IteratePhdrCallback): Move
8706         pc_low and pc_high declarations to the top of the function.
8707
8708 2009-07-01  DJ Delorie  <dj@redhat.com>
8709
8710         * config/mep/mep.c (mep_handle_option): Leave IVC2 control
8711         registers as fixed.
8712         (mep_interrupt_saved_reg): Save appropriate IVC2 control registers.
8713         * config/mep/mep-ivc2.cpu: Add VOLATILE to insns that make
8714         unspecified accesses to control registers.
8715         * config/mep/intrinsics.md: Regenerate.
8716         * config/mep/intrinsics.h: Regenerate.
8717         * config/mep/mep-intrin.h: Regenerate.
8718
8719 2009-07-01  Anthony Green  <green@moxielogic.com>
8720
8721         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
8722         instruction when possible.
8723         (moxie_expand_prologue): Ditto.  Also, save an instruction and
8724         some complexity by popping off of $r12 instead of $sp.
8725         * config/moxie/moxie.md (movsi_pop): Don't assume $sp.  Take two
8726         operands.
8727
8728 2009-07-01  Richard Henderson  <rth@redhat.com>
8729
8730         PR bootstrap/40347
8731         * function.c (reposition_prologue_and_epilogue_notes): If epilogue
8732         contained no insns, reposition note before last insn.
8733
8734 2009-07-01  Richard Henderson  <rth@redhat.com>
8735
8736         PR debug/40431
8737         * dwarf2out.c (def_cfa_1): Revert 2009-06-11 change for
8738         DW_CFA_def_cfa_offset and DW_CFA_def_cfa.
8739
8740 2009-07-01  Michael Meissner  <meissner@linux.vnet.ibm.com>
8741
8742         PR bootstrap/40558
8743         * config/rs6000/rs6000.c (print_operand): Undo change that breaks
8744         darwin9 for printing reg addresses with %y.
8745
8746 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
8747
8748         * combine.c (force_to_mode): Handle TRUNCATE.  Factor out
8749         truncation from operands in binary operations.
8750
8751 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
8752
8753         Revert:
8754         2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
8755         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
8756         subreg of op0 to the original op0.
8757
8758         * expmed.c (store_bit_field_1): Use a temporary as the destination
8759         instead of a paradoxical subreg when we need to truncate the result.
8760
8761 2009-07-01  DJ Delorie  <dj@redhat.com>
8762
8763         * config/mep/mep-ivc2.cpu (cmov, cmovc, cmovh): Add intrinsic
8764         names to VLIW variants.
8765         (ivc2rm, ivc2crn): Make data type consistent with non-VLIW variants.
8766         * config/mep/intrinsics.md: Regenerate.
8767         * config/mep/intrinsics.h: Regenerate.
8768         * config/mep/mep-intrin.h: Regenerate.
8769
8770 2009-07-01  Jakub Jelinek  <jakub@redhat.com>
8771
8772         PR debug/40462
8773         * jump.c (returnjump_p): Revert last patch.
8774         * dwarf2out.c (dwarf2out_begin_epilogue): Handle SEQUENCEs.
8775
8776 2009-07-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8777
8778         PR target/40575
8779         * pa.md (casesi32p): Use jump table label to determine the offset
8780         of the jump table.
8781         (casesi64p): Likewise.
8782
8783         * pa.c (forward_branch_p): Return bool type.  Use instruction
8784         addresses when available.  Assert that INSN has a jump label.
8785         (pa_adjust_insn_length): Don't call forward_branch_p if INSN doesn't
8786         have a jump label.
8787
8788 2009-07-01  Richard Guenther  <rguenther@suse.de>
8789
8790         PR tree-optimization/19831
8791         * tree-ssa-dce.c (propagate_necessity): Calls to functions
8792         that only act as barriers do not make any previous stores necessary.
8793         * tree-ssa-structalias.c (handle_lhs_call): Delay making
8794         HEAP variables global, do not add a constraint from nonlocal.
8795         (find_func_aliases): Handle escapes through return statements.
8796         (compute_points_to_sets): Make escaped HEAP variables global.
8797
8798 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
8799
8800         PR bootstrap/40597
8801         * expmed.c (emit_store_flag): Perform a conversion if necessary,
8802         after reducing a DImode cstore to SImode.
8803
8804 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
8805
8806         * expr.c (expand_expr_real_1): Reinstate fallthrough to
8807         TRUTH_ANDIF_EXPR if do_store_flag returns NULL.
8808
8809 2009-07-01  Maciej W. Rozycki  <macro@linux-mips.org>
8810
8811         * config/vax/vax.h (TARGET_BSD_DIVMOD): New macro.  Set to 1.
8812         * config/vax/linux.h (TARGET_BSD_DIVMOD): New macro.  Redefine the
8813         to 0.
8814         * config/vax/vax.c (vax_init_libfuncs): Only redefine udiv_optab
8815         and umod_optab if TARGET_BSD_DIVMOD.
8816         * config/vax/lib1funcs.asm: New file.
8817         * config/vax/t-linux: New file.
8818         * config.gcc (vax-*-linux*): Set tmake_file to vax/t-linux.
8819
8820 2009-06-30  Jakub Jelinek  <jakub@redhat.com>
8821
8822         PR c++/40566
8823         * convert.c (convert_to_integer) <case COND_EXPR>: Don't convert
8824         to type arguments that have void type.
8825
8826         PR debug/40573
8827         * dwarf2out.c (gen_formal_parameter_die): Call
8828         equate_decl_number_to_die if node is different from origin.
8829
8830 2009-06-30  Anthony Green  <green@moxielogic.com>
8831
8832         Clean up moxie port for --enable-build-with-cxx.
8833         * config/moxie/moxie.c (moxie_function_value): First two
8834         parameters are const_tree, not tree.
8835         * config/moxie/moxie.h (enum reg_class): Rename CC_REG to CC_REGS.
8836         (REG_CLASS_NAMES): Ditto.
8837         (REGNO_REG_CLASS): Ditto.
8838         * config/moxie/moxie-protos.h (moxie_override_options): Declare.
8839         (moxie_function_value): Fix constyness of arguments.
8840
8841 2009-06-30  Eric Botcazou  <ebotcazou@adacore.com>
8842
8843         * cgraphunit.c (cgraph_finalize_compilation_unit): Call
8844         finalize_size_functions before further processing.
8845         * stor-layout.c: Include cgraph.h, tree-inline.h and tree-dump.h.
8846         (variable_size): Call self_referential_size on size expressions
8847         that contain a PLACEHOLDER_EXPR.
8848         (size_functions): New static variable.
8849         (copy_self_referential_tree_r): New static function.
8850         (self_referential_size): Likewise.
8851         (finalize_size_functions): New global function.
8852         * tree.c: Include tree-inline.h.
8853         (push_without_duplicates): New static function.
8854         (find_placeholder_in_expr): New global function.
8855         (substitute_in_expr) <tcc_declaration>: Return the replacement object
8856         on equality.
8857         <tcc_expression>: Likewise.
8858         <tcc_vl_exp>: If the replacement object is a constant, try to inline
8859         the call in the expression.
8860         * tree.h (finalize_size_functions): Declare.
8861         (find_placeholder_in_expr): Likewise.
8862         (FIND_PLACEHOLDER_IN_EXPR): New macro.
8863         (substitute_placeholder_in_expr): Update comment.
8864         * tree-inline.c (remap_decl): Do not unshare trees if do_not_unshare
8865         is true.
8866         (copy_tree_body_r): Likewise.
8867         (copy_tree_body): New static function.
8868         (maybe_inline_call_in_expr): New global function.
8869         * tree-inline.h (struct copy_body_data): Add do_not_unshare field.
8870         (maybe_inline_call_in_expr): Declare.
8871         * Makefile.in (tree.o): Depend on TREE_INLINE_H.
8872         (stor-layout.o): Depend on CGRAPH_H, TREE_INLINE_H, TREE_DUMP_H and
8873         GIMPLE_H.
8874
8875 2009-06-30  Richard Guenther  <rguenther@suse.de>
8876
8877         * tree-ssa-dce.c (mark_all_reaching_defs_necessary_1): Always
8878         continue walking.
8879         (propagate_necessity): Do not mark reaching defs of stores
8880         as necessary.
8881
8882 2009-06-30  Jan Hubicka  <jh@suse.cz>
8883
8884         * cfgloopanal.c (check_irred): Move into ...
8885         (mark_irreducible_loops): ... here; return true if ireducible
8886         loops was found.
8887         * ipa-pure-const.c: Include cfgloop.h and tree-scalar-evolution.h
8888         (analyze_function): Try to prove loop finiteness.
8889         * cfgloop.h (mark_irreducible_loops): Update prototype.
8890         * Makefile.in (ipa-pure-const.o): Add dependency on SCEV and CFGLOOP.
8891
8892 2009-06-30  Basile Starynkevitch  <basile@starynkevitch.net>
8893
8894         * Makefile.in (PLUGIN_HEADERS): added ggc, tree-dump, pretty-print.
8895
8896 2009-06-30  Ira Rosen  <irar@il.ibm.com>
8897
8898         PR tree-optimization/40542
8899         * tree-vect-stmts.c (vect_analyze_stmt): Don't vectorize volatile
8900         types.
8901
8902 2009-06-30  Martin Jambor  <mjambor@suse.cz>
8903
8904         PR tree-optimization/40582
8905         * tree-sra.c (build_ref_for_offset_1): Use types_compatible_p rather
8906         than useless_type_conversion_p.
8907         (generate_subtree_copies): Increment sra_stats.subtree_copies at a
8908         proper place.
8909
8910 2009-06-30  Martin Jambor  <mjambor@suse.cz>
8911
8912         PR middle-end/40554
8913         * tree-sra.c (sra_modify_expr): Add access->offset to start_offset.
8914
8915 2009-06-30  Richard Guenther  <rguenther@suse.de>
8916
8917         * tree-ssa-alias.c (walk_aliased_vdefs_1): Change interface to
8918         use ao_ref references.
8919         (walk_aliased_vdefs): Likewise.
8920         * tree-ssa-alias.h (walk_aliased_vdefs): Adjust prototype.
8921         * tree-ssa-dce.c (struct ref_data): Remove.
8922         (mark_aliased_reaching_defs_necessary_1): Use the ao_ref argument.
8923         (mark_aliased_reaching_defs_necessary): Adjust.
8924         (mark_all_reaching_defs_necessary_1): Likewise.
8925
8926 2009-06-30  Paolo Bonzini  <bonzini@gnu.org>
8927
8928         PR boostrap/40597
8929         * expmed.c (emit_cstore): New name of emit_store_flag_1.
8930         (emit_store_flag_1): Extract from emit_store_flag, adjust
8931         calls to (what now is) emit_cstore.
8932         (emit_store_flag): Call emit_store_flag_1 and also use it
8933         for what used to be recursive calls.
8934
8935 2009-06-30  Wei Guozhi  <carrot@google.com>
8936
8937         PR/40416
8938         * tree-ssa-sink.c (statement_sink_location): Stop sinking expression
8939         if the target bb post dominates from bb.
8940         * config/i386/i386.c (memory_address_length): Check existence of base
8941         register before using it.
8942
8943 2009-06-30  Nick Clifton  <nickc@redhat.com>
8944             DJ Delorie  <dj@redhat.com>
8945
8946         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
8947         __FMOVD_ENABLED__ is defined.
8948         * config/sh/sh.h
8949         (TARGET_FMOVD): Provide a default definition.
8950         (MASK_FMOVD): Likewise.
8951         (TARGET_CPU_CPP_BUILTINS): Define
8952         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
8953         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
8954         two fmov instructions depending upon whether TARGET_FMOVD is
8955         enabled.
8956         (split for DF load from memory into register): Also handle
8957         MEMs which consist of REG+DISP addressing.
8958         (split for DF store from register to memory): Likewise.
8959         * config/sh/sh.opt (mfmovd): Remove this switch.
8960         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
8961         * config/sh/sh.c (sh_override_options): Do not automatically
8962         enable TARGET_MOVD for the SH2A when supporting doubles - leave
8963         that to the -mfmovd command line switch.
8964
8965         * config/sh/sh.c (broken_move): Do not restrict fldi test to only
8966         the SH4 and SH4A.
8967         (fldi_ok): Always allow.
8968         * config/sh/sh.md (movsf_ie): Always use single fp_mode.
8969
8970 2009-06-29  DJ Delorie  <dj@redhat.com>
8971
8972         * doc/install.texi (mep-x-elf): Correct chip's full name.
8973
8974 2009-06-29  H.J. Lu  <hongjiu.lu@intel.com>
8975
8976         * doc/extend.texi: Fix typo.
8977
8978 2009-06-29  Tom Tromey  <tromey@redhat.com>
8979
8980         * dwarf2.h: Remove.
8981         * Makefile.in (DWARF2_H): New variable.
8982         (except.o): Use it.
8983         (dwarf2out.o): Likewise.
8984         (dwarf2asm.o): Likewise.
8985         * config/i386/t-i386: Use DWARF2_H.
8986         * except.c: Include elf/dwarf2.h.
8987         * unwind-dw2.c: Include elf/dwarf2.h.
8988         * dwarf2out.c: Include elf/dwarf2.h.
8989         (dw_loc_descr_struct) <dw_loc_opc>: Now a bitfield.
8990         <dtprel>: New field.
8991         (dwarf_stack_op_name): Don't handle INTERNAL_DW_OP_tls_addr.
8992         (size_of_loc_descr): Likewise.
8993         (output_loc_operands_raw): Likewise.
8994         (output_loc_operands): Handle new dtprel field.
8995         (loc_checksum): Update.
8996         (loc_descriptor_from_tree_1) <VAR_DDECL>: Set dtprel field.
8997         * unwind-dw2-fde-glibc.c: Include elf/dwarf2.h.
8998         * unwind-dw2-fde.c: Include elf/dwarf2.h.
8999         * dwarf2asm.c: Include elf/dwarf2.h.
9000         * unwind-dw2-fde-darwin.c: Include elf/dwarf2.h.
9001         * config/mmix/mmix.c: Include elf/dwarf2.h.
9002         * config/rs6000/darwin-fallback.c: Include elf/dwarf2.h.
9003         * config/xtensa/unwind-dw2-xtensa.c: Include elf/dwarf2.h.
9004         * config/sh/sh.c: Include elf/dwarf2.h.
9005         * config/i386/i386.c: Include elf/dwarf2.h.
9006
9007 2009-06-29  DJ Delorie  <dj@redhat.com>
9008
9009         * config/mep/mep.h (CPP_SPEC): Remove __cop macro.
9010
9011         * doc/extend.texi: Add MeP attributes and pragmas.
9012         * doc/invoke.text: Add MeP Options.
9013         * doc/contrib.texi: Add MeP contribution.
9014         * doc/md.texi: Add MeP constraints.
9015         * doc/install.texi: Add MeP target.
9016
9017 2009-06-30  Anatoly Sokolov  <aesok@post.ru>
9018
9019         * target.h (struct gcc_target): Add frame_pointer_required field.
9020         * target-def.h (TARGET_FRAME_POINTER_REQUIRED): New.
9021         (TARGET_INITIALIZER): Use TARGET_FRAME_POINTER_REQUIRED.
9022         * ira.c (setup_eliminable_regset): Use frame_pointer_required target
9023         hook.
9024         * reload1.c (update_eliminables): (Ditto.).
9025         * gcc/system.h (FRAME_POINTER_REQUIRED): Poison.
9026         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
9027         (INITIAL_FRAME_POINTER_OFFSET): (Ditto.).
9028
9029         * config/arc/arc.h (FRAME_POINTER_REQUIRED): Remove macro.
9030
9031         * config/arm/arm.h (FRAME_POINTER_REQUIRED): Remove macro.
9032         * config/arm/arm.c (TARGET_FRAME_POINTER_REQUIRED): Define.
9033         (arm_frame_pointer_required): New function.
9034
9035         * config/avr/avr.h (FRAME_POINTER_REQUIRED): Remove macro.
9036         * config/avr/avr.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
9037         (avr_frame_pointer_required_p): Declare as static.
9038         * config/avr/avr-protos.h (avr_frame_pointer_required_p): Remove.
9039
9040         * config/bfin/bfin.h (FRAME_POINTER_REQUIRED): Remove macro.
9041         * config/bfin/bfin.c (TARGET_FRAME_POINTER_REQUIRED): Define.
9042         (bfin_frame_pointer_required): Make as static, change return type
9043         to bool.
9044         * config/bfin/bfin-protos.h (bfin_frame_pointer_required): Remove.
9045
9046         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Remove macro.
9047         * config/cris/cris.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
9048         (cris_frame_pointer_required): New function.
9049
9050         * config/crx/crx.h (FRAME_POINTER_REQUIRED): Remove macro.
9051
9052         * config/fr30/fr30.h (FRAME_POINTER_REQUIRED): Remove macro.
9053         * config/fr30/fr30.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
9054         (fr30_frame_pointer_required): New function.
9055
9056         * config/frv/frv.h (FRAME_POINTER_REQUIRED): Remove macro.
9057         * config/frv/frv.c (TARGET_FRAME_POINTER_REQUIRED): Define.
9058         (frv_frame_pointer_required): Make as static, change return type
9059         to bool.
9060         * config/bfin/bfin-protos.h (frv_frame_pointer_required): Remove.
9061
9062         * config/i386/i386.h (FRAME_POINTER_REQUIRED): Remove macro.
9063         * config/i386/i386.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
9064         (ix86_frame_pointer_required): Make as static, change return type to
9065         bool.
9066         * config/i386/i386-protos.h (ix86_frame_pointer_required): Remove.
9067
9068         * config/m32c/m32c.h (FRAME_POINTER_REQUIRED): Remove macro.
9069         * config/m32c/m32c.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
9070
9071         * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Remove macro.
9072
9073         * config/mcore/mcore.h (CAN_ELIMINATE): Remove macro.
9074
9075         * config/mep/mep.h (FRAME_POINTER_REQUIRED): Remove macro.
9076
9077         * config/mips/mips.h (FRAME_POINTER_REQUIRED): Remove macro.
9078         * config/mips/mips.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
9079         (mips_frame_pointer_required): Make as static.
9080         * config/mips/mips-protos.h (mips_frame_pointer_required): Remove.
9081
9082         * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Remove macro.
9083         * config/mmix/mmix.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
9084         (mmix_frame_pointer_required): Mew function.
9085
9086         * config/moxie/moxie.h (FRAME_POINTER_REQUIRED): Remove macro.
9087         * config/moxie/moxie.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
9088
9089         * config/pa/pa.h (FRAME_POINTER_REQUIRED): Remove macro.
9090
9091         * config/score/score.h (FRAME_POINTER_REQUIRED): Remove macro.
9092
9093         * config/sh/sh.h (CAN_ELIMINATE): Remove macro.
9094
9095         * config/sparc/sparc.h (FRAME_POINTER_REQUIRED): Remove macro.
9096         (CAN_ELIMINATE): Redefine.
9097         * config/sparc/sparc.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
9098         (sparc_frame_pointer_required): New function.
9099         (sparc_can_eliminate): New function.
9100         * config/sparc/sparc-protos.h (sparc_can_eliminate): Declare.
9101
9102         * config/vax/vax.h (FRAME_POINTER_REQUIRED): Remove macro.
9103         * config/vax/vax.c (TARGET_FRAME_POINTER_REQUIRED): Define.
9104
9105         * config/xtensa/xtensa.h (FRAME_POINTER_REQUIRED): Remove macro.
9106         * config/xtensa/xtensa.c (TARGET_FRAME_POINTER_REQUIRED): Define.
9107         (xtensa_frame_pointer_required): Make as static, change return type
9108         to bool.
9109         * config/xtensa/xtensa-protos.h (xtensa_frame_pointer_required):
9110         Remove.
9111
9112 2009-06-29  Olatunji Ruwase  <tjruwase@google.com>
9113
9114         * doc/plugins.texi: Document PLUGIN_START_UNIT.
9115         * toplev.c (compile_file): Call PLUGIN_START_UNIT.
9116         * gcc-plugin.h (PLUGIN_START_UNIT): Added new event.
9117         * plugin.c (plugin_event_name): Added PLUGIN_START_UNIT.
9118         (register_callback): Handle PLUGIN_START_UNIT.
9119         (invoke_plugin_callbacks): Handle PLUGIN_START_UNIT.
9120
9121 2009-06-29  Eric Botcazou  <ebotcazou@adacore.com>
9122
9123         * tree.c (process_call_operands): Propagate TREE_READONLY from the
9124         operands.
9125         (PROCESS_ARG): Do not clear TREE_READONLY if CONSTANT_CLASS_P.
9126         (build3_stat): Propagate TREE_READONLY for COND_EXPR.
9127
9128 2009-06-29  Daniel Jacobowitz  <dan@codesourcery.com>
9129
9130         * config/arm/arm.h (REGISTER_MOVE_COST): Increase VFP register
9131         move cost.
9132
9133 2009-06-29  Uros Bizjak  <ubizjak@gmail.com>
9134
9135         * doc/extend.texi (Additional Floating Types): __float128 is also
9136         supported on i386 targets.
9137
9138 2009-06-29  Richard Guenther  <rguenther@suse.de>
9139
9140         PR middle-end/14187
9141         * tree-ssa-alias.h (struct pt_solution): Add vars_contains_restrict
9142         flag.
9143         (pt_solutions_same_restrict_base): Declare.
9144         * tree-ssa-structalias.c (struct variable_info): Add is_restrict_var
9145         flag.
9146         (new_var_info): Initialize is_global_var properly for SSA_NAMEs.
9147         (make_constraint_from, make_copy_constraint): Move earlier.
9148         (make_constraint_from_heapvar): New function.
9149         (make_constraint_from_restrict): Likewise.
9150         (handle_lhs_call): Use it.
9151         (find_func_aliases): Use it to track conversions to restrict
9152         qualified pointers.
9153         (struct fieldoff): Add only_restrict_pointers flag.
9154         (push_fields_onto_fieldstack): Initialize it.
9155         (create_variable_info_for): Track global restrict qualified pointers.
9156         (intra_create_variable_infos): Use make_constraint_from_heapvar.
9157         Track restrict qualified pointer arguments.
9158         (set_uids_in_ptset): Use varinfo is_global_var flag.
9159         (find_what_var_points_to): Set the vars_contains_restrict flag.
9160         Always create the points-to solution for sets including restrict tags.
9161         (pt_solutions_same_restrict_base): New function.
9162         * tree-ssa-alias.c (ptr_derefs_may_alias_p): For two restrict
9163         qualified pointers use pt_solutions_same_restrict_base as
9164         additional source for disambiguation.
9165
9166 2009-06-29  Richard Guenther  <rguenther@suse.de>
9167
9168         PR middle-end/38212
9169         * alias.c (find_base_decl): Remove.
9170         (get_deref_alias_set_1): Remove restrict handling.
9171         * c-common.c (c_apply_type_quals_to_decl): Do not set
9172         DECL_POINTER_ALIAS_SET.
9173         * gimplify.c (find_single_pointer_decl_1): Remove.
9174         (find_single_pointer_decl): Likewise.
9175         (internal_get_tmp_var): Remove restrict handling.
9176         (gimple_regimplify_operands): Likewise.
9177         * omp-low.c (expand_omp_atomic_pipeline): Do not set
9178         DECL_POINTER_ALIAS_SET. Use ref-all pointers.
9179         * print-tree.c (print_node): Do not print DECL_POINTER_ALIAS_SET.
9180         * tree.c (restrict_base_for_decl): Remove.
9181         (init_ttree): Do not allocate it.
9182         (make_node_stat): Do not set DECL_POINTER_ALIAS_SET.  Set
9183         LABEL_DECL_UID for label decls.
9184         (copy_node_stat): Do not copy restrict information.
9185         (decl_restrict_base_lookup): Remove.
9186         (decl_restrict_base_insert): Likewise.
9187         (print_restrict_base_statistics): Likewise.
9188         (dump_tree_statistics): Do not call print_restrict_base_statistics.
9189         * tree.h (DECL_POINTER_ALIAS_SET): Remove.
9190         (DECL_POINTER_ALIAS_SET_KNOWN_P): Likewise.
9191         (struct tree_decl_common): Rename pointer_alias_set to label_decl_uid.
9192         (LABEL_DECL_UID): Adjust.
9193         (DECL_BASED_ON_RESTRICT_P): Remove.
9194         (DECL_GET_RESTRICT_BASE): Likewise.
9195         (SET_DECL_RESTRICT_BASE): Likewise.
9196         (struct tree_decl_with_vis): Remove based_on_restrict_p flag.
9197
9198         * config/i386/i386.c (ix86_gimplify_va_arg): Use ref-all pointers
9199         instead of DECL_POINTER_ALIAS_SET.
9200         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
9201         * config/s390/s390.c (s390_gimplify_va_arg): Likewise.
9202         * config/spu/spu.c (spu_gimplify_va_arg_expr): Likewise.
9203
9204 2009-06-29  Richard Guenther  <rguenther@suse.de>
9205
9206         PR tree-optimization/40579
9207         * tree-vrp.c (vrp_evaluate_conditional): Bail out early if
9208         the IL to simplify has constants that overflowed.
9209
9210 2009-06-28  Uros Bizjak  <ubizjak@gmail.com>
9211
9212         PR tree-optimization/40550
9213         * tree-vect-generic.c (expand_vector_operations_1): Compute in
9214         vector_compute_type only when the size of vector_compute_type is
9215         less than the size of type.
9216
9217 2009-06-28  Eric Botcazou  <ebotcazou@adacore.com>
9218
9219         * fold-const.c (contains_label_1): Fix comments.
9220         (contains_label_p): Do not walk trees multiple time.
9221
9222 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
9223
9224         * config/i386/i386.h (enum ix86_fpcmp_strategy): New.
9225         * config/i386/i386.md (cbranchxf4, cstorexf4, cbranch<MODEF>4,
9226         cstore<MODEF>4, mov<X87MODEF>cc): Change predicate to
9227         ix86_fp_comparison_operator.
9228         (*fp_jcc_1_mixed, *fp_jcc_1_sse, *fp_jcc_1_387, *fp_jcc_2_mixed,
9229         *fp_jcc_2_sse, *fp_jcc_2_387): Delete
9230         (*fp_jcc_3_387, *fp_jcc_4_387, *fp_jcc_5_387, *fp_jcc_6_387,
9231         *fp_jcc_7_387, *fp_jcc_8<MODEF>_387): Eliminate call to
9232         !ix86_use_fcomi_compare, change ix86_fp_jump_nontrivial_p call
9233         to !TARGET_CMOVE, change predicate to ix86_fp_comparison_operator.
9234         (related splits): Change predicate to ix86_fp_comparison_operator.
9235         * config/i386/predicates.md: Use ix86_trivial_fp_comparison_operator
9236         instead of ix86_fp_comparison_codes.
9237         (ix86_trivial_fp_comparison_operator,
9238         ix86_fp_comparison_operator): New.
9239         * config/i386/i386-protos.h (ix86_fp_comparison_strategy): New.
9240         (ix86_expand_compare): Eliminate last two parameters.
9241         (ix86_fp_jump_nontrivial_p): Kill.
9242         * config/i386/i386.c (put_condition_code): Eliminate call to
9243         ix86_fp_comparison_codes and subsequent assertion.
9244         (ix86_fp_comparison_codes): Eliminate.
9245         (ix86_fp_swap_condition): New.
9246         (ix86_fp_comparison_arithmetics_cost, ix86_fp_comparison_fcomi_cost,
9247         ix86_fp_comparison_sahf_cost, ix86_use_fcomi_compare): Consolidate
9248         into ix86_fp_comparison_cost and ix86_fp_comparison_strategy.
9249         (ix86_prepare_fp_compare_args): Use ix86_fp_comparison_strategy
9250         and ix86_fp_swap_condition.
9251         (ix86_expand_fp_compare): Eliminate code for second jump/bypass jump.
9252         Use ix86_fp_comparison_strategy.
9253         (ix86_expand_compare): Likewise.  Eliminate last two arguments.
9254         (ix86_fp_jump_nontrivial_p): Eliminate.
9255         (ix86_expand_branch): Treat SFmode/DFmode/XFmode as simple.  Adjust
9256         call to ix86_expand_compare.
9257         (ix86_split_fp_branch, ix86_expand_setcc,
9258         ix86_expand_carry_flag_compare, ix86_expand_int_movcc,
9259         ix86_expand_fp_movcc): Eliminate code for second jump/bypass jump.
9260
9261 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
9262
9263         * config/arm/arm.c (arm_final_prescan_ins): Eliminate code
9264         related to jump_clobbers.
9265         * config/arm/arm.md (conds): Remove jump_clob case.
9266         (addsi3_cbranch, addsi3_cbranch_scratch, subsi3_cbranch, two
9267         splits): Change comparison_operator to arm_comparison_operator.
9268         (*arm_buneq, *arm_bltgt, *arm_buneq_reversed, *arm_bltgt_reversed):
9269         Eliminate.
9270
9271 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
9272
9273         * dojump.c (do_compare_rtx_and_jump): Try swapping the
9274         condition for floating point modes.
9275         * expmed.c (emit_store_flag_1): Move here a bigger part
9276         of emit_store_flag.
9277         (emit_store_flag): Try swapping the condition for floating point
9278         modes.
9279         * optabs.c (emit_cmp_and_jump_insns): Cope with constant op0 better.
9280
9281 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
9282
9283         * expr.c (expand_expr_real_1): Just use do_store_flag.
9284         (do_store_flag): Drop support for TRUTH_NOT_EXPR.  Use
9285         emit_store_flag_force.
9286         * expmed.c (emit_store_flag_force): Copy here trick
9287         previously in expand_expr_real_1.  Try reversing the comparison.
9288         (emit_store_flag_1): Work if target is NULL.
9289         (emit_store_flag): Work if target is NULL, using the result mode
9290         from the comparison.  Use split_comparison, restructure final part
9291         to simplify conditionals.
9292
9293 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
9294
9295         * builtins.c (expand_errno_check): Use do_compare_rtx_and_jump.
9296         * dojump.c (do_jump): Change handling of floating-point
9297         ops to use just do_compare_and_jump.
9298         (split_comparison): New.
9299         (do_compare_rtx_and_jump): Add here logic coming previously
9300         in do_jump, using split_comparison.
9301
9302 2009-06-27  H.J. Lu  <hongjiu.lu@intel.com>
9303
9304         PR target/40489
9305         * config/ia64/ia64.c (ia64_reorg): Check NULL insn.
9306
9307 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
9308
9309         * tree-ssa-alias.c: Fix unintentional commit.
9310
9311 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
9312
9313         * passes.c (execute_one_pass): Fix unintentional commit.
9314
9315 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
9316
9317         * df-problems.c (df_set_seen, df_unset_seen): Delete.
9318         (df_rd_local_compute, df_md_local_compute): Inline them.
9319
9320         (df_md_scratch): New.
9321         (df_md_alloc, df_md_free): Allocate/free it.
9322         (df_md_local_compute): Only include live registers in init.
9323         (df_md_transfer_function): Prune the in-set computed by
9324         the confluence function, and the gen-set too.
9325
9326 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
9327
9328         PR rtl-optimization/26854
9329         * timevar.def: Remove TV_DF_RU, add TV_DF_MD.
9330         * df-problems.c (df_rd_add_problem): Fix comment.
9331         (df_md_set_bb_info, df_md_free_bb_info, df_md_alloc,
9332         df_md_simulate_artificial_defs_at_top,
9333         df_md_simulate_one_insn, df_md_bb_local_compute_process_def,
9334         df_md_bb_local_compute, df_md_local_compute, df_md_reset,
9335         df_md_transfer_function, df_md_init, df_md_confluence_0,
9336         df_md_confluence_n, df_md_free, df_md_top_dump, df_md_bottom_dump,
9337         problem_MD, df_md_add_problem): New.
9338         * df.h (DF_MD, DF_MD_BB_INFO, struct df_md_bb_info, df_md,
9339         df_md_get_bb_info): New.
9340         (DF_LAST_PROBLEM_PLUS1): Adjust.
9341
9342         * Makefile.in (fwprop.o): Include domwalk.h.
9343         * fwprop.c: Include domwalk.h.
9344         (reg_defs, reg_defs_stack): New.
9345         (bitmap_only_bit_between): Remove.
9346         (process_defs): New.
9347         (process_uses): Use reg_defs and local_md instead of
9348         bitmap_only_bit_between and local_rd.
9349         (single_def_use_enter_block): New, from build_single_def_use_links.
9350         (single_def_use_leave_block): New.
9351         (build_single_def_use_links): Remove code moved to
9352         single_def_use_enter_block, invoke domwalk.
9353         (use_killed_between): Adjust comment.
9354
9355 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
9356
9357         * bitmap.h (bitmap_ior_and_into): New.
9358         * bitmap.c (bitmap_ior_and_into): New.
9359
9360 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
9361
9362         * domwalk.h (struct dom_walk_data): Remove all callbacks except
9363         before_dom_children_before_stmts and after_dom_children_after_stmts.
9364         Rename the two remaining callbacks to just before_dom_children and
9365         after_dom_children. Remove other GIMPLE statement walking bits.
9366         * domwalk.c (walk_dominator_tree): Remove now unsupported features.
9367         * graphite.c: Do not include domwalk.h.
9368         * tree-into-ssa.c (interesting_blocks): New global.
9369         (struct mark_def_sites_global_data): Remove it and names_to_rename.
9370         (mark_def_sites, rewrite_stmt, rewrite_add_phi_arguments,
9371         rewrite_update_stmt, rewrite_update_phi_arguments): Simplify
9372         now that they're not domwalk callbacks.
9373         (rewrite_initialize_block): Rename to...
9374         (rewrite_enter_block): ... this, place after called functions.  Test
9375         interesting_blocks, call rewrite_stmt and rewrite_add_phi_arguments.
9376         (rewrite_finalize_block): Rename to...
9377         (rewrite_leave_block): ... this, place after called functions.
9378         (rewrite_update_init_block): Rename to...
9379         (rewrite_update_enter_block): ... this, place after called functions.
9380         Test interesting_blocks, call rewrite_update_stmt and
9381         rewrite_update_phi_arguments.
9382         (rewrite_update_fini_block): Rename to...
9383         (rewrite_leave_block): ... this, place after called functions.
9384         (rewrite_blocks): Remove last argument, simplify initialization of
9385         walk_data.
9386         (mark_def_sites_initialize_block): Rename to...
9387         (mark_def_sites_block): ... this, call mark_def_sites.
9388         (mark_def_sites_blocks): Remove argument, simplify initialization of
9389         walk_data.
9390         (rewrite_into_ssa): Adjust for interesting_blocks_being a global.
9391         (update_ssa): Likewise.
9392         * tree-ssa-dom.c (optimize_stmt): Simplify now that it's not a domwalk
9393         callback.
9394         (tree_ssa_dominator_optimize): Simplify initialization of walk_data.
9395         (dom_opt_initialize_block): Rename to...
9396         (dom_opt_enter_block): ... this, place after called functions.  Walk
9397         statements here, inline propagate_to_outgoing_edges.
9398         (dom_opt_finalize_block): Rename to...
9399         (dom_opt_leave_block): ... this, place after called functions.
9400         * tree-ssa-dse.c (dse_optimize_stmt): Simplify now that it's not a
9401         domwalk callback.
9402         (dse_enter_block, dse_record_phi): New.
9403         (dse_record_phis): Delete.
9404         (dse_finalize_block): Rename to...
9405         (dse_leave_block): ... this.
9406         (tree_ssa_dse): Simplify initialization of walk_data.
9407         * tree-ssa-loop-im.c (determine_invariantness, move_computations):
9408         Adjust initialization of walk_data.
9409         * tree-ssa-loop-unswitch.c: Do not include domwalk.h.
9410         * tree-ssa-loop-phiopt.c (get_non_trapping):
9411         Adjust initialization of walk_data.
9412         * tree-ssa-loop-threadedge.c: Do not include domwalk.h.
9413         * tree-ssa-uncprop.c (uncprop_into_successor_phis): Simplify now that
9414         it's not a domwalk callback.
9415         (uncprop_initialize_block): Rename to...
9416         (dse_enter_block): ... this, call uncprop_into_successor_phis.
9417         (dse_finalize_block): Rename to...
9418         (dse_leave_block): ... this.
9419         (tree_ssa_uncprop): Simplify initialization of walk_data.
9420         * Makefile.in: Adjust dependencies.
9421
9422 2009-06-27  Richard Earnshaw  <rearnsha@arm.com>
9423
9424         * arm.md (casesi): Fix test for Thumb1.
9425         (thumb1_casesi_internal_pic): Likewise.
9426         (thumb1_casesi_dispatch): Likewise.
9427
9428 2009-06-26  Daniel Gutson  <dgutson@codesourcery.com>
9429
9430         * config/arm/arm-cores.def: Added core cortex-m0.
9431         * config/arm/arm-tune.md: Regenerated.
9432         * doc/invoke.texi: Added entry for cpu ARM Cortex-M0.
9433
9434 2009-06-26  DJ Delorie  <dj@redhat.com>
9435
9436         * config/mep/mep.opt (mfar): Remove -mfar as it doesn't do anything.
9437
9438         * config/mep/mep.c (mep_bundle_insns): Account for the fact that
9439         the scheduler doesn't tag jump insns.
9440
9441 2009-06-26  H.J. Lu  <hongjiu.lu@intel.com>
9442
9443         * c-decl.c (merge_decls): Re-indent.
9444
9445 2009-06-26  Janis Johnson  <janis187@us.ibm.com>
9446
9447         PR c/39902
9448         * tree.c (real_zerop, real_onep, real_twop, real_minus_onep):
9449         Special-case decimal float constants.
9450
9451 2009-06-26  Richard Henderson  <rth@redhat.com>
9452
9453         * function.h (struct function): Add cannot_be_copied_reason,
9454         and cannot_be_copied_set.
9455         * tree-inline.c (has_label_address_in_static_1): Rename from
9456         inline_forbidden_p_2; don't set inline_forbidden_reason here.
9457         (cannot_copy_type_1): Rename from inline_forbidden_p_op; likewise
9458         don't set inline_forbidden_reason.
9459         (copy_forbidden): New function, split out of inline_forbidden_p.
9460         (inline_forbidden_p_stmt): Don't check for nonlocal labels here.
9461         (inline_forbidden_p): Use copy_forbidden.
9462         (tree_versionable_function_p): Likewise.
9463         (inlinable_function_p): Merge into tree_inlinable_function_p.
9464         (tree_function_versioning): Remap cfun->nonlocal_goto_save_area.
9465         * ipa-cp.c (ipcp_versionable_function_p): New function.
9466         (ipcp_cloning_candidate_p): Use it.
9467         (ipcp_node_modifiable_p): Likewise.
9468
9469 2009-06-26  Olatunji Ruwase  <tjruwase@google.com>
9470
9471         * builtins.c (expand_builtin_alloca): Handle builtin alloca
9472         that is marked not to be inlined. Remove flag_mudflap use.
9473         * tree-mudflap.c: Rename mf_xform_derefs to mf_xfrom_statements.
9474         (mf_xform_statements): Mark builtin alloca calls as un-inlineable.
9475
9476 2009-06-26  Steve Ellcey  <sje@cup.hp.com>
9477
9478         PR bootstrap/40338
9479         * config/pa/t-pa-hpux10 (TARGET_LIBGCC2_CFLAGS): Add -frandom-seed.
9480         * config/pa/t-pa-hpux11 (TARGET_LIBGCC2_CFLAGS): Ditto.
9481
9482 2009-06-26  Kai Tietz  <kai.tietz@onevision.com>
9483
9484         * config/i386/mingw-tls.c (__mingwthr_key_dtor): Remove for none
9485         shared libgcc.
9486         (__mingwthr_remove_key_dtor): Likewise.
9487
9488 2009-06-26  Richard Guenther  <rguenther@suse.de>
9489
9490         * tree-ssa-structalias.c (do_ds_constraint): Simplify escape handling.
9491
9492 2009-06-26  Steven Bosscher  <steven@gcc.gnu.org>
9493
9494         PR middle-end/40525
9495         * ifcvt.c (dead_or_predicable): If predicating MERGE_BB fails,
9496         try the non-cond_exec path also.
9497
9498 2009-06-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
9499
9500         PR target/40468
9501         * pa.c (branch_to_delay_slot_p, branch_needs_nop_p): New functions.
9502         (output_cbranch): Use new functions.
9503         (output_lbranch, output_bb, output_bvb, output_dbra, output_movb):
9504         Likewise.
9505
9506 2009-06-25  Michael Meissner  <meissner@linux.vnet.ibm.com>
9507             Pat Haugen  <pthaugen@us.ibm.com>
9508             Revital Eres <ERES@il.ibm.com>
9509
9510         * config/rs6000/rs6000.c (print_operand): Correct lossage message
9511         for %c error.  Add %x support to print VSX registers as a unified
9512         register set, instead of separate float and altivec registers.
9513         Switch to use VECTOR_MEM_ALTIVEC_P instead of TARGET_ALTIVEC for
9514         %y case, and add support for VSX pre-modify addresses.
9515         (output_toc): Add assert for CONST containing an integer constant
9516         in the PLUS case.
9517         (rs6000_adjust_cost): Add POWER7 support.
9518         (insn_must_be_first_in_group): Ditto.
9519         (insn_must_be_last_in_group): Ditto.
9520         (rs6000_emit_popcount): Ditto.
9521         (rs6000_vector_mode_supported_p): Ditto.
9522
9523         * config/rs6000/rs6000-protos.h (rs6000_secondary_reload_class):
9524         Change some of the functions called by macros to being called
9525         through a pointer, so debug functions can be inserted if
9526         -mdebug=addr or -mdebug=cost.
9527         (rs6000_preferred_reload_class_ptr): Ditto.
9528         (rs6000_secondary_reload_class_ptr): Ditto.
9529         (rs6000_secondary_memory_needed_ptr): Ditto.
9530         (rs6000_cannot_change_mode_class_ptr): Ditto.
9531         (rs6000_secondary_reload_inner): Ditto.
9532         (rs6000_legitimize_reload_address): Ditto.
9533         (rs6000_legitimize_reload_address_ptr): Ditto.
9534         (rs6000_mode_dependent_address): Ditto.
9535         (rs6000_mode_dependent_address_ptr): Ditto.
9536
9537         * config/rs6000/rs6000.c (reg_offset_addressing_ok_p): New
9538         function to return true if the mode allows reg + integer
9539         addresses.
9540         (virtual_stack_registers_memory_p): New function to return true if
9541         the address refers to a virtual stack register.
9542         (rs6000_legitimate_offset_address_p): Move code to say whether a
9543         mode supports reg+int addressing to reg_offset_addressing_ok_p and
9544         call it.
9545         (rs6000_legitimate_address_p): Add checks for modes that only can
9546         do reg+reg addressing.  Start adding VSX support.
9547         (rs6000_legitimize_reload_address): Ditto.
9548         (rs6000_legitimize_address): Ditto.
9549         (rs6000_debug_legitimate_address_p): New debug functions for
9550         -mdebug=addr and -mdebug=cost.
9551         (rs6000_debug_rtx_costs): Ditto.
9552         (rs6000_debug_address_costs): Ditto.
9553         (rs6000_debug_adjust_cost): Ditto.
9554         (rs6000_debug_legitimize_address): Ditto.
9555         (rs6000_legitimize_reload_address_ptr): Point to call normal
9556         function or debug function.  Make functions called via pointer
9557         static.
9558         (rs6000_mode_dependent_address_ptr): Ditto.
9559         (rs6000_secondary_reload_class_ptr): Ditto.
9560         (rs6000_hard_regno_mode_ok): Add preliminary VSX support.
9561         (rs6000_emit_move): Add -mdebug=addr support.  Change an abort
9562         into a friendlier error.
9563         (rs6000_init_builtins): Add initial VSX support.
9564         (rs6000_adjust_cost): Fix some spacing issues.
9565
9566         * config/rs6000/rs6000.h (enum reg_class): Add VSX_REGS.
9567         (REG_CLASS_NAMES): Ditto.
9568         (REG_CLASS_CONTENTS): Ditto.
9569         (PREFERRED_RELOAD_CLASS): Move from a macro to calling through a
9570         pointer, to add -mdebug=addr support.
9571         (CANNOT_CHANGE_MODE_CLASS): Ditto.
9572         (SECONDARY_RELOAD_CLASS): Call through a pointer to add
9573         -mdebug=addr support.
9574         (LEGITIMIZE_RELOAD_ADDRESS): Ditto.
9575         (GO_IF_MODE_DEPENDENT_ADDRESS): Ditto.
9576         (enum rs6000_builtins): Add RS6000_BUILTIN_BSWAP_HI.
9577
9578         * config/rs6000/rs6000.md (bswaphi*): Add support for swapping
9579         16-bit values.
9580         (bswapsi*): Set attribute types for load/store.  Add combiner
9581         patterns to eliminate zero extend on 64-bit.
9582         (bswapdi*): Add support for swapping 64-bit values.  Use ldbrx and
9583         stdbrx if the hardware supports those instructions.
9584
9585 2009-06-25  Ian Lance Taylor  <iant@google.com>
9586
9587         * doc/invoke.texi (Option Summary): Mention -static-libstdc++.
9588         (Link Options): Document -static-libstdc++.
9589
9590 2009-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9591
9592         PR target/38731
9593         * config/rs6000/rs6000.c (LOCAL_ALIGNMENT): Redefine to just use
9594         DATA_ALIGNMENT instead.
9595
9596 2009-06-25  Richard Guenther  <rguenther@suse.de>
9597
9598         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Disambiguate
9599         indirect references against the callused/escaped solutions.
9600         (call_may_clobber_ref_p_1): Likewise.
9601
9602 2009-06-25  Martin Jambor  <mjambor@suse.cz>
9603
9604         PR tree-optimization/40493
9605         * tree-sra.c (sra_modify_expr): Correct BIT_FIELD_REF argument numbers.
9606         (enum unscalarized_data_handling): New type.
9607         (handle_unscalarized_data_in_subtree): Return what has been done.
9608         (load_assign_lhs_subreplacements): Handle left flushes differently.
9609         (sra_modify_assign): Use unscalarized_data_handling, simplified
9610         condition determining whether to remove the statement.
9611
9612 2009-06-25  Basile Starynkevitch  <basile@starynkevitch.net>
9613
9614         * doc/plugins.texi (Building GCC plugins): Correct typo in Makefile
9615         excerpt - @ should be doubled for texinfo.
9616
9617 2009-06-24  Ian Lance Taylor  <iant@google.com>
9618
9619         * config/arc/arc.c: Include "df.h".
9620         (arc_attribute_table): Make static.  Move higher in file.
9621         (arc_address_cost): Call SMALL_INT on INTVAL, not rtx.
9622         (output_shift): Initialize n later to avoid warning.
9623         * config/arm/arm.c (arm_attribute_table): Make static.  Move
9624         higher in file.
9625         * config/avr/avr.c (avr_attribute_table): Make static.  Move
9626         higher in file.
9627         (reg_class_tab): Change array type from int to enum reg_class.
9628         (avr_jump_mode): Change GET_MODE to GET_CODE when checking for
9629         LABEL_REF.
9630         (out_tsthi, ashlhi3_out): Don't use AS2 with "or" or "and".
9631         (lshrhi3_out): Likewise.
9632         (class_likely_spilled_p): Change return type to bool.
9633         (avr_rtx_costs): Use local code variable with enum type.
9634         * config/avr/avr.md (movmemhi): Use add_reg_note.
9635         (andhi3, andsi3): Don't use AS2 with "and".
9636         (iorhi3, iorsi3): Don't use AS2 with "or".
9637         * config/avr/avr-protos.h (class_likely_spilled_p): Update declaration.
9638         * config/crx/crx.c: Include "df.h".
9639         (crx_attribute_table): Make static.
9640         * config/m32r/m32r.c: Include "df.h".
9641         (m32r_attribute_table): Make static.  Move higher in file.
9642         (pop): Use add_reg_note.
9643         (block_move_call): Change 0 to LCT_NORMAL in function call.
9644         * config/m32r/m32r.md (movsi_insn): Remove unused local value.
9645         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Likewise.
9646         * config/m32r/m32r-protos.h (m32r_compute_function_type): Always
9647         declare, not just when TREE_CODE is defined.
9648         * config/m68hc11/m68hc11.c: Include "expr.h".
9649         (m68hc11_attribute_table): Make static.  Move higher in file.
9650         (m68hc11_small_indexed_indirect_p): Change 0 to VOIDmode in
9651         function call.
9652         (m68hc11_register_indirect_p): Likewise.
9653         (m68hc11_function_arg_padding): Change return type to enum
9654         direction.
9655         (emit_move_after_reload): Use add_reg_note.
9656         (m68hc11_emit_logical): Change code parameter to enum rtx_code.
9657         (m68hc11_split_logical): Likewise.
9658         (m68hc11_rtx_costs): Add local code_and outer_code variables with
9659         enum type.
9660         * config/m68hc11/predicates.md (reg_or_some_mem_operand): Change 0
9661         to VOIDmode in function call.
9662         * config/m68hc11/m68hc11-protos.h: Don't check TREE_CODE to see if
9663         tree is defined.
9664         (m68hc11_split_logical): Update declaration.
9665         (m68hc11_function_arg_padding): Update declaration.
9666         * config/mcore/mcore.c (regno_reg_class): Change form array of int
9667         to array of enum reg_class.
9668         (mcore_attribute_table): Make static.  Move higher in file.
9669         (mcore_rtx_costs): Add cast to enum type.
9670         * config/mcore/mcore.h (regno_reg_class): Update declaration.
9671         (GO_IF_LEGITIMATE_INDEX): Add cast to avoid warning.
9672         * config/sh/sh.c (sh_attribute_table): Make static.  Move higher
9673         in file.
9674         * config/sh/predicates.md (trapping_target_operand): Rename and to
9675         and_expr.
9676         * config/sparc/sparc.c (sparc_attribute_table): Make static.  Move
9677         higher in file.
9678         * config/spu/spu.c (spu_attribute_table): Make static.  Move
9679         higher in file.
9680         * config/v850/v850.c (v850_attribute_table): Make static.  Move
9681         higher in file.
9682         (v850_rtx_costs): Use local code with enum type.
9683         (expand_epilogue): Add cast.
9684         * config/v850/v850-c.c (ghs_pragma_section): Initialize repeat.
9685
9686 2009-06-23  Takashi YOSHII  <yoshii.takashi@renesas.com>
9687
9688         PR target/40515
9689         * doc/invoke.texi (SH Options): Document -m2a, -m2a-single,
9690         -m2a-single-only and -m2a-nofpu.
9691         * config/sh/sh.opt: Document m2a generates FPU code.
9692
9693 2009-06-24  Anatoly Sokolov  <aesok@post.ru>
9694
9695         * defaults.h (CAN_ELIMINATE): Provide default.
9696         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
9697         * config/alpha/alpha.h (CAN_ELIMINATE): Delete.
9698         * config/m32c/m32c.h (CAN_ELIMINATE): Delete.
9699         * config/spu/spu.h (CAN_ELIMINATE): Delete.
9700         * config/xtensa/xtensa.h (CAN_ELIMINATE): Delete.
9701         * config/moxie/moxie.h (CAN_ELIMINATE): Delete.
9702         * config/cris/cris.h (CAN_ELIMINATE): Delete.
9703         * config/mn10300/mn10300.h (CAN_ELIMINATE): Delete.
9704         * config/pa/pa64-linux.h (CAN_ELIMINATE): Delete.
9705         * config/mmix/mmix.h (CAN_ELIMINATE): Delete.
9706
9707 2009-06-24  DJ Delorie  <dj@redhat.com>
9708
9709         * mep-ext-cop.cpu: Fix copyright notice.
9710         * mep-default: Fix copyright notice.
9711         * mep-core: Fix copyright notice.
9712         * mep: Fix copyright notice.
9713         * mep-ivc2: Fix copyright notice.
9714         * mep-c5: Fix copyright notice.
9715
9716 2009-06-24  Denis Chertykov  <chertykov@gmail.com>
9717
9718         * doc/contrib.texi (Contributors):
9719
9720 2009-06-24  Andreas Krebbel  <krebbel1@de.ibm.com>
9721
9722         PR middle-end/40501
9723         * tree-ssa-math-opts.c (execute_optimize_bswap): Convert the bswap
9724         src and dst operands if necessary.
9725
9726 2009-06-23  DJ Delorie  <dj@redhat.com>
9727
9728         Add MeP port.
9729         * config.gcc: Add mep support.
9730         * recog.c: Resurrect validate_replace_rtx_subexp().
9731         * recog.h: Likewise.
9732         * config/mep/: Add new port:
9733         * config/mep/constraints.md: New file.
9734         * config/mep/default.h: New file.
9735         * config/mep/intrinsics.h: New file.
9736         * config/mep/intrinsics.md: New file.
9737         * config/mep/ivc2-template.h: New file.
9738         * config/mep/mep-c5.cpu: New file.
9739         * config/mep/mep-core.cpu: New file.
9740         * config/mep/mep-default.cpu: New file.
9741         * config/mep/mep-ext-cop.cpu: New file.
9742         * config/mep/mep-intrin.h: New file.
9743         * config/mep/mep-ivc2.cpu: New file.
9744         * config/mep/mep-lib1.asm: New file.
9745         * config/mep/mep-lib2.c: New file.
9746         * config/mep/mep-pragma.c: New file.
9747         * config/mep/mep-protos.h: New file.
9748         * config/mep/mep-tramp.c: New file.
9749         * config/mep/mep.c: New file.
9750         * config/mep/mep.cpu: New file.
9751         * config/mep/mep.h: New file.
9752         * config/mep/mep.md: New file.
9753         * config/mep/mep.opt: New file.
9754         * config/mep/predicates.md: New file.
9755         * config/mep/t-mep: New file.
9756
9757 2009-06-23  Ian Lance Taylor  <iant@google.com>
9758
9759         * configure.ac: Invoke AC_PROG_CXX.  Separate C specific warnings
9760         from loose_warn into c_loose_warn and from strict_warn into
9761         c_strict_warn.  Set and substitute warn_cxxflags.  Check for
9762         --enable-build-with-cxx.  Set and substitute
9763         ENABLE_BUILD_WITH_CXX.  Set and substitute HOST_LIBS.
9764         * Makefile.in (CXXFLAGS): New variable.
9765         (C_LOOSE_WARN, C_STRICT_WARN): New variables.
9766         (GCC_WARN_CFLAGS): Add $(C_LOOSE_WARN).  Add $(C_STRICT_WARN) if
9767         the default is the same as $(STRICT_WARN).
9768         (GCC_WARN_CXXFLAGS, WARN_CXXFLAGS): New variables.
9769         (CXX): New variable.
9770         (COMPILER): New value if ENABLE_BUILD_WITH_CXX.
9771         (COMPILER_FLAGS, LINKER, LINKER_FLAGS): Likewise.
9772         (ALL_COMPILERFLAGS, ALL_LINKERFLAGS): Likewise.
9773         (HOST_LIBS): New variable.
9774         (GCC_CFLAGS): Add $(C_LOOSE_WARN).
9775         (ALL_CXXFLAGS): New variable.
9776         (LIBS, BACKENDLIBS): Add $(HOST_LIBS).
9777         * doc/install.texi (Configuration): Document
9778         --enable-build-with-cxx, --with-stage1-ldflags,
9779         --with-stage1-libs, --with-boot-ldflags, --with-boot-libs.
9780         * configure: Rebuild.
9781
9782 2009-06-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
9783
9784         * config/arm/arm.c (arm_override_options): Fix braces and formatting
9785         from previous commit.
9786
9787 2009-06-23  Ian Lance Taylor  <iant@google.com>
9788
9789         * Makefile.in ($(out_object_file)): Depend upon $(DF_H).
9790
9791 2009-06-23  Ian Lance Taylor  <iant@google.com>
9792
9793         * reload.c (alternative_allows_const_pool_ref): Mark mem parameter
9794         with ATTRIBUTE_UNUSED.
9795
9796 2009-06-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
9797             Pat Haugen  <pthaugen@us.ibm.com>
9798             Revital Eres  <eres@il.ibm.com>
9799
9800         * config.in (HAVE_AS_POPCNTD): Add default definition.
9801         (HAVE_AS_LWSYNC): Ditto.
9802
9803         * configure.ac (gcc_cv_as_powerpc_mfpgpr): Provide real binutils
9804         release number.
9805         (gcc_cv_as_powerpc_cmpb): Ditto.
9806         (gcc_cv_as_powerpc_dfp): Ditto.
9807         (gcc_cv_as_powerpc_vsx): Ditto.
9808         (gcc_cv_as_powerpc_popcntd): Add feature test for assembler
9809         supporting the popcntd/lwsync instructions.
9810         (gcc_cv_as_powerpc_lwsync): Ditto.
9811         * configure: Regenerate.
9812
9813         * config/rs6000/aix53.h (ASM_CPU_SPEC): Add support for
9814         -mcpu=native and -mcpu=power7.
9815         * config/rs6000/aix61.h (ASM_CPU_SPEC): Ditto.
9816
9817         * config/rs6000/linux64.opt (-mprofile-kernel): Move switch to be
9818         a variable instead of a mask to reduce the number of mask bits.
9819         * config/rs6000/sysv4.opt (-mbit-align): Ditto.
9820         (-mbit-word): Ditto.
9821         (-mregnames): Ditto.
9822         * config/rs6000/rs6000.opt (-mupdate): Ditto.
9823         (-mfused-madd): Ditto.
9824
9825         * config/rs6000/rs6000.opt (-mpopcntd): New switch for non-VSX ISA
9826         2.06 instructions.
9827         (-mvsx): New switch for VSX instructions.
9828         (-misel): Move from a variable to a mask to allow it to be set by
9829         -mcpu=.
9830
9831         * config/rs6000/rs6000-protos.h (rs6000_hard_regno_nregs): Change
9832         function declaration to an array declaration.
9833         (rs6000_hard_regno_nregs): New external array declaration.
9834
9835         * config/rs6000/t-rs6000 (MD_INCLUDES): Define, add all of the .md
9836         files included by rs6000.md.
9837
9838         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Use
9839         SET_PROFILE_KERNEL macro to reset the -mprofile-kernel switch.
9840
9841         * config/rs6000/rs6000.c (rs6000_isel): Delete, -misel moved to be
9842         a target mask.
9843         (rs6000_debug_reg): New -mdebug= variables.
9844         (rs6000_debug_addr): Ditto.
9845         (rs6000_debug_cost): Ditto.
9846         (rs6000_pmode): New variable to hold Pmode.
9847         (rs6000_pointer_size): New variable to hold POINTER_SIZE.
9848         (rs6000_class_max_nregs): New array to hold CLASS_MAX_NREGS
9849         calculated at compiler start.
9850         (rs6000_hard_regno_nregs): Change function to an array which holds
9851         HARD_REGNO_NREGS calculated at compiler start.
9852         (rs6000_explicit_options): Delete isel field.
9853         (rs6000_vector_unit): New array to hold which vector unit
9854         supports arithmetic options for a given type.
9855         (rs6000_vector_mem): New array to hold which vector unit supports
9856         memory reference operations for a given type.
9857         (rs6000_vector_align): New array to given the alignment of each
9858         vector type.
9859         (power7_cost): New basic costs for power7.
9860         (SET_PROFILE_KERNEL): New macro for resetting -mprofile-kernel.
9861         (rs6000_hard_regno_nregs_internal): New function, moved from
9862         HARD_REGNO_NREGS, to calculate the number of registers each hard
9863         register takes for each type.
9864         (rs6000_debug_reg_print): New function for -mdebug=reg support.
9865         (rs6000_debug_vector_unit): New array, map rs6000_vector to string.
9866         (+rs6000_init_hard_regno_mode_ok): New function, move calculation
9867         of HARD_REGNO_NREGS, CLASS_MAX_NREGS, REGNO_REG_CLASS, and vector
9868         unit information here so it is calculated once at compiler startup
9869         time.
9870         (rs6000_override_options): Make -misel a target mask.  Add more
9871         power7 target masks.  Setup Pmode and POINTER_SIZE.  Add initial
9872         VSX support.  Add support for -mdebug=reg, -mdebug=addr, and
9873         -mdebug=cost.
9874         (POWERPC_MASKS): Add MASK_POPCNTD, MASK_VSX, and MASK_ISEL.
9875         (rs6000_handle_option): Move -misel from variable to target mask.
9876         (rs6000_builtin_mask_for_load): Add VSX support.
9877         (rs6000_conditional_register_usage): Ditto.
9878         (USE_ALTIVEC_FOR_ARG_P): Ditto.
9879         (function_arg_boundary): Ditto.
9880         (rs6000_expand_builtin): Ditto.
9881         (def_builtin): Make abort message a little friendlier.
9882         (rs6000_emit_int_cmove): Add support for 64-bit isel.
9883
9884         * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Depend on the
9885         assembler support the popcntd instruction instead of a vsx
9886         instruction to enable power7 support.
9887         (ASM_CPU_SPEC): Add support for -mcpu=native and -mcpu=power7.
9888         (EXTRA_SPECS): Add ASM_CPU_NATIVE_SPEC to allow passing the right
9889         option to the assembler if -mcpu=native.
9890         (ASM_CPU_NATIVE_SPEC): Ditto.
9891         (TARGET_POPCNTD): If assembler doesn't support popcntd, turn off
9892         ISA 2.06 features.
9893         (TARGET_LWSYNC_INSTRUCTION): Define whether it is safe to issue
9894         the lwsync instruction.
9895         (enum processor_type): Add PROCESSOR_POWER7.
9896         (rs6000_debug_reg): New -mdebug= options.
9897         (rs6000_debug_addr): Ditto.
9898         (rs6000_debug_cost): Ditto.
9899         (rs6000_isel): Delete.
9900         (enum rs6000_vector): New enum to say what vector unit we have.
9901         (VECTOR_UNIT_*): New macros to say which vector unit has
9902         arithmetic operations for a given type.
9903         (VECTOR_MEM_*): New macros to say which vector unit has memory
9904         operations for a given type.
9905         (TARGET_LDBRX): Whether the machine supports the ldbrx
9906         instruction.
9907         (TARGET_ISEL): Delete, -misel moved to be a mask.
9908         (TARGET_ISEL64): New macro for 64-bit isel support.
9909         (UNITS_PER_VSX_WORD): New macro.
9910         (POINTER_SIZE): Move to be an external variable, rather than
9911         calculating whether we are generating 32 ot 64-bit code.
9912         (Pmode): Ditto.
9913         (STACK_BOUNDARY): Add VSX support.
9914         (LOCAL_ALIGNMENT): Ditto.
9915         (SLOW_UNALIGNED_ACCESS): Ditto.
9916         (VSX_REGNO_P): New macro for VSX support.
9917         (VFLOAT_REGNO_P): Ditto.
9918         (VINT_REGNO_P): Ditto.
9919         (VLOGICAL_REGNO_P): Ditto.
9920         (VSX_VECTOR_MODE): Ditto.
9921         (VSX_SCALAR_MODE): Ditto.
9922         (VSX_MODE): Ditto.
9923         (VSX_MOVE_MODE): Ditto.
9924         (VSX_REG_CLASS_P): Ditto.
9925         (HARD_REGNO_NREGS): Instead of calling a function, use an array
9926         lookup.
9927         (UNITS_PER_SIMD_WORD): Add VSX support.
9928         (MODES_TIEABLE_P): Ditto.
9929         (STARTING_FRAME_OFFSET): Ditto.
9930         (STACK_DYNAMIC_OFFSET): Ditto.
9931         (EPILOGUE_USES): Ditto.
9932         (REGNO_REG_CLASS): Move to array lookup.
9933         (CLASS_MAX_NREGS): Ditto.
9934         (rs6000_vector_reg_class): Add declaration.
9935         (ADDITIONAL_REGISTER_NAMES): Add VSX names for the registers that
9936         overlap with the floating point and Altivec registers.
9937
9938         * config/rs6000/e500.h (CHECK_E500_OPTIONS): Disallow -mvsx.
9939
9940         * config/rs6000/driver-rs6000.c (asm_names): New static array to
9941         give the appropriate asm switches if -mcpu=native.
9942         (host_detect_local_cpu): Add support for "asm".
9943         (host_detect_local_cpu): Follow GNU code guidelines for name.
9944
9945         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Move
9946         -mbit-word to a variable instead of being a target mask.
9947
9948         * config/rs6000/sync.md (lwsync): If the assembler supports it,
9949         emit the lwsync instruction instead of emitting the instruction as
9950         an integer constant.
9951
9952         * config/rs6000/spe.md (spe_fixuns_truncdfsi2): Rename from
9953         fixuns_trundfsi2, move expander into rs6000.md.
9954
9955         * config/rs6000/rs6000.md (cpu): Add power7.
9956         (sel, *ptrsize): New mode attributes for 32/64-bit isel.
9957         (logical predicate patterns): Change the single instruction
9958         primitives that set CR0 to be fast_compare instead of compare.
9959         (norsi*): Ditto.
9960         (popcntwsi2): Add support for ISA 2.06 popcount instructions.
9961         (popcntddi2): Ditto.
9962         (popcount<mode>): Ditto.
9963         (floating multiply/add insns): Name the floating point
9964         multiply/add insns.
9965         (isel_signed_<mode>): Add support for -misel on 64-bit systems.
9966         (isel_unsigned_<mode>): Ditto.
9967         (fixuns_trundfsi2): Move expander here from spe.md.
9968         (smindi3): Define if we have -misel on 64-bit systems.
9969         (smaxdi3): Ditto.
9970         (umindi3): Ditto.
9971         (umaxdi3): Ditto.
9972
9973 2009-06-23  Anatoly Sokolov  <aesok@post.ru>
9974
9975         * config.gcc (avr-*-rtems*, avr-*-*): Set extra_gcc_objs and
9976         extra_objs.
9977         * config/avr/avr.c (avr_current_device): New variable.
9978         (avr_arch_types, avr_mcu_types): Move to avr-deveces.c.
9979         (avr_arch, mcu_type_s): Move to avr.h.
9980         * config/avr/avr.h (base_arch_s). Add reserved2, arch_name and
9981         default_data_section_start fields.
9982         (avr_arch): Moved from avr.c.
9983         (mcu_type_s): Moved from avr.c. Add short_sp, data_section_start and
9984         library_name fields.
9985         (avr_current_device, avr_mcu_types, avr_arch_types,
9986         avr_device_to_arch, avr_device_to_data_start,
9987         avr_device_to_startfiles, avr_device_to_devicelib): Declare.
9988         (EXTRA_SPEC_FUNCTIONS): Define.
9989         (LINK_SPEC): Remove device name to '-m ...' and '-Tdata ...' linker
9990         options mapping. Use device_to_arch and device_to_data_start insted.
9991         (STARTFILE_SPEC): Use device_to_startfile instead of crt_binutils.
9992         (CRT_BINUTILS_SPECS, EXTRA_SPECS): Remove.
9993         * config/avr/t-avr (driver-avr.o, avr-devices.o): New rules.
9994         * config/avr/driver-avr.c: New file.
9995         * config/avr/avr-devices.c: New file.
9996
9997 2009-06-23  Jakub Jelinek  <jakub@redhat.com>
9998
9999         * var-tracking.c (unshare_variable): Force initialized to
10000         be VAR_INIT_STATUS_INITIALIZED unless flag_var_tracking_uninit.
10001         (set_variable_part): Likewise.
10002         (struct variable_union_info): Remove pos_src field.
10003         (vui_vec, vui_allocated): New variables.
10004         (variable_union): Pass VAR_INIT_STATUS_UNKNOWN to unshare_variable
10005         unconditionally.  Avoid XCVECNEW/free for every sorting, for dst_l
10006         == 1 use a simpler sorting algorithm.  Compute pos field right
10007         away, don't fill in pos_src.  For dst_l == 2 avoid qsort.
10008         Avoid quadratic comparison if !flag_var_tracking_uninit.
10009         (variable_canonicalize): Pass VAR_INIT_STATUS_UNKNOWN to
10010         unshare_variable unconditionally.
10011         (dataflow_set_different_2): Removed.
10012         (dataflow_set_different): Don't traverse second hash table.
10013         (compute_bb_dataflow): Pass VAR_INIT_STATUS_UNINITIALIZED
10014         unconditionally to var_reg_set or var_mem_set.
10015         (emit_notes_in_bb): Likewise.
10016         (delete_variable_part): Pass VAR_INIT_STATUS_UNKNOWN to
10017         unshare_variable.
10018         (emit_note_insn_var_location): Don't set initialized to
10019         VAR_INIT_STATUS_INITIALIZED early.
10020         (vt_finalize): Free vui_vec if needed, clear vui_vec and
10021         vui_allocated.
10022         * rtl.c (rtx_equal_p): Don't implement on top of rtx_equal_p_cb.
10023
10024         * tree-object-size.c (addr_object_size): Instead of checking
10025         for non-NULL TREE_CHAIN of the FIELD_DECL check that there
10026         are no FIELD_DECLs following it.
10027
10028 2009-06-23  Andreas Krebbel  <krebbel1@de.ibm.com>
10029
10030         * tree-ssa-math-opts.c (find_bswap): Increase the search depth in
10031         order to match bswaps with signed source operands.
10032
10033 2009-06-23  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
10034
10035         * sdbout.c (sdbout_one_type): Fix braces in switch.
10036
10037 2009-06-23  Richard Guenther  <rguenther@suse.de>
10038
10039         * tree-ssa-structalias.c (struct variable_info): Add is_global_var
10040         member.
10041         (var_anything, anything_tree, var_nothing, nothing_tree, var_readonly,
10042         readonly_tree, var_escaped, escaped_tree, var_nonlocal, nonlocal_tree,
10043         var_callused, callused_tree, var_storedanything, storedanything_tree,
10044         var_integer, integer_tree): Remove global variables.
10045         (new_var_info): Do not pass new id, append the new var to the
10046         global variable vector.
10047         (do_ds_constraint): Use is_global_var member of the variable-info.
10048         (new_scalar_tmp_constraint_exp): Adjust.
10049         (create_function_info_for): Likewise.
10050         (create_variable_info_for): Likewise.
10051         (find_what_var_points_to): Remove dead code.
10052         (init_base_vars): Simplify.
10053         (compute_points_to_sets): Adjust.
10054
10055 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
10056
10057         * combine.c (try_combine): Dump information about the insns we're
10058         combining.
10059
10060 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
10061
10062         * combine.c (combine_simplify_rtx): Remove TRULY_NOOP_TRUNCATION
10063         check when calling force_to_mode on TRUNCATE's operand.
10064
10065 2009-06-22  Ian Lance Taylor  <iant@google.com>
10066
10067         * config/rs6000/rs6000.opt: Move msched-epilog before msched-prolog.
10068
10069 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
10070
10071         * config/arm/arm.md (prologue_use): Set length of fake insn to 0.
10072
10073 2009-06-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10074
10075         * doc/invoke.texi (Link Options): -nodefaultlibs and -nostdlib
10076         override library linkage flags such as -static-libgcc or
10077         -shared-libgcc.
10078
10079 2009-06-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
10080
10081         * config/m68k/m68k-devices.def: Add line for MCF5221x.
10082
10083 2009-06-22  Ian Lance Taylor  <iant@google.com>
10084
10085         * config/linux.opt: Put mglibc ahead of muclibc.
10086
10087         * c-decl.c (diagnose_mismatched_decls): Add -Wc++-compat warning
10088         for duplicate decls.
10089
10090 2009-06-22  Matthias Klose  <doko@ubuntu.com>
10091
10092         * Makefile.in (install-plugin): Remove extra `/' after $(DESTDIR).
10093
10094 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
10095
10096         PR objc/28050
10097         * c-parser.c (c_parser_objc_message_args): Return error_mark_node
10098         instead of NULL if a parser error occurs.
10099
10100 2009-06-22  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
10101
10102         * dwarf2out.c (dwarf2_debug_hooks): Initialize
10103         non-DWARF2_DEBUGGING_INFO version.
10104
10105 2009-06-22  Kai Tietz  <kai.tietz@onevision.com>
10106
10107         * config.gcc (i[34567]86-*-mingw*, x86_64-*-mingw*): Add
10108         i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file.
10109
10110         * config/i386/mingw32.h (LIBGCC2_HAS_TF_MODE): Define.
10111         (LIBGCC2_TF_CEXT): Define.
10112         (TF_SIZE): Define.
10113
10114 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
10115
10116         PR target/40463
10117         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Fix definition.
10118
10119 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
10120
10121         * config/arm/arm.c (arm_override_options): Disable
10122         -mcaller-super-interworking and -mcallee-super-interworking.
10123         * doc/invoke.texi (ARM Options): Document this.
10124
10125 2009-06-22  Nathan Sidwell  <nathan@codesourcery.com>
10126
10127         * config/arm/arm.c (arm_print_operand): Deal with HIGH.
10128         * config/arm/constraints.md (j): New constraint for movw operands.
10129         (N): Remove thumb2 meaning.
10130         * config/arm/arm.md (*arm_movw): Delete.
10131         (*arm_movsi_insn): Use j constraint for movw instead of N constraint.
10132         * config/arm/vfp.md (*arm_movsi_vfp, *thumb2_movsi_vfp): Likewise.
10133         * config/arm/thumb2.md (*thumb2_movsi_insn): Likewise.
10134
10135 2009-06-22  Martin Jambor  <mjambor@suse.cz>
10136
10137         PR tree-optimization/40492
10138         * tree-sra.c (sra_modify_assign): Pass zero offsets to
10139         build_ref_for_offset.
10140
10141 2009-06-22  Shujing Zhao  <pearly.zhao@oracle.com>
10142
10143         * alias.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P, CALL_P, NOTE_P and
10144         JUMP_TABLE_DATA_P predicates where applicable.
10145         * auto-inc-dec.c: Ditto.
10146         * builtins.c: Ditto.
10147         * caller-save.c: Ditto.
10148         * calls.c: Ditto.
10149         * cfgcleanup.c: Ditto.
10150         * cfglayout.c: Ditto.
10151         * cfgrtl.c: Ditto.
10152         * combine.c: Ditto.
10153         * combine-stack-adj.c: Ditto.
10154         * cse.c: Ditto.
10155         * cselib.c: Ditto.
10156         * dbxout.c: Ditto.
10157         * df-scan.c: Ditto.
10158         * dse.c: Ditto.
10159         * dwarf2asm.c: Ditto.
10160         * dwarf2out.c: Ditto.
10161         * emit-rtl.c: Ditto.
10162         * except.c: Ditto.
10163         * explow.c: Ditto.
10164         * expmed.c: Ditto.
10165         * expr.c: Ditto.
10166         * final.c: Ditto.
10167         * function.c: Ditto.
10168         * fwprop.c: Ditto.
10169         * gcse.c: Ditto.
10170         * genpreds.c: Ditto.
10171         * genrecog.c: Ditto.
10172         * ifcvt.c: Ditto.
10173         * ira-costs.c: Ditto.
10174         * ira-lives.c: Ditto.
10175         * jump.c: Ditto.
10176         * loop-iv.c: Ditto.
10177         * lower-subreg.c: Ditto.
10178         * modulo-sched.c: Ditto.
10179         * optabs.c: Ditto.
10180         * postreload.c: Ditto.
10181         * print-rtl.c: Ditto.
10182         * recog.c: Ditto.
10183         * reginfo.c: Ditto.
10184         * regmove.c: Ditto.
10185         * reload1.c: Ditto.
10186         * reload.c: Ditto.
10187         * reorg.c: Ditto.
10188         * rtlanal.c: Ditto.
10189         * rtl.c: Ditto.
10190         * sched-vis.c: Ditto.
10191         * sdbout.c: Ditto.
10192         * sel-sched-ir.c: Ditto.
10193         * simplify-rtx.c: Ditto.
10194         * targhooks.c: Ditto.
10195         * var-tracking.c: Ditto.
10196         * vmsdbgout.c: Ditto.
10197
10198 2009-06-22  Matthias Klose  <doko@ubuntu.com>
10199
10200         * Makefile.in (install-plugin): Always use DESTDIR.
10201
10202 2009-06-22  Olivier Hainque  <hainque@adacore.com>
10203
10204         * config/pa/pa.c (output_call): Don't optimize post call jumps
10205         into return address adjustments if the call may throw.
10206
10207 2009-06-21  Richard Earnshaw  <rearnsha@arm.com>
10208
10209         * arm.c (thumb1_output_casesi): New function.
10210         * arm.h (CASE_VECTOR_PC_RELATIVE): Thumb-1 code is also relative if
10211         optimizing for size or PIC.
10212         (CASE_VECTOR_SHORTEN_MODE): Handle thumb-1.
10213         * arm.md (UNSPEC_THUMB1_CASESI): New constant.
10214         (casesi): Handle Thumb-1 when optimizing for size or PIC.
10215         (thumb1_casesi_internal_pic): New expand rule.
10216         (thumb1_casesi_dispatch): New pattern.
10217         * aout.h (ASM_OUTPUT_ADDR_DIFF_ELT): Use shortened vectors for
10218         thumb-1 mode.
10219         * coff.h (JUMP_TABLES_IN_TEXT_SECTION): Thumb-1 jump tables are now
10220         in the text seciton when PIC or optimizing for size.
10221         * elf.h (JUMP_TABLES_IN_TEXT_SECTION): Likewise.
10222         * lib1funcs.asm ([__ARM_EABI__]): Add an attribute describing stack
10223         preservation properties of code.
10224         (__gnu_thumb1_case_sqi, __gnu_thumb1_case_uqi): New functions.
10225         (__gnu_thumb1_case_shi, __gnu_thumb1_case_uhi): New functions.
10226         (__gnu_thumb1_case_si): New function.
10227         * t-arm (LIB1ASMSRC): Define here.
10228         (LIB1ASMFUNCS): Add some common functions.
10229         * t-arm-elf (LIB1ASMSRC): Delete.
10230         (LIB1ASMFUNCS): Append to existing set.
10231         * t-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
10232         * t-strongarm-elf (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
10233         * t-symbian (LIB1ASMFUNCS): Likewise.
10234         * t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
10235         * t-wince-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
10236
10237 2009-06-21  Richard Guenther  <rguenther@suse.de>
10238
10239         PR tree-optimization/38729
10240         * tree-ssa-loop-niter.c (find_loop_niter_by_eval): Restrict
10241         to loops with a single exit if -fno-expensive-optimizations.
10242
10243 2009-06-21  Jakub Jelinek  <jakub@redhat.com>
10244
10245         * var-tracking.c (struct shared_hash_def, shared_hash): New types.
10246         (dataflow_set): Change vars type from htab_t to shared_hash.
10247         (shared_hash_pool, empty_shared_hash): New variables.
10248         (vars_clear): Removed.
10249         (shared_hash_shared, shared_hash_htab, shared_hash_copy,
10250         shared_hash_find_slot_unshare, shared_hash_find_slot,
10251         shared_hash_find_slot_noinsert, shared_hash_find): New
10252         static inlines.
10253         (shared_hash_unshare, shared_hash_destroy): New functions.
10254         (unshare_variable): Unshare set->vars if shared, use
10255         shared_hash_htab.
10256         (vars_copy): Use htab_traverse_noresize instead of htab_traverse.
10257         (get_init_value, find_src_set_src, dump_dataflow_set,
10258         clobber_variable_part, emit_notes_for_differences): Use
10259         shared_hash_htab.
10260         (dataflow_set_init): Remove second argument, set vars to
10261         empty_shared_hash instead of creating a new htab.
10262         (dataflow_set_clear): Call shared_hash_destroy and set vars
10263         to empty_shared_hash instead of calling vars_clear.
10264         (dataflow_set_copy): Don't call vars_copy, instead just share
10265         the src htab with dst.
10266         (variable_union): Use shared_hash_*, use initially NO_INSERT
10267         lookup if set->vars is shared.  Don't keep slot cleared before
10268         calling unshare_variable.  Unshare set->vars if needed.
10269         Even ->refcount == 1 vars must be unshared if set->vars is shared
10270         and var needs to be modified.
10271         (variable_canonicalize): New function.
10272         (dataflow_set_union): If dst->vars is empty, just share src->vars
10273         with dst->vars and traverse with variable_canonicalize to canonicalize
10274         and unshare what is needed.
10275         (dataflow_set_different): If old_set and new_set use the same shared
10276         htab, they aren't different.  If number of htab elements is different,
10277         htabs are different.  Use shared_hash_*.
10278         (dataflow_set_destroy): Call shared_hash_destroy instead of
10279         htab_delete.
10280         (compute_bb_dataflow, emit_notes_in_bb, vt_emit_notes): Don't pass
10281         second argument to dataflow_set_init.
10282         (vt_initialize): Likewise.  Initialize shared_hash_pool and
10283         empty_shared_hash, move bb in/out initialization afterwards.
10284         Use variable_htab_free instead of NULL as changed_variables del hook.
10285         (variable_was_changed): Change type of second argument to pointer to
10286         dataflow_set.  When inserting var into changed_variables, bump
10287         refcount.  Unshare set->vars if set is shared htab and slot needs to
10288         be cleared.
10289         (set_variable_part): Use shared_hash_*, use initially NO_INSERT
10290         lookup if set->vars is shared.  Unshare set->vars if needed.
10291         Even ->refcount == 1 vars must be unshared if set->vars is shared
10292         and var needs to be modified.  Adjust variable_was_changed caller.
10293         (delete_variable_part): Use shared_hash_*.  Even ->refcount == 1
10294         vars must be unshared if set->vars is shared and var needs to be
10295         modified.  Adjust variable_was_changed caller.
10296         (emit_note_insn_var_location): Don't pool_free var.
10297         (emit_notes_for_differences_1): Initialize empty_var->refcount to 0
10298         instead of 1.
10299         (vt_finalize): Call htab_delete on empty_shared_hash->htab and
10300         free_alloc_pool on shared_hash_pool.
10301
10302 2009-06-20  Anthony Green  <green@moxielogic.com>
10303
10304         * config/moxie/sfp-machine.h (__gcc_CMPtype, CMPtype): Define.
10305         * config/moxie/moxie.h (LOAD_EXTEND_OP): Define.
10306
10307 2009-06-20  Richard Guenther  <rguenther@suse.de>
10308
10309         * tree-ssa-structalias.c (find_func_aliases): For memset use
10310         a constraint from NULL if we memset to zero.
10311         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Add builtins
10312         we explicitly handle that do not read from memory.
10313         (call_may_clobber_ref_p_1): Properly handle builtins that may
10314         set errno.
10315
10316 2009-06-20  Richard Guenther  <rguenther@suse.de>
10317
10318         PR tree-optimization/40495
10319         * tree-ssa-structalias.c (get_constraint_exp_for_temp): Remove.
10320         (new_scalar_tmp_constraint_exp): New function.
10321         (process_constraint): Do not create temporary decls.
10322         (process_all_all_constraints): Likewise.
10323         (handle_const_call): Likewise.
10324         (create_function_info_for): Do not set decl.
10325
10326 2009-06-19  Ian Lance Taylor  <iant@google.com>
10327
10328         * config/rs6000/rs6000.c (rs6000_explicit_options): Make static.
10329         (rs6000_attribute_table): Make static; move before use.
10330
10331 2009-06-19  Eric Botcazou  <ebotcazou@adacore.com>
10332
10333         * tree.c (substitute_in_expr) <COMPONENT_REF>: Tweak and reformat.
10334         <tcc_vl_exp>: Call process_call_operands on the new CALL_EXPR.
10335         Propagate the TREE_READONLY flag without overwriting it.
10336         (substitute_placeholder_in_expr) <tcc_vl_exp>: Likewise.
10337         Propagate the TREE_READONLY flag onto the result.
10338         (process_call_operands): Move around.  Use correct constant value.
10339
10340 2009-06-19  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
10341
10342         PR target/40482
10343         * config/arm/arm.c (thumb_shiftable_const): Truncate val to 32 bits.
10344         * config/arm/arm.md: Likewise.
10345
10346 2009-06-19  Ian Lance Taylor  <iant@google.com>
10347
10348         * tree-cfg.c (gimple_redirect_edge_and_branch): Change ERROR_MARK
10349         to GIMPLE_ERROR_MARK.
10350
10351         * c-typeck.c (build_conditional_expr): Add op1_original_type and
10352         op2_original_type parameters.  Warn about using different enum types.
10353         * c-parser.c (c_parser_conditional_expression): Pass original
10354         types to build_conditional_expr.
10355         * c-tree.h (build_conditional_expr): Update declaration.
10356
10357 2009-06-19  Ian Lance Taylor  <iant@google.com>
10358
10359         * config/i386/i386.c (ix86_function_specific_save): Test that
10360         fields match values, rather than testing the values are in a
10361         certain range.
10362
10363 2009-06-19  Richard Guenther  <rguenther@suse.de>
10364
10365         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Handle
10366         ADDR_EXPR pointers.
10367         (ptr_derefs_may_alias_p): Likewise.
10368         (ptr_deref_may_alias_ref_p_1): New function.
10369         (ptr_deref_may_alias_ref_p): Likewise.
10370         (ref_maybe_used_by_call_p_1): Handle builtins that are not
10371         covered by looking at the ESCAPED solution.
10372         (call_may_clobber_ref_p_1): Likewise.
10373         * tree-ssa-structalias.c (get_constraint_for_ptr_offset):
10374         Handle NULL_TREE offset.  Do not produce redundant constraints.
10375         (process_all_all_constraints): New helper function.
10376         (do_structure_copy): Use it.
10377         (handle_lhs_call): Likewise.
10378         (find_func_aliases): Handle some builtins with pointer arguments
10379         and/or return values explicitly.
10380
10381 2009-06-19  Ian Lance Taylor  <iant@google.com>
10382
10383         * varasm.c (const_rtx_hash_1): Remove const qualifier from shift.
10384
10385 2009-06-19  Ian Lance Taylor  <iant@google.com>
10386
10387         * rtl.h (SUBREG_PROMOTED_UNSIGNED_P): Add cast to int.
10388
10389 2009-06-19  Ian Lance Taylor  <iant@google.com>
10390
10391         * ggc-page.c (ggc_pch_write_object): Initialize emptyBytes.
10392         * sdbout.c (sdb_debug_hooks): Initialize non-SDB_DEBUGGING_INFO
10393         version.
10394
10395         * c-decl.c (finish_decl): If -Wc++-compat, warn about
10396         uninitialized const.
10397
10398 2009-06-19  Ian Lance Taylor  <iant@google.com>
10399
10400         * dse.c (struct store_info): Rename bitmap field to bmap.  Change
10401         all uses.
10402
10403         * c-decl.c (in_struct, struct_types): Remove.
10404         (struct c_binding): Add in_struct field.
10405         (c_binding_ptr): Define type, along with VEC.
10406         (struct c_struct_parse_info): Define.
10407         (struct_parse_info): New static variable.
10408         (bind): Initialize in_struct field.
10409         (start_struct): Remove enclosing_in_struct and
10410         enclosing_struct_types parameters.  Add
10411         enclosing_struct_parse_info parameter.  Change all callers.  Set
10412         struct_parse_info rather than in_struct and struct_types.
10413         (grokfield): If -Wc++-compat and there is a symbol binding for the
10414         field name, set the in_struct flag and push it on the
10415         struct_parse_info->fields vector.
10416         (warn_cxx_compat_finish_struct): New static function.
10417         (finish_struct): Remove enclosing_in_struct and
10418         enclosing_struct_types parameters.  Add
10419         enclosing_struct_parse_info parameter.  Change all callers.  Don't
10420         set C_TYPE_DEFINED_IN_STRUCT here.  Call
10421         warn_cxx_compat_finish_struct.  Free struct_parse_info and set to
10422         parameter.  Only push on struct_types if warn_cxx_compat.
10423         (finish_enum): Only push on struct_types if warn_cxx_compat.
10424         (declspecs_add_type): Add loc parameter.  Change all callers.
10425         Change all error calls to error_at.  Pass loc, not input_location,
10426         to pedwarn calls.  Warn if -Wc++-compat and a typedef name is
10427         defined in a struct.  If -Wc++-compat and parsing a struct, record
10428         that a typedef name was used.
10429         * c-parser.c (c_parser_declspecs): Get location to pass to
10430         declspecs_add_type.
10431         (c_parser_struct_or_union_specifier): Update calls to start_struct
10432         and finish_struct.
10433         * c-tree.h (struct c_struct_parse_info): Declare.
10434         (finish_struct, start_struct): Update declarations.
10435         (declspecs_add_type): Update declaration.
10436
10437 2009-06-19  Ian Lance Taylor  <iant@google.com>
10438
10439         * c-decl.c (grokdeclarator): If -Wc++-compat, warn about a global
10440         variable with an anonymous type.
10441
10442 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
10443
10444         * see.c: Remove for real.
10445
10446 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
10447
10448         * optabs.h (enum optab_index): Add new OTI_significand.
10449         (significand_optab): Define corresponding macro.
10450         * optabs.c (init_optabs): Initialize significand_optab.
10451         * genopinit.c (optabs): Implement significand_optab using
10452         significand?f2 patterns.
10453         * builtins.c (expand_builtin_mathfn): Handle
10454         BUILT_IN_SIGNIFICAND{,F,L}.
10455         (expand_builtin): Expand BUILT_IN_SIGNIFICAND{,F,L} using
10456         expand_builtin_mathfn if flag_unsafe_math_optimizations is set.
10457
10458         * config/i386/i386.md (significandxf2, significand<mode>2): New
10459         expanders to implement significandf, significand and significandl
10460         built-ins as inline x87 intrinsics.
10461
10462 2009-06-18  Anatoly Sokolov  <aesok@post.ru>
10463
10464         * config/avr/avr.c (avr_override_options): Remove setting value of
10465         PARAM_INLINE_CALL_COST.
10466
10467 2009-06-18  Richard Henderson  <rth@redhat.com>
10468
10469         PR 40488
10470         * tree-pass.h (TDF_ASMNAME): New.
10471         * tree-dump.c (dump_options): Add asmname.
10472         * doc/invoke.texi: Document it.
10473
10474         * tree-pretty-print.c (maybe_dump_asm_name): Merge into...
10475         (dump_decl_name): ...here.
10476         (dump_function_name): New flags arg; mind TDF_ASMNAME.
10477         (dump_generic_node): Update dump_function_name calls.
10478         (print_call_name): New flags arg; update all dump calls.
10479         * diagnostic.h (print_call_name): Update.
10480         * gimple-pretty-print.c (dump_gimple_call): Update.
10481
10482 2009-06-18  H.J. Lu  <hongjiu.lu@intel.com>
10483
10484         PR target/40470
10485         * config/i386/i386.h (CLASS_LIKELY_SPILLED_P): Add SSE_FIRST_REG.
10486
10487 2009-06-18  Diego Novillo  <dnovillo@google.com>
10488
10489         * doc/plugins.texi: Document plugin_is_GPL_compatible.
10490         * plugin.c (str_license): Declare.
10491         (try_init_one_plugin): Assert that the symbol
10492         'plugin_is_GPL_compatible' exists.
10493
10494 2009-06-18  Sergei Dyshel  <sergeid@il.ibm.com>
10495
10496         * see.c: Remove.
10497         * Makefile.in (OBJS-common): Remove see.o.
10498         (see.o): Remove.
10499         * common.opt (fsee): Mark as preserved for backward compatibility.
10500         * opts.c (common_handle_option): Add OPT_fsee to the backward
10501         compatibility section.
10502         * passes.c (init_optimization_passes, pass_see): Remove pass.
10503         * timevar.def (TV_SEE): Remove.
10504         * tree-pass.h (pass_see): Remove declaration.
10505         * doc/invoke.texi (-fsee): Remove documentation.
10506
10507 2009-06-18  Martin Jambor  <mjambor@suse.cz>
10508
10509         * tree-sra.c: Include statistics.h
10510         (sra_stats): New variable.
10511         (sra_initialize): Clear sra_stats.
10512         (create_access_replacement): Increment sra_stats.replacements.
10513         (get_access_replacement): Do not return twice.
10514         (analyze_all_variable_accesses): Increment statistics counter by the
10515         number of scalarized aggregates.
10516         (generate_subtree_copies): Increment sra_stats.subtree_copies.
10517         (sra_modify_expr): Increment sra_stats.exprs.
10518         (load_assign_lhs_subreplacements): Increment sra_stats.subreplacements.
10519         (sra_modify_assign): Increment sra_stats.exprs,
10520         sra_stats.separate_lhs_rhs_handling and sra_stats.deleted.
10521         (perform_intra_sra): Update statistics counters.
10522         * Makefile.in (tree-sra.o): Add statistics.h to dependencies.
10523
10524 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
10525
10526         * config/arm/arm.c (TARGET_SCALAR_MODE_SUPPORTED_P): Redefine.
10527         (arm_scalar_mode_supported_p): New function.
10528
10529 2009-06-18  Paul Brook  <paul@codesourcery.com>
10530             Sandra Loosemore  <sandra@codesourcery.com>
10531
10532         * config/arm/sfp-machine.h (_FP_NANFRAC_H, _FP_NANSIGN_H): Define.
10533         (__extendhfsf2, __truncsfhf2): Define.
10534         * config/arm/fp16.c: New file.
10535         * config/arm/t-bpabi (LIB2FUNCS_STATIC_EXTRA): Add fp16.c.
10536         * config/arm/t-symbian (LIB2FUNCS_STATIC_EXTRA):  Add fp16.c.
10537
10538 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
10539
10540         * doc/extend.texi (Half-Precision): New section.
10541         * doc/invoke.texi (Option Summary): List -mfp16-format.
10542         (ARM Options): List neon-fp16 as -mfpu value.  Document -mfp16-format.
10543         * config/arm/arm.opt (mfp16-format=): New.
10544         * config/arm/arm.c: Include intl.h.
10545         (TARGET_INVALID_PARAMETER_TYPE): Redefine.
10546         (TARGET_INVALID_RETURN_TYPE): Redefine.
10547         (TARGET_PROMOTED_TYPE): Redefine.
10548         (TARGET_CONVERT_TO_TYPE): Redefine.
10549         (arm_fp16_format): Define.
10550         (all_fpus): Add entry for neon-fp16.
10551         (fp_model_for_fpu): Likewise.
10552         (struct fp16_format): Declare.
10553         (all_fp16_formats): Define.
10554         (arm_init_libfuncs): Add entries for HFmode conversions and arithmetic
10555         functions.
10556         (arm_override_options): Set arm_fp16_format. Call sorry for fp16
10557         and no ldrh.
10558         (arm_legitimate_index_p): Treat HFmode like HImode.
10559         (thumb1_legitimate_address_p): Make it recognize HFmode constants.
10560         (coproc_secondary_reload_class): Special-case HFmode.
10561         (arm_print_operand): Add 'z' specifier for vld1.16/vst1.16.
10562         (arm_hard_regno_mode_ok): Allow HFmode values in VFP registers.
10563         (arm_init_fp16_builtins): New.
10564         (arm_init_builtins): Call it.
10565         (arm_invalid_parameter_type): New.
10566         (arm_invalid_return_type): New.
10567         (arm_promoted_type): New.
10568         (arm_convert_to_type).
10569         (arm_file_start): Deal with neon-fp16 as fpu_name.  Emit tag for fp16
10570         format.
10571         (arm_emit_fp16_const): New function.
10572         (arm_mangle_type): Mangle __fp16 as "Dh".
10573         * config/arm/arm.h (TARGET_VFPD32): Make it know about
10574         FPUTYPE_NEON_FP16.
10575         (TARGET_NEON_FP16): New.
10576         (TARGET_NEON): Make it know about FPUTYPE_NEON_FP16.
10577         (enum fputype): Add FPUTYPE_NEON_FP16.
10578         (enum arm_fp16_format_type): Declare.
10579         (arm_fp16_format): Declare.
10580         (LARGEST_EXPONENT_IS_NORMAL): Define.
10581         * config/arm/arm-protos.h (arm_emit_fp16_const): Declare.
10582         * config/arm/arm-modes.def (HFmode): Define.
10583         * config/arm/vfp.md: (*movhf_vfp): New.
10584         (extendhfsf2): New.
10585         (truncsfhf2): New.
10586         * config/arm/arm.md: (fpu): Add neon_fp16.
10587         (floatsihf2, floatdihf2): New.
10588         (fix_trunchfsi2, fix_trunchfdi2): New.
10589         (truncdfhf2): New.
10590         (extendhfdf2): New.
10591         (movhf): New.
10592         (*arm32_movhf): New.
10593         (*thumb1_movhf): New.
10594         (consttable_2): Add check for HFmode constants.
10595         (consttable_4): Handle HFmode constants.
10596
10597 2009-06-18  Uros Bizjak  <ubizjak@gmail.com>
10598
10599         * convert.c (convert_to_integer): Convert (int)logb() into ilogb().
10600
10601 2009-06-17  Olivier Hainque  <hainque@adacore.com>
10602
10603         * collect2.c (main): Use CONST_CAST2 to perform char ** to
10604         const char ** conversion in AIX specific section.
10605
10606 2009-06-17  H.J. Lu  <hongjiu.lu@intel.com>
10607
10608         * config/i386/i386.c (ix86_special_builtin_type): Remove
10609         UINT64_FTYPE_PINT.  Add UINT64_FTYPE_PUNSIGNED.
10610         (bdesc_special_args): Updated.
10611         (ix86_init_mmx_sse_builtins): Likewise.
10612         (ix86_expand_special_args_builtin): Likewise.
10613
10614 2009-06-17  Richard Henderson  <rth@redhat.com>
10615
10616         * tree-pretty-print.c (maybe_dump_asm_name): New.
10617         (dump_decl_name): Use it.
10618         (PRINT_FUNCTION_NAME): Merge into...
10619         (dump_function_name): ... here.  Use maybe_dump_asm_name.
10620
10621 2009-06-17  Cary Coutant  <ccoutant@google.com>
10622
10623         * dbxout.c (dbxout_source_line): Add is_stmt parameter.
10624         Change caller.
10625         * debug.c (struct gcc_debug_hooks): Change placeholder for
10626         source_line hook.
10627         (debug_nothing_int_charstar_int): Replaced by...
10628         (debug_nothing_int_charstar_int_bool): ...this.
10629         * debug.h (struct gcc_debug_hooks): Add is_stmt parameter to
10630         source_line prototype.
10631         (debug_nothing_int_charstar_int): Replaced by...
10632         (debug_nothing_int_charstar_int_bool): ...this.
10633         * defaults.h (SUPPORTS_DISCRIMINATOR): New constant.
10634         * dwarf2out.c (dwarf2out_source_line): Add is_stmt parameter.
10635         Output is_stmt operand when necessary.
10636         * final.c (final_scan_insn): Pass is_stmt to source_line debug hook.
10637         (notice_source_line): Add is_stmt parameter.
10638         * sdbout.c (sdbout_source_line): Add is_stmt parameter.
10639         * vmsdbgout.c (vmsdbgout_source_line): Add is_stmt parameter.
10640         Change callers.
10641         * xcoffout.c (xcoffout_source_line): Add is_stmt parameter.
10642         * xcoffout.h (xcoffout_source_line): Add is_stmt parameter.
10643
10644 2009-06-17  Ian Lance Taylor  <iant@google.com>
10645
10646         * expr.c (struct move_by_pieces_d): Rename from move_by_pieces.
10647         Change all uses.
10648         (struct store_by_pieces_d): Rename from store_by_pieces.  Change
10649         call uses.
10650
10651 2009-06-17  Adam Nemet  <anemet@caviumnetworks.com>
10652
10653         * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS,
10654         STRIP_USELESS_TYPE_CONVERSION): Use tree_strip_nop_conversions,
10655         tree_strip_sign_nop_conversions and
10656         tree_ssa_strip_useless_type_conversions rather than stripping
10657         the operations here.
10658         (tree_strip_nop_conversions, tree_strip_sign_nop_conversions):
10659         Declare them.
10660         * gimple.h (tree_ssa_strip_useless_type_conversions): Declare it.
10661         * tree-ssa.c (tree_ssa_strip_useless_type_conversions): New function.
10662         * tree.c (tree_nop_conversion, tree_sign_nop_conversion,
10663         tree_strip_nop_conversions, tree_strip_sign_nop_conversions): New
10664         functions.
10665
10666 2009-06-17  Michael Eager  <eager@eagercon.com>
10667
10668         * config/rs6000/constraints.md (register_constraint "d"): New.
10669         * config/rs6000/dfp.md (movsd_store, extendsddd2, extendsdtd2,
10670         truncddsd2, *negdd2_fpr, *absdd2_fpr, *nabsdd2_fpr,
10671         *movdd_hardfloat32, *movdd_hardfloat64_mfpgpr, *movdd_hardfloat64,
10672         *negtd2_fp, *abstd2_fpr, *nabstd2_fpr, *movtd_internal, extendddtd2,
10673         trunctddd2, adddd3, addtd3, subdd3, subtd3, muldd3, multd3, divdd3,
10674         divtd3, *cmpdd_internal1, *cmptd_internal1, floatditd2, ftruncdd2,
10675         fixdddi2, ftrunctd2, fixtddi2): replace 'f' constraint with 'd'
10676         * config/rs6000/ppu_intrinsics.h (__mffs, __mtfsf, __mtfsfi, __fabs,
10677         __fnabs, __fmadd, __fmsub, __fnmadd, __fnmsub, __fsel, __frsqrte,
10678         __fsqrt, __fmul, __fmuls, __frsp, __fcfid, __fctid, __fctidz, __fctiw,
10679         __fctiwz): Same.
10680         * config/rs6000/rs6000.md (*extendsfdf2_fpr, *truncdfsf2_fpr,
10681         *fseldfsf4, *negdf2_fpr, *absdf2_fpr, *nabsdf2_fpr, *adddf3_fpr,
10682         *subdf3_fpr, *muldf3_fpr, *divdf3_fpr, recipdf3, fred, sqrtdf2,
10683         *fseldfdf4, *fselsfdf4, *floatsidf2_internal, *floatunssidf2_internal,
10684         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
10685         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2, rounddf2,
10686         stfiwx, floatdidf2, fix_truncdfdi2, floatdisf2_internal1,
10687         *movdf_hardfloat32, *movdf_hardfloat64_mfpgpr, *movdf_hardfloat64,
10688         *movtf_internal, *extenddftf2_internal, trunctfdf2_internal1,
10689         trunctfdf2_internal2, trunctfsf2_fprs, fix_trunc_helper,
10690         *fix_trunctfsi2_internal, negtf2_internal, *movdi_internal32,
10691         *movdi_mfpgpr, *movdi_internal64, *movdf_update1, *movdf_update2,
10692         *cmpdf_internal1, *cmptf_internal1, *cmptf_internal2): Same.
10693         * doc/md.texi: Describe PowerPC 'd' constraint, update 'f' constraint.
10694
10695 2009-06-16  Ian Lance Taylor  <iant@google.com>
10696
10697         * profile.c (total_num_never_executed): Don't define.
10698         (compute_branch_probabilities): Don't count or print
10699         num_never_executed.
10700         (init_branch_prob): Don't set total_num_never_executed.
10701         (end_branch_prob): Don't print total_num_never_executed.
10702
10703 2009-06-17  David Daney  <ddaney@caviumnetworks.com>
10704
10705         * jump.c (cleanup_barriers): Handle case of no insns before a barrier.
10706
10707 2009-06-17  David Edelsohn  <edelsohn@gnu.org>
10708
10709         * config/rs6000/dfp.md (nabsdd2_fpr): Correct mode.
10710         (nabstd2_fpr): Same.
10711
10712 2009-06-17  Steve Ellcey  <sje@cup.hp.com>
10713
10714         * expr.c (expand_assignment): Change complex type check.
10715
10716 2009-06-17  Basile Starynkevitch  <basile@starynkevitch.net>
10717
10718         * doc/plugins.texi (Building GCC plugins): Added new section.
10719
10720 2009-06-17  Ian Lance Taylor  <iant@google.com>
10721
10722         * c-pch.c (get_ident): Don't set size of templ array.
10723         (pch_init): Don't set size of partial_pch array.
10724
10725         * c-typeck.c (digest_init): If -Wc++-compat, warn about using a
10726         string constant to intialize an array whose size is the length of
10727         the string.
10728
10729 2009-06-17  Richard Guenther  <rguenther@suse.de>
10730
10731         PR tree-optimization/40389
10732         * tree-ssa-structalias.c (handle_rhs_call): Restrict NRV case
10733         to addressable types.
10734         * gimple.c (walk_stmt_load_store_addr_ops): Likewise.
10735
10736 2009-06-17  Richard Guenther  <rguenther@suse.de>
10737
10738         PR middle-end/40460
10739         * tree-chrec.h (build_polynomial_chrec): If we cannot determine
10740         if there is no evolution of left in the loop bail out.
10741         * tree-chrec.c (chrec_fold_multiply_poly_poly): CSE one
10742         chrec_fold_multiply.
10743
10744 2009-06-16  J"orn Rennecke  <joern.rennecke@arc.com>
10745             Janis Johnson  <janis187@us.ibm.com>
10746
10747         PR target/39254
10748         * config/rs6000/rs6000.c (rs6000_emit_move): Don't emit a USE
10749         for the symbol ref of a constant that is the source of a move
10750         - nor for any other not-obvious-label-ref constants.
10751
10752 2009-06-16  Olatunji Ruwase  <tjruwase@google.com>
10753
10754         * plugin.c (position_pass): Skip newly inserted pass during list
10755         traversal to avoid repeated insertion.
10756
10757 2009-06-16  Ian Lance Taylor  <iant@google.com>
10758
10759         * vec.h (VEC_stack_alloc): Define different version if
10760         GATHER_STATISTICS is defined, to accept and ignore MEM_STAT.
10761         (DEF_VEC_ALLOC_FUNC_P_STACK): Remove MEM_STAT_DECL.
10762         (DEF_VEC_ALLOC_FUNC_O_STACK): Likewise.
10763         (DEF_VEC_ALLOC_FUNC_I_STACK): Likewise.
10764
10765 2009-06-16  H.J. Lu  <hongjiu.lu@intel.com>
10766
10767         * config.gcc (extra_headers): Add ia32intrin.h for x86.
10768
10769         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_BSRSI,
10770         IX86_BUILTIN_BSRDI.  IX86_BUILTIN_RDPMC, IX86_BUILTIN_RDTSC.
10771         IX86_BUILTIN_RDTSCP.  IX86_BUILTIN_ROLQI, IX86_BUILTIN_ROLHI,
10772         IX86_BUILTIN_RORQI and IX86_BUILTIN_RORHI.
10773         (ix86_special_builtin_type): Add UINT64_FTYPE_VOID,
10774         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
10775         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
10776         (bdesc_special_args): Add __builtin_ia32_rdtsc and
10777         __builtin_ia32_rdtscp.
10778         (bdesc_args): Add __builtin_ia32_bsrsi, __builtin_ia32_bsrdi,
10779         __builtin_ia32_rolqi, __builtin_ia32_rolhi, __builtin_ia32_rorqi
10780         and __builtin_ia32_rorhi.
10781         (ix86_init_mmx_sse_builtins): Handle UINT64_FTYPE_VOID,
10782         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
10783         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
10784         (ix86_expand_args_builtin): Likewise.
10785         (ix86_expand_special_args_builtin): Likewise.
10786
10787         * config/i386/i386.md (UNSPECV_RDTSCP): New.
10788         (UNSPECV_RDTSC): Likewise.
10789         (UNSPECV_RDPMC): Likewise.
10790         (*bsr): Renamed to ...
10791         (bsr): This
10792         (*bsr_rex64): Renamed to ...
10793         (bsr_rex64): This.
10794         (rdpmc): New.
10795         (*rdpmc): Likewise.
10796         (*rdpmc_rex64): Likewise.
10797         (rdtsc): Likewise.
10798         (*rdtsc): Likewise.
10799         (*rdtsc_rex64): Likewise.
10800         (rdtscp): Likewise.
10801         (*rdtscp): Likewise.
10802         (*rdtscp_rex64): Likewise.
10803
10804         * config/i386/ia32intrin.h: New.
10805
10806         * config/i386/x86intrin.h: Include <ia32intrin.h>.
10807
10808 2009-06-16  Ian Lance Taylor  <iant@google.com>
10809
10810         * ira-build.c (copy_info_to_removed_store_destinations):
10811         Initialize parent_a.
10812
10813 2009-06-16  Ian Lance Taylor  <iant@google.com>
10814
10815         * c-decl.c (grokdeclarator): Change size_varies to bool.
10816
10817 2009-06-16  Ian Lance Taylor  <iant@google.com>
10818
10819         * sel-sched.c: Make forward declarations of move_op_hooks and
10820         fur_hooks explicitly extern.
10821
10822 2009-06-16  Ian Lance Taylor  <iant@google.com>
10823
10824         * df-problems.c (df_byte_lr_alloc): Don't set problem_data to itself.
10825         * vec.c (vec_gc_o_reserve_1): Don't set alloc to itself.
10826
10827 2009-06-16  Ian Lance Taylor  <iant@google.com>
10828
10829         * resource.c (mark_referenced_resources): Change
10830         include_delayed_effects parameter to bool.  Change all callers.
10831         (mark_end_of_function_resources): Likewise.
10832         * reorg.c (insn_references_resource_p): Likewise.
10833         (insn_sets_resource_p): Likewise.
10834         * resource.h (mark_referenced_resources): Update declaration.
10835         (mark_end_of_function_resources): Update declaration.
10836
10837 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
10838
10839         * config/rs6000/aix.h (LIBSTDCXX_STATIC): Remove -lstdc++.
10840
10841 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
10842
10843         * doc/install.texi (*-*-aix): Update explanation of XLC bootstrap.
10844         GCC can bootstrap on AIX with GNU Binutils 2.20.
10845
10846 2009-06-16  Ian Lance Taylor  <iant@google.com>
10847
10848         * Makefile.in (tree-vect-stmts.o): Depend upon $(TOPLEV_H).
10849
10850 2009-06-16  Ian Lance Taylor  <iant@google.com>
10851
10852         * toplev.h (floor_log2): If GCC_VERSION >= 3004, declare as static
10853         inline, not extern inline.
10854         (exact_log2): Likewise.
10855         * toplev.c (floor_log2): Only define if GCC_VERSION < 3004. Don't
10856         test CLZ_HWI.
10857         (exact_log2): Likewise, but don't test CTZ_HWI.
10858
10859 2009-06-16  Ian Lance Taylor  <iant@google.com>
10860
10861         * bitmap.c (bitmap_clear): Don't declare as inline.
10862         * gimple.c (gimplify_assign): Likewise.
10863         * tree-ssa-sccvn.c (vn_nary_op_compute_hash): Likewise.
10864         * haifa-sched.c (insn_cost): Don't declare with HAIFA_INLINE.
10865         (sched_scan_info): Remove duplicate definition.
10866
10867 2009-06-16  Ian Lance Taylor  <iant@google.com>
10868
10869         * c-common.c (skip_evaluation): Don't define.
10870         (c_inhibit_evaluation_warnings): Define global variable.
10871         (overflow_warning): Check c_inhibit_evaluation_warnings rather
10872         than skip_evaluation.
10873         (convert_and_check, warn_for_div_by_zero): Likewise.
10874         * c-common.h (skip_evaluation): Don't declare.
10875         (c_inhibit_evaluation_warnings): Declare.
10876         * c-parser.c (c_parser_typeof_specifier): Set
10877         c_inhibit_evaluation_warnings rather than skip_evaluation.
10878         (c_parser_conditional_expression): Likewise.
10879         (c_parser_binary_expression): Likewise.
10880         (c_parser_sizeof_expression): Likewise.
10881         (c_parser_alignof_expression): Likewise.
10882         * c-typeck.c (build_indirect_ref): Check
10883         c_inhibit_evaluation_warnings rather than skip_evaluation.
10884         (build_conditional_expr, build_binary_op): Likewise.
10885
10886 2009-06-16  Richard Guenther  <rguenther@suse.de>
10887
10888         * tree-ssa-alias.c (is_escape_site): Remove.
10889         * tree-ssa-alias.h (enum escape_type): Remove.
10890         (is_escape_site): Likewise.
10891         * tree-ssa-structalias.c (find_func_aliases): Handle escapes
10892         via casts and asms without deferring to is_escape_site.
10893
10894 2009-06-16  Jakub Jelinek  <jakub@redhat.com>
10895
10896         PR middle-end/40446
10897         * expr.c (expand_expr_real_1) <case VIEW_CONVERT_EXPR>: Don't
10898         use gen_lowpart if op0 has complex mode.
10899
10900 2009-06-16  Richard Guenther  <rguenther@suse.de>
10901
10902         * tree-ssa-structalias.c (do_ds_constraint): Stores in global
10903         variables add them to ESCAPED.
10904         (find_func_aliases): Do not make all indirectly stored values escaped.
10905
10906 2009-06-16  Rafael Avila de Espindola  <espindola@google.com>
10907
10908         * config/i386/winnt.c (i386_pe_encode_section_info): Update call to
10909         make_decl_one_only.
10910
10911 2009-06-16  Martin Jambor  <mjambor@suse.cz>
10912
10913         PR tree-optimization/40432
10914         * tree-sra.c (sra_modify_assign): When creating VIEW_CONVERT_EXPR,
10915         check whether we need to force gimple register operand.
10916
10917 2009-06-16  Martin Jambor  <mjambor@suse.cz>
10918
10919         PR tree-optimization/40413
10920         * tree-sra.c (load_assign_lhs_subreplacements): Pass offset to
10921         build_ref_for_offset.
10922         (propagate_subacesses_accross_link): Fix a typo in a comment.
10923
10924 2009-06-16  Ira Rosen  <irar@il.ibm.com>
10925
10926         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
10927         with additional parameter.
10928         * tree-vectorizer.h (enum vect_def_type): Add new value
10929         vect_nested_cycle.
10930         (enum vect_relevant): Add comments.
10931         (vect_is_simple_reduction): Add new argument.
10932         * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Add comments.
10933         Detect nested cycles.
10934         (vect_is_simple_reduction): Update documentation, add an argument to
10935         distinguish inner-loop reduction from nested cycle, detect nested
10936         cycles, fix printings and indentation, don't swap operands in case
10937         of nested cycle.
10938         (get_initial_def_for_reduction): Handle subtraction.
10939         (vect_create_epilog_for_reduction): Add new argument to specify
10940         reduction variable.
10941         (vect_finalize_reduction): Handle subtraction, fix comments.
10942         (vectorizable_reduction): Handle nested cycles. In case of nested
10943         cycle keep track of the reduction variable position. Call
10944         vect_is_simple_reduction with additional parameter. Use original
10945         statement code in reduction epilogue for nested cycle. Call
10946         vect_create_epilog_for_reduction with additional parameter.
10947         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Assert
10948         inner-loop vectorization.
10949         (vect_recog_widen_sum_pattern): Likewise.
10950         * tree-vect-stmts.c (process_use): Distinguish between nested cycles
10951         and reductions.
10952         (vect_mark_stmts_to_be_vectorized): Likewise.
10953         (vect_get_vec_def_for_operand): Handle nested cycles.
10954
10955 2009-06-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10956
10957         * doc/invoke.texi (Debugging Options): Fix option index entries
10958         for -fdump-statistics, -frandom-seed add entries for
10959         -fdump-tree-original, -fdump-tree-optimized, -frandom-seed.
10960         (FRV Options): Fix entries for -mTLS, -mtls.
10961         (HPPA Options): Fix entries for -mgnu-ld, -mhp-ld.
10962         (i386 and x86-64 Options): Fix entry for -mno-red-zone.
10963         (M68hc1x Options): Fix @itemx for -mnominmax.
10964         (MCore Options): Fix entry for -mno-lsim.
10965         (MMIX Options): Fix entry for -mabi=mmixware.
10966         (PDP-11 Options): Fix entry for -mbcopy-builtin.
10967
10968 2009-06-16  Basile Starynkevitch  <basile@starynkevitch.net>
10969
10970         * doc/plugins.texi (Interacting with the GCC Garbage Collector):
10971         Mention the plugin mode of gengtype.
10972         * doc/gty.texi (Source Files Containing Type Information): Likewise.
10973         * gengtype.c: Updated copyright.
10974         (plugin_files, nb_plugin_files) Added new static variables.
10975         (measure_input_list) Care about plugin_files.
10976         (write_rtx_next): Added early return in plugin mode.
10977         (create_file): Updated copyright year in generated file. Added
10978         asserts.
10979         (oprintf): Added early return if NULL outf.
10980         (get_output_file_with_visibility): Care of plugin_files.
10981         (get_output_file_name): May return null.
10982         (write_local): Added early return.
10983         (put_mangled_filename): Ditto.
10984         (finish_root_table): Added check for base_files.
10985         (write_roots): Care about null when plugins.
10986         (main): Added plugin mode.
10987
10988 2009-06-15  Ian Lance Taylor  <iant@google.com>
10989
10990         * df-problems.c (df_simulate_one_insn_forwards): Fix braces in switch.
10991         * gcov.c (read_count_file): Add braces around variables declared
10992         before label.
10993
10994         * c.opt (Wjump-misses-init): New warning.
10995         * c-opts.c (c_common_handle_option): Set warn_jump_misses_init for
10996         -Wall and -Wc++-compat if not already set.
10997         (c_common_post_options): Clear warn_jump_misses_init if it was not
10998         set.
10999         * c-decl.c (struct c_binding): Change type field to a union with
11000         new label field.  Make it the first field in the struct.  Update
11001         references to type to use u.type instead.
11002         (struct c_spot_bindings): Define.
11003         (struct c_goto_bindings): Define.
11004         (c_goto_bindings_p): Define, along with VECs.
11005         (struct c_label_vars): Define.
11006         (struct c_scope): Add has_label_bindings field.
11007         (bind_label, set_spot_bindings): New static functions.
11008         (decl_jump_unsafe, update_spot_bindings): New static functions.
11009         (update_label_decls): New static function.
11010         (pop_scope): Call update_label_decls.  Don't call c_end_vm_scope.
11011         Update binding u.label field to shadowed field.
11012         (c_binding_start_stmt_expr): New function.
11013         (c_binding_end_stmt_expr): New function.
11014         (pushdecl): Don't call c_begin_vm_scope.
11015         (make_label): Add defining and p_label_vars parameters.  Change
11016         all callers.
11017         (lookup_label): Correct test for whether a label has not yet been
11018         defined.  Call bind_label rather than bind.
11019         (warn_about_goto): New static function.
11020         (lookup_label_for_goto): New function.
11021         (declare_label): Call bind_label rather than bind.
11022         (check_earlier_gotos): New static function.
11023         (define_label): Don't give errors about jumping into statement
11024         expressions or scopes of variably modified types.  Call
11025         set_spot_bindings and check_earlier_gotos.  Call bind_label
11026         instead of bind.  Don't set label_context_stack_se or
11027         label_context_stack_vm.
11028         (c_get_switch_bindings): New function.
11029         (c_release_switch_bindings): New function.
11030         (c_check_switch_jump_warnings): New function.
11031         (start_function): Don't set label_context_stack_se or
11032         label_context_stack_vm.
11033         (finish_function): Likewise.
11034         * c-typeck.c (label_context_stack_se): Don't define.
11035         (label_context_stack_vm): Don't define.
11036         (c_finish_goto_label): Call lookup_label_for_goto rather than
11037         lookup_label.  Don't give errors about jumping into a statement
11038         expression or the scope of a variably modified type.  Don't set
11039         label_context_stack_se or label_context_stack_vm.
11040         (struct c_switch): Remove blocked_stmt_expr and blocked_vm
11041         fields.  Add bindings field.
11042         (c_start_case): Don't set deleted fields.  Set bindings field.
11043         (do_case): Rework order of tests.  Don't check blocked_stmt_expr
11044         or blocked_vm.  Call c_check_switch_jump_warnings.
11045         (c_finish_case): Don't test blocked_stmt_expr field.  Call
11046         c_release_switch_bindings.
11047         (c_begin_stmt_expr): Don't increment blocked_stmt_expr in
11048         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
11049         set label_context_stack_se.  Call c_bindings_start_stmt_expr.
11050         (c_finish_stmt_expr): Don't decrement blocked_stmt_expr in
11051         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
11052         set label_context_stack_se.  Call c_bindings_end_stmt_expr.
11053         (c_begin_vm_scope, c_end_vm_scope): Don't define.
11054         * c-tree.h (C_DECL_UNJUMPABLE_STMT_EXPR): Don't define.
11055         (C_DECL_UNDEFINABLE_STMT_EXPR): Don't define.
11056         (C_DECL_UNJUMPABLE_VM): Don't define.
11057         (C_DECL_UNDEFINABLE_VM): Don't define.
11058         (struct c_label_list): Don't define.
11059         (struct c_label_context_se): Don't define.
11060         (struct c_label_context_vm): Don't define.
11061         (struct c_spot_bindings): Declare.
11062         (c_bindings_start_stmt_expr): Declare.
11063         (c_bindings_end_stmt_expr): Declare.
11064         (lookup_label_for_goto): Declare.
11065         (c_get_switch_bindings, c_release_switch_bindings): Declare.
11066         (c_check_switch_jump_warnings): Declare.
11067         (label_context_stack_se, label_context_stack_vm): Don't declare.
11068         (c_finish_goto_label): Update declaration.
11069         (c_begin_vm_scope, c_end_vm_scope): Don't declare.
11070         * doc/invoke.texi (Option Summary): Mention -Wjump-misses-init.
11071         (Warning Options): Document -Wjump-misses-init.
11072
11073 2009-06-15  Jakub Jelinek  <jakub@redhat.com>
11074
11075         * tree-object-size.c (addr_object_size): Fix a pasto in the last
11076         change.
11077
11078 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
11079
11080         * cgraph.c (cgraph_make_node_local): Use DECL_COMDAT_GROUP.
11081
11082 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
11083
11084         * except.c (init_eh): Use BUILTINS_LOCATION when calling build_decl.
11085
11086 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
11087
11088         * tree-eh.c (lower_try_finally_switch): Initialize tf_loc.
11089
11090 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
11091
11092         * cgraphunit.c (cgraph_function_versioning,save_inline_function_body):
11093         Use DECL_COMDAT_GROUP instead of DECL_ONE_ONLY.
11094         * cgraph.c (cgraph_create_virtual_clone): Use DECL_COMDAT_GROUP.
11095         * config/i386/i386.c (ix86_file_end): Compute DECL_COMDAT_GROUP.
11096         * dwarf2asm.c (dw2_force_const_mem): Update call to
11097         make_decl_one_only.
11098         * langhooks-def.h (lhd_comdat_group, LANG_HOOKS_COMDAT_GROUP): Remove.
11099         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_COMDAT_GROUP.
11100         * langhooks.c (lhd_comdat_group): Remove.
11101         * langhooks.h (lang_hooks_for_decls): Remove comdat_group.
11102         * tree.h (DECL_COMDAT_GROUP): New.
11103         (DECL_ONE_ONLY): Use DECL_COMDAT_GROUP.
11104         (tree_decl_with_vis): Add comdat_group. Remove one_only.
11105         (make_decl_one_only): Change signature.
11106         * varasm.c (get_emutls_init_templ_addr, emutls_decl): Update call to
11107         make_decl_one_only.
11108         (make_decl_one_only): Change signature.
11109         (default_elf_asm_named_section): Use DECL_COMDAT_GROUP.
11110
11111 2009-06-15  Richard Guenther  <rguenther@suse.de>
11112
11113         PR middle-end/40439
11114         * tree.c (widest_int_cst_value): Fix bootstrap on 32bit HWI hosts.
11115
11116 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
11117
11118         * tree-ssa-math-opts.c: Remove extra divide.
11119
11120 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
11121
11122         * config/s390/s390.md ("bswap<mode>2"): Only available on z900.
11123
11124 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
11125
11126         * passes.c: Add bswap pass.
11127         * tree-pass.h: Add pass_optimize_bswap declaration.
11128         * tree-ssa-math-opts.c: Include diagnostics.h for print_gimple_stmt.
11129         Include rtl.h, expr.h and optabs.h for optab_handler check.
11130         (struct symbolic_number, pass_optimize_bswap): New definition.
11131         (do_shift_rotate, verify_symbolic_number_p): New functions.
11132         (find_bswap_1, find_bswap, execute_optimize_bswap): New functions.
11133         (gate_optimize_bswap): New function.
11134         * tree.c (widest_int_cst_value): New function.
11135         * tree.h (widest_int_cst_value): Prototype added.
11136
11137 2009-06-14  Steven Bosscher  <steven@gcc.gnu.org>
11138
11139         * cfgcleanup.c (old_insns_match_p): Remove code to substitute
11140         REG_EQUAL/REG_EQUIV notes.
11141
11142 2009-06-14  Richard Guenther  <rguenther@suse.de>
11143
11144         PR middle-end/40389
11145         * gimple.c (walk_stmt_load_store_addr_ops): The LHS of a call
11146         has its address taken if NRV was applied and it is addressable.
11147         * tree-ssa-structalias.c (get_constraint_for_address_of): New
11148         function split out from ...
11149         (get_constraint_for_1): ... here.
11150         (handle_rhs_call): Use it to mark the return slot escaped if
11151         it is addressable and NRV was applied.
11152
11153 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
11154
11155         * config/rs6000/rs6000-protos.h (altivec_resolve_overloaded_builtin):
11156         Change first argument type to location_t.
11157         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Same.
11158         Do not set input_location.
11159         Use loc instead of input_location throughout.
11160
11161 2009-06-13  Richard Guenther  <rguenther@suse.de>
11162
11163         PR tree-optimization/40421
11164         * tree-predcom.c (should_unroll_loop_p): Remove.
11165         (tree_predictive_commoning_loop): Use can_unroll_loop_p.
11166
11167 2009-06-13  Michael Meissner  <meissner@linux.vnet.ibm.com>
11168
11169         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
11170         Add location argument.
11171
11172 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
11173
11174         * config/alpha/alpha.c (alpha_build_builtin_va_list): Pass location to
11175         build_decl.
11176         * config/s390/s390.c (s390_build_builtin_va_list): Same.
11177         (s390_gimplify_va_arg): Pass location to create_artificial_label.
11178         * config/spu/spu-protos.h: Add location to
11179         spu_resolve_overloaded_builtin.
11180         * config/spu/spu.c (spu_build_builtin_va_list): Pass location to
11181         spu_build_builtin_va_list.
11182         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Add location
11183         argument.  Pass location to build_function_call_vec.
11184         * config/sh/sh.c (sh_build_builtin_va_list): Pass location to
11185         build_decl.
11186         (emit_fpu_switch): Same.
11187         (sh_gimplify_va_arg_expr): Pass location to create_artificial_label.
11188         * config/xtensa/xtensa.c (xtensa_build_builtin_va_list): Pass location
11189         to build_decl and create_artificial_label.
11190         (xtensa_gimplify_va_arg_expr): Same.
11191         * config/stormy16/stormy16.c (xstormy16_build_builtin_va_list): Same.
11192         (xstormy16_gimplify_va_arg_expr): Same.
11193         * config/iq2000/iq2000.c (iq2000_expand_prologue): Same.
11194         * config/arm/arm.c (arm_build_builtin_va_list): Same.
11195         * config/mips/mips.c (mips_build_builtin_va_list): Same.
11196         (mips16_build_function_stub): Same.
11197         (mips16_build_call_stub): Same.
11198
11199 2009-06-13  Richard Earnshaw  <rearnsha@arm.com>
11200
11201         PR target/40327
11202         * arm/constraints.md (Pa, Pb): New constraints.
11203         * arm/arm.md (thumb1_addsi3): Support more complex additions.  Add a
11204         split pattern to deal with them.
11205
11206 2009-06-13  Joerg Sonnenberger  <joerg@britannica.bec.de>
11207
11208         * doc/invoke.texi: Add missing option -Wp,OPTION in list,
11209         fix index entry for -Xpreprocessor.
11210
11211 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
11212
11213         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
11214         Add location argument to build_decl call.
11215         * config/rs6000/rs6000.c (rs6000_build_builtin_va_list): Same.
11216         (rs6000_init_builtins): Same.
11217         (spe_init_builtins): Same.
11218         (rs6000_gimplify_va_arg): Add location argument to
11219         create_artificial_label call.
11220
11221 2009-06-12  Steven Bosscher  <steven@gcc.gnu.org>
11222
11223         * timevar.def (TV_COMBINE_STACK_ADJUST): New timevar.
11224         * combine-stack-adj.c (pass_stack_adjustments): Use it.
11225         * Makefile.in: Fix GGC dependency for gcse.o.
11226
11227 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
11228
11229         * tree-pretty-print.c (dump_generic_node): Dump column numbers.
11230         * gimple-pretty-print.c (dump_gimple_stmt): Same.
11231         * gimplify.c (gimplify_modify_expr): Set location for GIMPLE_ASSIGNs
11232         created.
11233         * c-parser.c (c_parser_binary_expression): Use current column while
11234         building binary operations.
11235         * common.opt (fshow-column): Enable by default.
11236         * tree-vrp.c (check_array_ref): Use warning_at.
11237         (check_array_bounds): Use location from call back if expr has no
11238         location.
11239         * tree.h: Add location argument to maybe_fold_*.
11240         * tree-ssa-ccp.c (ccp_fold): Pass location to maybe_fold_*.
11241         (maybe_fold_offset_to_array_ref): Add location argument and use it.
11242         (maybe_fold_offset_to_component_ref): Same.
11243         (maybe_fold_offset_to_reference): Same.
11244         (maybe_fold_offset_to_address): Same.
11245         (maybe_fold_stmt_indirect): Same.
11246         (maybe_fold_stmt_addition): Same.
11247         (fold_stmt_r): Pass location to maybe_fold_*.
11248         (fold_gimple_assign): Same.
11249         * c-tree.h: Add location argument to finish_decl,
11250         default_function_array_conversion, store_init_value.
11251         * c-decl.c (define_label): Use error_at.
11252         (c_make_fname_decl): Pass location to finish_decl.
11253         (finish_decl): New location argument.
11254         (build_compound_literal): Pass location to store_init_value.
11255         (grokdeclarator): Pass location to finish_decl.
11256         (grokfield): Same.
11257         * c-typeck.c (array_to_pointer_conversion): New location argument.
11258         (function_to_pointer_conversion): Same.
11259         (default_function_array_conversion): Same.
11260         (parser_build_unary_op): Pass location to overflow_warning.
11261         (parser_build_binary_op): Same.  Use warning_at.
11262         (build_unary_op): Pass location to array_to_pointer_conversion.
11263         (build_c_cast): Pass location to digest_init.
11264         (build_modify_expr): New location argument.
11265         (convert_for_assignment): Same.
11266         (store_init_value): Same.
11267         (digest_init): Same.
11268         (output_init_element): Pass location to digest_init and
11269         array_to_pointer_conversion.
11270         (c_finish_return): Pass location to convert_for_assignment.
11271         * gimplify.c (gimplify_conversion): Pass location to
11272         maybe_fold_offset_to_address.
11273         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Pass location
11274         to maybe_fold_stmt_addition.
11275         * c-omp.c (c_finish_omp_atomic): Pass new location to
11276         build_modify_expr.
11277         (c_finish_omp_for): Same.
11278         * c-common.c (overflow_warning): New argument.
11279         * c-common.h: New argument to build_modify_expr, overflow_warning.
11280         * c-parser.c (c_parser_declaration_or_fndef): Pass location to
11281         finish_decl.
11282         (c_parser_initializer): Pass location to
11283         default_function_array_conversion.
11284         (c_parser_initelt): Same.
11285         (c_parser_initval): Same.
11286         (c_parser_asm_operands): Same.
11287         (c_parser_expr_no_commas): Same.  Pass location to build_modify_expr.
11288         (c_parser_conditional_expression): Same.
11289         (c_parser_binary_expression): Add location info to stack.  Use it.
11290         (c_parser_unary_expression): Pass location to
11291         default_function_array_conversion, parser_build_unary_op,
11292         build_indirect_ref, c_parser_postfix_expression_after_primary.
11293         (c_parser_postfix_expression_after_primary): New location argument.
11294         Use it.
11295         (c_parser_expression_conv): Pass location to
11296         default_function_array_conversion.
11297         (c_parser_expr_list): Same.
11298         (c_parser_omp_atomic): Same.
11299         (c_parser_omp_for_loop): Same.
11300         * c-tree.h: (struct c_declarator): Add comment to id_loc.
11301         (build_array_declarator): New argument.
11302         * c-decl.c (build_array_declarator): Add location argument.
11303         (grokdeclarator): Set id_loc for cdk_array.
11304         * c-parser.c (c_parser_direct_declarator_inner): Pass location to
11305         build_array_declarator.
11306         * tree.c (build_omp_clause): Add location argument.
11307         * tree.h (OMP_CLAUSE_HAS_LOCATION): New macro.
11308         (OMP_CLAUSE_LOCATION): New macro.
11309         (struct tree_omp_clause): Add location field.
11310         (build_omp_clause): Add argument.
11311         * testsuite/gcc.dg/gomp/for-1.c: Fix column.
11312         * cp/pt.c (tsubst_omp_for_iterator): Pass location to
11313         build_omp_clause.
11314         * cp/parser.c (cp_parser_omp_var_list_no_open): Same.
11315         (cp_parser_omp_clause_collapse): Same.
11316         (cp_parser_omp_clause_default): Same.
11317         (cp_parser_omp_clause_if): Same.
11318         (cp_parser_omp_clause_nowait): Same.
11319         (cp_parser_omp_clause_num_threads): Same.
11320         (cp_parser_omp_clause_ordered): Same.
11321         (cp_parser_omp_clause_schedule): Same.
11322         (cp_parser_omp_clause_untied): Same.
11323         (cp_parser_omp_for_loop): Same.
11324         (cp_parser_omp_parallel): Pass location to c_split_parallel_clauses.
11325         * c-tree.h (c_start_case): Add location argument.
11326         (c_process_expr_stmt): Same.
11327         (c_finish_goto_*): Same.
11328         * tree-parloops.c (initialize_reductions): Pass location to
11329         build_omp_clause.
11330         (create_parallel_loop): Same.
11331         * fortran/trans-openmp.c (gfc_trans_omp_variable_list): Same.
11332         (gfc_trans_omp_reduction_list): Same.
11333         (gfc_trans_omp_clauses): Same.
11334         (gfc_trans_omp_do): Same.
11335         * c-typeck.c (c_finish_goto_label): Same.
11336         (c_finish_goto_ptr): New location argument.
11337         (c_start_case): Same.
11338         (emit_side_effect_warnings): Same.
11339         (c_process_expr_stmt): Same.
11340         (c_finish_stmt_expr): Same.
11341         (c_finish_omp_clauses): Use error_at instead of error.
11342         * gimplify.c (gimplify_adjust_omp_clauses_1): Pass location to
11343         build_omp_clause.
11344         * c-omp.c (c_split_parallel_clauses): New location argument.
11345         * tree-nested.c (convert_nonlocal_reference_stmt): Pass location
11346         to build_omp_clause.
11347         (convert_local_reference_stmt): Same.
11348         (convert_gimple_call): Same.
11349         * c-common.h (c_split_parallel_clauses): New argument.
11350         * c-parser.c (c_parser_statement_after_labels): Pass location to
11351         c_finish_goto_label.
11352         (c_parser_switch_statement): Pass location to c_start_case.
11353         (c_parser_for_statement): Pass location to c_finish_expr_stmt,
11354         and c_process_expr_stmt.
11355         (c_parser_omp_variable_list): Add location argument.
11356         (c_parser_omp_clause_collapse): Pass location to build_omp_clause.
11357         (c_parser_omp_clause_default): Same.
11358         (c_parser_omp_clause_if): Same.
11359         (c_parser_omp_clause_num_threads): Same.
11360         (-c_parser_omp_clause_ordered): Same.
11361         (c_parser_omp_clause_reduction): Pass location to
11362         c_parser_omp_variable_list.
11363         (c_parser_omp_clause_schedule): Pass location to build_omp_clause.
11364         (c_parser_omp_clause_untied): Same.
11365         (c_parser_omp_for_loop): Pass location to c_process_expr_stmt.
11366         (c_parser_omp_parallel): Pass location to c_split_parallel_clauses.
11367
11368         * c-tree.h (check_for_loop_decls, undeclared_variable,
11369         build_component_ref, build_array_ref, build_external_ref,
11370         c_expr_sizeof_expr, c_expr_sizeof_type, parser_build_unary_op,
11371         build_conditional_expr, build_compound_expr, c_cast_expr,
11372         build_c_cast, build_asm_expr, c_end_compound_stmt, c_finish_stmt_expr,
11373         c_finish_return, c_finish_omp_parallel, c_finish_omp_task): New
11374         argument.
11375         * c-semantics.c (build_stmt): Same.
11376         (build_case_label): Same.
11377         * c-decl.c (c_finish_incomplete_decl): Pass location on down.
11378         (undeclared_variable): New argument.
11379         (make_label): Same.
11380         (lookup_label): Pass location on down.
11381         (define_label): Same.
11382         (finish_decl): Same.
11383         (build_compound_literal): Same.
11384         (finish_struct): Same.
11385         (finish_function): Do not set location here.
11386         (check_for_loop_decls): New argument.
11387         * tree.c (save_expr): Set location.
11388         (build_empty_stmt): New argument.
11389         * tree.h (build_empty_stmt): New argument to build_empty_stmt.
11390         (CAN_HAVE_LOCATION_P): Make sure we have a non empty node.
11391         * builtins.c (gimplify_va_arg_expr): Use locations.
11392         (expand_builtin_sync_operation): Same.
11393         * c-typeck.c (build_component_ref): New argument.
11394         (build_array_ref): Same.
11395         (build_external_ref): Same.
11396         (c_expr_sizeof_expr): Same.
11397         (c_expr_sizeof_type): Same.
11398         (parser_build_unary_op): Same.
11399         (build_conditional_expr): Same.
11400         (build_compound_expr): Pass location on down.
11401         (build_compound_expr): New argument.
11402         (build_c_cast): Same.
11403         (c_cast_expr): Same.
11404         (build_asm_expr): Same.
11405         (c_finish_return): Same.
11406         (c_process_expr_stmt): Pass location on down.
11407         (c_finish_stmt_expr): New argument.
11408         (push_clenaup): Same.
11409         (c_finish_omp_parallel): Same.
11410         (c_finish_omp_task): Same.
11411         * gimplify.c (gimplify_call_expr): Pass location on down.
11412         * c-omp.c (c_finish_omp_master): New argument.
11413         (c_finish_omp_critical): Same.
11414         (c_finish_omp_ordered): Same.
11415         (c_finish_omp_barrier): Same.
11416         (-c_finish_omp_taskwait): Same.
11417         (c_finish_omp_atomic): Same.
11418         (c_finish_omp_flush): Same.
11419         * tree-inline.c (copy_tree_body_r): Pass location on down.
11420         (inline_forbidden_p): Remove use of input_location.
11421         * c-gimplify.c (c_build_bind_expr): New argument.
11422         * c-common.c (c_common_truthvalue_conversion): Pass location on down.
11423         (c_sizeof_or_alignof_type): New argument.
11424         (c_alignof_expr): Same.
11425         (build_va_arg): Same.
11426         (c_add_case_label): Same.
11427         * c-common.h (c_sizeof_or_alignof_type, c_alignof_expr,
11428         c_sizeof, c_alignof, build_va_arg, build_stmt, build_case_label,
11429         c_build_bind_expr, objc_build_selector_expr, objc_build_throw_stmt,
11430         c_finish_omp_master, c_finish_omp_critical, c_finish_omp_ordered,
11431         c_finish_omp_barrier, c_finish_omp_atomic, c_finish_omp_flush,
11432         c_finish_omp_taskwait, c_finish_omp_for, c_split_parallel_clauses):
11433         New argument.
11434         * stub-objc.c (objc_build_selector_expr): Same.
11435         (objc_build_throw_stmt): Same.
11436         * c-parser.c (c_parser_declaration_or_fndef): Pass location on down.
11437         (c_parser_initelt): Same.
11438         (c_parser_compound_statement): Same.
11439         (c_parser_compound_statement_nostart): Same.
11440         (c_parser_label): Same.
11441         (c_parser_statement_after_labels): Same.
11442         (c_parser_if_body): Same.
11443         (c_parser_else_body): Same.
11444         (c_parser_if_statement): Same.
11445         (c_parser_switch_statement): Same.
11446         (c_parser_while_statement): Same.
11447         (c_parser_do_statement): Same.
11448         (c_parser_for_statement): Same.
11449         (c_parser_asm_statement): Same.
11450         (c_parser_conditional_expression): Same.
11451         (c_parser_binary_expression): Same.
11452         (c_parser_cast_expression): Same.
11453         (c_parser_unary_expression): Same.
11454         (c_parser_sizeof_expression): Same.
11455         (c_parser_alignof_expression): Same.
11456         (c_parser_postfix_expression): Same.
11457         (c_parser_expression): Same.
11458         (c_parser_objc_receiver): Same.
11459         (c_parser_omp_variable_list): Same.
11460         (c_parser_omp_structured_block): Same.
11461         (c_parser_omp_atomic): New argument.
11462         (c_parser_omp_barrier): Same.
11463         (c_parser_omp_critical): Same.
11464         (c_parser_omp_flush): Pass location on down.
11465         (c_parser_omp_for_loop): New argument.
11466         (c_parser_omp_for): Same.
11467         (c_parser_omp_master): Same.
11468         (c_parser_omp_ordered): Same.
11469         (c_parser_omp_sections_scope): Same.
11470         (c_parser_omp_sections): Same.
11471         (c_parser_omp_parallel): Same.
11472         (c_parser_omp_single): Same.
11473         (c_parser_omp_task): Same.
11474         (c_parser_omp_taskwait): Pass location on down.
11475         (c_parser_omp_construct): Same.
11476         (c_parser_omp_threadprivate): Same.
11477         * dwarf2asm.c, targhooks.c, optabs.c, tree.c, tree.h, target.h,
11478         builtins.c, omp-low.c, cgraphunit.c, tree-call-cdce.c,
11479         tree-ssa-alias.c, gimple-low.c, c-tree.h, expr.c, tree-parloops.c,
11480         c-decl.c, tree-eh.c, langhooks.c, function.c, stor-layout.c,
11481         c-typeck.c, gimplify.c, c-pragma.c, expmed.c, except.c, coverage.c,
11482         emit-rtl.c, cfgexpand.c, tree-mudflap.c, varasm.c, tree-nested.c,
11483         rtl.h, tree-inline.c, tree-profile.c, c-common.c, c-common.h,
11484         tree-switch-conversion.c, tree-cfg.c, ipa-struct-reorg.c, c-parser.c,
11485         config/i386/i386.c, stmt.c:
11486         Add location argument to the following function definitions and/or
11487         function calls: build_decl, objcp_start_struct, objcp_finish_struct,
11488         start_struct, finish_struct, PUSH_FIELD, create_artificial_label,
11489         cp_make_fname_decl, pushtag, implicitly_declare, c_make_fname_decl,
11490         build_compound_literal, parser_xref_tag, resolve_overloaded_builtin,
11491         do_case, c_finish_bc_stmt, build_compound_literal,
11492         build_function_call.
11493         * c-decl.c (build_compound_literal): Add location argument.
11494         Make all diagnostic calls use location.
11495         (start_struct): Same.
11496         (finish_struct): Same.
11497         (start_enum): Same.
11498         (build_enumerator): Same.
11499         (start_function): Same.
11500         (grokdeclarator): Make all diagnostic calls use location.
11501         (store_parm_decls_oldstyle): Same.
11502         * c-typeck.c (build_function_call): Add location argument.
11503         Make all diagnostic calls use location.
11504         (do_case): Same.
11505         (c_finish_bc_stmt): Same.
11506         * tree-nested.c (get_trampoline_type): Add argument.
11507         Pass location to build_decl.
11508         (lookup_tramp_for_decl): Pass location to get_trampoline_type.
11509         * rtl.h (RTL_LOCATION): New.
11510         * c-common.c (c_add_case_label): Add location argument.
11511         Make all diagnostic calls use location.
11512         * c-common.h: Add location argument to make_fname_decl, do_case,
11513         c_add_case_label, build_function_call, resolve_overloaded_builtin.
11514         * c-parser.c (c_parser_enum_specifier): Rename ident_loc to enum_loc.
11515         Set it appropriately for every case.  Pass enum_loc to start_enum
11516         call.  Pass value_loc first to build_enumerator.  Pass enum_loc to
11517         parser_xref_tag.
11518         (c_parser_struct_or_union_specifier): Save location.  Use it for
11519         start_struct, finish_struct, and parser_xref_tag.
11520
11521 2009-06-12  Ian Lance Taylor  <iant@google.com>
11522
11523         * fold-const.c (fold_unary): Rename local variable and to and_expr.
11524
11525         * c-opts.c (c_common_handle_option): For -Wc++-compat set
11526         cpp_opts->warn_cxx_operator_names.
11527
11528 2009-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11529
11530         PR tree-opt/38865
11531         * tree-ssa-sccvn.c (visit_reference_op_load): If vn_reference_lookup
11532         is returns NULL and OP is a VCE, look through the VCE.
11533
11534 2009-06-12  Ian Lance Taylor  <iant@google.com>
11535
11536         PR bootstrap/40430
11537         * collect2.c (main): Use CONST_CAST2 in code inside #if
11538         LINK_ELIMINATE_DUPLICATE_LDIRECTORIES.
11539
11540 2009-06-12  Joey Ye  <joey.ye@intel.com>
11541
11542         PR middle-end/39146
11543         * cfgexpand.c (get_decl_align_unit): Update
11544         max_used_stack_slot_alignment with align instead of
11545         stack_alignment_needed.
11546
11547         * function.c (assign_stack_local_1): Update
11548         max_used_stack_slot_alignment with alignment_in_bits instead
11549         of stack_alignment_needed.
11550         (locate_and_pad_parm): Don't update max_used_stack_slot_alignment
11551         here.
11552
11553 2009-06-12  Jakub Jelinek  <jakub@redhat.com>
11554
11555         * dwarf2out.c (last_var_location_insn): New variable.
11556         (dwarf2out_end_epilogue): Clear last_var_location_insn.
11557         (dwarf2out_var_location): Don't record anything after last real
11558         insn.  Only change labels if there were any real instructions
11559         in between last note and this one, or if changed sections.
11560
11561 2009-06-11  Richard Henderson  <rth@redhat.com>
11562
11563         * alpha.c (alpha_expand_prologue): Add a REF_CFA_REGISTER
11564         note when storing the frame pointer in a register.
11565         (FRP): Don't redefine to nothing for epilogue.
11566         (alpha_expand_epilogue): Mark register and sp restores.
11567         (unicosmk_gen_dsib): Don't mark weird frame pointer adjust.
11568
11569         * config/alpha/alpha.c (alpha_emit_setcc): Fix test for
11570         when gen_lowpart is needed.
11571
11572 2009-06-11  Richard Henderson  <rth@redhat.com>
11573
11574         * dwarf2out.c (def_cfa_1): Likewise for DW_CFA_cfa_offset.
11575
11576         * dwarf2out.c (need_data_align_sf_opcode): New.
11577         (div_data_align): Move earlier.
11578         (def_cfa_1, reg_save): Use it.
11579
11580 2009-06-11  H.J. Lu  <hongjiu.lu@intel.com>
11581
11582         * config/i386/i386.c (OPTION_MASK_ISA_CRC32_SET): New.
11583         (OPTION_MASK_ISA_CRC32_UNSET): Likewise.
11584         (ix86_handle_option): Handle OPT_mcrc32.
11585         (ix86_target_string): Add -mcrc32.
11586         (bdesc_args): Enable crc32 builtins with OPTION_MASK_ISA_CRC32.
11587
11588         * config/i386/i386.h (TARGET_CRC32): New.
11589
11590         * config/i386/i386.md (sse4_2_crc32<mode>): Also check TARGET_CRC32.
11591         (sse4_2_crc32di): Likewise.
11592
11593         * config/i386/i386.opt (mcrc32): New.
11594
11595         * doc/invoke.texi: Document -mcrc32.
11596
11597 2009-06-11  Richard Henderson  <rth@redhat.com>
11598
11599         * common.opt (gdwarf-): Accept a version number.
11600         * doc/invoke.texi (gdwarf-): Update docs.
11601         * opth-gen.awk: Special case -gdwarf+ to OPT_gdwarfplus.
11602         * opts.c (common_handle_option) [OPT_gdwarf_]: Verify dwarf
11603         version level, and record it.
11604
11605         * dwarf2.h (DW_CIE_VERSION): Remove.
11606         * dwarf2out.c (DWARF_VERSION): Remove.
11607         (add_fde_cfi): Skip DW_CFA_set_loc addition for dwarf3.
11608         (output_call_frame_info): Use CIE version 3 for dwarf3,
11609         or if the return register column is out of range for version 1.
11610         (dwarf_stack_op_name): Add all dwarf3 values.
11611         (DEBUG_PUBTYPES_SECTION): New.
11612         (size_of_die) [dw_val_class_die_ref]: Handle DW_FORM_ref_addr
11613         encoding change for dwarf3.
11614         (output_die) [dw_val_class_die_ref]: Likewise.
11615         (output_compilation_unit_header): Emit correct version for dwarf3.
11616         (output_line_info): Likewise.
11617         (output_pubnames): Update for DWARF_VERSION removal.
11618         (output_aranges): Likewise.
11619         (gen_subprogram_die): Emit DW_OP_call_frame_cfa if emitting dwarf3.
11620         (dwarf2out_init): Don't ifdef DEBUG_PUBTYPES_SECTION.
11621         (dwarf2out_finish): Likewise.
11622
11623 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
11624
11625         * system.h (gcc_assert, gcc_unreachable): Revert accidental commit
11626         in r148403.
11627
11628 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
11629
11630         PR c/39252
11631         * doc/extend.texi ( __builtin_unreachable): Document new builtin.
11632         * builtins.c (expand_builtin_unreachable): New function.
11633         (expand_builtin): Handle BUILT_IN_UNREACHABLE case.
11634         * builtins.def (BUILT_IN_UNREACHABLE): Add new builtin.
11635         * cfgcleanup.c (try_optimize_cfg): Delete empty blocks with no
11636         successors.
11637         * cfgrtl.c (rtl_verify_flow_info): Handle empty blocks when
11638         searching for missing barriers.
11639
11640 2009-06-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
11641
11642         * config/darwin.h (LINK_COMMAND_SPEC): Adjust spec to link libcov
11643         when -fprofile-generate* was passed.
11644         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
11645
11646 2009-06-11  Anthony Green  <green@moxielogic.com>
11647
11648         * config/moxie/moxie.md: Define length attribute for all instructions.
11649         (rCC): Define.
11650         (*b<cond:code>): Support limited branch ranges for new PC-relative
11651         branch instructions.
11652         * config/moxie/moxie.h (HAS_LONG_UNCOND_BRANCH): Define.
11653
11654 2009-06-11  Jakub Jelinek  <jakub@redhat.com>
11655
11656         * config/i386/i386.c (min_insn_size): Use get_attr_length
11657         for normal insns other than TYPE_MULTI, TYPE_OTHER and TYPE_FCMP.
11658         For __asm return 0.
11659
11660         * config/i386/i386.c (ix86_pad_returns): Use emit_jump_insn_before
11661         instead of emit_insn_before.
11662
11663 2009-06-10  Ian Lance Taylor  <iant@google.com>
11664
11665         PR bootstrap/40408
11666         * graphite.c (add_conditions_to_domain): Change SWITCH_EXPR to
11667         GIMPLE_SWITCH.
11668
11669 2009-06-10  Revital Eres  <eres@il.ibm.com>
11670
11671         * passes.c (init_optimization_passes): Reschedule
11672         predictive-commoning pass before complete unroll pass.
11673
11674 2009-06-10  Martin Jambor  <mjambor@suse.cz>
11675
11676         * cgraph.c (cgraph_node_can_be_local_p): New function.
11677         (cgraph_make_node_local): New function.
11678         * cgraph.h (cgraph_node_can_be_local_p): Declare.
11679         (cgraph_make_node_local): Declare.
11680
11681 2009-06-10  Nathan Froyd  <froydnj@codesourcery.com>
11682
11683         * tree.h (tree_base): Add packed_flag and user_align fields.
11684         Decrease size of spare field.
11685         (TYPE_USER_ALIGN): Use user_align from tree_base.
11686         (DECL_USER_ALIGN): Likewise.
11687         (TYPE_PACKED): Use packed_flag from tree_base.
11688         (DECL_PACKED): Likewise.
11689         (tree_type): Delete packed_flag and user_align fields.  Widen
11690         precision field.  Widen mode field and shuffle fields to align
11691         mode on an 8-bit boundary.
11692         (tree_decl_common): Delete decl_flag_1 and user_align fields.
11693         Renumber decl_flag_* fields.  Fix comments.  Widen
11694         decl_common_unused field.
11695         (DECL_HAS_VALUE_EXPR_P): Adjust for renumbering of decl_flag_* fields.
11696         (DECL_EXTERNAL): Likewise.
11697         (DECL_BIT_FIELD): Likewise.
11698         (DECL_NONADDRESSABLE_P): Likewise.
11699         (TYPE_DECL_SUPRESS_DEBUG): Likewise.
11700         * config/arm/arm-modes.def (XImode): Make it an INT_MODE.
11701
11702 2009-06-10  Ian Lance Taylor  <iant@google.com>
11703
11704         * vec.h (DEF_VEC_ALLOC_I): Use DEF_VEC_NONALLOC_FUNCS_I.
11705         (DEF_VEC_ALLOC_P): Use DEF_VEC_NONALLOC_FUNCS_P.
11706         (DEF_VEC_ALLOC_O): Use DEF_VEC_NONALLOC_FUNCS_O.
11707         (DEF_VEC_ALLOC_FUNC_P): Only define VEC_OP (T,A,alloc).
11708         (DEF_VEC_NONALLOC_FUNCS_P): New macro, broken out of old
11709         DEF_VEC_ALLOC_FUNC_P.
11710         (DEF_VEC_ALLOC_FUNC_O): Only define VEC_OP (T,A,alloc).
11711         (DEF_VEC_NONALLOC_FUNCS_O): New macro, broken out of old
11712         DEF_VEC_ALLOC_FUNC_O.
11713         (DEF_VEC_ALLOC_FUNC_I): Only define VEC_OP (T,A,alloc).
11714         (DEF_VEC_NONALLOC_FUNCS_I): New macro, broken out of old
11715         DEF_VEC_ALLOC_FUNC_I.
11716         (vec_stack_p_reserve, vec_stack_p_reserve_exact): Declare.
11717         (vec_stack_p_reserve_exact_1): Declare.
11718         (vec_stack_o_reserve, vec_stack_o_reserve_exact): Declare.
11719         (vec_stack_free): Declare.
11720         (VEC_stack_alloc): Define.
11721         (DEF_VEC_ALLOC_P_STACK, DEF_VEC_ALLOC_FUNC_P_STACK): Define.
11722         (DEF_VEC_ALLOC_O_STACK, DEF_VEC_ALLOC_FUNC_O_STACK): Define.
11723         (DEF_VEC_ALLOC_I_STACK, DEF_VEC_ALLOC_FUNC_I_STACK): Define.
11724         * vec.c (void_p): New type.  Call DEF_VEC_P and DEF_VEC_ALLOC_P
11725         for void_p.
11726         (stack_vecs): New static variable.
11727         (vec_stack_p_reserve_exact_1): New function.
11728         (vec_stack_o_reserve_1): New static function.
11729         (vec_stack_p_reserve, vec_stack_p_reserve_exact): New functions.
11730         (vec_stack_o_reserve, vec_stack_o_reserve_exact): New functions.
11731         (vec_stack_free): New function.
11732         * df-scan.c (df_ref): Use DEF_VEC_P and DEF_VEC_ALLOC_P_STACK.
11733         (VEC_df_ref_stack_alloc): Define.
11734         (df_mw_hardreg_ptr): New type.  Use DEF_VEC_P and
11735         DEF_VEC_ALLOC_P_STACK.
11736         (VEC_df_mw_hardreg_ptr_stack_alloc): Define.
11737         (struct df_collection_rec): Change _vec fields to VEC.  Remove
11738         _use fields.
11739         (df_free_collection_rec): Adjust for new fields.
11740         (df_insn_rescan): Use new df_collection_rec fields.
11741         (df_notes_rescan, df_canonize_collection_rec): Likewise.
11742         (df_ref_create_structure, df_ref_record): Likewise.
11743         (df_get_conditional_uses, df_get_call_refs): Likewise.
11744         (df_insn_refs_collect, df_bb_refs_collect): Likewise.
11745         (df_bb_refs_record, df_record_entry_block_defs): Likewise.
11746         (df_record_exit_block_uses, df_bb_verify): Likewise.
11747         (df_swap_refs): Change ref_vec parameter to VEC.  Change all callers.
11748         (df_sort_and_compress_refs): Change ref_vec parameter to VEC.
11749         Remove count parameter.  Change return type to void.  Change all
11750         callers.
11751         (df_sort_and_compress_mws): Change mw_vec parameter to VEC.
11752         Remove count parameter.  Change return type to void.  Change all
11753         callers.
11754         (df_install_refs): Change old_vec parameter to VEC.  Remove count
11755         parameter.  Change all callers.
11756         (df_install_mws): Change old_vec parameter to VEC.  Remove count
11757         parameter.  Change all callers.
11758         (df_refs_verify): Change new_rec parameter to VEC.  Change call
11759         callers.
11760         (df_mws_verify): Likewise.
11761
11762 2009-06-10  Alexandre Oliva  <aoliva@redhat.com>
11763
11764         * gcc.c (compare_files): Cast munmap argumento to caddr_t.
11765
11766 2009-06-10  H.J. Lu  <hongjiu.lu@intel.com>
11767
11768         * doc/extend.texi: Add description for __builtin_ia32_crc32di.
11769
11770 2009-06-10  Anthony Green  <green@moxielogic.com>
11771
11772         * config/moxie/crti.asm: New file.
11773         * config/moxie/crtn.asm: New file.
11774         * config/moxie/moxie.c: New file.
11775         * config/moxie/moxie.h: New file.
11776         * config/moxie/sfp-machine.h: New file.
11777         * config/moxie/moxie-protos.h: New file.
11778         * config/moxie/t-moxie: Created.
11779         * config/moxie/t-moxie-softfp: Created.
11780         * config/moxie/moxie.md: Created.
11781         * config/moxie/constraints.md: Created.
11782         * config.gcc: Add moxie support.
11783         * doc/md.texi (Machine Constraints): Add moxie constraints.
11784         * doc/contrib.texi (Contributors): Mention moxie port.
11785         * doc/install.texi (Specific): Mention the moxie port.
11786
11787 2009-06-09  Ian Lance Taylor  <iant@google.com>
11788
11789         * system.h (HAVE_DESIGNATED_INITIALIZERS): Don't define if
11790         compiling with C++.
11791         * optabs.c (optab_table): Only use designated initializers if
11792         HAVE_DESIGNATED_INITIALIZERS is defined.
11793         (convert_optab_table): Likewise.
11794         (init_optabs): Always call init_insn_codes if
11795         HAVE_DESIGNATED_INITIALIZERS is not defined.
11796
11797 2009-06-09  Ian Lance Taylor  <iant@google.com>
11798
11799         * targhooks.c (default_builtin_vectorized_function): Change fn
11800         parameter to unsigned int.
11801         (default_builtin_vectorized_conversion): Change code parameter to
11802         unsigned int.
11803         (default_builtin_reciprocal): Change fn parameter to unsigned int.
11804         * targhooks.h: Update declarations.
11805         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Change code
11806         parameter to unsigned int.
11807
11808         * c-typeck.c (comptypes_check_enum_int): New static function.
11809         (comptypes_internal): Add enum_and_int_p parameter.  Change all
11810         callers.
11811         (comp_target_types): Add location parameter.  Change all callers.
11812         (tagged_types_tu_compatible_p): Add enum_and_int_p parameter.
11813         Change all callers.
11814         (function_types_compatible_p, type_lists_compatible_p): Likewise.
11815         (build_conditional_expr): Add colon_loc parameter.  Change all
11816         callers.
11817         (convert_for_assignment): Add location parameter.  Change all callers.
11818         * c-parser.c (c_parser_conditional_expression): Pass location of
11819         colon to build_conditional_expr.
11820         * c-tree.h (build_conditional_expr): Update declaration.
11821
11822 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
11823
11824         * graphite.c: Revert previous patch.
11825
11826 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
11827
11828         PR bootstrap/40103
11829         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
11830
11831 2009-06-09  Ghassan Shobaki  <ghassan.shobaki@amd.com>
11832
11833         * tree-ssa-loop-prefetch.c
11834         (loop_prefetch_arrays): Fixed a portability problem in printf format
11835         string.
11836
11837 2009-06-09  Martin Jambor  <mjambor@suse.cz>
11838
11839         PR tree-optimization/40351
11840         * tree-sra.c (propagate_subacesses_accross_link): Check that a
11841         refrence to a potential artifical subaccess can be constructed.
11842
11843 2009-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
11844
11845         * config/sh/sh-protos.h (sh_optimization_options): Declare.
11846         (sh_override_options): Likewise.
11847         * config/sh/sh.c: Include params.h.
11848         (sh_optimization_options): New.
11849         (sh_override_options): Likewise.
11850         * config/sh/sh.c (OPTIMIZATION_OPTIONS): Use sh_optimization_options.
11851         (OVERRIDE_OPTIONS): Use sh_override_options.
11852
11853 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
11854
11855         * dwarf2out.c (emit_cfa_remember): New variable.
11856         (add_fde_cfi): If emit_cfa_remember, recurse to add
11857         DW_CFA_remember_state first.
11858         (dwarf2out_begin_epilogue): Don't add_fde_cfi DW_CFA_remember_state,
11859         instead just set emit_cfa_remember.
11860
11861 2009-06-08  Jan Hubicka  <jh@suse.cz>
11862
11863         PR debug/40126
11864         * dwarf2out.c (dwarf2out_abstract_function): Free decl_loc_table.
11865
11866 2009-06-08  Jan Hubicka  <jh@suse.cz>
11867
11868         PR middle-end/39834
11869         * cgraphunit.c (save_inline_function_body): Do not copy transform
11870         hooks for saved inline bodies.
11871         * ipa-passes.c (do_per_function): Do not add the hoks multiple times
11872         for given function.
11873
11874 2009-06-08  Adam Nemet  <anemet@caviumnetworks.com>
11875
11876         * jump.c (returnjump_p): Handle delayed branches.  Add missing
11877         function comment.
11878
11879 2009-06-08  Jan Hubicka  <jh@suse.cz>
11880
11881         PR middle-end/40102
11882         * cgraph.c (cgraph_create_edge_including_clones): Also asume that the
11883         original node might've been modified.
11884         * tree-inline.c (copy_bb): Do not assume that all clones are the same.
11885
11886 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
11887
11888         * tree-object-size.c (addr_object_size): Add OSI argument.
11889         Handle also INDIRECT_REF with SSA_NAME inside of it as base address.
11890         (compute_builtin_object_size, expr_object_size): Adjust callers.
11891         (plus_stmt_object_size): Call addr_object_size instead of
11892         compute_builtin_object_size.
11893
11894 2009-06-08  Ghassan Shobaki  <ghassan.shobaki@amd.com>
11895             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
11896
11897         * tree-ssa-loop-prefetch.c
11898         (gather_memory_references): Introduced a counter for the number of
11899         memory references.
11900         (anything_to_prefetch_p): Introduced a counter for the number of
11901         prefetches.
11902         (is_loop_prefetching_profitable): New function with a cost model
11903         for prefetching.
11904         (loop_prefetch_arrays): Use the new cost model to determine if
11905         prefetching is profitable.
11906         * params.def (MIN_INSN_TO_PREFETCH_RATIO,
11907         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
11908         * params.h (MIN_INSN_TO_PREFETCH_RATIO,
11909         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
11910         * doc/invoke.texi (MIN_INSN_TO_PREFETCT_RATIO,
11911         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
11912
11913 2009-06-08  Michael Matz  <matz@suse.de>
11914
11915         PR debug/40012
11916         * cfgexpand.c (set_rtl): Store place also in DECL_RTL, if all
11917         partitions use the same.
11918         (expand_one_var): Deal with DECL_RTL sometimes begin set also
11919         for basevars of SSA_NAMEs.
11920         (expand_used_vars): Reset TREE_USED for basevars of SSA_NAMEs,
11921         to not expand them twice.
11922         (gimple_expand_cfg): Clear DECL_RTL for those decls that have
11923         multiple places.
11924
11925 2009-06-08  Alexandre Oliva  <aoliva@redhat.com>
11926
11927         * common.opt (fcompare-debug=, fcompare-debug-second): New.
11928         (fdump-final-insns=, gtoggle): New.
11929         * doc/invoke.texi: Document them.
11930         * final.c (rest_of_clean_state): Dump final insn stream.
11931         * gcc.c (invoke_as): Hook in -fcompare-debug.
11932         (static_spec_functions): Add compare-debug-dump-opt,
11933         compare-debug-self-opt and compare-debug-auxbase-opt.
11934         (compare_debug, compare_debug_second, compare_debug_opt): New.
11935         (switches_debug_check, n_switches_debug_check): New.
11936         (debug_auxbase_opt, debug_check_temp_file): New.
11937         (process_command): Handle -fno-compare-debug, -fcompare-debug and
11938         -fcompare-debug=*.
11939         (do_self_spec): Handle arguments after switches.
11940         (do_spec_1): Add .gk extension to temp file basenames for compare.
11941         (check_live_switch): Take SWITCH_IGNORE into account, and earlier.
11942         (cc1_options): Use it instead of normal auxbase computation for
11943         the second compare-debug compilation.
11944         (compare_files): New.
11945         (main): Set up and implement compare debug mode.
11946         (compare_debug_dump_opt_spec_function): New.
11947         (compare_debug_self_opt_spec_function): New.
11948         (compare_debug_auxbase_opt_spec_function): New.
11949         * toplev.c (process_options): Handle flag_gtoggle,
11950         flag_dump_final_insns.
11951         * coverage.c (coverage_begin_output): Don't overwrite .gcno file
11952         during -fcompare-debug-second compilation.
11953
11954 2009-06-07  Ian Lance Taylor  <iant@google.com>
11955
11956         * dwarf2.h (enum dwarf_location_atom): Add INTERNAL_DW_OP_tls_addr.
11957         * dwarf2out.c (INTERNAL_DW_OP_tls_addr): Don't #define.
11958
11959         * c-common.c (c_do_switch_warnings): Don't exit early for -Wswitch
11960         with no default node.  Change warning with %H to warning_at.
11961         Don't clear warn_switch around case checking.
11962         * doc/invoke.texi (Warning Options): Clarify distinction between
11963         -Wswitch and -Wswitch-enum.
11964
11965 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
11966
11967         * tree-pass.h (TODO_update_ssa_any): Document internal use only.
11968
11969 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
11970
11971         * gbl-ctors.h: Add header guard.
11972
11973 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
11974
11975         * tree-flow.h (make_value_handle, set_value_handle, sort_vuses,
11976         sort_vuses_heap, vn_lookup_or_add, vn_lookup_or_add_with_stmt,
11977         vn_lookup_or_add_with_vuses, vn_add, vn_add_with_vuses,
11978         vn_lookup_with_stmt, vn_lookup, vn_lookup_with_vuses): Remove
11979         prototypes for removed functions.
11980         (expressions_equal_p): Move to ...
11981         * tree-ssa-sccvn.h: ... here and ...
11982         * matrix-reorg.c: ... adjust includes.
11983
11984 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
11985
11986         * ipa-struct-reorg.c (do_reorg_1): Fix whitespace in dump output.
11987
11988 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
11989
11990         * c-decl.c (finish_decl): Use bool for variable was_incomplete.
11991         (finish_function): Remove erroneous whitespace.
11992
11993 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
11994
11995         * tree-cfg.c (gimple_merge_blocks): Commentary typo fix.
11996         (verify_stmts): Print statement who's gimple_bb is set to a wrong BB
11997
11998 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
11999
12000         * errors.c (internal_error): Commentary typo fix.
12001         * gimple-iterator.c (gsi_insert_seq_on_edge): Ditto.
12002         * tree-ssa-pre.c: Ditto.
12003
12004 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
12005
12006         * basic-block.h (ENTRY_BLOCK, EXIT_BLOCK): Document that neither of
12007         them is supposed to hold actual statements.
12008
12009 2009-06-06  Ian Lance Taylor  <iant@google.com>
12010
12011         * doc/extend.texi (Attribute Syntax): Document that C++ labels on
12012         empty statements can now have attributes.
12013
12014 2009-06-05  Shujing Zhao  <pearly.zhao@oracle.com>
12015
12016         * config/mips/mips.c: Use REG_P and CONST_INT_P where applicable.
12017         * config/mips/mips.md: Ditto.
12018
12019 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
12020
12021         * config/rs6000/eabi.asm (__eabi_convert): Don't define if
12022         _RELOCATABLE.
12023         (__eabi_uconvert): Likewise.
12024
12025 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
12026
12027         * config/rs6000/ppc-asm.h: Protect auto-host.h inclusion and
12028         CFI_* definitions with IN_GCC.
12029
12030 2009-06-05  David Edelsohn  <edelsohn@gnu.org>
12031
12032         * xcoffout.h (xcoffout_source_line): Update prototype.
12033
12034 2009-06-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12035
12036         * builtins.c (do_mpc_ckconv, do_mpc_arg1): Use
12037         mpc_realref/mpc_imagref instead of MPC_RE/MPC_IM.
12038
12039 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
12040
12041         PR middle-end/40340
12042         * tree-ssa-live.c (remove_unused_scope_block_p): Don't prune
12043         inlined_function_outer_scope_p blocks for artificial inlines
12044         even at -g0/-g1.
12045         * tree.c (tree_nonartificial_location): Rewrite using
12046         block_nonartificial_location.
12047
12048 2009-06-05  Revital Eres  <eres@il.ibm.com>
12049             Leehod Baruch  <leehod@il.ibm.com>
12050
12051         * expr.c (expand_assignment): Expand MISALIGNED_INDIRECT_REF.
12052         (expand_expr_real_1): Remove comment.
12053         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
12054         Vectorize misaligned access when the target supports it.
12055         (vect_supportable_dr_alignment): Check for unaligned access support.
12056         * tree-vect-stmts.c (vectorizable_store): Generate misaligned store
12057         and remove asset.
12058
12059 2009-06-05  Julian Brown  <julian@codesourcery.com>
12060
12061         * config/arm/ieee754-df.S (cmpdf2): Avoid writing below SP.
12062         * config/arm/ieee754-sf.S (cmpsf2): Likewise.
12063
12064 2009-06-05  Richard Guenther  <rguenther@suse.de>
12065
12066         PR bootstrap/40350
12067         * dwarf2out.c (dwarf2out_begin_function): Mark discriminator
12068         as possibly unused.
12069
12070 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
12071
12072         * config/s390/s390.c (global_not_special_regno_p): New static inline.
12073         (save_gprs): Don't tell unwinder when a global register is saved.
12074         (s390_emit_epilogue): Emit needed epilogue unwind info.
12075
12076 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
12077
12078         * dwarf2out.c (deferred_asm_name): New.
12079         (add_name_and_src_coords_attributes): Defer creation of
12080         DW_AT_MIPS_linkage_name attribute if DECL_ASSEMBLER_NAME was not
12081         computed yet.
12082         (move_linkage_attr): New.
12083         (dwarf2out_finish): Revisit deferrals and emit attributes at the
12084         right place.
12085
12086 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
12087
12088         * tree-nested.c (finalize_nesting_tree_1): Declare the
12089         frame_decl in the binding tree.
12090
12091 2009-06-04  Cary Coutant  <ccoutant@google.com>
12092
12093         * basic-block.h (struct basic_block_def): Add discriminator field.
12094         * dbxout.c (dbxout_source_line): Add new parameter.  Change all
12095         callers.
12096         * debug.c (do_nothing_debug_hooks): Add additional entry.
12097         (debug_nothing_int_charstar_int): New function.
12098         * debug.h (struct gcc_debug_hooks): Add parameter to source_line hook.
12099         (debug_nothing_int_charstar_int): New declaration.
12100         * dwarf2out.c (dwarf2out_source_line): Add new parameter.  Write
12101         discriminator value in .loc directive.
12102         * final.c (last_discriminator): New variable.
12103         (discriminator): New variable.
12104         (final_start_function): Initialize above variables, pass current
12105         discriminator to debug hook.
12106         (notice_source_line): Check for discriminator change.
12107         * gimple-pretty-print.c (dump_bb_header): Print discriminator value.
12108         * sdbout.c (sdbout_source_line): New parameter.
12109         * tree-cfg.c (struct locus_discrim_map): New structure type.
12110         (discriminator_per_locus): New hash table.
12111         (build_gimple_cfg): Allocate and free discriminator hash table.
12112         (make_edges): Call assign_discriminator.
12113         (locus_map_hash): New function.
12114         (locus_map_eq): New function.
12115         (next_discriminator_for_locus): New function.
12116         (same_line_p): New function.
12117         (assign_discriminator): New function.
12118         (make_cond_expr_edges): Call assign_discriminator.
12119         (make_gimple_switch_edges): Likewise.
12120         (first_non_label_stmt): New function.
12121         * vmsdbgout.c (vmsdbgout_source_line): Add new parameter.  Change
12122         all callers.
12123         * xcoffout.c (xcoffout_source_line): Add new parameter.
12124
12125         * configure.ac (gcc_cv_as_discriminator): New configury check for
12126         gas support for discriminator.
12127         * configure: Regenerate.
12128         * config.in: Regenerate.
12129
12130 2009-06-04  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
12131
12132         * config/arm/arm.c (thumb2_legitimate_index_p): Initialize
12133         val after checking for integers.
12134
12135 2009-06-04  Uros Bizjak  <ubizjak@gmail.com>
12136
12137         * config/i386/i386.h (X86_64_MS_REGPARM_MAX): Rename from
12138         X64_REGPARM_MAX.
12139         (REGPARM_MAX): Use X86_64_MS_REGPARM_MAX.
12140         (X86_64_MS_SSE_REGPARM_MAX): Rename from X64_SSE_REGPARM_MAX.
12141         (SSE_REGPARM_MAX): Use X86_64_MS_SSE_REGPARM_MAX.
12142         * config/i386/i386.c: Use X86_64_MS_REGPARM_MAX instead of
12143         X64_REGPARM_MAX.  Use X86_64_MS_SSE_REGPARM_MAX instead of
12144         X64_SSE_REGPARM_MAX.
12145         * config/i386/i386.md: Use X86_64_MS_SSE_REGPARM_MAX instead of
12146         X64_SSE_REGPARM_MAX.
12147
12148 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
12149
12150         * gcc.c (report_times_to_file): New.
12151         (execute): Implement it.
12152         (process_command): Support -time=.
12153         * doc/invoke.texi: Document it.
12154
12155 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
12156
12157         * tree-ssa-live.c (remove_unused_scope_block_p): Keep variables
12158         that have value exprs.
12159
12160 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
12161
12162         * dwarf2asm.c (dw2_force_const_mem): Defer creation of
12163         declarations for constants until...
12164         (dw2_output_indirect_constant_1): ... this point.
12165
12166 2009-06-04  Richard Earnshaw  <rearnsha@arm.com>
12167
12168         PR target/10242
12169         * arm.md (arm_addsi3): Don't try to split an add with an
12170         eliminable register until after reload has completed.
12171
12172 2009-06-03  Ian Lance Taylor  <iant@google.com>
12173
12174         * dummy-checksum.c (executable_checksum): Use EXPORTED_CONST.
12175         * genattrtab.c (write_length_unit_log): Likewise.
12176         * genchecksum.c (dosum): Likewise.
12177         * gengtype.c (write_rtx_next): Likewise.
12178         (finish_root_table, write_roots): Likewise.
12179         * gimple.c (gimple_ops_offset_): Likewise.
12180         * tree-nomudflap.c (gt_ggc_r_gt_tree_mudflap_h): Likewise.
12181         * config/arc/arc.c (arc_attribute_table): Likewise.
12182         * config/arm/arm.c (arm_attribute_table): Likewise.
12183         * config/avr/avr.c (avr_attribute_table): Likewise.
12184         * config/crx/crx.c (crx_attribute_table): Likewise.
12185         * config/m32r/m32r.c (m32r_attribute_table): Likewise.
12186         * config/m68hc11/m68hc11.c (m68hc11_attribute_table): Likewise.
12187         * config/mcore/mcore.c (mcore_attribute_table): Likewise.
12188         * config/rs6000/rs6000.c (rs6000_attribute_table): Likewise.
12189         * config/sh/sh.c (sh_attribute_table): Likewise.
12190         * config/sparc/sparc.c (sparc_attribute_table): Likewise.
12191         * config/spu/spu.c (spu_attribute_table): Likewise.
12192         * config/v850/v850.c (v850_attribute_table): Likewise.
12193
12194         * config/alpha/alpha.c (vms_attribute_table): Make static.
12195         * config/bfin/bfin.c (bfin_attribute_table): Likewise.
12196         * config/h8300/h8300.c (h8300_attribute_table): Likewise.
12197         * config/mips/mips.c (mips_attribute_table): Likewise.
12198
12199         * Makefile.in (dummy-checksum.o): Depend upon $(CONFIG_H) and
12200         $(SYSTEM_H).
12201         (cc1-checksum.o): Likewise.
12202
12203 2009-06-03  Steve Ellcey  <sje@cup.hp.com>
12204
12205         * config/ia64/vect.md (*movv2sf_internal): Handle big endian case.
12206
12207 2009-06-03  Jakub Jelinek  <jakub@redhat.com>
12208
12209         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Return generated
12210         insn if it is changing sp.  Use gen_add3_insn instead of
12211         conditionally gen_addsi3 and gen_adddi3.
12212         (offset_below_red_zone_p): New static inline function.
12213         (rs6000_emit_epilogue): Emit needed epilogue unwind info.
12214         Use gen_add3_insn instead of conditionally gen_addsi3 and gen_adddi3.
12215         * config/rs6000/ppc-asm.h: Include auto-host.h.
12216         (CFI_STARTPROC, CFI_ENDPROC, CFI_DEF_CFA_REGISTER, CFI_OFFSET,
12217         CFI_RESTORE): Define.
12218         * config/rs6000/crtresxgpr.asm: Add unwind info.
12219         * config/rs6000/crtresxfpr.asm: Likewise.
12220         * config/rs6000/crtresgpr.asm: Likewise.
12221         * config/rs6000/crtresfpr.asm: Likewise.
12222         * config/rs6000/crtsavgpr.asm: Likewise.
12223         * config/rs6000/crtsavfpr.asm: Likewise.
12224
12225         * dwarf2out.c (output_cfi_directive): Pass 1 instead of 0 to second
12226         argument of DWARF2_FRAME_REG_OUT macros.
12227
12228 2009-06-03  Julian Brown  <julian@codesourcery.com>
12229
12230         * config/arm/arm.c (arm_hard_regno_mode_ok): Permit values of four
12231         words or less (including TImode) in core registers.
12232
12233 2009-06-03  Richard Guenther  <rguenther@suse.de>
12234
12235         PR middle-end/40328
12236         * fold-const.c (fold_convert): Fold the build COMPLEX_EXPR.
12237
12238 2009-06-03  Andrey Belevantsev  <abel@ispras.ru>
12239
12240         * statistics.c (statistics_counter_event): Do not record event
12241         in pass dump if its number == -1.
12242         (curr_statistics_hash): Add assert that we never get passes
12243         with static number == -1.
12244
12245 2009-06-03  Richard Guenther  <rguenther@suse.de>
12246             Andrey Belevantsev  <abel@ispras.ru>
12247
12248         * cfgexpand.c (discover_nonconstant_array_refs_r): Make only
12249         non-BLKmode arrays addressable.
12250
12251 2009-06-03  Maxim Kuvyrkov  <maxim@codesourcery.com>
12252
12253         * config/m68k/linux.h (HAVE_GAS_BALIGN_AND_P2ALIGN): Move to ...
12254         * config/m68k/m68k.h: ... here.
12255
12256 2009-06-03  Martin Jambor  <mjambor@suse.cz>
12257
12258         PR tree-optimization/40323
12259         * ipa-prop.c (get_ssa_def_if_simple_copy): Break if not single
12260         assignment.
12261
12262 2009-06-03  Richard Guenther  <rguenther@suse.de>
12263
12264         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
12265         consistently.
12266
12267 2009-06-03  Shujing Zhao  <pearly.zhao@oracle.com>
12268
12269         * config/sh/predicates.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
12270         JUMP_P, CALL_P, NONJUMP_INSN_P, NOTE_P, BARRIER_P and
12271         JUMP_TABLE_DATA_P where applicable.
12272         * config/sh/sh.c: Ditto.
12273         * config/sh/sh.h: Ditto.
12274         * config/sh/sh.md: Ditto.
12275         * config/sh/symbian.c: Ditto.
12276
12277 2009-06-03  Uros Bizjak  <ubizjak@gmail.com>
12278
12279         * config/i386/driver-i386.c (describe_cache): Optimize
12280         concatenation of strings.  Use snprintf instead of sprintf.
12281         (host_detect_local_cpu): Ditto.  Ignore -march and -mtune for native
12282         target when not compiling with GCC.
12283
12284 2009-06-02  Kaz Kojima  <kkojima@gcc.gnu.org>
12285
12286         * config/sh/sh.c: Revert last change.
12287         (sh_expand_epilogue): Emit a blockage insn before the frame
12288         pointer adjustment unconditionally.
12289
12290 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
12291
12292         * config/pa/pa-hpux.h (LINK_SPEC): Remove "%<fwhole-program".
12293         * config/pa/pa-hpux10.h (LINK_SPEC): Likewise.
12294         * config/pa/pa-hpux11.h (LINK_SPEC): Likewise.
12295         * gcc.c (set_collect_gcc_options): Don't add -fwhole-program
12296         to COLLECT_GCC_OPTIONS.
12297
12298 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
12299
12300         * collect2.c (target_system_root): New variable.
12301         (main): Handle --sysroot=.
12302         (ignore_library): Strip the sysroot from the library path.
12303
12304 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
12305
12306         * Makefile.in (COLLECT2_OBJS): Add collect2-aix.o.
12307         (collect2.o): Depend on collect2-aix.h.
12308         (collect2-aix.o): New rule.
12309         * collect2-aix.h: New file.
12310         * collect2-aix.c: Likewise.
12311         * collect2.c: Include collect2-aix.h.  Don't undefine
12312         OBJECT_FORMAT_COFF if CROSS_AIX_SUPPORT is defined.
12313         Guard native includes with #ifndef CROSS_DIRECTORY_STRUCTURE.
12314         Use TARGET_AIX_VERSION instead of _AIX51.
12315         * config/rs6000/aix43.h (TARGET_AIX_VERSION): Define.
12316         * config/rs6000/aix51.h (TARGET_AIX_VERSION): Likewise.
12317         * config/rs6000/aix52.h (TARGET_AIX_VERSION): Likewise.
12318         * config/rs6000/aix53.h (TARGET_AIX_VERSION): Likewise.
12319         * config/rs6000/aix61.h (TARGET_AIX_VERSION): Likewise.
12320
12321 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
12322
12323         * collect2.c (ignore_library): Avoid premature post-increment
12324         and null deference.
12325
12326 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
12327
12328         * Makefile.in (libgcc.mvars): Add TARGET_SYSTEM_ROOT.
12329         * config/rs6000/aix.h (LINK_SYSCALLS_SPEC): Add %R to the
12330         !CROSS_DIRECTORY_STRUCTURE alternative and use it for
12331         CROSS_DIRECTORY_STRUCTURE too.
12332         (LINK_LIBG_SPEC): Likewise.
12333         (LIB_SPEC): Add %R to sysroot paths.
12334         * config/rs6000/aix43.h (CPP_SPEC): Add %R to sysroot paths.
12335         (CPLUSPLUS_CPP_SPEC, LIB_SPEC): Likewise.
12336         * config/rs6000/aix51.h: As for aix43.h.
12337         * config/rs6000/aix52.h: Likewise.
12338         * config/rs6000/aix53.h: Likewise.
12339         * config/rs6000/aix61.h: Likewise.
12340         * config/rs6000/t-aix52 (SHLIB_LINK): Add $(TARGET_SYSTEM_ROOT)
12341         to the beginning of sysroot paths.
12342
12343 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
12344
12345         * print_rtl (print_rtx): Don't print modes in EXPR_LISTs and
12346         INSN_LISTs that are out of the REG_NOTE range.
12347
12348 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
12349
12350         * loop-unroll.c (struct iv_to_split): Add pointer to next.
12351         (struct var_to_expand): Likewise.
12352         (struct opt_info): Add head and tail for linked lists of the above.
12353         (analyze_insn_to_expand_var): Initialize next.
12354         (analyze_iv_to_split_insn): Likewise.
12355         (analyze_insns_in_loop): Create linked lists.
12356         (allocate_basic_variable): Simplify for use without hash table.
12357         (insert_var_expansion_initialization): Likewise, make it type-safer.
12358         (combine_var_copies_in_loop_exit): Likewise.
12359         (apply_opt_in_copies): Walk lists rather than hash tables.
12360         (release_var_copies): Simplified and inlined by hand into...
12361         (free_opt_info): ... this function.
12362
12363 2009-06-02  Richard Guenther  <rguenther@suse.de>
12364
12365         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
12366         for field decls.
12367
12368 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
12369
12370         * cfgexpand.c (gimple_expand_cfg): Discard the source location
12371         only for builtins that are not overridden.
12372
12373 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
12374
12375         * gengtype.c (adjust_field_rtx_def): Add NOTE_INSN_DELETED_LABEL's
12376         label string.
12377
12378 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
12379
12380         * df-core.c (df_ref_debug): Honor -fdump-noaddr.
12381
12382 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
12383
12384         * combine.c (move_deaths): Compare LUIDs within the same BB only.
12385
12386 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
12387
12388         * common.opt (fdump-unnumbered-links): New.
12389         * doc/invoke.texi (-fdump-unnumbered-links): Document it.
12390         * print-rtl.c (flag_dump_unnumbered_links): New.
12391         (print_rtx): Test it.
12392
12393 2009-06-02  Richard Earnshaw  <rearnsha@arm.com>
12394
12395         * arm.c (arm_get_frame_offsets): Prefer using r3 for padding a
12396         push/pop multiple to 8-byte alignment.
12397
12398 2009-06-01  Jakub Jelinek  <jakub@redhat.com>
12399
12400         * config/i386/i386.c (queued_cfa_restores): New static variable.
12401         (ix86_add_cfa_restore_note, ix86_add_queued_cfa_restore_notes): New
12402         functions.
12403         (pro_epilogue_adjust_stack): Call ix86_add_queued_cfa_restore_notes.
12404         (ix86_emit_restore_reg_using_pop): Add RED_OFFSET argument.
12405         Set RTX_FRAME_RELATED_P immediately after adding a REG_CFA_* note.
12406         Call ix86_add_cfa_restore_note instead of adding REG_CFA_OFFSET
12407         note unconditionally.
12408         (ix86_emit_restore_regs_using_mov): Likewise.
12409         (ix86_emit_restore_sse_regs_using_mov): Likewise.
12410         (ix86_emit_restore_regs_using_pop): Add RED_OFFSET argument, pass
12411         it through to ix86_emit_restore_reg_using_pop.
12412         (ix86_emit_leave): Add RED_OFFSET argument.  Call
12413         ix86_add_queued_cfa_restore_notes.  Call ix86_add_cfa_restore_note
12414         instead of adding REG_CFA_OFFSET note unconditionally.
12415         (ix86_expand_epilogue): Compute RED_OFFSET, pass it down to
12416         the above functions.  Call ix86_add_queued_cfa_restore_notes when
12417         needed.
12418
12419         * dwarf2out.c (dwarf2out_cfi_label): Add FORCE argument, if true,
12420         force output of the label even for dwarf2out_do_cfi_asm.
12421         (add_fde_cfi): If -g2 and above and cfi might change CFA,
12422         force creation of CFI label and chain DW_CFA_set_loc jumping to it
12423         for convert_cfa_to_fb_loc_list.  Adjust other dwarf2out_cfi_label
12424         caller.
12425         (dwarf2out_stack_adjust, dwarf2out_frame_debug,
12426         dwarf2out_begin_epilogue, dwarf2out_frame_debug_restore_state): Adjust
12427         dwarf2out_cfi_label callers.
12428         * tree.h (dwarf2out_cfi_label): Adjust prototype.
12429         * config/arm/arm.c (thumb_pushpop, thumb1_output_function_prologue):
12430         Adjust dwarf2out_cfi_label callers.
12431         * config/vax/vax.c (vax_output_function_prologue): Likewise.
12432
12433         * config/i386/i386.h (struct machine_cfa_state,
12434         struct machine_function): Guard with ifndef USED_FOR_TARGET
12435         instead of not IN_LIBGCC2 and not in IN_TARGET_LIBS.
12436
12437         PR other/40024
12438         * emutls.c (__emutls_get_address): Change arr->size to mean number
12439         of allocated arr->data entries instead of # of slots + 1.
12440
12441         PR middle-end/40316
12442         * recog.c (peep2_reinit_state): New function.
12443         (peephole2_init_state): Use it at the end of a basic block and also
12444         when seeing a RTX_FRAME_RELATED_P insn.
12445
12446 2009-06-01  Steve Ellcey  <sje@cup.hp.com>
12447
12448         * ia64.md (floatdirf2, fix_truncrfdi, floatunsdirf,
12449         fixuns_truncrfdi2): New.
12450         (fix_truncxfdi2_alts, fixuns_truncxfdi2_alts,
12451         *nmaddsf4_alts, *nmadddf4_alts, *nmadddf4_truncsf_alts,
12452         *mulxf3_alts, *mulxf3_truncsf_alts, *mulxf3_truncdf_alts,
12453         *maddxf4_alts, *maddxf4_alts_truncsf, *maddxf4_alts_truncdf,
12454         *nmaddxf4_alts, *nmaddxf4_truncsf_alts, *nmaddxf4_truncdf_alts,
12455         *recip_approx): Remove.
12456         (divsi3 modsi3, udivsi3, umodsi3, divsi3_internal, divdi3,
12457         moddi3, udivdi3, umoddi3, divdi3_internal_lat, divdi3_internal_thr,
12458         divsf3, sqrtsf2, divdf3, sqrtdf2, divxf3, sqrtxf2): Modify and
12459         move to div.md.
12460         * div.md (fix_truncrfdi2_alts, fixuns_truncrfdi2_alt,
12461         setf_exp_rf): New.
12462
12463 2009-06-01  Ian Lance Taylor  <iant@google.com>
12464
12465         * attribs.c (register_attribute): Use CONST_CAST.
12466         * collect2.c (main): Use CONST_CAST2.
12467         (scan_prog_file): Likewise.
12468         * gcc.c (process_command, main): Likewise.
12469         * toplev.c (toplev_main): Likewise.
12470
12471         * c-typeck.c (handle_warn_cast_qual): New static function,
12472         partially broken out of build_c_cast.
12473         (build_c_cast): Call handle_warn_cast_qual.
12474         * doc/invoke.texi (Warning Options): Document new effect of
12475         -Wcast-qual.
12476
12477 2009-06-01  Aldy Hernandez  <aldyh@redhat.com>
12478
12479         * diagnostic.c (diagnostic_build_prefix): Always print columns.
12480         (diagnostic_report_current_module): Print columns.
12481         * common.opt (flag_show_column): Enable by default.
12482
12483 2009-06-01  Luis Machado  <luisgpm@br.ibm.com>
12484
12485         * alias.c (find_base_term): Check for NULL term before returning.
12486
12487 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
12488
12489         Revert due to PR40320:
12490         2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
12491         * calls.c (emit_library_call_value_1): Don't force_operand for move
12492         and push insns.
12493
12494 2009-06-01  Olivier Hainque  <hainque@adacore.com>
12495             Eric Botcazou  <ebotcazou@adacore.com>
12496
12497         * tree.h (CONSTRUCTOR_BITFIELD_P): True if NODE, a FIELD_DECL, is
12498         to be processed as a bitfield for constructor output purposes.
12499         * output.h (initializer_constant_valid_for_bitfield_p): Declare
12500         new function.
12501         * varasm.c (oc_local_state): New type, output_constructor
12502         local state to support communication with helpers.
12503         (oc_outer_state): New type, output_constructor outer state of
12504         relevance in recursive calls.
12505         (output_constructor_array_range): New output_constructor helper,
12506         extracted code for an array range element.
12507         (output_constructor_regular_field): New output_constructor helper,
12508         extracted code for an element that is not a bitfield.
12509         (output_constructor_bitfield): New output_constructor helper,
12510         extracted code for a bitfield element.  Accept an OUTER state
12511         argument for recursive processing.  Recurse on record or array
12512         CONSTRUCTOR values, possibly past noop conversions.
12513         (initializer_constant_valid_for_bitfield_p): New predicate.  Whether
12514         VALUE is a valid constant-valued expression for use in a static
12515         bit-field initializer.
12516         (output_constructor): Rework to use helpers.  Accept and honor an
12517         OUTER state argument for recursive calls.  Return total size.  Be
12518         prepared for nested constructors initializing bitfields.
12519         (output_constant): Feed OUTER in calls to output_constructor.
12520
12521 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
12522
12523         * calls.c (emit_library_call_value_1): Don't force_operand for move
12524         and push insns.
12525
12526 2009-06-01  Nick Clifton  <nickc@redhat.com>
12527
12528         * doc/invoke.texi (IA-64 Options): Fix typo.
12529
12530 2009-06-01  Ira Rosen  <irar@il.ibm.com>
12531
12532         PR tree-optimization/39129
12533         * tree-vect-loop-manip.c (conservative_cost_threshold): Change the
12534         printed message.
12535         (vect_do_peeling_for_loop_bound): Use
12536         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
12537         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
12538         (vect_loop_versioning): Likewise.
12539         (vect_create_cond_for_alias_checks): Fix indentation.
12540         * tree-vectorizer.h (struct _loop_vec_info): Fix indentation of the
12541         macros.
12542         (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT): Define.
12543         (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Likewise.
12544         * tree-vect-loop.c (vect_analyze_loop_form): Change "too many BBs" to
12545         "control flow in loop".
12546         (vect_estimate_min_profitable_iters): Use
12547         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
12548         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
12549         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
12550         (vect_create_data_ref_ptr): Don't mention array dimension in printing.
12551         * tree-vect-stmts.c (vectorizable_store): Replace the check that the
12552         statement belongs to a group of strided accesses with the exact code
12553         check.
12554         (vectorizable_load): Likewise.
12555         * tree-vect-slp.c (vect_analyze_slp_instance): Spell out "basic block".
12556         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
12557
12558 2009-06-01  Gerald Pfeifer  <gerald@pfeifer.com>
12559
12560         * config/freebsd-stdint.h: New file.
12561         * config.gcc (*-*-freebsd): Set use_gcc_stdint=wrap.
12562         Add freebsd-stdint.h to tm_file.
12563
12564 2009-06-01  Richard Earnshaw  <rearnsha@arm.com>
12565
12566         * arm/thumb2.md (thumb2_zero_extendhidi2): New insn and split.
12567         (thumb2_extendhidi2): Likewise.
12568
12569 2009-05-31  Ian Lance Taylor  <iant@google.com>
12570
12571         * regstat.c (regstat_n_sets_and_refs): Remove duplicate definition.
12572
12573 2009-05-31  Ian Lance Taylor  <iant@google.com>
12574
12575         * Makefile.in (except.o): Depend upon gt-except.h, not gt-$(EXCEPT_H).
12576         (ipa-cp.o): Depend upon $(FIBHEAP_H) and $(PARAMS_H).
12577         (ipa-reference.o): Depend upon gt-ipa-reference.h.
12578
12579 2009-05-31  Jason Merrill  <jason@redhat.com>
12580
12581         * tree-pretty-print.c (print_call_name): Take the callee, not the
12582         call itself.  Make non-static.  Use dump_function_name for functions.
12583         (dump_generic_node): Adjust.
12584         * diagnostic.h: Declare print_call_name.
12585         * gimple-pretty-print.c (dump_gimple_call): Use it.
12586
12587 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
12588
12589         * config/sh/sh.md (ashldi3_std): New define_expand.
12590         (ashldi3): Use it.
12591
12592 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
12593
12594         PR target/40313
12595         * config/sh/sh.c: Include debug.h.
12596         (sh_expand_epilogue): Emit a blockage insn before the frame
12597         pointer adjustment also when dwarf2out_do_frame returns true.
12598
12599 2009-05-31  Richard Earnshaw  <rearnsha@arm.com>
12600
12601         * arm/thumb2.md (thumb2_extendsidi2): Add a split sub-pattern.
12602         (thumb2_extendqidi2): New pattern.
12603
12604 2009-05-31  Ira Rosen  <irar@il.ibm.com>
12605
12606         * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1): Don't
12607         mark phis for renaming.
12608         * tree-vectorizer.c (vect_memsyms_to_rename): Remove.
12609         (vectorize_loops): Don't allocate and free vect_memsyms_to_rename.
12610         Call mark_sym_for_renaming.
12611         * tree-vectorizer.h (vect_memsyms_to_rename): Remove.
12612         * tree-vect-loop.c (vect_transform_loop): Remove
12613         vect_memsyms_to_rename initialization and a call to
12614         mark_set_for_renaming.
12615
12616 2009-05-31  Jakub Jelinek  <jakub@redhat.com>
12617
12618         PR middle-end/40304
12619         * config/i386/i386.c (pro_epilogue_adjust_stack): Mark insns
12620         frame related even if !set_cfa && style < 0.
12621
12622 2009-05-30  Kai Tietz  <kai.tietz@onevision.com>
12623
12624         * config/i386/mingw-tls.c: New file.
12625         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Add mingw-tls.c file.
12626         * gthr-win32.h (MINGW32_SUPPORTS_MT_EH): Define it for targets
12627         defining _WIN32 but not __CYGWIN__.
12628
12629 2009-05-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12630
12631         * configure.ac: Add MPC support.
12632
12633         * config.in, configure: Regenerate.
12634
12635 2009-05-29  Richard Henderson  <rth@redhat.com>
12636
12637         * cfgcleanup.c (try_crossjump_to_edge): Only skip past
12638         NOTE_INSN_BASIC_BLOCK.
12639         * cfglayout.c (duplicate_insn_chain): Copy epilogue insn marks.
12640         Duplicate NOTE_INSN_EPILOGUE_BEG notes.
12641         * cfgrtl.c (can_delete_note_p): Allow NOTE_INSN_EPILOGUE_BEG
12642         to be deleted.
12643         * dwarf2out.c (struct cfa_loc): Change indirect field to bitfield,
12644         add in_use field.
12645         (add_cfi): Disable check redefining cfa away from drap.
12646         (lookup_cfa_1): Add remember argument; handle remember/restore.
12647         (lookup_cfa): Pass remember argument.
12648         (cfa_remember): New.
12649         (compute_barrier_args_size_1): Remove sibcall check.
12650         (dwarf2out_frame_debug_def_cfa): New.
12651         (dwarf2out_frame_debug_adjust_cfa): New.
12652         (dwarf2out_frame_debug_cfa_offset): New.
12653         (dwarf2out_frame_debug_cfa_register): New.
12654         (dwarf2out_frame_debug_cfa_restore): New.
12655         (dwarf2out_frame_debug): Handle REG_CFA_* notes.
12656         (dwarf2out_begin_epilogue): New.
12657         (dwarf2out_frame_debug_restore_state): New.
12658         (dw_cfi_oprnd1_desc): Handle DW_CFA_remember_state,
12659         DW_CFA_restore_state.
12660         (output_cfi_directive): Likewise.
12661         (convert_cfa_to_fb_loc_list): Likewise.
12662         (dw_cfi_oprnd1_desc): Handle DW_CFA_restore.
12663         * dwarf2out.h: Update.
12664         * emit-rtl.c (try_split): Don't split RTX_FRAME_RELATED_P.
12665         (copy_insn_1): Early out for null.
12666         * final.c (final_scan_insn): Call dwarf2out_begin_epilogue
12667         and dwarf2out_frame_debug_restore_state.
12668         * function.c (prologue, epilogue, sibcall_epilogue): Remove.
12669         (prologue_insn_hash, epilogue_insn_hash): New.
12670         (free_after_compilation): Adjust freeing accordingly.
12671         (record_insns): Create hash table if needed; push insns into
12672         hash instead of array.
12673         (maybe_copy_epilogue_insn): New.
12674         (contains): Search hash table instead of array.
12675         (sibcall_epilogue_contains): Remove.
12676         (thread_prologue_and_epilogue_insns): Split eh_return insns
12677         and mark them as epilogues.
12678         (reposition_prologue_and_epilogue_notes): Rewrite epilogue
12679         scanning in terms of basic blocks.
12680         * insn-notes.def (CFA_RESTORE_STATE): New.
12681         * jump.c (returnjump_p_1): Accept EH_RETURN.
12682         (eh_returnjump_p_1, eh_returnjump_p): New.
12683         * reg-notes.def (CFA_DEF_CFA, CFA_ADJUST_CFA, CFA_OFFSET,
12684         CFA_REGISTER, CFA_RESTORE): New.
12685         * rtl.def (EH_RETURN): New.
12686         * rtl.h (eh_returnjump_p, maybe_copy_epilogue_insn): Declare.
12687
12688         * config/bfin/bfin.md (UNSPEC_VOLATILE_EH_RETURN): Remove.
12689         (eh_return_internal): Use eh_return rtx; split w/ epilogue.
12690
12691         * config/i386/i386.c (gen_push): Update cfa state.
12692         (pro_epilogue_adjust_stack): Add set_cfa argument.  When true,
12693         add a CFA_ADJUST_CFA note.
12694         (ix86_dwarf_handle_frame_unspec): Remove.
12695         (ix86_expand_prologue): Update cfa state.
12696         (ix86_emit_restore_reg_using_pop): New.
12697         (ix86_emit_restore_regs_using_pop): New.
12698         (ix86_emit_leave): New.
12699         (ix86_emit_restore_regs_using_mov): Add CFA_RESTORE notes.
12700         (ix86_expand_epilogue): Add notes for unwinding the epilogue.
12701         * config/i386/i386.h (struct machine_cfa_state): New.
12702         (ix86_cfa_state): New.
12703         * config/i386/i386.md (UNSPEC_EH_RETURN): Remove.
12704         (eh_return_internal): Merge from eh_return_<mode>,
12705         use eh_return rtx, split w/ epilogue.
12706
12707 2009-05-29  Ian Lance Taylor  <iant@google.com>
12708
12709         * builtins.c (validate_gimple_arglist): Don't use va_arg with
12710         enum type.
12711         * calls.c (emit_library_call_value_1): Likewise.
12712
12713         * c-typeck.c (c_build_va_arg): New function.
12714         * c-tree.h (c_build_va_arg): Declare.
12715         * c-parser.c (c_parser_postfix_expression): Call c_build_va_arg
12716         instead of build_va_arg.
12717
12718 2009-05-29  Eric Botcazou  <ebotcazou@adacore.com>
12719
12720         * tree-ssa-loop-ivopts.c (strip_offset_1) <MULT_EXPR>: New case.
12721         (force_expr_to_var_cost) <NEGATE_EXPR>: Likewise.
12722         (ptr_difference_cost): Use affine combinations to compute it.
12723         (difference_cost): Likewise.
12724         (get_computation_cost_at): Compute more accurate cost for addresses
12725         if the ratio is a multiplier allowed in addresses.
12726         For non-addresses, consider that an additional offset or symbol is
12727         added only once.
12728
12729 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
12730
12731         * config/i386/i386.c (ix86_decompose_address): Avoid useless
12732         0 displacement.  Add 0 displacement if base is %[er]bp or %r13.
12733
12734         * config/i386/i386.md (prefix_data16, prefix_rep): Set to 0 for
12735         TYPE_SSE{MULADD,4ARG,IADD1,CVT1} by default.
12736         (prefix_rex): For UNIT_MMX don't imply the prefix by default
12737         if MODE_DI.
12738         (prefix_extra): Default to 2 for TYPE_SSE{MULADD,4ARG} and
12739         to 1 for TYPE_SSE{IADD1,CVT1}.
12740         (prefix_vex_imm8): Removed.
12741         (length_vex): Only pass 1 as second argument to
12742         ix86_attr_length_vex_default if prefix_extra is 0.
12743         (modrm): For TYPE_INCDEC only set to 0 if not TARGET_64BIT.
12744         (length): For prefix vex computation use length_immediate
12745         attribute instead of prefix_vex_imm8.
12746         (cmpqi_ext_3_insn, cmpqi_ext_3_insn_rex64,
12747         addqi_ext_1, addqi_ext_1_rex64, *testqi_ext_0, andqi_ext_0,
12748         *andqi_ext_0_cc, *iorqi_ext_0, *xorqi_ext_0, *xorqi_cc_ext_1,
12749         *xorqi_cc_ext_1_rex64): Override modrm attribute to 1.
12750         (extendsidi2_rex64, extendhidi2, extendqidi2, extendhisi2,
12751         *extendhisi2_zext, extendqihi2, extendqisi2, *extendqisi2_zext): Emit
12752         a space in between the operands.
12753         (*anddi_1_rex64, *andsi_1): Likewise.  Override prefix_rex to 1
12754         if one operand is 0xff and the other one si, di, bp or sp.
12755         (*andhi_1): Override prefix_rex to 1 if one operand is 0xff and the
12756         other one si, di, bp or sp.
12757         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Add mode attribute.
12758         (*ffssi_1, *ffsdi_1, ctzsi2, ctzdi2): Add
12759         type and mode attributes.
12760         (*bsr, *bsr_rex64, *bsrhi): Add type attribute.
12761         (*cmpfp_i_mixed, *cmpfp_iu_mixed): For TYPE_SSECOMI, clear
12762         prefix_rep attribute and set prefix_data16 attribute iff MODE_DF.
12763         (*cmpfp_i_sse, *cmpfp_iu_sse): Clear prefix_rep attribute and set
12764         prefix_data16 attribute iff MODE_DF.
12765         (*movsi_1): For TYPE_SSEMOV MODE_SI set prefix_data16 attribute.
12766         (fix_trunc<mode>di_sse): Set prefix_rex attribute.
12767         (*adddi_4_rex64, *addsi_4): Use const128_operand instead of
12768         constm128_operand in length_immediate computation.
12769         (*addhi_4): Likewise.  Fix mode attribute to MODE_HI.
12770         (anddi_1_rex64): Use movzbl/movzwl instead of movzbq/movzwq.
12771         (*avx_ashlti3, sse2_ashlti3, *avx_lshrti3, sse2_lshrti3): Set
12772         length_immediate attribute to 1.
12773         (x86_fnstsw_1, x86_fnstcw_1, x86_fldcw_1): Fix length attribute.
12774         (*movdi_1_rex64): Override prefix_rex or prefix_data16 attributes
12775         for certain alternatives.
12776         (*movdf_nointeger, *movdf_integer_rex64, *movdf_integer): Override
12777         prefix_data16 attribute if MODE_V1DF.
12778         (*avx_setcc<mode>, *sse_setcc<mode>, *sse5_setcc<mode>): Set
12779         length_immediate to 1.
12780         (set_got_rex64, set_rip_rex64): Remove length attribute, set
12781         length_address to 4, set mode attribute to MODE_DI.
12782         (set_got_offset_rex64): Likewise.  Set length_immediate to 0.
12783         (fxam<mode>2_i387): Set length attribute to 4.
12784         (*prefetch_sse, *prefetch_sse_rex, *prefetch_3dnow,
12785         *prefetch_3dnow_rex): Override length_address attribute.
12786         (sse4_2_crc32<mode>): Override prefix_data16 and prefix_rex
12787         attributes.
12788         * config/i386/predicates.md (ext_QIreg_nomode_operand): New predicate.
12789         (constm128_operand): Removed.
12790         * config/i386/i386.c (memory_address_length): For
12791         disp && !index && !base in 64-bit mode account for SIB byte if
12792         print_operand_address can't optimize disp32 into disp32(%rip)
12793         and UNSPEC doesn't imply (%rip) addressing.  Add 1 to length
12794         for fs: or gs: segment.
12795         (ix86_attr_length_immediate_default): When checking if shortform
12796         is possible, truncate immediate to the length of the non-shortened
12797         immediate.
12798         (ix86_attr_length_address_default): Ignore MEM_P operands
12799         with X constraint.
12800         (ix86_attr_length_vex_default): Only check for DImode on
12801         GENERAL_REG_P operands.
12802         * config/i386/sse.md (<sse>_comi, <sse>_ucomi): Clear
12803         prefix_rep attribute, set prefix_data16 attribute iff MODE_DF.
12804         (sse_cvttps2pi): Clear prefix_rep attribute.
12805         (sse2_cvttps2dq, *sse2_cvtpd2dq, sse2_cvtps2pd): Clear prefix_data16
12806         attribute.
12807         (*sse2_cvttpd2dq): Don't clear prefix_rep attribute.
12808         (*avx_ashr<mode>3, ashr<mode>3, *avx_lshr<mode>3, lshr<mode>3,
12809         *avx_ashl<mode>3, ashl<mode>3): Set length_immediate attribute to 1
12810         iff operand 2 is const_int_operand.
12811         (*vec_dupv4si, avx_shufpd256_1, *avx_shufpd_<mode>,
12812         sse2_shufpd_<mode>): Set length_immediate attribute to 1.
12813         (sse2_pshufd_1): Likewise.  Set prefix attribute to maybe_vex
12814         instead of vex.
12815         (sse2_pshuflw_1, sse2_pshufhw_1): Set length_immediate to 1 and clear
12816         prefix_data16.
12817         (sse2_unpckhpd, sse2_unpcklpd, sse2_storehpd, *vec_concatv2df): Set
12818         prefix_data16 attribute for movlpd and movhpd instructions.
12819         (sse2_loadhpd, sse2_loadlpd, sse2_movsd): Likewise.  Override
12820         length_immediate for shufpd instruction.
12821         (sse2_movntsi, sse3_lddqu): Clear prefix_data16 attribute.
12822         (avx_cmpp<avxmodesuffixf2c><mode>3,
12823         avx_cmps<ssemodesuffixf2c><mode>3, *avx_maskcmp<mode>3,
12824         <sse>_maskcmp<mode>3, <sse>_vmmaskcmp<mode>3,
12825         avx_shufps256_1, *avx_shufps_<mode>, sse_shufps_<mode>,
12826         *vec_dupv4sf_avx, *vec_dupv4sf): Set length_immediate attribute to 1.
12827         (*avx_cvtsi2ssq, *avx_cvtsi2sdq): Set length_vex attribute to 4.
12828         (sse_cvtsi2ssq, sse2_cvtsi2sdq): Set prefix_rex attribute to 1.
12829         (sse2_cvtpi2pd, sse_loadlps, sse2_storelpd): Override
12830         prefix_data16 attribute for the first alternative to 1.
12831         (*avx_loadlps): Override length_immediate for the first alternative.
12832         (*vec_concatv2sf_avx): Override length_immediate and prefix_extra
12833         attributes for second alternative.
12834         (*vec_concatv2sf_sse4_1): Override length_immediate and
12835         prefix_data16 attributes for second alternative.
12836         (*vec_setv4sf_avx, *avx_insertps, vec_extract_lo_<mode>,
12837         vec_extract_hi_<mode>, vec_extract_lo_v16hi,
12838         vec_extract_hi_v16hi, vec_extract_lo_v32qi,
12839         vec_extract_hi_v32qi): Set prefix_extra and length_immediate to 1.
12840         (*vec_setv4sf_sse4_1, sse4_1_insertps, *sse4_1_extractps): Set
12841         prefix_data16 and length_immediate to 1.
12842         (*avx_mulv2siv2di3, *avx_mulv4si3, sse4_2_gtv2di3): Set prefix_extra
12843         to 1.
12844         (*avx_<code><mode>3, *avx_eq<mode>3, *avx_gt<mode>3): Set
12845         prefix_extra attribute for variants that don't have 0f prefix alone.
12846         (*avx_pinsr<ssevecsize>): Likewise.  Set length_immediate to 1.
12847         (*sse4_1_pinsrb, *sse2_pinsrw, *sse4_1_pinsrd, *sse4_1_pextrb,
12848         *sse4_1_pextrb_memory, *sse2_pextrw, *sse4_1_pextrw_memory,
12849         *sse4_1_pextrd): Set length_immediate to 1.
12850         (*sse4_1_pinsrd): Likewise.  Set prefix_extra to 1.
12851         (*sse4_1_pinsrq, *sse4_1_pextrq): Set prefix_rex and length_immediate
12852         to 1.
12853         (*vec_extractv2di_1_rex64_avx, *vec_extractv2di_1_rex64,
12854         *vec_extractv2di_1_avx, *vec_extractv2di_1_sse2): Override
12855         length_immediate to 1 for second alternative.
12856         (*vec_concatv2si_avx, *vec_concatv2di_rex64_avx): Override
12857         prefix_extra and length_immediate attributes for the first
12858         alternative.
12859         (vec_concatv2si_sse4_1): Override length_immediate to 1 for the
12860         first alternative.
12861         (*vec_concatv2di_rex64_sse4_1): Likewise.  Override prefix_rex
12862         to 1 for the first and third alternative.
12863         (*vec_concatv2di_rex64_sse): Override prefix_rex to 1 for the second
12864         alternative.
12865         (*sse2_maskmovdqu, *sse2_maskmovdqu_rex64): Override length_vex
12866         attribute.
12867         (*sse_sfence, sse2_mfence, sse2_lfence): Override length_address
12868         attribute to 0.
12869         (*avx_phaddwv8hi3, *avx_phadddv4si3, *avx_phaddswv8hi3,
12870         *avx_phsubwv8hi3, *avx_phsubdv4si3, *avx_phsubswv8hi,
12871         *avx_pmaddubsw128, *avx_pmulhrswv8hi3, *avx_pshufbv16qi3,
12872         *avx_psign<mode>3): Set prefix_extra attribute to 1.
12873         (ssse3_phaddwv4hi3, ssse3_phadddv2si3, ssse3_phaddswv4hi3,
12874         ssse3_phsubwv4hi3, ssse3_phsubdv2si3, ssse3_phsubswv4hi3,
12875         ssse3_pmaddubsw, *ssse3_pmulhrswv4hi, ssse3_pshufbv8qi3,
12876         ssse3_psign<mode>3): Override prefix_rex attribute.
12877         (*avx_palignrti): Override prefix_extra and length_immediate to 1.
12878         (ssse3_palignrti): Override length_immediate to 1.
12879         (ssse3_palignrdi): Override length_immediate to 1, override
12880         prefix_rex attribute.
12881         (abs<mode>2): Override prefix_rep to 0, override prefix_rex attribute.
12882         (sse4a_extrqi): Override length_immediate to 2.
12883         (sse4a_insertqi): Likewise.  Override prefix_data16 to 0.
12884         (sse4a_insertq): Override prefix_data16 to 0.
12885         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>,
12886         avx_blendvp<avxmodesuffixf2c><avxmodesuffix>,
12887         avx_dpp<avxmodesuffixf2c><avxmodesuffix>, *avx_mpsadbw,
12888         *avx_pblendvb, *avx_pblendw, avx_roundp<avxmodesuffixf2c>256,
12889         avx_rounds<avxmodesuffixf2c>256): Override prefix_extra
12890         and length_immediate to 1.
12891         (sse4_1_blendp<ssemodesuffixf2c>, sse4_1_dpp<ssemodesuffixf2c>,
12892         sse4_2_pcmpestr, sse4_2_pcmpestri, sse4_2_pcmpestrm,
12893         sse4_2_pcmpestr_cconly, sse4_2_pcmpistr, sse4_2_pcmpistri,
12894         sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): Override prefix_data16
12895         and length_immediate to 1.
12896         (sse4_1_blendvp<ssemodesuffixf2c>): Override prefix_data16 to 1.
12897         (sse4_1_mpsadbw, sse4_1_pblendw): Override length_immediate to 1.
12898         (*avx_packusdw, avx_vtestp<avxmodesuffixf2c><avxmodesuffix>,
12899         avx_ptest256): Override prefix_extra to 1.
12900         (sse4_1_roundp<ssemodesuffixf2c>, sse4_1_rounds<ssemodesuffixf2c>):
12901         Override prefix_data16 and length_immediate to 1.
12902         (sse5_pperm_zero_v16qi_v8hi, sse5_pperm_sign_v16qi_v8hi,
12903         sse5_pperm_zero_v8hi_v4si, sse5_pperm_sign_v8hi_v4si,
12904         sse5_pperm_zero_v4si_v2di, sse5_pperm_sign_v4si_v2di,
12905         sse5_vrotl<mode>3, sse5_ashl<mode>3, sse5_lshl<mode>3): Override
12906         prefix_data16 to 0 and prefix_extra to 2.
12907         (sse5_rotl<mode>3, sse5_rotr<mode>3): Override length_immediate to 1.
12908         (sse5_frcz<mode>2, sse5_vmfrcz<mode>2): Don't override prefix_extra
12909         attribute.
12910         (*sse5_vmmaskcmp<mode>3, sse5_com_tf<mode>3,
12911         sse5_maskcmp<mode>3, sse5_maskcmp<mode>3, sse5_maskcmp_uns<mode>3):
12912         Override prefix_data16 and prefix_rep to 0, length_immediate to 1
12913         and prefix_extra to 2.
12914         (sse5_maskcmp_uns2<mode>3, sse5_pcom_tf<mode>3): Override
12915         prefix_data16 to 0, length_immediate to 1 and prefix_extra to 2.
12916         (*avx_aesenc, *avx_aesenclast, *avx_aesdec, *avx_aesdeclast,
12917         avx_vpermilvar<mode>3,
12918         avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>,
12919         avx_vbroadcastss256, avx_vbroadcastf128_p<avxmodesuffixf2c>256,
12920         avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>,
12921         avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>):
12922         Override prefix_extra to 1.
12923         (aeskeygenassist, pclmulqdq): Override length_immediate to 1.
12924         (*vpclmulqdq, avx_vpermil<mode>, avx_vperm2f128<mode>3,
12925         vec_set_lo_<mode>, vec_set_hi_<mode>, vec_set_lo_v16hi,
12926         vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Override
12927         prefix_extra and length_immediate to 1.
12928         (*avx_vzeroall, avx_vzeroupper, avx_vzeroupper_rex64): Override
12929         modrm to 0.
12930         (*vec_concat<mode>_avx): Override prefix_extra and length_immediate
12931         to 1 for the first alternative.
12932         * config/i386/mmx.md (*mov<mode>_internal_rex64): Override
12933         prefix_rep, prefix_data16 and/or prefix_rex attributes in certain
12934         cases.
12935         (*mov<mode>_internal_avx, *movv2sf_internal_rex64,
12936         *movv2sf_internal_avx, *movv2sf_internal): Override
12937         prefix_rep attribute for certain alternatives.
12938         (*mov<mode>_internal): Override prefix_rep or prefix_data16
12939         attributes for certain alternatives.
12940         (*movv2sf_internal_rex64_avx): Override prefix_rep and length_vex
12941         attributes for certain alternatives.
12942         (*mmx_addv2sf3, *mmx_subv2sf3, *mmx_mulv2sf3,
12943         *mmx_<code>v2sf3_finite, *mmx_<code>v2sf3, mmx_rcpv2sf2,
12944         mmx_rcpit1v2sf3, mmx_rcpit2v2sf3, mmx_rsqrtv2sf2, mmx_rsqit1v2sf3,
12945         mmx_haddv2sf3, mmx_hsubv2sf3, mmx_addsubv2sf3,
12946         *mmx_eqv2sf3, mmx_gtv2sf3, mmx_gev2sf3, mmx_pf2id, mmx_pf2iw,
12947         mmx_pi2fw, mmx_floatv2si2, mmx_pswapdv2sf2, *mmx_pmulhrwv4hi3,
12948         mmx_pswapdv2si2): Set prefix_extra attribute to 1.
12949         (mmx_ashr<mode>3, mmx_lshr<mode>3, mmx_ashl<mode>3): Set
12950         length_immediate to 1 if operand 2 is const_int_operand.
12951         (*mmx_pinsrw, mmx_pextrw, mmx_pshufw_1, *vec_dupv4hi,
12952         *vec_extractv2si_1): Set length_immediate attribute to 1.
12953         (*mmx_uavgv8qi3): Override prefix_extra attribute to 1 if
12954         using old 3DNOW insn rather than SSE/3DNOW_A.
12955         (mmx_emms, mmx_femms): Clear modrm attribute.
12956
12957 2009-05-29  Martin Jambor  <mjambor@suse.cz>
12958
12959         * tree-sra.c:  New implementation of SRA.
12960
12961         * params.def (PARAM_SRA_MAX_STRUCTURE_SIZE): Removed.
12962         (PARAM_SRA_MAX_STRUCTURE_COUNT): Removed.
12963         (PARAM_SRA_FIELD_STRUCTURE_RATIO): Removed.
12964         * params.h (SRA_MAX_STRUCTURE_SIZE): Removed.
12965         (SRA_MAX_STRUCTURE_COUNT): Removed.
12966         (SRA_FIELD_STRUCTURE_RATIO): Removed.
12967         * doc/invoke.texi (sra-max-structure-size): Removed.
12968         (sra-field-structure-ratio): Removed.
12969
12970 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
12971
12972         PR middle-end/40291
12973         * builtins.c (expand_builtin_memcmp): Convert len to sizetype
12974         before expansion.
12975
12976 2009-05-29  Andrey Belevantsev  <abel@ispras.ru>
12977
12978         PR rtl-optimization/40101
12979         * sel-sched-ir.c (get_seqno_by_preds): Allow returning negative
12980         seqno.  Adjust comment.
12981         * sel-sched.c (find_seqno_for_bookkeeping): Assert that when
12982         inserting bookkeeping before a jump, the jump is not scheduled.
12983         When no positive seqno found, provide a value.  Add comment.
12984
12985 2009-05-29  Richard Guenther  <rguenther@suse.de>
12986
12987         * tree-ssa-alias.c (nonaliasing_component_refs_p): Remove
12988         short-cutting on the first component.
12989
12990 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
12991
12992         PR middle-end/39958
12993         * omp-low.c (scan_omp_1_op): Call remap_type on TREE_TYPE
12994         for trees other than decls/types.
12995
12996 2009-05-29  Richard Guenther  <rguenther@suse.de>
12997
12998         * tree-ssa-operands.c (get_expr_operands): Do not handle
12999         INDIRECT_REFs in the handled-component case.  Remove
13000         unused get_ref_base_and_extent case.
13001         * tree-dfa.c (get_ref_base_and_extent): Avoid calling
13002         tree_low_cst and host_integerp where possible.
13003         * tree-ssa-structalias.c (equiv_class_label_eq): Check hash
13004         codes for equivalence.
13005         * dce.c (find_call_stack_args): Avoid redundant bitmap queries.
13006
13007 2009-05-29  David Billinghurst <billingd@gcc.gnu.org>
13008
13009         * config.gcc: Add i386/t-fprules-softfp and soft-fp/t-softfp
13010         to tmake_file for i[34567]86-*-cygwin*.
13011
13012 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
13013
13014         PR target/40017
13015         * config/rs6000/rs6000-c.c (_Bool_keyword): New variable.
13016         (altivec_categorize_keyword, init_vector_keywords,
13017         rs6000_cpu_cpp_builtins): Define _Bool as conditional macro
13018         similar to bool.
13019
13020 2009-05-29  Kai Tietz  <kai.tietz@onevision.com>
13021
13022         * tree.c (handle_dll_attribute): Check if node is
13023         of kind FUNCTION_DECL for DECL_DECLARED_INLINE_P check.
13024
13025 2009-05-29  Richard Earnshaw  <rearnsha@arm.com>
13026
13027         * config/arm/thumb2.md (thumb2_zero_extendsidi2): Add a split
13028         component.
13029         (thumb2_zero_extendqidi2): Likewise.
13030
13031 2009-05-28  Kaz Kojima  <kkojima@gcc.gnu.org>
13032
13033         * config/sh/sh.c (sh_expand_t_scc): Use gen_xorsi3_movrt
13034         instead of gen_movrt.
13035         * config/sh/sh.md (movrt): Remove.
13036
13037 2009-05-28  Steve Ellcey  <sje@cup.hp.com>
13038
13039         * doc/invoke.texi (IA-64 Options):
13040         Add -msdata, -mfused-madd, -mno-inline-float-divide,
13041         -mno-inline-int-divide, -mno-inline-sqrt, -msched-spec-ldc,
13042         -msched-spec-control-ldc, -msched-prefer-non-data-spec-insns,
13043         -msched-prefer-non-control-spec-insns,
13044         -msched-stop-bits-after-every-cycle,
13045         -msched-count-spec-in-critical-path,
13046         -msel-sched-dont-check-control-spec, -msched-fp-mem-deps-zero-cost
13047         -msched-max-memory-insns-hard-limit, -msched-max-memory-insns.
13048         Remove -mt, -pthread, -msched-ldc, -mno-sched-control-ldc,
13049         and -msched-spec-verbose.
13050
13051 2009-05-28  Joseph Myers  <joseph@codesourcery.com>
13052
13053         * config/arm/lib1funcs.asm (__clear_cache): Define if L_clear_cache.
13054         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define to give an
13055         error if used.
13056         * config/arm/t-linux-eabi (LIB1ASMFUNCS): Add _clear_cache.
13057
13058 2009-05-28  Richard Guenther  <rguenther@suse.de>
13059
13060         * tree-ssa-alias.c (ao_ref_init): New function.
13061         (ao_ref_base): Likewise.
13062         (ao_ref_base_alias_set): Likewise.
13063         (ao_ref_alias_set): Likewise.
13064         (refs_may_alias_p_1): Change signature.
13065         (refs_may_alias_p): Adjust.
13066         (refs_anti_dependent_p): Likewise.
13067         (refs_output_dependent_p): Likewise.
13068         (call_may_clobber_ref_p_1): Change signature.
13069         (call_may_clobber_ref_p): Adjust.
13070         (stmt_may_clobber_ref_p_1): New function split out from ...
13071         (stmt_may_clobber_ref_p): ... here.
13072         (maybe_skip_until): Adjust signature.
13073         (get_continuation_for_phi): Likewise.
13074         (walk_non_aliased_vuses): Likewise.
13075         * tree-ssa-alias.h (struct ao_ref_s): New structure type.
13076         (ao_ref_init): Declare.
13077         (ao_ref_base): Likewise.
13078         (ao_ref_alias_set): Likewise.
13079         (stmt_may_clobber_ref_p_1): Likewise.
13080         (walk_non_aliased_vuses): Adjust.
13081         * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): New function.
13082         (get_ref_from_reference_ops): remove.
13083         (vn_reference_lookup_2): Adjust signature.
13084         (vn_reference_lookup_3): Do not re-build trees.  Handle unions.
13085         (vn_reference_lookup_pieces): Adjust signature, do not re-build trees.
13086         (vn_reference_lookup): Adjust.
13087         (vn_reference_insert): Likewise.
13088         (vn_reference_insert_pieces): Adjust signature.
13089         (visit_reference_op_call): Adjust.
13090         * tree-ssa-pre.c (get_expr_type): Simplify.
13091         (phi_translate_1): Adjust.
13092         (compute_avail): Likewise.
13093         (translate_vuse_through_block): Do not re-build trees.
13094         (value_dies_in_block_x): Likewise.
13095         * tree-ssa-sccvn.h (struct vn_reference_s): Add type and alias-set
13096         fields.
13097         (vn_reference_lookup_pieces): Adjust declaration.
13098         (vn_reference_insert_pieces): Likewise.
13099
13100 2009-05-28  Benjamin Kosnik  <bkoz@redhat.com>
13101
13102         * tree-ssa-copy.c (replace_exp_1): Move op for warning-free use
13103         with checking disabled.
13104
13105 2009-05-28  Dave Korn  <dave.korn.cygwin@gmail.com>
13106
13107         PR target/37216
13108
13109         * configure.ac (HAVE_GAS_ALIGNED_COMM):  Add autoconf test and
13110         macro definition for support of three-operand format aligned
13111         .comm directive in assembler on cygwin/pe/mingw target OS.
13112         * configure:  Regenerate.
13113         * config.h:  Regenerate.
13114
13115         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common):  Use
13116         aligned form of .comm directive if -mpe-aligned-commons is in effect.
13117         * config/i386/cygming.opt (-mpe-aligned-commons):  Add new option.
13118
13119         * doc/invoke.texi (-mpe-aligned-commons):  Document new target option.
13120         * doc/tm.texi (ASM_OUTPUT_COMMON):  Document zero size commons.
13121
13122 2009-05-28  Ira Rosen  <irar@il.ibm.com>
13123
13124         PR tree-optimization/40254
13125         * tree-data-ref.c (dr_analyze_innermost): Take POFFSET into account
13126         in analysis of basic blocks.
13127
13128 2009-05-28  Adam Nemet  <anemet@caviumnetworks.com>
13129
13130         PR middle-end/33699
13131         * target.h (struct gcc_target): Fix indentation.  Add const_anchor.
13132         * target-def.h (TARGET_CONST_ANCHOR): New macro.
13133         (TARGET_INITIALIZER): Use it.
13134         * cse.c (CHEAPER): Move it up to the other macros.
13135         (insert): Rename this ...
13136         (insert_with_costs): ... to this.  Add cost parameters.  Update
13137         function comment.
13138         (insert): New function.  Call insert_with_costs.
13139         (compute_const_anchors, insert_const_anchor, insert_const_anchors,
13140         find_reg_offset_for_const, try_const_anchors): New functions.
13141         (cse_insn): Call try_const_anchors.  Adjust cost of src_related
13142         when using a const-anchor.  Call insert_const_anchors.
13143         * config/mips/mips.c (mips_set_mips16_mode): Set targetm.const_anchor.
13144         * doc/tm.texi (Misc): Document TARGET_CONST_ANCHOR.
13145
13146 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
13147
13148         * tree-inline.c (remap_decls): Enable nonlocalized variables
13149         when not optimizing.
13150
13151 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
13152
13153         * tree-ssa-live.c (remove_unused_locals): Skip when not optimizing.
13154         Simplify other tests involving optimize.
13155
13156 2009-05-27  Tom Tromey  <tromey@redhat.com>
13157
13158         * unwind-dw2.c (_Unwind_DebugHook): New function.
13159         (uw_install_context): Call _Unwind_DebugHook.
13160
13161 2009-05-27  Tom Tromey  <tromey@redhat.com>
13162
13163         * system.h (CONST_CAST2): Use C++ const_cast when compiled as C++
13164
13165 2009-05-27  Ian Lance Taylor  <iant@google.com>
13166
13167         * Makefile.in (LINKER, LINKER_FLAGS): Define.
13168         (LINKER_FOR_BUILD, BUILD_LINKERFLAGS): Define.
13169         (ALL_LINKERFLAGS): Define.
13170         (xgcc$(exeext)): Change $(COMPILER) to $(LINKER).
13171         (cpp$(exeext), cc1-dummy$(exeext), cc1$(exeext)): Likewise.
13172         (collect2$(exeext), mips-tfile, mips-tdump): Likewise.
13173         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
13174         (build/gen%$(build_exeext)): Change $(COMPILER_FOR_BUILD) to
13175         $(LINKER_FOR_BUILD).
13176         (build/gcov-iov$(build_exeext)): Likewise.
13177
13178 2009-05-27  Julian Brown  <julian@codesourcery.com>
13179
13180         * gcse.c (target.h): Include.
13181         (can_assign_to_reg_without_clobbers_p): Check that the target allows
13182         copy of argument to a pseudo register.
13183
13184 2009-05-27  Diego Novillo  <dnovillo@google.com>
13185
13186         * tree-ssa-live.c (dump_scope_block): Document arguments.
13187         (dump_scope_blocks): Document.
13188         (debug_scope_blocks): New.
13189         * tree-flow.h (debug_scope_blocks): Declare.
13190
13191 2009-05-21  Denis Chertykov  <denisc@overta.ru>
13192
13193         * doc/contrib.texi (Contributors): Add myself to the list.
13194
13195 2009-05-27  Olivier Hainque  <hainque@adacore.com>
13196
13197         * expr.c (target_align): New function.  Alignment the TARGET of an
13198         assignment may be assume to have.
13199         (highest_pow2_factor_for_target): Use it instead of relying on
13200         immediate tree attributes of TARGET, not necessarily honored when
13201         intermediate bitfields are involved.
13202
13203 2009-05-27  H.J. Lu  <hongjiu.lu@intel.com>
13204
13205         PR target/40266
13206         * config/i386/driver-i386.c (host_detect_local_cpu): Support
13207         AVX, SSE4, AES, PCLMUL and POPCNT.
13208
13209 2009-05-27  Diego Novillo  <dnovillo@google.com>
13210
13211         * tree-pretty-print.c (dump_location): New.
13212         (dump_generic_node): Call it.
13213         Factor code to handle BLOCK nodes ...
13214         (dump_block_node): ... here.
13215
13216 2009-05-27  Rafael Avila de Espindola  <espindola@google.com>
13217
13218         * Makefile.in (GCC_PLUGIN_H): New. Replace all uses of gcc-plugin.h
13219         with it.
13220         * doc/plugins.texi: Document that gcc-plugin.h must be the first to be
13221         included.
13222         * gcc-plugin.h: Include config.h and system.h.
13223         (IN_GCC): Define if not defined.
13224
13225 2009-05-27  Hans-Peter Nilsson  <hp@axis.com>
13226
13227         PR middle-end/40249
13228         * Makefile.in (CRTSTUFF_CFLAGS): Replace -fno-inline-functions
13229         with -fno-inline.
13230
13231 2009-05-27  Shujing Zhao  <pearly.zhao@oracle.com>
13232
13233         * config/m32r/m32r.c: Use REG_P, MEM_P and CONST_INT_P where
13234         applicable.
13235         * config/m32r/m32r.h: Ditto.
13236         * config/m32r/m32r.md: Ditto.
13237         * config/m32r/predicates.md: Ditto.
13238
13239 2009-05-27  Alexandre Oliva  <aoliva@redhat.com>
13240
13241         * cgraph.c (dump_cgraph_node): Honor -fdump-noaddr.
13242
13243 2009-05-26  Basile Starynkevitch  <basile@starynkevitch.net>
13244
13245         * doc/plugins.texi
13246         (Loading plugins): typo.
13247         (Plugin callbacks): Documented PLUGIN_INFO, PLUGIN_GGC_START,
13248         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
13249         (Interacting with the GCC Garbage Collector): Added new section.
13250         (Giving information about a plugin): Added new section for
13251         PLUGIN_INFO.
13252         * ggc.h (ggc_register_root_tab): Added declaration.
13253         * gcc-plugin.h (PLUGIN_GGC_START, PLUGIN_GGC_MARKING)
13254         (PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS): Added new events.
13255         (register_callback): Improved comment in declaration.
13256         * ggc-common.c (const_ggc_root_tab_t) Added new typedef for vectors.
13257         (extra_root_vec) Added static variable for dynamic roots registration.
13258         (ggc_register_root_tab) Added new routine.
13259         (ggc_mark_roots) Added iteration inside extra_root_vec, and invoke
13260         PLUGIN_GGC_MARKING event.
13261         * ggc-zone.c: Include plugin.h.
13262         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
13263         * ggc-page.c: Include plugin.h.
13264         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
13265         * plugin.c (plugin_event_name): added names of PLUGIN_GGC_START,
13266         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS
13267         (register_callback): check lack of callbacks for
13268         pseudo-events. Added handling of PLUGIN_REGISTER_GGC_ROOTS,
13269         PLUGIN_GGC_START, PLUGIN_GGC_MARKING, PLUGIN_GGC_END.
13270         (invoke_plugin_callbacks): Handle PLUGIN_GGC_START,
13271         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
13272         * Makefile.in (ggc-common.o, ggc-zone.o, ggc-page.o): Added
13273         dependency on plugin.h.
13274         (plugin.o): Added dependency on ggc.h...
13275
13276 2009-05-26  Richard Guenther  <rguenther@suse.de>
13277
13278         PR middle-end/40248
13279         Revert
13280         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
13281         with mismatched comparison modes.
13282
13283         * expr.c (expand_expr_real_1): Expand the operand of a
13284         VIEW_CONVERT_EXPR in its natural mode.
13285
13286 2009-05-26  Ian Lance Taylor  <iant@google.com>
13287
13288         * Makefile.in (COMPILER, COMPILER_FLAGS): Define.
13289         (COMPILER_FOR_BUILD, BUILD_COMPILERFLAGS): Define.
13290         (ALL_COMPILERFLAGS): Define.
13291         (.c.o, xgcc$(exeext), cpp$(exeext)): Use $(COMPILER).
13292         (cc1-dummy$(exeext), cc1$(exeext)): Likewise.
13293         (collect2$(exeext), collect2.o): Likewise.
13294         (c-opts.o, c-cppbuiltin.o, c-pch.o, gcc.o, gccspec.o): Likewise.
13295         (gcc-options.o, version.o, prefix.o, toplev.o): Likewise.
13296         ($(out_object_file), mips-tfile, mips-tdump): Likewise.
13297         (libbackend.o, intl.o, cppdefault.o): Likewise.
13298         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
13299         (build/%.o): Use $(COMPILER_FOR_BUILD).
13300         (build/gen%$(build_exeext)): Likewise.
13301         (build/gcov-iov$(build_exeext)): LIkewise.
13302         * config/t-darwin (darwin.o): Use $(COMPILER).
13303         (darwin-c.o, darwin-f.o, darwin-driver.o): Likewise.
13304         * config/t-sol2 (sol2-c.o): Likewise.
13305         (sol2.o): Likewise.
13306         * config/t-vxworks (vxworks.o): Likewise.
13307         * config/x-darwin (host-darwin.o): Likewise.
13308         * config/x-hpux (host-hpux.o): Likewise.
13309         * config/x-linux (host-linux.o): Likewise.
13310         * config/x-solaris (host-solaris.o): Likewise.
13311         * config/alpha/x-alpha (driver-alpha.o): Likewise.
13312         * config/arm/t-arm (arm-c.o): Likewise.
13313         * config/arm/t-pe (pe.o): Likewise.
13314         * config/arm/t-wince-pe (pe.o): Likewise.
13315         * config/i386/t-cygming (winnt.o): Likewise.
13316         (winnt-cxx.o, winnt-stubs.o, msformat-c.o): Likewise.
13317         * config/i386/t-cygwin (cygwin1.o): Likewise.
13318         (cygwin2.o): Likewise.
13319         * config/i386/t-i386 (i386-c.o): Likewise.
13320         * config/i386/t-interix (winnt.o): Likewise.
13321         * config/i386/t-netware (netware.o): Likewise.
13322         * config/i386/t-nwld (nwld.o): Likewise.
13323         * config/i386/x-darwin (host-i386-darwin.o): Likewise.
13324         * config/i386/x-i386 (driver-i386.o): Likewise.
13325         * config/i386/x-cygwin (host-cygwin.o): Likewise.
13326         * config/i386/x-mingw32 (host-mingw32.o): Likewise.
13327         * config/ia64/t-ia64 (ia64-c.o): Likewise.
13328         * config/m32c/t-m32c (m32c-pragma.o): Likewise.
13329         * config/mips/x-native (driver-native.o): Likewise.
13330         * config/rs6000/t-rs6000 (rs6000-c.o): Likewise.
13331         * config/rs6000/x-darwin (host-ppc-darwin.o): Likewise.
13332         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Likewise.
13333         * config/rs6000/x-rs6000 (driver-rs6000.o): Likewise.
13334         * config/score/t-score-elf (score7.o): Likewise.
13335         (score3.o): Likewise.
13336         * config/sh/t-sh (sh-c.o): Likewise.
13337         * config/sh/t-symbian (sh-c.o): Likewise.
13338         (symbian.o): Likewise.
13339         * config/spu/t-spu-elf (spu-c.o): Likewise.
13340         * config/v850/t-v850 (v850-c.o): Likewise.
13341         * config/v850/t-v850e (v850-c.o): Likewise.
13342
13343 2009-05-26  Richard Guenther  <rguenther@suse.de>
13344
13345         PR tree-optimization/40122
13346         * tree-ssa-ccp.c (ccp_fold): Fold vector CONSTRUCTORs to
13347         VECTOR_CSTs if possible.
13348         (fold_gimple_assign): Likewise.
13349
13350 2009-05-26  Richard Guenther  <rguenther@suse.de>
13351
13352         PR middle-end/40252
13353         * fold-const.c (fold_binary): Use the correct types for building
13354         rotates.
13355
13356 2009-05-26  Richard Guenther  <rguenther@suse.de>
13357
13358         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove
13359         redundant calls to merge_alias_info.
13360         (bump_vector_ptr): Likewise.
13361         * tree-ssa-copy.c (merge_alias_info): Remove.
13362         (replace_exp_1): Remove call to merge_alias_info.
13363         (propagate_tree_value): Likewise.
13364         (fini_copy_prop): Propagate points-to info.
13365         * tree-flow.h (merge_alias_info): Remove.
13366
13367 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
13368
13369         * config/picochip/picochip.C (PARAM_INLINE_CALL_COST): Remove.
13370
13371 2009-05-25  Jan Hubicka  <jh@suse.cz>
13372
13373         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
13374         * cgraph.h (struct inline_summary): New filed self_wize,
13375         size_inlining_benefit, self_time and time_inlining_benefit.
13376         (struct cgraph_global_info): Replace insns by time ans size fields.
13377         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
13378         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
13379         (ipcp_update_callgraph): Do not touch function bodies.
13380         * ipa-inline.c: Include except.h
13381         (MAX_TIME): New constant.
13382         (overall_insns): Remove.
13383         (leaf_node_p): New.
13384         (overall_size, max_benefit): New static variables.
13385         (cgraph_estimate_time_after_inlining): New function.
13386         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
13387         (cgraph_clone_inlined_nodes): Update size.
13388         (cgraph_mark_inline_edge): Update size.
13389         (cgraph_estimate_growth): Use size info.
13390         (cgraph_check_inline_limits): Check size.
13391         (cgraph_default_inline_p): Likewise.
13392         (cgraph_edge_badness): Compute badness based on benefit and size cost.
13393         (cgraph_decide_recursive_inlining): Check size.
13394         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
13395         and times.
13396         (cgraph_decide_inlining): Likewise.
13397         (cgraph_decide_inlining_incrementally): Likewise; honor
13398         PARAM_EARLY_INLINING_INSNS.
13399         (likely_eliminated_by_inlining_p): New predicate.
13400         (estimate_function_body_sizes): New function.
13401         (compute_inline_parameters): Use it.
13402         * except.c (must_not_throw_labels): New function.
13403         * except.h (must_not_throw_labels): Declare.
13404         * tree-inline.c (init_inline_once): Kill inlining_weigths
13405         * tree-ssa-structalias.c: Avoid uninitialized warning.
13406         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
13407         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
13408         (PARAM_INLINE_CALL_COST): Remove.
13409         (PARAM_EARLY_INLINING_INSNS): New.
13410
13411 2009-05-25  Richard Guenther  <rguenther@suse.de>
13412
13413         PR tree-optimization/36327
13414         * tree-ssa-alias.c (walk_non_aliased_vuses): Add second walker
13415         callback for reference translation or lookup at the point of may-defs.
13416         * tree-ssa-alias.h (walk_non_aliased_vuses): Adjust prototype.
13417         * tree-ssa-sccvn.c (get_ref_from_reference_ops): Bail out
13418         for union COMPONENT_REFs.
13419         (vn_reference_lookup_3): New callback.  Lookup from memset
13420         and CONSTRUCTOR assignment, translate through struct copies.
13421         (vn_reference_lookup_pieces): Make sure to not free the
13422         passed operands array.  Adjust walk_non_aliased_vuses call.
13423         (vn_reference_lookup): Adjust walk_non_aliased_vuses call,
13424         make sure we do not leak memory.
13425
13426 2009-05-25  Richard Guenther  <rguenther@suse.de>
13427
13428         * tree-ssa-alias.h (dump_points_to_solution): Declare.
13429         * tree-inline.c (expand_call_inline): Reset the escaped and
13430         callused solutions.
13431         * tree-ssa-structalias.c (pass_build_ealias): New.
13432         * tree-pass.h (pass_build_ealias): Declare.
13433         * passes.c (init_optimization_passes): Add PTA during
13434         early optimizations.
13435         * tree-ssa-alias.c (dump_alias_info): Dump the ESCAPED
13436         and CALLUSED solutions.
13437         (dump_points_to_solution): New function, split out from ...
13438         (dump_points_to_info_for): ... here.
13439         * tree-parloops.c (parallelize_loops): Reset the escaped and
13440         callused solutions.
13441
13442 2009-05-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
13443
13444         PR bootstrap/40027
13445         * config/i386/i386.c (USE_HIDDEN_LINKONCE): Only define if missing.
13446         * config/i386/sol2.h [!TARGET_GNU_LD] (USE_HIDDEN_LINKONCE): Define.
13447
13448 2009-05-25  Ira Rosen  <irar@il.ibm.com>
13449
13450         PR tree-optimization/40238
13451         * tree-vect-stmts.c (vect_init_vector): Insert initialization
13452         statements after basic block's labels.
13453         * tree-vect-slp.c (vect_slp_transform_bb): Call destroy_bb_vec_info()
13454         to free the allocated memory.
13455
13456 2009-05-24  Kaz Kojima  <kkojima@gcc.gnu.org>
13457
13458         * gcc/config/sh/sh.c (sh_set_return_address): Mark store of
13459         return address with a USE.
13460
13461 2009-05-24  Richard Guenther  <rguenther@suse.de>
13462
13463         PR middle-end/40233
13464         * tree.c (make_vector_type): Build the TYPE_DEBUG_REPRESENTATION_TYPEs
13465         array type from the main variant of the inner type.
13466
13467 2009-05-24  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
13468
13469         * config/vax/vax-protos.h (legitimate_constant_address_p): Change
13470         definition to bool (from int) to un-break build.
13471         (legitimate_constant_p, vax_mode_dependent_address_p): Likewise.
13472
13473 2009-05-24  Paolo Bonzini  <bonzini@gnu.org>
13474
13475         * tree-ssa-operands.h (push_stmt_changes, pop_stmt_changes,
13476         discard_stmt_changes): Delete.
13477         * tree-ssa-operands.c (scb_stack): Delete.
13478         (init_ssa_operands): Do not initialize it.
13479         (fini_ssa_operands): Do not free it.
13480         (push_stmt_changes, pop_stmt_changes, discard_stmt_changes): Delete.
13481
13482         * tree-cfg.c (replace_uses_by): Replace pop_stmt_changes with
13483         update_stmt, remove the others.  Fix comments.
13484         * tree-dfa.c (optimize_stack_restore): Likewise.
13485         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Likewise.
13486         * tree-ssa-loop-ivopts.c (rewrite_use): Likewise.
13487         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
13488         * tree-ssa-ccp.c (optimize_stack_restore, execute_fold_all_builtins):
13489         Likewise.
13490         * tree-ssa-propagate.c (substitute_and_fold): Likewise.
13491         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
13492         (dom_opt_finalize_block): Likewise, adjusting access to
13493         stmts_to_rescan.
13494         (optimize_stmt): Likewise, adjusting access to stmts_to_rescan.
13495         (stmts_to_rescan): Change item type to gimple.
13496         (tree_ssa_dominator_optimize): Change type of stmts_to_rescan.
13497
13498 2009-05-24  Ira Rosen  <irar@il.ibm.com>
13499
13500         * doc/passes.texi (Tree-SSA passes): Document SLP pass.
13501         * tree-pass.h (pass_slp_vectorize): New pass.
13502         * params.h (SLP_MAX_INSNS_IN_BB): Define.
13503         * timevar.def (TV_TREE_SLP_VECTORIZATION): Define.
13504         * tree-vectorizer.c (timevar.h): Include.
13505         (user_vect_verbosity_level): Declare.
13506         (vect_location): Fix comment.
13507         (vect_set_verbosity_level): Update user_vect_verbosity_level
13508         instead of vect_verbosity_level.
13509         (vect_set_dump_settings): Add an argument. Ignore user defined
13510         verbosity if dump flags require higher level of verbosity. Print to
13511         stderr only for loop vectorization.
13512         (vectorize_loops): Update call to vect_set_dump_settings.
13513         (execute_vect_slp): New function.
13514         (gate_vect_slp): Likewise.
13515         (struct gimple_opt_pass pass_slp_vectorize): New.
13516         * tree-vectorizer.h (struct _bb_vec_info): Define along macros to
13517         access its members.
13518         (vec_info_for_bb): New function.
13519         (struct _stmt_vec_info): Add bb_vinfo and a macro for its access.
13520         (VECTORIZATION_ENABLED): New macro.
13521         (SLP_ENABLED, SLP_DISABLED): Likewise.
13522         (vect_is_simple_use): Add bb_vec_info argument.
13523         (new_stmt_vec_info, vect_analyze_data_ref_dependences,
13524         vect_analyze_data_refs_alignment, vect_verify_datarefs_alignment,
13525         vect_analyze_data_ref_accesses, vect_analyze_data_refs,
13526         vect_schedule_slp, vect_analyze_slp): Likewise.
13527         (vect_analyze_stmt): Add slp_tree argument.
13528         (find_bb_location): Declare.
13529         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
13530         * tree-vect-loop.c (new_loop_vec_info): Adjust function calls.
13531         (vect_analyze_loop_operations, vect_analyze_loop,
13532         get_initial_def_for_induction, vect_create_epilog_for_reduction,
13533         vect_finalize_reduction, vectorizable_reduction,
13534         vectorizable_live_operation, vect_transform_loop): Likewise.
13535         * tree-data-ref.c (dr_analyze_innermost): Update comment,
13536         skip evolution analysis if analyzing a basic block.
13537         (dr_analyze_indices): Likewise.
13538         (initialize_data_dependence_relation): Skip the test whether the
13539         object is invariant for basic blocks.
13540         (compute_all_dependences): Skip dependence analysis for data
13541         references in basic blocks.
13542         (find_data_references_in_stmt): Don't fail in case of invariant
13543         access in basic block.
13544         (find_data_references_in_bb): New function.
13545         (find_data_references_in_loop): Move code to
13546         find_data_references_in_bb and add a call to it.
13547         (compute_data_dependences_for_bb): New function.
13548         * tree-data-ref.h (compute_data_dependences_for_bb): Declare.
13549         * tree-vect-data-refs.c (vect_check_interleaving): Adjust to the case
13550         that STEP is 0.
13551         (vect_analyze_data_ref_dependence): Check for interleaving in case of
13552         unknown dependence in basic block and fail in case of dependence in
13553         basic block.
13554         (vect_analyze_data_ref_dependences): Add bb_vinfo argument, get data
13555         dependence instances from either loop or basic block vectorization
13556         info.
13557         (vect_compute_data_ref_alignment): Check if it is loop vectorization
13558         before calling nested_in_vect_loop_p.
13559         (vect_compute_data_refs_alignment): Add bb_vinfo argument, get data
13560         dependence instances from either loop or basic block vectorization
13561         info.
13562         (vect_verify_datarefs_alignment): Likewise.
13563         (vect_enhance_data_refs_alignment): Adjust function calls.
13564         (vect_analyze_data_refs_alignment): Likewise.
13565         (vect_analyze_group_access): Fix printing. Skip different checks if
13566         DR_STEP is 0. Keep strided stores either in loop or basic block
13567         vectorization data structure. Fix indentation.
13568         (vect_analyze_data_ref_access): Fix comments, allow zero step in
13569         basic blocks.
13570         (vect_analyze_data_ref_accesses): Add bb_vinfo argument, get data
13571         dependence instances from either loop or basic block vectorization
13572         info.
13573         (vect_analyze_data_refs): Update comment. Call
13574         compute_data_dependences_for_bb to analyze basic blocks.
13575         (vect_create_addr_base_for_vector_ref): Check for outer loop only in
13576         case of loop vectorization. In case of basic block vectorization use
13577         data-ref itself as a base.
13578         (vect_create_data_ref_ptr): In case of basic block vectorization:
13579         don't advance the pointer, add new statements before the current
13580         statement.  Adjust function calls.
13581         (vect_supportable_dr_alignment): Support only aligned accesses in
13582         basic block vectorization.
13583         * common.opt (ftree-slp-vectorize): New flag.
13584         * tree-vect-patterns.c (widened_name_p): Adjust function calls.
13585         (vect_pattern_recog_1): Likewise.
13586         * tree-vect-stmts.c (process_use): Likewise.
13587         (vect_init_vector): Add new statements in the beginning of the basic
13588         block in case of basic block SLP.
13589         (vect_get_vec_def_for_operand): Adjust function calls.
13590         (vect_finish_stmt_generation): Likewise.
13591         (vectorizable_call): Add assert that it is loop vectorization, adjust
13592         function calls.
13593         (vectorizable_conversion, vectorizable_assignment): Likewise.
13594         (vectorizable_operation): In case of basic block SLP, take
13595         vectorization factor from statement's type and skip the relevance
13596         check. Adjust function calls.
13597         (vectorizable_type_demotion): Add assert that it is loop
13598         vectorization, adjust function calls.
13599         (vectorizable_type_promotion): Likewise.
13600         (vectorizable_store): Check for outer loop only in case of loop
13601         vectorization. Adjust function calls. For basic blocks, skip the
13602         relevance check and don't advance pointers.
13603         (vectorizable_load): Likewise.
13604         (vectorizable_condition): Add assert that it is loop vectorization,
13605         adjust function calls.
13606         (vect_analyze_stmt): Add argument. In case of basic block SLP, check
13607         that it is not reduction, get vector type, call only supported
13608         functions, skip loop specific parts.
13609         (vect_transform_stmt): Check for outer loop only in case of loop
13610         vectorization.
13611         (new_stmt_vec_info): Add new argument and initialize bb_vinfo.
13612         (vect_is_simple_use): Fix comment, add new argument, fix conditions
13613         for external definition.
13614         * passes.c (pass_slp_vectorize): New pass.
13615         * tree-vect-slp.c (find_bb_location): New function.
13616         (vect_get_and_check_slp_defs): Add argument, adjust function calls,
13617         check for patterns only in loops.
13618         (vect_build_slp_tree): Add argument, adjust function calls, fail in
13619         case of multiple types in basic block SLP.
13620         (vect_mark_slp_stmts_relevant): New function.
13621         (vect_supported_load_permutation_p): Fix comment.
13622         (vect_analyze_slp_instance): Add argument. In case of basic block
13623         SLP, take vectorization factor from statement's type, check that
13624         unrolling factor is 1. Adjust function call. Save SLP instance in
13625         either loop or basic block vectorization structure. Return FALSE,
13626         if SLP failed.
13627         (vect_analyze_slp): Add argument. Get strided stores groups from
13628         either loop or basic block vectorization structure. Return FALSE
13629         if basic block SLP failed.
13630         (new_bb_vec_info): New function.
13631         (destroy_bb_vec_info, vect_slp_analyze_node_operations,
13632         vect_slp_analyze_operations, vect_slp_analyze_bb): Likewise.
13633         (vect_schedule_slp): Add argument. Get SLP instances from either
13634         loop or basic block vectorization structure. Set vectorization factor
13635         to be 1 for basic block SLP.
13636         (vect_slp_transform_bb): New function.
13637         * params.def (PARAM_SLP_MAX_INSNS_IN_BB): Define.
13638
13639 2009-05-23  Mark Mitchell  <mark@codesourcery.com>
13640
13641         * final.c (shorten_branches): Do not align labels for jump tables.
13642         (final_scan_insn): Use JUMP_TABLE_DATA_P.
13643
13644 2009-05-23  Eric Botcazou  <ebotcazou@adacore.com>
13645
13646         * doc/passes.texi: Standardize spelling of RTL, Tree and Tree SSA.
13647         Remove outdated reference to flow.c and fix nits.
13648         * doc/gccint.texi: Tweak RTL description.
13649         * doc/rtl.texi: Likewise.
13650
13651 2009-05-23  Denis Chertykov  <chertykov@gmail.com>
13652
13653         * config/avr/avr.c: Change my email address.
13654         * config/avr/avr.h: Likewise.
13655         * config/avr/avr.md: Likewise.
13656         * config/avr/avr-protos.h: Likewise.
13657         * config/avr/libgcc.S: Likewise.
13658
13659 2009-05-22  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
13660
13661         * config/spu/spu-protos.h (aligned_mem_p, spu_valid_mov): Remove.
13662         (spu_split_load, spu_split_store): Change return type to int.
13663         (spu_split_convert): Declare.
13664         * config/spu/predicates.md (spu_mem_operand): Remove.
13665         (spu_mov_operand): Update.
13666         (spu_dest_operand, shiftrt_operator, extend_operator): Define.
13667         * config/spu/spu.c (regno_aligned_for_load): Remove.
13668         (reg_aligned_for_addr, spu_expand_load): Define.
13669         (spu_expand_extv): Reimplement and handle MEM.
13670         (spu_expand_insv): Handle MEM.
13671         (spu_sched_reorder): Handle insn's with length 0.
13672         (spu_legitimate_address_p): Reimplement.
13673         (store_with_one_insn_p): Return TRUE for any mode with size
13674         larger than 16 bytes.
13675         (address_needs_split): Define.
13676         (spu_expand_mov): Call spu_split_load and spu_split_store for MEM
13677         operands.
13678         (spu_convert_move): Define.
13679         (spu_split_load): Use spu_expand_load and change all MEM's to TImode.
13680         (spu_split_store): Change all MEM's to TImode.
13681         (spu_init_expanders): Preallocate registers that correspond to
13682         LAST_VIRTUAL_REG+1 and LAST_VIRTUAL_REG+2 and set them with
13683         mark_reg_pointer.
13684         (spu_split_convert): Define.
13685         * config/spu/spu.md (QHSI, QHSDI): New mode iterators.
13686         (_move<mode>, _movdi, _movti): Update predicate and condition.
13687         (load, store): Change to define_split.
13688         (extendqiti2, extendhiti2, extendsiti2, extendditi2): Simplify to
13689         extend<mode>ti2.
13690         (zero_extendqiti2, zero_extendhiti2, <v>lshr<mode>3_imm): Define.
13691         (lshr<mode>3, lshr<mode>3_imm, lshr<mode>3_re): Simplify to one
13692         define_insn_and_split of lshr<mode>3.
13693         (shrqbybi_<mode>, shrqby_<mode>): Simplify to define_expand.
13694         (<v>ashr<mode>3_imm): Define.
13695         (extv, extzv, insv): Allow MEM operands.
13696         (trunc_shr_ti<mode>, trunc_shr_tidi, shl_ext_<mode>ti,
13697         shl_ext_diti, sext_trunc_lshr_tiqisi, zext_trunc_lshr_tiqisi,
13698         sext_trunc_lshr_tihisi, zext_trunc_lshr_tihisi): Define for combine.
13699         (_spu_convert2): Change to define_insn_and_split and remove the
13700         corresponding define_peephole2.
13701         (stack_protect_set, stack_protect_test, stack_protect_test_si):
13702         Change predicates to memory_operand.
13703
13704 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
13705
13706         * config/arm/thumb2.md: Add 16-bit multiply instructions.
13707
13708 2009-05-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
13709
13710         PR tree-optimization/40219
13711         * tree.c (iterative_hash_expr): Make sure the builtin function is
13712         a normal builtin function and not a front end or back end builtin
13713         before indexing into the built_in_decls array.
13714
13715 2009-05-22  Richard Guenther  <rguenther@suse.de>
13716
13717         PR middle-end/38964
13718         * alias.c (write_dependence_p): Do not use TBAA for answering
13719         anti-dependence or output-dependence.
13720         * tree-ssa-structalias.c (set_uids_in_ptset): Remove TBAA pruning code.
13721         (emit_pointer_definition): Remove.
13722         (emit_alias_warning): Likewise.
13723         (find_what_var_points_to): Remove TBAA pruning code.
13724         (find_what_p_points_to): Likewise.  Do not warn about strict-aliasing
13725         violations.
13726         (compute_points_to_sets): Remove code computing the set of
13727         dereferenced pointers.
13728         * tree-data-ref.c (dr_may_alias_p): Properly use the split
13729         oracle for querying anti and output dependencies.
13730         * tree-ssa-alias.c (refs_may_alias_p_1): Add argument specifying
13731         if TBAA may be applied.
13732         (refs_anti_dependent_p): New function.
13733         (refs_output_dependent_p): Likewise.
13734         * tree-ssa-alias.h (refs_anti_dependent_p): Declare.
13735         (refs_output_dependent_p): Likewise.
13736         * doc/tree-ssa.texi (Memory model): New section.
13737         * doc/c-tree.texi (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
13738         * doc/gimple.texi (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
13739         * cfgexpand.c (expand_gimple_basic_block): Do not handle
13740         GIMPLE_CHANGE_DYNAMIC_TYPE or CHANGE_DYNAMIC_TYPE_EXPR.
13741         * expr.c (expand_expr_real_1): Likewise.
13742         * gimple-low.c (lower_stmt): Likewise.
13743         * gimple-pretty-print.c (dump_gimple_stmt): Likewise.
13744         (dump_gimple_cdt): Remove.
13745         * gimple.c (gss_for_code): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
13746         (gimple_size): Likewise.
13747         (walk_gimple_op): Likewise.
13748         (is_gimple_stmt): Likewise.
13749         (walk_stmt_load_store_addr_ops): Likewise.
13750         (gimple_build_cdt): Remove.
13751         * gimple.def (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
13752         * gimple.h (gimple_cdt_new_type): Remove.
13753         (gimple_cdt_new_type_ptr): Likewise.
13754         (gimple_cdt_set_new_type): Likewise.
13755         (gimple_cdt_location): Likewise.
13756         (gimple_cdt_location_ptr): Likewise.
13757         (gimple_cdt_set_location): Likewise.
13758         * gimplify.c (gimplify_expr): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
13759         * tree-cfg.c (remove_useless_stmts_1): Do not handle
13760         GIMPLE_CHANGE_DYNAMIC_TYPE.
13761         (verify_types_in_gimple_stmt): Likewise.
13762         * tree-inline.c (estimate_num_insns): Likewise.
13763         (expand_call_inline): Do not copy DECL_NO_TBAA_P.
13764         (copy_decl_to_var): Likewise.
13765         (copy_result_decl_to_var): Likewise.
13766         * tree-pretty-print.c (dump_generic_node): Do not handle
13767         CHANGE_DYNAMIC_TYPE_EXPR.
13768         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
13769         * tree-ssa-operands.c (get_expr_operands): Likewise.
13770         * tree-ssa-structalias.c (struct variable_info): Remove
13771         no_tbaa_pruning member.
13772         (new_var_info): Do not set it based on DECL_NO_TBAA_P.
13773         (unify_nodes): Do not copy it.
13774         (find_func_aliases): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
13775         (dump_solution_for_var): Do not dump no_tbaa_pruning state.
13776         (set_uids_in_ptset): Do not check it.
13777         (find_what_var_points_to): Likewise.
13778         (compute_tbaa_pruning): Remove.
13779         (compute_points_to_sets): Do not call it.
13780         * tree.c (walk_tree_1): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
13781         * tree.def (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
13782         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Remove.
13783         (CHANGE_DYNAMIC_TYPE_LOCATION): Likewise.
13784         (DECL_NO_TBAA_P): Likewise.
13785         (struct tree_decl_common): Move no_tbaa_flag to unused flags section.
13786         * omp-low.c (copy_var_decl): Do not copy DECL_NO_TBAA_P.
13787         (expand_omp_atomic_pipeline): Do not set it.
13788         * print-tree.c (print_node): Do not dump it.
13789         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
13790         redundant check.
13791
13792 2009-05-22 Vladimir Makarov <vmakarov@redhat.com>
13793
13794         PR target/39856
13795         * reg-stack.c (subst_stack_regs_pat): Remove gcc_assert for note
13796         for clobber.
13797
13798 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
13799
13800         * tree.c (handle_dll_attribute): Mark dllexport'd inlines as
13801         non-external.
13802
13803 2009-05-22  Ben Elliston  <bje@au.ibm.com>
13804
13805         * Makefile.in (bversion.h, s-bversion): New targets.
13806         (TOPLEV_H): Add bversion.h.
13807         * toplev.h: Include "bversion.h".
13808         (ATTRIBUTE_GCC_DIAG): When building with checking disabled, use
13809         the __format__ attribute only if compiling with the same version
13810         of GCC as the sources (the "build version").
13811
13812 2009-05-22  Ben Elliston  <bje@au.ibm.com>
13813
13814         * c-format.c (handle_format_attribute): Fix comment typo.
13815
13816 2009-05-21  Steve Ellcey  <sje@cup.hp.com>
13817
13818         PR target/37846
13819         * config/ia64/ia64.opt (mfused-madd): New.
13820         * config/ia64/ia64.h (TARGET_DEFAULT): Set MASK_FUSED_MADD.
13821         * config/ia64/hpux.h (TARGET_DEFAULT): Ditto.
13822         * config/ia64/ia64.md (maddsf4, msubsf4, nmaddsf4,
13823         madddf4, madddf4_trunc, msubdf4, msubdf4_trunc, nmadddf4,
13824         nmadddf4_truncsf, maddxf4, maddxf4_truncsf, maddxf4_truncdf,
13825         msubxf4, msubxf4_truncsf msubxf4_truncdf, nmaddxf4,
13826         nmaddxf4_truncsf, nmaddxf4_truncdf): Check TARGET_FUSED_MADD.
13827         * config/ia64/vect.md (addv2sf3, subv2sf3): Force fpma/fpms
13828         instruction if !TARGET_FUSED_MADD.
13829         (fpma, fpms): Remove colon from name.
13830
13831 2009-05-22  Richard Guenther  <rguenther@suse.de>
13832
13833         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Record
13834         TMR_ORIGINAL.  Always either record TMR_SYMBOL or TMR_BASE.
13835         * tree-ssa-pre.c (create_component_ref_by_pieces_1): Handle
13836         TARGET_MEM_REF.
13837         (create_expression_by_pieces): Only convert if necessary.
13838         * gimplify.c (gimplify_expr): Handle TARGET_MEM_REF.
13839         * tree-ssa-loop-im.c (gen_lsm_tmp_name): Handle INTEGER_CST.
13840
13841 2009-05-21  Adam Nemet  <anemet@caviumnetworks.com>
13842
13843         * config/mips/mips.md (*extzv_trunc<mode>_exts): Turn into a
13844         regular pattern from a template and rename it ...
13845         (*extzv_truncsi_exts): ... to this.
13846
13847 2009-05-21  Richard Guenther  <rguenther@suse.de>
13848
13849         * cgraph.h (struct cgraph_node): Remove inline_decl member.
13850         * ipa-inline.c (cgraph_mark_inline_edge): Do not check it.
13851         (cgraph_default_inline_p): Likewise.
13852         (cgraph_decide_inlining_incrementally): Likewise.
13853
13854 2009-05-21  H.J. Lu  <hongjiu.lu@intel.com>
13855             Uros Bizjak  <ubizjak@gmail.com>
13856
13857         * config/i386/cpuid.h (bit_MOVBE): New.
13858
13859         * config/i386/driver-i386.c (host_detect_local_cpu): Check movbe.
13860
13861         * config/i386/i386.c (OPTION_MASK_ISA_MOVBE_SET): New.
13862         (OPTION_MASK_ISA_MOVBE_UNSET): Likewise.
13863         (ix86_handle_option): Handle OPT_mmovbe.
13864         (ix86_target_string): Add -mmovbe.
13865         (pta_flags): Add PTA_MOVBE.
13866         (processor_alias_table): Add PTA_MOVBE to "atom".
13867         (override_options): Handle PTA_MOVBE.
13868
13869         * config/i386/i386.h (TARGET_MOVBE): New.
13870
13871         * config/i386/i386.md (bswapsi2): Check TARGET_MOVBE.
13872         (*bswapsi_movbe): New.
13873         (*bswapdi_movbe): Likewise.
13874         (bswapdi2): Renamed to ...
13875         (*bswapdi_1): This.
13876         (bswapdi2): New expander.
13877
13878         * config/i386/i386.opt (mmovbe): New.
13879
13880         * doc/invoke.texi: Document -mmovbe.
13881
13882 2009-05-21  Taras Glek  <tglek@mozilla.com>
13883
13884         * plugin.c (try_init_one_plugin): Updated to new plugin_init API.
13885         * gcc-plugin.h (plugin_init): Updated signature.
13886         * gcc-plugin.h (plugin_name_args): Moved to this header.
13887         * doc/plugins.texi (plugin_init): Updated documention to reflect
13888         API change.
13889         * doc/plugins.texi (plugin_name_args): Added to documention.
13890
13891 2009-05-21  Mark Mitchell  <mark@codesourcery.com>
13892
13893         * config/arm/neon.md (*mul<mode>3add<mode>_neon): New pattern.
13894         (*mul<mode>3neg<mode>add<mode>_neon): Likewise.
13895
13896 2009-05-21  Shujing Zhao  <pearly.zhao@oracle.com>
13897
13898         * config/i386/i386.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P and
13899         JUMP_TABLE_DATA_P predicates where applicable.
13900         * config/i386/predicates.md: Ditto.
13901         * config/i386/sse.md: Ditto.
13902
13903 2009-05-21  Jakub Jelinek  <jakub@redhat.com>
13904
13905         * config/i386/i386.md (adddi_4_rex64, addsi_4, addhi_4): For
13906         operand2 -128 override length_immediate attribute to 1.
13907         * config/i386/predicates.md (constm128_operand): New predicate.
13908
13909         * config/i386/i386.c (memory_address_length): Handle %r12
13910         the same as %rsp and %r13 the same as %rbp.  For %rsp and %rbp
13911         also check REGNO.
13912         (ix86_attr_length_address_default): For MODE_SI lea in 64-bit
13913         mode look through optional ZERO_EXTEND and SUBREG.
13914         * config/i386/i386.md (R12_REG): New define_constant.
13915         (prefix_data16): For sse unit set also for MODE_TI insns.
13916         (prefix_rex): For -m32 always return 0.  For TYPE_IMOVX
13917         insns set if operand 1 is ext_QIreg_operand.
13918         (modrm): For TYPE_IMOV clear only if not MODE_DI.  For
13919         TYPE_{ALU{,1},ICMP,TEST} insn clear if there is non-shortened
13920         immediate.
13921         (*movdi_extzv_1, zero_extendhidi2, zero_extendqidi2): Change
13922         mode from MODE_DI to MODE_SI.
13923         (movdi_1_rex64): Override modrm and length_immediate attributes
13924         only for movabs (TYPE_IMOV, alternative 2).
13925         (zero_extendsidi2_rex64): Clear prefix_0f attribute if TYPE_IMOVX.
13926         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit,
13927         *float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit,
13928         *float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit,
13929         *float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Set
13930         prefix_rex attribute if DImode.
13931         (*adddi_1_rex64, *adddi_2_rex64, *adddi_3_rex64, *adddi_5_rex64,
13932         *addsi_1, *addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
13933         *addsi_3_zext, *addsi_5, *addhi_1_lea, *addhi_1, *addhi_2, *addhi_3,
13934         *addhi_5, *addqi_1_lea, *addqi_1): Override length_immediate
13935         attribute to 1 if TYPE_ALU and operand 2 is const128_operand.
13936         (pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64):
13937         Likewise.  For TYPE_IMOV clear length_immediate attribute.
13938         (*ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashldi3_cconly_rex64,
13939         *ashlsi3_1, *ashlsi3_1_zext, *ashlsi3_cmp, **ashlsi3_cconly,
13940         *ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1, *ashlhi3_cmp,
13941         *ashlhi3_cconly, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
13942         *ashlqi3_cconly): Override length_immediate attribute to 0 if TYPE_ALU
13943         or one operand TYPE_ISHIFT.
13944         (*ashrdi3_1_one_bit_rex64, *ashrdi3_one_bit_cmp_rex64,
13945         *ashrdi3_one_bit_cconly_rex64, *ashrsi3_1_one_bit,
13946         *ashrsi3_1_one_bit_zext, *ashrsi3_one_bit_cmp,
13947         *ashrsi3_one_bit_cconly, *ashrsi3_one_bit_cmp_zext,
13948         *ashrhi3_1_one_bit, *ashrhi3_one_bit_cmp, *ashrhi3_one_bit_cconly,
13949         *ashrqi3_1_one_bit, *ashrqi3_1_one_bit_slp, *ashrqi3_one_bit_cmp,
13950         *ashrqi3_one_bit_cconly, *lshrdi3_1_one_bit_rex64,
13951         *lshrdi3_cmp_one_bit_rex64, *lshrdi3_cconly_one_bit_rex64,
13952         *lshrsi3_1_one_bit, *lshrsi3_1_one_bit_zext, *lshrsi3_one_bit_cmp,
13953         *lshrsi3_one_bit_cconly, *lshrsi3_cmp_one_bit_zext,
13954         *lshrhi3_1_one_bit, *lshrhi3_one_bit_cmp, *lshrhi3_one_bit_cconly,
13955         *lshrqi3_1_one_bit, *lshrqi3_1_one_bit_slp, *lshrqi2_one_bit_cmp,
13956         *lshrqi2_one_bit_cconly, *rotlsi3_1_one_bit_rex64, *rotlsi3_1_one_bit,
13957         *rotlsi3_1_one_bit_zext, *rotlhi3_1_one_bit, *rotlqi3_1_one_bit_slp,
13958         *rotlqi3_1_one_bit, *rotrdi3_1_one_bit_rex64, *rotrsi3_1_one_bit,
13959         *rotrsi3_1_one_bit_zext, *rotrhi3_one_bit, *rotrqi3_1_one_bit,
13960         *rotrqi3_1_one_bit_slp): Override length_immediate attribute to 0,
13961         set mode attribute, don't override length attribute.
13962         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Set prefix_0f attribute
13963         to 1.
13964         (return_internal_long): Set length attribute to 2 instead of 1.
13965         (*strmovqi_rex_1, *strsetqi_rex_1, *rep_stosqi_rex64,
13966         *cmpstrnqi_nz_rex_1, *cmpstrnqi_rex_1, *strlenqi_rex_1): Clear
13967         prefix_rex attribute.
13968         * config/i386/predicates.md (ext_QIreg_operand, const128_operand):
13969         New predicates.
13970         (memory_displacement_only_operand): Always return 0 for TARGET_64BIT.
13971
13972 2009-05-21  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
13973
13974         * config/arm/thumb2.md (orsi_notsi_si): Fix typo in pattern.
13975
13976 2009-05-20  Ian Lance Taylor  <iant@google.com>
13977
13978         * tree.c (build_tree_list_vec_stat): New function.
13979         (ctor_to_vec): New function.
13980         (build_nt_call_vec): New function.
13981         (build_call_array): Change args to be a const pointer.
13982         (build_call_vec): New function.
13983         * tree.h (build_nt_call_vec): Declare.
13984         (build_tree_list_vec_stat): Declare.
13985         (build_tree_list_vec): Define.
13986         (build_call_array): Update declaration.
13987         (build_call_vec): Declare.
13988         (ctor_to_vec): Declare.
13989         * c-common.c (tree_vector_cache): New static variable.
13990         (make_tree_vector): New function.
13991         (release_tree_vector): New function.
13992         (make_tree_vector_single): New function.
13993         (make_tree_vector_copy): New function.
13994         * c-common.h (tree_vector_cache, make_tree_vector): Declare.
13995         (make_tree_vector_single, make_tree_vector_copy): Declare.
13996         * c-parser.c (cached_expr_list_1, cached_expr_list_2): Remove.
13997         (c_parser_expr_list): Don't manage cache here, instead call
13998         make_tree_vector.
13999         (c_parser_release_expr_list): Remove static function.
14000         (c_parser_vec_to_tree_list): Remove static function.
14001         (c_parser_attributes): Call build_tree_list_vec instead of
14002         c_parser_vec_to_tree_list.  Call release_tree_vector instead of
14003         c_parser_release_expr_list.
14004         (c_parser_postfix_expression_after_primary): Likewise.
14005         (c_parser_objc_keywordexpr): Likewise.
14006
14007 2009-05-20  Sandra Loosemore  <sandra@codesourcery.com>
14008
14009         * doc/tm.texi (Misc): Document TARGET_INVALID_PARAMETER_TYPE,
14010         TARGET_INVALID_RETURN_TYPE, TARGET_PROMOTED_TYPE, and
14011         TARGET_CONVERT_TO_TYPE.
14012         * hooks.c (hook_tree_const_tree_null): Define.
14013         * hooks.h (hook_tree_const_tree_null): Declare.
14014         * target.h (struct gcc_target):  Add invalid_parameter_type,
14015         invalid_return_type, promoted_type, and convert_to_type fields.
14016         * target-def.h: (TARGET_INVALID_PARAMETER_TYPE): Define.
14017         (TARGET_INVALID_RETURN_TYPE): Define.
14018         (TARGET_PROMOTED_TYPE): Define.
14019         (TARGET_CONVERT_TO_TYPE): Define.
14020         (TARGET_INITIALIZER): Update for new fields.
14021         * c-decl.c (grokdeclarator): Check targetm.invalid_return_type.
14022         (grokparms): Check targetm.invalid_parameter_type.
14023         * c-typeck.c (default_conversion): Check targetm.promoted_type.
14024         * c-convert.c (convert): Check targetm.convert_to_type.
14025
14026 2009-05-20  Adam Nemet  <anemet@caviumnetworks.com>
14027
14028         * config/mips/mips.md (*extenddi_truncate<mode>,
14029         *extendsi_truncate<mode>): Emit exts if supported.  Add attribute
14030         defintions.
14031         (*extendhi_truncateqi): New define_insn_and_sptit.
14032
14033 2009-05-20  Jakub Jelinek  <jakub@redhat.com>
14034
14035         PR middle-end/40204
14036         * fold-const.c (fold_binary) <case BIT_AND_EXPR>: Avoid infinite
14037         recursion if build_int_cst_type returns the same INTEGER_CST as arg1.
14038
14039 2009-05-20  Eric Botcazou  <ebotcazou@adacore.com>
14040
14041         * fold-const.c (build_fold_addr_expr_with_type): Take the address of
14042         the operand of VIEW_CONVERT_EXPR.
14043
14044 2009-05-20  H.J. Lu  <hongjiu.lu@intel.com>
14045
14046         * config/i386/driver-i386.c (host_detect_local_cpu): Check
14047         extended family and model for Intel processors.  Support Intel Atom.
14048
14049 2009-05-20  Olivier Hainque  <hainque@adacore.com>
14050
14051         * gstab.h (stab_code_type): Define, to be used instead of the
14052         __stab_debug_code enum, made anonymous.  Add 2009 to the copyright
14053         notice.
14054         * dbxout.c (STAB_CODE_TYPE): Remove #define and replace use
14055         occurrences by stab_code_type.
14056         * mips-tfile.c (STAB_CODE_TYPE): Remove #define, unused.
14057
14058 2009-05-20  Martin Jambor  <mjambor@suse.cz>
14059
14060         * tree-flow.h (insert_edge_copies_seq): Undeclare.
14061         (sra_insert_before): Likewise.
14062         (sra_insert_after): Likewise.
14063         (sra_init_cache): Likewise.
14064         (sra_type_can_be_decomposed_p): Likewise.
14065         * tree-mudflap.c (insert_edge_copies_seq): Copied here from tree-sra.c
14066         * tree-sra.c (sra_type_can_be_decomposed_p): Made static.
14067         (sra_insert_before): Likewise.
14068         (sra_insert_after): Likewise.
14069         (sra_init_cache): Likewise.
14070         (insert_edge_copies_seq): Made static and moved upwards.
14071
14072         * tree-complex.c (extract_component): Added VIEW_CONVERT_EXPR switch
14073         case.
14074
14075         * tree-flow-inline.h (contains_view_convert_expr_p): New function.
14076
14077         * ipa-prop.c (get_ssa_def_if_simple_copy): New function.
14078         (determine_cst_member_ptr): Call get_ssa_def_if_simple_copy to skip
14079         simple copies.
14080
14081 2009-05-20  Richard Guenther  <rguenther@suse.de>
14082
14083         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
14084         with mismatched comparison modes.
14085
14086 2009-05-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
14087
14088         * config/arm/arm.md (*arm_iorsi3): Refactored for only ARM.
14089         (peephole ior (reg, int) -> mov, ior): Refactored for only ARM.
14090         * config/arm/thumb2.md (*thumb_andsi_not_shiftsi_si): Allow bic
14091         with shifts for Thumb2.
14092         (orsi_notsi): New for orn.
14093         (*thumb_orsi_notshiftsi_si): Allow orn with shifts.
14094         (*thumb2_iorsi3): Rewrite support for iorsi for Thumb2.
14095         * config/arm/arm.c (const_ok_for_op): Split case for IOR for Thumb2.
14096         (arm_gen_constant): Set can_invert for IOR and Thumb2, Add comments.
14097         Don't invert remainder for IOR.
14098
14099 2009-05-19  Zdenek Dvorak  <ook@ucw.cz>
14100
14101         PR tree-optimization/40087
14102         * tree-ssa-loop-niter.c (number_of_iterations_ne_max,
14103         number_of_iterations_ne): Rename never_infinite argument.
14104         (number_of_iterations_lt_to_ne, number_of_iterations_lt,
14105         number_of_iterations_le): Handle pointer-type ivs when
14106         exit_must_be_taken is false.
14107         (number_of_iterations_cond):  Do not always assume that
14108         exit_must_be_taken if the control variable is a pointer.
14109
14110 2009-05-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14111
14112         * c-typeck.c (build_binary_op): Allow % on integal vectors.
14113         * doc/extend.texi (Vector Extension): Document that % is allowed too.
14114
14115 2009-05-19  H.J. Lu  <hongjiu.lu@intel.com>
14116
14117         * config/i386/i386.c (ix86_avoid_jump_mispredicts): Check
14118         ASM_OUTPUT_MAX_SKIP_PAD instead of ASM_OUTPUT_MAX_SKIP_ALIGN.
14119
14120 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
14121
14122         PR c/40172
14123         * c.opt (Wlogical-op): Disabled by default.
14124         * c-opt (c_common_post_options): Do not enable Wlogical-op with
14125         Wextra.
14126         * doc/invoke.texi (Wlogical-op): Likewise.
14127
14128 2009-05-19  Eric Botcazou  <ebotcazou@adacore.com>
14129
14130         * tree-scalar-evolution.c (follow_ssa_edge_expr) <NOP_EXPR>: Turn
14131         into CASE_CONVERT.
14132         <PLUS_EXPR>: Strip useless type conversions instead of type nops.
14133         Propagate the type of the first operand.
14134         <ASSERT_EXPR>: Simplify.
14135         (follow_ssa_edge_in_rhs): Use gimple_expr_type to get the type.
14136         Rewrite using the RHS code as discriminant.
14137         <NOP_EXPR>: Turn into CASE_CONVERT.
14138         <PLUS_EXPR>: Propagate the type of the first operand.
14139
14140 2009-05-19  Steve Ellcey  <sje@cup.hp.com>
14141
14142         * config/ia64/ia64-protos.h (ia64_dconst_0_5): New.
14143         (ia64_dconst_0_375): New.
14144         * config/ia64/ia64.c (ia64_override_options): Remove
14145         -minline-sqrt-min-latency warning.
14146         (ia64_dconst_0_5_rtx, ia64_dconst_0_5): New.
14147         (ia64_dconst_0_375_rtx, ia64_dconst_0_375): New
14148         * config/ia64/ia64.md (*sqrt_approx): Remove.
14149         (sqrtsf2): Remove #if 0.
14150         (sqrtsf2_internal_thr): Rewrite and move to div.md.
14151         (sqrtdf): Remove assert.
14152         (sqrtdf2_internal_thr): Rewrite and move to div.md.
14153         (sqrtxf2): Remove #if 0.
14154         (sqrtxf2_internal_thr): Rewrite and move to div.md.
14155         * div.md (sqrt_approx_rf): New.
14156         (sqrtsf2_internal_thr): New implementation.
14157         (sqrtsf2_internal_lat): New.
14158         (sqrtdf2_internal_thr: New implementation.
14159         (sqrtxf2_internal): New implementation.
14160
14161 2009-05-19  Francois-Xavier Coudert  <fxcoudert@gmail.com>
14162             Hans-Peter Nilsson  <hp@axis.com>
14163
14164         * defaults.h (UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE)
14165         (WCHAR_TYPE, MODIFIED_WCHAR_TYPE, PTRDIFF_TYPE, WINT_TYPE)
14166         (INTMAX_TYPE, UINTMAX_TYPE, SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE)
14167         (INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE)
14168         (UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE)
14169         (INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE)
14170         (UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE)
14171         (INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE)
14172         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE)
14173         (SIZE_TYPE, PID_TYPE, CHAR16_TYPE, CHAR32_TYPE): Move defaults here...
14174         * c-common.c: ...from here.
14175
14176 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
14177
14178         * c-common.c (warn_logical_operator): Remove unnecessary conditionals.
14179
14180 2009-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14181
14182         * builtins.c (do_mpc_arg1): Separate MPFR/MPC C rounding types.
14183
14184 2009-05-19  Ben Elliston  <bje@au.ibm.com>
14185
14186         * unwind-dw2-fde.c (fde_unencoded_compare): Replace type punning
14187         assignments with memcpy calls.
14188         (add_fdes): Likewise.
14189         (binary_search_unencoded_fdes): Likewise.
14190         (linear_search_fdes): Eliminate type puns.
14191
14192 2009-05-19  Richard Guenther  <rguenther@suse.de>
14193
14194         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do
14195         not falsely claim to have propagated into all uses.
14196
14197 2009-05-19  Ben Elliston  <bje@au.ibm.com>
14198
14199         * doc/invoke.texi (C Dialect Options): Update OpenMP specification
14200         version to v3.0.
14201
14202 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
14203
14204         * config/sh/sh-protos.h (sh_legitimate_address_p): Remove.
14205         * config/sh/sh.c (sh_legitimate_address_p): Make static.
14206         (TARGET_LEGITIMATE_ADDRESS_P): New.
14207         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14208         * config/sh/sh.md: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
14209
14210 2009-05-18  Dodji Seketeli  <dodji@redhat.com>
14211
14212         PR debug/40109
14213         * dwarf2out.c (gen_type_die_with_usage): Generate the DIE as a
14214         child of the containing namespace's DIE.
14215
14216 2009-05-18  Adam Nemet  <anemet@caviumnetworks.com>
14217
14218         * config/mips/mips.md (*zero_extend<GPR:mode>_trunc<SHORT:mode>,
14219         *zero_extendhi_truncqi):  Move after the zero_extend patterns.
14220         (*extenddi_truncate<mode>, *extendsi_truncate<mode>): Move after the
14221         extend patterns.
14222
14223 2009-05-18  H.J. Lu  <hongjiu.lu@intel.com>
14224
14225         PR target/39942
14226         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Replace
14227         gen_align with gen_pad.
14228         (ix86_reorg): Check ASM_OUTPUT_MAX_SKIP_PAD instead of
14229         #ifdef ASM_OUTPUT_MAX_SKIP_ALIGN.
14230
14231         * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): New.
14232         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
14233
14234         * config/i386/i386.md (align): Renamed to ...
14235         (pad): This.  Replace ASM_OUTPUT_MAX_SKIP_ALIGN with
14236         ASM_OUTPUT_MAX_SKIP_PAD.
14237
14238 2009-05-18  Andreas Schwab  <schwab@linux-m68k.org>
14239
14240         * config.gcc: Fix variable syntax.
14241
14242         PR target/39531
14243         * config/m68k/m68k.c (output_andsi3): Mask off sign bit copies
14244         before calling exact_log2.
14245         (output_iorsi3): Likewise.
14246         (output_xorsi3): Likewise.
14247
14248 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
14249
14250         * config/sh/sh.c (expand_cbranchdi4): Use a scratch register
14251         for the none zero constant operand except for EQ and NE
14252         comprisons even when the first operand is R0.
14253
14254 2009-05-18  Andreas Krebbel  <krebbel1@de.ibm.com>
14255
14256         * config/s390/2064.md: Remove trailing whitespaces.
14257         * config/s390/2084.md: Likewise.
14258         * config/s390/constraints.md: Likewise.
14259         * config/s390/fixdfdi.h: Likewise.
14260         * config/s390/libgcc-glibc.ver: Likewise.
14261         * config/s390/s390-modes.def: Likewise.
14262         * config/s390/s390-protos.h: Likewise.
14263         * config/s390/s390.c: Likewise.
14264         * config/s390/s390.h: Likewise.
14265         * config/s390/s390.md: Likewise.
14266         * config/s390/tpf-unwind.h: Likewise.
14267
14268 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
14269
14270         * config/m68k/m68k.c (m68k_legitimize_address): Fix typo in signature.
14271
14272 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
14273
14274         M68K TLS support.
14275         * configure.ac (m68k-*-*): Check if binutils support TLS.
14276         * configure: Regenerate.
14277         * config/m68k/predicates.md (symbolic_operand): Extend comment.
14278         * config/m68k/constraints.md (Cu): New constraint.
14279         * config/m68k/m68k.md (UNSPEC_GOTOFF): Remove.
14280         (UNSPEC_RELOC16, UNSPEC_RELOC32): New constants.
14281         (movsi): Handle TLS symbols.
14282         (addsi3_5200): Handle XTLS symbols, indent.
14283         * config/m68k/m68k-protos.h (m68k_legitimize_tls_address): Declare.
14284         (m68k_tls_reference_p): Declare.
14285         (m68k_legitimize_address): Declare.
14286         (m68k_unwrap_symbol): Declare.
14287         * config/m68k/m68k.opt (mxtls): New option.
14288         * config/m68k/m68k.c (ggc.h): Include.
14289         (m68k_output_dwarf_dtprel): Implement hook.
14290         (TARGET_HAVE_TLS, TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
14291         (m68k_expand_prologue): Load GOT pointer when function needs it.
14292         (m68k_illegitimate_symbolic_constant_p): Handle TLS symbols.
14293         (m68k_legitimate_constant_address_p): Same.
14294         (m68k_decompose_address): Handle TLS references.
14295         (m68k_get_gp): New static function.
14296         (enum m68k_reloc): New contants.
14297         (TLS_RELOC_P): New macro.
14298         (m68k_wrap_symbol): New static function.
14299         (m68k_unwrap_symbol): New function.
14300         (m68k_final_prescan_insn_1): New static function.
14301         (m68k_final_prescan_insn): New function.
14302         (m68k_move_to_reg, m68k_wrap_symbol_into_got_ref): New static
14303         functions.
14304         (legitimize_pic_address): Handle TLS references..
14305         (m68k_tls_get_addr, m68k_get_tls_get_addr)
14306         (m68k_libcall_value_in_a0_p)
14307         (m68k_call_tls_get_addr, m68k_read_tp, m68k_get_m68k_read_tp)
14308         (m68k_call_m68k_read_tp): Helper variables and functions for ...
14309         (m68k_legitimize_tls_address): Handle TLS references.
14310         (m68k_tls_symbol_p, m68k_tls_reference_p_1, m68k_tls_reference_p):
14311         New functions.
14312         (m68k_legitimize_address): Handle TLS symbols.
14313         (m68k_get_reloc_decoration): New static function.
14314         (m68k_output_addr_const_extra): Handle UNSPEC_RELOC16 and
14315         UNSPEC_RELOC32.
14316         (m68k_output_dwarf_dtprel): Implement hook.
14317         (print_operand_address): Handle UNSPEC_RELOC16 adn UNSPEC_RELOC32.
14318         (m68k_libcall_value): Return result in A0 instead of D0 when asked by
14319         m68k_call_* routines.
14320         (sched_attr_op_type): Handle TLS symbols.
14321         (gt-m68k.h): Include.
14322         * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
14323         (LEGITIMATE_PIC_OPERAND_P): Support TLS.
14324
14325 2009-05-18  Martin Jambor  <mjambor@suse.cz>
14326
14327         * ipa-prop.c (ipa_check_stmt_modifications): Removed.
14328         (visit_store_addr_for_mod_analysis): New function.
14329         (ipa_detect_param_modifications): Use walk_stmt_load_store_addr_ops.
14330         (determine_cst_member_ptr): Use gimple_assign_single_p.
14331         (ipa_get_stmt_member_ptr_load_param): Use gimple_assign_single_p.
14332         (ipa_analyze_call_uses): Use !gimple_assign_rhs2 rather than number of
14333         operands.  Don't check number of operands of a NOP_EXPR.
14334
14335 2009-05-18  Eric Fisher  <joefoxreal@gmail.com>
14336
14337         * doc/tree-ssa.texi (SSA Operands): Fix a mistake.
14338
14339 2009-05-17  Manuel López-Ibáñez  <manu@gcc.gnu.org>
14340
14341         PR c/40172
14342         * c-common.c (warn_logical_operator): Don't warn if one of
14343         expression isn't always true or false.
14344
14345 2009-05-17  Kai Tietz  <kai.tietz@onevision.com>
14346
14347         * config/i386/biarch32.h: New file.
14348         * config.gcc: Add for target i386-w64-* the biarch32.h to tm_file.
14349
14350 2009-05-17  Adam Nemet  <anemet@caviumnetworks.com>
14351
14352         * config/mips/mips.md (*zero_extend<mode>_trunchi,
14353         *zero_extend<mode>_truncqi): Merge these into ...
14354         (*zero_extend<GPR:mode>_trunc<SHORT:mode>): ... this new pattern.
14355         Name the pattern following this as *zero_extendhi_truncqi.
14356
14357 2009-05-16  Brad Lucier  <lucier@math.purdue.edu>
14358
14359         PR middle-end/39301
14360         * hwint.h: Add macro HOST_WIDEST_INT_PRINT.
14361         * bitmap.c (bitmap_descriptor): Make fields HOST_WIDEST_INT.
14362         (output_info): Make field HOST_WIDEST_INT.
14363         (print_statistics): Use HOST_WIDEST_INT_PRINT.
14364         (dump_bitmat_statistics): Same.
14365
14366 2009-05-16  Francois-Xavier Coudert  <fxcoudert@gmail.com>
14367
14368         * config.gcc (use_gcc_stdint):  Set to wrap.
14369         * config/darwin.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
14370         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
14371         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
14372         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
14373         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
14374         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
14375         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
14376         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
14377
14378 2009-05-16  Joseph Myers  <joseph@codesourcery.com>
14379
14380         * config.gcc (mips*-*-*): Support arch_32, arch_64, tune_32 and
14381         tune_64.
14382         * config/mips/mips.h (MIPS_ABI_DEFAULT, MULTILIB_ABI_DEFAULT):
14383         Move definitions earlier.
14384         (OPT_ARCH64, OPT_ARCH32): Define.
14385         (OPTION_DEFAULT_SPECS): Add entries for arch_32, arch_64, tune_32
14386         and tune_64.
14387
14388 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
14389
14390         PR target/40153
14391         * arm.md (cstoresi_nltu_thumb1): Use a neg of ltu as the pattern name
14392         implies.
14393
14394 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
14395
14396         * arm.md (movdi2): Copy non-reg values to DImode registers.
14397
14398 2009-05-16  Jakub Jelinek  <jakub@redhat.com>
14399
14400         PR target/39942
14401         * final.c (label_to_max_skip): New function.
14402         (label_to_alignment): Only use LABEL_TO_ALIGNMENT if
14403         CODE_LABEL_NUMBER <= max_labelno.
14404         * output.h (label_to_max_skip): New prototype.
14405         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Renamed to...
14406         (ix86_avoid_jump_mispredicts): ... this.  Don't define if
14407         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.  Update comment.
14408         Handle CODE_LABELs with >= 16 byte alignment or with
14409         max_skip == (1 << align) - 1.
14410         (ix86_reorg): Don't call ix86_avoid_jump_mispredicts if
14411         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.
14412
14413         PR target/39942
14414         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Don't emit second
14415         .p2align 3 if MAX_SKIP is smaller than 7.
14416         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
14417
14418 2009-05-15  Ian Lance Taylor  <iant@google.com>
14419
14420         * alias.c (struct alias_set_entry_d): Rename from struct
14421         alias_set_entry.  Change all uses.
14422         * except.c (struct call_site_record_d): Rename from struct
14423         call_site_record.  Change all uses.
14424         * except.h (struct eh_region_d): Rename from struct eh_region.
14425         Change all uses.
14426         * gcse.c (struct hash_table_d): Rename from struct hash_table.
14427         Change all uses.
14428         * graphite.c (struct ivtype_map_elt_d): Rename fromstruct
14429         ivtype_map_elt.  Change all uses.
14430         (struct rename_map_elt_d): Rename fromstruct rename_map_elt.
14431         Change all uses.
14432         (struct ifsese_d): Rename fromstruct ifsese.  Change all uses.
14433         * graphite.h (struct name_tree_d): Rename from struct name_tree.
14434         Change all uses.
14435         (struct sese_d): Rename from struct sese.  Change all uses.
14436         * omega.h (struct eqn_d): Rename from struct eqn.  Change all uses.
14437         (struct omega_pb_d): Rename from struct omega_pb.  Change all uses.
14438         * optabs.h (struct optab_d): Rename from struct optab.  Change all
14439         uses.
14440         (struct convert_optab_d): Rename from struct convert_optab.
14441         Change all uses.
14442         * tree-pass.h (struct ipa_opt_pass_d): Rename fromstruct
14443         ipa_opt_pass.  Change all uses.
14444         * tree-predcom.c (struct dref_d): Rename from struct dref.  Change
14445         all uses.
14446
14447         * c-decl.c (pushtag): If -Wc++-compat, warn if the tag is already
14448         defined as a typedef.
14449         (grokdeclarator): If -Wc++-compat, warn if a typedef is already
14450         defined as a tag.
14451
14452 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
14453
14454         PR 16302
14455         * fold-const.c (make_range,build_range_check,merge_ranges): Move
14456         declaration to...
14457         (merge_ranges): Returns bool.
14458         * tree.h (make_range): .. to here.
14459         (build_range_check): Likewise.
14460         (merge_ranges): Likewise. Renamed from merge_ranges.
14461         * c-typeck.c (parser_build_binary_op): Update calls to
14462         warn_logical_operator.
14463         * c-common.c (warn_logical_operator): Add new warning.
14464         * c-common.h (warn_logical_operator): Update declaration.
14465
14466 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
14467
14468         * ira-conflicts.c (add_insn_allocno_copies): Fix wrong conditional.
14469
14470 2009-05-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14471
14472         * doc/install.texi: Document MPC requirements, flags etc.
14473
14474         * builtins.c (do_mpc_arg1, fold_builtin_ccos): New.
14475         (fold_builtin_cexp): Ensure we get a complex REAL_TYPE.
14476         Evaluate constant arguments.
14477         (fold_builtin_carg): Ensure we get a complex REAL_TYPE.
14478         (fold_builtin_1): Likewise, also evaluate constant arguments.
14479         Remove superfluous break.
14480         (do_mpc_ckconv): New.
14481         * real.h: Include mpc.h.
14482         * toplev.c (print_version): Output MPC version info if available.
14483
14484 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
14485
14486         * fold-const.c (fold_convert_const_real_from_real): Check for overflow.
14487
14488 2009-05-15  H.J. Lu  <hongjiu.lu@intel.com>
14489
14490         * config/i386/i386.c (ix86_reorg): Call optimize_function_for_speed_p
14491         only once.
14492
14493 2009-05-15  Jan Hubicka  <jh@suse.cz>
14494
14495         * doc/invoke.texi (max-early-inliner-iterations): New flag.
14496         * ipa-inline.c (enum inlining_mode): New INLINE_SIZE_NORECURSIVE.
14497         (try_inline): Fix return value.
14498         (cgraph_decide_inlining_incrementally): Honor new value.
14499         (cgraph_early_inlining): Handle indirect inlining.
14500         * params.def (PARAM_EARLY_INLINER_MAX_ITERATIONS): New.
14501
14502 2009-05-15  Jan Hubicka  <jh@suse.cz>
14503
14504         * cgraph.h (struct cgraph_node): Add finalized_by_frotnend flag.
14505         * cgraphunit.c (cgraph_finalize_function): Set it.
14506         (cgraph_expand_function): Use it.
14507
14508 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
14509
14510         * real.c (encode_ieee_half): Define.
14511         (decode_ieee_half): Define.
14512         (ieee_half_format): Define.
14513         (arm_half_format): Define.
14514         * real.h (ieee_half_format): Declare.
14515         (arm_half_format): Declare.
14516
14517 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
14518
14519         * optabs.c (prepare_float_lib_cmp):  Test that the comparison,
14520         swapped, and reversed optabs exist before trying to use them.
14521
14522 2009-05-15  Paul Brook  <paul@codesourcery.com>
14523             Sandra Loosemore  <sandra@codesourcery.com>
14524
14525         * config/arm/arm.c (neon_vector_mem_operand): Handle element/structure
14526         loads.  Allow PRE_DEC.
14527         (output_move_neon): Handle PRE_DEC.
14528         (arm_print_operand): Add 'A' for neon structure loads.
14529         * config/arm/arm-protos.h (neon_vector_mem_operand): Update prototype.
14530         * config/arm/neon.md (neon_mov): Update comment.
14531         * config/arm/constraints.md (Un, Us): Update neon_vector_mem_operand
14532         calls.
14533         (Um): New constraint.
14534
14535 2009-05-15  Jan Hubicka  <jh@suse.cz>
14536
14537         Revert the following patch until testsuite fallout is fixed:
14538         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
14539         * cgraph.h (struct inline_summary): New filed self_wize,
14540         size_inlining_benefit, self_time and time_inlining_benefit.
14541         (struct cgraph_global_info): Replace insns by time ans size fields.
14542         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
14543         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
14544         (ipcp_update_callgraph): Do not touch function bodies.
14545         * ipa-inline.c: Include except.h
14546         (MAX_TIME): New constant.
14547         (overall_insns): Remove
14548         (overall_size, max_benefit): New static variables.
14549         (cgraph_estimate_time_after_inlining): New function.
14550         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
14551         (cgraph_clone_inlined_nodes): Update size.
14552         (cgraph_mark_inline_edge): Update size.
14553         (cgraph_estimate_growth): Use size info.
14554         (cgraph_check_inline_limits): Check size.
14555         (cgraph_default_inline_p): Likewise.
14556         (cgraph_edge_badness): Compute badness based on benefit and size cost.
14557         (cgraph_decide_recursive_inlining): Check size.
14558         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
14559         and times.
14560         (cgraph_decide_inlining): Likewise.
14561         (cgraph_decide_inlining_incrementally): Likewise; honor
14562         PARAM_EARLY_INLINING_INSNS.
14563         (likely_eliminated_by_inlining_p): New predicate.
14564         (estimate_function_body_sizes): New function.
14565         (compute_inline_parameters): Use it.
14566         * except.c (must_not_throw_labels): New function.
14567         * except.h (must_not_throw_labels): Declare.
14568         * tree-inline.c (init_inline_once): Kill inlining_weigths
14569         * tree-ssa-structalias.c: Avoid uninitialized warning.
14570         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
14571         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
14572         (PARAM_INLINE_CALL_COST): Remove.
14573         (PARAM_EARLY_INLINING_INSNS): New.
14574
14575 2009-05-15  Richard Guenther  <rguenther@suse.de>
14576
14577         * tree-ssa-pre.c (eliminate): Use TODO_update_ssa_only_virtuals,
14578         not TODO_update_ssa.
14579
14580 2009-05-15  Richard Guenther  <rguenther@suse.de>
14581
14582         PR tree-optimization/39999
14583         * gimple.h (gimple_expr_type): Use the expression type looking
14584         through useless conversions.
14585         * tree-ssa-sccvn.c (vn_nary_op_lookup_stmt): Use gimple_expr_type.
14586         (vn_nary_op_insert_stmt): Likewise.
14587         (simplify_binary_expression): Likewise.
14588
14589 2009-05-15  Richard Guenther  <rguenther@suse.de>
14590
14591         * common.opt (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
14592         New options, enabled by default.
14593         * doc/invoke.texi (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
14594         Document.
14595         * tree-ssa-forwprop.c (gate_forwprop): Use flag_tree_forwprop.
14596         * tree-ssa-phiprop.c (gate_phiprop): Use flag_tree_phiprop.
14597         * tree-ssa-structalias.c (gate_tree_pta): New function.
14598         (pass_build_alias): Use it.
14599
14600 2009-05-15  Joseph Myers  <joseph@codesourcery.com>
14601
14602         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also
14603         recurse on an invariant address if a conversion from a pointer
14604         type to a wider integer type is involved.
14605
14606 2009-05-15  Jan Hubicka  <jh@suse.cz>
14607
14608         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
14609         * cgraph.h (struct inline_summary): New filed self_wize,
14610         size_inlining_benefit, self_time and time_inlining_benefit.
14611         (struct cgraph_global_info): Replace insns by time ans size fields.
14612         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
14613         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
14614         (ipcp_update_callgraph): Do not touch function bodies.
14615         * ipa-inline.c: Include except.h
14616         (MAX_TIME): New constant.
14617         (overall_insns): Remove
14618         (overall_size, max_benefit): New static variables.
14619         (cgraph_estimate_time_after_inlining): New function.
14620         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
14621         (cgraph_clone_inlined_nodes): Update size.
14622         (cgraph_mark_inline_edge): Update size.
14623         (cgraph_estimate_growth): Use size info.
14624         (cgraph_check_inline_limits): Check size.
14625         (cgraph_default_inline_p): Likewise.
14626         (cgraph_edge_badness): Compute badness based on benefit and size cost.
14627         (cgraph_decide_recursive_inlining): Check size.
14628         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
14629         and times.
14630         (cgraph_decide_inlining): Likewise.
14631         (cgraph_decide_inlining_incrementally): Likewise; honor
14632         PARAM_EARLY_INLINING_INSNS.
14633         (likely_eliminated_by_inlining_p): New predicate.
14634         (estimate_function_body_sizes): New function.
14635         (compute_inline_parameters): Use it.
14636         * except.c (must_not_throw_labels): New function.
14637         * except.h (must_not_throw_labels): Declare.
14638         * tree-inline.c (init_inline_once): Kill inlining_weigths
14639         * tree-ssa-structalias.c: Avoid uninitialized warning.
14640         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
14641         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
14642         (PARAM_INLINE_CALL_COST): Remove.
14643         (PARAM_EARLY_INLINING_INSNS): New.
14644         doc/invoke.texi (max-inline-insns-auto, early-inlining-insns): Update.
14645         (inline-call-cost): Remove.
14646         (early-inlining-insns): New.
14647
14648 2009-05-15  Eric Botcazou  <ebotcazou@adacore.com>
14649
14650         * dbxout.c (dbxout_range_type): Add LOW and HIGH parameters.  Use them
14651         for bounds.
14652         (print_int_cst_bounds_in_octal_p): Likewise.
14653         (dbxout_type): Adjust calls to above functions.  Be prepared to deal
14654         with subtypes.
14655         * dwarf2out.c (base_type_die): Likewise.
14656         (is_subrange_type): Delete.
14657         (subrange_type_die): Add LOW and HIGH parameters.  Use them for bounds.
14658         (modified_type_die): Call subrange_type_for_debug_p on subtypes.
14659         * fold-const.c (fold_truth_not_expr) <CONVERT_EXPR>: Do not strip it
14660         if the destination type is boolean.
14661         (build_range_check): Do not special-case subtypes.
14662         (fold_sign_changed_comparison): Likewise.
14663         (fold_unary): Likewise.
14664         * langhooks-def.h (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define.
14665         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_GET_SUBRANGE_BOUNDS.
14666         * langhooks.h (lang_hooks_for_types): Add get_subrange_bounds.
14667         * tree.c (subrange_type_for_debug_p): New predicate based on the
14668         former is_subrange_type.
14669         * tree.h (subrange_type_for_debug_p): Declare.
14670         * tree-chrec.c (avoid_arithmetics_in_type_p): Delete.
14671         (convert_affine_scev): Remove call to above function.
14672         (chrec_convert_aggressive): Likewise.
14673         * tree-ssa.c (useless_type_conversion_p_1): Do not specifically return
14674         false for conversions involving subtypes.
14675         * tree-vrp.c (vrp_val_max): Do not special-case subtypes.
14676         (vrp_val_min): Likewise.
14677         (needs_overflow_infinity): Likewise.
14678         (extract_range_from_unary_expr): Likewise.
14679
14680 2009-05-15  Paolo Bonzini  <bonzini@gnu.org>
14681
14682         * config/frv/frv.h: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
14683         * config/frv/frv.c: Likewise.
14684         * config/s390/s390.c: Likewise.
14685         * config/sparc/sparc.h: Likewise.
14686         * config/i386/i386.h: Likewise.
14687         * config/i386/i386.c: Likewise.
14688         * config/crx/crx.c: Likewise.
14689         * config/m68hc11/m68hc11.h: Likewise.
14690         * config/iq2000/iq2000.c: Likewise.
14691         * config/mn10300/mn10300.h: Likewise.
14692         * config/mn10300/mn10300.c: Likewise.
14693         * config/m68k/m68k.c: Likewise.
14694         * config/rs6000/rs6000.c: Likewise.
14695         * config/rs6000/xcoff.h: Likewise.
14696         * config/rs6000/linux64.h: Likewise.
14697         * config/rs6000/sysv4.h: Likewise.
14698         * config/score/score3.c: Likewise.
14699         * config/score/score7.c: Likewise.
14700         * config/score/score.c: Likewise.
14701         * config/arm/arm.md: Likewise.
14702         * config/mips/mips.c: Likewise.
14703         * config/mips/mips.md: Likewise.
14704         * config/bfin/bfin.h: Likewise.
14705         * config/pa/pa.c: Likewise.
14706         * config/pa/constraints.md: Likewise.
14707
14708         * config/pdp11/pdp11-protos.h (legitimate_address_p): Delete.
14709         * config/pdp11/pdp11.c (legitimate_address_p): Delete.
14710         * config/pdp11/pdp11.h: Use memory_address_p instead.
14711
14712 2009-05-14  Ian Lance Taylor  <iant@google.com>
14713
14714         * passes.c (finish_optimization_passes): Change i to int.
14715         * plugin.c (plugins_active_p): Change event to int.
14716         (dump_active_plugins): Likewise.
14717         * reginfo.c (invalid_mode_change_p): Change to to unsigned int.
14718         Add cast.
14719         * tree.c (tree_range_check_failed): Change c to unsigned int.
14720         (omp_clause_range_check_failed): Likewise.
14721         (build_common_builtin_nodes): Change mode to int.  Add cast.
14722         * config/ia64/ia64.c (is_emitted): Change r to unsigned int.
14723         (ia64_hard_regno_rename_ok, ia64_eh_uses): Likewise.
14724
14725         * c-typeck.c (build_unary_op): If -Wc++-compat, warn about using
14726         ++ or -- with a variable of enum type.
14727
14728 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
14729
14730         PR driver/40144
14731         * opts.c (common_handle_option): Add OPT_fcse_skip_blocks as a no-op.
14732
14733 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
14734
14735         * store-motion.c: Do not include params.h
14736         * Makefile.in: Fix dependencies for various files.
14737
14738 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
14739
14740         * auto-inc-dec.c: Fix pass description, remove apparent
14741         accidental duplication.
14742
14743 2009-05-14  H.J. Lu  <hongjiu.lu@intel.com>
14744
14745         PR middle-end/40147
14746         * ipa-utils.h (memory_identifier_string): Moved to ...
14747         * tree.h (memory_identifier_string): Here.  Add GTY(()).
14748
14749 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
14750
14751         * doc/tm.texi (TARGET_LEGITIMATE_ADDRESS_P): Refer mainly to this
14752         in the former documentation of...
14753         (GO_IF_LEGITIMATE_ADDRESS): ... this.
14754         * ira-conflicts.c (get_dup_num): Use address_operand.
14755         * targhooks.c (default_legitimate_address_p): New.
14756         * targhooks.h (default_legitimate_address_p): New.
14757         * reload.c (strict_memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]:
14758         Call hook.
14759         * recog.c (memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]: Call hook.
14760         * target.h (struct target): Add legitimate_address_p.
14761         * target-def.h (TARGET_LEGITIMATE_ADDRESS_P): New.
14762         (TARGET_INITIALIZER): Include it.
14763
14764         * config/alpha/alpha.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14765         * config/alpha/alpha-protos.h (alpha_legitimate_address_p): Remove.
14766         * config/alpha/alpha.c (alpha_legitimate_address_p): Make static.
14767         (TARGET_LEGITIMATE_ADDRESS_P): New.
14768
14769         * config/frv/frv.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14770         (REG_OK_STRICT_P): Delete.
14771         * config/frv/frv-protos.h (frv_legitimate_address_p): Rename to...
14772         (frv_legitimate_address_p_1): ... this.
14773         * config/frv/frv.c (frv_legitimate_address_p): Forward to...
14774         (frv_legitimate_address_p_1): ... the renamed old
14775         frv_legitimate_address_p.
14776         * config/frv/predicates.md: Adjust calls to frv_legitimate_address_p.
14777         (TARGET_LEGITIMATE_ADDRESS_P): New.
14778
14779         * config/s390/s390.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14780         * config/s390/s390-protos.h (legitimate_address_p): Remove.
14781         * config/s390/s390.c (legitimate_address_p): Rename to...
14782         (s390_legitimate_address_p): ... this, make static.
14783         (legitimize_address): Adjust call.
14784         (TARGET_LEGITIMATE_ADDRESS_P): New.
14785         * config/s390/constraints.md ("e"): Call strict_memory_address_p.
14786
14787         * config/m32c/m32c.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14788         * config/m32c/m32c-protos.h (m32c_legitimate_address_p): Remove.
14789         * config/m32c/m32c.c (m32c_legitimate_address_p): Make static.
14790         (TARGET_LEGITIMATE_ADDRESS_P): New.
14791
14792         * config/spu/spu.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14793         * config/spu/spu-protos.h (spu_legitimate_address): Remove.
14794         * config/spu/spu.c (spu_legitimate_address): Rename to...
14795         (spu_legitimate_address_p): ... this, make static.
14796         (TARGET_LEGITIMATE_ADDRESS_P): New.
14797
14798         * config/sparc/sparc.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14799         * config/sparc/sparc-protos.h (legitimate_address_p): Remove.
14800         * config/sparc/sparc.c (legitimate_address_p): Rename to...
14801         (sparc_legitimate_address_p): ... this, make static and return bool.
14802         (legitimize_address): Adjust call.
14803         (TARGET_LEGITIMATE_ADDRESS_P): New.
14804
14805         * config/i386/i386.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14806         * config/i386/i386-protos.h (legitimate_address_p): Remove.
14807         * config/i386/i386.c (legitimate_address_p): Rename to...
14808         (ix86_legitimate_address_p): ... this, make static.
14809         (constant_address_p): Move after it, adjust call.
14810         (TARGET_LEGITIMATE_ADDRESS_P): New.
14811
14812         * config/avr/avr.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14813         * config/avr/avr-protos.h (legitimate_address_p): Remove.
14814         * config/avr/avr.c (legitimate_address_p): Rename to...
14815         (avr_legitimate_address_p): ... this, make static.
14816         (legitimize_address): Adjust call.
14817         (TARGET_LEGITIMATE_ADDRESS_P): New.
14818
14819         * config/crx/crx.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14820         * config/crx/crx-protos.h (crx_legitimate_address_p): Remove.
14821         * config/crx/crx.c (crx_legitimate_address_p): Make static.
14822         (TARGET_LEGITIMATE_ADDRESS_P): New.
14823
14824         * config/xtensa/xtensa.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14825         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): Remove.
14826         * config/xtensa/xtensa.c (xtensa_legitimate_address_p): Make static.
14827         (TARGET_LEGITIMATE_ADDRESS_P): New.
14828
14829         * config/stormy16/stormy16.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14830         * config/stormy16/stormy16-protos.h (xstormy16_legitimate_address_p):
14831         Remove.
14832         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p):
14833         Make static.
14834         (TARGET_LEGITIMATE_ADDRESS_P): New.
14835
14836         * config/m68hc11/m68hc11.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14837         * config/m68hc11/m68hc11-protos.h (m68hc11_go_if_legitimate_address):
14838         Remove.
14839         * config/m68hc11/m68hc11.c (m68hc11_go_if_legitimate_address):
14840         Rename to...
14841         (m68hc11_legitimate_address_p): ... this, make static.
14842         (go_if_legitimate_address_internal): Rename to...
14843         (m68hc11_legitimate_address_p_1): ... this.
14844         (legitimize_address): Adjust call.
14845         (TARGET_LEGITIMATE_ADDRESS_P): New.
14846
14847         * config/iq2000/iq2000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14848         * config/iq2000/iq2000-protos.h (iq2000_legitimate_address_p): Remove.
14849         * config/iq2000/iq2000.c (iq2000_legitimate_address_p): Make static.
14850         (TARGET_LEGITIMATE_ADDRESS_P): New.
14851
14852         * config/mn10300/mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14853         * config/mn10300/mn10300-protos.h (legitimate_address_p): Remove.
14854         * config/mn10300/mn10300.c (legitimate_address_p): Rename to...
14855         (mn10300_legitimate_address_p): ... this, make static.
14856         (TARGET_LEGITIMATE_ADDRESS_P): New.
14857
14858         * config/m68k/m68k.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14859         * config/m68k/m68k-protos.h (m68k_legitimate_address_p): Remove.
14860         * config/m68k/m68k.c (m68k_legitimate_address_p): Make static.
14861         (TARGET_LEGITIMATE_ADDRESS_P): New.
14862
14863         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14864         (REG_OK_STRICT_FLAG, REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P): Delete.
14865         (INT_REG_OK_FOR_BASE_P, INT_REG_OK_FOR_INDEX_P): Move above.
14866         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14867         * config/rs6000/rs6000-protos.h (rs6000_legitimate_address): Remove.
14868         * config/rs6000/rs6000.c (rs6000_legitimate_address): Rename to...
14869         (rs6000_legitimate_address_p): ... this, make static.
14870         (TARGET_LEGITIMATE_ADDRESS_P): New.
14871         (REG_MODE_OK_FOR_BASE_P): Delete.
14872         (rs6000_legitimize_reload_address): Use INT_REG_OK_FOR_BASE_P.
14873
14874         * config/picochip/picochip.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14875         * config/picochip/picochip-protos.h (picochip_legitimate_address_p):
14876         Delete.
14877         * config/picochip/picochip.c (picochip_legitimate_address_p): Make
14878         static, adjust types.
14879         (TARGET_LEGITIMATE_ADDRESS_P): New.
14880
14881         * config/score/score.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14882         * config/score/score.c (score_address_p): Rename to...
14883         (score_legitimate_address_p): ... this.
14884         (TARGET_LEGITIMATE_ADDRESS_P): New.
14885         * config/score/score3.c (score3_address_p): Rename to...
14886         (score3_legitimate_address_p): ... this.
14887         * config/score/score7.c (score7_address_p): Rename to...
14888         (score7_legitimate_address_p): ... this.
14889
14890         * config/arm/arm.h (ARM_GO_IF_LEGITIMATE_ADDRESS,
14891         THUMB2_GO_IF_LEGITIMATE_ADDRESS, THUMB1_GO_IF_LEGITIMATE_ADDRESS,
14892         GO_IF_LEGITIMATE_ADDRESS): Delete.
14893         * config/arm/arm-protos.h (thumb1_legitimate_address_p,
14894         thumb2_legitimate_address_p): Delete.
14895         (arm_legitimate_address_p): Rename to...
14896         (arm_legitimate_address_outer_p): ... this.
14897         * config/arm/constraints.md ("Uq"): Adjust call.
14898         * config/arm/predicates.md (arm_extendqisi_mem_op): Likewise.
14899         * config/arm/arm.c (arm_legitimate_address_p): New, rename old one
14900         to...
14901         (arm_legitimate_address_outer_p): ... this.
14902         (thumb1_legitimate_address_p, thumb2_legitimate_address_p): Make
14903         static.
14904         (TARGET_LEGITIMATE_ADDRESS_P): New.
14905
14906         * config/mips/mips.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14907         * config/mips/mips-protos.h (mips_legitimate_address_p): Remove.
14908         * config/mips/mips.c (mips_legitimate_address_p): ... Make static.
14909         (TARGET_LEGITIMATE_ADDRESS_P): New.
14910
14911         * config/vax/vax.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14912         * config/vax/vax-protos.h (legitimate_address_p): Remove.
14913         * config/vax/vax.c (legitimate_address_p): Rename to...
14914         (vax_legitimate_address_p): ... this, make static.
14915         (TARGET_LEGITIMATE_ADDRESS_P): New.
14916
14917         * config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14918         * config/h8300/h8300-protos.h (h8300_legitimate_address_p): Remove.
14919         * config/h8300/h8300.c (h8300_legitimate_address_p): ... Make static.
14920         (TARGET_LEGITIMATE_ADDRESS_P): New.
14921
14922         * config/mmix/mmix.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14923         * config/mmix/mmix-protos.h (mmix_legitimize_address): Remove.
14924         * config/mmix/mmix.c (mmix_legitimate_address): Rename to...
14925         (mmix_legitimate_address_p): ... this, make static.
14926         (TARGET_LEGITIMATE_ADDRESS_P): New.
14927
14928         * config/bfin/bfin.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14929         * config/bfin/bfin-protos.h (bfin_legitimate_address_p): Remove.
14930         * config/bfin/bfin.c (bfin_legitimate_address_p): ... Make static.
14931         (TARGET_LEGITIMATE_ADDRESS_P): New.
14932
14933 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
14934
14935         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Remove handling
14936         of MODE_COMPLEX_INT.
14937
14938 2009-05-14  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
14939
14940         * config/alpha/alpha.c (alpha_initialize_trampoline): Change 0 to
14941         LCT_NORMAL in function call.
14942         * mips-tdump.c (print_file_desc): Add cast to enum type.
14943         * mips-tfile.c (add_ext_symbol): Add casts to enum types.
14944         (mark_stabs): Add casts to enum types.
14945         (parse_stabs_common): Add casts to enum types.
14946
14947 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
14948
14949         * config/mips/mips.c (mips_print_operand) <REG, MEM, default>:
14950         Check for invalid values of LETTER.
14951
14952 2009-05-13  Taras Glek  <tglek@mozilla.com>
14953
14954         * attribs.c (register_attribute): moved out attribute registration
14955         into register_attribute.
14956         * doc/plugins.texi: Documented register_attribute and
14957         PLUGIN_ATTRIBUTES.
14958         * gcc-plugin.h: Added forward decl for register_attribute.
14959         * gcc-plugin.h (plugins_event): Added PLUGIN_ATTRIBUTES.
14960         * plugin.c (register_callback, invoke_plugin_callbacks): Added
14961         PLUGIN_ATTRIBUTES boilerplate.
14962
14963 2009-05-14  Dave Korn  <dave.korn.cygwin@gmail.com>
14964
14965         * config/i386/msformat-c.c (ms_printf_length_specs):  Use enumeration
14966         values even in sentinel and empty entries.
14967         (ms_printf_flag_specs):  Likewise.
14968         (ms_scanf_flag_specs):  Likewise.
14969         (ms_strftime_flag_specs):  Likewise.
14970         (ms_print_char_table):  Likewise.
14971         (ms_scan_char_table):  Likewise.
14972         (ms_time_char_table):  Likewise.
14973
14974 2009-05-13  Doug Kwan  <dougkwan@google.com>
14975
14976         * tree-ssa-sccvn.c (compare_ops): Stabilize qsort.
14977
14978 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
14979
14980         * config/mips/mips.md (store): Add attributes for QI and HI.
14981         Update comment.
14982         (truncdisi2, truncdihi2, truncdiqi2): Merge these into ...
14983         (truncdi<mode>2): ... this new pattern.
14984
14985 2009-05-13  Brad Hards  <bradh@kde.org>
14986
14987         * Makefile.in (TEXI_GCCINT_FILES): Add plugins.texi.
14988
14989 2009-05-14  Jakub Jelinek  <jakub@redhat.com>
14990             Ben Elliston <bje@au.ibm.com>
14991
14992         PR middle-end/40035
14993         * dse.c (check_mem_read_rtx): Guard against width == -1.
14994
14995 2009-05-13  Michael Matz  <matz@suse.de>
14996
14997         PR middle-end/39976
14998         * tree-outof-ssa.c (maybe_renumber_stmts_bb): New function.
14999         (trivially_conflicts_p): New function.
15000         (insert_backedge_copies): Use it.
15001
15002 2009-05-13  Janis Johnson  <janis187@us.ibm.com>
15003
15004         * c-pragma.c (enum pragma_switch_t): Prefix constants with PRAGMA_.
15005         (handle_stdc_pragma): Use new enum constant names.
15006         (handle_pragma_float_const_decimal64): Ditto.
15007
15008 2009-05-13  Ian Lance Taylor  <iant@google.com>
15009
15010         * Makefile.in (build/gencheck.o): Depend upon all-tree.def, not
15011         tree.def.
15012
15013 2009-05-13  Nathan Sidwell  <nathan@codesourcery.com>
15014
15015         * config/m68k/t-uclinux (M68K_MLIB_CPU): Check for FL_UCLINUX.
15016         * config/m68k/m68k-devices.def: Add FL_UCLINUX to 68020 and 54455
15017         multilibs.
15018         * config/m68k/m68k.h (FL_UCLINUX): Define.
15019
15020 2009-05-13  Jan Hubicka  <jh@suse.cz>
15021
15022         * options.c (gfc_post_options): -fwhole-program imply -fwhole-file.
15023
15024 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
15025
15026         * config/sh/sh.h (OVERRIDE_OPTIONS): Clear flag_schedule_insns
15027         unless -fschedule-insns is specified.
15028
15029 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
15030
15031         PR target/39561
15032         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Don't set
15033         TARGET_EXPAND_CBRANCHDI4.
15034         * config/sh/sh.md (cbranchdi4): Don't check TARGET_EXPAND_CBRANCHDI4.
15035         * config/sh/sh.opt (mexpand-cbranchdi): Remove.
15036         (cmpeqdi): Fix comment.
15037
15038 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
15039
15040         * config/sh/sh-protos.h (sh_legitimate_index_p): Declare.
15041         (sh_legitimate_address_p): Likewise.
15042         * config/sh/sh.c (sh_legitimate_index_p): New.
15043         (sh_legitimate_address_p): Likewise.
15044         * config/sh/sh.h (REG_OK_FOR_BASE_P): Add STRICT parameter.
15045         (REG_OK_FOR_INDEX_P, SUBREG_OK_FOR_INDEX_P): Likewise.
15046         (MODE_DISP_OK_4, MODE_DISP_OK_8): Remove.
15047         (MAYBE_BASE_REGISTER_RTX_P): New macro.
15048         (MAYBE_INDEX_REGISTER_RTX_P): Likewise.
15049         (BASE_REGISTER_RTX_P): Use MAYBE_BASE_REGISTER_RTX_P.
15050         (INDEX_REGISTER_RTX_P): Use MAYBE_INDEX_REGISTER_RTX_P.
15051         (GO_IF_LEGITIMATE_INDEX): Use sh_legitimate_index_p.
15052         (GO_IF_LEGITIMATE_ADDRESS): Use sh_legitimate_address_p.
15053
15054 2009-05-12  Jan Hubicka  <jh@suse.cz>
15055
15056         * tree-inline.c (estimate_operator_cost): Add operands;
15057         when division happens by constant, it is cheap.
15058         (estimate_num_insns): Loads and stores are not having cost of 0;
15059         EH magic stuff is cheap; when computing runtime cost of switch,
15060         use log2 base of amount of its cases; builtin_expect has cost of 0;
15061         compute cost for moving return value of call.
15062         (init_inline_once): Initialize time_based flags.
15063         * tree-inline.h (eni_weights_d): Add time_based flag.
15064
15065 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
15066
15067         * df-core.c: Update head documentation.
15068
15069 2009-05-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
15070
15071         PR bootstrap/40118
15072         * rs6000.c (rs6000_generate_compare): Use op1b instead of
15073         shadowing exisiting variable op1.
15074
15075 2009-05-12  Uros Bizjak  <ubizjak@gmail.com>
15076
15077         PR target/37179
15078         * config/i386/driver-i386.c (processor_signatures): New enum.
15079         (SIG_GEODE): Move from vendor_signatures to processor_signatures.
15080         (host_detect_local_cpu): For SIG_AMD vendor, check for SIG_GEODE
15081         processor signature to detect geode processor.
15082
15083 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
15084
15085         Revert:
15086
15087         2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
15088
15089         * optabs.c (prepare_cmp_insn): Temporarily disable test that
15090         causes spurious differences between trunk and cond-optab branch.
15091
15092 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
15093
15094         * dojump.c (compare_from_rtx): Delete.
15095         * expmed.c (emit_store_flag): Only try cstore_optab.  Canonicalize
15096         any MODE_CC mode to the cstorecc4 pattern.  Use prepare_operand, fail
15097         if the comparison does not satisfy the predicate; test predicates for
15098         operands 2 and 3 of a cstore pattern.  Don't try cstore optab
15099         further if one existing pattern fails.
15100         * expr.h (compare_from_rtx): Delete.
15101         (prepare_operand): Declare it.
15102         * optabs.c: Change "lib call" to "libcall" throughout.
15103         (bcc_gen_fctn, setcc_gen_code, trap_rtx,
15104         HAVE_conditional_trap, emit_cmp_insn): Delete.
15105         (can_compare_p): Delete cmp_optab case.
15106         (prepare_float_lib_cmp): Return an rtx and a machine mode.
15107         Accept other parameters by value.
15108         (prepare_operand): Make non-static.
15109         (prepare_cmp_insn): Return an rtx and a machine mode.  Accept
15110         other parameters by value.  Try to widen operands here based on
15111         an optab_methods argument and looking at cbranch_optab.
15112         (emit_cmp_and_jump_insn_1): Accept test and mode, remove widening
15113         loop.  Use cbranch_optab directly.
15114         (emit_cmp_and_jump_insns): Fix comment.  Adjust call to
15115         prepare_cmp_insn and emit_cmp_and_jump_insn_1, remove obsolete
15116         assertion.
15117         (emit_conditional_move, emit_conditional_add): Inline what's needed
15118         of compare_from_rtx, using new prepare_cmp_insn for the rest.
15119         (init_optabs): Init cmp_optab with UNKNOWN, cbranch_optab
15120         with COMPARE.  Move cmov_optab and cstore_optab above
15121         with cbranch_optab, move cmp_optab down with ucmp_optab,
15122         remove tst_otpab.  Do not initialize trap_rtx.
15123         (gen_cond_trap): Do it here.  Use ctrap_optab.  Test predicate
15124         for trap code.  Do not check HAVE_conditional_trap.  Use
15125         prepare_cmp_insn.  Accept no predicate for operand 3.
15126         * optabs.h (OTI_cmp): Mark as used only for libcalls.
15127         (OTI_ctrap, ctrap_optab): New.
15128         (tst_optab): Delete.
15129         (bcc_gen_fctn, setcc_gen_code, emit_cmp_insn): Delete.
15130         * ifcvt.c (find_if_header): Replace HAVE_conditional_trap
15131         with lookup of ctrap_optab.
15132         * genopinit.c (cmp_optab, tst_optab, bcc_gen_fctn, setcc_gen_code):
15133         Delete.
15134         (ctrap_optab): New.
15135
15136         * combine.c (combine_simplify_rtx, simplify_set): Do not
15137         special case comparing against zero for cc0 machines.
15138         * simplify-rtx.c (simplify_binary_operation_1): Never remove
15139         COMPARE on cc0 machines.
15140         (simplify_relational_operation): Return a new expression when
15141         a COMPARE could be removed.
15142         * final.c (final_scan_insn): Compare cc_status values
15143         against LHS of a (compare FOO (const_int 0)) cc0 source.
15144         Also check if cc_status.value is the full compare.
15145
15146         * doc/md.texi (bCC, sCC, tstMM, cmpMM): Delete.
15147         (cstoreMM4): Document.
15148         (conditional_trap): Document ctrapMM4 instead.
15149         (sync_compare_and_swapMM): Refer to cbranchcc4.
15150         (Dependent Patterns): Eliminate obsolete information referring to
15151         the old jump optimization phase.
15152         (Canonicalization): Include cbranchcc4 case, omit canonicalization
15153         of compares with 0 on cc0 machines.
15154         (Jump Patterns): Refer to MODE_CC jump patterns preferably,
15155         avoiding references to cc0.  Remove text about storing operands
15156         in cmpMM.
15157         * doc/tm.texi (Condition Codes): Include blurb on different
15158         condition code representations, separate into subsections for
15159         CC0, MODE_CC and conditional execution.
15160
15161         * config/alpha/alpha-protos.h (alpha_emit_conditional_branch,
15162         alpha_emit_setcc): Accept operands and a machine mode.
15163         * config/alpha/alpha.c (alpha_emit_conditional_branch):
15164         Get code/op0/op1 from operands, use machine mode argument
15165         instead of alpha_compare.fp_p.  Emit the branch here.
15166         (alpha_emit_setcc): Likewise, and return boolean.
15167         (alpha_emit_conditional_move): Likewise.  Assert that
15168         cmp_op_mode == cmp_mode, and simplify accordingly.
15169         * config/alpha/alpha.h (struct alpha_compare, alpha_compare): Delete.
15170         * config/alpha/alpha.md (cmpdf, cmptf, cmpdi, bCC, sCC): Delete.
15171         (cbranchdf4, cbranchtf4, cbranchdi4, cstoredf4, cstoretf4,cstoredi4):
15172         Delete.
15173         (stack probe test): Use cbranchdi4.
15174         * config/alpha/predicates.md (alpha_cbranch_operator): New.
15175
15176         * config/arc/arc.c (gen_compare_reg): Do not emit cmp.
15177         * config/arc/arc.h (movsicc, movsfcc): Use it.
15178         (movdicc, *movdicc_insn, movdfcc, *movdfcc_insn): Remove.
15179         (cbranchsi4, cstoresi4): New.
15180         (cmpsi, bCC and sCC expanders): Remove.
15181
15182         * config/arm/arm.c (arm_compare_op0, arm_compare_op1): Delete.
15183         * config/arm/arm.h (arm_compare_op0, arm_compare_op1): Delete.
15184         * config/arm/predicates.md (arm_comparison_operator): Only include
15185         floating-point operators if there is a hardware floating-point unit.
15186         * config/arm/arm.md (cbranchsi4, cstoresi4): Enable for TARGET_32BIT,
15187         deferring to cbranch_cc and cstore_cc respectively.
15188         (cbranchsf4, cbranchdf4, cbranchdi4, cstoresf4, cstoredf4, cstoredi4,
15189         cbranch_cc, cstore_cc): New.
15190         (movsicc, movsfcc, movdfcc): Do not use arm_compare_op0 and
15191         arm_compare_op1.
15192         (bCC, sCC, cmpsi, cmpsf, cmpdf, cmpdi): Delete.
15193
15194         * config/avr/avr-protos.h (out_tstsi, out_tsthi): Adjust prototype.
15195         * config/avr/avr.c (out_tstsi, out_tsthi): Get the tested operand
15196         as an argument.
15197         (adjust_insn_length): Adjust calls.
15198         (avr_reorg): Handle (compare (foo) (const_int 0)).
15199         * config/avr/avr.md (tstqi, tsthi, tstsi): Remove.
15200         (*negated_tstqi, *negated_tsthi, *negated_tstsi): Unmacroize.
15201         (*reversed_tsthi, *reversed_tstsi): Add a scratch for simplicity.
15202         (cmpqi, cmphi, cmpsi): Prepend asterisk, fuse tst[qhs]i here.
15203         (bCC): Remove.
15204         (cbranchqi4, cbranchhi4, cbranchsi4): New.
15205         (tst -> sbrc/sbrs peephole2, cpse peephole): Wrap RHS with COMPARE.
15206
15207         * config/bfin/bfin.md (cmpbi, cmpsi, bCC, sCC): Delete.
15208         (cbranchsi4, cstorebi4, cstoresi4): New.
15209         (movbisi): This insn is duplicate, split it to zero_extend.
15210         * config/bfin/bfin.c (bfin_compare_op0, bfin_compare_op1): Delete
15211         (bfin_gen_compare): Do not use them.  Emit VOIDmode SET, not BImode.
15212         (bfin_optimize_loop): Use cbranch expander.
15213         * config/bfin/bfin.h (bfin_compare_op0, bfin_compare_op1): Delete.
15214         * config/bfin/predicates.md (bfin_cbranch_operator): Rename to...
15215         (bfin_bimode_comparison_operator): ... this.
15216         (bfin_direct_comparison_operator): New.
15217
15218         * config/cris/cris.c (cris_normal_notice_update_cc): Look
15219         inside (compare FOO (const_int 0)).
15220         (cris_rtx_costs): Handle ZERO_EXTRACT.
15221         * config/cris/cris.md (tstdi, tst<mode>, cmpdi): Delete.
15222         (*tstdi_non_v32): Fold in *cmpdi_non_v32.
15223         (*tstdi_v32): Delete.
15224         (*cmpdi_non_v32): Add M alternative for operand 1.
15225         (cmpsi, cmp<mode>): Make private.
15226         (*tstsi, *tst<mode>_cmp, *tst<mode>_non_cmp, *btst): Wrap LHS
15227         with COMPARE.
15228         (cbranch<mode>4, cbranchdi4, cstore<mode>4): New.
15229
15230         * config/crx/crx.md (cstore<mode>4, cbranchcc4): New.
15231         (cmp<mode>, bCOND_internal, b<code>, s<code>): Delete.
15232         (cbranch<mode>4, sCOND_internal): Use ordered_comparison_operator.
15233         (cc_reg_operand): New.
15234         (any_cond): Delete.
15235         * config/crx/crx.c (crx_compare_op0, crx_compare_op1,
15236         crx_expand_compare, crx_expand_branch, crx_expand_scond): Delete.
15237         * config/crx/crx.h (crx_compare_op0, crx_compare_op1): Delete.
15238         * config/crx/crx-protos.h (crx_expand_compare, crx_expand_branch,
15239         crx_expand_scond): Delete.
15240
15241         * config/fr30/fr30.md (cmp<mode>, bCC): Delete.
15242         (cbranchsi4): New.
15243         * config/fr30/fr30.c (fr30_compare_op0, fr30_compare_op1): Delete
15244         * config/fr30/fr30.h (fr30_compare_op0, fr30_compare_op1): Delete.
15245
15246         * config/frv/frv.md (cbranchsi4, cbranchsf4, cbranchdf4,
15247         cstoresi4, cstoresf4, cstoredf4): New.
15248         (cmpdi, cmpsi, cmpsf, cmpdf, bCC, sCC): Remove.
15249         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
15250         Receive the entire operands array.
15251         * config/frv/frv.h (frv_compare_op0, frv_compare_op1): Delete.
15252         * config/frv/frv.c (frv_compare_op0, frv_compare_op1): Delete.
15253         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
15254         Get test/op0/op1 from the operands array.
15255         (frv_emit_cond_move): Get test/op0/op1 from the test_rtx.
15256
15257         * config/h8300/h8300-protos.h (h8300_expand_branch): Accept operands.
15258         (h8300_expand_store): New.
15259         * config/h8300/h8300.c (h8300_rtx_costs): Handle (compare FOO
15260         (const_int 0)).
15261         (h8300_expand_branch): Emit compare here.  Adjust for new arguments.
15262         (h8300_expand_store): New.
15263         * config/h8300/h8300.md (btst combine patterns): Wrap with COMPARE
15264         or do not try to produce (set (cc0) REG).
15265         (peepholes): Wrap arguments with COMPARE.  Add a peephole to
15266         change a compare into a move to a scratch register.  Disable some
15267         peepholes when comparing with zero.
15268         (tstsi, tsthi, tstsi, cmpqi): Make private.
15269         (cmphi): Delete.
15270         (bCC, sCC): Delete.
15271         (cbranchqi4, cbranchhi4, cbranchsi4, cstoreqi4, cstorehi4,
15272         cstoresi4): New.
15273
15274         * config/i386/i386.c (ix86_expand_int_movcc, ix86_expand_int_addcc,
15275         ix86_expand_fp_movcc): Set ix86_compare_op0 and ix86_compare_op1.
15276         (ix86_emit_i387_log1p): Use gen_cbranchxf4.
15277         (ix86_emit_i387_log1p): Use cbranchxf2.
15278         (ix86_expand_setcc): Return void.
15279         * config/i386/i386-protos.h (ix86_expand_setcc): Return void.
15280         * config/i386/i386.md (cmpti, cmpdi, cmpsi, cmphi, cmpqi, cmpxf,
15281         cmp<MODEF>, cmpcc): Remove.
15282         (cbranchti4, cbranchdi4, cbranchsi4, cbranchhi4, cbranchqi4,
15283         cbranchxf4, cbranch<MODEF>4, cbranchcc4, cstoredi4, cstoresi4,
15284         cstorehi4, cstoreqi4, cstorexf4, cstore<MODEF>4, cstorecc): New.
15285         (sCC and bCC expanders): Remove.
15286         (stack_protect_test): Use cbranchcc4.
15287
15288         * config/ia64/ia64-protos.h (ia64_compare_op0, ia64_compare_op1):
15289         Delete.
15290         (ia64_expand_compare): Accept three rtx by reference and return void.
15291         * config/ia64/ia64.c (ia64_compare_op0, ia64_compare_op1): Delete.
15292         (ia64_expand_compare): Replace op0/op1 with *op0/*op1.  Get code
15293         from *expr.  Update *expr with the BImode comparison to do.
15294         * config/ia64/ia64.md (cmpbi, cmpsi, cmpdi, cmpsf, cmpdf, cmpxf,
15295         cmptf, bCC, sCC, conditional_trap): Delete.
15296         (cbranchbi4, cbranchsi4, cbranchdi4, cbranchsf4, cbranchdf4,
15297         cbranchxf4, cbranchtf4, cstorebi4, cstoresi4, cstoredi4, cstoresf4,
15298         cstoredf4, cstorexf4, cstoretf4, ctrapbi4, ctrapsi4, ctrapdi4,
15299         ctrapsf4, ctrapdf4, ctrapxf4, ctraptf4): New.
15300         * config/ia64/predicates.md (ia64_cbranch_operator): New.
15301
15302         * config/iq2000/iq2000-protos.h (gen_conditional_branch): Change
15303         type of last argument.
15304         * config/iq2000/iq2000.c (branch_cmp, branch_type): Remove.
15305         (gen_conditional_branch): Get code/cmp0/cmp1 from operands,
15306         use machine mode argument instead of branch_type.  Remove dead
15307         code for floating-point comparisons.
15308         * config/iq2000/iq2000.h (branch_cmp, branch_type): Remove.
15309         * config/iq2000/iq2000.md (cmpsi, cmpdi, cmpsf, cmpdf, tstsi, bCC):
15310         Remove.
15311         (cbranchsi4, cstoresi4): New.
15312         * config/iq2000/predicates.md (reg_or_const_operand): New.
15313
15314         * config/m32c/m32c.md (cbranch splitter): Use match_op_dup.
15315         * config/m32c/m32c.md (any_cond, gl_cond): Delete.
15316         (b<code>_op): Rewrite to...
15317         (bcc_op): ... this, using match_operator.
15318         (s<code>_op): Rewrite to...
15319         (scc_op): ... this, using match_operator.
15320         (s<code>_24_op): Rewrite to...
15321         (scc_op_24): ... this, using match_operator.
15322         (s<code>_<mode>): Rewrite to...
15323         (cstore<mode>4): ... this, using match_operator.
15324         (s<code>_<mode>_24): Rewrite to...
15325         (cstore<mode>4_24): ... this, using match_operator.
15326         * config/m32c/m32c-protos.h (m32c_cmp_flg_0, m32c_pend_compare,
15327         m32c_unpend_compare, m32c_expand_scc): Delete.
15328         * config/m32c/m32c.c (compare_op0, compare_op1, m32c_cmp_flg_0,
15329         m32c_pend_compare, m32c_unpend_compare, m32c_expand_scc): Delete.
15330         (m32c_expand_movcc): Change NE to EQ if necessary.
15331         (m32c_init_libfuncs): Modify cstore optab instead of setcc_gen_code.
15332
15333         * config/m32r/m32r-protos.h (gen_cond_store): New.
15334         * config/m32r/m32r.c (m32r_compare_op0, m32r_compare_op1): Delete.
15335         (gen_cond_store): New, from sCC patterns.
15336         (m32r_expand_block_move): Use cbranchsi4.
15337         * config/m32r/m32r.h (m32r_compare_op0, m32r_compare_op1): Delete.
15338         * config/m32r/m32r.md (cmpsi, bCC, sCC): Delete.
15339         (cbranchsi4, cstoresi4): New.
15340
15341         * config/m68hc11/m68hc11.c (m68hc11_compare_op0, m68hc11_compare_op1):
15342         Delete.
15343         (m68hc11_rtx_costs_1, m68hc11_rtx_costs): Handle ZERO_EXTRACT.
15344         (m68hc11_notice_update_cc): Look into a compare with 0.
15345         * config/m68hc11/m68hc11.h (m68hc11_compare_op0, m68hc11_compare_op1):
15346         Delete.
15347         * config/m68hc11/m68hc11.md (tstsi, tsthi, tstqi, cmpsi,
15348         cmphi, cmpqi, bCC): Delete.
15349         (cbranchsi4, cbranchhi4, cbranchqi4): New.
15350         (tstqi_1, tstqi_z_used, tstqi_1, bitcmpqi, bitcmpqi_z_used,
15351         bitcmpqi_12, bitcmphi, various splits and peephole2s): Wrap cc0<-reg
15352         sets with COMPARE.
15353
15354         * config/m68k/predicates.md (m68k_cstore_comparison_operator,
15355         const0_operand, const1_operand, m68k_subword_comparison_operand): New.
15356         * config/m68k/constraints.md (H): New.
15357         * config/m68k/m68k.md (tstdi): Remove define_expand, use name for
15358         the define_insn below.
15359         (tstsi, tsthi, tst<FP:mode>, cmphi, cmpqi, cmp<FP:mode>): Delete.
15360         (*tstsi_internal_68020_cf, *tstsi_internal, *tsthi_internal,
15361         *tstqi_internal, tst<mode>_6881, tst<mode>_cf, many unnamed
15362         patterns): Wrap RHS with COMPARE.
15363         (tst<FP>_68881, tst<FP>_cf): Use const0_operand.
15364         (*cmpdi_internal): Name this pattern.
15365         (cmpdi): Change to define_insn.
15366         (cbranchdi4, cstoredi4, cbranchsi4, cstoresi4, cbranchhi4, cstorehi4,
15367         cbranchqi4, cstoreqi4, cbranch<FP:mode>4, cstore<FP:mode>4): New.
15368         (scc0_di, scc0_di_5200, scc_di): Use the ordered_comparison_operator
15369         predicate.
15370         (seq, sne, sgt, sgtu, slt, sltu, sge, sgeu, sle, sleu, sordered,
15371         sunordered, suneq, sunge, sungt, sunle, sunlt, sltgt): Delete
15372         (conditional_trap): Change to...
15373         (ctrapdi4, ctrapsi4, ctraphi4, ctrapqi4): ... these.
15374         (*conditional_trap): Use the ordered_comparison_operator and
15375         const1_operand predicates.
15376         * config/m68k/m68k.c (m68k_last_compare_had_fp_operands): Delete.
15377         (m68k_expand_prologue): Use ctrapsi4 instead of cmpsi+conditional_trap.
15378         (m68k_rtx_costs): Look for ZERO_EXTRACT in a COMPARE.
15379         * config/m68k/m68k.h (m68k_last_compare_had_fp_operands): Delete.
15380
15381         * config/mcore/mcore-protos.h (arch_compare_op0, arch_compare_op1,
15382         mcore_modify_comparison, mcore_gen_compare_reg): Remove.
15383         (mcore_gen_compare): New.
15384         * config/mcore/mcore.c (arch_compare_op0, arch_compare_op1): Delete.
15385         (mcore_modify_comparison, mcore_gen_compare_reg): Fold into...
15386         (mcore_gen_compare): ... this.
15387         * config/mcore/mcore.md (cmpsi, bCC, sCC): Remove.
15388         (cbranchsi4, cstoresi4): New, using mcore_gen_compare.
15389         (stack probe pattern): Use cbranchsi4.
15390
15391         * config/mips/predicates.md (mips_cstore_operator): New.
15392         * config/mips/mips-ps-3d.md (movv2sfcc): Do not use cmp_operands.
15393         * config/mips/mips.md (any_cond): Delete.
15394         (conditional_trap): Rename to ctrap<GPR:mode>4.  Adjust predicates,
15395         always succeed.
15396         (fixuns_truncdfsi2, fixuns_truncdfdi2, fixuns_truncsfsi2,
15397         fixuns_truncsfdi2): Use cbranch patterns.
15398         (cmp<GPR:mode>, cmp<SCALARF:mode>): Delete.
15399         (b<code>): Change to cbranch<GPR:mode>4 and cbranch<SCALARF:mode>4.
15400         Adjust call to mips_expand_conditional_branch.
15401         (seq, sne, slt<u>, sle<u>, sgt<u>, sge<u>): Change to
15402         cstore<GPR:mode>4.
15403         * config/mips/mips-protos.h (mips_expand_conditional_branch,
15404         mips_expand_scc, mips_expand_conditional_trap): Adjust prototypes.
15405         * config/mips/mips.c (cmp_operands): Delete.
15406         (mips_emit_compare): Get comparison operands from *op0/*op1.
15407         (mips_expand_scc): Get code/op0/op1/target from operands.  Assert
15408         that it succeeds.  Use op0/op1 instead of cmp_operands.
15409         (mips_expand_conditional_branch, mips_expand_conditional_move,
15410         mips_expand_conditional_trap): Likewise.
15411         (mips_block_move_loop): Use cbranch patterns.
15412         * config/mips/mips.h (cmp_operands): Delete.
15413
15414         * config/mmix/mmix.c (mmix_valid_comparison): Delete.
15415         (mmix_gen_compare_reg): Just return a register in the right CC mode.
15416         * config/mmix/mmix.h (mmix_compare_op0, mmix_compare_op1): New.
15417         * config/mmix/mmix.md (cmpdi, cmpdf): Remove.
15418         (*cmpcc_folded): Rename to...
15419         (*cmpdi_folded): this.
15420         (*cmpcc): Rename to...
15421         (*cmps): ... this.
15422         (movdfcc, movdicc): Adjust for new semantics of mmix_gen_compare_reg.
15423         (bCC): Remove.
15424         (cbranchdi4): New.
15425         (cbranchdf4): New.  Handle invalid comparisons here.
15426         * config/mmix/predicates.md (float_comparison_operator): New.
15427
15428         * config/mn10300/mn10300.c (mn10300_rtx_costs): Consider 0 and
15429         zero_extract to be cheap in (compare (zero_extract) (const_int 0).
15430         * config/mn10300/mn10300.md (tst): Delete.
15431         (*tst_extqisi_am33, *tst_extqisi, *tst_exthisi_am33, *tst_exthisi):
15432         Name these patterns and wrap RHS in a compare.
15433         (*cmpsi): Make this pattern private.  Include tst.
15434         (*cmpsf): Make this pattern private.
15435         (and and zero_extract cc0 set): Wrap RHS in a COMPARE.
15436         (compare with zero peepholes): Likewise.
15437         (bCC): Remove.
15438         (cbranchsi4, cbranchsf4): New.
15439         (casesi): Use cbranchsi4.
15440
15441         * config/pa/pa.c (hppa_compare_op0, hppa_compare_op1,
15442         hppa_branch_type): Delete.
15443         (return_addr_rtx): Use cbranchsi4.
15444         (emit_bcond_fp): Accept all operands.  Replace CODE with NE.
15445         Emit CCFPmode comparison here.
15446         (gen_cmp_fp): Delete, now part of emit_bcond_fp.
15447         * config/pa/pa.h (enum cmp_type, hppa_compare_op0, hppa_compare_op1,
15448         hppa_branch_type): Delete.
15449         * config/pa/pa.md (cmpdi, cmpsi, cmpsf, cmpdf, sCC, bCC): Delete.
15450         (movsicc, movdicc): Remove references to hppa_compare_op0,
15451         hppa_compare_op1 and compare_from_rtx.
15452         (cbranchdi4, cbranchsi4, cbranchsf4, cbranchdf4, cstoresi4): New.
15453         (casesi): Use cbranchsi4.
15454
15455         * config/pdp11/pdp11-protos.h (output_jump): Change prototype.
15456         * config/pdp11/pdp11.c (output_jump): Embed opcodes here.
15457         * config/pdp11/pdp11.md (register_or_const0_operand): New.
15458         (cmpdf, cmphi, cmpqi): Make private.  Add tst alternatives.
15459         (cmpsi, tstsi, tstdf, tsthi, tstqi): Delete.
15460         (bCC): Delete.
15461         (cbranchdf4, cbranchhi4, cbranchqi4): New.
15462         (*branch, *branch_inverted): New.
15463
15464         * config/picochip/picochip.md (cbranchhi4): Use
15465         ordered_comparison_operator.
15466         (cmphi, bCC): Remove.
15467
15468         * config/rs6000/predicates.md (rs6000_cbranch_operator): New.
15469         (trap_comparison_operator): Delete.
15470         * config/rs6000/rs6000-protos.h (rs6000_emit_sCOND,
15471         rs6000_emit_cbranch): Accept mode and operands.
15472         * config/rs6000/rs6000.c (rs6000_compare_op0, rs6000_compare_op1,
15473         rs6000_compare_fp_p): Delete.
15474         (rs6000_generate_compare): Accept mode and comparison.  Extract code
15475         and op0/op1 from there.  Replace references to rs6000_compare_op0
15476         and rs6000_compare_op1.
15477         (rs6000_emit_sCOND): Adjust call to rs6000_generate_compare and
15478         extract result from passed operands.
15479         (rs6000_emit_cbranch): Adjust call to rs6000_generate_compare and
15480         extract loc from passed operands.
15481         (rs6000_emit_cmove): Likewise.
15482         * config/rs6000/rs6000.h (rs6000_compare_op0, rs6000_compare_op1,
15483         rs6000_compare_fp_p): Delete.
15484         * config/rs6000/rs6000.md (cmp<GPR>, cmp<FP>, bCC, sCC): Delete.
15485         (cbranch<GPR>4, cbranch<FP>4): New.
15486         (cstore<mode>4): New.  Consolidate here all choices about when to use
15487         portable or specialized sCC sequences.
15488         (stack_protect_test): Use cbranchsi4.
15489         (conditional_trap): Replace with ctrap<GPR>4.
15490         (conditional trap insn): Replace trap_comparison_operator with
15491         ordered_comparison_operator.
15492
15493         * config/s390/s390.c (s390_compare_op0, s390_compare_op1): Delete.
15494         (s390_emit_prologue): Use ctrap.
15495         * config/s390/s390.h (s390_compare_op0, s390_compare_op1): Delete.
15496         * config/s390/predicates.md (s390_eqne_operator, s390_scond_operator):
15497         New predicates replacing...
15498         * config/s390/s390.md (COMPARE, SCOND): ... these iterators.
15499         (cmp<GPR>, cmp<FP>, cmpcc): Delete.
15500         (trunc patterns): Use emit_cmp_and_jump_insns instead of cmp/branch.
15501         (add<mode>cc): Do not use s390_compare_op0/op1.
15502         (s<code>): Change to...
15503         (cstore<mode>4): ... this. Do not use s390_compare_op0/op1.
15504         (seq): Change to...
15505         (cstorecc4): ... this.  Handle EQ or NE equally.
15506         (*sne): Un-privatize for use in cstorecc4.
15507         (b<code>): Change to...
15508         (cbranch<GPR>4, cbranch<FP>4, cbranchcc4): ... these.
15509         (conditional_trap): Replace with...
15510         (ctrap<GPR>4, ctrap<FP>4): ... these.
15511         (stack_protect): Use cbranchcc4.
15512
15513         * config/score/score-conv.h (cmp_op0, cmp_op1): Delete.
15514         * config/score/score-protos.h (score_gen_cmp): Delete.
15515         * config/score/score.c (cmp_op0, cmp_op1, score_gen_cmp): Delete.
15516         (score_block_move-loop): Use cbranchsi4.
15517         * config/score/score.md (cbranchsi4): New.
15518         (cmpsi, bCC): Delete.
15519         * config/score/score3.c (cmp_op0, cmp_op1, score3_gen_cmp): Delete.
15520         (score3_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
15521         * config/score/score7.c (cmp_op0, cmp_op1, score7_gen_cmp): Delete.
15522         (score7_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
15523         * config/score/score3.h (score3_gen_cmp): Delete.
15524         * config/score/score7.h (score7_gen_cmp): Delete.
15525
15526         * config/sh/sh-protos.h (prepare_scc_operands): Rename to...
15527         (sh_emit_scc_to_t): ... this.  Return void.
15528         (from_compare): Rename to...
15529         (sh_emit_compare_and_branch): ... this.
15530         (sh_emit_compare_and_set): New.
15531         (sh_expand_t_scc): Accept operands.
15532         * config/sh/predicates.md (sh_float_comparison_operator): New.
15533         * config/sh/sh.c (sh_compare_op0, sh_compare_op1): Delete.
15534         (prepare_scc_operands): Rename to...
15535         (sh_emit_scc_to_t): ... this.  Return void.  Get op0/op1 from
15536         arguments.
15537         (sh_emit_cheap_store_flag): New.
15538         (sh_emit_set_t_insn): New.
15539         (from_compare): Rename to...
15540         (sh_emit_compare_and_branch): ... this.  Accept mode.  Rewrite
15541         handling of TARGET_SH2E floating point to avoid recursive call.
15542         Generate branch here.
15543         (sh_emit_compare_and_set): New.
15544         (sh_expand_t_scc): Get op0/op1 from arguments.
15545         (sh_emit_cheap_store_flag): New.
15546         * config/sh/sh.md (cbranchdi4, cbranchsi4): Include -mno-cbranchdi
15547         cases.
15548         (cbranchdi4_i): Use an "I08" constraint instead of an "i" constraint.
15549         (cmpsi, cmpdi, cmpsf, cmpdf): Delete.
15550         (movsicc, movdicc): Do nothing when it recreated operands from
15551         sh_compare_*. Use sh_emit_cheap_store_flag.  Adjust call to
15552         prepare_scc_operands (now sh_emit_scc_to_t).
15553         (udivdi3): Use cstoresi4.
15554         (beq_media, bne_media, bge_media, bgtu_media, bgeu_media, beq,
15555         bne, bgt, blt, ble, bge, bgtu, bltu, bgeu, bleu, bunordered): Delete.
15556         (cbranchint4_media, cbranchfp4_media): New.
15557         (casesi): Use cbranchdi4.
15558         (seq, slt, sle, sgt, sge, sgtu, sltu, sgeu, sne, sleu, sunordered):
15559         Delete.
15560         (cstore4_media, cstoresi4, cstoredi4, cstoresf4, cstoredf4): New.
15561         (movnegt): Remove second operand.
15562         (cbranchsf4, cbranchdf4): New.
15563         (stack_protect): Use cbranchdi4/cbranchsi4.
15564
15565         * config/sparc/sparc.c (sparc_compare_op0, sparc_compare_op1): Delete.
15566         (gen_compare_reg): Accept comparison, extract part of it to...
15567         (gen_compare_reg_1): ... this.
15568         (gen_compare_operator): Delete.
15569         (gen_v9_scc): Accept separate destination, comparison code and arms.
15570         Do not use sparc_compare_op0/sparc_compare_op1.
15571         (emit_scc_insn, emit_conditional_branch_insn): New.
15572         (emit_v9_brxx): Make static.  Remove useless assertion.
15573         (sparc_emit_float_lib_cmp): Return RTL instead of calling
15574         emit_cmp_insn.
15575         (sparc_expand_compare_and_swap_12): Use gen_compare_reg_1+cbranchcc4.
15576         * config/sparc/sparc-protos.h (gen_compare_reg,
15577         sparc_emit_float_lib_cmp): Adjust prototype.
15578         (emit_scc_insn, emit_conditional_branch_insn): New.
15579         (gen_v9_scc, emit_v9_brxx_insn, gen_compare_operator): Delete.
15580         * config/sparc/sparc.h (sparc_compare_op0, sparc_compare_op1): Delete.
15581         * config/sparc/sparc.md (P, I, F, V32, V32I, V64, V64I): Move all
15582         iterators to the top.
15583         (cmpsi, cmpdi, cmpsf, cmpdf, cmptf, seqsi_special_extend,
15584         snesi_special_extend, sCC, bCC, seqdi_special_trunc,
15585         snedi_special_trunc): Delete.
15586         (seqdi_special, snedi_special): Use expansion of seqdi_special_trunc
15587         and snedi_special_trunc.
15588         (cstoresi4, cstoredi4, cstore<F:mode>4, cbranchcc4, cbranchsi4,
15589         cbranchdi4, cbranch<F:mode>4): New.
15590         (mov<I:mode>cc, mov<F:mode>cc): Handle sparc_emit_float_lib_cmp
15591         here.  Use gen_compare_reg instead of gen_compare_operator.
15592         (conditional_trap): Replace with...
15593         (ctrapsi4, ctrapdi4): ... this.
15594         (stack_protect_test): Use cbranchcc4.
15595
15596         * config/spu/spu-protos.h (spu_emit_branch_or_set): Change second
15597         argument to rtx.
15598         * config/spu/spu.c (spu_compare_op0, spu_compare_op1): Remove.
15599         (spu_emit_branch_or_set): Get code/op0/op1 from second argument.
15600         Change spu_compare_op0/op1 to op0/op1 throughout.  Get target
15601         from operands[0] or operands[3] depending on is_set.
15602         * config/spu/spu.h (spu_compare_op0, spu_compare_op1): Remove.
15603         * config/spu/spu.md (cmp<mode:VQHSI>, cmp<mode:DTI>, cmp<mode:VSF>,
15604         cmpdf, bCC), sCC: Remove.
15605         (cbranch<mode:VQHSI>4, cbranch<mode:DTI>, cbranch<mode:VSF>4,
15606         cbranchdf4, cstore<mode:VQHSI>4, cstore<mode:DTI>, cstore<mode:VSF>4,
15607         cstoredf4): New.
15608         (mov<mode>cc): Accept ordered_comparison_operator, adjust call to
15609         spu_emit_branch_or_set.
15610
15611         * config/stormy16/stormy16-protos.h (xstormy16_emit_cbranch):
15612         Add two arguments.
15613         * config/stormy16/stormy16.h (xstormy16_compare_op0,
15614         xstormy16_compare_op1): Delete.
15615         * config/stormy16/stormy16.c (xstormy16_compare_op0,
15616         xstormy16_compare_op1): Delete.
15617         (xstormy16_emit_cbranch): Get op0/op1 from the new arguments.
15618         Adjust calls.
15619         * config/stormy16/stormy16.md (cbranchsi4, cbranchhi4): New.
15620         (cmphi, cmpsi, bCC): Remove.
15621
15622         * config/v850/v850.md (tstsi, cmpsi): Fold into...
15623         (*cmpsi): ... this one.
15624         (cbranchsi4, cstoresi4): New.
15625         (bCC expanders): Delete.
15626         (sCC insns): Fold into...
15627         (*setcc): ... this one.
15628         (casesi): Do not use gen_cmpsi and gen_bgtu.
15629         (various splits): Wrap "naked" RHS of a cc0 set with COMPARE.
15630         (movsicc): Simplify.
15631         * config/v850/v850.c (v850_rtx_costs): Handle ZERO_EXTRACT in COMPARE.
15632
15633         * config/vax/vax-protos.h (cond_name): New.
15634         (vax_output_conditional_branch): Remove.
15635         * config/vax/vax.c (cond_name): New.
15636         (vax_output_conditional_branch): Remove.
15637         * config/vax/vax.h (PRINT_OPERAND): Dispatch %c to cond_name.
15638         * config/vax/vax.md (tst<VAXint>, tst<VAXfp>): Remove.
15639         (cmp<VAXint>, cmp<VAXfp>): Privatize.  Add constraints for tst.
15640         (bit<VAXint>): Wrap source with (compare).
15641         (b<code> and following unnamed pattern): Rename to *branch and
15642         *branch_reversed.  Change macroization to match_operator.
15643         (cbranch<VAXint>4, cbranch<VAXfp>4): New.
15644
15645         * config/xtensa/predicates.md (xtensa_cstoresi_operator): New.
15646         * config/xtensa/xtensa-protos.h (xtensa_expand_conditional_branch):
15647         Change last argument to machine_mode.
15648         (xtensa_expand_scc): Add machine_mode argument.
15649         * config/xtensa/xtensa.c (branch_cmp, branch_type): Remove.
15650         (gen_conditional_move, xtensa_expand_conditional_branch,
15651         xtensa_expand_scc, xtensa_expand_conditional_move): Use mode
15652         instead of branch_type, fetch cmp0/cmp1/test_code from operands[].
15653         Adjust operand numbers.
15654         * config/xtensa/xtensa.h (enum cmp_type, branch_cmp, branch_type):
15655         Delete.
15656         * config/xtensa/xtensa.md (any_cond, any_scc): Delete.
15657         (cmpsi, cmpsf, b<code>, s<code>): Delete.
15658         (cbranchsi4, cbranchsf4, cstoresi4, cstoresf4): New.
15659
15660 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
15661
15662         * optabs.c (prepare_cmp_insn): Temporarily disable test that
15663         causes spurious differences between trunk and cond-optab branch.
15664
15665 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
15666
15667         PR target/37137
15668         * doc/install.texi (STAGE1_TFLAGS, BUILD_CONFIG): Document.
15669
15670 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
15671
15672         * tree.c (iterative_hash_pointer): Delete.
15673         (iterative_hash_expr): Short-circuit handling of NULL pointer.
15674         Hash UIDs and versions of SSA names.  Don't special-case built-in
15675         function declarations.
15676
15677 2009-05-11  Ian Lance Taylor  <iant@google.com>
15678
15679         PR bootstrap/40103
15680         * graphite.c: Force -Wc++-compat to only be a warning before
15681         #including "cloog/cloog.h".
15682
15683 2009-05-11  Martin Jambor  <mjambor@suse.cz>
15684
15685         * ipa-cp.c (ipcp_cloning_candidate_p): Add missing return false.
15686
15687 2009-05-11  Jan Hubicka  <jh@suse.cz>
15688
15689         * tree-ssa-loop-ivcanon.c: Include target.h
15690         (struct loop_size): new structure.
15691         (constant_after_peeling): New predicate.
15692         (tree_estimate_loop_size): New function.
15693         (estimated_unrolled_size): Rewrite for new estimates.
15694         (try_unroll_loop_completely): Use new estimates.
15695         * Makefile.in (tree-ssa-loop-ivcanon.o): Add dependenc on target.h
15696
15697 2009-05-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15698
15699         * config/spu/spu-c.c (spu_categorize_keyword): Update for recent
15700         libcpp interface change.
15701         (spu_macro_to_expand): Likewise.
15702
15703 2009-05-11  Paolo Bonzini  <bonzini@gnu.org>
15704
15705         PR tree-optimization/40026
15706         * gimplify.c (gimplify_init_constructor): Change initial conditional
15707         to assertion.  Rewrite TREE_OPERAND (*expr_p, 1) after
15708         optimize_compound_literals_in_ctor.
15709
15710 2009-05-11  Nathan Sidwell  <nathan@codesourcery.com>
15711
15712         * config/m68k/m68k-devices.def (52274, 52277, 5301x, 5225x, 51xx):
15713         New devices.
15714         * doc/invoke.texi (M680x0 Options): Document new coldfire cpus.
15715
15716 2009-05-11  H.J. Lu  <hongjiu.lu@intel.com>
15717
15718         * tree-vect-data-refs.c (vect_analyze_group_access): Use
15719         HOST_WIDE_INT for gap.
15720
15721 2009-05-11  Ira Rosen  <irar@il.ibm.com>
15722
15723         PR tree-optimization/40074
15724         * tree-vect-data-refs.c (vect_analyze_group_access): Take gaps into
15725         account in group size and step comparison.
15726
15727 2009-05-11  Richard Guenther  <rguenther@suse.de>
15728
15729         * passes.c (init_optimization_passes): Strip now incorrect comment.
15730         (execute_function_todo): Do not set PROP_alias.
15731         * tree-pass.h (PROP_alias): Remove.
15732         * tree-ssa-structalias.c (pass_build_alias): Do not provide PROP_alias.
15733         * tree-if-conv.c (pass_if_conversion): Do not require PROP_alias.
15734         * tree-nrv.c (pass_return_slot): Likewise.
15735         * tree-object-size.c (pass_object_sizes): Likewise.
15736         * tree-ssa-dom.c (pass_dominator): Likewise.
15737         (pass_phi_only_cprop): Likewise.
15738         * tree-ssa-dse.c (pass_dse): Likewise.
15739         * tree-ssa-phiopt.c (pass_phiopt): Likewise.
15740         (pass_cselim): Likewise.
15741         * tree-ssa-pre.c (pass_pre): Likewise.
15742         (pass_fre): Likewise.
15743         * tree-ssa-reassoc.c (pass_reassoc): Likewise.
15744         * tree-ssa-sink.c (pass_sink_code): Likewise.
15745         * tree-stdarg.c (pass_stdarg): Likewise.
15746         * tree-tailcall.c (pass_tail_calls): Likewise.
15747         * tree-vrp.c (pass_vrp): Likewise.
15748
15749 2009-05-10  Ian Lance Taylor  <iant@google.com>
15750
15751         * basic-block.h (enum profile_status): Break out of struct
15752         control_flow_graph.
15753         * cgraph.h (struct inline_summary): Break out of struct
15754         cgraph_local_info.
15755         * cgraphunit.c (enum cgraph_order_sort_kind): New enum, broken out
15756         of struct cgraph_order_sort.
15757         * combine.c (enum undo_kind): New enum, broken out of struct undo.
15758         * cse.c (struct branch_path): Break out of struct
15759         cse_basic_block_data.
15760         * except.h (enum eh_region_type): Break out of struct eh_region.
15761         * gcc.c (enum add_del): Break out of struct modify_target.
15762         * genrecog.c (enum decision_type): Break out of struct decision_test.
15763         * ggc-page.c (struct ggc_pch_ondisk): Break out of struct
15764         ggc_pch_data.
15765         * matrix-reorg.c (struct free_info): Break out of struct matrix_info.
15766         * regmove.c (enum match_use): New enum, broken out of struct match.
15767         * sched-int.h (enum post_call_group): New enum, broken out of
15768         struct deps.
15769         (struct deps_reg): Break out of struct deps.
15770         * target.h (struct asm_int_op): Break out of struct gcc_target.
15771         * tree-eh.c (struct goto_queue_node): Break out of struct
15772         leh_tf_state.
15773         * tree-inline.h (enum copy_body_cge_which): Break out of
15774         copy_body_data.
15775         * tree-pass.h (enum opt_pass_type): Break out of struct opt_pass.
15776
15777         * c-decl.c (in_struct, struct_types): New static variables.
15778         (pushtag): Add loc parameter.  Change all callers.
15779         (lookup_tag): Add ploc parameter.  Change all callers.
15780         (check_compound_literal_type): New function.
15781         (parser_xref_tag): Add loc parameter.  Change all callers.  If
15782         -Wc++-compat, warn about struct/union/enum types defined within a
15783         struct or union.
15784         (start_struct): Add enclosing_in_struct, enclosing_struct_types,
15785         and loc parameters.  Change all callers.  Change error calls to
15786         error_at, using loc.  For a redefinition, if the location of the
15787         original definition is known, report it.  Set in_struct and
15788         struct_types.  If -Wc++-compat warn if in sizeof, typeof, or alignof.
15789         (finish_struct): Add new parameters enclosing_in_struct and
15790         enclosing_struct_types.  Change all callers.  Set
15791         C_TYPE_DEFINED_IN_STRUCT for all struct/union/enum types defined
15792         in the struct.  If in a struct, add this struct to struct_types.
15793         (start_enum): Add loc parameter.  Change all callers.  Use
15794         error_at for errors, using loc.  For a redefinition, if the
15795         location of the original definition is known, report it.  If in a
15796         struct, add this enum type to struct_types.  If -Wc++-compat warn
15797         if in sizeof, typeof, or alignof.
15798         * c-parser.c (disable_extension_diagnostics): Disable -Wc++-compat.
15799         (enable_extension_diagnostics): Reenable -Wc++-compat if appropriate.
15800         (c_parser_enum_specifier): Get enum location for start_enum.
15801         (c_parser_struct_or_union_specifier): Get struct location for
15802         start_struct.  Save in_struct and struct_types status between
15803         start_struct and finish_struct.
15804         (c_parser_cast_expression): Get location of cast.
15805         (c_parser_alignof_expression): Get location of type.
15806         (c_parser_postfix_expression): Likewise.
15807         (c_parser_postfix_expression_after_paren_type): Add type_loc
15808         parameter.  Change all callers.  Call check_compound_literal_type.
15809         Use type_loc for error about variable size type.
15810         * c-typeck.c (build_external_ref): If -Wc++-compat, warn about a use
15811         of an enum constant from an enum type defined in a struct or union.
15812         (c_cast_expr): Add loc parameter.  Change all callers.  If
15813         -Wc++-compat, warn about defining a type in a cast.
15814         * c-tree.h (C_TYPE_DEFINED_IN_STRUCT): Define.
15815         (start_enum, start_struct, finish_struct): Update declarations.
15816         (parser_xref_tag, c_cast_expr): Update declarations.
15817         (check_compound_literal_type): Declare.
15818
15819 2009-05-11  Ben Elliston  <bje@au.ibm.com>
15820
15821         * config/rs6000/rs6000-c.c (altivec_categorize_keyword): Update
15822         for recent libcpp interface change.
15823         (rs6000_macro_to_expand): Likewise.
15824
15825 2009-05-10  Michael Matz  <matz@suse.de>
15826
15827         PR target/40031
15828         * config/arm/arm.c (require_pic_register): Emit on entry edge,
15829         not at entry of function.
15830
15831 2009-05-10  Richard Guenther  <rguenther@suse.de>
15832
15833         PR tree-optimization/40081
15834         Revert
15835         * tree-sra.c (instantiate_element): Instantiate scalar replacements
15836         using the main variant of the element type.  Do not fiddle with
15837         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
15838
15839         * tree-sra.c (sra_type_can_be_decomposed_p): Do not decompose
15840         structs with volatile fields.
15841
15842 2009-05-10  Jan Hubicka  <jh@suse.cz>
15843
15844         * tree-inline.c (delete_unreachable_blocks_update_callgraph): Declare.
15845         (estimate_move_cost): Assert that it does not get called for
15846         VOID_TYPE_P.
15847         (estimate_num_insns): Skip VOID types in argument handling.
15848         (optimize_inline_calls): Delete unreachable blocks and verify that
15849         callgraph is valid.
15850
15851 2009-05-10  Jan Hubicka  <jh@suse.cz>
15852
15853         * cgraphbuild.c (record_reference): Use cgraph_mark_address_taken_node.
15854         * cgraph.c (cgraph_mark_address_taken_node): New function.
15855         (dump_cgraph_node): Dump new flag.
15856         * cgraph.h (struct cgraph_node): Add address_taken.
15857         (cgraph_mark_address_taken_node): New function.
15858         * ipa.c (cgraph_postorder): Prioritize functions with address taken
15859         since new direct calls can be born.
15860
15861 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
15862
15863         * c-lex.c (c_lex_with_flags): Expect cpp_hashnode in
15864         tok->val.node.node.
15865
15866 2009-05-10  Jan Hubicka  <jh@suse.cz>
15867
15868         PR middle-end/40084
15869         * cgraph.c (cgraph_update_edges_for_call_stmt_node): Take old_call
15870         argument; rewrite.
15871         (cgraph_update_edges_for_call_stmt): Take old_decl argument.
15872         * cgraph.h (cgraph_update_edges_for_call_stmt): Update prototype.
15873         * tree-inline.c (copy_bb): Set frequency correctly.
15874         (fold_marked_statements): Update call to
15875         cgraph_update_edges_for_call_stmt.
15876
15877 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
15878
15879         * config/arc/arc.c (arc_handle_interrupt_attribute): Use %qE for
15880         identifiers in diagnostics.
15881         * config/arm/arm.c (arm_handle_fndecl_attribute,
15882         arm_handle_isr_attribute): Likewise.
15883         * config/avr/avr.c (avr_handle_progmem_attribute,
15884         avr_handle_fndecl_attribute, avr_handle_fntype_attribute): Likewise.
15885         * config/bfin/bfin.c (handle_int_attribute,
15886         bfin_handle_longcall_attribute, bfin_handle_l1_text_attribute,
15887         bfin_handle_l1_data_attribute, bfin_handle_longcall_attribute,
15888         bfin_handle_l1_text_attribute, bfin_handle_l1_data_attribute):
15889         Likewise.
15890         * config/darwin.c (darwin_handle_kext_attribute,
15891         darwin_handle_weak_import_attribute): Likewise.
15892         * config/h8300/h8300.c (h8300_handle_fndecl_attribute,
15893         h8300_handle_eightbit_data_attribute,
15894         h8300_handle_tiny_data_attribute): Likewise.
15895         * config/i386/i386.c (ix86_handle_cconv_attribute,
15896         ix86_handle_abi_attribute, ix86_handle_struct_attribute): Likewise.
15897         * config/i386/winnt.c (ix86_handle_shared_attribute,
15898         ix86_handle_selectany_attribute): Likewise.
15899         * config/ia64/ia64.c (ia64_handle_model_attribute): Likewise.
15900         * config/m32c/m32c.c (function_vector_handler): Likewise.
15901         * config/m68hc11/m68hc11.c (m68hc11_handle_page0_attribute,
15902         m68hc11_handle_fntype_attribute): Likewise.
15903         * config/m68k/m68k.c (m68k_handle_fndecl_attribute): Likewise.
15904         * config/mcore/mcore.c (mcore_handle_naked_attribute): Likewise.
15905         * config/mips/mips.c (mips_insert_attributes,
15906         mips_merge_decl_attributes, mips_expand_builtin): Likewise.
15907         * config/rs6000/rs6000.c (rs6000_handle_longcall_attribute,
15908         rs6000_handle_struct_attribute): Likewise.
15909         * config/sh/sh.c (sh_insert_attributes,
15910         sh_handle_resbank_handler_attribute,
15911         sh_handle_interrupt_handler_attribute,
15912         sh2a_handle_function_vector_handler_attribute,
15913         sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
15914         Likewise.
15915         * config/sh/symbian.c (sh_symbian_mark_dllimport): Likewise.
15916         * config/spu/spu.c (spu_handle_fndecl_attribute,
15917         spu_handle_vector_attribute): Likewise.
15918         * config/stormy16/stormy16.c
15919         (xstormy16_handle_interrupt_attribute): Likewise.
15920         * config/v850/v850-c.c (ghs_pragma_section): Likewise.
15921         * config/v850/v850.c (v850_handle_interrupt_attribute): Likewise.
15922
15923 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
15924
15925         * pretty-print.h (struct pretty_print_info): Add translate_identifiers.
15926         (pp_translate_identifiers): New.
15927         (pp_identifier): Only conditionally translate identifier to locale
15928         character set.
15929         * pretty-print.c (pp_construct): Set pp_translate_identifiers.
15930         (pp_base_tree_identifier): Only conditionally translate identifier
15931         to locale character set.
15932         * c-pretty-print.c (M_): Define.
15933         (pp_c_type_specifier, pp_c_primary_expression): Mark English
15934         fragments for conditional translation with M_.
15935         * tree-pretty-print.c (maybe_init_pretty_print): Disable
15936         identifier translation.
15937
15938 2009-05-10  Richard Guenther  <rguenther@suse.de>
15939
15940         PR tree-optimization/40081
15941         * tree-sra.c (instantiate_element): Instantiate scalar replacements
15942         using the main variant of the element type.  Do not fiddle with
15943         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
15944
15945 2009-05-09  Jan Hubicka  <jh@suse.cz>
15946
15947         PR middle-end/40080
15948         * cgraphunit.c (cgraph_materialize_all_clones): Do not redirect
15949         indirect calls; verify cgraph afterwards.
15950
15951 2009-05-09  Jan Hubicka  <jh@suse.cz>
15952
15953         PR bootstrap/40082
15954         * ipa.c (update_inlined_to_pointer): New function.
15955         (cgraph_remove_unreachable_nodes): Use it.
15956
15957 2009-05-09  Jan Hubicka  <jh@suse.cz>
15958
15959         * tree-eh.c (struct leh_state): Remove prev_try.
15960         (lower_try_finally, lower_catch, lower_eh_filter, lower_cleanup): Do
15961         not track prev_try.
15962         * except.c (gen_eh_region_cleanup, duplicate_eh_regions,
15963         copy_eh_region_1, copy_eh_region, redirect_eh_edge_to_label,
15964         remove_eh_handler_and_replace, foreach_reachable_handler,
15965         verify_eh_region, verify_eh_tree): Remove tracking of prev_try pointer.
15966         * except.h (struct eh_region): Remove eh_region_u_cleanup.
15967         (gen_eh_region_cleanup): Update prototype.
15968
15969 2009-05-09  Jan Hubicka  <jh@suse.cz>
15970
15971         PR middle-end/40043
15972         * except.c (copy_eh_region): Always set prev_try.
15973         (redirect_eh_edge_to_label): Find outer try.
15974         (foreach_reachable_handler): When looking for prev try
15975         handle case where previous try is not going to be taken.
15976
15977 2009-05-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
15978
15979         PR tree-optimization/40049
15980         * tree-vect-stmts.c (vectorizable_operation): If the machine has
15981         only vector/vector shifts, convert the type of the constant to the
15982         appropriate type to avoid building incorrect trees, which
15983         eventually have problems with garbage collection.
15984
15985 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
15986
15987         * fold-const.c (fold_binary): Do not fold multiplication by 1 or
15988         -1 for complex floating-point types if honoring signed zeros.
15989
15990 2009-05-08  Jan Hubicka  <jh@suse.cz>
15991
15992         * cgraphbuild.c (compute_call_stmt_bb_frequency): Accept function
15993         argument; handle correctly when profile is absent.
15994         (build_cgraph_edges): Update.
15995         (rebuild_cgraph_edges): Update.
15996         * cgraph.c: Do not include varray.h.
15997         (cgraph_set_call_stmt_including_clones): New function.
15998         (cgraph_create_edge_including_clones): Likewise
15999         (cgraph_update_edges_for_call_stmt_node): New static cfunction.
16000         (cgraph_update_edges_for_call_stmt): Handle clones.
16001         (cgraph_remove_node): Handle clone tree.
16002         (cgraph_remove_node_and_inline_clones): New function.
16003         (dump_cgraph_node): Dump clone tree.
16004         (cgraph_clone_node): Handle clone tree.
16005         (clone_function_name): Bring here from tree-inline.c.
16006         (cgraph_create_virtual_clone): New function.
16007         * cgraph.h (ipa_replace_map): Move here from ipa.h.
16008         (cgraph_clone_info): New function.
16009         (strut cgraph_node): Add clone_info and new clone tree pointers.
16010         (cgraph_remove_node_and_inline_clones,
16011         cgraph_set_call_stmt_including_clones,
16012         cgraph_create_edge_including_clones,
16013         cgraph_create_virtual_clone): Declare.
16014         (cgraph_function_versioning): Use VEC argument.
16015         (compute_call_stmt_bb_frequency): Update prototype.
16016         (cgraph_materialize_all_clones): New function.
16017         * ipa-cp.c (ipcp_update_cloned_node): Remove.
16018         (ipcp_create_replace_map): Update to VECtors.
16019         (ipcp_update_callgraph): Use virtual clones.
16020         (ipcp_update_bb_counts, ipcp_update_edges_counts): Remove.
16021         (ipcp_update_profiling): Do not update local profiling.
16022         (ipcp_insert_stage): Use VECtors and virtual clones.
16023         * cgraphunit.c (verify_cgraph_node): Verify clone tree.
16024         (clone_of_p): New function.
16025         (cgraph_preserve_function_body_p): Use clone tree.
16026         (cgraph_optimize): Materialize clones.
16027         (cgraph_function_versioning): Update for VECtors.
16028         (save_inline_function_body): Use clone tree.
16029         (cgraph_materialize_clone): New function.
16030         (cgraph_materialize_all_clones): Likewise.
16031         * ipa-inline.c (cgraph_default_inline_p): Use analyzed flags.
16032         * ipa.c: Include gimple.h.
16033         (cgraph_remove_unreachable_nodes): Use clone tree.
16034         * ipa-prop.c (ipa_note_param_call): Update call to
16035         compute_call_stmt_bb_frequencycall.
16036         * ipa-prop.h (ipa_replace_map): Move to cgraph.h.
16037         * tree-inline.c: Do not include varray.h or gt-tree-inline.h.
16038         (copy_bb): Handle updating of clone tree; add new edge when new call
16039         appears.
16040         (expand_call_inline): Be strict about every call having edge.
16041         (clone_fn_id_num, clone_function_name): Move to cgraph.c.
16042         (delete_unreachable_blocks_update_callgraph): New function.
16043         (tree_function_versioning): Use VECtors; always remove unreachable
16044         blocks and fold conditionals.
16045         * tree-inline.h: Do not include varray.h.
16046         (tree_function_versioning): Remove.
16047         * Makefile.in (GTFILES): Remove tree-inline.c
16048         * passes.c (do_per_function): Do only functions having body.
16049         * ipa-struct-reorg.c (do_reorg_1, collect_data_accesses): Handle clone
16050         tree.
16051
16052 2009-05-08  H.J. Lu  <hongjiu.lu@intel.com>
16053             Andrew Morrow  <acm@google.com>
16054
16055         PR c/36892
16056         * c-common.c (c_common_attribute_table): Permit deprecated
16057         attribute to take an optional argument.
16058         (handle_deprecated_attribute): If the optional argument to
16059         __attribute__((deprecated)) is not a string ignore the attribute
16060         and emit a warning.
16061
16062         * c-decl.c (grokdeclarator): Updated warn_deprecated_use call.
16063         * c-typeck.c (build_component_ref): Likewise.
16064         (build_external_ref): Likewise.
16065
16066         * toplev.c (warn_deprecated_use): Add an attribute argument.
16067         Emit the message associated with __attribute__((deprecated)).
16068
16069         * toplev.h (warn_deprecated_use): Updated.
16070
16071         * doc/extend.texi: Document new optional parameter to
16072         __attribute__((deprecated))
16073
16074 2009-05-08  Michael Eager <eager@eagercon.com>
16075
16076         * config/rs6000/rs6000.md (*movdf_softfloat32): replace
16077         !TARGET_DOUBLE_FLOAT with TARGET_SINGLE_FLOAT.
16078
16079 2009-05-08  Richard Guenther  <rguenther@suse.de>
16080
16081         PR tree-optimization/40062
16082         * tree-scalar-evolution.c (follow_ssa_edge_in_condition_phi):
16083         Avoid exponential behavior.
16084
16085 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
16086
16087         PR rtl-optimization/33928
16088         PR 26854
16089         * fwprop.c (use_def_ref, get_def_for_use, bitmap_only_bit_bitween,
16090         process_uses, build_single_def_use_links): New.
16091         (update_df): Update use_def_ref.
16092         (forward_propagate_into): Use get_def_for_use instead of use-def
16093         chains.
16094         (fwprop_init): Call build_single_def_use_links and let it initialize
16095         dataflow.
16096         (fwprop_done): Free use_def_ref.
16097         (fwprop_addr): Eliminate duplicate call to df_set_flags.
16098         * df-problems.c (df_rd_simulate_artificial_defs_at_top,
16099         df_rd_simulate_one_insn): New.
16100         (df_rd_bb_local_compute_process_def): Update head comment.
16101         (df_chain_create_bb): Use the new RD simulation functions.
16102         * df.h (df_rd_simulate_artificial_defs_at_top,
16103         df_rd_simulate_one_insn): New.
16104         * opts.c (decode_options): Enable fwprop at -O1.
16105         * doc/invoke.texi (-fforward-propagate): Document this.
16106
16107 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
16108
16109         PR c/24581
16110         * c-typeck.c (build_binary_op): Handle arithmetic between one real
16111         and one complex operand specially.
16112         * tree-complex.c (some_nonzerop): Do not identify a real value as
16113         zero if flag_signed_zeros.
16114
16115 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
16116
16117         PR rtl-optimization/33928
16118         * loop-invariant.c (record_use): Fix && vs. || mishap.
16119
16120 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
16121
16122         PR rtl-optimization/33928
16123         * loop-invariant.c (struct use): Add addr_use_p.
16124         (struct def): Add n_addr_uses.
16125         (struct invariant): Add cheap_address.
16126         (create_new_invariant): Set cheap_address.
16127         (record_use): Accept df_ref.  Set addr_use_p and update n_addr_uses.
16128         (record_uses): Pass df_ref to record_use.
16129         (get_inv_cost): Do not add inv->cost to comp_cost for cheap addresses
16130         used only as such.
16131
16132 2009-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
16133
16134         * config/sh/sh.c: Do not include c-pragma.h.
16135
16136 2009-05-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16137
16138         * config/spu/spu.c: Remove include of c-common.h.
16139
16140 2009-05-07  Janis Johnson  <janis187@us.ibm.com>
16141
16142         PR c/39037
16143         * c-common.h (mark_valid_location_for_stdc_pragma,
16144         valid_location_for_stdc_pragma_p, set_float_const_decimal64,
16145         clear_float_const_decimal64, float_const_decimal64_p): New.
16146         * c.opt (Wunsuffixed-float-constants): New.
16147         * c-lex.c (interpret_float): Use pragma FLOAT_CONST_DECIMAL64 for
16148         unsuffixed float constant, handle new warning.
16149         * c-cppbuiltin.c (c_cpp_builtins): Use cast for double constants.
16150         * c-decl.c (c_scope): New flag float_const_decimal64.
16151         (set_float_const_decimal64, clear_float_const_decimal64,
16152         float_const_decimal64_p): New.
16153         (push_scope): Set new flag.
16154         * c-parser.c (c_parser_translation_unit): Mark when it's valid
16155         to use STDC pragmas.
16156         (c_parser_external_declaration): Ditto.
16157         (c_parser_compound_statement_nostart): Ditto.
16158         * c-pragma.c (valid_location_for_stdc_pragma,
16159         mark_valid_location_for_stdc_pragma,
16160         valid_location_for_stdc_pragma_p, handle_stdc_pragma,
16161         handle_pragma_float_const_decimal64): New.
16162         (init_pragma): Register new pragma FLOAT_CONST_DECIMAL64.
16163         * cp/semantics.c (valid_location_for_stdc_pragma_p,
16164         set_float_const_decimal64, clear_float_const_decimal64,
16165         float_const_decimal64_p): New dummy functions.
16166         * doc/extend.texi (Decimal Float): Remove statement that the
16167         pragma, and suffix for double constants, are not supported.
16168         * doc/invoke.texi (Warning Options): List new option.
16169         (-Wunsuffixed-float-constants): New.
16170
16171 2009-05-08  Steven Bosscher  <steven@gcc.gnu.org>
16172
16173         * config/i386/i386.c: Do not include c-common.h.
16174
16175 2009-05-07  Mark Heffernan  <meheff@google.com>
16176
16177         * doc/invoke.texi (Debugging Options): Document change of debugging
16178         dump location.
16179         * opts.c (decode_options): Make dump_base_name relative to
16180         aux_base_name directory.
16181
16182 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
16183
16184         * config/picochip/picochip.h (NO_DOLLAR_IN_LABEL): Added.
16185         * config/picochip/libgccExtras/divmod15.asm : Removed redefiniton.
16186
16187 2009-05-07  Rafael Avila de Espindola  <espindola@google.com>
16188
16189         * Makefile.in (install-plugin): Simplify a bit.
16190
16191 2009-05-07  Paolo Bonzini  <bonzini@gnu.org>
16192
16193         * Makefile.in (OBJS-common): Add regcprop.o.
16194         (regcprop.o): New.
16195         * timevar.def (TV_CPROP_REGISTERS): New.
16196         * regrename.c (regrename_optimize): Return 0.
16197         (rest_of_handle_regrename): Delete.
16198         (pass_rename_registers): Point to regrename_optimize.
16199         (struct value_data_entry, struct value_data,
16200         kill_value_one_regno, kill_value_regno, kill_value,
16201         set_value_regno, init_value_data, kill_clobbered_value,
16202         kill_set_value, kill_autoinc_value, copy_value,
16203         mode_change_ok, maybe_mode_change, find_oldest_value_reg,
16204         replace_oldest_value_reg, replace_oldest_value_addr,
16205         replace_oldest_value_mem, copyprop_hardreg_forward_1,
16206         debug_value_data, validate_value_data): Move...
16207         * regcprop.c: ... here.
16208         (rest_of_handle_cprop): Delete.
16209         (pass_cprop_hardreg): Point to copyprop_hardreg_forward.
16210
16211 2009-05-07  Jakub Jelinek  <jakub@redhat.com>
16212
16213         PR middle-end/40057
16214         * dojump.c (prefer_and_bit_test): Use immed_double_const instead of
16215         GEN_INT for 1 << bitnum.
16216         (do_jump) <case BIT_AND_EXPR>: Use build_int_cst_wide_type instead of
16217         build_int_cst_type.
16218
16219 2009-05-07  Uros Bizjak  <ubizjak@gmail.com>
16220
16221         * doc/md.texi (Standard Pattern Names For Generation) [sync_nand]:
16222         Remove wrong description of "nand" operation.
16223
16224 2009-05-06  Richard Guenther  <rguenther@suse.de>
16225             Adam Nemet  <anemet@caviumnetworks.com>
16226
16227         * gimple.def (GIMPLE_ASSIGN): Fix incorrect information in the
16228         comment.  Add that if LHS is not a gimple register, then RHS1 has
16229         to be a single object (GIMPLE_SINGLE_RHS).
16230
16231 2009-05-06  Adam Nemet  <anemet@caviumnetworks.com>
16232
16233         * expr.c (get_def_for_expr): Move it up in the file.
16234         (store_field): When expanding a bit-field store, look at the
16235         defining gimple stmt for the masking conversion.
16236
16237 2009-05-06  Janis Johnson  <janis187@us.ibm.com>
16238
16239         PR middle-end/39986
16240         * dfp.c (encode_decimal32, decode_decimal32, encode_decimal64,
16241         decode_decimal64, encode_decimal128, decode_decimal128): Avoid
16242         32-bit memcpy into long.
16243
16244 2009-05-06  Jakub Jelinek  <jakub@redhat.com>
16245
16246         * dwarf2out.c (new_reg_loc_descr): Don't ever create DW_OP_regX.
16247         (one_reg_loc_descriptor): Create DW_OP_regX here instead of calling
16248         new_reg_loc_descr.
16249         (loc_by_reference): If loc is DW_OP_regX, change it into DW_OP_bregX 0
16250         instead of appending DW_OP_deref*.
16251
16252 2009-05-06  Michael Matz  <matz@suse.de>
16253
16254         PR middle-end/40021
16255         * cfgexpand.c (maybe_cleanup_end_of_block): New static function.
16256         (expand_gimple_cond): Use it to cleanup CFG and superfluous jumps.
16257
16258 2009-05-06  Rafael Avila de Espindola  <espindola@google.com>
16259
16260         * Makefile.in (install-plugin): Fix srcdir handling.
16261
16262 2009-05-06  Andrey Belevantsev  <abel@ispras.ru>
16263
16264         * tree-ssa.c (execute_update_address_taken): Handle TARGET_MEM_REF
16265         when processing for not_regs_needed bitmap.
16266         * gimple.c (walk_stmt_load_store_addr_ops): When visiting address,
16267         handle TARGET_MEM_REF in lhs.  Check TMR_BASE for NULL while
16268         handling it for rhs.
16269
16270 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
16271
16272         * config/i386/i386.md (unnamed inc/dec peephole): Use
16273         optimize_insn_for_size_p instead of optimize_size.
16274         * config/i386/predicates.md (incdec_operand): Likewise.
16275         (aligned_operand): Likewise.
16276         * config/i386/sse.md (divv8sf3): Likewise.
16277         (sqrtv8sf2): Likewise.
16278
16279 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
16280
16281         * config/i386/i386.c (ix86_build_signbit_mask): Make it static.
16282
16283         * config/i386/i386-protos.h (ix86_build_signbit_mask): Removed.
16284
16285 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
16286
16287         * config/i386/i386.md (*avx_<code><mode>3_finite): Replace
16288         ssemodesuffixf2c with avxmodesuffixf2c.
16289
16290 2009-05-06  Joseph Myers  <joseph@codesourcery.com>
16291
16292         PR c/40032
16293         * c-decl.c (grokdeclarator): Handle incomplete type of unnamed field.
16294
16295 2009-05-05  Jakub Jelinek  <jakub@redhat.com>
16296
16297         * tree.h: Remove DECL_BY_REFERENCE from private_flag comment.
16298         (struct tree_base): Adjust spacing for 8 bit boundaries.
16299         (struct tree_decl_common): Add decl_by_reference_flag bit.
16300         (DECL_BY_REFERENCE): Adjust.
16301         * print-tree.c (print_node): For VAR_DECL, PARM_DECL or RESULT_DECL,
16302         print DECL_BY_REFERENCE bit.
16303         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Revert last change.
16304         * dwarf2out.c (loc_by_reference, gen_decl_die): Check
16305         DECL_BY_REFERENCE for all VAR_DECLs, not just non-static ones.
16306         (gen_variable_die): Likewise.  Check TREE_PRIVATE/TREE_PROTECTED
16307         unconditionally.
16308
16309         PR middle-end/39666
16310         * gimplify.c (gimplify_switch_expr): If case labels cover the whole
16311         range of the type, but default label is missing, add it with one
16312         of the existing labels instead of adding a new label for it.
16313
16314 2009-05-05  Joseph Myers  <joseph@codesourcery.com>
16315
16316         * dwarf.h: Remove.
16317
16318 2009-05-05  Rafael Avila de Espindola  <espindola@google.com>
16319
16320         * Makefile.in (enable_plugin, plugin_includedir): New.
16321         (install): Depend on install-plugin.
16322         (PLUGIN_HEADERS): New.
16323         (install-plugin): New.
16324         * config.gcc: Add vxworks-dummy.h to tm_file for x86 and x86-64.
16325
16326 2009-05-05  Richard Guenther  <rguenther@suse.de>
16327
16328         PR tree-optimization/40022
16329         * tree-ssa-phiprop.c (struct phiprop_d): Exchange vop_stmt for
16330         the only vuse.
16331         (phivn_valid_p): Fix tuplification error, simplify.
16332         (phiprop_insert_phi): Add dumps.
16333         (propagate_with_phi): Simplify.
16334
16335 2009-05-05  Richard Guenther  <rguenther@suse.de>
16336
16337         PR middle-end/40023
16338         * builtins.c (gimplify_va_arg_expr): Properly build the address.
16339
16340 2009-05-05  Shujing Zhao  <pearly.zhao@oracle.com>
16341
16342         * tree.h (strip_float_extensions): Remove duplicate declaration.
16343         (build_low_bits_mask, debug_fold_checksum, expand_function_end,
16344         expand_function_start, stack_protect_prologue, stack_protect_epilogue,
16345         block_ultimate_origin): Rearrange the declarations line to match the
16346         comment that indicates the .c file which the functions are defined.
16347         (dwarf2out_*, set_decl_rtl): Add comment.
16348         (get_base_address): Adjust comment.
16349         (change_decl_assembler_name, maybe_fold_*, build_addr): Rearrange the
16350         declarations line and add comment.
16351         (is_builtin_name): Add blank after function name, for clarity.
16352
16353 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
16354
16355         * attribs.c (decl_attributes): Use %qE for identifiers in
16356         diagnostics.
16357         * cgraphunit.c (verify_cgraph_node): Translate function names to
16358         locale character set in diagnostics.
16359         * coverage.c (get_coverage_counts): Use %qE for identifiers in
16360         diagnostics.
16361         * doc/invoke.texi (-finstrument-functions-exclude-function-list):
16362         Document that functions are named in UTF-8.
16363         * expr.c (expand_expr_real_1): Translate function names to locale
16364         character set in diagnostics.
16365         * gimplify.c (omp_notice_variable, omp_is_private,
16366         gimplify_scan_omp_clauses): Use %qE for identifiers in
16367         diagnostics.
16368         * langhooks.c (lhd_print_error_function): Translate function names
16369         to locale character set.
16370         * langhooks.h (decl_printable_name): Document that return value is
16371         in internal character set.
16372         * stmt.c: Include pretty-print.h
16373         (tree_conflicts_with_clobbers_p): Use %qE for identifiers in
16374         diagnostics.
16375         (resolve_operand_name_1): Translate named operand name to locale
16376         character set.
16377         * stor-layout.c (finalize_record_size): Use %qE for identifiers in
16378         diagnostics.
16379         * toplev.c (announce_function): Translate function names to locale
16380         character set.
16381         (warn_deprecated_use): Use %qE for identifiers in diagnostics.
16382         (default_tree_printer): Use pp_identifier or translate identifiers
16383         to locale character set.  Mark "<anonymous>" for translation.
16384         * tree-mudflap.c (mx_register_decls, mudflap_finish_file): Use %qE
16385         for identifiers in diagnostics.
16386         * tree.c (handle_dll_attribute): Use %qE for identifiers in
16387         diagnostics.
16388         * varasm.c (output_constructor): Use %qE for identifiers in
16389         diagnostics.
16390
16391 2009-05-04  Rafael Avila de Espindola  <espindola@google.com>
16392
16393         * configure.ac: use ` ` instead of $()
16394         * configure: Regenerate.
16395
16396 2009-05-05  Ben Elliston  <bje@au.ibm.com>
16397
16398         * config/pa/linux-atomic.c: Eliminate conditional include of
16399         errno.h on non-LP64 systems to simplify build requirements.
16400
16401 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
16402
16403         * c-common.c (handle_mode_attribute): Use %qE for identifiers in
16404         diagnostics.
16405         * c-decl.c (check_bitfield_type_and_width): Make orig_name a tree
16406         and pass value to identifier_to_locale.
16407         (warn_variable_length_array): Make name a tree.
16408         (grokdeclarator): Separate diagnostic texts for named and unnamed
16409         declarators.  Use %qE for named declarators.
16410         * c-parser.c (c_lex_one_token): Use %qE for identifiers in
16411         diagnostics.
16412         * c-pragma.c (pop_alignment, handle_pragma_pack): Use %qE for
16413         identifiers in diagnostics.
16414         * c-typeck.c (push_member_name, start_init): Pass identifiers to
16415         identifier_to_locale.  Mark "anonymous" strings for translation.
16416
16417 2009-05-04  Michael Eager <eager@eagercon.com>
16418
16419         * config/rs6000/rs6000.c (rs6000_legitimate_address): Allow
16420         address for DImode/DFmode only if double-precision FP regs.
16421
16422 2009-05-04  Michael Eager <eager@eagercon.com>
16423
16424         * config/rs6000/rs6000.c (rs6000_libcall_value): Add
16425         TARGET_SINGLE_FLOAT check.
16426
16427 2009-05-04  Michael Eager <eager@eagercon.com>
16428
16429         * config/rs6000/xilinx.h: Add CPP_SPEC for -mxilinx-fpu options.
16430
16431 2009-05-04  Michael Eager <eager@eagercon.com>
16432
16433         * gcc/config.gcc: (powerpc-xilinx-eabi*): Add tm t-xilinx
16434         * config/rs6000/t-xilinx: New
16435
16436 2009-05-04  Paolo Bonzini  <bonzini@gnu.org>
16437
16438         * doc/tm.texi (LEGITIMIZE_ADDRESS): Revise documentation.
16439         * gcc/defaults.h (LEGITIMIZE_ADDRESS): Delete.
16440         * gcc/explow.c (memory_address): Use target hook.
16441         * gcc/targhooks.c (default_legitimize_address): New.
16442         * gcc/targhooks.h (default_legitimize_address): New.
16443         * gcc/target.h (legitimize_address): New.
16444         * gcc/target-def.h (TARGET_LEGITIMIZE_ADDRESS): New.
16445         (TARGET_INITIALIZER): Include it.
16446         * gcc/system.h (LEGITIMIZE_ADDRESS): Poison.
16447
16448         * config/bfin/bfin-protos.h (legitimize_address): Remove.
16449         * config/bfin/bfin.c (legitimize_address): Remove.
16450         * config/bfin/bfin.h (LEGITIMIZE_ADDRESS): Remove.
16451         * config/m68hc11/m68hc11-protos.h (m68hc11_legitimize_address):
16452         Remove.
16453         * config/m68hc11/m68hc11.c (m68hc11_legitimize_address): Remove.
16454         * config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Remove.
16455
16456         * gcc/config/arm/arm.h (LEGITIMIZE_ADDRESS, ARM_LEGITIMIZE_ADDRESS,
16457         THUMB_LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS): Delete.
16458         * gcc/config/s390/s390.h (LEGITIMIZE_ADDRESS): Delete.
16459         * gcc/config/m32c/m32c.h (LEGITIMIZE_ADDRESS): Delete.
16460         * gcc/config/sparc/sparc.h (LEGITIMIZE_ADDRESS): Delete.
16461         * gcc/config/m32r/m32r.h (LEGITIMIZE_ADDRESS): Delete.
16462         * gcc/config/i386/i386.h (LEGITIMIZE_ADDRESS): Delete.
16463         * gcc/config/sh/sh.h (LEGITIMIZE_ADDRESS): Delete.
16464         * gcc/config/avr/avr.h (LEGITIMIZE_ADDRESS): Delete.
16465         * gcc/config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Delete.
16466         * gcc/config/iq2000/iq2000.h (LEGITIMIZE_ADDRESS): Delete.
16467         * gcc/config/mn10300/mn10300.h (LEGITIMIZE_ADDRESS): Delete.
16468         * gcc/config/m68k/m68k.h (LEGITIMIZE_ADDRESS): Delete.
16469         * gcc/config/score/score.h (LEGITIMIZE_ADDRESS): Delete.
16470         * gcc/config/pa/pa.h (LEGITIMIZE_ADDRESS): Delete.
16471         * gcc/config/mips/mips.h (LEGITIMIZE_ADDRESS): Delete.
16472         * gcc/config/alpha/alpha.h (LEGITIMIZE_ADDRESS): Delete.
16473         * gcc/config/frv/frv.h (LEGITIMIZE_ADDRESS): Delete.
16474         * gcc/config/spu/spu.h (LEGITIMIZE_ADDRESS): Delete.
16475         * gcc/config/xtensa/xtensa.h (LEGITIMIZE_ADDRESS): Delete.
16476         * gcc/config/cris/cris.h (LEGITIMIZE_ADDRESS): Delete.
16477         * gcc/config/rs6000/rs6000.h (LEGITIMIZE_ADDRESS): Delete.
16478         * gcc/config/picochip/picochip.h (LEGITIMIZE_ADDRESS): Delete.
16479
16480         * gcc/config/s390/s390-protos.h (legitimize_address): Delete.
16481         * gcc/config/m32c/m32c-protos.h (m32c_legitimize_address): Delete.
16482         * gcc/config/sparc/sparc-protos.h (legitimize_address): Delete.
16483         * gcc/config/i386/i386-protos.h (legitimize_address): Delete.
16484         * gcc/config/avr/avr-protos.h (legitimize_address): Delete.
16485         * gcc/config/mn10300/mn10300-protos.h (legitimize_address): Delete.
16486         * gcc/config/score/score-protos.h (score_legitimize_address): Delete.
16487         * gcc/config/arm/arm-protos.h (arm_legitimize_address,
16488         (thumb_legitimize_address): Delete.
16489         * gcc/config/pa/pa-protos.h (hppa_legitimize_address): Delete.
16490         * gcc/config/mips/mips-protos.h (mips_legitimize_address): Delete.
16491         * gcc/config/alpha/alpha-protos.h (alpha_legitimize_address): Delete.
16492         * gcc/config/frv/frv-protos.h (frv_legitimize_address): Delete.
16493         * gcc/config/spu/spu-protos.h (spu_legitimize_address): Delete.
16494         * gcc/config/xtensa/xtensa-protos.h (xtensa_legitimize_address):
16495         Delete.
16496         * gcc/config/rs6000/rs6000-protos.h (rs6000_legitimize_address):
16497         Delete.
16498
16499         * config/arm/arm.c (arm_legitimize_address): Maybe call Thumb version.
16500         * config/m32c/m32c.c (m32c_legitimize_address): Standardize.
16501         * config/m32r/m32r.c (m32r_legitimize_address): New.
16502         * config/m68k/m68k.c (m68k_legitimize_address): New.
16503         * config/score/score.c (score_legitimize_address): Standardize.
16504         * config/score/score3.c (score3_legitimize_address): Standardize.
16505         * config/score/score3.h (score3_legitimize_address): Adjust.
16506         * config/score/score7.c (score7_legitimize_address): Standardize.
16507         * config/score/score7.h (score7_legitimize_address): Adjust.
16508         * config/sh/sh.c (sh_legitimize_address): New.
16509         * config/iq2000/iq2000.c (iq2000_legitimize_address): New.
16510
16511         * gcc/config/s390/s390.c (legitimize_address): Rename to...
16512         (s390_legitimize_address): ... this.
16513         * gcc/config/sparc/sparc.c (legitimize_address): Rename to...
16514         (sparc_legitimize_address): ... this.
16515         * gcc/config/i386/i386.c (legitimize_address): Rename to...
16516         (ix86_legitimize_address): ... this.
16517         * gcc/config/avr/avr.c (legitimize_address): Rename to...
16518         (avr_legitimize_address): ... this.
16519         * gcc/config/mn10300/mn10300.c (legitimize_address): Rename to...
16520         (mn10300_legitimize_address): ... this.
16521         * config/alpha/alpha.c (alpha_legitimize_address): Wrap...
16522         (alpha_legitimize_address_1): ... the old alpha_legitimize_address.
16523         (alpha_expand_mov): Adjust call.
16524
16525         * config/frv/frv.c (frv_legitimize_address): Return x on failure.
16526         * config/spu/spu.c (spu_legitimize_address): Likewise.
16527         * config/xtensa/xtensa.c (xtensa_legitimize_address): Likewise.
16528         * config/rs6000/rs6000.c (rs6000_legitimize_address): Likewise.
16529
16530 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
16531
16532         * intl.c (locale_encoding, locale_utf8): New.
16533         (gcc_init_libintl): Initialize locale_encoding and locale_utf8.
16534         * intl.h (locale_encoding, locale_utf8): Declare.
16535         * pretty-print.c: Include ggc.h.  Include iconv.h if HAVE_ICONV.
16536         (pp_base_tree_identifier, decode_utf8_char, identifier_to_locale):
16537         New.
16538         * pretty-print.h (pp_identifier): Call identifier_to_locale on ID
16539         argument.
16540         (pp_tree_identifier): Define to call pp_base_tree_identifier.
16541         (pp_base_tree_identifier): Declare as function.
16542         (identifier_to_locale): Declare.
16543         * Makefile.in (pretty-print.o): Update dependencies.
16544         * varasm.c (finish_aliases_1): Use %qE for identifiers in diagnostics.
16545
16546 2009-05-04  Richard Guenther  <rguenther@suse.de>
16547
16548         PR middle-end/40015
16549         * builtins.c (fold_builtin_memory_op): Do not decay to element
16550         type if the size matches the whole array.
16551
16552 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
16553
16554         * expmed.c (synth_mult): When trying out a shift, pass the result
16555         of a signed shift.
16556
16557 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
16558
16559         * expmed.c (shiftsub_cost): Rename to shiftsub0_cost.
16560         (shiftsub1_cost): New.
16561         (init_expmed): Compute shiftsub1_cost.
16562         (synth_mult): Optimize multiplications by constants of the form
16563         -(2^^m-1) for some constant positive integer m.
16564
16565 2009-05-03  Richard Guenther  <rguenther@suse.de>
16566
16567         PR c/39983
16568         * c-typeck.c (array_to_pointer_conversion): Do not built
16569         ADDR_EXPRs of arrays of pointer-to-element type.
16570         * c-gimplify.c (c_gimplify_expr): Revert change fixing
16571         up wrong ADDR_EXPRs after-the-fact.
16572         * c-common.c (strict_aliasing_warning): Strip pointer
16573         conversions for obtaining the original type.
16574         * builtins.c (fold_builtin_memset): Handle array types.
16575         (fold_builtin_memory_op): Handle folded POINTER_PLUS_EXPRs
16576         and array types
16577
16578 2009-05-03  Richard Guenther  <rguenther@suse.de>
16579
16580         PR middle-end/23329
16581         * tree-ssa.c (useless_type_conversion_p_1): Use get_deref_alias_set.
16582         Do not lose casts from array types with unknown extent to array
16583         types with known extent.
16584         * tree-ssa-copy.c (may_propagate_copy): Remove hack checking for
16585         alias set compatibility.
16586
16587 2009-05-03  Manuel López-Ibáñez  <manu@gcc.gnu.org>
16588
16589         * flags.h (extra_warnings): Delete.
16590         * toplev.c (process_options): Handle Wuninitialized here.
16591         * opts.c (extra_warnings): Delete.
16592         (set_Wextra): Delete.
16593         (common_handle_option): -Wextra can be handled automatically.
16594         * c-opts.c (c_common_handle_option): Delete obsolete code.
16595         (c_common_post_options): Simplify comment.
16596         * common.opt (W): Add Var.
16597         (Wextra): Add Var.
16598         (Wuninitialized): Initialize to -1.
16599
16600 2009-05-03  Adam Nemet  <anemet@caviumnetworks.com>
16601             Richard Guenther  <rguenther@suse.de>
16602
16603         * expr.c (get_def_for_expr): New function.
16604         (expand_expr_real_1) <PLUS_EXPR, MINUS_EXPR>: Adjust to work with
16605         SSA rather than trees.
16606         <MULT_EXPR>: Likewise.  Use subexp0 and subexp1 instead of
16607         TREE_OPERAND (exp, 0) and TREE_OPERAND (exp, 1).
16608
16609 2009-05-03  Joseph Myers  <joseph@codesourcery.com>
16610
16611         * c-common.c (reswords): Add _Imaginary.
16612         * c-common.c (enum rid): Add RID_IMAGINARY.
16613
16614 2009-05-03  Paolo Bonzini  <bonzini@gnu.org>
16615
16616         * tree.h (TYPE_VECTOR_OPAQUE): Fix documentation.
16617         Patch by Richard Guenther.
16618
16619 2009-05-03  Anatoly Sokolov  <aesok@post.ru>
16620
16621         * defaults.h (FRAME_POINTER_REQUIRED): Provide default.
16622         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
16623         * config/alpha/alpha.h (FRAME_POINTER_REQUIRED): Delete.
16624         * config/s390/s390.h (FRAME_POINTER_REQUIRED): Delete.
16625         * config/spu/spu.h (FRAME_POINTER_REQUIRED): Delete.
16626         * config/sh/sh.h (FRAME_POINTER_REQUIRED): Delete.
16627         * config/pdp11/pdp11.h (FRAME_POINTER_REQUIRED): Delete.
16628         * config/stormy16/stormy16.h (FRAME_POINTER_REQUIRED): Delete.
16629         * config/m68hc11/m68hc11.h (FRAME_POINTER_REQUIRED): Delete.
16630         * config/iq2000/iq2000.h (FRAME_POINTER_REQUIRED): Delete.
16631         * config/mn10300/mn10300.h (FRAME_POINTER_REQUIRED): Delete.
16632         * config/ia64/ia64.h (FRAME_POINTER_REQUIRED): Delete.
16633         * config/m68k/m68k.h (FRAME_POINTER_REQUIRED): Delete.
16634         * config/rs6000/rs6000.h (FRAME_POINTER_REQUIRED): Delete.
16635         * config/picochip/picochip.h (FRAME_POINTER_REQUIRED): Delete.
16636         * config/mcore/mcore.h (FRAME_POINTER_REQUIRED): Delete.
16637         * config/h8300/h8300.h (FRAME_POINTER_REQUIRED): Delete.
16638         * config/v850/v850.h (FRAME_POINTER_REQUIRED): Delete.
16639
16640 2009-05-02  Richard Guenther  <rguenther@suse.de>
16641
16642         PR tree-optimization/39940
16643         * tree-ssa-pre.c (eliminate): Make sure we may propagate before
16644         doing so.
16645
16646 2009-05-02  Richard Guenther  <rguenther@suse.de>
16647
16648         PR middle-end/40001
16649         * tree-ssa.c (execute_update_addresses_taken): Properly check
16650         if we can mark a variable DECL_GIMPLE_REG_P.
16651         * gimple.c (is_gimple_reg): Re-order check for DECL_GIMPLE_REG_P
16652         back to the end of the function.
16653         (is_gimple_reg_type): Remove complex type special casing.
16654         * gimplify.c (gimplify_bind_expr): Do not set DECL_GIMPLE_REG_P
16655         if not optimizing.
16656
16657 2009-05-02  Ben Elliston  <bje@au.ibm.com>
16658
16659         * doc/collect2.texi (Collect2): Document search path behaviour
16660         when configured with --with-ld.
16661
16662 2009-05-02  Jan Hubicka  <jh@suse.cz>
16663
16664         * tree-ssa-coalesce.c (coalesce_cost): Do not take ciritical
16665         parameter; update callers.
16666         (coalesce_cost_edge): EH edges are costier because they needs
16667         splitting even if not critical and even more costier when there are
16668         multiple EH predecestors.
16669
16670 2009-05-02  Jan Hubicka  <jh@suse.cz>
16671
16672         * except.c (remove_eh_handler_and_replace): Handle updating after
16673         removing TRY blocks.
16674
16675 2009-05-02  Eric Botcazou  <ebotcazou@adacore.com>
16676
16677         * store-motion.c (compute_store_table): Add ENABLE_CHECKING guard.
16678
16679 2009-05-02  Steven Bosscher  <steven@gcc.gnu.org>
16680
16681         * varasm.c: Do not include c-pragma.h.
16682         * attribs.c: Do not incude c-common.h.
16683
16684 2009-05-01  Michael Matz  <matz@suse.de>
16685
16686         * calls.c (initialize_argument_information): Handle SSA names like
16687         decls with a non MEM_P DECL_RTL.
16688
16689 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
16690
16691         * ipa-reference.c: Do not include c-common.h, include splay-tree.h.
16692         * ipa-utils.c: Likewise.
16693         * ipa-type-escape.c: Likewise.
16694         * cgraphunit.c Do not include c-common.h.
16695         * ipa-pure-const.c: Likewise.
16696         * tree-if-conv.c: Likewise.
16697         * matrix-reorg.c: Do not include c-common.h and c-tree.h.
16698         * ipa-struct-reorg.c: Likewise.
16699         * tree-nomudflap.c: Likewise.
16700         * tree-ssa-structalias.c: Likewise.
16701
16702 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
16703
16704         * store-motion.c: Many cleanups to make this pass a first-class
16705         citizen instead of an appendix to gcse load motion.  Add TODO list
16706         to make this pass faster/cleaner/better.
16707
16708         (struct ls_expr): Post gcse.c-split cleanups.
16709         Rename to st_expr.  Rename "loads" field to "antic_stores".  Rename
16710         "stores" field to "avail_stores".
16711         (pre_ldst_mems): Rename to store_motion_mems.
16712         (pre_ldst_table): Rename to store_motion_mems_table.
16713         (pre_ldst_expr_hash): Rename to pre_st_expr_hash, update users.
16714         (pre_ldst_expr_eq): Rename to pre_st_expr_eq, update users.
16715         (ldst_entry): Rename to st_expr_entry, update users.
16716         (free_ldst_entry): Rename to free_st_expr_entry, update users.
16717         (free_ldst_mems): Rename to free_store_motion_mems, update users.
16718         (enumerate_ldsts): Rename to enumerate_store_motion_mems,
16719         update caller.
16720         (first_ls_expr): Rename to first_st_expr, update users.
16721         (next_ls_expr): Rename to next_st_expr, update users.
16722         (print_ldst_list): Rename to print_store_motion_mems.  Print names of
16723         fields properly for store motion instead of names inherited from load
16724         motion in gcse.c.
16725         (ANTIC_STORE_LIST, AVAIL_STORE_LIST): Remove.
16726         (LAST_AVAIL_CHECK_FAILURE): Explain what this is.  Undefine when we
16727         are done with it.
16728
16729         (ae_kill): Rename to st_kill, update users.
16730         (ae_gen): Rename to st_avloc, update users.
16731         (transp): Rename to st_transp, update users.
16732         (pre_insert_map): Rename to st_insert_map, update users.
16733         (pre_delete_map): Rename to st_delete_map, update users.
16734         (insert_store, build_store_vectors, free_store_memory,
16735         one_store_motion_pass): Update for abovementioned changes.
16736
16737         (gcse_subst_count, gcse_create_count): Remove.
16738         (one_store_motion_pass): New statistics counters "n_stores_deleted"
16739         and "n_stores_created", local variables.
16740
16741         (extract_mentioned_regs, extract_mentioned_regs_1): Rewrite to
16742         use for_each_rtx.
16743
16744         (regvec, compute_store_table_current_insn): Remove.
16745         (reg_set_info, reg_clear_last_set): Remove.
16746         (compute_store_table): Use DF caches instead of local dataflow
16747         solvers.
16748
16749 2009-05-01  Joseph Myers  <joseph@codesourcery.com>
16750
16751         * c-objc-common.c (c_tree_printer): Print identifiers with
16752         pp_identifier, not pp_string.  Mark "({anonymous})" for
16753         translation.
16754         * c-pretty-print.c (pp_c_ws_string): New.
16755         (pp_c_cv_qualifier, pp_c_type_specifier,
16756         pp_c_specifier_qualifier_list, pp_c_parameter_type_list,
16757         pp_c_storage_class_specifier, pp_c_function_specifier,
16758         pp_c_attributes, pp_c_bool_constant, pp_c_constant,
16759         pp_c_primary_expression, pp_c_postfix_expression,
16760         pp_c_unary_expression, pp_c_shift_expression,
16761         pp_c_relational_expression, pp_c_equality_expression,
16762         pp_c_logical_and_expression, pp_c_logical_or_expression): Mostly
16763         use pp_string and pp_c_ws_string in place of pp_identifier and
16764         pp_c_identifier for non-identifiers.  Mark English strings for
16765         translation.
16766         * c-pretty-print.h (pp_c_ws_string): Declare.
16767
16768 2009-04-30  Paul Pluzhnikov  <ppluzhnikov@google.com>
16769             Roland McGrath <roland@redhat.com>
16770
16771         * configure.ac (HAVE_LD_BUILDID): New check for ld --build-id support.
16772         (ENABLE_LD_BUILDID): New configuration option.
16773         * gcc.c [HAVE_LD_BUILDID and ENABLE_LD_BUILDID]
16774         (LINK_BUILDID_SPEC): New macro.
16775         (init_spec): If defined, prepend it between LINK_EH_SPEC and
16776         link_spec.
16777         * doc/install.texi: Document --enable-linker-build-id option.
16778         * configure: Rebuild.
16779         * config.in: Rebuild.
16780
16781 2009-04-30  Adam Nemet  <anemet@caviumnetworks.com>
16782
16783         * config/mips/mips.h (FRAME_GROWS_DOWNWARD,
16784         MIPS_GP_SAVE_AREA_SIZE): Define new macros.
16785         (STARTING_FRAME_OFFSET): Return 0 if FRAME_GROWS_DOWNWARD.  Use
16786         MIPS_GP_SAVE_AREA_SIZE.
16787         * config/mips/mips.c (struct mips_frame_info): Update comment
16788         before arg_pointer_offset and hard_frame_pointer_offset.
16789         (mips_compute_frame_info): Update diagram before function: to
16790         correctly use stack_pointer_rtx for fp_sp_offset and gp_sp_offset, to
16791         indicate the position of frame_pointer_rtx with -fstack-protector and
16792         to show args_size.  Don't allocate cprestore area for leaf functions
16793         if FRAME_GROWS_DOWNWARD.  Use MIPS_GP_SAVE_AREA_SIZE to set
16794         cprestore_size.
16795         (mips_initial_elimination_offset): Update for FRAME_GROWS_DOWNWARD.
16796
16797 2009-04-30  Michael Matz  <matz@suse.de>
16798
16799         PR tree-optimization/39955
16800         * config/rs6000/rs6000.c (rs6000_check_sdmode): Also check SSA_NAMEs.
16801
16802 2009-04-30  Dave Korn  <dave.korn.cygwin@gmail.com>
16803
16804         * ira.c (setup_cover_and_important_classes):  Use safe macro
16805         REG_CLASS_FOR_CONSTRAINT instead of calling regclass_for_constraint
16806         directly.
16807         * genpreds.c (write_tm_preds_h):  Output suitable definition of
16808         REG_CLASS_FOR_CONSTRAINT.
16809
16810 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
16811
16812         * alloc-pool.c (alloc_pool_descriptor): Use an insert_opion value
16813         instead of an int.
16814         * bitmap.c (bitmap_descriptor): Likewise.
16815         * ggc-common.c (loc_descriptor): Likewise.
16816         * varray.c (varray_descriptor): Likewise.
16817         * vec.c (vec_descriptor): Likewise.
16818
16819 2009-04-30  Eric Botcazou  <ebotcazou@adacore.com>
16820
16821         * Makefile.in (dce.o): Add $(EXCEPT_H).
16822         * dce.c: Include except.h and delete redundant vector definitions.
16823         (deletable_insn_p): Return false for non-call insns that can throw
16824         if DF is running.
16825
16826 2009-04-30  Steven Bosscher  <steven@gcc.gnu.org>
16827
16828         * gcse.c (ae_gen): Remove.
16829         (can_assign_to_reg_p): Rename to can_assign_to_reg_without_clobbers_p
16830         and make non-static function to make it available in store-motion.c.
16831         Update call sites with search-and-replace.
16832         (enumerate_ldsts, reg_set_info, reg_clear_last_set, store_ops_ok,
16833         extract_mentioned_regs, extract_mentioned_regs_helper,
16834         find_moveable_store, compute_store_table, load_kills_store, find_loads,
16835         store_killed_in_insn, store_killed_after, store_killed_before,
16836         build_store_vectors, insert_insn_start_basic_block, insert-store,
16837         remove_reachable_equiv_notes, replace_store_insn, delete_store,
16838         free_store_memory, one_store_motion_pass, gate_rtl_store_motion,
16839         execute_rtl_store_motion, pass_rtl_store_motion): Move to...
16840         * store-motion.c: ...new file.  Also copy data structures from gcse.c
16841         and clean up to remove parts not used by store motion.
16842         * rtl.h (can_assign_to_reg_without_clobbers_p): Add prototype.
16843         * Makefile.in (store-motion.o): New rule. Add to OBJS-common.
16844
16845 2009-04-30  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
16846
16847         PR target/38571
16848         * config/arm/arm.h (FUNCTION_BOUNDARY): Set to 16 for thumb
16849         when optimizing for size.
16850
16851 2009-04-30  Hans-Peter Nilsson  <hp@axis.com>
16852
16853         * gcse.c (gcse_constant_p): Fix typo in last change.
16854
16855 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
16856
16857         * plugin.c: Include plugin-version.h only if ENABLE_PLUGIN is defined.
16858
16859 2009-04-30  Andreas Krebbel  <krebbel1@de.ibm.com>
16860
16861         * gcse.c (gcse_constant_p): Make sure the constant is sharable.
16862
16863 2009-04-29  James E. Wilson  <wilson@codesourcery.com>
16864
16865         * config/mips/mips.c (mips_add_offset): Use gen_int_mode for
16866         CONST_HIGH_PART result.
16867
16868 2009-04-29  Anatoly Sokolov  <aesok@post.ru>
16869
16870         * config/avr/avr.c (initial_elimination_offset): Rename to
16871         avr_initial_elimination_offset.
16872         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p,
16873         change return type to bool.
16874         (avr_can_eliminate): New function.
16875         * config/avr/avr.h (CAN_ELIMINATE): Use avr_can_eliminate.
16876         (FRAME_POINTER_REQUIRED): Use avr_frame_pointer_required_p.
16877         (INITIAL_ELIMINATION_OFFSET): Use avr_initial_elimination_offset.
16878         * config/avr/avr-protos.h (initial_elimination_offset): Rename to
16879         avr_initial_elimination_offset.
16880         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p.
16881         (avr_initial_elimination_offset): Define.
16882
16883 2009-04-29  Eric Botcazou  <ebotcazou@adacore.com>
16884             Steven Bosscher  <steven@gcc.gnu.org>
16885
16886         PR rtl-optimization/39938
16887         * Makefile.in (cfgrtl.o): Add $(INSN_ATTR_H).
16888         * cfgrtl.c: Include insn-attr.h.
16889         (rest_of_pass_free_cfg): New function.
16890         (pass_free_cfg): Use rest_of_pass_free_cfg as execute function.
16891         * resource.c (init_resource_info): Remove call to df_analyze.
16892
16893 2009-04-29  Richard Guenther  <rguenther@suse.de>
16894
16895         PR target/39943
16896         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Only
16897         allow conversion to signed integers.
16898
16899 2009-04-29  Richard Guenther  <rguenther@suse.de>
16900
16901         * tree-cfg.c (verify_gimple_assign_binary): Allow vector
16902         shifts of floating point vectors if the shift amount is
16903         a constant multiple of the element size.
16904
16905 2009-04-29  Andreas Krebbel  <krebbel1@de.ibm.com>
16906             Michael Matz  <matz@suse.de>
16907
16908         PR middle-end/39927
16909         PR bootstrap/39929
16910         * tree-outof-ssa.c (emit_partition_copy): New function.
16911         (insert_partition_copy_on_edge, insert_rtx_to_part_on_edge,
16912         insert_part_to_rtx_on_edge): Perform the partition base var
16913         copy using emit_partition_copy.
16914         (insert_value_copy_on_edge): Convert constants to the right mode.
16915         (insert_rtx_to_part_on_edge): Add UNSIGNEDSRCP parameter.
16916         (elim_create): Pass the sign of the src to insert_rtx_to_part_on_edge.
16917
16918 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
16919
16920         * config/bfin/bfin.c (bfin_optimize_loop): If we need a scratch reg,
16921         scan backwards to try to find a constant to initialize it.
16922
16923         * config/bfin/bfin.c (bfin_optimize_loop): When looking for the last
16924         insn before the loop_end instruction, don't look past labels.
16925
16926 2009-04-29  Richard Guenther  <rguenther@suse.de>
16927
16928         PR middle-end/39937
16929         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not
16930         loose type conversions.
16931         (forward_propagate_addr_expr): Fix tuplification bug.  Remove
16932         stmts only if there are no uses of its definition.
16933
16934 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
16935
16936         * config/bfin/bfin.h (splitting_loops): Declare.
16937         * config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315):
16938         Reorder bit definitions to be ascending.
16939         (WA_LOAD_LCREGS, ENABLE_WA_LOAD_LCREGS): New macros.
16940         * config/bfin/bfin.c (splitting_loops): New variable.
16941         (bfin_cpus): Add WA_LOAD_LCREGS as needed.
16942         (struct loop_info): Remove members INIT and LOOP_INIT.
16943         (bfin_optimize_loop): Don't set them.  Reorder the code that generates
16944         the LSETUP sequence.  Allow LC to be loaded from any register, but
16945         also add a case to push/pop a PREG scratch if ENABLE_WA_LOAD_LCREGS.
16946         (bfin_reorg_loops): When done, split all BB_ENDs with splitting_loops
16947         set to 1.
16948         * config/bfin/bfin.md (loop_end splitter): Use splitting_loops instead
16949         of reload_completed.
16950
16951         From Jie Zhang:
16952         * config/bfin/bfin.md (movsi_insn): Refine constraints.
16953
16954 2009-04-29  Rafael Avila de Espindola  <espindola@google.com>
16955
16956         * Makefile.in (PLUGIN_VERSION_H): New.
16957         (OBJS-common): Remove plugin-version.o.
16958         (plugin.o): Depend on (PLUGIN_VERSION_H).
16959         (plugin-version.o): Remove.
16960         * configure: Regenerate
16961         * configure.ac: Create plugin-version.h.
16962         * gcc-plugin.h (plugin_gcc_version): Remove.
16963         (plugin_default_version_check): Change signature.
16964         * plugin-version.c: Remove.
16965         * plugin.c: Include plugin-version.h.
16966         (str_plugin_gcc_version_name): Remove.
16967         (try_init_one_plugin): Pass gcc version to plugin_init.
16968         (plugin_default_version_check): Both gcc and plugin versions are now
16969         arguments.
16970
16971 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
16972
16973         * config/bfin/bfin.c (bfin_optimize_loop): Unify handling of
16974         problematic last insns.  Test for TYPE_CALL rather than CALL_P.
16975         Remove special case testing for last insn of inner loops. Don't fail
16976         if the loop ends with a jump, emit an extra nop instead.
16977
16978         * config/bfin/bfin.c (bfin_register_move_cost): Test for subsets of
16979         DREGS rather than comparing directly.  Remove code that tries to
16980         account for latencies.
16981
16982 2009-04-29  Richard Guenther  <rguenther@suse.de>
16983
16984         PR tree-optimization/39941
16985         * tree-ssa-pre.c (eliminate): Schedule update-ssa after
16986         eliminating an indirect call.
16987
16988 2009-04-29  Richard Guenther  <rguenther@suse.de>
16989
16990         * tree-cfg.c (verify_types_in_gimple_reference): Add require_lvalue
16991         parameter.  Allow invariants as base if !require_lvalue.
16992         (verify_gimple_assign_single): Adjust.
16993
16994 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
16995
16996         * config/bfin/bfin.md (sp_or_sm, spm_string, spm_name): New macro.
16997         (ss<spm_name>hi3, ss<spm_name>hi3_parts, ss<spm_name>hi3_low_parts,
16998         ss<spm_name_hi3_high_parts): New patterns, replacing ssaddhi3,
16999         ssubhi3, ssaddhi3_parts and sssubhi3_parts.
17000         (flag_mulhi3_parts): Produce a HImode output rather than trying to set
17001         a VEC_SELECT.
17002         * config/bfin/bfin.c (bfin_expand_builtin,
17003         case BFIN_BUILTIN_CPLX_SQU): Adjust accordingly.
17004
17005 2009-04-28  Richard Guenther  <rguenther@suse.de>
17006
17007         * tree-vect-loop.c (get_initial_def_for_induction): Use
17008         correct types for pointer increment.
17009
17010 2009-04-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
17011
17012         * toplev.c (print_version): Update GMP version string calculation.
17013
17014 2009-04-28  Eric Botcazou  <ebotcazou@adacore.com>
17015
17016         PR rtl-optimization/39938
17017         * resource.c (init_resource_info): Add call to df_analyze.
17018
17019 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
17020
17021         * config/alpha/alpha.md (usegp): Cast the result of
17022         alpha_find_lo_sum_using_gp to enum attr_usegp.
17023         * config/alpha/alpha.c (override_options): Remove end-of-structure
17024         marker element from cpu_table.  Use array size of cpu_table to handle
17025         -mcpu and -mtune options.
17026         (tls_symbolic_operand_type): Change 0 to TLS_MODEL_NONE.
17027
17028 2009-04-28  Joseph Myers  <joseph@codesourcery.com>
17029
17030         * config.gcc (powerpc*-*-* | rs6000-*-*): Add
17031         rs6000/option-defaults.h to tm_file.  Support cpu_32, cpu_64,
17032         tune_32 and tune_64.
17033         * doc/install.texi (--with-cpu-32, --with-cpu-64): Document
17034         support on PowerPC.
17035         * config/rs6000/rs6000.h (OPTION_DEFAULT_SPECS): Move to ...
17036         * config/rs6000/option-defaults.h: ... here.  New file.
17037         (OPT_64, OPT_32): Define.
17038         (MASK_64BIT): Define to 0 if not already defined.
17039         (OPT_ARCH64, OPT_ARCH32): Define.
17040         (OPTION_DEFAULT_SPECS): Add entries for cpu_32, cpu_64, tune_32
17041         and tune_64.
17042
17043 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
17044
17045         * config/arm/arm.c (arm_override_options): Emit error on using
17046         fpa with AAPCS.
17047
17048 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
17049
17050         PR rtl-optimization/39914
17051         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
17052         registers for allocnos created from user-defined variables only
17053         when not optimizing.
17054
17055 2009-04-28  Richard Guenther  <rguenther@suse.de>
17056
17057         PR middle-end/39937
17058         * fold-const.c (fold_binary): Use distribute_real_division only
17059         on float types.
17060
17061 2009-04-28  Steve Ellcey  <sje@cup.hp.com>
17062
17063         * config.gcc (hppa*64*-*-hpux11*): Set use_gcc_stdint and
17064         add hpux-stdint.h to tm_file.
17065         (hppa[12]*-*-hpux11*): Ditto.
17066         (ia64*-*-hpux*): Ditto.
17067         * config/hpux-stdint.h: New.
17068         * config/ia64/hpux.h (TARGET_OS_CPP_BUILTINS): Set
17069         __STDC_EXT__ for all compiles.
17070         * config/pa/pa-hpux.h: Ditto.
17071         * config/pa/pa-hpux10.h: Ditto.
17072         * config/pa/pa-hpux11.h: Ditto.
17073
17074 2009-04-28  Catherine Moore  <clm@codesourcery.com>
17075
17076         * debug.h (set_name): Add comment.
17077
17078 2009-04-28  Andrew Pinski  <pinskia@gmail.com>
17079
17080         PR target/39929
17081         * config/darwin.c (machopic_gen_offset): Check
17082         currently_expanding_to_rtl if current_ir_type returns IR_GIMPLE.
17083         * config/arm/arm.c (require_pic_register): Likewise.
17084
17085 2009-04-28  Paolo Bonzini  <bonzini@gnu.org>
17086
17087         * config/m32c/m32c.c (TARGET_PROMOTE_FUNCTION_RETURN,
17088         m32c_promote_function_return, TARGET_PROMOTE_PROTOTYPES,
17089         m32c_promote_prototypes): Delete.
17090
17091 2009-04-28  Michael Matz  <matz@suse.de>
17092
17093         PR middle-end/39922
17094         * tree-outof-ssa.c (insert_value_copy_on_edge): Don't convert
17095         constants.
17096
17097 2009-04-28  Richard Guenther  <rguenther@suse.de>
17098
17099         * tree-vect-stmts.c (vect_get_vec_def_for_operand): Fix type error.
17100
17101 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
17102
17103         * config/arm/arm-cores.def: Add support for arm1156t2f-s.
17104         * doc/invoke.texi (ARM Options): Document support for arm1156t2f-s.
17105         * config/arm/arm-tune.md: Regenerate.
17106
17107 2009-04-28  Alexander Monakov  <amonakov@ispras.ru>
17108
17109         * sel-sched-ir.c (maybe_tidy_empty_bb): Do not attempt to delete a
17110         block if there are complex incoming edges.
17111         (sel_merge_blocks): Remove useless assert.
17112         (sel_redirect_edge_and_branch): Check that edge was redirected.
17113         * sel-sched-ir.h (_eligible_successor_edge_p): Remove assert.
17114         (sel_find_rgns): Delete declaration.
17115         * sel-sched.c (purge_empty_blocks): Attempt to remove first block of
17116         the region when it is not a preheader.
17117
17118 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
17119
17120         PR c/39323
17121         * config/alpha/elf.h (MAX_OFILE_ALIGNMENT): Sync with elfos.h
17122
17123 2009-04-28  Richard Guenther  <rguenther@suse.de>
17124
17125         * tree.h (SSA_NAME_VALUE): Remove.
17126         (struct tree_ssa_name): Remove value_handle member.
17127         * tree-vrp.c (execute_vrp): Initialize/free the value-handle
17128         array for jump threading.
17129         * tree-ssa-propagate.c (ssa_prop_init): Do not initialize
17130         SSA_NAME_VALUEs.
17131         * print-tree.c (print_node): Do not dump SSA_NAME_VALUEs.
17132         * tree-flow.h (threadedge_initialize_values): Declare.
17133         (threadedge_finalize_values): Likewise.
17134         * tree-ssa-threadedge.c (ssa_name_values): New global variable.
17135         (SSA_NAME_VALUE): Define.
17136         (threadedge_initialize_values): New function.
17137         (threadedge_finalize_values): Likewise.
17138         * tree-ssa-dom.c (ssa_name_values): New global variable.
17139         (SSA_NAME_VALUE): Define.
17140         (tree_ssa_dominator_optimize): Initialize/free the value-handle array.
17141
17142 2009-04-28  Ira Rosen  <irar@il.ibm.com>
17143
17144         * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks):
17145         Use REPORT_VECTORIZED_LOCATIONS instead
17146         REPORT_VECTORIZED_LOOPS.
17147         * tree-vectorizer.c (vect_verbosity_level): Make static.
17148         (vect_loop_location): Rename to vect_location.
17149         (vect_set_verbosity_level): Update comment.
17150         (vect_set_dump_settings): Use REPORT_VECTORIZED_LOCATIONS
17151         and vect_location.
17152         (vectorize_loops): Fix comment. Use REPORT_VECTORIZED_LOCATIONS
17153         and vect_location. Use REPORT_UNVECTORIZED_LOCATIONS
17154         instead REPORT_UNVECTORIZED_LOOPS.
17155         * tree-vectorizer.h (enum vect_def_type): Rename vect_invariant_def
17156         and vect_loop_def to vect_external_def and vect_internal_def.
17157         (enum verbosity_levels): Rename REPORT_VECTORIZED_LOOPS
17158         and REPORT_UNVECTORIZED_LOOPS to REPORT_VECTORIZED_LOCATIONS and
17159         REPORT_UNVECTORIZED_LOCATIONS.
17160         (enum vect_relevant): Update comment. Rename vect_unused_in_loop
17161         and vect_used_in_loop and to vect_unused_in_scope and
17162         vect_used_in_scope.
17163         (STMT_VINFO_RELEVANT_P): Use vect_unused_in_scope.
17164         (vect_verbosity_level): Remove declaration.
17165         (vect_analyze_operations): Likewise.
17166         (vect_analyze_stmt): Declare.
17167         * tree-vect-loop.c (vect_determine_vectorization_factor): Use
17168         REPORT_UNVECTORIZED_LOCATIONS.
17169         (vect_get_loop_niters): Fix indentation.
17170         (vect_analyze_loop_form): Use REPORT_UNVECTORIZED_LOCATIONS.
17171         (vect_analyze_loop_operations): New function.
17172         (vect_analyze_loop): Call vect_analyze_loop_operations instead of
17173         vect_analyze_operations.
17174         (vect_is_simple_reduction): Use new names.
17175         (vectorizable_live_operation, vect_transform_loop): Likewise.
17176         * tree-vect-data-refs.c (vect_check_interleaving): Add a return value
17177         to specify whether the data references can be a part of interleaving
17178         chain.
17179         (vect_analyze_data_ref_dependence): Use new names.
17180         (vect_analyze_data_refs_alignment, vect_analyze_data_refs): Likewise.
17181         (vect_create_addr_base_for_vector_ref): Remove redundant code.
17182         * tree-vect-patterns.c (widened_name_p): Use new names.
17183         (vect_recog_dot_prod_pattern): Likewise.
17184         * tree-vect-stmts.c (vect_stmt_relevant_p): Use new names.
17185         (process_use, vect_mark_stmts_to_be_vectorized,
17186         vect_model_simple_cost, vect_model_store_cost,
17187         vect_get_vec_def_for_operand, vect_get_vec_def_for_stmt_copy,
17188         vectorizable_call, vectorizable_conversion, vectorizable_assignment,
17189         vectorizable_operation, vectorizable_type_demotion,
17190         vectorizable_type_promotion, vectorizable_store, vectorizable_load,
17191         vectorizable_condition): Likewise.
17192         (vect_analyze_operations): Split into vect_analyze_loop_operations
17193         and ...
17194         (vect_analyze_stmt): ... new function.
17195         (new_stmt_vec_info): Use new names.
17196         (vect_is_simple_use): Use new names and fix comment.
17197         * tree-vect-slp.c (vect_get_and_check_slp_defs): Use new names.
17198         (vect_build_slp_tree, vect_analyze_slp, vect_schedule_slp): Likewise.
17199
17200 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
17201
17202         PR target/39911
17203         * config/i386/i386.c (print_operand) ['Z']: Handle floating point
17204         and integer modes for x87 operands.  Do not ICE for unsupported size,
17205         generate error instead.  Generate error for unsupported operand types.
17206         ['z']: Do not handle HImode memory operands specially.  Warning
17207         for floating-point operands.  Fallthru to 'Z' for unsupported operand
17208         types.  Do not ICE for unsupported size, generate error instead.
17209         (output_387_binary_op): Use %Z to output operands.
17210         (output_fp_compare): Ditto.
17211         (output_387_reg_move): Ditto.
17212
17213 2009-04-28  Ben Elliston  <bje@au.ibm.com>
17214
17215         PR c++/35652
17216         Revert:
17217
17218         2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
17219
17220         * builtins.c (c_strlen): Do not warn here.
17221         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
17222         * c-common.c (pointer_int_sum): Take an explicit location.
17223         Warn about offsets out of bounds.
17224         * c-common.h (pointer_int_sum): Adjust declaration.
17225
17226 2009-04-27  Ian Lance Taylor  <iant@google.com>
17227
17228         * collect2.c (is_ctor_dtor): Change type of ret field in struct
17229         names to symkind.
17230         * dce.c (run_fast_df_dce): Change type of old_flags to int.
17231         * df-core.c (df_set_flags): Change return type to int.  Change
17232         type of old_flags to int.
17233         (df_clear_flags): Likewise.
17234         * df-scan.c (df_def_record_1): Change 0 to VOIDmode.
17235         (df_get_conditional_uses): Likewise.
17236         * df.h (df_set_flags, df_clear_flags): Update declarations.
17237         * dwarf2out.c (struct indirect_string_node): Change type of form
17238         field to enum dwarf_form.
17239         (AT_string_form): Change return type to enum dwarf_form.
17240         * fixed-value.c (fixed_compare): Add cast to enum type.
17241         * fwprop.c (update_df): Change 0 to VOIDmode.
17242         * gensupport.c: Change 0 to UNKNOWN.
17243         * gimple.h (gimple_cond_code): Add cast to enum type.
17244         * haifa-sched.c (reemit_notes): Add cast to enum type.
17245         * hooks.c (hook_int_void_no_regs): Remove function.
17246         * hooks.h (hook_int_void_no_regs): Remove declaration.
17247         * optabs.c (expand_widen_pattern_expr): Change 0 to VOIDmode.
17248         * predict.c (combine_predictions_for_insn): Add casts to enum type.
17249         * real.c (real_arithmetic): Add cast to enum type.
17250         (real_compare): Likewise.
17251         * target.h (struct gcc_target): Change return type of
17252         branch_target_register_class to enum reg_class.
17253         * target-def.h (TARGET_BRANCH_TARGET_REGISTER_CLASS): Define as
17254         default_branch_target_register_class.
17255         * targhooks.c (default_branch_target_register_class): New function.
17256         * targhooks.h (default_branch_target_register_class): Declare.
17257         * tree-data-ref.c (print_direction_vector): Add cast to enum type.
17258         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Remove
17259         cast to int.
17260         * tree-vect-loop.c (vect_create_epilog_for_reduction): Change 0 to
17261         ERROR_MARK.
17262         * tree-vect-slp.c (vect_build_slp_tree): Change 0 to
17263         vect_uninitialized_def.  Change 0 to ERROR_MARK.
17264         * tree-vect-stmts.c (supportable_widening_operation): Don't
17265         initialize icode1 and icode2.
17266         * tree-vectorizer.h (enum vect_def_type): Add vect_uninitialized_def.
17267         * config/sol2-c.c (cmn_err_length_specs): Change 0 to FMT_LEN_none
17268         and to STD_C89.
17269         (cmn_err_flag_specs): Change 0 to STD_C89.
17270         (cmn_err_char_table): Likewise.
17271         * config/arm/arm.c (get_arm_condition_code): Change type of code
17272         to enum arm_cond_code.
17273         (IWMMXT_BUILTIN): Change 0 to UNKNOWN.
17274         (IWMMXT_BUILTIN2): Likewise.
17275         (neon_builtin_type_bits): Don't define typedef.
17276         (neon_builtin_datum): Change type of bits field to int.
17277         (arm_expand_neon_args): Add cast to enum type.
17278         * config/ia64/ia64.c (tls_symbolic_operand_type): Change 0 to
17279         TLS_MODEL_NONE.
17280         * config/i386/i386.c (bdesc_multi_arg): Change 0 to UNKNOWN.  Add
17281         casts to enum type.
17282         * config/mips/mips.c (LOONGSON_BUILTIN_ALIAS): Change 0 to
17283         MIPS_FP_COND_f.
17284         * config/mips/mips.md (jal_macro): Return enum constant.
17285         (single_insn): Likewise.
17286         * config/rs6000/rs6000.c (bdesc_altivec_preds): Change 0 to
17287         CODE_FOR_nothing.
17288         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
17289         casts to enum type.
17290         * config/s390/s390.c (s390_tune_flags): Change type to int.
17291         (s390_arch_flags): Likewise.
17292         (s390_handle_arch_option): Change flags field of struct pta to int.
17293         * config/s390/s390.h (s390_tune_flags): Update declaration.
17294         (s390_arch_flags): Likewise.
17295         * config/sh/sh.c (prepare_move_operands): Compare
17296         tls_symbolic_operand result with enum constant.
17297         (sh_reorg): Change PUT_MODE to PUT_REG_NOTE_KIND.
17298         (sh_expand_prologue): Add cast to enum type.
17299         (sh_expand_epilogue): Likewise.
17300         (tls_symbolic_operand): Change return type to enum tls_model.
17301         (fpscr_set_from_mem): Add cast to enum type.
17302         (legitimize_pic_address): Compare tls_symbolic_operand result with
17303         enum constant.
17304         (sh_target_reg_class): Change return type to enum reg_class.
17305         * config/sh/sh.h (OVERRIDE_OPTIONS): Change CPU_xxx to
17306         PROCESSOR_xxx.
17307         * config/sh/sh-protos.h (tls_symbolic_operand): Update declaration.
17308         * config/sparc/sparc.c (sparc_override_options): Add cast to enum type.
17309         * config/sparc/sparc.md (empty_delay_slot): Return enum constant.
17310         (pic, calls_alloca, calls_eh_return, leaf_function): Likewise.
17311         (delayed_branch, tls_call_delay): Likewise.
17312         (eligible_for_sibcall_delay): Likewise.
17313         (eligible_for_return_delay): Likewise.
17314         * config/spu/spu.c (expand_builtin_args): Add cast to enum type.
17315         (spu_expand_builtin_1): Likewise.
17316
17317         * c-typeck.c (convert_for_assignment): Issue -Wc++-compat warnings
17318         for all types of conversions.
17319         (output_init_element): Issue -Wc++-compat warning if needed when
17320         initializing a bitfield with enum type.
17321         * c-parser.c (c_parser_expression): Set original_type to
17322         original_type of right hand operand of comma operator.
17323
17324 2009-04-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
17325
17326         * doc/c-tree.texi (Types, Functions, Expression trees): Fix
17327         grammar nits.
17328         * doc/cfg.texi (Maintaining the CFG, Liveness information): Likewise.
17329         * doc/cpp.texi (Standard Predefined Macros)
17330         (Implementation-defined behavior): Likewise.
17331         * doc/extend.texi (Function Attributes, Type Attributes): Likewise.
17332         * doc/gimple.texi (GIMPLE Exception Handling)
17333         (@code{GIMPLE_ASSIGN}): Likewise.
17334         * doc/install.texi (Prerequisites, Configuration, Specific): Likewise.
17335         * doc/invoke.texi (Warning Options, Optimize Options)
17336         (AVR Options, Darwin Options): Likewise.
17337         (Optimize Options): Reformulate -fwhole-program description.
17338         * doc/loop.texi (Lambda): Likewise.
17339         * doc/md.texi (Output Template, Define Constraints)
17340         (Standard Names, Insn Splitting): Likewise.
17341         * doc/options.texi (Option properties): Likewise.
17342         * doc/passes.texi (Tree-SSA passes): Likewise.
17343         * doc/rtl.texi (Side Effects, Assembler, Insns): Likewise.
17344         * doc/tm.texi (Register Classes, Old Constraints, Scalar Return)
17345         (File Names and DBX): Likewise.
17346         * doc/trouble.texi (Incompatibilities): Likewise.
17347
17348 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
17349
17350         * spu.c (spu_machine_dependent_reorg): Make sure branch label on hint
17351         instruction is correct.
17352
17353 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
17354
17355         Allow non-constant arguments to conversion intrinsics.
17356         * spu-protos.h (exp2_immediate_p, spu_gen_exp2): Declare.
17357         * predicates.md (spu_inv_exp2_operand, spu_exp2_operand): New.
17358         * spu.c (print_operand): Handle 'v' and 'w'.
17359         (exp2_immediate_p, spu_gen_exp2): Define.
17360         * spu-builtins.def (spu_convts, spu_convtu, spu_convtf_0,
17361         spu_convtf_1): Update parameter descriptions.
17362         * spu-builtins.md (spu_csflt, spu_cuflt, spu_cflts, spu_cfltu): Update.
17363         * constraints.md ('v', 'w'): New.
17364         * spu.md (UNSPEC_CSFLT, UNSPEC_CFLTS, UNSPEC_CUFLT, UNSPEC_CFLTU):
17365         Remove.
17366         (i2f, I2F): New define_mode_attr.
17367         (floatsisf2, floatv4siv4sf2, fix_truncsfsi2, fix_truncv4sfv4si2,
17368         floatunssisf2, floatunsv4siv4sf2, fixuns_truncsfsi2,
17369         fixuns_truncv4sfv4si2):  Update to use mode attribute.
17370         (float<mode><i2f>2_mul, float<mode><i2f>2_div,
17371         fix_trunc<mode><f2i>2_mul, floatuns<mode><i2f>2_mul,
17372         floatuns<mode><i2f>2_div, fixuns_trunc<mode><f2i>2_mul): New
17373         patterns for combine.
17374
17375 2009-04-27  Steven Bosscher  <steven@gcc.gnu.org>
17376
17377         * dbgcnt.def (cprop1, cprop2, gcse, jump_bypass): Remove
17378         (cprop, hoist, pre, store_motion): New debug counters.
17379         * tree-pass.h (pass_tracer): Move to list of gimple passes, it
17380         is not an RTL pass anymore.
17381         (pass_profiling): Remove extern decl for pass removed in 2005.
17382         (pass_gcse, pass_jump_bypass): Remove.
17383         * final.c (rest_of_clean_state): Set flag_rerun_cse_after_global_opts
17384         to 0 for clean state.
17385         * toplev.h (flag_rerun_cse_after_global_opts): Add extern declaration.
17386         * cse.c (gate_handle_cse_after_global_opts,
17387         rest_of_handle_cse_after_global_opts): New functions.
17388         (pass_cse_after_global_opts): New pass, does local CSE.
17389         * timevar.def (TV_GCSE, TV_CPROP1, TV_CPROP2, TV_BYPASS): Remove.
17390         (TV_CPROP): New timevar.
17391         * gcse.c (flag_rerun_cse_after_global_opts): New global variable.
17392         (run_jump_opt_after_gcse, max_gcse_regno): Remove global vars.
17393         (gcse_main, recompute_all_luids): Remove.
17394         (compute_hash_table_work): Call max_reg_num instead of reading
17395         max_gcse_regno.
17396         (cprop_jump): Don't set run_jump_opt_after_gcse.
17397         (constprop_register): Always allow to alter jumps.
17398         (cprop_insn): Likewise.
17399         (do_local_cprop): Likewise.
17400         (local_cprop_pass): Likewise.  Return non-zero if something changed.
17401         (cprop): Remove function, fold interesting bits into one_cprop_pass.
17402         (find_implicit_sets): Add note about missed optimization opportunity.
17403         (one_cprop_pass): Rewrite to be "the" CPROP pass, called from the
17404         pass_rtl_cprop execute function.
17405         Don't bother tracking the pass number, each pass gets its own dumpfile
17406         now anyway.
17407         Always allow to alter jumpsand bypass jumps.
17408         (bypass_block): Don't ignore regno >= max_gcse_regno, find_bypass_set
17409         will just find no suitable set.
17410         (pre_edge_insert): Fix dumping, this function is for PRE only.
17411         (one_pre_gcse_pass): Rewrite to be "the" PRE pass, called from the
17412         pass_rtl_pre execute function.
17413         (hoist_code): Return non-zero if something changed.  Keep track of
17414         substitutions and insertions for statistics gathering similar to PRE.
17415         (one_code_hoisting_pass): Rewrite to be "the" code hoisting pass,
17416         called from the pass_rtl_hoist execute function.  Show pass statistics.
17417         (compute_store_table): Use max_reg_num directly instead of using the
17418         formerly global max_gcse_regno.
17419         (build_store_vectors): Likewise.
17420         (replace_store_insn): Fix dumping.
17421         (store_motion): Rename to ...
17422         (one_store_motion_pass): ... this.  Rewrite to be "the" STORE_MOTION
17423         pass, called from the pass_rtl_store_motion execute function.  Keep
17424         track of substitutions and insertions for statistics gathering similar
17425         to PRE.
17426         (bypass_jumps): Remove, fold interesting bits into ...
17427         (one_cprop_pass): ... this.  Rewrite to be "the" CPROP pass, called
17428         from the pass_rtl_cprop execute function.
17429         (gate_handle_jump_bypass, rest_of_handle_jump_bypass,
17430         pass_jump_bypass): Remove.
17431         (gate_handle_gcse, rest_of_handle_gcse): Remove.
17432         (gate_rtl_cprop, execute_rtl_cprop, pass_rtl_cprop): New.
17433         (gate_rtl_pre, execute_rtl_pre, pass_rtl_pre): New.
17434         (gate_rtl_hoist, execute_rtl_hoist, pass_rtl_hoist): New.
17435         (gate_rtl_store_motion, execute_rtl_store_motion,
17436         pass_rtl_store_motion): New.
17437         * common.opt: Remove flag_cse_skip_blocks, adjust documentation to
17438         make it clear that -fcse-skip-blocks is a no-op for backward compat.
17439         * passes.c (init_optimization_passes): Remove pass_gcse and
17440         pass_jump_bypass.  Schedule cprop, pre, hoist, cprop, store_motion,
17441         and cse_after_global_opts in place of pass_gcse.  Schedule cprop
17442         instead of pass_jump_bypass.
17443
17444 2009-04-27  Richard Guenther  <rguenther@suse.de>
17445
17446         PR middle-end/39928
17447         * gimplify.c (gimplify_expr): If we are required to create
17448         a temporary make sure it ends up as register.
17449
17450 2009-04-27  H.J. Lu  <hongjiu.lu@intel.com>
17451
17452         PR target/39903
17453         * config/i386/i386.c (construct_container): Don't call
17454         gen_reg_or_parallel with BLKmode on X86_64_SSE_CLASS,
17455         X86_64_SSESF_CLASS and X86_64_SSEDF_CLASS.
17456
17457 2009-04-27  Michael Matz  <matz@suse.de>
17458
17459         * ssaexpand.h (struct ssaexpand): Member 'values' is a bitmap.
17460         (get_gimple_for_ssa_name): Adjust, lookup using SSA_NAME_DEF_STMT.
17461         * tree-ssa-live.h: (find_replaceable_exprs): Return a bitmap.
17462         (dump_replaceable_exprs): Take a bitmap.
17463         * cfgexpand.c (gimple_cond_pred_to_tree): Handle bitmap instead of
17464         array.
17465         (expand_gimple_basic_block): Likewise.
17466         * tree-ssa-ter.c (struct temp_expr_table_d): Make
17467         replaceable_expressions member a bitmap.
17468         (free_temp_expr_table): Pass back and deal with bitmap, not gimple*.
17469         (mark_replaceable): Likewise.
17470         (find_replaceable_in_bb, dump_replaceable_exprs): Likewise.
17471         * tree-outof-ssa.c (remove_ssa_form): 'values' is a bitmap.
17472
17473 2009-04-27  Richard Guenther  <rguenther@suse.de>
17474
17475         * tree-cfg.c (remove_useless_stmts): Verify stmts afterwards.
17476         (verify_stmts): Dispatch to gimple/type verification code.
17477         * tree-inline.c (remap_gimple_op_r): Work around C++ FE
17478         issue with call argument types.
17479
17480 2009-04-27  Michael Matz  <matz@suse.de>
17481
17482         * tree-into-ssa.c (regs_to_rename, mem_syms_to_rename): Remove.
17483         (init_update_ssa, delete_update_ssa, update_ssa): Remove references
17484         to above.
17485
17486 2009-04-27  Richard Sandiford  <rdsandiford@googlemail.com>
17487             Eric Botcazou  <ebotcazou@adacore.com>
17488
17489         * resource.c (find_basic_block): Use BLOCK_FOR_INSN to look up
17490         a label's basic block.
17491         (mark_target_live_regs): Tidy and rework obsolete comments.
17492         Change back DF problem to LIVE.  If a label starts a basic block,
17493         assume that all registers that used to be live then still are.
17494         (init_resource_info): If a label starts a basic block, set its
17495         BLOCK_FOR_INSN accordingly.
17496         (fini_resource_info): Undo the setting of BLOCK_FOR_INSN.
17497
17498 2009-04-27  Richard Guenther  <rguenther@suse.de>
17499
17500         * tree-flow-inline.h (function_ann): Remove.
17501         (get_function_ann): Likewise.
17502         * tree-dfa.c (create_function_ann): Remove.
17503         * tree-flow.h (struct static_var_ann_d): Remove.
17504         (struct function_ann_d): Likewise.
17505         (union tree_ann_d): Remove fdecl member.
17506         (function_ann_t): Remove.
17507         (function_ann, get_function_ann, create_function_ann): Remove
17508         declarations.
17509
17510 2009-04-27  Uros Bizjak  <ubizjak@gmail.com>
17511
17512         * config/alpha/alpha.c (code_for_builtin): Declare as enum insn_code.
17513
17514 2009-04-27  Jan Hubicka  <jh@suse.cz>
17515
17516         * ipa-pure-const.c (struct funct_state_d): New fields
17517         state_previously_known, looping_previously_known; remove
17518         state_set_in_source.
17519         (analyze_function): Use new fields.
17520         (propagate): Avoid assumption that state_set_in_source imply
17521         nonlooping.
17522
17523         * tree-ssa-loop-niter.c (finite_loop_p): New function.
17524         * tree-ssa-loop-ivcanon.c (empty_loop_p): Use it.
17525         * cfgloop.h (finite_loop_p): Declare.
17526
17527 2009-04-26  Michael Matz  <matz@suse.de>
17528
17529         * tree-flow.h (tree_ann_common_d): Remove aux and value_handle members.
17530
17531 2009-04-26  Michael Matz  <matz@suse.de>
17532
17533         * tree-pass.h (pass_del_ssa, pass_mark_used_blocks,
17534         pass_free_cfg_annotations, pass_free_datastructures): Remove decls.
17535         * gimple-low.c (mark_blocks_with_used_vars, mark_used_blocks,
17536         pass_mark_used_blocks): Remove.
17537         * tree-optimize.c (pass_free_datastructures,
17538         execute_free_cfg_annotations, pass_free_cfg_annotations): Remove.
17539         * passes.c (init_optimization_passes): Don't call
17540         pass_mark_used_blocks, remove dead code.
17541
17542 2009-04-26  H.J. Lu  <hongjiu.lu@intel.com>
17543
17544         * tree-outof-ssa.c (rewrite_trees): Add ATTRIBUTE_UNUSED.
17545         * tree-ssa-live.h (register_ssa_partition): Likewise.
17546
17547 2009-04-26  Michael Matz  <matz@suse.de>
17548
17549         Expand from SSA.
17550         * builtins.c (fold_builtin_next_arg): Handle SSA names.
17551         * tree-ssa-copyrename.c (rename_ssa_copies): Use ssa_name() directly.
17552         * tree-ssa-coalesce.c (create_outofssa_var_map): Mark only useful
17553         SSA names.
17554         (compare_pairs): Swap cost comparison.
17555         (coalesce_ssa_name): Don't use change_partition_var.
17556         * tree-nrv.c (struct nrv_data): Add modified member.
17557         (finalize_nrv_r): Set it.
17558         (tree_nrv): Use it to update statements.
17559         (pass_nrv): Require PROP_ssa.
17560         * tree-mudflap.c (mf_decl_cache_locals,
17561         mf_build_check_statement_for): Use make_rename_temp.
17562         (pass_mudflap_2): Require PROP_ssa, run ssa update at finish.
17563         * alias.c (find_base_decl): Handle SSA names.
17564         * emit-rtl (set_reg_attrs_for_parm): Make non-static.
17565         (component_ref_for_mem_expr): Don't leak SSA names into RTL.
17566         * rtl.h (set_reg_attrs_for_parm): Declare.
17567         * tree-optimize.c (pass_cleanup_cfg_post_optimizing): Rename
17568         to "optimized", remove unused locals at finish.
17569         (execute_free_datastructures): Make global, call
17570         delete_tree_cfg_annotations.
17571         (execute_free_cfg_annotations): Don't call
17572         delete_tree_cfg_annotations.
17573
17574         * ssaexpand.h: New file.
17575         * expr.c (toplevel): Include ssaexpand.h.
17576         (expand_assignment): Handle SSA names the same as register variables.
17577         (expand_expr_real_1): Expand SSA names.
17578         * cfgexpand.c (toplevel): Include ssaexpand.h.
17579         (SA): New global variable.
17580         (gimple_cond_pred_to_tree): Fold TERed comparisons into predicates.
17581         (SSAVAR): New macro.
17582         (set_rtl): New helper function.
17583         (add_stack_var): Deal with SSA names, use set_rtl.
17584         (expand_one_stack_var_at): Likewise.
17585         (expand_one_stack_var): Deal with SSA names.
17586         (stack_var_size_cmp): Use code (SSA_NAME / DECL) as tie breaker
17587         before unique numbers.
17588         (expand_stack_vars): Use set_rtl.
17589         (expand_one_var): Accept SSA names, add asserts for them, feed them
17590         to above subroutines.
17591         (expand_used_vars): Expand all partitions (without default defs),
17592         then only the local decls (ignoring those expanded already).
17593         (expand_gimple_cond): Remove edges when jumpif() expands an
17594         unconditional jump.
17595         (expand_gimple_basic_block): Don't clear EDGE_EXECUTABLE here,
17596         or remove abnormal edges.  Ignore insns setting the LHS of a TERed
17597         SSA name.
17598         (gimple_expand_cfg): Call into rewrite_out_of_ssa, initialize
17599         members of SA; deal with PARM_DECL partitions here; expand
17600         all PHI nodes, free tree datastructures and SA.  Commit instructions
17601         on edges, clear EDGE_EXECUTABLE and remove abnormal edges here.
17602         (pass_expand): Require and destroy PROP_ssa, verify SSA form, flow
17603         info and statements at start, collect garbage at finish.
17604         * tree-ssa-live.h (struct _var_map): Remove partition_to_var member.
17605         (VAR_ANN_PARTITION) Remove.
17606         (change_partition_var): Don't declare.
17607         (partition_to_var): Always return SSA names.
17608         (var_to_partition): Only accept SSA names.
17609         (register_ssa_partition): Only check argument.
17610         * tree-ssa-live.c (init_var_map): Don't allocate partition_to_var
17611         member.
17612         (delete_var_map): Don't free it.
17613         (var_union): Only accept SSA names, simplify.
17614         (partition_view_init): Mark only useful SSA names as used.
17615         (partition_view_fini): Only deal with SSA names.
17616         (change_partition_var): Remove.
17617         (dump_var_map): Use ssa_name instead of partition_to_var member.
17618         * tree-ssa.c (delete_tree_ssa): Don't remove PHI nodes on RTL
17619         basic blocks.
17620         * tree-outof-ssa.c (toplevel): Include ssaexpand.h and expr.h.
17621         (struct _elim_graph): New member const_dests; nodes member vector of
17622         ints.
17623         (set_location_for_edge): New static helper.
17624         (create_temp): Remove.
17625         (insert_partition_copy_on_edge, insert_part_to_rtx_on_edge,
17626         insert_value_copy_on_edge, insert_rtx_to_part_on_edge): New functions.
17627         (new_elim_graph): Allocate const_dests member.
17628         (clean_elim_graph): Truncate const_dests member.
17629         (delete_elim_graph): Free const_dests member.
17630         (elim_graph_size): Adapt to new type of nodes member.
17631         (elim_graph_add_node): Likewise.
17632         (eliminate_name): Likewise.
17633         (eliminate_build): Don't take basic block argument, deal only with
17634         partition numbers, not variables.
17635         (get_temp_reg): New static helper.
17636         (elim_create): Use it, deal with RTL temporaries instead of trees.
17637         (eliminate_phi): Adjust all calls to new signature.
17638         (assign_vars, replace_use_variable, replace_def_variable): Remove.
17639         (rewrite_trees): Only do checking.
17640         (edge_leader, stmt_list, leader_has_match, leader_match): Remove.
17641         (same_stmt_list_p, identical_copies_p, identical_stmt_lists_p,
17642         init_analyze_edges_for_bb, fini_analyze_edges_for_bb,
17643         contains_tree_r, MAX_STMTS_IN_LATCH,
17644         process_single_block_loop_latch, analyze_edges_for_bb,
17645         perform_edge_inserts): Remove.
17646         (expand_phi_nodes): New global function.
17647         (remove_ssa_form): Take ssaexpand parameter.  Don't call removed
17648         functions, initialize new parameter, remember partitions having a
17649         default def.
17650         (finish_out_of_ssa): New global function.
17651         (rewrite_out_of_ssa): Make global.  Adjust call to remove_ssa_form,
17652         don't reset in_ssa_p here, don't disable TER when mudflap.
17653         (pass_del_ssa): Remove.
17654         * tree-flow.h (struct var_ann_d): Remove out_of_ssa_tag and
17655         partition members.
17656         (execute_free_datastructures): Declare.
17657         * Makefile.in (SSAEXPAND_H): New variable.
17658         (tree-outof-ssa.o, expr.o, cfgexpand.o): Depend on SSAEXPAND_H.
17659         * basic-block.h (commit_one_edge_insertion): Declare.
17660         * passes.c (init_optimization_passes): Move pass_nrv and
17661         pass_mudflap2 before pass_cleanup_cfg_post_optimizing, remove
17662         pass_del_ssa, pass_free_datastructures, pass_free_cfg_annotations.
17663         * cfgrtl.c (commit_one_edge_insertion): Make global, don't declare.
17664         (redirect_branch_edge): Deal with super block when expanding, split
17665         out jump patching itself into ...
17666         (patch_jump_insn): ... here, new static helper.
17667
17668 2009-04-26  Michael Matz  <matz@suse.de>
17669
17670         * tree-ssa-copyrename.c (rename_ssa_copies): Don't iterate
17671         beyond num_ssa_names.
17672         * tree-ssa-ter.c (free_temp_expr_table): Likewise.
17673         * tree-ssa-coalesce.c (create_outofssa_var_map): Likewise.
17674
17675 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
17676
17677         PR inline-asm/39543
17678         * fwprop.c (forward_propagate_asm): New function.
17679         (forward_propagate_and_simplify): Propagate also into __asm, if it
17680         doesn't increase the number of referenced registers.
17681
17682         PR c/39889
17683         * stmt.c (warn_if_unused_value): Look through NON_LVALUE_EXPR.
17684
17685 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
17686
17687         * tree-nested.c (get_nonlocal_vla_type): If not optimizing, call
17688         note_nonlocal_vla_type for nonlocal VLAs.
17689         (note_nonlocal_vla_type, note_nonlocal_block_vlas,
17690         contains_remapped_vars, remap_vla_decls): New functions.
17691         (convert_nonlocal_reference_stmt): If not optimizing, call
17692         note_nonlocal_block_vlas on GIMPLE_BIND block vars.
17693         (nesting_copy_decl): Return {VAR,PARM,RESULT}_DECL unmodified
17694         if it wasn't found in var_map.
17695         (finalize_nesting_tree_1): Call remap_vla_decls.  If outermost
17696         GIMPLE_BIND doesn't have gimple_bind_block, chain debug_var_chain
17697         to BLOCK_VARS (DECL_INITIAL (root->context)) instead of calling
17698         declare_vars.
17699         * gimplify.c (nonlocal_vlas): New variable.
17700         (gimplify_var_or_parm_decl): Add debug VAR_DECLs for non-local
17701         referenced VLAs.
17702         (gimplify_body): Create and destroy nonlocal_vlas.
17703
17704         * dwarf2out.c (loc_descr_plus_const): New function.
17705         (build_cfa_aligned_loc, tls_mem_loc_descriptor,
17706         mem_loc_descriptor, loc_descriptor_from_tree_1,
17707         descr_info_loc, gen_variable_die): Use it.
17708
17709         * tree.h (DECL_BY_REFERENCE): Note that it is also valid for
17710         !TREE_STATIC VAR_DECLs.
17711         * dwarf2out.c (loc_by_reference, gen_decl_die): Handle
17712         DECL_BY_REFERENCE on !TREE_STATIC VAR_DECLs.
17713         (gen_variable_die): Likewise.  Don't look at TREE_PRIVATE if
17714         DECL_BY_REFERENCE is valid.
17715         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Don't look at TREE_PRIVATE
17716         for PARM_DECLs, RESULT_DECLs or !TREE_STATIC VAR_DECLs.
17717         * tree-nested.c (get_nonlocal_debug_decl, get_local_debug_decl):
17718         Copy DECL_BY_REFERENCE.
17719         (struct nesting_copy_body_data): New type.
17720         (nesting_copy_decl): New function.
17721         (finalize_nesting_tree_1): Remap types of debug_var_chain variables,
17722         if they have variable length.
17723
17724 2009-04-26  Michael Matz  <matz@suse.de>
17725
17726         * tree-sra.c (sra_build_assignment): Don't use into_ssa mode,
17727         mark new temporaries for renaming.
17728
17729 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
17730
17731         PR c/39581
17732         * c-decl.c (global_bindings_p): Return negative value.
17733         (c_variable_size): New.  Based on variable_size from
17734         stor-layout.c.
17735         (grokdeclarator): Call c_variable_size not variable_size.
17736
17737 2009-04-26  Uros Bizjak  <ubizjak@gmail.com>
17738
17739         * config/i386/i386.c (print_operand) ['z']: Fix typo.
17740
17741 2009-04-26  Kai Tietz  <kai.tietz@onevision.com>
17742
17743         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR):
17744         Redefine it to just use mingw/include.
17745         (ASM_SPEC): Rules for -m32 and -m64.
17746         (LINK_SPEC): Use Likewise.
17747         (SPEC_32): New define.
17748         (SPEC_64): Likewise.
17749         (SUB_LINK_SPEC): Likewise.
17750         (MULTILIB_DEFAULTS): New define.
17751         * config/i386/t-mingw-w64 (MULTILIB_OPTIONS):
17752         Add multilib options.
17753         (MULTILIB_DIRNAMES): Likewise.
17754         (MULTILIB_OSDIRNAMES): Likewise.
17755         (LIBGCC): Likewise.
17756         (INSTALL_LIBGCC): Likewise.
17757
17758 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
17759
17760         PR c/39556
17761         * c-tree.h (enum c_inline_static_type): New.
17762         (record_inline_static): Declare.
17763         * c-decl.c (struct c_inline_static, c_inline_statics,
17764         record_inline_static, check_inline_statics): New.
17765         (pop_file_scope): Call check_inline_statics.
17766         (start_decl): Call record_inline_static instead of pedwarning
17767         directly for static in inline function.
17768         * c-typeck.c (build_external_ref): Call record_inline_static
17769         instead of pedwarning directly for static referenced in inline
17770         function.
17771
17772 2009-04-26  Steven Bosscher  <steven@gcc.gnu.org>
17773
17774         * df-scan.c (df_insn_rescan): Salvage insn's LUID if the insn is
17775         not new but only being rescanned.
17776         * gcse.c (uid_cuid, max_uid, INSN_CUID, max_cuid, struct reg_set,
17777         reg_set_table, REG_SET_TABLE_SLOP, reg_set_in_block,
17778         alloc_reg_set_mem, free_reg_set_mem, record_one_set,
17779         record_set_info, compute_set, grealloc): Remove.
17780         (recompute_all_luids): New function.
17781         (gcse_main): Don't compute sets, and don't do related memory
17782         allocations/free-ing.  If something changed before the end of the
17783         pass, update LUIDs using recompute_all_luids.
17784         (alloc_gcse_mem): Don't compute LUIDs.  Don't allocate reg_set memory.
17785         (free_gcse_mem): Don't free it either.
17786         (oprs_unchanged_p, load_killed_in_block, record_last_reg_set_info):
17787         Use the df insn LUIDs.
17788         (load_killed_in_block): Likewise.
17789         (compute_hash_table_work): Don't compute reg_set_in_block.
17790         (compute_transp): Use DF_REG_DEF_CHAINs.
17791         (local_cprop_pass): Don't use compute_sets and related functions.
17792         (one_cprop_pass, pre_gcse, one_pre_gcse_pass, one_code_hoisting_pass):
17793         Use get_max_uid() instead of max_cuid.
17794         (insert_insn_end_basic_block, pre_insert_copy_insn,
17795         update_ld_motion_stores): Don't try to
17796         keep reg_set tables up to date.
17797         (pre_insert_copies): Use df insn LUIDs.
17798         (sbitmap pre_redundant_insns): Replace with uses of INSN_DELETED_P.
17799         (reg_set_info): Don't use extra bitmap argument.
17800         (compute_store_table): Don't compute reg_set_in_block.  Use DF scan
17801         information to compute regs_set_in_block.
17802         (free_store_memory, store_motion): Don't nullify reg_set_in_block.
17803         (bypass_jumps): Don't use compute_sets and friends.
17804
17805 2009-04-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
17806
17807         PR testsuite/39710
17808         * opts.c (undocumented_msg): Do not leave blank even with
17809         ENABLE_CHECKING.
17810
17811 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
17812
17813         * c-decl.c (build_enumerator): Allow values folding to integer
17814         constants but not integer constant expressions with a pedwarn if
17815         pedantic.
17816
17817 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
17818
17819         PR c/39582
17820         * c-typeck.c (c_expr_sizeof_type): Create a C_MAYBE_CONST_EXPR
17821         with non-null C_MAYBE_CONST_EXPR_PRE if size of a variable-length
17822         type is an integer constant.
17823
17824 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
17825
17826         PR target/39897
17827         * config/i386/i386.c (print_operand) ['z']: Revert handling of
17828         HImode operands.
17829
17830 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
17831
17832         PR c/39564
17833         * c-decl.c (grokdeclarator): Diagnose declarations of functions
17834         with variably modified return type and no storage class
17835         specifiers, except for the case of nested functions.  Distinguish
17836         extern declarations of functions with variably modified return
17837         types from those of objects with variably modified types.
17838
17839 2009-04-25  Jan Hubicka  <jh@suse.cz>
17840
17841         * tree.c (list_equal_p): New function.
17842         * tree.h (list_equal_p): Declare.
17843         * coretypes.h (edge_def, edge, const_edge, basic_block_def
17844         basic_block_def, basic_block, const_basic_block): New.
17845         * tree-eh.c (make_eh_edge): EH edges are not abnormal.
17846         (redirect_eh_edge): New function.
17847         (make_eh_edge_update_phi): EH edges are not abnormal.
17848         * except.c: Include tree-flow.h.
17849         (list_match): New function.
17850         (eh_region_replaceable_by_p): New function.
17851         (replace_region): New function.
17852         (hash_type_list): New function.
17853         (hash_eh_region): New function.
17854         (eh_regions_equal_p): New function.
17855         (merge_peers): New function.
17856         (remove_unreachable_regions): Verify EH tree when checking;
17857         merge peers.
17858         (copy_eh_region_1): New function.
17859         (copy_eh_region): New function.
17860         (push_reachable_handler): New function.
17861         (build_post_landing_pads, dw2_build_landing_pads): Be ready for
17862         regions without label but with live RESX.
17863         * except.h (redirect_eh_edge_to_label): New.
17864         * tree-flow.h (redirect_eh_edge): New.
17865         * coretypes.h (edge_def, edge, const_edge, basic_block_def
17866         basic_block_def, basic_block, const_basic_block): Remove.
17867         * Makefile.in (except.o): Add dependency on tree-flow.h
17868         * tree-cfg.c (gimple_redirect_edge_and_branch): Handle EH edges.
17869         * basic-block.h (edge, const_edge, basic_block, const_basic_block):
17870         Remove.
17871
17872 2009-04-25  Eric Botcazou  <ebotcazou@adacore.com>
17873
17874         PR bootstrap/39645
17875         * config/sparc/sparc.c (sparc_gimplify_va_arg): Set TREE_ADDRESSABLE
17876         on the destination of memcpy.
17877
17878 2009-04-25  Paolo Bonzini  <bonzini@gnu.org>
17879
17880         * doc/tm.texi (REGNO_OK_FOR_BASE_P, REGNO_MODE_OK_FOR_BASE_P,
17881         REGNO_MODE_OK_FOR_REG_BASE_P, REGNO_MODE_CODE_OK_FOR_BASE_P,
17882         REGNO_OK_FOR_INDEX_P): Mention strict/nonstrict difference.
17883
17884 2009-04-25  Jan Hubicka  <jh@suse.cz>
17885
17886         * tree-eh.c (tree_remove_unreachable_handlers): Handle shared labels.
17887         (tree_empty_eh_handler_p): Allow non-EH predecestors; allow region
17888         to be reached by different label than left.
17889         (update_eh_edges): Update comment; remove edge_to_remove if possible
17890         and return true if suceeded.
17891         (cleanup_empty_eh): Accept sharing map; handle shared regions.
17892         (cleanup_eh): Compute sharing map.
17893         * except.c (remove_eh_handler_and_replace): Add argument if we should
17894         update regions.
17895         (remove_unreachable_regions): Update for label sharing.
17896         (label_to_region_map): Likewise.
17897         (get_next_region_sharing_label): New function.
17898         (remove_eh_handler_and_replace): Add update_catch_try parameter; update
17899         prev_try pointers.
17900         (remove_eh_handler): Update.
17901         (remove_eh_region_and_replace_by_outer_of): New function.
17902         * except.h (struct eh_region): Add next_region_sharing_label.
17903         (remove_eh_region_and_replace_by_outer_of,
17904         get_next_region_sharing_label): Declare.
17905         * tree-cfgcleanup.c (tree_forwarder_block_p): Simplify.
17906
17907 2009-04-25  Jan Hubicka  <jh@suse.cz>
17908
17909         * tree-cfg.c (split_critical_edges): Split also edges where we can't
17910         insert code even if they are not critical.
17911
17912 2009-04-25  Jan Hubicka  <jh@suse.cz>
17913
17914         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
17915         (gimple_can_remove_branch_p): EH edges won't remove branch by
17916         redirection.
17917         * tree-inline.c (update_ssa_across_abnormal_edges): Do handle
17918         updating of non-abnormal EH edges.
17919         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
17920         (gimple_can_remove_branch_p): EH edges are unremovable by redirection.
17921         (split_critical_edges): Split also edges where emitting code on them
17922         will lead to splitting later.
17923
17924 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
17925             H.J. Lu  <hongjiu.lu@intel.com>
17926
17927         PR target/39590
17928         * configure.ac (HAVE_AS_IX86_FILDQ): On x86 targets check whether
17929         the configured assembler supports fildq and fistpq mnemonics.
17930         (HAVE_AS_IX86_FILDS): Rename from HAVE_GAS_FILDS_FISTS.
17931         * configure: Regenerated.
17932         * config.in: Ditto.
17933
17934         * config/i386/i386.c (print_operand): Handle 'Z'.
17935         ['z']: Remove handling of special fild/fist suffixes.
17936         (output_fix_trunc): Use '%Z' to output suffix of fist{,p,tp} insn.
17937         * config/i386/i386.md (*floathi<mode>2_i387): Use '%Z' to output
17938         suffix of fild insn.
17939         (*floatsi<mode>2_vector_mixed): Ditto.
17940         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Ditto.
17941         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Ditto.
17942         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
17943         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387): Ditto.
17944         * config/i386/gas.h (GAS_MNEMONICS): Remove.
17945
17946 2009-04-25  Ben Elliston  <bje@au.ibm.com>
17947
17948         * genrecog.c (validate_pattern): Do not warn for VOIDmode CALLs as
17949         the source of a set operation.
17950
17951 2009-04-25  Anatoly Sokolov  <aesok@post.ru>
17952
17953         * target.h (struct gcc_target): Add case_values_threshold field.
17954         * target-def.h (TARGET_CASE_VALUES_THRESHOLD): New.
17955         (TARGET_INITIALIZER): Use TARGET_CASE_VALUES_THRESHOLD.
17956         * targhooks.c (default_case_values_threshold): New function.
17957         * targhooks.h (default_case_values_threshold): Declare function.
17958         * stmt.c (expand_case): Use case_values_threshold target hook.
17959         * expr.h (case_values_threshold): Remove declartation.
17960         * expr.c (case_values_threshold): Remove function.
17961         * doc/tm.texi (CASE_VALUES_THRESHOLD): Revise documentation.
17962
17963         * config/avr/avr.h (CASE_VALUES_THRESHOLD): Remove macro.
17964         * config/avr/avr.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
17965         (avr_case_values_threshold): Declare as static.
17966         * config/avr/avr-protos.h (avr_case_values_threshold): Remove.
17967
17968         * config/avr/mn10300.h (CASE_VALUES_THRESHOLD): Remove macro.
17969         * config/avr/mn10300.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
17970         (mn10300_case_values_threshold): New function.
17971
17972 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
17973
17974         * ira.c (setup_cover_and_important_classes): Add enum cast.
17975
17976 2009-04-24  Vladimir Makarov  <vmakarov@redhat.com>
17977
17978         * genpreds.c (write_enum_constraint_num): Output definition of
17979         CONSTRAINT_NUM_DEFINED_P macro.
17980         * ira.c (setup_cover_and_important_classes): Use
17981         CONSTRAINT_NUM_DEFINED_P instead of CONSTRAINT__LIMIT in #ifdef.
17982
17983 2009-04-24  DJ Delorie  <dj@redhat.com>
17984
17985         * config/sh/sh.h (LIBGCC2_DOUBLE_TYPE_SIZE): Test
17986         __SH2A_SINGLE_ONLY__ also.
17987
17988 2009-04-24  Steve Ellcey  <sje@cup.hp.com>
17989
17990         * config/ia64/ia64.md (movfs_internal): Allow flt constants.
17991         (movdf_internal): Ditto.
17992         * config/ia64/ia64.c (ia64_legitimate_constant_p): Allow
17993         SFmode and DFmode constants.
17994         (ia64_print_operand): Add 'G' format for printing
17995         floating point constants.
17996
17997 2009-04-24  Richard Guenther  <rguenther@suse.de>
17998
17999         * tree-vrp.c (extract_range_from_binary_expr): Handle overflow
18000         from unsigned additions.
18001
18002 2009-04-24  Joseph Myers  <joseph@codesourcery.com>
18003
18004         * c-typeck.c (set_init_index): Allow array designators that are
18005         not integer constant expressions with a pedwarn if pedantic.
18006
18007 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
18008
18009         * simplify-rtx.c (simplify_binary_operation_1, case AND): Result is
18010         zero if no overlap in nonzero bits between the operands.
18011
18012 2009-04-24  Ian Lance Taylor  <iant@google.com>
18013
18014         * combine.c (record_value_for_reg): Change 0 to VOIDmode, twice.
18015         (record_dead_and_set_regs): Likewise.
18016         * df.h (struct df_mw_hardreg): Change flags field to int.
18017         (struct df_base_ref): Likewise.
18018         (struct df): Change changeable_flags field to int.
18019         * df-scan.c (df_defs_record): Change clobber_flags to int.
18020         * dwarf2.h (enum dwarf_tag): Make lo_user and hi_user values enum
18021         constants rather than #define macros.
18022         (enum dwarf_attribute, enum dwarf_location_atom): Likewise.
18023         (enum dwarf_type, enum dwarf_endianity_encoding): Likewise.
18024         (enum dwarf_calling_convention): Likewise.
18025         (enum dwarf_line_number_x_ops): Likewise.
18026         (enum dwarf_call_frame_info): Likewise.
18027         (enum dwarf_source_language): Likewise.
18028         * dwarf2out.c (int_loc_descriptor): Add cast to enum type.
18029         (add_calling_convention_attribute): Likewise.
18030         * fold-const.c (fold_undefer_overflow_warnings): Add cast to enum type.
18031         (combine_comparisons): Change compcode to int.  Add cast to enum type.
18032         * genrecog.c (maybe_both_true_2): Change c to int.
18033         (write_switch): Likewise.  Add cast to enum type.
18034         * gimplify.c (gimplify_omp_for): Handle return values from
18035         gimplify_expr using MIN rather than bitwise or.
18036         (gimplify_expr): Add cast to enum type.
18037         * ipa-prop.c (update_jump_functions_after_inlining): Change
18038         IPA_BOTTOM to IPA_JF_UNKNOWN.
18039         * ira.c (setup_class_subset_and_memory_move_costs): Change mode to int.
18040         Add casts to enum type.
18041         (setup_cover_and_important_classes): Change cl to int.  Add casts
18042         to enum type.
18043         (setup_class_translate): Change cl and mode to int.
18044         (ira_init_once): Change mode to int.
18045         (free_register_move_costs): Likewise.
18046         (setup_prohibited_mode_move_regs): Add casts to enum type.
18047         * langhooks.c (add_builtin_function_common): Rework assertion that
18048         value fits bitfield.
18049         * mcf.c (add_fixup_edge): Change type parameter to edge_type.
18050         * omega.c (omega_do_elimination): Avoid math on enum types.
18051         * optabs.c (expand_vec_shift_expr): Remove casts to int.
18052         * opts.c (set_debug_level): Change 2 to enum constant.  Use new
18053         int local to handle integral_argment value.
18054         * regmove.c (try_auto_increment): Change PUT_MODE to
18055         PUT_REG_NOTE_KIND.
18056         * reload.c (push_secondary_reload): Add casts to enum type.
18057         (secondary_reload_class, find_valid_class): Likewise.
18058         * reload1.c (emit_input_reload_insns): Likewise.
18059         * rtl.h (NOTE_VAR_LOCATION_STATUS): Likewise.
18060         * sel-sched.c (init_hard_regs_data): Change cur_mode to int.
18061         * sel-sched-ir.c (hash_with_unspec_callback): Change 0 to enum
18062         constant.
18063         * tree.c (build_common_builtin_nodes): Add casts to enum type.
18064         * tree-complex.c (complex_lattice_t): Typedef to int rather than
18065         enum type.
18066         (expand_complex_libcall): Add casts to enum type.
18067         * tree-into-ssa.c (get_ssa_name_ann): Change 0 to enum constant.
18068         * tree-vect-loop.c (vect_model_reduction_cost): Compare reduc_code
18069         with ERROR_MARK, not NUM_TREE_CODES.
18070         (vect_create_epilog_for_reduction): Likewise.
18071         (vectorizable_reduction): Don't initialize epiloc_reduc_code.
18072         When not using it, set it to ERROR_MARK rather than NUM_TREE_CODES.
18073         * tree-vect-patterns.c (vect_pattern_recog_1): Change vec_mode to
18074         enum machine_mode.
18075         * tree-vect-stmts.c (new_stmt_vec_info): Change 0 to
18076         vect_unused_in_loop.  Change 0 to loop_vect.
18077         * tree-vectorizer.c (vect_set_verbosity_level): Add casts to enum type.
18078         * var-tracking.c (get_init_value): Change return type to enum
18079         var_init_status.
18080         * vec.h (DEF_VEC_FUNC_P) [iterate]: Cast 0 to type T.
18081         * config/arm/arm.c (fp_model_for_fpu): Change to array to enum
18082         arm_fp_model.
18083         (arm_override_options): Add casts to enum type.
18084         (arm_emit_tls_decoration): Likewise.
18085         * config/i386/i386.c (ix86_function_specific_restore): Add casts
18086         to enum type.
18087         * config/i386/i386-c.c (ix86_pragma_target_parse): Likewise.
18088         * config/ia64/ia64.c (ia64_expand_compare): Change magic to int.
18089         * config/rs6000/rs6000.c (rs6000_override_options): Add casts to
18090         enum type.
18091         * config/s390/s390.c (code_for_builtin_64): Change to array of
18092         enum insn_code.
18093         (code_for_builtin_31): Likewise.
18094         (s390_expand_builtin): Change code_for_builtin to enum insn_code
18095         const *.
18096         * config/sparc/sparc.c (sparc_override_options): Change value
18097         field in struct code_model to enum cmodel.  In initializer change
18098         0 to NULL and add cast to enum type.
18099
18100         * c-typeck.c (build_modify_expr): Add lhs_origtype parameter.
18101         Change all callers.  Issue a -Wc++-compat warning using
18102         lhs_origtype if necessary.
18103         (convert_for_assignment): Issue -Wc++-compat warnings about
18104         invalid conversions to enum type on assignment.
18105         * c-common.h (build_modify_expr): Update declaration.
18106
18107 2009-04-24  Nick Clifton  <nickc@redhat.com>
18108
18109         * config/iq2000/iq2000.c (function_arg): Handle TImode values.
18110         (function_arg_advance): Likewise.
18111         * config/iq2000/iq2000.md (movsi_internal2): Fix the length of the
18112         5th alternative.
18113
18114 2009-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
18115
18116         * config/s390/constraints.md ('I', 'J'): Fix condition.
18117
18118 2009-04-24  Diego Novillo  <dnovillo@google.com>
18119
18120         * gengtype-parse.c (parse_error): Add newline after message.
18121
18122 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
18123
18124         * config/i386/sse.md (avxmodesuffixs): Removed.
18125         (*avx_pinsr<avxmodesuffixs>): Renamed to ...
18126         (*avx_pinsr<ssevecsize>): This.
18127
18128 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
18129
18130         * loop-iv.c (replace_single_def_regs): Look for REG_EQUAL notes;
18131         follow chains of regs with a single definition, and allow expressions
18132         that are function_invariant_p.
18133         (simple_rhs_p): Allow expressions that are function_invariant_p.
18134
18135 2009-04-24  Paolo Bonzini  <bonzini@gnu.org>
18136
18137         PR middle-end/39867
18138         * fold-const.c (fold_cond_expr_with_comparison): When folding
18139         > and >= to MAX, make sure the MAX uses the same type as the
18140         comparison's operands.
18141
18142 2009-04-24  Nick Clifton  <nickc@redhat.com>
18143
18144         * config/frv/frv.c (frv_frame_access): Do not use reg+reg
18145         addressing for DImode accesses.
18146         (frv_print_operand_address): Handle PLUS case.
18147         * config/frv/frv.h (FIXED_REGISTERS): Mark link register as fixed.
18148
18149 2009-04-24  Jakub Jelinek  <jakub@redhat.com>
18150
18151         PR rtl-optimization/39794
18152         * alias.c (canon_true_dependence): Add x_addr argument.
18153         * rtl.h (canon_true_dependence): Adjust prototype.
18154         * cse.c (check_dependence): Adjust canon_true_dependence callers.
18155         * cselib.c (cselib_invalidate_mem): Likewise.
18156         * gcse.c (compute_transp): Likewise.
18157         * dse.c (scan_reads_nospill): Likewise.
18158         (record_store, check_mem_read_rtx): Likewise.  For non-const-or-frame
18159         addresses pass base->val_rtx as mem_addr, for const-or-frame addresses
18160         canon_base_addr of the group, plus optional offset.
18161         (struct group_info): Rename canon_base_mem to
18162         canon_base_addr.
18163         (get_group_info): Set canon_base_addr to canon_rtx of base, not
18164         canon_rtx of base_mem.
18165
18166 2009-04-23  Paolo Bonzini  <bonzini@gnu.org>
18167
18168         * config/sh/sh.c (sh_expand_prologue, sh_expand_epilogue):
18169         Use memory_address_p instead of GO_IF_LEGITIMATE_ADDRESS.
18170
18171 2009-04-23  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
18172
18173         * config/spu/spu-builtins.h: Delete file.
18174
18175         * config/spu/spu.h (enum spu_builtin_type): Move here from
18176         spu-builtins.h.
18177         (struct spu_builtin_description): Likewise.  Add GTY marker.
18178         Do not use enum spu_function_code or enum insn_code.
18179         (spu_builtins): Add extern declaration.
18180
18181         * config/spu/spu.c: Do not include "spu-builtins.h".
18182         (enum spu_function_code, enum spu_builtin_type_index,
18183         V16QI_type_node, V8HI_type_node, V4SI_type_node, V2DI_type_node,
18184         V4SF_type_node, V2DF_type_node, unsigned_V16QI_type_node,
18185         unsigned_V8HI_type_node, unsigned_V4SI_type_node,
18186         unsigned_V2DI_type_node): Move here from spu-builtins.h.
18187         (spu_builtin_types): Make static.  Add GTY marker.
18188         (spu_builtins): Add extern declaration with GTY marker.
18189         Include "gt-spu.h".
18190
18191         * config/spu/spu-c.c: Do not include "spu-builtins.h".
18192         (spu_resolve_overloaded_builtin): Do not use spu_function_code.
18193         Check programmatically whether all parameters are scalar.
18194
18195         * config/spu/t-spu-elf (spu.o, spu-c.o): Update dependencies.
18196
18197 2009-04-23  Eric Botcazou  <ebotcazou@adacore.com>
18198
18199         * gimplify.c (gimplify_modify_expr_rhs) <VAR_DECL>: Do not do a direct
18200         assignment from the constructor either if the target is volatile.
18201
18202 2009-04-23  Daniel Jacobowitz  <dan@codesourcery.com>
18203
18204         * config/arm/arm.md (insv): Do not share operands[0].
18205
18206 2009-04-23  Nathan Sidwell  <nathan@codesourcery.com>
18207
18208         * config/vxlib-tls.c (active_tls_threads): Delete.
18209         (delete_hook_installed): New.
18210         (tls_delete_hook): Don't delete the delete hook.
18211         (tls_destructor): Delete it here.
18212         (__gthread_set_specific): Adjust installing the delete hook.
18213         (tls_delete_hook): Use __gthread_enter_tsd_dtor_context and
18214         __gthread_leave_tsd_dtor_context.
18215
18216 2009-04-23  Rafael Avila de Espindola  <espindola@google.com>
18217
18218         * c-format.c (gcc_tdiag_char_table): Add support for %E.
18219
18220 2009-04-23  Uros Bizjak  <ubizjak@gmail.com>
18221
18222         * config/alpha/alpha.c (alpha_legitimize_reload_address): Add cast to
18223         enum type.
18224         (alpha_rtx_costs): Ditto.
18225         (emit_unlikely_jump): Use add_reg_note.
18226         (emit_frame_store_1): Ditto.
18227         (alpha_expand_prologue): Ditto.
18228         (alpha_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
18229         * config/alpha/alpha.c (Unicos/Mk address splitter): Use add_reg_note.
18230
18231 2009-04-23  Nick Clifton  <nickc@redhat.com>
18232
18233         * config/v850/v850.md (epilogue): Remove suppressed code.
18234         (return): Rename to return_simple and remove test of frame size.
18235         * config/v850/v850.c (expand_epilogue): Rename call to gen_return
18236         to gen_return_simple.
18237
18238 2009-04-22  Jing Yu  <jingyu@google.com>
18239
18240         PR testsuite/39781
18241         * config/arm/arm.h: Define HANDLE_PRAGMA_PACK_PUSH_POP.
18242
18243 2009-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18244
18245         PR C/31499
18246         * c-typeck.c (process_init_element): Treat VECTOR_TYPE like ARRAY_TYPE
18247         and RECORD_TYPE/UNION_TYPE.  When outputing the actual element and the
18248         value is a VECTOR_CST, the element type is the element type of the
18249         vector.
18250
18251 2009-04-22  DJ Delorie  <dj@redhat.com>
18252
18253         * config/m32c/m32c.h: Update GTY annotations to new syntax.
18254
18255 2009-04-22  Jakub Jelinek  <jakub@redhat.com>
18256
18257         * alias.c (find_base_term): Move around LO_SUM case, so that
18258         CONST falls through into PLUS/MINUS handling.
18259
18260         PR c/39855
18261         * fold-const.c (fold_binary) <case LSHIFT_EXPR>: When optimizing
18262         into 0, use omit_one_operand.
18263
18264 2009-04-23  Ben Elliston  <bje@au.ibm.com>
18265
18266         * config/rs6000/linux-unwind.h (get_regs): Remove type
18267         puns. Change the type of `pc' to an array of unsigned ints and
18268         update all users.  Constify frame24.
18269
18270 2009-04-22  DJ Delorie  <dj@redhat.com>
18271
18272         * config/m32c/m32c.c (m32c_special_page_vector_p): Move
18273         declarations before code.
18274         (current_function_special_page_vector): Likewise.
18275         (m32c_expand_insv): Silence a warning.
18276
18277 2009-04-21  Taras Glek  <tglek@mozilla.com>
18278
18279         * alias.c: Update GTY annotations to new syntax.
18280         * basic-block.h: Likewise.
18281         * bitmap.h: Likewise.
18282         * c-common.h: Likewise.
18283         * c-decl.c: Likewise.
18284         * c-parser.c: Likewise.
18285         * c-pragma.c: Likewise.
18286         * c-tree.h: Likewise.
18287         * cfgloop.h: Likewise.
18288         * cgraph.h: Likewise.
18289         * config/alpha/alpha.c: Likewise.
18290         * config/arm/arm.h: Likewise.
18291         * config/avr/avr.h: Likewise.
18292         * config/bfin/bfin.c: Likewise.
18293         * config/cris/cris.c: Likewise.
18294         * config/darwin.c: Likewise.
18295         * config/frv/frv.c: Likewise.
18296         * config/i386/i386.c: Likewise.
18297         * config/i386/i386.h: Likewise.
18298         * config/i386/winnt.c: Likewise.
18299         * config/ia64/ia64.h: Likewise.
18300         * config/iq2000/iq2000.c: Likewise.
18301         * config/mips/mips.c: Likewise.
18302         * config/mmix/mmix.h: Likewise.
18303         * config/pa/pa.c: Likewise.
18304         * config/pa/pa.h: Likewise.
18305         * config/rs6000/rs6000.c: Likewise.
18306         * config/s390/s390.c: Likewise.
18307         * config/sparc/sparc.c: Likewise.
18308         * config/xtensa/xtensa.c: Likewise.
18309         * cselib.h: Likewise.
18310         * dbxout.c: Likewise.
18311         * dwarf2out.c: Likewise.
18312         * except.c: Likewise.
18313         * except.h: Likewise.
18314         * fixed-value.h: Likewise.
18315         * function.c: Likewise.
18316         * function.h: Likewise.
18317         * gimple.h: Likewise.
18318         * integrate.c: Likewise.
18319         * optabs.c: Likewise.
18320         * output.h: Likewise.
18321         * real.h: Likewise.
18322         * rtl.h: Likewise.
18323         * stringpool.c: Likewise.
18324         * tree-data-ref.c: Likewise.
18325         * tree-flow.h: Likewise.
18326         * tree-scalar-evolution.c: Likewise.
18327         * tree-ssa-address.c: Likewise.
18328         * tree-ssa-alias.h: Likewise.
18329         * tree-ssa-operands.h: Likewise.
18330         * tree.c: Likewise.
18331         * tree.h: Likewise.
18332         * varasm.c: Likewise.
18333         * varray.h: Likewise.
18334         * vec.h: Likewise.
18335         * coretypes.h: Do not define GTY macro if it is already defined.
18336         * doc/gty.texi: Update GTY documentation to new syntax.
18337         * gengtype-lex.l: Enforce attribute-like syntax for GTY
18338         annotations on structs.
18339         * gengtype-parse.c: Likewise.
18340
18341 2009-04-22  Mark Heffernan  <meheff@google.com>
18342
18343         * gcc.c (LINK_COMMAND_SPEC): Link with gcov with -fprofile-generate=.
18344
18345 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
18346
18347         * config/arm/arm.c (arm_rtx_costs_1): Use power_of_two_operand
18348         where appropriate.
18349
18350 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
18351
18352         * config/arm/arm.c (arm_size_rtx_costs): Treat a PLUS with a shift
18353         the same as a PLUS without a shift.  Increase the cost of a
18354         CONST_INT in MULT.
18355
18356 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18357
18358         * Makefile.in: Update dependencies.
18359         * errors.c (warning): Remove unused parameter 'opt'. Returns 'void'.
18360         * errors.h: Remove bogus comment about compatibility.
18361         (warning): Update declaration.
18362         * genautomata.c: Update all calls to warning.
18363         * gimple.c: Do not include errors.h. Include toplev.h.
18364         * tree-ssa-structalias.c: Do not include errors.h.
18365         * omega.c: Likewise.
18366         * tree-ssa-reassoc.c: Likewise.
18367         * config/spu/spu-c.c: Likewise.
18368         * config/spu/t-spu-elf: Update dependencies.
18369
18370 2009-04-22  Richard Guenther  <rguenther@suse.de>
18371
18372         PR tree-optimization/39824
18373         * tree-ssa-ccp.c (fold_const_aggregate_ref): For INDIRECT_REFs
18374         make sure the types are compatible.
18375
18376 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18377
18378         PR c++/14875
18379         * c-common.c (c_parse_error): Take a token_flags parameter.
18380         Use token_type for the token type instead.
18381         Pass token_flags to cpp_type2name.
18382         * c-common.h (c_parse_error): Update declaration.
18383         * c-parser.c (c_parser_error): Pass 0 as token flags.
18384
18385 2009-04-22  Andrey Belevantsev  <abel@ispras.ru>
18386
18387         PR rtl-optimization/39580
18388         * sel-sched-ir.c (insert_in_history_vect): Remove incorrect gcc_assert.
18389
18390 2009-04-22  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
18391
18392         * function.c (expand_function_end): Do not emit a jump to the "naked"
18393         return label for fall-through returns.
18394         * except.c (sjlj_emit_function_exit): Always place the call to the
18395         unregister function at the location installed by expand_function_end.
18396
18397 2009-04-22  Richard Guenther  <rguenther@suse.de>
18398
18399         PR tree-optimization/39845
18400         * tree-switch-conversion.c (build_arrays): Add new referenced vars.
18401         (gen_inbound_check): Likewise.
18402
18403 2009-04-22  Nathan Sidwell  <nathan@codesourcery.com>
18404
18405         * gthr-vxworks.h (struct __gthread_once_t): Add alignment and
18406         padding for PPC.
18407         (__GTHREAD_ONCE_INIT): Adjust ppc initializer.
18408         * config/vxlib.c (__gthread_once): Add race guard for PPC.
18409
18410 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
18411
18412         * config/sh/sh.c (shift_insns_rtx, shiftcosts, gen_shifty_op,
18413         sh_dynamicalize_shift_p, shl_and_scr_length): Truncate
18414         shift counts to avoid out-of-bounds array accesses.
18415
18416 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
18417
18418         * config/sparc/sparc.h (POINTER_SIZE): Fix comment.
18419         (Pmode): Move above.
18420
18421 2009-04-22  Uros Bizjak  <ubizjak@gmail.com>
18422
18423         * config/alpha/alpha.c: Use REG_P, MEM_P, CONST_INT_P, JUMP_P,
18424         NONJUMP_INSN_P, CALL_P, LABEL_P and NOTE_P predicates instead of
18425         GET_CODE macro.  Use IN_RANGE macro where appropriate.
18426         * config/alpha/alpha.h: Ditto.
18427         * config/alpha/alpha.md: Ditto.
18428         * config/alpha/constraints.md: Ditto.
18429         * config/alpha/predicates.md: Ditto.
18430
18431 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
18432
18433         * defaults.h (GO_IF_MODE_DEPENDENT_ADDRESS): Provide empty default.
18434         * config/frv/frv.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18435         * config/s390/s390.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18436         * config/m32c/m32c.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18437         * config/spu/spu.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18438         * config/i386/i386.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18439         * config/sh/sh.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18440         * config/pdp11/pdp11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18441         * config/avr/avr.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18442         * config/crx/crx.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18443         * config/fr30/fr30.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18444         * config/m68hc11/m68hc11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18445         * config/cris/cris.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18446         * config/iq2000/iq2000.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18447         * config/mn10300/mn10300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18448         * config/ia64/ia64.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18449         * config/m68k/m68k.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18450         * config/picochip/picochip.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18451         * config/arc/arc.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18452         * config/mcore/mcore.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18453         * config/score/score.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18454         * config/arm/arm.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18455         * config/pa/pa.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18456         * config/mips/mips.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18457         * config/v850/v850.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18458         * config/mmix/mmix.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18459         * config/bfin/bfin.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18460
18461 2009-04-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
18462
18463         * cfghooks.c (tidy_fallthru_edges): Remove find_basic_blocks
18464         references from comments.
18465         * cfgbuild.c: (count_basic_blocks): Delete.
18466         (find_basic_blocks_1): Delete.
18467         (find_basic_blocks): Delete.
18468         * except.c (finish_eh_generation): Make static.  Move comment from
18469         except.h here.  Remove find_basic_blocks references from comments.
18470         * except.h (finish_eh_generation): Delete.
18471         * basic-block.h (find_basic_blocks): Delete.
18472         * config/sh/sh.c (sh_output_mi_thunk): Delete a "#if 0" block.
18473
18474 2009-04-22  Dave Korn  <dave.korn.cygwin@gmail.com>
18475
18476         * sdbout.c (sdbout_symbol):  Pass VOIDmode to eliminate_regs.
18477         (sdbout_parms):  Likewise.
18478
18479 2009-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
18480
18481         * config/sh/sh.c (prepare_cbranch_operands): Use
18482         LAST_AND_UNUSED_RTX_CODE instead of CODE_FOR_nothing.
18483         (expand_cbranchdi4): Likewise.
18484         (from_compare): Add cast to enum type.
18485         (expand_cbranchsi4): Use add_reg_note.
18486         (output_stack_adjust, push, pop, sh_expand_prologue): Likewise.
18487         (sh_insn_length_adjustment): Use sh_cpu_attr instead of sh_cpu.
18488         (sh_initialize_trampoline): Change 0 to LCT_NORMAL in function call.
18489         (sh_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
18490         * config/sh/sh.md (cbranchsi4): Use LAST_AND_UNUSED_RTX_CODE
18491         instead of CODE_FOR_nothing.
18492         (cbranchdi4): Likewise.  Fix the order of arguments for
18493         gen_rtx_fmt_ee.
18494         (push_fpscr): Use add_reg_note.
18495         (pop_fpscr, movdf_i4+1, reload_outdf__RnFRm+3, reload_outdf__RnFRm+4,
18496         reload_outdf__RnFRm+5, fpu_switch+1, fpu_switch+2): Likewise.
18497
18498 2009-04-21  Joseph Myers  <joseph@codesourcery.com>
18499
18500         * ABOUT-GCC-NLS, ChangeLog, ChangeLog-1997, ChangeLog-1998,
18501         ChangeLog-1999, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
18502         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
18503         ChangeLog-2007, ChangeLog-2008, ChangeLog.dataflow, ChangeLog.lib,
18504         ChangeLog.ptr, ChangeLog.tree-ssa, ChangeLog.tuples, FSFChangeLog,
18505         FSFChangeLog.10, FSFChangeLog.11, LANGUAGES, ONEWS, acinclude.m4,
18506         config/alpha/gnu.h, config/alpha/libgcc-alpha-ldbl.ver,
18507         config/alpha/t-osf4, config/alpha/t-vms, config/alpha/va_list.h,
18508         config/alpha/x-vms, config/arc/t-arc,
18509         config/arm/README-interworking, config/arm/arm-c.c,
18510         config/arm/gentune.sh, config/arm/libgcc-bpabi.ver,
18511         config/arm/t-arm, config/arm/t-arm-elf, config/arm/t-arm-softfp,
18512         config/arm/t-bpabi, config/arm/t-linux, config/arm/t-linux-eabi,
18513         config/arm/t-netbsd, config/arm/t-pe, config/arm/t-strongarm-elf,
18514         config/arm/t-symbian, config/arm/t-vxworks, config/arm/t-wince-pe,
18515         config/avr/t-avr, config/bfin/elf.h, config/bfin/libgcc-bfin.ver,
18516         config/bfin/linux.h, config/bfin/t-bfin, config/bfin/t-bfin-elf,
18517         config/bfin/t-bfin-linux, config/bfin/t-bfin-uclinux,
18518         config/bfin/uclinux.h, config/cris/mulsi3.asm, config/cris/t-cris,
18519         config/cris/t-elfmulti, config/crx/t-crx,
18520         config/darwin-ppc-ldouble-patch.def, config/darwin-sections.def,
18521         config/divmod.c, config/fr30/t-fr30, config/frv/libgcc-frv.ver,
18522         config/frv/t-frv, config/frv/t-linux, config/h8300/genmova.sh,
18523         config/h8300/t-h8300, config/i386/athlon.md,
18524         config/i386/darwin-libgcc.10.4.ver,
18525         config/i386/darwin-libgcc.10.5.ver, config/i386/libgcc-glibc.ver,
18526         config/i386/mach.h, config/i386/netbsd.h, config/i386/t-crtpc,
18527         config/i386/t-cygming, config/i386/t-cygwin, config/i386/t-i386,
18528         config/i386/t-linux64, config/i386/t-nwld,
18529         config/i386/t-rtems-i386, config/i386/t-sol2-10,
18530         config/i386/x-mingw32, config/ia64/div.md, config/ia64/elf.h,
18531         config/ia64/ia64.opt, config/ia64/libgcc-glibc.ver,
18532         config/ia64/libgcc-ia64.ver, config/ia64/linux.h,
18533         config/ia64/sysv4.h, config/ia64/t-hpux, config/ia64/t-ia64,
18534         config/iq2000/abi, config/iq2000/lib2extra-funcs.c,
18535         config/iq2000/t-iq2000, config/libgcc-glibc.ver,
18536         config/m32r/libgcc-glibc.ver, config/m32r/t-linux,
18537         config/m32r/t-m32r, config/m68hc11/t-m68hc11,
18538         config/m68k/t-floatlib, config/m68k/t-linux, config/m68k/t-mlibs,
18539         config/m68k/t-uclinux, config/mcore/t-mcore,
18540         config/mcore/t-mcore-pe, config/mips/20kc.md, config/mips/4130.md,
18541         config/mips/5400.md, config/mips/5500.md, config/mips/crti.asm,
18542         config/mips/crtn.asm, config/mips/irix-crti.asm,
18543         config/mips/irix-crtn.asm, config/mips/libgcc-mips16.ver,
18544         config/mips/mips-dsp.md, config/mips/mips-dspr2.md,
18545         config/mips/mips-fixed.md, config/mips/sb1.md,
18546         config/mips/sr71k.md, config/mips/t-elf, config/mips/t-gofast,
18547         config/mips/t-iris6, config/mips/t-isa3264,
18548         config/mips/t-libgcc-mips16, config/mips/t-linux64,
18549         config/mips/t-mips, config/mips/t-r3900, config/mips/t-rtems,
18550         config/mips/t-sb1, config/mips/t-sde, config/mips/t-sdemtk,
18551         config/mips/t-slibgcc-irix, config/mips/t-sr71k, config/mips/t-st,
18552         config/mips/t-vr, config/mips/t-vxworks, config/mmix/t-mmix,
18553         config/mn10300/t-linux, config/mn10300/t-mn10300,
18554         config/pa/pa32-regs.h, config/pa/t-hpux-shlib, config/pa/t-linux,
18555         config/pa/t-linux64, config/pa/t-pa64, config/pdp11/t-pdp11,
18556         config/picochip/libgccExtras/clzsi2.asm,
18557         config/picochip/t-picochip, config/rs6000/darwin-ldouble-format,
18558         config/rs6000/darwin-libgcc.10.4.ver,
18559         config/rs6000/darwin-libgcc.10.5.ver,
18560         config/rs6000/libgcc-ppc-glibc.ver, config/rs6000/ppc-asm.h,
18561         config/rs6000/t-aix43, config/rs6000/t-aix52,
18562         config/rs6000/t-darwin, config/rs6000/t-fprules,
18563         config/rs6000/t-fprules-fpbit, config/rs6000/t-linux64,
18564         config/rs6000/t-lynx, config/rs6000/t-netbsd,
18565         config/rs6000/t-ppccomm, config/rs6000/t-ppcendian,
18566         config/rs6000/t-ppcgas, config/rs6000/t-rs6000,
18567         config/rs6000/t-rtems, config/rs6000/t-spe,
18568         config/rs6000/t-vxworks, config/s390/libgcc-glibc.ver,
18569         config/score/t-score-elf, config/sh/divcost-analysis,
18570         config/sh/libgcc-glibc.ver, config/sh/t-netbsd, config/sh/t-sh,
18571         config/sh/t-sh64, config/sh/t-superh, config/sh/t-symbian,
18572         config/sparc/libgcc-sparc-glibc.ver, config/sparc/sol2-bi.h,
18573         config/sparc/sol2-gas.h, config/sparc/sol2-gld-bi.h,
18574         config/sparc/t-elf, config/sparc/t-linux64, config/sparc/t-sol2,
18575         config/stormy16/stormy-abi, config/stormy16/t-stormy16,
18576         config/t-darwin, config/t-libunwind, config/t-libunwind-elf,
18577         config/t-linux, config/t-lynx, config/t-slibgcc-elf-ver,
18578         config/t-slibgcc-sld, config/t-sol2, config/t-vxworks,
18579         config/udivmod.c, config/udivmodsi4.c, config/v850/t-v850,
18580         config/v850/t-v850e, config/xtensa/t-xtensa, diagnostic.def,
18581         gdbinit.in, glimits.h, gstab.h, gsyms.h, java/ChangeLog,
18582         java/ChangeLog.ptr, java/ChangeLog.tree-ssa, libgcc-std.ver,
18583         limitx.h, version.c, xcoff.h: Add copyright and license notices.
18584         * config/h8300/genmova.sh: Include copyright and license notices
18585         in generated output.
18586         * config/h8300/mova.md: Regenerate.
18587         * doc/install.texi2html: Include word "Copyright" in copyright
18588         notice and use name "Free Software Foundation, Inc.".
18589         * ChangeLog, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
18590         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
18591         ChangeLog-2007, ChangeLog-2008: Correct dates.
18592
18593 2009-04-21  Eric Botcazou  <ebotcazou@adacore.com>
18594
18595         * c-common.c (c_common_truthvalue_conversion): Use LOCATION to build
18596         NE_EXPR operations as well.
18597         * c-parser.c (c_parser_condition): Do not set location information on
18598         the condition.
18599         (c_parser_conditional_expression): Likewise.
18600         (c_parser_binary_expression): Set location information on operators.
18601         * c-typeck.c (build_unary_op) <TRUTH_NOT_EXPR>: Reset the location if
18602         TRUTH_NOT_EXPR has been folded.
18603         * fold-const.c (fold_truth_not_expr): Copy location information from
18604         the incoming expression to the outgoing one.
18605         * gimplify.c (shortcut_cond_r): Add locus parameter.  Pass it to
18606         recursive calls on the LHS of the operator but pass that of the
18607         operator to recursive calls on the RHS of the operator.  Set it
18608         on the COND_EXPR.
18609         (shortcut_cond_expr): Set the locus of the operator on the second
18610         COND_EXPR and that of the expression on the first in degenerate cases.
18611         Pass the locus of the expression to calls to shortcut_cond_r.
18612         Set the locus of the 'then' block on the associated jump, if any.
18613         (gimplify_boolean_expr): Add locus parameter.  Set it on the COND_EXPR.
18614         (gimplify_expr) <TRUTH_ANDIF_EXPR>: Pass the locus of the outer
18615         expression to call to gimplify_boolean_expr.
18616
18617 2009-04-21  Kai Tietz  <kai.tietz@onevision.com>
18618
18619         * config.gcc: Add additional configuration for
18620         i686-w64-mingw* and x86_64-w64-mingw* triplet.
18621         * config/i386/mingw-w64.h: New mingw-w64 specific header.
18622         (CPP_SPEC): Redefine for allowing -municode option.
18623         (STARTFILE_SPEC): Likewise.
18624         * config/i386/t-mingw-w64: New.
18625         * config/i386/mingw-w64.opt: New.
18626         (municode): Add new target option.
18627         * doc/invoke.texi (municode): Add documentation for new option.
18628
18629 2009-04-21  Ian Lance Taylor  <iant@google.com>
18630
18631         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
18632         Correct test for number of arguments.
18633         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Likewise.
18634
18635 2009-04-21  Andreas Schwab  <schwab@linux-m68k.org>
18636
18637         * config/m68k/linux.h (FINALIZE_TRAMPOLINE): Use enum for second
18638         argument of emit_library_call.
18639
18640 2009-04-21  Richard Guenther  <rguenther@suse.de>
18641
18642         PR middle-end/39829
18643         * gimple.c (walk_stmt_load_store_addr_ops): Catch addresses
18644         inside VIEW_CONVERT_EXPRs.
18645
18646 2009-04-21  Martin Jambor  <mjambor@suse.cz>
18647
18648         * tree-switch-conversion.c (build_constructors): Split a long line.
18649         (constructor_contains_same_values_p): New function.
18650         (build_one_array): Create assigns of constants if possible, do not
18651         call mark_sym_for_renaming, call update_stmt.
18652         (build_arrays): Call make_ssa_name (create_tmp_var ()) instead of
18653         make_rename_temp.  Do not call mark_symbols_for_renaming, call
18654         update_stmt.
18655         (gen_def_assigns): Do not call mark_symbols_for_renaming or
18656         find_new_referenced_vars, call update_stmt.
18657         (gen_inbound_check): Use create_tmp_var and create ssa names manually
18658         instead of calling make_rename_temp.  Do not call
18659         find_new_referenced_vars or mark_symbols_for_renaming, call
18660         update_stmt.
18661
18662 2009-04-21  Richard Guenther  <rguenther@suse.de>
18663
18664         PR tree-optimization/39827
18665         * tree-ssa-phiprop.c (propagate_with_phi): Check SSA_NAME is in range.
18666         (tree_ssa_phiprop): Pass the correct array size.
18667
18668 2009-04-21  Uros Bizjak  <ubizjak@gmail.com>
18669
18670         * config/alpha/alpha.md (tune): Add cast to enum attr_tune.
18671
18672 2009-04-21  Manuel López-Ibáñez  <manu@gcc.gnu.org>
18673
18674         PR 16202
18675         * c-typeck.c (lvalue_p): Move declaration ...
18676         * c-common.h (lvalue_p): ... to here.
18677         * c-common.c (candidate_equal_p): New.
18678         (add_tlist): Use it.
18679         (merge_tlist): Use it.
18680         (warn_for_collisions_1): Likewise.
18681         (warning_candidate_p): Accept more candidates.
18682         (verify_tree): A warning candidate can be an expression. Use
18683         candidate_equal_p.
18684
18685 2009-04-21  Ben Elliston  <bje@au.ibm.com>
18686
18687         PR target/5267
18688         * doc/invoke.texi (RS/6000 and PowerPC Options): Add documentation
18689         for -mcall-eabi, -mcall-aixdesc, -mcall-freebsd and -mcall-openbsd
18690         options.  Remove -mcall-solaris documentation.
18691
18692 2009-04-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18693
18694         PR c++/13358
18695         * doc/invoke.texi (-Wlong-long): Update description.
18696         * c-lex (interpret_integer): Only warn if there was no previous
18697         overflow and -Wlong-long is enabled.
18698         * c-decl.c (declspecs_add_type): Drop redundant flags.
18699         * c.opt (Wlong-long): Init to -1.
18700         * c-opts.c (sanitize_cpp_opts): Synchronize cpp's warn_long_long
18701         and front-end warn_long_long. Wlong-long only depends on other
18702         flags if it is uninitialized.
18703         * c-parser.c (disable_extension_diagnostics): warn_long_long is
18704         the same for CPP and FE.
18705         (restore_extension_diagnostics): Likewise.
18706
18707 2009-04-20  Ian Lance Taylor  <iant@google.com>
18708
18709         Fix enum conversions which are invalid in C++:
18710         * auto-inc-dec.c (attempt_change): Change 0 to SET in function call.
18711         * calls.c (store_one_arg): Change 0 to EXPAND_NORMAL in function call.
18712         * cse.c (hash_rtx_cb): Change 0 to VOIDmode in function call.
18713         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add cast to enum type.
18714         * dbxout.c (dbxout_symbol): Change 0 to VOIDmode in function call.
18715         (dbxout_parms): Likewise.
18716         * df-core.c (df_set_flags): Change changeable_flags parameter to int.
18717         (df_clear_flags): Likewise.
18718         * df-problems.c (df_rd_bb_local_compute_process_def): Change
18719         top_flag parameter to int.
18720         (df_chain_create_bb_process_use): Likewise.
18721         (df_chain_add_problem): Change chain_flags parameter to unsigned int.
18722         Remove cast.
18723         * df-scan.c (df_ref_create): Change ref_flags parameter to int.
18724         (df_ref_create_structure, df_def_record_1): Likewise.
18725         (df_defs_record, df_uses_record, df_get_call_refs): Likewise.
18726         (df_notes_rescan): Change 0 to VOIDmode in function call.
18727         (df_get_call_refs, df_insn_refs_collect): Likewise.
18728         (df_bb_regs_collect): Likewise.
18729         (df_entry_block_defs_collect): Likewise.
18730         (df_exit_block_uses_collect): Likewise.
18731         * df.h: Update declarations.
18732         * double-int.c (double_int_divmod): Add cast to enum type.
18733         * dse.c (replace_inc_dec): Reverse parameters to gen_int_mode.
18734         * dwarf2out.c (new_reg_loc_descr): Add casts to enum type.
18735         (based_loc_descr): Likewise.
18736         (loc_descriptor_from_tree_1): Change first_op and second_op to
18737         enum dwarf_location_atom.  Add cast to enum type.
18738         * expmed.c (init_expmed): Change 0 to SET in function call.
18739         * expr.c (init_expr_target): Change 0 to VOIDmode in function call.
18740         (expand_expr_real_1): Change 0 to EXPAND_NORMAL in function call.
18741         (do_store_flag): Likewise.
18742         * fixed-value.h (struct fixed_value): Change mode to enum
18743         machine_mode.
18744         * function.c (assign_parms): Change 0 to VOIDmode in function call.
18745         * genautomata.c (insert_automaton_decl): Change 1 to INSERT in
18746         function call.
18747         (insert_insn_decl, insert_decl, insert_state): Likewise.
18748         (automata_list_finish): Likewise.
18749         * genrecog.c (process_define_predicate): Add cast to enum type.
18750         * gensupport.c (init_predicate_table): Add cast to enum type.
18751         * gimple.c (gimple_build_return): Change 0 to ERROR_MARK in
18752         function call.
18753         (gimple_build_call_1, gimple_build_label): Likewise.
18754         (gimple_build_goto, gimple_build_asm_1): Likewise.
18755         (gimple_build_switch_1, gimple_build_cdt): Likewise.
18756         * gimple.h (GIMPLE_CHECK): Change 0 to ERROR_MARK in function call.
18757         (enum fallback): Rename from enum fallback_t.
18758         (fallback_t): Typedef as int.
18759         * gimple-low.c (lower_builtin_setjmp): Change TSI_SAME_STMT to
18760         GSI_SAME_STMT in function call.
18761         * ira.c (setup_class_subset_and_memory_move_costs): Add casts to
18762         enum type.
18763         (setup_reg_class_relations): Likewise.
18764         (setup_reg_class_nregs): Change cl to int.  Add casts to enum type.
18765         (setup_prohibited_class_mode_regs): Add cast to enum type.
18766         (setup_prohibited_mode_move_regs): Likewise.
18767         * ira-costs.c (record_reg_classes): Change rclass to enum reg_class.
18768         (record_address_regs): Change i to enum reg_class.
18769         * lists.c (alloc_EXPR_LIST): Add cast to enum type.
18770         * machmode.h (GET_MODE_CLASS): Cast value to enum mode_class.
18771         (GET_MODE_WIDER_MODE): Cast value to enum machine_mode.
18772         (GET_MODE_2XWIDER_MODE): Likewise.
18773         (GET_CLASS_NARROWEST_MODE): Likewise.
18774         * omp-low.c (expand_omp_for): Add cast to enum type.
18775         * optabs.c (debug_optab_libfuncs): Add casts to enum type.
18776         * opts.c (enable_warning_as_error): Change kind to diagostic_t.
18777         * postreload.c (reload_cse_simplify_operands): Change rclass local
18778         to enum reg_class.
18779         * predict.c (combine_predictions_for_insn): Change best_predictor
18780         and predictor to enum br_predictor.
18781         (combine_predictions_for_bb): Likewise.
18782         (build_predict_expr): Change assignment to PREDICT_EXPR_OUTCOME to
18783         use SET_PREDICT_EXPR_OUTCOME.
18784         * real.c (real_arithmetic): Change icode to code in function call.
18785         * reginfo.c (init_move_cost): Add casts to enum type.
18786         (init_reg_sets_1, init_fake_stack_mems): Likewise.
18787         * regmove.c (regclass_compatible_p): Change class0 and class1 to
18788         enum reg_class.
18789         * reload.c (find_valid_class): Add casts to enum type.
18790         (push_reload): Change 0 to NO_REGS in function call.
18791         (find_reloads): Change this_alternative to array of enum
18792         reg_class.  Remove some now-unnecessary casts.
18793         (make_memloc): Change 0 to VOIDmode in function call.
18794         * reload1.c (reload): Change 0 to VOIDmode in function call.
18795         (eliminate_regs_1, elimination_effects): Likewise.
18796         (eliminate_regs_in_insn): Likewise.
18797         (emit_input_reload_insns): Add cast to enum type.
18798         (delete_output_reload): Change 0 to VOIDmode in function call.
18799         * reorg.c (insn_sets_resource_p): Convert include_delayed_effects
18800         to enum type in function call.
18801         * tree.h (PREDICT_EXPR_OUTCOME): Add cast to enum type.
18802         (SET_PREDICT_EXPR_OUTCOME): Define.
18803         * tree-dump.c (get_dump_file_info): Change phase parameter to int.
18804         (get_dump_file_name, dump_begin, dump_enabled_p): Likewise.
18805         (dump_initialized_p, dump_flag_name, dump_end): Likewise.
18806         (dump_function): Likewise.
18807         * tree-dump.h: Update declarations.
18808         * tree-pass.h: Update declarations.
18809         * varasm.c (assemble_integer): Change mclass to enum mode_class.
18810         * config/arm/arm.c (thumb_legitimize_reload_address): Add cast to
18811         enum type.
18812         (arm_rtx_costs_1): Correct parenthesization.
18813         (arm_rtx_costs): Add casts to enum type.
18814         (adjacent_mem_locations): Reverse arguments to const_ok_for_op.
18815         (vfp_emit_fstmd): Use add_rg_note.
18816         (emit_multi_reg_push, emit_sfm): Likewise.
18817         (thumb_set_frame_pointer): Likewise.
18818         (arm_expand_prologue): Likewise.
18819         (arm_regno_class): Change return type to enum reg_class.
18820         (thumb1_expand_prologue): Use add_reg_note.
18821         * config/arm/arm-protos.h (arm_regno_class): Update declaration.
18822         * config/arm/arm.h (INITIALIZE_TRAMPOLINE): Change 0 to LCT_NORMAL
18823         in function call.
18824         * config/arm/gentune.sh: Add cast to enum type.
18825         * config/arm/arm-tune.md: Rebuild.
18826         * config/i386/i386.c (ix86_expand_prologue): Use add_reg_note.
18827         (ix86_split_fp_branch, predict_jump): Likewise.
18828         (ix86_expand_multi_arg_builtin): Change sub_code from enum
18829         insn_code to enum rtx_code.
18830         (ix86_builtin_vectorized_function): Add cast to enum type.
18831         * config/i386/i386.md (truncdfsf2): Change slot to enum
18832         ix86_stack_slot.
18833         (truncxf<mode>2, isinf<mode>2): Likewise.
18834         * config/i386/i386-c.c (ix86_pragma_target_parse): Add cast to
18835         enum type.
18836         * config/ia64/ia64.c (ia64_split_tmode_move): Use add_reg_note.
18837         (spill_restore_mem, do_spill, ia64_expand_prologue): Likewise.
18838         (insert_bundle_state): Change 1 to INSERT in function call.
18839         (ia64_add_bundle_selector_before): Likewise.
18840         * config/ia64/ia64.md (cpu attr): Add cast to enum type.
18841         (save_stack_nonlocal): Change 0 to LCT_NORMAL in function call.
18842         (restore_stack_nonlocal): Likewise.
18843         * config/mips/mips.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL in
18844         function call.
18845         * config/mips/mips.c (mips_binary_cost): Change 0 to SET in
18846         function call.
18847         (mips_rtx_costs): Likewise.
18848         (mips_override_options): Add casts to enum type.
18849         * config/mips/sdemtk.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL
18850         in function call.
18851         * config/pa/pa.c (legitimize_pic_address): Use add_reg_note.
18852         (store_reg, set_reg_plus_d): Likewise.
18853         (hppa_expand_prologue, hppa_profile_hook): Likewise.
18854         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Add
18855         cast to enum type.
18856         (altivec_expand_vec_set_builtin): Change 0 to EXPAND_NORMAL in
18857         function call.
18858         (emit_unlikely_jump): Use add_reg_note.
18859         (rs6000_emit_allocate_stack): Likewise.
18860         (rs6000_frame_related, rs6000_emit_prologue): Likewise.
18861         (output_toc): Change 1 to INSERT in function call.
18862         (output_profile_hook): Change 0 to LCT_NORMAL in function call.
18863         (rs6000_initialize_trampoline): Likewise.
18864         (rs6000_init_dwarf_reg_sizes_extra): Change 0 to EXPAND_NORMAL in
18865         function call.
18866         * config/s390/s390.c (s390_rtx_costs): Add cast to enum type.
18867         (s390_expand_movmem): Change 0 to OPTAB_DIRECT in function call.
18868         (s390_expand_setmem, s390_expand_cmpmem): Likewise.
18869         (save_gprs): Use add_reg_note.
18870         (s390_emit_prologue): Likewise.
18871         (s390_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
18872         * config/sparc/sparc.c (sparc_expand_prologue): Use add_reg_note.
18873         (sparc_fold_builtin): Add cast to enum type.
18874         * config/spu/spu.c (spu_emit_branch_or_set): Change ior_code to
18875         enum insn_code.
18876         (spu_expand_prologue): Use add_reg_note.
18877         (expand_builtin_args): Change 0 to EXPAND_NORMAL in function call.
18878
18879 2009-04-20  Ian Lance Taylor  <iant@google.com>
18880
18881         * c-parser.c (c_parser_attributes): Change VEC back to tree list.
18882         (c_parser_postfix_expression_after_primary): Get VEC for list of
18883         arguments.  Get original types of arguments.  Call
18884         build_function_call_vec.
18885         (cached_expr_list_1, cached_expr_list_2): New static variables.
18886         (c_parser_expr_list): Change return type to VEC *.  Add
18887         p_orig_types parameter.  Change all callers.
18888         (c_parser_release_expr): New static function.
18889         (c_parser_vec_to_tree_list): New static function.
18890         * c-typeck.c (build_function_call): Rewrite to build a VEC and
18891         call build_function_call_vec.
18892         (build_function_call_vec): New function, based on old
18893         build_function_call.
18894         (convert_arguments): Remove nargs and argarray parameters.  Change
18895         values to a VEC.  Add origtypes parameter.
18896         (build_modify_expr): Add rhs_origtype parameter.  Change all callers.
18897         (convert_for_assignment): Add origtype parameter.  Change all
18898         callers.  If warn_cxx_compat, check for conversion to an enum
18899         type when calling a function.
18900         (store_init_value): Add origtype parameter.  Change all callers.
18901         (digest_init): Likewise.
18902         (struct init_node): Add origtype field.
18903         (add_pending_init): Add origtype parameter.  Change all callers.
18904         (output_init_element): Likewise.
18905         (output_pending_init_elements): Pass origtype from init_node to
18906         output_init_element.
18907         (process_init_element): Pass origtype from c_expr to
18908         output_init_element.
18909         (c_finish_return): Add origtype parameter.  Change all callers.
18910         * c-common.c (sync_resolve_size): Change params to VEC *.  Change
18911         caller.
18912         (sync_resolve_params): Likewise.
18913         (sync_resolve_return): Change params to first_param.  Change caller.
18914         (resolve_overloaded_builtins): Change params to VEC *.  Change
18915         callers.  Save first parameter around call to build_function_call_vec.
18916         * c-decl.c (finish_decl): Add origtype parameter.  Change all
18917         callers.  Call build_function_call_vec rather than
18918         build_function_call for cleanup.
18919         * c-tree.h: Update declarations.
18920         * c-common.h: Update declarations.
18921         * stub-objc.c (objc_rewrite_function_call): Change parameter from
18922         params to first_param.
18923         * target.h (struct gcc_target): Change resolve_overloaded_builtin
18924         params parameter from tree to void *.
18925         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
18926         Change arglist parameter to have type void *, and to be a pointer
18927         to a VEC.
18928         * config/rs6000/rs6000-protos.h
18929         (altivec_resolve_overloaded_builtin): Update declaration.
18930         * config/spu/spu-c.c (spu_resolved_overloaded_builtin): Change
18931         fnargs parameter to have type void *, and to be a pointer to a
18932         VEC.  Call build_function_call_vec instead of
18933         build_function_call.
18934         * config/spu/spu-protos.h (spu_expand_builtin): Update declaration.
18935
18936 2009-04-20  Joey Ye  <joey.ye@intel.com>
18937             Xuepeng Guo  <xuepeng.guo@intel.com>
18938             H.J. Lu  <hongjiu.lu@intel.com>
18939
18940         * config/i386/atom.md: Add bypasses with ix86_dep_by_shift_count.
18941
18942         * config/i386/i386.c (LEA_SEARCH_THRESHOLD): New macro.
18943         (IX86_LEA_PRIORITY): Likewise.
18944         (distance_non_agu_define): New function.
18945         (distance_agu_use): Likewise.
18946         (ix86_lea_for_add_ok): Likewise.
18947         (ix86_dep_by_shift_count): Likewise.
18948
18949         * config/i386/i386.md: Call ix86_lea_for_add_ok to decide we
18950         should split for LEA.
18951
18952         * config/i386/i386-protos.h (ix86_lea_for_add_ok): Declare new
18953         function.
18954         (ix86_dep_by_shift_count): Likewise.
18955
18956 2009-04-20  Richard Guenther  <rguenther@suse.de>
18957
18958         * expr.c (handled_component_p): Move ...
18959         * tree.h (handled_component_p): ... here.
18960         * tree.def: Re-order BIT_FIELD_REF, COMPONENT_REF,
18961         ARRAY_REF, ARRAY_RANGE_REF, VIEW_CONVERT_EXPR, IMAGPART_EXPR
18962         and REALPART_EXPR to be in one group.
18963
18964 2009-04-20  Richard Guenther  <rguenther@suse.de>
18965
18966         * basic-block.h (get_all_dominated_blocks): Declare.
18967         * dominance.c (get_all_dominated_blocks): New function.
18968         * tree-cfg.c (get_all_dominated_blocks): Remove.
18969         (remove_edge_and_dominated_blocks): Adjust.
18970         * tree-ssa-phiprop.c (tree_ssa_phiprop_1): Fold in ...
18971         (tree_ssa_phiprop): ... here.  Use get_all_dominated_blocks
18972         instead of recursing.
18973
18974 2009-04-20  Doug Kwan  <dougkwan@google.com>
18975
18976         * cgraph.h (cgraph_node_ptr): New type for vector functions.
18977         (struct cgraph_node_set_def): New type.
18978         (cgraph_node_set) New type. Also declare vector functions.
18979         (struct cgraph_node_set_element_def): New type.
18980         (cgraph_node_set_element): Ditto.
18981         (cgraph_node_set_iterator): New iterator type.
18982         (cgraph_node_set_new, cgraph_node_set_find, cgraph_node_set_add,
18983         cgraph_node_set_remove, dump_cgraph_node_set,
18984         debug_cgraph_node_set): New prototypes.
18985         (csi_end_p, csi_next, csi_node, csi_start, cgraph_node_in_set_p,
18986         cgraph_node_set_size): New inlines.
18987         * tree-pass.h (struct cgraph_node_set_def): New decl to avoid
18988         including cgraph.h.
18989         (struct ipa_opt_pass): Add struct cgraph_node_set_def
18990         argument to function 'write_summary'.
18991         * ipa.c: Include ggc.h.
18992         (hash_cgraph_node_set_element,
18993         eq_cgraph_node_set_element, cgraph_node_set_new,
18994         cgraph_node_set_add, cgraph_node_set_remove,
18995         cgraph_node_set_find, dump_cgraph_node_set,
18996         debug_cgraph_node_set): New functions.
18997         * Makefile.in (ipa.o): Add dependency on GGC_H.
18998
18999 2009-04-20  Ira Rosen  <irar@il.ibm.com>
19000
19001         PR tree-optimization/39675
19002         * tree-vect-loop.c (vect_transform_loop): Remove currently redundant
19003         check of the return code of vect_schedule_slp. Check that
19004         stmt_vec_info still exists for the statement, before checking its
19005         vectorization type.
19006
19007 2009-04-20  Michael Matz  <matz@suse.de>
19008
19009         * Makefile.in (generated_files): Take out $(simple_generated_c).
19010
19011 2009-04-19  Dave Korn  <dave.korn.cygwin@gmail.com>
19012
19013         * config/i386/cygwin-stdint.h (INTPTR_TYPE):  Remove "long".
19014         (UINTPTR_TYPE):  Likewise.
19015
19016 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
19017
19018         PR c/37481
19019         * c-typeck.c (digest_init): Check for initializing an array with a
19020         string literal.
19021
19022 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
19023
19024         PR c/19771
19025         * c-semantics.c (pop_stmt_list): Propagate
19026         STATEMENT_LIST_HAS_LABEL to parent statement list.
19027
19028 2009-04-19  Adam Nemet  <anemet@caviumnetworks.com>
19029
19030         * config/mips/mips.h (mips_tune_attr): New macro.
19031         * config/mips/mips.md (cpu): Use it.
19032
19033 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
19034
19035         PR c/38243
19036         * c-decl.c (shadow_tag_warned): Diagnose use of restrict when
19037         declaring a tag.
19038
19039 2009-04-19  Diego Novillo  <dnovillo@google.com>
19040
19041         * toplev.c (compile_file): Move call to coverage_finish ...
19042         * cgraphunit.c (ipa_passes): ... here.
19043         Call cgraph_process_new_functions.
19044         * ipa-utils.c (get_base_var): Handle CONSTRUCTOR.
19045         * Makefile.in (cgraphunit.o): Add dependency on COVERAGE_H.
19046
19047 2009-04-19  Jan Hubicka  <jh@suse.cz>
19048
19049         * cgraph.c (cgraph_create_edge, cgraph_set_call_stmt): Set proper
19050         cfun.
19051         (dump_cgraph_node): Dump can throw external flag.
19052         * ipa-pure-const.c (propagate): Fix propagation of nothrow flags.
19053
19054 2009-04-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
19055
19056         PR c/32061
19057         PR c++/36954
19058         * doc/invoke.texi: Add -Wlogical-op to -Wextra.
19059         * common.opt (Wlogical-op): Move from here...
19060         * c.opt (Wlogical-op): ... to here.
19061         * c-typeck.c (parser_build_binary_op): Update call to
19062         warn_logical_operator.
19063         * c-opts.c (c_common_post_options): Enable warn_logical_op with
19064         extra_warnings.
19065         * c-common.c (warn_logical_op): Update.
19066         * c-common.h (warn_logical_op): Update declaration.
19067
19068 2009-04-19  Eric Botcazou  <ebotcazou@adacore.com>
19069
19070         * tree.c (protected_set_expr_location): Fix formatting.
19071
19072 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
19073
19074         PR c/27676
19075         * c-typeck.c (readonly_warning): new.
19076         (build_unary_op, build_modify_expr): Use readonly_warning for
19077         storing into something readonly but not const-qualified.
19078
19079 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
19080
19081         PR c/22367
19082         * c-typeck.c (build_unary_op): Check for taking address of
19083         expression of type void.
19084
19085 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
19086
19087         PR c/35210
19088         * c-typeck.c (build_function_call): Check for calling a function
19089         with qualified void return types.  Call require_complete_type when
19090         generating a trap.
19091
19092 2009-04-18  Jan Hubicka  <jh@suse.cz>
19093
19094         * cgraph.c (cgraph_make_edge, dump_cgraph_node, cgraph_set_call_stmt):
19095         Set nothrow flag.
19096         * cgraph.h (struct function): Reduce loop_nest to 30 bits; add
19097         can_throw_external flag.
19098         * ipa-reference.c (ipa_utils_reduced_inorder): Update call.
19099         * ipa-pure-const.c (ignore_edge): New function.
19100         (propagate): Compute order for NOTHROW computation; set NOTHROWs
19101         only over can_throw_external edges.
19102         (local_pure_const): Add nothrow flag.
19103         * ipa-utils.c (searchc): Add ignore_edge callback.
19104         (ipa_utils_reduced_inorder): Add ignore_edge callback.
19105         * ipa-utils.h (ipa_utils_reduced_inorder): Update prototype.
19106         (set_nothrow_function_flags): Update cgraph.
19107         * tree-cfg.c (verify_stmt): Relax nothrow checking when in IPA mode.
19108
19109 2009-04-18  Richard Guenther  <rguenther@suse.de>
19110
19111         PR middle-end/39804
19112         * tree-ssa-ccp.c (fold_stmt_1): New function factored from ...
19113         (fold_stmt): ... this and ...
19114         (fold_stmt_inplace): ... this.
19115         (fold_stmt_1): Fold references in calls and asms.
19116         * tree-cfg.c (remove_useless_stmts_cond): Use fold_stmt.
19117
19118 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
19119
19120         * tree-vrp.c (ssa_name_nonzero_p): Remove.
19121         * tree.h: Remove the prototype for ssa_name_nonzero_p.
19122
19123 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
19124
19125         * tree.c (function_args_count): Remove.
19126         * tree.h: Remove the prototype for function_args_count.
19127
19128 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
19129
19130         * tree-iterator.c (expr_only): Remove.
19131         * tree.h: Remove the prototype for expr_only.
19132
19133 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
19134
19135         * reginfo.c (cannot_change_mode_set_regs): Remove.
19136         * rtl.h: Remove the prototype for cannot_change_mode_set_regs.
19137
19138 2009-04-08  Anatoly Sokolov  <aesok@post.ru>
19139
19140         * config/avr/avr.md (*rotlsi3_8, *rotlsi3_16, *rotlsi3_24 ): Check
19141         whether operands 0 and 1 overlaps.
19142
19143 2009-04-18  Manuel López-Ibáñez  <manu@gcc.gnu.org>
19144
19145         PR middle-end/36902
19146         * tree-vrp.c (check_array_ref): Pass a location_t instead of a
19147         pointer. Use warning_at instead of warning.
19148         (search_for_addr_array): Likewise.
19149         (check_array_bounds): Likewise.
19150         (check_all_array_refs): Check that the incoming edge is not in the
19151         list of edges to be removed.
19152         (check_all_array_refs): Avoid the temporal pointer.
19153         (vrp_visit_cond_stmt): Fix typo.
19154         (simplify_switch_using_ranges): Handle the case where the switch
19155         index is an integer constant.
19156
19157 2009-04-18  Adam Nemet  <anemet@caviumnetworks.com>
19158
19159         * config/mips/mips.c (mips_final_postscan_insn): Make it static.
19160
19161 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
19162
19163         * doc/extend.texi, doc/invoke.texi: Fix typos.
19164
19165 2009-04-17  Cary Coutant  <ccoutant@google.com>
19166
19167         * tree-flow-inline.h (get_lineno): Fix inverted test.
19168
19169 2009-04-17  Diego Novillo  <dnovillo@google.com>
19170
19171         * tree-ssa-pre.c (create_expression_by_pieces): Remove
19172         assertion for AVAIL_OUT.
19173
19174 2009-04-17  Mike Frysinger  <vapier@gentoo.org>
19175
19176         PR target/38627
19177         * config/sh/lib1funcs.asm [__ELF__ && __linux__]: Add .note.GNU-stack.
19178         * config/sh/linux-atomic.asm: Likewise.
19179
19180 2009-04-17  Diego Novillo  <dnovillo@google.com>
19181
19182         * except.c (debug_eh_tree): New.
19183         (struct eh_region, struct eh_status): Move ...
19184         * except.h: ... here.
19185         (add_type_for_runtime): Declare extern.
19186         (lookup_type_for_runtime): Likewise.
19187         (debug_eh_tree): Declare.
19188         * Makefile.in (GTFILES): List except.h before except.c
19189
19190 2009-04-17  Diego Novillo  <dnovillo@google.com>
19191
19192         * omp-low.c (create_omp_child_function): Set DECL_CONTEXT for DECL.
19193         * cgraphunit.c (cgraph_build_static_cdtor): Likewise.
19194         * tree-dfa.c (find_referenced_vars_in): Factor out of ...
19195         (find_vars_r): ... here.
19196         * tree-flow.h (find_referenced_vars_in): Declare.
19197         * tree-ssa-pre.c (create_expression_by_pieces): Assert
19198         that AVAIL_OUT exists for BLOCK.
19199         * Makefile.in (CGRAPH_H): Add dependency on cif-code.def
19200         (tree-loop-distribution.o): Fix dependency on TREE_VECTORIZER_H.
19201         (tree-parloops.o): Likewise.
19202
19203 2009-04-17  Simon Baldwin  <simonb@google.com>
19204
19205         * toplev.c (default_tree_printer): Add handling for %E format.
19206
19207 2009-04-17  Diego Novillo  <dnovillo@google.com>
19208
19209         * tree-pretty-print.c (dump_generic_node): Add break after
19210         TREE_BINFO handler.  Handle COMPLEX_TYPE, REAL_TYPE and
19211         FIXED_POINT_TYPE.  Handle NULL TREE_TYPEs.  Handle METHOD_TYPE and
19212         FUNCTION_TYPE together.  Call print_struct_decl when printing
19213         structures and TDF_SLIM is not given.
19214         (print_struct_decl): Fix logic for detecting recursion.
19215
19216 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
19217
19218         PR 31567
19219         * gcc.c (create_at_file): New.
19220         (compile_input_file_p): New.
19221         (do_spec_1): Use @args files for %i. Use create_at_file for %o.
19222         * main.c (main): Update call to toplev_main.
19223         * toplev.c (toplev_main): Change signature. Call expandargv.
19224         * toplev.h (toplev_main): Change signature.
19225
19226 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
19227
19228         * dwarf2out.c (field_byte_offset): Use the type size as the field size
19229         if the latter is not constant.
19230
19231 2009-04-17  David Edelsohn  <edelsohn@gnu.org>
19232
19233         * dbxout.c (xcoff_debug_hooks): Add set_name_debug_nothing.
19234
19235 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
19236
19237         * dbxout.c (dbxout_block): Reinstate test on TREE_USED.
19238         * tree-ssa-live.c (remove_unused_scope_block_p): Update TREE_USED bit.
19239
19240 2009-04-17  Richard Guenther  <rguenther@suse.de>
19241
19242         * tree-ssa-structalias.c (get_constraint_for_component_ref):
19243         Handle component references view-converting an invariant address.
19244
19245 2009-04-17  Adam Nemet  <anemet@caviumnetworks.com>
19246
19247         * doc/tm.texi (TARGET_DEFAULT_TARGET_FLAGS,
19248         TARGET_MIN_ANCHOR_OFFSET, TARGET_MAX_ANCHOR_OFFSET,
19249         TARGET_HAVE_SRODATA_SECTION, TARGET_HAVE_TLS,
19250         TARGET_UNWIND_TABLES_DEFAULT, TARGET_TERMINATE_DW2_EH_FRAME_INFO):
19251         Use @deftypevr rather than @deftypevar.
19252
19253 2009-04-17  Richard Guenther  <rguenther@suse.de>
19254
19255         * tree-ssa-forwprop.c (get_prop_dest_stmt): Clean up tuplification.
19256         (get_prop_source_stmt): Likewise.
19257         (can_propagate_from): Likewise.
19258
19259 2009-04-17  Andrew Stubbs  <ams@codesourcery.com>
19260
19261         * configure.ac: Add new AC_SUBST for TM_ENDIAN_CONFIG,
19262         TM_MULTILIB_CONFIG and TM_MULTILIB_EXCEPTIONS_CONFIG.
19263         (--with-multilib-list): Add default value.
19264         * configure: Regenerate.
19265         * Makefile.in (TM_ENDIAN_CONFIG): Define.
19266         (TM_MULTILIB_CONFIG, TM_MULTILIB_EXCEPTIONS_CONFIG): Define.
19267         * config.gcc (sh-*-*): Switch to using TM_ENDIAN_CONFIG,
19268         TM_MULTILIB_CONFIG, and TM_MULTILIB_EXCEPTIONS_CONFIG.
19269         Don't add default cpu to multilib list unnecessarily, but do enable
19270         the relevant compiler option..
19271         Add support for --with-multilib-list=<blank> and
19272         --with-multilib-list=!<somelib> to supress unwanted multilibs.
19273         * config/sh/t-sh (DEFAULT_ENDIAN, OTHER_ENDIAN): New variables.
19274         (MULTILIB_ENDIAN, MULTILIB_CPUS): Delete variables.
19275         (MULTILIB_OPTIONS): Redefine using OTHER_ENDIAN and
19276         TM_MULTILIB_CONFIG.
19277         (MULTILIB_EXCEPTIONS): Add TM_MULTILIB_EXCEPTIONS_CONFIG.
19278         (MULTILIB_OSDIRNAMES): New variable.
19279         * config/sh/t-1e: Delete file.
19280         * config/sh/t-mlib-sh1: Delete file.
19281         * config/sh/t-mlib-sh2: Delete file.
19282         * config/sh/t-mlib-sh2a: Delete file.
19283         * config/sh/t-mlib-sh2a-nofpu: Delete file.
19284         * config/sh/t-mlib-sh2a-single: Delete file.
19285         * config/sh/t-mlib-sh2a-single-only: Delete file.
19286         * config/sh/t-mlib-sh2e: Delete file.
19287         * config/sh/t-mlib-sh3e: Delete file.
19288         * config/sh/t-mlib-sh4: Delete file.
19289         * config/sh/t-mlib-sh4-nofpu: Delete file.
19290         * config/sh/t-mlib-sh4-single: Delete file.
19291         * config/sh/t-mlib-sh4-single-only: Delete file.
19292         * config/sh/t-mlib-sh4a: Delete file.
19293         * config/sh/t-mlib-sh4a-nofpu: Delete file.
19294         * config/sh/t-mlib-sh4a-single: Delete file.
19295         * config/sh/t-mlib-sh4a-single-only: Delete file.
19296         * config/sh/t-mlib-sh4al: Delete file.
19297         * config/sh/t-mlib-sh5-32media: Delete file.
19298         * config/sh/t-mlib-sh5-32media-nofpu: Delete file.
19299         * config/sh/t-mlib-sh5-64media: Delete file.
19300         * config/sh/t-mlib-sh5-64media-nofpu: Delete file.
19301         * config/sh/t-mlib-sh5-compact: Delete file.
19302         * config/sh/t-mlib-sh5-compact-nofpu: Delete file.
19303         * config/sh/t-linux: Don't override MULTILIB_EXCEPTIONS.
19304         * doc/install.texi (Options specification): Add
19305         --with-multilib-list and --with-endian.
19306
19307 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
19308
19309         * Makefile.in (REVISION_s): Always include quotes. Change ifdef to use
19310         REVISION_c.
19311         (OBJS-common): Add plugin-version.o.
19312         (plugin-version.o): New.
19313         * gcc-plugin.h (plugin_gcc_version): New.
19314         (plugin_default_version_check): New.
19315         (plugin_init_func, plugin_init): Add version argument.
19316         * plugin-version.c: New.
19317         * plugin.c (str_plugin_gcc_version_name): New.
19318         (try_init_one_plugin): Read plugin_gcc_version from the plugin and
19319         pass it to the init function.
19320         (plugin_default_version_check): New.
19321
19322 2009-04-17  Richard Guenther  <rguenther@suse.de>
19323
19324         * tree-ssa-alias.c (refs_may_alias_p_1): Do not use TBAA
19325         for decl-vs-decl disambiguation.
19326
19327 2009-04-17  Andreas Krebbel  <krebbel1@de.ibm.com>
19328
19329         * config/s390/s390.h (s390_tune_attr): New macro definition.
19330         * config/s390/s390.md (cpu attribute): Map to s390_tune_attr.
19331
19332 2009-04-17  Richard Guenther  <rguenther@suse.de>
19333
19334         * tree-ssa-ccp.c (struct fold_stmt_r_data): Remove.
19335         (fold_stmt_r): Likewise.
19336         (maybe_fold_reference): New function.
19337         (fold_gimple_assign): Handle cases fold_stmt_r did.
19338         (fold_stmt): Do not use fold_stmt_r.
19339         (fold_stmt_inplace): Likewise.
19340
19341 2009-04-17  Richard Guenther  <rguenther@suse.de>
19342
19343         * tree-ssa-dom.c (gimple_assign_unary_useless_conversion_p): Remove.
19344         (record_equivalences_from_stmt): Remove useless checks and
19345         simplifications.
19346         * tree-ssa-pre.c (eliminate): Avoid converting a constant if
19347         the type is already suitable.
19348
19349 2009-04-17  Paolo Bonzini  <bonzini@gnu.org>
19350
19351         * config/sh/sh.h (FUNCTION_VALUE): Fix call to sh_promote_prototypes.
19352
19353 2009-04-17  Uros Bizjak  <ubizjak@gmail.com>
19354
19355         * config/arm/sfp-machine.h (__gcc_CMPtype): New typedef.
19356         (CMPtype): Define as __gcc_CMPtype.
19357
19358 2009-04-17  Aurelien Jarno  <aurelien@aurel32.net>
19359
19360         * config.gcc: Add soft-fp/t-softfp and i386/t-linux to tmake_file
19361         for i[34567]86-*-kfreebsd*-gnu*, x86_64-*-kfreebsd*-gnu*.
19362
19363 2009-04-17  Richard Guenther  <rguenther@suse.de>
19364
19365         PR tree-optimization/39746
19366         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Remove
19367         special-casing for builtins and static variable use/def.
19368         (call_may_clobber_ref_p_1): Likewise.
19369
19370 2009-04-16  Ian Lance Taylor  <iant@google.com>
19371
19372         * df.h: Include "timevar.h".
19373         (struct df_problem): Change tv_id field to timevar_id_t.
19374         * tree-pass.h: Include "timevar.h".
19375         (struct opt_pass): Change tv_id field to timevar_id_t.
19376         * timevar.h (timevar_id_t): Define TV_NONE.
19377         * passes.c (execute_one_ipa_transform_pass): Check for tv_id !=
19378         TV_NONE rather than tv_id != 0.
19379         (execute_one_pass): Likewise.
19380         * Makefile.in (DF_H): Add $(TIMEVAR_H).
19381         (TREE_PASS_H): Define.  Change all instances of tree-pass.h in
19382         dependencies to $(TREE_PASS_H).
19383         * bt-load.c (pass_branch_target_load_optimize1): Set tv_id field
19384         to TV_NONE.
19385         (pass_branch_target_load_optimize2): Likewise.
19386         * cfglayout.c (pass_into_cfg_layout_mode): Likewise.
19387         (pass_outof_cfg_layout_mode): Likewise.
19388         * cgraphbuild.c (pass_remove_cgraph_callee_edges): Likewise.
19389         (pass_rebuild_cgraph_edges): Likewise.
19390         (pass_remove_cgraph_callee_edges): Likewise.
19391         * df-core.c (pass_df_initialize_opt): Likewise.
19392         (pass_df_initialize_no_opt): Likewise.
19393         (pass_df_finish): Likewise.
19394         * emit-rtl.c (pass_unshare_all_rtl): Likewise.
19395         * except.c (pass_set_nothrow_function_flags): Likewise.
19396         (pass_convert_to_eh_region_ranges): Likewise.
19397         * final.c (pass_compute_alignments): Likewise.
19398         * function.c (pass_instantiate_virtual_regs): Likewise.
19399         (pass_init_function): Likewise.
19400         (pass_leaf_regs): Likewise.
19401         (pass_match_asm_constraints): Likewise.
19402         * gimple-low.c (pass_lower_cf): Likewise.
19403         (pass_mark_used_blocks): Likewise.
19404         * init-regs.c (pass_initialize_regs): Likewise.
19405         * integrate.c (pass_initial_value_sets): Likewise.
19406         * ira.c (pass_ira): Likewise.
19407         * jump.c (pass_cleanup_barriers): Likewise.
19408         * omp-low.c (pass_expand_omp): Likewise.
19409         (pass_lower_omp): Likewise.
19410         * matrix-reorg.c (pass_ipa_matrix_reorg): Likewise.
19411         * recog.c (pass_split_all_insns): Likewise.
19412         (pass_split_after_reload): Likewise.
19413         (pass_split_before_regstack): Likewise.
19414         (pass_split_before_sched2): Likewise.
19415         (pass_split_for_shorten_branches): Likewise.
19416         * reginfo.c (pass_reginfo_init): Likewise.
19417         (pass_subregs_of_mode_init): Likewise.
19418         (pass_subregs_of_mode_finish): Likewise.
19419         * passes.c (pass_postreload): Likewise.
19420         * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
19421         * tree-cfg.c (pass_remove_useless_stmts): Likewise.
19422         (pass_warn_function_return): Likewise.
19423         (pass_warn_function_noreturn): Likewise.
19424         * tree-complex.c (pass_lower_complex): Likewise.
19425         (pass_lower_complex_O0): Likewise.
19426         * tree-if-conv.c (pass_if_conversion): Likewise.
19427         * tree-into-ssa.c (pass_build_ssa): Likewise.
19428         * tree-mudflap.c (pass_mudflap_1): Likewise.
19429         (pass_mudflap_2): Likewise.
19430         * tree-nomudflap.c (pass_mudflap_1): Likewise.
19431         (pass_mudflap_2): Likewise.
19432         * tree-nrv.c (pass_return_slot): Likewise.
19433         * tree-object-size.c (pass_object_sizes): Likewise.
19434         * tree-optimize.c (pass_all_optimizations): Likewise.
19435         (pass_early_local_passes): Likewise.
19436         (pass_all_early_optimizations): Likewise.
19437         (pass_cleanup_cfg): Likewise.
19438         (pass_cleanup_cfg_post_optimizing): Likewise.
19439         (pass_free_datastructures): Likewise.
19440         (pass_free_cfg_annotations): Likewise.
19441         (pass_fixup_cfg): Likewise.
19442         (pass_init_datastructures): Likewise.
19443         * tree-ssa.c (pass_early_warn_uninitialized): Likewise.
19444         (pass_late_warn_uninitialized): Likewise.
19445         (pass_update_address_taken): Likewise.
19446         * tree-ssa-ccp.c (pass_fold_builtins): Likewise.
19447         * tree-ssa-math-opts.c (pass_cse_reciprocals): Likewise.
19448         (pass_cse_sincos): Likewise.
19449         (pass_convert_to_rsqrt): Likewise.
19450         * tree-ssa-structalias.c (pass_build_alias): Likewise.
19451         * tree-stdarg.c (pass_stdarg): Likewise.
19452         * tree-tailcall.c (pass_tail_recursion): Likewise.
19453         (pass_tail_calls): Likewise.
19454         * tree-vect-generic.c (pass_lower_vector): Likewise.
19455         (pass_lower_vector_ssa): Likewise.
19456         * tree-vectorizer.c (pass_ipa_increase_alignment): Likewise.
19457
19458 2009-04-16  Joseph Myers  <joseph@codesourcery.com>
19459
19460         * config/mips/mips.c (mips_rtx_cost_data): Use SOFT_FP_COSTS in
19461         XLR entry.
19462         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC):
19463         Handle -march=xlr.
19464         * config/mips/xlr.md (ir_xlr_alu): Also accept insn types move,
19465         logical and signext.
19466
19467 2009-04-16  Kaz Kojima  <kkojima@gcc.gnu.org>
19468
19469         PR target/39767
19470         * config/sh/predicates.md (arith_operand): Check if the operand
19471         of TRUNCATE is a REG.
19472
19473 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
19474
19475         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
19476         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
19477
19478 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
19479
19480         * tree-iterator.c (tsi_split_statement_list_after,
19481         tsi_split_statement_list_before): Remove.
19482         * tree-iterator.h: Remove the prototypes for
19483         tsi_split_statement_list_after and tsi_split_statement_list_before.
19484
19485 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
19486
19487         * tree-ssa-propagate.c (stmt_makes_single_load): Remove.
19488         * tree-ssa-propagate.h: Remove the prototype for
19489         stmt_makes_single_load.
19490
19491 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
19492
19493         * emit-rtl.c (set_mem_attrs_from_reg): Remove.
19494         * rtl.h: Remove the prototype for set_mem_attrs_from_reg.
19495
19496 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
19497
19498         * tree-iterator.c (EXPR_LAST_BODY): Remove.
19499
19500 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
19501
19502         * except.c (eh_region_outer_p): Remove.
19503         * except.h: Remove the prototype for eh_region_outer_p.
19504
19505 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
19506
19507         * function.c (current_function_assembler_name): Remove.
19508         * function.h: Remove the prototype for
19509         current_function_assembler_name.
19510
19511 2009-04-16  Ian Lance Taylor  <iant@google.com>
19512
19513         * rtlanal.c (alloc_reg_note): New function, broken out of add_reg_note.
19514         (add_reg_note): Call alloc_reg_note.
19515         * rtl.h (alloc_reg_note): Declare.
19516         * combine.c (try_combine): Use alloc_reg_note.
19517         (recog_for_combine, move_deaths): Likewise.
19518         (distribute_notes): Use alloc_reg_note and add_reg_note.
19519         * haifa-sched.c (sched_create_recovery_edges): Use add_reg_note.
19520         * combine-stack-adj.c (adjust_frame_related_expr): Likewise.
19521         * reload1.c (eliminate_regs_1): Use alloc_reg_note.
19522
19523 2009-04-16  Vladimir Makarov  <vmakarov@redhat.com>
19524
19525         PR rtl-optimization/39762
19526         * ira-int.h (ira_register_move_cost, ira_may_move_in_cost,
19527         ira_may_move_out_cost): Add comments about way of their usage.
19528         (ira_get_register_move_cost, ira_get_may_move_cost): New functions.
19529
19530         * ira-conflicts.c (process_regs_for_copy): Use function
19531         ira_get_register_move_cost instead of global
19532         ira_register_move_cost.
19533
19534         * ira-color.c (update_copy_costs, calculate_allocno_spill_cost,
19535         color_pass, move_spill_restore, update_curr_costs): Ditto.
19536
19537         * ira-lives.c (process_single_reg_class_operands): Ditto.
19538
19539         * ira-emit.c (emit_move_list): Ditto.
19540
19541         * ira-costs.c (copy_cost): Don't call ira_init_register_move_cost.
19542         (record_reg_classes): Ditto.  Use functions
19543         ira_get_register_move_cost and ira_get_may_move_cost instead of
19544         global vars ira_register_move_cost, ira_may_move_out_cost and
19545         ira_may_move_in_cost.
19546         (record_address_regs): Don't call ira_init_register_move_cost.
19547         Use function ira_get_may_move_cost instead of global
19548         ira_may_move_in_cost.
19549         (process_bb_node_for_hard_reg_moves): Use function
19550         ira_get_register_move_cost instead of global ira_register_move_cost.
19551         (ira_costs): Don't call ira_init_register_move_cost.
19552
19553 2009-04-16  Richard Guenther  <rguenther@suse.de>
19554
19555         * tree-cfg.c (verify_gimple_assign_binary):
19556         Allow POINTER_PLUS_EXPR-like PLUS_EXPR for vectors.
19557         * ipa-struct-reorg.c (gen_size): Fold the built expressions.
19558         (create_general_new_stmt): Note that this function is broken.
19559
19560 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
19561
19562         * common.opt (fhelp): Add Var(help_flag).
19563         * gcc-plugin.h (plugin_info): Add help.
19564         * plugin.c (plugin_name_args): Add help.
19565         (register_plugin_info): Set plugin->help.
19566         (print_help_one_plugin): New.
19567         (print_plugins_help): New.
19568         * plugin.h (print_plugins_help): New.
19569         * toplev.c (toplev_main): Call print_plugins_help if needed.
19570
19571 2009-04-16  Richard Guenther  <rguenther@suse.de>
19572
19573         * gimple.c (gimple_copy): Do not clear addresses_taken bitmap.
19574         (gimple_ior_addresses_taken_1): New function.
19575         (gimple_ior_addresses_taken): Likewise.
19576         * gimple.h (struct gimple_statement_with_ops_base): Remove
19577         addresses_taken member.
19578         (gimple_ior_addresses_taken): Declare.
19579         (gimple_addresses_taken, gimple_addresses_taken_ptr,
19580         gimple_set_addresses_taken): Remove.
19581         * ipa-reference.c (mark_address): New function.
19582         (scan_stmt_for_static_refs): Use it for marking addresses taken.
19583         * tree-ssa-operands.c (add_to_addressable_set): Rename to ...
19584         (mark_address_taken): ... this.  Just set TREE_ADDRESSABLE.
19585         (gimple_add_to_addresses_taken): Remove.
19586         (get_tmr_operands): Call mark_address_taken.
19587         (get_asm_expr_operands): Likewise.
19588         (get_expr_operands): Likewise.
19589         (build_ssa_operands): Do not clear the addresses_taken bitmap.
19590         (free_stmt_operands): Do not free it.
19591         * tree-ssa.c (delete_tree_ssa): Likewise.
19592         (execute_update_addresses_taken): Use gimple_ior_addresses_taken.
19593
19594 2009-04-16  Richard Guenther  <rguenther@suse.de>
19595
19596         * gimple.h (walk_stmt_load_store_addr_ops): Declare.
19597         (walk_stmt_load_store_ops): Likewise.
19598         * gimple.c (get_base_loadstore): New function.
19599         (walk_stmt_load_store_addr_ops): Likewise.
19600         (walk_stmt_load_store_ops): Likewise.
19601         * ipa-pure-const.c (check_op): Simplify.
19602         (check_load, check_store): New functions.
19603         (check_stmt): Use walk_stmt_load_store_ops.
19604         * ipa-reference.c (mark_load): Adjust signature.
19605         (mark_store): Likewise.
19606         (scan_stmt_for_static_refs): Use walk_stmt_load_store_addr_ops.
19607
19608 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
19609
19610         * gcc-plugin.h (plugin_event): Add PLUGIN_INFO.
19611         (plugin_info): New.
19612         * opts.c (common_handle_option): Don't call print_version.
19613         * plugin.c (plugin_name_args): Add version.
19614         (register_plugin_info): New.
19615         (register_callback): Handle PLUGIN_INFO.
19616         (try_init_one_plugin): New.
19617         (init_one_plugin): Use try_init_one_plugin. Only free plugin_name_args
19618         if failed to init.
19619         (finalize_one_plugin): New.
19620         (finalize_plugins): New.
19621         (print_one_plugin): New.
19622         (print_plugins_versions): New.
19623         * plugin.h (print_plugins_versions): New.
19624         (finalize_plugins): New.
19625         * toplev.c (compile_file): Don't call initialize_plugins.
19626         (print_version): Call print_plugins_versions.
19627         (toplev_main): Call initialize_plugins. Print version if needed.
19628         Call finalize_plugins.
19629
19630 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
19631
19632         * common.opt (fversion): New.
19633         * gcc.c (print_version): New.
19634         (process_command): Don't print the version. Just set print_version.
19635         (main): Print version. Call subprocesses if print_version and
19636         verbose_flag are set.
19637         * opts.c (common_handle_option): Handle OPT_fversion.
19638
19639 2009-04-16  Richard Guenther  <rguenther@suse.de>
19640             Ira Rosen  <irar@il.ibm.com>
19641
19642         PR tree-optimization/39698
19643         * tree-vect-loop.c (get_initial_def_for_reduction): Use the
19644         type of the reduction variable.  Only generate the def if
19645         it is needed.
19646
19647         * omp-low.c (expand_omp_for_generic): When converting to a pointer
19648         make sure to first convert to an integer of the same precision.
19649         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer): Retain
19650         the type of the evolution correctly in computing the new
19651         induction variable base.
19652
19653 2009-04-16  Richard Guenther  <rguenther@suse.de>
19654
19655         PR middle-end/39625
19656         * tree-cfg.c (make_blocks): Split statements with to-be
19657         abnormal SSA names on the lhs.
19658
19659 2009-04-16  Paolo Bonzini  <bonzini@gnu.org>
19660
19661         * c-common.c (vector_targets_convertible_p, vector_types_convertible_p):
19662         Use TYPE_VECTOR_OPAQUE instead of targetm.vector_opaque_p.
19663         * c-typeck.c (really_start_incremental_init): Likewise.
19664         * target-def.h (TARGET_VECTOR_OPAQUE_P): Remove.
19665         (TARGET_INITIALIZER): Remove it.
19666         * target.h (struct target): Remove vector_opaque_p.
19667         * tree.c (build_opaque_vector_type): New.
19668         * tree.h (TYPE_VECTOR_OPAQUE): New.
19669         (build_opaque_vector_type): Declare.
19670         * doc/tm.texi (TARGET_VECTOR_OPAQUE_P): Remove.
19671         * config/rs6000/rs6000.c (build_opaque_vector_type,
19672         rs6000_is_vector_type, TARGET_VECTOR_OPAQUE_P): Remove.
19673         (rs6000_init_builtins): Use build_opaque_vector_type for
19674         opaque_V4SI_type_node.
19675
19676 2009-04-15  Catherine Moore  <clm@codesourcery.com>
19677
19678         * debug.h (set_name):  Declare.
19679         * dwarf2out.c (dwarf2out_set_name): Declare.
19680         (dwarf2_debug_hooks): Add set_name.
19681         (find_AT_string): New.
19682         (add_AT_string): Call find_AT_string.
19683         (dwarf2out_set_name): New.
19684         * cp/decl.c (grokdeclarator): Call set_name.
19685         * vmsdbgout.c (vmsdbg_debug_hooks): Add set_name_debug_nothing.
19686         * debug.c (do_nothing_debug_hooks):  Likewise.
19687         * dbxout.c (dbx_debug_hooks): Likewise.
19688         * sdbout.c (sdb_debug_hooks): Likewise.
19689
19690 2009-04-15  Michael Eager  <eager@eagercon.com>
19691
19692         * config/rs6000/rs6000.c (rs6000_function_value): Set function return
19693         reg for single-precision FPU.
19694         * config/rs6000/rs6000.md (movsi_internal1): Only for
19695         !TARGET_SINGLE_FPU.
19696         (movsi_internal1_single): New. Add pattern to move SI values to/from
19697         single-precision FP regs.
19698
19699 2009-04-15  Richard Guenther  <rguenther@suse.de>
19700
19701         * omp-low.c (lower_rec_input_clauses): Build correct address
19702         expressions.
19703         (expand_omp_for_generic): Fix multiplication type.
19704         * tree-loop-distribution.c (build_size_arg): Build a size_t argument.
19705         (generate_memset_zero): Fix types.
19706         * tree-profile.c (prepare_instrumented_value): Correctly
19707         widen a pointer.
19708
19709 2009-04-15  Ian Lance Taylor  <iant@google.com>
19710
19711         * c.opt (Wenum-compare): Enable for C and Objc.  Initialize to -1.
19712         * c-opts.c (c_common_handle_option): For C, set warn_enum_compare
19713         for -Wall and for -Wc++-compat.
19714         (c_common_post_options): For C++, set warn_enum_compare if not
19715         already set.
19716         * c-tree.h (struct c_expr): Add field original_type.
19717         (build_external_ref): Update declaration.
19718         * c-parser.c (c_parser_braced_init): Set original_type.
19719         (c_parser_initelt): Likewise.
19720         (c_parser_expr_no_commas): Likewise.
19721         (c_parser_conditional_expression): Likewise.
19722         (c_parser_cast_expression): Likewise.
19723         (c_parser_unary_expression): Likewise.  Pull setting of
19724         original_code to top of function.
19725         (c_parser_sizeof_expression): Set original_type.
19726         (c_parser_alignof_expression): Likewise.
19727         (c_parser_postfix_expression): Likewise.  Pull setting of
19728         original_code to top of function.
19729         (c_parser_postfix_expression_after_paren_type): Set original_type.
19730         (c_parser_postfix_expression_after_primary): Likewise.
19731         (c_parser_expression): Likewise.
19732         * c-typeck.c (build_external_ref): Add type parameter.  Change all
19733         callers.
19734         (c_expr_sizeof_expr): Set original_type field.
19735         (parser_build_unary_op): Likewise.
19736         (parser_build_binary_op): Likewise.  Optionally warn about
19737         comparisons of enums of different types.
19738         (digest_init): Set original_type field.
19739         (really_start_incremental_init): Likewise.
19740         (push_init_level, pop_init_level): Likewise.
19741         * doc/invoke.texi (Warning Options): -Wenum-compare now
19742         supported in C.
19743
19744 2009-04-15  Richard Guenther  <rguenther@suse.de>
19745
19746         * tree-ssa-pre.c (eliminate): When replacing a PHI node carry
19747         out a necessary conversion.
19748         * tree-ssa-sccvn.c (run_scc_vn): Also assign value-ids to
19749         names we didn't value number.
19750         * tree-mudflap.c (mf_build_check_statement_for): Use correct types.
19751
19752 2009-04-15  Richard Guenther  <rguenther@suse.de>
19753
19754         PR tree-optimization/39764
19755         * tree-ssa-ccp.c (get_value): Canonicalize value with
19756         canonicalize_float_value.
19757
19758 2009-04-15  Jan Hubicka  <jh@suse.cz>
19759
19760         * builtins.def (va_start, va_end, va_copy): Fix my previous commit.
19761         Wrong version of patch.
19762
19763 2009-04-15  Jan Hubicka  <jh@suse.cz>
19764
19765         * builtins.def (va_start, va_end, va_copy): Mark nothrow.
19766
19767 2009-04-15  Nathan Sidwell  <nathan@codesourcery.com>
19768
19769         * config/rs6000/rs6000.c (rs6000_init_builtins): Set TYPE_NAME of
19770         our distinct integral and vector types.
19771
19772 2009-04-15  Rafael Avila de Espindola  <espindola@google.com>
19773
19774         * class.c (build_vtbl_ref_1): Remove call to assemble_external.
19775         * init.c (build_vtbl_address): Remove call to assemble_external.
19776
19777 2009-04-14  Daniel Jacobowitz  <dan@codesourcery.com>
19778
19779         * config/rs6000/rs6000.c (rs6000_dwarf_register_span): Fix debug
19780         output for other floating point modes.
19781
19782 2009-04-14  Diego Novillo  <dnovillo@google.com>
19783
19784         * diagnostic.c (diagnostic_report_diagnostic): Do not
19785         warn about loaded plugins for DK_ERROR and DK_WARNING.
19786         * c-decl.c (declspecs_add_type): Move call to
19787         invoke_plugin_callbacks ...
19788         * c-parser.c (c_parser_declspecs): ... here.
19789         * plugin.c (dump_active_plugins): Tidy output.
19790
19791 2009-04-14  Diego Novillo  <dnovillo@google.com>
19792             Le-Chun Wu  <lcwu@google.com>
19793
19794         * configure.ac: Add --enable-plugin support.
19795         Define ENABLE_PLUGIN and PLUGINLIBS when specified.
19796         * Makefile.in (PLUGIN_H): Define.
19797         Export ENABLE_PLUGIN and GMPINC to site.exp.
19798         Add PLUGINLIBS to link command.
19799         Add/modify dependencies for plugin.o and files including plugin.h.
19800         (plugin.o): New.
19801         * config.in: Regenerate.
19802
19803         * opts.c (common_handle_option): Handle OPT_fplugin_ and
19804         OPT_fplugin_arg_.
19805
19806 2009-04-14  Le-Chun Wu  <lcwu@google.com>
19807
19808         * tree-pass.h (register_one_dump_file): Add a prototype for
19809         register_one_dump_file.
19810         * toplev.c (compile_file): Call initialize_plugins.
19811         (do_compile): Call invoke_plugin_callbacks.
19812         (toplev_main): Call invoke_plugin_callbacks.
19813         * common.opt: Add -fplugin= and -fplugin-arg-.
19814         * gcc-plugin.h: New public header file for plugins to include.
19815         * plugin.c: New source file.
19816         * plugin.h: New internal header file.
19817         * passes.c (register_one_dump_file): Make it external.
19818
19819         * c-parser.c (c_parser_declspecs): Call invoke_plugin_callbacks.
19820
19821 2009-04-14  Diego Novillo  <dnovillo@google.com>
19822
19823         * doc/plugins.texi: New.
19824         * doc/gccint.texi: Add reference to Plugins chapter.
19825         * doc/invoke.texi: Document -fplugin and -fplugin-arg
19826         * diagnostic.c (diagnostic_report_diagnostic): Warn about
19827         loaded plugins, if any.
19828         * timevar.def (TV_PLUGIN_INIT): Define.
19829         (TV_PLUGIN_RUN): Define.
19830         * plugin.c: Include timevar.h
19831         (plugins_active_p): New.
19832         (dump_active_plugins): New.
19833         (debug_active_plugins): New.
19834
19835 2009-04-14  Joseph Myers  <joseph@codesourcery.com>
19836
19837         * config/sol2.h (LINK_ARCH32_SPEC_BASE): Use %R with absolute
19838         library paths.
19839         * config/sparc/sol2-bi.h (LINK_ARCH64_SPEC_BASE): Likewise.
19840
19841 2009-04-14  Kazu Hirata  <kazu@codesourcery.com>
19842
19843         * config/arm/arm.c (arm_rtx_costs_1): Treat a minus with a shift
19844         the same as a minus without a shift.
19845
19846 2009-04-14  Nick Clifton  <nickc@redhat.com>
19847
19848         * config/stormy16/stormy16.md (ineqbranch_1): Do not assume that
19849         comparisons with small integers will always produce a short
19850         branch.
19851
19852 2009-04-14  Rafael Avila de Espindola  <espindola@google.com>
19853
19854         Merge:
19855         2008-12-19  Diego Novillo  <dnovillo@google.com>
19856
19857         * cgraph.c (dump_cgraph_node): Show memory address of NODE.
19858
19859 2009-04-14  Richard Guenther  <rguenther@suse.de>
19860
19861         * tree-cfg.c (verify_gimple_assign_unary): Adjust vector code
19862         verification.
19863         (verify_gimple_assign_binary): Likewise.  Handle shifts and
19864         rotates correctly.
19865         (verify_gimple_phi): Print the mismatched argument position.
19866         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer):
19867         Fix types.
19868         (vect_update_init_of_dr): Likewise.
19869         * matrix-reorg.c (transform_access_sites): Do what the
19870         comment suggests.
19871         * omp-low.c (expand_omp_atomic_pipeline): Use the correct types.
19872
19873 2009-04-13  Michael Eager  <eager@eagercon.com>
19874
19875         * config/rs6000/rs6000-c.c: generate defines if rs6000_xilinx_fpu:
19876         _XFPU, _XFPU_SP_LITE, _XFPU_SP_FULL, _XFPU_DP_LITE, _XFPU_DP_FULL
19877         * config/rs6000/xilinx.h: New.  Spec for powerpc-xilinx-eabi
19878         * config.gcc (powerpc-xilinx-eabi): add xilinx.h to tm_file,
19879         remove duplicate config
19880
19881 2009-04-13  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
19882
19883         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Dump
19884         file_name:line_number type locator of the call site.
19885
19886 2009-04-13  Vladimir Makarov  <vmakarov@redhat.com>
19887
19888         * genautomata.c: Put blank after comma.
19889         (automaton_decls): New.
19890         (struct unit_usage): Add comments to member next.
19891         (store_alt_unit_usage): Keep the list ordered.
19892         (unit_present_on_list_p, equal_alternatives_p): New.
19893         (check_regexp_units_distribution): Check units distribution
19894         correctness correctly.
19895         (main): Don't write automata if error is found.  Return correct
19896         exit code.
19897
19898         * config/m68k/cf.md (cfv4_ds): Remove.
19899         (cfv4_pOEP1, cfv4_sOEP1, cfv4_pOEP2,cfv4_sOEP2, cfv4_pOEP3,
19900         cfv4_sOEP3): Assign to cfv4_oep instead of cfv4_ds.
19901
19902         * config/rs6000/power4.md (lsuq_power4, iq_power4, fpq_power4,
19903         power4-load-ext, power4-store, power4-store-update,
19904         power4-fpstore, power4-fpstore-update, power4-two, power4-three,
19905         power4-insert, power4-compare, power4-lmul-cmp, power4-imul-cmp,
19906         power4-lmul, , power4-imul, power4-imul3, power4-sdiv,
19907         power4-sqrt, power4-isync): Modify reservation to make correct
19908         unit distribution to automata.
19909
19910         * config/rs6000/power5.md (iq_power5, fpq_power5, power5-store,
19911         power5-store-update, power5-two, power5-three, power5-lmul,
19912         power5-imul, power5-imul3, power5-sdiv, power5-sqrt): Ditto.
19913
19914 2009-04-13  Adam Nemet  <anemet@caviumnetworks.com>
19915
19916         * except.c (pass_set_nothrow_function_flags): Set name and add
19917         TODO_dump_func.
19918         (set_nothrow_function_flags): Mention in the dump file when
19919         changing a function to nothrow.
19920
19921 2009-04-13  Ozkan Sezer  <sezeroz@gmail.com>
19922
19923         PR/39066
19924         * gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Use __SIZE_TYPE__
19925         instead of unsigned long.
19926
19927 2009-04-13  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
19928
19929         * config/arm/arm.c (return_used_this_function): Remove.
19930         (arm_output_function_prologue): Remove use of
19931         return_used_this_function.
19932         (output_return_instruction): Replace use of
19933         return_used_this_function
19934         by cfun->machine->return_used_this_function.
19935         (arm_output_epilogue): Likewise.
19936         (arm_output_function_epilogue): Likewise.
19937         (thumb_unexpanded_epilogue): Likewise.
19938         * config/arm/arm.h (struct machine_function):
19939         New member return_used_this_function.
19940
19941 2009-04-12  Mark Mitchell  <mark@codesourcery.com>
19942
19943         * doc/install.texi: Correct description of default directory for
19944         --with-gxx-include-dir.
19945
19946 2009-04-12  Eric Botcazou  <ebotcazou@adacore.com>
19947
19948         * fold-const.c (build_range_check): Properly deal with enumeral and
19949         boolean base types.
19950
19951 2009-04-12  Steven Bosscher  <steven@gcc.gnu.org>
19952
19953         * doc/invoke.texi (max_gcse_passes): Remove documentation.
19954         * params.def (PARAM_MAX_GCSE_PASSES): Remove.
19955         * params.h (MAX_GCSE_PASSES): Remove.
19956         * gcse.c (gcse_main): Run CPROP1, PRE or HOIST, and CPROP2
19957         in sequence.  Remove ability to run multiple passes.
19958         (bypass_jumps): Report run as third CPROP pass.
19959
19960 2009-04-12  Adam Nemet  <anemet@caviumnetworks.com>
19961
19962         PR middle-end/39651
19963         * except.c (can_throw_external): Look at each insn in a SEQUENCE
19964         when deciding whether the whole SEQUENCE can throw.
19965
19966 2009-04-12  Uros Bizjak  <ubizjak@gmail.com>
19967
19968         PR target/39740
19969         * config/alpha/predicates.md (local_symbolic_operand): Return 1 for
19970         offseted label references.
19971
19972 2009-04-11  Jan Hubicka  <jh@suse.cz>
19973
19974         * tree-ssa-pre.c (eliminate): Fix call of update_stmt.
19975
19976 2009-04-11  Richard Guenther  <rguenther@suse.de>
19977
19978         PR middle-end/39732
19979         * tree-inline.c (declare_return_variable): Mark DECL_BY_REFERENCE
19980         return variables as TREE_ADDRESSABLE.
19981
19982 2009-04-11  Richard Guenther  <rguenther@suse.de>
19983
19984         PR tree-optimization/39713
19985         * tree-ssa-sccvn.c (vn_get_expr_for): Make sure built
19986         reference trees have SSA_NAME operands.
19987
19988 2009-04-11  Richard Guenther  <rguenther@suse.de>
19989
19990         PR c/39712
19991         * c-gimplify.c (c_gimplify_expr): Adjust check for mismatched
19992         address expressions.
19993
19994 2009-04-11  Dave Korn  <dave.korn.cygwin@gmail.com>
19995
19996         * config/i386/cygwin-stdint.h (INT_LEAST32_TYPE):  Update to
19997         match changes in Cygwin 1.7
19998         (UINT_LEAST32_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE,
19999         UINT_FAST16_TYPE, UINT_FAST32_TYPE):  Likewise.
20000
20001 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
20002
20003         PR tree-optimization/39701
20004         * doc/invoke.texi (Optimization Options): Document change in
20005         meaning and initialization of -fdelete-null-pointer-checks.
20006
20007 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
20008
20009         PR middle-end/39701
20010         * common.opt (-fdelete-null-pointer-checks): Initialize to 1.
20011
20012         * opts.c (decode_options): Don't set flag_delete_null_pointer_checks
20013         here.
20014
20015         * doc/invoke.texi: Update -fdelete-null-pointer-checks.
20016
20017 2009-04-10  Chao-ying Fu  <fu@mips.com>
20018
20019         * doc/tm.texi (Instruction Output): Document
20020         TARGET_ASM_FINAL_POSTSCAN_INSN.
20021         * target.h (final_postscan_insn): New field in asm_out.
20022         * target-def.h (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
20023         (TARGET_ASM_OUT): Add TARGET_ASM_FINAL_POSTSCAN_INSN.
20024         * final.c (final_scan_insn): Call
20025         targetm.asm_out.final_postscan_insn after outputting
20026         an asm macro and a normal instruction.
20027
20028         * config/mips/mips.h (FINAL_PRESCAN_INSN): New define.
20029         * config/mips/mips-protos.h (mips_final_prescan_insn): Declare.
20030         * config/mips/mips.c (mips_at_reg_p): New for_each_rtx callback.
20031         (mips_final_prescan_insn, mips_final_postscan_insn): New functions.
20032         (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
20033
20034 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
20035
20036         PR middle-end/39701
20037         * fold-const.c (tree_single_nonzero_warnv_p): Pass non-static
20038         variables as non-NULL even with -fdelete-null-pointer-checks.
20039
20040 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
20041
20042         * config/rs6000/darwin-vecsave.asm: Remove extra "*/".
20043
20044 2009-04-09  H.J. Lu  <hongjiu.lu@intel.com>
20045
20046         PR target/39678
20047         * config/i386/i386.c (classify_argument): Handle SCmode with
20048         (bit_offset % 64) != 0.
20049
20050 2009-04-09  Sandra Loosemore  <sandra@codesourcery.com>
20051
20052         * doc/invoke.texi (Optimize Options): Add cross-reference to
20053         -Q --help=optimizers examples.
20054
20055 2009-04-10  Ben Elliston  <bje@au.ibm.com>
20056
20057         PR target/36800
20058         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Do not set
20059         regalign for the reg == fpr and TDmode case.
20060
20061 2009-04-09  David Ayers  <ayers@fsfe.org>
20062
20063         PR objc/29200
20064         * objc/objc-act.c (warn_with_method): Remove helper function.
20065         (check_duplicates): Call warning and inform directly.
20066         (really_start_method): Likewise.
20067
20068 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
20069
20070         * expmed.c (expand_divmod): Always use a comparison for a division
20071         by a large unsigned integer.
20072
20073         * fold-const.c (tree_single_nonzero_warnv_p): Always treat decls
20074         for things others than variables or functions as nonzero.
20075
20076 2009-04-09  Nick Clifton  <nickc@redhat.com>
20077
20078         * unwind-compat.c: Change copyright header to refer to version
20079         3 of the GNU General Public License with version 3.1 of the
20080         GCC Runtime Library Exception and to point readers at the
20081         COPYING3 and COPYING3.RUNTIME files and the FSF's license web page.
20082         * config/alpha/crtfastmath.c: Likewise.
20083         * config/alpha/linux-unwind.h: Likewise.
20084         * config/alpha/qrnnd.asm: Likewise.
20085         * config/alpha/vms-crt0-64.c: Likewise.
20086         * config/alpha/vms-crt0.c: Likewise.
20087         * config/alpha/vms-dwarf2.asm: Likewise.
20088         * config/alpha/vms-dwarf2eh.asm: Likewise.
20089         * config/alpha/vms-psxcrt0-64.c: Likewise.
20090         * config/alpha/vms-psxcrt0.c: Likewise.
20091         * config/alpha/vms_tramp.asm: Likewise.
20092         * config/arc/initfini.c: Likewise.
20093         * config/arc/lib1funcs.asm: Likewise.
20094         * config/arm/bpabi-v6m.S: Likewise.
20095         * config/arm/bpabi.S: Likewise.
20096         * config/arm/bpabi.c: Likewise.
20097         * config/arm/crti.asm: Likewise.
20098         * config/arm/crtn.asm: Likewise.
20099         * config/arm/ieee754-df.S: Likewise.
20100         * config/arm/ieee754-sf.S: Likewise.
20101         * config/arm/lib1funcs.asm: Likewise.
20102         * config/arm/libunwind.S: Likewise.
20103         * config/arm/linux-atomic.c: Likewise.
20104         * config/arm/mmintrin.h: Likewise.
20105         * config/arm/pr-support.c: Likewise.
20106         * config/arm/unaligned-funcs.c: Likewise.
20107         * config/arm/unwind-arm.c: Likewise.
20108         * config/arm/unwind-arm.h: Likewise.
20109         * config/avr/libgcc.S: Likewise.
20110         * config/bfin/crti.s: Likewise.
20111         * config/bfin/crtlibid.s: Likewise.
20112         * config/bfin/crtn.s: Likewise.
20113         * config/bfin/lib1funcs.asm: Likewise.
20114         * config/bfin/linux-unwind.h: Likewise.
20115         * config/cris/arit.c: Likewise.
20116         * config/cris/cris_abi_symbol.c: Likewise.
20117         * config/darwin-64.c: Likewise.
20118         * config/darwin-crt2.c: Likewise.
20119         * config/darwin-crt3.c: Likewise.
20120         * config/darwin.h: Likewise.
20121         * config/dbxelf.h: Likewise.
20122         * config/dfp-bit.c: Likewise.
20123         * config/dfp-bit.h: Likewise.
20124         * config/elfos.h: Likewise.
20125         * config/fixed-bit.c: Likewise.
20126         * config/fixed-bit.h: Likewise.
20127         * config/fp-bit.c: Likewise.
20128         * config/fp-bit.h: Likewise.
20129         * config/fr30/crti.asm: Likewise.
20130         * config/fr30/crtn.asm: Likewise.
20131         * config/fr30/lib1funcs.asm: Likewise.
20132         * config/freebsd-spec.h: Likewise.
20133         * config/frv/cmovd.c: Likewise.
20134         * config/frv/cmovh.c: Likewise.
20135         * config/frv/cmovw.c: Likewise.
20136         * config/frv/frvbegin.c: Likewise.
20137         * config/frv/frvend.c: Likewise.
20138         * config/frv/lib1funcs.asm: Likewise.
20139         * config/glibc-stdint.h: Likewise.
20140         * config/h8300/clzhi2.c: Likewise.
20141         * config/h8300/crti.asm: Likewise.
20142         * config/h8300/crtn.asm: Likewise.
20143         * config/h8300/ctzhi2.c: Likewise.
20144         * config/h8300/fixunssfsi.c: Likewise.
20145         * config/h8300/lib1funcs.asm: Likewise.
20146         * config/h8300/parityhi2.c: Likewise.
20147         * config/h8300/popcounthi2.c: Likewise.
20148         * config/i386/ammintrin.h: Likewise.
20149         * config/i386/att.h: Likewise.
20150         * config/i386/avxintrin.h: Likewise.
20151         * config/i386/biarch64.h: Likewise.
20152         * config/i386/bmmintrin.h: Likewise.
20153         * config/i386/cpuid.h: Likewise.
20154         * config/i386/cross-stdarg.h: Likewise.
20155         * config/i386/crtfastmath.c: Likewise.
20156         * config/i386/crtprec.c: Likewise.
20157         * config/i386/cygming-crtbegin.c: Likewise.
20158         * config/i386/cygming-crtend.c: Likewise.
20159         * config/i386/cygwin.asm: Likewise.
20160         * config/i386/emmintrin.h: Likewise.
20161         * config/i386/gmm_malloc.h: Likewise.
20162         * config/i386/gthr-win32.c: Likewise.
20163         * config/i386/i386.h: Likewise.
20164         * config/i386/immintrin.h: Likewise.
20165         * config/i386/linux-unwind.h: Likewise.
20166         * config/i386/linux64.h: Likewise.
20167         * config/i386/mm3dnow.h: Likewise.
20168         * config/i386/mmintrin-common.h: Likewise.
20169         * config/i386/mmintrin.h: Likewise.
20170         * config/i386/nmmintrin.h: Likewise.
20171         * config/i386/pmm_malloc.h: Likewise.
20172         * config/i386/pmmintrin.h: Likewise.
20173         * config/i386/smmintrin.h: Likewise.
20174         * config/i386/sol2-c1.asm: Likewise.
20175         * config/i386/sol2-ci.asm: Likewise.
20176         * config/i386/sol2-cn.asm: Likewise.
20177         * config/i386/sol2-gc1.asm: Likewise.
20178         * config/i386/tmmintrin.h: Likewise.
20179         * config/i386/unix.h: Likewise.
20180         * config/i386/w32-unwind.h: Likewise.
20181         * config/i386/wmmintrin.h: Likewise.
20182         * config/i386/x86-64.h: Likewise.
20183         * config/i386/x86intrin.h: Likewise.
20184         * config/i386/xmmintrin.h: Likewise.
20185         * config/ia64/crtbegin.asm: Likewise.
20186         * config/ia64/crtend.asm: Likewise.
20187         * config/ia64/crtfastmath.c: Likewise.
20188         * config/ia64/crti.asm: Likewise.
20189         * config/ia64/crtn.asm: Likewise.
20190         * config/ia64/fde-glibc.c: Likewise.
20191         * config/ia64/lib1funcs.asm: Likewise.
20192         * config/ia64/linux-unwind.h: Likewise.
20193         * config/ia64/quadlib.c: Likewise.
20194         * config/ia64/unwind-ia64.c: Likewise.
20195         * config/linux.h: Likewise.
20196         * config/m32c/m32c-lib1.S: Likewise.
20197         * config/m32c/m32c-lib2-trapv.c: Likewise.
20198         * config/m32c/m32c-lib2.c: Likewise.
20199         * config/m32r/initfini.c: Likewise.
20200         * config/m68hc11/larith.asm: Likewise.
20201         * config/m68hc11/m68hc11-crt0.S: Likewise.
20202         * config/m68k/cf.md: Likewise.
20203         * config/m68k/crti.s: Likewise.
20204         * config/m68k/crtn.s: Likewise.
20205         * config/m68k/lb1sf68.asm: Likewise.
20206         * config/m68k/linux-unwind.h: Likewise.
20207         * config/mcore/crti.asm: Likewise.
20208         * config/mcore/crtn.asm: Likewise.
20209         * config/mcore/lib1.asm: Likewise.
20210         * config/mips/linux-unwind.h: Likewise.
20211         * config/mips/loongson.h: Likewise.
20212         * config/mips/mips16.S: Likewise.
20213         * config/mmix/crti.asm: Likewise.
20214         * config/mmix/crtn.asm: Likewise.
20215         * config/pa/fptr.c: Likewise.
20216         * config/pa/hpux-unwind.h: Likewise.
20217         * config/pa/lib2funcs.asm: Likewise.
20218         * config/pa/linux-atomic.c: Likewise.
20219         * config/pa/linux-unwind.h: Likewise.
20220         * config/pa/milli64.S: Likewise.
20221         * config/pa/quadlib.c: Likewise.
20222         * config/pa/stublib.c: Likewise.
20223         * config/picochip/libgccExtras/adddi3.asm: Likewise.
20224         * config/picochip/libgccExtras/ashlsi3.asm: Likewise.
20225         * config/picochip/libgccExtras/ashlsi3.c: Likewise.
20226         * config/picochip/libgccExtras/ashrsi3.asm: Likewise.
20227         * config/picochip/libgccExtras/ashrsi3.c: Likewise.
20228         * config/picochip/libgccExtras/cmpsi2.asm: Likewise.
20229         * config/picochip/libgccExtras/divmod15.asm: Likewise.
20230         * config/picochip/libgccExtras/divmodhi4.asm: Likewise.
20231         * config/picochip/libgccExtras/divmodsi4.asm: Likewise.
20232         * config/picochip/libgccExtras/longjmp.asm: Likewise.
20233         * config/picochip/libgccExtras/lshrsi3.asm: Likewise.
20234         * config/picochip/libgccExtras/lshrsi3.c: Likewise.
20235         * config/picochip/libgccExtras/parityhi2.asm: Likewise.
20236         * config/picochip/libgccExtras/popcounthi2.asm: Likewise.
20237         * config/picochip/libgccExtras/setjmp.asm: Likewise.
20238         * config/picochip/libgccExtras/subdi3.asm: Likewise.
20239         * config/picochip/libgccExtras/ucmpsi2.asm: Likewise.
20240         * config/picochip/libgccExtras/udivmodhi4.asm: Likewise.
20241         * config/picochip/libgccExtras/udivmodsi4.asm: Likewise.
20242         * config/rs6000/750cl.h: Likewise.
20243         * config/rs6000/altivec.h: Likewise.
20244         * config/rs6000/biarch64.h: Likewise.
20245         * config/rs6000/crtresfpr.asm: Likewise.
20246         * config/rs6000/crtresgpr.asm: Likewise.
20247         * config/rs6000/crtresxfpr.asm: Likewise.
20248         * config/rs6000/crtresxgpr.asm: Likewise.
20249         * config/rs6000/crtsavfpr.asm: Likewise.
20250         * config/rs6000/crtsavgpr.asm: Likewise.
20251         * config/rs6000/darwin-asm.h: Likewise.
20252         * config/rs6000/darwin-fallback.c: Likewise.
20253         * config/rs6000/darwin-fpsave.asm: Likewise.
20254         * config/rs6000/darwin-ldouble.c: Likewise.
20255         * config/rs6000/darwin-tramp.asm: Likewise.
20256         * config/rs6000/darwin-unwind.h: Likewise.
20257         * config/rs6000/darwin-vecsave.asm: Likewise.
20258         * config/rs6000/darwin-world.asm: Likewise.
20259         * config/rs6000/e500crtres32gpr.asm: Likewise.
20260         * config/rs6000/e500crtres64gpr.asm: Likewise.
20261         * config/rs6000/e500crtres64gprctr.asm: Likewise.
20262         * config/rs6000/e500crtrest32gpr.asm: Likewise.
20263         * config/rs6000/e500crtrest64gpr.asm: Likewise.
20264         * config/rs6000/e500crtresx32gpr.asm: Likewise.
20265         * config/rs6000/e500crtresx64gpr.asm: Likewise.
20266         * config/rs6000/e500crtsav32gpr.asm: Likewise.
20267         * config/rs6000/e500crtsav64gpr.asm: Likewise.
20268         * config/rs6000/e500crtsav64gprctr.asm: Likewise.
20269         * config/rs6000/e500crtsavg32gpr.asm: Likewise.
20270         * config/rs6000/e500crtsavg64gpr.asm: Likewise.
20271         * config/rs6000/e500crtsavg64gprctr.asm: Likewise.
20272         * config/rs6000/eabi-ci.asm: Likewise.
20273         * config/rs6000/eabi-cn.asm: Likewise.
20274         * config/rs6000/eabi.asm: Likewise.
20275         * config/rs6000/linux-unwind.h: Likewise.
20276         * config/rs6000/linux64.h: Likewise.
20277         * config/rs6000/paired.h: Likewise.
20278         * config/rs6000/paired.md: Likewise.
20279         * config/rs6000/ppc64-fp.c: Likewise.
20280         * config/rs6000/ppu_intrinsics.h: Likewise.
20281         * config/rs6000/rs6000.h: Likewise.
20282         * config/rs6000/si2vmx.h: Likewise.
20283         * config/rs6000/sol-ci.asm: Likewise.
20284         * config/rs6000/sol-cn.asm: Likewise.
20285         * config/rs6000/spe.h: Likewise.
20286         * config/rs6000/spu2vmx.h: Likewise.
20287         * config/rs6000/sysv4.h: Likewise.
20288         * config/rs6000/tramp.asm: Likewise.
20289         * config/rs6000/vec_types.h: Likewise.
20290         * config/s390/linux-unwind.h: Likewise.
20291         * config/s390/tpf-unwind.h: Likewise.
20292         * config/score/crti.asm: Likewise.
20293         * config/score/crtn.asm: Likewise.
20294         * config/sh/crt1.asm: Likewise.
20295         * config/sh/crti.asm: Likewise.
20296         * config/sh/crtn.asm: Likewise.
20297         * config/sh/divtab-sh4-300.c: Likewise.
20298         * config/sh/divtab-sh4.c: Likewise.
20299         * config/sh/divtab.c: Likewise.
20300         * config/sh/lib1funcs-4-300.asm: Likewise.
20301         * config/sh/lib1funcs-Os-4-200.asm: Likewise.
20302         * config/sh/lib1funcs.asm: Likewise.
20303         * config/sh/lib1funcs.h: Likewise.
20304         * config/sh/linux-atomic.asm: Likewise.
20305         * config/sh/linux-unwind.h: Likewise.
20306         * config/sh/shmedia.h: Likewise.
20307         * config/sh/sshmedia.h: Likewise.
20308         * config/sh/ushmedia.h: Likewise.
20309         * config/sparc/crtfastmath.c: Likewise.
20310         * config/sparc/linux-unwind.h: Likewise.
20311         * config/sparc/sol2-c1.asm: Likewise.
20312         * config/sparc/sol2-ci.asm: Likewise.
20313         * config/sparc/sol2-cn.asm: Likewise.
20314         * config/spu/divmodti4.c: Likewise.
20315         * config/spu/divv2df3.c: Likewise.
20316         * config/spu/float_disf.c: Likewise.
20317         * config/spu/float_unsdidf.c: Likewise.
20318         * config/spu/float_unsdisf.c: Likewise.
20319         * config/spu/float_unssidf.c: Likewise.
20320         * config/spu/mfc_multi_tag_release.c: Likewise.
20321         * config/spu/mfc_multi_tag_reserve.c: Likewise.
20322         * config/spu/mfc_tag_release.c: Likewise.
20323         * config/spu/mfc_tag_reserve.c: Likewise.
20324         * config/spu/mfc_tag_table.c: Likewise.
20325         * config/spu/multi3.c: Likewise.
20326         * config/spu/spu_internals.h: Likewise.
20327         * config/spu/spu_intrinsics.h: Likewise.
20328         * config/spu/spu_mfcio.h: Likewise.
20329         * config/spu/vec_types.h: Likewise.
20330         * config/spu/vmx2spu.h: Likewise.
20331         * config/stormy16/stormy16-lib2.c: Likewise.
20332         * config/svr4.h: Likewise.
20333         * config/sync.c: Likewise.
20334         * config/v850/lib1funcs.asm: Likewise.
20335         * config/vxlib-tls.c: Likewise.
20336         * config/vxlib.c: Likewise.
20337         * config/vxworks-dummy.h: Likewise.
20338         * config/xtensa/crti.asm: Likewise.
20339         * config/xtensa/crtn.asm: Likewise.
20340         * config/xtensa/ieee754-df.S: Likewise.
20341         * config/xtensa/ieee754-sf.S: Likewise.
20342         * config/xtensa/lib1funcs.asm: Likewise.
20343         * config/xtensa/lib2funcs.S: Likewise.
20344         * config/xtensa/linux-unwind.h: Likewise.
20345         * config/xtensa/unwind-dw2-xtensa.c: Likewise.
20346         * config/xtensa/unwind-dw2-xtensa.h: Likewise.
20347         * coretypes.h: Likewise.
20348         * crtstuff.c: Likewise.
20349         * defaults.h: Likewise.
20350         * dwarf2.h: Likewise.
20351         * emutls.c: Likewise.
20352         * gbl-ctors.h: Likewise.
20353         * gcov-io.h: Likewise.
20354         * ginclude/float.h: Likewise.
20355         * ginclude/iso646.h: Likewise.
20356         * ginclude/stdarg.h: Likewise.
20357         * ginclude/stdbool.h: Likewise.
20358         * ginclude/stddef.h: Likewise.
20359         * ginclude/stdfix.h: Likewise.
20360         * ginclude/stdint-gcc.h: Likewise.
20361         * ginclude/tgmath.h: Likewise.
20362         * gthr-aix.h: Likewise.
20363         * gthr-dce.h: Likewise.
20364         * gthr-gnat.c: Likewise.
20365         * gthr-gnat.h: Likewise.
20366         * gthr-lynx.h: Likewise.
20367         * gthr-mipssde.h: Likewise.
20368         * gthr-nks.h: Likewise.
20369         * gthr-posix.c: Likewise.
20370         * gthr-posix.h: Likewise.
20371         * gthr-posix95.h: Likewise.
20372         * gthr-rtems.h: Likewise.
20373         * gthr-single.h: Likewise.
20374         * gthr-solaris.h: Likewise.
20375         * gthr-tpf.h: Likewise.
20376         * gthr-vxworks.h: Likewise.
20377         * gthr-win32.h: Likewise.
20378         * gthr.h: Likewise.
20379         * libgcc2.c: Likewise.
20380         * libgcc2.h: Likewise.
20381         * libgcov.c: Likewise.
20382         * tsystem.h: Likewise.
20383         * typeclass.h: Likewise.
20384         * unwind-c.c: Likewise.
20385         * unwind-compat.h: Likewise.
20386         * unwind-dw2-fde-compat.c: Likewise.
20387         * unwind-dw2-fde-darwin.c: Likewise.
20388         * unwind-dw2-fde-glibc.c: Likewise.
20389         * unwind-dw2-fde.c: Likewise.
20390         * unwind-dw2-fde.h: Likewise.
20391         * unwind-dw2.c: Likewise.
20392         * unwind-dw2.h: Likewise.
20393         * unwind-generic.h: Likewise.
20394         * unwind-pe.h: Likewise.
20395         * unwind-sjlj.c: Likewise.
20396         * unwind.inc: Likewise.
20397         * config/arm/neon-gen.ml: Change generated copyright header to
20398         refer to version 3 of the GNU General Public License with
20399         version 3.1 of the GCC Runtime Library Exception and to point
20400         readers at the COPYING3 and COPYING3.RUNTIME files and the
20401         FSF's license web page.
20402         * config/arm/arm_neon.h: Regenerate.
20403
20404 2009-04-09  Jakub Jelinek  <jakub@redhat.com>
20405
20406         * config/cris/cris.md: Change copyright header to refer to version
20407         3 of the GNU General Public License.
20408         * doc/install.texi2html: Change copyright header to refer to version
20409         3 of the GNU General Public License and to point readers at the
20410         COPYING3 file and the FSF's license web page.
20411         * config/vax/linux.h: Likewise.
20412
20413 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
20414
20415         * config/i386/i386.md (cmpcc): New.
20416         * config/i386/sync.md (sync_compare_and_swap*): Set FLAGS_REG.
20417         (sync_compare_and_swap_cc*): Delete.
20418
20419         * config/s390/s390.c (s390_compare_emitted): Remove.
20420         (s390_emit_compare): Handle MODE_CC s390_compare_op0 like
20421         s390_compare_emitted used to be handled.  Assert that modes match.
20422         (s390_emit_compare_and_swap): Use s390_emit_compare, do not
20423         refer to sync_compare_and_swap_ccsi.
20424         * config/s390/s390.h (s390_compare_emitted): Remove.
20425         * config/s390/s390.md (seq): Look for MODE_CC s390_compare_op0
20426         instead of s390_compare_emitted.
20427         (stack_protect_test, sync_compare_and_swap_cc): Set s390_compare_op0
20428         instead of s390_compare_emitted.
20429         * config/s390/s390.md (cmpcc): New.
20430         (sync_compare_and_swapqi, sync_compare_and_swaphi): Clobber
20431         CC_REGNUM, do not pretend it's set.
20432         (sync_compare_and_swap_cc*): Delete.
20433         * config/s390/predicates.md (cc_reg_operand): New.
20434
20435         * expr.c (sync_compare_and_swap_cc): Delete.
20436         * optabs.h (sync_compare_and_swap_cc): Delete.
20437         * optabs.c (prepare_cmp_insn): Ignore which specific CCmode
20438         is being used with can_compare_p.
20439         (emit_cmp_and_jump_insn_1): Likewise when looking in the optab.
20440         (find_cc_set): New.
20441         (expand_bool_compare_and_swap): Do not use sync_compare_and_swap_cc,
20442         look for a MODE_CC set instead.  Use emit_store_flag.
20443         (expand_compare_and_swap_loop): Likewise, with some additional
20444         complication to avoid a force_reg when useless.  Use
20445         emit_cmp_and_jump_insns.
20446         * genopinit.c (optabs): Delete sync_compare_and_swap_cc.
20447         * doc/md.texi (sync_compare_and_swap_cc): Merge with
20448         sync_compare_and_swap documentation.
20449
20450 2009-04-09  Jan Hubicka  <jh@suse.cz>
20451
20452         * except.c (find_prev_try): Break out from ....
20453         (duplicate_eh_regions): ... here; properly update prev_try pointers
20454         when duplication part of tree.
20455         (dump_eh_tree): Improve dumping.
20456         (verify_eh_region): New.
20457         (verify_eh_tree): Use it.
20458
20459 2009-04-06  Richard Guenther  <rguenther@suse.de>
20460
20461         * c-gimplify.c (c_gimplify_expr): Fix the invalid GENERIC
20462         &ARRAY addresses by adjusting their types and prepending
20463         a conversion.
20464         * tree-cfg.c (verify_gimple_assign_single): Verify that
20465         addresses are correct.
20466
20467 2009-04-09  Richard Guenther  <rguenther@suse.de>
20468
20469         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Move non-constant
20470         indices into an array reference if possible.
20471         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
20472         Fold POINTER_PLUS_EXPR statements with invariant address.
20473
20474 2009-04-09  Alan Modra  <amodra@bigpond.net.au>
20475
20476         PR target/39634
20477         * config.gcc (powerpc64-*-linux*): Always build biarch.
20478
20479 2009-04-09  Joseph Myers  <joseph@codesourcery.com>
20480
20481         PR c/39613
20482         * c-typeck.c (do_case): If case label is not an INTEGER_CST, fold
20483         it and pedwarn if this results in an INTEGER_CST.
20484
20485 2009-04-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
20486
20487         * doc/install.texi: Update minimum GMP version.  Remove obsolete
20488         text in MPFR section.
20489
20490 2009-04-08  Jakub Jelinek  <jakub@redhat.com>
20491
20492         * dwarf2out.c (class_scope_p): New static inline.
20493         (class_or_namespace_scope_p): Use it.
20494         (gen_variable_die): Use DW_TAG_member tag for static data member
20495         declarations instead of DW_TAG_variable.
20496
20497         PR middle-end/39573
20498         * omp-low.c (expand_omp_taskreg): Finalize taskreg static local_decls
20499         variables.
20500
20501 2009-04-08  Richard Guenther  <rguenther@suse.de>
20502
20503         * tree-ssa-sccvn.c (valueize_refs): Do not continue to
20504         valueize random data.
20505
20506 2009-04-08  David Edelsohn  <edelsohn@gnu.org>
20507
20508         * config.gcc (aix tm_file):  Add aix-stdint.h.
20509         (aix tm clause use_gcc_stdint):  Set to wrap.
20510         * config/rs6000/aix-stdint.h:  New file.
20511
20512 2009-04-08  Richard Guenther  <rguenther@suse.de>
20513
20514         PR middle-end/36291
20515         * tree-dfa.c (add_referenced_var): Do not recurse into
20516         global initializers.
20517         * tree-ssa-ccp.c (get_symbol_constant_value): Add newly
20518         exposed variables.
20519         (fold_const_aggregate_ref): Likewise.
20520
20521 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
20522
20523         * recog.c (ordered_comparison_operator): New.
20524         * gensupport.c (std_preds): Add it.
20525         * doc/md.texi (Machine-Independent Predicates): Document it.
20526
20527 2009-04-08  Jan Hubicka  <jh@suse.cz>
20528
20529         * tree-eh.c (cleanup_eh): When not optimizing, do not try EH merging.
20530         * function.h (rtl_eh): Remove exception_handler_label_map.
20531         * except.c (ehl_hash, ehl_eq, add_ehl_entry,
20532         remove_exception_handler_label, for_each_eh_label_1): Remove.
20533         (rtl_remove_unreachable_regions): Remove.
20534         (convert_from_eh_region_ranges): Do not remove unreachable regions.
20535         (find_exception_handler_labels): Don't build the hashtable.
20536         (maybe_remove_eh_handler): Remove.
20537         (for_each_eh_label): Rewrite to walk the tree.
20538         (rest_of_handle_eh): Do not cleanup cfg prior EH construction.
20539         * except.h (maybe_remove_eh_handler): Remove.
20540         * passes.c (init_optimization_passes): Schedule second EH cleanup
20541         before out-of-ssa.
20542         * cfgrtl.c (rtl_delete_block, rtl_merge_blocks,
20543         cfg_layout_merge_blocks): Do not call maybe_remove_eh_handler.
20544
20545 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
20546
20547         * genoutput.c (validate_optab_operands): New.
20548         (gen_insn, gen_expand): Call it.
20549
20550         * genflags.c (gen_insn): Detect misused iterators.
20551         (main): Pass line_no to gen_insn, exit with status 1 on error.
20552
20553         * genextract.c (line_no): Make global.
20554         (VEC_safe_set_locstr): Change assertion to error message.
20555         (main): Exit with status 1 on error.
20556
20557 2009-04-08  Joseph Myers  <joseph@codesourcery.com>
20558
20559         PR c/39614
20560         PR c/39673
20561         * c-common.h (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
20562         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
20563         EXPR_INT_CONST_OPERANDS): Remove duplicate definitions.
20564         * c-convert.c (convert): Do not call fold on results of conversion
20565         functions when the result is a C_MAYBE_CONST_EXPR.
20566         * c-parser.c (c_parser_postfix_expression): Do not fold condition
20567         of __builtin_choose_expr.
20568         * c-typeck.c (remove_c_maybe_const_expr): New.
20569         (build_unary_op, build_conditional_expr, build_compound_expr,
20570         build_binary_op, c_objc_common_truthvalue_conversion): Call
20571         remove_c_maybe_const_expr on any input C_MAYBE_CONST_EXPR with
20572         integer operands.
20573
20574 2009-04-08  Bingfeng Mei  <bmei@broadcom.com>
20575
20576         * fold-const.c (const_binop): Combine two VECTOR_CST under operation
20577         CODE to produce a new one. Add a prototype to use fold_convert_const
20578
20579 2009-04-08  Danny Smith  <dannysmith@users.sourceforge.net>
20580
20581         PR bootstrap/39660
20582         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Don't
20583         mix declarations and code.
20584
20585 2009-04-08  Ben Elliston  <bje@au.ibm.com>
20586
20587         * gcc.c: Replace `CC' with `GCC' throughout.
20588
20589 2009-04-07  H.J. Lu  <hongjiu.lu@intel.com>
20590
20591         * doc/invoke.texi: Document Atom support.
20592
20593 2009-04-07  Jason Merrill  <jason@redhat.com>
20594
20595         PR c++/25185
20596         * c-common.h, c-common.c: Add flag_pretty_templates.
20597         * c-opts.c (c_common_handle_option): Set it.
20598         * c.opt: Add -fno-pretty-templates.
20599         * doc/invoke.texi (C++ Dialect Options): Likewise.
20600
20601 2009-04-07  Uros Bizjak  <ubizjak@gmail.com>
20602
20603         * config/ia64/ia64.c (ia64_builtins): Add IA64_BUILTIN_HUGE_VALQ.
20604         (ia64_init_builtins): Handle IA64_BUILTIN_HUGE_VALQ.
20605         (ia64_expand_builtin): Likewise.
20606
20607 2009-04-07  Martin Jambor  <mjambor@suse.cz>
20608
20609         * tree-ssa-alias.c (refs_may_alias_p_1): Check for
20610         is_gimple_min_invariant rather than CONSTANT_CLASS_P so that invariant
20611         ADDR_EXPRS are include too.
20612
20613 2009-04-07  Richard Guenther  <rguenther@suse.de>
20614
20615         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Non-aliased
20616         decls are only used if passes as parameters or if they are
20617         local statics and the call is not to a builtin.
20618         (call_may_clobber_ref_p_1): Likewise.
20619
20620 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
20621
20622         * expr.c (do_store_flag): Remove last argument.  Simplify code
20623         to avoid duplication of tests already done by can_compare_p.
20624         (expand_expr_real_1): Adjust caller.
20625
20626 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
20627
20628         * optabs.c (can_compare_p): Test the predicate of a
20629         cbranch and cstore pattern.
20630
20631 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
20632
20633         * expr.c (convert_move): Use emit_store_flag instead of
20634         "emulating" it.
20635
20636 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
20637
20638         * config/i386/i386.c (ix86_compare_emitted): Remove.
20639         (ix86_expand_compare, ix86_expand_branch): Handle MODE_CC
20640         ix86_compare_op0 like ix86_compare_emitted used to be handled.
20641         * config/i386/i386.h (ix86_compare_emitted): Remove.
20642         * config/i386/i386.md (stack_protect_test): Set ix86_compare_op0
20643         instead of ix86_compare_emitted.
20644         * config/i386/sync.md (sync_compare_and_swap_cc): Likewise.
20645
20646 2009-04-07  Andrew Stubbs  <ams@codesourcery.com>
20647
20648         * config.gcc (sh-*-*): Add sysroot-suffix.h to tm_file.
20649         Add t-sysroot-suffix to tmake_file.
20650         * config/print-sysroot-suffix.sh: New file.
20651         * config/t-sysroot-suffix: New file.
20652
20653 2009-04-07  Ben Elliston  <bje@au.ibm.com>
20654
20655         * libgcc2.c (INFINITY): Use __builtin_huge_val, not __builtin_inf,
20656         as the latter produces a warning when the target does not support
20657         infinity.
20658
20659 2009-04-07  Ben Elliston  <bje@au.ibm.com>
20660
20661         * dfp.c: Replace type punning assignments with memcpy throughout.
20662         * Makefile.in (dfp.o-warn): Remove.
20663
20664 2009-04-07  Alan Modra  <amodra@bigpond.net.au>
20665
20666         PR target/39634
20667         * config.gcc: Merge powerpc-*-linux* and powerpc64-*-linux*.
20668         Include soft-fp/t-softfp after rs6000/t-linux64.
20669
20670 2009-04-06  Eric Botcazou  <ebotcazou@adacore.com>
20671
20672         * stor-layout.c (set_sizetype): Use the full precision of their
20673         machine mode for bitsize types.
20674
20675 2009-04-06  H.J. Lu  <hongjiu.lu@intel.com>
20676
20677         * config/i386/i386.md: Revert 2 accidental checkins.
20678
20679 2009-04-06  Joey Ye  <joey.ye@intel.com>
20680             Xuepeng Guo  <xuepeng.guo@intel.com>
20681             H.J. Lu  <hongjiu.lu@intel.com>
20682
20683         Atom pipeline model, tuning and insn selection.
20684         * config.gcc (atom): Add atom config options and target.
20685
20686         * config/i386/atom.md: New.
20687
20688         * config/i386/i386.c (atom_cost): New cost.
20689         (m_ATOM): New macro flag.
20690         (initial_ix86_tune_features): Set m_ATOM.
20691         (x86_accumulate_outgoing_args): Likewise.
20692         (x86_arch_always_fancy_math_387): Likewise.
20693         (processor_target): Add Atom cost.
20694         (cpu_names): Add Atom cpu name.
20695         (override_options): Set Atom ISA.
20696         (ix86_issue_rate): New case PROCESSOR_ATOM.
20697         (ix86_adjust_cost): Likewise.
20698
20699         * config/i386/i386.h (TARGET_ATOM): New target macro.
20700         (ix86_tune_indices): Add X86_TUNE_OPT_AGU.
20701         (TARGET_OPT_AGU): New target option.
20702         (target_cpu_default): Add TARGET_CPU_DEFAULT_atom.
20703         (processor_type): Add PROCESSOR_ATOM.
20704
20705         * config/i386/i386.md (cpu): Add new value "atom".
20706         (use_carry, movu): New attr.
20707         (atom.md): Include atom.md.
20708         (adddi3_carry_rex64): Set attr "use_carry".
20709         (addqi3_carry): Likewise.
20710         (addhi3_carry): Likewise.
20711         (addsi3_carry): Likewise.
20712         (*addsi3_carry_zext): Likewise.
20713         (subdi3_carry_rex64): Likewise.
20714         (subqi3_carry): Likewise.
20715         (subhi3_carry): Likewise.
20716         (subsi3_carry): Likewise.
20717         (x86_movdicc_0_m1_rex64): Likewise.
20718         (*x86_movdicc_0_m1_se): Likewise.
20719         (x86_movsicc_0_m1): Likewise.
20720         (*x86_movsicc_0_m1_se): Likewise.
20721         (*adddi_1_rex64): Emit add insn as much as possible.
20722         (*addsi_1): Likewise.
20723         (return_internal): Set atom_unit.
20724         (return_internal_long): Likewise.
20725         (return_pop_internal): Likewise.
20726         (*rcpsf2_sse): Set atom_sse_attr attr.
20727         (*qrt<mode>2_sse): Likewise.
20728         (*prefetch_sse): Likewise.
20729
20730         * config/i386/i386-c.c (ix86_target_macros_internal): New case
20731         PROCESSOR_ATOM.
20732         (ix86_target_macros_internal): Likewise.
20733
20734         * config/i386/sse.md (cpu): Set attr "atom_sse_attr".
20735         (*prefetch_sse_rex): Likewise.
20736         (sse_rcpv4sf2): Likewise.
20737         (sse_vmrcpv4sf2): Likewise.
20738         (sse_sqrtv4sf2): Likewise.
20739         (<sse>_vmsqrt<mode>2): Likewise.
20740         (sse_ldmxcsr): Likewise.
20741         (sse_stmxcsr): Likewise.
20742         (*sse_sfence): Likewise.
20743         (sse2_clflush): Likewise.
20744         (*sse2_mfence): Likewise.
20745         (*sse2_lfence): Likewise.
20746         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Set attr "movu".
20747         (<sse>_movup<ssemodesuffixf2c>): Likewise.
20748         (avx_movdqu<avxmodesuffix>): Likewise.
20749         (avx_lddqu<avxmodesuffix>): Likewise.
20750         (sse2_movntv2di): Change attr "type" to "ssemov".
20751         (sse2_movntsi): Likewise.
20752         (rsqrtv8sf2): Change attr "type" to "sseadd".
20753         (sse3_addsubv2df3): Set attr "atom_unit".
20754         (sse3_h<plusminus_insn>v4sf3): Likewise.
20755         (*sse2_pmaddwd): Likewise.
20756         (*vec_extractv2di_1_rex64): Likewise.
20757         (*vec_extractv2di_1_avx): Likewise.
20758         (sse2_psadbw): Likewise.
20759         (ssse3_phaddwv8hi3): Likewise.
20760         (ssse3_phaddwv4hi3): Likewise.
20761         (ssse3_phadddv4si3): Likewise.
20762         (ssse3_phadddv2si3): Likewise.
20763         (ssse3_phaddswv8hi3): Likewise.
20764         (ssse3_phaddswv4hi3): Likewise.
20765         (ssse3_phsubwv8hi3): Likewise.
20766         (ssse3_phsubwv4hi3): Likewise.
20767         (ssse3_phsubdv4si3): Likewise.
20768         (ssse3_phsubdv2si3): Likewise.
20769         (ssse3_phsubswv8hi3): Likewise.
20770         (ssse3_phsubswv4hi3): Likewise.
20771         (ssse3_pmaddubsw128): Likewise.
20772         (sse3_pmaddubsw: Likewise.
20773         (ssse3_palignrti): Likewise.
20774         (ssse3_palignrdi): Likewise.
20775
20776 2009-04-06  Gerald Pfeifer  <gerald@pfeifer.com>
20777
20778         * doc/install.texi (Specific): Fix two cross-references to MinGW.
20779
20780 2009-04-06  Richard Guenther  <rguenther@suse.de>
20781
20782         PR tree-optimization/28868
20783         * tree-ssa-pre.c (inserted_phi_names): New bitmap to keep track
20784         of which PHI results we inserted.
20785         (insert_into_preds_of_block): Record inserted PHIs.
20786         (eliminate): Eliminate redundant PHI nodes.
20787         (init_pre): Init inserted_phi_names.
20788
20789 2009-04-06  Richard Guenther  <rguenther@suse.de>
20790
20791         PR tree-optimization/39643
20792         * tree-ssa-ccp.c (ccp_fold): Fold REALPART_EXPRs and
20793         IMAGPART_EXPRs of complex constants.
20794         (execute_fold_all_builtins): If we folded a call queue
20795         TODO_update_address_taken.
20796
20797 2009-04-06  Jan Hubicka  <jh@suse.cz>
20798
20799         PR middle-end/39659
20800         * except.c (remove_unreachable_regions): Propagate may_contain_throw
20801         flag.
20802
20803 2009-04-06  Andrew Stubbs  <ams@codesourcery.com>
20804
20805         * config/sh/lib1funcs.asm (ic_invalidate): Move ICBI out of the
20806         delay slot.
20807         (ic_invalidate_array): Likewise.
20808
20809 2009-04-06  Hariharan Sandanagobalane  <hariharan@picochip.com>
20810
20811         * calls.c (emit_library_call_value_1): Fix a problem with parameter
20812         alignment for library calls.
20813
20814 2009-04-06  Danny Smith  <dannysmith@users.sourceforge.net>
20815
20816         * config.gcc (mingw32 tm_file):  Add mingw-stdint.h.
20817         (mingw32 tm clause use_gcc_stdint):  Set to wrap.
20818         * config/i386/mingw-stdint.h:  New file.
20819
20820 2009-04-05  Richard Guenther  <rguenther@suse.de>
20821
20822         PR tree-optimization/39648
20823         * tree-ssa-sccvn.c (vn_reference_fold_indirect): Work around
20824         our &A vs. &A[0] IL deficiencies.
20825
20826 2009-04-04  Jan Hubicka  <jh@suse.cz>
20827
20828         * except.c (sjlj_find_directly_reachable_regions): Be ready for
20829         removed toplevel regions.
20830         (sjlj_mark_call_sites): Likewise.
20831
20832 2009-04-04  Dave Korn  <dave.korn.cygwin@gmail.com>
20833
20834         * config.gcc (cygwin tm_file):  Add cygwin-stdint.h.
20835         (cygwin tm clause use_gcc_stdint):  Set to wrap.
20836         * config/i386/cygwin-stdint.h:  New file.
20837
20838 2009-04-04  Richard Guenther  <rguenther@suse.de>
20839
20840         * Makefile.in (tree-ssa-copy.o): Add $(CFGLOOP_H) dependency.
20841         * tree-ssa-copy.c (init_copy_prop): Do not propagate through
20842         single-argument PHIs if we are in loop-closed SSA form.
20843         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Pass extra guards
20844         for the pre-condition.
20845         (slpeel_tree_peel_loop_to_edge): Likewise.
20846         (vect_build_loop_niters): Take an optional sequence to append stmts.
20847         (vect_generate_tmps_on_preheader): Likewise.
20848         (vect_do_peeling_for_loop_bound): Take extra guards for the
20849         pre-condition.
20850         (vect_do_peeling_for_alignment): Adjust.  Unconditionally apply
20851         the cost model check.
20852         (vect_loop_versioning): Take stmt and stmt list to put pre-condition
20853         guards if we are going to peel.  Do not apply versioning in that case.
20854         * tree-vectorizer.h (vect_loop_versioning): Adjust declaration.
20855         (vect_do_peeling_for_loop_bound): Likewise.
20856         * tree-vect-loop.c (vect_transform_loop): If we are peeling for
20857         loop bound only record extra pre-conditions, do not apply loop
20858         versioning.
20859
20860 2009-04-04  Richard Guenther  <rguenther@suse.de>
20861
20862         * tree-ssa-operands.c (pop_stmt_changes): Remove automatic
20863         renaming code.
20864
20865 2009-04-04  Jan Hubicka  <jh@suse.cz>
20866
20867         * tree-ssa-uncprop.c (associate_equivalences_with_edges): Use
20868         last_basic_block for size of bb->index indexed array.
20869         * bt-load.c (compute_defs_uses_and_gen, compute_kill,
20870         compute_out, link_btr_uses, build_btr_def_use_webs,
20871         build_btr_def_use_webs, migrate_btr_defs): Likewise.
20872
20873 2009-04-04  Jan Hubicka  <jh@suse.cz>
20874
20875         * except.c (remove_eh_handler_and_replace): Break out from ...
20876         (remove_eh_handler): ... here.
20877         (bring_to_root): New function.
20878         (remove_unreachable_regions): Collect MUST_NOT_THROW, unify runtime
20879         handled ones, bring others to root of tree.
20880
20881 2009-04-04  Jan Hubicka  <jh@suse.cz>
20882
20883         * tree-eh.c (tree_empty_eh_handler_p): Pattern match more curefully.
20884         (all_phis_safe_to_merge): New function.
20885         (update_info): New structure.
20886         (make_eh_edge_and_update_phi, update_eh_edges): New functions.
20887         (cleanup_empty_eh): Update SSA if possible.
20888
20889 2009-04-04  Richard Guenther  <rguenther@suse.de>
20890
20891         * tree-ssa.c (verify_ssa): With -O0 we do not need VOPs.
20892         * tree-ssa-operands.c (append_vdef): Do not append VOPs at -O0.
20893         (append_vuse): Likewise.
20894
20895 2009-04-04  Jakub Jelinek  <jakub@redhat.com>
20896
20897         * unwind-dw2.h (_Unwind_FrameState): Add REG_UNDEFINED enum value.
20898         * unwind-dw2.c (execute_cfa_program): Set how to REG_UNDEFINED
20899         instead of REG_UNSAVED for DW_CFA_undefined.
20900         (uw_update_context_1): Handle REG_UNDEFINED the same as REG_UNSAVED.
20901         (uw_update_context): If RA column is REG_UNDEFINED, mark it as
20902         outermost frame.
20903
20904 2009-04-04  Richard Earnshaw  <rearnsha@arm.com>
20905
20906         PR target/39501
20907         * arm.md (movsfcc): Disable if not TARGET_HARD_FLOAT.
20908
20909 2009-04-04  Richard Guenther  <rguenther@suse.de>
20910
20911         PR tree-optimization/8781
20912         PR tree-optimization/37892
20913         * tree-ssa-sccvn.h (vn_reference_fold_indirect): Declare.
20914         * tree-ssa-sccvn.c (vn_reference_fold_indirect): New function.
20915         (valueize_refs): Call it for *& valueizations.
20916         (shared_reference_ops_from_ref): Rename to ...
20917         (valueize_shared_reference_ops_from_ref): ... this and valueize.
20918         (shared_reference_ops_from_call): Rename to ...
20919         (valueize_shared_reference_ops_from_call): ... this and valueize.
20920         (vn_reference_lookup): Update.
20921         (visit_reference_op_call): Likewise.
20922         * tree-ssa-pre.c (phi_translate_1): Fold *&.
20923         (eliminate): Value-replace the call address in call statements.
20924
20925 2009-04-04  Richard Guenther  <rguenther@suse.de>
20926
20927         PR tree-optimization/39636
20928         * tree-ssa-forwprop.c
20929         (forward_propagate_addr_into_variable_array_index): Check for
20930         GIMPLE_ASSIGN before accessing the rhs code.
20931
20932 2009-04-03  Jason Merrill  <jason@redhat.com>
20933
20934         * stor-layout.c (set_sizetype): Set TYPE_CANONICAL.
20935
20936 2009-04-03  Steve Ellcey  <sje@cup.hp.com>
20937
20938         * config/ia64/ia64.md (extendsfdf2, extendsfxf2, extenddfxf2,
20939         truncdfsf2, truncxfsf2, truncxfdf2, floatdixf2, fix_truncsfdi2,
20940         fix_truncdfdi2, fix_truncxfdi2, fix_truncxfdi2_alts, floatunsdisf2,
20941         floatunsdidf2, floatunsdixf2, fixuns_truncsfdi2, fixuns_truncdfdi2,
20942         fixuns_truncxfdi2, fixuns_truncxfdi2_alts, divsi3_internal,
20943         smuldi3_highpart, umuldi3_highpart, ctzdi2, *getf_exp_xf,
20944         divdi3_internal_lat, divdi3_internal_thr, mulditi3, *mulditi3_internal,
20945         umulditi3, *umulditi3_internal, addsf3, mulsf3, abssf2, negsf2,
20946         *nabssf2, sminsf3, smaxsf3, *maddsf4, *msubsf4, *nmulsf3, *nmaddsf4,
20947         *nmaddsf4_alts, divsf3, *sqrt_approx, sqrtsf2, sqrtsf2_internal_thr,
20948         adddf3, *adddf3_trunc, muldf3, *muldf3_trunc, absdf2, negdf2, *nabsdf2,
20949         smindf3, smaxdf3, *madddf4, *madddf4_trunc, *msubdf4, *msubdf4_trunc,
20950         *nmuldf3, *nmuldf3_trunc, *nmadddf4, *nmadddf4_alts, *nmadddf4_truncsf,
20951         *nmadddf4_truncsf_alts, divdf3, sqrtdf2, sqrtdf2_internal_thr, divxf3,
20952         sqrtxf2, sqrtxf2_internal_thr, *recip_approx):
20953         Use fr_reg_or_fp01_operand instead of fr_register_operand
20954
20955         * config/ia64/div.md (extend<mode>rf2, truncrf<mode>2,
20956         recip_approx_rf, divsf3_internal_thr, divsf3_internal_lat,
20957         divdf3_internal_thr, divdf3_internal_lat divxf3_internal): Ditto.
20958
20959 2009-04-03  Vladimir Makarov  <vmakarov@redhat.com>
20960
20961         PR rtl-optimization/39607
20962         PR rtl-optimization/39631
20963
20964         Revert:
20965
20966         2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
20967         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
20968         instead of DF_LR_OUT.
20969         * ira-lives.c (process_bb_node_lives): Ditto.
20970         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
20971         instead of DF_LR_{OUT,IN}.
20972         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
20973         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
20974
20975 2009-04-03  Steven Bosscher  <steven@gcc.gnu.org>
20976
20977         * omp-low.c (pass_expand_omp): Don't claim to provide PROP_gimple_lomp.
20978         (execute_lower_omp): Always run but take the short way out if -fopenmp
20979         is not given.
20980         (gate_lower_omp): Remove, forcing the pass manager to always run the
20981         pass and always set PROP_gimple_lomp.
20982         (pass_lower_omp): Remove gate function.
20983         * matrix-reorg.c (pass_ipa_matrix_reorg): Don't claim to provide
20984         PROP_trees.  Instead, require it.
20985         * ipa-cp.c (pass_ipa_cp): Likewise.
20986         * ipa-inline.c (pass_early_inline): Don't claim to provide PROP_cfg.
20987         (pass_ipa_early_inline, pass_inline_parameters, pass_ipa_inline): Idem.
20988         * tree-profile.c (pass_tree_profile): Don't claim to provide PROP_cfg
20989         and PROP_gimple_leh.
20990
20991 2009-04-03  Richard Guenther  <rguenther@suse.de>
20992
20993         PR middle-end/13146
20994         PR tree-optimization/23940
20995         PR tree-optimization/33237
20996         PR middle-end/33974
20997         PR middle-end/34093
20998         PR tree-optimization/36201
20999         PR tree-optimization/36230
21000         PR tree-optimization/38049
21001         PR tree-optimization/38207
21002         PR tree-optimization/38230
21003         PR tree-optimization/38301
21004         PR tree-optimization/38585
21005         PR middle-end/38895
21006         PR tree-optimization/38985
21007         PR tree-optimization/39299
21008         * tree-ssa-structalias.h: Remove.
21009         * tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
21010         (NULL_DEF_OPERAND_P): Make of type def_operand_p.
21011         (struct vuse_element_d): Remove.
21012         (struct vuse_vec_d): Likewise.
21013         (VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
21014         VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
21015         SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
21016         VUSE_ELEMENT_VAR): Likewise.
21017         (struct voptype_d): Likewise.
21018         (NUM_VOP_FREE_BUCKETS): Likewise.
21019         (struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
21020         (struct stmt_operands_d): Remove.
21021         (VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
21022         VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
21023         VDEF_NUM, VDEF_VECT): Likewise.
21024         (copy_virtual_operands): Remove.
21025         (operand_build_cmp): Likewise.
21026         (create_ssa_artificial_load_stmt): Likewise.
21027         (enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
21028         (struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
21029         vuse_index and mayuse_index members.  Pack and move done and iter_type
21030         members to the front.
21031         (SSA_OP_VMAYUSE): Remove.
21032         (SSA_OP_VIRTUAL_USES): Adjust.
21033         (FOR_EACH_SSA_VDEF_OPERAND): Remove.
21034         (unlink_stmt_vdef): Declare.
21035         (add_to_addressable_set): Remove.
21036         * tree-vrp.c (stmt_interesting_for_vrp): Adjust.
21037         (vrp_visit_stmt): Likewise.
21038         * doc/tree-ssa.texi (Alias analysis): Update.
21039         * doc/invoke.texi (max-aliased-vops): Remove docs.
21040         (avg-aliased-vops): Likewise.
21041         * tree-into-ssa.c (syms_to_rename): Remove.
21042         (need_to_update_vops_p): Likewise.
21043         (need_to_initialize_update_ssa_p): Rename to ...
21044         (update_ssa_initialized_fn): ... this.  Track function we are
21045         initialized for.
21046         (symbol_marked_for_renaming): Simplify.
21047         (add_new_name_mapping): Do not set need_to_update_vops_p.
21048         (dump_currdefs): Use SYMS_TO_RENAME.
21049         (rewrite_update_stmt): Always walk all uses/defs.
21050         (dump_update_ssa): Adjust.
21051         (init_update_ssa): Take function argument.  Track what we are
21052         initialized for.
21053         (delete_update_ssa): Reset SYMS_TO_RENAME and update_ssa_initialized_fn.
21054         (create_new_def_for): Initialize for cfun, assert we are initialized
21055         for cfun.
21056         (mark_sym_for_renaming): Simplify.
21057         (mark_set_for_renaming): Do not initialize update-ssa.
21058         (need_ssa_update_p): Simplify.  Take function argument.
21059         (name_mappings_registered_p): Assert we ask for the correct function.
21060         (name_registered_for_update_p): Likewise.
21061         (ssa_names_to_replace): Likewise.
21062         (release_ssa_name_after_update_ssa): Likewise.
21063         (update_ssa): Likewise.  Use SYMS_TO_RENAME.
21064         (dump_decl_set): Do not print a newline.
21065         (debug_decl_set): Do it here.
21066         (dump_update_ssa): And here.
21067         * tree-ssa-loop-im.c (move_computations): Adjust.
21068         (movement_possibility): Likewise.
21069         (determine_max_movement): Likewise.
21070         (gather_mem_refs_stmt): Likewise.
21071         * tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
21072         or NAME_MEMORY_TAG.
21073         * tree-complex.c (update_all_vops): Remove.
21074         (expand_complex_move): Adjust.
21075         * tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
21076         Simplify test for memory referencing statement.  Exclude
21077         non-invariant ADDR_EXPRs.
21078         * tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
21079         * tree-loop-distribution.c (generate_memset_zero): Adjust.
21080         (rdg_flag_uses): Likewise.
21081         * tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
21082         related code.
21083         (tree_optimize_tail_calls_1): Also split the
21084         edge from the entry block if we have degenerate PHI nodes in
21085         the first basic block.
21086         * tree.c (init_ttree): Remove memory-tag related code.
21087         (tree_code_size): Likewise.
21088         (tree_node_structure): Likewise.
21089         (build7_stat): Re-write to be build6_stat.
21090         * tree.h (MTAG_P, TREE_MEMORY_TAG_CHECK, TMR_TAG): Remove.
21091         (SSA_VAR_P): Adjust.
21092         (struct tree_memory_tag): Remove.
21093         (struct tree_memory_partition_tag): Likewise.
21094         (union tree_node): Adjust.
21095         (build7): Re-write to be build6.
21096         * tree-pass.h (pass_reset_cc_flags): Remove.
21097         (TODO_update_address_taken): New flag.
21098         (pass_simple_dse): Remove.
21099         * ipa-cp.c (ipcp_update_callgraph): Update SSA form.
21100         * params.h (MAX_ALIASED_VOPS): Remove.
21101         (AVG_ALIASED_VOPS): Likewise.
21102         * omp-low.c (expand_omp_taskreg): Update SSA form.
21103         * tree-ssa-dse.c (dse_optimize_stmt): Properly query if the rhs
21104         aliases the lhs in a copy stmt.
21105         * tree-ssa-dse.c (struct address_walk_data): Remove.
21106         (memory_ssa_name_same): Likewise.
21107         (memory_address_same): Likewise.
21108         (get_kill_of_stmt_lhs): Likewise.
21109         (dse_possible_dead_store_p): Simplify, use the oracle.  Handle
21110         unused stores.  Look through PHI nodes into post-dominated regions.
21111         (dse_optimize_stmt): Simplify.  Properly remove stores.
21112         (tree_ssa_dse): Compute dominators.
21113         (execute_simple_dse): Remove.
21114         (pass_simple_dse): Likewise.
21115         * ipa-reference.c (scan_stmt_for_static_refs): Open-code
21116         gimple_loaded_syms and gimple_stored_syms computation.
21117         * toplev.c (dump_memory_report): Dump alias and pta stats.
21118         * tree-ssa-sccvn.c (vn_reference_compute_hash): Simplify.
21119         (vn_reference_eq): Likewise.
21120         (vuses_to_vec, copy_vuses_from_stmt, vdefs_to_vec,
21121         copy_vdefs_from_stmt, shared_lookup_vops, shared_vuses_from_stmt,
21122         valueize_vuses): Remove.
21123         (get_def_ref_stmt_vuses): Simplify.  Rename to ...
21124         (get_def_ref_stmt_vuse): ... this.
21125         (vn_reference_lookup_2): New function.
21126         (vn_reference_lookup_pieces): Use walk_non_aliased_vuses for
21127         walking equivalent vuses.  Simplify.
21128         (vn_reference_lookup): Likewise.
21129         (vn_reference_insert): Likewise.
21130         (vn_reference_insert_pieces): Likewise.
21131         (visit_reference_op_call): Simplify.
21132         (visit_reference_op_load): Likewise.
21133         (visit_reference_op_store): Likewise.
21134         (init_scc_vn): Remove shared_lookup_vuses initialization.
21135         (free_scc_vn): Remove shared_lookup_vuses freeing.
21136         (sort_vuses, sort_vuses_heap): Remove.
21137         (get_ref_from_reference_ops): Export.
21138         * tree-ssa-sccvn.h (struct vn_reference_s): Replace vuses
21139         vector with single vuse pointer.
21140         (vn_reference_lookup_pieces, vn_reference_lookup,
21141         vn_reference_insert, vn_reference_insert_pieces): Adjust prototypes.
21142         (shared_vuses_from_stmt): Remove.
21143         (get_ref_from_reference_ops): Declare.
21144         * tree-ssa-loop-manip.c (slpeel_can_duplicate_loop_p): Adjust.
21145         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
21146         memory-tag related code.
21147         * tree-ssa-ccp.c (get_symbol_constant_value): Remove memory-tag code.
21148         (likely_value): Add comment, skip static-chain of call statements.
21149         (surely_varying_stmt_p): Adjust.
21150         (gimplify_and_update_call_from_tree): Likewise.
21151         (execute_fold_all_builtins): Do not rebuild alias info.
21152         (gimplify_and_update_call_from_tree): Properly update VOPs.
21153         * tree-ssa-loop-ivopts.c (get_ref_tag): Remove.
21154         (copy_ref_info): Remove memory-tag related code.
21155         * tree-call-cdce.c (tree_call_cdce): Rename the VOP.
21156         * ipa-pure-const.c (check_decl): Remove memory-tag related code.
21157         (check_stmt): Open-code gimple_loaded_syms and gimple_stored_syms
21158         computation.
21159         * tree-ssa-dom.c (gimple_p): Remove typedef.
21160         (eliminate_redundant_computations): Adjust.
21161         (record_equivalences_from_stmt): Likewise.
21162         (avail_expr_hash): Likewise.
21163         (avail_expr_eq): Likewise.
21164         * tree-ssa-propagate.c (update_call_from_tree): Properly update VOPs.
21165         (stmt_makes_single_load): Likewise.
21166         (stmt_makes_single_store): Likewise.
21167         * tree-ssa-alias.c: Rewrite completely.
21168         (debug_memory_partitions, dump_mem_ref_stats, debug_mem_ref_stats,
21169         debug_mem_sym_stats, dump_mem_sym_stats_for_var,
21170         debug_all_mem_sym_stats, debug_mp_info, update_mem_sym_stats_from_stmt,
21171         delete_mem_ref_stats, create_tag_raw, dump_points_to_info,
21172         dump_may_aliases_for, debug_may_aliases_for, new_type_alias):
21173         Remove public functions.
21174         (pass_reset_cc_flags): Remove.
21175         (pass_build_alias): Move ...
21176         * tree-ssa-structalias.c (pass_build_alias): ... here.
21177         * tree-ssa-alias.c (may_be_aliased): Move ...
21178         * tree-flow-inline.h (may_be_aliased): ... here.
21179         tree-ssa-alias.c (struct count_ptr_d, count_ptr_derefs,
21180         count_uses_and_derefs): Move ...
21181         * gimple.c: ... here.
21182         * gimple.h (count_uses_and_derefs): Declare.
21183         * tree-ssa-alias.c (dump_alias_stats, ptr_deref_may_alias_global_p,
21184         ptr_deref_may_alias_decl_p, ptr_derefs_may_alias_p,
21185         same_type_for_tbaa, nonaliasing_component_refs_p, decl_refs_may_alias_p,
21186         indirect_ref_may_alias_decl_p, indirect_refs_may_alias_p,
21187         ref_maybe_used_by_call_p, ref_maybe_used_by_stmt_p,
21188         call_may_clobber_ref_p, stmt_may_clobber_ref_p, maybe_skip_until,
21189         get_continuation_for_phi, walk_non_aliased_vuses, walk_aliased_vdefs):
21190         New functions.
21191         * tree-dfa.c (refs_may_alias_p): Move ...
21192         * tree-ssa-alias.c (refs_may_alias_p): ... here.  Extend.
21193         * tree-ssa-alias.h: New file.
21194         * tree-ssa-sink.c (is_hidden_global_store): Adjust.
21195         (statement_sink_location): Likewise.
21196         * opts.c (decode_options): Do not adjust max-aliased-vops or
21197         avg-aliased-vops values.
21198         * timevar.def (TV_TREE_MAY_ALIAS): Remove.
21199         (TV_CALL_CLOBBER): Likewise.
21200         (TV_FLOW_SENSITIVE): Likewise.
21201         (TV_FLOW_INSENSITIVE): Likewise.
21202         (TV_MEMORY_PARTITIONING): Likewise.
21203         (TV_ALIAS_STMT_WALK): New timevar.
21204         * tree-ssa-loop-ivcanon.c (empty_loop_p): Adjust.
21205         * tree-ssa-address.c (create_mem_ref_raw): Use build6.
21206         (get_address_description): Remove memory-tag related code.
21207         * tree-ssa-ifcombine.c (bb_no_side_effects_p): Adjust.
21208         * treestruct.def (TS_MEMORY_TAG, TS_MEMORY_PARTITION_TAG): Remove.
21209         * tree-eh.c (cleanup_empty_eh): Do not leave stale SSA_NAMEs
21210         and immediate uses in statements.  Document.
21211         * gimple-pretty-print.c (dump_gimple_mem_ops): Adjust.
21212         (dump_symbols): Remove.
21213         (dump_gimple_mem_ops): Do not dump loaded or stored syms.
21214         * alias.c (get_deref_alias_set): New function split out from ...
21215         (get_alias_set): ... here.
21216         * alias.h (get_deref_alias_set): Declare.
21217         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove unused
21218         type parameter.  Remove restrict pointer handling.  Create a
21219         ref-all pointer in case type-based alias sets do not conflict.
21220         (vect_analyze_data_refs): Remove SMT related code.
21221         * tree-vect-stmts.c (vectorizable_store): Re-instantiate TBAA assert.
21222         (vectorizable_load): Likewise.
21223         * tree-data-ref.h (struct dr_alias): Remove symbol_tag field.
21224         (DR_SYMBOL_TAG, DR_VOPS): Remove.
21225         * tree-data-ref.c (dr_may_alias_p): Use the alias-oracle.
21226         Ignore vops and SMTs.
21227         (dr_analyze_alias): Likewise..
21228         (free_data_ref): Likewise.
21229         (create_data_ref): Likewise.
21230         (analyze_all_data_dependences): Likewise.
21231         (get_references_in_stmt): Adjust.
21232         * tree-flow-inline.h (gimple_aliases_computed_p,
21233         gimple_addressable_vars, gimple_call_clobbered_vars,
21234         gimple_call_used_vars, gimple_global_var, may_aliases, memory_partition,
21235         factoring_name_p, mark_call_clobbered, clear_call_clobbered,
21236         compare_ssa_operands_equal, symbol_mem_tag, set_symbol_mem_tag,
21237         gimple_mem_ref_stats): Remove.
21238         (gimple_vop): New function.
21239         (op_iter_next_use): Remove vuses and mayuses cases.
21240         (op_iter_next_def): Remove vdefs case.
21241         (op_iter_next_tree): Remove vuses, mayuses and vdefs cases.
21242         (clear_and_done_ssa_iter): Do not set removed fields.
21243         (op_iter_init): Likewise.  Skip vuse and/or vdef if requested.
21244         Assert we are not iterating over vuses or vdefs if not also
21245         iterating over uses or defs.
21246         (op_iter_init_use): Likewise.
21247         (op_iter_init_def): Likewise.
21248         (op_iter_next_vdef): Remove.
21249         (op_iter_next_mustdef): Likewise.
21250         (op_iter_init_vdef): Likewise.
21251         (compare_ssa_operands_equal): Likewise.
21252         (link_use_stmts_after): Handle vuse operand.
21253         (is_call_used): Use is_call_clobbered.
21254         (is_call_clobbered): Global variables are always call clobbered,
21255         query the call-clobbers bitmap.
21256         (mark_call_clobbered): Ignore global variables.
21257         (clear_call_clobbered): Likewise.
21258         * tree-ssa-coalesce.c (create_outofssa_var_map): Adjust
21259         virtual operands sanity check.
21260         * tree.def (NAME_MEMORY_TAG, SYMBOL_MEMORY_TAG, MEMORY_PARTITION_TAG):
21261         Remove.
21262         (TARGET_MEM_REF): Remove TMR_TAG operand.
21263         * tree-dfa.c (add_referenced_var): Initialize call-clobber state.
21264         Remove call-clobber related code.
21265         (remove_referenced_var): Likewise.  Do not clear mpt or symbol_mem_tag.
21266         (dump_variable): Do not dump SMTs, memory stats, may-aliases or
21267         partitions or escape reason.
21268         (get_single_def_stmt, get_single_def_stmt_from_phi,
21269         get_single_def_stmt_with_phi): Remove.
21270         (dump_referenced_vars): Tidy.
21271         (get_ref_base_and_extent): Allow bare decls.
21272         (collect_dfa_stats): Adjust.
21273         * graphite.c (rename_variables_in_stmt): Adjust.
21274         (graphite_copy_stmts_from_block): Likewise.
21275         (translate_clast): Likewise.
21276         * tree-ssa-pre.c (struct bb_bitmap_sets): Add expr_dies bitmap.
21277         (EXPR_DIES): New.
21278         (translate_vuse_through_block): Use the oracle.
21279         (phi_translate_1): Adjust.
21280         (value_dies_in_block_x): Use the oracle.  Cache the outcome
21281         in EXPR_DIES.
21282         (valid_in_sets): Check if the VUSE for
21283         a REFERENCE is available.
21284         (eliminate): Do not remove stmts during elimination,
21285         instead queue and remove them afterwards.
21286         (do_pre): Do not rebuild alias info.
21287         (pass_pre): Run TODO_rebuild_alias before PRE.
21288         * tree-ssa-live.c (remove_unused_locals): Remove memory-tag code.
21289         * tree-sra.c (sra_walk_function): Use gimple_references_memory_p.
21290         (mark_all_v_defs_stmt): Remove.
21291         (mark_all_v_defs_seq): Adjust.
21292         (sra_replace): Likewise.
21293         (scalarize_use): Likewise.
21294         (scalarize_copy): Likewise.
21295         (scalarize_init): Likewise.
21296         (scalarize_ldst): Likewise.
21297         (todoflags): Remove.
21298         (tree_sra): Do not rebuild alias info.
21299         (tree_sra_early): Adjust.
21300         (pass_sra): Run TODO_update_address_taken before SRA.
21301         * tree-predcom.c (set_alias_info): Remove.
21302         (prepare_initializers_chain): Do not call it.
21303         (mark_virtual_ops_for_renaming): Adjust.
21304         (mark_virtual_ops_for_renaming_list): Remove.
21305         (initialize_root_vars): Adjust.
21306         (initialize_root_vars_lm): Likewise.
21307         (prepare_initializers_chain): Likewise.
21308         * tree-ssa-copy.c (may_propagate_copy): Remove memory-tag related code.
21309         (may_propagate_copy_into_stmt): Likewise.
21310         (merge_alias_info): Do nothing for now.
21311         (propagate_tree_value_into_stmt): Adjust.
21312         (stmt_may_generate_copy): Likewise.
21313         * tree-ssa-forwprop.c (tidy_after_forward_propagate_addr): Do
21314         not mark symbols for renaming.
21315         (forward_propagate_addr_expr): Match up push/pop_stmt_changes
21316         with the same statement, make sure to update the new pointed-to one.
21317         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do not copy
21318         call statements, do not mark symbols for renaming.
21319         (mark_operand_necessary): Dump something.
21320         (ref_may_be_aliased): New function.
21321         (mark_aliased_reaching_defs_necessary_1): New helper function.
21322         (mark_aliased_reaching_defs_necessary): Likewise.
21323         (mark_all_reaching_defs_necessary_1): Likewise.
21324         (mark_all_reaching_defs_necessary): Likewise.
21325         (propagate_necessity): Do not process virtual PHIs.  For
21326         non-aliased loads mark all reaching definitions as necessary.
21327         For aliased loads and stores mark the immediate dominating
21328         aliased clobbers as necessary.
21329         (visited): New global static.
21330         (perform_tree_ssa_dce): Free visited bitmap after propagating
21331         necessity.
21332         (remove_dead_phis): Perform simple dead virtual PHI removal.
21333         (remove_dead_stmt): Properly unlink virtual operands when
21334         removing stores.
21335         (eliminate_unnecessary_stmts): Schedule PHI removal after
21336         stmt removal.
21337         * tree-ssa-ter.c (is_replaceable_p): Adjust.
21338         (process_replaceable): Likewise.
21339         (find_replaceable_in_bb): Likewise.
21340         * tree-ssa.c (verify_ssa_name): Verify all VOPs are
21341         based on the single gimple vop.
21342         (verify_flow_insensitive_alias_info): Remove.
21343         (verify_flow_sensitive_alias_info): Likewise.
21344         (verify_call_clobbering): Likewise.
21345         (verify_memory_partitions): Likewise.
21346         (verify_alias_info): Likewise.
21347         (verify_ssa): Adjust..
21348         (execute_update_addresses_taken): Export.  Update SSA
21349         manually.  Optimize only when optimizing.  Use a local bitmap.
21350         (pass_update_address_taken): Remove TODO_update_ssa, add
21351         TODO_dump_func.
21352         (pass_update_address_taken): Just use TODO_update_address_taken.
21353         (init_tree_ssa): Do not initialize addressable_vars.
21354         (verify_ssa): Verify new VUSE / VDEF properties.
21355         Verify that all stmts definitions have the stmt as SSA_NAME_DEF_STMT.
21356         Do not call verify_alias_info.
21357         (delete_tree_ssa): Clear the VUSE, VDEF operands.
21358         Do not free the loaded and stored syms bitmaps.  Reset the escaped
21359         and callused solutions.  Do not free addressable_vars.
21360         Remove memory-tag related code.
21361         (warn_uninitialized_var): Aliases are always available.
21362         * tree-ssa-loop-prefetch.c (gather_memory_references): Adjust.
21363         * lambda-code.c (can_put_in_inner_loop): Adjust.
21364         (can_put_after_inner_loop): Likewise.
21365         (perfect_nestify): Likewise.
21366         * tree-vect-stmts.c (vect_stmt_relevant_p): Adjust.
21367         (vect_gen_widened_results_half): Remove CALL_EXPR handling.
21368         (vectorizable_conversion): Do not mark symbols for renaming.
21369         * tree-inline.c (remap_gimple_stmt): Clear VUSE/VDEF.
21370         (expand_call_inline): Unlink the calls virtual operands before
21371         replacing it.
21372         (tree_function_versioning): Do not call update_ssa if we are not
21373         updating clones.  Simplify.
21374         * tree-ssa-phiprop.c (phivn_valid_p): Adjust.
21375         (propagate_with_phi): Likewise..
21376         * tree-outof-ssa.c (create_temp): Remove memory tag and call
21377         clobber code.  Assert we are not aliased or global.
21378         * tree-flow.h: Include tree-ssa-alias.h
21379         (enum escape_type): Remove.
21380         (struct mem_sym_stats_d): Likewise.
21381         (struct mem_ref_stats_d): Likewise.
21382         (struct gimple_df): Add vop member.  Remove global_var,
21383         call_clobbered_vars, call_used_vars, addressable_vars,
21384         aliases_compted_p and mem_ref_stats members.  Add syms_to_rename,
21385         escaped and callused members.
21386         (struct ptr_info_def): Remove all members, add points-to solution
21387         member pt.
21388         (struct var_ann_d): Remove in_vuse_list, in_vdef_list,
21389         call_clobbered, escape_mask, mpt and symbol_mem_tag members.
21390         * Makefile.in (TREE_FLOW_H): Add tree-ssa-alias.h.
21391         (tree-ssa-structalias.o): Remove tree-ssa-structalias.h.
21392         (tree-ssa-alias.o): Likewise.
21393         (toplev.o): Add tree-ssa-alias.h
21394         (GTFILES): Remove tree-ssa-structalias.h, add tree-ssa-alias.h.
21395         * gimple.c (gimple_set_bb): Fix off-by-one error.
21396         (is_gimple_reg): Do not handle memory tags.
21397         (gimple_copy): Also copy virtual operands.
21398         Delay updating the statement.  Do not reset loaded and stored syms.
21399         (gimple_set_stored_syms): Remove.
21400         (gimple_set_loaded_syms): Likewise.
21401         (gimple_call_copy_skip_args): Copy the virtual operands
21402         and mark the new statement modified.
21403         * tree-ssa-structalias.c (may_alias_p): Remove.
21404         (set_uids_in_ptset): Take the alias set to prune with as
21405         parameter.  Fold in the alias test of may_alias_p.
21406         (compute_points_to_sets): Compute whether a ptr is dereferenced
21407         in a local sbitmap.
21408         (process_constraint): Deal with &ANYTHING on the lhs, reject all
21409         other ADDRESSOF constraints on the lhs.
21410         (get_constraint_for_component_ref): Assert that we don't get
21411         ADDRESSOF constraints from the base of the reference.
21412         Properly generate UNKNOWN_OFFSET for DEREF if needed.
21413         (struct variable_info): Remove collapsed_to member.
21414         (get_varinfo_fc): Remove.
21415         (new_var_info): Do not set collapsed_to.
21416         (dump_constraint): Do not follow cycles.
21417         (dump_constraint_graph): Likewise.
21418         (build_pred_graph): Likewise.
21419         (build_succ_graph): Likewise.
21420         (rewrite_constraints): Likewise.
21421         (do_simple_structure_copy): Remove.
21422         (do_rhs_deref_structure_copy): Remove.
21423         (do_lhs_deref_structure_copy): Remove.
21424         (collapse_rest_of_var): Remove.
21425         (do_structure_copy): Re-implement.
21426         (pta_stats): New global variable.
21427         (dump_pta_stats): New function.
21428         (struct constraint_expr): Make offset signed.
21429         (UNKNOWN_OFFSET): Define special value.
21430         (dump_constraint): Dump UNKNOWN_OFFSET as UNKNOWN.
21431         (solution_set_expand): New helper function split out from ...
21432         (do_sd_constraint): ... here.
21433         (solution_set_add): Handle UNKNOWN_OFFSET.  Handle negative offsets.
21434         (do_ds_constraint): Likewise.
21435         (do_sd_constraint): Likewise.  Do not special-case ESCAPED = *ESCAPED
21436         and CALLUSED = *CALLUSED.
21437         (set_union_with_increment): Make inc argument signed.
21438         (type_safe): Remove.
21439         (get_constraint_for_ptr_offset): Handle unknown and negative
21440         constant offsets.
21441         (first_vi_for_offset): Handle offsets before start.  Bail
21442         out early for offsets beyond the variable extent.
21443         (first_or_preceding_vi_for_offset): New function.
21444         (init_base_vars): Add ESCAPED = ESCAPED + UNKNOWN_OFFSET constraint.
21445         Together with ESCAPED = *ESCAPED this properly computes reachability.
21446         (find_what_var_points_to): New function.
21447         (find_what_p_points_to): Implement in terms of find_what_var_points_to.
21448         (pt_solution_reset, pt_solution_empty_p, pt_solution_includes_global,
21449         pt_solution_includes_1, pt_solution_includes, pt_solutions_intersect_1,
21450         pt_solutions_intersect): New functions.
21451         (compute_call_used_vars): Remove.
21452         (compute_may_aliases): New main entry into PTA computation.
21453         * gimple.h (gimple_p): New typedef.
21454         (struct gimple_statement_base): Remove references_memory_p.
21455         (struct gimple_statement_with_memory_ops_base): Remove
21456         vdef_ops, vuse_ops, stores and loads members.  Add vdef and vuse
21457         members.
21458         (gimple_vuse_ops, gimple_set_vuse_ops, gimple_vdef_ops,
21459         gimple_set_vdef_ops, gimple_loaded_syms, gimple_stored_syms,
21460         gimple_set_references_memory): Remove.
21461         (gimple_vuse_op, gimple_vdef_op, gimple_vuse, gimple_vdef,
21462         gimple_vuse_ptr, gimple_vdef_ptri, gimple_set_vuse, gimple_set_vdef):
21463         New functions.
21464         * tree-cfg.c (move_block_to_fn): Fix off-by-one error.
21465         (verify_expr): Allow RESULT_DECL.
21466         (gimple_duplicate_bb): Do not copy virtual operands.
21467         (gimple_duplicate_sese_region): Adjust.
21468         (gimple_duplicate_sese_tail): Likewise.
21469         (mark_virtual_ops_in_region): Remove.
21470         (move_sese_region_to_fn): Do not call it.
21471         * passes.c (init_optimization_passes): Remove pass_reset_cc_flags
21472         and pass_simple_dse.
21473         (execute_function_todo): Handle TODO_update_address_taken,
21474         call execute_update_addresses_taken for TODO_rebuild_alias.
21475         (execute_todo): Adjust.
21476         (execute_one_pass): Init dump files early.
21477         * ipa-struct-reorg.c (finalize_var_creation): Do not mark vars
21478         call-clobbered.
21479         (create_general_new_stmt): Clear vops.
21480         * tree-ssa-reassoc.c (get_rank): Adjust.
21481         * tree-vect-slp.c (vect_create_mask_and_perm): Do not mark
21482         symbols for renaming.
21483         * params.def (PARAM_MAX_ALIASED_VOPS): Remove.
21484         (PARAM_AVG_ALIASED_VOPS): Likewise.
21485         * tree-ssanames.c (init_ssanames): Allocate SYMS_TO_RENAME.
21486         (duplicate_ssa_name_ptr_info): No need to copy the shared bitmaps.
21487         * tree-ssa-operands.c: Simplify for new virtual operand representation.
21488         (operand_build_cmp, copy_virtual_operands,
21489         create_ssa_artificial_load_stmt, add_to_addressable_set,
21490         gimple_add_to_addresses_taken): Remove public functions.
21491         (unlink_stmt_vdef): New function.
21492
21493 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
21494
21495         * config.gcc (powerpc-*-linux*): Merge variants.
21496
21497 2009-04-02  Chao-ying Fu  <fu@mips.com>
21498             James Grosbach  <james.grosbach@microchip.com>
21499
21500         * config/mips/mips.c (mips_frame_info): Add acc_mask, num_acc,
21501         num_cop0_regs, acc_save_offset, cop0_save_offset, acc_sp_offset,
21502         cop0_sp_offset.
21503         (machine_function): Add interrupt_handler_p, use_shadow_register_set_p,
21504         keep_interrupts_masked_p, use_debug_exception_return_p.
21505         (mips_attribute_table): Add interrupt, use_shadow_register_set,
21506         keep_interrupts_masked, use_debug_exception_return.
21507         (mips_interrupt_type_p, mips_use_shadow_register_set_p,
21508         mips_keep_interrupts_masked_p, mips_use_debug_exception_return_p):
21509         New functions.
21510         (mips_function_ok_for_sibcall): Return false for interrupt handlers.
21511         (mips_print_operand): Process COP0 registers to print $0 .. $31
21512         correctly for GAS to process.
21513         (mips_interrupt_extra_call_saved_reg_p): New function.
21514         (mips_cfun_call_saved_reg_p): For interrupt handlers, we need to check
21515         extra registers.
21516         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
21517         (mips_compute_frame_info): Add supports for interrupt context that
21518         includes doubleword accumulators and COP0 registers.
21519         (mips_for_each_saved_acc): New function.
21520         (mips_for_each_saved_gpr_and_fpr): Change the function name from
21521         mips_for_each_saved_reg.
21522         (mips_save_reg): Save accumulators.
21523         (mips_kernel_reg_p): A new for_each_rtx callback.
21524         (mips_expand_prologue): Support interrupt handlers.
21525         (mips_restore_reg): Restore accumulators.
21526         (mips_expand_epilogue): Support interrupt handlers.
21527         (mips_can_use_return_insn): Return false for interrupt handlers.
21528         (mips_epilogue_uses): New function.
21529         * config/mips/mips.md (UNSPEC_ERET, UNSPEC_DERET, UNSPEC_DI,
21530         UNSPEC_EHB, UNSPEC_RDPGPR, UNSPEC_COP0): New UNSPEC.
21531         (mips_eret, mips_deret, mips_di, mips_ehb, mips_rdpgpr,
21532         cop0_move): New instructions.
21533         * config/mips/mips-protos.h (mips_epilogue_uses): Declare.
21534         * config/mips/mips.h (K0_REG_NUM, K1_REG_NUM, KERNEL_REG_P): New
21535         defines.
21536         (COP0_STATUS_REG_NUM, COP0_CAUSE_REG_NUM, COP0_EPC_REG_NUM):
21537         New defines.
21538         (CAUSE_IPL, SR_IPL, SR_EXL, SR_IE): New defines.
21539         (MIPS_PROLOGUE_TEMP_REGNUM, MIPS_EPILOGUE_TEMP_REGNUM): For
21540         interrupt handlers, we use K0 as the temporary register.
21541         (EPILOGUE_USES): Change to a function call.
21542         * config/mips/sde.h (MIPS_EPILOGUE_TEMP_REGNUM): For interrupt
21543         handlers, we use K0 as the temporary register.
21544
21545         * doc/extend.texi (Function Attributes): Document interrupt,
21546         use_shadow_register_set, keep_interrupts_masked,
21547         use_debug_exception_return for MIPS attributes.
21548
21549 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
21550
21551         * config.gcc (powerpc64-*-gnu*): Add rs6000/default64.h to tm_file.
21552         Remove a number of t-files from tmake_file.
21553         * config/rs6000/sysv4.opt (mprototype): Name variable target_prototype.
21554         * config/rs6000/sysv4.h (TARGET_PROTOTYPE): Define.
21555         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Set
21556         target_prototype, not TARGET_PROTOTYPE.
21557         (LINK_OS_GNU_SPEC): Define.
21558         * config/rs6000/t-linux64 (LIB2FUNCS_EXTRA): Delete tramp.S
21559         and darwin-ldoubdle.c.
21560
21561 2009-04-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
21562
21563         PR driver/39293
21564         * gcc.c (save_temps_flag): Add support for -save-temps=obj.
21565         (cpp_options): Ditto.
21566         (default_compilers): Ditto.
21567         (display_help): Ditto.
21568         (process_command): Ditto.
21569         (do_spec_1): Ditto.
21570         (set_input): Use lbasename instead of duplicate code.
21571         (save_temps_prefix): New static for -save-temps=obj.
21572         (save_temps_length): Ditto.
21573
21574         * doc/invoke.texi (-save-temps=obj): Document new variant to
21575         -save-temps switch.
21576
21577 2009-04-02  Jeff Law  <law@redhat.com>
21578
21579         * reload1.c (fixup_eh_region_notes): Remove write-only "trap_count"
21580         variable.
21581
21582 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
21583
21584         * configure.ac: Support -Bstatic/-Bdynamic for linker version > 2.
21585         * configure: Regenerated.
21586
21587 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
21588
21589         * c-decl.c (merge_decls): Make sure newdecl and olddecl don't
21590         share the argument list.
21591
21592 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
21593
21594         Merge
21595
21596         2009-02-12  Diego Novillo  <dnovillo@google.com>
21597
21598         * varpool.c (debug_varpool): New.
21599         * cgraph.h (debug_varpool): Declare.
21600
21601 2009-04-02  Jan Hubicka  <jh@suse.cz>
21602
21603         * passes.c (init_optimization_passes): Remove two copies of ehcleanup
21604         pass.
21605
21606 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
21607
21608         * config/i386/i386.c (ix86_abi): Move initialization to ...
21609         (override_options): Here.
21610
21611 2009-04-02  Christian Bruel  <christian.bruel@st.com>
21612
21613         * config/sh/sh.c (sh_dwarf_register_span): New function.
21614         (TARGET_DWARF_REGISTER_SPAN): Define.
21615         * config/sh/sh-protos.h (sh_dwarf_register_span): Declare.
21616
21617 2009-04-02  Ira Rosen  <irar@il.ibm.com>
21618
21619         PR tree-optimization/39595
21620         * tree-vect-slp.c (vect_build_slp_tree): Check that the size of
21621         interleaved loads group is not  greater than the SLP group size.
21622
21623 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
21624
21625         * builtins.c (is_builtin_name): New.
21626         (called_as_built_in): Use is_builtin_name.
21627         * tree.h (is_builtin_name): New.
21628         * varasm.c (incorporeal_function_p): Use is_builtin_name
21629
21630 2009-04-02  Andrew Stubbs  <ams@codesourcery.com>
21631
21632         * config/sh/linux-unwind.h: Disable when inhibit_libc is defined.
21633
21634 2009-04-02  Dodji Seketeli  <dodji@redhat.com>
21635
21636         PR c++/26693
21637         * c-decl.c (clone_underlying_type): Move this ...
21638         * c-common.c (set_underlying_type): ... here.
21639         Also, make sure the function properly sets TYPE_STUB_DECL() on
21640         the newly created typedef variant type.
21641         * c-common.h (is_typedef_decl, set_underlying_type): Declare ...
21642         * c-common.c (is_typedef_decl, set_underlying_type): ... new entry
21643         points.
21644
21645 2009-04-02  Richard Guenther  <rguenther@suse.de>
21646
21647         PR tree-optimization/37221
21648         * tree-flow.h (degenerate_phi_result): Declare.
21649         * tree-ssa-dom.c (degenerate_phi_result): Export.
21650         * tree-scalar-evolution.c (analyze_initial_condition): If
21651         the initial condition is defined by a degenerate PHI node
21652         use the degenerate value.
21653
21654 2009-04-01  Eric Botcazou  <ebotcazou@adacore.com>
21655
21656         PR rtl-optimization/39588
21657         * combine.c (merge_outer_ops): Do not set the constant when this
21658         is not necessary.
21659         (simplify_shift_const_1): Do not modify it either in this case.
21660
21661 2009-04-01  Steven Bosscher  <steven@gcc.gnu.org>
21662
21663         * config/ia64/ia64.c (ia64_handle_option): Inform user that Itanium1
21664         tuning is deprecated if -mtune value is set to an Itanium1 variant.
21665
21666 2009-04-01  Janis Johnson  <janis187@us.ibm.com>
21667
21668         PR c/29027
21669         * c-lex.c (interpret_float): Default (no suffix) is double.
21670
21671 2009-04-1  Xinliang David Li  <davidxl@google.com>
21672
21673         * config/i386/i386.c (legitimate_constant_p): Recognize
21674         all one vector constant.
21675
21676 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
21677
21678         * config/vax/vax.c: Add #includes to silence warnings.
21679         Change #include order to silence two warnings.
21680
21681 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
21682
21683         * config/vax/linux.h (TARGET_DEFAULT): Add the MASK_QMATH flag bit.
21684         (ASM_SPEC): Pass -k to the assembler for PIC code.
21685
21686 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
21687
21688         * config.gcc: Add vax-*-linux* to the switch.
21689         * config/vax/linux.h: New file. (TARGET_VERSION,
21690         TARGET_OS_CPP_BUILTINS, TARGET_DEFAULT, CPP_SPEC, LINK_SPEC): Define.
21691
21692 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
21693
21694         * config/vax/vax.c (vax_output_int_move, adjacent_operands_p):
21695         Use predicate macros instead of GET_CODE() == foo.
21696         * config/vax/vax.md (movsi_2, movstrictqi, and<mode>3, ashrsi3,
21697         ashlsi3, rotrsi3, <unnamed>): Likewise.
21698
21699 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
21700
21701         * config/vax/builtins.md (jbbssiqi, jbbssihi, jbbssisi, jbbcciqi,
21702         jbbccihi, jbbccisi): Remova trailing whitespace.
21703         * config/vax/constraints.md: Likewise.
21704         * config/vax/elf.h: (ASM_PREFERRED_EH_DATA_FORMAT): Likewise.
21705         * config/vax/openbsd1.h (OBSD_OLD_GAS): Likewise.
21706         * config/vax/predicates.md: Likewise.
21707         * config/vax/vax.c (print_operand_address, vax_output_int_move,
21708         vax_expand_addsub_di_operands, adjacent_operands_p): Likewise.
21709         * config/vax/vax.h: Likewise.
21710         * config/vax/vax.md (nonlocal_goto): Likewise.
21711
21712 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
21713
21714         * config/vax/vax.c (vax_float_literal, vax_output_int_move)
21715         (indirectable_address_p, adjacent_operands_p): Add spaces around
21716         braces.
21717         * config/vax/vax-protos.h (adjacent_operands_p): Likewise.
21718
21719 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
21720
21721         * config/vax/vax.c (legitimate_constant_address_p,
21722         legitimate_constant_p, indirectable_address_p, nonindexed_address_p,
21723         index_term_p, reg_plus_index_p, legitimate_address_p,
21724         vax_mode_dependent_address_p): Update comments to match functions
21725         modified by the recent int->bool conversion.
21726
21727 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
21728
21729         * config/vax/builtins.md: Update copyright message.
21730         * config/vax/constraints.md: Likewise.
21731         * config/vax/netbsd-elf.h: Likewise.
21732         * config/vax/predicates.md: Likewise.
21733         * config/vax/vax-protos.h: Likewise.
21734         * config/vax/vax.c: Likewise.
21735         * config/vax/vax.h: Likewise.
21736         * config/vax/vax.md: Likewise.
21737         * config/vax/vax.opt: Likewise.
21738
21739 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
21740
21741         * config/vax/builtins.md (ffssi2, ffssi2_internal,
21742         sync_lock_test_and_set<mode>, sync_lock_release<mode>): Fix indention.
21743         * config/vax/constraints.md (B, R): Likewise.
21744         * config/vax/predicates.md (external_memory_operand,
21745         nonimmediate_addsub_di_operand): Likewise.
21746         * config/vax/vax.c (vax_output_int_add): Likewise.
21747         * config/vax/vax.md (movsi, movsi_2, mov<mode>, call_value,
21748         untyped_call): Likewise.
21749
21750 2009-04-01  Matt Thomas  <matt@3am-software.com>
21751
21752         * config/vax/predicates.md: New file.
21753         (symbolic_operand, local_symbolic_operand, external_symbolic_operand,
21754         external_const_operand, nonsymbolic_operand, external_memory_operand,
21755         indirect_memory_operand, indexed_memory_operand,
21756         illegal_blk_memory_operand, illegal_addsub_di_memory_operand,
21757         nonimmediate_addsub_di_operand, general_addsub_di_operand): New
21758         predicate.
21759         * config/vax/constraints.md: New file.
21760         (Z0, U06,  U08, U16, CN6, S08, S16, I, J, K, L, M, N, O, G, Q, B, R, T):
21761         New constraint.
21762         * config/vax/builtins.md: New file.
21763         (ffssi2, ffssi2_internal, sync_lock_test_and_set<mode>, jbbssiqi,
21764         jbbssihi, jbbssisi, sync_lock_release<mode>, jbbcciqi, jbbccihi,
21765         jbbccisi): Define.
21766         * config/vax/vax.opt (mqmath): Add option.
21767         * config/vax/vax.md (isfx): Extend with DI.
21768         (VAXintQH, VAXintQHSD): Define.
21769         (tst<mode>, cmp<mode>, *bit<mode>, movmemhi1, truncsiqi2, truncsihi2,
21770         mulsidi3, add<mode>3, sub<mode>, mul<mode>3, div<mode>3, and<mode>,
21771         and<mode>_const_int, ior<mode>3, xor<mode>3, neg<mode>2,
21772         one_cmpl<mode>2, ashlsi3, lshrsi3, rotlsi3): Update constraints.
21773         (movdi): Update constraints and use vax_output_int_move().
21774         (movsi, movsi_2, pushlclsymreg, pushextsymreg, movlclsymreg,
21775         movextsymreg, adddi3, adcdi3, subdi3, sbcdi3, pushextsym, movextsym,
21776         pushlclsym, movlclsym, movaddr<mode>, pushaddr<mode>,
21777         nonlocal_goto): New.
21778         (mov<mode>): Extend accepted operand types.
21779         (subdi3_old): Rename from subdi3, change update constraints and use
21780         a new implementation.
21781         * config/vax/vax.h (PCC_BITFIELD_TYPE_MATTERS): Add space.
21782         (FRAME_POINTER_CFA_OFFSET, IRA_COVER_CLASSES, CLASS_MAX_NREGS,
21783         MOVE_RATIO, CLEAR_RATIO): Define.
21784         (REG_CLASS_FROM_LETTER, CONST_OK_FOR_LETTER_P,
21785         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT): Delete.
21786         (PRINT_OPERAND): Redefine using a function instead of inlined code.
21787         * config/vax/vax.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Define.
21788         (split_quadword_operands): Make static and really allow variable
21789         splitting.
21790         (print_operand_address): Update for PIC generation.
21791         (print_operand, vax_builtin_setjmp_frame_value, vax_output_int_subtract,
21792         indexable_address_p, fixup_mathdi_operand,
21793         vax_expand_addsub_di_operands, adjacent_operands_p): New.
21794         (vax_float_literal, legitimate_constant_p,
21795         indirectable_constant_address_p, index_term_p,
21796         reg_plus_index_p): Return bool instead of int.
21797         (vax_rtx_costs): Fix cost for CONST_INT, indent and use HOST_WIDE_INT
21798         where needed.
21799         (vax_output_int_move, vax_output_int_add): Extend to allow PIC
21800         generation.
21801         (vax_output_conditional_branch): Indent.
21802         (legitimate_constant_address_p, indirectable_constant_address_p,
21803         indirectable_address_p, nonindexed_address_p, legitimate_address_p,
21804         vax_mode_dependent_address_p): Return bool instead of int, update for
21805         PIC generation.
21806         * config/vax/vax-protos.h (legitimate_constant_address_p,
21807         legitimate_constant_p, legitimate_address_p,
21808         vax_mode_dependent_address_p): Change declaration to bool.
21809         (legitimate_pic_operand_p, adjacent_operands_p, print_operand,
21810         vax_expand_addsub_di_operands, vax_output_int_subtract,
21811         vax_output_movmemsi): Declare.
21812         (split_quadword_operands, vax_float_literal): Delete declaration.
21813         * config/vax/netbsd-elf.h (CC1_SPEC, CC1PLUS_SPEC) Define.
21814         * config/vax/elf.h (NO_EXTERNAL_INDIRECT_ADDRESS,
21815         VAX_CC1_AND_CC1PLUS_SPEC, ASM_PREFERRED_EH_DATA_FORMAT,
21816         ASM_OUTPUT_DWARF_PCREL): Define.
21817         (ASM_SPEC): Change definition to allow PIC generation.
21818
21819 2009-04-01  Steve Ellcey  <sje@cup.hp.com>
21820
21821         * doc/sourcebuild.texi: Update front-end requirements.
21822
21823 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
21824
21825         PR target/39226
21826         * config/rs6000/rs6000.md (andsi3_internal5_nomc,
21827         anddi3_internal2_nomc, anddi3_internal3_nomc): Removed.
21828         (booldi3_internal3): Use boolean_or_operator instead of
21829         boolean_operator.
21830
21831 2009-04-01  Joseph Myers  <joseph@codesourcery.com>
21832
21833         PR c/39605
21834         * c-decl.c (grokdeclarator): Pedwarn for file-scope array
21835         declarator whose size is not an integer constant expression but
21836         folds to an integer constant, then treat it as a constant
21837         subsequently.
21838
21839 2009-04-01  Richard Guenther  <rguenther@suse.de>
21840
21841         * fold-const.c (fold_plusminus_mult_expr): Do not fold
21842         i * 4 + 2 to (i * 2 + 1) * 2.
21843
21844 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
21845
21846         PR c/37772
21847         * c-parser.c (c_parser_asm_statement): Skip until close paren and
21848         return if c_parser_asm_string_literal returned NULL.
21849
21850 2009-04-01  Nick Clifton  <nickc@redhat.com>
21851
21852         * config/m32c/m32c.h (LIBGCC2_UNITS_PER_WORD): Define if not
21853         already defined.
21854         * config/m32c/t-m32c (LIB2FUNCS_EXTRA): Add m32c-lib2-trapv.c.
21855         * config/m32c/m32c-lib2.c: Remove unused typedefs.  Rename the
21856         other typedefs to avoid conflicts with libgcc2.c.  Define labels
21857         to gain 16-bit bit-manipulation functions from libgcc2.c and then
21858         include it.
21859         * config/m32c/m32c-lib2-trapv.c: New file.  Define labels
21860         to gain 16-bit trapping arithmetic functions from libgcc2.c and
21861         then include it.
21862
21863 2009-04-01  Rafael Avila de Espindola  <espindola@google.com>
21864
21865         * varasm.c (default_function_rodata_section): Declare DOT as
21866         const char*.
21867
21868 2009-04-01  Kai Tietz  <kai.tietz@onevision.com>
21869             Andrey Galkin  <agalkin@hypercom.com>
21870
21871         PR/39492
21872         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address):
21873         Make object_name unique for each process.
21874
21875 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
21876
21877         PR other/39591
21878         * omp-low.c (remove_exit_barrier): Don't optimize if there are any
21879         addressable variables in the parallel that could go out of scope while
21880         running queued tasks.
21881
21882 2009-04-01  Anatoly Sokolov  <aesok@post.ru>
21883
21884         * config/avr/avr.h (avr_case_values_threshold): Remove declaration.
21885         (CASE_VALUES_THRESHOLD): Redefine.
21886         * config/avr/avr.c (avr_override_options): Remove initialization of
21887         avr_case_values_threshold variable.
21888         (avr_case_values_threshold): Remove variable. Add new function.
21889         * config/avr/avr-protos.h (avr_case_values_threshold): Declare.
21890         * config/avr/avr.opt (mno-tablejump): Remove option.
21891         * doc/invoke.texi (AVR Options): Remove -mno-tablejump.
21892
21893 2009-04-01  DJ Delorie  <dj@redhat.com>
21894
21895         * varasm.c (default_function_rodata_section): Don't assume
21896         anything about where the first '.' in the section name is.
21897
21898 2009-04-01  Alan Modra  <amodra@bigpond.net.au>
21899
21900         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Delete redundant
21901         rs6000_emit_stack_tie.
21902
21903 2009-03-31  Ian Lance Taylor  <iant@google.com>
21904
21905         * tree-eh.c (tree_remove_unreachable_handlers): Compare
21906         gimple_code with GIMPLE_RESX, not RESX.
21907
21908 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
21909
21910         * c-common.c (c_get_ident): New.
21911         (c_common_nodes_and_builtins): Call it for type names that may be NULL.
21912
21913 2009-04-01  Ben Elliston  <bje@au.ibm.com>
21914
21915         * config/rs6000/sysv4.opt (msdata): Improve option description.
21916
21917 2009-03-31  Steve Ellcey  <sje@cup.hp.com>
21918
21919         * config/ia64/ia64.md (divsf3_internal_lat): Remove.
21920         (divdf3_internal_lat): Remove.
21921         (divxf3_internal_lat): Remove.
21922         (divxf3_internal_thr): Remove.
21923         (divxf): Use divxf3_internal.
21924         * config/ia64/div.md (divsf3_internal_lat): New.
21925         (divdf3_internal_lat): New.
21926         (divxf3_internal): New.
21927
21928 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
21929
21930         PR c/448
21931         * Makefile.in (USE_GCC_STDINT): Define.
21932         (stmp-int-hdrs): Install stdint.h if applicable.
21933         * c-common.c (CHAR16_TYPE): Define in terms of UINT_LEAST16_TYPE
21934         if known.
21935         (CHAR32_TYPE): Define in terms of UINT_LEAST32_TYPE if known.
21936         (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE, INT64_TYPE,
21937         UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
21938         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
21939         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
21940         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
21941         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
21942         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
21943         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
21944         (c_common_nodes_and_builtins): Initialize
21945         underlying_wchar_type_node.  Do not initialize
21946         signed_wchar_type_node or unsigned_wchar_type_node.  Initialize
21947         nodes for new types.
21948         (c_stddef_cpp_builtins): Define macros for new types.
21949         * c-common.h (CTI_SIGNED_WCHAR_TYPE, CTI_UNSIGNED_WCHAR_TYPE):
21950         Remove.
21951         (CTI_UNDERLYING_WCHAR_TYPE, CTI_SIG_ATOMIC_TYPE, CTI_INT8_TYPE,
21952         CTI_INT16_TYPE, CTI_INT32_TYPE, CTI_INT64_TYPE, CTI_UINT8_TYPE,
21953         CTI_UINT16_TYPE, CTI_UINT32_TYPE, CTI_UINT64_TYPE,
21954         CTI_INT_LEAST8_TYPE, CTI_INT_LEAST16_TYPE, CTI_INT_LEAST32_TYPE,
21955         CTI_INT_LEAST64_TYPE, CTI_UINT_LEAST8_TYPE, CTI_UINT_LEAST16_TYPE,
21956         CTI_UINT_LEAST32_TYPE, CTI_UINT_LEAST64_TYPE, CTI_INT_FAST8_TYPE,
21957         CTI_INT_FAST16_TYPE, CTI_INT_FAST32_TYPE, CTI_INT_FAST64_TYPE,
21958         CTI_UINT_FAST8_TYPE, CTI_UINT_FAST16_TYPE, CTI_UINT_FAST32_TYPE,
21959         CTI_UINT_FAST64_TYPE, CTI_INTPTR_TYPE, CTI_UINTPTR_TYPE): Define.
21960         (signed_wchar_type_node, unsigned_wchar_type_node): Remove.
21961         (underlying_wchar_type_node, sig_atomic_type_node, int8_type_node,
21962         int16_type_node, int32_type_node, int64_type_node,
21963         uint8_type_node, uint16_type_node, c_uint32_type_node,
21964         c_uint64_type_node, int_least8_type_node, int_least16_type_node,
21965         int_least32_type_node, int_least64_type_node,
21966         uint_least8_type_node, uint_least16_type_node,
21967         uint_least32_type_node, uint_least64_type_node,
21968         int_fast8_type_node, int_fast16_type_node, int_fast32_type_node,
21969         int_fast64_type_node, uint_fast8_type_node, uint_fast16_type_node,
21970         uint_fast32_type_node, uint_fast64_type_node, intptr_type_node,
21971         uintptr_type_node): Define.
21972         * c-cppbuiltin.c (builtin_define_constants,
21973         builtin_define_type_minmax): New.
21974         (builtin_define_stdint_macros): Define more macros.
21975         (c_cpp_builtins): Define more limit macros.
21976         (type_suffix): New.
21977         (builtin_define_type_max): Define in terms of
21978         builtin_define_type_minmax.  Remove is_long parameter.  All
21979         callers changed.
21980         * config.gcc (use_gcc_stdint): Define.
21981         (tm_file): Add glibc-stdint.h for targets using glibc or uClibc.
21982         Add newlib-stdint.h for generic targets.
21983         * config/glibc-stdint.h, config/newlib-stdint.h,
21984         ginclude/stdint-gcc.h, ginclude/stdint-wrap.h: New.
21985         * config/m32c/m32c.h (UINTPTR_TYPE): Define.
21986         * config/score/score.h (UINTPTR_TYPE): Define.
21987         * config/sol2.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
21988         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
21989         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
21990         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
21991         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
21992         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
21993         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
21994         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
21995         * config/spu/spu.h (STDINT_LONG32): Define.
21996         * configure.ac (use_gcc_stdint): Substitute.
21997         * configure: Regenerate.
21998         * doc/cpp.texi (__SIG_ATOMIC_TYPE__, __INT8_TYPE__,
21999         __INT16_TYPE__, __INT32_TYPE__, __INT64_TYPE__, __UINT8_TYPE__,
22000         __UINT16_TYPE__, __UINT32_TYPE__, __UINT64_TYPE__,
22001         __INT_LEAST8_TYPE__, __INT_LEAST16_TYPE__, __INT_LEAST32_TYPE__,
22002         __INT_LEAST64_TYPE__, __UINT_LEAST8_TYPE__, __UINT_LEAST16_TYPE__,
22003         __UINT_LEAST32_TYPE_, __UINT_LEAST64_TYPE__, __INT_FAST8_TYPE__,
22004         __INT_FAST16_TYPE__, __INT_FAST32_TYPE__, __INT_FAST64_TYPE__,
22005         __UINT_FAST8_TYPE__, __UINT_FAST16_TYPE__, __UINT_FAST32_TYPE__,
22006         __UINT_FAST64_TYPE__, __INTPTR_TYPE__, __UINTPTR_TYPE__,
22007         __WINT_MAX__, __SIZE_MAX__, __PTRDIFF_MAX__, __UINTMAX_MAX__,
22008         __SIG_ATOMIC_MAX__, __INT8_MAX__, __INT16_MAX__, __INT32_MAX__,
22009         __INT64_MAX__, __UINT8_MAX__, __UINT16_MAX__, __UINT32_MAX__,
22010         __UINT64_MAX__, __INT_LEAST8_MAX__, __INT_LEAST16_MAX__,
22011         __INT_LEAST32_MAX__, __INT_LEAST64_MAX__, __UINT_LEAST8_MAX__,
22012         __UINT_LEAST16_MAX__, __UINT_LEAST32_MAX__, __UINT_LEAST64_MAX__,
22013         __INT_FAST8_MAX__, __INT_FAST16_MAX__, __INT_FAST32_MAX__,
22014         __INT_FAST64_MAX__, __UINT_FAST8_MAX__, __UINT_FAST16_MAX__,
22015         __UINT_FAST32_MAX__, __UINT_FAST64_MAX__, __INTPTR_MAX__,
22016         __UINTPTR_MAX__, __WCHAR_MIN__, __WINT_MIN__, __SIG_ATOMIC_MIN__,
22017         __INT8_C, __INT16_C, __INT32_C, __INT64_C, __UINT8_C, __UINT16_C,
22018         __UINT32_C, __UINT64_C, __INTMAX_C, __UINTMAX_C): Document.
22019         * doc/tm.texi (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE,
22020         INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
22021         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
22022         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
22023         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
22024         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
22025         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
22026         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Document.
22027
22028 2009-03-31  Bernd Schmidt  <bernd.schmidt@analog.com>
22029
22030         * loop-iv.c (suitable_set_for_replacement): Renamed from
22031         simplify_using_assignment; changed to return bool and to accept new
22032         args DEST and SRC.  Return true iff we find a source/destination pair
22033         that can be used to make a replacement, and fill SRC and DEST if so.
22034         Remove arg ALTERED.  Don't deal with altered regs here.  All callers
22035         changed.
22036         (simplify_using_initial_values): Deal with altered regs here and track
22037         more precisely the effect they have on the validity of our expression.
22038
22039         * loop-iv.c (simplify_using_condition): A condition of the form
22040         (EQ REG CONST) can be used to simply make a substitution.
22041         (simplify_using_initial_values): Keep track of conditions we have seen
22042         and keep using them to simplify new expressions, while applying the
22043         same substitutions to them as to the expression.
22044
22045         * simplify-rtx.c (simplify_relational_operation_1): Simplify
22046         (LTU (PLUS a C) C) or (LTU (PLUS a C) a) to (GEU a -C); likewise with
22047         GEU/LTU reversed.
22048
22049         * loop-iv.c (determine_max_iter): New arg OLD_NITER.  All callers
22050         changed.  Use this when trying to improve the upper bound.
22051         Generate the comparison by using simplify_gen_relational.
22052
22053         * loop-iv.c (simple_rhs_p): Allow more kinds of expressions.
22054
22055         * loop-iv.c (replace_single_def_regs, replace_in_expr): New static
22056         functions.
22057         (simplify_using_assignment, simplify_using_initial_values): Call
22058         replace_in_expr to make replacements.  Call replace_single_def_regs
22059         once on the initial version of the expression.
22060
22061 2009-03-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
22062
22063         PR target/27237
22064         * doc/invoke.texi (ARM Options): Update documentation for -mthumb.
22065
22066 2009-03-31  Richard Guenther  <rguenther@suse.de>
22067
22068         PR middle-end/31029
22069         * fold-const.c (fold_binary): Fold X +- Y CMP X to Y CMP 0 for
22070         equality comparisons.  Fold C - X CMP X if C % 2 == 1.
22071
22072 2009-03-31  Richard Guenther  <rguenther@suse.de>
22073
22074         * tree.h (div_if_zero_remainder): Declare.
22075         * fold-const.c (div_if_zero_remainder): Export.
22076         * tree-ssa-forwprop.c
22077         (forward_propagate_addr_into_variable_array_index): Handle
22078         constant array index addition outside of the variable index.
22079
22080 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
22081
22082         PR target/39592
22083         * config/i386/i386.md (*floatunssi<mode>2_1, two unnamed
22084         define_splits, floatunssi<mode>2): Require x87 conversions from
22085         DImode to be permitted.
22086
22087 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
22088
22089         PR preprocessor/15638
22090         * c-common.c (c_cpp_error): Handle CPP_DL_FATAL.
22091
22092 2009-03-31  Richard Guenther  <rguenther@suse.de>
22093
22094         PR middle-end/23401
22095         PR middle-end/27810
22096         * tree.h (DECL_GIMPLE_FORMAL_TEMP_P): Remove.
22097         (struct tree_decl_with_vis): Remove gimple_formal_temp member.
22098         * tree-eh.c (lower_eh_constructs_2): Move LHS assignment to
22099         a separate statement.
22100         * gimplify.c (pop_gimplify_context): Remove formal temp handling.
22101         (lookup_tmp_var): Likewise.
22102         (is_gimple_formal_tmp_or_call_rhs): Remove.
22103         (is_gimple_reg_or_call_rhs): Rename to ...
22104         (is_gimple_reg_rhs_or_call): ... this.
22105         (is_gimple_mem_or_call_rhs): Rename to ...
22106         (is_gimple_mem_rhs_or_call): ... this.
22107         (internal_get_tmp_var): Use is_gimple_reg_rhs_or_call.  Set
22108         DECL_GIMPLE_REG_P only if is_formal is true.
22109         (gimplify_compound_lval): Use is_gimple_reg.  Remove workaround
22110         for non-proper post-modify expression gimplification.
22111         (gimplify_self_mod_expr): For post-modify expressions gimplify
22112         the lvalue to a minimal lvalue.
22113         (rhs_predicate_for): Remove formal temp case.
22114         (gimplify_modify_expr_rhs): Likewise.
22115         (gimplify_addr_expr): Use is_gimple_reg.
22116         (gimplify_expr): Remove formal temp cases.
22117         (gimple_regimplify_operands): Likewise.
22118         * tree-ssa-pre.c (get_or_alloc_expr_for): Treat EXC_PTR_EXPR
22119         and FILTER_EXPR like constants.
22120         * gimple.c (walk_gimple_op): Fix val_only initialization, use
22121         is_gimple_reg.
22122         (is_gimple_formal_tmp_rhs): Remove.
22123         (is_gimple_reg_rhs): Remove special casing.
22124         (is_gimple_mem_rhs): Fix.
22125         (is_gimple_reg): Move DECL_GIMPLE_REG_P handling earlier.
22126         (is_gimple_formal_tmp_var): Remove.
22127         (is_gimple_formal_tmp_reg): Likewise.
22128         (is_gimple_min_lval): Allow invariant component ref parts.
22129         * gimple.h (is_gimple_formal_tmp_rhs, is_gimple_formal_tmp_var,
22130         is_gimple_formal_tmp_reg): Remove declarations.
22131         * tree-cfg.c (verify_expr): Verify that variables with address
22132         taken do not have DECL_GIMPLE_REG_P set.
22133         * tree-mudflap.c (mf_build_check_statement_for): Use
22134         force_gimple_operand instead of gimplify_expr.
22135
22136 2009-03-31  Ayal Zaks  <zaks@il.ibm.com>
22137
22138         * modulo-sched.c (sms_schedule_by_order): Pass the actual
22139         schedulable rows to compute_split_row.
22140
22141 2009-03-31  Ben Elliston  <bje@au.ibm.com>
22142
22143         PR target/31635
22144         * config/rs6000/rs6000.c (rs6000_handle_option): Handle
22145         OPT_mvrsave.
22146
22147 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
22148
22149         * doc/invoke.texi (RS/6000 and PowerPC Options):Document mtls-markers.
22150         * configure.ac (HAVE_AS_TLS_MARKERS): New gas feature check.
22151         * configure: Regenerate.
22152         * config.in: Regenerate.
22153         * config/rs6000/rs6000.opt (mtls-markers): Add.
22154         * config/rs6000/rs6000.h (TARGET_TLS_MARKERS): Define.
22155         * config/rs6000/rs6000.md (tls_gd_aix, tls_gd_sysv): Add splitter.
22156         (tls_ld_aix, tls_ld_sysv): Likewise.
22157         (tls_gd, tls_gd_call_aix, tls_gd_call_sysv): New insns.
22158         (tls_ld, tls_ld_call_aix, tls_ld_call_sysv): Likewise.
22159
22160 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
22161
22162         * config/spu/spu.c (spu_expand_prologue): Delete redundant code.
22163
22164 2009-03-30  Jan Hubicka  <jh@suse.cz>
22165
22166         * tree-eh.c (make_eh_edges): Set probability 100% to first edge
22167         out of RESX.
22168         (tree_remove_unreachable_handlers): Cleanup EH predecestor
22169         detection and label handling.
22170
22171 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
22172
22173         * ira-int.h (ira_allocno): Rename left_conflicts_num to
22174         left_conflicts_size.
22175         (ALLOCNO_LEFT_CONFLICTS_NUM): Rename to
22176         ALLOCNO_LEFT_CONFLICTS_SIZE.
22177
22178         * ira-color.c (allocno_spill_priority, push_allocno_to_stack,
22179         remove_allocno_from_bucket_and_push,
22180         allocno_spill_priority_compare, push_allocnos_to_stack,
22181         setup_allocno_available_regs_num): Use ALLOCNO_LEFT_CONFLICTS_SIZE
22182         instead of ALLOCNO_LEFT_CONFLICTS_NUM.
22183         (setup_allocno_left_conflicts_num): Ditto.  Rename to
22184         setup_allocno_left_conflicts_size.
22185         (put_allocno_into_bucket): Use ALLOCNO_LEFT_CONFLICTS_SIZE
22186         instead of ALLOCNO_LEFT_CONFLICTS_NUM and
22187         setup_allocno_left_conflicts_size instead of
22188         setup_allocno_left_conflicts_num.
22189
22190         * ira-build.c (ira_create_allocno): Use
22191         ALLOCNO_LEFT_CONFLICTS_SIZE instead of
22192         ALLOCNO_LEFT_CONFLICTS_NUM.
22193
22194 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
22195
22196         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
22197         instead of DF_LR_OUT.
22198
22199         * ira-lives.c (process_bb_node_lives): Ditto.
22200
22201         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
22202         instead of DF_LR_{OUT,IN}.
22203
22204         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
22205
22206         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
22207
22208 2009-03-30  Jan Hubicka  <jh@suse.cz>
22209
22210         * except.c (label_to_region_map): Fix thinko.
22211
22212 2009-03-30  Steve Ellcey  <sje@cup.hp.com>
22213
22214         PR middle-end/38237
22215         * tree.h (tree_find_value): New declaration.
22216         * tree.c (tree_find_value): New function.
22217         * varasm.c (assemble_external): Avoid duplicate entries on lists.
22218
22219 2009-03-30  Jakub Jelinek  <jakub@redhat.com>
22220
22221         PR debug/39563
22222         * c-decl.c (struct c_binding): Add locus field.
22223         (bind): Add locus argument, set locus field from it.
22224         (pop_scope): For b->nested VAR_DECL or FUNCTION_DECL,
22225         add a DECL_EXTERNAL copy of b->decl to current BLOCK_VARS.
22226         (push_file_scope, pushtag, pushdecl, pushdecl_top_level,
22227         implicitly_declare, undeclared_variable, lookup_label,
22228         declare_label, c_make_fname_decl, c_builtin_function,
22229         c_builtin_function_ext_scope, store_parm_decls_newstyle): Adjust
22230         bind callers.
22231
22232 2009-03-30  H.J. Lu  <hongjiu.lu@intel.com>
22233
22234         PR target/38781
22235         * config/i386/i386.c (classify_argument): Check total size of
22236         structure.
22237
22238 2009-03-30  Martin Jambor  <mjambor@suse.cz>
22239
22240         * ipa-prop.h (jump_func_type): Rename IPA_UNKNOWN, IPA_CONST,
22241         IPA_CONST_MEMBER_PTR, and IPA_PASS_THROUGH to IPA_JF_UNKNOWN,
22242         IPA_JF_CONST, IPA_JF_CONST_MEMBER_PTR, and IPA_JF_PASS_THROUGH
22243         respectively.
22244
22245         * tree-dfa.c (get_ref_base_and_extent): Return -1 maxsize if
22246         seen_variable_array_ref while also traversing a union.
22247
22248         * tree-inline.c (optimize_inline_calls): Do not call
22249         cgraph_node_remove_callees.
22250         * cgraphbuild.c (remove_cgraph_callee_edges): New function.
22251         (pass_remove_cgraph_callee_edges): New variable.
22252         * passes.c (init_optimization_passes): Add
22253         pass_remove_cgraph_callee_edges after early inlining and before all
22254         late intraprocedural passes.
22255
22256         * omp-low.c (expand_omp_taskreg): Always set current_function_decl.
22257
22258 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
22259
22260         * config/sparc/sparc.md (*nand<V64mode>_vis, *nand<V32mode>_vis):
22261         Fix typos in names.
22262
22263 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
22264
22265         * combine.c (simplify_comparison): Use have_insn_for.
22266         * dojump.c (do_jump): Likewise.
22267
22268 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
22269
22270         * config/sparc/sparc.c (sparc_compare_emitted): Remove.
22271         (gen_compare_reg, emit_v9_brxx_insn): Handle MODE_CC
22272         sparc_compare_op0 like sparc_compare_emitted used to be handled.
22273         (sparc_expand_compare_and_swap_12): Set sparc_compare_op0
22274         instead of sparc_compare_emitted.
22275         * config/sparc/sparc.h (sparc_compare_emitted): Remove.
22276         * config/sparc/sparc.md (stack_protect_test): Set sparc_compare_op0
22277         instead of sparc_compare_emitted.
22278
22279 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
22280
22281         * bb-reorder.c (partition_hot_cold_basic_blocks): Do not
22282         enter/exit cfglayout mode.
22283         (pass_partition_block): Require it.
22284         * combine.c (find_single_use, reg_dead_at_p): Use CFG.
22285         (combine_instructions): Track basic blocks instead of labels.
22286         (update_cfg_for_uncondjump): New.
22287         (try_combine): Use it.  Update jumps after rescanning.
22288         (pass_combine): Require PROP_cfglayout.
22289         * passes.c (pass_outof_cfg_layout_mode): Move after regmove.
22290
22291 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
22292
22293         * cfglayout.c (pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode):
22294         Provide/destroy PROP_cfglayout respectively.
22295         * gcse.c (pass_jump_bypass, pass_gcse): Require it.
22296         * tree-pass.h (PROP_cfglayout): New.
22297
22298 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
22299
22300         * fold-const.c (const_binop, fold_convert_const_real_from_fixed,
22301         fold_convert_const_fixed_from_fixed,
22302         fold_convert_const_fixed_from_int,
22303         fold_convert_const_fixed_from_real, fold_negate_const): Do not
22304         set TREE_CONSTANT_OVERFLOW.
22305         * tree.def: Remove mention of TREE_CONSTANT_OVERFLOW.
22306         * tree.h (TREE_CONSTANT_OVERFLOW): Delete.
22307
22308 2009-03-30  Ira Rosen  <irar@il.ibm.com>
22309
22310         * tree-vect-loop-manip.c: New file.
22311         * tree-vectorizer.c: Update documentation and included files.
22312         (vect_loop_location): Make extern.
22313         (rename_use_op): Move to tree-vect-loop-manip.c
22314         (rename_variables_in_bb, rename_variables_in_loop,
22315         slpeel_update_phis_for_duplicate_loop,
22316         slpeel_update_phi_nodes_for_guard1,
22317         slpeel_update_phi_nodes_for_guard2, slpeel_make_loop_iterate_ntimes,
22318         slpeel_tree_duplicate_loop_to_edge_cfg, slpeel_add_loop_guard,
22319         slpeel_can_duplicate_loop_p, slpeel_verify_cfg_after_peeling,
22320         set_prologue_iterations, slpeel_tree_peel_loop_to_edge,
22321         find_loop_location): Likewise.
22322         (new_stmt_vec_info): Move to tree-vect-stmts.c.
22323         (init_stmt_vec_info_vec, free_stmt_vec_info_vec, free_stmt_vec_info,
22324         get_vectype_for_scalar_type, vect_is_simple_use,
22325         supportable_widening_operation, supportable_narrowing_operation):
22326         Likewise.
22327         (bb_in_loop_p): Move to tree-vect-loop.c.
22328         (new_loop_vec_info, destroy_loop_vec_info,
22329         reduction_code_for_scalar_code, report_vect_op,
22330         vect_is_simple_reduction, vect_is_simple_iv_evolution): Likewise.
22331         (vect_can_force_dr_alignment_p): Move to tree-vect-data-refs.c.
22332         (vect_supportable_dr_alignment): Likewise.
22333         * tree-vectorizer.h (tree-data-ref.h): Include.
22334         (vect_loop_location): Declare.
22335         Reorganize function declarations according to the new file structure.
22336         * tree-vect-loop.c: New file.
22337         * tree-vect-analyze.c: Remove. Move functions to tree-vect-data-refs.c,
22338         tree-vect-stmts.c, tree-vect-slp.c, tree-vect-loop.c.
22339         * tree-vect-data-refs.c: New file.
22340         * tree-vect-patterns.c (timevar.h): Don't include.
22341         * tree-vect-stmts.c: New file.
22342         * tree-vect-transform.c: Remove. Move functions to tree-vect-stmts.c,
22343         tree-vect-slp.c, tree-vect-loop.c.
22344         * Makefile.in (OBJS-common): Remove tree-vect-analyze.o and
22345         tree-vect-transform.o. Add tree-vect-data-refs.o, tree-vect-stmts.o,
22346         tree-vect-loop.o, tree-vect-loop-manip.o, tree-vect-slp.o.
22347         (tree-vect-analyze.o): Remove.
22348         (tree-vect-transform.o): Likewise.
22349         (tree-vect-data-refs.o): Add rule.
22350         (tree-vect-stmts.o, tree-vect-loop.o, tree-vect-loop-manip.o,
22351         tree-vect-slp.o): Likewise.
22352         (tree-vect-patterns.o): Remove redundant dependencies.
22353         (tree-vectorizer.o): Likewise.
22354         * tree-vect-slp.c: New file.
22355
22356 2009-03-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
22357
22358         * optc-gen.awk: Warn if an option flag has multiple different
22359         help strings.
22360
22361 2009-03-30  Sebastian Pop  <sebastian.pop@amd.com>
22362
22363         * doc/invoke.texi (-floop-interchange, -floop-strip-mine,
22364         -floop-block): Document dependences on PPL, CLooG and Graphite.
22365
22366 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
22367
22368         PR rtl-optimization/323
22369         * c-common.c (c_fully_fold, convert_and_check,
22370         c_common_truthvalue_conversion): Handle EXCESS_PRECISION_EXPR.
22371         (c_fully_fold_internal): Disallow EXCESS_PRECISION_EXPR.
22372         * c-common.def (EXCESS_PRECISION_EXPR): New.
22373         * c-cppbuiltin.c (builtin_define_float_constants): Define
22374         constants with enough digits for long double.
22375         * c-lex.c (interpret_float): Interpret constant with excess
22376         precision where appropriate.
22377         * c-opts.c (c_common_post_options): Set
22378         flag_excess_precision_cmdline.  Give an error for
22379         -fexcess-precision=standard for C++ for processors where the
22380         option is significant.
22381         * c-parser.c (c_parser_conditional_expression): Handle excess
22382         precision in condition.
22383         * c-typeck.c (convert_arguments): Handle arguments with excess
22384         precision.
22385         (build_unary_op): Move excess precision outside operation.
22386         (build_conditional_expr): Likewise.
22387         (build_compound_expr): Likewise.
22388         (build_c_cast): Do cast on operand of EXCESS_PRECISION_EXPR.
22389         (build_modify_expr): Handle excess precision in RHS.
22390         (convert_for_assignment): Handle excess precision in converted
22391         value.
22392         (digest_init, output_init_element, process_init_element): Handle
22393         excess precision in initializer.
22394         (c_finish_return): Handle excess precision in return value.
22395         (build_binary_op): Handle excess precision in operands and add
22396         excess precision as needed for operation.
22397         * common.opt (-fexcess-precision=): New option.
22398         * config/i386/i386.h (X87_ENABLE_ARITH, X87_ENABLE_FLOAT): New.
22399         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
22400         For standard excess precision, output explicit conversion to and
22401         truncation from XFmode.
22402         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1,
22403         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp,
22404         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387, two unnamed
22405         define_splits, floatdi<X87MODEF:mode>2_i387_with_xmm, two unnamed
22406         define_splits, *floatunssi<mode>2_1, two unnamed define_splits,
22407         floatunssi<mode>2, add<mode>3, sub<mode>3, mul<mode>3, divdf3,
22408         divsf3, *fop_<mode>_comm_i387, *fop_<mode>_1_i387,
22409         *fop_<MODEF:mode>_2_i387, *fop_<MODEF:mode>_3_i387,
22410         *fop_df_4_i387, *fop_df_5_i387, *fop_df_6_i387, two unnamed
22411         define_splits, sqrt<mode>2): Disable where appropriate for
22412         standard excess precision.
22413         * convert.c (convert_to_real): Do not shorten arithmetic to type
22414         for which excess precision would be used.
22415         * defaults.h (TARGET_FLT_EVAL_METHOD_NON_DEFAULT): Define.
22416         * doc/invoke.texi (-fexcess-precision=): Document option.
22417         (-mfpmath=): Correct index entry.
22418         * flags.h (enum excess_precision, flag_excess_precision_cmdline,
22419         flag_excess_precision): New.
22420         * langhooks.c (lhd_post_options): Set
22421         flag_excess_precision_cmdline.
22422         * opts.c (common_handle_option): Handle -fexcess-precision=.
22423         * toplev.c (flag_excess_precision_cmdline, flag_excess_precision,
22424         init_excess_precision): New.
22425         (lang_dependent_init_target): Call init_excess_precision.
22426         * tree.c (excess_precision_type): New.
22427         * tree.h (excess_precision_type): Declare.
22428
22429 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
22430
22431         PR c/35235
22432         * c-typeck.c (build_component_ref): Do not copy qualifiers from
22433         non-lvalue to component.
22434
22435 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
22436
22437         PR preprocessor/34695
22438         * Makefile.in (c-opts.o): Depend on c-tree.h.
22439         * c-common.c: Move down include of diagnostic.h.
22440         (done_lexing, c_cpp_error): New.
22441         * c-common.h (done_lexing): Declare.
22442         * c-decl.c (c_write_global_declarations): Don't check cpp_errors
22443         (parse_in).
22444         * c-opts.c: Include c-tree.h.
22445         (c_common_init_options): Set preprocessor error callback.
22446         (c_common_handle_option): Do not set preprocessor
22447         inhibit_warnings, warnings_are_errors, warn_system_headers,
22448         pedantic_errors or inhibit_warnings flags.
22449         (c_common_post_options): Do not check cpp_errors (parse_in).
22450         (c_common_finish): Do not output dependencies if there were
22451         errors.  Do not check return value of cpp_finish.
22452         * c-ppoutput.c (pp_file_change): Set input_location.
22453         * c-tree.h (c_cpp_error): Declare.
22454         * diagnostic.c (diagnostic_set_info_translated): Also initialize
22455         override_column.
22456         (diagnostic_build_prefix): Check override_column.
22457         * diagnostic.h (diagnostic_info): Add override_column field.
22458         (diagnostic_override_column): Define.
22459
22460 2009-03-28  Paolo Bonzini  <bonzini@gnu.org>
22461
22462         * c-common.c (c_expand_expr, c_staticp): Remove.
22463         * c-common.def (COMPOUND_LITERAL_EXPR): Delete.
22464         * c-common.h (emit_local_var, c_staticp, COMPOUND_LITERAL_EXPR_DECL,
22465         COMPOUND_LITERAL_EXPR_DECL_EXPR): Remove.
22466         * c-gimplify.c (gimplify_compound_literal_expr,
22467         optimize_compound_literals_in_ctor): Remove.
22468         (c_gimplify_expr): Remove COMPOUND_LITERAL_EXPR handling.
22469         * c-objc-common.h (LANG_HOOKS_STATICP): Remove.
22470         * c-semantics.c (emit_local_var): Remove.
22471
22472         * langhooks-def.h (lhd_expand_expr): Remove.
22473         * langhooks.c (lhd_expand_expr): Remove.
22474         * langhooks.h (LANG_HOOKS_DEF): Remove LANG_HOOKS_EXPAND_EXPR.
22475
22476         * expr.c (expand_expr_real_1): Move COMPOUND_LITERAL_EXPR
22477         handling from c-semantics.c; don't call into langhook.
22478         (expand_expr_addr_expr_1): Check that we don't get non-GENERIC trees.
22479         * gimplify.c (gimplify_compound_literal_expr,
22480         optimize_compound_literals_in_ctor): Move from c-gimplify.c.
22481         (gimplify_init_constructor): Call optimize_compound_literals_in_ctor.
22482         (gimplify_modify_expr_rhs, gimplify_expr): Handle COMPOUND_LITERAL_EXPR
22483         as was done in c-gimplify.c.
22484         * tree.c (staticp): Move COMPOUND_LITERAL_EXPR handling from c_staticp.
22485         * tree.h (COMPOUND_LITERAL_EXPR_DECL, COMPOUND_LITERAL_EXPR_DECL_EXPR):
22486         Move from c-common.h.
22487         * tree.def (COMPOUND_LITERAL_EXPR): Move from c-common.def.
22488
22489         * tree.c (staticp): Do not call langhook.
22490         * langhooks.c (lhd_staticp): Delete.
22491         * langhooks-def.h (lhd_staticp): Delete prototype.
22492         (LANG_HOOKS_STATICP): Delete.
22493         (LANG_HOOKS_INITIALIZER): Delete LANG_HOOKS_STATICP.
22494
22495         * doc/c-tree.texi (Expression nodes): Refer to DECL_EXPRs
22496         instead of DECL_STMTs.
22497
22498 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
22499
22500         PR c/456
22501         PR c/5675
22502         PR c/19976
22503         PR c/29116
22504         PR c/31871
22505         PR c/35198
22506         * builtins.c (fold_builtin_sincos): Build COMPOUND_EXPR in
22507         void_type_node.
22508         (fold_call_expr): Return a NOP_EXPR from folding rather than the
22509         contained expression.
22510         * c-common.c (c_fully_fold, c_fully_fold_internal, c_save_expr): New.
22511         (c_common_truthvalue_conversion): Use c_save_expr.  Do not fold
22512         conditional expressions for C.
22513         (decl_constant_value_for_optimization): Move from
22514         decl_constant_value_for_broken_optimization in c-typeck.c.  Check
22515         whether optimizing and that the expression is a VAR_DECL not of
22516         array type instead of doing such checks in the caller.  Do not
22517         check pedantic.  Call gcc_unreachable for C++.
22518         * c-common.def (C_MAYBE_CONST_EXPR): New.
22519         * c-common.h (c_fully_fold, c_save_expr,
22520         decl_constant_value_for_optimization): New prototypes.
22521         (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
22522         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
22523         EXPR_INT_CONST_OPERANDS): Define.
22524         * c-convert.c (convert): Strip nops from expression.
22525         * c-decl.c (groktypename): Take extra parameters expr and
22526         expr_const_operands.  Update call to grokdeclarator.
22527         (start_decl): Update call to grokdeclarator.  Add statement for
22528         expressions used in type of decl.
22529         (grokparm): Update call to grokdeclarator.
22530         (push_parm_decl): Update call to grokdeclarator.
22531         (build_compound_literal): Add parameter non_const and build a
22532         C_MAYBE_COSNT_EXPR if applicable.
22533         (grokdeclarator): Take extra parameters expr and
22534         expr_const_operands.  Track expressions used in declaration
22535         specifiers and declarators.  Fold array sizes and track whether
22536         they are constant expressions and whether they are integer
22537         constant expressions.
22538         (parser_xref_tag): Set expr and expr_const_operands fields in
22539         return value.
22540         (grokfield): Update call to grokdeclarator.
22541         (start_function): Update call to grokdeclarator.
22542         (build_null_declspecs): Set expr and expr_const_operands fields in
22543         return value.
22544         (declspecs_add_type): Handle expressions in typeof specifiers.
22545         * c-parser.c (c_parser_declspecs): Set expr and
22546         expr_const_operands fields for declaration specifiers.
22547         (c_parser_enum_specifier): Likewise.
22548         (c_parser_struct_or_union_specifier): Likewise.
22549         (c_parser_typeof_specifier): Likewise.  Update call to
22550         groktypename.  Fold expression as needed.  Return expressions with
22551         type instead of adding statements.
22552         (c_parser_attributes): Update calls to c_parser_expr_list.
22553         (c_parser_statement_after_labels): Fold expression before passing
22554         to objc_build_throw_stmt.
22555         (c_parser_condition): Fold expression.
22556         (c_parser_asm_operands): Fold expression.
22557         (c_parser_conditional_expression): Use c_save_expr.  Update call
22558         to build_conditional_expr.
22559         (c_parser_alignof_expression): Update call to groktypename.
22560         (c_parser_postfix_expression): Preserve C_MAYBE_CONST_EXPR as
22561         original_code.  Fold expression argument of va_arg.  Create
22562         C_MAYBE_CONST_EXPR to preserve side effects of expressions in type
22563         argument to va_arg.  Update calls to groktypename.  Fold array
22564         index for offsetof.  Verify that first argument to
22565         __builtin_choose_expr has integer type.
22566         (c_parser_postfix_expression_after_paren_type): Update calls to
22567         groktypename and build_compound_literal.  Handle expressions with
22568         side effects in type name.
22569         (c_parser_postfix_expression_after_primary): Update call to
22570         c_parser_expr_list.  Set original_code for calls to
22571         __builtin_constant_p.
22572         (c_parser_expr_list): Take extra parameter fold_p.  Fold
22573         expressions if requested.
22574         (c_parser_objc_type_name): Update call to groktypename.
22575         (c_parser_objc_synchronized_statement): Fold expression.
22576         (c_parser_objc_receiver): Fold expression.
22577         (c_parser_objc_keywordexpr): Update call to c_parser_expr_list.
22578         (c_parser_omp_clause_num_threads, c_parser_omp_clause_schedule,
22579         c_parser_omp_atomic, c_parser_omp_for_loop): Fold expressions.
22580         * c-tree.h (CONSTRUCTOR_NON_CONST): Define.
22581         (struct c_typespec): Add elements expr and expr_const_operands.
22582         (struct c_declspecs): Add elements expr and expr_const_operands.
22583         (groktypename, build_conditional_expr, build_compound_literal):
22584         Update prototypes.
22585         (in_late_binary_op): Declare.
22586         * c-typeck.c (note_integer_operands): New function.
22587         (in_late_binary_op): New variable.
22588         (decl_constant_value_for_broken_optimization): Move to c-common.c
22589         and rename to decl_constant_value_for_optimization.
22590         (default_function_array_conversion): Do not strip nops.
22591         (default_conversion): Do not call
22592         decl_constant_value_for_broken_optimization.
22593         (build_array_ref): Do not fold result.
22594         (c_expr_sizeof_expr): Fold operand.  Use C_MAYBE_CONST_EXPR for
22595         result when operand is a VLA.
22596         (c_expr_sizeof_type): Update call to groktypename.  Handle
22597         expressions included in type name.  Use C_MAYBE_CONST_EXPR for
22598         result when operand names a VLA type.
22599         (build_function_call): Update call to build_compound_literal.
22600         Only fold result for calls to __builtin_* functions.  Strip
22601         NOP_EXPR from INTEGER_CST returned from such functions.  Fold
22602         the function designator.
22603         (convert_arguments): Fold arguments.  Update call to
22604         convert_for_assignment.
22605         (build_unary_op): Handle increment and decrement of
22606         C_MAYBE_CONST_EXPR.  Move lvalue checks for increment and
22607         decrement earlier.  Fold operand of increment and decrement.
22608         Handle address of C_MAYBE_CONST_EXPR.  Only fold expression being
22609         built for integer operand.  Wrap returns that are INTEGER_CSTs
22610         without being integer constant expressions or that have integer
22611         constant operands without being INTEGER_CSTs.
22612         (lvalue_p): Handle C_MAYBE_CONST_EXPR.
22613         (build_conditional_expr): Add operand ifexp_bcp.  Track whether
22614         result is an integer constant expression or can be used in
22615         unevaluated parts of one and avoid folding and wrap as
22616         appropriate.  Fold operands before possibly doing -Wsign-compare
22617         warnings.
22618         (build_compound_expr): Wrap result for C99 if operands can be used
22619         in integer constant expressions.
22620         (build_c_cast): Update call to digest_init.  Do not ignore
22621         overflow from casting floating-point constants to integers.  Wrap
22622         results that could be confused with integer constant expressions,
22623         null pointer constants or floating-point constants.
22624         (c_cast_expr): Update call to groktypename.  Handle expressions
22625         included in type name.
22626         (build_modify_expr): Handle modifying a C_MAYBE_CONST_EXPR.  Fold
22627         lhs inside possible SAVE_EXPR.  Fold RHS before assignment.
22628         Update calls to convert_for_assignment.
22629         (convert_for_assignment): Take new parameter
22630         null_pointer_constant.  Do not strip nops or call
22631         decl_constant_value_for_broken_optimization.  Set
22632         in_late_binary_op for conversions to boolean.
22633         (store_init_value): Update call to digest_init.
22634         (digest_init): Take new parameter null_pointer_constant.  Do not
22635         call decl_constant_value_for_broken_optimization.  pedwarn for
22636         initializers not constant expressions.  Update calls to
22637         convert_for_assignment.
22638         (constructor_nonconst): New.
22639         (struct constructor_stack): Add nonconst element.
22640         (really_start_incremental_init, push_init_level, pop_init_level):
22641         Handle constructor_nonconst and nonconst element.
22642         (set_init_index): Call constant_expression_warning for array
22643         designators.
22644         (output_init_element): Fold value.  Set constructor_nonconst as
22645         applicable.  pedwarn for initializers not constant expressions.
22646         Update call to digest_init.  Call constant_expression_warning
22647         where constant initializers are required.
22648         (process_init_element): Use c_save_expr.
22649         (c_finish_goto_ptr): Fold expression.
22650         (c_finish_return): Fold return value.  Update call to
22651         convert_for_assignment.
22652         (c_start_case): Fold switch expression.
22653         (c_process_expr_stmt): Fold expression.
22654         (c_finish_stmt_expr): Create C_MAYBE_CONST_EXPR as needed to
22655         ensure statement expression is not evaluated in constant expression.
22656         (build_binary_op): Track whether results are integer constant
22657         expressions or may occur in such, disable folding and wrap results
22658         as applicable.  Fold operands for -Wsign-compare warnings unless
22659         in_late_binary_op.
22660         (c_objc_common_truthvalue_conversion): Handle results folded to
22661         integer constants that are not integer constant expressions.
22662         * doc/extend.texi: Document when typeof operands are evaluated,
22663         that condition of __builtin_choose_expr is an integer constant
22664         expression, and more about use of __builtin_constant_p in
22665         initializers.
22666
22667 2009-03-29  Richard Guenther  <rguenther@suse.de>
22668
22669         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Properly
22670         propagate addresses of array references.
22671
22672 2009-03-29  Steven Bosscher  <steven@gcc.gnu.org>
22673
22674         * regmove.c (perhaps_ends_bb_p): Remove.
22675         (optimize_reg_copy_1): Don't call perhaps_ends_bb_p.  Get basic block
22676         from INSN and check that the main loop stays within that basic block.
22677         (optimize_reg_copy_1, optimize_reg_copy_3, fixup_match_2): Likewise.
22678         (regmove_forward_pass): Split out from regmove_optimize.  Use
22679         FOR_EACH_BB and FOR_BB_INSNS instead of traversing the insns stream.
22680         (regmove_backward_pass): Split out from regmove_optimize.  Use
22681         FOR_EACH_BB_REVERSE and FOR_BB_INSNS_REVERS_SAFE.
22682         (regmove_optimize): Simplify.
22683
22684 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
22685
22686         PR target/39545
22687         * config/i386/i386.c (classify_argument): Ignore flexible array
22688         member in struct and warn ABI change.
22689
22690 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
22691
22692         * config/i386/i386-protos.h (ix86_agi_dependent): New.
22693
22694         * config/i386/i386.c (ix86_agi_dependent): Rewrite.
22695         (ix86_adjust_cost): Updated.
22696
22697 2009-03-29  Jan Hubicka  <jh@suse.cz>
22698
22699         PR middle-end/28850
22700         * tree-pass.h (pass_cleanup_eh): New function.
22701         (remove_unreachable_regions): Break code handling RTL
22702         to rtl_remove_unreachable_regions; remove ERT_MUST_NOT_THROW
22703         that can not be reached by runtime.
22704         (can_be_reached_by_runtime): New function.
22705         (label_to_region_map): New function.
22706         (num_eh_regions): New function.
22707         (rtl_remove_unreachable_regions): New function.
22708         (convert_from_eh_region_ranges): Call rtl_remove_unreachable_regions.
22709         (remove_eh_region): New function.
22710         * except.h: Include sbitmap and vecprim.
22711         (remove_eh_region, remove_unreachable_regions, label_to_region_map,
22712         num_eh_regions): Declare.
22713         * passes.c (init_optimization_passes): Schedule cleanup_eh.
22714         * Makefile.in (EXCEPT_H): New; replace all uses of except.h by it.
22715         * tree-eh.c (tree_remove_unreachable_handlers): New function.
22716         (tree_empty_eh_handler_p): New function.
22717         (cleanup_empty_eh): New function.
22718         (cleanup_eh): New function.
22719         (pass_cleanup_eh): New function.
22720
22721 2009-03-29  Jan Hubicka  <jh@suse.cz>
22722
22723         * except.c (verify_eh_tree): Fix handling of fun!=cfun; be ready
22724         for removed regions.
22725
22726 2009-03-29  Jan Hubicka  <jh@suse.cz>
22727
22728         * except.c (dump_eh_tree): Dump all datastructures.
22729
22730 2009-03-29  Jan Hubicka  <jh@suse.cz>
22731
22732         * except.c (duplicate_eh_regions_0): Handle AKA bitmap.
22733         (duplicate_eh_regions_1): Likewise.
22734         (duplicate_eh_regions): Likewise; cleanup code gorwing the region
22735         vector; call EH verification.
22736         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
22737         Be ready for region being removed.
22738
22739 2009-03-29  Jan Hubicka  <jh@suse.cz>
22740
22741         * bitmap.c (bitmap_last_set_bit): New function.
22742         * bitmap.h (bitmap_last_set_bit): Declare.
22743
22744 2009-03-29  David Ayers  <ayers@fsfe.org>
22745
22746         PR objc/27377
22747         * c-typeck.c (build_conditional_expr): Emit ObjC warnings
22748         by calling objc_compare_types and surpress warnings about
22749         incompatible C pointers that are compatible ObjC pointers.
22750
22751 2009-03-29  Adam Nemet  <anemet@caviumnetworks.com>
22752
22753         * cgraphbuild.c (build_cgraph_edges, rebuild_cgraph_edges): Don't
22754         call initialize_inline_failed.
22755         (initialize_inline_failed): Move it from here ...
22756         * cgraph.c (initialize_inline_failed): ... to here.
22757         (cgraph_create_edge): Call initialize_inline_failed rather than
22758         setting inline_failed directly.
22759
22760 2009-03-29  Ben Elliston  <bje@au.ibm.com>
22761
22762         PR target/32542
22763         * sysv4.opt (msdata): Improve comment.
22764         * linux64.h (ASM_SPEC32): Do not pass -memb when -msdata is given.
22765         * sysv4.h (SVR4_ASM_SPEC): Likewise.
22766
22767 2009-03-29  Ben Elliston  <bje@au.ibm.com>
22768
22769         PR target/30451
22770         * config/rs6000/rs6000.md (*movti_ppc64): Correct the order of
22771         load and store attributes.
22772
22773 2009-03-29  Ben Elliston  <bje@au.ibm.com>
22774
22775         * config/i386/i386.c (enum ix86_builtins): Add IX86_BUILTIN_HUGE_VALQ.
22776         (ix86_init_builtins): Add built-in function __builtin_huge_valq.
22777         (ix86_expand_builtin): Handle IX86_BUILTIN_HUGE_VALQ.
22778         * doc/extend.texi (X86 Built-in Functions): Add index entries for
22779         __builtin_infq and __builtin_huge_valq.
22780
22781 2009-03-28  Anatoly Sokolov  <aesok@post.ru>
22782
22783         * config/avr/avr.c (avr_mcu_t): Add atmega8c1, atmega16c1 and
22784         atmega8m1 devices.
22785         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
22786         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.)
22787
22788 2009-03-28  Xinliang David Li  <davidxl@google.com>
22789
22790         * tree-ssa-ccp.c (ccp_finalize): Add dbg_count support.
22791         (do_dbg_cnt): New function.
22792
22793 2009-03-28  Jan Hubicka  <jh@suse.cz>
22794
22795         Merge from pretty-ipa:
22796
22797         2009-03-27  Jan Hubicka  <jh@suse.cz>
22798
22799         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
22800         * tree-pass.h (function_called_by_processed_nodes_p): Declare.
22801         * passes.c (function_called_by_processed_nodes_p): New.
22802         * ipa-pure-const.c (check_call): Fix handling of operands.
22803         (analyze_function): Dump debug output for skipped bodies.
22804         (local_pure_const): Use function_called_by_processed_nodes_p.
22805         * dwarf2out.c (reference_to_unused): Use output.
22806         * passes.c (do_per_function_toporder): Likewise.
22807
22808         2008-11-12  Jan Hubicka  <jh@suse.cz>
22809
22810         * tree-pass.h (pass_fixup_cfg, pass_local_pure_const): Declare.
22811         * ipa-pure-const.c (funct_state_d): Add can throw field; make
22812         state_set_in_source enum
22813         (check_decl): Ignore memory tags; do not set fake looping flags;
22814         dump diagnostics.
22815         (check_operand, check_tree, check_rhs_var, check_lhs_var,
22816         get_asm_expr_operands, scan_function_op, scan_function_stmt): Remove.
22817         (check_call, analyze_function): Rewrite.
22818         (check_stmt): New.
22819         (add_new_function): Update call of analyze_function.
22820         (generate_summary): Add call of analyze_function.
22821         (propagate): Propagate can_throw; handle state_set_in_source correctly.
22822         (local_pure_const): New function.
22823         (pass_local_pure_const): New pass.
22824         * ipa-inline.c (inline_transform): Set after_inlining.
22825         * tree-eh.c (stmt_can_throw_external): New.
22826         * tree-optimize.c (execute_fixup_cfg): Do not set after_inlining;
22827         work with aliasing built.
22828         * tree-flow.h (stmt_can_throw_external): New.
22829         * passes.c (init_optimization_passes): Schedule fixup_cfg pass early;
22830         and local pure/const pass in early and late optimization queue.
22831
22832 2009-03-28  Martin Jambor  <mjambor@suse.cz>
22833
22834         * fold-const.c (get_pointer_modulus_and_residue): New parameter
22835         allow_func_align.
22836         (fold_binary): Allow function decl aligment consideration is the
22837         second argument is integer constant one.
22838         * tree-ssa-forwprop.c (simplify_bitwise_and): New function.
22839         (tree_ssa_forward_propagate_single_use_vars): Handle assing statements
22840         with BIT_AND_EXPR on the RHS by calling simplify_bitwise_and.
22841
22842 2009-03-28  Jan Hubicka  <jh@suse.cz>
22843
22844         * dwarf2out.c (dwarf2out_begin_prologue): Use crtl->nothrow
22845         * tree-eh.c (stmt_could_throw_p): Remove check for WEAK decls.
22846         * function.h (rtl_data): Add nothrow flag.
22847         * except.c (set_nothrow_function_flags): Use crtl->nothrow;
22848         set DECL_NOTHROW for AVAILABLE functions.
22849
22850 2009-03-28  Jakub Jelinek  <jakub@redhat.com>
22851
22852         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): If macro
22853         following vector keyword has expansion starting with pixel or bool
22854         keyword, expand vector to __vector and pixel or bool to __pixel or
22855         __bool.
22856
22857         PR c++/39554
22858         * opts.c (warning_disallowed_functions, warn_disallowed_functions,
22859         warn_if_disallowed_function_p): Removed.
22860         (common_handle_option): Don't handle OPT_Wdisallowed_function_list_.
22861         * c-parser.c (c_parser_postfix_expression_after_primary): Don't call
22862         warning_if_disallowed_function_p.
22863         * flags.h (warn_if_disallowed_function_p,
22864         warn_disallowed_functions): Removed.
22865         * common.opt (Wdisallowed-function-list=): Removed.
22866         * doc/invoke.texi (-Wdisallowed-function-list=): Removed.
22867
22868 2009-03-28  Richard Guenther  <rguenther@suse.de>
22869
22870         PR tree-optimization/38723
22871         * tree-ssa-pre.c (compute_avail): Add all default definitions to
22872         the entry block.
22873
22874 2009-03-28  Jan Hubicka  <jh@suse.cz>
22875
22876         * tree-ssa-structalias.c (ipa_pta_execute): Fix bogus node->analyzed
22877         test introduced by my previous patch.
22878
22879 2009-03-28  Richard Guenther  <rguenther@suse.de>
22880
22881         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not leave
22882         the PHIs value undefined.
22883
22884 2009-03-28  Jan Hubicka  <jh@suse.cz>
22885
22886         * tree-pass.h (pass_fixup_cfg): New pass.
22887         * ipa-inline.c (inline_transform): Set
22888         always_inline_functions_inlined/after_inlining.
22889         * tree-optimize.c (execute_fixup_cfg): Do not set them here.
22890         (pass_fixup_cfg): New pass.
22891         * passes.c (init_optimization_passes): Add fixup_cfg.
22892
22893 2009-03-28  Richard Guenther  <rguenther@suse.de>
22894
22895         PR tree-optimization/38458
22896         * tree-ssa-copy.c (copy_prop_visit_phi_node): For the first
22897         argument use the arguments copy-of value.
22898
22899 2009-03-28  Richard Guenther  <rguenther@suse.de>
22900
22901         PR tree-optimization/38180
22902         * tree-ssa-ccp.c (get_default_value): Simplify.
22903         (likely_value): Likewise.
22904         (surely_varying_stmt_p): Properly handle VOP case.
22905         (ccp_initialize): Likewise.
22906         (ccp_fold): Handle propagating through *&.
22907         (fold_const_aggregate_ref): Also handle decls.
22908
22909 2009-03-28  Jan Hubicka  <jh@suse.cz>
22910
22911         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
22912         * cgraph.h (cgraph_node): Likewise.
22913         * cgraphunit.c (cgraph_process_new_functions): Set process flag.
22914         (cgraph_reset_node): Use process flag.
22915         (cgraph_mark_functions_to_output): Likewise.
22916         (cgraph_expand_function): Likewise.
22917         (cgraph_expand_all_functions): Likewise.
22918         (cgraph_output_in_order): Likewise.
22919         * dwarf2out.c (reference_to_unused): Likewise.
22920         * passes.c do_per_function_toporder): Likewise.
22921
22922 2009-03-28  Jan Hubicka  <jh@suse.cz>
22923
22924         Bring from lto-branch:
22925
22926         2008-09-03  Doug Kwan  <dougkwan@google.com>
22927
22928         * cgraphbuild.c (initialize_inline_failed): Use cgraph_inline_failed_t
22929         enums instead of reason strings.
22930         * cgraph.c (cgraph_create_edge): Same.
22931         (cgraph_inline_failed_string): New function.
22932         * cgraph.h (cgraph_inline_failed_t): New enum type.
22933         (cgraph_inline_failed_string): New prototype.
22934         (struct cgraph_edge): Change type of INLINED_FAILED from constant
22935         char pointer to cgraph_inline_failed_t.
22936         (cgraph_inline_p): Adjust prototype to use cgraph_inline_failed_t.
22937         (cgraph_default_inline_p): Ditto.
22938         * cgraphunit.c (cgraph_inline_p): Change type of parameter REASON
22939         to cgraph_inline_failed_t pointer.
22940         * cif-code.def: New file.
22941         * ipa-inline.c (cgraph_mark_inline_edge): Use an enum instead of a
22942         reason string.
22943         (cgraph_check_inline_limits): Change type of REASON to pointer to
22944         cgraph_inline_failed_t.  Replace reason strings with enums.
22945         (cgraph_default_inline_p): Ditto.
22946         (cgraph_recursive_inlining_p): Ditto.
22947         (update_caller_keys): Change type of FAILED_REASON to
22948         cgraph_inline_failed_t.
22949         (cgraph_set_inline_failed): Change type of REASON to pointer to
22950         cgraph_inline_failed_t.  Call cgraph_inline_failed_string to
22951         convert enums to strings for text output.
22952         (cgraph_decide_inlining_of_small_function): Change FAILED_REASON
22953         to be of type cgraph_inline_failed_t.  Replace reason strings with
22954         enums.  Call cgraph_inline_failed_string to covert enums
22955         to strings for text output.
22956         (cgraph_decide_inlining): Replace reason strings with enums.
22957         (cgraph_decide_inlining_incrementally): Change type of FAILED_REASON
22958         to cgraph_inline_failed_t type.  Call cgraph_inline_failed_string
22959         for text output.
22960         * tree-inline.c (expand_call_inline): Change type of REASON
22961         to cgraph_inline_failed_t.  Replace reason strings with enums.
22962         Call cgraph_inline_failed_string for text output.
22963         * Makefile.in (CGRAPH_H): Add cif-code.def to dependencies.
22964         (cgraph.o): Ditto.
22965
22966 2009-03-28  Jan Hubicka  <jh@suse.cz>
22967
22968         * cgraph.c (cgraph_node, cgraph_remove_node, dump_cgraph_node,
22969         cgraph_clone_node): Remove master clone handling.
22970         (cgraph_is_master_clone, cgraph_master_clone): Remove.
22971         * cgraph.h (master_clone): Remove.
22972         (cgraph_is_master_clone, cgraph_master_clone): Remove.
22973         * ipa-type-escape.c (type_escape_execute): Remove use of master clone.
22974         (tree-ssa-structalias.c (ipa_pta_execute): Likewise.
22975
22976 2009-03-28  Jan Hubicka  <jh@suse.cz>
22977
22978         * cgraph.c (cgraph_function_body_availability): Functions declared
22979         inline are always safe to assume that it is not going to be replaced.
22980
22981 2009-03-28  Richard Guenther  <rguenther@suse.de>
22982
22983         PR tree-optimization/38513
22984         * tree-ssa-pre.c (eliminate): Remove redundant stores.
22985         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
22986         EXC_PTR_EXPR and FILTER_EXPR.
22987         (get_ref_from_reference_ops): Likewise.
22988
22989 2009-03-28  Richard Guenther  <rguenther@suse.de>
22990
22991         PR tree-optimization/38968
22992         * tree-vect-analyze.c (vect_compute_data_ref_alignment):
22993         Use FLOOR_MOD_EXPR to compute misalignment.
22994
22995 2009-03-28  Richard Guenther  <rguenther@suse.de>
22996
22997         PR tree-optimization/37795
22998         * tree.h (combine_comparisons): Declare.
22999         * fold-const.c (combine_comparisons): Export.
23000         * tree-ssa-ifcombine.c (ifcombine_ifandif): Optimize two successive
23001         comparisons.
23002         (ifcombine_iforif): Use combine_comparisons.
23003
23004 2009-03-28  Jan Hubicka  <jh@suse.cz>
23005
23006         * tree-eh.c (inlinable_call_p): New function.
23007         (make_eh_edges): Use it.
23008         (verify_eh_edges): Use it.
23009         (stmt_can_throw_external, stmt_can_throw_internal): Use it.
23010         * except.c (reachable_next_level): Add inlinable_function argument
23011         (sjlj_find_directly_reachable_regions): Update.
23012         (add_reachable_handler): Do not set saw_any_handlers.
23013         (reachable_next_level): Handle MUST_NOT_THROW more curefully.
23014         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
23015         Add new inlinable call parameter.
23016         (can_throw_internal, can_throw_external): Update.
23017         * except.h (can_throw_internal_1, can_throw_external_1,
23018         foreach_reachable_handler): Update declaration.
23019
23020 2009-03-28  Joseph Myers  <joseph@codesourcery.com>
23021
23022         * config/arm/t-arm-coff, config/h8300/coff.h,
23023         config/i386/i386-aout.h, config/i386/i386-coff.h,
23024         config/libgloss.h, config/m68k/coff.h, config/m68k/m68k-aout.h,
23025         config/pdp11/2bsd.h, config/rs6000/aix41.h,
23026         config/rs6000/aix41.opt, config/rs6000/t-newas, config/sh/coff.h,
23027         fix-header.c, fixproto, gen-protos.c, protoize.c, scan-decls.c,
23028         scan-types.sh, scan.c, scan.h, sort-protos, sys-protos.h,
23029         sys-types.h: Remove.
23030         * Makefile.in: Remove protoize and fixproto support and references
23031         in comments.
23032         (SYSCALLS.c.X-warn, TARGET_GETGROUPS_T, STMP_FIXPROTO,
23033         PROTOIZE_INSTALL_NAME, UNPROTOIZE_INSTALL_NAME, FIXPROTO_DEFINES):
23034         Remove.
23035         (ALL_HOST_OBJS): Remove $(PROTO_OBJS).
23036         (MOSTLYCLEANFILES): Remove protoize$(exeext) and
23037         unprotoize$(exeext).
23038         (rest.encap): Don't depend on $(STMP_FIXPROTO)
23039         (.PHONY): Don't depend on proto.
23040         (libgcc-support): Don't depend on $(STMP_FIXPROTO).
23041         (proto, PROTO_OBJS, protoize$(exeext), unprotoize$(exeext),
23042         protoize.o, unprotoize.o, SYSCALLS.c.X, test-protoize-simple,
23043         deduced.h, GEN_PROTOS_OBJS, build/gen-protos$(build_exeext),
23044         build/gen-protos.o, build/scan.o, xsys-protos.h,
23045         build/fix-header$(build_exeext), build/fix-header.o,
23046         build/scan-decls.o, fixhdr.ready, stmp-fixproto,
23047         stmp-install-fixproto): Remove.
23048         (mostlyclean): Don't remove xsys-protos.hT, SYSCALLS.c.X,
23049         SYSCALLS.c or fixproto files.
23050         (install-common): Don't install protoize.
23051         (install-headers-tar, install-headers-cpio, install-headers-cp):
23052         Don't depend on $(STMP_FIXPROTO).
23053         (install-mkheaders): Don't depend on $(STMP_FIXPROTO).  Don't
23054         install fixproto files or write out fixproto settings.
23055         (uninstall): Don't uninstall protoize.
23056         * config.gcc (use_fixproto): Remove.
23057         (arm-*-coff*, armel-*-coff*, h8300-*-*, i[34567]86-*-aout*,
23058         i[34567]86-*-coff*, m68k-*-aout*, m68k-*-coff*, pdp11-*-bsd,
23059         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*, sh-*-*): Remove.
23060         * config/m32r/t-linux (STMP_FIXPROTO): Remove.
23061         * config/m68k/m68k.c: Remove M68K_TARGET_COFF-conditional code.
23062         * config/mips/t-iris (FIXPROTO_DEFINES): Remove.
23063         * config/pa/t-pa-hpux (FIXPROTO_DEFINES): Remove.
23064         * config/pdp11/pdp11.c: Remove TWO_BSD-conditional code.
23065         * config/t-svr4 (FIXPROTO_DEFINES): Remove.
23066         * config/t-vxworks (STMP_FIXPROTO): Remove.
23067         * configure.ac (AC_TYPE_GETGROUPS, TARGET_GETGROUPS_T,
23068         STMP_FIXPROTO): Remove.
23069         * config.in, configure: Regenerate.
23070         * crtstuff.c (gid_t, uid_t): Don't undefine.
23071         * doc/install.texi: Change m68k-coff to m68k-elf in example.
23072         (arm-*-coff, arm-*-aout: Remove target entries.
23073         (*-ibm-aix*): Mention removal of support for AIX 4.2 and older.
23074         Remove mention of AIX 4.1.
23075         (m68k-*-*): Remove mention of m68k-*-aout and m68k-*-coff*.
23076         * doc/invoke.texi (Running Protoize): Remove.
23077         * doc/trouble.texi (Actual Bugs): Remove mention of fixproto.
23078         (Protoize Caveats): Remove.
23079         * tsystem.h: Update comments on headers assumed to exist.
23080
23081 2009-03-27  Vladimir Makarov  <vmakarov@redhat.com>
23082
23083         * genautomata.c: Add a new year to the copyright.  Add a new
23084         reference.
23085         (struct insn_reserv_decl): Add comments for member bypass_list.
23086         (find_bypass): Remove.
23087         (insert_bypass): New.
23088         (process_decls): Use insert_bypass.
23089         (output_internal_insn_latency_func): Output all bypasses with the
23090         same input insn in one switch case.
23091
23092         * rtl.def (define_bypass): Describe bypass choice.
23093         * doc/md.texi (define_bypass): Ditto.
23094
23095 2009-03-27  Richard Guenther  <rguenther@suse.de>
23096
23097         * gimplify.c (mark_addressable): Export.
23098         * tree-flow.h (mark_addressable): Declare.
23099         * tree-ssa-loop-manip.c (create_iv): Mark the base addressable.
23100         * tree-ssa.c (verify_phi_args): Verify that address taken
23101         variables have TREE_ADDRESSABLE set.
23102
23103 2009-03-27  Richard Guenther  <rguenther@suse.de>
23104
23105         * fold-const.c (build_fold_addr_expr_with_type_1): Rename back to ...
23106         (build_fold_addr_expr_with_type): ... this.  Remove in_fold handling.
23107         Do not mark decls TREE_ADDRESSABLE.
23108         (build_fold_addr_expr): Adjust.
23109         (fold_addr_expr): Remove.
23110         (fold_unary): Use build_fold_addr_expr.
23111         (fold_comparison): Likewise.
23112         (split_address_to_core_and_offset): Likewise.
23113         * coverage.c (tree_coverage_counter_addr): Mark the array decl
23114         TREE_ADDRESSABLE.
23115         * gimplify.c (mark_addressable): Do not exclude RESULT_DECLs.
23116         (gimplify_modify_expr_to_memcpy): Mark source and destination
23117         addressable.
23118         * omp-low.c (create_omp_child_function): Mark the object decl
23119         TREE_ADDRESSABLE.
23120         (lower_rec_input_clauses): Mark the var we take the address of
23121         TREE_ADDRESSABLE.
23122         (lower_omp_taskreg): Mark the sender decl TREE_ADDRESSABLE.
23123
23124 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
23125
23126         PR middle-end/39315
23127         * cfgexpand.c (expand_one_stack_var_at): Change alignment
23128         limit to MAX_SUPPORTED_STACK_ALIGNMENT.
23129
23130 2009-03-27  Richard Guenther  <rguenther@suse.de>
23131
23132         PR tree-optimization/39120
23133         * tree-ssa-structalias.c (handle_rhs_call): Fill out return
23134         constraints.
23135         (handle_lhs_call): Process return constraints.  Add escape
23136         constraints if necessary.
23137         (handle_const_call): Fill out return constraints.  Make nested
23138         case more precise.  Avoid consttmp if possible.
23139         (handle_pure_call): Fill out return constraints.  Avoid
23140         callused if possible.
23141         (find_func_aliases): Simplify call handling.
23142
23143 2009-03-27  Richard Guenther  <rguenther@suse.de>
23144
23145         PR tree-optimization/39120
23146         * tree-ssa-structalias.c (do_sd_constraint): Do not use CALLUSED
23147         as a representative.
23148         (solve_graph): Do propagate CALLUSED.
23149         (handle_pure_call): Use a scalar constraint from CALLUSED for
23150         the return value.
23151         (find_what_p_points_to): CALLUSED shall not appear in poins-to
23152         solutions.
23153
23154 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
23155
23156         PR c/39323
23157         * c-common.c (handle_aligned_attribute): Properly check alignment
23158         overflow.  Use (1U << i) instead of (1 << i).
23159
23160         * emit-rtl.c (get_mem_align_offset): Use "unsigned int" for align.
23161
23162         * expr.h (get_mem_align_offset): Updated.
23163
23164         * tree.h (tree_decl_common): Change align to "unsigned int" and
23165         move it before pointer_alias_set.
23166
23167 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
23168             Jakub Jelinek  <jakub@redhat.com>
23169
23170         PR target/38034
23171         * config/ia64/sync.md (cmpxchg_rel_<mode>): Replace input
23172         gr_register_operand with gr_reg_or_0_operand.
23173         (cmpxchg_rel_di): Likewise.
23174         (sync_lock_test_and_set<mode>): Likewise.
23175
23176 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
23177
23178         * jump.c (rtx_renumbered_equal_p): Use subreg_get_info.
23179         (true_regnum): Likewise.
23180
23181         * rtlanal.c (subreg_info): Moved to ...
23182         * rtl.h (subreg_info): Here.  New.
23183         (subreg_get_info): New.
23184
23185         * rtlanal.c (subreg_get_info): Make it extern.
23186
23187 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
23188
23189         PR target/39472
23190         * config/i386/i386.c (ix86_abi): New.
23191         (override_options): Handle -mabi=.
23192         (ix86_function_arg_regno_p): Replace DEFAULT_ABI with ix86_abi.
23193         (ix86_call_abi_override): Likewise.
23194         (init_cumulative_args): Likewise.
23195         (function_arg_advance): Likewise.
23196         (function_arg_64): Likewise.
23197         (function_arg): Likewise.
23198         (ix86_pass_by_reference): Likewise.
23199         (ix86_function_value_regno_p): Likewise.
23200         (ix86_build_builtin_va_list_abi): Likewise.
23201         (setup_incoming_varargs_64): Likewise.
23202         (is_va_list_char_pointer): Likewise.
23203         (ix86_init_machine_status): Likewise.
23204         (ix86_reg_parm_stack_space): Use enum calling_abi on call_abi.
23205         (ix86_function_type_abi): Return enum calling_abi.  Rewrite
23206         for 64bit.  Replace DEFAULT_ABI with ix86_abi.
23207         (ix86_function_abi): Make it static and return enum calling_abi.
23208         (ix86_cfun_abi): Return enum calling_abi.  Replace DEFAULT_ABI
23209         with ix86_abi.
23210         (ix86_fn_abi_va_list): Updated.
23211
23212         * config/i386/i386.h (ix86_abi): New.
23213         (STACK_BOUNDARY): Replace DEFAULT_ABI with ix86_abi.
23214         (CONDITIONAL_REGISTER_USAGE): Likewise.
23215         (CUMULATIVE_ARGS): Change call_abi type to enum calling_abi.
23216         (machine_function): Likewise.
23217
23218         * config/i386/i386.md (untyped_call): Replace DEFAULT_ABI
23219         with ix86_abi.
23220         * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Likewise.
23221         (STACK_BOUNDARY): Likewise.
23222         * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Likewise.
23223
23224         * config/i386/i386.opt (mabi=): New.
23225
23226         * config/i386/i386-protos.h (ix86_cfun_abi): Changed to
23227         return enum calling_abi.
23228         (ix86_function_type_abi): Likewise.
23229         (ix86_function_abi): Removed.
23230
23231         * doc/invoke.texi: Document -mabi= option for x86.
23232
23233 2009-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
23234
23235         * builtins.c (real_dconstp): Delete.
23236         (fold_builtin_logarithm): Remove inaccurate log(e) special case.
23237
23238 2009-03-27  Dodji Seketeli  <dodji@redhat.com>
23239             Jakub Jelinek  <jakub@redhat.com>
23240
23241         PR debug/37959
23242         * dwarf2out.c (dwarf_attr_name): Handle DW_AT_explicit attribute.
23243         (gen_subprogram_die): When a function is explicit, generate the
23244         DW_AT_explicit attribute.
23245         * langhooks.h (struct lang_hooks_for_decls): Add
23246         function_decl_explicit_p langhook.
23247         * langhooks-def.h (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P): Define.
23248         (LANG_HOOKS_DECLS): Add LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P.
23249
23250 2009-03-27  Jakub Jelinek  <jakub@redhat.com>
23251
23252         * builtins.c (fold_builtin_memory_op): Optimize memmove
23253         into memcpy if we can prove source and destination don't overlap.
23254
23255         * tree-inline.c: Include gt-tree-inline.h.
23256         (clone_fn_id_num): New variable.
23257         (clone_function_name): New function.
23258         (tree_function_versioning): Use it.
23259         * Makefile.in (GTFILES): Add tree-inline.c.
23260
23261 2009-03-27  Mark Mitchell  <mark@codesourcery.com>
23262
23263         * BASE-VER: Change to 4.5.0.
23264
23265 2009-03-27  Xinliang David Li  <davidxl@google.com>
23266
23267         PR tree-optimization/39557
23268         * tree-ssa.c (warn_uninitialized_vars): free postdom info.
23269
23270 2009-03-27  Xinliang David Li  <davidxl@google.com>
23271
23272         PR tree-optimization/39548
23273         * tree-ssa-copy.c (copy_prop_visit_phi_node): Add copy
23274         candidate check.
23275
23276 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
23277
23278         * c-common.c (pointer_int_sum): Use %wd on return from
23279         tree_low_cst.
23280
23281 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
23282
23283         * c-common.c (pointer_int_sum): Use HOST_WIDE_INT_PRINT_DEC
23284         on return from tree_low_cst.
23285
23286 2009-03-27  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23287
23288         PR c++/36799
23289         * ginclude/stdarg.h (va_copy): Define also for
23290         __GXX_EXPERIMENTAL_CXX0X__.
23291
23292 2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23293
23294         PR c++/35652
23295         * builtins.h (c_strlen): Do not warn here.
23296         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
23297         * c-common.c (pointer_int_sum): Take an explicit location.
23298         Warn about offsets out of bounds.
23299         * c-common.h (pointer_int_sum): Adjust declaration.
23300
23301 2009-03-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23302
23303         * doc/invoke.texi (i386 and x86-64 Windows Options): Fix texinfo
23304         markup glitch.
23305
23306 2009-03-26  Jakub Jelinek  <jakub@redhat.com>
23307
23308         PR c++/39554
23309         * opts.c (warn_if_disallowed_function_p): Don't assume
23310         get_callee_fndecl must return non-NULL.
23311
23312 2009-03-26  Vladimir Makarov  <vmakarov@redhat.com>
23313
23314         PR rtl-optimization/39522
23315         * reload1.c (reload_as_needed): Invalidate reg_last_reload_reg too
23316         when reg_reloaded_valid is set.
23317
23318 2009-03-26  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
23319
23320         * config/spu/divv2df3.c: New file.
23321         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add it.
23322         (DPBIT_FUNCS): Filter out _div_df.
23323
23324 2009-03-26  Bernd Schmidt  <bernd.schmidt@analog.com>
23325
23326         * config/bfin/bfin.c (bfin_optimize_loop): If the LSETUP goes before
23327         a jump insn, count that jump in the distance to the loop start.
23328
23329 2009-03-25  Kaz Kojima  <kkojima@gcc.gnu.org>
23330
23331         PR target/39523
23332         * config/sh/sh.c (calc_live_regs): Fix condition for global
23333         registers except PIC_OFFSET_TABLE_REGNUM.
23334
23335 2009-03-25  Kai Tietz  <kai.tietz@onevision.com>
23336
23337         PR/39518
23338         * doc/invoke.texi (-mconsole): New.
23339         (-mcygwin): New.
23340         (-mno-cygwin): New.
23341         (-mdll): New.
23342         (-mnop-fun-dllimport): New.
23343         (-mthread): New.
23344         (-mwin32): New.
23345         (-mwindows): New.
23346         (sub section "i386 and x86-64 Windows Options"): New.
23347
23348 2009-03-25  Ralf Corsépius  <ralf.corsepius@rtems.org>
23349
23350         * config/arm/rtems-elf.h: Remove LINK_GCC_C_SEQUENCE_SPEC.
23351         * config/rs6000/t-rtems: Remove MULTILIB_EXTRA_OPTS.
23352
23353 2009-03-25  Richard Guenther  <rguenther@suse.de>
23354
23355         PR middle-end/39497
23356         * Makefile.in (dfp.o-warn): Use -fno-strict-aliasing instead
23357         of -Wno-error.
23358
23359 2009-03-25  Andrey Belevantsev  <abel@ispras.ru>
23360
23361         * config/ia64/ia64.c (ia64_set_sched_flags): Zero spec_info->mask when
23362         neither of haifa/selective schedulers are working.
23363
23364 2009-03-25  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23365
23366         * doc/invoke.texi (Debugging Options): Fix description of
23367         -fno-merge-debug-strings.
23368
23369 2009-03-24  Hans-Peter Nilsson  <hp@axis.com>
23370
23371         * config/cris/libgcc.ver: New version-script.
23372         * config/cris/t-linux (SHLIB_MAPFILES): Use it.
23373
23374         * configure.ac <GAS features, nop mnemonic>: Add pattern
23375         crisv32-*-* for "nop".
23376         <GAS features, Thread-local storage>: Add item for CRIS and CRIS v32.
23377         * configure: Regenerate.
23378
23379 2009-03-24  Ira Rosen  <irar@il.ibm.com>
23380
23381         PR tree-optimization/39529
23382         * tree-vect-transform.c (vect_create_data_ref_ptr): Call
23383         mark_sym_for_renaming for the tag copied to the new vector
23384         pointer.
23385
23386 2009-03-24  Arthur Loiret  <aloiret@debian.org>
23387
23388         * config.host (alpha*-*-linux*): Use driver-alpha.o and alpha/x-alpha.
23389         * config/alpha/linux.h (host_detect_local_cpu): Declare, add to
23390         EXTRA_SPEC_FUNCTIONS.
23391         (MCPU_MTUNE_NATIVE_SPECS, DRIVER_SELF_SPECS): New macros.
23392         * config/alpha/driver-alpha.c, config/alpha/x-alpha: New.
23393         * doc/invoke.texi (DEC Alpha Options): Document 'native' value for
23394         -march and -mtune options.
23395
23396 2009-03-24  Ralf Corsépius  <ralf.corsepius@rtems.org>
23397
23398         * config/m68k/t-rtems: Add m5329 multilib.
23399
23400 2009-03-24  Dodji Seketeli  <dodji@redhat.com>
23401             Jakub Jelinek  <jakub@redhat.com>
23402
23403         PR debug/39524
23404         * dwarf2out.c (gen_variable_die): Avoid adding duplicate declaration
23405         nodes.
23406
23407 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
23408
23409         PR c/39495
23410         * c-parser.c (c_parser_omp_for_loop): Call c_parser_binary_expression
23411         instead of c_parser_expression_conv, if original_code isn't one of the
23412         4 allowed comparison codes, fail.
23413
23414 2009-03-23  Richard Guenther  <rguenther@suse.de>
23415
23416         * cgraph.h (struct cgraph_node): Reorder fields for 64-bit hosts.
23417         * tree.h (struct tree_type): Likewise.
23418         * reload.h (struct insn_chain): Likewise.
23419         * dwarf2out.c (struct dw_loc_descr_struct): Likewise.
23420         * function.h (struct function): Likewise.
23421         * tree-ssa-structalias.c (struct equiv_class_label): Likewise.
23422
23423 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
23424
23425         PR tree-optimization/39516
23426         * lambda-code.c (perfect_nestify): Fix type of the uboundvar variable.
23427
23428 2009-03-23  Bingfeng Mei  <bmei@broadcom.com>
23429
23430         * config.gcc (need_64bit_hwint): Make clear that need_64bit_hwint
23431         should be set true if BITS_PER_WORD of target is bigger than 32
23432
23433 2009-03-22  Hans-Peter Nilsson  <hp@axis.com>
23434
23435         * config/cris/linux.h (CRIS_LINK_SUBTARGET_SPEC):
23436         Translate -B-options to -rpath-link.  Correct existing
23437         rpath-link and conditionalize on !nostdlib.
23438
23439 2009-03-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23440
23441         * doc/extend.texi (Function Attributes, Variable Attributes):
23442         Fix typos.
23443         * doc/invoke.texi (Debugging Options, Optimize Options)
23444         (i386 and x86-64 Options, MCore Options): Likewise.
23445
23446 2009-03-20  Jakub Jelinek  <jakub@redhat.com>
23447
23448         PR debug/37890
23449         * dwarf2out.c (gen_namespace_die): Add context_die argument and use
23450         it for block local namespace aliases.
23451         (gen_decl_die): Pass context_die to gen_namespace_die.
23452
23453 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
23454
23455         PR c/39495
23456         * c-omp.c (c_finish_omp_for): Allow NE_EXPR with TREE_TYPE (decl)'s
23457         minimum or maximum value.
23458
23459 2009-03-19  Alexandre Oliva  <aoliva@redhat.com>
23460
23461         * reginfo.c (globalize_reg): Recompute derived reg sets.
23462
23463 2009-03-19  Ozkan Sezer  <sezeroz@gmail.com>
23464
23465         PR target/39063
23466         * libgcc2.c (mprotect): Do not use signed arguments for
23467         VirtualProtect, use DWORD arguments.  Also fix the 'may
23468         be used uninitialized' warning for the np variable.
23469
23470 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
23471
23472         PR target/39496
23473         * config/i386/i386.c (ix86_function_regparm): Don't optimize local
23474         functions using regparm calling conventions when not optimizing.
23475         (ix86_function_sseregparm): Similarly for sseregparm calling
23476         conventions.
23477
23478 2009-03-19  Li Feng  <nemokingdom@gmail.com>
23479
23480         PR middle-end/39500
23481         * tree-data-ref.c (analyze_subscript_affine_affine): There is no
23482         dependence if the first conflict is after niter iterations.
23483
23484 2009-03-19  Hans-Peter Nilsson  <hp@axis.com>
23485
23486         PR middle-end/38609
23487         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Force for all
23488         functions with dynamic stack-pointer adjustments.
23489
23490 2009-03-19  Ben Elliston  <bje@au.ibm.com>
23491
23492         * doc/invoke.texi (RS/6000 and PowerPC Options): Fix -msdata-data
23493         option; change to -msdata=data.
23494
23495 2009-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23496
23497         * c.opt: Unify help texts for -Wdeprecated, -Wsystem-headers,
23498         and -fopenmp.
23499
23500 2009-03-18  Eric Botcazou  <ebotcazou@adacore.com>
23501
23502         PR target/35180
23503         * config/sparc/sparc.md (do_builtin_setjmp_setup): Prettify asm output.
23504
23505 2009-03-18  Sandra Loosemore  <sandra@codesourcery.com>
23506
23507         * doc/invoke.texi (Code Gen Options): Expand discussion of
23508         -fno-common.
23509
23510 2009-03-18  Jakub Jelinek  <jakub@redhat.com>
23511
23512         * dse.c (struct group_info): Reorder fields for 64-bit hosts.
23513         * matrix-reorg.c (struct matrix_info): Likewise.
23514         * tree-ssa-loop-ivopts.c (struct ivopts_data): Likewise.
23515         * rtl.h (struct mem_attrs): Likewise.
23516         * df.h (struct df): Likewise.
23517         * tree-data-ref.h (struct data_dependence_relation): Likewise.
23518         * ira-int.h (struct ira_allocno): Likewise.
23519         * df-scan.c (struct df_collection_rec): Likewise.
23520         * ira.c (struct equivalence): Likewise.
23521         * function.c (struct temp_slot): Likewise.
23522         * cfgloop.h (struct loop): Likewise.
23523
23524         PR debug/39485
23525         * function.c (use_register_for_decl): When not optimizing, disregard
23526         register keyword for variables with types containing methods.
23527
23528 2009-03-18  Sebastian Pop  <sebastian.pop@amd.com>
23529
23530         PR middle-end/39447
23531         * graphite.c (exclude_component_ref): Renamed contains_component_ref_p.
23532         (is_simple_operand): Call contains_component_ref_p before calling data
23533         reference analysis that would fail on COMPONENT_REFs.
23534
23535         * tree-vrp.c (search_for_addr_array): Fix formatting.
23536
23537 2009-03-18  Richard Guenther  <rguenther@suse.de>
23538
23539         * tree-vect-transform.c (vect_loop_versioning): Fold the
23540         generated comparisons.
23541         * tree-vectorizer.c (set_prologue_iterations): Likewise.
23542         (slpeel_tree_peel_loop_to_edge): Likewise.
23543
23544 2009-03-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23545
23546         PR middle-end/37805
23547         * opts.c (print_specific_help): In addition to `undocumented',
23548         accept `separate' and `joined' flags if passed alone.  Describe
23549         output by the first matched one of those.
23550         (common_handle_option): Skip over empty strings.
23551         * gcc.c (display_help): Fix help string for `--help='.
23552         * doc/invoke.texi (Option Summary, Overall Options): With
23553         `--help=', classes and qualifiers can both be repeated, but
23554         only the latter can be negated.  One should not pass only
23555         negated qualifiers.  Fix markup and examples.
23556
23557         Revert
23558         2008-10-14  Jakub Jelinek  <jakub@redhat.com>
23559         PR middle-end/37805
23560         * opts.c (common_handle_option): Don't ICE on -fhelp=joined
23561         and -fhelp=separate.
23562
23563 2009-03-17  Jing Yu  <jingyu@google.com>
23564
23565         PR middle-end/39378
23566         * function.h (struct rtl_data): Move is_thunk from here...
23567         (struct function): ...to here.
23568         * cp/method.c (use_thunk): Change is_thunk from crtl to cfun.
23569         * varasm.c (assemble_start_function): Change is_thunk from crtl to
23570         cfun.
23571         * config/alpha/alpha.c (alpha_sa_mask): Change is_thunk from crtl to
23572         cfun.
23573         (alpha_does_function_need_gp, alpha_start_function): Likewise.
23574         (alpha_output_function_end_prologue): Likewise.
23575         (alpha_end_function, alpha_output_mi_thunk_osf): Likewise.
23576         * config/rs6000/rs6000.c (rs6000_ra_ever_killed): Likewise.
23577         (rs6000_output_function_epilogue): Likewise.
23578         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
23579
23580 2009-03-17  Uros Bizjak  <ubizjak@gmail.com>
23581
23582         PR target/39482
23583         * config/i386/i386.md (*truncdfsf_mixed): Avoid combining registers
23584         from different units in a single alternative.
23585         (*truncdfsf_i387): Ditto.
23586         (*truncxfsf2_mixed): Ditto.
23587         (*truncxfdf2_mixed): Ditto.
23588
23589 2009-03-17  Jakub Jelinek  <jakub@redhat.com>
23590
23591         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Allow
23592         non-NAMESPACE_DECL IMPORTED_DECL_ASSOCIATED_DECL.
23593
23594         PR debug/39474
23595         * tree-ssa-live.c (remove_unused_locals): Don't remove local
23596         unused non-artificial variables when not optimizing.
23597
23598         PR debug/39471
23599         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Emit
23600         DW_TAG_imported_module even if decl is IMPORTED_DECL with
23601         NAMESPACE_DECL in its DECL_INITIAL.
23602
23603         PR middle-end/39443
23604         * optabs.c (set_user_assembler_libfunc): New function.
23605         * expr.h (set_user_assembler_libfunc): New prototype.
23606         * c-common.c: Include libfuncs.h.
23607         (set_builtin_user_assembler_name): Call set_user_assembler_libfunc
23608         for memcmp, memset, memcpy, memmove and abort.
23609         * Makefile.in (c-common.o): Depend on libfuncs.h.
23610
23611         PR debug/39412
23612         * dwarf2out.c (gen_inlined_enumeration_type_die,
23613         gen_inlined_structure_type_die, gen_inlined_union_type_die,
23614         gen_tagged_type_instantiation_die): Removed.
23615         (gen_decl_die): For TYPE_DECL_IS_STUB with non-NULL decl_origin
23616         do nothing.
23617
23618 2009-03-17  Janis Johnson  <janis187@us.ibm.com>
23619
23620         PR testsuite/38526
23621         * Makefile.in (site.exp): Rename TEST_GCC_EXEC_PREFIX and comment
23622         its use.
23623         (check-%): Don't set GCC_EXEC_PREFIX when invoking runtest.
23624         (check-parallel-%): Ditto.
23625         (check-consistency): Ditto.
23626
23627 2009-03-17  Kai Tietz  <kai.tietz@onevision.com>
23628
23629         * ipa-struct-reorg.c (create_general_new_stmt): Initialize
23630         local variable rhs by NULL_TREE.
23631
23632 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
23633
23634         PR target/39477
23635         * doc/extend.texi: Correct register behavior for regparm on Intel 386.
23636
23637 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
23638
23639         PR target/39476
23640         * config/i386/i386.c (ix86_function_regparm): Rewrite for 64bit.
23641
23642 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
23643
23644         PR target/39473
23645         * config/i386/i386.c (ix86_expand_call): Check extra clobbers
23646         for ms->sysv ABI calls only in 64bit mode.
23647
23648         * config/i386/i386.md (untyped_call): Support 32bit.
23649
23650 2009-03-16  H.J. Lu  <hongjiu.lu@intel.com>
23651
23652         * doc/extend.texi: Replace x86_65 with x86_64.
23653
23654 2009-03-16  Jakub Jelinek  <jakub@redhat.com>
23655
23656         PR tree-optimization/39455
23657         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Fix types
23658         mismatches for POINTER_TYPE_P (type).
23659         (number_of_iterations_le): Likewise.
23660
23661 2009-03-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
23662
23663         * config/picochip/picochip.c: Removed profiling support.
23664         * config/picochip/picochip.md: Removed profiling instruction.
23665         * config/picochip/picochip.h: Removed profiling builtin.
23666
23667 2009-03-16  Joseph Myers  <joseph@codesourcery.com>
23668
23669         * doc/install.texi (--with-host-libstdcxx): Document.
23670
23671 2009-03-14  Anatoly Sokolov  <aesok@post.ru>
23672
23673         PR target/34299
23674         * config/avr/avr.c (avr_handle_fndecl_attribute): Move code for
23675         generate a warning if the function name does not begin with
23676         "__vector" and the function has either the 'signal' or 'interrupt'
23677         attribute, from here to ...
23678         (avr_declare_function_name): ...here. New function.
23679         * config/avr/avr.h (ASM_DECLARE_FUNCTION_NAME): Redefine.
23680         * config/avr/avr-protos.h (avr_declare_function_name): Declare.
23681
23682 2009-03-14  Jakub Jelinek  <jakub@redhat.com>
23683
23684         PR bootstrap/39454
23685         * cse.c (fold_rtx): Don't modify original const_arg1 when
23686         canonicalizing SHIFT_COUNT_TRUNCATED shift count, do it on a
23687         separate variable instead.
23688         * rtlanal.c (nonzero_bits1) <case ASHIFTRT>: Don't assume anything
23689         from out of range shift counts.
23690         (num_sign_bit_copies1) <case ASHIFTRT, case ASHIFT>: Similarly.
23691
23692 2009-03-13  Catherine Moore  <clm@codesourcery.com>
23693
23694         * config/i386/x-mingw32 (host-mingw32.o): Replace
23695         diagnostic.h with $(DIAGNOSTIC_H).
23696
23697 2009-03-12  Jakub Jelinek  <jakub@redhat.com>
23698
23699         PR target/39431
23700         * config/i386/predicates.md (cmpxchg8b_pic_memory_operand): New
23701         predicate.
23702         * config/i386/sync.md (sync_compare_and_swap<mode>,
23703         sync_compare_and_swap_cc<mode>): For DImode with -m32 -fpic check
23704         if operands[1] is cmpxchg8b_pic_memory_operand, if not force address
23705         into a register.
23706         (sync_double_compare_and_swapdi_pic,
23707         sync_double_compare_and_swap_ccdi_pic): Require operand 1 to be
23708         cmpxchg8b_pic_memory_operand instead of just memory_operand.
23709
23710 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
23711
23712         PR target/39445
23713         * config/i386/i386.c (ix86_expand_push): Don't set memory alignment.
23714
23715 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
23716
23717         PR target/39327
23718         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
23719         (avx_addsubv4df3): Likewise.
23720         (*avx_addsubv4sf3): Likewise.
23721         (sse3_addsubv4sf3): Likewise.
23722
23723 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
23724
23725         PR target/38824
23726         * config/i386/i386.md: Compare REGNO on the new peephole2 patterns.
23727
23728 2009-03-12  Vladimir Makarov  <vmakarov@redhat.com>
23729
23730         PR debug/39432
23731         * ira-int.h (struct allocno): Fix comment for calls_crossed_num.
23732         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
23733         registers for allocnos created from user-defined variables.
23734
23735 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
23736
23737         PR target/39181
23738         * config/spu/spu.c (spu_expand_mov): Handle invalid subregs
23739         of non-integer mode as well.
23740
23741 2009-03-11  Adam Nemet  <anemet@caviumnetworks.com>
23742
23743         * gimplify.c (gimplify_call_expr): Don't set CALL_CANNOT_INLINE_P
23744         for functions for which the parameter types are unknown.
23745
23746 2009-03-11  Jakub Jelinek  <jakub@redhat.com>
23747
23748         PR target/39137
23749         * cfgexpand.c (get_decl_align_unit): Use LOCAL_DECL_ALIGNMENT macro.
23750         * defaults.h (LOCAL_DECL_ALIGNMENT): Define if not yet defined.
23751         * config/i386/i386.h (LOCAL_DECL_ALIGNMENT): Define.
23752         * config/i386/i386.c (ix86_local_alignment): For
23753         -m32 -mpreferred-stack-boundary=2 use 32-bit alignment for
23754         long long variables on the stack to avoid dynamic realignment.
23755         Allow the first argument to be a decl rather than type.
23756         * doc/tm.texi (LOCAL_DECL_ALIGNMENT): Document.
23757
23758 2009-03-11  Nick Clifton  <nickc@redhat.com>
23759
23760         PR target/5362
23761         * config/mcore/mcore.opt: Remove deprecated m4align and m8align
23762         options.
23763         Add description to mno-lsim option.
23764         * config/mcore/mcore.h: Remove comment about deprecated m4align
23765         option.
23766         (TARGET_DEFAULT): Remove deprecated MASK_M8ALIGN.
23767         * doc/invoke.texi: Add description of mno-lsim and
23768         mstack-increment options.
23769
23770         * config/fr30/fr30.opt: Document the -mno-lsim option.
23771         * doc/invoke.texi: Add descriptions of the FR30's -msmall-model
23772         and -mno-lsim options.
23773
23774 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
23775
23776         * fold-const.c (fold_comparison): Only call fold_inf_compare
23777         if the mode supports infinities.
23778
23779 2009-03-11  Jason Merrill  <jason@redhat.com>
23780
23781         PR debug/39086
23782         * tree-nrv.c (tree_nrv): Don't do this optimization if the front
23783         end already did.  Notice GIMPLE_CALL modifications of the result.
23784         Don't copy debug information from an ignored decl or a decl from
23785         another function.
23786
23787 2009-03-10  Richard Guenther  <rguenther@suse.de>
23788             Nathan Froyd  <froydnj@codesourcery.com>
23789
23790         PR middle-end/37850
23791         * libgcc2.c (__mulMODE3): Use explicit assignments to form the result.
23792         (__divMODE3): Likewise.
23793
23794 2009-03-09  Jakub Jelinek  <jakub@redhat.com>
23795
23796         PR tree-optimization/39394
23797         * gimplify.c (gimplify_type_sizes): Gimplify DECL_SIZE and
23798         DECL_SIZE_UNIT of variable length FIELD_DECLs.
23799
23800 2009-03-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
23801
23802         * recog.c (verfiy_changes): Disallow renaming of hard regs in
23803         inline asms for register asm ("") declarations.
23804
23805 2009-03-09  Eric Botcazou  <ebotcazou@adacore.com>
23806
23807         * fold-const.c (fold_unary): Fix comment.
23808
23809 2009-03-07  Jan Hubicka  <jh@suse.cz>
23810
23811         PR target/39361
23812         * tree-inline.c (setup_one_parameter): Do replacement of const
23813         argument by constant in SSA form.
23814
23815 2009-03-07  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
23816
23817         PR middle-end/38028
23818         * function.c (assign_parm_setup_stack): Use STACK_SLOT_ALIGNMENT to
23819         determine alignment passed to assign_stack_local.
23820         (assign_parms_unsplit_complex): Likewise.
23821         * except.c (sjlj_build_landing_pads): Likewise.
23822
23823 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
23824
23825         PR middle-end/39360
23826         * tree-flow.h (add_referenced_var): Return bool instead of void.
23827         * tree-dfa.c (add_referenced_var): Return result of
23828         referenced_var_check_and_insert call.
23829         * tree-inline.c (expand_call_inline): Call add_referenced_var instead
23830         of referenced_var_check_and_insert.
23831
23832         PR debug/39372
23833         * dwarf2out.c (add_abstract_origin_attribute): Return origin_die.
23834         (gen_variable_die): Emit DW_AT_location on abstract static variable's
23835         DIE, don't emit it if abstract origin already has it.
23836         * tree-cfg.c (remove_useless_stmts_bind): GIMPLE_BINDs with any
23837         BLOCK_NONLOCALIZED_VARS in its gimple_bind_block aren't useless.
23838
23839 2009-03-06  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
23840
23841         * genpreds.c (needs_variable): Fix parentheses at variable name
23842         detection.
23843         (write_tm_constrs_h): Indent generated code.
23844
23845 2009-03-06  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
23846
23847         * doc/extend.texi (Function Attributes): Add documentation
23848         for isr attributes.
23849
23850 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
23851
23852         PR debug/39387
23853         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): For IMPORTED_DECL
23854         take locus from its DECL_SOURCE_LOCATION instead of input_location.
23855
23856 2009-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
23857
23858         * config/bfin/bfin.c (bfin_discover_loop): When retrying fails, mark
23859         the loop as bad.
23860
23861 2009-03-05  Jakub Jelinek  <jakub@redhat.com>
23862
23863         PR debug/39379
23864         * tree-cfg.c (remove_useless_stmts_bind): Don't remove GIMPLE_BINDs
23865         with blocks containing IMPORTED_DECLs in BLOCK_VARS.
23866
23867 2009-03-05  Uros Bizjak  <ubizjak@gmail.com>
23868
23869         * config/i386/i386.md (R8_REG, R9_REG): New constants.
23870         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Use named
23871         constants instead of magic numbers.
23872         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
23873         (QI_REG_P): Ditto.
23874         * config/i386/i386.c (x86_64_int_parameter_registers): Ditto.
23875         (x86_64_ms_abi_int_parameter_registers): Ditto.
23876         (x86_64_int_return_registers): Ditto.
23877         (ix86_maybe_switch_abi): Ditto.
23878         (ix86_expand_call): Ditto for clobbered_registers array.
23879         (ix86_hard_regno_mode_ok): Ditto.
23880         (x86_extended_QIreg_mentioned_p): Ditto.
23881
23882 2009-03-05  J"orn Rennecke  <joern.rennecke@arc.com>
23883
23884         PR tree-optimization/39349
23885         * cse.c (cse_insn): Fix loop to stop at VOIDmode.
23886
23887         * combine.c (gen_lowpart_for_combine): Use omode when generating
23888         clobber.
23889
23890 2009-03-04  J"orn Rennecke  <joern.rennecke@arc.com>
23891
23892         PR rtl-optimization/39235
23893         * loop-iv.c (get_simple_loop_desc): Use XCNEW.
23894
23895 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
23896
23897         * graphite.c (nb_reductions_in_loop): Update simple_iv arguments.
23898
23899 2009-03-04  Richard Guenther  <rguenther@suse.de>
23900
23901         PR tree-optimization/39362
23902         * tree-ssa-sccvn.c (visit_use): Stores and copies from SSA_NAMEs
23903         that occur in abnormal PHIs should be varying.
23904
23905 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
23906
23907         * tree-scalar-evolution.c (analyze_scalar_evolution_in_loop):
23908         Extend comments.
23909         (simple_iv):  Take loop as an argument instead of statement.
23910         * tree-scalar-evolution.h (simple_iv): Declaration changed.
23911         * tree-ssa-loop-niter.c (number_of_iterations_exit): Update calls
23912         to simple_iv.
23913         * tree-ssa-loop-ivopts.c (determine_biv_step, find_givs_in_stmt_scev):
23914         Ditto.
23915         * tree-parloops.c (loop_parallel_p, canonicalize_loop_ivs): Ditto.
23916         * matrix-reorg.c (analyze_transpose): Ditto.
23917         * tree-data-ref.c (dr_analyze_innermost): Ditto.
23918         * tree-vect-analyze.c (vect_analyze_data_refs): Ditto.
23919         * tree-predcom.c (ref_at_iteration): Ditto.
23920         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Ditto.
23921
23922 2009-03-04  Richard Guenther  <rguenther@suse.de>
23923
23924         PR tree-optimization/39358
23925         * tree-ssa-structalias.c (do_sd_constraint): Fix check for
23926         escaped_id and callused_id.
23927         (solve_graph): Likewise.
23928
23929 2009-03-04  Richard Guenther  <rguenther@suse.de>
23930
23931         PR tree-optimization/39339
23932         * tree-sra.c (try_instantiate_multiple_fields): Make it
23933         no longer ICE on the above.
23934
23935 2009-03-03  Joseph Myers  <joseph@codesourcery.com>
23936
23937         * emit-rtl.c (adjust_address_1): Reduce offset to a signed value
23938         that fits within Pmode.
23939
23940 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
23941
23942         PR middle-end/10109
23943         * tm.texi (LIBCALL_VALUE): Update description.
23944
23945 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
23946
23947         PR middle-end/34443
23948         * doc/extend.texi (section): Update description.
23949
23950 2009-03-03  H.J. Lu  <hongjiu.lu@intel.com>
23951
23952         PR middle-end/39345
23953         * tree-inline.c (remapped_type): New.
23954         (can_be_nonlocal): Call remapped_type instead of remap_type.
23955
23956 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
23957
23958         PR fortran/39354
23959         * gimplify.c (goa_stabilize_expr): Handle tcc_comparison,
23960         TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR.
23961
23962 2009-03-03  Richard Guenther  <rguenther@suse.de>
23963
23964         PR middle-end/39272
23965         * tree.c (tree_nonartificial_location): New function.
23966         * tree.h (tree_nonartificial_location): Declare.
23967         * builtins.c (expand_builtin_memory_chk): Provide location
23968         of the call location for artificial function pieces.
23969         (maybe_emit_chk_warning): Likewise.
23970         (maybe_emit_sprintf_chk_warning): Likewise.
23971         (maybe_emit_free_warning): Likewise.
23972         * expr.c (expand_expr_real_1): Likewise.
23973
23974 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
23975
23976         PR tree-optimization/39343
23977         * tree-ssa-ccp.c (maybe_fold_offset_to_address): Don't check if
23978         COMPONENT_REF t has ARRAY_TYPE.
23979
23980 2009-03-02  Sebastian Pop  <sebastian.pop@amd.com>
23981
23982         PR middle-end/39335
23983         * tree-parloops.c (canonicalize_loop_ivs): Call fold_convert
23984         when the type precision of the induction variable should be
23985         larger than the type precision of nit.
23986         (gen_parallel_loop): Update use of canonicalize_loop_ivs.
23987         * graphite.c (graphite_loop_normal_form): Same.
23988         * tree-flow.h (canonicalize_loop_ivs): Update declaration.
23989
23990 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
23991
23992         * config/i386/i386.md (ST?_REG, MM?_REG): New constants.
23993         (*call_1_rex64_ms_sysv): Use named constants instead of magic
23994         numbers to describe clobbered registers.
23995         (*call_value_0_rex64_ms_sysv): Ditto.
23996         * config/i386/mmx.md (mmx_emms): Ditto.
23997         (mmx_femms): Ditto.
23998
23999 2009-03-02  Richard Sandiford  <rdsandiford@googlemail.com>
24000
24001         * config/mips/mips.c (mips_mdebug_abi_name): Fix the handling
24002         of ABI_64.
24003
24004 2009-03-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
24005
24006         * config/spu/spu.c (TARGET_SECTION_TYPE_FLAGS): Define.
24007         (spu_section_type_flags): New function.
24008
24009 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
24010
24011         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not copy
24012         reg_class_contents of FLOAT_REGS into a temporary.
24013
24014 2009-03-02  Richard Guenther  <rguenther@suse.de>
24015             Ira Rosen  <irar@il.ibm.com>
24016
24017         PR tree-optimization/39318
24018         * tree-vect-transform.c (vectorizable_call): Transfer the EH region
24019         information to the vectorized statement.
24020
24021 2009-03-01  Uros Bizjak  <ubizjak@gmail.com>
24022
24023         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not shadow "i"
24024         variable.  Use defined names instead of magic constants for REX SSE
24025         registers.
24026
24027 2009-03-01  Richard Guenther  <rguenther@suse.de>
24028
24029         PR tree-optimization/39331
24030         * omp-low.c (lower_send_shared_vars): Do not receive new
24031         values for the reference of DECL_BY_REFERENCE parms or results.
24032
24033 2009-03-01  Jan Hubicka  <jh@suse.cz>
24034
24035         PR debug/39267
24036         * tree.h (BLOCK_NONLOCALIZED_VARS, BLOCK_NUM_NONLOCALIZED_VARS,
24037         BLOCK_NONLOCALIZED_VAR): New macros.
24038         (tree_block): Add nonlocalized_vars.
24039         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die,
24040         gen_decl_die): Add origin argument.  Allow generation of die with
24041         origin at hand only.
24042         (gen_member_die, gen_type_die_with_usage, force_decl_die,
24043         declare_in_namespace, gen_namescpace_die, dwarf2out_decl): Update use
24044         of gen_*.
24045         (gen_block_die): Fix checking for unused blocks.
24046         (process_scope_var): Break out from .... ; work with origins only.
24047         (decls_for_scope) ... here; process nonlocalized list.
24048         (dwarf2out_ignore_block): Look for nonlocalized vars.
24049         * tree-ssa-live.c (remove_unused_scope_block_p): Look for nonlocalized
24050         vars.
24051         (dump_scope_block): Dump them.
24052         * tree-inline.c (remap_decls): Handle nonlocalized vars.
24053         (remap_block): Likewise.
24054         (can_be_nonlocal): New predicate.
24055         (copy_bind_expr, copy_gimple_bind): Update use of remap_block.
24056
24057 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
24058
24059         * configure: Regenerate.
24060
24061 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
24062
24063         * optc-gen.awk: No need to duplicate option flags twice.
24064         Reuse help texts for duplicate options which do not have any.
24065
24066         * gcc.c (display_help): Document --version.
24067
24068         * gcc.c (main): If print_help_list and verbose_flag, ensure
24069         driver output comes before subprocess output.
24070
24071         * optc-gen.awk: Assign all remaining fields to help string,
24072         space-separated, for multi-line help in *.opt.
24073
24074         * doc/invoke.texi (Warning Options): -Wsync-nand is C/C++ only.
24075         -Wno-pedantic-ms-format is for MinGW targets only.
24076
24077         * doc/options.texi (Option file format): Fix bad indentation,
24078         restoring dropped sentence.
24079
24080 2009-02-28  Jan Hubicka  <jh@suse.cz>
24081
24082         * tree-inline.c (tree_function_versioning): Output debug info.
24083
24084 2009-02-28  Jan Hubicka  <jh@suse.cz>
24085
24086         PR debug/39267
24087         * tree-inline.c (setup_one_parameter): Do not copy propagate
24088         arguments when not optimizing.
24089
24090 2009-02-28  H.J. Lu  <hongjiu.lu@intel.com>
24091
24092         PR target/39327
24093         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
24094         (avx_addsubv4df3): Likewise.
24095         (*avx_addsubv4sf3): Likewise.
24096         (sse3_addsubv4sf3): Likewise.
24097         (*avx_addsubv2df3): Likewise.
24098         (sse3_addsubv2df3): Likewise.
24099         (avx_unpckhps256): Correct item selectors.
24100         (avx_unpcklps256): Likewise.
24101         (avx_unpckhpd256): Likewise.
24102         (avx_unpcklpd256): Likewise.
24103
24104 2009-02-28  Jan Hubicka  <jh@suse.cz>
24105
24106         * tree-inline.c (expand_call_inline): Avoid duplicate declarations of
24107         static vars.
24108         (copy_arguments_for_versioning): If var is declared don't declare it.
24109         (tree_function_versioning): First setup substitutions and then copy
24110         args.
24111
24112 2009-02-27  Jan Hubicka  <jh@suse.cz>
24113
24114         PR debug/39267
24115         * cgraph.h (varpool_output_debug_info): Remove.
24116         * cgraphunit.c (varpool_output_debug_info): Remove.
24117         * dwarf2out.c (deferred_locations_struct): New struct
24118         (deferred_locations): New type.
24119         (deferred_locations_list): New static var.
24120         (deffer_location): New function.
24121         (gen_variable_die): Use it.
24122         (decls_for_scope): Output info on local static vars.
24123         (dwarf2out_finish): Process deferred locations.
24124         * varpool.c (varpool_output_debug_info): Remove.
24125
24126 2009-02-27  Jan Hubicka  <jh@suse.cz>
24127
24128         PR debug/39267
24129         * tree.h (TREE_PROTECTED): Fix comment.
24130         (BLOCK_HANDLER_BLOCK): Remove.
24131         (struct tree_block): Remove handler_block add body_block.
24132         (inlined_function_outer_scope_p): New.
24133         (is_body_block): Remove.
24134         * dbxout.c (dbxout_block): Remove BLOCK_HANDLER_BLOCK.
24135         * dwarf2out.c (is_inlined_entry_point): Remove.
24136         (add_high_low_attributes): Use inlined_function_outer_scope_p.
24137         (gen_block_die): Use is_inlined_entry_point check.  Remove body block
24138         code.
24139         * langhooks.h (struct lang_hooks): Remove no_bodu_blocks.
24140         * gimplify.c (gimplify_expr): Gimplify body blocks.
24141         * tree-ssa-live.c (remove_unused_scope_block_p): Allow removing wrapper
24142         block with multiple subblocks.
24143         (dump_scope_block): Prettier output; dump more flags and info.
24144         (dump_scope_blocks): New.
24145         (remove_unused_locals): Use dump_scope_blocks.
24146         * tree-flow.h (dump_scope_blocks): Declare.
24147         * tree-cfg.c (execute_build_cfg): Dump scope blocks.
24148         * stmt.c (is_body_block): Remove.
24149         * tree-inline.c (remap_block): Copy BODY_BLOCK info.
24150         * langhooks-def.h (LANG_HOOKS_NO_BODY_BLOCKS): Remove.
24151
24152 2009-02-27  Sebastian Pop  <sebastian.pop@amd.com>
24153
24154         PR middle-end/39308
24155         * graphite.c (graphite_loop_normal_form): Do not call
24156         number_of_iterations_exit from a gcc_assert.
24157
24158 2009-02-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
24159
24160         * config/s390/s390.c (s390_swap_cmp): Look for conditional
24161         jumps if COND is NULL.
24162         (find_cond_jump): New function.
24163         (s390_z10_optimize_cmp): Handling for reg-reg compares added.
24164         * config/s390/s390.md: Remove z10_cobra attribute value.
24165
24166 2009-02-26  Uros Bizjak  <ubizjak@gmail.com>
24167
24168         * config/alpha/alpha.h (alpha_expand_mov): Return false if
24169         force_const_mem returns NULL_RTX.
24170
24171 2009-02-26  Jan Hubicka  <jh@suse.cz>
24172
24173         PR debug/39267
24174         * cgraph.h (varpool_output_debug_info): Remove.
24175         * cgraphunit.c (varpool_output_debug_info): Remove.
24176         * dwarf2out.c (deferred_locations_struct): New struct
24177         (deferred_locations): New type.
24178         (deferred_locations_list): New static var.
24179         (deffer_location): New function.
24180         (gen_variable_die): Use it.
24181         (decls_for_scope): Output info on local static vars.
24182         (dwarf2out_finish): Process deferred locations.
24183         * varpool.c (varpool_output_debug_info): Remove.
24184
24185 2009-02-25  H.J. Lu  <hongjiu.lu@intel.com>
24186
24187         PR rtl-optimization/39241
24188         * jump.c (rtx_renumbered_equal_p): Remove 2 superfluous calls
24189         to subreg_offset_representable_p.
24190
24191 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
24192
24193         * regmove.c (regmove_optimize): Conform to struct rtl_opt_pass
24194         execute function prototype.  Get f and nregs from max_reg_num
24195         and get_insns.  Remove the first backward pass as it's dead,
24196         guard the forward pass by flag_expensive_optimizations.
24197         (rest_of_handle_regmove): Delete.
24198         (pass_regmove): Replace it with regmove_optimize.
24199
24200 2009-02-25  Martin Jambor  <mjambor@suse.cz>
24201
24202         PR tree-optimization/39259
24203         * tree-inline.c (initialize_cfun): Remove asserts for calls_setjmp and
24204         calls_alloca function flags.
24205         (copy_bb): Set calls_setjmp and alls_alloca function flags if such
24206         calls are detected.
24207
24208 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
24209
24210         * regmove.c (discover_flags_reg, flags_set_1, mark_flags_life_zones,
24211         flags_set_1_rtx, flags_set_1_set): Delete.
24212         (regmove_optimize): Do not call mark_flags_life_zones.
24213
24214 2009-02-24  Julian Brown  <julian@codesourcery.com>
24215
24216         PR target/35965
24217         * config/arm/arm.c (require_pic_register): Only set
24218         cfun->machine->pic_reg once per function.
24219
24220 2009-02-24  Sandra Loosemore  <sandra@codesourcery.com>
24221
24222         * doc/invoke.texi (Link Options): Document an easier way to pass
24223         options that take arguments to the GNU linker using -Xlinker and -Wl.
24224
24225 2009-02-24  Steve Ellcey  <sje@cup.hp.com>
24226
24227         PR target/33785
24228         * doc/tm.texi (TARGET_C99_FUNCTIONS): Fix description.
24229
24230 2009-02-24  Richard Guenther  <rguenther@suse.de>
24231
24232         PR debug/39285
24233         * dwarf2out.c (gen_enumeration_type_die): Handle CONST_DECLs.
24234
24235 2009-02-24  Richard Guenther  <rguenther@suse.de>
24236             Zdenek Dvorak  <ook@ucw.cz>
24237
24238         PR tree-optimization/39233
24239         * tree-ssa-loop-ivopts.c (add_candidate_1): Do not except pointers
24240         from converting them to a generic type.
24241
24242 2009-02-23  Sebastian Pop  <sebastian.pop@amd.com>
24243
24244         PR tree-optimization/39260
24245         * graphite.c (harmful_stmt_in_bb): Stop a SCoP when the basic block
24246         contains a condition with a real type.
24247         (build_scop_conditions_1): Conditions are always last_stmt of a bb.
24248
24249 2009-02-23  Jason Merrill  <jason@redhat.com>
24250
24251         PR c++/38880
24252         * varasm.c (initializer_constant_valid_p) [PLUS_EXPR]: Check
24253         narrowing_initializer_constant_valid_p.
24254         (narrowing_initializer_constant_valid_p): Don't return
24255         null_pointer_node for adding a pointer to itself.
24256
24257 2009-02-23  Jan Hubicka  <jh@suse.cz>
24258
24259         PR c/12245
24260         * ggc.h (htab_create_ggc): Use ggc_free to free hashtable when
24261         resizing.
24262
24263 2009-02-23  Jan Hubicka  <jh@suse.cz>
24264
24265         PR tree-optimization/37709
24266         * tree.c (block_ultimate_origin): Move here from dwarf2out.
24267         * tree.h (block_ultimate_origin): Declare.
24268         * dwarf2out.c (block_ultimate_origin): Move to tree.c
24269         * tree-ssa-live.c (remove_unused_scope_block_p):
24270         Eliminate blocks containig no instructions nor live variables nor
24271         nested blocks.
24272         (dump_scope_block): New function.
24273         (remove_unused_locals): Enable removal of dead blocks by default;
24274         enable dumping at TDF_DETAILS.
24275
24276 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
24277
24278         * config/i386/i386.c (classify_argument): Don't allow COImode
24279         and OImode.
24280         (function_arg_advance_32): Don't allow OImode.
24281         (function_arg_32): Likewise.
24282         (function_value_32): Likewise.
24283         (return_in_memory_32): Likewise.
24284         (function_arg_64): Remove OImode comment.
24285
24286 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
24287
24288         PR target/39261
24289         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
24290         ix86_expand_vector_set for V4DImode in 64bit mode only.
24291         (ix86_expand_vector_init_one_var): Likewise.
24292
24293 2009-02-21  Sebastian Pop  <sebastian.pop@amd.com>
24294
24295         * graphite.c (graphite_trans_loop_block): Adjust tile size to 51.
24296
24297 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
24298
24299         PR bootstrap/39257
24300         * loop-iv.c: Revert last change.
24301         * emit-rtl.c: Likewise.
24302
24303 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
24304
24305         PR target/39256
24306         * config/i386/i386.c (type_natural_mode): Remove an extra
24307         space in the warning message.
24308         (function_value_32): Handle 32-byte vector modes.
24309         (return_in_memory_32): Likewise.
24310
24311 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
24312
24313         * loop-iv.c (truncate_value): New function.
24314         (iv_subreg, get_iv_value, iv_number_of_iterations): Use it instead
24315         of lowpart_subreg.
24316         (lowpart_subreg): Move to...
24317         * emit-rtl.c: ...here.
24318
24319 2009-02-21  Danny Smith  <dannysmith@users.sourceforge.net>
24320
24321         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common): Revert
24322         accidental and undocumented change at revision 140860.
24323
24324 2009-02-21  Joseph Myers  <joseph@codesourcery.com>
24325
24326         * config/arm/arm.c (arm_gimplify_va_arg_expr): Update prototype to
24327         take gimple_seq * arguments.
24328         (arm_mangle_type): Use CONST_CAST_TREE on type argument passed to
24329         types_compatible_p langhook.
24330
24331 2009-02-20  Mark Mitchell  <mark@codesourcery.com>
24332             Joseph Myers  <joseph@codesourcery.com>
24333
24334         * config/arm/arm.c (arm_builtin_va_list): New function.
24335         (arm_expand_builtin_va_start): Likewise.
24336         (arm_gimplify_va_arg_expr): Likewise.
24337         (TARGET_BUILD_BUILTIN_VA_LIST): Define.
24338         (TARGET_BUILD_BUILTIN_VA_START): Likewise.
24339         (TARGET_BUILD_BUILTIN_VA_ARG_EXPR): Likewise.
24340         (va_list_type): New variable.
24341         (arm_mangle_type): Mangle va_list_type appropriately.
24342
24343 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
24344
24345         PR middle-end/39157
24346         * Makefile.in (loop-invariant.o): Depend on $(PARAMS_H).
24347         * params.h (LOOP_INVARIANT_MAX_BBS_IN_LOOP): Define.
24348         * params.def (loop-invariant-max-bbs-in-loop): New parameter.
24349         * opts.c (decode_options): Set loop-invariant-max-bbs-in-loop
24350         parameter to 1000 for -O1 by default.
24351         * doc/invoke.texi (loop-invariant-max-bbs-in-loop): Document new
24352         parameter.
24353         * loop-invariant.c: Include params.h.
24354         (move_loop_invariants): Don't call move_single_loop_invariants on
24355         very large loops.
24356
24357 2009-02-20  Jaka Mocnik  <jaka@xlab.si>
24358
24359         * calls.c (emit_library_call_value_1): Use slot_offset instead of
24360         offset when calculating bounds for indexing stack_usage_map.  Fixes
24361         a buffer overflow with certain target setups.
24362
24363 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
24364
24365         PR target/39240
24366         * calls.c (expand_call): Clear try_tail_call if caller and callee
24367         disagree in promotion of function return value.
24368
24369 2009-02-19  Jakub Jelinek  <jakub@redhat.com>
24370
24371         PR target/39175
24372         * c-common.c (c_determine_visibility): If visibility changed and
24373         DECL_RTL has been already set, call make_decl_rtl to update symbol
24374         flags.
24375
24376 2009-02-19  H.J. Lu  <hongjiu.lu@intel.com>
24377
24378         PR c++/39188
24379         * varasm.c (assemble_variable): Don't check DECL_NAME when
24380         globalizing a variable.
24381
24382 2009-02-19  Joseph Myers  <joseph@codesourcery.com>
24383
24384         PR c/38483
24385         * builtins.c (gimplify_va_arg_expr): Evaluate the va_list
24386         expression before any __builtin_trap call.
24387         * c-typeck.c (build_function_call): Convert and check function
24388         arguments before generating a call to a trap.  Evaluate the
24389         function arguments before the trap.
24390
24391 2009-02-19  Uros Bizjak  <ubizjak@gmail.com>
24392
24393         PR target/39228
24394         * config/i386/i386.md (isinfxf2): Split from isinf<mode>2.
24395         (UNSPEC_FXAM_MEM): New unspec.
24396         (fxam<mode>2_i387_with_temp): New insn and split pattern.
24397         (isinf<mode>2): Use MODEF mode iterator.  Force operand[1] through
24398         memory using fxam<mode>2_i387_with_temp to remove excess precision.
24399
24400 2009-02-19  Richard Guenther  <rguenther@suse.de>
24401
24402         PR tree-optimization/39207
24403         PR tree-optimization/39074
24404         * tree-ssa-structalias.c (storedanything_id, var_storedanything,
24405         storedanything_tree): New.
24406         (do_ds_constraint): Simplify ANYTHING shortcutting.  Update
24407         the STOREDANYTHING solution if the lhs solution contains ANYTHING.
24408         (build_succ_graph): Add edges from STOREDANYTHING to all
24409         non-direct nodes.
24410         (init_base_vars): Initialize STOREDANYTHING.
24411         (compute_points_to_sets): Free substitution info after
24412         building the succ graph.
24413         (ipa_pta_execute): Likewise.
24414
24415         * tree-ssa-structalias.c (struct variable_info): Add may_have_pointers
24416         field.
24417         (do_ds_constraint): Do not add to special var or non-pointer
24418         field solutions.
24419         (type_could_have_pointers): Split out from ...
24420         (could_have_pointers): ... here.  For arrays use the element type.
24421         (create_variable_info_for): Initialize may_have_pointers.
24422         (new_var_info): Likewise.
24423         (handle_lhs_call): Make the HEAP variable unknown-sized.
24424         (intra_create_variable_infos): Use a type with pointers for
24425         PARM_NOALIAS, make it unknown-sized.
24426
24427 2009-02-18  H.J. Lu  <hongjiu.lu@intel.com>
24428
24429         PR target/39224
24430         * config/i386/i386.c (ix86_return_in_memory): Properly check ABI.
24431
24432 2009-02-18  Jason Merrill  <jason@redhat.com>
24433
24434         PR target/39179
24435         * tree-ssa-ccp.c (get_symbol_constant_value): Don't assume zero
24436         value if DECL_EXTERNAL.
24437         * tree-sra.c (sra_walk_gimple_assign): Likewise.
24438         * target.h (gcc_target::binds_local_p): Clarify "module".
24439         * tree.h (TREE_PUBLIC): Clarify "module".
24440
24441 2009-02-17  Xuepeng Guo  <xuepeng.guo@intel.com>
24442
24443         PR target/38891
24444         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move the hunk of
24445         initialization for MS_ABI prior to the hunk of !TARGET_MMX.
24446
24447 2009-02-17  H.J. Lu  <hongjiu.lu@intel.com>
24448
24449         PR target/39082
24450         * c.opt (Wabi): Support C and ObjC.
24451         (Wpsabi): New.
24452
24453         * c-opts.c (c_common_handle_option): Handle OPT_Wabi.
24454
24455         * config/i386/i386.c (classify_argument): Warn once about the ABI
24456         change when passing union with long double.
24457
24458         * doc/invoke.texi: Update -Wabi for warning psABI changes.
24459
24460 2009-02-18  Joseph Myers  <joseph@codesourcery.com>
24461
24462         PR c/35447
24463         * c-parser.c (c_parser_compound_statement): Always enter and leave
24464         a scope.
24465
24466 2009-02-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
24467
24468         PR target/34587
24469         * config/darwin.h (SUPPORTS_INIT_PRIORITY): Define.
24470
24471 2009-02-18  Jakub Jelinek  <jakub@redhat.com>
24472
24473         PR tree-optimization/36922
24474         * tree-data-ref.c (initialize_matrix_A): Handle BIT_NOT_EXPR.
24475         * tree-scalar-evolution.c (interpret_rhs_expr, instantiate_scev_1):
24476         Likewise.
24477
24478 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
24479
24480         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
24481         to 0 for EABI64.
24482
24483 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
24484
24485         * config/mips/mips.md (type): Reclassify lui_movf as "unknown".
24486
24487 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
24488
24489         * config/mips/mips.c (mips_gimplify_va_arg_expr): Fix invalid
24490         tree sharing.
24491
24492 2009-02-17  Ruan Beihong  <ruanbeihong@gmail.com>
24493             Richard Sandiford  <rdsandiford@googlemail.com>
24494
24495         * config/mips/mips.c (CODE_FOR_loongson_biadd): Delete.
24496         * config/mips/loongson.md (reduc_uplus_<mode>): Rename to...
24497         (loongson_biadd): ...this.
24498
24499 2009-02-17  Richard Guenther  <rguenther@suse.de>
24500
24501         PR tree-optimization/39202
24502         * tree-ssa-structalias.c (do_structure_copy): Before collapsing
24503         a var make sure to follow existing collapses.
24504
24505 2009-02-17  Richard Guenther  <rguenther@suse.de>
24506
24507         PR middle-end/39214
24508         * langhooks.c (lhd_print_error_function): Check for NULL block.
24509
24510 2009-02-17  Richard Guenther  <rguenther@suse.de>
24511
24512         PR tree-optimization/39204
24513         * tree-ssa-pre.c (phi_translate_1): Lookup the value-number
24514         of the PHI arg.
24515
24516 2009-02-17  Uros Bizjak  <ubizjak@gmail.com>
24517
24518         * config/soft-fp/double.h: Update from glibc CVS.
24519
24520 2009-02-17  Richard Guenther  <rguenther@suse.de>
24521
24522         PR tree-optimization/39207
24523         * tree-ssa-structalias.c (find_what_p_points_to): Do not emit
24524         strict-aliasing warnings for pointers pointing to NULL.
24525
24526 2009-02-16  Joseph Myers  <joseph@codesourcery.com>
24527
24528         PR c/35446
24529         * c-parser.c (c_parser_braced_init): Call pop_init_level when
24530         skipping until next close brace.
24531
24532 2009-02-16  H.J. Lu  <hongjiu.lu@intel.com>
24533
24534         PR target/37049
24535         * config/i386/i386.c (ix86_expand_push): Set memory alignment
24536         to function argument boundary.
24537
24538 2009-02-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
24539
24540         * config/picochip/picochip.md (lea_add): Allow any nonimmediate
24541         in the lea_add. Reload eventually constraints it properly.
24542         * config/picochip/constraints.md: Remove the target constraint
24543         "b", since it is not needed anymore.
24544
24545 2009-02-16  Jakub Jelinek  <jakub@redhat.com>
24546
24547         * gthr-dce.h: Uglify function parameter and local variable names.
24548         * gthr-gnat.h: Likewise.
24549         * gthr-mipssde.h: Likewise.
24550         * gthr-nks.h: Likewise.
24551         * gthr-posix95.h: Likewise.
24552         * gthr-posix.h: Likewise.
24553         * gthr-rtems.h: Likewise.
24554         * gthr-single.h: Likewise.
24555         * gthr-solaris.h: Likewise.
24556         * gthr-tpf.h: Likewise.
24557         * gthr-vxworks.h: Likewise.
24558         * gthr-win32.h: Likewise.
24559
24560 2009-02-15  H.J. Lu  <hongjiu.lu@intel.com>
24561
24562         PR target/39196
24563         * config/i386/i386.md: Restrict the new peephole2 to move
24564         between MMX/SSE registers.
24565
24566 2009-02-15  Richard Guenther  <rguenther@suse.de>
24567
24568         Revert
24569         2009-02-13  Richard Guenther  <rguenther@suse.de>
24570
24571         * configure.ac: Enable LFS.
24572         * configure: Re-generate.
24573         * config.in: Likewise.
24574
24575 2009-02-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
24576
24577         * config/spu/spu_internals.h (spu_sr, spu_sra, spu_srqw,
24578         spu_srqwbyte, spu_srqwbytebc): Define.
24579         * config/spu/spu-builtins.def (spu_sr, spu_sra, spu_srqw,
24580         spu_srqwbyte, spu_srqwbytebc): New overloaded builtins.
24581         * config/spu/spu.md ("shrqbybi_<mode>", "shrqbi_<mode>",
24582         "shrqby_<mode>"): New insn-and-split patterns.
24583         * config/spu/spu.c (expand_builtin_args): Determine and return
24584         number of operands using spu_builtin_description data.
24585         (spu_expand_builtin_1): Use it.
24586
24587 2009-02-13  Steve Ellcey  <sje@cup.hp.com>
24588
24589         PR target/38056
24590         * config/ia64/ia64.c (ia64_function_ok_for_sibcall): Check
24591         TARGET_CONST_GP.
24592
24593 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
24594
24595         PR target/39149
24596         * config/i386/i386.c (override_options): Correct warning
24597         messages for -malign-loops, -malign-jumps and -malign-functions.
24598
24599 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
24600
24601         PR target/39152
24602         * config/i386/i386.md: Restrict the new peephole2 to move
24603         between the general purpose registers.
24604
24605 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
24606
24607         PR target/39162
24608         * config/i386/i386.c (type_natural_mode): Add a new argument.
24609         Return the original mode and warn ABI change if vector size is 32byte.
24610         (function_arg_advance): Updated.
24611         (function_arg): Likewise.
24612         (ix86_function_value): Likewise.
24613         (ix86_return_in_memory): Likewise.
24614         (ix86_sol10_return_in_memory): Likewise.
24615         (ix86_gimplify_va_arg): Likewise.
24616         (function_arg_32): Don't warn ABX ABI change here.
24617         (function_arg_64): Likewise.
24618
24619 2009-02-13  Bernd Schmidt  <bernd.schmidt@analog.com>
24620
24621         * loop-iv.c (implies_p): In the final case, test that operands 0
24622         of the two comparisons match.
24623
24624         * config/bfin/bfin.c (find_prev_insn_start): New function.
24625         (bfin_optimize_loop): Use it in some cases instead of PREV_INSN.
24626         (find_next_insn_start): Move.
24627
24628 2009-02-13  Richard Guenther  <rguenther@suse.de>
24629
24630         * configure.ac: Enable LFS.
24631         * configure: Re-generate.
24632         * config.in: Likewise.
24633
24634 2009-02-13  Joseph Myers  <joseph@codesourcery.com>
24635
24636         PR c/35444
24637         * c-parser.c (c_parser_parms_list_declarator): Discard pending
24638         sizes on syntax error after some arguments have been parsed.
24639
24640 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
24641
24642         * doc/invoke.texi (-fira): Remove.
24643
24644 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
24645
24646         * caller-save.c: Replace regclass.c with reginfo.c in comments.
24647         * recog.c: Likewise.
24648         * rtl.h: Likewise.
24649
24650 2009-02-12  Uros Bizjak  <ubizjak@gmail.com>
24651
24652         * longlong.h (sub_ddmmss): New for ia64. Ported from GMP 4.2.
24653         (umul_ppmm): Likewise.
24654         (count_leading_zeros): Likewise.
24655         (count_trailing_zeros): Likewise.
24656         (UMUL_TIME): Likewise.
24657
24658 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
24659
24660         * config.gcc (ia64*-*-linux*): Add ia64/t-fprules-softfp and
24661         soft-fp/t-softfp to tmake_file.
24662
24663         * config/ia64/ia64.c (ia64_soft_fp_init_libfuncs): New.
24664         (ia64_expand_compare): Use HPUX library for TFmode only for HPUX.
24665         (ia64_builtins) [IA64_BUILTIN_COPYSIGNQ, IA64_BUILTIN_FABSQ,
24666         IA64_BUILTIN_INFQ]: New.
24667         (ia64_init_builtins): Initialize __builtin_infq,
24668         __builtin_fabsq and __builtin_copysignq if not HPUX.
24669         (ia64_expand_builtin): Handle IA64_BUILTIN_COPYSIGNQ,
24670         IA64_BUILTIN_FABSQ and IA64_BUILTIN_INFQ.
24671
24672         * config/ia64/lib1funcs.asm (__divtf3): Define only if
24673         SHARED is defined.
24674         (__fixtfti): Likewise.
24675         (__fixunstfti): Likewise.
24676         (__floattitf): Likewise.
24677
24678         * config/ia64/libgcc-glibc.ver: New.
24679         * config/ia64/t-fprules-softfp: Likewise.
24680         * config/ia64/sfp-machine.h: Likewise.
24681
24682         * config/ia64/linux.h (LIBGCC2_HAS_TF_MODE): New.
24683         (LIBGCC2_TF_CEXT): Likewise.
24684         (TF_SIZE): Likewise.
24685         (TARGET_INIT_LIBFUNCS): Likewise.
24686
24687         * config/ia64/t-glibc (SHLINB_MAPFILES):
24688         Add $(srcdir)/config/ia64/libgcc-glibc.ver.
24689
24690 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
24691
24692         * config/i386/i386.c (construct_container): Rewrite processing
24693         BLKmode with X86_64_SSE_CLASS.
24694
24695 2009-02-12  Paolo Bonzini  <bonzini@gnu.org>
24696
24697         PR target/39152
24698         * config/i386/i386.md: Replace simplify_replace_rtx with
24699         replace_rtx in the new peephole2.
24700
24701 2009-02-12  Nathan Sidwell  <nathan@codesourcery.com>
24702
24703         * doc/invoke.texi (Optimize Options): Stop claiming inlining and
24704         loop unrolling do not happen at -O2.
24705
24706 2009-02-12  Michael Matz  <matz@suse.de>
24707
24708         * gcc.c (ASM_DEBUG_SPEC): Check for -g0.
24709
24710 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
24711
24712         * dwarf2out.c (dwarf2out_finish): Force output of comp_unit_die
24713         for -g3.
24714
24715 2009-02-12  Ben Elliston  <bje@au.ibm.com>
24716
24717         * config/rs6000/rs6000.md (allocate_stack): Use _stack form of
24718         patterns when updating the back chain.  Missed in the 2009-02-10
24719         change.
24720
24721 2009-02-11  Janis Johnson  <janis187@us.ibm.com>
24722
24723         * doc/extend.texi (Decimal Floating Types): Update identifier of
24724         draft TR and list of missing support.
24725
24726 2009-02-11  Jakub Jelinek  <jakub@redhat.com>
24727
24728         PR middle-end/39154
24729         * gimplify.c (omp_notice_variable): If adding GOVD_SEEN
24730         bit to variable length decl's flags, add it also to its
24731         pointer replacement variable.
24732
24733 2009-02-11  Uros Bizjak  <ubizjak@gmail.com>
24734             Jakub Jelinek  <jakub@redhat.com>
24735
24736         PR target/39118
24737         * config/i386/i386.md (UNSPEC_MEMORY_BLOCKAGE): New constant.
24738         (memory_blockage): New expander.
24739         (*memory_blockage): New insn pattern.
24740         * config/i386/i386.c (ix86_expand_prologue): Use memory_blockage
24741         instead of general blockage at the end of function prologue when
24742         frame pointer is used to access red zone area.  Do not emit blockage
24743         when profiling, it is emitted in generic code.
24744         (ix86_expand_epilogue): Emit memory_blockage at the beginning of
24745         function epilogue when frame pointer is used to access red zone area.
24746
24747 2009-02-11  Paolo Bonzini  <bonzini@gnu.org>
24748
24749         PR target/38824
24750         * config/i386/i386.md: Add two new peephole2 to avoid mov followed
24751         by arithmetic with memory operands.
24752         * config/i386/predicates.md (commutative_operator): New.
24753
24754 2009-02-10  Janis Johnson  <janis187@us.ibm.com>
24755
24756         * doc/extend.texi (Fixed-Point Types): Break long paragraphs into
24757         bulleted lists.
24758
24759 2009-02-10  Eric Botcazou  <ebotcazou@adacore.com>
24760
24761         * alias.h (record_alias_subset): Declare.
24762         * alias.c (record_alias_subset): Make global.
24763
24764 2009-02-10  Nick Clifton  <nickc@redhat.com>
24765
24766         * tree-parloops.c: Change license to GPLv3.
24767         * ipa-struct-reorg.c: Change license to GPLv3.
24768         * ipa-struct-reorg.h: Change license to GPLv3.
24769
24770 2009-02-10  Steve Ellcey  <sje@cup.hp.com>
24771
24772         PR c/39084
24773         * c-decl.c (start_struct): Return NULL on error.
24774
24775 2009-02-10  Jakub Jelinek  <jakub@redhat.com>
24776
24777         PR middle-end/39124
24778         * cfgloopmanip.c (remove_path): Call remove_bbs after
24779         cancel_loop_tree, not before it.
24780
24781         PR target/39139
24782         * function.h (struct function): Add has_local_explicit_reg_vars bit.
24783         * gimplify.c (gimplify_bind_expr): Set it if local DECL_HARD_REGISTER
24784         VAR_DECLs were seen.
24785         * tree-ssa-live.c (remove_unused_locals): Recompute
24786         cfun->has_local_explicit_reg_vars.
24787         * tree-ssa-sink.c (statement_sink_location): Don't sink BLKmode
24788         copies or clearings if cfun->has_local_explicit_reg_vars.
24789
24790 2009-02-10  Uros Bizjak  <ubizjak@gmail.com>
24791
24792         PR target/39118
24793         * config/i386/i386.c (expand_prologue): Emit blockage at the end
24794         of function prologue when frame pointer is used to access
24795         red zone area.
24796
24797 2009-02-10  Richard Guenther  <rguenther@suse.de>
24798
24799         PR middle-end/39127
24800         * gimplify.c (gimple_regimplify_operands): Always look if
24801         we need to create a temporary.
24802
24803 2009-02-10  Richard Guenther  <rguenther@suse.de>
24804
24805         PR tree-optimization/39132
24806         * tree-loop-distribution.c (todo): New global var.
24807         (generate_memset_zero): Trigger TODO_rebuild_alias.
24808         (tree_loop_distribution): Return todo.
24809
24810 2009-02-10  H.J. Lu  <hongjiu.lu@intel.com>
24811
24812         PR target/39119
24813         * config/i386/i386.c (x86_64_reg_class): Remove X86_64_AVX_CLASS.
24814         (x86_64_reg_class_name): Removed.
24815         (classify_argument): Return 0 if bytes > 32.  Return 0 if the
24816         first one isn't X86_64_SSE_CLASS or any other ones aren't
24817         X86_64_SSEUP_CLASS when size > 16bytes.  Don't turn
24818         X86_64_SSEUP_CLASS into X86_64_SSE_CLASS if the preceded one
24819         is X86_64_SSEUP_CLASS.  Set AVX modes to 1 X86_64_SSE_CLASS
24820         and 3 X86_64_SSEUP_CLASS.
24821         (construct_container): Remove X86_64_AVX_CLASS.  Handle 4
24822         registers with 1 X86_64_SSE_CLASS and 3 X86_64_SSEUP_CLASS.
24823
24824 2009-02-10  Ben Elliston  <bje@au.ibm.com>
24825
24826         * config/rs6000/rs6000.md (allocate_stack): Always use an update
24827         form instruction to update the stack back chain word, even if the
24828         user has disabled the generation of update instructions.
24829         (movdi_<mode>_update_stack): New.
24830         (movsi_update_stack): Likewise.
24831         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Likewise,
24832         always use an update form instruction to update the stack back
24833         chain word.
24834
24835 2009-02-09  Sebastian Pop  <sebastian.pop@amd.com>
24836
24837         PR middle-end/38953
24838         * graphite.c (if_region_set_false_region): After moving a region in
24839         the false branch of a condition, remove the empty dummy basic block.
24840         (gloog): Remove wrong fix for PR38953.
24841
24842 2009-02-09  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
24843
24844         * config/spu/spu.c (array_to_constant): Fix (latent) wrong-code
24845         generation due to implicit sign extension.
24846
24847 2009-02-09  Eric Botcazou  <ebotcazou@adacore.com>
24848
24849         PR middle-end/38981
24850         * tree-ssa-coalesce.c (add_coalesce): Cap the costs of coalesce pairs
24851         at MUST_COALESCE_COST-1 instead of MUST_COALESCE_COST.
24852
24853 2009-02-09  Richard Guenther  <rguenther@suse.de>
24854
24855         PR middle-end/35202
24856         * convert.c (convert_to_real): Disable (float)fn((double)x)
24857         to fnf(x) conversion if errno differences may occur and
24858         -fmath-errno is set.
24859
24860 2009-02-07  Anatoly Sokolov  <aesok@post.ru>
24861
24862         * config/avr/avr.c (avr_mcu_t): Add ata6289 device.
24863         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
24864         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
24865
24866 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
24867
24868         PR c/35434
24869         * c-common.c (handle_alias_attribute): Disallow attribute for
24870         anything not a FUNCTION_DECL or VAR_DECL.
24871
24872 2009-02-06  Janis Johnson  <janis187@us.ibm.com>
24873
24874         PR c/39035
24875         * real.c (do_compare): Special-case compare of zero against
24876         decimal float value.
24877
24878 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
24879
24880         PR c/36432
24881         * c-decl.c (grokdeclarator): Don't treat [] declarators in fields
24882         as indicating flexible array members unless the field itself is
24883         being declarared as the incomplete array.
24884
24885 2009-02-06  Jan Hubicka  <jh@suse.cz>
24886
24887         PR tree-optimization/38844
24888         * ipa-inline.c (try_inline): Stop inlining recursion when edge
24889         is already inlined.
24890
24891 2009-02-06  Richard Guenther  <rguenther@suse.de>
24892
24893         PR middle-end/38977
24894         * tree-cfg.c (need_fake_edge_p): Force a fake edge for
24895         fork because we may expand it as __gcov_fork.
24896
24897 2009-02-06  Nick Clifton  <nickc@redhat.com>
24898
24899         * config/m32c/m32c.h (PCC_BITFIELD_TYPE_MATTERS): Define to zero.
24900
24901 2009-02-06  Paolo Bonzini  <bonzini@gnu.org>
24902
24903         PR tree-optimization/35659
24904         * tree-ssa-sccvn.c (vn_constant_eq, vn_reference_eq, vn_nary_op_eq
24905         vn_phi_eq): Shortcut if hashcode does not match.
24906         (vn_reference_op_compute_hash): Do not call iterative_hash_expr for
24907         NULL operands.
24908         * tree-ssa-pre.c (pre_expr_hash): Look at hashcode if available,
24909         and avoid iterative_hash_expr.
24910         (FOR_EACH_VALUE_ID_IN_SET): New.
24911         (value_id_compare): Remove.
24912         (sorted_array_from_bitmap_set): Use FOR_EACH_VALUE_ID_IN_SET to
24913         sort expressions by value id.
24914
24915 2009-02-05  Kaz Kojima  <kkojima@gcc.gnu.org>
24916
24917         PR target/38991
24918         * config/sh/predicates.md (general_movsrc_operand): Don't check
24919         the subreg of system registers here.
24920
24921 2009-02-05  Jakub Jelinek  <jakub@redhat.com>
24922
24923         PR c++/39106
24924         * cgraphunit.c (cgraph_function_versioning): Clear also DECL_VIRTUAL_P
24925         on the copied decl.
24926
24927 2009-02-05  Paolo Bonzini  <bonzini@gnu.org>
24928
24929         PR rtl-optimization/39110
24930         * rtlanal.c (rtx_addr_can_trap_p_1): Shortcut unaligned
24931         addresses, not aligned ones.
24932
24933 2009-02-05  Daniel Berlin  <dberlin@dberlin.org>
24934             Richard Guenther  <rguenther@suse.de>
24935
24936         PR tree-optimization/39100
24937         * tree-ssa-structalias.c (do_ds_constraint): Actually do what the
24938         comment says and add edges.
24939
24940 2009-02-05  Joseph Myers  <joseph@codesourcery.com>
24941
24942         PR c/35435
24943         * c-common.c (handle_tls_model_attribute): Ignore attribute for
24944         non-VAR_DECLs without checking DECL_THREAD_LOCAL_P.
24945
24946 2009-02-04  Tobias Grosser  <grosser@fim.uni-passau.de>
24947
24948         * graphite.c (bb_in_sese_p, sese_build_livein_liveouts_use,
24949         sese_build_livein_liveouts_bb, sese_build_livein_liveouts,
24950         register_bb_in_sese, new_sese, free_sese): Moved.
24951         (dot_scop_1, build_scop_loop_nests, build_loop_iteration_domains,
24952         outermost_loop_in_scop, build_scop_iteration_domain,
24953         expand_scalar_variables_ssa_name, get_vdef_before_scop,
24954         limit_scops): Use bb_in_sese_p instead of bb_in_scop_p.
24955         Use loop_in_sese_p instead of loop_in_scop_p.
24956         (new_graphite_bb, gloog): Do not initialize SCOP_BBS_B.
24957         (new_scop, free_scop): Remove SCOP_LOOP2CLOOG_LOOP and SCOP_BBS_B.
24958         (scopdet_basic_block_info): Fix bug in scop detection.
24959         (new_loop_to_cloog_loop_str, hash_loop_to_cloog_loop,
24960         eq_loop_to_cloog_loop): Remove.
24961         (nb_loops_around_loop_in_scop, nb_loop
24962         ref_nb_loops): Moved here...
24963         * graphite.h (ref_nb_loops): ... from here.
24964         (struct scop): Remove bbs_b bitmap and loop2cloog_loop.
24965         (loop_domain_dim, loop_iteration_vector_dim): Remove.
24966         (SCOP_BBS_B, bb_in_scop_p, loop_in_scop_p): Removed.
24967
24968 2009-02-04  Paolo Bonzini  <bonzini@gnu.org>
24969             Hans-Peter Nilsson  <hp@axis.com>
24970
24971         PR rtl-optimization/37889
24972         * rtlanal.c (rtx_addr_can_trap_p_1): Add offset and size arguments.
24973         Move offset handling from PLUS to before the switch.  Use new
24974         arguments when considering SYMBOL_REFs too.
24975         (rtx_addr_can_trap_p): Pass dummy offset and size.
24976         (enum may_trap_p_flags): Remove.
24977         (may_trap_p_1): Pass size from MEM_SIZE.
24978
24979         PR rtl-optimization/38921
24980         * loop-invariant.c (find_invariant_insn): Use may_trap_or_fault_p.
24981         * rtl.h (may_trap_after_code_motion_p): Delete prototype.
24982         * rtlanal.c (may_trap_after_code_motion_p): Delete.
24983         (may_trap_p, may_trap_or_fault_p): Pass 0/1 as flags.
24984
24985 2009-02-04  H.J. Lu  <hongjiu.lu@intel.com>
24986
24987         AVX Programming Reference (January, 2009)
24988         * config/i386/sse.md (*vpclmulqdq): New.
24989
24990 2009-02-04  Jakub Jelinek  <jakub@redhat.com>
24991
24992         PR tree-optimization/38977
24993         PR gcov-profile/38292
24994         * calls.c (special_function_p): Disregard __builtin_ prefix.
24995
24996 2009-02-04  Hariharan Sandanagobalane  <hariharan@picochip.com>
24997
24998         * config/picochip/picochip.c (GO_IF_LEGITIMATE_ADDRESS): Disallow
24999         non-indexable addresses even before reload.
25000
25001 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
25002
25003         PR c/29129
25004         * c-decl.c (grokdeclarator): Mark [*] arrays in field declarators
25005         as having variable size.  Do not give an error for unnamed
25006         parameters with [*] declarators.  Give a warning for type names
25007         with [*] declarators and mark them as variable size.
25008         * c-parser.c (c_parser_sizeof_expression): Do not give an error
25009         for sizeof applied to [*] type names.
25010
25011 2009-02-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
25012
25013         PR C++/36607
25014         * convert.c (convert_to_integer): Treat OFFSET_TYPE like INTEGER_TYPE.
25015
25016 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
25017
25018         * gcc.c (process_command): Update copyright notice dates.
25019         * gcov.c (print_version): Likewise.
25020         * gcov-dump.c (print_version): Likewise.
25021         * mips-tfile.c (main): Likewise.
25022         * mips-tdump.c (main): Likewise.
25023
25024 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
25025
25026         PR c/35433
25027         * c-typeck.c (composite_type): Set TYPE_SIZE and TYPE_SIZE_UNIT
25028         for composite type involving a zero-length array type.
25029
25030 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
25031
25032         PR target/35318
25033         * function.c (match_asm_constraints_1): Skip over
25034         initial optional % in the constraint.
25035
25036         PR inline-asm/39059
25037         * c-parser.c (c_parser_postfix_expression): If fixed point is not
25038         supported, don't accept FIXED_CSTs.
25039         * c-decl.c (finish_declspecs): Error if fixed point is not supported
25040         and _Sat is used without _Fract/_Accum.  Set specs->type to
25041         integer_type_node for cts_fract/cts_accum if fixed point is not
25042         supported.
25043
25044 2009-02-02  Catherine Moore  <clm@codesourcery.com>
25045
25046         * sde.h (SUBTARGET_ARM_SPEC): Don't assemble -fpic code as -mabicalls.
25047
25048 2009-02-02  Richard Sandiford  <rdsandiford@googlemail.com>
25049
25050         * config/mips/mips.h (FILE_HAS_64BIT_SYMBOLS): New macro.
25051         (ABI_HAS_64BIT_SYMBOLS): Use it.
25052         (DWARF2_ADDR_SIZE): Use it instead of ABI_HAS_64BIT_SYMBOLS.
25053
25054 2009-02-02  Paul Brook  <paul@codesourcery.com>
25055
25056         * config/arm/arm.md (arm_addsi3): Add r/r/k alternative.
25057
25058 2009-02-02  Jakub Jelinek  <jakub@redhat.com>
25059
25060         PR inline-asm/39058
25061         * recog.h (asm_operand_ok): Add constraints argument.
25062         * recog.c (asm_operand_ok): Likewise.  If it is set, for digits
25063         recurse on matching constraint.
25064         (check_asm_operands): Pass constraints as 3rd argument to
25065         asm_operand_ok.  Don't look up matching constraint here.
25066         * stmt.c (expand_asm_operands): Pass NULL as 3rd argument
25067         to asm_operand_ok.
25068
25069 2009-02-02  Ben Elliston  <bje@au.ibm.com>
25070
25071         * doc/tm.texi (Storage Layout): Fix TARGET_ALIGN_ANON_BITFIELD and
25072         TARGET_NARROW_VOLATILE_BITFIELD macro names.
25073
25074 2009-01-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
25075
25076         * doc/install.texi (hppa*-hp-hpux*): Update binutils and linker
25077         information.  Remove some obsolete information.  Reorganize.
25078
25079         * config/pa/fptr.c: Revert license to GPL 2.
25080         * config/pa/milli64.S: Likewise.
25081
25082 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
25083
25084         PR target/38904
25085         * mkmap-flat.awk (END):  Use pe_dll command-line arg to pass
25086         LIBRARY name in, instead of hard-coding it.
25087         * config.gcc (i[34567]86-*-pe | i[34567]86-*-cygwin*):  Add an
25088         extra target make frag to tmake_files according to EH model.
25089         (i[34567]86-*-mingw* | x86_64-*-mingw*):  Likewise.
25090         * config/i386/t-dw2-eh, config/i386/t-sjlj-eh:  Add new target
25091         frags that define makefile variable EH_MODEL appropriately.
25092         * config/i386/cygming.h (DWARF2_UNWIND_INFO):  Add comment.
25093         * config/i386/cygwin.h (LIBGCC_EH_EXTN):  Define to nothing or
25094         to "-sjlj" according to type of EH configured.
25095         (LIBGCC_SONAME):  Concatenate it to shared library base name.
25096         * config/i386/mingw32.h (LIBGCC_EH_EXTN):  Define to "_dw2" or
25097         to "_sjlj" according to type of EH configured.
25098         (LIBGCC_SONAME):  Concatenate it to shared library base name.
25099         * config/i386/t-cygming (SHLIB_SONAME):  Use EH_MODEL.
25100         (SHLIB_LINK):  Add missing semicolon to if-else construct.
25101         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
25102         string value of "pe_dll" command-line option.
25103         * config/i386/t-cygwin (SHLIB_EH_EXTENSION):  New helper.
25104         (SHLIB_SONAME):  Use it when overriding t-cygming default.
25105         (SHLIB_IMPLIB):  Override t-cygming default.
25106         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
25107         string value of "pe_dll" command-line option.
25108
25109 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
25110
25111         PR target/38952
25112         * config/i386/i386.c (ix86_builtin_setjmp_frame_value): New.
25113         (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Override default to point at it.
25114
25115 2009-01-31  Richard Guenther  <rguenther@suse.de>
25116
25117         PR tree-optimization/38937
25118         * tree-ssa-structalias.c (do_sd_constraint): Do not shortcut
25119         computing the transitive closure.
25120
25121 2009-01-30  Richard Guenther  <rguenther@suse.de>
25122
25123         PR tree-optimization/39041
25124         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
25125         Propagate variable indices only if the types match for this stmt.
25126
25127 2009-01-30  Jakub Jelinek  <jakub@redhat.com>
25128
25129         PR target/39013
25130         * c-decl.c (pop_scope): Set DECL_EXTERNAL for functions declared
25131         inline but never defined.
25132
25133 2009-01-30  Wolfgang Gellerich  <gellerich@de.ibm.com>
25134
25135         * config/s390/s390.md (*insv<mode>_reg_extimm): Removed.
25136         (*insv_h_di_reg_extimm): New insn.
25137         (*insv_l<mode>_reg_extimm): New insn.
25138
25139 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
25140
25141         * config/picochip/picochip.c (flag_conserve_stack): set
25142         PARAM_LARGE_STACK_FRAME and PARAM_STACK_FRAME_GROWTH to zero under
25143         fconserve-stack. Reduce call-overhead used by inliner.
25144
25145 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
25146
25147         PR/38157
25148         * common.opt (flag_conserve_stack): Initialised to zero.
25149
25150 2009-01-30  Kai Tietz  <kai.tietz@onevision.com>
25151
25152         PR/39002
25153         * config/i386/i386.c (ix86_can_use_return_insn_p): Check for nsseregs.
25154         (ix86_expand_epilogue): Take nsseregs in account to use proper restore
25155         method.
25156
25157 2009-01-29  H.J. Lu  <hongjiu.lu@intel.com>
25158
25159         * ira-color.c (allocno_reload_assign): Update comments.
25160         * regmove.c (regmove_optimize): Likewise.
25161
25162         * ra.h: Removed.
25163
25164 2009-01-29  Robert Millan  <rmh@aybabtu.com>
25165
25166         * config.gcc: Recognize GNU/kOpenSolaris (*-*-kopensolaris*-gnu).
25167         * config/i386/kopensolaris-gnu.h: New file.  Undefine
25168         `MD_UNWIND_SUPPORT'.
25169         * config/kopensolaris-gnu.h: New file (based on kfreebsd-gnu.h).
25170
25171 2009-01-29  Kazu Hirata  <kazu@codesourcery.com>
25172
25173         PR tree-optimization/39007
25174         * tree-loop-distribution.c (generate_builtin): Use
25175         recompute_dominator to compute the immediate dominator of the
25176         basic block just after the loop.
25177
25178 2009-01-29  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
25179
25180         * config/i386/sol2-10.h [!HAVE_AS_IX86_DIFF_SECT_DELTA]
25181         (ASM_OUTPUT_DWARF_PCREL): Define.
25182
25183 2009-01-29  Vladimir Makarov  <vmakarov@redhat.com>
25184
25185         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Modify description.
25186         * doc/passes.texi: Remove entries about regclass, local-alloc, and
25187         global.  Modify entries about regmove and IRA.
25188
25189         * ra-conflict.c: Remove the file.
25190
25191         * reload.c (push_reload, find_dummy_reload): Remove flag_ira.
25192
25193         * tree-pass.h (pass_local_alloc, pass_global_alloc): Remove.
25194         (pass_regclass_init): Rename to pass_reginfo_init.
25195
25196         * cfgloopanal.c (estimate_reg_pressure_cost): Remove flag_ira.
25197
25198         * toplev.h (flag_ira): Remove.
25199
25200         * caller-save.c (setup_save_areas): Remove flag_ira.
25201
25202         * ira-color.c (ira_reuse_stack_slot, ira_mark_new_stack_slot): Ditto.
25203
25204         * global.c: Remove the file.
25205
25206         * opts.c (decode_options): Remove flag_ira.
25207
25208         * hard-reg-set.h (losing_caller_save_reg_set): Remove.
25209
25210         * regmove.c: Modify file description.
25211         (find_use_as_address, try_auto_increment): Define them only if
25212         AUTO_INC_DEC is defined.
25213         (replacement_quality, replace_in_call_usage, fixup_match_1,
25214         stable_and_no_regs_but_for_p): Remove.
25215         (reg_set_in_bb): Make it static.
25216         (regmove_optimize): Remove flag_ira and code which worked for
25217         !flag_ira.
25218
25219         * local-alloc.c: Remove the file.
25220
25221         * common.opt (fira): Remove.
25222
25223         * ira.c: Include except.h.
25224         (eliminable_regset): Move from global.c.
25225         (mark_elimination): Ditto.  Remove flag_ira.
25226         (reg_renumber, struct equivalence, reg_equiv, equiv_mem,
25227         equiv_mem_modified, validate_equiv_mem_from_store,
25228         validate_equiv_mem, equiv_init_varies_p, equiv_init_movable_p,
25229         contains_replace_regs, memref_referenced_p, memref_used_between_p,
25230         no_equiv, recorded_label_ref): Move from local-alloc.c.
25231         (update_equiv_regs): Ditto.  Make it static.
25232         (print_insn_chain, print_insn_chains): Move it from global.c.
25233         (pseudo_for_reload_consideration_p): Ditto.  Remove flag_ira.
25234         (build_insn_chain): Ditto.  Make it static.
25235         (ra_init_live_subregs): Move from ra-conflict.c.  Make it static.
25236         Rename to init_live_subregs.
25237         (gate_ira): Remove flag_ira.
25238
25239         * regclass.c: Rename reginfo.c.  Change file description.
25240         (FORBIDDEN_INC_DEC_CLASSES): Remove.
25241         (reg_class_superclasses, forbidden_inc_dec_class, in_inc_dec): Remove.
25242         (init_reg_sets_1): Remove code for evaluation of
25243         reg_class_superclasses and losing_caller_save_reg_set.
25244         (init_regs): Remove init_reg_autoinc.
25245         (struct costs, costs, init_cost, ok_for_index_p_nonstrict,
25246         ok_for_base_p_nonstrict): Remove.
25247         (regclass_init): Rename to reginfo_init.  Don't initialize init_cost.
25248         (pass_regclass_init): Rename to pass_reginfo_init.  Modify
25249         corresponding entries.
25250         (dump_regclass, record_operand_costs, scan_one_insn,
25251         init_reg_autoinc, regclass, record_reg_classes, copy_cost,
25252         record_address_regs, auto_inc_dec_reg_p): Remove.
25253         (gt-regclass.h): Rename to gt-reginfo.h.
25254
25255         * rtl.h (dump_global_regs, retry_global_alloc,
25256         build_insn_chain, dump_local_alloc, update_equiv_regs): Remove.
25257
25258         * Makefile.in (RA_H): Remove.
25259         (OBJS-common): Remove global.o, local-alloc.o, and ra-conflict.o.
25260         Rename regclass.o to reginfo.o.
25261         (regclass.o): Rename to reginfo.o.  Rename gt-regclass.h to
25262         gt-reginfo.h.
25263         (global.o, local-alloc.o, ra-conflict.o): Remove entries.
25264         (GTFILES): Rename regclass.c to reginfo.c.
25265
25266         * passes.c (init_optimization_passes): Remove pass_local_alloc and
25267         pass_global_alloc.  Rename pass_regclass_init to pass_reginfo_init.
25268
25269         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
25270         count_spilled_pseudo, find_reg, alter_reg, delete_output_reload):
25271         Remove flag_ira.
25272         (finish_spills): Ditto.  Remove code for !flag_ira.
25273
25274 2009-01-29  Kenneth Zadeck  <zadeck@naturalbridge.com>
25275
25276         PR middle-end/35854
25277         * doc/invoke.texi (rtl debug options): Complete rewrite.
25278         * auto-inc-dec.c (pass_inc_dec): Rename pass from "auto-inc-dec"
25279         to auto_inc_dec".
25280         * mode-switching.c (pass_mode_switching): Rename pass from
25281         "mode-sw" to "mode_sw".
25282         * except.c (pass_convert_to_eh_ranges): Rename pass from
25283         "eh-ranges" to "eh_ranges".
25284         * lower-subreg.c (pass_lower_subreg): Renamed pass from "subreg"
25285         to "subreg1".
25286
25287
25288 2009-01-29  Andrey Belevantsev  <abel@ispras.ru>
25289             Alexander Monakov  <amonakov@ispras.ru>
25290
25291         PR middle-end/38857
25292         * sel-sched.c (count_occurrences_1): Check that *cur_rtx is a hard
25293         register.
25294         (move_exprs_to_boundary): Change return type and pass through
25295         should_move from move_op.  Relax assert.  Update usage ...
25296         (schedule_expr_on_boundary): ... here.  Use should_move instead of
25297         cant_move.
25298         (move_op_orig_expr_found): Indicate that insn was disconnected from
25299         stream.
25300         (code_motion_process_successors): Do not call after_merge_succs
25301         callback if original expression was not found when traversing any of
25302         the branches.
25303         (code_motion_path_driver): Change return type.  Update prototype.
25304         (move_op): Update comment.  Add a new parameter (should_move).  Update
25305         prototype.  Set *should_move based on indication provided by
25306         move_op_orig_expr_found.
25307
25308 2009-01-28  Pat Haugen  <pthaugen@us.ibm.com>
25309
25310         * doc/invoke.texi (avoid-indexed-addresses): Document new option.
25311         * config/rs6000/rs6000-protos.h (avoiding_indexed_address_p): Declare.
25312         * config/rs6000/rs6000.opt (avoid-indexed-addresses): New option.
25313         * config/rs6000/rs6000.c (rs6000_override_options): Default
25314         avoid-indexed-addresses on for Power6, off for everything else.
25315         (avoiding_indexed_address_p): New function.
25316         (rs6000_legitimize_address): Use it.
25317         (rs6000_legitimate_address): Likewise.
25318         * config/rs6000/rs6000.md (movXX_updateX): Likewise
25319
25320 2009-01-28  Kazu Hirata  <kazu@codesourcery.com>
25321
25322         PR tree-optimization/38997
25323         * tree-loop-distribution.c (generate_memset_zero): Use
25324         POINTER_PLUS_EXPR for a pointer addition.
25325
25326 2009-01-28  Andreas Krebbel  <krebbel1@de.ibm.com>
25327
25328         * config/s390/s390.md (bswap<mode>2): New pattern added.
25329
25330 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
25331
25332         * config/s390/s390.md (*tls_load_31): Added type attribute.
25333
25334 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
25335
25336         * config/s390/s390.md: Fix a few comments.
25337
25338 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
25339
25340         * config/s390/s390.md (*tmsi_reg): Fixed z10prop attribute.
25341         (*tm<mode>_full): Fixed z10prop attribute.
25342         (*tst<mode>_extimm): Fixed z10prop attribute.
25343         (*tst<mode>_cconly_extimm): Fixed z10prop attribute.
25344         (*tstqiCCT_cconly): Fixed z10prop attribute.
25345         (*cmpsi_ccu_zerohi_rlsi): Fixed z10prop attribute.
25346         (*movsi_larl): Fixed z10prop attribute.
25347         (*movsi_zarch): Fixed z10prop attribute.
25348         (*movsi_eas): Fixed z10prop attribute.
25349         (*movhi): Fixed z10prop attribute.
25350         (*movqi): Fixed z10prop attribute.
25351         (*movstrictqi): Fixed z10prop attribute.
25352         (*mov<mode>): Fixed z10prop attribute.
25353         (*movcc): Fixed z10prop attribute.
25354         (*sethighpartdi_64): Fixed z10prop attribute.
25355         (*zero_extendhi<mode>2_z10): Fixed z10prop attribute.
25356         (*negdi2_sign_cc): Fixed z10prop attribute.
25357         (*negdi2_sign): Fixed z10prop attribute.
25358         (*absdi2_sign_cc): Fixed z10prop attribute.
25359         (*absdi2_sign): Fixed z10prop attribute.
25360         (*negabsdi2_sign_cc): Fixed z10prop attribute.
25361         (*negabsdi2_sign): Fixed z10prop attribute.
25362         (*cmp_and_trap_signed_int<mode>): Fixed z10prop attribute.
25363         (*cmp_and_trap_unsigned_int<mode>): Fixed z10prop attribute.
25364         (doloop_si64): Fixed z10prop attribute.
25365         (doloop_si31): Fixed z10prop attribute.
25366         (doloop_long): Fixed z10prop attribute.
25367         (indirect_jump): Fixed z10prop attribute.
25368         (nop): Fixed z10prop attribute.
25369         (main_base_64): Fixed z10prop attribute.
25370         (reload_base_64): Fixed z10prop attribute.
25371
25372 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
25373
25374         PR rtl-optimization/38740
25375         * reorg.c (gate_handle_delay_slots): Avoid dbr scheduling
25376         if !optimize.
25377         * config/mips/mips.c (mips_reorg): Likewise.
25378
25379 2009-01-28  Richard Guenther  <rguenther@suse.de>
25380
25381         PR tree-optimization/38926
25382         * tree-ssa-pre.c (add_to_value): Assert we add only expressions
25383         with the correct value id to a value.
25384         (do_regular_insertion): Use the value number of edoubleprime
25385         for the value number of the expr.
25386
25387         Revert
25388         2008-08-21  Richard Guenther  <rguenther@suse.de>
25389
25390         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
25391         a PHI ask VN if it is already available.
25392         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
25393         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
25394
25395 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
25396
25397         PR middle-end/38934
25398         * tree-vrp.c (extract_range_from_assert): For LE_EXPR and LT_EXPR
25399         set to varying whenever max has TREE_OVERFLOW set, similarly
25400         for GE_EXPR and GT_EXPR and TREE_OVERFLOW min.
25401
25402 2009-01-28  Richard Guenther  <rguenther@suse.de>
25403
25404         PR middle-end/38908
25405         * tree-ssa.c (warn_uninitialized_var): Do not warn for seemingly
25406         uninitialized aggregate uses in call arguments.
25407
25408 2009-01-28  Paolo Bonzini  <bonzini@gnu.org>
25409
25410         PR tree-optimization/38984
25411         * tree-ssa-structalias.c (get_constraints_for_1): Do not use
25412         the nothing_id variable if -fno-delete-null-pointer-checks.
25413
25414 2009-01-28  Uros Bizjak  <ubizjak@gmail.com>
25415
25416         PR target/38988
25417         * config/i386/i386.md (set_rip_rex64): Wrap operand 1 in label_ref.
25418         (set_got_offset_rex64): Ditto.
25419
25420 2009-01-27  H.J. Lu  <hongjiu.lu@intel.com>
25421
25422         PR target/38941
25423         * doc/extend.texi: Improve local variable with asm reg.
25424
25425 2009-01-27  Adam Nemet  <anemet@caviumnetworks.com>
25426
25427         * c.opt (Wpacked-bitfield-compat): Change init value to -1.
25428         * c-opts.c (c_common_post_options): If -W*packed-bitfield-compat
25429         was not supplied then set warn_packed_bitfield_compat to the
25430         default value of 1.
25431         * stor-layout.c (place_field): Check warn_packed_bitfield_compat
25432         against 1.
25433
25434 2009-01-27  Richard Guenther  <rguenther@suse.de>
25435
25436         PR tree-optimization/38503
25437         * cfgexpand.c (expand_gimple_basic_block): Ignore
25438         GIMPLE_CHANGE_DYNAMIC_TYPE during expansion.
25439         * tree-ssa-structalias.c (set_uids_in_ptset): Do not prune
25440         variables that cannot have TBAA applied.
25441         (compute_points_to_sets): Do not remove GIMPLE_CHANGE_DYNAMIC_TYPE
25442         statements.
25443
25444 2009-01-27  Uros Bizjak  <ubizjak@gmail.com>
25445
25446         PR middle-end/38969
25447         * calls.c (initialize_argument_information): Do not wrap complex
25448         arguments in SAVE_EXPR.
25449
25450 2009-01-26  Andreas Tobler  <a.tobler@schweiz.org>
25451
25452         * config/t-vxworks (LIBGCC2_INCLUDES): Fix typo.
25453         (INSTALL_LIBGCC): Revert typo commit.
25454
25455 2009-01-26  Richard Guenther  <rguenther@suse.de>
25456
25457         PR tree-optimization/38745
25458         * tree-ssa-alias.c (update_alias_info_1): Exclude RESULT_DECL
25459         from special handling.
25460
25461 2009-01-26  Richard Guenther  <rguenther@suse.de>
25462
25463         PR tree-optimization/38745
25464         * tree-ssa.c (execute_update_addresses_taken): Do not include
25465         variables that cannot possibly be a register in not_reg_needs.
25466         Do not clear TREE_ADDRESSABLE on vars that may not become
25467         registers.
25468         * tree-ssa.c (update_alias_info_1): Include those in the set
25469         of addressable vars.
25470
25471 2009-01-26  Richard Guenther  <rguenther@suse.de>
25472
25473         PR middle-end/38851
25474         * Makefile.in (tree-ssa-dse.o): Add langhooks.h.
25475         * tree-ssa-dse.c: Include langhooks.h
25476         (execute_simple_dse): Remove stores with zero size.
25477
25478 2009-01-24  Jakub Jelinek  <jakub@redhat.com>
25479
25480         PR c/38957
25481         * c-typeck.c (c_finish_return): Handle POINTER_PLUS_EXPR the same way
25482         as PLUS_EXPR.
25483
25484 2009-01-24  Julian Brown  <julian@codesourcery.com>
25485
25486         * config/arm/t-linux-eabi (LIB2FUNCS_STATIC_EXTRA): Add
25487         config/arm/linux-atomic.c.
25488         * config/arm/linux-atomic.c: New.
25489
25490 2009-01-24  Eric Botcazou  <ebotcazou@adacore.com>
25491
25492         * config/sparc/linux.h (DBX_REGISTER_NUMBER): Delete.
25493         * config/sparc/linux64.h (DBX_REGISTER_NUMBER): Likewise.
25494         * config/sparc/sysv4.h (DBX_REGISTER_NUMBER): Likewise.
25495
25496 2009-01-24  H.J. Lu  <hongjiu.lu@intel.com>
25497
25498         PR c/38938
25499         * c-opts.c (c_common_handle_option): Update warn_pointer_sign
25500         properly.
25501
25502 2009-01-24  Sebastian Pop  <sebastian.pop@amd.com>
25503
25504         PR tree-optimization/38953
25505         * graphite.c (graphite_verify): Add a call to verify_loop_closed_ssa.
25506         (scop_adjust_phis_for_liveouts): Initialize false_i to zero.
25507         (gloog): Split the exit of the scop when the scop exit is a loop exit.
25508         (graphite_transform_loops): Only call cleanup_tree_cfg if gloog
25509         changed the CFG.
25510
25511 2009-01-24  Paul Brook  <paul@codesourcery.com>
25512
25513         * config/arm/neon.md (neon_type): Move to arm.md.
25514         (neon_mov<VSTRUCT>): Add neon_type attribute.
25515         * config/arm/arm.md (neon_type): Move to here.
25516         (conds): Add "unconditioal" and use as default for NEON insns.
25517
25518 2009-01-24  Ben Elliston  <bje@au.ibm.com>
25519
25520         * bitmap.h (BITMAP_FREE): Eliminate `implicit conversion from
25521         void *' warning from -Wc++-compat.
25522         * Makefile.in (dominance.o-warn): Remove.
25523
25524 2009-01-23  Paolo Bonzini  <bonzini@gnu.org>
25525
25526         PR tree-optimization/38932
25527         * fold-const.c (fold_unary_ignore_overflow): New.
25528         * tree.h (fold_unary_ignore_overflow): Declare.
25529         * tree-ssa-ccp.c (ccp_fold): Use fold_unary_ignore_overflow.
25530         * tree-ssa-sccvn.c (visit_reference_op_load,
25531         simplify_unary_expression): Likewise.
25532
25533 2009-01-22  Adam Nemet  <anemet@caviumnetworks.com>
25534
25535         * c-decl.c (finish_struct): Move code to set DECL_PACKED after
25536         DECL_BIT_FIELD is alreay known.  Also inherit packed for bitfields
25537         regardless of their type.
25538         * c-common.c (handle_packed_attribute): Don't ignore packed on
25539         bitfields.
25540         * c.opt (Wpacked-bitfield-compat): New warning option.
25541         * stor-layout.c (place_field): Warn if offset of a field changed.
25542         * doc/extend.texi (packed): Mention the ABI change.
25543         * doc/invoke.texi (-Wpacked-bitfield-compat): Document.
25544         (Warning Options): Add it to the list.
25545
25546 2009-01-22  H.J. Lu  <hongjiu.lu@intel.com>
25547
25548         * c-opts.c (c_common_post_options): Fix a typo in comments.
25549
25550 2009-01-22  Steve Ellcey  <sje@cup.hp.com>
25551
25552         PR middle-end/38615
25553         * gimplify.c (gimplify_init_constructor): Fix promotion of const
25554         variables to static.
25555         * doc/invoke.texi (-fmerge-all-constants): Update description.
25556
25557 2009-01-22  Uros Bizjak  <ubizjak@gmail.com>
25558
25559         PR target/38931
25560         * config/i386/i386.md (*movsi_1): Use type "mmx" for alternative 2.
25561         (*movdi_1_rex64): Use type "mmx" for alternative 5.
25562
25563 2009-01-22  Richard Earnshaw  <rearnsha@arm.com>
25564
25565         * arm.h (DATA_ALIGNMENT): Align structures, unions and arrays to
25566         a word boundary.
25567         (LOCAL_ALIGNMENT): Similarly.
25568
25569 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
25570             Joseph Myers  <joseph@codesourcery.com>
25571
25572         * config/arm/arm.c (all_architectures): Add iWMMXt2 entry.
25573         * config/arm/arm-cores.def: New ARM_CORE entry for iWMMXt2.
25574         * config/arm/arm-tune.md: Regenerate.
25575         * doc/invoke.texi (ARM Options): Document -mcpu=iwmmxt2 and
25576         -march=iwmmxt2.
25577
25578 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
25579
25580         * config/arm/bpabi.h (SUBTARGET_EXTRA_ASM_SPEC): Bump EABI
25581         version number to five.
25582
25583 2009-01-22  Dodji Seketeli  <dodji@redhat.com>
25584
25585         PR c++/38930
25586         * c-decl.c (clone_underlying_type): Revert PR c++/26693 changes.
25587         * c-common.c (set_underlying_type): Likewise.
25588         (is_typedef_decl ): Likewise
25589         * tree.h: Likewise
25590         (set_underlying_type): Likewise.
25591         (is_typedef_type): Likewise.
25592
25593 2009-01-21  Vladimir Makarov  <vmakarov@redhat.com>
25594
25595         PR middle-end/38587
25596         * ira-color.c (coalesce_spill_slots): Don't coalesce allocnos
25597         crossing setjmps.
25598
25599 2009-01-21  Dave Korn  <dave.korn.cygwin@gmail.com>
25600
25601         PR bootstrap/37660
25602         * config/i386/cygwin.h (SHARED_LIBGCC_SPEC):  New helper macro.
25603         (LIBGCC_SPEC):  Don't define.
25604         (REAL_LIBGCC_SPEC):  Define instead, using SHARED_LIBGCC_SPEC.
25605
25606 2009-01-21  Uros Bizjak  <ubizjak@gmail.com>
25607
25608         PR rtl-optimization/38879
25609         * alias.c (base_alias_check): Unaligned access via AND address can
25610         alias all surrounding object types except those with sizes equal
25611         or wider than the size of unaligned access.
25612
25613 2009-01-21  Dodji Seketeli  <dodji@redhat.com>
25614
25615         PR c++/26693
25616         * c-decl.c (clone_underlying_type): Move this ...
25617         * c-common.c (set_underlying_type): ... here.
25618         Also, make sure the function properly sets TYPE_STUB_DECL() on
25619         the newly created typedef variant type.
25620         (is_typedef_decl ): New entry point.
25621         * tree.h: Added a new member member_types_needing_access_check to
25622         struct tree_decl_non_common.
25623         (set_underlying_type): New entry point.
25624         (is_typedef_type): Likewise.
25625
25626 2009-01-21  Bingfeng Mei  <bmei@broadcom.com>
25627
25628         * alias.c (walk_mems_1, walk_mems_2, insn_alias_sets_conflict_p):
25629         Check whether two instructions have memory references that
25630         belong to conflicting alias sets.  walk_mems_1 and walk_mems_2
25631         are helper functions for traversing.
25632         * alias.h (insn_alias_sets_confilict_p): New prototypes.
25633         * ddg.c (add_inter_loop_mem_dep): Call insn_alias_sets_conflict_p
25634         not to draw dependency edge for instructions with non-conflicting
25635         alias sets.
25636
25637 2009-01-20  Joseph Myers  <joseph@codesourcery.com>
25638
25639         PR other/38758
25640         * longlong.h: Update copyright years.  Use soft-fp license notice.
25641         Sync __clz_tab declaration with glibc.
25642
25643 2009-01-20  Steve Ellcey  <sje@cup.hp.com>
25644
25645         PR target/30687
25646         * doc/extend.texi (syscall_linkage): New.
25647         (version_id): Modify.
25648
25649 2009-01-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
25650             Richard Guenther  <rguenther@suse.de>
25651
25652         PR tree-optimization/38747
25653         PR tree-optimization/38748
25654         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Disable the VCE
25655         conversion if the base address is an indirect reference and the
25656         aliasing sets could cause issues.
25657
25658 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
25659
25660         * common.opt (fgraphite, fgraphite-identity): Add comment for
25661         explaining why these options are not documented.
25662
25663 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
25664
25665         * graphite.c (stmt_simple_for_scop_p): Also handle cases when
25666         gimple_call_lhs is NULL.
25667
25668 2009-01-20  Paolo Bonzini  <bonzini@gnu.org>
25669
25670         PR target/38868
25671         * emit-rtl.c (adjust_address_1): Make sure memref is never
25672         overwritten.
25673
25674 2009-01-20  Ben Elliston  <bje@au.ibm.com>
25675
25676         * libgcov.c (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
25677         const qualifier from arg parameter. Remove unnecessary cast to char *.
25678         * gcov-io.h (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
25679         const qualifier from arg 2.
25680
25681 2009-01-19  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
25682
25683         * config/darwin.h: Add static-libgfortran to LINK_SPEC.
25684
25685 2009-01-19  Vladimir Makarov  <vmakarov@redhat.com>
25686
25687         PR c/38869
25688         * rtl.h (reinit_regs): New prototype.
25689         * regclass.c: Include ira.h.
25690         (reinit_regs): New.
25691         * Makefile.in (regclass.o): Add ira.h.
25692         * config/i386/i386.c (ix86_maybe_switch_abi): Use reinit_regs.
25693
25694 2009-01-18  H.J. Lu  <hongjiu.lu@intel.com>
25695
25696         PR target/38736
25697         * c-common.c (handle_aligned_attribute): Use
25698         ATTRIBUTE_ALIGNED_VALUE instead of BIGGEST_ALIGNMENT for
25699         default alignment value.
25700
25701         * c-cppbuiltin.c (c_cpp_builtins): Define __BIGGEST_ALIGNMENT__.
25702
25703         * defaults.h (ATTRIBUTE_ALIGNED_VALUE): New.
25704         * config/i386/i386.h (ATTRIBUTE_ALIGNED_VALUE): Likewise.
25705
25706         * doc/extend.texi: Update __attribute__ ((aligned)).  Document
25707         __BIGGEST_ALIGNMENT__.
25708
25709         * doc/tm.texi: Document ATTRIBUTE_ALIGNED_VALUE.
25710
25711 2009-01-18  Richard Guenther  <rguenther@suse.de>
25712
25713         PR tree-optimization/38819
25714         * tree-flow.h (operation_could_trap_helper_p): Declare.
25715         * tree-eh.c (operation_could_trap_helper_p): Export.
25716         * tree-ssa-sccvn.h (vn_nary_may_trap): Declare.
25717         * tree-ssa-sccvn.c (vn_nary_may_trap): New function.
25718         * tree-ssa-pre.c (insert_into_preds_of_block): Check if we
25719         are about to insert a possibly trapping instruction and fail
25720         in this case.
25721
25722 2009-01-18  Andreas Schwab  <schwab@suse.de>
25723
25724         * doc/install.texi (Configuration): Remove obsolete paragraph
25725         about use of --with-gnu-ld with --with-gnu-as.
25726
25727 2009-01-18  Kazu Hirata  <kazu@codesourcery.com>
25728
25729         * doc/extend.texi, doc/gimple.texi, doc/invoke.texi,
25730         doc/md.texi, doc/sourcebuild.texi, doc/tm.texi: Fix typos.
25731         Follow spelling conventions.
25732
25733 2009-01-18  Ben Elliston  <bje@au.ibm.com>
25734
25735         * bitmap.c (bitmap_obstack_alloc_stat): Adjust cast to eliminate
25736         C++ warning about implicit conversion from void * to struct
25737         bitmap_head_def *.
25738         (bitmap_obstack_free): Likewise for bitmap_element *.
25739         * Makefile.in (bitmap.o-warn): Remove.
25740
25741 2009-01-17  Dave Korn  <dave.korn.cygwin@gmail.com>
25742
25743         * Makefile.in (BACKENDLIBS):  Reorder to match dependencies.
25744
25745 2009-01-17  Sebastian Pop  <sebastian.pop@amd.com>
25746             Tobias Grosser  <tobi.grosser@amd.com>
25747
25748         * graphite.c (graphite_trans_scop_block): Do not block single
25749         nested loops.
25750
25751 2009-01-16  Alexandre Oliva  <aoliva@redhat.com>
25752
25753         * ebitmap.h (ebitmap_iter_init): Initialize all fields.
25754         * ipa-struct-reorg.c (gen_struct_type): Replace known-true
25755         test with assertion.
25756
25757 2009-01-16  Richard Guenther  <rguenther@suse.de>
25758
25759         PR tree-optimization/38835
25760         PR middle-end/36227
25761         * fold-const.c (fold_binary): Remove PTR + INT -> (INT)(PTR p+ INT)
25762         and INT + PTR -> (INT)(PTR p+ INT) folding.
25763         * tree-ssa-address.c (create_mem_ref): Properly use POINTER_PLUS_EXPR.
25764
25765 2009-01-16  Adam Nemet  <anemet@caviumnetworks.com>
25766
25767         PR target/38554
25768         * expmed.c (expand_shift): With SHIFT_COUNT_TRUNCATED, don't lift
25769         the subreg from a lowpart subreg if it is also casting the value.
25770
25771 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
25772             Tobias Grosser  <tobi.grosser@amd.com>
25773
25774         * graphite.c (compare_prefix_loops): New.
25775         (build_scop_canonical_schedules): Rewritten.
25776         (graphite_transform_loops): Move build_scop_canonical_schedules
25777         after build_scop_iteration_domain.
25778
25779 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
25780             Tobias Grosser  <tobi.grosser@amd.com>
25781
25782         * graphite.c (add_conditions_to_domain): Add the loops to
25783         the dimension of the iteration domain.  Do copy the domain
25784         only when it exists.
25785         (build_scop_conditions_1): Do not call add_conditions_to_domain.
25786         (add_conditions_to_constraints): New.
25787         (can_generate_code_stmt, can_generate_code): Removed.
25788         (gloog): Do not call can_generate_code.
25789         (graphite_transform_loops): Call add_conditions_to_constraints
25790         after building the iteration domain.
25791
25792 2009-01-16  Jakub Jelinek  <jakub@redhat.com>
25793
25794         PR tree-optimization/38789
25795         * tree-ssa-threadedge.c
25796         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
25797         __builtin_constant_p.
25798
25799 2009-01-16  Kenneth Zadeck  <zadeck@naturalbridge.com>
25800
25801         * dce.c (delete_unmarked_insns): Reversed the order that insns are
25802         examined before deleting them.
25803
25804 2009-01-16  Richard Earnshaw  <rearnsha@arm.com>
25805
25806         * function.c (aggregate_value_p): Correctly extract the function
25807         type from CALL_EXPR_FN lookup.
25808
25809 2009-01-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
25810
25811         * config/picochip/picochip.c (picochip_override_options): Revert
25812         CFI asm flag disable commited previously.
25813
25814 2009-01-15  Sebastian Pop  <sebastian.pop@amd.com>
25815             Tobias Grosser  <tobi.grosser@amd.com>
25816             Jan Sjodin  <jan.sjodin@amd.com>
25817
25818         * graphite.c (scan_tree_for_params): On substractions negate
25819         all the coefficients of the term.
25820         (clast_to_gcc_expression_red): New.  Handle reduction expressions
25821         of more than two operands.
25822         (clast_to_gcc_expression): Call clast_to_gcc_expression_red.
25823         (get_vdef_before_scop): Handle also the case of default definitions.
25824
25825 2009-01-15  Richard Sandiford  <rdsandiford@googlemail.com>
25826
25827         * caller-save.c (add_used_regs_1, add_used_regs): New functions.
25828         (insert_one_insn): Use them instead of REG_DEAD and REG_INC notes.
25829         Also use them when walking CALL_INSN_FUNCTION_USAGE.
25830
25831 2009-01-15  H.J. Lu  <hongjiu.lu@intel.com>
25832             Joey Ye  <joey.ye@intel.com>
25833
25834         PR middle-end/37843
25835         * cfgexpand.c (expand_stack_alignment): Don't update stack
25836         boundary nor check incoming stack boundary here.
25837         (gimple_expand_cfg): Update stack boundary and check incoming
25838         stack boundary here.
25839
25840 2009-01-15  Kenneth Zadeck  <zadeck@naturalbridge.com>
25841
25842         * dce.c (find_call_stack_args, delete_unmarked_insns): Fixed comments.
25843
25844 2009-01-14  Jakub Jelinek  <jakub@redhat.com>
25845
25846         PR rtl-optimization/38245
25847         * calls.c (expand_call): Add stack arguments to
25848         CALL_INSN_FUNCTION_USAGE even for pure calls (when
25849         ACCUMULATE_OUTGOING_ARGS) and even for args partially passed
25850         in regs and partially in memory or BLKmode arguments.
25851         (emit_library_call_value_1): Add stack arguments to
25852         CALL_INSN_FUNCTION_USAGE even for pure calls (when
25853         ACCUMULATE_OUTGOING_ARGS).
25854         * dce.c: Include tm_p.h.
25855         (find_call_stack_args): New function.
25856         (deletable_insn_p): Call it for CALL_P insns.  Add ARG_STORES
25857         argument.
25858         (mark_insn): Call find_call_stack_args for CALL_Ps.
25859         (prescan_insns_for_dce): Walk insns backwards in bb rather than
25860         forwards.  Allocate and free arg_stores bitmap if needed, pass it
25861         down to deletable_insn_p, don't mark stores set in arg_stores
25862         bitmap, clear the bitmap at the beginning of each bb.
25863         * Makefile.in (dce.o): Depend on $(TM_P_H).
25864
25865 2009-01-14  Michael Meissner  <gnu@the-meissners.org>
25866
25867         PR target/22599
25868         * config/i386/i386.c (print_operand): Add tests for 'D', 'C', 'F', 'f'
25869         to make sure the insn is a conditional test (bug 22599).  Reformat a
25870         few long lines.
25871
25872 2009-01-14  Sebastian Pop  <sebastian.pop@amd.com>
25873
25874         PR middle-end/38431
25875         * graphite.c (get_vdef_before_scop, scop_adjust_vphi): New.
25876         (scop_adjust_phis_for_liveouts): Call scop_adjust_vphi.
25877         (gloog): Do not call cleanup_tree_cfg.
25878         (graphite_transform_loops): Call cleanup_tree_cfg after all
25879         scops have been code generated.
25880
25881 2009-01-14  Basile Starynkevitch  <basile@starynkevitch.net>
25882         * doc/gty.texi (Invoking the garbage collector): Added new node
25883         and section documenting ggc_collect.
25884
25885 2009-01-14  Richard Guenther  <rguenther@suse.de>
25886
25887         PR tree-optimization/38826
25888         PR middle-end/38477
25889         * tree-ssa-structalias.c (emit_alias_warning): Emit the pointer
25890         initialization notes only if we actually emitted a warning.
25891         (intra_create_variable_infos): Add constraints for a result decl
25892         that is passed by hidden reference.
25893         (build_pred_graph): Mark all related variables non-direct on
25894         address-taking.
25895
25896 2009-01-14  Nick Clifton  <nickc@redhat.com>
25897
25898         * ira-conflicts.c: Include addresses.h for the definition of
25899         base_reg_class.
25900         (ira_build_conflicts): Use base_reg_class instead of BASE_REG_CLASS.
25901         * Makefile.in: Add a dependency of ira-conflicts.o on addresses.h.
25902
25903 2009-01-13  Vladimir Makarov  <vmakarov@redhat.com>
25904
25905         PR target/38811
25906         * Makefile.in (ira-lives.o): Add except.h.
25907
25908         * ira-lives.c: Include except.h.
25909         (process_bb_node_lives): Process can_throw_internal.
25910
25911 2009-01-13  Jakub Jelinek  <jakub@redhat.com>
25912
25913         PR rtl-optimization/38774
25914         * combine.c (simplify_set): When undoing cc_use change, don't do
25915         PUT_CODE on the newly created comparison, but instead put back the
25916         old comparison.
25917
25918 2009-01-13  Joseph Myers  <joseph@codesourcery.com>
25919
25920         * doc/invoke.texi (ARM Options): Update lists of -mcpu and -march
25921         values.  Remove duplicate arm8 entry.
25922
25923 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
25924
25925         PR tree-optimization/38786
25926         * graphite.c (expand_scalar_variables_ssa_name): New, outlined from
25927         the SSA_NAME case of expand_scalar_variables_expr.
25928         Set the type of an expression to the type of its assign statement.
25929         (expand_scalar_variables_expr): Also gather the scalar computation
25930         used to index the memory access.  Do not pass loop_p.
25931         Fix comment.  Stop recursion on tcc_constant or tcc_declaration.
25932         (expand_scalar_variables_stmt): Pass to expand_scalar_variables_expr
25933         the gimple_stmt_iterator where it inserts new code.
25934         Do not pass loop_p.
25935         (copy_bb_and_scalar_dependences): Do not pass loop_p.
25936         (translate_clast): Update call to copy_bb_and_scalar_dependences.
25937
25938 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
25939
25940         * graphite.h (debug_value): Removed.
25941         * graphite.c (debug_value): Removed.
25942
25943 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
25944
25945         * config/arm/arm.c (output_move_double): Don't synthesize thumb-2
25946         ldrd/strd with two 32-bit instructions.
25947
25948 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
25949
25950         * config/arm/arm.c (struct processors): Pass for speed down into
25951         cost helper functions.
25952         (const_ok_for_op): Handle COMPARE and inequality nodes.
25953         (arm_rtx_costs_1): Rewrite.
25954         (arm_size_rtx_costs): Update prototype.
25955         (arm_rtx_costs): Pass speed down to helper functions.
25956         (arm_slowmul_rtx_costs): Rework cost calculations.
25957         (arm_fastmul_rtx_costs, arm_xscale_rtx_costs): Likewise.
25958         (arm_9e_rtx_costs): Likewise.
25959
25960 2009-01-13  Uros Bizjak  <ubizjak@gmail.com>
25961
25962         * config/alpha/alpha.c (alpha_legitimate_address_p): Explicit
25963         relocations of local symbols wider than UNITS_PER_WORD are not valid.
25964         (alpha_legitimize_address): Do not split local symbols wider than
25965         UNITS_PER_WORD into HIGH/LO_SUM parts.
25966
25967 2009-01-13  Danny Smith  <dannysmith@users.sourceforge.net>
25968
25969         PR bootstrap/38580
25970         * gcc.c (process_command): Replace call to execvp with calls
25971         to pex_one and exit.
25972
25973 2009-01-03  Anatoly Sokolov  <aesok@post.ru>
25974
25975         PR target/29141
25976         * config/avr/t-avr (LIB1ASMFUNCS): Add _tablejump_elpm.
25977         * config/avr/libgcc.S (__do_global_ctors, __do_global_dtors): Add
25978         variant for devices with 3-byte PC.
25979         (__tablejump_elpm__): New.
25980
25981 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
25982
25983         PR c/32041
25984         * c-parser.c (c_parser_postfix_expression): Allow `->' in
25985         offsetof member-designator, handle it as `[0].'.
25986
25987 2009-01-12  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
25988
25989         * pa.c (pa_asm_output_mi_thunk): Use pc-relative branch to thunk
25990         function when not using named sections on targets with named sections
25991         if branch distance is less than 262132.
25992
25993 2009-01-12  Richard Earnshaw  <rearnsha@arm.com>
25994
25995         * combine.c (combine_instructions):  Recompute
25996         optimize_this_for_speed_p  for each BB in the main combine loop.
25997
25998 2009-01-12  Tomas Bily  <tbily@suse.cz>
25999
26000         PR middlend/38385
26001         * tree-loop-distribution.c (prop_phis): New function.
26002         (generate_builtin): Call prop_phis.
26003
26004 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
26005
26006         PR tree-optimization/38807
26007         * tree-ssa-reassoc.c (remove_visited_stmt_chain): Don't look at
26008         gimple_visited_p unless stmt is GIMPLE_ASSIGN.
26009
26010 2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
26011
26012         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
26013         subreg of op0 to the original op0.
26014
26015 2009-01-11  Laurent GUERBY  <laurent@guerby.net>
26016
26017         * doc/sourcebuild.texi (Source Tree): Move up intl and fixinc.
26018
26019 2009-01-11  Markus Schoepflin  <markus.schoepflin@comsoft.de>
26020
26021         PR debug/7055
26022         * mips-tfile.c (parse_def): Fix parsing of def strings
26023         starting with digits.
26024
26025 2009-01-10  Jakub Jelinek  <jakub@redhat.com>
26026
26027         PR target/38695
26028         * config/arm/arm.c (arm_is_long_call_p): Don't call
26029         arm_function_in_section_p if decl isn't a FUNCTION_DECL.
26030
26031 2009-01-09  Steven Bosscher  <steven@gcc.gnu.org>
26032
26033         * regrename.c (regrename_optimize): Fix dumping.
26034         (find_oldest_value_reg): Preserve REG_POINTER.
26035         (copy_hardreg_forward_1): Likewise.
26036
26037 2009-01-09  Diego Novillo  <dnovillo@google.com>
26038
26039         * gimple.h (struct gimple_statement_base) <uid>: Document
26040         the restrictions on its use.
26041         (gimple_uid): Tidy.
26042         (gimple_set_uid): Tidy.
26043
26044 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
26045
26046         * config/i386/i386.c (ix86_expand_movmem, ix86_expand_setmem): Add
26047         zero guard even if align_bytes != 0 and count is smaller than
26048         size_needed.
26049
26050 2009-01-09  Vladimir Makarov  <vmakarov@redhat.com>
26051
26052         PR rtl-optimization/38495
26053         * ira-emit.c (print_move_list, ira_debug_move_list): New functions.
26054         (add_range_and_copies_from_move_list): Print all added ranges.
26055         Add ranges to memory optimized destination.
26056
26057 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
26058
26059         PR target/38686
26060         PR target/38708
26061         * config/i386/i386.c (override_options): Reject
26062         -mstringop-strategy=rep_8byte with -m32.
26063         (ix86_expand_movmem): For size_needed == 1 set epilogue_size_needed
26064         to 1.  Do count comparison against epilogue_size_needed at compile
26065         time even when count_exp was constant forced into register.  For
26066         size_needed don't jump to epilogue, instead just avoid aligning
26067         and invoke the body algorithm.  If need_zero_guard, add zero guard
26068         even if count is non-zero, but smaller than size_needed + number of
26069         bytes that could be stored for alignment.
26070         (ix86_expand_setmem): For size_needed == 1 set epilogue_size_needed
26071         to 1.  If need_zero_guard, add zero guard even if count is non-zero,
26072         but smaller than size_needed + number of bytes that could be stored
26073         for alignment.  Compare size_needed with epilogue_size_needed instead
26074         of desired_align - align, don't adjust size_needed, pass
26075         epilogue_size_needed to the epilogue expanders.
26076
26077         PR c/35742
26078         * c-pretty-print.c (pp_c_expression): Handle GOTO_EXPR like BIND_EXPR.
26079
26080 2009-01-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
26081
26082         * pa.c (last_address): Change to unsigned.
26083         (update_total_code_bytes): Change argument to unsigned.  Don't
26084         check if insn addresses are set.
26085         (pa_output_function_epilogue): Set last_address to UINT_MAX if insn
26086         addresses are not set.
26087         (pa_asm_output_mi_thunk): Handle wrap when updating last_address.
26088
26089 2009-01-09  Nick Clifton  <nickc@redhat.com>
26090
26091         * config/sh/symbian.c: Replace uses of DECL_INLINE with
26092         DECL_DECLARED_INLINE_P.
26093
26094 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
26095
26096         PR middle-end/38347
26097         * dojump.c (do_jump_by_parts_zero_rtx): Use mode instead of
26098         GET_MODE (op0) in operand_subword_force calls.
26099
26100         PR middle-end/38771
26101         * fold-const.c (fold_unary): For COMPOUND_EXPR and COND_EXPR,
26102         fold_convert arg0 operands to TREE_TYPE (op0) first.
26103
26104 2009-01-08  Vladimir Makarov  <vmakarov@redhat.com>
26105
26106         * params.def (ira-max-conflict-table-size): Decrease default value
26107         to 1000.
26108
26109 2009-01-08  Jakub Jelinek  <jakub@redhat.com>
26110
26111         PR tree-optimization/37031
26112         * lambda-code.c (lambda_collect_parameters): Call pointer_set_destroy
26113         on parameter_set.
26114         (build_access_matrix): Reserve correct size for AM_MATRIX vector,
26115         allocate it using gc instead of heap, use VEC_quick_push instead of
26116         VEC_safe_push.
26117         * graphite.c (build_access_matrix): Allocate AM_MATRIX vector using gc
26118         instead of heap, use VEC_quick_push instead of VEC_safe_push.
26119         * tree-data-ref.h (struct access_matrix): Change matrix to gc
26120         allocated vector from heap allocated.
26121         * lambda.h: Add DEF_VEC_ALLOC_P for gc allocated lambda_vector.
26122         * tree-loop-linear.c (linear_transform_loops): Allocate nest
26123         vector only after perfect_loop_nest_depth call.
26124
26125 2009-01-08  Sebastian Pop  <sebastian.pop@amd.com>
26126             Jan Sjodin  <jan.sjodin@amd.com>
26127
26128         PR tree-optimization/38559
26129         * graphite.c (debug_value, copy_constraint,
26130         swap_constraint_variables, scale_constraint_variable, ): New.
26131         (get_lower_bound, get_upper_bound): Removed.
26132         (graphite_trans_bb_strip_mine): Clean up this code that works
26133         only for constant number of iterations.  Fully copy upper and
26134         lower bound constraints, not only the constant part of them.
26135         * graphite.h (debug_value): Declared.
26136
26137 2009-01-08  Ira Rosen  <irar@il.ibm.com>
26138
26139         PR tree-optimization/37194
26140         * tree-vect-transform.c (vect_estimate_min_profitable_iters):
26141         Don't add the cost of cost model guard in prologue to scalar
26142         outside cost in case of known number of iterations.
26143
26144 2009-01-07  Nathan Froyd  <froydnj@codesourcery.com>
26145             Alan Modra  <amodra@bigpond.net.au>
26146
26147         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check for
26148         non-word-aligned REG+CONST addressing.
26149
26150 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
26151
26152         PR target/38706
26153         * config/alpha/alpha.c (alpha_end_function): For TARGET_ABI_OSF, call
26154         free_after_compilation when outputting a thunk.
26155         (alpha_output_mi_thunk_osf): Assert that we are processing a thunk.
26156         Do not call free_after_compilation here.
26157
26158 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
26159
26160         * config/i386/i386.c (ix86_target_string): Use ARRAY_SIZE.
26161         (ix86_valid_target_attribute_inner_p): Ditto.
26162
26163 2009-01-07  Jan Sjodin  <jan.sjodin@amd.com>
26164
26165         PR tree-optimization/38492
26166         PR tree-optimization/38498
26167         * tree-check.c (operator_is_linear, scev_is_linear_expression): New.
26168         * tree-chrec.h (scev_is_linear_expression): Declared.
26169         * graphite.c (graphite_cannot_represent_loop_niter): New.
26170         (scopdet_basic_block_info): Call graphite_cannot_represent_loop_niter.
26171         (graphite_loop_normal_form): Use gcc_assert.
26172         (scan_tree_for_params): Use CASE_CONVERT.
26173         (phi_node_is_iv, bb_contains_non_iv_scalar_phi_nodes): New.
26174         (build_scop_conditions_1): Call bb_contains_non_iv_scalar_phi_nodes.
26175         Use gcc_assert.  Discard scops that contain unhandled cases.
26176         (build_scop_conditions): Return a boolean status for unhandled cases.
26177         (strip_mine_profitable_p): Print the loop number, not its depth.
26178         (is_interchange_valid): Pass the depth of the loop nest, don't
26179         recompute it wrongly.
26180         (graphite_trans_bb_block): Same.
26181         (graphite_trans_bb_block): Print tentative of loop blocking.
26182         (graphite_trans_scop_block): Do not print that the loop has been
26183         blocked.
26184         (graphite_transform_loops): Do not handle scops that contain condition
26185         scalar phi nodes.
26186
26187 2009-01-07  H.J. Lu  <hongjiu.lu@intel.com>
26188
26189         AVX Programming Reference (December, 2008)
26190         * config/i386/avxintrin.h (_mm256_stream_si256): New.
26191         (_mm256_stream_pd): Likewise.
26192         (_mm256_stream_ps): Likewise.
26193
26194         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVNTDQ256,
26195         IX86_BUILTIN_MOVNTPD256 and IX86_BUILTIN_MOVNTPS256.
26196         (ix86_special_builtin_type): Add VOID_FTYPE_PV4DI_V4DI.
26197         (bdesc_special_args): Add __builtin_ia32_movntdq256,
26198         __builtin_ia32_movntpd256 and __builtin_ia32_movntps256.
26199         (ix86_init_mmx_sse_builtins): Handle VOID_FTYPE_PV4DI_V4DI.
26200         (ix86_expand_special_args_builtin): Likewise.
26201
26202         * config/i386/sse.md (AVXMODEDI): New.
26203         (avx_movnt<mode>): Likewise.
26204         (avx_movnt<mode>): Likewise.
26205         (<sse>_movnt<mode>): Remove AVX support.
26206         (sse2_movntv2di): Likewise.
26207
26208 2009-01-07  Richard Guenther  <rguenther@suse.de>
26209
26210         PR middle-end/38751
26211         * fold-const.c (extract_muldiv): Remove obsolete comment.
26212         (fold_plusminus_mult_expr): Undo MINUS_EXPR
26213         to PLUS_EXPR canonicalization for the canonicalization.
26214
26215 2009-01-07  Gerald Pfeifer  <gerald@pfeifer.com>
26216
26217         * doc/install.texi (alpha*-dec-osf*): Remove note on 32-bit
26218         hosted cross-compilers generating less efficient code.
26219
26220 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
26221
26222         * function.h (rtl_data): Add a dbr_scheduled_p field.
26223         * reorg.c (dbr_schedule): Set it.
26224         (gate_handle_delay_slots): Check it.
26225         * config/mips/mips.c (mips_base_delayed_branch): Delete.
26226         (mips_reorg): Check flag_delayed_branch instead of
26227         mips_base_delayed_branch.
26228         (mips_override_options): Don't set mips_base_delayed_branch
26229         or flag_delayed_branch.
26230
26231 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
26232
26233         PR rtl-optimization/38426.
26234         * ira.c (ira): Set current_function_is_leaf earlier.
26235
26236 2009-01-06  Jakub Jelinek  <jakub@redhat.com>
26237
26238         PR rtl-optimization/38722
26239         * combine.c (try_combine): Don't modify PATTERN (i3) and notes
26240         too early, only set a flag and modify after last possible
26241         undo_all point.
26242
26243 2009-01-06  Janis Johnson  <janis187@us.ibm.com>
26244
26245         PR c/34252
26246         * ginclude/float.h: Rename DECnn_DEN to DECnn_SUBNORMAL_MIN.
26247         * real.c (decimal_single_format): Correct values of emin and emax.
26248         (decimal_double_format): Ditto.
26249         (decimal_quad_format): Ditto.
26250         * c-cppbuiltin.c (builtin_define_decimal_float_constants): Adjust
26251         computation of DECnn_MIN and DECnn_MAX for corrected values of
26252         emin and emax.  Define __DECnn_SUBNORMAL_MIN__ instead of
26253         __DECnn_MIN__, and adjust its computation for the corrected value
26254         of emin.
26255
26256 2009-01-06  Jan Hubicka  <jh@suse.cz>
26257
26258         PR target/38744
26259         * config/i386/i386.c (ix86_expand_call): Use ARRAY_SIZE.
26260
26261 2009-01-06  Gerald Pfeifer  <gerald@pfeifer.com>
26262
26263         * doc/contrib.texi (Contributors): Slightly adjust the end note.
26264         Add Robert Clark to the list of testers.
26265
26266 2009-01-06  Jan Hubicka  <jh@suse.cz>
26267             Kai Tietz  <kai.tietz@onevision.com>
26268
26269         * config/i386/i386.md (*msabi_syvabi): Add SSE regs clobbers.
26270         * config/i386/i386.c (ix86_expand_call): Add clobbers.
26271
26272 2009-01-06  Jan Hubicka  <jh@suse.cz>
26273             Kai Tietz  <kai.tietz@onevision.com>
26274
26275         * config/i386/i386.h (CONDITIONAL_CALL_USAGE): SSE regs are not used
26276         for w64 ABI.
26277         * config/i386/i386.c (struct ix86_frame): Add padding0 and nsseregs.
26278         (ix86_nsaved_regs): Count only general purpose regs.
26279         (ix86_nsaved_sseregs): New.
26280         (ix86_compute_frame_layout): Update nsseregs; set preferred alignment
26281         to 16 for w64; compute padding and size of sse reg save area.
26282         (ix86_emit_save_regs, ix86_emit_save_regs_using_mov): Save only
26283         general purpose regs.
26284         (ix86_emit_save_sse_regs_using_mov): New.
26285         (ix86_expand_prologue): Save SSE regs if needed.
26286         (ix86_emit_restore_regs_using_mov): Use only general purpose regs.
26287         (ix86_emit_restore_sse_regs_using_mov): New.
26288         (ix86_expand_epilogue): Save SSE regs if needed.
26289
26290 2009-01-06  Jan Hubicka  <jh@suse.cz>
26291             Kai Tietz  <kai.tietz@onevision.com>
26292
26293         * config/i386/i386.h (ACCUMULATE_OUTGOING_ARGS): Enable for MSABI
26294         * config/i386/i386.c (init_cumulative_args): Disallow calls of MSABI
26295         functions when accumulate outgoing args is off.
26296
26297 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
26298
26299         PR bootstrap/38742
26300         * ira-color.c (ira_reuse_stack_slot): Check ENABLE_IRA_CHECKING
26301         before using pseudos_have_intersected_live_ranges_p.
26302
26303         * ira-int.h (ira_assert): Always define.
26304
26305 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
26306
26307         AVX Programming Reference (December, 2008)
26308         * config/i386/avxintrin.h (_mm_permute2_pd): Removed.
26309         (_mm256_permute2_pd): Likewise.
26310         (_mm_permute2_ps): Likewise.
26311         (_mm256_permute2_ps): Likewise.
26312         * config/i386/i386.md (UNSPEC_VPERMIL2): Likewise.
26313         * config/i386/sse.md (avx_vpermil2<mode>3): Likewise.
26314
26315         * config/i386/i386.c (ix86_builtins): Remove
26316         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
26317         IX86_BUILTIN_VPERMIL2PD256 and IX86_BUILTIN_VPERMIL2PS256.
26318         (ix86_builtin_type): Remove V8SF_FTYPE_V8SF_V8SF_V8SI_INT,
26319         V4DF_FTYPE_V4DF_V4DF_V4DI_INT, V4SF_FTYPE_V4SF_V4SF_V4SI_INT
26320         and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
26321         (bdesc_args): Remove __builtin_ia32_vpermil2pd,
26322         __builtin_ia32_vpermil2ps, __builtin_ia32_vpermil2pd256 and
26323         __builtin_ia32_vpermil2ps256.
26324         (ix86_init_mmx_sse_builtins): Updated.
26325         (ix86_expand_args_builtin): Likewise.
26326
26327 2009-01-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
26328
26329         * pa.c (output_call): Relocate non-jump insns in the delay slot of
26330         long absolute calls when generating PA 2.0 code.
26331
26332 2009-01-05  Vladimir Makarov  <vmakarov@redhat.com>
26333
26334         PR rtl-optimization/38583
26335         * params.h (IRA_MAX_CONFLICT_TABLE_SIZE): New macro.
26336
26337         * params.def (ira-max-conflict-table-size): New.
26338
26339         * doc/invoke.texi (ira-max-conflict-table-size): Decribe.
26340
26341         * ira.h (ira_conflicts_p): New external definition.
26342
26343         * ira-conflicts.c (build_conflict_bit_table): Do not build too big
26344         table.  Report this.  Return result of building.
26345         (ira_build_conflicts): Use ira_conflicts_p.  Check result of
26346         building conflict table.
26347
26348         * ira-color.c (fast_allocation): Use num instead of ira_allocnos_num.
26349         (ira_color): Use ira_conflicts_p.
26350
26351         * global.c: Include ira.h.
26352         (pseudo_for_reload_consideration_p, build_insn_chain): Use
26353         ira_conflicts_p.
26354
26355         * Makefile.in (global.o): Add ira.h.
26356
26357         * ira-build.c (mark_all_loops_for_removal,
26358         propagate_some_info_from_allocno): New.
26359         (remove_unnecessary_allocnos): Call
26360         propagate_some_info_from_allocno.
26361         (remove_low_level_allocnos): New.
26362         (remove_unnecessary_regions): Add parameter.  Call
26363         mark_all_loops_for_removal and remove_low_level_allocnos.  Pass
26364         parameter to remove_unnecessary_regions.
26365         (ira_build): Remove all regions but root if the conflict table was
26366         not built.  Update conflict hard regs for allocnos crossing calls.
26367
26368         * ira.c (ira_conflicts_p): New global.
26369         (ira): Define and use ira_conflicts_p.
26370
26371         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
26372         count_spilled_pseudo, find_reg, alter_reg, finish_spills,
26373         emit_input_reload_insns, delete_output_reload): Use ira_conflicts_p.
26374
26375 2009-01-06  Ben Elliston  <bje@au.ibm.com>
26376
26377         * gengtype-lex.l (YY_NO_INPUT): Define.
26378
26379 2009-01-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
26380
26381         PR c/34911
26382         * c-common.c (handle_vector_size_attribute): Also reject
26383         BOOLEAN_TYPE types.
26384
26385 2009-01-05  Sebastian Pop  <sebastian.pop@amd.com>
26386
26387         PR tree-optimization/38492
26388         * graphite.c (rename_map_elt, debug_rename_elt,
26389         debug_rename_map_1, debug_rename_map, new_rename_map_elt,
26390         rename_map_elt_info, eq_rename_map_elts,
26391         get_new_name_from_old_name, bb_in_sese_p): Moved around.
26392         (sese_find_uses_to_rename_use): Renamed sese_build_livein_liveouts_use.
26393         (sese_find_uses_to_rename_bb): Renamed sese_build_livein_liveouts_bb.
26394         (sese_build_livein_liveouts): New.
26395         (new_sese, free_sese): New.
26396         (new_scop): Call new_sese.
26397         (free_scop): Call free_sese.
26398         (rename_variables_from_edge, rename_phis_end_scop): Removed.
26399         (register_old_new_names): Renamed register_old_and_new_names.
26400         (register_scop_liveout_renames, add_loop_exit_phis,
26401         insert_loop_close_phis, struct igp,
26402         default_liveout_before_guard, add_guard_exit_phis,
26403         insert_guard_phis, copy_renames): New.
26404         (translate_clast): Call insert_loop_close_phis and insert_guard_phis.
26405         (sese_add_exit_phis_edge): Renamed scop_add_exit_phis_edge.
26406         (rewrite_into_sese_closed_ssa): Renamed scop_insert_phis_for_liveouts.
26407         (scop_adjust_phis_for_liveouts): New.
26408         (gloog): Call scop_adjust_phis_for_liveouts.
26409
26410         * graphite.h (struct sese): Documented.  Added fields liveout,
26411         num_ver and livein.
26412         (SESE_LIVEOUT, SESE_LIVEIN, SESE_LIVEIN_VER, SESE_NUM_VER): New.
26413         (new_sese, free_sese, sese_build_livein_liveouts): Declared.
26414         (struct scop): Added field liveout_renames.
26415         (SCOP_LIVEOUT_RENAMES): New.
26416
26417 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
26418
26419         PR tree-optimization/38510
26420         * graphite.c (recompute_all_dominators): Call mark_irreducible_loops.
26421         (translate_clast): Call recompute_all_dominators before
26422         graphite_verify.
26423         (gloog): Call recompute_all_dominators before graphite_verify.
26424
26425 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
26426             Jan Sjodin  <jan.sjodin@amd.com>
26427
26428         PR tree-optimization/38500
26429         * graphite.c (create_sese_edges): Call fix_loop_structure after
26430         splitting blocks.
26431
26432 2009-01-05  Joel Sherrill  <joel.sherrill@oarcorp.com>
26433
26434         * config.gcc: Add m32r*-*-rtems*.
26435         * config/m32r/rtems.h: New file.
26436
26437 2009-01-05  Ben Elliston  <bje@au.ibm.com>
26438
26439         * Makefile.in (.po.gmo): Use mkinstalldirs, not test -d || mkdir.
26440         (.po.pox): Likewise.
26441         (po/gcc.pot): Likewise.
26442
26443 2009-01-04  David S. Miller  <davem@davemloft.net>
26444
26445         * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED_RTX): Delete.
26446         (STARTING_FRAME_OFFSET): Always set to zero.
26447
26448 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
26449
26450         * tree.def (LSHIFT_EXPR, RSHIFT_EXPR): Add commentary.
26451         * tree-cfg.c (verify_gimple_assign_binary): Allow shifts of
26452         fixed-point types, and vectors of the same.
26453
26454 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
26455
26456         * config/mips/sync.md (*mb_barrier): Rename to...
26457         (*memory_barrier): ...this.
26458
26459 2009-01-04  Jonathan Wakely  <jwakely.gcc@gmail.com>
26460
26461         * doc/extend.texi (Function Attributes): Move @cindex after @item
26462         for 'artificial' and 'flatten'. Fix grammar for 'externally_visible'
26463         and put in alphabetical order. Fix 'target' name and put in order.
26464         * doc/invoke.texi (-Wstrict-null-sentinel, -fipa-matrix-reorg): Fix
26465         typos.
26466
26467 2009-01-04  Uros Bizjak  <ubizjak@gmail.com>
26468
26469         * config/s390/s390.md (UNSPEC_MB): Rename from UNSPECV_MB.
26470         (memory_barrier): Expand as unspec instead of unspec_volatile.
26471         Remove mem:BLK from insn operands.  Use Pmode scratch register.
26472         (*memory_barrier): Define as unspec instead of unspec_volatile.
26473         Use (match_dup 0) as input operand.
26474
26475         * config/sparc/sparc.md (UNSPEC_MEMBAR): Rename from UNSPECV_MEMBAR.
26476         * config/sparc/sync.md (memory_barrier): Expand as unspec instead of
26477         unspec_volatile.  Remove mem:BLK from insn operands.  Use Pmode
26478         scratch register.  Remove operand 1.
26479         (*stbar): Define as unspec instead of unspec_volatile.
26480         Use (match_dup 0) as input operand, remove (const_int 8).
26481         (*membar): Define as unspec instead of unspec_volatile.
26482         Use (match_dup 0) as input operand, remove input operand 2.
26483
26484         * config/xtensa/xtensa.md (UNSPEC_MEMW): Rename from UNSPECV_MEMW.
26485         (memory_barrier): Expand as unspec instead of unspec_volatile.
26486         Remove mem:BLK from insn operands.  Use Pmode scratch register.
26487         (*memory_barrier): Define as unspec instead of unspec_volatile.
26488         Use (match_dup 0) as input operand.
26489
26490         * config/ia64/sync.md (memory_barrier): Redefine as expander pattern.
26491         Remove mem:BLK from insn operands.  Use Pmode scratch register.
26492         Set volatile flag on operand 0.
26493         (*memory_barrier): New insn pattern.
26494
26495         * config/rs6000/sync.md (memory_barrier): Remove mem:BLK from
26496         insn operands.
26497         (*memory_barrier): Use (match_dup 0) as input operand.
26498
26499         * config/mips/sync.md (memory_barrier): Redefine as expander pattern.
26500         Remove mem:BLK from insn operands.  Use Pmode scratch register.
26501         Set volatile flag on operand 0.
26502         (*mb_internal): New insn pattern.
26503
26504         * config/alpha/sync.md (*memory_barrier): Rename from *mb_internal.
26505
26506 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
26507
26508         PR middle-end/38586
26509         * function.c (struct temp_slot): Move to the section of the file
26510         that deals with temp slots.  Remove field 'address'.
26511         (temp_slot_address_table): New hash table of address -> temp slot.
26512         (struct temp_slot_address_entry): New struct, items for the table.
26513         (temp_slot_address_compute_hash, temp_slot_address_hash,
26514         temp_slot_address_eq, insert_temp_slot_address): Support functions
26515         for the new table.
26516         (find_temp_slot_from_address): Rewrite to use the new hash table.
26517         (remove_unused_temp_slot_addresses): Remove addresses of temp
26518         slots that have been made available.
26519         (remove_unused_temp_slot_addresses_1): Call-back for htab_traverse,
26520         worker function for remove_unused_temp_slot_addresses.
26521         (assign_stack_temp_for_type): Don't clear the temp slot address list.
26522         Add the temp slot address to the address -> temp slot map.
26523         (update_temp_slot_address): Update via insert_temp_slot_address.
26524         (free_temp_slots): Call remove_unused_temp_slot_addresses.
26525         (pop_temp_slots): Likewise.
26526         (init_temp_slots): Allocate the address -> temp slot map, or empty
26527         the map if it is already allocated.
26528         (prepare_function_start): Initialize temp slot processing.
26529
26530 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
26531
26532         PR middle-end/38584
26533         * cfgexpand.c (estimate_stack_frame_size): Simplify the estimate:
26534         Calculate the size of all stack vars assuming no packing of stack
26535         vars will happen, replacing a quadratic algorithm with a linear one.
26536
26537 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
26538
26539         PR target/38707
26540         * expmed.c (store_bit_field_1): Don't modify op0 if movstrict insn
26541         can't be used.
26542
26543 2009-01-03  Diego Novillo  <dnovillo@google.com>
26544
26545         * doc/contrib.texi: Update contributions.
26546
26547 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
26548
26549         PR c++/38705
26550         * builtins.c (fold_builtin_memory_op): Give up if either operand
26551         is volatile.  Set srctype or desttype to non-qualified version
26552         of the other type.
26553
26554         PR c/38700
26555         * builtins.c (fold_builtin_expect): Only check DECL_WEAK for VAR_DECLs
26556         and FUNCTION_DECLs.
26557
26558 2009-01-02  Kenneth Zadeck  <zadeck@naturalbridge.com>
26559
26560         PR rtl-optimization/35805
26561         * df-problems.c (df_lr_finalize): Add recursive call to resolve lr
26562         problem if fast dce is able to remove any instructions.
26563         * dce.c (dce_process_block): Fix dump message.
26564
26565 2009-01-02  Mark Mitchell  <mark@codesourcery.com>
26566
26567         PR 33649
26568         * tree-ssa-pre.c (compute_antic): Correct loop bounds.
26569
26570 2009-01-02  Jakub Jelinek  <jakub@redhat.com>
26571
26572         PR middle-end/38690
26573         * tree-flow.h (op_code_prio, op_prio): New prototypes.
26574         * tree-pretty-print.c (op_code_prio): New function.
26575         (op_prio): No longer static.  Use op_code_prio.
26576         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs):
26577         Use op_prio and op_code_prio to determine if () should be
26578         printed around operand(s) or not.
26579
26580         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs,
26581         dump_gimple_call, dump_gimple_switch, dump_gimple_cond,
26582         dump_gimple_label, dump_gimple_try, dump_symbols, dump_gimple_phi,
26583         dump_gimple_mem_ops, dump_bb_header, dump_bb_end, pp_cfg_jump): Use
26584         pp_character instead of pp_string for single letter printing.
26585
26586 2009-01-02  Richard Sandiford  <rdsandiford@googlemail.com>
26587
26588         * doc/extend.texi: Fix '#pragma GCC option' typo.
26589
26590 2009-01-02  Richard Guenther  <rguenther@suse.de>
26591
26592         * doc/install.texi (--enable-checking): Mention different
26593         default for stage1.
26594         (--enable-stage1-checking): Document.
26595
26596 2009-01-01  Andrew Pinski  <pinskia@gmail.com>
26597
26598         PR middle-end/30142
26599         * tree-cfg.c (verify_expr): Add INDIRECT_REF case.  Change MODIFY_EXPR
26600         case to be an error.
26601
26602 2009-01-02  Ben Elliston  <bje@au.ibm.com>
26603
26604         * config/fp-bit.h (pack_d): Constify argument.
26605         * config/fp-bit.c (makenan): Constify return type. Remove casts.
26606         (isnan): Constify argument.
26607         (isinf): Likewise.
26608         (iszero): Likewise.
26609         (pack_d): Likewise.
26610         (_fpadd_parts): Constify return type.
26611         (_fpmul_parts): Likewise.
26612         (_fpdiv_parts): Likewise.
26613
26614 2009-01-01  Jakub Jelinek  <jakub@redhat.com>
26615
26616         PR c/36489
26617         * c-typeck.c (add_pending_init): Add IMPLICIT argument.  Only
26618         warn about overwriting initializer with side-effects or
26619         -Woverride-init if !IMPLICIT.
26620         (output_init_element): Likewise.  Pass IMPLICIT down to
26621         add_pending_init.
26622         (process_init_element): Add IMPLICIT argument.  Pass it down
26623         to output_init_element.
26624         (push_init_element, pop_init_level, set_designator): Adjust
26625         process_init_element callers.
26626         (set_nonincremental_init, set_nonincremental_init_from_string):
26627         Adjust add_pending_init callers.
26628         (output_pending_init_elements): Adjust output_init_element callers.
26629         * c-tree.h (process_init_element): Adjust prototype.
26630         * c-parser.c (c_parser_initelt, c_parser_initval): Adjust
26631         process_init_element callers.
26632
26633 \f
26634 Copyright (C) 2009 Free Software Foundation, Inc.
26635
26636 Copying and distribution of this file, with or without modification,
26637 are permitted in any medium without royalty provided the copyright
26638 notice and this notice are preserved.