OSDN Git Service

Correct off-by-one error in changelog date.
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-09-28  Duncan Sands  <baldrick@free.fr>
2
3         * gcc-plugin.h (PLUGIN_REGISTER_GGC_CACHES): New event.
4         * plugin.c (plugin_event_name): Add PLUGIN_REGISTER_GGC_CACHES.
5         (register_callback): Dispatch it.
6         (invoke_plugin_callbacks): Incorporate in sanity check.
7         * ggc.h (ggc_register_cache_tab): Add declaration.
8         * ggc-common.c (ggc_register_root_tab): Simplify.
9         (const_ggc_cache_tab_t): New typedef.
10         (extra_cache_vec): New vector of dynamically added cache tables.
11         (ggc_register_cache_tab): New function.
12         (ggc_scan_cache_tab): New function.
13         (ggc_mark_roots): Simplify dynamic roots.  Handle dynamic caches.
14         * doc/plugins.texi: Document PLUGIN_REGISTER_GGC_CACHES.
15
16 2009-09-27  Richard Henderson  <rth@redhat.com>
17
18         * tree-ssa-ccp.c (optimize_stack_restore): Relax the conditions under
19         which we remove __builtin_stack_restore.
20
21 2009-09-27  Bernd Schmidt  <bernd.schmidt@analog.com>
22
23         * loop-iv.c (iv_analyze_op): Use function_invariant_p, not CONSTANT_P,
24         to test for GRD_INVARIANT.
25         (simple_rhs_p): Anything that's function_invariant_p is fine.
26
27 2009-09-27  Rafael Avila de Espindola  <espindola@google.com>
28
29         * gengtype.c (main): Use plunge_files instead of plugin_output.
30
31 2009-09-27  Basile Starynkevitch  <basile@starynkevitch.net>
32             Rafael Avila de Espindola  <espindola@google.com>
33
34         * gengtype.c (write_root, write_roots): Add a emit_pch argument.
35         Don't print pch related info if it is false.
36         (main): Don't print pch info in plugin mode.
37
38 2009-09-27  Eric Botcazou  <ebotcazou@adacore.com>
39
40         * dwarf2out.c (enum dw_val_class): Replace dw_val_class_long_long
41         with dw_val_class_const_double.
42         (struct dw_val_struct): Replace val_long_long with val_double and
43         adjust for above change.
44         (output_loc_operands): Likewise.
45         (add_AT_long_long): Rename into...
46         (add_AT_double): ...this.
47         (print_die): Replace dw_val_class_long_long with
48         dw_val_class_const_double and adjust.
49         (attr_checksum): Likewise.
50         (same_dw_val_p): Likewise.
51         (size_of_die): Likewise.
52         (value_format): Likewise.
53         (output_die): Likewise.
54         (loc_descriptor) <CONST_DOUBLE>: Likewise.
55         (add_const_value_attribute) <CONST_DOUBLE>: Call add_AT_double
56         instead of add_AT_long_long.
57         (add_bound_info) <INTEGER_CST>: Generate the bound as an unsigned
58         value with the precision of its type.
59
60 2009-09-27  Andreas Schwab  <schwab@linux-m68k.org>
61
62         PR c/41476
63         * c-typeck.c (build_conditional_expr): Use the readonly and
64         volatile flags of the operand types, not of the operands itself.
65
66 2009-09-27  Peter O'Gorman  <pogma@thewrittenword.com>
67
68         collect2.c (main): Look for -brtl before adding libraries.
69
70 2009-09-27  Jonathan Gray  <jsg@openbsd.org>
71
72         * config.gcc: Update OpenBSD targets.
73         * config/openbsd-stdint.h: New file.
74         * config/openbsd-libpthread.h: New file.
75         * config/openbsd.h: Update and break out LIB_SPEC definition.
76         * config/alpha/openbsd.h: Overhaul to reflect ELF migration.
77         * config/i386/openbsdelf.h: Correct types.
78         * config/m68k/openbsd.h: Likewise.
79         * config/mips/openbsd.h: Likewise.
80         * config/vax/openbsd.h: Likewise.
81
82 2009-09-27  Eric Botcazou  <ebotcazou@adacore.com>
83
84         * fold-const.c (maybe_lvalue_p): Return false for M(IN|AX)_EXPR.
85         (extract_muldiv_1) <MINUS_EXPR>: Swap operands if necessary.
86         * stor-layout.c (layout_type) <ARRAY_TYPE>: Do not take the maximum
87         of the length and zero.
88
89 2009-09-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
90
91         * Makefile.in (TOPLEV_H): Use $(INPUT_H) not input.h.
92         (FLAGS_H): Add options.h $(REAL_H).
93         (SEL_SCHED_IR_H): Add $(BITMAP_H) vecprim.h $(CFGLOOP_H).
94         (TREE_VECTORIZER_H): New.
95         (EBITMAP_H): Renamed from EBIMAP_H.
96         (c-decl.o, c-objc-common.o, c-pretty-print.o, attribs.o, c-omp.o)
97         (gtype-desc.o, ggc-common.o, ggc-page.o, ggc-zone.o, langhooks.o)
98         (tree.o, tree-ssa-structalias.o, tree-ssa-ter.o, tree-ssanames.o)
99         (tree-phinodes.o, tree-ssa-loop.o, tree-ssa-math-opts.o)
100         (gimple-low.o, omp-low.o, sese.o, graphite-blocking.o)
101         (graphite-clast-to-gimple.o, graphite-dependences.o)
102         (graphite-interchange.o, graphite-poly.o, graphite-scop-detection.o)
103         (graphite-sese-to-poly.o, tree-vect-loop.o, tree-vect-loop-manip.o)
104         (tree-vect-patterns.o, tree-vect-slp.o, tree-vect-stmts.o)
105         (tree-vect-data-refs.o, tree-vectorizer.o, gimple.o, tree-mudflap.o)
106         (targhooks.o, stmt.o, emit-rtl.o, ipa.o, matrix-reorg.o, ipa-inline.o)
107         (gcse.o, tree-ssa-ccp.o, df-byte-scan.o, vec.o, caller-save.o)
108         (ira-build.o, ira-costs.o, ira-color.o, ira-emit.o, ira.o)
109         (haifa-sched.o, sched-rgn.o, sel-sched.o, sel-sched-dump.o)
110         (sel-sched-ir.o, final.o, $(out_object_file)): Dependencies
111         updated and fixed as per above changes and per
112         check_makefile_deps.sh output.
113
114         PR bootstrap/40928
115         * configure.ac: Use $LIBS for '-ldl', not $LDFLAGS.
116         * configure: Regenerate.
117
118 2009-09-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
119
120         * doc/install.texi: Update minimum MPC version to 0.7.
121
122 2009-09-26  Gerald Pfeifer  <gerald@pfeifer.com>
123
124         * doc/install.texi (Binaries): Remove reference to the binary
125         distribution CD-ROM from the FSF.
126
127 2009-09-26  Michael Matz  <matz@suse.de>
128
129         PR lto/40758
130         PR middle-end/41470
131         * tree-ssa-coalesce.c (coalesce_ssa_name): Add only SSA names
132         that are mentioned in the body.
133
134 2009-09-26  Michael Matz  <matz@suse.de>
135
136         PR tree-optimization/41454
137         * tree-ssa-dom (stmts_to_rescan): Remove variable.
138         (tree_ssa_dominator_optimize): Don't allocate and free it.
139         (dom_opt_leave_block): Don't iterate over it.
140         (eliminate_redundant_computations): Don't return a value.
141         (cprop_operand, cprop_into_stmt): Ditto.
142         (optimize_stmt): Don't defer updating stmts.
143
144 2009-09-25  Dodji Seketeli  <dodji@redhat.com>
145
146         * dwarf2out.c (dwarf_tag_name, gen_generic_params_dies,
147         generic_parameter_die, template_parameter_pack_die,
148         gen_formal_parameter_die, gen_subprogram_die): Adjust after renaming
149         DW_TAG_formal_parameter_pack and DW_TAG_template_parameter_pack into
150         DW_TAG_GNU_formal_parameter_pack and DW_TAG_GNU_template_parameter_pack.
151
152 2009-09-25  Anatoly Sokolov  <aesok@post.ru>
153
154         * config/v850/v850.h (FUNCTION_VALUE): Remove.
155         * config/v850/v850.c (v850_function_value): New function.
156         (TARGET_FUNCTION_VALUE): Define.
157
158 2009-09-25  Jakub Jelinek  <jakub@redhat.com>
159
160         * tree-vect-stmts.c (vectorizable_call): Call
161         mark_symbols_for_renaming after vect_finish_stmt_generation.
162
163         * dwarf2out.c (tls_mem_loc_descriptor): Pass 1 instead of 2
164         to loc_descriptor_from_tree.
165         (add_location_or_const_value_attribute): Pass 0 instead of 2
166         for decl_by_reference_p decls.
167
168 2009-09-25  Richard Guenther  <rguenther@suse.de>
169
170         PR middle-end/41463
171         * tree-dfa.c (get_ref_base_and_extent): Fix issue with trailing
172         arrays again.
173
174 2009-09-25  Ben Elliston  <bje@au.ibm.com>
175
176         * doc/invoke.texi (RS/6000 and PowerPC Options): Add missing comma
177         after `power7'.
178
179 2009-09-25  Alan Modra  <amodra@bigpond.net.au>
180
181         * config/rs6000/rs6000.md (load_toc_v4_PIC_3c): Correct POWER
182         form of instruction.
183
184 2009-09-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
185
186         PR middle-end/41435
187         * fold-const.c (const_binop): Handle complex int division.
188         * tree-complex.c (expand_complex_div_straight,
189         expand_complex_div_wide): Update comments.
190
191 2009-09-24  DJ Delorie  <dj@redhat.com>
192
193         PR target/41456
194         * config/m32c/m32c.h (REG_CLASS_CONTENTS): Add R13.
195         (reg_class): Likewise.
196         (REG_CLASS_NAMES): Likewise.
197         * config/m32c/m32c.c (m32c_reg_class_from_constraint): Likewise.
198
199         * config/m32c/m32c.c (m32c_override_options): Disable -fivopts for
200         M32C.
201
202 2009-09-24  Michael Meissner  <meissner@linux.vnet.ibm.com>
203
204         * config/rs6000/predicates.md (indexed_or_indirect_operand):
205         Delete VSX load/store with update support.
206         * config/rs6000/rs6000.c (rs6000_legitimate_address_p): Ditto.
207         * config/rs6000/vsx.md (vsx_mov<mode>): Ditto.
208         (vsx_movti): Ditto.
209         (VSX_U): Delete.
210         (VSbit): Ditto.
211         (VStype_load_update): Ditto.
212         (VStype_store_update): Ditto.
213         (vsx_load<VSX_U:mode>_update_<P:mptrsize>): Ditto.
214         (vsx_store<VSX_U:mode>_update_<P:mptrsize>): Ditto.
215
216         * config/rs6000/rs6000.h (enum rs6000_builtins): Delete VSX
217         load/store with update builtins.
218
219 2009-09-24  Kai Tietz  <kai.tietz@onevision.com>
220
221         * libgcc2.c (L_trampoline): Prototype for getpagesize
222         and mprotect in WINNT case.
223
224 2009-09-24  Anatoly Sokolov  <aesok@post.ru>
225
226         * config/rs6000/rs6000.h (FUNCTION_VALUE): Remove macro.
227         * config/rs6000/rs6000-protos.h (rs6000_function_value): Remove.
228         * config/rs6000/rs6000.c (rs6000_function_value): Make static, add
229         'outgoing' argument.
230         (TARGET_FUNCTION_VALUE): Define.
231
232 2009-09-24  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
233
234         * config/darwin.h (DWARF2_DEBUGGING_INFO): Define as 1.
235
236 2009-09-24  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
237
238         PR bootstrap/41405
239         * common.opt: Initialize dwarf_strict to -1.
240         * toplev.c (process_options): Catch unset dwarf_strict
241         and set to 0 for all targets not overriding.
242         * config/darwin.c (darwin_override_options): Catch unset
243         dwarf_strict and override to 1.
244
245 2009-09-24  Jeff Law  <law@redhat.com>
246
247         * tree-into-ssa.c (rewrite_into_ssa): Free interesting_blocks.
248
249 2009-09-24  Richard Guenther  <rguenther@suse.de>
250
251         PR tree-optimization/36143
252         PR tree-optimization/38747
253         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Only
254         create VIEW_CONVERT_EXPRs for TBAA compatible accesses.
255
256 2009-09-24  Jakub Jelinek  <jakub@redhat.com>
257
258         PR bootstrap/41457
259         * dwarf2out.c (add_const_value_attribute): For HIGH and CONST_FIXED,
260         return false instead of gcc_unreachable ().  For CONST return the
261         value returned by recursive call instead of always returning true.
262         (tree_add_const_value_attribute): Return the value returned by
263         add_const_value_attribute instead of always returning true if rtl
264         is non-NULL.
265
266 2009-09-23  Justin Seyster  <jrseys@gmail.com>
267
268         * Makefile.in (PLUGIN_HEADERS): Include real.h.
269
270 2009-09-24  Jakub Jelinek  <jakub@redhat.com>
271
272         * cgraphunit.c (cgraph_lower_function): Revert last change.
273         * targhooks.c (default_static_chain): Use !DECL_STATIC_CHAIN
274         instead of DECL_NO_STATIC_CHAIN.
275         * tree-cfg.c (verify_gimple_call): Likewise.
276         * tree-nested.c (get_chain_decl, get_chain_field,
277         convert_tramp_reference_op, convert_gimple_call): Likewise.
278         (convert_all_function_calls): Likewise.  Always set or clear
279         DECL_STATIC_CHAIN initially, for !n->outer clear it.
280         (lower_nested_functions): Remove DECL_NO_STATIC_CHAIN checking code.
281         * c-parser.c (c_parser_declaration_or_fndef): Set DECL_STATIC_CHAIN
282         if nested.
283         * print-tree.c (print_node): Handle DECL_STATIC_CHAIN instead of
284         DECL_NO_STATIC_CHAIN.
285         * config/i386/i386.c (ix86_static_chain): Use !DECL_STATIC_CHAIN
286         instead of DECL_NO_STATIC_CHAIN.
287         (ix86_function_regparm, find_drap_reg): Likewise.  Don't test
288         decl_function_context.
289         * varasm.c (initializer_constant_valid_p): Likewise.
290         * tree.h (DECL_NO_STATIC_CHAIN): Renamed to ...
291         (DECL_STATIC_CHAIN): ... this.
292         * config/moxie/moxie.c (moxie_static_chain): Use !DECL_STATIC_CHAIN
293         instead of DECL_NO_STATIC_CHAIN.
294
295 2009-09-23  Basile Starynkevitch  <basile@starynkevitch.net>
296             Rafael Avila de Espindola  <espindola@google.com>
297
298         * gengtype.c (nb_plugin_files): Make it unsigned to match
299         num_gt_files. Adjust other variables to avoid warnings.
300         (main): Allocate an all zero lang_bitmap before each plugin file name
301         to match regular file names.
302
303 2009-09-23  Richard Henderson  <rth@redhat.com>
304
305         * doc/tm.texi (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Remove.
306         (TARGET_STATIC_CHAIN): Mention that this hook must be used for
307         static chain passed in memory.
308         * system.h (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Poison.
309         * targhooks.c (default_static_chain): Don't handle STATIC_CHAIN,
310         STATIC_CHAIN_INCOMING.  Issue a sorry if there's no
311         STATIC_CHAIN_REGNUM defined.
312
313         * config/picochip/picochip-protos.h: s/class/klass/.
314         * config/picochip/picochip.c (TARGET_STATIC_CHAIN): New.
315         (picochip_static_chain): New.
316         * config/picochip/picochip.h (STATIC_CHAIN): Remove.
317         (STATIC_CHAIN_INCOMING): Remove.
318
319         * config/xtensa/xtensa.c (TARGET_STATIC_CHAIN): New.
320         (xtensa_static_chain): New.
321         * config/xtensa/xtensa.h (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Remove.
322
323 2009-09-23  Anatoly Sokolov  <aesok@post.ru>
324
325         * config/pa/pa.h (FUNCTION_VALUE): Remove macro.
326         * config/pa/pa-protos.h (function_value): Remove.
327         * config/pa/pa.c (pa_function_value): Rename from function_value.
328         Make static, add 'outgoing' argument.
329         (TARGET_FUNCTION_VALUE): Define.
330
331 2009-09-23  Anatoly Sokolov  <aesok@post.ru>
332
333         * config/avr/avr.c (avr_regs_to_save): Use current_function_is_leaf
334         instead of cfun->machine->is_leaf.
335         * config/avr/avr.h (machine_function): Remove is_leaf field.
336
337 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
338
339         PR debug/41439
340         * dwarf2out.c (address_of_int_loc_descriptor): Don't emit
341         DW_OP_piece after DW_OP_stack_value, adjust size calculations
342         for it, when DW_OP_stack_value and DW_OP_implicit_value has
343         the same size, prefer DW_OP_stack_value.
344         (loc_descriptor, loc_list_for_address_of_addr_expr_of_indirect_ref,
345         loc_list_from_tree): Don't emit DW_OP_piece after DW_OP_stack_value.
346
347 2009-09-23  Alexandre Oliva  <aoliva@redhat.com>
348
349         PR debug/41353
350         * var-tracking.c (add_with_sets): Sort MO_VAL_LOC last among uses.
351
352 2009-09-23  Alexandre Oliva  <aoliva@redhat.com>
353
354         PR debug/41248
355         * cfgexpand.c (convert_debug_memory_address): New.
356         (expand_debug_expr): Convert base address and offset to the same
357         mode.  Use it to convert addresses to other modes.  Accept
358         ptr_mode addresses.
359
360 2009-09-23  Richard Guenther  <rguenther@suse.de>
361
362         * alias.c (ao_ref_from_mem): Correct for negative MEM_OFFSET
363         produced for bigendian targets with promoted subregs.
364
365 2009-09-23  Richard Guenther  <rguenther@suse.de>
366
367         * value-prof.c (gimple_ic): Purge old EH edges only after building
368         the new ones.
369
370 2009-09-23  Nick Clifton  <nickc@redhat.com>
371
372         * config/arc/arc.c (arc_trampoline_init): Fix typo.
373
374 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
375
376         PR bootstrap/41405
377         * doc/invoke.texi: Document -gstrict-dwarf and -gno-strict-dwarf.
378
379         PR bootstrap/41436
380         * cgraphunit.c (cgraph_lower_function): Set DECL_NO_STATIC_CHAIN
381         on non-nested functions.
382
383 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
384             Jan Hubicka  <jh@suse.cz>
385
386         * dwarf2out.c (loc_list_plus_const): Only define if
387         DWARF2_DEBUGGING_INFO.
388         (address_of_int_loc_descriptor): Likewise.
389
390         PR debug/41411
391         * dwarf2out.c (mem_loc_descriptor): Handle HIGH.
392
393 2009-09-23  Uros Bizjak  <ubizjak@gmail.com>
394
395         PR c/39779
396         * c-typeck.c (build_binary_op) <short_shift>: Check that integer
397         constant is more than zero.
398
399 2009-09-23  Alan Modra  <amodra@bigpond.net.au>
400
401         PR target/40473
402         * config/rs6000/rs6000.c (rs6000_output_function_prologue): Don't
403         call final to emit non-scheduled prologue, instead insert at entry.
404
405 2009-09-22  Loren J. Rittle  <ljrittle@acm.org>
406             Joseph S. Myers  <joseph@codesourcery.com>
407
408         * doc/install.texi (*-*-freebsd*): Add proper format codes.
409
410 2009-09-22  Basile Starynkevitch  <basile@starynkevitch.net>
411             Rafael Avila de Espindola  <espindola@google.com>
412
413         * gengtype.c (is_file_equal): New function.
414         (close_output_files): Use is_file_equal. Free of->buf.
415
416 2009-09-22  Basile Starynkevitch  <basile@starynkevitch.net>
417             Rafael Avila de Espindola  <espindola@google.com>
418
419         * gengtype.c (write_types, write_local): Add the output_header
420         argument. Update all callers.
421
422 2009-09-22  Dodji Seketeli  <dodji@redhat.com>
423
424         * dwarf2out.c (template_parameter_pack_die,
425         gen_formal_parameter_pack_die ): New functions.
426         (make_ith_pack_parameter_name): Remove this function.
427         (dwarf_tag_name): Support printing DW_TAG_template_parameter_pack and
428         DW_TAG_formal_parameter_pack.
429         (gen_generic_params_dies): Represent each template parameter pack
430         by a DW_TAG_template_parameter_pack DIE. Argument pack elements are
431         represented by usual DW_TAG_template_*_parameter DIEs that are
432         children of the DW_TAG_template_parameter_pack element DIE.
433         (generic_parameter_die): This doesn't deal with parameter pack
434         names anymore. Don't generate DW_AT_name for some DIEs, e.g. children
435         of parameter pack DIEs.
436         (gen_formal_parameter_die): Add a flag to not emit DW_AT_name
437         in certain cases, e.g. for pack elements.
438         (gen_formal_types_die, gen_decl_die): Adjust usage of
439         gen_formal_parameter_die.
440         (gen_subprogram_die): Represent each function parameter pack by a
441         DW_TAG_formal_parameter_pack DIE. Arguments of of the pack are
442         represented by usual DW_TAG_formal_parameter DIEs that are children
443         of the DW_TAG_formal_parameter_pack DIE. Remove references to
444         ____builtin_va_alist decls as no part of the compiler uses those
445         anymore.
446         * langhooks.h (struct lang_hooks_for_decls): Add
447         function_parm_expanded_from_pack_p, get_generic_function_decl
448         and function_parameter_pack_p hooks.  Fix comment for
449         get_innermost_generic_parms hook.
450         * langhooks-def.h (LANG_HOOKS_FUNCTION_PARAMETER_PACK_P,
451         LANG_HOOKS_FUNCTION_PARM_EXPANDED_FROM_PACK_P ): Declare new hook
452         macros and use them to initialize lang_hook.
453
454 2009-09-22  Richard Henderson  <rth@redhat.com>
455
456         * system.h (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE): Poison.
457         (TRAMPOLINE_ADJUST_ADDRESS): Poison.
458         * target-def.h (TARGET_ASM_TRAMPOLINE_TEMPLATE): Don't conditionalize
459         on TRAMPOLINE_TEMPLATE.
460         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): Don't conditionalize on
461         TRAMPOLINE_ADJUST_ADDRESS.
462         * targhooks.c (default_asm_trampoline_template): Remove.
463         (default_trampoline_adjust_address): Remove.
464         (default_trampoline_init): Don't handle INITIALIZE_TRAMPOLINE.
465         * targhooks.h: Update decls.
466
467 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
468
469         * config/i386/cygming.h (TARGET_USE_JCR_SECTION): Enable.
470         * config/i386/cygwin.h (LIBGCJ_SONAME): Define.
471         * config/i386/mingw32.h (LIBGCJ_SONAME): Likewise.
472
473 2009-09-22  Alexandre Oliva  <aoliva@redhat.com>
474
475         PR debug/41295
476         * reload1.c (reload): Reset debug insns with pseudos without
477         equivalences.
478
479 2009-09-22  Janis Johnson  <janis187@us.ibm.com>
480
481         * config/i386/i386.c (ix86_scalar_mode_supported_p): Don't return
482         unconditional true for decimal float modes.
483         * config/rs6000/rs6000.c (rs6000_scalar_mode_supported_p): Ditto.
484         * config/s390/s390.c (s390_scalar_mode_supported_p): Ditto.
485
486 2009-09-22  Loren J. Rittle  <ljrittle@acm.org>
487
488         * unwind-dw2-fde-glibc.c: Define and use USE_PT_GNU_EH_FRAME.
489         Enable a new case for __FreeBSD__ >= 7.
490         * crtstuff.c:  Define USE_PT_GNU_EH_FRAME for __FreeBSD__ >= 7.
491         * config/t-freebsd: Define LIB2ADDEH and LIB2ADDEHDEP.
492         * config/freebsd-spec.h: Conditionally define LINK_EH_SPEC
493         and USE_LD_AS_NEEDED.
494
495         * doc/install.texi (*-*-freebsd*): Update target information.
496
497 2009-09-22  Richard Guenther  <rguenther@suse.de>
498
499         PR middle-end/41395
500         * tree-dfa.c (get_ref_base_and_extent): Handle trailing
501         arrays really properly.
502
503 2009-09-22  Richard Henderson  <rth@redhat.com>
504
505         PR target/41246
506         * target.h (struct gcc_target): Add asm_out.trampoline_template,
507         calls.static_chain, calls.trampoline_init,
508         calls.trampoline_adjust_address.
509         * target-def.h (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
510         (TARGET_STATIC_CHAIN, TARGET_TRAMPOLINE_INIT): New.
511         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
512         * builtins.c (expand_builtin_setjmp_receiver): Use
513         targetm.calls.static_chain; only clobber registers.
514         (expand_builtin_init_trampoline): Use targetm.calls.trampoline_init;
515         set up memory attributes properly for the trampoline block.
516         (expand_builtin_adjust_trampoline): Use
517         targetm.calls.trampoline_adjust_address.
518         * calls.c (prepare_call_address): Add fndecl argument.  Use
519         targetm.calls.static_chain.
520         * df-scan.c (df_need_static_chain_reg): Remove.
521         (df_get_entry_block_def_set): Use targetm.calls.static_chain;
522         consolodate static chain handling.
523         * doc/tm.texi: Document new hooks.
524         * emit-rtl.c (static_chain_rtx, static_chain_incoming_rtx): Remove.
525         (init_emit_regs): Don't initialize them.
526         * expr.h (prepare_call_address): Update decl.
527         * final.c (profile_function): Use targetm.calls.static_chain.
528         * function.c (expand_function_start): Likewise.
529         * rtl.h (static_chain_rtx, static_chain_incoming_rtx): Remove.
530         * stmt.c (expand_nl_goto_receiver): Use targetm.calls.static_chain;
531         only clobber registers.
532         * targhooks.c (default_static_chain): New.
533         (default_asm_trampoline_template, default_trampoline_init): New.
534         (default_trampoline_adjust_address): New.
535         * targhooks.h: Declare them.
536         * varasm.c (assemble_trampoline_template): Use
537         targetm.asm_out.trampoline_template.  Make the memory block const
538         and set its size.
539
540         * config/alpha/alpha.c (alpha_trampoline_init): Rename from
541         alpha_initialize_trampoline.  Make static.  Merge VMS parameter
542         differences into the TARGET_ABI_OPEN_VMS code block.
543         (TARGET_TRAMPOLINE_INIT): New.
544         * config/alpha/alpha.h (TRAMPOLINE_TEMPLATE): Remove.
545         (TRAMPOLINE_SECTION, INITIALIZE_TRAMPOLINE): Remove.
546         * config/alpha/vms.h (TRAMPOLINE_SIZE, TRAMPOLINE_ALIGNMENT): Remove.
547         (INITIALIZE_TRAMPOLINE): Remove.
548
549         * config/arc/arc.h (TRAMPOLINE_ALIGNMENT): New.
550         (TRAMPOLINE_TEMPLATE): Merge with ...
551         (INITIALIZE_TRAMPOLINE): ... this and move ...
552         * config/arc/arc.c (arc_trampoline_init): ... here.
553         (TARGET_TRAMPOLINE_INIT): New.
554
555         * config/arm/arm.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
556         (TARGET_TRAMPOLINE_INIT, TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
557         (arm_asm_trampoline_template): New.
558         (arm_trampoline_init, arm_trampoline_adjust_address): New.
559         * config/arm/arm.h (TRAMPOLINE_TEMPLATE, ARM_TRAMPOLINE_TEMPLATE,
560         THUMB2_TRAMPOLINE_TEMPLATE, THUMB1_TRAMPOLINE_TEMPLATE): Move all
561         code to arm_asm_trampoline_template.
562         (TRAMPOLINE_ADJUST_ADDRESS): Move code to
563         arm_trampoline_adjust_address.
564         (INITIALIZE_TRAMPOLINE): Move code to arm_trampoline_init;
565         adjust for target hook parameters.
566
567         * config/avr/avr.h (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE):
568         Remove.
569
570         * config/bfin/bfin-protos.h (initialize_trampoline): Remove.
571         * config/bfin/bfin.c (bfin_asm_trampoline_template): New.
572         (bfin_trampoline_init): Rename from initialize_trampoline;
573         make static; update for target hook parameters.
574         (TARGET_ASM_TRAMPOLINE_TEMPLATE, TARGET_TRAMPOLINE_INIT): New.
575         * config/bfin/bfin.h (TRAMPOLINE_TEMPLATE): Move code to
576         bfin_asm_trampoline_template.
577         (INITIALIZE_TRAMPOLINE): Remove.
578
579         * config/cris/cris.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
580         TARGET_TRAMPOLINE_INIT, cris_asm_trampoline_template,
581         cris_trampoline_init): New.
582         * config/cris/cris.h (TRAMPOLINE_TEMPLATE): Move code to
583         cris_asm_trampoline_template.
584         (INITIALIZE_TRAMPOLINE): Move code to cris_trampoline_init;
585         adjust for target hook parameters.
586
587         * config/crx/crx.h (INITIALIZE_TRAMPOLINE): Remove.
588
589         * config/fr30/fr30.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
590         TARGET_TRAMPOLINE_INIT, fr30_asm_trampoline_template,
591         fr30_trampoline_init): New.
592         * config/fr30/fr30.h (TRAMPOLINE_TEMPLATE): Move code to
593         fr30_asm_trampoline_template.
594         (INITIALIZE_TRAMPOLINE): Move code to fr30_trampoline_init;
595         adjust for target hook parameters.
596
597         * config/frv/frv.c (TARGET_TRAMPOLINE_INIT): New.
598         (frv_trampoline_init): Rename from frv_initialize_trampoline;
599         make static, adjust arguments for TARGET_TRAMPOLINE_INIT hook.
600         * config/frv/frv.h (INITIALIZE_TRAMPOLINE): Remove.
601         * config/frv/frv-protos.h (frv_initialize_trampoline): Remove.
602
603         * config/h8300/h8300.c (h8300_trampoline_init): New.
604         (TARGET_TRAMPOLINE_INIT): New.
605         * config/h8300/h8300.h (INITIALIZE_TRAMPOLINE): Move code
606         to h8300_trampoline_init and adjust for hook parameters.
607
608         * config/ia64/ia64-protos.h (ia64_initialize_trampoline): Remove.
609         * config/ia64/ia64.c (TARGET_TRAMPOLINE_INIT): New.
610         (ia64_trampoline_init): Rename from ia64_initialize_trampoline;
611         make static; adjust for hook parameters.
612         * config/ia64/ia64.h (INITIALIZE_TRAMPOLINE): Remove.
613
614         * config/iq2000/iq2000.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
615         (TARGET_TRAMPOLINE_INIT): New.
616         (iq2000_asm_trampoline_template, iq2000_trampoline_init): New.
617         * config/iq2000/iq2000.h (TRAMPOLINE_TEMPLATE): Move code to
618         iq2000_asm_trampoline_template.
619         (INITIALIZE_TRAMPOLINE): Move code to iq2000_trampoline_init.
620         (TRAMPOLINE_CODE_SIZE): New.
621         (TRAMPOLINE_SIZE): Use it.
622         (TRAMPOLINE_ALIGNMENT): Follow Pmode.
623
624         * config/m32c/m32c-protos.h (m32c_initialize_trampoline): Remove.
625         * config/m32c/m32c.c (TARGET_TRAMPOLINE_INIT): New.
626         (m32c_trampoline_init): Rename from m32c_initialize_trampoline;
627         adjust for hook parameters.
628         * config/m32c/m32c.h (INITIALIZE_TRAMPOLINE): Remove.
629
630         * config/m32r/m32r.c (TARGET_TRAMPOLINE_INIT): New.
631         (m32r_trampoline_init): New.
632         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Move code to
633         m32r_trampoline_init.
634
635         * config/m68hc11/m68hc11.c (TARGET_TRAMPOLINE_INIT): New.
636         (m68hc11_trampoline_init): Rename from m68hc11_initialize_trampoline;
637         make static; update for hook parameters.
638         * config/m68hc11/m68hc11-protos.h: Update.
639         * config/m68hc11/m68hc11.h (INITIALIZE_TRAMPOLINE): Remove.
640
641         * config/mcore/mcore.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
642         (TARGET_TRAMPOLINE_INIT): New.
643         (mcore_function_value): Fix typo.
644         (mcore_asm_trampoline_template, mcore_trampoline_init): New.
645         * config/mcore/mcore.h (TRAMPOLINE_TEMPLATE): Move code
646         to mcore_asm_trampoline_template.
647         (INITIALIZE_TRAMPOLINE): Move code to mcore_trampoline_init.
648
649         * config/mep/mep.h (INITIALIZE_TRAMPOLINE): Remove.
650         * config/mep/mep.c (TARGET_TRAMPOLINE_INIT): New.
651         (mep_trampoline_init): Rename from mep_init_trampoline; make static;
652         update for hook parameters.
653         * config/mep/mep-protos.h (mep_init_trampoline): Remove.
654
655         * config/mips/mips.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
656         mips_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
657         mips_trampoline_init): New.
658         * config/mips/mips.h (TRAMPOLINE_TEMPLATE): Move code to
659         mips_asm_trampoline_template.
660         (INITIALIZE_TRAMPOLINE): Move code to mips_trampoline_init;
661         update for hook parameters.
662
663         * gcc/config/mmix/mmix.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
664         (TARGET_TRAMPOLINE_INIT): New.
665         (mmix_trampoline_size): Remove.
666         (mmix_asm_trampoline_template): Rename from mmix_trampoline_template;
667         make static.  Remove out-of-date tetra vs octa comment.
668         (mmix_trampoline_init): Rename from mmix_initialize_trampoline;
669         make static; update for hook parameters.
670         * config/mmix/mmix.h (TRAMPOLINE_TEMPLATE): Remove.
671         (INITIALIZE_TRAMPOLINE): Remove.
672         (TRAMPOLINE_SIZE): Use a constant instead of mmix_trampoline_size.
673         (TRAMPOLINE_ALIGNMENT): New.
674         * gcc/config/mmix/mmix-protos.h: Update.
675
676         * config/mn10300/mn10300.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
677         mn10300_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
678         mn10300_trampoline_init): New.
679         * config/mn10300/mn10300.h (TRAMPOLINE_TEMPLATE): Move code to
680         mn10300_asm_trampoline_template.
681         (INITIALIZE_TRAMPOLINE): Move code to mn10300_trampoline_init.
682
683         * config/moxie/moxie.c (moxie_static_chain,
684         moxie_asm_trampoline_template, moxie_trampoline_init,
685         TARGET_STATIC_CHAIN, TARGET_ASM_TRAMPOLINE_TEMPLATE,
686         TARGET_TRAMPOLINE_INIT): New.
687         * config/moxie/moxie.h (INITIALIZE_TRAMPOLINE): Move code to
688         moxie_trampoline_init.
689         (TRAMPOLINE_TEMPLATE): Move code to moxie_asm_trampoline_template.
690         (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Remove.
691
692         * gcc/config/pa/pa.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
693         pa_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
694         pa_trampoline_init, TARGET_TRAMPOLINE_ADJUST_ADDRESS,
695         pa_trampoline_adjust_address): New.
696         * config/pa/pa.h (TRAMPOLINE_TEMPLATE): Move code to
697         pa_asm_trampoline_template.
698         (TRAMPOLINE_ALIGNMENT): New.
699         (TRAMPOLINE_CODE_SIZE): Move to pa.c.
700         (INITIALIZE_TRAMPOLINE): Move code to pa_trampoline_init;
701         adjust for hook parameters.
702         (TRAMPOLINE_ADJUST_ADDRESS): Move code to pa_trampoline_adjust_address.
703
704         * config/pdp11/pdp11.c (pdp11_trampoline_init): New.
705         (TARGET_TRAMPOLINE_INIT): New.
706         * config/pdp11/pdp11.h (TRAMPOLINE_TEMPLATE): Remove.
707         (INITIALIZE_TRAMPOLINE): Move code to pdp11_trampoline_init.
708
709         * config/picochip/picochip.h (INITIALIZE_TRAMPOLINE): Remove.
710
711         * config/rs6000/rs6000-protos.h (rs6000_initialize_trampoline): Remove.
712         * config/rs6000/rs6000.c (TARGET_TRAMPOLINE_INIT): New.
713         (rs6000_trampoline_init): Rename from rs6000_initialize_trampoline;
714         make static; adjust parameters for the hook.
715         * config/rs6000/rs6000.h (INITIALIZE_TRAMPOLINE): Remove.
716
717         * config/s390/s390.c (s390_asm_trampoline_template): Rename from
718         s390_trampoline_template; make static.
719         (s390_trampoline_init): Rename from s390_initialize_trampoline;
720         make static; adjust for target hook.
721         (TARGET_ASM_TRAMPOLINE_TEMPLATE, TARGET_TRAMPOLINE_INIT): New.
722         * config/s390/s390-protos.h: Remove trampoline decls.
723         * config/s390/s390.h (INITIALIZE_TRAMPOLINE): Remove.
724         (TRAMPOLINE_TEMPLATE): Remove.
725         (TRAMPOLINE_ALIGNMENT): New.
726
727         * config/score/score-protos.h (score_initialize_trampoline): Remove.
728         * config/score/score.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
729         (TARGET_TRAMPOLINE_INIT): New.
730         (score_asm_trampoline_template): New.
731         (score_trampoline_init): Rename from score_initialize_trampoline;
732         make static; adjust for hook parameters.
733         * config/score/score.h (TRAMPOLINE_TEMPLATE): Move code to
734         score[37]_asm_trampoline_template.
735         (INITIALIZE_TRAMPOLINE): Remove.
736         * config/score/score3.c (score3_asm_trampoline_template): New.
737         (score3_trampoline_init): Rename from score3_initialize_trampoline;
738         adjust for target hook.
739         * config/score/score7.c (score7_asm_trampoline_template): New.
740         (score7_trampoline_init): Rename from score7_initialize_trampoline;
741         adjust for target hook.
742         * config/score/score3.h, config/score/score7.h: Update.
743
744         * config/sh/sh-protos.h (sh_initialize_trampoline): Remove.
745         * config/sh/sh.c (TARGET_TRAMPOLINE_INIT): New.
746         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
747         (sh_trampoline_init): Rename from sh_initialize_trampoline;
748         make static; adjust for target hook parameters.
749         (sh_trampoline_adjust_address): New.
750         * config/sh/sh.h (INITIALIZE_TRAMPOLINE): New.
751         (TRAMPOLINE_ADJUST_ADDRESS): Move code to sh_trampoline_adjust_address.
752
753         * config/sparc/sparc.c (TARGET_TRAMPOLINE_INIT): New.
754         (sparc32_initialize_trampoline): Rename from
755         sparc_initialize_trampoline; make static; replace tramp parameter
756         with m_tramp and update memory accesses.
757         (sparc64_initialize_trampoline): Similarly.
758         (sparc_trampoline_init): New.
759         * config/sparc/sparc-protos.h: Remove trampoline decls.
760         * config/sparc/sparc.h (INITIALIZE_TRAMPOLINE): Remove.
761         * config/sparc/sparc.md (nonlocal_goto): Don't use static_chain_rtx.
762
763         * config/spu/spu.c (TARGET_TRAMPOLINE_INIT): New.
764         (array_to_constant): Make ARR parameter const.
765         (spu_trampoline_init): Rename from spu_initialize_trampoline;
766         make static; update for hook parameters.
767         * config/spu/spu-protos.h: Update decls.
768         * config/spu/spu.h (INITIALIZE_TRAMPOLINE): Remove.
769
770         * config/stormy16/stormy16.c (xstormy16_trampoline_init): Rename
771         from xstormy16_initialize_trampoline; make static; update for
772         hook parameters.
773         (TARGET_TRAMPOLINE_INIT): New.
774         * config/stormy16/stormy16.h (INITIALIZE_TRAMPOLINE): Remove.
775
776         * config/v850/v850.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
777         (TARGET_TRAMPOLINE_INIT): New.
778         (v850_can_eliminate): Make static.
779         (v850_asm_trampoline_template, v850_trampoline_init): New.
780         * config/v850/v850.h (TRAMPOLINE_TEMPLATE): Move code to
781         v850_asm_trampoline_template.
782         (INITIALIZE_TRAMPOLINE): Move code to v850_trampoline_init
783         and adjust for target hook parameters.
784
785         * config/vax/vax.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
786         (TARGET_TRAMPOLINE_INIT): New.
787         (vax_asm_trampoline_template, vax_trampoline_init): New.
788         * config/vax/vax.h (TRAMPOLINE_TEMPLATE): Move code to
789         vax_asm_trampoline_template.
790         (INITIALIZE_TRAMPOLINE): Move code to vax_trampoline_init.
791
792         * config/xtensa/xtensa.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
793         (TARGET_TRAMPOLINE_INIT): New.
794         (xtensa_asm_trampoline_template): Rename from
795         xtensa_trampoline_template; make static.
796         (xtensa_trampoline_init): Rename from xtensa_initialize_trampoline;
797         make static; update for hook parameters.
798         * config/xtensa/xtensa-protos.h: Remove trampoline decls.
799         * config/xtensa/xtensa.h (TRAMPOLINE_TEMPLATE): Remove.
800         (INITIALIZE_TRAMPOLINE): Remove.
801
802         * config/i386/i386.c (ix86_function_regparm): Do not issue an
803         error for nested functions with regparm=3.
804         (ix86_compute_frame_layout): Adjust frame pointer offset for
805         ix86_static_chain_on_stack.
806         (ix86_expand_prologue): Handle ix86_static_chain_on_stack.
807         (ix86_emit_restore_reg_using_pop): Increment ix86_cfa_state->offset,
808         don't reset to UNITS_PER_WORD.
809         (ix86_emit_leave): Adjust ix86_cfa_state.
810         (ix86_expand_epilogue): Handle ix86_static_chain_on_stack.
811         (ix86_static_chain): New.
812         (ix86_trampoline_init): Rename from x86_initialize_trampoline;
813         make static; update for target hook parameters; use ix86_static_chain.
814         (TARGET_STATIC_CHAIN, TARGET_TRAMPOLINE_INIT): New.
815         * config/i386/i386.h (STATIC_CHAIN_REGNUM): Remove.
816         (INITIALIZE_TRAMPOLINE): Remove.
817         (TRAMPOLINE_SIZE): Use 24 for 64-bit.
818         (struct machine_function): Use BOOL_BITFIELD; rearrange bitfields
819         to the end.  Add static_chain_on_stack.
820         (ix86_static_chain_on_stack): New.
821
822         * config/m68k/m68k.c (TARGET_TRAMPOLINE_INIT): New.
823         (m68k_output_mi_thunk): Don't use static_chain_rtx.
824         (m68k_trampoline_init): New.
825         * config/m68k/m68k.h (INITIALIZE_TRAMPOLINE): Move code to
826         m68k_trampoline_init and adjust for hook parameters.
827         * config/m68k/netbsd-elf.h (TRAMPOLINE_TEMPLATE): Remove.
828         (TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE): Remove.
829
830 2009-09-22  Jakub Jelinek  <jakub@redhat.com>
831
832         * config/rs6000/rs6000.c (bdesc_2arg): Fix CODE_FOR_vector_gt* codes
833         for __builtin_altivec_vcmpgt{sb,uh,sh,uw}.
834
835         * reload1.c (reload): Call wrap_constant when substituting
836         reg for equiv inside of DEBUG_INSNs.
837
838         PR bootstrap/41405
839         * dwarf2out.c (base_type_die, record_type_tag, gen_subprogram_die,
840         add_call_src_coords_attributes, add_high_low_attributes,
841         gen_compile_unit_die, gen_type_die_with_usage force_decl_die,
842         gen_decl_die, dwarf2out_imported_module_or_decl_1, dwarf2out_finish,
843         dwarf2out_imported_module_or_decl): Avoid using DWARF3 additions
844         when -gdwarf-2 -gstrict-dwarf.
845         (loc_list_from_tree): Likewise.  Avoid using DWARF4 additions when
846         -gdwarf-[23] -gstrict-dwarf.
847         (address_of_int_loc_descriptor, loc_descriptor,
848         loc_list_for_address_of_addr_expr_of_indirect_ref): Avoid using
849         DWARF4 additions when -gdwarf-[23] -gstrict-dwarf.
850         * common.opt (gno-strict-dwarf, gstrict-dwarf): New options.
851
852 2009-09-22  Richard Guenther  <rguenther@suse.de>
853
854         PR tree-optimization/41428
855         * tree-ssa-ccp.c (ccp_fold_stmt): New function.
856         (ccp_finalize): Pass it to substitute_and_fold.
857
858 2009-09-22  Richard Guenther  <rguenther@suse.de>
859
860         * tree-ssa-propagate.h (ssa_prop_fold_stmt_fn): Declare.
861         (substitute_and_fold): Adjust prototype.
862         * tree-vrp.c (vrp_evaluate_conditional): Make static.
863         (simplify_stmt_using_ranges): Likewise.
864         (fold_predicate_in): Move here from tree-ssa-propagate.c.
865         (vrp_fold_stmt): New function.
866         (vrp_finalize): Pass it to substitute_and_fold.
867         * tree-flow.h (vrp_evaluate_conditional): Remove.
868         (simplify_stmt_using_ranges): Likewise.
869         * tree-ssa-ccp.c (ccp_finalize): Adjust call to substitute_and_fold.
870         * tree-ssa-copy.c (fini_copy_prop): Likewise.
871         * tree-ssa-propagate.c (struct prop_stats_d): Rename num_pred_folded
872         member.
873         (fold_predicate_in): Move to tree-vrp.c.
874         (substitute_and_fold): Use the callback instead of calling into
875         tree-vrp.c functions directly.
876
877 2009-09-22  Jakub Jelinek  <jakub@redhat.com>
878
879         * dwarf2out.c (address_of_int_loc_descriptor): Avoid signed/unsigned
880         comparison warning on rs6000.
881
882         PR middle-end/41429
883         * tree-cfg.c (remove_useless_stmts_tc): Call gsi_next (gsi) even for
884         GIMPLE_EH_MUST_NOT_THROW cleanup.
885         (verify_types_in_gimple_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.
886
887 2009-09-22  Jack Howarth  <howarth@bromo.med.uc.edu>
888
889         PR middle-end/41260
890         * gcc/config.gcc: Use darwin9.h and darwin10.h on darwin10 and later.
891         * gcc/config/darwin10.h: Add file to pass -no_compact_unwind on
892         LIB_SPEC for darwin10 and later since it always uses the unwinder in
893         libSystem which is derived from the gcc 4.2.1 unwinder.
894
895 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
896
897         PR middle-end/41357
898         * varasm.c (default_encode_section_info): Copy TLS model into
899         sym_ref flags regardless of backend support for TLS, for all
900         model types except TLS_MODEL_EMULATED.
901
902 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
903
904         PR bootstrap/41404
905         * dwarf2out.c (mem_loc_descriptor): Punt on CONST_STRING until
906         we can handle it correctly.
907
908 2009-09-21  Gerald Pfeifer  <gerald@pfeifer.com>
909
910         * doc/install.texi (os2): Remove section.
911
912 2009-09-21  Gerald Pfeifer  <gerald@pfeifer.com>
913
914         * doc/standards.texi (Objective-C): Adjust two URLs.
915
916 2009-09-21  Giuseppe Scrivano <gscrivano@gnu.org>
917
918         * tree-tailcall.c (process_assignment): Don't check if a
919         multiplication or an addition are already present.
920         (find_tail_calls): Combine multiple additions and multiplications.
921         (adjust_accumulator_values): Emit accumulators.
922
923 2009-09-21  Kai Tietz  <kai.tietz@onevision.com>
924
925         * config/i386/i386.c (ix86_expand_epilogue): Adjust offset for
926         xmm register restore.
927
928 2009-09-21  Jan Hubicka  <jh@suse.cz>
929
930         * dwarf2out.c (decl_loc_table_eq): Allow decl_loc_table to be NULL.
931         (dwarf2out_abstract_function): NULLify decl_loc_table at begginig and
932         restore at the end.
933
934 2009-09-21  Eric Botcazou  <ebotcazou@adacore.com>
935
936         * stor-layout.c (layout_type): Remove obsolete code.
937
938 2009-09-20  H.J. Lu  <hongjiu.lu@intel.com>
939
940         PR middle-end/41395
941         * opts.c (decode_options): Don't turn on flag_ipa_sra for opt2.
942
943 2009-09-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
944
945         PR middle-end/30789
946         * builtins.c (do_mpc_arg2): Accept DO_NONFINITE parameter.
947         (do_mpc_ckconv): Accept FORCE_CONVERT parameter.
948         (fold_builtin_2, do_mpc_arg1): Update accordingly.
949         * fold-const.c (const_binop): Likewise.
950         * real.h (do_mpc_arg2): Update prototype.
951
952 2009-09-20  Jan Hubicka  <jh@suse.cz>
953
954         * dwarf2out.c (add_const_value_attribute): Return true if successful.
955         (add_location_or_const_value_attribute): Rewrite using
956         loc_list_from_tree.
957         (tree_add_const_value_attribute): Return true if successful.
958         (tree_add_const_value_attribute_for_decl): Likewise.
959
960         * dwarf2out.c (address_of_int_loc_descriptor): Break out from ...
961         (loc_descriptor): ... here;
962         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
963         (cst_pool_loc_descr): Break out from ...; do not reffer constant
964         pool items that was not marked for output.
965         (loc_list_from_tree): ... here; handle special cases of ADDR_EXPR;
966         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
967         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
968         handle ALIGN_INDIRECT_REF, MISALIGNED_INDIRECT_REF, REALPART_EXPR,
969         IMAGPART_EXPR; handle address of INTEGER_CST; improve handling of
970         CONSTRUCTOR; handle REAL_CST, STRING_CST, COMPLEX_CST; use
971         DW_OP_stack_value to get address of items that are not available
972         as addresses.
973         (dw_loc_list): Handle single element lists correctly.
974
975 2009-09-20  Kai Tietz  <kai.tietz@onevision.com>
976             Pascal Obry  <obry@adacore.com>
977
978         * unwind-dw2-fde.c (classify_object_over_fdes):
979         Cast the constant 1 to _Unwind_Ptr.
980         (add_fdes): Likewise.
981         (linear_search_fdes): Likewise.
982
983 2009-09-20  Eric Botcazou  <ebotcazou@adacore.com>
984
985         * stor-layout.c (set_sizetype): Avoid useless type copy.
986
987 2009-09-20  Richard Sandiford  <rdsandiford@googlemail.com>
988
989         * configure.ac (gcc_cv_ld_mips_personality_relaxation): New
990         feature check.
991         (HAVE_LD_PERSONALITY_RELAXATION): New macro definition.
992         * configure, config.in: Regenerate.
993         * dwarf2asm.c (eh_data_format_name): Handle DW_EH_PE_indirect |
994         DW_EH_PE_absptr.
995         * config/mips/mips.h (TARGET_WRITABLE_EH_FRAME): New macro.
996         (ASM_PREFERRED_EH_DATA_FORMAT): Define.  Use MIPS_EH_INDIRECT
997         for global data if the output could be used in a shared library.
998         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
999         to 0 if TARGET_WRITABLE_EH_FRAME.
1000
1001 2009-09-20  Paolo Bonzini <bonzini@gnu.org>
1002
1003         PR rtl-optimization/39886
1004         * combine.c (update_cfg_for_uncondjump): Set EDGE_FALLTHRU
1005         just when insn is equal to BB_END (bb).
1006
1007 2009-09-19  Adam Nemet  <anemet@caviumnetworks.com>
1008
1009         * config/mips/mips.opt (mrelax-pic-calls): New option.
1010         * config/mips/mips.c (mips_strip_unspec_address): Move it up in
1011         the file.
1012         (mips_unspec_call): Change "unspec_call" expander into this.
1013         (mips_strip_unspec_call): New function.
1014         (mips_got_load): Call mips_unspec_call instead of
1015         gen_unspec_call<mode>.
1016         (mips16_build_call_stub): Fix comment for fp_code.  Adjust call to
1017         MIPS_CALL.
1018         (mips_cfg_in_reorg): New function.
1019         (mips16_lay_out_constants): Use it to decide whether to call
1020         CFG-aware insn splitting.
1021         (r10k_insert_cache_barriers): Move CFG set-up code from here to
1022         mips_reorg.  Move DF set-up code from here ...
1023         (mips_df_reorg): ... to here.  Call r10k_insert_cache_barriers
1024         from here.
1025         (mips_reorg): Call mips_df_reorg instead of
1026         r10k_insert_cache_barriers.  Move CFG set-up code here from
1027         r10k_insert_cache_barriers.
1028         (mips_call_expr_from_insn): New function.
1029         (mips_pic_call_symbol_from_set): Likewise.
1030         (mips_find_pic_call_symbol): Likewise.
1031         (mips_annotate_pic_call_expr): Likewise.
1032         (mips_get_pic_call_symbol): Likewise.
1033         (mips_annotate_pic_calls): Likewise.
1034         (mips_override_options): Disable -mrelax-pic-calls unless PIC
1035         calls are used.
1036         (mips_set_mips16_mode): Disable -mrelax-pic-calls for MIPS16.
1037         * config/mips/mips-protos.h (mips_get_pic_call_symbol): Declare it.
1038         * config/mips/mips.h (MIPS_CALL): Use it to print the .reloc
1039         directive.
1040         * config/mips/mips.md (UNSPEC_CALL_ATTR): New unspec.
1041         (unspec_call<mode>): Remove it.
1042         (sibcall_internal, sibcall_value_internal,
1043         sibcall_value_multiple_internal, call_internal, call_split,
1044         call_value_internal, call_value_split,
1045         call_value_multiple_internal, call_value_multiple_split): Pass
1046         SIZE_OPNO to MIPS_CALL.
1047         (call_internal_direct, call_direct_split,
1048         call_value_internal_direct, call_value_direct_split): Pass -1 as
1049         SIZE_OPNO to MIPS_CALL.
1050         * configure.ac <mips*-*-*>: Add test for .reloc R_MIPS_JALR.
1051         * configure: Regenerate.
1052         * doc/invoke.texi (Option Summary): Add -mrelax-pic-calls
1053         and -mno-relax-pic-calls.
1054         (MIPS Options): Document -mrelax-pic-calls and -mno-relax-pic-calls.
1055
1056 2009-09-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
1057
1058         PR bootstrap/35619
1059         * Makefile.in (stmp-fixinc): Ensure `include-fixed' is created
1060         in the directory this rule is called from, rather than the
1061         toplevel 'gcc' directory, to fix in-tree build.
1062
1063 2009-09-19  Chris Demetriou  <cgd@google.com>
1064
1065         PR preprocessor/28435:
1066         * c-opts.c (c_common_handle_option): For -MD and -MMD, indicate
1067         to cpplib that the preprocessor output is needed.
1068
1069 2009-09-19  Jakub Jelinek  <jakub@redhat.com>
1070
1071         * config/rs6000/rs6000.md (*save_gpregs_<mode>, *save_fpregs_<mode>,
1072         *restore_gpregs_<mode>, *return_and_restore_gpregs_<mode>,
1073         *return_and_restore_fpregs_<mode>,
1074         *return_and_restore_fpregs_aix_<mode>): Remove 'z' operand modifier.
1075
1076         PR bootstrap/41397
1077         * dwarf2out.c (mem_loc_descriptor) <case SUBREG>: Recurse
1078         instead of assuming it has always a REG inside of it.
1079
1080 2009-09-18  Gerald Pfeifer  <gerald@pfeifer.com>
1081
1082         * config/freebsd.h: Update comment on types.
1083         (WINT_TYPE): Define.
1084
1085 2009-09-18  Jason Merrill  <jason@redhat.com>
1086
1087         * c.opt: Add -fno-deduce-init-list.
1088
1089 2009-09-18  Neil Vachharajani  <nvachhar@google.com>
1090
1091         * value-prof.c (interesting_stringop_to_profile_p): Added output
1092         argument to indicate which parameter is the size parameter.
1093         * value-prof.c (gimple_stringop_fixed_value): Use
1094         INTERESTING_STRINGOP_TO_PROFILE_P to find size argument.
1095         * value-prof.c (gimple_stringops_transform): Update call sites to
1096         INTERESTING_STRINGOP_TO_PROFILE_P to reflect parameter change.
1097
1098 2009-09-18  Uros Bizjak  <ubizjak@gmail.com>
1099
1100         PR target/38288
1101         From David Binderman <dcb314@hotmail.com>:
1102         * gcc/config/i386/i386.c (ix86_function_regparm): Remove useless
1103         local variable f.  Remove stale comments.
1104         (ix86_compute_frame_layout): Remove useless local variable total_size.
1105         Remove #if 0'd code.
1106         (legitimate_address_p): Remove useless local variables
1107         reason_rtx and reason.
1108         (ix86_split_copysign_const): Remove useless local variable op1.
1109         (scale_counter): Remove useless local variable piece_size_mask.
1110
1111 2009-09-18  Jakub Jelinek  <jakub@redhat.com>
1112
1113         * stmt.c (expand_asm_operands): Set REG_ATTRS on the temporary from
1114         output decl.
1115
1116 2009-09-17  Michael Haubenwallner  <michael.haubenwallner@salomon.at>
1117
1118         PR target/40913
1119         * config/pa/t-hpux-shlib: Set soname in libgcc_s.sl.
1120
1121 2009-09-17  Jakub Jelinek  <jakub@redhat.com>
1122
1123         * c-decl.c (finish_struct): Adjust DECL_SOURCE_LOCATION of
1124         TYPE_STUB_DECL.
1125
1126 2009-09-17  Alexandre Oliva  <aoliva@redhat.com>
1127
1128         * dwarf2out.c (loc_descriptor): Emit DW_OP_stack_value and
1129         DW_OP_implicit_value even without dwarf_version 4.
1130
1131 2009-09-17  Jan Hubicka  <jh@suse.cz>
1132
1133         * dwarf2out.c: Include tree-pass.h and gimple.h.
1134         (loc_list_plus_const): New function.
1135         (loc_descriptor_from_tree_1): Rename to ...
1136         (loc_descriptor_from_tree): ... remove original.
1137         (loc_list_from_tree): New function.
1138         (add_AT_location_description): Accept location list.
1139         (tls_mem_loc_descriptor): Update call of loc_descriptor_from_tree.
1140         (concatn_mem_loc_descriptor): Remove.
1141         (mem_loc_descriptor): Handle CONCAT/CONCATN and VAR_LOCATION by
1142         returning NULL.
1143         (secname_for_decl): Move up.
1144         (hidden_reference_p): New function; break out from ...
1145         (loc_by_refernece): ... here; move up.
1146         (dw_loc_list): New function.
1147         (single_element_loc_list): New function.
1148         (single_element_loc_list_p): New function.
1149         (add_loc_descr_to_each): New function.
1150         (add_loc_list): New function.
1151         (loc_descr_from_tree): Make wraper of loc_list_from_tree.
1152         (loc_list_from_tree): Reroganized from loc_descr_from_tree;
1153         add diagnostics why expansion failed.
1154         (add_location_or_const_value_attribute): Support location lists.
1155         (add_bound_info): Likewise.
1156         (descr_info_loc): Update call of loc_descriptor_from_tree.
1157         (gen_variable_die): Work on location lists.
1158         * final.c (pass_final): Add dump file.
1159         * Makefile.in (dwarf2out.o): Add new dependencies.
1160
1161 2009-09-17  Janis Johnson  <janis187@us.ibm.com>
1162
1163         PR c/41049
1164         * real.c decimal_from_integer, decimal_integer_string): New.
1165         (real_from_integer): Use them as special case for decimal float.
1166         * config/dfp-bit.c (_si_to_sd, _usi_to_sd): Use default rounding.
1167         (_di_to_sd, _di_to_dd, _di_to_td, _udi_to_sd, _udi_to_dd, _udi_to_td):
1168         Do not append zero after the decimal point in string to convert.
1169
1170 2009-09-17  Alexander Monakov  <amonakov@ispras.ru>
1171
1172         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Add bounds only
1173         for ARRAY_REFs.  Use array_ref_{low,up}_bound to determine bounds.
1174
1175 2009-09-17  Martin Jambor  <mjambor@suse.cz>
1176
1177         * common.opt (fipa-sra): New switch.
1178         * opts.c (decode_options): Turn flag_ipa_sra on for opt2.
1179         * timevar.def (TV_IPA_SRA): New timevar.
1180         * params.def (ipa-sra-ptr-growth-factor): New parameter.
1181         * doc/invoke.texi: Document -fipa-sra and ipa-sra-ptr-growth-factor.
1182         * tree-sra.c: Include cgraph.c.
1183         (enum sra_mode): Added SRA_MODE_EARLY_IPA.
1184         (struct access): Added fields stmt, grp_maybe_modified, grp_scalar_ptr
1185         and grp_not_necessarilly_dereferenced.
1186         (func_param_count): New variable.
1187         (encountered_apply_args): New variable.
1188         (bb_dereferences): New variable.
1189         (final_bbs): New variable.
1190         (no_accesses_representant): New variable.
1191         (no_accesses_p): New function.
1192         (dump_access): Dump the new fields.
1193         (sra_initialize): Set encountered_apply_args to false.
1194         (get_ssa_base_param): New function.
1195         (mark_parm_dereference): New function.
1196         (create_access): Caring for INIDRECT_REFs and different handling of
1197         varialble length accesses in early IPA SRA.  Store the stmt - a new
1198         parameter - to the new access.
1199         (build_access_from_expr_1): New parameter stmt, passed to
1200         create_access.  Handle INDIRECT_REFs.
1201         (build_access_from_expr): Pass the current statement to
1202         build_access_from_expr_1.
1203         (disqualify_ops_if_throwing_stmt): Trigger only in intraprocedural
1204         passes.
1205         (build_accesses_from_assign): Pass the current statement to
1206         build_access_from_expr_1.  Do not create assign links in IPA-SRA.
1207         (scan_function): Call handle_ssa_defs on phi nodes.  Set bits in
1208         final_bbs when necessary.  Check for calls to __builtin_apply_args.
1209         Fixup EH info if anythng was changed.
1210         (is_unused_scalar_param): New function.
1211         (ptr_parm_has_direct_uses): New function.
1212         (find_param_candidates): New function.
1213         (mark_maybe_modified): New function.
1214         (analyze_modified_params): New function.
1215         (propagate_dereference_distances): New function.
1216         (dump_dereferences_table): New function.
1217         (analyze_caller_dereference_legality): New function.
1218         (unmodified_by_ref_scalar_representative): New function.
1219         (splice_param_accesses): New function.
1220         (decide_one_param_reduction): New function.
1221         (enum ipa_splicing_result): New type.
1222         (splice_all_param_accesses): New function.
1223         (get_param_index): New function.
1224         (turn_representatives_into_adjustments): New function.
1225         (analyze_all_param_acesses): New function.
1226         (get_replaced_param_substitute): New function.
1227         (get_adjustment_for_base): New function.
1228         (replace_removed_params_ssa_names): New function.
1229         (sra_ipa_reset_debug_stmts): New function.
1230         (sra_ipa_modify_expr): New function.
1231         (sra_ipa_modify_assign): New function.
1232         (convert_callers): New function.
1233         (modify_function): New function.
1234         (ipa_sra_preliminary_function_checks): New function.
1235         (ipa_early_sra): New function.
1236         (ipa_early_sra_gate): New function.
1237         (pass_early_ipa_sra): New variable.
1238         * Makefile.in (tree-sra.o): Add cgraph.h to dependencies.
1239
1240 2009-09-17  Michael Matz  <matz@suse.de>
1241
1242         PR middle-end/41347
1243         * tree.c (build_type_attribute_qual_variant): Export.
1244         * tree.h (build_type_attribute_qual_variant): Declare.
1245         * tree-inline.c (remap_type_1): Use it to build variants with
1246         the original qualifiers and attributes.
1247
1248 2009-09-17  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
1249
1250         * cfglayout.c (fixup_reorder_chain): Accept conditional jumps
1251         without a fallthrough edge.
1252
1253 2009-09-16  DJ Delorie  <dj@redhat.com>
1254
1255         * config/m32c/m32c.c (m32c_emit_epilogue): Check for R8C or M16C
1256         chip and ignore the "fast_interrupt" attribute if so.
1257
1258 2009-09-16  Richard Henderson  <rth@redhat.com>
1259
1260         PR middle-end/41360
1261         * cfgbuild.c (find_bb_boundaries): Really re-instate 2009-09-02
1262         barrier fix.
1263
1264 2009-09-16  Richard Henderson  <rth@redhat.com>
1265
1266         PR target/41246
1267         * tree-cfg.c (verify_gimple_call): Validate that gimple_call_chain
1268         is set only if DECL_NO_STATIC_CHAIN is unset.
1269         * tree-nested.c (iter_nestinfo_start, iter_nestinfo_next): New.
1270         (FOR_EACH_NEST_INFO): New.
1271         (walk_all_functions): Use it.
1272         (finalize_nesting_tree): Likewise.
1273         (unnest_nesting_tree): Likewise.
1274         (free_nesting_tree): Use iter_nestinfo_start, iter_nestinfo_next.
1275         (get_chain_decl, get_chain_field): Reset DECL_NO_STATIC_CHAIN.
1276         (convert_gimple_call): Early out if gimple_call_chain already set.
1277         (convert_all_function_calls): Iterate until no new functions
1278         require a static chain.
1279         (finalize_nesting_tree_1): Assert DECL_NO_STATIC_CHAIN is unset
1280         when building a trampoline.  Use dump_function_to_file instead
1281         of dump_function.
1282         (lower_nested_functions): Open dump_file.  Validate that decls
1283         that have DECL_NO_STATIC_CHAIN from the front end don't have that
1284         bit reset by this pass.
1285
1286 2009-09-16  Michael Matz  <matz@suse.de>
1287
1288         PR fortran/41212
1289         * tree.h (struct tree_decl_common): Add decl_restricted_flag,
1290         shorten decl_common_unused.
1291         (DECL_RESTRICTED_P): New accessor.
1292         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Use it
1293         to disambiguate marked decls and restrict pointers.
1294
1295 2009-09-16  Richard Henderson  <rth@redhat.com>
1296
1297         PR middle-end/41360
1298         * cfgbuild.c (find_bb_boundaries): Re-instate 2009-09-02 barrier fix.
1299
1300 2009-09-16  Jakub Jelinek  <jakub@redhat.com>
1301
1302         * integrate.c (set_block_abstract_flags): Call
1303         set_decl_abstract_flags also on BLOCK_NONLOCALIZED_VARs.
1304
1305 2009-09-16  Richard Guenther  <rguenther@suse.de>
1306
1307         PR middle-end/34011
1308         * tree-flow-inline.h (may_be_aliased): Compute readonly variables
1309         as non-aliased.
1310
1311 2009-09-16  DJ Delorie  <dj@redhat.com>
1312             Kaz Kojima  <kkojima@gcc.gnu.org>
1313
1314         * config/sh/sh.c (output_stack_adjust): Add new argument frame_p.
1315         (sh_expand_prologue): Update calls to output_stack_adjust.
1316         (sh_expand_epilogue): Likewise.
1317
1318 2009-09-15  Adam Nemet  <anemet@caviumnetworks.com>
1319
1320         PR bootstrap/41349
1321         * reorg.c (redundant_insn): Don't count notes or DEBUG_INSNs when
1322         trying to limit the extent of searches in the insn stream.
1323
1324 2009-09-15  Nathan Froyd  <froydnj@codesourcery.com>
1325             Jakub Jelinek  <jakub@redhat.com>
1326
1327         PR target/41175
1328         PR target/40677
1329         * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence
1330         problem.
1331         (SAVRES_NOINLINE_GPRS_SAVES_LR, SAVRES_NOINLINE_FPRS_SAVES_LR,
1332         SAVRES_NOINLINE_FPRS_DOESNT_RESTORE_LR): New strategy bits.
1333         (rs6000_savres_strategy): Always save FP registers inline if the
1334         target doesn't support hardware double-precision.  Set the above
1335         bits in return value when needed.
1336         (rs6000_savres_routine_sym): Fix computation for cache selector.
1337         Mark the generated symbol as a function.  Rename exitp argument to
1338         lr.  Move code for determining the name of the symbol...
1339         (rs6000_savres_routine_name): ...here.  New function.  Add cases for
1340         getting the names right on AIX and 64-bit Linux.
1341         (savres_routine_name): New variable.
1342         (rs6000_make_savres_rtx): Rename exitp argument to lr.  Don't assert
1343         lr isn't set when savep.  Use r12 resp. r1 instead of r11 depending
1344         on what the target routine uses as a base register.  If savep && lr
1345         describe saving of r0 into memory slot.
1346         (rs6000_emit_prologue): Correct use of call_used_regs.  Fix out of
1347         line calls for AIX ABI.
1348         (rs6000_output_function_prologue): Use rs6000_savres_routine_name to
1349         determine FP save/restore functions.
1350         (rs6000_emit_stack_reset): Handle savres if sp_offset != 0 and
1351         frame_reg_rtx != sp_reg_rtx.  Use gen_add3_insn instead of
1352         gen_addsi3.
1353         (rs6000_emit_epilogue): Adjust computation of restore_lr.
1354         Duplicate restoration of LR and execute the appropriate one
1355         depending on whether GPRs are being restored inline.  Set r11 from
1356         offsetted frame_reg_rtx instead of sp_reg_rtx; if frame_reg_rtx is
1357         r11, adjust sp_offset.  Use gen_add3_insn instead of gen_addsi3.
1358         Fix out of line calls for AIX ABI.
1359         * config/rs6000/rs6000.md (*return_and_restore_fpregs_aix_<mode>):
1360         New insn.
1361         * config/rs6000/spe.md (*save_gpregs_spe): Use explicit match for
1362         register 11.
1363         (*restore_gpregs_spe): Likewise.
1364         (*return_and_restore_gpregs_spe): Likewise.
1365         * config/rs6000/linux64.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
1366         Define to empty string unconditionally.
1367         * config/rs6000/sysv4.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
1368         Define to empty string unconditionally.
1369         (GP_SAVE_INLINE, FP_SAVE_INLINE): Handle TARGET_64BIT the same as
1370         !TARGET_64BIT.
1371
1372 2009-09-15  Jan Hubicka  <jh@suse.cz>
1373
1374         * doc/invoke.texi (inline-insns-auto): Drop from 60 to 50.
1375         * params.def (inline-insns-auto): Likewise.
1376
1377 2009-09-15  Martin Jambor  <mjambor@suse.cz>
1378
1379         * ipa-inline.c (estimate_function_body_sizes): Dump info about
1380         individual statements only at TDF_DETAILS dump level.  Format
1381         source for 80 characters per line.
1382
1383 2009-09-15  Christian Bruel  <christian.bruel@st.com>
1384
1385         * regrename.c (do_replace): Update REG_DEAD notes.
1386
1387 2009-09-15  Revital Eres  <eres@il.ibm.com>
1388
1389         * doc/tm.texi (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Document.
1390         * targhooks.c (default_builtin_support_vector_misalignment):
1391         New builtin function.
1392         * targhooks.h (default_builtin_support_vector_misalignment):
1393         Declare.
1394         * target.h (builtin_support_vector_misalignment):
1395         New field in struct gcc_target.
1396         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Call
1397         new builtin function.
1398         * target-def.h (TARGET_SUPPORT_VECTOR_MISALIGNMENT):
1399         Define.
1400         * config/rs6000/rs6000.c
1401         (rs6000_builtin_support_vector_misalignment): New function.
1402         (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Define.
1403
1404 2009-09-15  Jie Zhang  <jie.zhang@analog.com>
1405
1406         * config/bfin/bfin.c (length_for_loop): Use NONDEBUG_INSN_P
1407         instead of INSN_P.
1408         (bfin_optimize_loop): Likewise.
1409         (bfin_gen_bundles): Likewise.
1410         (workaround_speculation): Likewise.
1411         (find_load): Return NULL_RTX for debug_insn.
1412
1413 2009-09-15  Uros Bizjak  <ubizjak@gmail.com>
1414
1415         * config/alpha/alpha.md (smaxsf3): Disable for IEEE mode.
1416         (sminsf3): Ditto.
1417
1418 2009-09-14  DJ Delorie  <dj@redhat.com>
1419
1420         * config/mep/mep.h (JUMP_TABLES_IN_TEXT_SECTION): Define.
1421         * config/mep/mep.c (mep_emit_cbranch): Don't use BEQZ/BNEI in
1422         VLIW mode.
1423
1424 2009-09-14  Richard Henderson  <rth@redhat.com>
1425             Jakub Jelinek  <jakub@redhat.com>
1426
1427         * builtins.c (expand_builtin_synchronize): Use gimple_build_asm_vec.
1428         * cfgbuild.c (make_edges): Handle asm goto.
1429         * cfglayout.c (fixup_reorder_chain): Likewise.
1430         * cfgrtl.c (patch_jump_insn): Likewise.
1431         * gimple-pretty-print.c (dump_gimple_asm): Likewise.
1432         * gimple.c (gimple_build_asm_1): Add and use nlabels parameter.
1433         (gimple_build_asm_vec): Add and use labels parameter.
1434         (gimple_build_asm): Remove.
1435         (walk_gimple_asm): Walk labels too.
1436         * gimple.def (GIMPLE_ASM): Update docs.
1437         * gimple.h: Update decls.
1438         (struct gimple_statement_asm): Change nc to use unsigned char;
1439         add nl member.
1440         (gimple_asm_nlabels): New.
1441         (gimple_asm_label_op, gimple_asm_set_label_op): New.
1442         * gimplify.c (gimplify_asm_expr): Copy labels from ASM_EXPR
1443         into gimple_build_asm_vec.
1444         * jump.c (mark_jump_label_asm): New.
1445         (mark_jump_label): Use it.
1446         (redirect_jump_1): Handle asm goto.
1447         (invert_jump_1): Soft fail if X is null.
1448         * recog.c (extract_asm_operands): New.
1449         (asm_noperands): Use it; handle asm labels.
1450         (decode_asm_operands): Use extract_asm_operands.
1451         (asm_operand_ok): Properly handle empty string.
1452         * reg-stack.c (get_asm_operands_in_out): Rename from
1453         get_asm_operand_n_inputs; use extract_asm_operands; return both
1454         inputs and outputs by reference; update all callers.
1455         * rtl.def (ASM_OPERANDS): Add label vector as operand 6.
1456         * rtl.h (ASM_OPERANDS_LABEL_VEC): New.
1457         (ASM_OPERANDS_LABEL_LENGTH, ASM_OPERANDS_LABEL): New.
1458         (ASM_OPERANDS_SOURCE_LOCATION): Renumber.
1459         (extract_asm_operands): Declare.
1460         * stmt.c (expand_asm_operands): Add and use labels parameter.
1461         (check_unique_operand_names): Likewise.
1462         (resolve_asm_operand_names, resolve_operand_name_1): Likewise.
1463         (expand_asm_stmt): Handle asm labels.
1464         * tree-cfg.c (make_gimple_asm_edges): New.
1465         (make_edges): Use it.
1466         (cleanup_dead_labels): Handle asm labels.
1467         (is_ctrl_altering_stmt): Likewise.
1468         (gimple_redirect_edge_and_branch): Likewise.
1469         * tree.def (ASM_EXPR): Add 5th operand.
1470         * tree.h (ASM_LABELS): New.
1471         (resolve_asm_operand_names): Update decl.
1472
1473         * c-parser.c (c_parser_asm_statement): Parse asm goto.
1474         (c_parser_asm_goto_operands): New.
1475         * c-tree.h (build_asm_expr): Update decl.
1476         * c-typeck.c (build_asm_expr): Add and use labels parameter.
1477         * doc/extend.texi: Document asm goto.
1478
1479 2009-09-14  Richard Henderson  <rth@redhat.com>
1480
1481         * except.h: Update declarations.
1482         (struct pointer_map_t): Forward declare.
1483         (ERT_UNKNOWN, ERT_THROW, ERT_CATCH): Remove.
1484         (struct eh_landing_pad_d, eh_landing_pad): New.
1485         (struct eh_catch_d, eh_catch): New.
1486         (struct eh_region_d): Remove next_region_sharing_label, aka,
1487         label, tree_label, landing_pad, post_landing_pad, resume,
1488         may_contain_throw.  Rename region_number to index.  Remove
1489         u.eh_catch, u.eh_throw.  Rename u.eh_try.eh_catch to first_catch.
1490         Add u.must_not_throw, landing_pads, exc_ptr_reg, filter_reg.
1491         (VEC(eh_landing_pad,gc)): New.
1492         (struct eh_status): Remove last_region_number.  Add lp_array,
1493         throw_stmt_table, ttype_data, ehspec_data.
1494         (ehr_next, FOR_ALL_EH_REGION_AT): New.
1495         (FOR_ALL_EH_REGION_FN, FOR_ALL_EH_REGION): New.
1496         * except.c (lang_protect_cleanup_actions): Return tree.
1497         (struct ehl_map_entry): Remove.
1498         (init_eh_for_function): Push zero entries for region and lp_array.
1499         (gen_eh_region): Add to region_array immediately.
1500         (gen_eh_region_catch): Operate on eh_catch objects.
1501         (gen_eh_landing_pad): New.
1502         (get_eh_region_may_contain_throw, get_eh_region_tree_label): Remove.
1503         (get_eh_region_no_tree_label, set_eh_region_tree_label): Remove.
1504         (get_eh_region_from_number, get_eh_region_from_number_fn): New.
1505         (get_eh_landing_pad_from_number_fn): New.
1506         (get_eh_landing_pad_from_number): New.
1507         (get_eh_region_from_lp_number_fn): New.
1508         (get_eh_region_from_lp_number): New.
1509         (expand_resx_stmt, note_eh_region_may_contain_throw): Remove.
1510         (get_exception_pointer, get_exception_filter): Remove.
1511         (collect_eh_region_array, can_be_reached_by_runtime): Remove.
1512         (current_function_has_exception_handlers): Simplify.
1513         (bring_to_root, eh_region_replaceable_by_p): Remove.
1514         (replace_region, hash_type_list, hash_eh_region): Remove.
1515         (eh_regions_equal_p, merge_peers, remove_unreachable_regions): Remove.
1516         (label_to_region_map, num_eh_regions): Remove.
1517         (get_next_region_sharing_label, must_not_throw_labels): Remove.
1518         (find_exception_handler_labels): Remove.
1519         (duplicate_eh_regions_0, find_prev_try): Remove.
1520         (struct duplicate_eh_regions_data): New.
1521         (duplicate_eh_regions_1): Rewrite.
1522         (duplicate_eh_regions): Return a pointer map instead of an
1523         integer offset.
1524         (copy_eh_region_1, copy_eh_region, push_reachable_handler): Remove.
1525         (redirect_eh_edge_to_label): Remove.
1526         (eh_region_outermost): Rewrite using eh_region pointers
1527         instead of integers.
1528         (add_ttypes_entry): Update for ttype_data move to eh_status.
1529         (add_ehspec_entry): Rewrite with VEC instead of varray.
1530         (assign_filter_values): Likewise.  Export.
1531         (build_post_landing_pads, connect_post_landing_pads): Remove.
1532         (dw2_build_landing_pads): Rewrite to use lp_array.
1533         (struct sjlj_lp_info, sjlj_find_directly_reachable_regions): Remove.
1534         (sjlj_assign_call_site_values): Rewrite to use lp_array.
1535         (sjlj_emit_dispatch_table, sjlj_build_landing_pads): Likewise.
1536         (sjlj_mark_call_sites): Update for landing pad numbers.
1537         (finish_eh_generation): Rewrite.
1538         (gate_handle_eh): Do nothing for no eh tree.
1539         (pass_rtl_eh): Move up near finish_eh_generation.
1540         (remove_eh_landing_pad): New.
1541         (remove_eh_handler): Export.
1542         (remove_eh_region, remove_eh_handler_and_replace): Remove.
1543         (for_each_eh_label): Rewrite to use lp_array.
1544         (make_reg_eh_region_note): New.
1545         (make_reg_eh_region_note_nothrow_nononlocal): New.
1546         (insn_could_throw_p): New.
1547         (copy_reg_eh_region_note_forward): New.
1548         (copy_reg_eh_region_note_backward): New.
1549         (check_handled, add_reachable_handler): Remove.
1550         (reachable_next_level, foreach_reachable_handler): Remove.
1551         (arh_to_landing_pad, arh_to_label, reachable_handlers): Remove.
1552         (get_eh_region_and_lp_from_rtx): New.
1553         (get_eh_region_from_rtx): New.
1554         (can_throw_internal_1, can_throw_external_1): Remove.
1555         (can_throw_internal): Use get_eh_region_from_rtx.
1556         (can_throw_external): Use get_eh_region_and_lp_from_rtx.
1557         (insn_nothrow_p, can_nonlocal_goto): New.
1558         (expand_builtin_eh_common, expand_builtin_eh_pointer): New.
1559         (expand_builtin_eh_filter, expand_builtin_eh_copy_values): New.
1560         (add_action_record): Use VEC not varray.
1561         (collect_one_action_chain): Update for eh_region changes.
1562         (convert_to_eh_region_ranges): Make static.  Use VEC not varray.
1563         Use get_eh_region_and_lp_from_rtx.
1564         (gate_convert_to_eh_region_ranges): New.
1565         (pass_convert_to_eh_region_ranges): Use it.
1566         (push_uleb128, push_sleb128): Use VEC not varray.
1567         (output_one_function_exception_table): Likewise.
1568         (dump_eh_tree): Update for eh_region changes.
1569         (verify_eh_tree): Likewise.
1570         (verify_eh_region, default_init_unwind_resume_libfunc): Remove.
1571         * tree-eh.c: Include target.h.
1572         (add_stmt_to_eh_lp_fn): Rename from add_stmt_to_eh_region_fn.
1573         Don't disallow GIMPLE_RESX; adjust argument check.
1574         (add_stmt_to_eh_lp): Rename from add_stmt_to_eh_region.
1575         (record_stmt_eh_region): Update for landing pad numbers;
1576         generate a landing pad if necessary.
1577         (remove_stmt_from_eh_lp): Rename from remove_stmt_from_eh_region.
1578         (remove_stmt_from_eh_lp_fn): Similarly.
1579         (lookup_stmt_eh_lp_fn): Rename from lookup_stmt_eh_region_fn.
1580         Update for lp numbers; don't special case missing throw_stmt_table.
1581         (lookup_expr_eh_lp): Similarly.
1582         (lookup_stmt_eh_lp): Rename from lookup_stmt_eh_region.
1583         (eh_seq, eh_region_may_contain_throw): New.
1584         (struct leh_state): Add ehp_region.
1585         (struct leh_tf_state): Remove eh_label.
1586         (emit_post_landing_pad): New.
1587         (emit_resx, emit_eh_dispatch): New.
1588         (note_eh_region_may_contain_throw): New.
1589         (frob_into_branch_around): Take eh_region not eh label;
1590         emit eh code into eh_seq.
1591         (honor_protect_cleanup_actions): Early exit for no actions.  Don't
1592         handle EXC_PTR_EXPR, FILTER_EXPR.  Use gimple_build_eh_must_not_throw,
1593         lower_eh_must_not_throw.  Emit code to eh_seq.
1594         (lower_try_finally_nofallthru): Emit eh code to eh_seq.
1595         (lower_try_finally_onedest): Likewise.
1596         (lower_try_finally_copy): Likewise.
1597         (lower_try_finally_switch): Likewise.
1598         (lower_try_finally): Initialize ehp_region.
1599         (lower_catch): Update for eh_catch objects.
1600         (lower_eh_filter): Don't handle must_not_throw.
1601         (lower_eh_must_not_throw): New.
1602         (lower_cleanup): Don't set eh_label.
1603         (lower_eh_constructs_2): Resolve eh builtins.
1604         Handle GIMPLE_EH_MUST_NOT_THROW.
1605         (lower_eh_constructs): Initialize eh_region_may_contain_throw.
1606         Add eh_seq to the end of the function body.
1607         (make_eh_dispatch_edges): New.
1608         (make_eh_edge): Remove.
1609         (make_eh_edges): Simplify for landing pads.
1610         (redirect_eh_edge_1): New.
1611         (redirect_eh_edge): Use it.
1612         (redirect_eh_dispatch_edge): New.
1613         (stmt_could_throw_p): Use a switch.  Allow RESX.
1614         (stmt_can_throw_external): Use lookup_stmt_eh_lp.
1615         (stmt_can_throw_internal): Likewise.
1616         (maybe_clean_eh_stmt_fn, maybe_clean_eh_stmt): New.
1617         (maybe_clean_or_replace_eh_stmt): Update for landing pads.
1618         (maybe_duplicate_eh_stmt_fn, maybe_duplicate_eh_stmt): New.
1619         (gate_refactor_eh): New.
1620         (pass_refactor_eh): Use it.
1621         (lower_resx, execute_lower_resx, pass_lower_resx): New.
1622         (lower_eh_dispatch, execute_lower_eh_dispatch): New.
1623         (gate_lower_ehcontrol, pass_lower_eh_dispatch): New.
1624         (remove_unreachable_handlers): Rename from
1625         tree_remove_unreachable_handlers; rewrite for landing pads;
1626         call remove_eh_handler directly.
1627         (remove_unreachable_handlers_no_lp): New.
1628         (unsplit_eh, unsplit_all_eh): New.
1629         (tree_empty_eh_handler_p, all_phis_safe_to_merge): Remove.
1630         (cleanup_empty_eh_merge_phis, cleanup_empty_eh_move_lp): New.
1631         (cleanup_empty_eh_unsplit): New.
1632         (cleanup_empty_eh): Rewrite.
1633         (cleanup_all_empty_eh): New.
1634         (execute_cleanup_eh): Rename from cleanup_eh.  Remove unreachable
1635         handlers first.  Use unsplit_all_eh, cleanup_all_empty_eh.
1636         (gate_cleanup_eh): New.
1637         (pass_cleanup_eh): Use it.
1638         (verify_eh_edges): Move later in file.  Expect one EH edge.
1639         (verify_eh_dispatch_edge): New.
1640
1641         * Makefile.in (FUNCTION_H): Use vecprim.h, not varray.h.
1642         (gtype-desc.o): Add TARGET_H.
1643         (tree.o): Use EXCEPT_H, not except.h.
1644         (cfgbuild.o): Add EXPR_H.
1645         (GTFILES): Add vecprim.h.
1646         * builtins.c (expand_builtin): Handle BUILT_IN_EH_POINTER,
1647         BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES.
1648         * builtins.def (BUILT_IN_UNWIND_RESUME, BUILT_IN_EH_POINTER,
1649         BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES): New.
1650         * calls.c (emit_call_1): Use make_reg_eh_region_note.
1651         * cfgbuild.c (control_flow_insn_p): Use can_nonlocal_goto; tidy
1652         calls to can_throw_internal.
1653         (rtl_make_eh_edge): Use get_eh_landing_pad_from_rtx.
1654         (make_edges): Don't handle RESX; use can_nonlocal_goto.
1655         * cfgexpand.c (expand_gimple_stmt_1): Don't handle RESX.
1656         (expand_gimple_stmt): Use make_reg_eh_region_note.
1657         (expand_debug_expr): Don't handle EXC_PTR_EXPR and FILTER_EXPR.
1658         (gimple_expand_cfg): Don't call convert_from_eh_region_ranges,
1659         or find_exception_handler_labels.
1660         * cfgrtl.c (rtl_verify_flow_info_1): Don't handle RESX.  Assert
1661         there is exacly one EH edge.  Use can_nonlocal_goto and
1662         can_throw_internal.
1663         * cgraphunit.c (update_call_expr): Use maybe_clean_eh_stmt_fn.
1664         (cgraph_materialize_all_clones): Use maybe_clean_or_replace_eh_stmt.
1665         * combine.c (can_combine_p, try_combine): Use insn_nothrow_p.
1666         * cse.c (count_reg_usage, insn_live_p): Use insn_could_throw_p.
1667         * dce.c (deletable_insn_p_1): Don't test may_trap_p.
1668         (deletable_insn_p): Use insn_nothrow_p; reorder nonjump insn test.
1669         * dse.c (scan_insn): Use insn_could_throw_p.
1670         * emit-rtl.c (try_split): Use copy_reg_eh_region_note_backward.
1671         * expr.c (expand_expr_real): Use make_reg_eh_region_note.
1672         (expand_expr_real_1): Don't handle RESX, EXC_PTR, or FILTER_EXPR.
1673         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't handle
1674         EXC_PTR_EXPR or FILTER_EXPR.
1675         (tree_expr_nonzero_warnv_p): Likewise.
1676         * function.h: Include vecprim.h, not varray.h
1677         (struct rtl_eh): Remove filter, exc_ptr, built_landing_pad members;
1678         move ttype_data and ehspec_data members to struct eh_status; change
1679         action_record_data member to a VEC.
1680         * gcse.c (hash_scan_set): Use can_throw_internal.
1681         * gengtype.c (open_base_files): Add target.h to gtype-desc.c.
1682         * gimple-iterator.c (gsi_replace): Use maybe_clean_or_replace_eh_stmt.
1683         * gimple-low.c (lower_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.
1684         (block_may_fallthru): Don't handle RESX_EXPR.
1685         * gimple-pretty-print.c (dump_gimple_label): Dump EH_LANDING_PAD_NR.
1686         (dump_gimple_eh_must_not_throw, dump_gimple_eh_dispatch): New.
1687         (dump_gimple_stmt): Dump landing pad information with TDF_EH;
1688         handle GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH.
1689         * gimple.c (gss_for_code): Handle GIMPLE_EH_MUST_NOT_THROW,
1690         GIMPLE_EH_DISPATCH, GIMPLE_RESX.
1691         (gimple_size): Likewise.
1692         (gimple_build_eh_dispatch, gimple_build_eh_must_not_throw): New.
1693         (gimple_build_resx): Use gimple_build_with_ops.
1694         (DEFTREECODE): Don't handle EXC_PTR_EXPR, FILTER_EXPR.
1695         (is_gimple_val): Likewise.
1696         (is_gimple_stmt): Remove RESX_EXPR.
1697         * gimple.def (GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH): New.
1698         (GIMPLE_RESX): Reorder with other EH constructs.
1699         * gimple.h (struct gimple_statement_eh_mnt): New.
1700         (struct gimple_statement_eh_ctrl): Rename from gimple_statement_resx.
1701         (gimple_eh_filter_must_not_throw): Remove.
1702         (gimple_eh_filter_set_must_not_throw): Remove.
1703         (gimple_eh_must_not_throw_fndecl): New.
1704         (gimple_eh_dispatch_region, gimple_eh_dispatch_set_region): New.
1705         (is_gimple_resx): New.
1706         * gimplify.c (gimplify_expr): Don't handle EXC_PTR_EXPR, RESX_EXPR.
1707         Don't copy EH_FILTER_MUST_NOT_THROW.
1708         * gsstruct.def (GSS_EH_MNT, GSS_EHCONTROL): New.
1709         * ipa-inline.c (estimate_function_body_sizes): Don't try to
1710         handle must_not_throw_labels specially.
1711         * ipa-pure-const.c (check_call): Update debug statement for LP.
1712         * ipa-type-escape.c (check_operand): Don't handle EXC_PTR or FILTER.
1713         * ipa-utils.c (get_base_var): Likewise.
1714         * libfunc.h (LTI_unwind_resume, unwind_resume_libfunc): Remove.
1715         * lower-subreg.c (move_eh_region_note): Remove.
1716         (resolve_simple_move): Use copy_reg_eh_region_note_forward.
1717         * omp-low.c (new_omp_context): Update for eh_lp_nr.
1718         (create_task_copyfn): Likewise.
1719         (maybe_catch_exception): Use gimple_build_eh_filter.
1720         * optabs.c (emit_libcall_block): Update test for no-nonlocal-goto
1721         REG_EH_REGION.  Use make_reg_eh_region_note_nothrow_nononlocal.
1722         * passes.c (init_optimization_passes): Add pass_lower_eh_dispatch
1723         and pass_lower_resx.
1724         * print-tree.c (print_node): Dump EH_LANDING_PAD_NR.
1725         * recog.c (peephole2_optimize): Use copy_reg_eh_region_note_backward,
1726         can_throw_internal, can_nonlocal_goto.
1727         * reload1.c (fixup_eh_region_note): Use insn_could_throw_p,
1728         copy_reg_eh_region_note_forward.
1729         (emit_input_reload_insns): Use copy_reg_eh_region_note_forward.
1730         (emit_output_reload_insns): Likewise.
1731         (copy_eh_notes): Remove.
1732         * rtl.def (RESX): Remove.
1733         * rtl.h: Update declarations.
1734         * sese.c (graphite_copy_stmts_from_block): Use maybe_duplicate_eh_stmt.
1735         * tree-cfg.c (make_edges): Handle GIMPLE_EH_DISPATCH.
1736         (update_eh_label): Remove.
1737         (cleanup_dead_labels_eh): New.
1738         (cleanup_deal_labels): Use it instead of update_eh_label.
1739         (gimple_merge_blocks): Update landing pad data structure when
1740         removing a landing pad label.
1741         (remove_useless_stmts_tc): Remove gimple_eh_filter_must_not_throw
1742         test; handle GIMPLE_EH_MUST_NOT_THROW.
1743         (is_ctrl_altering_stmt): Handle GIMPLE_EH_DISPATCH.
1744         (verify_gimple_assign_single): Don't handle EXC_PTR or FILTER_EXPR.
1745         (verify_types_in_gimple_stmt): Handle GIMPLE_EH_DISPATCH.
1746         (verify_stmt): Likewise.  Verify landing pads.
1747         (gimple_redirect_edge_and_branch): Handle GIMPLE_EH_DISPATCH.
1748         (gimple_duplicate_bb): Use maybe_duplicate_eh_stmt.
1749         (struct move_stmt_d): Add eh_map.
1750         (move_stmt_eh_region_nr, move_stmt_eh_region_tree_nr): New.
1751         (move_stmt_r): Remap eh region numbers in builtin calls,
1752         resx and eh_dispatch.
1753         (move_block_to_fn): Remove eh_offset parameter.  Use
1754         maybe_duplicate_eh_stmt_fn.
1755         (find_outermost_region_in_block): Operate on eh_region pointers
1756         instead of region numbers.
1757         (move_sese_region_to_fn): Expect eh_map instead of eh_offset from
1758         duplicate_eh_regions.
1759         * tree-cfgcleanup.c (tree_forwarder_block_p): Move entry block edge
1760         test earlier.  Disallow EH landing pads.
1761         * tree-cfa.c (create_tree_common_ann): Don't set ann->rn.
1762         * tree-flow.h: Update declarations.
1763         (struct tree_ann_common_d): Replace rn with lp_nr.
1764         * tree-inline.c (copy_tree_body_r): Don't handle RESX_EXPR.
1765         (remap_eh_region_nr, remap_eh_region_tree_nr): New.
1766         (remap_gimple_stmt): Remap eh region numbers in builtin calls,
1767         resx and eh_dispatch.
1768         (copy_bb): Use maybe_duplicate_eh_stmt_fn.
1769         (copy_edges_for_bb): Use make_eh_dispatch_edges.
1770         (copy_cfg_body): Expect eh_map instead of eh_region_offset
1771         from duplicate_eh_regions.
1772         (estimate_num_insns): Don't handle EXC_PTR_EXPR or FILTER_EXPR;
1773         update RESX; handle EH_DISPATCH.
1774         (expand_call_inline): Set eh_lp_nr, not eh_region.
1775         (maybe_inline_call_in_expr): Likewise.
1776         * tree-inline.h (struct copy_body_data): Replace eh_region with
1777         eh_lp_nr, eh_region_offset with eh_map.
1778         * tree-optimize.c (execute_fixup_cfg): Use maybe_clean_eh_stmt.
1779         * tree-pass.h (pass_lower_eh_dispatch, pass_lower_resx): New.
1780         * tree-pretty-print.c (dump_generic_node): Don't handle
1781         EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR.
1782         * tree-sra.c (scan_function): Use maybe_clean_eh_stmt.
1783         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Don't handle
1784         EXC_PTR_EXPR, FILTER_EXPR.
1785         * tree-ssa-operands.c (get_expr_operands): Likewise.
1786         * tree-ssa-propagate.c (valid_gimple_rhs_p): Likewise.
1787         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
1788         (ao_ref_init_from_vn_reference): Likewise.
1789         * tree-ssa-sink.c (statement_sink_location): Likewise.
1790         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
1791         (mark_virtual_phi_result_for_renaming): Export.  Tidy.
1792         * tree-ssa-pre.c (get_or_alloc_expr_for): Don't handle
1793         EXC_PTR_EXPR, FILTER_EXPR.
1794         (is_exception_related): Remove.
1795         (compute_avail): Don't call it.
1796         * tree-ssa-structalias.c: Remove VEC definitions for int and unsigned.
1797         * tree.c (find_decls_types_in_eh_region): Update for eh_region changes.
1798         (find_decls_types_in_node): Use FOR_ALL_EH_REGION_FN.
1799         (build_common_builtin_nodes): Add enable_cxa_end_cleanup parameter.
1800         Build EH builtins.
1801         (build_resx): Remove.
1802         * tree.def (EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR): Remove.
1803         * tree.h: Update declarations.
1804         (EH_FILTER_MUST_NOT_THROW): Remove.
1805         (struct tree_label_decl): Add eh_landing_pad_nr.
1806         (EH_LANDING_PAD_NR): New.
1807         * value-prof.c (gimple_ic): Tidy variable names.  Update for
1808         landing pad numbers.
1809         (gimple_stringop_fixed_value): Tidy variable names.  Assert
1810         that neither call stmt can throw.
1811         * vecprim.h (uchar): New.
1812         (VEC(uchar,heap), VEC(uchar,gc)): New.
1813
1814         * c-common.c (c_define_builtins): Update call to
1815         build_common_builtin_nodes.
1816         * c-parser.c (c_parse_file): Don't call
1817         default_init_unwind_resume_libfunc.
1818
1819 2009-09-14  Richard Sandiford  <rdsandiford@googlemail.com>
1820
1821         * config/mips/mips-protos.h (mips_cfun_has_cprestore_slot_p): Declare.
1822         (mips_cprestore_address_p): Likewise.
1823         (mips_save_gp_to_cprestore_slot): Likewise.
1824         (mips_restore_gp): Rename to...
1825         (mips_restore_gp_from_cprestore_slot): ...this.
1826         (mips_must_initialize_gp_p): Declare.
1827         (mips_emit_save_slot_move): Likewise.
1828         (mips_output_load_label): Return nothing.
1829         (mips_eh_uses): Declare.
1830         * config/mips/mips.h (TARGET_SPLIT_CALLS): Require epilogue_completed.
1831         (TARGET_CPRESTORE_DIRECTIVE): New macro.
1832         (TARGET_ABSOLUTE_JUMPS): Likewise.
1833         (EH_USES): Likewise.
1834         (FIRST_PSEUDO_REGISTER): Update comment.
1835         (MIPS_ABSOLUTE_JUMP): New macro, extracted from...
1836         (MIPS_CALL): ...here.
1837         (REGISTER_NAMES): Add $cprestore.
1838         * config/mips/mips.c (machine_function): Remove has_gp_insn_p.
1839         Add load_label_length, has_inflexible_gp_insn_p,
1840         has_flexible_gp_insn_p, must_initialize_gp_p and
1841         must_restore_gp_when_clobbered_p.
1842         (mips_expand_call): Don't generate split instructions here.
1843         (mips_split_call): Update the call to mips_restore_gp after
1844         the above name change.
1845         (mips16_cfun_returns_in_fpr_p): Move earlier in file.
1846         (mips_find_gp_ref): New function.
1847         (mips_insn_has_inflexible_gp_ref_p): Likewise.
1848         (mips_cfun_has_inflexible_gp_ref_p): Likewise.
1849         (mips_insn_has_flexible_gp_ref_p): Likewise.
1850         (mips_cfun_has_flexible_gp_ref_p): Likewise.
1851         (mips_function_has_gp_insn): Delete.
1852         (mips_global_pointer): Drop the df_regs_ever_live_p check.
1853         Use the new functions above.  Only return INVALID_REGNUM
1854         for TARGET_ABSOLUTE_JUMPS.
1855         (mips_must_initialize_gp_p): New function.
1856         (mips_get_cprestore_base_and_offset): New function, extracted from...
1857         (mips_cprestore_slot): ...here.  Take a bool parameter.
1858         (mips_cfun_has_cprestore_slot_p): New function.
1859         (mips_cprestore_address_p): Likewise.
1860         (mips_save_gp_to_cprestore_slot): Likewise.
1861         (mips_restore_gp): Rename to...
1862         (mips_restore_gp_from_cprestore_slot): ...this.  Assert
1863         epilogue_completed.  Update the call to mips_cprestore_slot.
1864         Test cfun->machine->must_restore_gp_when_clobbered_p.
1865         (mips_direct_save_slot_move_p): New function.
1866         (mips_emit_save_slot_move): Likewise.
1867         (mips_output_cplocal): Test mips_must_initialize_gp_p () instead
1868         of cfun->machine->global_pointer.
1869         (mips_output_function_prologue): Check mips_must_initialize_gp_p ().
1870         (mips_save_reg): Use mips_emit_save_slot_move.
1871         (mips_expand_prologue): Set must_initialize_gp_p.
1872         Use mips_cfun_has_cprestore_slot_p.  Use gen_potential_cprestore
1873         for all cprestore saves.  Emit a use_cprestore instruction after
1874         setting up the cprestore slot.
1875         (mips_restore_reg): Use mips_emit_save_slot_move.
1876         (mips_process_load_label): New function.
1877         (mips_load_label_length): Likewise.
1878         (mips_output_load_label): Don't return asm: output it here instead.
1879         Use mips_process_load_label.
1880         (mips_adjust_insn_length): Adjust the length of branch instructions
1881         that have length MAX_PIC_BRANCH_LENGTH.
1882         (mips_output_conditional_branch): Update the call to
1883         mips_output_load_label.  Assume the branch target is OPERANDS[0]
1884         rather than OPERANDS[1].  Use MIPS_ABSOLUTE_JUMP for absolute jumps.
1885         (mips_output_order_conditional_branch): Swap the meaning of
1886         OPERANDS[0] and OPERANDS[1].
1887         (mips_variable_issue): Don't count ghost instructions.
1888         (mips_expand_ghost_gp_insns): New function.
1889         (mips_reorg): Rerun mips_reorg_process_insns if it returns true.
1890         (mips_output_mi_thunk): Set must_initialize_gp_p.
1891         (mips_eh_uses): New function.
1892         * config/mips/predicates.md (cprestore_save_slot_operand)
1893         (cprestore_load_slot_operand): New predicates.
1894         * config/mips/mips.md (UNSPEC_POTENTIAL_CPRESTORE): New unspec.
1895         (UNSPEC_MOVE_GP): Likewise.
1896         (UNSPEC_CPRESTORE, UNSPEC_RESTORE_GP, UNSPEC_EH_RETURN)
1897         (UNSPEC_CONSTTABLE_INT, UNSPEC_CONSTTABLE_FLOAT): Bump to make room.
1898         (CPRESTORE_SLOT_REGNUM): New register.
1899         (MAX_PIC_BRANCH_LENGTH): New constant.
1900         (jal_macro): Use MIPS_ABSOLUTE_JUMPS.
1901         (length): Use MAX_PIC_BRANCH_LENGTH as a placeholder for PIC long
1902         branches.  Fix commentary.
1903         (loadgp_newabi_<mode>): Change from unspec_volatile to unspec.
1904         Only split if mips_must_initialize_gp_p; expand to nothing otherwise.
1905         Change type to "ghost".
1906         (loadgp_absolute_<mode>): Likewise.
1907         (loadgp_rtp_<mode>): Likewise.
1908         (copygp_mips16): Likewise.
1909         (loadgp_blockage): Remove redundant mode attribute.
1910         (potential_cprestore): New instruction.
1911         (cprestore): Turn into an unspec set.
1912         (use_cprestore): New instruction.
1913         (*branch_fp): Swap operands 0 and 1.  Remove redundant mode attribute.
1914         (*branch_fp_inverted): Likewise.
1915         (*branch_order<mode>): Likewise.
1916         (*branch_order<mode>_inverted): Likewise.
1917         (*branch_equality<mode>): Likewise.
1918         (*branch_equality<mode>_inverted): Likewise.
1919         (*branch_bit<bbv><mode>): Likewise.
1920         (*branch_bit<bbv><mode>_inverted): Likewise.
1921         (*branch_equality<mode>_mips16): Remove redundant mode.
1922         (jump): Turn into a define_expand.
1923         (*jump_absolute): New instruction.
1924         (*jump_pic): Likewise.
1925         (*jump_mips16): Rename previously-unnamed pattern.  Remove
1926         redundant mode attribute.
1927         (restore_gp): Split on epilogue_completed rather than
1928         reload_completed.  Change type to "ghost".
1929         (move_gp<mode>): New instruction.
1930         * config/mips/mips-dsp.md (mips_bposge): Swap operands 0 and 1.
1931         Remove redundant mode attribute.
1932         * config/mips/mips-ps-3d.md (bc1any4t): Likewise.
1933         (bc1any4f, bc1any2t, bc1any2f): Likewise.
1934         (*branch_upper_lower, *branch_upper_lower_inverted): Likewise.
1935
1936 2009-09-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
1937
1938         PR target/41210
1939         * config/rs6000/rs6000.c (rs6000_function_value): V2DF and V2DI
1940         are returned in the same register (vs34 or v2) that Altivec vector
1941         types are returned in.
1942         (rs6000_libcall_value): Ditto.
1943
1944         PR target/41331
1945         * config/rs6000/rs6000.c (rs6000_emit_move): Use gen_add3_insn
1946         instead of explicit addsi3/adddi3 calls.
1947         (rs6000_split_multireg_move): Ditto.
1948         (rs6000_emit_allocate_stack): Ditto.
1949         (rs6000_emit_prologue): Ditto.
1950         (rs6000_output_mi_thunk): Ditto.
1951
1952         * config/rs6000/rs6000.md (bswapdi*): Don't assume the pointer
1953         size is 64 bits if we can use 64-bit registers.
1954
1955 2009-09-14  Bernd Schmidt  <bernd.schmidt@analog.com>
1956
1957         * config/bfin/bfin.c (bfin_longcall_p): Don't use short calls for weak
1958         symbols.
1959
1960         From Jie Zhang <jie.zhang@analog.com>:
1961         * config/bfin/bfin.c (bfin_expand_prologue): Ask do_link to
1962         save FP and RETS with saveall attribute.
1963         (bfin_expand_epilogue): Ask do_unlink to restore FP and RETS
1964         with saveall attribute.
1965
1966         * config/bfin/bfin.c (bfin_expand_builtin,
1967         case BFIN_BUILTIN_MULT_1X32X32): Force constants to registers for the
1968         operands.
1969
1970         From Jie Zhang <jie.zhang@analog.com>:
1971         * config/bfin/bfin.c (bfin_expand_builtin): Initialize icodes
1972         before use in two places.
1973         * config/bfin/bfin.md (AREG): Define mode iterator.
1974         (reload_in, reload_out): Use mode iterator AREG.
1975
1976 2009-09-14  Richard Guenther  <rguenther@suse.de>
1977
1978         PR middle-end/41350
1979         * dwarf2out.c (dwarf2out_begin_prologue): Adjust non-CFI asm
1980         EH personality path.
1981
1982 2009-09-13  Richard Guenther  <rguenther@suse.de>
1983             Rafael Avila de Espindola  <espindola@google.com>
1984
1985         * langhooks-def.h (LANG_HOOKS_EH_RUNTIME_TYPE): Define.
1986         (LANG_HOOKS_EH_PERSONALITY): Likewise.
1987         (LANG_HOOKS_INITIALIZER): Adjust.
1988         (lhd_pass_through_t): Declare.
1989         * langhooks.h (struct lang_hooks): Add eh_runtime_type and
1990         eh_personality.
1991         * langhooks.c (lhd_pass_through_t): New function.
1992         * dwarf2out.c (output_call_frame_info, dwarf2out_do_cfi_startproc,
1993         dwarf2out_begin_prologue): Use personality from current_function_decl.
1994         * expr.h (get_personality_function): Declare.
1995         * expr.c (get_personality_function): New function.
1996         (build_personality_function): Likewise.
1997         * libfuncs.h (libfunc_index): Remove LTI_eh_personality.
1998         (eh_personality_libfunc): Remove.
1999         * optabs.c (build_libfunc_function): New function split out from ...
2000         (init_one_libfunc): ... here.
2001         * tree.h (DECL_FUNCTION_PERSONALITY): New.
2002         (tree_function_decl): Add personality.
2003         (lhd_gcc_personality): Declare.
2004         (build_personality_function): Likewise.
2005         * tree.c (gcc_eh_personality_decl): New.
2006         (lhd_gcc_personality): New function.
2007         * except.h (lang_eh_runtime_type): Remove.
2008         (enum eh_personality_kind): New.
2009         (build_personality_function): Declare.
2010         (function_needs_eh_personality): Declare.
2011         * except.c (lang_eh_runtime_type): Remove.
2012         (function_needs_eh_personality): New function.
2013         (add_type_for_runtime): Call lang_hooks.type_for_runtime instead.
2014         (sjlj_emit_function_enter, output_function_exception_table):
2015         Use personality from current_function_decl.
2016         * tree-eh.c (lower_eh_constructs): Set DECL_FUNCTION_PERSONALITY.
2017         * tree-inline.c (tree_can_inline_p): Do not inline across different
2018         EH personalities.
2019         (expand_call_inline): Likewise.  Adjust the callers EH personality.
2020         (tree_function_versioning): Copy DECL_FUNCTION_PERSONALITY.
2021         * cgraph.c (cgraph_add_new_function): Set DECL_FUNCTION_PERSONALITY.
2022         * Makefile.in (cgraph.o): Add $(EXCEPT_H) dependency.
2023         (c-parser.o): Likewise
2024         * c-tree.h (c_eh_initialized_p): Remove.
2025         (c_maybe_initialize_eh): Likewise.
2026         * c-decl.c (finish_decl): Don't call c_maybe_initialize_eh.
2027         (finish_decl): Don't call c_maybe_initialize_eh.
2028         (c_eh_initialized_p): Remove.
2029         (c_maybe_initialize_eh): Likewise.
2030         * c-parser.c (c_parser_omp_construct): Likewise.
2031         (c_parse_file): Initialize exception handling.
2032
2033 2009-09-13  Kai Tietz  <kai.tietz@onevision.com>
2034
2035         * config.gcc (tm_file): Remove i386/biarch32.h
2036         for i?86-w64-mingw* case.
2037         (i?86-*-mingw* andx86_64-*-mingw*): Add multilib
2038         support.
2039         * config.host: Set for x64 mingw the option
2040         use_long_long_for_widest_fast_int to yes.
2041
2042 2009-09-13  Eric Botcazou  <ebotcazou@adacore.com>
2043
2044         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
2045         * dbxout.c (dbxout_function_end): Do not test DECL_IGNORED_P.
2046         (dbxout_begin_function): Likewise.
2047         * final.c (dwarf2_debug_info_emitted_p): New predicate.
2048         (final_start_function): Do not emit debug info if DECL_IGNORED_P is
2049         set on the function.
2050         (final_end_function): Likewise.
2051         (final_scan_insn): Likewise.
2052         (rest_of_handle_final): Likewise.
2053         * varasm.c (assemble_start_function): Likewise.
2054         * config/rs6000/xcoff.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
2055
2056 2009-09-12  Jason Merrill  <jason@redhat.com>
2057
2058         * dbgcnt.c (dbg_cnt_process_single_pair): constify.
2059         * opts.c (common_handle_option): constify.
2060
2061 2009-09-12  Gerald Pfeifer  <gerald@pfeifer.com>
2062
2063         * doc/install.texi (avr): Remove obsolete reference site.
2064
2065 2009-09-12  Gerald Pfeifer  <gerald@pfeifer.com>
2066
2067         * doc/install.texi (Binaries): Adjust AIX link.
2068
2069 2009-09-12  Akim Demaille  <demaille@gostai.com>
2070
2071         * doc/invoke.texi (-fstrict-aliasing): Correct two examples.
2072         Use an imperative sentence.
2073
2074 2009-09-11  Richard Henderson  <rth@redhat.com>
2075
2076         * gsstruct.def (DEFGSSTRUCT): Remove printable-name argument; add
2077         structure-name and has-tree-operands arguments; update all entries.
2078         * gimple.def (DEFGSCODE): Replace 3rd argument with GSS_symbol;
2079         update all entries.
2080         * gimple.c (gimple_ops_offset_): Use HAS_TREE_OP argument.
2081         (gsstruct_code_size): New.
2082         (gss_for_code_): New.
2083         (gss_for_code): Remove.
2084         (gimple_size): Rewrite using gsstruct_code_size.
2085         (gimple_statement_structure): Move to gimple.h.
2086         * gimple.h (gimple_ops_offset_, gss_for_code_): Declare.
2087         (gss_for_code, gimple_statement_structure): New.
2088         (gimple_ops): Use new arrays; tidy.
2089
2090 2009-09-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2091
2092         * config/pa/predicates.md (symbolic_operand): Require a CONST symbolic
2093         operand to be a PLUS expression.
2094         * config/pa/pa.c (pa_secondary_reload): Likewise.
2095
2096 2009-09-11  Jakub Jelinek  <jakub@redhat.com>
2097
2098         * combine.c (propagate_for_debug_subst): Call wrap_constant on top.
2099
2100         * print-rtl.c (print_rtx): Use JUMP_LABEL (in_rtx) instead of
2101         XEXP (in_rtx, 8).
2102
2103 2009-09-11  Bernd Schmidt  <bernd.schmidt@analog.com>
2104
2105         From Jie Zhang <jie.zhang@analog.com>:
2106         * doc/extend.texi (node Function Attributes): Document l2
2107         function attribute.
2108         (node Blackfin Variable Attributes): Document l2 variable attributes.
2109
2110 2009-09-11  Loren J. Rittle  <ljrittle@acm.org>
2111
2112         * config.gcc (*-*-freebsd*): Enable default_use_cxa_atexit
2113         to match the system compiler's configuration at inflection point.
2114         Add comment to remark a remaining difference with system compiler.
2115
2116         * configure.ac (*-*-freebsd*): Enable check for __stack_chk_fail.
2117         * configure: Regenerate.
2118
2119 2009-09-11  Bernd Schmidt  <bernd.schmidt@analog.com>
2120
2121         From Jie Zhang <jie.zhang@analog.com>:
2122         * config/bfin/bfin.c (bfin_expand_call): Handle L2 functions.
2123         (bfin_handle_l2_attribute): New.
2124         (bfin_attribute_table): Add l2 attribute.
2125
2126 2009-09-11  Michael Matz  <matz@suse.de>
2127
2128         PR middle-end/41275
2129         * tree-inline.c (remap_decls): Don't put DECL_EXTERNAL decls
2130         on the local_decls list.
2131
2132 2009-09-11  Alexandre Oliva  <aoliva@redhat.com>
2133
2134         PR debug/41276
2135         PR debug/41307
2136         * cselib.c (cselib_expand_value_rtx_cb): Document callback
2137         interface.
2138         (cselib_expand_value_rtx_1): Use callback for SUBREGs.  Adjust
2139         for VALUEs, to implement the documented interface.
2140         * var-tracking.c (vt_expand_loc_callback): Handle SUBREGs.
2141         Adjust for VALUEs and anything else, to implement the
2142         documented interface.
2143
2144 2009-09-10  Nathan Froyd  <froydnj@codesourcery.com>
2145
2146         * config/rs6000/rs6000.h (DATA_ALIGNMENT): Check that we are dealing
2147         with actual SPE/paired vector modes before using 64-bit alignment.
2148         Check that TYPE is a REAL_TYPE for TARGET_E500_DOUBLE.
2149
2150 2009-09-10  DJ Delorie  <dj@redhat.com>
2151
2152         * config/mep/mep.md (eh_epilogue): Defer until after epilogue is
2153         emitted.
2154
2155         * config/mep/mep.h (LEGITIMATE_CONSTANT_P): New.
2156         * config/mep/mep.c (mep_legitimate_constant_p): New.
2157         * config/mep/mep-protos.h: Prototype it.
2158
2159 2009-09-10  Richard Henderson  <rth@redhat.com>
2160
2161         * print-rtl.c (print_rtx): Fix JUMP_LABEL index.
2162
2163 2009-09-10  Jason Merrill  <jason@redhat.com>
2164
2165         * tree.c (chain_index): New fn.
2166         * tree.h: Declare it.
2167
2168 2009-09-10  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
2169
2170         * config/sol2-c.c (cmn_err_length_specs): Initialize
2171         scalar_identity_flag.
2172
2173 2009-09-10  Richard Henderson  <rth@redhat.com>
2174
2175         * tree.h (struct tree_decl_common): Move align member earlier;
2176         move label_decl_uid member ...
2177         (struct tree_label_decl): ... here.
2178         (LABEL_DECL_UID): Update to match.
2179
2180         * tree-cfg.c (dump_function_to_file): Dump eh tree with TDF_EH,
2181         not TDF_DETAILS.
2182
2183         * tree-cfg.c (gimple_redirect_edge_and_branch): Do
2184         gimple_try_redirect_by_replacing_jump test after no-op and EH tests.
2185
2186         * tree-cfg.c (split_edge_bb_loc): Don't disallow placement at
2187         dest_prev if the edge is complex.
2188
2189         * tree-cfg.c (is_ctrl_stmt): Use a switch.
2190
2191         * tree-cfg.c (gimple_can_merge_blocks_p): Move label and
2192         loop latch tests earlier.
2193
2194         * gimple-iterator.c (gimple_find_edge_insert_loc): Insert
2195         before GIMPLE_RETURN, not after its predecessor; insert
2196         before GIMPLE_RESX.
2197
2198         * gimple-iterator.c (gimple_find_edge_insert_loc): Use
2199         gimple_seq_empty_p to test for no PHI nodes.
2200         * tree-cfg.c (split_critical_edges): Likewise.
2201
2202         * c-common.h (c_dialect_cxx, c_dialect_objc): Boolify.
2203
2204 2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
2205
2206         * final.c (shorten_branches) : Ignore DEBUG_INSN_P instructions
2207         introduced by the VTA branch merge.
2208
2209 2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
2210
2211         * ira-conflicts.c: Use fputs or putc instead of fprintf
2212         where appropriate.
2213         * cfg.c: Ditto.
2214         * toplev.c: Ditto.
2215         * tree-switch-conversion.c: Ditto.
2216
2217 2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
2218
2219         * config/picochip/picochip.c : Ignore DEBUG_INSN_P instructions
2220         introduced by the VTA branch merge.
2221
2222 2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
2223
2224         Revert:
2225         2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
2226
2227         PR rtl-optimization/39779
2228         * expr.c (convert_modes): Return when mode == oldmode after
2229         CONST_INTs are processed.
2230
2231 2009-09-10  Nick Clifton  <nickc@redhat.com>
2232
2233         * config/mep/mep.c (mep_encode_section_info): Copy weakness
2234         attribute and referring decl when creating renamed symbol.
2235
2236 2009-09-10  Richard Guenther  <rguenther@suse.de>
2237
2238         PR middle-end/41257
2239         * cgraphunit.c (cgraph_emit_thunks): Emit thunks only for
2240         reachable nodes.
2241         (cgraph_finalize_compilation_unit): Compute reachability
2242         before emitting thunks.  Properly process aliases before
2243         possibly removing unreachable nodes.
2244
2245 2009-09-10  Richard Guenther  <rguenther@suse.de>
2246
2247         PR middle-end/41254
2248         * tree.c (struct free_lang_data_d): Add worklist member.
2249         (find_decls_types_r): Push onto the worklist instead of recursing.
2250         Handle TREE_BINFOs properly.
2251         (find_decls_types): New function wrapped around find_decls_types_r
2252         to process the worklist.
2253         (find_decls_types_in_eh_region): Use it.
2254         (find_decls_types_in_node): Likewise.
2255         (find_decls_types_in_var): Likewise.
2256         (free_lang_data_in_cgraph): Likewise.  Free the worklist.
2257         * tree.h (RECORD_OR_UNION_TYPE_P): New.
2258         (AGGREGATE_TYPE_P): Adjust.
2259
2260 2009-09-09  Jason Merrill  <jason@redhat.com>
2261
2262         * configure.ac: Check glibc version even if we have an in-tree
2263         assembler.
2264
2265 2009-09-09  Anthony Green  <green@moxielogic.com>
2266
2267         * config/moxie/moxie.md (*movsi, *movhi, *movqi): Use xor to load
2268         the constant 0 when appropriate.
2269         * config/moxie/constraints.md: Add constraint O.
2270
2271         * config/moxie/moxie.c (moxie_setup_incoming_varargs): Adjust
2272         to pass up to 6 32-bit argument values in registers.
2273         (moxie_function_arg): Ditto.
2274         (moxie_arg_partial_bytes): Ditto.
2275         * config/moxie/moxie.h (FUNCTION_ARG_ADVANCE): Ditto.
2276         (REG_PARM_STACK_SPACE): Ditto.
2277         (FUNCTION_ARG_REGNO_P): Ditto.
2278
2279         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
2280         instruction to allocate stack space.
2281
2282 2009-09-09  Segher Boessenkool  <segher@kernel.crashing.org>
2283
2284         * config/rs6000/rs6000.md (bswapdi2_64bit): Fix
2285         unnecessarily stringent constraints.  Fix address
2286         calculation in the splitters.
2287
2288 2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
2289
2290         PR rtl-optimization/39779
2291         * expr.c (convert_modes): Return when mode == oldmode after
2292         CONST_INTs are processed.
2293
2294 2009-09-09  Kai Tietz  <kai.tietz@onevision.com>
2295
2296         PR/41315
2297         * config/i386.c (ix86_can_use_return_insn_p): Check for padding0, too.
2298         (ix86_expand_prologue): Take frame.padding0 into logic of
2299         to_allocate checks.
2300         (ix86_expand_epilogue): Likewise.
2301
2302 2009-09-09  Jakub Jelinek  <jakub@redhat.com>
2303
2304         * config/t-slibgcc-elf-ver (SHLIB_MAKE_SOLINK, SHLIB_INSTALL_SOLINK):
2305         New variables.
2306         (SHLIB_LINK, SHLIB_INSTALL): Use them.
2307         * config/t-slibgcc-libgcc: New file.
2308         * config.gcc (powerpc*-*-linux*, powerpc*-*-gnu*): Use it.
2309
2310 2009-09-09  Martin Jambor  <mjambor@suse.cz>
2311
2312         PR tree-optimization/41089
2313         * tree-sra.c (find_var_candidates): Do not consider va_lists in
2314         early SRA.
2315
2316 2009-09-09  Richard Henderson  <rth@redhat.com>
2317
2318         * gimple.h (CASE_GIMPLE_OMP): New.
2319         (is_gimple_omp): Use it.
2320         * tree-cfg.c (is_ctrl_altering_stmt): Likewise.
2321         (verify_gimple_debug): Likewise.
2322
2323 2009-09-09  Richard Guenther  <rguenther@suse.de>
2324
2325         PR tree-optimization/41101
2326         * tree-ssa-pre.c (maximal_set): Remove.
2327         (compute_antic_aux): Treat the maximal set as implicitly all ones.
2328         Defer all blocks we didn't visit at least one successor.
2329         (add_to_exp_gen): Do not add to the maximal set.
2330         (make_values_for_phi): Likewise.
2331         (compute_avail): Likewise.
2332         (init_pre): Do not allocate the maximal set.
2333         (execute_pre): Do not dump it.
2334
2335 2009-09-09  Martin Jambor  <mjambor@suse.cz>
2336
2337         * tree-cfg.c (verify_gimple_phi): Check that gimple_phi_result is
2338         an SSA_NAME rather than a is_gimple_variable.
2339
2340 2009-09-09  Richard Guenther  <rguenther@suse.de>
2341
2342         PR middle-end/41317
2343         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Remove
2344         code dealing with plain pointer bases.
2345         (maybe_fold_offset_to_reference): Likewise.
2346         (maybe_fold_stmt_addition): Adjust.
2347
2348 2009-09-09  Richard Guenther  <rguenther@suse.de>
2349
2350         * tree.c (free_lang_data_in_type): Do not free the type variant
2351         chains.
2352         (free_lang_data): Merge char_type_node with its properly signed
2353         variant.
2354         (pass_ipa_free): Collect after freeing language specific data.
2355
2356 2009-09-09  Michael Matz  <matz@suse.de>
2357
2358         PR middle-end/41268
2359         * cfgexpand.c (expand_gimple_stmt_1): Use an int for storing
2360         SUBREG_PROMOTED_UNSIGNED_P, instead of a bool.
2361         * rtl.h (struct rtx, SUBREG_PROMOTED_UNSIGNED_P): Update comments
2362         to reflect reality.
2363
2364 2009-09-08  DJ Delorie  <dj@redhat.com>
2365
2366         * config/mep/mep.c (conversions[]): Add "ml" pattern.
2367
2368 2009-09-04  Jason Merrill  <jason@redhat.com>
2369
2370         * tree.c (tree_find_value): Remove.
2371         * tree.h: Remove prototype.
2372         * varasm.c (assemble_external): Use value_member instead.
2373
2374 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
2375
2376         * toplev.c (process_options): Choose default debugging type when
2377         gtoggle enables debug info and type is unset.
2378
2379 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
2380
2381         PR debug/41276
2382         PR debug/41307
2383         * cselib.c (cselib_expand_value_rtx_1): Don't return copy of
2384         invalid subreg.
2385
2386 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
2387
2388         * configure: Rebuilt with modified libtool.m4.
2389
2390 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
2391
2392         PR debug/41229
2393         PR debug/41291
2394         PR debug/41300
2395         * tree-ssa.c (execute_update_addresses_taken): Update debug insns.
2396
2397 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
2398
2399         * tree-ssa-loop-ivopts.c (get_phi_with_result): Remove.
2400         (remove_statement): Likewise.
2401         (rewrite_use_nonlinear_expr): Adjust.
2402         (remove_unused_ivs): Collect SSA NAMEs to remove and call...
2403         * tree-ssa.c (release_defs_bitset): ... this.  New.
2404         * tree-flow.h (release_defs_bitset): Declare.
2405
2406 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
2407
2408         PR debug/41232
2409         * tree-ssa-phiopt.c (minmax_replacement): Skip debug stmts
2410         in the middle block.
2411
2412 2009-09-08  Kai Tietz  <kai.tietz@onevision.com>
2413
2414         * tree-ssa-reassoc.c (find_operand_rank): Cast pointer
2415         via intptr_t to long type.
2416         (insert_operand_rank): Cast long type via intptr_t to
2417         pointer type.
2418         * genattrtab.c (RTL_HASH): Use intptr_t to cast from
2419         pointer to scalar.
2420         * c-pretty-print.c (pp_c_tree_decl_identifier): Cast
2421         from pointer to unsigned via uintptr_t.
2422
2423         * configure.ac (GCC_STDINT_TYPES): Initialize intptr_t,
2424         uintptr_t, HAVE_INTTYPES_H, HAVE_STDINT_H, HAVE_UINTPTR_T,
2425         and HAVE_INTPTR_T.
2426         * configure: Regenerated.
2427         * config.in: Regenerated
2428         * system.h (stdint.h): Add include.
2429         (inttypes.h): Likewise.
2430         * Makefile.in (aclocal): Add config/stdint.m4.
2431         * aclocal.m4: Regenerated.
2432
2433 2009-09-08  Bernd Schmidt  <bernd.schmidt@analog.com>
2434
2435         * config/bfin/bfin.c (np_check_regno, np_after_branch): New static
2436         variables.
2437         (note_np_check_stores): New function.
2438         (harmless_null_pointer_p): New function.
2439         (trapping_loads_p): New args NP_REG and AFTER_NP_BRANCH.  Callers
2440         changed.  Take into account whether we're in the shadow of a condjump
2441         that tested NP_REG for NULL.
2442         Lose all code that tested for SEQUENCEs.
2443         (workaround_speculation): Avoid inserting NOPs for loads that are
2444         either always executed or a NULL pointer.
2445
2446 2009-09-08  Jan Hubicka  <jh@suse.cz>
2447
2448         * doc/invoke.texi (early-inlining-insns): Reduce from 12 to 8.
2449         * params.def (early-inlining-insns): Likewise.
2450
2451 2009-09-08  Jakub Jelinek  <jakub@redhat.com>
2452
2453         PR rtl-optimization/41239
2454         * sched-int.h (struct deps): Add last_function_call_may_noreturn field.
2455         * sched-rgn.c (deps_join): Join also last_function_call_may_noreturn
2456         lists.
2457         * sched-deps.c (sched_analyze_insn): Prevent moving trapping insns
2458         across calls, as the calls might not always return normally.
2459         (call_may_noreturn_p): New function.
2460         (deps_analyze_insn): Update last_function_call_may_noreturn list.
2461         (init_deps): Initialize it.
2462         (remove_from_deps): Also remove calls from
2463         last_function_call_may_noreturn list.
2464
2465 2009-09-07  Richard Henderson  <rth@redhat.com>
2466
2467         * tree-ssa-sccvn.c (vn_reference_lookup_3): Don't assume there are
2468         more VR->OPERANDS than LHS operands.  Free LHS before returning.
2469
2470 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
2471
2472         * config/bfin/bfin.md (UNSPEC_VOLATILE_STALL): New constant.
2473         (attr "addrtype"): New member "spreg".
2474         Use it if mem_spfp_address_operand is true for the address.
2475         (attr "type"): New entry "stall".
2476         (cpu_unit "load"): New.
2477         (insn_reservations "load32", "loadp", "loadi"): Add reservation of
2478         "load".
2479         (insn_reservation "loadsp"): New.
2480         (insn_reservation "load_stall1"): New.
2481         (insn_reservation "load_stall3"): New.
2482         (stall): New insn.
2483         * config/bfin/predicates.md (const1_operand, const3_operand): New.
2484         (mem_p_address_operand): Exclude stack and frame pointer based
2485         addresses.
2486         (mem_spfp_address_operand): New; match them here.
2487         * config/bfin/bfin.c (add_sched_insns_for_speculation): New function.
2488         (bfin_reorg): Call it if scheduling insns.
2489         (bfin_gen_bundles): Remove dummy insns created by
2490         add_sched_insns_for_speculation.
2491
2492         From Jie Zhang <jie.zhang@analog.com>:
2493         * config/bfin/bfin-protos.h (enum bfin_cpu_type, bfin_cpu_type,
2494         bfin_si_revision, bfin_workarounds): Move these ...
2495         * config/bfin/bfin.h: ... here.
2496
2497         From Mike Frysinger  <michael.frysinger@analog.com>
2498         * config/bfin/bfin-protos.h (bfin_cpu_type): Add BFIN_CPU_BF542M,
2499         BFIN_CPU_BF544M, BFIN_CPU_BF547M, BFIN_CPU_BF548M, and BFIN_CPU_BF549M.
2500         * config/bfin/bfin.c (bfin_cpus[]): Add 0.3 for bf542m, bf544m,
2501         bf547m, bf548m, and bf549m.
2502         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF542M__
2503         for BFIN_CPU_BF542M, __ADSPBF544M__ for BFIN_CPU_BF544M,
2504         __ADSPBF547M__ for BFIN_CPU_BF547M, __ADSPBF548M__ for
2505         BFIN_CPU_BF548M, and __ADSPBF549M__ for BFIN_CPU_BF549M.
2506         * config/bfin/t-bfin-elf (MULTILIB_MATCHES): Select bf532-none for
2507         bf542m-none, bf544m-none, bf547m-none, bf548m-none, and bf549m-none.
2508         * config/bfin/t-bfin-linux (MULTILIB_MATCHES): Likewise.
2509         * config/bfin/t-bfin-uclinux (MULTILIB_MATCHES): Likewise.
2510         * doc/invoke.texi (Blackfin Options): Document that -mcpu now accepts
2511         bf542m, bf544m, bf547m, bf548m, and bf549m.
2512
2513         From Jie Zhang <jie.zhang@analog.com>:
2514         * config/bfin/predicates.md (p_register_operand): New predicate.
2515         (dp_register_operand): New predicate.
2516         * config/bfin/bfin-protos.h (WA_05000074): Define.
2517         (ENABLE_WA_05000074): Define.
2518         * config/bfin/bfin.c (bfin_cpus[]): Add WA_05000074 for all cpus.
2519         (bfin_gen_bundles): Put dsp32shiftimm instruction in slot[0].
2520         * config/bfin/bfin.md (define_attr type): Add dsp32shiftimm.
2521         (define_attr addrtype): Allow load/store register to be P register.
2522         (define_attr storereg): New.
2523         (define_cpu_unit anomaly_05000074): New.
2524         (define_insn_reservation dsp32shiftimm): New.
2525         (define_insn_reservation dsp32shiftimm_anomaly_05000074): New.
2526         (define_insn_reservation loadp): Cannot use slot2.
2527         (define_insn_reservation loadsp): Cannot use slot2.
2528         (define_insn_reservation storep): Cannot use slot2. Does not
2529         apply when working around 05000074.
2530         (define_insn_reservation storep_anomaly_05000074): New.
2531         (define_insn_reservation storei): Does not apply when working
2532         around 05000074.
2533         (define_insn_reservation storei_anomaly_05000074): New.
2534         (define_attr length): Add dsp32shiftimm case.
2535         (define_insn movsi_insn32, movsi_insv, ashlsi3_insn, ashrsi3,
2536         ror_one, rol_one, lshrsi3, lshrpdi3, ashrpdi3, movhiv2hi_low,
2537         movhiv2hi_high, composev2hi, packv2hi, movv2hi_hi,
2538         ssashiftv2hi3, ssashifthi3, ssashiftsi3, lshiftv2hi3, lshifthi3):
2539         Set type as dsp32shiftimm for dsp32shiftimm alternatives.
2540
2541 2009-09-07  Martin Jambor  <mjambor@suse.cz>
2542
2543         PR middle-end/41282
2544         * tree-sra.c (create_artificial_child_access): Return NULL if
2545         build_ref_for_offset fails.
2546         (propagate_subacesses_accross_link): Allow build_ref_for_offset
2547         and create_artificial_child_access to fail.
2548
2549 2009-09-06  Dmitry Gorbachev  <d.g.gorbachev@gmail.com>
2550
2551         PR c++/41214
2552         * unwind-dw2.c (uw_init_context_1): Mark noinline.
2553         * config/ia64/unwind-ia64.c (uw_init_context_1): Likewise.
2554         * config/xtensa/unwind-dw2-xtensa.c (uw_init_context_1): Likewise.
2555
2556 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
2557
2558         * config/bfin/bfin.c (bfin_optimize_loop): When creating a new basic
2559         block, ensure it has an exit edge.  Emit a barrier after a jump.
2560
2561 2009-09-07  Nick Clifton  <nickc@redhat.com>
2562
2563         * gcc.c (this_is_linker_script): New variable.  Like
2564         this_is_library_file but for the %T constructor.
2565         (end_going_arg): If this_is_linker_script is set then locate the
2566         script and insert a --script switch before it
2567         (do_spec_2): Initialise this_is_linker_script.
2568         (do_spec_1): Likewise.  Handle %T construct.
2569         (eval_spec_function): Preserve this_is_linker_script.
2570         * doc/invoke.texi: Document %T construct in spec files.
2571         * config/m32c/m32c.h (LIB_SPEC): Use it.
2572
2573 2009-09-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
2574
2575         * rtl.h (PREFETCH_SCHEDULE_BARRIER_P): New macro.
2576         * sched-deps.c (sched_analyze_2): Make prefetches a hard barrier
2577         when volatile flag is set.
2578         * doc/rtl.texi (PREFETCH_SCHEDULE_BARRIER_P): Add documentation pieces.
2579
2580 2009-09-06  Eric Botcazou  <ebotcazou@adacore.com>
2581
2582         PR bootstrap/41241
2583         * combine-stack-adj.c (try_apply_stack_adjustment): Handle stores.
2584         (combine_stack_adjustments_for_block): Allow insns between stack
2585         adjustments and stores with corresponding pre-(dec|inc)rement or
2586         pre-modify operation.
2587
2588 2009-09-06  Jakub Jelinek  <jakub@redhat.com>
2589
2590         PR bootstrap/41241
2591         * combine-stack-adj.c (struct csa_memlist): Rename to...
2592         (struct csa_reflist): ... this.  Rename mem field to ref.
2593         (free_csa_memlist): Rename to...
2594         (free_csa_reflist): ... this.
2595         (record_one_stack_memref): Rename to...
2596         (record_one_stack_ref): ... this.  Handle also REG_P.
2597         (try_apply_stack_adjustment): Handle also REG_P.
2598         (struct record_stack_memrefs_data): Rename to...
2599         (struct record_stack_refs_data): ... this.  Rename memlist field to
2600         reflist.
2601         (record_stack_memrefs): Rename to...
2602         (record_stack_refs): ... this.  For DEBUG_INSNs keep traversing
2603         subexpressions instead of failing when a MEM contains SP references.
2604         For SP itself in DEBUG_INSNs queue it also onto reflist chain.
2605         (combine_stack_adjustments_for_block): Adjust for mem to ref renaming.
2606
2607 2009-09-06  Richard Guenther  <rguenther@suse.de>
2608
2609         PR middle-end/41144
2610         * tree.c (build_array_type): Do not record types marked
2611         with structural equality in the canonical type hashtable.
2612
2613 2009-09-06  Richard Guenther  <rguenther@suse.de>
2614
2615         PR middle-end/41261
2616         * tree-ssa-alias.c (refs_may_alias_p_1): Bail out for function decls.
2617
2618 2009-09-05  Richard Guenther  <rguenther@suse.de>
2619
2620         PR middle-end/41181
2621         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Use the correct type.
2622
2623 2009-09-05  Richard Guenther  <rguenther@suse.de>
2624
2625         PR debug/41273
2626         * tree-ssa-operands.c (get_tmr_operands): Pass through opf_no_vops.
2627
2628 2009-09-05  Richard Guenther  <rguenther@suse.de>
2629
2630         PR middle-end/41271
2631         * tree-ssa.c (useless_type_conversion_p): Drop qualifiers
2632         before comparing function argument types.
2633
2634 2009-09-05  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
2635
2636         PR target/41024
2637         * config/i386/mingw-w64.h (ASM_SPEC): Pass -v instead of -V to
2638         the assembler.
2639
2640 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
2641
2642         Revert:
2643         2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
2644
2645         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
2646         locators before emit_insn is called.
2647
2648 2009-09-04  Vladimir Makarov  <vmakarov@redhat.com>
2649
2650         PR bootstrap/41241
2651         * ira.c (update_equiv_reg): Revert my previous patch for the PR.
2652         * reginfo.c (resize_reg_info): Call allocate_reg_info if necessary.
2653         (reginfo_init): Don't call allocate_reg_info.
2654
2655 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
2656
2657         PR target/41262
2658         * config/alpha/alpha.c (alpha_does_function_need_gp): Use
2659         NONDEBUG_INSN_P instead of INSN_P.
2660
2661 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
2662
2663         PR debug/41225
2664         * tree-vect-stmts.c (vect_stmt_relevant_p): Skip debug uses.
2665
2666 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
2667
2668         PR target/41252
2669         * config/arm/vfp.md (*cmpdf_split_vfp): Fix src mode in the second
2670         pattern of the split.
2671
2672 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
2673
2674         * toplev.c (process_options): Move setter of flag_var_tracking
2675         before other tests that depend on it.  Move down setter of
2676         flag_rename_registers.  Don't enable var-tracking-assignments
2677         by default if selective scheduling is enabled.  Warn if both
2678         are enabled.
2679
2680 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
2681
2682         * var-tracking.c (dv_is_decl_p): Adjust NULL behavior to match
2683         comment.  Use switch statement to catch overlaps between rtx
2684         and tree codes.  Accept FUNCTION_DECLs in addition to those in...
2685         (IS_DECL_CODE): ... here. Remove.
2686         (check_value_is_not_decl): Remove.
2687         (dv_from_decl, dv_from_value): Check after conversion.
2688
2689 2009-09-04  Richard Guenther  <rguenther@suse.de>
2690
2691         PR middle-end/41257
2692         * (cgraph_finalize_compilation_unit): Move finalizing aliases
2693         after emitting tunks.  Move emitting thunks and ctors from ...
2694         (cgraph_optimize): ... here.  Remove redundant
2695         cgraph_analyze_functions.
2696         * varasm.c (find_decl_and_mark_needed): Remove no longer
2697         necessary check.
2698         (finish_aliases_1): Adjust check for thunk aliases.
2699
2700 2009-09-04  Daniel Gutson  <dgutson@codesourcery.com>
2701
2702         * config/arm/arm.md (ctzsi2): Added braces
2703         to avoid warning that broke booststrap.
2704
2705 2009-09-04  Martin Jambor  <mjambor@suse.cz>
2706
2707         PR tree-optimization/41112
2708         * tree-sra.c (build_ref_for_offset_1): Signal that we cannot
2709         handle variable-bounded arrays.
2710         (expr_with_var_bounded_array_refs_p): New function.
2711         (analyze_access_subtree): Call expr_with_var_bounded_array_refs_p.
2712
2713 2009-09-04  Wolfgang Gellerich  <gellerich@de.ibm.com>
2714
2715         * config/s390/2097.md: Removed two incorrect bypasses.
2716         (z10_fsimpdf): Fixed latency.
2717         (z10_fhex): New insn_reservation.
2718         (z10_floaddf): Fixed latency.
2719         (z10_floadsf): Fixed latency.
2720         (z10_ftrunctf): Fixed latency.
2721         (z10_ftruncdf): Fixed latency.
2722         * config/s390/s390.c (z10_cost): Fixed values.
2723         (s390_adjust_priority): Added z10 path.
2724         * config/s390/s390.md (type): Added fhex.
2725         (*mov<mode>_64dfp): Updated type attribute.
2726         (*mov<mode>_64): Updated type attribute.
2727         (*mov<mode>_31): Updated type attribute.
2728         (*mov<mode>"): Likewise.
2729         * config/s390/2084.md (x_fsimpdf): Updated condition.
2730
2731 2009-09-04  Andreas Krebbel  <krebbel1@de.ibm.com>
2732
2733         * config/s390/s390.md ("*fmadd<mode>", "*fmsub<mode>"): Enable mem
2734         RTXs in the predicate for operand 1.
2735
2736 2009-09-03  Daniel Gutson  <dgutson@codesourcery.com>
2737
2738         * config/arm/arm.md (UNSPEC_RBIT): New constant.
2739         (rbitsi2): New insn.
2740         (ctzsi2): New expand.
2741         * config/arm/arm.h (CTZ_DEFINED_VALUE_AT_ZERO): New macro.
2742
2743 2009-09-03  Martin Jambor  <mjambor@suse.cz>
2744
2745         * tree-sra.c (duplicate_expr_for_different_base): Removed.
2746         (create_artificial_child_access): Use build_ref_for_offset instead
2747         of duplicate_expr_for_different_base.
2748         (propagate_subacesses_accross_link): Likewise.
2749
2750 2009-09-03  Richard Sandiford  <rdsandiford@googlemail.com>
2751
2752         * config/mips/mips.c (USEFUL_INSN_P): Use NONDEBUG_INSN_P instead
2753         of INSN_P.
2754         (mips16e_collect_argument_saves): Skip debug instructions.
2755         (mips_74k_agen_init): Use CALL_P || JUMP_P instead of !NONJUMP_INSN_P.
2756         (mips16_lay_out_constants): Use USEFUL_INSN_P instead of INSN_P.
2757         (r10k_insert_cache_barriers): Likewise.
2758         (mips_reorg_process_insns): Likewise.
2759
2760 2009-09-03  Vladimir Makarov  <vmakarov@redhat.com>
2761
2762         PR bootstrap/41241
2763         * ira.c (update_equiv_reg): Remove check on class likely spill.
2764
2765 2009-09-03  Jakub Jelinek  <jakub@redhat.com>
2766
2767         PR debug/41236
2768         * dwarf2out.c (loc_descriptor): Don't use SUBREG_REG macro on
2769         SIGN_EXTEND or ZERO_EXTEND.  Don't assume there is a REG inside of
2770         it or SUBREG.
2771
2772         PR debug/41238
2773         * function.c (assign_parm_find_stack_rtl): Don't set mem attributes on
2774         the stack slot if it is passed by invisible reference.
2775         * var-tracking.c (vt_add_function_parameters): Handle arguments passed
2776         by invisible reference.
2777
2778 2009-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
2779
2780         * config/bfin/linux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
2781         * config/bfin/uclinux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
2782         * config/bfin/bfin.h (TARGET_SUPPORTS_SYNC_CALLS): Provide default of
2783         0.
2784         * config/bfin/sync.md: New file.
2785         * config/bfin/bfin.md: Include it.
2786         (UNSPEC_ATOMIC): New.
2787         (UNSPEC_ONES): Provide a unique number.
2788
2789         From Jie Zhang <jie.zhang@analog.com>:
2790         * config/bfin/bfin.c (ret_regs): New.
2791         (must_save_fp_p): Don't return true because of frame_pointer_needed.
2792         (must_save_rets_p): New.
2793         (n_regs_saved_by_prologue): Use must_save_rets_p instead of
2794         current_function_is_leaf.
2795         (do_link): Likewise.
2796         (do_unlink): Likewise.
2797         (expand_interrupt_handler_prologue): Use ret_regs array.
2798         (expand_interrupt_handler_epilogue): Use ret_regs array and
2799         pass return register to gen_return_internal.
2800         (bfin_expand_epilogue): Pass return register to
2801         gen_return_internal.
2802         (bfin_expand_call): Explicitly clobber RETS.
2803         * config/bfin/bfin.h (FUNCTION_RETURN_REGISTERS): Define.
2804         * config/bfin/bfin.md (call_symbol_fdpic, call_value_symbol_fdpic,
2805         call_insn_fdpic, call_value_insn_fdpic, call_symbol,
2806         call_value_symbol, call_insn, call_value_insn): Explicitly clobber
2807         RETS.
2808         (return_internal): Take a reg rtx rather than the register number.
2809
2810 2009-09-03  H.J. Lu  <hongjiu.lu@intel.com>
2811
2812         * tree-parloops.c (parallelize_loops): Cast to HOST_WIDE_INT
2813         when comparing against estimated_loop_iterations_int return.
2814
2815 2009-09-03  Richard Guenther  <rguenther@suse.de>
2816
2817         * dwarf2out.c (dwarf2out_do_cfi_asm): Remove check of
2818         eh_personality_libfunc.
2819
2820 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
2821
2822         * tree-parloops.c (separate_decls_in_region): Add space.
2823
2824 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
2825
2826         * tree-parloops.c (separate_decls_in_region): Change the condition
2827         checking if there are reductions in the loop.
2828
2829 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
2830
2831         PR tree-optimization/38275
2832         * tree-parloops.c (parallelize_loops): Replace profitability condition
2833         for expected number of iterations.
2834
2835 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
2836
2837         * doc/invoke.texi (BUILD_CONFIG): Document --with-build-config.
2838         (bootstrap-debug): Explain conditions in which it becomes default.
2839         (bootstrap-debug-big): Rather than duplicate bootstrap-debug,
2840         make it add to it.
2841
2842 2009-09-03  Namhyung Kim  <namhyung@gmail.com>
2843
2844         * doc/invoke.texi (Optimize Options): Move
2845         -finline-small-functions to the -O2 list.
2846
2847 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
2848
2849         * toplev.c (process_options): Enable var-tracking-assignments
2850         by default if var-tracking is enabled.
2851
2852 2009-09-02  David Daney  <ddaney@caviumnetworks.com>
2853
2854         * cfgbuild.c (find_bb_boundaries): Split blocks containing a
2855         barrier.
2856         * emit-rtl.c (prev_nonnote_insn_bb): New function.
2857         * rtl.h (prev_nonnote_insn_bb): Declare it.
2858
2859 2009-09-03  Diego Novillo  <dnovillo@google.com>
2860
2861         * cgraph.c (cgraph_node_for_decl): New.
2862         * cgraph.h (cgraph_node_for_decl): Declare.
2863         * tree.c (host_integerp): Return 0 if T is NULL.
2864
2865 2009-09-03  Diego Novillo  <dnovillo@google.com>
2866
2867         * tree.h (struct alias_pair): Move from varasm.c.
2868         (alias_pairs): Likewise.
2869         (TYPE_MAXVAL): Define.
2870         (TYPE_MINVAL): Define.
2871         (iterative_hash_host_wide_int): Declare.
2872         (remove_unreachable_alias_pairs): Declare.
2873         * tree-pass.h (pass_ipa_free_lang_data): Declare.
2874         * diagnostic.c (default_diagnostic_starter): Make extern.
2875         (default_diagnostic_finalizer): Make extern.
2876         * diagnostic.h (default_diagnostic_starter): Declare.
2877         (default_diagnostic_finalizer): Declare.
2878         (default_tree_printer): Declare.
2879         * toplev.c (default_tree_printer): Make extern.
2880
2881 2009-09-03  Richard Guenther  <rguenther@suse.de>
2882             Diego Novillo  <dnovillo@google.com>
2883
2884         * cgraph.c (cgraph_add_new_function): Remove gimplification.
2885         * cgraphunit.c (cgraph_expand_function): Do not emit
2886         associated thunks from here.
2887         (cgraph_emit_thunks): New.
2888         (cgraph_optimize): Call it.
2889         Return if any IPA pass finds an error.
2890         * varasm.c (finish_aliases_1): Ignore errorneous aliases used
2891         by thunks.
2892
2893 2009-09-03  Simon Baldwin  <simonb@google.com>
2894             Rafael Espindola  <espindola@google.com>
2895             Richard Guenther  <rguenther@suse.de>
2896             Doug Kwan  <dougkwan@google.com>
2897             Diego Novillo  <dnovillo@google.com>
2898
2899         * tree.c: Include tree-pass.h, langhooks-def.h,
2900         diagnostic.h, cgraph.h, timevar.h, except.h and debug.h.
2901         (free_lang_data_in_type): New.
2902         (need_assembler_name_p): New.
2903         (free_lang_data_in_block): New.
2904         (free_lang_data_in_decl): New.
2905         (struct free_lang_data_d): New.
2906         (add_tree_to_fld_list): New.
2907         (find_decls_types_r): New.
2908         (get_eh_types_for_runtime): New.
2909         (find_decls_types_in_eh_region): New.
2910         (find_decls_types_in_node): New.
2911         (find_decls_types_in_var): New.
2912         (free_lang_data_in_cgraph): New.
2913         (free_lang_data): New.
2914         (gate_free_lang_data): New.
2915         (pass_ipa_free_lang_data): New.
2916
2917 2009-09-03  Diego Novillo  <dnovillo@google.com>
2918
2919         * timevar.def (TV_IPA_FREE_LANG_DATA): Define.
2920         * langhooks.h (struct lang_hooks): Add field free_lang_data.
2921         (lang_hooks): Remove const qualifier.
2922         * ipa.c (cgraph_remove_unreachable_nodes): Call
2923         remove_unreachable_alias_pairs.
2924         * except.c (add_type_for_runtime): Check if TYPE has
2925         already been converted.
2926         (lookup_type_for_runtime): Likewise.
2927         (check_handled): Handle converted types.
2928         * varasm.c (remove_unreachable_alias_pairs): New.
2929         * gimple.c: Include demangle.h.
2930         (gimple_decl_printable_name): New.
2931         (gimple_fold_obj_type_ref): New.
2932         * gimple.h (gimple_decl_printable_name): Declare.
2933         (gimple_fold_obj_type_ref): Declare.
2934         * passes.c (init_optimization_passes): Add pass
2935         pass_ipa_free_lang_data.
2936         * langhooks-def.h (LANG_HOOKS_FREE_LANG_DATA): Define.
2937         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_FREE_LANG_DATA.
2938
2939 2009-09-03  Diego Novillo  <dnovillo@google.com>
2940
2941         * c-lang.c (lang_hooks): Remove const qualifier.
2942
2943 2009-09-02  Loren James Rittle  <ljrittle@acm.org>
2944
2945         * doc/install.texi (*-*-freebsd*): Update target information.
2946
2947 2009-09-02  Anatoly Sokolov  <aesok@post.ru>
2948
2949         * hard-reg-set.h (call_fixed_regs): Remove.
2950         * reginfo.c (call_fixed_regs): Remove.
2951         (init_reg_sets_1): Remove initialization of call_fixed_regs.
2952         (globalize_reg): Don't use call_fixed_regs.
2953         * caller-save.c (init_caller_save): Use call_fixed_reg_set instead of
2954         call_fixed_regs.
2955
2956 2009-09-01  Michael Matz  <matz@suse.de>
2957
2958         * expr.h (emit_storent_insn, expand_expr_real_1,
2959         expand_expr_real_2): Declare.
2960         * expr.c (emit_storent_insn, expand_expr_real_1,
2961         expand_expr_real_2): Export.
2962         (store_expr): Setting and evaluating dont_return_target is useless.
2963         (expand_expr_real_1, <case GOTO_EXPR, RETURN_EXPR, SWITCH_EXPR,
2964         LABEL_EXPR and ASM_EXPR>): Move to gcc_unreachable.
2965         * except.c (expand_resx_expr): Rename to ...
2966         (expand_resx_stmt): ... this.  Rewrite to take gimple statement.
2967         * except.h (expand_resx_stmt): Declare.
2968         * stmt.c: Add include gimple.h
2969         (expand_asm_expr): Rename to ...
2970         (expand_asm_stmt): ... this. Rewrite to take gimple statement.
2971         (expand_case): Rewrite to take gimple statement.
2972         * tree.h (expand_asm_stmt): Declare.
2973         (expand_case): Change prototype.
2974         * Makefile.in (stmt.o): Depend on gimple.h.
2975         * builtins.c (expand_builtin_synchronize): Build gimple asm
2976         statement, not an ASM_EXPR.
2977         * cfgexpand.c (gimple_cond_pred_to_tree, set_expr_location_r,
2978         gimple_to_tree, release_stmt_tree): Remove.
2979         (expand_gimple_cond): Don't call gimple_cond_pred_to_tree or
2980         ggc_free, but hold comparison code and operands separately.
2981         Call jumpif_1 and jumpifnot_1 instead of jumpif and jumpifnot.
2982         (expand_call_stmt, expand_gimple_stmt_1,
2983         expand_gimple_stmt): New helpers.
2984         (expand_gimple_tailcall): Don't call gimple_to_tree, expand_expr_stmt,
2985         release_stmt_tree.  Call expand_gimple_stmt instead.
2986         (expand_gimple_basic_block): Ditto.
2987
2988         * calls.c (emit_call_1): Don't look at EH regions here, make
2989         fntree parameter useless.
2990         (expand_call): New local rettype for TREE_TYPE(exp), use it
2991         throughout.  Remove local p, use addr instead.
2992         Don't look at EH regions here.
2993
2994 2009-09-02  Vladimir Makarov  <vmakarov@redhat.com>
2995
2996         * doc/invoke.texi (-fsched-pressure): Document it.
2997         (-fsched-reg-pressure-heuristic): Remove it.
2998
2999         * reload.c (ira.h): Include.
3000         (find_reloads): Add choosing reload on number of small spilled
3001         classes.
3002
3003         * haifa-sched.c (ira.h): Include.
3004         (sched_pressure_p, sched_regno_cover_class, curr_reg_pressure,
3005         saved_reg_pressure, curr_reg_live, saved_reg_live,
3006         region_ref_regs): New variables.
3007         (sched_init_region_reg_pressure_info, mark_regno_birth_or_death,
3008         initiate_reg_pressure_info, setup_ref_regs,
3009         initiate_bb_reg_pressure_info, save_reg_pressure,
3010         restore_reg_pressure, dying_use_p, print_curr_reg_pressure): New
3011         functions.
3012         (setup_insn_reg_pressure_info): New function.
3013         (rank_for_schedule): Add pressure checking and insn issue time.
3014         Remove comparison of insn reg weights.
3015         (ready_sort): Set insn reg pressure info.
3016         (update_register_pressure, setup_insn_max_reg_pressure,
3017         update_reg_and_insn_max_reg_pressure,
3018         sched_setup_bb_reg_pressure_info): New functions.
3019         (schedule_insn): Add code for printing and updating reg pressure info.
3020         (find_set_reg_weight, find_insn_reg_weight): Remove.
3021         (ok_for_early_queue_removal): Do nothing if pressure_only_p.
3022         (debug_ready_list): Print reg pressure info.
3023         (schedule_block): Ditto.  Check insn issue time.
3024         (sched_init): Set up sched_pressure_p.  Allocate and set up some
3025         reg pressure related info.
3026         (sched_finish): Free some reg pressure related info.
3027         (fix_tick_ready): Make insn always ready if pressure_p.
3028         (init_h_i_d): Don't call find_insn_reg_weight.
3029         (haifa_finish_h_i_d): Free insn reg pressure info.
3030
3031         * ira-int.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
3032         ira_memory_move_cost, ira_class_hard_regs,
3033         ira_class_hard_regs_num, ira_no_alloc_regs,
3034         ira_available_class_regs, ira_reg_class_cover_size,
3035         ira_reg_class_cover, ira_class_translate): Move to ira.h.
3036
3037         * ira-lives.c (single_reg_class): Check mode to find how many
3038         registers are necessary for operand.
3039         (ira_implicitly_set_insn_hard_regs): New.
3040
3041         * common.opt (fsched-pressure): New options.
3042         (fsched-reg-pressure-heuristic): Remove.
3043
3044         * ira.c (setup_eliminable_regset): Rename to
3045         ira_setup_eliminable_regset.  Make it external.
3046         (expand_reg_info): Pass cover class to setup_reg_classes.
3047         (ira): Call resize_reg_info instead of allocate_reg_info.
3048
3049         * sched-deps.c: Include ira.h.
3050         (implicit_reg_pending_clobbers, implicit_reg_pending_uses): New.
3051         (create_insn_reg_use, create_insn_reg_set, setup_insn_reg_uses,
3052         reg_pressure_info, insn_use_p, mark_insn_pseudo_birth,
3053         mark_insn_hard_regno_birth, mark_insn_reg_birth,
3054         mark_pseudo_death, mark_hard_regno_death, mark_reg_death,
3055         mark_insn_reg_store, mark_insn_reg_clobber,
3056         setup_insn_reg_pressure_info): New.
3057         (sched_analyze_1): Update implicit_reg_pending_uses.
3058         (sched_analyze_insn): Find implicit sets, uses, clobbers of regs.
3059         Use them to create dependencies.  Set insn reg uses and pressure
3060         info.  Process reg_pending_uses in one place.
3061         (free_deps): Free implicit sets.
3062         (remove_from_deps): Remove implicit sets if necessary.  Check
3063         implicit sets when clearing reg_last_in_use.
3064         (init_deps_global): Clear implicit_reg_pending_clobbers and
3065         implicit_reg_pending_uses.
3066
3067         * ira.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
3068         ira_memory_move_cost, ira_class_hard_regs,
3069         ira_class_hard_regs_num, ira_no_alloc_regs,
3070         ira_available_class_regs, ira_reg_class_cover_size,
3071         ira_reg_class_cover, ira_class_translate): Move from ira-int.h.
3072         (ira_setup_eliminable_regset, ira_set_pseudo_classes,
3073         ira_implicitly_set_insn_hard_regs): New prototypes.
3074
3075         * ira-costs.c (pseudo_classes_defined_p, allocno_p,
3076         cost_elements_num): New variables.
3077         (allocno_costs, total_costs): Rename to costs and
3078         total_allocno_costs.
3079         (COSTS_OF_ALLOCNO): Rename to COSTS.
3080         (allocno_pref): Rename to pref.
3081         (allocno_pref_buffer): Rename to pref_buffer.
3082         (common_classes): Rename to regno_cover_class.
3083         (COST_INDEX): New.
3084         (record_reg_classes): Set allocno attributes only if allocno_p.
3085         (record_address_regs): Ditto.  Use COST_INDEX instead of ALLOCNO_NUM.
3086         (scan_one_insn): Use COST_INDEX and COSTS instead of ALLOCNO_NUM
3087         and COSTS_OF_ALLOCNO.
3088         (print_costs): Rename to print_allocno_costs.
3089         (print_pseudo_costs): New.
3090         (process_bb_node_for_costs): Split into 2 functions with new
3091         function process_bb_for_costs.  Pass BB to process_bb_for_costs.
3092         (find_allocno_class_costs): Rename to find_costs_and_classes.  Add
3093         new parameter dump_file.  Use cost_elements_num instead of
3094         ira_allocnos_num.  Make one iteration if preferred classes were
3095         already calculated for scheduler.  Make 2 versions of code
3096         depending on allocno_p.
3097         (setup_allocno_cover_class_and_costs): Check allocno_p.  Use
3098         regno_cover_class and COSTS instead of common_classes and
3099         COSTS_OF_ALLOCNO.
3100         (init_costs, finish_costs): New.
3101         (ira_costs): Set up allocno_p and cost_elements_num.  Call
3102         init_costs and finish_costs.
3103         (ira_set_pseudo_classes): New.
3104
3105         * rtl.h (allocate_reg_info): Remove.
3106         (resize_reg_info): Change return type.
3107         (reg_cover_class): New.
3108         (setup_reg_classes): Add new parameter.
3109
3110         * sched-int.h (struct deps_reg): New member implicit_sets.
3111         (sched_pressure_p, sched_regno_cover_class): New external definitions.
3112         (INCREASE_BITS): New macro.
3113         (struct reg_pressure_data, struct reg_use_data): New.
3114         (struct _haifa_insn_data): Remove reg_weight.  Add members
3115         reg_pressure, reg_use_list, reg_set_list, and
3116         reg_pressure_excess_cost_change.
3117         (struct deps): New member implicit_sets.
3118         (pressure_p): New variable.
3119         (COVER_CLASS_BITS, INCREASE_BITS): New macros.
3120         (struct reg_pressure_data, struct reg_use_data): New.
3121         (INSN_REG_WEIGHT): Remove.
3122         (INSN_REG_PRESSURE, INSN_MAX_REG_PRESSURE, INSN_REG_USE_LIST,
3123         INSN_REG_SET_LIST, INSN_REG_PRESSURE_EXCESS_COST_CHANGE): New macros.
3124         (sched_init_region_reg_pressure_info,
3125         sched_setup_bb_reg_pressure_info): New prototypes.
3126
3127         * reginfo.c (struct reg_pref): New member coverclass.
3128         (reg_cover_class): New function.
3129         (reginfo_init, pass_reginfo_init): Move after free_reg_info.
3130         (reg_info_size): New variable.
3131         (allocate_reg_info): Make static.  Setup reg_info_size.
3132         (resize_reg_info): Use reg_info_size.  Return flag of resizing.
3133         (setup_reg_classes): Add a new parameter.  Setup cover class too.
3134
3135         * Makefile.in (reload.o, haifa-sched.o, sched-deps.o): Add ira.h to
3136         the dependencies.
3137
3138         * sched-rgn.c (deps_join): Set up implicit_sets.
3139         (schedule_region): Set up region and basic blocks pressure
3140         relative info.
3141
3142         * passes.c (init_optimization_passes): Move
3143         pass_subregs_of_mode_init before pass_sched.
3144
3145 2009-09-02  Martin Jambor  <mjambor@suse.cz>
3146
3147         * tree-sra.c (struct access): New field grp_hint.
3148         (dump_access): Dump grp_hint.
3149         (sort_and_splice_var_accesses): Set grp_hint if a group is read
3150         multiple times.
3151         (analyze_access_subtree): Only scalarize accesses with grp_hint set or
3152         those which have been specifically read and somehow written to.
3153         (propagate_subacesses_accross_link): Set grp_hint of right child and
3154         also possibly of the left child.
3155
3156 2009-09-02  Jakub Jelinek  <jakub@redhat.com>
3157
3158         * tree-object-size.c (addr_object_size): Always use object_size_type
3159         0 or 2 when determining the pointer pointed object size.
3160
3161 2009-09-02  Richard Guenther  <rguenther@suse.de>
3162
3163         Revert
3164         2009-08-31  Richard Guenther  <rguenther@suse.de>
3165
3166         * builtins.c (fold_builtin_memory_op): Use the alias oracle
3167         to query if the memory regions for memmove overlap.
3168         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
3169         asserts on pointers, instead deal with odd trees.
3170         (ptr_derefs_may_alias_p): Likewise.
3171         (refs_may_alias_p_1): Constructor bases also never alias.
3172
3173 2009-08-01  Christian Bruel  <christian.bruel@st.com>
3174
3175         Revert:
3176         2009-07-31  Christian Bruel  <christian.bruel@st.com>
3177         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
3178
3179 2009-09-01  Alexandre Oliva  <aoliva@redhat.com>
3180
3181         * doc/invoke.texi (-fvar-tracking-assignments): New.
3182         (-fvar-tracking-assignments-toggle): New.
3183         (-fdump-final-insns=file): Mark filename as optional.
3184         (--param min-nondebug-insn-uid): New.
3185         (-gdwarf-@{version}): Mention version 4.
3186         * opts.c (common_handle_option): Accept it.
3187         * tree-vrp.c (find_assert_locations_1): Skip debug stmts.
3188         * regrename.c (regrename_optimize): Drop last.  Don't count debug
3189         insns as uses.  Don't reject change because of debug insn.
3190         (do_replace): Reject DEBUG_INSN as chain starter.  Take base_regno
3191         from the chain starter, and check for inexact matches in DEBUG_INSNS.
3192         (scan_rtx_reg): Accept inexact matches in DEBUG_INSNs.
3193         (build_def_use): Simplify and fix the marking of DEBUG_INSNs.
3194         * sched-ebb.c (schedule_ebbs): Skip boundary debug insns.
3195         * fwprop.c (forward_propagate_and_simplify): ...into debug insns.
3196         * doc/gimple.texi (is_gimple_debug): New.
3197         (gimple_debug_bind_p): New.
3198         (is_gimple_call, gimple_assign_cast_p): End sentence with period.
3199         * doc/install.texi (bootstrap-debug): More details.
3200         (bootstrap-debug-big, bootstrap-debug-lean): Document.
3201         (bootstrap-debug-lib): More details.
3202         (bootstrap-debug-ckovw): Update.
3203         (bootstrap-time): New.
3204         * tree-into-ssa.c (mark_def_sites): Skip debug stmts.
3205         (insert_phi_nodes_for): Insert debug stmts.
3206         (rewrite_stmt): Take iterator.  Insert debug stmts.
3207         (rewrite_enter_block): Adjust.
3208         (maybe_replace_use_in_debug_stmt): New.
3209         (rewrite_update_stmt): Use it.
3210         (mark_use_interesting): Return early for debug stmts.
3211         * tree-ssa-loop-im.c (rewrite_bittest): Propagate DEFs into debug
3212         stmts before replacing stmt.
3213         (move_computations_stmt): Likewise.
3214         * ira-conflicts.c (add_copies): Skip debug insns.
3215         * regstat.c (regstat_init_n_sets_and_refs): Discount debug insns.
3216         (regstat_bb_compute_ri): Skip debug insns.
3217         * tree-ssa-threadupdate.c (redirection_block_p): Skip debug stmts.
3218         * tree-ssa-loop-manip.c (find_uses_to_rename_stmt,
3219         check_loop_closed_ssa_stmt): Skip debug stmts.
3220         * tree-tailcall.c (find_tail_calls): Likewise.
3221         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Likewise.
3222         * tree.h (MAY_HAVE_DEBUG_STMTS): New.
3223         (build_var_debug_value_stat): Declare.
3224         (build_var_debug_value): Define.
3225         (target_for_debug_bind): Declare.
3226         * reload.c (find_equiv_reg): Skip debug insns.
3227         * rtlanal.c (reg_used_between_p): Skip debug insns.
3228         (side_effects_p): Likewise.
3229         (canonicalize_condition): Likewise.
3230         * ddg.c (create_ddg_dep_from_intra_loop_link): Check that non-debug
3231         insns never depend on debug insns.
3232         (create_ddg_dep_no_link): Likewise.
3233         (add_cross_iteration_register_deps): Use ANTI_DEP for debug insns.
3234         Don't add inter-loop dependencies for debug insns.
3235         (build_intra_loop_deps): Likewise.
3236         (create_ddg): Count debug insns.
3237         * ddg.h (struct ddg::num_debug): New.
3238         (num_backargs): Pair up with previous int field.
3239         * diagnostic.c (diagnostic_report_diagnostic): Skip notes on
3240         -fcompare-debug-second.
3241         * final.c (get_attr_length_1): Skip debug insns.
3242         (rest_of_clean-state): Don't dump CFA_RESTORE_STATE.
3243         * gcc.c (invoke_as): Call compare-debug-dump-opt.
3244         (driver_self_specs): Map -fdump-final-insns to
3245         -fdump-final-insns=..
3246         (get_local_tick): New.
3247         (compare_debug_dump_opt_spec_function): Test for . argument and
3248         compute output name.  Compute temp output spec without flag name.
3249         Compute -frandom-seed.
3250         (OPT): Undef after use.
3251         * cfgloopanal.c (num_loop_insns): Skip debug insns.
3252         (average_num_loop_insns): Likewise.
3253         * params.h (MIN_NONDEBUG_INSN_UID): New.
3254         * gimple.def (GIMPLE_DEBUG): New.
3255         * ipa-reference.c (scan_stmt_for_static_refs): Skip debug stmts.
3256         * auto-inc-dec.c (merge_in_block): Skip debug insns.
3257         (merge_in_block): Fix whitespace.
3258         * toplev.c (flag_var_tracking): Update comment.
3259         (flag_var_tracking_assignments): New.
3260         (flag_var_tracking_assignments_toggle): New.
3261         (process_options): Don't open final insns dump file if we're not
3262         going to write to it.  Compute defaults for var_tracking.
3263         * df-scan.c (df_insn_rescan_debug_internal): New.
3264         (df_uses_record): Handle debug insns.
3265         * haifa-sched.c (ready): Initialize n_debug.
3266         (contributes_to_priority): Skip debug insns.
3267         (dep_list_size): New.
3268         (priority): Use it.
3269         (rank_for_schedule): Likewise.  Schedule debug insns as soon as
3270         they're ready.  Disregard previous debug insns to make decisions.
3271         (queue_insn): Never queue debug insns.
3272         (ready_add, ready_remove_first, ready_remove): Count debug insns.
3273         (schedule_insn): Don't reject debug insns because of issue rate.
3274         (get_ebb_head_tail, no_real_insns_p): Skip boundary debug insns.
3275         (queue_to_ready): Skip and discount debug insns.
3276         (choose_ready): Let debug insns through.
3277         (schedule_block): Check boundary debug insns.  Discount debug
3278         insns, schedule them early.  Adjust whitespace.
3279         (set_priorities): Check for boundary debug insns.
3280         (add_jump_dependencies): Use dep_list_size.
3281         (prev_non_location_insn): New.
3282         (check_cfg): Use it.
3283         * tree-ssa-loop-ivopts.c (find-interesting_users): Skip debug
3284         stmts.
3285         (remove_unused_ivs): Reset debug stmts.
3286         * modulo-sched.c (const_iteration_count): Skip debug insns.
3287         (res_MII): Discount debug insns.
3288         (loop_single_full_bb_p): Skip debug insns.
3289         (sms_schedule): Likewise.
3290         (sms_schedule_by_order): Likewise.
3291         (ps_has_conflicts): Likewise.
3292         * caller-save.c (refmarker_fn): New.
3293         (save_call_clobbered_regs): Replace regs with saved mem in
3294         debug insns.
3295         (mark_referenced_regs): Take pointer, mark and arg.  Adjust.
3296         Call refmarker_fn mark for hardregnos.
3297         (mark_reg_as_referenced): New.
3298         (replace_reg_with_saved_mem): New.
3299         * ipa-pure-const.c (check_stmt): Skip debug stmts.
3300         * cse.c (cse_insn): Canonicalize debug insns.  Skip them when
3301         searching back.
3302         (cse_extended_basic_block): Skip debug insns.
3303         (count_reg_usage): Likewise.
3304         (is_dead_reg): New, split out of...
3305         (set_live_p): ... here.
3306         (insn_live_p): Use it for debug insns.
3307         * tree-stdarg.c (check_all_va_list_escapes): Skip debug stmts.
3308         (execute_optimize_stdarg): Likewise.
3309         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
3310         * tree-ssa-propagate.c (substitute_and_fold): Don't regard
3311         changes in debug stmts as changes.
3312         * sel-sched.c (moving_insn_creates_bookkeeping_block_p): New.
3313         (moveup_expr): Don't move across debug insns.  Don't move
3314         debug insn if it would create a bookkeeping block.
3315         (moveup_expr_cached): Don't use cache for debug insns that
3316         are heads of blocks.
3317         (compute_av_set_inside_bb): Skip debug insns.
3318         (sel_rank_for_schedule): Schedule debug insns first.  Remove
3319         dead code.
3320         (block_valid_for_bookkeeping_p); Support lax searches.
3321         (create_block_for_bookkeeping): Adjust block numbers when
3322         encountering debug-only blocks.
3323         (find_place_for_bookkeeping): Deal with debug-only blocks.
3324         (generate_bookkeeping_insn): Accept no place to insert.
3325         (remove_temp_moveop_nops): New argument full_tidying.
3326         (prepare_place_to_insert): Deal with debug insns.
3327         (advance_state_on_fence): Debug insns don't start cycles.
3328         (update_boundaries): Take fence as argument.  Deal with
3329         debug insns.
3330         (schedule_expr_on_boundary): No full_tidying on debug insns.
3331         (fill_insns): Deal with debug insns.
3332         (track_scheduled_insns_and_blocks): Don't count debug insns.
3333         (need_nop_to_preserve_insn_bb): New, split out of...
3334         (remove_insn_from_stream): ... this.
3335         (fur_orig_expr_not_found): Skip debug insns.
3336         * rtl.def (VALUE): Move up.
3337         (DEBUG_INSN): New.
3338         * tree-ssa-sink.c (all_immediate_uses_same_place): Skip debug stmts.
3339         (nearest_common_dominator_of_uses): Take debug_stmts argument.
3340         Set it if debug stmts are found.
3341         (statement_sink_location): Skip debug stmts.  Propagate
3342         moving defs into debug stmts.
3343         * ifcvt.c (first_active_insn): Skip debug insns.
3344         (last_active_insns): Likewise.
3345         (cond_exec_process_insns): Likewise.
3346         (noce_process_if_block): Likewise.
3347         (check_cond_move_block): Likewise.
3348         (cond_move_convert_if_block): Likewise.
3349         (block_jumps_and_fallthru_p): Likewise.
3350         (dead_or_predicable): Likewise.
3351         * dwarf2out.c (debug_str_hash_forced): New.
3352         (find_AT_string): Add comment.
3353         (gen_label_for_indirect_string): New.
3354         (get_debug_string_label): New.
3355         (AT_string_form): Use it.
3356         (mem_loc_descriptor): Handle non-TLS symbols.  Handle MINUS , DIV,
3357         MOD, AND, IOR, XOR, NOT, ABS, NEG, and CONST_STRING.  Accept but
3358         discard COMPARE, IF_THEN_ELSE, ROTATE, ROTATERT, TRUNCATE and
3359         several operations that cannot be represented with DWARF opcodes.
3360         (loc_descriptor): Ignore SIGN_EXTEND and ZERO_EXTEND.  Require
3361         dwarf_version 4 for DW_OP_implicit_value and DW_OP_stack_value.
3362         (dwarf2out_var_location): Take during-call mark into account.
3363         (output_indirect_string): Update comment.  Output if there are
3364         label and references.
3365         (prune_indirect_string): New.
3366         (prune_unused_types): Call it if debug_str_hash_forced.
3367         More in dwarf2out.c, from Jakub Jelinek <jakub@redhat.com>:
3368         (dw_long_long_const): Remove.
3369         (struct dw_val_struct): Change val_long_long type to rtx.
3370         (print_die, attr_checksum, same_dw_val_p, loc_descriptor): Adjust for
3371         val_long_long change to CONST_DOUBLE rtx from a long hi/lo pair.
3372         (output_die): Likewise.  Use HOST_BITS_PER_WIDE_INT size of each
3373         component instead of HOST_BITS_PER_LONG.
3374         (output_loc_operands): Likewise.  For const8* assert
3375         HOST_BITS_PER_WIDE_INT rather than HOST_BITS_PER_LONG is >= 64.
3376         (output_loc_operands_raw): For const8* assert HOST_BITS_PER_WIDE_INT
3377         rather than HOST_BITS_PER_LONG is >= 64.
3378         (add_AT_long_long): Remove val_hi and val_lo arguments, add
3379         val_const_double.
3380         (size_of_die): Use HOST_BITS_PER_WIDE_INT size multiplier instead of
3381         HOST_BITS_PER_LONG for dw_val_class_long_long.
3382         (add_const_value_attribute): Adjust add_AT_long_long caller.  Don't
3383         handle TLS SYMBOL_REFs.  If CONST wraps a constant, tail recurse.
3384         (dwarf_stack_op_name): Handle DW_OP_implicit_value and
3385         DW_OP_stack_value.
3386         (size_of_loc_descr, output_loc_operands, output_loc_operands_raw):
3387         Handle DW_OP_implicit_value.
3388         (extract_int): Move prototype earlier.
3389         (mem_loc_descriptor): For SUBREG punt if inner
3390         mode size is wider than DWARF2_ADDR_SIZE.  Handle SIGN_EXTEND
3391         and ZERO_EXTEND by DW_OP_shl and DW_OP_shr{a,}.  Handle
3392         EQ, NE, GT, GE, LT, LE, GTU, GEU, LTU, LEU, SMIN, SMAX, UMIN,
3393         UMAX, SIGN_EXTRACT, ZERO_EXTRACT.
3394         (loc_descriptor): Compare mode size with DWARF2_ADDR_SIZE
3395         instead of Pmode size.
3396         (loc_descriptor): Add MODE argument.  Handle CONST_INT, CONST_DOUBLE,
3397         CONST_VECTOR, CONST, LABEL_REF and SYMBOL_REF if mode != VOIDmode,
3398         attempt to handle other expressions.  Don't handle TLS SYMBOL_REFs.
3399         (concat_loc_descriptor, concatn_loc_descriptor,
3400         loc_descriptor_from_tree_1): Adjust loc_descriptor callers.
3401         (add_location_or_const_value_attribute): Likewise.  For single
3402         location loc_lists attempt to use add_const_value_attribute
3403         for constant decls.  Add DW_AT_const_value even if
3404         NOTE_VAR_LOCATION is VAR_LOCATION with CONSTANT_P or CONST_STRING
3405         in its expression.
3406         * cfgbuild.c (inside_basic_block_p): Handle debug insns.
3407         (control_flow_insn_p): Likewise.
3408         * tree-parloops.c (eliminate_local_variables_stmt): Handle debug stmt.
3409         (separate_decls_in_region_debug_bind): New.
3410         (separate_decls_in_region): Process debug bind stmts afterwards.
3411         * recog.c (verify_changes): Handle debug insns.
3412         (extract_insn): Likewise.
3413         (peephole2_optimize): Skip debug insns.
3414         * dse.c (scan_insn): Skip debug insns.
3415         * sel-sched-ir.c (return_nop_to_pool): Take full_tidying argument.
3416         Pass it on.
3417         (setup_id_for_insn): Handle debug insns.
3418         (maybe_tidy_empty_bb): Adjust whitespace.
3419         (tidy_control_flow): Skip debug insns.
3420         (sel_remove_insn): Adjust for debug insns.
3421         (sel_estimate_number_of_insns): Skip debug insns.
3422         (create_insn_rtx_from_pattern): Handle debug insns.
3423         (create_copy_of_insn_rtx): Likewise.
3424         * sel-sched-.h (sel_bb_end): Declare.
3425         (sel_bb_empty_or_nop_p): New.
3426         (get_all_loop_exits): Use it.
3427         (_eligible_successor_edge_p): Likewise.
3428         (return_nop_to_pool): Adjust.
3429         * tree-eh.c (tre_empty_eh_handler_p): Skip debug stmts.
3430         * ira-lives.c (process_bb_node_lives): Skip debug insns.
3431         * gimple-pretty-print.c (dump_gimple_debug): New.
3432         (dump_gimple_stmt): Use it.
3433         (dump_bb_header): Skip gimple debug stmts.
3434         * regmove.c (optimize_reg_copy_1): Discount debug insns.
3435         (fixup_match_2): Likewise.
3436         (regmove_backward_pass): Likewise.  Simplify combined
3437         replacement.  Handle debug insns.
3438         * function.c (instantiate_virtual_regs): Handle debug insns.
3439         * function.h (struct emit_status): Add x_cur_debug_insn_uid.
3440         * print-rtl.h: Include cselib.h.
3441         (print_rtx): Print VALUEs.  Split out and recurse for VAR_LOCATIONs.
3442         * df.h (df_inns_rescan_debug_internal): Declare.
3443         * gcse.c (alloc_hash_table): Estimate n_insns.
3444         (cprop_insn): Don't regard debug insns as changes.
3445         (bypass_conditional_jumps): Skip debug insns.
3446         (one_pre_gcse_pass): Adjust.
3447         (one_code_hoisting_pass): Likewise.
3448         (compute_ld_motion_mems): Skip debug insns.
3449         (one_cprop_pass): Adjust.
3450         * tree-if-conv.c (tree_if_convert_stmt): Reset debug stmts.
3451         (if_convertible_stmt_p): Handle debug stmts.
3452         * init-regs.c (initialize_uninitialized_regs): Skip debug insns.
3453         * tree-vect-loop.c (vect_is_simple_reduction): Skip debug stmts.
3454         * ira-build.c (create_bb_allocnos): Skip debug insns.
3455         * tree-flow-inline.h (has_zero_uses): Discount debug stmts.
3456         (has_single_use): Likewise.
3457         (single_imm_use): Likewise.
3458         (num_imm_uses): Likewise.
3459         * tree-ssa-phiopt.c (empty_block_p): Skip debug stmts.
3460         * tree-ssa-coalesce.c (build_ssa_conflict_graph): Skip debug stmts.
3461         (create_outofssa_var_map): Likewise.
3462         * lower-subreg.c (adjust_decomposed_uses): New.
3463         (resolve_debug): New.
3464         (decompose_multiword_subregs): Use it.
3465         * tree-dfa.c (find_referenced_vars): Skip debug stmts.
3466         * emit-rtl.c: Include params.h.
3467         (cur_debug_insn_uid): Define.
3468         (set_new_first_and_last_insn): Set cur_debug_insn_uid too.
3469         (copy_rtx_if_shared_1): Handle debug insns.
3470         (reset_used_flags): Likewise.
3471         (set_used_flags): LIkewise.
3472         (get_max_insn_count): New.
3473         (next_nondebug_insn): New.
3474         (prev_nondebug_insn): New.
3475         (make_debug_insn_raw): New.
3476         (emit_insn_before_noloc): Handle debug insns.
3477         (emit_jump_insn_before_noloc): Likewise.
3478         (emit_call_insn_before_noloc): Likewise.
3479         (emit_debug_insn_before_noloc): New.
3480         (emit_insn_after_noloc): Handle debug insns.
3481         (emit_jump_insn_after_noloc): Likewise.
3482         (emit_call_insn_after_noloc): Likewise.
3483         (emit_debug_insn_after_noloc): Likewise.
3484         (emit_insn_after): Take loc from earlier non-debug insn.
3485         (emit_jump_insn_after): Likewise.
3486         (emit_call_insn_after): Likewise.
3487         (emit_debug_insn_after_setloc): New.
3488         (emit_debug_insn_after): New.
3489         (emit_insn_before): Take loc from later non-debug insn.
3490         (emit_jump_insn_before): Likewise.
3491         (emit_call_insn_before): Likewise.
3492         (emit_debug_insn_before_setloc): New.
3493         (emit_debug_insn_before): New.
3494         (emit_insn): Handle debug insns.
3495         (emit_debug_insn): New.
3496         (emit_jump_insn): Handle debug insns.
3497         (emit_call_insn): Likewise.
3498         (emit): Likewise.
3499         (init_emit): Take min-nondebug-insn-uid into account.
3500         Initialize cur_debug_insn_uid.
3501         (emit_copy_of_insn_after): Handle debug insns.
3502         * cfgexpand.c (gimple_assign_rhs_to_tree): Do not overwrite
3503         location of single rhs in place.
3504         (maybe_dump_rtl_for_gimple_stmt): Dump lineno.
3505         (floor_sdiv_adjust): New.
3506         (cell_sdiv_adjust): New.
3507         (cell_udiv_adjust): New.
3508         (round_sdiv_adjust): New.
3509         (round_udiv_adjust): New.
3510         (wrap_constant): Moved from cselib.
3511         (unwrap_constant): New.
3512         (expand_debug_expr): New.
3513         (expand_debug_locations): New.
3514         (expand_gimple_basic_block): Drop hiding redeclaration.  Expand
3515         debug bind stmts.
3516         (gimple_expand_cfg): Expand debug locations.
3517         * cselib.c: Include tree-pass.h.
3518         (struct expand_value_data): New.
3519         (cselib_record_sets_hook): New.
3520         (PRESERVED_VALUE_P, LONG_TERM_PRESERVED_VALUE_P): New.
3521         (cselib_clear_table): Move, and implemnet in terms of...
3522         (cselib_reset_table_with_next_value): ... this.
3523         (cselib_get_next_unknown_value): New.
3524         (discard_useless_locs): Don't discard preserved values.
3525         (cselib_preserve_value): New.
3526         (cselib_preserved_value_p): New.
3527         (cselib_preserve_definitely): New.
3528         (cselib_clear_preserve): New.
3529         (cselib_preserve_only_values): New.
3530         (new_cselib_val): Take rtx argument.  Dump it in details.
3531         (cselib_lookup_mem): Adjust.
3532         (expand_loc): Take regs_active in struct.  Adjust.  Silence
3533         dumps unless details are requested.
3534         (cselib_expand_value_rtx_cb): New.
3535         (cselib_expand_value_rtx): Rename and reimplment in terms of...
3536         (cselib_expand_value_rtx_1): ... this.  Adjust.  Silence dumps
3537         without details.  Copy more subregs.  Try to resolve values
3538         using a callback.  Wrap constants.
3539         (cselib_subst_to_values): Adjust.
3540         (cselib_log_lookup): New.
3541         (cselib_lookup): Call it.
3542         (cselib_invalidate_regno): Don't count preserved values as useless.
3543         (cselib_invalidate_mem): Likewise.
3544         (cselib_record_set): Likewise.
3545         (struct set): Renamed to cselib_set, moved to cselib.h.
3546         (cselib_record_sets): Adjust.  Call hook.
3547         (cselib_process_insn): Reset table when it would be cleared.
3548         (dump_cselib_val): New.
3549         (dump_cselib_table): New.
3550         * tree-cfgcleanup.c (tree_forwarded_block_p): Skip debug stmts.
3551         (remove_forwarder_block): Support moving debug stmts.
3552         * cselib.h (cselib_record_sets_hook): Declare.
3553         (cselib_expand_callback): New type.
3554         (cselib_expand_value_rtx_cb): Declare.
3555         (cselib_reset_table_with_next_value): Declare.
3556         (cselib_get_next_unknown_value): Declare.
3557         (cselib_preserve_value): Declare.
3558         (cselib_preserved_value_p): Declare.
3559         (cselib_preserve_only_values): Declare.
3560         (dump_cselib_table): Declare.
3561         * cfgcleanup.c (flow_find_cross_jump): Skip debug insns.
3562         (try_crossjump_to_edge): Likewise.
3563         (delete_unreachable_blocks): Remove dominant GIMPLE blocks after
3564         dominated blocks when debug stmts are present.
3565         * simplify-rtx.c (delegitimize_mem_from_attrs): New.
3566         * tree-ssa-live.c (remove_unused_locals): Skip debug stmts.
3567         (set_var_live_on_entry): Likewise.
3568         * loop-invariant.c (find_invariants_bb): Skip debug insns.
3569         * cfglayout.c (curr_location, last_location): Make static.
3570         (set_curr_insn_source_location): Don't avoid bouncing.
3571         (get_curr_insn_source_location): New.
3572         (get_curr_insn_block): New.
3573         (duplicate_insn_chain): Handle debug insns.
3574         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Propagate
3575         into debug stmts.
3576         * common.opt (fcompare-debug): Move to sort order.
3577         (fdump-unnumbered-links): Likewise.
3578         (fvar-tracking-assignments): New.
3579         (fvar-tracking-assignments-toggle): New.
3580         * tree-ssa-dce.c (mark_stmt_necessary): Don't mark blocks
3581         because of debug stmts.
3582         (mark_stmt_if_obviously_necessary): Mark debug stmts.
3583         (eliminate_unnecessary_stmts): Walk dominated blocks before
3584         dominators.
3585         * tree-ssa-ter.c (find_replaceable_in_bb): Skip debug stmts.
3586         * ira.c (memref_used_between_p): Skip debug insns.
3587         (update_equiv_regs): Likewise.
3588         * sched-deps.c (sd_lists_size): Accept empty list.
3589         (sd_init_insn): Mark debug insns.
3590         (sd_finish_insn): Unmark them.
3591         (sd_add_dep): Reject non-debug deps on debug insns.
3592         (fixup_sched_groups): Give debug insns group treatment.
3593         Skip debug insns.
3594         (sched_analyze_reg): Don't mark debug insns for sched before call.
3595         (sched_analyze_2): Handle debug insns.
3596         (sched_analyze_insn): Compute next non-debug insn.  Handle debug
3597         insns.
3598         (deps_analyze_insn): Handle debug insns.
3599         (deps_start_bb): Skip debug insns.
3600         (init_deps): Initialize last_debug_insn.
3601         * tree-ssa.c (target_for_debug_bind): New.
3602         (find_released_ssa_name): New.
3603         (propagate_var_def_into_debug_stmts): New.
3604         (propagate_defs_into_debug_stmts): New.
3605         (verify_ssa): Skip debug bind stmts without values.
3606         (warn_uninialized_vars): Skip debug stmts.
3607         * target-def.h (TARGET_DELEGITIMIZE_ADDRESS): Set default.
3608         * rtl.c (rtx_equal_p_cb): Handle VALUEs.
3609         (rtx_equal_p): Likewise.
3610         * ira-costs.c (scan_one_insn): Skip debug insns.
3611         (process_bb_node_for_hard_reg_moves): Likewise.
3612         * rtl.h (DEBUG_INSN_P): New.
3613         (NONDEBUG_INSN_P): New.
3614         (MAY_HAVE_DEBUG_INSNS): New.
3615         (INSN_P): Accept debug insns.
3616         (RTX_FRAME_RELATED_P): Likewise.
3617         (INSN_DELETED_P): Likewise
3618         (PAT_VAR_LOCATION_DECL): New.
3619         (PAT_VAR_LOCATION_LOC): New.
3620         (PAT_VAR_OCATION_STATUS): New.
3621         (NOTE_VAR_LOCATION_DECL): Reimplement.
3622         (NOTE_VAR_LOCATION_LOC): Likewise.
3623         (NOTE_VAR_LOCATION_STATUS): Likewise.
3624         (INSN_VAR_LOCATION): New.
3625         (INSN_VAR_LOCATION_DECL): New.
3626         (INSN_VAR_LOCATION_LOC): New.
3627         (INSN_VAR_LOCATION_STATUS): New.
3628         (gen_rtx_UNKNOWN_VAR_LOC): New.
3629         (VAR_LOC_UNKNOWN_P): New.
3630         (NOTE_DURING_CALL_P): New.
3631         (SCHED_GROUP_P): Accept debug insns.
3632         (emit_debug_insn_before): Declare.
3633         (emit_debug_insn_before_noloc): Declare.
3634         (emit_debug_insn_beore_setloc): Declare.
3635         (emit_debug_insn_after): Declare.
3636         (emit_debug_insn_after_noloc): Declare.
3637         (emit_debug_insn_after_setloc): Declare.
3638         (emit_debug_insn): Declare.
3639         (make_debug_insn_raw): Declare.
3640         (prev_nondebug_insn): Declare.
3641         (next_nondebug_insn): Declare.
3642         (delegitimize_mem_from_attrs): Declare.
3643         (get_max_insn_count): Declare.
3644         (wrap_constant): Declare.
3645         (unwrap_constant): Declare.
3646         (get_curr_insn_source_location): Declare.
3647         (get_curr_insn_block): Declare.
3648         * tree-inline.c (insert_debug_decl_map): New.
3649         (processing_debug_stmt): New.
3650         (remap_decl): Don't create new mappings in debug stmts.
3651         (remap_gimple_op_r): Don't add references in debug stmts.
3652         (copy_tree_body_r): Likewise.
3653         (remap_gimple_stmt): Handle debug bind stmts.
3654         (copy_bb): Skip debug stmts.
3655         (copy_edges_for_bb): Likewise.
3656         (copy_debug_stmt): New.
3657         (copy_debug_stmts): New.
3658         (copy_body): Copy debug stmts at the end.
3659         (insert_init_debug_bind): New.
3660         (insert_init_stmt): Take id.  Skip and emit debug stmts.
3661         (setup_one_parameter): Remap variable earlier, register debug mapping.
3662         (estimate_num_insns): Skip debug stmts.
3663         (expand_call_inline): Preserve debug_map.
3664         (optimize_inline_calls): Check for no debug_stmts left-overs.
3665         (unsave_expr_now): Preserve debug_map.
3666         (copy_gimple_seq_and_replace_locals): Likewise.
3667         (tree_function_versioning): Check for no debug_stmts left-overs.
3668         Init and destroy debug_map as needed.  Split edges unconditionally.
3669         (build_duplicate_type): Init and destroy debug_map as needed.
3670         * tree-inline.h: Include gimple.h instead of pointer-set.h.
3671         (struct copy_body_data): Add debug_stmts and debug_map.
3672         * sched-int.h (struct ready_list): Add n_debug.
3673         (struct deps): Add last_debug_insn.
3674         (DEBUG_INSN_SCHED_P): New.
3675         (BOUNDARY_DEBUG_INSN_P): New.
3676         (SCHEDULE_DEBUG_INSN_P): New.
3677         (sd_iterator_cond): Accept empty list.
3678         * combine.c (create_log_links): Skip debug insns.
3679         (combine_instructions): Likewise.
3680         (cleanup_auto_inc_dec): New.  From Jakub Jelinek: Make sure the
3681         return value is always unshared.
3682         (struct rtx_subst_pair): New.
3683         (auto_adjust_pair): New.
3684         (propagate_for_debug_subst): New.
3685         (propagate_for_debug): New.
3686         (try_combine): Skip debug insns.  Propagate removed defs into
3687         debug insns.
3688         (next_nonnote_nondebug_insn): New.
3689         (distribute_notes): Use it.  Skip debug insns.
3690         (distribute_links): Skip debug insns.
3691         * tree-outof-ssa.c (set_location_for_edge): Likewise.
3692         * resource.c (mark_target_live_regs): Likewise.
3693         * var-tracking.c: Include cselib.h and target.h.
3694         (enum micro_operation_type): Add MO_VAL_USE, MO_VAL_LOC, and
3695         MO_VAL_SET.
3696         (micro_operation_type_name): New.
3697         (enum emit_note_where): Add EMIT_NOTE_AFTER_CALL_INSN.
3698         (struct micro_operation_def): Update comments.
3699         (decl_or_value): New type.  Use instead of decls.
3700         (struct emit_note_data_def): Add vars.
3701         (struct attrs_def): Use decl_or_value.
3702         (struct variable_tracking_info_def): Add permp, flooded.
3703         (struct location_chain_def): Update comment.
3704         (struct variable_part_def): Use decl_or_value.
3705         (struct variable_def): Make var_part a variable length array.
3706         (valvar_pool): New.
3707         (scratch_regs): New.
3708         (cselib_hook_called): New.
3709         (dv_is_decl_p): New.
3710         (dv_is_value_p): New.
3711         (dv_as_decl): New.
3712         (dv_as_value): New.
3713         (dv_as_opaque): New.
3714         (dv_onepart_p): New.
3715         (dv_pool): New.
3716         (IS_DECL_CODE): New.
3717         (check_value_is_not_decl): New.
3718         (dv_from_decl): New.
3719         (dv_from_value): New.
3720         (dv_htab_hash): New.
3721         (variable_htab_hash): Use it.
3722         (variable_htab_eq): Support values.
3723         (variable_htab_free): Free from the right pool.
3724         (attrs_list_member, attrs_list_insert): Use decl_or_value.
3725         (attrs_list_union): Adjust.
3726         (attrs_list_mpdv_union): New.
3727         (tie_break_pointers): New.
3728         (canon_value_cmp): New.
3729         (unshare_variable): Return possibly-modified slot.
3730         (vars_copy_1): Adjust.
3731         (var_reg_decl_set): Adjust.  Split out of...
3732         (var_reg_set): ... this.
3733         (get_init_value): Adjust.
3734         (var_reg_delete_and_set): Adjust.
3735         (var_reg_delete): Adjust.
3736         (var_regno_delete): Adjust.
3737         (var_mem_decl_set): Split out of...
3738         (var_mem_set): ... this.
3739         (var_mem_delete_and_set): Adjust.
3740         (var_mem_delete): Adjust.
3741         (val_store): New.
3742         (val_reset): New.
3743         (val_resolve): New.
3744         (variable_union): Adjust.  Speed up merge of 1-part vars.
3745         (variable_canonicalize): Use unshared slot.
3746         (VALUED_RECURSED_INTO): New.
3747         (find_loc_in_1pdv): New.
3748         (struct dfset_merge): New.
3749         (insert_into_intersection): New.
3750         (intersect_loc_chains): New.
3751         (loc_cmp): New.
3752         (canonicalize_loc_order_check): New.
3753         (canonicalize_values_mark): New.
3754         (canonicalize_values_star): New.
3755         (variable_merge_over_cur): New.
3756         (variable_merge_over_src): New.
3757         (dataflow_set_merge): New.
3758         (dataflow_set_equiv_regs): New.
3759         (remove_duplicate_values): New.
3760         (struct dfset_post_merge): New.
3761         (variable_post_merge_new_vals): New.
3762         (variable_post_merge_perm_vals): New.
3763         (dataflow_post_merge_adjust): New.
3764         (find_mem_expr_in_1pdv): New.
3765         (dataflow_set_preserve_mem_locs): New.
3766         (dataflow_set_remove_mem_locs): New.
3767         (dataflow_set_clear_at_call): New.
3768         (onepart_variable_different_p): New.
3769         (variable_different_p): Use it.
3770         (dataflow_set_different_1): Adjust.  Make detailed dump more verbose.
3771         (track_expr_p): Add need_rtl parameter.  Don't generate rtl
3772         if not needed.
3773         (track_loc_p): Pass it true.
3774         (struct count_use_info): New.
3775         (find_use_val): New.
3776         (replace_expr_with_values): New.
3777         (log_op_type): New.
3778         (use_type): New, partially split out of...
3779         (count_uses): ... this.  Count new micro-ops.
3780         (count_uses_1): Adjust.
3781         (count_stores): Adjust.
3782         (count_with_sets): New.
3783         (VAL_NEEDS_RESOLUTION): New.
3784         (VAL_HOLDS_TRACK_EXPR): New.
3785         (VAL_EXPR_IS_COPIED): New.
3786         (VAL_EXPR_IS_CLOBBERED): New.
3787         (add_uses): Adjust.  Generate new micro-ops.
3788         (add_uses_1): Adjust.
3789         (add_stores): Generate new micro-ops.
3790         (add_with_sets): New.
3791         (find_src_status): Adjust.
3792         (find_src_set_src): Adjust.
3793         (compute_bb_dataflow): Use dataflow_set_clear_at_call.
3794         Handle new micro-ops.  Canonicalize value equivalances.
3795         (vt_find_locations): Compute total size of hash tables for
3796         dumping.  Perform merge for var-tracking-assignments.  Don't
3797         disregard single-block loops.
3798         (dump_attrs_list): Handle decl_or_value.
3799         (dump_variable): Take variable.  Deal with decl_or_value.
3800         (dump_variable_slot): New.
3801         (dump_vars): Use it.
3802         (dump_dataflow_sets): Adjust.
3803         (set_slot_part): New, extended to support one-part variables
3804         after splitting out of...
3805         (set_variable_part): ... this.
3806         (clobber_slot_part): New, split out of...
3807         (clobber_variable_part): ... this.
3808         (delete_slot_part): New, split out of...
3809         (delete_variable_part): .... this.
3810         (check_wrap_constant): New.
3811         (vt_expand_loc_callback): New.
3812         (vt_expand_loc): New.
3813         (emit_note_insn_var_location): Adjust.  Handle values.  Handle
3814         EMIT_NOTE_AFTER_CALL_INSN.
3815         (emit_notes_for_differences_1): Adjust.  Handle values.
3816         (emit_notes_for_differences_2): Likewise.
3817         (emit_notes_for_differences): Adjust.
3818         (emit_notes_in_bb): Take pointer to set.  Emit AFTER_CALL_INSN notes.
3819         Adjust.  Handle new micro-ops.
3820         (vt_add_function_parameters): Adjust.  Create and bind values.
3821         (vt_initialize): Adjust.  Initialize scratch_regs and
3822         valvar_pool, flooded and perm..  Initialize and use cselib.  Log
3823         operations.  Move some code to count_with_sets and add_with_sets.
3824         (delete_debug_insns): New.
3825         (vt_debug_insns_local): New.
3826         (vt_finalize): Release permp, valvar_pool, scratch_regs.  Finish
3827         cselib.
3828         (var_tracking_main): If var-tracking-assignments is enabled
3829         but var-tracking isn't, delete debug insns and leave.  Likewise
3830         if we exceed limits or fail the stack adjustments tests, and
3831         after all var-tracking processing.
3832         More in var-tracking, from Jakub Jelinek <jakub@redhat.com>:
3833         (dataflow_set): Add traversed_vars.
3834         (value_chain, const_value_chain): New typedefs.
3835         (value_chain_pool, value_chains): New variables.
3836         (value_chain_htab_hash, value_chain_htab_eq, add_value_chain,
3837         add_value_chains, add_cselib_value_chains, remove_value_chain,
3838         remove_value_chains, remove_cselib_value_chains): New functions.
3839         (shared_hash_find_slot_unshare_1, shared_hash_find_slot_1,
3840         shared_hash_find_slot_noinsert_1, shared_hash_find_1): New
3841         static inlines.
3842         (shared_hash_find_slot_unshare, shared_hash_find_slot,
3843         shared_hash_find_slot_noinsert, shared_hash_find): Update.
3844         (dst_can_be_shared): New variable.
3845         (unshare_variable): Unshare set->vars if shared, use shared_hash_*.
3846         Clear dst_can_be_shared.  If set->traversed_vars is non-NULL and
3847         different from set->vars, look up slot again instead of using the
3848         passed in slot.
3849         (dataflow_set_init): Initialize traversed_vars.
3850         (variable_union): Use shared_hash_*.  Use initially NO_INSERT
3851         lookup if set->vars is shared.  Don't keep slot cleared before
3852         calling unshare_variable.  Unshare set->vars if needed.  Adjust
3853         unshare_variable callers.  Clear dst_can_be_shared if needed.
3854         Even ->refcount == 1 vars must be unshared if set->vars is shared
3855         and var needs to be modified.
3856         (dataflow_set_union): Set traversed_vars during canonicalization.
3857         (VALUE_CHANGED, DECL_CHANGED): Define.
3858         (set_dv_changed, dv_changed_p): New static inlines.
3859         (track_expr_p): Clear DECL_CHANGED.
3860         (dump_dataflow_sets): Set it.
3861         (variable_was_changed): Call set_dv_changed.
3862         (emit_note_insn_var_location): Likewise.
3863         (changed_variables_stack): New variable.
3864         (check_changed_vars_1, check_changed_vars_2): New functions.
3865         (emit_notes_for_changes): Do nothing if changed_variables is
3866         empty.  Traverse changed_variables with check_changed_vars_1,
3867         call check_changed_vars_2 on each changed_variables_stack entry.
3868         (emit_notes_in_bb): Add SET argument.  Just clear it at the
3869         beginning, use it instead of local &set, don't destroy it at the end.
3870         (vt_emit_notes): Call dataflow_set_clear early on all
3871         VTI(bb)->out sets, never use them, instead use emit_notes_in_bb
3872         computed set, dataflow_set_clear also VTI(bb)->in when we are
3873         done with the basic block.  Initialize changed_variables_stack,
3874         free it afterwards.  If ENABLE_CHECKING verify that after noting
3875         differences to an empty set value_chains hash table is empty.
3876         (vt_initialize): Initialize value_chains and value_chain_pool.
3877         (vt_finalize): Delete value_chains htab, free value_chain_pool.
3878         (variable_tracking_main): Call dump_dataflow_sets before calling
3879         vt_emit_notes, not after it.
3880         * tree-flow.h (propagate_defs_into_debug_stmts): Declare.
3881         (propagate_var_def_into_debug_stmts): Declare.
3882         * df-problems.c (df_lr_bb_local_compute): Skip debug insns.
3883         (df_set_note): Reject debug insns.
3884         (df_whole_mw_reg_dead_p): Take added_notes_p argument.  Don't
3885         add notes to debug insns.
3886         (df_note_bb_compute): Adjust.  Likewise.
3887         (df_simulate_uses): Skip debug insns.
3888         (df_simulate_initialize_backwards): Likewise.
3889         * reg-stack.c (subst_stack_regs_in_debug_insn): New.
3890         (subst_stack_regs_pat): Reject debug insns.
3891         (convert_regs_1): Handle debug insns.
3892         * Makefile.in (TREE_INLINE_H): Take pointer-set.h from GIMPLE_H.
3893         (print-rtl.o): Depend on cselib.h.
3894         (cselib.o): Depend on TREE_PASS_H.
3895         (var-tracking.o): Depend on cselib.h and TARGET_H.
3896         * sched-rgn.c (rgn_estimate_number_of_insns): Discount debug insns.
3897         (init_ready_list): Skip boundary debug insns.
3898         (add_branch_dependences): Skip debug insns.
3899         (free_block_dependencies): Check for blocks with only debug insns.
3900         (compute_priorities): Likewise.
3901         * gimple.c (gss_for_code): Handle GIMPLE_DEBUG.
3902         (gimple_build_with_ops_stat): Take subcode as unsigned.  Adjust
3903         all callers.
3904         (gimple_build_debug_bind_stat): New.
3905         (empty_body_p): Skip debug stmts.
3906         (gimple_has_side_effects): Likewise.
3907         (gimple_rhs_has_side_effects): Likewise.
3908         * gimple.h (enum gimple_debug_subcode, GIMPLE_DEBUG_BIND): New.
3909         (gimple_build_debug_bind_stat): Declare.
3910         (gimple_build_debug_bind): Define.
3911         (is_gimple_debug): New.
3912         (gimple_debug_bind_p): New.
3913         (gimple_debug_bind_get_var): New.
3914         (gimple_debug_bind_get_value): New.
3915         (gimple_debug_bind_get_value_ptr): New.
3916         (gimple_debug_bind_set_var): New.
3917         (gimple_debug_bind_set_value): New.
3918         (GIMPLE_DEBUG_BIND_NOVALUE): New internal temporary macro.
3919         (gimple_debug_bind_reset_value): New.
3920         (gimple_debug_bind_has_value_p): New.
3921         (gsi_next_nondebug): New.
3922         (gsi_prev_nondebug): New.
3923         (gsi_start_nondebug_bb): New.
3924         (gsi_last_nondebug_bb): New.
3925         * sched-vis.c (print_pattern): Handle VAR_LOCATION.
3926         (print_insn): Handle DEBUG_INSN.
3927         * tree-cfg.c (remove_bb): Walk stmts backwards.  Let loc
3928         of first insn prevail.
3929         (first_stmt): Skip debug stmts.
3930         (first_non_label_stmt): Likewise.
3931         (last_stmt): Likewise.
3932         (has_zero_uses_1): New.
3933         (single_imm_use_1): New.
3934         (verify_gimple_debug): New.
3935         (verify_types_in_gimple_stmt): Handle debug stmts.
3936         (verify_stmt): Likewise.
3937         (debug_loop_num): Skip debug stmts.
3938         (remove_edge_and_dominated_blocks): Remove dominators last.
3939         * tree-ssa-reasssoc.c (rewrite_expr_tree): Propagate into debug stmts.
3940         (linearize_expr): Likewise.
3941         * config/i386/i386.c (ix86_delegitimize_address): Call
3942         default implementation.
3943         * config/ia64/ia64.c (ia64_safe_itanium_class): Handle debug insns.
3944         (group_barrier_needed): Skip debug insns.
3945         (emit_insn_group_barriers): Likewise.
3946         (emit_all_insn_group_barriers): Likewise.
3947         (ia64_variable_issue): Handle debug insns.
3948         (ia64_dfa_new_cycle): Likewise.
3949         (final_emit_insn_group_barriers): Skip debug insns.
3950         (ia64_dwarf2out_def_steady_cfa): Take frame argument.  Don't
3951         def cfa without frame.
3952         (process_set): Likewise.
3953         (process_for_unwind_directive): Pass frame on.
3954         * config/rs6000/rs6000.c (TARGET_DELEGITIMIZE_ADDRESS): Define.
3955         (rs6000_delegitimize_address): New.
3956         (rs6000_debug_adjust_cost): Handle debug insns.
3957         (is_microcoded_insn): Likewise.
3958         (is_cracked_insn): Likewise.
3959         (is_nonpipeline_insn): Likewise.
3960         (insn_must_be_first_in_group): Likewise.
3961         (insn_must_be_last_in_group): Likewise.
3962         (force_new_group): Likewise.
3963         * cfgrtl.c (rtl_split_block): Emit INSN_DELETED note if block
3964         contains only debug insns.
3965         (rtl_merge_blocks): Skip debug insns.
3966         (purge_dead_edges): Likewise.
3967         (rtl_block_ends_with_call_p): Skip debug insns.
3968         * dce.c (deletable_insn_p): Handle VAR_LOCATION.
3969         (mark_reg_dependencies): Skip debug insns.
3970         * params.def (PARAM_MIN_NONDEBUG_INSN_UID): New.
3971         * tree-ssanames.c (release_ssa_name): Propagate def into debug stmts.
3972         * tree-ssa-threadedge.c
3973         (record_temporary_equivalences_from_stmts): Skip debug stmts.
3974         * regcprop.c (replace_oldest_value_addr): Skip debug insns.
3975         (replace_oldest_value_mem): Use ALL_REGS for debug insns.
3976         (copyprop_hardreg_forward_1): Handle debug insns.
3977         * reload1.c (reload): Skip debug insns.  Replace unassigned
3978         pseudos in debug insns with their equivalences.
3979         (eliminate_regs_in_insn): Skip debug insns.
3980         (emit_input_reload_insns): Skip debug insns at first, adjust
3981         them later.
3982         * tree-ssa-operands.c (add_virtual_operand): Reject debug stmts.
3983         (get_indirect_ref_operands): Pass opf_no_vops on.
3984         (get_expr_operands): Likewise.  Skip debug stmts.
3985         (parse_ssa_operands): Scan debug insns with opf_no_vops.
3986
3987 2009-09-01  Richard Henderson  <rth@redhat.com>
3988
3989         * tree-ssa-ccp.c (ccp_initialize): Make sure to simulate
3990         stmt_ends_pp_p statements at least once.
3991         * tree-vrp.c (vrp_initialize): Likewise.
3992         (vrp_visit_stmt): Be prepared for non-interesting stmts.
3993
3994 2009-09-01  Dodji Seketeli  <dodji@redhat.com>
3995
3996         PR bootstrap/41205
3997         Fix AIX bootstrap after PR debug/30161
3998         * dwarf2out.c (make_ith_pack_parameter_name): Don't used strnlen
3999         that is a GNU extension.
4000         (tmpl_value_parm_die_table): Move the definition of this global
4001         outside #ifdef DWARF2_DEBUGGING_INFO region.
4002
4003 2009-09-01  Richard Guenther  <rguenther@suse.de>
4004
4005         * tree.c (tree_expr_size): New function.
4006         * tree.h (tree_expr_size): Declare.
4007         * rtlanal.c (rtx_addr_can_trap_p_1): Adjust comment.
4008         * builtins.c (fold_builtin_memory_op): Use tree_expr_size.
4009         * langhooks.c (lhd_expr_size): Remove.
4010         * langhooks.h (struct lang_hooks): Remove expr_size.
4011         * explow.c (expr_size): Use tree_expr_size.
4012         (int_expr_size): Likewise.
4013         * langhooks-def.h (lhd_expr_size): Remove.
4014         (LANG_HOOKS_EXPR_SIZE): Likewise.
4015         (LANG_HOOKS_INITIALIZER): Adjust.
4016
4017 2009-09-01  Richard Guenther  <rguenther@suse.de>
4018
4019         * tree-flow.h (mark_addressable): Move declaration ...
4020         * tree.h (mark_addressable): ... here.
4021         * stmt.c (expand_asm_operands): Use mark_addressable, not
4022         lang_hooks.mark_addressable.
4023         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
4024         LANG_HOOKS_MARK_ADDRESSABLE.
4025         * langhooks.h (struct lang_hooks): Remove mark_addressable langhook.
4026         * c-objc-common.h (LANG_HOOKS_MARK_ADDRESSABLE): Remove.
4027
4028 2009-08-31  Chris Demetriou  <cgd@google.com>
4029
4030         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Never
4031         vectorize if not TARGET_SSE2.
4032
4033 2009-08-31  DJ Delorie  <dj@redhat.com>
4034
4035         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Exclude coprocessor
4036         registers if no coprocessor is enabled.
4037
4038 2009-08-31  Dodji Seketeli  <dodji@redhat.com>
4039
4040         PR debug/30161
4041         * cgraph.h (cgraph_get_node): Declare ...
4042         * cgraph.c (cgraph_get_node): ... new function.
4043         * dwarf2out.c (gen_generic_params_dies,
4044         generic_parameter_die, tree_add_const_value_attribute_for_decl,
4045         make_ith_pack_parameter_name,
4046         append_entry_to_tmpl_value_parm_die_table,
4047         gen_remaining_tmpl_value_param_die_attribute): New functions.
4048         (gen_subprogram_die): Generate debug info for template parameters
4049         if debug info level is higher than DINFO_LEVEL_TERSE.
4050         Use tree_add_const_value_attribute_for_decl instead of
4051         tree_add_const_value_attribute.
4052         (gen_const_die): Use tree_add_const_value_attribute_for_decl
4053         instead of tree_add_const_value_attribute.
4054         (gen_struct_or_union_type_die): Generate debug
4055         info for template parameters if debug info level is higher than
4056         DINFO_LEVEL_TERSE.
4057         (tree_add_const_value_attribute): Handle integral and pointer
4058         constants. Update comment.
4059         (dwarf_tag_name): Support DW_TAG_GNU_template_template_param.
4060         (dwarf_attr_name): Support DW_AT_GNU_template_name.
4061         (reference_to_unused): Fix thinko. Remove redundant predicates from
4062         tests.
4063         (tree_add_const_value_attribute): Make this work for constant
4064         expressions only.
4065         tree_add_const_value_attribute_for_decl is to be used for variable
4066         DECLs now.
4067         (add_location_or_const_value_attribute): Use
4068         tree_add_const_value_attribute_for_decl now.
4069         (dwarf2out_finish): Emit the DW_AT_const_value attribute of
4070         DW_TAG_template_value_param DIEs after function DIEs have been
4071         emitted.
4072         * langhooks.h (lang_hooks_for_types): Add
4073         get_argument_pack_elems.
4074         (lang_hooks_for_decls): Add generic_generic_parameter_decl_p.
4075         (lang_hooks): Added get_innermost_generic_parms,
4076         get_innermost_generic_args.
4077         * langhooks-def.h (LANG_HOOKS_GET_INNERMOST_GENERIC_PARMS,
4078         LANG_HOOKS_GET_INNERMOST_GENERIC_ARGS,
4079         LANG_HOOKS_GET_ARGUMENT_PACK_ELEMS,
4080         LANG_HOOKS_GENERIC_GENERIC_PARAMETER_DECL_P): New language hooks.
4081
4082 2009-08-31  DJ Delorie  <dj@redhat.com>
4083
4084         * config/mep/mep.c (machine_function): Add frame_locked flag.  Set
4085         it once we start generating the prologue or epilogue.
4086         (mep_call_saves_register): If the frame is locked, re-use
4087         cached values.
4088         (mep_assign_save_slots): New, broken out from mep_expand_prologue.
4089         (mep_expand_prologue): Call it.
4090         (mep_expand_epilogue): Likewise.
4091         (mep_start_function): Use the same logic as mep_expand_prologue.
4092         (mep_pass_by_reference): Make logic more readable.
4093         (mep_return_in_memory): Zero-sized objects are passed in memory.
4094         (mep_reorg_noframe): Make sure we have accurate REG_DEAD notes.
4095
4096 2009-08-31  Richard Guenther  <rguenther@suse.de>
4097
4098         * builtins.c (fold_builtin_memory_op): Use the alias oracle
4099         to query if the memory regions for memmove overlap.
4100         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
4101         asserts on pointers, instead deal with odd trees.
4102         (ptr_derefs_may_alias_p): Likewise.
4103         (refs_may_alias_p_1): Constructor bases also never alias.
4104
4105 2009-08-31  Gerald Pfeifer  <gerald@pfeifer.com>
4106
4107         * doc/install.texi (Final install): Adjust reference on where to
4108         order printed manuals.
4109
4110 2009-08-30  Olivier Hainque  <hainque@adacore.com>
4111
4112         * dwarf2out.c (switch_to_frame_table_section): Move
4113         definition prior to first use.
4114
4115 2009-08-30  Richard Guenther  <rguenther@suse.de>
4116
4117         PR tree-optimization/41186
4118         * tree-ssa-alias.c (ptr_deref_may_alias_ref_p): Remove.
4119         (ao_ref_init_from_ptr_and_size): New function.
4120         (ref_maybe_used_by_call_p_1): Be more precise tracking
4121         used ranges for builtin functions.
4122         (ref_maybe_used_by_call_p): Adjust.
4123         (call_may_clobber_ref_p_1): Be more precise tracking clobbered
4124         ranges for builtin functions.
4125         * tree-ssa-alias.h (ao_ref_init_from_ptr_and_size): Declare.
4126
4127 2009-08-30  Alan Modra  <amodra@bigpond.net.au>
4128
4129         PR target/41081
4130         * fwprop.c (get_reg_use_in): Delete.
4131         (free_load_extend): New function.
4132         (forward_propagate_subreg): Use it.
4133
4134 2009-08-29  Kaz Kojima  <kkojima@gcc.gnu.org>
4135
4136         * config.gcc (sh*-*-elf): Add superh stuff only for sh*-superh-elf.
4137
4138 2009-08-29  Kai Tietz<kai.tietz@onevision.com>
4139
4140         PR/41184
4141         * config/i386.c (ix86_expand_epilogue): Correct stack adjustment for
4142         padding.
4143
4144 2009-08-29  Douglas B Rupp  <rupp@gnat.com>
4145
4146         * crtstuff.c (__do_global_dtors_aux): Use atexit if no
4147         fini or fini_array section.
4148
4149 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
4150
4151         * graphite-dependences.c (graphite_legal_transform_bb): Call
4152         pbb_remove_duplicate_pdrs.
4153         * graphite-poly.c (can_collapse_pdr): Removed.
4154         (pdr_find_duplicate): Removed.
4155         (can_collapse_pdrs): New.
4156         (pbb_remove_duplicate_pdrs): New.
4157         (new_poly_dr): Do not look for duplicates.
4158         * graphite-poly.h (struct poly_bb): New field pdr_duplicates_removed.
4159         (PBB_PDR_DUPLICATES_REMOVED): New.
4160         (pbb_remove_duplicate_pdrs): Declared.
4161
4162 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
4163
4164         * graphite-interchange.c (pbb_interchange_profitable_p): Adjust
4165         the strides by multiplying by PDR_NB_REFS.
4166         * graphite-poly.c (can_collapse_pdr): New.
4167         (pdr_find_duplicate): New.
4168         (new_poly_dr): Call pdr_find_duplicate.  Collapse duplicate PDRs.
4169         Initialize PDR_NB_REFS.
4170         * graphite-poly.h (struct poly_dr): Add field nb_refs.
4171         (PDR_NB_REFS): New.
4172         (new_poly_dr): Number of subscripts is a graphite_dim_t.
4173
4174 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
4175
4176         PR middle-end/40965
4177         * graphite-poly.c (apply_poly_transforms): Remove legality test before
4178         any transform.
4179
4180 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
4181
4182         * graphite-dependences.c (pddr_original_scattering): Return NULL
4183         for read-read dependence relations.
4184         * graphite-poly.h (enum poly_dr_type): Fix comment.
4185         (pdr_read_p): New.
4186         (pdr_write_p): New.
4187         (pdr_may_write_p): New.
4188
4189 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
4190
4191         * graphite-poly.h (enum POLY_DR_TYPE): Renamed poly_dr_type.
4192         (struct poly_dr): Same.
4193         (new_poly_dr): Same.
4194         * graphite-poly.c (new_poly_dr): Same.
4195         * graphite-dependences.c (dot_deps): Disable call to system.
4196
4197 2009-08-28  Cary Coutant  <ccoutant@google.com>
4198
4199         PR debug/41063
4200         * dwarf2out.c (gen_type_die_with_usage): Use proper context for
4201         struct/union/enum types local to a function.
4202
4203 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
4204             Sebastian Pop  <sebastian.pop@amd.com>
4205
4206         * graphite-blocking.c (pbb_strip_mine_loop_depth): Renamed
4207         pbb_strip_mine_time_depth.  Changed the implementation so that
4208         transformation is expressed as a transformation on
4209         time (scatttering) dimensions.  Also, ensures that the 2d+1
4210         scheduling format is preserved.
4211         (pbb_strip_mine_profitable_p): Profitability is based on the
4212         iteration number of a given time (scattering) dimension,
4213         and not on a original loop depth dimension.
4214         (pbb_strip_mine): Call pbb_number_of_iterations_at_time.
4215         (pbb_do_strip_mine): Call psct_dynamic_dim.
4216         * graphite-poly.c (pbb_number_of_iterations_at_time): New.
4217         * graphite-poly.h (pbb_number_of_iterations_at_time): Declared.
4218         (pbb_nb_dynamic_scattering_transform): New.
4219         (psct_dynamic_dim): New.
4220
4221 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
4222
4223         * graphite-ppl.c (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
4224         * graphite-ppl.h (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
4225         * graphite-poly.c (pbb_number_of_iterations): Rename ppl_max_for_le.
4226         * graphite-interchange.c (build_linearized_memory_access): Same.
4227         (memory_stride_in_loop): Same.
4228
4229 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
4230
4231         * graphite-dependences.c (pddr_original_scattering): New.
4232         (graphite_legal_transform_dr): Call pddr_original_scattering.
4233         (dot_deps_1): New.
4234         (dot_deps): New.
4235         * graphite-dependences.h (dot_deps): Declared.
4236         * graphite-poly.c (new_poly_dr): Initialize PDR_ID.
4237         (print_pdr): Print PDR_ID.
4238         * graphite-poly.h (struct poly_dr): Add field id.
4239         (PDR_ID): New.
4240         (pbb_index): New.
4241         * graphite-scop-detection.c (dot_all_scops_1): Cleanup comment.
4242
4243 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
4244
4245         * graphite-dependences.c (graphite_carried_dependence_level_k): Do
4246         not delete the original dependence relation.
4247
4248 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
4249
4250         * graphite-dependences.c (new_poly_dr_pair): Renamed new_poly_ddr.
4251         (eq_poly_dr_pair_p): Renamed eq_poly_ddr_p.
4252         (hash_poly_dr_pair_p): Renamed hash_poly_ddr_p.
4253         (free_poly_ddr): New.
4254         (pddr_is_empty): New.
4255         (dependence_polyhedron_1): Now returns a poly_ddr_p.
4256         (dependence_polyhedron): Same.  Remove useless gcc_assert.
4257         Remove fprintfs.
4258         (graphite_legal_transform_dr): Call pddr_is_empty and free_poly_ddr.
4259         (graphite_carried_dependence_level_k): Call pddr_is_empty.
4260         * graphite-dependences.h (enum poly_dependence_kind): New.
4261         (poly_dr_pair): Renamed poly_ddr.  Added a field kind.
4262         (PDRP_SOURCE): Renamed PDDR_SOURCE.
4263         (PDRP_SINK): Renamed PDDR_SINK.
4264         (PDRP_DDP): Renamed PDDR_DDP.
4265         (PDDR_KIND): New.
4266         (free_poly_ddr): Declared.
4267         * graphite-poly.c (new_scop): Use the new hash function names.
4268         * graphite-poly.h (struct scop): Renamed field original_pdr_pairs
4269         into original_pddrs.
4270         (SCOP_ORIGINAL_PDR_PAIRS): Renamed SCOP_ORIGINAL_PDDRS.
4271
4272 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
4273
4274         * cfgloopmanip.c (create_empty_loop_on_edge): Generate upper
4275         bounds with LT_EXPR to make niter analysis more precise on code
4276         generated by Graphite.
4277
4278 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
4279
4280         * graphite-dependences.c (graphite_legal_transform_dr): Fix formatting.
4281         (graphite_legal_transform_bb): Same.
4282         (poly_drs_may_alias_p): Same.
4283
4284 2009-08-28  Richard Guenther  <rguenther@suse.de>
4285
4286         * tree.def: Remove note about obsolete TYPE_NONCOPIED_PARTS.
4287
4288 2009-08-28  Jan Beulich  <jbeulich@novell.com>
4289
4290         * config/i386/netware.c: Include langhooks.h.
4291         (i386_nlm_encode_section_info): Simplify.
4292         (netware_override_options): Delete.
4293         * config/i386/netware.h (netware_override_options): Delete
4294         declaration.
4295         (OVERRIDE_OPTIONS): Delete definition.
4296         (SUBTARGET_OVERRIDE_OPTIONS): Define.
4297         (ASM_COMMENT_START): Define.
4298         * config/i386/nwld.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Define.
4299
4300 2009-08-28  Jan Beulich  <jbeulich@novell.com>
4301
4302         * configure.ac: For in-tree ld, do a plain version check to
4303         determine whether comdat groups are supported.
4304         * configure: Regenerate.
4305
4306 2009-08-28  Olivier Hainque  <hainque@adacore.com>
4307
4308         * collect2.c (DO_COLLECT_EXPORT_LIST): New internal macro,
4309         always defined.  Reflect definition or absence of such for
4310         COLLECT_EXPORT_LIST.  Readability helper.
4311         (scanfilter): New enum, to help control what symbols
4312         are to be considered or ignored by scan_prog_file.
4313         (enum pass): Rename as "scanpass", moved together with scanfilter
4314         prior to scan_prog_file's prototype.
4315         (scan_prog_file): Accept and honor scanpass and scanfilter arguments.
4316         Group prototype with the scanpass/scanfilter definitions, factorize
4317         head comments for the several implementations at the prototype.
4318         (main): Reorganize the first pass link control to let AIX
4319         drag only the needed frame tables in executables.  Prevent
4320         frame tables collection during the scan aimed at static ctors.
4321         Pre-link and scan for frame tables later to compensate.
4322         * doc/tm.texi (ASM_OUTPUT_DWARF_TABLE_REF): New macro.
4323         A C statement to issue assembly directives that create a reference
4324         to the given DWARF table identifier label from the current function
4325         section.
4326         * dwarf2out.c (switch_to_eh_frame_section): Add a BACK argument
4327         to differentiate first time section entry.  Only emit a .data
4328         tables start identifier label the first time around.
4329         (switch_to_frame_table_section): New function.  Helper for
4330         output_call_frame_info to switch possibly BACK into the eh_frame
4331         or the debug_frame section depending on FOR_EH.
4332         (output_call_frame_info): Use helper to first enter the proper
4333         frame section.
4334         (output_fde): Use ASM_OUTPUT_DWARF_TABLE_REF when defined to
4335         emit a link to the frame table start label from each function
4336         section.
4337         * config/rs6000/rs6000.c (rs6000_aix_asm_output_dwarf_table_ref):
4338         New function.  Implementation of ASM_OUTPUT_DWARF_TABLE_REF.
4339         * config/rs6000/rs6000-protos.h: Declare it.
4340         * config/rs6000/aix.h (ASM_OUTPUT_DWARF_TABLE_REF): Define.
4341
4342 2009-08-27  Kaz Kojima  <kkojima@gcc.gnu.org>
4343
4344         * config/sh/sh.c (split_branches): Check the result of
4345         next_active_insn.
4346
4347 2009-08-27  Steve Ellcey  <sje@cup.hp.com>
4348
4349         * config/ia64/hpux.h (LIB_SPEC): Add -lrt for when
4350         using -pthread -fopenmp
4351
4352 2009-08-27  Gerald Pfeifer  <gerald@pfeifer.com>
4353
4354         * doc/service.texi (service directory): Update URL.
4355
4356 2009-08-27  Uros Bizjak  <ubizjak@gmail.com>
4357
4358         PR rtl-optimization/40861
4359         * simplify-rtx.c (simplify_subreg): Do not call simplify_gen_subreg to
4360         extract word from a multi-word subreg for negative byte positions.
4361
4362 2009-08-27  Tristan Gingold  <gingold@adacore.com>
4363             Douglas B Rupp  <rupp@gnat.com>
4364
4365         * config/ia64/ia64.c (ia64_attribute_table): Add "common_object" entry.
4366         (SECTION_VMS_OVERLAY): Define.
4367         (ia64_vms_common_object_attribute): Added.  Handle the "common_object"
4368         attribute.
4369         (ia64_vms_elf_asm_named_section): Added.  Generate .section pseudo-op
4370         for common_object.
4371         (ia64_vms_output_aligned_decl_common): Added.  Generate pseudo-op for
4372         common_object declarations.
4373         (ia64_section_type_flags): Set section flag for common_object.
4374         * config/ia64/ia64-protos.h
4375         (ia64_vms_output_aligned_decl_common): Declare.
4376         (ia64_vms_elf_asm_named_section): Declare.
4377
4378 2009-08-27  Michael Matz  <matz@suse.de>
4379
4380         * expr.c (expand_expr_real_2): New function taking exploded
4381         unary or binary expression, split out from ...
4382         (expand_expr_real_1): ... here.  Move over all unary/binary
4383         switch parts to above function, in particular these codes:
4384         PAREN_EXPR, NOP_EXPR, CONVERT_EXPR, POINTER_PLUS_EXPR, PLUS_EXPR,
4385         MINUS_EXPR, MULT_EXPR, TRUNC_DIV_EXPR, FLOOR_DIV_EXPR, CEIL_DIV_EXPR,
4386         ROUND_DIV_EXPR, EXACT_DIV_EXPR, RDIV_EXPR, TRUNC_MOD_EXPR,
4387         FLOOR_MOD_EXPR, CEIL_MOD_EXPR, ROUND_MOD_EXPR, FIXED_CONVERT_EXPR,
4388         FIX_TRUNC_EXPR, FLOAT_EXPR, NEGATE_EXPR, ABS_EXPR, MAX_EXPR, MIN_EXPR,
4389         BIT_NOT_EXPR, TRUTH_AND_EXPR, BIT_AND_EXPR, TRUTH_OR_EXPR,
4390         BIT_IOR_EXPR, TRUTH_XOR_EXPR, BIT_XOR_EXPR, LROTATE_EXPR, RROTATE_EXPR,
4391         LSHIFT_EXPR, RSHIFT_EXPR, LT_EXPR, LE_EXPR, GT_EXPR, GE_EXPR, EQ_EXPR,
4392         NE_EXPR, UNORDERED_EXPR, ORDERED_EXPR, UNLT_EXPR, UNLE_EXPR, UNGT_EXPR,
4393         UNGE_EXPR, UNEQ_EXPR, LTGT_EXPR, TRUTH_NOT_EXPR, COMPLEX_EXPR,
4394         WIDEN_SUM_EXPR, REDUC_MAX_EXPR, REDUC_MIN_EXPR, REDUC_PLUS_EXPR,
4395         VEC_EXTRACT_EVEN_EXPR, VEC_EXTRACT_ODD_EXPR, VEC_INTERLEAVE_HIGH_EXPR,
4396         VEC_INTERLEAVE_LOW_EXPR, VEC_LSHIFT_EXPR, VEC_RSHIFT_EXPR,
4397         VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR, VEC_UNPACK_FLOAT_HI_EXPR,
4398         VEC_UNPACK_FLOAT_LO_EXPR, VEC_WIDEN_MULT_HI_EXPR,
4399         VEC_WIDEN_MULT_LO_EXPR, VEC_PACK_TRUNC_EXPR, VEC_PACK_SAT_EXPR,
4400         VEC_PACK_FIX_TRUNC_EXPR.
4401         (<case PAREN_EXPR>): Call set_mem_attributes() with type, not the
4402         full expression.
4403
4404 2009-08-27  Richard Guenther  <rguenther@suse.de>
4405
4406         * gengtype.c (main): Handle uint64_t.
4407         * ipa-utils.c (get_base_var): Indent properly.
4408         * tree-ssa-live.c (debug_scope_block): New function.
4409         * tree-flow.h (debug_scope_block): Declare.
4410         * tree-ssa-copy.c (replace_exp_1): Add vertical space.
4411         * basic-block.h (enum profile_status): Rename to
4412         enum profile_status_d.
4413         (x_profile_status): Adjust type.
4414
4415 2009-08-27  Dodji Seketeli  <dodji@redhat.com>
4416
4417         PR debug/41170
4418         * dwarf2out.c (get_context_die): Declare this static function.
4419         (gen_type_die_with_usage): Make sure a DIE is a generated for
4420         the context of a typedef.
4421
4422 2009-08-26  Anatoly Sokolov  <aesok@post.ru>
4423
4424         * doc/invoke.texi (AVR Options): Remove documentation of -minit-stack
4425         switch.
4426
4427 2009-08-26  Richard Sandiford  <rdsandiford@googlemail.com>
4428
4429         * config/mips/mips-protos.h (mips_output_sync): Declare.
4430         (mips_sync_loop_insns): Likewise.
4431         (mips_output_sync_loop): Replace first two parameters with an rtx.
4432         * config/mips/mips.c (mips_multi_member): New structure.
4433         (mips_multi_members): New variable.
4434         (mips_multi_start): New function.
4435         (mips_multi_add): Likewise.
4436         (mips_multi_add_insn): Likewise.
4437         (mips_multi_add_label): Likewise.
4438         (mips_multi_last_index): Likewise.
4439         (mips_multi_copy_insn): Likewise.
4440         (mips_multi_set_operand): Likewise.
4441         (mips_multi_write): Likewise.
4442         (mips_print_operand_punctuation): Remove '%|' and '%-'.
4443         (mips_init_print_operand_punct): Update accordingly.
4444         (mips_start_ll_sc_sync_block): New function.
4445         (mips_end_ll_sc_sync_block): Likewise.
4446         (mips_output_sync): Likewise.
4447         (mips_sync_insn1_template): Likewise.
4448         (mips_sync_insn2_template): Likewise.
4449         (mips_get_sync_operand): Likewise.
4450         (mips_process_sync_loop): Likewise.
4451         (mips_output_sync_loop): Use mips_process_sync_loop.
4452         (mips_sync_loop_insns): New function.
4453         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Delete.
4454         (MIPS_COMPARE_AND_SWAP_12): Likewise.
4455         (MIPS_COMPARE_AND_SWAP_12_ZERO_OP): Likewise.
4456         (MIPS_COMPARE_AND_SWAP_12_NONZERO_OP): Likewise.
4457         (MIPS_SYNC_OP, MIPS_SYNC_OP_12): Likewise.
4458         (MIPS_SYNC_OP_12_AND, MIPS_SYNC_OP_12_XOR): Likewise.
4459         (MIPS_SYNC_OLD_OP_12): Likewise.
4460         (MIPS_SYNC_OLD_OP_12_AND, MIPS_SYNC_OLD_OP_12_XOR): Likewise.
4461         (MIPS_SYNC_NEW_OP_12): Likewise.
4462         (MIPS_SYNC_NEW_OP_12_AND, MIPS_SYNC_NEW_OP_12_XOR): Likewise.
4463         (MIPS_SYNC_OLD_OP, MIPS_SYNC_NEW_OP): Likewise.
4464         (MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND, MIPS_SYNC_NEW_NAND): Likewise.
4465         (MIPS_SYNC_EXCHANGE, MIPS_SYNC_EXCHANGE_12): Likewise.
4466         (MIPS_SYNC_EXCHANGE_12_ZERO_OP): Likewise.
4467         (MIPS_SYNC_EXCHANGE_12_NONZER_OP): Likewise.
4468         * config/mips/mips.md (sync_mem): New attribute.
4469         (sync_oldval, sync_newval, sync_inclusive_mask): Likewise.
4470         (sync_exclusive_mask, sync_required_oldval): Likewise.
4471         (sync_insn1_op2, sync_insn1, sync_insn2): Likewise.
4472         (sync_release_barrier): Likewise.
4473         (length): Handle sync loops.
4474         (sync): Use mips_output_sync.
4475         * config/mips/sync.md (*memory_barrier): Use mips_output_sync.
4476         (sync_compare_and_swap<mode>): Set the new sync_* attributes
4477         and use mips_output_sync_loop.
4478         (compare_and_swap_12, sync_add<mode>, sync_<optab>_12): Likewise.
4479         (sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12): Likewise.
4480         (sync_old_nand_12, sync_new_nand_12, sync_sub<mode>): Likewise.
4481         (sync_old_add<mode>, sync_old_sub<mode>): Likewise.
4482         (sync_new_add<mode>, sync_new_sub<mode>): Likewise.
4483         (sync_<optab><mode>, sync_old_<optab><mode>): Likewise.
4484         (sync_new_<optab><mode>, sync_nand<mode>): Likewise.
4485         (sync_old_nand<mode>, sync_new_nand<mode>): Likewise.
4486         (sync_lock_test_and_set<mode>, test_and_set_12): Likewise.
4487
4488 2009-08-26  Richard Guenther  <rguenther@suse.de>
4489
4490         PR middle-end/41163
4491         * gimplify.c (gimplify_addr_expr): Canonicalize ADDR_EXPRs if
4492         the types to not match.
4493         * tree-cfg.c (verify_gimple_assign_single): Adjust ADDR_EXPR
4494         verification.
4495         * tree-ssa.c (useless_type_conversion_p): Conversions to
4496         pointers to unprototyped functions are useless.
4497
4498 2009-08-26  Richard Guenther  <rguenther@suse.de>
4499
4500         * tree-ssa-structalias.c (create_variable_info_for): Remove strange
4501         whole-program condition, prepare to be called for non-globals.
4502         (intra_create_variable_infos): For restrict qualified DECL_BY_REFERENCE
4503         params build a representative with known type and track its fields.
4504
4505 2009-08-26  Uros Bizjak  <ubizjak@gmail.com>
4506
4507         * config/alpha/sync.md: Update comment about unpredictable LL/SC lock
4508         clearing by a taken branch.
4509         (sync_<fetchop_name><mode>): Split when epilogue_completed is set,
4510         effectively after bbro pass.
4511         (sync_nand<mode>): Ditto.
4512         (sync_old_<fetchop_name><mode>): Ditto.
4513         (sync_old_nand<mode>): Ditto.
4514         (sync_new_<fetchop_name><mode>): Dito.
4515         (sync_new_nand<mode>): Ditto.
4516         (sync_compare_and_swap<mode>_1): Ditto.
4517         (*sync_compare_and_swap<mode>): Ditto.
4518         (sync_lock_test_and_set<mode>_1): Ditto.
4519         ("sync_lock_test_and_set<mode>): Ditto.
4520
4521 2009-08-25  Douglas B Rupp  <rupp@gnat.com>
4522
4523         * hwint.h (HOST_LONG_FORMAT): New macro
4524         * bitmap.c, c-decl.c, mips-tfile.c, print-rtl.c, print-tree.c:
4525         Use HOST_PTR_PRINTF.
4526         * system.h (HOST_PTR_PRINTF): Resurrect old macro
4527         * doc/hostconfig.texi (HOST_LONG_FORMAT): Document.
4528         (HOST_PTR_PRINTF): Document.
4529
4530 2009-08-25 Jan Hubicka  <jh@suse.cz>
4531
4532         * config/i386/bmmintrin.h: Replace by #error.
4533
4534         Revert:
4535         Michael Meissner  <michael.meissner@amd.com>
4536         Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
4537         Tony Linthicum  <tony.linthicum@amd.com>
4538
4539         * config/i386/i386.h (TARGET_SSE5): New macro for SSE5.
4540         (TARGET_ROUND): New macro for the round/ptest instructions which
4541         are shared between SSE4.1 and SSE5.
4542         (OPTION_MASK_ISA_ROUND): Ditto.
4543         (OPTION_ISA_ROUND): Ditto.
4544         (TARGET_FUSED_MADD): New macro for -mfused-madd swtich.
4545         (TARGET_CPU_CPP_BUILTINS): Add SSE5 support.
4546
4547         * config/i386/i386.opt (-msse5): New switch for SSE5 support.
4548         (-mfused-madd): New switch to give users control over whether the
4549         compiler optimizes to use the multiply/add SSE5 instructions.
4550
4551         * config/i386/i386.c (enum pta_flags): Add PTA_SSE5.
4552         (ix86_handle_option): Turn off 3dnow if -msse5.
4553         (override_options): Add SSE5 support.
4554         (print_operand): %Y prints comparison codes for SSE5 com/pcom
4555         instructions.
4556         (ix86_expand_sse_movcc): Add SSE5 support.
4557         (ix86_expand_sse5_unpack): New function to use pperm to unpack a
4558         vector type to the next largest size.
4559         (ix86_expand_sse5_pack): New function to use pperm to pack a
4560         vector type to the next smallest size.
4561         (IX86_BUILTIN_FMADDSS): New for SSE5 intrinsic.
4562         (IX86_BUILTIN_FMADDSD): Ditto.
4563         (IX86_BUILTIN_FMADDPS): Ditto.
4564         (IX86_BUILTIN_FMADDPD): Ditto.
4565         (IX86_BUILTIN_FMSUBSS): Ditto.
4566         (IX86_BUILTIN_FMSUBSD): Ditto.
4567         (IX86_BUILTIN_FMSUBPS): Ditto.
4568         (IX86_BUILTIN_FMSUBPD): Ditto.
4569         (IX86_BUILTIN_FNMADDSS): Ditto.
4570         (IX86_BUILTIN_FNMADDSD): Ditto.
4571         (IX86_BUILTIN_FNMADDPS): Ditto.
4572         (IX86_BUILTIN_FNMADDPD): Ditto.
4573         (IX86_BUILTIN_FNMSUBSS): Ditto.
4574         (IX86_BUILTIN_FNMSUBSD): Ditto.
4575         (IX86_BUILTIN_FNMSUBPS): Ditto.
4576         (IX86_BUILTIN_FNMSUBPD): Ditto.
4577         (IX86_BUILTIN_PCMOV_V2DI): Ditto.
4578         (IX86_BUILTIN_PCMOV_V4SI): Ditto.
4579         (IX86_BUILTIN_PCMOV_V8HI): Ditto.
4580         (IX86_BUILTIN_PCMOV_V16QI): Ditto.
4581         (IX86_BUILTIN_PCMOV_V4SF): Ditto.
4582         (IX86_BUILTIN_PCMOV_V2DF): Ditto.
4583         (IX86_BUILTIN_PPERM): Ditto.
4584         (IX86_BUILTIN_PERMPS): Ditto.
4585         (IX86_BUILTIN_PERMPD): Ditto.
4586         (IX86_BUILTIN_PMACSSWW): Ditto.
4587         (IX86_BUILTIN_PMACSWW): Ditto.
4588         (IX86_BUILTIN_PMACSSWD): Ditto.
4589         (IX86_BUILTIN_PMACSWD): Ditto.
4590         (IX86_BUILTIN_PMACSSDD): Ditto.
4591         (IX86_BUILTIN_PMACSDD): Ditto.
4592         (IX86_BUILTIN_PMACSSDQL): Ditto.
4593         (IX86_BUILTIN_PMACSSDQH): Ditto.
4594         (IX86_BUILTIN_PMACSDQL): Ditto.
4595         (IX86_BUILTIN_PMACSDQH): Ditto.
4596         (IX86_BUILTIN_PMADCSSWD): Ditto.
4597         (IX86_BUILTIN_PMADCSWD): Ditto.
4598         (IX86_BUILTIN_PHADDBW): Ditto.
4599         (IX86_BUILTIN_PHADDBD): Ditto.
4600         (IX86_BUILTIN_PHADDBQ): Ditto.
4601         (IX86_BUILTIN_PHADDWD): Ditto.
4602         (IX86_BUILTIN_PHADDWQ): Ditto.
4603         (IX86_BUILTIN_PHADDDQ): Ditto.
4604         (IX86_BUILTIN_PHADDUBW): Ditto.
4605         (IX86_BUILTIN_PHADDUBD): Ditto.
4606         (IX86_BUILTIN_PHADDUBQ): Ditto.
4607         (IX86_BUILTIN_PHADDUWD): Ditto.
4608         (IX86_BUILTIN_PHADDUWQ): Ditto.
4609         (IX86_BUILTIN_PHADDUDQ): Ditto.
4610         (IX86_BUILTIN_PHSUBBW): Ditto.
4611         (IX86_BUILTIN_PHSUBWD): Ditto.
4612         (IX86_BUILTIN_PHSUBDQ): Ditto.
4613         (IX86_BUILTIN_PROTB): Ditto.
4614         (IX86_BUILTIN_PROTW): Ditto.
4615         (IX86_BUILTIN_PROTD): Ditto.
4616         (IX86_BUILTIN_PROTQ): Ditto.
4617         (IX86_BUILTIN_PROTB_IMM): Ditto.
4618         (IX86_BUILTIN_PROTW_IMM): Ditto.
4619         (IX86_BUILTIN_PROTD_IMM): Ditto.
4620         (IX86_BUILTIN_PROTQ_IMM): Ditto.
4621         (IX86_BUILTIN_PSHLB): Ditto.
4622         (IX86_BUILTIN_PSHLW): Ditto.
4623         (IX86_BUILTIN_PSHLD): Ditto.
4624         (IX86_BUILTIN_PSHLQ): Ditto.
4625         (IX86_BUILTIN_PSHAB): Ditto.
4626         (IX86_BUILTIN_PSHAW): Ditto.
4627         (IX86_BUILTIN_PSHAD): Ditto.
4628         (IX86_BUILTIN_PSHAQ): Ditto.
4629         (IX86_BUILTIN_FRCZSS): Ditto.
4630         (IX86_BUILTIN_FRCZSD): Ditto.
4631         (IX86_BUILTIN_FRCZPS): Ditto.
4632         (IX86_BUILTIN_FRCZPD): Ditto.
4633         (IX86_BUILTIN_CVTPH2PS): Ditto.
4634         (IX86_BUILTIN_CVTPS2PH): Ditto.
4635         (IX86_BUILTIN_COMEQSS): Ditto.
4636         (IX86_BUILTIN_COMNESS): Ditto.
4637         (IX86_BUILTIN_COMLTSS): Ditto.
4638         (IX86_BUILTIN_COMLESS): Ditto.
4639         (IX86_BUILTIN_COMGTSS): Ditto.
4640         (IX86_BUILTIN_COMGESS): Ditto.
4641         (IX86_BUILTIN_COMUEQSS): Ditto.
4642         (IX86_BUILTIN_COMUNESS): Ditto.
4643         (IX86_BUILTIN_COMULTSS): Ditto.
4644         (IX86_BUILTIN_COMULESS): Ditto.
4645         (IX86_BUILTIN_COMUGTSS): Ditto.
4646         (IX86_BUILTIN_COMUGESS): Ditto.
4647         (IX86_BUILTIN_COMORDSS): Ditto.
4648         (IX86_BUILTIN_COMUNORDSS): Ditto.
4649         (IX86_BUILTIN_COMFALSESS): Ditto.
4650         (IX86_BUILTIN_COMTRUESS): Ditto.
4651         (IX86_BUILTIN_COMEQSD): Ditto.
4652         (IX86_BUILTIN_COMNESD): Ditto.
4653         (IX86_BUILTIN_COMLTSD): Ditto.
4654         (IX86_BUILTIN_COMLESD): Ditto.
4655         (IX86_BUILTIN_COMGTSD): Ditto.
4656         (IX86_BUILTIN_COMGESD): Ditto.
4657         (IX86_BUILTIN_COMUEQSD): Ditto.
4658         (IX86_BUILTIN_COMUNESD): Ditto.
4659         (IX86_BUILTIN_COMULTSD): Ditto.
4660         (IX86_BUILTIN_COMULESD): Ditto.
4661         (IX86_BUILTIN_COMUGTSD): Ditto.
4662         (IX86_BUILTIN_COMUGESD): Ditto.
4663         (IX86_BUILTIN_COMORDSD): Ditto.
4664         (IX86_BUILTIN_COMUNORDSD): Ditto.
4665         (IX86_BUILTIN_COMFALSESD): Ditto.
4666         (IX86_BUILTIN_COMTRUESD): Ditto.
4667         (IX86_BUILTIN_COMEQPS): Ditto.
4668         (IX86_BUILTIN_COMNEPS): Ditto.
4669         (IX86_BUILTIN_COMLTPS): Ditto.
4670         (IX86_BUILTIN_COMLEPS): Ditto.
4671         (IX86_BUILTIN_COMGTPS): Ditto.
4672         (IX86_BUILTIN_COMGEPS): Ditto.
4673         (IX86_BUILTIN_COMUEQPS): Ditto.
4674         (IX86_BUILTIN_COMUNEPS): Ditto.
4675         (IX86_BUILTIN_COMULTPS): Ditto.
4676         (IX86_BUILTIN_COMULEPS): Ditto.
4677         (IX86_BUILTIN_COMUGTPS): Ditto.
4678         (IX86_BUILTIN_COMUGEPS): Ditto.
4679         (IX86_BUILTIN_COMORDPS): Ditto.
4680         (IX86_BUILTIN_COMUNORDPS): Ditto.
4681         (IX86_BUILTIN_COMFALSEPS): Ditto.
4682         (IX86_BUILTIN_COMTRUEPS): Ditto.
4683         (IX86_BUILTIN_COMEQPD): Ditto.
4684         (IX86_BUILTIN_COMNEPD): Ditto.
4685         (IX86_BUILTIN_COMLTPD): Ditto.
4686         (IX86_BUILTIN_COMLEPD): Ditto.
4687         (IX86_BUILTIN_COMGTPD): Ditto.
4688         (IX86_BUILTIN_COMGEPD): Ditto.
4689         (IX86_BUILTIN_COMUEQPD): Ditto.
4690         (IX86_BUILTIN_COMUNEPD): Ditto.
4691         (IX86_BUILTIN_COMULTPD): Ditto.
4692         (IX86_BUILTIN_COMULEPD): Ditto.
4693         (IX86_BUILTIN_COMUGTPD): Ditto.
4694         (IX86_BUILTIN_COMUGEPD): Ditto.
4695         (IX86_BUILTIN_COMORDPD): Ditto.
4696         (IX86_BUILTIN_COMUNORDPD): Ditto.
4697         (IX86_BUILTIN_COMFALSEPD): Ditto.
4698         (IX86_BUILTIN_COMTRUEPD): Ditto.
4699         (IX86_BUILTIN_PCOMEQUB): Ditto.
4700         (IX86_BUILTIN_PCOMNEUB): Ditto.
4701         (IX86_BUILTIN_PCOMLTUB): Ditto.
4702         (IX86_BUILTIN_PCOMLEUB): Ditto.
4703         (IX86_BUILTIN_PCOMGTUB): Ditto.
4704         (IX86_BUILTIN_PCOMGEUB): Ditto.
4705         (IX86_BUILTIN_PCOMFALSEUB): Ditto.
4706         (IX86_BUILTIN_PCOMTRUEUB): Ditto.
4707         (IX86_BUILTIN_PCOMEQUW): Ditto.
4708         (IX86_BUILTIN_PCOMNEUW): Ditto.
4709         (IX86_BUILTIN_PCOMLTUW): Ditto.
4710         (IX86_BUILTIN_PCOMLEUW): Ditto.
4711         (IX86_BUILTIN_PCOMGTUW): Ditto.
4712         (IX86_BUILTIN_PCOMGEUW): Ditto.
4713         (IX86_BUILTIN_PCOMFALSEUW): Ditto.
4714         (IX86_BUILTIN_PCOMTRUEUW): Ditto.
4715         (IX86_BUILTIN_PCOMEQUD): Ditto.
4716         (IX86_BUILTIN_PCOMNEUD): Ditto.
4717         (IX86_BUILTIN_PCOMLTUD): Ditto.
4718         (IX86_BUILTIN_PCOMLEUD): Ditto.
4719         (IX86_BUILTIN_PCOMGTUD): Ditto.
4720         (IX86_BUILTIN_PCOMGEUD): Ditto.
4721         (IX86_BUILTIN_PCOMFALSEUD): Ditto.
4722         (IX86_BUILTIN_PCOMTRUEUD): Ditto.
4723         (IX86_BUILTIN_PCOMEQUQ): Ditto.
4724         (IX86_BUILTIN_PCOMNEUQ): Ditto.
4725         (IX86_BUILTIN_PCOMLTUQ): Ditto.
4726         (IX86_BUILTIN_PCOMLEUQ): Ditto.
4727         (IX86_BUILTIN_PCOMGTUQ): Ditto.
4728         (IX86_BUILTIN_PCOMGEUQ): Ditto.
4729         (IX86_BUILTIN_PCOMFALSEUQ): Ditto.
4730         (IX86_BUILTIN_PCOMTRUEUQ): Ditto.
4731         (IX86_BUILTIN_PCOMEQB): Ditto.
4732         (IX86_BUILTIN_PCOMNEB): Ditto.
4733         (IX86_BUILTIN_PCOMLTB): Ditto.
4734         (IX86_BUILTIN_PCOMLEB): Ditto.
4735         (IX86_BUILTIN_PCOMGTB): Ditto.
4736         (IX86_BUILTIN_PCOMGEB): Ditto.
4737         (IX86_BUILTIN_PCOMFALSEB): Ditto.
4738         (IX86_BUILTIN_PCOMTRUEB): Ditto.
4739         (IX86_BUILTIN_PCOMEQW): Ditto.
4740         (IX86_BUILTIN_PCOMNEW): Ditto.
4741         (IX86_BUILTIN_PCOMLTW): Ditto.
4742         (IX86_BUILTIN_PCOMLEW): Ditto.
4743         (IX86_BUILTIN_PCOMGTW): Ditto.
4744         (IX86_BUILTIN_PCOMGEW): Ditto.
4745         (IX86_BUILTIN_PCOMFALSEW): Ditto.
4746         (IX86_BUILTIN_PCOMTRUEW): Ditto.
4747         (IX86_BUILTIN_PCOMEQD): Ditto.
4748         (IX86_BUILTIN_PCOMNED): Ditto.
4749         (IX86_BUILTIN_PCOMLTD): Ditto.
4750         (IX86_BUILTIN_PCOMLED): Ditto.
4751         (IX86_BUILTIN_PCOMGTD): Ditto.
4752         (IX86_BUILTIN_PCOMGED): Ditto.
4753         (IX86_BUILTIN_PCOMFALSED): Ditto.
4754         (IX86_BUILTIN_PCOMTRUED): Ditto.
4755         (IX86_BUILTIN_PCOMEQQ): Ditto.
4756         (IX86_BUILTIN_PCOMNEQ): Ditto.
4757         (IX86_BUILTIN_PCOMLTQ): Ditto.
4758         (IX86_BUILTIN_PCOMLEQ): Ditto.
4759         (IX86_BUILTIN_PCOMGTQ): Ditto.
4760         (IX86_BUILTIN_PCOMGEQ): Ditto.
4761         (IX86_BUILTIN_PCOMFALSEQ): Ditto.
4762         (IX86_BUILTIN_PCOMTRUEQ): Ditto.
4763         (enum multi_arg_type): New enum for describing the various SSE5
4764         intrinsic argument types.
4765         (bdesc_multi_arg): New table for SSE5 intrinsics.
4766         (ix86_init_mmx_sse_builtins): Add SSE5 intrinsic support.
4767         (ix86_expand_multi_arg_builtin): New function for creating SSE5
4768         intrinsics.
4769         (ix86_expand_builtin): Add SSE5 intrinsic support.
4770         (ix86_sse5_valid_op_p): New function to validate SSE5 3 and 4
4771         operand instructions.
4772         (ix86_expand_sse5_multiple_memory): New function to split the
4773         second memory reference from SSE5 instructions.
4774         (type_has_variadic_args_p): Delete in favor of stdarg_p.
4775         (ix86_return_pops_args): Use stdarg_p to determine if the function
4776         has variable arguments.
4777         (ix86_setup_incoming_varargs): Ditto.
4778         (x86_this_parameter): Ditto.
4779
4780         * config/i386/i386-protos.h (ix86_expand_sse5_unpack): Add
4781         declaration.
4782         (ix86_expand_sse5_pack): Ditto.
4783         (ix86_sse5_valid_op_p): Ditto.
4784         (ix86_expand_sse5_multiple_memory): Ditto.
4785
4786         * config/i386/i386.md (UNSPEC_SSE5_INTRINSIC): Add new UNSPEC
4787         constant for SSE5 support.
4788         (UNSPEC_SSE5_UNSIGNED_CMP): Ditto.
4789         (UNSPEC_SSE5_TRUEFALSE): Ditto.
4790         (UNSPEC_SSE5_PERMUTE): Ditto.
4791         (UNSPEC_SSE5_ASHIFT): Ditto.
4792         (UNSPEC_SSE5_LSHIFT): Ditto.
4793         (UNSPEC_FRCZ): Ditto.
4794         (UNSPEC_CVTPH2PS): Ditto.
4795         (UNSPEC_CVTPS2PH): Ditto.
4796         (PCOM_FALSE): Add new constant for true/false SSE5 comparisons.
4797         (PCOM_TRUE): Ditto.
4798         (COM_FALSE_S): Ditto.
4799         (COM_FALSE_P): Ditto.
4800         (COM_TRUE_S): Ditto.
4801         (COM_TRUE_P): Ditto.
4802         (type attribute): Add ssemuladd, sseiadd1, ssecvt1, sse4arg types.
4803         (unit attribute): Add support for ssemuladd, ssecvt1, sseiadd1 sse4arg
4804         types.
4805         (memory attribute): Ditto.
4806         (sse4_1_round<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
4807         Use SSE4_1_ROUND_* constants instead of hard coded numbers.
4808         (rint<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
4809         (floor<mode>2): Ditto.
4810         (ceil<mode>2): Ditto.
4811         (btrunc<mode>2): Ditto.
4812         (nearbyintdf2): Ditto.
4813         (nearbyintsf2): Ditto.
4814         (sse_setccsf): Disable if SSE5.
4815         (sse_setccdf): Ditto.
4816         (sse5_setcc<mode>): New support for SSE5 conditional move.
4817         (sse5_pcmov_<mode>): Ditto.
4818
4819         * config/i386/sse.md (SSEMODE1248): New mode iterator for SSE5.
4820         (SSEMODEF4): Ditto.
4821         (SSEMODEF2P): Ditto.
4822         (ssemodesuffixf4): New mode attribute for SSE5.
4823         (ssemodesuffixf2s): Ditto.
4824         (ssemodesuffixf2c): Ditto.
4825         (sserotatemax): Ditto.
4826         (ssescalarmode): Ditto.
4827         (sse_maskcmpv4sf3): Disable if SSE5.
4828         (sse_maskcmpv2df3): Ditto.
4829         (sse_vmmaskcmpv4sf3): Ditto.
4830         (sse5_fmadd<mode>4): Add SSE5 floating point multiply/add instructions.
4831         (sse5_vmfmadd<mode>4): Ditto.
4832         (sse5_fmsub<mode>4): Ditto.
4833         (sse5_vmfmsub<mode>4): Ditto.
4834         (sse5_fnmadd<mode>4): Ditto.
4835         (sse5_vmfnmadd<mode>4): Ditto.
4836         (sse5_fnmsub<mode>4): Ditto.
4837         (sse5_vmfnmsub<mode>4): Ditto.
4838         (sse5i_fmadd<mode>4): Ditto.
4839         (sse5i_fmsub<mode>4): Ditto.
4840         (sse5i_fnmadd<mode>4): Ditto.
4841         (sse5i_fnmsub<mode>4): Ditto.
4842         (sse5i_vmfmadd<mode>4): Ditto.
4843         (sse5i_vmfmsub<mode>4): Ditto.
4844         (sse5i_vmfnmadd<mode>4): Ditto.
4845         (sse5i_vmfnmsub<mode>4): Ditto.
4846         (mulv16qi3): Add SSE5 support.
4847         (mulv4si3): Ditto.
4848         (sse5_mulv4si3): New insn for 32-bit multiply support on SSE5.
4849         (sse2_mulv4si3): Disable if SSE5.
4850         (sse4_1_roundpd): Use TARGET_ROUND instead of TARGET_SSE4_1.
4851         (sse4_1_roundps): Ditto.
4852         (sse4_1_roundsd): Ditto.
4853         (sse4_1_roundss): Ditto.
4854         (sse_maskcmpv4sf3): Disable if SSE5 so the SSE5 instruction will
4855         be generated.
4856         (sse_maskcmpsf3): Ditto.
4857         (sse_vmmaskcmpv4sf3): Ditto.
4858         (sse2_maskcmpv2df3): Ditto.
4859         (sse2_maskcmpdf3): Ditto.
4860         (sse2_vmmaskcmpv2df3): Ditto.
4861         (sse2_eq<mode>3): Ditto.
4862         (sse2_gt<mode>3): Ditto.
4863         (sse5_pcmov_<mode>): Add SSE5 support.
4864         (vec_unpacku_hi_v16qi): Ditto.
4865         (vec_unpacks_hi_v16qi): Ditto.
4866         (vec_unpacku_lo_v16qi): Ditto.
4867         (vec_unpacks_lo_v16qi): Ditto.
4868         (vec_unpacku_hi_v8hi): Ditto.
4869         (vec_unpacks_hi_v8hi): Ditto.
4870         (vec_unpacku_lo_v8hi): Ditto.
4871         (vec_unpacks_lo_v8hi): Ditto.
4872         (vec_unpacku_hi_v4si): Ditto.
4873         (vec_unpacks_hi_v4si): Ditto.
4874         (vec_unpacku_lo_v4si): Ditto.
4875         (vec_unpacks_lo_v4si): Ditto.
4876         (sse5_pmacsww): New SSE5 intrinsic insn.
4877         (sse5_pmacssww): Ditto.
4878         (sse5_pmacsdd): Ditto.
4879         (sse5_pmacssdd): Ditto.
4880         (sse5_pmacssdql): Ditto.
4881         (sse5_pmacssdqh): Ditto.
4882         (sse5_pmacsdqh): Ditto.
4883         (sse5_pmacsswd): Ditto.
4884         (sse5_pmacswd): Ditto.
4885         (sse5_pmadcsswd): Ditto.
4886         (sse5_pmadcswd): Ditto.
4887         (sse5_pcmov_<move>): Conditional move support on SSE5.
4888         (sse5_phaddbw): New SSE5 intrinsic insn.
4889         (sse5_phaddbd): Ditto.
4890         (sse5_phaddbq): Ditto.
4891         (sse5_phaddwd): Ditto.
4892         (sse5_phaddwq): Ditto.
4893         (sse5_phadddq): Ditto.
4894         (sse5_phaddubw): Ditto.
4895         (sse5_phaddubd): Ditto.
4896         (sse5_phaddubq): Ditto.
4897         (sse5_phadduwd): Ditto.
4898         (sse5_phadduwq): Ditto.
4899         (sse5_phaddudq): Ditto.
4900         (sse5_phsubbw): Ditto.
4901         (sse5_phsubwd): Ditto.
4902         (sse5_phsubdq): Ditto.
4903         (sse5_pperm): Ditto.
4904         (sse5_pperm_sign_v16qi_v8hi): New insns for pack/unpack with SSE5.
4905         (sse5_pperm_zero_v16qi_v8hi): Ditto.
4906         (sse5_pperm_sign_v8hi_v4si): Ditto.
4907         (sse5_pperm_zero_v8hi_v4si): Ditto.
4908         (sse5_pperm_sign_v4si_v2di): Ditto.
4909         (sse5_pperm_sign_v4si_v2di): Ditto.
4910         (sse5_pperm_pack_v2di_v4si): Ditto.
4911         (sse5_pperm_pack_v4si_v8hi): Ditto.
4912         (sse5_pperm_pack_v8hi_v16qi): Ditto.
4913         (sse5_perm<mode>): New SSE5 intrinsic insn.
4914         (rotl<mode>3): Ditto.
4915         (sse5_rotl<mode>3): Ditto.
4916         (sse5_ashl<mode>3): Ditto.
4917         (sse5_lshl<mode>3): Ditto.
4918         (sse5_frcz<mode>2): Ditto.
4919         (sse5s_frcz<mode>2): Ditto.
4920         (sse5_cvtph2ps): Ditto.
4921         (sse5_cvtps2ph): Ditto.
4922         (sse5_vmmaskcmp<mode>3): Ditto.
4923         (sse5_com_tf<mode>3): Ditto.
4924         (sse5_maskcmp<mode>3): Ditto.
4925         (sse5_maskcmp_uns<mode>3): Ditto.
4926         (sse5_maskcmp_uns2<mode>3): Ditto.
4927         (sse5_pcom_tf<mode>3): Ditto.
4928
4929         * config/i386/predicates.md (sse5_comparison_float_operator):
4930         New predicate to match the comparison operators supported by
4931         the SSE5 com instruction.
4932         (ix86_comparison_int_operator): New predicate to match just the
4933         signed int comparisons.
4934         (ix86_comparison_uns_operator): New predicate to match just the
4935         unsigned int comparisons.
4936
4937         * doc/invoke.texi (-msse5): Add documentation.
4938         (-mfused-madd): Ditto.
4939
4940         * doc/extend.texi (x86 intrinsics): Document new SSE5 intrinsics.
4941
4942         * config.gcc (i[34567]86-*-*): Include bmmintrin.h and
4943         mmintrin-common.h.
4944         (x86_64-*-*): Ditto.
4945
4946         * config/i386/cpuid.h (bit_SSE5): Define SSE5 bit.
4947
4948         * config/i386/bmmintrin.h: New file, provide common x86 compiler
4949         intrinisics for SSE5.
4950
4951         * config/i386/smmintrin.h: Move instructions shared with SSE5 to
4952         mmintrin-common.h.
4953
4954         * config/i386/mmintrin-common.h: New file, to contain common
4955         instructions between SSE4.1 and SSE5.
4956
4957         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration): Use
4958         FOREACH_FUNCTION_ARGS to iterate over the argument list.
4959         (gen_regparm_prefix): Ditto.
4960
4961         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix): Use
4962         FOREACH_FUNCTION_ARGS to iterate over the argument list.  Use
4963         prototype_p to determine if a function is prototyped.
4964
4965 2009-08-25 Ville Voutilainen <ville.voutilainen@gmail.com>
4966
4967         * c-common.c (c_common_reswords) add the alignof keyword,
4968         with same RID as __alignof and __alignof__
4969
4970 2009-08-25  Anatoly Sokolov  <aesok@post.ru>
4971
4972         * hooks.h (hook_bool_const_int_const_int_true): Declare.
4973         * hooks.c (hook_bool_const_int_const_int_true): New function.
4974         * target.h (struct gcc_target): Add can_eliminate field.
4975         * target-def.h (TARGET_CAN_ELIMINATE): Define.
4976         (TARGET_INITIALIZER): Use TARGET_CAN_ELIMINATE.
4977         * ira.c (setup_eliminable_regset): Use can_eliminate target hook.
4978         * reload1.c (update_eliminables, init_elim_table): (Ditto.).
4979         (elim_table): Revise comment.
4980         * system.h (CAN_ELIMINATE): Poison.
4981         * defaults.h (CAN_ELIMINATE): Remove.
4982         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
4983
4984         * config/alpha/vms.h (CAN_ELIMINATE): Remove macro.
4985         * config/alpha/alpha.c (TARGET_CAN_ELIMINATE) [TARGET_ABI_OPEN_VMS]:
4986         Define macro.
4987         (alpha_vms_can_eliminate): Declare as static, change return type to
4988         bool.
4989         * config/alpha/alpha-protos.h (alpha_vms_can_eliminate): Remove.
4990
4991         * config/arm/arm.h (CAN_ELIMINATE): Remove macro.
4992         * config/arm/arm.c (TARGET_CAN_ELIMINATE): Define macro.
4993         (arm_can_eliminate): New function.
4994
4995         * config/avr/avr.h (CAN_ELIMINATE): Remove macro.
4996         * config/avr/avr.c (TARGET_CAN_ELIMINATE): Define macro.
4997         (avr_can_eliminate): Declare as static.
4998         * config/avr/avr-protos.h (avr_can_eliminate): Remove.
4999
5000         * config/bfin/bfin.h (CAN_ELIMINATE): Remove macro.
5001         * config/bfin/bfin.c (TARGET_CAN_ELIMINATE): Define macro.
5002         (bfin_can_eliminate): New function.
5003
5004         * config/crx/crx.h (CAN_ELIMINATE): Remove macro.
5005         * config/crx/crx.c (TARGET_CAN_ELIMINATE): Define macro.
5006         (crx_can_eliminate): New function.
5007
5008         * config/fr30/fr30.h (CAN_ELIMINATE): Remove macro.
5009         * config/fr30/fr30.c (TARGET_CAN_ELIMINATE): Define macro.
5010         (fr30_can_eliminate): New function.
5011
5012         * config/frv/frv.h (CAN_ELIMINATE): Remove macro.
5013         * config/frv/frv.c (TARGET_CAN_ELIMINATE): Define macro.
5014         (frv_can_eliminate): New function.
5015
5016         * config/h8300/h8300.h (CAN_ELIMINATE): Remove macro.
5017         * config/h8300/h8300.c (TARGET_CAN_ELIMINATE): Define macro.
5018         (h8300_can_eliminate): New function.
5019
5020         * config/i386/i386.h (CAN_ELIMINATE): Remove macro.
5021         * config/i386/i386.c (TARGET_CAN_ELIMINATE): Define macro.
5022         (i386_can_eliminate): Declare as static, change return type to bool.
5023         * config/i386/i386-protos.h (i386_can_eliminate): Remove.
5024
5025         * config/ia64/ia64.h (CAN_ELIMINATE): Remove macro.
5026         * config/ia64/ia64.c (TARGET_CAN_ELIMINATE): Define macro.
5027         (ia64_can_eliminate): New function.
5028
5029         * config/iq2000/iq2000.h (CAN_ELIMINATE): Remove macro.
5030         * config/iq2000/iq2000.c (TARGET_CAN_ELIMINATE): Define macro.
5031         (iq2000_can_eliminate): New function.
5032
5033         * config/m32r/m32r.h (CAN_ELIMINATE): Remove macro.
5034         * config/m32r/m32r.c (TARGET_CAN_ELIMINATE): Define macro.
5035         (m32r_can_eliminate): New function.
5036
5037         * config/m68hc11/m68hc11.h (CAN_ELIMINATE): Remove macro.
5038         * config/m68hc11/m68hc11.c (TARGET_CAN_ELIMINATE): Define macro.
5039         (m68hc11_can_eliminate): New function.
5040
5041         * config/m68k/m68k.h (CAN_ELIMINATE): Remove macro.
5042         * config/m68k/m68k.c (TARGET_CAN_ELIMINATE): Define macro.
5043         (m68k_can_eliminate): New function.
5044
5045         * config/mep/mep.h (CAN_ELIMINATE): Remove macro.
5046         * config/mep/mep.c (TARGET_CAN_ELIMINATE): Define macro.
5047         (mep_can_eliminate): New function.
5048
5049         * config/mips/mips.h (CAN_ELIMINATE): Remove macro.
5050         * config/mips/mips.c (TARGET_CAN_ELIMINATE): Define macro.
5051         (mips_can_eliminate): New function.
5052
5053         * config/rs6000/rs6000.h (CAN_ELIMINATE): Remove macro.
5054         * config/rs6000/rs6000.c (TARGET_CAN_ELIMINATE): Define macro.
5055         (rs6000_can_eliminate): New function.
5056
5057         * config/s390/s390.h (CAN_ELIMINATE): Remove macro.
5058         * config/s390/s390.c (TARGET_CAN_ELIMINATE): Define macro.
5059         (s390_can_eliminate): Declare as static.
5060         * config/s390/s390-protos.h (sparc_can_eliminate): Remove.
5061
5062         * config/score/score.h (CAN_ELIMINATE): Remove macro.
5063         * config/score/score.c (TARGET_CAN_ELIMINATE): Define macro.
5064         (score_can_eliminate): New function.
5065
5066         * config/sparc/sparc.h (CAN_ELIMINATE): Remove macro.
5067         * config/sparc/sparc.c (TARGET_CAN_ELIMINATE): Define macro.
5068         (sparc_can_eliminate): Declare as static.
5069         * config/sparc/sparc-protos.h (sparc_can_eliminate): Remove.
5070
5071         * config/stormy16/stormy16.h (CAN_ELIMINATE): Remove macro.
5072         * config/stormy16/stormy16.c (TARGET_CAN_ELIMINATE): Define macro.
5073         (xstormy16_can_eliminate): New function.
5074
5075         * config/v850/v850.h (CAN_ELIMINATE): Remove macro.
5076         * config/v850/v850.c (TARGET_CAN_ELIMINATE): Define macro.
5077         (v850_can_eliminate): New function.
5078
5079 2009-08-25  Uros Bizjak  <ubizjak@gmail.com>
5080
5081         * config/alpha/alpha.md (*cmpdf_ieee_ext[123]): Remove.
5082         (*cmpdf_internal): Enable for all ALPHA_FPTM levels.
5083         (*movdfcc_ext[1234]): Disable for IEEE mode.
5084
5085 2009-08-25  Eric Botcazou  <ebotcazou@adacore.com>
5086
5087         * gimplify.c (prepare_gimple_addressable): New static function.
5088         (gimplify_modify_expr_to_memcpy): Invoke it on the RHS before marking
5089         it addressable.
5090         (gimplify_addr_expr): Invoke it similarly on the operand instead of
5091         manually fiddling with it.
5092
5093 2009-08-25  Michael Matz  <matz@suse.de>
5094
5095         * expr.h (jumpifnot_1, jumpif_1, do_jump_1): Declare.
5096         * dojump.c (do_jump_by_parts_greater): Take two operands instead of
5097         full expression.
5098         (do_jump_by_parts_equality, do_compare_and_jump): Ditto.
5099         (jumpifnot_1, jumpif_1): New wrappers for do_jump_1.
5100         (do_jump): Split out code for simple binary comparisons into ...
5101         (do_jump_1): ... this, taking the individual operands and code.
5102         Change callers to helper function above accordingly.
5103         * expr.c (expand_expr_real_1): Use jumpifnot_1 for simple binary
5104         comparisons.
5105
5106 2009-08-25  Michael Matz  <matz@suse.de>
5107
5108         * expr.h (struct separate_ops, sepops): New type for passing
5109         around an exploded simple expression.
5110         * optabs.c (expand_widen_pattern_expr, expand_vec_shift_expr):
5111         Use this structure instead of expression tree.
5112         (get_vcond_icode, expand_vec_cond_expr_p): Don't take whole
5113         expression, only its type.
5114         (expand_vec_cond_expr): Take type and individual operands instead
5115         of full expression.
5116         * optabs.h (expand_widen_pattern_expr, expand_vec_cond_expr,
5117         expand_vec_shift_expr): Change prototype accordingly.
5118         * tree-vect-stmts.c (vectorizable_condition): Change call of
5119         expand_vec_cond_expr_p to pass only type.
5120         * expr.c (do_store_flags): Change prototype and implementation
5121         to take an exploded expression.
5122         (expand_expr_real_1): New local ops initialized with details
5123         of the full expression.  Use it instead of full
5124         expression in calls to do_store_flags, expand_vec_cond_expr,
5125         expand_widen_pattern_expr and expand_vec_shift_expr.
5126
5127 2009-08-25  Michael Matz  <matz@suse.de>
5128
5129         * expr.c (expand_expr_real_1): New local treeop0, treeop1,
5130         treeop2 initialized with first three operands of the full expression.
5131         Substitute all TREE_OPERAND (exp, [012]) calls with them.
5132
5133 2009-08-25  Kai Tietz  <kai.tietz@onevision.com>
5134
5135         * gcc/gthr-win32.h (__UNUSED_PARAM): Define, if not already present.
5136         (__gthread_objc_condition_allocate): Mark arguments as unused.
5137         (__gthread_objc_condition_deallocate): Likewise.
5138         (__gthread_objc_condition_wait): Likewise.
5139         (__gthread_objc_condition_broadcast): Likewise.
5140         (__gthread_objc_condition_signal): Likewise.
5141         (__gthread_objc_thread_detach): Cast via INT_PTR to pointer.
5142         (__gthread_objc_thread_id): Likewise.
5143
5144 2009-08-25  Janus Weil  <janus@gcc.gnu.org>
5145
5146         PR middle-end/41149
5147         * tree-pretty-print.c (print_call_name): Print the correct call name
5148         for procedure pointer components.
5149
5150 2009-08-24  Steve Ellcey  <sje@cup.hp.com>
5151
5152         * config/ia64/ia64.c (ia64_promote_function_mode): Call
5153         default_promote_function_mode when not VMS.
5154
5155 2009-08-24  Olivier Hainque  <hainque@adacore.com>
5156
5157         * convert.c (convert_to_integer): Don't assume an input pointer is
5158         POINTER_SIZE wide.  Fetch from the type instead.
5159
5160 2009-08-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5161
5162         * configure.ac (AC_PREREQ): Bump to 2.64.
5163
5164 2009-08-24  Rafael Avila de Espindola  <espindola@google.com>
5165
5166         * gcc.c (standard_exec_prefix_1,standard_exec_prefix_2): Remove.
5167         (process_command): Don't search standard_exec_prefix_1 and
5168         standard_exec_prefix_2.
5169
5170 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
5171
5172         * config/arm/arm.c (output_return_instruction): Handle for
5173         unified syntax.
5174
5175 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
5176
5177         * config/arm/arm.c (arm_select_cc_mode): Handle subreg.
5178
5179 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
5180
5181         * config/arm/vfp.md (*arm_movdi_vfp): Mark as predicable.
5182         (*arm_movdf_vfp): Likewise.
5183
5184 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
5185
5186         * config/arm/neon.md (vashl<mode>3): Rename from ashl<mode>3.
5187         (vashr<mode>3): Rename from ashr<mode>3.
5188         (vlshr<mode>3): Rename from lshr<mode>3.
5189
5190 2009-08-24  Kai Tietz  <kai.tietz@onevision.com>
5191
5192         PR/40786
5193         * c-format.c (format_wanted_type): Add new member scalar_identity_flag.
5194         (check_format_info_main): Use scalar_identify_flag.
5195         (check_format_types): Check for scalar size identity if
5196         scalar_identify_flag is set.
5197         (printf_length_specs): Extend by new field.
5198         (asm_fprintf_length_specs): Likewise.
5199         (gcc_diag_length_specs): Likewise.
5200         (scanf_length_specs): Likewise.
5201         (strfmon_length_specs): Likewise.
5202         (gcc_gfc_length_specs): Likewise.
5203         * config/i386/msformat-c.c (ms_printf_length_specs): Likewise.
5204         (ms_printf_flag_specs): Likewise.
5205         * c-format.h (format_length_info): Add new member scalar_identity_flag.
5206
5207 2009-08-23  Uros Bizjak  <ubizjak@gmail.com>
5208
5209         PR target/40718
5210         * config/i386/i386.c (*call_pop_1): Disable for sibling calls.
5211         (*call_value_pop_1): Ditto.
5212         (*sibcall_pop_1): New insn pattern.
5213         (*sibcall_value_pop_1): Ditto.
5214
5215 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
5216
5217         PR target/41081
5218         * config/rs6000/rs6000.md (rotlsi3_64, ashlsi3_64, lshrsi3_64,
5219         ashrsi3_64): New.
5220
5221 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
5222
5223         PR target/41081
5224         * fwprop.c (try_fwprop_subst): Allow multiple sets.
5225         (get_reg_use_in): New function.
5226         (forward_propagate_subreg): Propagate through subreg of zero_extend
5227         or sign_extend.
5228
5229 2009-08-22  Kaz Kojima  <kkojima@gcc.gnu.org>
5230
5231         * config/sh/t-sh (TARGET_LIBGCC2_CFLAGS): Define.
5232         * config/sh/t-netbsd (TARGET_LIBGCC2_CFLAGS): Add -mieee.
5233
5234 2009-08-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5235
5236         * configure.ac: Remove --with-datarootdir, --with-docdir,
5237         --with-htmldir switches.  No need to call AC_SUBST for
5238         datarootdir, docdir, htmldir any more.
5239         * configure: Regenerate.
5240         * doc/install.texi (Configuration): Document --datarootdir,
5241         --docdir, --htmldir, --pdfdir; update documentation for
5242         --infodir, --mandir.
5243         (Prerequisites): Bump Autoconf version to 2.64, Automake to 1.11,
5244         M4 to 1.4.6.
5245
5246         * aclocal.m4: Regenerate.
5247         * config.in: Regenerate.
5248         * configure: Regenerate.
5249
5250 2009-08-21  Douglas B Rupp  <rupp@gnat.com>
5251             Olivier Hainque  <hainque@adacore.com>
5252
5253         * config/ia64/ia64.c: Include libfuncs.h.
5254         (TARGET_PROMOTE_FUNCITON_MODE): Define target macro.
5255         (ia64_expand_call): Use reg 25 on VMS.
5256         (ia64_initialize_trampoline): Fix for VMS ABI.
5257         (ia64_function_arg_offset): Always returns 0 when TARGET_ABI_OPEN_VMS.
5258         (ia64_function_arg): Initialize reg 25 on VMS.
5259         Fix OpenVMS ABI issues for varargs.
5260         For OpenVMS, emit the Argument Information register set in the
5261         incoming/sibcall case as well.
5262         (ia64_arg_type): New function.
5263         (ia64_function_arg_advance): Keep track of cum->words.
5264         Fix OpenVMS ABI issues for varargs.
5265         (ia64_function_value): On VMS, promote mode of non-aggregate types.
5266         (ia64_override_options): Set flag_no_common on VMS.
5267         (ia64_init_builtins): Disable FWRITE builtin.
5268         (ia64_asm_output_external): Call DO_CRTL_NAMES.
5269         (ia64_vms_init_libfuncs): Add decc$ routines.
5270         (ia64_vms_valid_pointer_mode): New function.
5271         (ia64_struct_value_rtx): Allways NULL_RTX on VMS.
5272         (ia64_promote_function_mode): New function
5273         * config/ia64/ia64.h (TARGET_ABI_OPEN_VMS): Define as 0 for default.
5274         (LONG_DOUBLE_TYPE_SIZE): Force to 64 on VMS.
5275         (LIBCGC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
5276         (INIT_CUMULATIVE_ARGS): Add atypes for VMS.
5277         (INIT_CUMULATIVE_INCOMING_ARGS): Likewise.
5278         (ASM_OUTPUT_DEF): Use ISDIGIT instead of isdigit.
5279         Suppress trailing '#' if VALUE is numeric.
5280         * config/ia64/vms.h (PROMOTE_FUNCTION_MODE): Remove, code moved to
5281         ia64_promote_function_mode.
5282         (TARGET_VALID_POINTER_MODE): Define.
5283
5284 2009-08-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
5285
5286         PR target/40671
5287         * config/rs6000/rs6000.c (rs6000_override_options): Use
5288         TARGET_64BIT instead of TARGET_POWERPC64 to set the size of pointers.
5289
5290         PR target/41145
5291         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Fix
5292         reporting of vector + decimal/boolean/complex error.
5293
5294 2009-08-21  Jakub Jelinek  <jakub@redhat.com>
5295
5296         * config/rs6000/rs6000.c (rs6000_init_builtins): Fix type of
5297         __vector double TYPE_DECL.
5298
5299 2009-08-21  Richard Earnshaw  <rearnsha@arm.com>
5300
5301         * arm.h (MACHMODE): New define.  Include insn-modes.h if available.
5302         (CUMULATIVE_ARGS): Use MACHMODE for declaration of aapcs_vfp_mode.
5303         * arm.c (aapcs_vfp_is_call_or_return_candidate): Change base_mode
5304         to pointer to enum machine_mode.  Update all callers as needed.
5305
5306 2009-08-21 Uros Bizjak <ubizjak@gmail.com>
5307
5308         * config/alpha/alpha.md (exception_receiver): Emit alternative
5309         GP load sequence if flag_reorder_blocks_and_partition is set.
5310         (*exception_receiver_2): Also enable when
5311         flag_reorder_blocks_and_partition is set.
5312
5313 2009-08-20  Matt Rice  <ratmice@gmail.com>
5314             Diego Novillo  <dnovillo@google.com>
5315
5316         * Makefile.in (PLUGIN_HEADERS): Include incpath.h and
5317         tree-ssa-sccvn.h.
5318
5319 2009-08-20  Richard Guenther  <rguenther@suse.de>
5320
5321         * c-objc-common.h (LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): Do not define.
5322         * c-tree.h (c_dup_lang_specific_decl): Remove.
5323         (struct lang_decl, struct lang_type): Move definitions ...
5324         * c-lang.h: ... here.  New file.
5325         * c-decl.c: Include c-lang.h.
5326         (c_dup_lang_specific_decl): Remove.
5327         * c-typeck.c: Include c-lang.h.
5328         * Makefile.in (c-decl.o): Add c-lang.h dependency.
5329         (c-typeck.o): Likewise.
5330         * c-config-lang.in (gtfiles): Add c-lang.h.
5331         * gengtype.c (get_output_file_with_visibility): Handle c-lang.h
5332         like c-tree.h.
5333
5334 2009-08-20  Uros Bizjak  <ubizjak@gmail.com>
5335
5336         * config/alpha/alpha.c (alpha_end_function): Do not clear
5337         crtl->emit structure and free insn locators if cfun->is_thunk is true,
5338         this is now handled in generic code.
5339
5340 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
5341
5342         * config/s390/s390.c (Z10_PREDICT_DISTANCE): New macro.
5343         (s390_z10_fix_long_loop_prediction): New function.
5344         (s390_z10_optimize_cmp): INSN walk moved to callee - s390_reorg.
5345         (s390_reorg): Walk over the INSNs and invoke
5346         s390_z10_fix_long_loop_prediction and s390_z10_optimize_cmp.
5347
5348 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
5349
5350         * config/s390/s390.md ("*brx_stage1_<GPR:mode>", "*brxg_64bit",
5351         "*brx_64bit", "*brx_31bit"): New patterns.
5352         * config/s390/s390.c ('E'): New output modifier.
5353
5354 2009-08-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
5355             Richard Earnshaw  <richard.earnshaw@arm.com>
5356
5357         * config/arm/arm.c (arm_emit_movpair): Handle CONST_INT.
5358         * config/arm/arm.md (*arm_movtas_ze): New pattern for movt.
5359
5360 2009-08-19  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5361
5362         * pa.md (reload_inhi, reload_outhi, reload_inqi, reload_outqi): New
5363         patterns.
5364         * pa.c (emit_move_sequence): Check if address of operand1 is valid
5365         for mode mode of operand0 when doing secondary reload for SAR.
5366
5367 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
5368
5369         PR middle-end/41123
5370         * expr.c (expand_expr_real_1) <normal_inner_ref>: Handle all kinds
5371         of CONCAT, not just bitpos 0 bitsize size of the whole CONCAT.
5372
5373 2009-08-19  Jason Merrill  <jason@redhat.com>
5374
5375         * doc/invoke.texi (C++ Dialect Options): Note change of minimum
5376         supported template depth in C++0x.
5377
5378 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
5379
5380         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Don't call
5381         free_after_compilation.
5382         * config/score/score7.c (score7_output_mi_thunk): Likewise.
5383         * config/score/score3.c (score3_output_mi_thunk): Likewise.
5384         * config/ia64/ia64.c (ia64_output_mi_thunk): Likewise.
5385         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
5386         * config/sh/sh.c (sh_output_mi_thunk): Likewise.
5387         * config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
5388         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
5389
5390 2009-08-19  Ian Lance Taylor  <iant@google.com>
5391
5392         * doc/md.texi (Insn Canonicalizations): Correct canonicalization
5393         of (plus (mult (neg B) C) A).
5394
5395 2009-08-18  Michael Matz  <matz@suse.de>
5396
5397         * omp-low.c (optimize_omp_library_calls): Use types_compatible_p
5398         instead of comparing TYPE_MAIN_VARIANT for equality.
5399         * tree-vect-patterns.c (vect_recog_dot_prod_pattern,
5400         vect_recog_widen_mult_pattern, vect_recog_widen_sum_pattern): Ditto.
5401         * tree-vect-loop.c (vect_is_simple_reduction): Ditto.
5402         * gimplify.c (goa_lhs_expr_p): Ditto and use
5403         STRIP_USELESS_TYPE_CONVERSION.
5404
5405 2009-08-18  Michael Matz  <matz@suse.de>
5406
5407         * tree-ssa-structalias.c (create_variable_info_for): Also mark
5408         first field in a struct.
5409         (intra_create_variable_infos): Don't deal with flag_argument_noalias.
5410
5411 2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
5412
5413         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
5414         locators before emit_insn is called.  Remove assert that
5415         cfun->is_thunk.
5416         (alpha_end_function): Clear crtl->emit structure and free insn
5417         locators if cfun->is_thunk is true.
5418
5419 2009-08-18  Jason Merrill  <jason@redhat.com>
5420
5421         * config/elfos.h (ASM_DECLARE_OBJECT_NAME): Use gnu_unique_object
5422         type if available.
5423         * configure.ac: Test for it.
5424         * configure, config.in: Regenerate.
5425         * doc/install.texi: Document --enable-gnu-unique-object.
5426
5427 2009-08-18  Richard Guenther  <rguenther@suse.de>
5428
5429         PR middle-end/41094
5430         * builtins.c (fold_builtin_pow): Fold pow(pow(x,y),z) to
5431         pow(x,y*z) only if x is nonnegative.
5432
5433 2009-08-18  Jakub Jelinek  <jakub@redhat.com>
5434
5435         * bb-reorder.c (fix_up_fall_thru_edges): Only call invert_jump
5436         on jumps.
5437
5438         PR target/40971
5439         * config/rs6000/rs6000.c (rs6000_legitimize_address): For
5440         [DT][FDI]mode ensure the offset isn't 4/8/12 bytes below 0x8000.
5441
5442 2009-08-17  DJ Delorie  <dj@redhat.com>
5443
5444         * config/m32c/m32c.md (UNS_FSETB, UNS_FREIT): New.
5445         * config/m32c/prologue.md (epilogue_freit): New.
5446         (fset_b): New.
5447         * config/m32c/m32c.c (m32c_function_needs_enter): Add prototype.
5448         (bank_switch_p): Likewise.
5449         (fast_interrupt_p): Likewise.
5450         (interrupt_p): Likewise.
5451         (m32c_conditional_register_usage): Round memregs size up.
5452         (need_to_save): We only need to save $a0 when we use ENTER.
5453         (interrupt_p): Check for fast_interrupt too.
5454         (bank_switch_p): New.
5455         (fast_interrupt_p): New.
5456         (m32c_attribute_table): Add bank_switch and fast_interrupt.
5457         (m32c_emit_prolog): Support bank switching and fast interrupts.
5458         * doc/extend.texi (Function Attributes): Add bank_switch and
5459         fast_interrupt.
5460
5461 2009-08-17  Douglas B Rupp  <rupp@gnat.com>
5462
5463         * config/alpha/alpha.c (vms_valid_pointer_mode): New function.
5464         * config/alpha/vms.h (TARGET_VALID_POINTER_MODE): Define.
5465
5466 2009-08-16  Douglas B Rupp  <rupp@gnat.com>
5467
5468         * doc/invoke.texi (Target options): Add new option list for IA-64/VMS.
5469         (menu): Add IA-64/VMS Options.
5470         (IA-64/VMS Options): Likewise.
5471
5472 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
5473
5474         PR target/38599
5475         * config/mips/mips.md (*lwxs): Use :P for pointer values.
5476
5477 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
5478
5479         * config/mips/mips-protos.h (mips_push_asm_switch): New function.
5480         (mips_pop_asm_switch): Likewise.
5481         * config/mips/mips.c (set_noreorder, set_nomacro, set_noat): Replace
5482         with...
5483         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
5484         (mips_push_asm_switch_1, mips_pop_asm_switch_1): New functions.
5485         (mips_push_asm_switch, mips_pop_asm_switch): Likewise.
5486         (mips_print_operand_punctuation): Use them.  Check mips_noreorder
5487         instead of set_noreorder.
5488         (mips_output_function_prologue): Use the new functions.
5489         (mips_output_function_epilogue): Likewise.
5490         (mips_need_noat_wrapper_p): New function, split out from...
5491         (mips_final_prescan_insn, mips_final_postscan_insn): ...here.
5492         Use mips_push_asm_switch and mips_pop_asm_switch.
5493         * config/mips/mips.h (FUNCTION_PROFILER): Use mips_push_asm_switch
5494         and mips_pop_asm_switch.
5495         (ASM_OUTPUT_REG_POP): Likewise.
5496         (DBR_OUTPUT_SEQEND): Remove boilerplate comment.
5497         Use mips_pop_asm_switch.
5498         (mips_asm_switch): New structure.
5499         (set_noreorder, set_nomacro): Replace with...
5500         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
5501         * config/mips/mips.md (fix_truncdfsi2_macro): Use mips_nomacro
5502         instead of set_nomacro.
5503         (fix_truncsfsi2_macro): Likewise.
5504         (cprestore): Likewise.
5505         (hazard): Use mips_noreorder instead of set_noreorder.
5506         * config/mips/sdemtk.h (FUNCTION_PROFILER): As for mips.h.
5507
5508 2009-08-16  Uros Bizjak  <ubizjak@gmail.com>
5509
5510         * config/alpha/alpha.c (alpha_end_function): Handle NULL_RTX returned
5511         from prev_active_insn.
5512
5513 2009-08-16  Anatoly Sokolov  <aesok@post.ru>
5514
5515         * config/avr/avr.h (AVR_HAVE_8BIT_SP): New macros.
5516         * config/avr/avr.c (avr_override_options): Initialize
5517         avr_current_arch variable.
5518         (avr_cpu_cpp_builtins): Define __AVR_HAVE_8BIT_SP__ or
5519         __AVR_HAVE_16BIT_SP__ according to the device type.
5520         (expand_prologue, output_movhi): Use AVR_HAVE_8BIT_SP instead of
5521         TARGET_TINY_STACK.
5522         (expand_epilogue): Use correct QI mode frame pointer for tiny stack.
5523         Use AVR_HAVE_8BIT_SP instead of TARGET_TINY_STACK.
5524
5525 2009-08-16  Dodji Seketeli  <dodji@redhat.com>
5526
5527         PR debug/37801
5528         * gcc/dwarf2out.c (gen_inlined_subroutine_die): Concentrate on
5529         generating inlined subroutine die only. We shouldn't be
5530         called for anything else.
5531         (gen_block_die): Don't generate inline subroutine debug info for
5532         abstract blocks.
5533
5534 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
5535
5536         * graphite-poly.c (print_pbb): Print PBB index.
5537
5538 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
5539
5540         PR middle-end/40981
5541         * graphite-interchange.c (ppl_max_for_le): Moved...
5542         * graphite-poly.c (pbb_number_of_iterations): Call ppl_max_for_le.
5543         * graphite-ppl.c (ppl_max_for_le): ... here.  Correct the use of
5544         ppl_Pointset_Powerset_C_Polyhedron_maximize.
5545         * graphite-ppl.h (ppl_max_for_le): Declared.
5546
5547 2009-08-14  Olatunji Ruwase <tjruwase@google.com>
5548
5549         * doc/extend.texi (Symbol-Renaming Pragmas): redefine_extname is
5550         supported on all platforms.
5551         * target.h (struct gcc_target): Remove handle_pragma_redefine_extname.
5552         * c-cppbuiltin.c: Remove use of targetm.handle_pragma_redefine_extname.
5553         * c-pragma.c: Likewise.
5554         * target-def.h (TARGET_INITIALIZER): Remove
5555         TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
5556         * config/sol2.h: Remove use of TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
5557
5558 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
5559
5560         * config/ia64/fde-vms.c: New file.
5561         * config/ia64/fde-glibc.c (_Unwind_FindTableEntry): Add dummy arg.
5562         * config/ia64/unwind-ia64.c (UNW_ accessors): Move to unwind-ia64.h
5563         (MD_UNW_COMPATIBLE_PERSONALITY_P): Provide default.
5564         (uw_frame_state_for): Only register a personality routine if it is
5565         known to be compatible with our expectations.
5566         (_Unwind_FindEnclosingFunction, uw_frame_state_for):
5567         Declare unw_table_entry stack variable and
5568         mod all calls to _Unwind_FindTableEntry to add arg.
5569         * config/ia64/unwind-ia64.h (UNW_ accessors): Move here.
5570         (_Unwind_FindTableEntry): Add arg to prototype.
5571
5572 2009-08-14  Eric Botcazou  <ebotcazou@adacore.com>
5573
5574         * config/ia64/unwind-ia64.c (struct _Unwind_Context): Add new
5575         field 'signal_pfs_loc'.
5576         (uw_frame_state_for): Remove duplicate code dealing with leaf
5577         procedures without unwind info.
5578         If in the frame after unwinding through a signal handler, restore
5579         the AR.PFS register instead of the CFM if AR.PFS has not been saved.
5580         * config/ia64/linux-unwind.h (ia64_fallback_frame_state): Do not set
5581         'pfs_loc' to the AR.PFS location in the signal context; instead
5582         set 'signal_pfs_loc'.
5583         Manually generate the unwind info for the AR.PFS register.
5584         (ABI_MARKER_OLD_LINUX_SIGTRAMP, ABI_MARKER_OLD_LINUX_INTERRUPT,
5585         ABI_MARKER_LINUX_SIGTRAMP, ABI_MARKER_LINUX_INTERRUPT): Define.
5586         (ia64_handle_unwabi): Test 'fs->unwabi' against them.
5587         Do not set 'pfs_loc' to the AR.PFS location in the signal context;
5588         instead set 'signal_pfs_loc'.
5589         Remove code preventing the AR.PFS register from being restored
5590         from the signal context.
5591
5592 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
5593             Tristan Gingold  <gingold@adacore.com>
5594
5595         * config.gcc (ia64-hp-*vms*): Insert ia64/t-ia64 in tmake_file.
5596         * config/ia64/t-vms: New file.
5597         * config/ia64/vms64.h: New file.
5598         * config/ia64/vms.h: New file.
5599         * config/ia64/vms-crtinit.asm: New file.
5600         * config/ia64/vms_symvec_libgcc_s.opt: New file.
5601         * config/ia64/vms-unwind.h: New file.
5602
5603 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
5604
5605         * config/alpha/alpha.c (alpha_emit_conditional_move): Handle
5606         TFmode compares.
5607
5608 2009-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5609
5610         PR middle-end/30789
5611         * builtins.c (do_mpc_arg2): Make extern, define for any MPC version.
5612         Move declaration...
5613         * real.h (do_mpc_arg2): ... here.
5614         * fold-const.c (const_binop): Use MPC for complex MULT_EXPR
5615         and RDIV_EXPR.
5616
5617 2009-08-14  Rafael Avila de Espindola  <espindola@google.com>
5618
5619         * final.c (add_debug_prefix_map): Don't use GC memory for
5620         old_prefix and new_prefix.
5621
5622 2009-08-14  Richard Guenther  <rguenther@suse.de>
5623
5624         * ipa-prop.c (compute_complex_pass_through): If we cannot
5625         compute a non-varying offset for IPA_JF_ANCESTOR punt.
5626
5627 2009-08-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
5628
5629         * c-lex.c (c_lex_with_flags): Increase size of local variable
5630         to avoid memory clobber.
5631
5632 2009-08-14  Paolo Bonzini  <bonzini@gnu.org>
5633
5634         PR target/40934
5635         * config/i386/i386.c (ix86_fp_comparison_strategy):
5636         Only enable/disable sahf at function granularity.
5637
5638 2009-08-14  Hans-Peter Nilsson  <hp@axis.com>
5639
5640         PR rtl-optimization/41064
5641         * reload1.c (reload_as_needed): Don't call extract_insn
5642         for known invalid replacements after calling
5643         validate_replace_rtx_group and verify_changes.
5644
5645 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
5646
5647         PR target/41019
5648         * config/i386/sse.md (SSEMODE124C8): New mode iterator.
5649         (vcond<SSEMODEF2P:mode>): Assert that operation is supported by
5650         ix86_expand_fp_vcond.
5651         (vcond<SSEMODE124C8:mode>): Use SSEMODE124C8 instead of SSEMODE124.
5652         Assert that operation is supported by ix86_expand_int_vcond.
5653         (vcondu<SSEMODE124C8:mode>): Ditto.
5654
5655 2009-08-13  DJ Delorie  <dj@redhat.com>
5656
5657         * config/i386/djgpp-stdint.h: New.
5658         * config.gcc (djgpp): Use it.
5659
5660 2009-08-13  Kaz Kojima  <kkojima@gcc.gnu.org>
5661
5662         * config/sh/sh.c (sh_override_options): When flag_exceptions or
5663         flag_unwind_tables is on, turn flag_reorder_blocks_and_partition off.
5664
5665 2009-08-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
5666
5667         * tree-ssa-loop-prefetch.c
5668         (prune_ref_by_group_reuse): Enhance probabilistic analysis
5669         for long-stride pruning.
5670         (compute_miss_rate): New function to compute the probability
5671         that two memory references access different cache lines.
5672
5673 2009-08-13  Dave Korn  <dave.korn.cygwin@gmail.com>
5674
5675         * gcc/config/i386/cygwin.h (LINK_SPEC): Add --enable-auto-image-base.
5676
5677 2009-08-13  Richard Guenther  <rguenther@suse.de>
5678
5679         PR middle-end/41047
5680         * tree-ssa-ccp.c (ccp_fold): When folding pointer additions
5681         use the constant pointer type.
5682         * gimplify.c (canonicalize_addr_expr): Canonicalize independent
5683         of CV qualifiers on the target pointer type.
5684         * tree-ssa.c (useless_type_conversion_p): Move incomplete pointer
5685         conversion check before restrict check.
5686
5687 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
5688
5689         PR target/41029
5690         * config/sh/sh.md (reload_outdf__RnFRm+4): Fix thinko.
5691
5692 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
5693
5694         * config/sh/sh.c (sh_promote_function_mode): Add ATTRIBUTE_UNUSED.
5695
5696 2009-08-12  Richard Guenther  <rguenther@suse.de>
5697
5698         PR tree-optimization/41011
5699         * ipa-cp.c (ipcp_lattice_from_jfunc): Deal with failing fold
5700         and reference constructing.
5701
5702 2009-08-12  Xinliang David Li  <davidxl@google.com>
5703
5704         PR tree-optimization/41012
5705         * tree-flow.h : New external interface.
5706         * gimple-low.c (check_call_arg): Change to public function.
5707         Remove argument mismatch check in lowering.
5708         * tree-inline.h (tree_can_inline_p): Interface change.
5709         * tree-inline.c (tree_can_inline_p): Fold argument mismatch check
5710         into this function.
5711         * ipa-inline.c (cgraph_decide_inlining_of_small_functions):
5712         Call change to tree_can_inline_p function.
5713         (cgraph_decide_inlining_incrementally): Ditto.
5714
5715 2009-08-12  Richard Sandiford  <rdsandiford@googlemail.com>
5716
5717         PR tree-optimization/41031
5718         * tree-outof-ssa.c (insert_value_copy_on_edge): Use promote_decl_mode
5719         on the partition variable rather than promote_mode on the source
5720         type.  Assert that the partition variable's type has the same
5721         mode as the source value's.
5722
5723 2009-08-12  Paolo Bonzini  <bonzini@gnu.org>
5724
5725         * doc/tm.texi (TARGET_PROMOTE_FUNCTION_MODE): Add documentation
5726         for for_return == 2.
5727         * function.c (assign_parm_setup_reg): Use for_return == 2, improve
5728         comments.
5729         * calls.c (expand_call): Fix typo.
5730         * explow.c (promote_decl_mode): Use for_return == 2 for RESULT_DECL
5731         and PARM_DECL.
5732         * stmt.c (expand_value_return): Use promote_function_mode to copy out
5733         of pseudo.
5734         * targhooks.c (default_promote_function_mode): Handle for_return == 2.
5735         * config/cris/cris.c (cris_promote_function_mode): Likewise.
5736         * config/mmix/mmix.c (mmix_promote_function_mode): Likewise.
5737         * config/pa/pa.c (pa_promote_function_mode): Likewise.
5738
5739 2009-08-12  Andrew Haley  <aph@redhat.com>
5740
5741         * config/arm/arm.c (arm_init_libfuncs): Add __sync_synchronize.
5742
5743 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
5744
5745         PR bootstrap/40103
5746         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
5747
5748 2009-08-12  Richard Guenther  <rguenther@suse.de>
5749
5750         * alias.c (get_alias_set): Honor TYPE_STRUCTURAL_EQUALITY_P.
5751         * gimplify.c (gimplify_modify_expr): Do not use
5752         lang_hooks.types_compatible_p.
5753         * tree-ssa.c (useless_type_conversion_p): For aggregates
5754         just return false if the canonical types differ.
5755
5756 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
5757
5758         PR middle-end/40980
5759         * sese.c (convert_for_phi_arg): New.
5760         (add_guard_exit_phis): Use convert_for_phi_arg.
5761
5762 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
5763
5764         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Dont add
5765         unknown subscript upper bounds.
5766
5767 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
5768             Pranav Garg  <pranav.garg2107@gmail.com>
5769
5770         * graphite-interchange.c (gather_access_strides): Removed.
5771         (ppl_max_for_le): New.
5772         (build_linearized_memory_access): New.
5773         (memory_stride_in_loop): New.
5774         (pbb_interchange_profitable_p): Reimplemented.
5775         * graphite-ppl.h (ppl_new_id_map): New.
5776         (ppl_interchange): New.
5777
5778 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
5779
5780         * graphite-interchange.c (compute_subscript): Removed.
5781         (compute_array_size_cstr): Removed.
5782         (compute_array_size_poly): Removed.
5783         (compute_array_size): Removed.
5784         (gather_access_strides_poly): Removed.
5785         (gather_access_strides): Empty.
5786
5787 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
5788
5789         * graphite-dependences.c (dependence_polyhedron_1): Replace
5790         pdr_nb_subscripts with PDR_NB_SUBSCRIPTS.
5791         (graphite_legal_transform_dr): Same.
5792         (graphite_carried_dependence_level_k): Same.
5793         * graphite-poly.c (new_poly_dr): Add a parameter nb_subscripts.
5794         Initialize PDR_NB_SUBSCRIPTS.
5795         (print_pdr_access_layout): Replace pdr_nb_subscripts with
5796         PDR_NB_SUBSCRIPTS.
5797         * graphite-poly.h (struct poly_dr): Add nb_subscripts field.
5798         (PDR_NB_SUBSCRIPTS): New.
5799         (pdr_nb_subscripts): Removed.
5800         (pdr_dim): Simplified.
5801         * graphite-sese-to-poly.c (build_poly_dr): Replace pdr_nb_subscripts
5802         with PDR_NB_SUBSCRIPTS.
5803
5804 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
5805
5806         * graphite-interchange.c (compute_array_size): Remove use of
5807         PDR_DATA_CONTAINER.
5808         * graphite-poly.c (new_poly_dr): Remove argument data_container.
5809         Do not initialize PDR_DATA_CONTAINER.
5810         (print_pdr): Do not print PDR_DATA_CONTAINER.
5811         * graphite-poly.h (struct poly_dr): Remove data_container field.
5812         (PDR_DATA_CONTAINER): Removed.
5813         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Remove use of
5814         PDR_DATA_CONTAINER.
5815         (build_poly_dr): Same.
5816
5817 2009-08-12  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
5818             Sebastian Pop  <sebastian.pop@amd.com>
5819
5820         * graphite-dependences.c (graphite_legal_transform_dr): Work on a
5821         copy of the dependence polyhedron.  Free the temporary objects.
5822         (graphite_carried_dependence_level_k): Free unused objects before
5823         returning.
5824
5825 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
5826
5827         * graphite-blocking.c (scop_do_strip_mine): Call store_scattering.
5828         Early return without analyzing the data dependences if no
5829         transform has been done.  Call restore_scattering if the transform
5830         is not legal.
5831         (graphite-interchange.c): Same.
5832         * graphite-poly.c (print_scattering_function): Test for
5833         PBB_TRANSFORMED.
5834         (graphite_read_transforms): Initialize PBB_TRANSFORMED.
5835         (apply_poly_transforms): Do not gcc_assert that
5836         the transform is legal.
5837         (new_poly_bb): Initialize PBB_TRANSFORMED, PBB_SAVED and PBB_ORIGINAL.
5838         Do not initialize PBB_NB_SCATTERING_TRANSFORM, PBB_NB_LOCAL_VARIABLES,
5839         PBB_TRANSFORMED_SCATTERING, and PBB_ORIGINAL_SCATTERING.
5840         (free_poly_dr): Free PBB_TRANSFORMED, PBB_SAVED, and PBB_ORIGINAL.
5841         * graphite-poly.h (struct poly_scattering): New.
5842         (struct poly_bb): Add original, transformed, and saved fields.
5843         Remove transformed_scattering, original_scattering,
5844         nb_local_variables and nb_scattering_transform fields.
5845         (PBB_ORIGINAL, PBB_TRANSFORMED, PBB_SAVED): New.
5846         (poly_scattering_new): New.
5847         (poly_scattering_free): New.
5848         (poly_scattering_copy): New.
5849         (store_scattering_pbb): New.
5850         (store_scattering): New.
5851         (restore_scattering_pbb): New.
5852         (restore_scattering): New.
5853         * graphite-sese-to-poly.c (build_pbb_scattering_polyhedrons):
5854         Initialize PBB_TRANSFORMED and PBB_ORIGINAL.
5855
5856 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
5857
5858         * graphite-poly.c (print_pbb): Add parentheses in the pretty print.
5859         (print_scop): Same.
5860
5861 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
5862
5863         * Makefile.in (graphite.o): Depends on PREDICT_H.
5864         * graphite.c: Include predict.h.
5865         (graphite_finalize): Call tree_estimate_probability.
5866         * predict.c (predict_loops): Do not call scev_initialize and
5867         scev_finalize.
5868         (tree_estimate_probability_bb): New.
5869         (tree_estimate_probability): Do not initialize loops: move that
5870         code to the driver.  Call tree_estimate_probability_bb.
5871         (tree_estimate_probability_driver): New.
5872         (pass_profile): Use tree_estimate_probability_driver.
5873         * predict.h (tree_estimate_probability): Declared.
5874
5875 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
5876
5877         * graphite-clast-to-gimple.c (gloog): Add time to TV_GRAPHITE_CODE_GEN.
5878         * graphite-dependences.c (graphite_legal_transform): Add time to
5879         TV_GRAPHITE_DATA_DEPS.
5880         (dependency_between_pbbs_p): Same.
5881         * timevar.def (TV_GRAPHITE_DATA_DEPS, TV_GRAPHITE_CODE_GEN): New.
5882
5883 2009-08-12  Andrey Belevantsev  <abel@ispras.ru>
5884
5885         PR rtl-optimization/41033
5886         * alias.c (nonoverlapping_component_refs_p): Punt when strict
5887         aliasing is disabled.
5888
5889 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
5890
5891         * config/mips/predicates.md (qi_mask_operand, hi_mask_operand,
5892         si_mask_operand, and_load_operand, low_bitmask_operand,
5893         and_reg_operand, and_operand): New predicates.
5894         * config/mips/constraints.md (Yb, Yh, Yw, Yz): New constraints.
5895         * config/mips/mips.c (and_operands_ok): New function.
5896         * config/mips/mips-protos.h (and_operands_ok): Declare it.
5897         * config/mips/mips.md (move_type): Add ext_ins and logical.
5898         (type): Handle them.
5899         (and<mode>3): Use and_reg_operand as the second operand's predicate.
5900         (*and<mode>3): Add alternatives for lbu, lhu, lwu, <d>ext and
5901         shift_shift.  Remove commutative constraint modifier.
5902         (*and<mode>3_mips16): Add alternatives for lbu, lhu, lwu and
5903         shift_shift.
5904         (*clear_upper32_dext): Remove define_insn_and_split.
5905         (*clear_upper32): Turn this define_insn_and_split ...
5906         (splitter for ANDing register with 0xffff_ffff): .. into this.
5907
5908 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
5909
5910         * combine.c (try_widen_shift_mode): Factor out code to check if an
5911         integer constant is a low-order bitmask from here ...
5912         * rtlanal.c (low_bitmask_len): ... to here.
5913         * rtl.h (low_bitmask_len): Declare.
5914
5915 2009-08-11  Uros Bizjak  <ubizjak@gmail.com>
5916
5917         PR target/8603
5918         * config/alpha/alpha.md (addsi3): Remove expander.
5919         (addsi3): Rename from *addsi3_internal insn pattern.
5920         (subsi3): Remove expander.
5921         (subsi3): Rename from *subsi3_internal insn pattern.
5922
5923 2009-08-11  Douglas B Rupp  <rupp@gnat.com>
5924
5925         * config/alpha/alpha.c (alpha_init_builtins): Nullify FWRITE and
5926         FWRITE_UNLOCKED.
5927
5928 2009-08-11  Vasiliy Fofanov  <fofanov@adacore.com>
5929             Eric Botcazou  <botcazou@adacore.com>
5930             Douglas B Rupp  <rupp@gnat.com>
5931
5932         * config/alpha/alpha.c (alpha_return_in_memory): On VMS, ensure
5933         that records that fit in 64 bits are returned by immediate value,
5934         as required by OpenVMS Calling Standard.
5935         (function_value): Adjust for above modification.
5936         (alpha_va_start) <TARGET_ABI_OPEN_VMS>: Use
5937         virtual_incoming_args_rtx as base object, not next_arg.
5938         * config/alpha/vms.h: (DEFAULT_PCC_STRUCT_RETURN): Define as 0.
5939
5940 2009-08-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
5941
5942         * reload.c (find_reloads_subreg_address): Check the original
5943         req_equiv_mem address to detect the case where an address is
5944         not valid in the outer mode.
5945
5946 2009-08-11  Richard Guenther  <rguenther@suse.de>
5947
5948         PR bootstrap/40788
5949         * builtins.c (gimplify_va_arg_expr): Do not call SET_EXPR_LOCATION.
5950
5951 2009-08-10  Douglas B Rupp  <rupp@gnat.com>
5952
5953         * config/alpha/vms.h (OPTIMIZATION_OPTIONS): Remove
5954         (OVERRIDE_OPTIONS): Incorporate removed OPTIMIZATION_OPTIONS.
5955
5956 2009-08-10  Olivier Hainque  <hainqueu@adacore.com>
5957             Douglas B Rupp  <rupp@gnat.com>
5958
5959         * config/alpha/alpha.c (alpha_sa_size): Force procedure type to
5960         PT_STACK when frame_pointer_needed on OpenVMS.
5961         (alpha_pv_save_size, alpha_using_fp): Remove.
5962         (alpha_vms_can_eliminate): New function. Support for CAN_ELIMINATE
5963         with proper processing for PT_NULL.
5964         (alpha_vms_initial_elimination_offset): New function. Support for
5965         INITIAL_ELIMINATION_OFFSET with proper processing for PT_NULL.
5966         (alpha_sa_size): Force procedure type to PT_STACK when
5967         frame_pointer_needed on OpenVMS.
5968         * config/alpha/alpha-protos.h (alpha_pv_save_size): Remove prototype.
5969         (alpha_using_fp): Likewise.
5970         (alpha_vms_can_eliminate): Add prototype.
5971         (alpha_vms_initial_elimination_offset): Likewise.
5972         * config/alpha/vms.h (CAN_ELIMINATE, INITIAL_ELIMINATION_OFFSET):
5973         Call alpha_vms_can_eliminate and alpha_vms_initial_elimination_offset.
5974
5975 2009-08-10  Eric Botcazou  <botcazou@adacore.com>
5976             Douglas B Rupp  <rupp@gnat.com>
5977
5978         * config/alpha/alpha.c (common_object_handler): New function.
5979         (vms_attribute_table): Declare a single attribute "common_object".
5980         (vms_output_aligned_decl_common): New global function.
5981         (SECTION_VMS_OVERLAY): Delete.
5982         (SECTION_VMS_GLOBAL): Likewise.
5983         (SECTION_VMS_INITIALIZE): Likewise.
5984         (vms_asm_named_section): Remove support for above flags.
5985         (vms_section_type_flags): Delete.
5986         (TARGET_SECTION_TYPE_FLAGS): Likewise.
5987         * config/alpha/alpha-protos.h (vms_output_aligned_decl_common): New.
5988         * config/alpha/vms.h (ASM_OUTPUT_ALIGNED_COMMON): Delete.
5989         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New macro.
5990
5991 2009-08-10  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
5992
5993         PR target/41015
5994         * longlong.h [__sh__] (udiv_qrnnd): Add T register to clobber list.
5995         (sub_ddmmss): Likewise.
5996
5997 2009-08-10  Andreas Tobler  <a.tobler@schweiz.org>
5998
5999         PR bootstrap/41018
6000         * config/rs6000/freebsd.h: Define SVR4_ASM_SPEC. Adjust copyright
6001         year.
6002
6003 2009-08-10  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
6004
6005         PR target/37053
6006         * reload1.c (reload_as_needed): Use cancel_changes to completely
6007         undo a failed replacement attempt.
6008
6009 2009-08-10  Richard Guenther  <rguenther@suse.de>
6010
6011         PR middle-end/41006
6012         * tree-ssa.c (useless_type_conversion_p_1): Fold into ...
6013         (useless_type_conversion_p): ... here.  Require pointer targets
6014         to be compatible.
6015
6016 2009-08-10  Dodji Seketeli  <dodji@redhat.com>
6017
6018         PR c++/40866
6019         * tree-inline.c (copy_statement_list): The resulting copy shouldn't
6020         loose the original type of the statement list.
6021
6022 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
6023
6024         * config/alpha/alpha.c: Include libfuncs.h
6025         (avms_asm_output_extern): New function.
6026         (alpha_init_libfuncs): Init some decc libfuncs.
6027         * config/alpha/alpha-protos.h (avms_asm_output_external): Declare.
6028         * config/alpha/vms.h (ASM_OUTPUT_EXTERNAL): Define.
6029         (DO_CRTL_NAMES): Define.
6030         (LIB_SPEC): Remove.
6031         * config/alpha/vms64.h: (POINTERS_EXTEND_UNSIGNED): Remove undef.
6032         (LONG_TYPE_SIZE): Define.
6033         (TARGET_OS_CPP_BUILTINS): Define with __LONG_POINTERS=1
6034         (SUBTARGET_SWITCHES): Define malloc64 switch.
6035         (TARGET_DEFAULT): Default MASK_MALLOC64 set.
6036         (MASK_RETURN_ADDR): Define.
6037         doc/invoke.texi (mmalloc64): Document switch.
6038
6039 2009-08-09  Olivier Hainque  <hainque@adacore.com>
6040             Douglas B Rupp  <rupp@gnat.com>
6041
6042         * config/alpha/alpha.c (struct machine_function): New flag for VMS,
6043         uses_condition_handler.
6044         (alpha_expand_builtin_establish_vms_condition_handler): New expander.
6045         (alpha_expand_builtin_revert_vms_condition_handler): New expander.
6046         (enum alpha_builtin): New ALPHA_BUILTIN_REVERT_VMS_CONDITION_HANDLER
6047         and ALPHA_BUILTIN_ESTABLISH_VMS_CONDITION_HANDLER values.
6048         (code_for_builtin): New insn codes for the new alpha_builtins.
6049         (alpha_init_builtins): Register the new functions as BUILT_IN_MD.
6050         (alpha_sa_size): Account for uses_condition_handler.
6051         (alpha_expand_prologue): Likewise.
6052         (alpha_start_function): Likewise.
6053         (alpha_expand_epilogue): Likewise.
6054         * config/alpha/alpha-protos.h: Prototype the new alpha.c builtin
6055         establish/revert expanders.
6056         * config/alpha/alpha.h (DWARF_FRAME_REGNUM): Define.
6057         * config/alpha/alpha.md (builtin_establish_vms_condition_handler):
6058         New expander, resorting to the alpha.c associated function.
6059         (builtin_revert_vms_condition_handler): Likewise.
6060         * config/alpha/vms-gcc_shell_handler.c: New file. Implements
6061         __gcc_shell_handler, the static VMS condition handler used as
6062         an indirection wrapper to the current dynamically established
6063         handler.
6064         * config/alpha/vms-unwind.h: Complete rewrite.
6065         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Add vms-gcc_shell_handler.c
6066         * config/alpha/vms.h (MD_UNWIND_SUPPORT):
6067
6068 2009-08-09  Eric Botcazou  <botcazou@adacore.com>
6069             Douglas B Rupp  <rupp@gnat.com>
6070
6071         * config/alpha/alpha.c (alpha_links): Add 'target' field.
6072         (alpha_need_linkage): Handle aliases.  Return function symbol.
6073         (alpha_use_linkage): Rename 'linkage' argument to 'func'.
6074         Use ultimate alias target for the linkage name.
6075         * config/alpha/alpha.md (movmemdi): Use the symbol returned
6076         by alpha_need_linkage for the function symbol.
6077         (setmemdi): Likewise.
6078
6079 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
6080
6081         * config/alpha/alpha.c (TARGET_ASM_UNALIGNED_*_OP): Define if on VMS.
6082         * config/alpha/vms.h (OBJECT_FORMAT_ELF): Define.
6083         (ASM_WEAKEN_LABEL): Define.
6084         (CRT_CALL_STATIC_FUNCTION): Define.
6085         (STARTFILE_SPEC): Add crtbegin.o crtbeginS.o.
6086         (ENDFILE_SPEC): Define.
6087         (INIT_SECTION_ASM_OP): Define.
6088         * config/alpha/vms-dwarf2eh.asm (__EH_FRAME_BEGIN__): Remove.
6089         * config/alpha/t-vms (EXTRA_PARTS): Add crtbegin.o crtbeginS.o
6090         crtend.o crtendS.o.
6091         (MULTILIB_OSDIRNAMES): Define.
6092         (shlib_version): Define.
6093         (SHLIB_EXT): Define.
6094         (SHLIB_OBJS): Define.
6095         (SHLIB_NAME): Define.
6096         (SHLIB_MULTILIB): Define.
6097         (SHLIB_INSTALL): Define.
6098         (SHLIB_SYMVEC): Define.
6099         (SHLIB_SYMVECX2): Define.
6100         (SHLIB_LINK): Define.
6101
6102 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
6103
6104         * config/alpha/alpha.c (alpha_initialize_trampoline):
6105         Initialize VMS trampoline IAW ABI for bounded procedure calls.
6106         (alpha_start_function): Emit transfer address on nested functions
6107         for VMS trampoline call.
6108         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Remove vms_tramp.asm
6109         since no longer used.
6110         * config/alpha/vms-tramp.asm: Remove.
6111         * config/alpha/vms.h (TRAMPOLINE_TEMPLATE): Leave undefined
6112         since now only data initialized at runtime.
6113
6114 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
6115
6116         * config/alpha/vms.h (HANDLE_SYSV_PRAGMA): Define.
6117         (LINK_GCC_C_SEQUENCE_SPEC): Define.
6118         (MD_EXEC_PREFIX): Remove, no longer used.
6119         (MD_STARTFILE_PREFIX): Likewise.
6120         (INCLUDE_DEFAULTS): Likewise.
6121         * config/alpha/t-vms:
6122         (vms-dwarf2.o, vms-dwarf2eh.o): Use GCC_FOR_TARGET to compile.
6123
6124 2009-08-09  Richard Guenther  <rguenther@suse.de>
6125
6126         PR tree-optimization/41016
6127         * tree-ssa-ifcombine.c (get_name_for_bit_test): Fix tuplification bug.
6128         (operand_precision): Remove.
6129         (integral_operand_p): Likewise.
6130         (recognize_single_bit_test): Adjust.
6131
6132 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
6133
6134         * c-common.c (c_fully_fold_internal): Issue a warning if a binary
6135         operation overflows.  Likewise non-cast unary arithmetic.
6136         If one arm of a conditional expression is always taken,
6137         inhibit evaluation warnings for the other arm.  Likewise inhibit
6138         evaluation warnings for the second && or || operand if the first
6139         operand is enough to determine the result.
6140         * c-typeck.c (build_conditional_expr): Apply the same inhibition
6141         rules here.
6142         (build_binary_op): Prevent duplicate evaluation warnings.
6143
6144 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
6145
6146         * tree-out-of-ssa.c (insert_value_copy_on_edge): If the source
6147         and destination have different modes, Use promote_mode to
6148         determine the signedness of the conversion.  Assert that the
6149         promoted source mode matches the destination mode.  Don't pass
6150         the destination and destination mode to expand_expr if the source
6151         mode is different.  Simplify conversion logic.
6152
6153 2009-08-09  Ira Rosen  <irar@il.ibm.com>
6154
6155         PR tree-optimization/41008
6156         * tree-vect-loop.c (vect_is_simple_reduction): Get operands
6157         from condition only in case it's a comparison. Adjust checks.
6158
6159 2009-08-09  Bernd Schmidt  <bernd.schmidt@analog.com>
6160
6161         * tree-dfa.c (renumber_gimple_stmt_uids_in_blocks): New function.
6162         * tree-flow.h (renumber_gimple_stmt_uids_in_blocks): Declare it.
6163         * tree-ssa-loop-ivopts.c (comp_cost): Make COST an integer.
6164         (enum iv_position): Add IP_AFTER_USE and IP_BEFORE_USE.
6165         (dump_cand): Handle them.
6166         (struct iv_cand): New members COST_STEP and AINC_USE.
6167         (stmt_after_increment): Likewise.
6168         (stmt_after_inc_pos): Renamed from stmt_after_ip_original_pos.  All
6169         callers changed.  Use gimple_uid comparison instead of scanning.
6170         (add_candidate_1): When looking for identical candidates, take
6171         AINC_USE into account.  Set it for new candidates.
6172         (force_expr_to_var_cost): Cast target_spill_cost to int.
6173         (get_address_cost): New arguments STMT_AFTER_INC and MAY_AUTOINC.
6174         All callers changed.  Check for availability of autoinc addressing
6175         modes, both in general for a given mode, and in the specific use case.
6176         (get_computation_cost_at): New argument CAN_AUTOINC.  All callers
6177         changed.
6178         (get_computation_cost): Likewise.
6179         (autoinc_possible_for_pair, set_autoinc_for_original_candidates,
6180         add_autoinc_candidates): New static functions.
6181         (add_candidate): Call add_autoinc_candidates for candidates based on
6182         a USE_ADDRESS use.
6183         (find_iv_candidates): Call set_autoinc_for_original_candidates.
6184         (determine_use_iv_cost_address): If we have an autoinc candidate at
6185         the matching use, verify autoinc is possible and subtract the cost
6186         of the candidate's step from the cost.
6187         (determine_iv_cost): Record the cost of the increment in the COST_STEP
6188         member of the candidate.
6189         (tree_ssa_iv_optimize_loop): Swap the calls to determine_iv_costs and
6190         determine_use_iv_costs.  Call renumber_gimple_stmt_uids_in_blocks.
6191
6192 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
6193
6194         * config.build (ia64-hp-*vms*): New target.
6195         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
6196         with ia64-hp-*vms*.
6197         * config.gcc (ia64-hp-*vms*): New target.
6198         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
6199         with ia64-hp-*vms*.
6200         * config.host (ia64-hp-*vms*): New target.
6201         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
6202         with ia64-hp-*vms*.
6203
6204 2009-08-08  Richard Guenther  <rguenther@suse.de>
6205
6206         PR tree-optimization/40991
6207         * tree-ssa-pre.c (eliminate): Delay purging EH edges.
6208
6209 2009-08-08  Richard Sandiford  <rdsandiford@googlemail.com>
6210
6211         * combine.c (gen_lowpart_or_truncate): Exclude CONST_INTs from
6212         mode check.  Do truncations in an integer mode.
6213         (force_to_mode): Handle subregs for all mode types.  Only do
6214         arithmetic simplifications on integer modes.
6215
6216 2009-08-07  Richard Guenther  <rguenther@suse.de>
6217
6218         PR tree-optimization/40999
6219         * tree-ssa-ccp.c (get_symbol_constant_value): Handle CONST_DECLs.
6220         (maybe_fold_reference): Lookup constant initializers.
6221         (fold_gimple_assign): Likewise.
6222
6223 2009-08-07  Richard Guenther  <rguenther@suse.de>
6224
6225         * tree-ssa.c (useless_type_conversion_p_1): Only for types
6226         that require structural equality defer to the langhook.
6227
6228 2009-08-07  Martin Jambor  <mjambor@suse.cz>
6229
6230         * ipa-prop.h (enum jump_func_type): New value IPA_JF_ANCESTOR, changed
6231         comments.
6232         (struct ipa_pass_through_data): New type.
6233         (struct ipa_ancestor_jf_data): New type.
6234         (union jump_func_value): Removed field formal_id, added fields
6235         pass_through and ancestor.
6236         (struct ipa_param_call_note): Changed type of formal_id to int from
6237         unsigned.
6238         * ipa-prop.c (ipa_print_node_jump_functions): Print pass through with
6239         operations jump functions and ancestor jump functions.
6240         (compute_complex_pass_through): New function.
6241         (compute_scalar_jump_functions): Call compute_complex_pass_through,
6242         reflect changes in the jump function strucutre.
6243         (update_jump_functions_after_inlining): Ignore complex pass-through
6244         and ancestor jump functions.
6245         * ipa-cp.c (ipcp_lattice_from_jfunc): Added support for ancestor and
6246         polynomial pass-through with operation jump functions.
6247
6248 2009-08-07  Jakub Jelinek  <jakub@redhat.com>
6249
6250         * dwarf2out.c (output_fde): When doing hot/cold partitioning, use
6251         fde->dw_fde_begin as begin label instead of hot/cold label.
6252         Use LLSDAC label instead of LLSDA for second section lsda.
6253         (dwarf2out_do_cfi_startproc): Add SECOND argument.  Use LLSDAC
6254         label instead of LLSDA if it is true.
6255         (dwarf2out_begin_prologue, dwarf2out_switch_text_section): Adjust
6256         callers.
6257         * except.c (add_call_site, dw2_size_of_call_site_table): Add
6258         SECTION argument.  Use it as index into crtl->eh.call_site_record
6259         array.
6260         (dw2_output_call_site_table): Likewise.  Add CS_FORMAT argument,
6261         use it to determine how to print table entries instead of using
6262         #ifdef HAVE_AS_LEB128.  For SECTION > 0 use hot resp. cold
6263         label instead of normal begin label as base.
6264         (sjlj_assign_call_site_values): Adjust add_call_site caller.
6265         (convert_to_eh_region_ranges): When doing hot/cold partitioning,
6266         ensure no EH range spans between sections and that landing pads
6267         are always in the corresponding section.
6268         (sjlj_size_of_call_site_table, sjlj_output_call_site_table): Adjust
6269         for crtl->eh.call_site_record being an array rather than scalar.
6270         (output_one_function_exception_table): New function, copied
6271         from output_function_exception_table.  Adjust
6272         dw2_size_of_call_site_table, dw2_output_call_site_table
6273         callers.  For SECOND section use *C suffixed labels.
6274         (output_function_exception_table): Call
6275         output_one_function_exception_table and, when doing hot/cold
6276         partitioning, also another time for the second section.
6277         * opts.c: Include except.h.
6278         (decode_options): Allow -freorder-blocks-and-partition with
6279         exceptions, unless SJLJ or TARGET_UNWIND_INFO.
6280         * Makefile.in (opts.o): Depend on $(EXCEPT_H).
6281         * function.h (struct rtl_eh): Change call_site_record from
6282         scalar into array of 2 elements.
6283
6284 2009-08-07  Martin Jambor  <mjambor@suse.cz>
6285
6286         * ipa-prop.c (count_formal_params_1): New function.
6287         (ipa_get_vector_of_formal_parms): New function.
6288         (get_vector_of_formal_parm_types): New function.
6289         (ipa_modify_formal_parameters): New function.
6290         (ipa_modify_call_arguments): New function.
6291         (index_in_adjustments_multiple_times_p): New function.
6292         (ipa_combine_adjustments): New function.
6293         (ipa_dump_param_adjustments): New function.
6294         * ipa-prop.h (struct ipa_parm_adjustment): New type.
6295         (ipa_get_vector_of_formal_parms): Declare.
6296         (ipa_modify_formal_parameters): Declare.
6297         (ipa_modify_call_arguments): Declare.
6298         (ipa_combine_adjustments): Declare.
6299         (ipa_dump_param_adjustments): Declare.
6300         (build_ref_for_offset): Declare.
6301         * Makefile.in (tree-sra.o): Add ipa-prop.h to dependencies.
6302         * tree-sra.c: Include ipa-prop.c.
6303         (build_ref_for_offset): Make public.
6304
6305 2009-08-06  Neil Vachharajani  <nvachhar@gmail.com>
6306
6307         * value-prof.c (init_pid_map): Replace xmalloc with XCNEWVEC.
6308
6309 2009-08-06  Thomas Schwinge  <tschwinge@gnu.org>
6310
6311         * gcc/doc/extend.texi (__builtin_extract_return_address)
6312         (__builtin_frob_return_address): Document.
6313
6314 2009-08-06  Paul Brook  <paul@codesourcery.com>
6315
6316         * config/arm/lib1funcs.asm (ARM_DIV_BODY): Add Thumb-2 implementation.
6317         (udivsi3, aeabi_uidivmod, divsi3, aeabi_idivmod): Only use Thumb-1
6318         implementation on ARMv6-M.
6319
6320 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
6321
6322         * doc/extend.texi (pcs): Document new attribute for ARM.
6323
6324 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
6325
6326         * arm.c (pcs_attribute_args): Comment out unsupported attribute
6327         variants.
6328
6329 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
6330
6331         * arm.c (arm_handle_pcs_attribute): Pass the entire name object to
6332         warning ().
6333
6334 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
6335
6336         * arm.c (arm_handle_pcs_attribute): Use %qE in warning.
6337
6338 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
6339
6340         Merge ARM/hard_vfp_branch to trunk.
6341
6342         2009-08-04  Richard Earnshaw  <rearnsha@arm.com>
6343
6344         * arm.c (libcall_eq): New function.
6345         (libcall_hash): New function.
6346         (add_libcall): New function.
6347         (arm_libcall_uses_aapcs_base): New function.
6348         (arm_libcall_value): Use arm_libcall_uses_aapcs_base to check for
6349         libcalls using the base PCS.
6350         (arm_init_cumulative_args): Likewise.
6351
6352         2009-07-20  Joseph Myers  <joseph@codesourcery.com>
6353
6354         * config/arm/arm.c (arm_libcall_value, arm_init_cumulative_args):
6355         Use base ABI for conversion libfuncs between HFmode and SFmode.
6356
6357         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
6358
6359         * config/arm/arm.c (aapcs_vfp_sub_candidate): Use V2SImode and
6360         V4SImode as representatives of all 64-bit and 128-bit vector
6361         types.  Allow vector types without vector modes.
6362         (aapcs_vfp_is_call_or_return_candidate): Handle vector types
6363         without vector modes like BLKmode.
6364         (aapcs_vfp_allocate): Handle TImode for non-TARGET_NEON like
6365         BLKmode.  Avoid unsupported vector modes or TImode moves for
6366         non-TARGET_NEON.
6367         (aapcs_vfp_allocate_return_reg): Likewise.
6368         (arm_vector_mode_supported_p): Only support V2SImode, V4HImode and
6369         V8QImode if TARGET_NEON || TARGET_IWMMXT.
6370
6371         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
6372
6373         * config/arm/arm.c (arm_handle_pcs_attribute): New.
6374         (arm_get_pcs_model): Pass attribute arguments to
6375         arm_pcs_from_attribute.
6376         (arm_init_cumulative_args): Use base AAPCS for conversions from
6377         floating-point types to DImode.
6378         (arm_attribute_table): Add pcs attribute.
6379         (arm_handle_pcs_attribute): New.
6380         * config/arm/bpabi.h (DECLARE_LIBRARY_RENAMES): When renaming
6381         conversions from floating-point types to DImode, also declare them
6382         to use base AAPCS and declare functions they call to use base
6383         AAPCS and their RTABI names.
6384
6385         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
6386
6387         * doc/invoke.texi (-mfloat-abi=@var{name}): Remove statement about
6388         -mfloat-abi=hard not being supported for VFP.
6389
6390         2009-05-11  Kazu Hirata  <kazu@codesourcery.com>
6391
6392         * config/sparc/sparc.c (sparc_emit_float_lib_cmp): Pass a libcall
6393         SYMBOL_REF to hard_libcall_value.
6394
6395         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
6396             Richard Earnshaw  <rearnsha@arm.com>
6397
6398         * config/arm/arm.c (aapcs_layout_arg): Once a co-processor argument
6399         has been put on the stack, all remaining co-processory arguments for
6400         that co-processor also go on the stack.
6401
6402         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
6403
6404         * config/arm/arm.c (arm_return_in_memory): Handle returning
6405         vectors of suitable size in registers also for AAPCS case.
6406
6407         2009-01-13  Richard Earnshaw <rearnsha@arm.com>
6408
6409         * doc/tm.texi (TARGET_LIBCALL_VALUE): Add missing end statement.
6410
6411         2008-12-09  Richard Earnshaw <rearnsha@arm.com>
6412
6413         ARM Hard-VFP calling convention
6414         * target-def.h (TARGET_LIBCALL_VALUE): New hook.
6415         * target.h (gcc_target): Add libcall_value to table of call hooks.
6416         * targhooks.h (default_libcall_value): Default implementation.
6417         * targhooks.c (default_libcall_value): Likewise.
6418         * doc/tm.texi (TARGET_LIBCALL_VALUE): Document it.
6419         * optabs.c (expand_unop): Use it.
6420         * expr.h (hard_libcall_value): Pass the function RTX through.
6421         * calls.c (emit_library_call_value_1): Update call to
6422         hard_libcall_value.
6423         * explow.c (hard_libcall_value): Use new target hook.
6424         * testsuite/lib/target-supports.exp
6425         (check_effective_target_arm_hard_vfp_ok): New hook.
6426         (check_effective_target_arm_neon_ok): Improve test for neon
6427         availability.
6428         * testsuite/gcc.target/arm/eabi1.c: Only run test in base variant.
6429         * config/arm/arm.c: Include cgraph.h
6430         (TARGET_FUNCTION_VALUE): Override default hook.
6431         (arm_pcs_default): New variable.
6432         (arm_override_options): Don't fault hard calling convention with VFP.
6433         Add support for AAPCS variants.
6434         (arm_function_value): Make static.  Handle AAPCS variants.
6435         (arm_libcall_value): New function.
6436         (arm_apply_result_size): Handle VFP registers in results.
6437         (arm_return_in_memory): Rework all AAPCS variants; handle hard-vfp
6438         conventions.
6439         (pcs_attribute_args): New variable.
6440         (arm_pcs_from_attribute): New function.
6441         (arm_get_pcs_model): New function.
6442         (aapcs_vfp_cum_init): New function.
6443         (aapcs_vfp_sub_candidate): New function.
6444         (aapcs_vfp_is_return_candidate): New function.
6445         (aapcs_vfp_is_call_candidate): New function.
6446         (aapcs_vfp_allocate): New function.
6447         (aapcs_vfp_allocate_return_reg): New function.
6448         (aapcs_vfp_advance): New function.
6449         (aapcs_cp_arg_layout): New variable.
6450         (aapcs_select_call_coproc): New function.
6451         (aapcs_select_return_coproc): New function.
6452         (aapcs_allocate_return_reg): New function.
6453         (aapcs_libcall_value): New function.
6454         (aapcs_layout_arg): New function.
6455         (arm_init_cumulative_args): Initialize AAPCS args data.
6456         (arm_function_arg): Handle AAPCS variants using new interface.
6457         (arm_arg_parital_bytes): Likewise.
6458         (arm_function_arg_advance): New function.
6459         (arm_function_ok_for_sibcall): Ensure that sibling calls agree on
6460         calling conventions.
6461         (arm_setup_incoming_varargs): Handle new AAPCS args data.
6462         * arm.h (NUM_VFP_ARG_REGS): Define.
6463         (LIBCALL_VALUE): Update.
6464         (FUNCTION_VALUE): Delete.
6465         (FUNCTION_VALUE_REGNO_P): Add VFP regs.
6466         (arm_pcs): New enum.
6467         (CUMULATIVE_ARGS): New data to support AAPCS argument marshalling.
6468         (FUNCTION_ARG_ADVANCE): Call arm_function_arg_advance.
6469         (FUNCTION_ARG_REGNO_P): Add VFP regs.
6470         * arm-protos.h (arm_function_arg_advance): Add.
6471         (aapcs_libcall_value): Add.
6472         (arm_function_value): Delete.
6473
6474 2009-08-06  Uros Bizjak  <ubizjak@gmail.com>
6475             H.J. Lu  <hongjiu.lu@intel.com>
6476
6477         PR target/40957
6478         * config/i386/i386.c (standard_sse_mode_p): Remove.
6479         (standard_sse_constant_p): Return 2 for integer mode
6480         vector_all_ones_operand when SSE2 is enabled.
6481         (standard_sse_constant_opcode)<case 2>: Always return [v]pcmpeqd.
6482         (ix86_expand_vector_move): Do not check for negative values from
6483         standard_sse_constant_p.
6484
6485 2009-08-06  Richard Guenther  <rguenther@suse.de>
6486
6487         * tree-ssa.c (useless_type_conversion_p_1): Make function and
6488         array type comparisons frontend independent.
6489         * Makefile.in (tree-ssa.o): Add $(TARGET_H) dependency.
6490         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Always fill
6491         out array reference lower bound and element size operands.
6492         (ao_ref_init_from_vn_reference): Properly compute the offset
6493         for ARRAY_RANGE_REF.
6494         (vn_reference_fold_indirect): Fill out array reference lower
6495         bound and element size operands.
6496         * tree-ssa-pre.c (phi_translate_1): Fail if we have to translate
6497         a non gimple valued reference operand which can happen for
6498         array reference lower bound or element size.
6499         (create_component_ref_by_pieces_1): Properly generate the
6500         element size operand for array references.
6501
6502 2009-08-06  Richard Guenther  <rguenther@suse.de>
6503
6504         PR tree-optimization/40964
6505         * tree.c (iterative_hash_host_wide_int): Export.
6506         * tree.h (iterative_hash_host_wide_int): Declare.
6507         * tree-ssa-structalias.c (heapvar_map): New struct.
6508         (heapvar_map_eq): New function.
6509         (heapvar_map_hash): Likewise.
6510         (heapvar_lookup): Adjust.
6511         (heapvar_insert): Likewise.
6512         (make_constraint_from_heapvar): Allow multiple heap variables
6513         per decl at different offsets.
6514         (init_alias_heapvars): Adjust.
6515
6516 2009-08-04  David Daney  <ddaney@caviumnetworks.com>
6517
6518         * config/mips/mips.h (TARGET_SYNC_AFTER_SC): New macro.
6519         * mips_output_sync_loop (mips_output_sync_loop): Only emit
6520         trailing sync if TARGET_SYNC_AFTER_SC.
6521
6522 2009-08-05  David Daney  <ddaney@caviumnetworks.com>
6523
6524         * gcc/config/mips/sync.md (sync_compare_and_swap<mode>,
6525         compare_and_swap_12, sync_add<mode>, sync_<optab>_12,
6526         sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12,
6527         sync_old_nand_12, sync_new_nand_12, sync_sub<mode>,
6528         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
6529         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
6530         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
6531         sync_new_nand<mode>, sync_lock_test_and_set<mode>,
6532         test_and_set_12): Rewrite calls to mips_output_sync_loop.
6533         * gcc/config/mips/mips-protos.h (mips_output_sync_loop): Make
6534         the prototype declaration match the definition.
6535         * gcc/config/mips/mips.c (mips_output_sync_loop):  Emit sync
6536         instructions explicitly.  Add barrier_before and operands
6537         parameters.
6538         * gcc/config/mips/mips.h (MIPS_COMPARE_AND_SWAP,
6539         MIPS_COMPARE_AND_SWAP_12, MIPS_SYNC_OP, MIPS_SYNC_OP_12,
6540         MIPS_SYNC_OLD_OP_12, MIPS_SYNC_NEW_OP_12, MIPS_SYNC_OLD_OP,
6541         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
6542         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE,
6543         MIPS_SYNC_EXCHANGE_12): Remove sync instructions.
6544
6545 2009-08-05  Andrew Pinski  <pinskia@gmail.com>
6546
6547         * tree-ssa-alias.c: Fix intervals to use [) syntax.
6548
6549 2009-08-05  Uros Bizjak  <ubizjak@gmail.com>
6550             Mikulas Patocka  <mikulas@artax.karlin.mff.cuni.cz>
6551
6552         PR target/40906
6553         * config/i386/i386.c (ix86_split_long_move): Fix push of multi-part
6554         source operand.
6555
6556 2009-08-05  Jakub Jelinek  <jakub@redhat.com>
6557
6558         PR rtl-optimization/40924
6559         * dse.c (canon_address): Before calling cselib_expand_value_rtx
6560         make sure canon_rtx (mem_address) isn't simpler than
6561         canon_rtx (expanded_mem_address).
6562
6563 2009-08-05  Li Feng  <nemokingdom@gmail.com>
6564
6565         * graphite-sese-to-poly.c (build_pbb_drs): Remove build alias set
6566         for each poly_bb_p.
6567         (build_scop_drs): Build alias set for each SCoP.
6568
6569 2009-08-04  Sandra Loosemore  <sandra@codesourcery.com>
6570
6571         * doc/invoke.texi (MIPS Options): Document new 1004K -march options.
6572         * config/mips/mips.c (mips_cpu_info_table): Add 1004K cores.
6573         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Add pattern for 1004K.
6574         (MIPS_ARCH_FLOAT_SPEC): Likewise.
6575         (BASE_DRIVER_SELF_SPECS): Likewise.
6576
6577 2009-08-04  Andrew Pinski  <pinskia@gmail.com>
6578
6579         * tree-ssa-alias.c: Fix some comment typos.
6580
6581 2009-08-04  Kaz Kojima  <kkojima@gcc.gnu.org>
6582
6583         * config/sh/linux-atomic.asm (ATOMIC_BOOL_COMPARE_AND_SWAP,
6584         ATOMIC_OP_AND_FETCH, ATOMIC_COMBOP_AND_FETCH): Define.
6585
6586 2009-08-03  Janis Johnson  <janis187@us.ibm.com>
6587
6588         PR c/39902
6589         * simplify-rtx.c (simplify_binary_operation_1): Disable
6590         simplifications for decimal float operations.
6591
6592 2009-08-03  Jakub Jelinek  <jakub@redhat.com>
6593
6594         PR middle-end/40943
6595         * tree-ssa.c (warn_uninitialized_var): Even on LHS warn for
6596         operand of INDIRECT_REF.
6597
6598 2009-08-03  Uros Bizjak  <ubizjak@gmail.com>
6599
6600         * config/alpha/alpha.c (alpha_legitimate_constant_p): Reject CONST
6601         constants referencing TLS symbols.
6602
6603 2009-08-03  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
6604
6605         * config/sh/linux-atomic.asm (ATOMIC_COMPARE_AND_SWAP): Rename
6606         __sync_compare_and_swap_* to __sync_val_compare_and_swap_*.
6607
6608 2009-08-03  Richard Guenther  <rguenther@suse.de>
6609
6610         * tree.c (make_vector_type): Build a main variant first,
6611         get the canonical one and then build the variant.
6612         * tree-ssa.c (useless_type_conversion_p_1): Handle
6613         fixed-point types.
6614         (useless_type_conversion_p): Conversions to pointers to
6615         incomplete record types are useless.
6616
6617 2009-08-03  Richard Guenther  <rguenther@suse.de>
6618
6619         * tree-cfg.c (pass_warn_unused_result): Mark name that no dump
6620         file will be created.
6621         * omp-low.c (pass_diagnose_omp_blocks): Likewise.
6622         * toplev.c (compile_file): Adjust comment.
6623
6624 2009-08-03  Kaz Kojima  <kkojima@gcc.gnu.org>
6625
6626         * config/sh/sh-protos.h (sh_promote_function_mode): Remove.
6627         * config/sh/sh.c (sh_promote_function_mode): Wrap long lines.
6628         (TARGET_PROMOTE_FUNCTION_MODE): Define.
6629         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
6630         (sh_promote_function_mode): Fix typo.
6631
6632 2009-08-03  Andreas Krebbel  <krebbel1@de.ibm.com>
6633
6634         * explow.c (promote_mode): Mark TYPE and PUNSIGNEDP as possibly unused.
6635
6636 2009-08-02  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6637
6638         * pa.c (pa_promote_function_mode): Remove ATTRIBUTE_UNUSED from
6639         declaration arguments.
6640
6641 2009-08-02  Uros Bizjak  <ubizjak@gmail.com>
6642
6643         * config/i386/i386.c (ix86_expand_fp_compare): Use const0_rtx instead
6644         of GEN_INT (0x00) and const1_rtx instead of GEN_INT (0x01).
6645         (ix86_split_ashl): Ditto.
6646         (ix86_expand_vector_init_one_nonzero): Ditto.
6647         (ix86_expand_vector_set): Ditto.
6648         (ix86_expand_reduc_v4sf): Ditto.
6649
6650 2009-08-02  Paolo Bonzini  <bonzini@gnu.org>
6651
6652         * explow.c (promote_function_mode): Remove assert.
6653         * config/sh/sh.c (sh_promote_function_mode): Declare.
6654
6655 2009-08-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6656
6657         * config/pa/pa.c (pa_promote_function_mode): Declare.
6658         Change to static.  Fix promote_mode call.
6659
6660         * gthr-dce.h (CONST_CAST2): Define if not defined.
6661         (__gthread_setspecific): Use CONST_CAST2 to fix warning.
6662
6663         * config.gcc (hppa[12]*-*-hpux10*): Add stdint support.
6664
6665 2009-08-01  Paolo Bonzini  <bonzini@gnu.org>
6666
6667         * expr.c (store_constructor): Use promote_decl_mode.  Remove
6668         now write-only variable unsignedp.
6669         (expand_expr_real_1): Use promote_decl_mode.
6670         * expr.h (promote_function_mode, promote_decl_mode): New.
6671         (promote_mode): Remove last argument.
6672         * function.c (assign_temp): Drop last argument of promote_mode.
6673         (assign_parm_find_data_types): Use promote_function_mode.
6674         (assign_parm_setup_reg): Likewise.
6675         (expand_function_end): Use promote_function_mode.
6676         * calls.c (initialize_argument_information): Use promote_function_mode.
6677         (precompute_arguments): Use promote_mode instead of checking if
6678         only PROMOTE_FUNCTION_MODE is defined.
6679         (expand_call): When making sibcall decisions, use promote_function_mode.
6680         Below, remove an if for targetm.calls.promote_function_return and
6681         and use promote_function_mode.
6682         (emit_library_call_value_1): Use promote_function_mode, fix bug
6683         where promote_mode was passed FOR_CALL == 0 for a return value in an
6684         assertion.
6685         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
6686         * explow.c (promote_function_mode, promote_decl_mode): New.
6687         (promote_mode): Keep only the FOR_CALL == 0 case.
6688         * combine.c (setup_incoming_promotion): Remove test of
6689         promote_function_args.  Use promote_function_mode.
6690         * stmt.c (expand_value_return): Use promote_decl_mode.
6691         (expand_decl): Use promote_decl_mode.
6692
6693         * expr.c (store_constructor): Use promote_decl_mode.  Remove
6694         now write-only variable unsignedp.
6695         (expand_expr_real_1): Use promote_decl_mode.
6696         * expr.h (promote_function_mode, promote_decl_mode): New.
6697         (promote_mode): Remove last argument.
6698         * function.c (assign_temp): Drop last argument of promote_mode.
6699         (assign_parm_find_data_types): Use promote_function_mode.
6700         (assign_parm_setup_reg): Likewise.
6701         (expand_function_end): Use promote_function_mode.
6702         * calls.c (initialize_argument_information): Use promote_function_mode.
6703         (precompute_arguments): Use promote_mode instead of checking if
6704         only PROMOTE_FUNCTION_MODE is defined.
6705         (expand_call): When making sibcall decisions, use promote_function_mode.
6706         Below, remove an if for targetm.calls.promote_function_return and
6707         and use promote_function_mode.
6708         (emit_library_call_value_1): Use promote_function_mode, fix bug
6709         where promote_mode was passed FOR_CALL == 0 for a return value in an
6710         assertion.
6711         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
6712         * explow.c (promote_function_mode, promote_decl_mode): New.
6713         (promote_mode): Keep only the FOR_CALL == 0 case.
6714         * combine.c (setup_incoming_promotion): Remove test of
6715         promote_function_args.  Use promote_function_mode.
6716         * stmt.c (expand_value_return): Use promote_decl_mode.
6717         (expand_decl): Use promote_decl_mode.
6718
6719         * explow.c (promote_function_mode): Just call the target hook.
6720         * targhooks.c (default_promote_function_mode,
6721         default_promote_function_mode_always_promote): New.
6722         * targhooks.h (default_promote_function_mode,
6723         default_promote_function_mode_always_promote): Declare.
6724         * target.h (promote_function_args, promote_function_return): Remove.
6725         (promote_function_mode): New.
6726         * target-def.h (TARGET_PROMOTE_FUNCTION_ARGS,
6727         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
6728         (TARGET_PROMOTE_FUNCTION_MODE): New.
6729         (TARGET_CALLS): Adjust.
6730         * system.h (TARGET_PROMOTE_FUNCTION_ARGS,
6731         TARGET_PROMOTE_FUNCTION_RETURN, PROMOTE_FUNCTION_MODE): Poison.
6732
6733         * config/s390/s390.h (PROMOTE_FUNCTION_MODE): Move...
6734         * config/s390/s390.c (s390_promote_function_mode): ... here,
6735         with pointer handling.
6736         (TARGET_PROMOTE_FUNCTION_MODE): Define.
6737         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
6738
6739         * config/sparc/sparc.h (PROMOTE_FUNCTION_MODE): Move...
6740         * config/sparc/sparc.c (sparc_promote_function_mode): ... here,
6741         with pointer handling.
6742         (TARGET_PROMOTE_FUNCTION_MODE): Define.
6743         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
6744
6745         * config/sh/sh-protos.h (sh_promote_function_mode): New.
6746         * config/sh/sh.c (sh_promote_function_mode): New.
6747         (TARGET_PROMOTE_FUNCTION_MODE): Define.
6748         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
6749
6750         * config/cris/cris.h (PROMOTE_FUNCTION_MODE): Move...
6751         * config/cris/cris.c (cris_promote_function_mode): ... here.
6752         (TARGET_PROMOTE_FUNCTION_MODE): Define.
6753         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
6754
6755         * config/mmix/mmix.h (PROMOTE_FUNCTION_MODE): Move...
6756         * config/mmix/mmix.c (mmix_promote_function_mode): ... here.
6757         (TARGET_PROMOTE_FUNCTION_MODE): Define.
6758         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
6759
6760         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Move...
6761         * config/arm/arm.c (arm_promote_function_mode): ... here, without
6762         complex type handling.
6763         (TARGET_PROMOTE_FUNCTION_MODE): Define.
6764         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
6765
6766         * config/pa/pa.c (pa_promote_function_mode): New.
6767         (TARGET_PROMOTE_FUNCTION_MODE): Define.
6768         (TARGET_PROMOTE_FUNCTION_RETURN): Remove.
6769
6770         * config/alpha/alpha.c (TARGET_PROMOTE_FUNCTION_ARGS,
6771         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
6772         (TARGET_PROMOTE_FUNCTION_MODE): Define equivalently.
6773         * config/xtensa/xtensa.c: Likewise.
6774         * config/stormy16/stormy16.c: Likewise.
6775         * config/iq2000/iq2000.c: Likewise.
6776         * config/rs6000/rs6000.c: Likewise.
6777         * config/picochip/picochip.c: Likewise.
6778         * config/arc/arc.c: Likewise.
6779         * config/mcore/mcore.c: Likewise.
6780         * config/score/score.c: Likewise.
6781         * config/mips/mips.c: Likewise.
6782         * config/bfin/bfin.c: Likewise.
6783         * config/ia64/ia64.c: Likewise (disabled though).
6784
6785         * config/frv/frv.h: Remove pointless remark.
6786
6787         * doc/tm.texi (PROMOTE_FUNCTION_MODE,
6788         TARGET_PROMOTE_FUNCTION_ARGS,
6789         TARGET_PROMOTE_FUNCTION_RETURN): Consolidate into...
6790         (TARGET_PROMOTE_FUNCTION_MODE): ... this.
6791
6792 2009-08-01  Sebastian Pop  <sebastian.pop@amd.com>
6793
6794         * doc/invoke.texi (-fgraphite-force-parallel): Renamed
6795         -floop-parallelize-all.
6796         * toplev.c (process_options): Rename flag_graphite_force_parallel to
6797         flag_loop_parallelize_all.
6798         * tree-ssa-loop.c (gate_graphite_transforms): Same.
6799         * graphite.c (graphite_transform_loops): Same.
6800         * common.opt: Same.
6801         * graphite-poly.c (apply_poly_transforms): Same.
6802
6803 2009-07-31  Richard Earnshaw  <rearnsha@arm.com>
6804
6805         PR tree-optimization/40914
6806         * ipa-prop.c (ipa_get_ptr_load_param): New argument use_delta,
6807         if set, then check the delta field of the PMF record.
6808         (ipa_get_stmt_member_ptr_load_param): Propagate new param use_delta.
6809         (ipa_analyze_call_uses): Handle machines where the vbit for a PMF
6810         call is stored in the delta.
6811
6812 2009-07-31  Adam Nemet  <anemet@caviumnetworks.com>
6813
6814         * config/mips/mips.md (*clear_upper32_dext): New pattern.
6815
6816 2009-07-31  Uros Bizjak  <ubizjak@gmail.com>
6817
6818         * config/i386/bsd.h (ASM_BYTE): New define.
6819         * config/i386/darwin.h (ASM_BYTE): Rename from ASM_BYTE_OP.
6820         * config/i386/att.h (ASM_BYTE): New define. Use ASM_BYTE instead of
6821         .byte.  Use fputs or putc instead of fprintf where appropriate.
6822         * config/i386/i386-interix.h: Use ASM_BYTE instead of .byte.  Use
6823         fputs or putc instead of fprintf where appropriate.
6824         * config/i386/i386elf.h: Ditto.
6825         * config/i386/sysv4.h: Ditto.
6826
6827         * config/i386/i386.c (TARGET_ASM_BYTE_OP): New define.
6828         * config/i386/i386.md (x86_sahf_1): Use ASM_BYTE instead of .byte.
6829         (*tls_global_dynamic_64): Ditto.
6830
6831 2009-07-31  Christian Bruel  <christian.bruel@st.com>
6832
6833         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
6834
6835 2009-07-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
6836
6837         * config/arm/arm.c (arm_arm_address_cost): Fix typo.
6838         Remove dead code for MINUS.
6839
6840 2009-07-31  Anthony Green  <green@moxielogic.com>
6841
6842         * config/moxie/moxie.c (moxie_expand_prologue): Use $r5 instead of
6843         $r12 in prologue.
6844         (moxie_expand_epilogue): Ditto for epilogue.
6845         (moxie_setup_incoming_varargs): ABI change.  Use 5 registers for
6846         incoming arguments.
6847         (moxie_function_arg): Ditto.
6848         (moxie_pass_by_reference): Ditto.
6849         (moxie_arg_partial_bytes): Ditto.
6850         * config/moxie/moxie.h (CALL_USED_REGISTERS): Ditto.
6851         (FUNCTION_ARG_ADVANCE) Ditto.
6852         (REG_PARM_STACK_SPACE) Ditto.
6853         (FUNCTION_ARG_REGNO_P) Dito.
6854
6855         * config.gcc: Add moxie linux config support.
6856         * gcc/config/moxie/uclinux.h: New file.
6857
6858 2009-07-31  DJ Delorie  <dj@redhat.com>
6859
6860         * config/sh/sh.md (UNSPECV_SP_SWITCH_B): New.
6861         (UNSPECV_SP_SWITCH_E): New.
6862         (sp_switch_1): Change to an unspec.
6863         (sp_switch_2): Change to an unspec.  Don't use post-inc when we
6864         replace $r15.
6865         * config/sh/sh.c (sh_expand_prologue): Use the constant pool to
6866         reference the new stack's address
6867
6868 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
6869
6870         * Makefile.in (OBJS-common): Added dependence on graphite-blocking.o,
6871         graphite-clast-to-gimple.o, graphite-dependences.o,
6872         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
6873         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o.
6874         (graphite-blocking.o,
6875         graphite-clast-to-gimple.o, graphite-dependences.o,
6876         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
6877         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o): New.
6878         * cfgloop.c (alloc_loop): Set loop->can_be_parallel to false.
6879         * cfgloop.h (struct loop): Add can_be_parallel field.
6880         * common.opt (fgraphite-identity): Moved up.
6881         (fgraphite-force-parallel): New flag.
6882         * graphite.c: Rewrite.
6883         * graphite.h: Rewrite.
6884         * passes.c (init_optimization_passes): Schedule a pass of DCE and LIM
6885         after Graphite.
6886         * toplev.c (graphite_out_file): New file descriptor.
6887         (graphite_in_file): New.
6888         (process_options): flag_graphite_force_parallel cannot be used without
6889         Graphite.
6890         * tree-ssa-loop.c: Include toplev.h.
6891         (gate_graphite_transforms): Enable flag_graphite for
6892         flag_graphite_force_parallel.
6893
6894 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
6895
6896         * ChangeLog.graphite: New.
6897         * graphite-blocking.c: New.
6898         * graphite-clast-to-gimple.c: New.
6899         * graphite-clast-to-gimple.h: New.
6900         * graphite-dependences.c: New.
6901         * graphite-dependences.h: New.
6902         * graphite-interchange.c: New.
6903         * graphite-poly.c: New.
6904         * graphite-poly.h: New.
6905         * graphite-ppl.c: New.
6906         * graphite-ppl.h: New.
6907         * graphite-scop-detection.c: New.
6908         * graphite-scop-detection.h: New.
6909         * graphite-sese-to-poly.c: New.
6910         * graphite-sese-to-poly.h: New.
6911         * sese.c: New.
6912         * sese.h: New.
6913
6914 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
6915
6916         * tree-chrec.c (evolution_function_right_is_integer_cst): New.
6917         * tree-chrec.h (evolution_function_right_is_integer_cst): Declared.
6918
6919 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
6920
6921         * tree-chrec.c (operator_is_linear): Handle BIT_NOT_EXPR.
6922         (scev_is_linear_expression): Return false if the evolution is not
6923         affine multivariate.
6924
6925 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
6926
6927         * tree-data-ref.c (graphite_find_data_references_in_stmt): New.
6928         * tree-data-ref.h (graphite_find_data_references_in_stmt): Declared.
6929
6930 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
6931
6932         * tree-data-ref.c (debug_data_references): New.
6933         (debug_data_reference): New.
6934         * tree-data-ref.h (debug_data_references): Declared.
6935         (debug_data_reference): Declared.
6936
6937 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
6938
6939         * tree-data-ref.c (stmt_simple_memref_p: Removed.
6940         * tree-data-ref.h (scop_p): Removed.
6941         (struct data_reference): Remove field scop.
6942         (DR_SCOP): Removed.
6943         (stmt_simple_memref_p): Removed.
6944
6945 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
6946
6947         * cfgloop.h (create_empty_loop_on_edge): Pass an extra argument.
6948         * cfgloopmanip.c (create_empty_loop_on_edge): Leave the loop_latch
6949         basic block empty.
6950
6951 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
6952
6953         * doc/invoke.texi (-fgraphite-force-parallel): Documented.
6954
6955 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
6956
6957         * doc/invoke.texi (-fgraphite-identity): Documented.
6958
6959 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
6960
6961         * tree-scalar-evolution.c: Fix comment.
6962         (instantiate_scev_1): Return unknow from scev instantiation if the
6963         result is not above instantiate_below.
6964
6965 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
6966
6967         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop): Not
6968         static anymore.  Instantiate the symbols that may have been introduced
6969         by chrec_apply.
6970         * tree-scalar-evolution.h (compute_overall_effect_of_inner_loop):
6971         Declared.
6972
6973 2009-07-30  DJ Delorie  <dj@redhat.com>
6974
6975         * config/mep/mep.c (mep_asm_init_sections): Add section flags and
6976         .vliw directive to VLIW sections.
6977
6978 2009-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
6979
6980         * Makefile.in (AUTOCONF, ACLOCAL, ACLOCAL_AMFLAGS, aclocal_deps):
6981         New variables.
6982         ($(srcdir)/configure, $(srcdir)/aclocal.m4): New rules.
6983         (AUTOHEADER): New variable.
6984         ($(srcdir)/cstamp-h.in): Use it.
6985
6986 2009-07-30  Michael Meissner  <meissner@linux.vnet.ibm.com>
6987             Pat Haugen  <pthaugen@us.ibm.com>
6988             Revital Eres <ERES@il.ibm.com>
6989
6990         * config/rs6000/vector.md (VEC_F): Add VSX support.
6991         (VEC_A): Ditto.
6992         (VEC_N): Ditto.
6993         (mov<mode>): Ditto.
6994         (vector_load_<mode>): Ditto.
6995         (vector_store_<mode>): Ditto.
6996         (vector GPR move split): Ditto.
6997         (vec_reload_and_plus_<mptrsize>): Ditto.
6998         (vec_reload_and_reg_<mptrsize>): Ditto.
6999         (add<mode>3): Ditto.
7000         (sub<mode>3): Ditto.
7001         (mul<mode>3): Ditto.
7002         (neg<mode>2): Ditto.
7003         (abs<mode>2): Ditto.
7004         (smin<mode>3): Ditto.
7005         (smax<mode>3): Ditto.
7006         (vector_eq<mode>): Ditto.
7007         (vector_gt<mode>): Ditto.
7008         (vector_ge<mode>): Ditto.
7009         (vector_gtu<mode>): Ditto.
7010         (vector_select_<mode>_uns): Ditto.
7011         (vector_eq_<mode>_p): Ditto.
7012         (vector_gt_<mode>_p): Ditto.
7013         (vector_ge_<mode>_p): Ditto.
7014         (vector_gtu_<mode>_p): Ditto.
7015         (cr6_test_for_zero): Ditto.
7016         (cr6_test_for_zero_reverse): Ditto.
7017         (cr6_test_for_lt): Ditto.
7018         (cr6_test_for_lt_reverse): Ditto.
7019         (xor<mode>3): Ditto.
7020         (ior<mode>3): Ditto.
7021         (and<mode>3): Ditto.
7022         (one_cmpl<mode>2): Ditto.
7023         (nor<mode>2): Ditto.
7024         (andc<mode>2): Ditto.
7025         (float<VEC_int<mode>2): Ditto.
7026         (unsigned_float<VEC_int><mode>2): Ditto.
7027         (fix_trunc<mode><VEC_int>2): Ditto.
7028         (fixuns_trunc<mode><VEC_int>2): Ditto.
7029         (vec_init<mode>):
7030         (vec_set<mode>): Ditto.
7031         (vec_extract<mode>): Ditto.
7032         (vec_interleave_highv4sf): Ditto.
7033         (vec_interleave_lowv4sf): Ditto.
7034         (vec_realign_load_<mode>): Ditto.
7035         (vec_shl_<mode>): Ditto.
7036         (vec_shr_<mode>): Ditto.
7037         (div<mode>3): New patterns for VSX.
7038         (vec_interleave_highv2df): Ditto.
7039         (vec_interleave_lowv2df): Ditto.
7040         (vec_pack_trunc_v2df): Ditto.
7041         (vec_pack_sfix_trunc_v2df): Ditto.
7042         (vec_pack_ufix_trunc_v2df): Ditto.
7043         (vec_unpacks_hi_v4sf): Ditto.
7044         (vec_unpacks_lo_v4sf): Ditto.
7045         (vec_unpacks_float_hi_v4si): Ditto.
7046         (vec_unpacks_float_lo_v4si): Ditto.
7047         (vec_unpacku_float_hi_v4si): Ditto.
7048         (vec_unpacku_float_lo_v4si): Ditto.
7049         (movmisalign<mode>): Ditto.
7050         (vector_ceil<mode>2): New patterns for vectorizing math library.
7051         (vector_floor<mode>2): Ditto.
7052         (vector_btrunc<mode>2): Ditto.
7053         (vector_copysign<mode>3): Ditto.
7054
7055         * config/rs6000/predicates.md (easy_vector_constant_msb): New
7056         predicate for setting the high bit in each word, used for copysign.
7057
7058         * config/rs6000/ppc-asm.h (f19): Whitespace.
7059         (f32-f63): Define if VSX.
7060         (v0-v31): Define if Altivec.
7061         (vs0-vs63): Define if VSX.
7062
7063         * config/rs6000/t-rs6000 (MD_INCLUDES): Add power7.md and vsx.md.
7064
7065         * config/rs6000/power7.md: New file, provide tuning parameters for
7066         -mcpu=power7.
7067
7068         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Add VSX support.
7069         (rs6000_cpu_cpp_builtins): Ditto.
7070         (altivec_overloaded_builtins): Ditto.
7071         (altivec_resolve_overloaded_builtin): Ditto.
7072
7073         * config/rs6000/rs6000.opt (-mno-vectorize-builtins): Add new
7074         debug switch to disable vectorizing simple math builtin
7075         functions.
7076
7077         * config/rs6000/rs6000.c (rs6000_builtin_vectorized_function):
7078         Vectorize simple math builtin functions.
7079         (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define target
7080         hook to vectorize math builtins.
7081         (rs6000_override_options): Enable -mvsx on -mcpu=power7.
7082         (rs6000_builtin_conversion): Add VSX/power7 support.
7083         (rs6000_builtin_vec_perm): Ditto.
7084         (vsplits_constant): Add support for loading up a vector constant
7085         with just the high bit set in each part.
7086         (rs6000_expand_vector_init): Add VSX/power7 support.
7087         (rs6000_expand_vector_set): Ditto.
7088         (rs6000_expand_vector_extract): Ditto.
7089         (rs6000_emit_move): Ditto.
7090         (bdesc_3arg): Ditto.
7091         (bdesc_2arg): Ditto.
7092         (bdesc_1arg): Ditto.
7093         (rs6000_expand_ternop_builtin): Ditto.
7094         (altivec_expand_builtin): Ditto.
7095         (rs6000_expand_unop_builtin): Ditto.
7096         (rs6000_init_builtins): Ditto.
7097         (altivec_init_builtins): Ditto.
7098         (builtin_function_type): Ditto.
7099         (rs6000_common_init_builtins): Ditto.
7100         (rs6000_handle_altivec_attribute); Ditto.
7101         (rs6000_mangle_type): Ditto.
7102         (rs6000_vector_mode_supported_p): Ditto.
7103         (rs6000_mode_dependent_address): Altivec addresses with AND -16
7104         are mode dependent.
7105
7106         * config/rs6000/vsx.md: New file for VSX support.
7107
7108         * config/rs6000/rs6000.h (EASY_VECTOR_MSB): New macro for
7109         identifing values with just the most significant bit set.
7110         (enum rs6000_builtins): Add builtins for VSX.  Add simple math
7111         vectorized builtins.
7112
7113         * config/rs6000/altivec.md (UNSPEC_VRFIP): Delete.
7114         (UNSPEC_VRFIM): Delete.
7115         (splitter for loading up vector with most significant bit): New
7116         splitter for vectorizing copysign.
7117         (altivec_vrfiz): Rename from altivec_fturncv4sf2.  Add support for
7118         vectorizing simple math functions.
7119         (altivec_vrfip): Add support for vectorizing simple math functions.
7120         (altivec_vrfim): Ditto.
7121         (altivec_copysign_v4sf3): New insn for Altivec copysign support.
7122
7123         * config/rs6000/rs6000.md (UNSPEC_BPERM): New constant.
7124         (power7.md, vsx.md): Include for power7 support.
7125         (copysigndf3): Use VSX instructions if -mvsx.
7126         (negdf2_fpr): Ditto.
7127         (absdf2_fpr): Ditto.
7128         (nabsdf2_fpr): Ditto.
7129         (adddf3_fpr): Ditto.
7130         (subdf3_fpr): Ditto.
7131         (muldf3_fpr): Ditto.
7132         (divdf3_fpr): Ditto.
7133         (fix_truncdfdi2_fpr): Ditto.
7134         (cmpdf_internal1): Ditto.
7135         (fred, fred_fpr): Convert into expander/insn to add VSX support.
7136         (btruncdf2, btruncdf2_fpr): Ditto.
7137         (ceildf2, ceildf2_fpr): Ditto.
7138         (floordf2, floordf2_fpr): Ditto.
7139         (floatdidf2, floatdidf2_fpr): Ditto.
7140         (fmadddf4_fpr): Name insn.  Use VSX instructions if -mvsx.
7141         (fmsubdf4_fpr): Ditto.
7142         (fnmadddf4_fpr_1): Ditto.
7143         (fnmadddf4_fpr_2): Ditto.
7144         (fnmsubdf4_fpr_1): Ditto.
7145         (fnmsubdf4_fpr_2): Ditto.
7146         (fixuns_truncdfdi2): Add expander for VSX support.
7147         (fix_truncdfdi2): Ditto.
7148         (fix_truncdfsi2): Ditto.
7149         (ftruncdf2): Ditto.
7150         (btruncsf2): Whitespace.
7151         (movdf_hardfloat32): Add support for VSX registers.
7152         (movdf_softfloat32): Ditto.
7153         (movdf_hardfloat64): Ditto.
7154         (movdf_hardfloat64_mfpgpr): Ditto.
7155         (movdf_softfloat64): Ditto.
7156         (movti splitters): Add check for vector registers supporting
7157         TImode in the future.
7158         (bpermd): Add power7 bpermd instruction.
7159
7160         * config/rs6000/altivec.h (vec_div): Define if VSX.
7161         (vec_mul): Ditto.
7162         (vec_msub): Ditto.
7163         (vec_nmadd): Ditto.
7164         (vec_nearbyint): Ditto.
7165         (vec_rint): Ditto.
7166         (vec_sqrt): Ditto.
7167         (all predicates): Use the generic builtin function, and not the V4SF
7168         specific function so that the predicates will work with VSX's V2DF.
7169         (vec_all_*): Ditto.
7170         (vec_any_*): Ditto.
7171
7172         * doc/extend.texi (PowerPC Altivec/VSX Built-in Functions):
7173         Document new VSX functions and types.
7174
7175         * doc/invoke.texi (PowerPc options): Document -mpopcntd, -mvsx
7176         switches.
7177
7178         * doc/md.texi (PowerPC constraints): Document "wd", "wf", "ws",
7179         "wa", and "j" constraints.  Modify "v" to talk about Altivec
7180         instead of just vector.
7181
7182 2009-07-30  Andrew MacLeod  <amacleod@redhat.com>
7183
7184         PR debug/26475
7185         * tree-into-ssa.c (insert_phi_nodes_for, rewrite_add_phi_arguments): Set
7186         location for phi arguments.
7187         (rewrite_update_phi_arguments): Find locations for reaching defs.
7188         * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis):
7189         Add location to add_phi_arg calls.
7190         * tree-loop-districbution.c (update_phis_for_loop_copy): Add locations.
7191         * tree-ssa-loop-manip.c (create_iv, add_exit_phis_edge,
7192         split_loop_exit_edge, tree_transform_and_unroll_loop): Add locations.
7193         * tree-tailcall.c (add_successor_phi_arg, eliminate_tail_call,
7194         create_tailcall_accumulator, tree_optimize_tail_calls_1): Add locations.
7195         * tree.h (struct phi_arg_d): Add location_t to PHI arguments.
7196         * tree-phinodes.c (make_phi_node): Initialize location.
7197         (resize_phi_node): Initialize location to UNKNOWN_LOCATION.
7198         (add_phi_arg): Add location parameter.
7199         (remove_phi_arg_num): Move location when moving phi argument.
7200         * omp-low.c (expand_parallel_call, expand_omp_for_static_chunk): Set
7201         location.
7202         * tree-vect-loop-manip.c (slpeel_update_phis_for_duplicate_loop,
7203         slpeel_update_phi_nodes_for_guard1,
7204         slpeel_update_phi_nodes_for_guard2,
7205         slpeel_tree_duplicate_loop_to_edge_cfg, set_prologue_iterations,
7206         vect_loop_versioning): Set locations.
7207         * tree-parloops.c (create_phi_for_local_result,
7208         transform_to_exit_first_loop, create_parallel_loop): Add locations.
7209         * gimple-pretty-print.c (dump_gimple_phi): Dump lineno's if present.
7210         * tree-vect-loop.c (get_initial_def_for_induction,
7211         vect_create_epilog_for_reduction, vect_finalize_reduction): Add
7212         locations.
7213         * tree-flow-inline.h (gimple_phi_arg_location): New.  Return locus.
7214         (gimple_phi_arg_location_from_edge): New.  Return locus from an edge.
7215         (gimple_phi_arg_set_location): New.  Set locus.
7216         (gimple_phi_arg_has_location): New.  Check for locus.
7217         (redirect_edge_var_map_location): New.  Return locus from var_map.
7218         * tree-vect-data-refs.c (vect_setup_realignment): Set location.
7219         * tree-ssa-phiopt.c (conditional_replacement): Set locus when
7220         combining PHI arguments.
7221         (cond_store_replacement): Set location.
7222         * cfgexpand.c (gimple_assign_rhs_to_tree): Transfer locus if possible.
7223         * grpahite.c (add_loop_exit_phis, add_guard_exit_phis,
7224         scop_add_exit_phis_edge): Add locations.
7225         * tree-cfgcleanup.c (remove_forwarder_block,
7226         remove_forwarder_block_with_phi): Add locations.
7227         * tree-ssa-pre.c (insert_into_preds_of_block): Add locations.
7228         * tree-predcom.c (initialize_root_vars, initialize_root_vars_lm): Add
7229         locations.
7230         * tree-ssa-dce.c (forward_edge_to_pdom): Add locations.
7231         * tree-ssa.c (redirect_edge_var_map_add, ssa_redirect_edge,
7232         flush_pending_stmts): Add source location.
7233         * lambda-code.c (perfect_nestify): Maintain location stack with argument
7234         stack to preserve locations.
7235         * tree-vect-stmts.c (vectorizable_load): Add location.
7236         * tree-inline.c (copy_phis_for_bb): Copy locus.
7237         (setup_one_parameter): Add call locus to inlined parameter stmts.
7238         (initialize_inlined_parameters): Pass in call location as parameter
7239         assignment locus.
7240         (tree_function_versioning): Pass location to setup_one_parameter.
7241         * tree-ssa-phiprop.c (phiprop_insert_phi): Set locations.
7242         * tree-outof-ssa.c (struct _elim_graph): Add source_location vecs for
7243         copy and edge lists.
7244         (insert_partition_copy_on_edge, insert_value_copy_on_edge,
7245         insert_rtx_to_part_on_edge, insert_part_to_rtx_on_edge): Provide a
7246         locus parameter and override the stmt default if provided.
7247         (new_elim_graph, clear_elim_graph, delete_elim_graph,
7248         elim_graph_add_edge, elim_graph_remove_succ_edge,
7249         FOR_EACH_ELIM_GRAPH_SUCC, FOR_EACH_ELIM_GRAPH_PRED, eliminate_build,
7250         elim_forward, elim_unvisited_predecessor, elim_backward, elim_create,
7251         eliminate_phi):  Add locus info in elimination graph for each edge and
7252         value copy.
7253         (insert_backedge_copies): Copy locus if present.
7254         * tree-flow.h (struct _edge_var_map): Add locus field.
7255         * tree-switch_conversions.c (fix_phi_nodes): Add locations.
7256         * tree-cfg.c (reinstall_phi_args, gimple_make_forwarder_block,
7257         add_phi_args_after_copy_edge, gimple_lv_adjust_loop_header_phi): Add
7258         locations.
7259         * ipa-struct-reorg.c (make_edge_and_fix_phis_of_dest): Add locations.
7260
7261 2009-07-30  Martin Jambor  <mjambor@suse.cz>
7262
7263         PR tree-optimization/40570
7264         * ipa-inline.c (cgraph_decide_inlining): Watch out for dead single
7265         use inlining loops.
7266
7267 2009-07-30  Razya Ladelsky <razya@il.ibm.com>
7268
7269         * ssa-loop-manip.c: Include langhooks.h.
7270         (rewrite_phi_with_iv): New.
7271         (rewrite_all_phi_nodes_with_iv): New.
7272         (canonicalize_loop_ivs): Move here from tree-parloops.c.
7273         Remove reduction_list argument. Use rewrite_all_phi_nodes_with_iv.
7274         * tree-parloops.c (loop_parallel_p): Move out all conditions
7275         except dependency check.
7276         (canonicalize_loop_ivs): Move to tree-ssa-loop-manip.c.
7277         (gen_parallel_loop): Call canonicalize_loop_ivs without
7278         reduction_list argument.
7279         (build_new_reduction): New.
7280         (gather_scalar_reductions): New.
7281         (try_get_loop_niter): New.
7282         (try_create_reduction_list): New.
7283         (parallleize_loops): Change the parallel conditions check.
7284         * tree-flow.h (canonicalize_loop_ivs): Remove one argument.
7285         * Makefile.in (tree-ssa-loop-manip.o): Add langhooks.h dependency.
7286
7287 2009-07-30  Dave Korn  <dave.korn.cygwin@gmail.com>
7288
7289         * opt-functions.awk (opt_args): Allow argument to be enclosed in
7290         curly braces.
7291         * doc/options.texi (Option properties):  Mention new quoting syntax.
7292
7293 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
7294
7295         * config/alpha/alpha.c (alpha_start_function):
7296         Handle VMS_DEBUG_MAIN_POINTER
7297         * config/alpha/vms.h (VMS_DEBUG_MAIN_POINTER): Define new macro.
7298         * doc/invoke.texi: Document -mdebug-main switch.
7299
7300 2009-07-29  Richard Henderson  <rth@redhat.com>
7301
7302         * cgraph.c (cgraph_set_call_stmt_including_clones): Tidy.
7303         (cgraph_create_edge_including_clones): Likewise.
7304         * tree-inline.c (copy_bb): Operate on the correct edges
7305         when updating the callgraph.
7306
7307 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
7308
7309         * config/alpha/vms-cc.c: Deleted.
7310         * config/alpha/vms-ld.c: Deleted.
7311         * config/alpha/t-vms64: Moved to config/vms
7312         * config/alpha/vms-crt0-64.c: Moved to config/vms
7313         * config/alpha/vms-crt0.c: Moved to config/vms
7314         * config/alpha/vms-psxcrt0-64.c: Moved to config/vms
7315         * config/alpha/vms-psxcrt0.c: Moved to config/vms
7316         * config/alpha/xm-vms.h: Moved to config/vms
7317         * config/alpha/x-vms: Moved to config/vms
7318         * config/alpha/t-vms (vcrt0.o, pcrt0.o): Move rules to new file
7319         config/vms/t-vms.
7320         * config/vms/t-vms: Moved here from config/alpha. Alpha specific
7321         parts removed. (STMP_FIXPROTO, STMP_FIXINC, LIMITS_H_TEST): Set.
7322         (version): Set.
7323         * config/vms/t-vms64: Moved here from config/alpha
7324         * config/vms/vms-crt0-64.c: Moved here from config/alpha.
7325         (argc,argv,envp): Enforce 32bit malloc'ing.
7326         * config/vms/vms-psxcrt0-64.c: Likewise.
7327         * config/vms/vms-crt0.c: Moved here from config/alpha.
7328         * config/vms/vms-psxcrt0.c: Likewise.
7329         * config/vms/vms-crtl-64.h: New file.
7330         * config/vms/vms-crtl.h: New file.
7331         * config/vms/vms.opt: New file.
7332         * config/vms/xm-vms64.h: New file.
7333         * config/vms/xm-vms.h: Moved here from config/alpha.
7334         (STANARD_EXEC_PREFIX, STANDARD_STARTFILE_PREFIX, STANDARD_INCLUDE_DIR):
7335         Set.
7336         * config/vms/x-vms: Moved here from config/alpha.
7337         (version, VMS_EXTRA_PARTS): Moved to t-vms.
7338         (vms-ld.o, vms-cc.o): Removed.
7339         (LN, LN_S, USE_COLLECT2, POD2MAN): Set.
7340
7341 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
7342
7343         * dwarf2out.c (add_name_and_src_coords_attributes): Push on the
7344         correct stack (obvious VMS fix).
7345
7346 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
7347
7348         * dwarf2out.c (output_file_names): Output VMS style file name, size,
7349         date, version info if VMS_DEBUGGING_INFO defined.
7350         * vmsdgbout.c (vms_file_stats_name): New functon. VMS style file name,
7351         size, date calculating code moved here.
7352
7353 2009-07-29  Paul Brook  <paul@codesourcery.com>
7354
7355         * config/arm/lib1funcs.asm (clear_cache): Use ARM_FUNC_START and
7356         do_push/do_pop.
7357
7358 2009-07-29  Uros Bizjak  <ubizjak@gmail.com>
7359
7360         PR target/40577
7361         * config/alpha/alpha.c (alpha_expand_unaligned_store): Convert src
7362         to DImode when generating insq_le insn.
7363
7364 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
7365
7366         * dwarf2out.c (DWARF2_INDIRECT_STRING_SUPPORT_MISSING_ON_TARGET):
7367         New macro set for VMS_DEBUGGGING_INFO.
7368         (AT_string_form): Use it.
7369
7370 2009-07-28  DJ Delorie  <dj@redhat.com>
7371
7372         * config/mep/mep.c (vtext_section): New.
7373         (vftext_section): New.
7374         (ftext_section): New.
7375         (mep_select_section): Add support for functions.
7376         (mep_unique_section): Likewise.
7377         (mep_asm_init_sections): Likewise.
7378         (mep_encode_section_info): Remove it from here.
7379
7380         * config/mep/mep.h (USE_SELECT_SECTION_FOR_FUNCTIONS): Define.
7381
7382 2009-07-28  Paolo Bonzini  <bonzinI@gnu.org>
7383
7384         * tree.h (TREE_DEPRECATED): Document it is used for types too.
7385         (TYPE_VECTOR_OPAQUE): Use default_def_flag
7386
7387 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
7388
7389         * dwarf2out.c (output_file_names): Test new macro
7390         DWARF2_DIR_SHOULD_END_WITH_SEPARATOR.
7391         (add_comp_dir_attribute): Likewise.
7392
7393 2009-07-28  Kai Tietz  <kai.tietz@onevision.com>
7394
7395         * config/i386/mingw-w64.h (LINK_SPEC): Add
7396         separating space between commands.
7397
7398 2009-07-28  Jan Hubicka  <jh@suse.cz>
7399
7400         PR tree-optimization/40759
7401         * tree-ssa-dce.c (mark_virtual_phi_result_for_renaming): Mark all uses
7402         for renaming.
7403
7404 2009-07-27  DJ Delorie  <dj@redhat.com>
7405
7406         * config/mep/mep.c (mep_expand_builtin_saveregs): Make sure 64-bit
7407         types are dword-aligned.
7408         (mep_expand_va_start): Likewise.
7409
7410 2009-07-27  Olivier Hainque  <hainque@adacore.com>
7411             Douglas B Rupp  <rupp@gnat.com>
7412
7413         * convert.c (convert_to_pointer): Don't assume the target
7414         pointer type is POINTER_SIZE long. Fetch its precision instead.
7415
7416 2009-07-27  Douglas B Rupp  <rupp@gnat.com>
7417
7418         * system.h (fopen): Undefine if macro.
7419
7420 2009-07-27  Jakub Jelinek  <jakub@redhat.com>
7421
7422         * dwarf2out.c (output_cfi_p): Removed.
7423         (output_cfis): New function.
7424         (output_fde): New function, split from output_call_frame_info.
7425         (output_call_frame_info): Use it.
7426         (dwarf2out_switch_text_section): Use output_cfis.
7427
7428 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
7429
7430         * config/i386/cygming.h (DWARF2_UNWIND_INFO): Error build when
7431         TARGET_BI_ARCH is specified without enabling SJLJ.
7432         * config/i386/mingw32.h (MD_UNWIND_SUPPORT): Define MD_UNWIND_SUPPORT,
7433         if TARGET_64BIT and TARGET_BI_ARCH aren't defined.
7434
7435 2009-07-26  Mikael Pettersson <mikpe@it.uu.se>
7436
7437         * arm.md (negdi2): Use DImode if forcing a value into a register.
7438
7439 2009-07-26  Ira Rosen  <irar@il.ibm.com>
7440
7441         PR tree-optimization/40801
7442         * tree-vect-stmts.c (vectorizable_call): Get previous copy
7443         of vector operand from the previous copy of vector statement.
7444         Pass the correct definition type value to
7445         vect_get_vec_def_for_stmt_copy().
7446
7447 2009-07-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7448
7449         * collect2.c (scan_libraries): Use CONST_CAST2 to perform char ** to
7450         const char ** conversion.
7451
7452 2009-07-25 David Daney <ddaney@caviumnetworks.com>
7453
7454         * system.h (gcc_assert): Invoke __builtin_unreachable() instead of
7455         fancy_abort() if !ENABLE_ASSERT_CHECKING.
7456         (gcc_unreachable): Invoke __builtin_unreachable() if
7457         !ENABLE_ASSERT_CHECKING.
7458
7459 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
7460
7461         PR rtl-optimization/40445
7462         * emit-rtl.c (next_nonnote_insn_bb): New function.
7463         * rtl.h (next_nonnote_insn_bb): Declare new function.
7464         * cfgcleanup.c (try_optimize_cfg): Don't remove an empty block
7465         with no successors that is the successor of the ENTRY_BLOCK.
7466         Continue from the top after removing an empty fallthrough block.
7467         * cfgrtl.c (get_last_bb_insn): Call next_nonnote_insn_bb instead
7468         of next_nonnote_insn.
7469
7470 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
7471
7472         * cfgcleanup.c (old_insns_match_p): Handle the case of empty blocks.
7473
7474 2009-07-25  Martin Jambor  <mjambor@suse.cz>
7475
7476         * c-common.c (c_common_attribute_table): New element for noclone.
7477         (handle_noclone_attribute): New function. Forward-declare.
7478         * tree-inline.c (tree_versionable_function_p): Check for noclone
7479         attribute.
7480         * doc/extend.texi (Labels as Values): Document need for noclone.
7481         (Function Attributes): Document noclone attribute.
7482
7483 2009-07-25  Jakub Jelinek  <jakub@redhat.com>
7484
7485         PR rtl-optimization/34999
7486         * dwarf2out.c (struct dw_fde_struct): Add dw_fde_switch_cfi
7487         and dw_fde_switched_cold_to_hot fields.
7488         (output_cfi_p): New function.
7489         (output_call_frame_info): If fde->dw_fde_switched_sections,
7490         output 2 FDEs instead of one with corrupted header.
7491         (dwarf2out_do_cfi_startproc): New function.
7492         (dwarf2out_begin_prologue): Use it.  Initialize fde->dw_fde_switch_cfi
7493         and fde->dw_fde_switched_cold_to_hot.
7494         (dwarf2out_switch_text_section): Compute
7495         fde->dw_fde_switched_cold_to_hot.  Switch to new text section here.
7496         If dwarf2out_do_cfi_asm, emit .cfi_endproc before it and call
7497         dwarf2out_do_cfi_startproc plus emit again currently active CFI insns.
7498         Otherwise, compute fde->dw_fde_switch_cfi.
7499
7500 2009-07-24  Cary Coutant  <ccoutant@google.com>
7501
7502         * tree-cfg.c (assign_discriminator): Add explicit parentheses.
7503
7504 2009-07-24  Cary Coutant  <ccoutant@google.com>
7505
7506         * cfghooks.c (split_block): Copy discriminator to new block.
7507         * tree-cfg.c (assign_discriminator): Check location of last
7508         instruction in block as well as first.
7509
7510 2009-07-24  Uros Bizjak  <ubizjak@gmail.com>
7511
7512         * config/i386/linux.c: Use fputs or putc instead of fprintf
7513         where appropriate.
7514         * config/i386/gas.h: Ditto.
7515         * config/i386/x86-64.h: Ditto.
7516         * config/i386/att.h: Ditto.
7517
7518 2009-07-24  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
7519
7520         * expmed.c (emit_store_flag): Use a recursive call to optimize the
7521         xor case.
7522
7523 2009-07-24  Martin Jambor  <mjambor@suse.cz>
7524
7525         * ipa-prop.h (struct ipa_node_params): New flag node_enqued.
7526         (ipa_push_func_to_list_1): Declare.
7527         (ipa_push_func_to_list): New function.
7528
7529         * ipa-prop.c (ipa_push_func_to_list_1): New function.
7530         (ipa_init_func_list): Call ipa_push_func_to_list_1.
7531         (ipa_push_func_to_list): Removed.
7532         (ipa_pop_func_from_list): Clear node_enqueued flag.
7533
7534 2009-07-24  Andreas Krebbel  <krebbel1@de.ibm.com>
7535
7536         * config/s390/s390.c (override_options): Default
7537         max-unrolled-insns to 100 for z10 tuning.
7538
7539 2009-07-24  Tobias Grosser  <grosser@fim.uni-passau.de>
7540
7541         * Makefile.in (TREE_DATA_REF_H, tree-vrp.o, tree-cfg.o, tree-if-conv.o
7542         tree-ssa-loop.o, tree-ssa-loop-niter.o, tree-ssa-loop-ivcanon.o,
7543         tree-ssa-loop-prefetch.o, tree-predcom.o, tree-affine.o,
7544         tree-scalar-evolution.o, tree-data-ref.o, tree-vect-loop.o,
7545         tree-vect-data-refs.o, tree-loop-linear.o, tree-loop-distribution.o
7546         tree-parloops.o, tree-pretty-printer.o, fold-const.o, tree-ssa-dce.o,
7547         lambda-code.o, params.o): Cleanup use of SCEV_H and TREE_DATA_REF_H.
7548
7549 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
7550
7551         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR): Remove and
7552         use default set in mingw32.h header.
7553         * config/i386/mingw32.h (STANDARD_INCLUDE_DIR): Use for 32-bit and
7554         64-bit /mingw/include path.
7555         (STANDARD_STARTFILE_PREFIX_1): Use for 32-bit and 64-bit /mingw/lib
7556         path.
7557
7558 2009-07-23  Neil Vachharajani  <nvachhar@google.com>
7559
7560         PR rtl-optimization/40209
7561         * loop-iv.c (iv_analysis_loop_init): Call df_note_add_problem.
7562
7563 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
7564
7565         * config/i386/i386.c: Use ASM_LONG instead of .long.  Concatenate
7566         ASM_LONG, LPREFIX, MCOUNT_NAME and PROFILE_COUNT_REGISTER strings
7567         with the rest of string where appropriate.  Use fputs or putc
7568         instead of fprintf where appropriate.
7569
7570 2009-07-22  Michael Meissner  <meissner@linux.vnet.ibm.com>
7571             Pat Haugen  <pthaugen@us.ibm.com>
7572             Revital Eres <ERES@il.ibm.com>
7573
7574         * config/rs6000/vector.md: New file.  Move most of the vector
7575         expander support here from altivec.md to allow for the VSX vector
7576         unit in the future.  Add support for secondary_reload patterns.
7577         Rewrite the patterns for vector comparison, and vector comparison
7578         predicate instructions so that the RTL expresses the desired
7579         behavior, instead of using unspec.
7580
7581         * config/rs6000/constraints.md ("f" constraint): Use
7582         rs6000_constraints to hold the precalculated register class.
7583         ("d" constraint): Ditto.
7584         ("wd" constraint): New constraint for VSX.
7585         ("wf" constraint): Ditto.
7586         ("ws" constraint): Ditto.
7587         ("wa" constraint): Ditto.
7588         ("wZ" constraint): Ditto.
7589         ("j" constraint): Ditto.
7590
7591         * config/rs6000/predicates.md (vsx_register_operand): New
7592         predicate for VSX.
7593         (vfloat_operand): New predicate for vector.md.
7594         (vint_operand): Ditto.
7595         (vlogical_operand): Ditto.
7596         (easy_fp_constant): If VSX, 0.0 is an easy constant.
7597         (easy_vector_constant): Add VSX support.
7598         (altivec_indexed_or_indirect_operand): New predicate for
7599         recognizing Altivec style memory references with AND -16.
7600
7601         * config/rs6000/rs6000.c (rs6000_vector_reload): New static global
7602         for vector secondary reload support.
7603         (rs6000_vector_reg_class): Delete, replacing it with
7604         rs6000_constraints.
7605         (rs6000_vsx_reg_class): Ditto.
7606         (rs6000_constraints): New array to hold the register classes of
7607         each of the register constraints that can vary at runtime.
7608         (builtin_mode_to_type): New static array for builtin function type
7609         creation.
7610         (builtin_hash_table): New static hash table for builtin function
7611         type creation.
7612         (TARGET_SECONDARY_RELOAD): Define target hook.
7613         (TARGET_IRA_COVER_CLASSES): Ditto.
7614         (rs6000_hard_regno_nregs_internal): If -mvsx, floating point
7615         registers are 128 bits if VSX memory reference instructions are used.
7616         (rs6000_hard_regno_mode_ok): For VSX, only check if the VSX memory
7617         unit is being used.
7618         (rs6000_debug_vector_unit): Move into rs6000_debug_reg_global.
7619         (rs6000_debug_reg_global): Move -mdebug=reg statements here.
7620         Print several of the scheduling related parameters.
7621         (rs6000_init_hard_regno_mode_ok): Switch to putting constraints in
7622         rs6000_constraints instead of rs6000_vector_reg_class.  Move
7623         -mdebug=reg code to rs6000_debug_reg_global.  Add support for
7624         -mvsx-align-128 debug switch.  Drop testing float_p if VSX or
7625         Altivec.  Add VSX support.  Setup for secondary reload support on
7626         Altivec/VSX registers.
7627         (rs6000_override_options): Make power7 set the scheduling groups
7628         like the power5.  Add support for new debug switches to override
7629         the scheduling defaults.  Temporarily disable -mcpu=power7 from
7630         setting -mvsx.  Add support for debug switches -malways-hint,
7631         -msched-groups, and -malign-branch-targets.
7632         (rs6000_buitlin_conversion): Add support for returning unsigned
7633         vector conversion functions to fix regressions due to stricter
7634         type checking.
7635         (rs6000_builtin_mul_widen_even): Ditto.
7636         (rs6000_builtin_mul_widen_odd): Ditto.
7637         (rs6000_builtin_vec_perm): Ditto.
7638         (rs6000_vec_const_move): On VSX, use xxlxor to clear register.
7639         (rs6000_expand_vector_init): Initial VSX support for using xxlxor
7640         to zero a register.
7641         (rs6000_emit_move): Fixup invalid const symbol_ref+reg that is
7642         generated upstream.
7643         (bdesc_3arg): Add builtins for unsigned types.  Add builtins for
7644         VSX types for bit operations.  Changes to accomidate vector.md.
7645         (bdesc_2arg): Ditto.
7646         (bdesc_1arg): Ditto.
7647         (struct builtin_description_predicates): Rewrite predicate
7648         handling so that RTL describes the operation, instead of passing
7649         the instruction to be used as a string argument.
7650         (bdesc_altivec_preds): Ditto.
7651         (altivec_expand_predicate_builtin): Ditto.
7652         (altivec_expand_builtin): Ditto.
7653         (rs6000_expand_ternop_builtin): Use a switch instead of an if
7654         statement for vsldoi support.
7655         (altivec_expand_ld_builtin): Change to use new names from vector.md.
7656         (altivec_expand_st_builtin): Ditto.
7657         (paired_expand_builtin): Whitespace changes.
7658         (rs6000_init_builtins): Add V2DF/V2DI types.  Initialize the
7659         builtin_mode_to_type table for secondary reload.  Call
7660         builtin_function_type to build random builtin functions.
7661         (altivec_init_builtins): Change to use builtin_function_type to
7662         create builtin function types dynamically as we need them.
7663         (builtin_hash_function): New support for hashing the tree types
7664         for builtin function as we need it, rather than trying to build
7665         all of the trees that we need.  Add initial preliminary VSX support.
7666         (builtin_function_type): Ditto.
7667         (builtin_function_eq): Ditto.
7668         (builtin_hash_struct): Ditto.
7669         (rs6000_init_builtins): Ditto.
7670         (rs6000_common_init_builtins): Ditto.
7671         (altivec_init_builtins): Ditto.
7672         (rs6000_common_init_builtins): Ditto.
7673         (enum reload_reg_type): New enum for simplifing reg classes.
7674         (rs6000_reload_register_type): Simplify register classes into GPR,
7675         Vector, and other registers.  Altivec and VSX addresses in reload.
7676         (rs6000_secondary_reload_inner): Ditto.
7677         (rs6000_ira_cover_classes): New target hook, that returns the
7678         appropriate cover classes, based on -mvsx being used or not.
7679         (rs6000_secondary_reload_class): Add VSX support.
7680         (get_vec_cmp_insn): Delete, rewrite vector conditionals.
7681         (get_vsel_insn): Ditto.
7682         (rs6000_emit_vector_compare): Rewrite vector conditional support
7683         so that where we can, we use RTL operators, instead of blindly use
7684         UNSPEC.
7685         (rs6000_emit_vector_select): Ditto.
7686         (rs6000_emit_vector_cond_expr): Ditto.
7687         (rs6000_emit_minmax): Directly generate min/max under altivec, vsx.
7688         (create_TOC_reference): Add -mdebug=addr support.
7689         (emit_frame_save): VSX loads/stores need register indexed addressing.
7690
7691         * config/rs6000/rs6000.md: Include vector.md.
7692
7693         * config/rs6000/t-rs6000 (MD_INCLUDES): Add vector.md.
7694
7695         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
7696         support for V2DI, V2DF in logical, permute, select operations.
7697
7698         * config/rs6000/rs6000.opt (-mvsx-scalar-double): Add new debug
7699         switch for vsx/power7.
7700         (-mvsx-scalar-memory): Ditto.
7701         (-mvsx-align-128): Ditto.
7702         (-mallow-movmisalign): Ditto.
7703         (-mallow-df-permute): Ditto.
7704         (-msched-groups): Ditto.
7705         (-malways-hint): Ditto.
7706         (-malign-branch-targets): Ditto.
7707
7708         * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Delete, use target
7709         hook instead.
7710         (IRA_COVER_CLASSES_PRE_VSX): Cover classes if not -mvsx.
7711         (IRA_COVER_CLASSES_VSX): Cover classes if -mvsx.
7712         (rs6000_vector_reg_class): Delete.
7713         (rs6000_vsx_reg_class): Ditto.
7714         (enum rs6000_reg_class_enum): New enum for the constraints that
7715         vary based on target switches.
7716         (rs6000_constraints): New array to hold the register class for all
7717         of the register constraints that vary based on the switches used.
7718         (ALTIVEC_BUILTIN_*_UNS): Add unsigned builtin functions.
7719         (enum rs6000_builtins): Add unsigned varients for the builtin
7720         declarations returned by target hooks for expanding multiplies,
7721         select, and permute operations.  Add VSX builtins.
7722         (enum rs6000_builtin_type_index): Add entries for VSX.
7723         (V2DI_type_node): Ditto.
7724         (V2DF_type_node): Ditto.
7725         (unsigned_V2DI_type_node): Ditto.
7726         (bool_long_type_node): Ditto.
7727         (intDI_type_internal_node): Ditto.
7728         (uintDI_type_internal_node): Ditto.
7729         (double_type_internal_node): Ditto.
7730
7731         * config/rs6000/altivec.md (whole file): Move all expanders to
7732         vector.md from altivec.md.  Rename insn matching functions to be
7733         altivec_foo.
7734         (UNSPEC_VCMP*): Delete, rewrite vector comparisons.
7735         (altivec_vcmp*): Ditto.
7736         (UNSPEC_VPERM_UNS): New, add for unsigned types using vperm.
7737         (VM): New iterator for moves that includes the VSX types.
7738         (altivec_vperm_<mode>): Add VSX types.  Add unsigned types.
7739         (altivec_vperm_<mode>_uns): New, for unsigned types.
7740         (altivec_vsel_*): Rewrite vector comparisons and predicate builtins.
7741         (altivec_eq<mode>): Ditto.
7742         (altivec_gt<mode>): Ditto.
7743         (altivec_gtu<mode>): Ditto.
7744         (altivec_eqv4sf): Ditto.
7745         (altivec_gev4sf): Ditto.
7746         (altivec_gtv4sf): Ditto.
7747         (altivec_vcmpbfp_p): Ditto.
7748
7749 2009-07-23  Richard Earnshaw  <rearnsha@arm.com>
7750
7751         * arm.md (split for ior/xor with shift and zero-extend): Cast op3 to
7752         unsigned HWI.
7753
7754 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
7755
7756         PR target/40832
7757         * config/i386/i386.c (output_387_ffreep): Rewrite to use
7758         ASM_SHORT instead of .word.
7759         * config/i386/i386.md (*tls_global_dynamic_64): Use ASM_SHORT
7760         instead of .word in asm template.
7761
7762 2009-07-22  Vladimir Makarov  <vmakarov@redhat.com>
7763
7764         PR target/37488
7765         * ira-lives.c (bb_has_abnormal_call_pred): New function.
7766         (process_bb_node_lives): Use it.
7767
7768         * ira.c (setup_cover_and_important_classes): Don't setup
7769         ira_important_class_nums.  Add cover classes to the end of
7770         important classes.
7771         (cover_class_order, comp_reg_classes_func, reorder_important_classes):
7772         New.
7773         (find_reg_class_closure): Use reorder_important_classes.
7774
7775         * config/i386/i386.h (IRA_COVER_CLASSES): Remove.
7776
7777         * config/i386/i386.c (i386_ira_cover_classes): New function.
7778         (TARGET_IRA_COVER_CLASSES): Redefine.
7779
7780         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Add a comment about
7781         importance of order of cover classes in the array.
7782
7783 2009-07-22  Diego Novillo  <dnovillo@google.com>
7784
7785         * tree-pass.h (TDF_EH): Define.
7786         * gimple-pretty-print.c (dump_gimple_stmt): If FLAGS
7787         contains TDF_EH, print the EH region number holding GS.
7788         * tree-dump.c (dump_options): Add "eh".
7789         * doc/invoke.texi: Document it.
7790
7791 2009-07-22  Doug Kwan  <dougkwan@google.com>
7792
7793         * config/arm/arm.md (subdi3) Copy non-reg values to DImode registers.
7794
7795 2009-07-22  Michael Matz  <matz@suse.de>
7796
7797         PR tree-optimization/35229
7798         PR tree-optimization/39300
7799
7800         * tree-ssa-pre.c (includes): Include tree-scalar-evolution.h.
7801         (inhibit_phi_insertion): New function.
7802         (insert_into_preds_of_block): Call it for REFERENCEs.
7803         (init_pre): Initialize and finalize scalar evolutions.
7804         * Makefile.in (tree-ssa-pre.o): Depend on tree-scalar-evolution.h .
7805
7806 2009-07-22  Uros Bizjak  <ubizjak@gmail.com>
7807
7808         * config/i386/predicates.md (zero_extended_scalar_load_operand):
7809         Use CONST_VECTOR_NUNITS to determine number of elements.
7810
7811 2009-07-22  Andreas Krebbel  <krebbel1@de.ibm.com>
7812
7813         * config/s390/constraints.md (ZQ, ZR, ZS, ZT): New constraints.
7814         (U, W): Constraints are now deprecated and will be removed if we
7815         run out of letters.
7816         * config/s390/s390.md (U, W): Replaced with ZQZR, ZSZT throughout
7817         the file.
7818         ("prefetch"): Add the stcmh instruction for prefetching.
7819         * config/s390/s390.c (s390_symref_operand_p): Function moved. No
7820         changes.
7821         (s390_short_displacement): Return always true if compiling for
7822         machines not providing the long displacement facility.
7823         (s390_mem_constraint): Support the new constraint letter Z.
7824         (s390_check_qrst_address): New function.
7825
7826 2009-07-21  DJ Delorie  <dj@redhat.com>
7827
7828         * config/mep/mep.c (mep_legitimize_arg): Leave control registers
7829         alone too.
7830
7831 2009-07-21  Jason Merrill  <jason@redhat.com>
7832
7833         * c-common.c (max_tinst_depth): Increase default to 1024.
7834
7835 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
7836
7837         * config/i386/sse.md (vec_unpacku_float_hi_v4si): New expander.
7838         (vec_unpacku_float_lo_v4si): Ditto.
7839
7840 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
7841
7842         PR target/40811
7843         * config/i386/sse.md (sse2_cvtudq2ps): New expander.
7844         (enum ix86_builtins): Add IX86_BUILTIN_CVTUDQ2PS.
7845         (builtin_description): Add __builtin_ia32_cvtudq2ps.
7846         (ix86_vectorize_builtin_conversion): Handle IX86_BUILTIN_CVTUDQ2PS.
7847
7848 2009-07-21  Jakub Jelinek  <jakub@redhat.com>
7849
7850         PR tree-optimization/40813
7851         * tree-inline.c (copy_bb): Regimplify RHS after last stmt, not before
7852         it.
7853
7854 2009-07-21  Kaz Kojima  <kkojima@gcc.gnu.org>
7855
7856         * config/sh/sh.c (sh_gimplify_va_arg_expr): Wrap the result
7857         with a NOP_EXPR if needed.
7858
7859 2009-07-21  Paul Brook <paul@codesourcery.com>
7860
7861         * tree-vectorizer.c (increase_alignment): Handle nested arrays.
7862         Terminate debug dump with newline.
7863
7864 2009-07-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7865
7866         * pa.c (compute_zdepwi_operands): Limit deposit length to 32 - lsb.
7867         Cast "1" to unsigned HOST_WIDE_INT.
7868         (compute_zdepdi_operands): Limit maximum length to 64 bits.  Limit
7869         deposit length to the maximum length - lsb.  Extend length if
7870         HOST_BITS_PER_WIDE_INT is 32.
7871
7872 2009-07-20  Olatunji Ruwase <tjruwase@google.com>
7873
7874         * cgraph.h (constant_pool_htab): New function.
7875         (constant_descriptor_tree): Move from varasm.c.
7876         * varasm.c (constant_pool_htab): New function.
7877         (constant_descriptor_tree): Move to cgraph.h.
7878
7879 2009-07-20  Olatunji Ruwase  <tjruwase@google.com>
7880
7881         * toplev.c: Invoke FINISH_UNIT callbacks before call to finalize().
7882
7883 2009-07-20  Shujing Zhao  <pearly.zhao@oracle.com>
7884
7885         * Makefile.in (TREE_INLINE_H, tree-inline.o, cgraph.o): Remove
7886         $(VARRAY_H).
7887
7888 2009-07-20  Xinliang David Li  <davidxl@google.com>
7889
7890         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add length check.
7891
7892 2009-07-20  Adam Nemet  <anemet@caviumnetworks.com>
7893
7894         * config/mips/mips.md (move_type): Add arith.
7895         (type): Handle arith.
7896         (zero_extendsidi2): Rename this into ...
7897         (*zero_extendsidi2): ... this.  Don't match if ISA_HAS_EXT_INS.
7898         (zero_extendsidi2): New expander.
7899         (*zero_extendsidi2_dext): New pattern.
7900
7901 2009-07-20  Nick Clifton  <nickc@redhat.com>
7902
7903         * config.gcc (mips64-*-*): Add definition of tm_defines in order
7904         to set MIPS_ABI_DEFAULT.
7905         * config/mips/vr.h (MIPS_ABI_DEFAULT): Remove definition.
7906
7907 2009-07-20  Jakub Jelinek  <jakub@redhat.com>
7908
7909         * tree-object-size.c (addr_object_size): Handle unions with
7910         array in it as last field of structs in __bos (, 1) as __bos (, 0).
7911
7912         PR tree-optimization/40792
7913         * tree.c (build_function_type_skip_args): Remove bogus assert.
7914
7915 2009-07-20  Jan Hubicka  <jh@suse.cz>
7916             Martin Jambor  <mjambor@suse.cz>
7917
7918         * cgraph.h (combined_args_to_skip): New field.
7919         * cgraph.c (cgraph_create_virtual_clone): Properly handle
7920         combined_args_to_skip and args_to_skip.
7921         * tree-inline.c (update_clone_info): New function.
7922         (tree_function_versioning): Call update_clone_info.
7923         * cgraphunit.c: (cgraph_materialize_clone): Dump materialized
7924         functions.
7925         (cgraph_materialize_all_clones): More extensive dumping, working
7926         with combined_args_to_skip rather than args_to_skip.
7927
7928 2009-07-20  Ira Rosen  <irar@il.ibm.com>
7929
7930         * tree-vectorizer.h (vectorizable_condition): Add parameters.
7931         * tree-vect-loop.c (vect_is_simple_reduction): Support COND_EXPR.
7932         (get_initial_def_for_reduction): Likewise.
7933         (vectorizable_reduction): Skip the check of first operand in case
7934         of COND_EXPR. Add check that it is outer loop vectorization if
7935         nested cycle was detected. Call vectorizable_condition() for
7936         COND_EXPR. If reduction epilogue cannot be created do not fail for
7937         nested cycles (if it is not double reduction). Assert that there
7938         is only one type in the loop in case of COND_EXPR. Call
7939         vectorizable_condition() to vectorize COND_EXPR.
7940         * tree-vect-stmts.c (vectorizable_condition): Update comment.
7941         Add parameters. Allow nested cycles if called from
7942         vectorizable_reduction(). Use reduction vector variable if provided.
7943         (vect_analyze_stmt): Call vectorizable_reduction() before
7944         vectorizable_condition().
7945         (vect_transform_stmt): Update call to vectorizable_condition().
7946
7947 2009-07-20  Christian Bruel  <christian.bruel@st.com>
7948
7949         * config/sh/sh.opt (-mfmovd): Resurrect and document.
7950         * doc/invoke.texi (-mfmovd): Likewise.
7951         * config/sh/sh.h (TARGET_FMOVD, MASK_FMOVD): Remove default setting.
7952
7953 2009-07-20  Jan Hubicka  <jh@suse.cz>
7954
7955         * tree-ssa-dce.c (remove_dead_phis): Only look for abnormal PHIs
7956         when handling SSA name.
7957
7958 2009-07-19  Jan Hubicka  <jh@suse.cz>
7959
7960         PR tree-optimization/40676
7961         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do renaming on all
7962         virtual PHIs in empty BBs.
7963
7964 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
7965
7966         * combine.c (make_compound_operation) <SUBREG>: If force_to_mode
7967         re-expanded the compound use gen_lowpart instead to convert to the
7968         desired mode.
7969
7970 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
7971
7972         * combine.c (try_widen_shift_mode): Add COUNT, OUTER_CODE and
7973         OUTER_CONST arguments.
7974         <LSHIFTRT>: Use them to allow widening if the bits shifted in from
7975         the new wider mode will be masked off.
7976         (simplify_shift_const_1): Adjust calls to try_widen_shift_mode.
7977
7978 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
7979
7980         * combine.c (try_widen_shift_mode) <LSHIFTRT>: Allow widening if the
7981         high-order bits are zero.
7982
7983 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
7984
7985         * combine.c (simplify_shift_const_1): Split code to determine
7986         shift_mode into ...
7987         (try_widen_shift_mode): ... here.  Allow widening for ASHIFTRT if the
7988         new bits shifted in are identical to the old sign bit.
7989
7990 2009-07-18  Richard Guenther  <rguenther@suse.de>
7991
7992         PR c/40787
7993         * gimplify.c (gimplify_call_expr): Reject code using results from
7994         functions returning void.
7995
7996 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
7997
7998         * doc/md.texi: Document the new PowerPC "es" constraint.
7999         Document that "m" can include automodified addresses on this target,
8000         and explain how %U must be used.  Extend the "Q" and "Z" documentation
8001         to suggest "es" as well as "m".
8002         * config/rs6000/constraints.md (es): New memory constraint.
8003         (Q, Z): Update strings to match new documentation.
8004
8005 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
8006
8007         * config/rs6000/rs6000.c (rs6000_mode_dependent_address): Allow any
8008         offset from virtual_stack_vars_rtx and arg_pointer_rtx.
8009         * config/rs6000/predicates.md (volatile_mem_operand): Use
8010         offsettable_nonstrict_memref_p.
8011         * config/rs6000/rs6000.md (*floatsidf2_internal): Remove split check.
8012         (*floatunssidf2_internal): Likewise.
8013         (*fix_truncdfsi2_internal): Likewise.
8014         (*fix_trunctfsi2_internal): Likewise.
8015
8016 2009-07-17  Anatoly Sokolov  <aesok@post.ru>
8017
8018         * config/avr/avr-devices.c (avr_mcu_t): Add atmega8u2, atmega16u2 and
8019         atmega32u2 devices.
8020         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
8021
8022 2009-07-17  Richard Guenther  <rguenther@suse.de>
8023
8024         PR c/40401
8025         * tree-pass.h (pass_diagnose_omp_blocks): Declare.
8026         (pass_warn_unused_result): Likewise.
8027         (TODO_set_props): Remove.
8028         * omp-low.c (diagnose_omp_structured_block_errors): Change to
8029         run as a pass.
8030         (pass_diagnose_omp_blocks): Define.
8031         * c-decl.c (pop_file_scope): Do not finalize the CU here.
8032         (c_gimple_diagnostics_recursively): Remove.
8033         (finish_function): Do not call it.
8034         (c_write_global_declarations): Continue after errors.
8035         Finalize the CU here.
8036         * c-gimplify.c (c_genericize): Do not gimplify here.
8037         * c-common.c (c_warn_unused_result): Move ...
8038         * tree-cfg.c (do_warn_unused_result): ... here.
8039         (run_warn_unused_result): New function.
8040         (gate_warn_unused_result): New function.
8041         (pass_warn_unused_result): New pass.
8042         * c-common.h (c_warn_unused_result): Remove.
8043         * flags.h (flag_warn_unused_result): Declare.
8044         * c-opts.c (c_common_init_options): Enable flag_warn_unused_result.
8045         * opts.c (flag_warn_unused_result): Initialize to false.
8046         * toplev.c (compile_file): Add comment.
8047         * omp-low.c (create_omp_child_function): Do not register
8048         the function with the frontend.
8049         (diagnose_omp_structured_block_errors): Prepare to be
8050         called as optimization pass.
8051         (gate_diagnose_omp_blocks): New function.
8052         (pass_diagnose_omp_blocks): New pass.
8053         * cgraph.h (cgraph_optimize): Remove.
8054         (cgraph_analyze_function): Likewise.
8055         * cgraph.c (cgraph_add_new_function): Gimplify C++ thunks.
8056         * cgraphunit.c (cgraph_lower_function): Lower nested functions
8057         before their parents here.
8058         (cgraph_finalize_function): Not here.
8059         (cgraph_analyze_function): Gimplify functions here.
8060         (cgraph_finalize_compilation_unit): Continue after errors.
8061         Optimize the callgraph from here.
8062         (cgraph_optimize): Make static.
8063         * langhooks.c (write_global_declarations): Finalize the CU.
8064         * gimplify.c (gimplify_asm_expr): Do not emit ASMs with errors.
8065         (gimplify_function_tree): Assert we gimplify only once.
8066         Set PROP_gimple_any property.
8067         * tree-nested.c (gimplify_all_functions): New function.
8068         (lower_nested_functions): Gimplify all nested functions.
8069         * gimple.h (diagnose_omp_structured_block_errors): Remove.
8070         * passes.c (init_optimization_passes): Add pass_warn_unused_result
8071         and pass_diagnose_omp_blocks after gimplification.  Do not
8072         set TODO_set_props on all_lowering_passes.
8073         (execute_one_pass): Do not handle TODO_set_props.
8074         * Makefile.in (cgraphunit.o): Add $(TREE_DUMP_H) dependency.
8075         (gimplify.o): Add tree-pass.h dependency.
8076         * tree-inline.c (copy_statement_list): Properly copy STATEMENT_LIST.
8077         (copy_tree_body_r): Properly handle TARGET_EXPR like SAVE_EXPR.
8078         (unsave_r): Likewise.
8079         * c-omp.c (c_finish_omp_atomic): Set DECL_CONTEXT on the
8080         temporary variable.
8081
8082 2009-07-17  Sandra Loosemore  <sandra@codesourcery.com>
8083
8084         * doc/service.texi (Service): Restore previously removed link,
8085         which isn't broken after all.
8086
8087 2009-07-17  Richard Guenther  <rguenther@suse.de>
8088
8089         PR tree-optimization/40321
8090         * tree-ssa-pre.c (add_to_exp_gen): Also add names defined by
8091         PHI nodes to the maximal set.
8092         (make_values_for_phi): Add PHI arguments to the maximal set.
8093         (execute_pre): Dump PHI_GEN and the maximal set.
8094
8095 2009-07-17  Jakub Jelinek  <jakub@redhat.com>
8096
8097         PR c++/40780
8098         * gimplify.c (gimplify_conversion): Don't change non-conversions into
8099         VIEW_CONVERT_EXPR.
8100
8101 2009-07-16  Sandra Loosemore  <sandra@codesourcery.com>
8102
8103         * doc/extend.texi (Nested Functions): Replace broken link with
8104         textual reference.
8105         * doc/service.texi (Service): Remove broken link.
8106
8107 2009-07-16  H.J. Lu  <hongjiu.lu@intel.com>
8108
8109         PR bootstrap/40781
8110         * builtins.c (expand_builtin_memcmp): Use loc instead of
8111         EXPR_LOCATION (exp).
8112         (expand_builtin_strncmp): Likewise.
8113
8114 2009-07-17  Aldy Hernandez  <aldyh@redhat.com>
8115             Manuel López-Ibáñez  <manu@gcc.gnu.org>
8116
8117         PR 40435
8118         * tree-complex.c, tree-loop-distribution.c, tree.c, tree.h,
8119         builtins.c, fold-const.c, omp-low.c, cgraphunit.c, tree-ssa-ccp.c,
8120         tree-ssa-dom.c, gimple-low.c, expr.c, tree-ssa-ifcombine.c,
8121         c-decl.c, stor-layout.c, tree-if-conv.c, c-typeck.c, gimplify.c,
8122         calls.c, tree-sra.c, tree-mudflap.c, tree-ssa-copy.c,
8123         tree-ssa-forwprop.c, c-convert.c, c-omp.c, varasm.c,
8124         tree-inline.c, c-common.c, c-common.h, gimple.c,
8125         tree-switch-conversion.c, gimple.h, tree-cfg.c, c-parser.c,
8126         convert.c: Add location argument to fold_{unary,binary,ternary},
8127         fold_build[123], build_call_expr, build_size_arg,
8128         build_fold_addr_expr, build_call_array, non_lvalue, size_diffop,
8129         fold_build1_initializer, fold_build2_initializer,
8130         fold_build3_initializer, fold_build_call_array,
8131         fold_build_call_array_initializer, fold_single_bit_test,
8132         omit_one_operand, omit_two_operands, invert_truthvalue,
8133         fold_truth_not_expr, build_fold_indirect_ref, fold_indirect_ref,
8134         combine_comparisons, fold_builtin_*, fold_call_expr,
8135         build_range_check, maybe_fold_offset_to_address, round_up,
8136         round_down.
8137
8138 2009-07-16  Jason Merrill  <jason@redhat.com>
8139
8140         PR libstdc++/37907
8141         * c-common.c (c_common_reswords): Add __is_standard_layout
8142         and __is_trivial.
8143         * c-common.h (enum rid): Add RID_IS_STD_LAYOUT and RID_IS_TRIVIAL.
8144         * doc/implement-cxx.texi: New.
8145         * doc/gcc.texi: Include it.
8146
8147 2009-07-16  DJ Delorie  <dj@redhat.com>
8148
8149         * config/m32c/m32c.c (m32c_compare_redundant): Avoid removing
8150         compares that may be indirectly affected by previous instructions.
8151
8152 2009-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8153
8154         * builtins.c (do_mpc_arg2): New.
8155         (fold_builtin_2): Fold builtin cpow.
8156         * real.h (HAVE_mpc_pow): New.
8157
8158 2009-07-16  Bingfeng Mei  <bmei@broadcom.com>
8159
8160         * modulo-sched.c (sms_schedule): stage_count <= 1 as correct
8161         comparison to skip unprofitable schedule
8162
8163 2009-07-16  Simon Baldwin  <simonb@google.com>
8164
8165         * gcc.c (option_map): New flag -no-canonical-prefixes.
8166         * (display_help): Print help text for new flag.
8167         * (process_command): Move options translation and language specifics
8168         and handle new flag early.  Use it to set a function pointer to a
8169         prefix builder.  Replace make_relative_prefix calls with calls to
8170         the function pointed to.  Ignore new flag in regular options handling.
8171         * doc/invoke.texi (Overall Options): Documented -no-canonical-prefixes.
8172
8173 2009-07-15  DJ Delorie  <dj@redhat.com>
8174
8175         * config/mep/mep.md (sibcall_internal): Change register to avoid
8176         argument registers.
8177         (sibcall_value_internal): Likewise.
8178
8179 2009-07-15  Eric Botcazou  <ebotcazou@adacore.com>
8180
8181         PR rtl-optimization/40710
8182         * resource.c (mark_target_live_regs): Reset DF problem to LR.
8183
8184 2009-07-15  Adam Nemet  <anemet@caviumnetworks.com>
8185
8186         * config/mips/mips.md (*extenddi_truncate<mode>,
8187         *extendsi_truncate<mode>): Change type attribute to move_type
8188         with shift_shift.  Split out code handling exts from here ...
8189         (*extend<GPR:mode>_truncate<SHORT:mode>_exts): ... to this new
8190         pattern.
8191         (*extendhi_truncateqi): Change type attribute to move_type with
8192         shift_shift.  Split out code handling exts from here ...
8193         (*extendhi_truncateqi_exts): ... to this new pattern.
8194
8195 2009-07-15  Uros Bizjak  <ubizjak@gmail.com>
8196
8197         * config/i386/sse.md (copysign<mode>3): Use "and-not" SSE instruction
8198         instead of "and" with inverted sign bit mask value.  Use
8199         "nonimmediate_operand" for operand 1 and operand 2 predicate.
8200         Allocate registers only for operand 4 and operand 5.
8201
8202 2009-07-15  Jakub Jelinek  <jakub@redhat.com>
8203
8204         PR middle-end/40747
8205         * fold-const.c (fold_cond_expr_with_comparison): When folding
8206         < and <= to MIN, make sure the MIN uses the same type as the
8207         comparison's operands.
8208
8209 2009-07-15  Richard Earnshaw  <rearnsha@arm.com>
8210
8211         * arm.md (ior_xor): New code iterator.
8212         (split for ior/xor with shift and zero-extend): New split pattern.
8213         * arm/predicates.md (subreg_lowpart_operator): New special predicate.
8214
8215 2009-07-15  Richard Guenther  <rguenther@suse.de>
8216
8217         * tree-ssa-structalias.c (make_constraint_from_heapvar): Initialize
8218         offset member.
8219
8220 2009-07-15  Richard Guenther  <rguenther@suse.de>
8221
8222         PR middle-end/40753
8223         * alias.c (ao_ref_from_mem): Reject FUNCTION_DECL and LABEL_DECL bases.
8224
8225 2009-07-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
8226
8227         * config/m68k/linux-unwind.h (m68k_fallback_frame_state): Update to
8228         handle 2.6.30 kernel.
8229
8230 2009-07-15  DJ Delorie  <dj@redhat.com>
8231
8232         * config/mep/mep.md (sibcall_internal): Change register to allow
8233         for 24-bit addresses.
8234         (sibcall_value_internal): Likewise.
8235
8236 2009-07-14  Ghassan Shobaki  <ghassan.shobaki@amd.com>
8237
8238         * doc/invoke.texi: Added descriptions of the  scheduling heuristics
8239         that are enabled/disabled by the flags introduced by a previous patch.
8240
8241 2009-07-14  DJ Delorie  <dj@redhat.com>
8242
8243         * config/mep/mep.md (sibcall_internal): Include non-toggling
8244         non-jmp case.
8245         (sibcall_value_internal): Likewise.
8246
8247 2009-07-14  Taras Glek  <tglek@mozilla.com>
8248             Rafael Espindola  <espindola@google.com>
8249
8250         * doc/sourcebuild.texi: Document install-plugin target.
8251         * configure.ac: Added install-plugin target to language makefiles.
8252         * configure: Regenerate.
8253         * Makefile.in: (install-plugin): Install more headers,
8254         depend on lang.install-plugin.
8255
8256 2009-07-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
8257
8258         * tree-vrp.c (vrp_evaluate_conditional): Mark strings for
8259         translation.
8260
8261 2009-07-14  DJ Delorie  <dj@redhat.com>
8262
8263         * config/mep/mep.c (mep_vliw_jmp_match): New function.
8264         * config/mep/mep-protos.h (mep_vliw_jmp_match): Prototype it.
8265         * config/mep/mep.md (sibcall_internal): Change test from
8266         mep_vliw_mode_match to mep_vliw_jmp_match.
8267         (sibcall_value_internal): Likewise.
8268
8269 2009-07-14  Uros Bizjak  <ubizjak@gmail.com>
8270
8271         * config/i386/sse.md (copysign<mode>3): New expander.
8272         * config/i386/i386-protos.h (ix86_build_signbit_mask): New prototype.
8273         * config/i386/i386.c (ix86_build_signbit_mask): Make public.
8274         Use ix86_build_const_vector.
8275         (enum ix86_builtins): Add IX86_BUILTIN_CPYSGNPS and
8276         IX86_BUILTIN_CPYSGNPD.
8277         (builtin_description): Add __builtin_ia32_copysignps and
8278         __builtin_ia32_copysignpd.
8279         (ix86_builtin_vectorized_function): Handle BUILT_IN_COPYSIGN
8280         and BUILT_IN_COPYSIGNF.
8281
8282 2009-07-13  Jason Merrill  <jason@redhat.com>
8283
8284         * builtins.c (can_trust_pointer_alignment): New fn.
8285         (get_pointer_alignment): Factor it out from here.
8286         * tree.h: Declare it.
8287
8288 2009-07-14  David Edelsohn  <edelsohn@gnu.org>
8289
8290         * config/rs6000/predicates.md (offsettable_mem_operand): Test
8291         RTX_AUTOINC class.
8292
8293 2009-07-14  Dodji Seketeli  <dodji@redhat.com>
8294
8295         PR debug/40705
8296         PR c++/403057
8297         * dwarf2.out.c (gen_type_die_with_usage): Added comment.
8298
8299 2009-07-14  Richard Guenther  <rguenther@suse.de>
8300             Andrey Belevantsev <abel@ispras.ru>
8301
8302         PR middle-end/40745
8303         * cfgexpand.c (partition_stack_vars): Do not bother to update
8304         alias information when not optimizing.
8305
8306 2009-07-14  Richard Guenther  <rguenther@suse.de>
8307             Andrey Belevantsev <abel@ispras.ru>
8308
8309         * tree-ssa-alias.h (refs_may_alias_p_1): Declare.
8310         (pt_solution_set): Likewise.
8311         * tree-ssa-alias.c (refs_may_alias_p_1): Export.
8312         * tree-ssa-structalias.c (pt_solution_set): New function.
8313         * final.c (rest_of_clean_state): Free SSA data structures.
8314         * print-rtl.c (print_decl_name): Remove.
8315         (print_mem_expr): Implement in terms of print_generic_expr.
8316         * alias.c (ao_ref_from_mem): New function.
8317         (rtx_refs_may_alias_p): Likewise.
8318         (true_dependence): Query alias-export info.
8319         (canon_true_dependence): Likewise.
8320         (write_dependence_p): Likewise.
8321         * tree-dfa.c (get_ref_base_and_extent): For void types leave
8322         size unknown.
8323         * emit-rtl.c (component_ref_for_mem_expr): Remove.
8324         (mem_expr_equal_p): Use operand_equal_p.
8325         (set_mem_attributes_minus_bitpos): Do not use
8326         component_ref_for_mem_expr.
8327         * cfgexpand.c (add_partitioned_vars_to_ptset): New function.
8328         (update_alias_info_with_stack_vars): Likewise.
8329         (partition_stack_vars): Call update_alias_info_with_stack_vars.
8330         * tree-ssa.c (delete_tree_ssa): Do not release SSA names
8331         explicitly nor clear stmt operands.
8332         Free the decl-to-pointer map.
8333         * tree-optimize.c (execute_free_datastructures): Do not free
8334         SSA data structures here.
8335         * tree-flow.h (struct gimple_df): Add decls_to_pointers member.
8336         * Makefile.in (emit-rtl.o): Add pointer-set.h dependency.
8337         (alias.o): Add tree-ssa-alias.h, pointer-set.h and $(TREE_FLOW_H)
8338         dependencies.
8339         (print-rtl.o): Add $(DIAGNOSTIC_H) dependency.
8340
8341 2009-07-13  DJ Delorie  <dj@redhat.com>
8342
8343         * config/mep/mep.h (CC1_SPEC): Tweak parameters to trigger
8344         unrolling at the right iteration count.
8345
8346         * config/mep/mep.c (mep_expand_prologue): Fix frame pointer
8347         calculations.
8348
8349 2009-07-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
8350
8351         * haifa-sched.c (rank_for_schedule): Introduced flags to
8352         enable/disable individual scheduling heuristics.
8353         * common.opt: Introduced flags to enable/disable individual
8354         heuristics in the scheduler.
8355         * doc/invoke.texi: Introduced flags to enable/disable individual
8356         heuristics in the scheduler.
8357
8358 2009-07-13  Kai Tietz  <kai.tietz@onevision.com>
8359
8360         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Remove file
8361         config/i386/mingw-tls.c.
8362         * config/i386/mingw-tls.c: Removed.
8363
8364 2009-07-13  Ira Rosen  <irar@il.ibm.com>
8365
8366         * tree-vect-loop.c (get_initial_def_for_reduction): Ensure that the
8367         checks access only relevant statements.
8368         (vectorizable_reduction): Likewise.
8369
8370 2009-07-12  Kai Tietz  <kai.tietz@onevision.com>
8371
8372         * config/i386/cygming.h (TARGET_OS_CPP_BUILTINS): Define _X86_
8373         just for 32-bit case.
8374
8375 2009-07-12  Jan Hubicka  <jh@suse.cz>
8376
8377         PR tree-optimization/40585
8378         * except.c (expand_resx_expr): When there already is resume
8379         instruction, produce linked list.
8380         (build_post_landing_pads): Assert that resume is empty.
8381         (connect_post_landing_pads): Handle resume lists.
8382         (dump_eh_tree): Dump resume list.
8383
8384 2009-07-12  Ira Rosen  <irar@il.ibm.com>
8385
8386         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
8387         with additional argument.
8388         * tree-vectorizer.h (enum vect_def_type): Add
8389         vect_double_reduction_def.
8390         (vect_is_simple_reduction): Add argument.
8391         * tree-vect-loop.c (vect_determine_vectorization_factor): Fix
8392         indentation.
8393         (vect_analyze_scalar_cycles_1): Detect double reduction. Call
8394         vect_is_simple_reduction with additional argument.
8395         (vect_analyze_loop_operations): Handle exit phi nodes in case of
8396         double reduction.
8397         (reduction_code_for_scalar_code): Handle additional codes by
8398         returning ERROR_MARK for them. Fix comment and indentation.
8399         (vect_is_simple_reduction): Fix comment, add argument to specify
8400         double reduction. Detect double reduction.
8401         (get_initial_def_for_induction): Fix indentation.
8402         (get_initial_def_for_reduction): Fix comment and indentation.
8403         Handle double reduction. Create initial definitions that do not
8404         require adjustment if ADJUSTMENT_DEF is NULL. Handle additional cases.
8405         (vect_create_epilog_for_reduction): Fix comment, add argument to
8406         handle double reduction. Use PLUS_EXPR in case of MINUS_EXPR in
8407         epilogue result extraction. Create double reduction phi node and
8408         replace relevant uses.
8409         (vectorizable_reduction): Call vect_is_simple_reduction with
8410         additional argument. Fix indentation. Update epilogue code treatment
8411         according to the changes in reduction_code_for_scalar_code. Check
8412         for double reduction. Call vect_create_epilog_for_reduction with
8413         additional argument.
8414         * tree-vect-stmts.c (process_use): Handle double reduction, update
8415         documentation.
8416         (vect_mark_stmts_to_be_vectorized): Handle double reduction.
8417         (vect_get_vec_def_for_operand): Likewise.
8418
8419 2009-07-12  Danny Smith  <dansmister@gmail.com>
8420
8421         * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't
8422         dllexport if !TREE_PUBLIC.
8423         (i386_pe_maybe_record_exported_symbol): Assert TREE_PUBLIC.
8424
8425 2009-07-11  Anatoly Sokolov  <aesok@post.ru>
8426
8427         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Redefine.
8428         (avr_extra_arch_macro) Remove declatation.
8429         * config/avr/avr.c (avr_cpu_cpp_builtins): New function.
8430         (avr_extra_arch_macro) Declare as static.
8431         * config/avr/avr-protos.h (avr_cpu_cpp_builtins): Dclare.
8432
8433 2009-07-11  Jan Hubicka  <jh@suse.cz>
8434
8435         PR middle-end/48388
8436         * except.c (can_be_reached_by_runtime): Test for NULL aka bitmap.
8437
8438 2009-07-11  Jakub Jelinek  <jakub@redhat.com>
8439
8440         PR debug/40713
8441         * dwarf2out.c (dw_fde_struct): Add in_std_section and
8442         cold_in_std_section bits.
8443         (dwarf2out_begin_prologue): Initialize them.
8444         (dwarf2out_finish): Don't emit FDE range into .debug_ranges
8445         if already covered by text_section or cold_text_section range.
8446
8447         PR rtl-optimization/40667
8448         * defaults.h (MINIMUM_ALIGNMENT): Define if not defined.
8449         * doc/tm.texi (MINIMUM_ALIGNMENT): Document it.
8450         * config/i386/i386.h (MINIMUM_ALIGNMENT): Define.
8451         * config/i386/i386.c (ix86_minimum_alignment): New function.
8452         * config/i386/i386-protos.h (ix86_minimum_alignment): New prototype.
8453         * cfgexpand.c (expand_one_var): Use MINIMIM_ALIGNMENT.
8454         * emit-rtl.c (gen_reg_rtx): Likewise.
8455         * function.c (assign_parms): Likewise.  If nominal_type needs
8456         bigger alignment than FUNCTION_ARG_BOUNDARY, use its alignment
8457         rather than passed_type's alignment.
8458
8459         PR target/40668
8460         * function.c (assign_parm_setup_stack): Adjust
8461         MEM_OFFSET (data->stack_parm) if promoted_mode is different
8462         from nominal_mode on big endian.
8463
8464 2009-07-11  Paolo Bonzini  <bonzini@gnu.org>
8465
8466         * expmed.c (emit_store_flag_1): Fix choice of zero vs. sign extension.
8467
8468 2009-07-10  DJ Delorie  <dj@redhat.com>
8469
8470         * config/mep/mep.c (mep_can_inline_p): Correct logic, and simplify.
8471
8472 2009-07-10  Mark Mitchell  <mark@codesourcery.com>
8473
8474         * config/arm/thumb2.md (thumb2_cbz): Correct computation of length
8475         attribute.
8476         (thumb2_cbnz): Likewise.
8477
8478 2009-07-10  David Daney  <ddaney@caviumnetworks.com>
8479
8480         PR target/39079
8481         * config.gcc (supported_defaults): Add synci.
8482         (with_synci): Add validation.
8483         (all_defaults): Add synci.
8484         * config/mips/mips.md (clear_cache): Use TARGET_SYNCI instead of
8485         ISA_HAS_SYNCI.
8486         (synci): Same.
8487         * config/mips/mips.opt (msynci): New option.
8488         * config/mips/mips.c (mips_override_options): Warn on use of
8489         -msynci for targets that do now support it.
8490         * gcc/config/mips/mips.h (OPTION_DEFAULT_SPECS): Add a default for
8491         msynci.
8492         * gcc/doc/invoke.texi (-msynci): Document the new option.
8493         * doc/install.texi (--with-synci): Document the new option.
8494
8495 2009-07-10  Richard Guenther  <rguenther@suse.de>
8496
8497         PR tree-optimization/40496
8498         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Create
8499         the PHI result with a compatible type.
8500
8501 2009-07-10  Manuel López-Ibáñez  <manu@gcc.gnu.org>
8502
8503         PR 25509
8504         PR 40614
8505         * c.opt (Wunused-result): New.
8506         * doc/invoke.texi: Document it.
8507         * c-common.c (c_warn_unused_result): Use it.
8508
8509 2009-07-09  DJ Delorie  <dj@redhat.com>
8510
8511         * targhooks.c (default_target_can_inline_p): Rename from
8512         default_target_option_can_inline_p.
8513         * targhooks.h (default_target_can_inline_p): Likewise.
8514         * target-def.h (TARGET_CAN_INLINE_P): Rename from
8515         TARGET_OPTION_CAN_INLINE_P.
8516         * config/i386/i386.c (TARGET_CAN_INLINE_P): Likewise.
8517         * config/mep/mep.c (TARGET_CAN_INLINE_P): Likewise.
8518         (mep_target_can_inline_p): Rename from
8519         mep_target_option_can_inline_p.
8520
8521         PR target/40626
8522         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Add coprocessor
8523         registers used to pass vectors.
8524
8525         * config/mep/mep.c (mep_option_can_inline_p): Remove error call.
8526
8527 2009-07-09  Tom Tromey  <tromey@redhat.com>
8528
8529         * unwind-dw2-fde-darwin.c: Include dwarf2.h.
8530         * config/mmix/mmix.c: Include dwarf2.h.
8531         * config/rs6000/darwin-fallback.c: Include dwarf2.h.
8532         * config/xtensa/unwind-dw2-xtensa.c: Include dwarf2.h.
8533         * config/sh/sh.c: Include dwarf2.h.
8534         * config/i386/i386.c: Include dwarf2.h.
8535         * Makefile.in (DWARF2_H): Remove 'elf'.
8536         * except.c: Include dwarf2.h.
8537         * unwind-dw2.c: Include dwarf2.h.
8538         * dwarf2out.c: Include dwarf2.h.
8539         * unwind-dw2-fde-glibc.c: Include dwarf2.h.
8540         * unwind-dw2-fde.c: Include dwarf2.h.
8541         * dwarf2asm.c: Include dwarf2.h.
8542
8543 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
8544
8545         * haifa-sched.c (insn_finishes_cycle_p): New static function.
8546         (max_issue): Use it.
8547         * sched-int.h (struct sched_info: insn_finishes_block_p): New
8548         scheduler hook.
8549         * sched-rgn.c (rgn_insn_finishes_block_p): Implement it.
8550         (region_sched_info): Update.
8551         * sched-ebb.c (ebb_sched_info): Update.
8552         * modulo-sched.c (sms_sched_info): Update.
8553         * sel-sched-ir.c (sched_sel_haifa_sched_info): Update.
8554
8555 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
8556
8557         * varasm.c (build_constant_desc): Don't share RTL in pool entries.
8558
8559 2009-07-09  Basile Starynkevitch  <basile@starynkevitch.net>
8560
8561         * plugin.c (try_init_one_plugin): passes RTLD_GLOBAL to dlopen.
8562
8563 2009-07-09  Jakub Jelinek  <jakub@redhat.com>
8564
8565         PR middle-end/40692
8566         * fold-const.c (fold_cond_expr_with_comparison): Don't replace
8567         arg1 with arg01 if arg1 is already INTEGER_CST.
8568
8569 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
8570
8571         * simplify-rtx.c (simplify_binary_operation_1) <AND>:
8572         Transform (and (truncate)) into (truncate (and)).
8573
8574 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
8575
8576         * combine.c (make_extraction): Check TRULY_NOOP_TRUNCATION before
8577         creating LHS paradoxical subregs.  Fix surrounding returns to
8578         use NULL_RTX rather than 0.
8579
8580 2009-07-08  DJ Delorie  <dj@redhat.com>
8581
8582         * config/mep/mep.c: (mep_option_can_inline_p): New.
8583         (TARGET_OPTION_CAN_INLINE_P): Define.
8584
8585 2009-07-08  Mark Wielaard  <mjw@redhat.com>
8586
8587         PR debug/40659
8588         * dwarf2out.c (add_data_member_location_attribute): When we have
8589         only a constant offset don't emit a new location description using
8590         DW_OP_plus_uconst, but just add the constant with add_AT_int, when
8591         dwarf_version > 2.
8592
8593 2009-07-08  Richard Henderson  <rth@redhat.com>
8594
8595         PR target/38900
8596         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move to i386.c.
8597         (enum reg_class): Add CLOBBERED_REGS.
8598         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Likewise.
8599         * config/i386/i386.c (ix86_conditional_register_usage): Moved
8600         from CONDITIONAL_REGISTER_USAGE; build CLOBBERED_REGS for 64-bit.
8601         (ix86_function_ok_for_sibcall): Tidy.  Disallow MS->SYSV sibcalls.
8602         (ix86_expand_call): Use sibcall_insn_operand when needed.  Don't
8603         force 64-bit sibcalls into R11.
8604         * config/i386/constraints.md (U): New constraint.
8605         * config/i386/i386.md (sibcall_1, sibcall_value_1): Use it.
8606         (sibcall_1_rex64, sibcall_value_1_rex64): Likewise.
8607         (sibcall_1_rex64_v, sibcall_value_1_rex64_v): Remove.
8608
8609 2009-07-08  Shujing Zhao  <pearly.zhao@oracle.com>
8610
8611         * basic-block.h (dump_regset, debug_regset): Remove duplicate
8612         prototypes.
8613         * c-objc-common.h (c_initialize_diagnostics): Ditto.
8614         * ebitmap.h (dump_ebitmap): Ditto.
8615         * optabs.h (optab_libfunc): Ditto.
8616         * tree.h (tree_expr_nonzero_warnv_p): Ditto.
8617         * tree-flow.h (vect_can_force_dr_alignment_p,
8618         get_vectype_for_scalar_type): Ditto.
8619         (vectorize_loops): Move prototype to ...
8620         * tree-vectorizer.h: ... here. Also, adjust comment.
8621         (vect_set_verbosity_level): Remove duplicate prototype.
8622         * tree-ssa-loop.c: Include tree-vectorizer.h.
8623         * Makefile.in (tree-ssa-loop.o): Depend on tree-vectorizer.h.
8624
8625 2009-07-08  Nick Clifton  <nickc@redhat.com>
8626
8627         * config/i386/unix.h (ASM_COMMENT_START): Add a space after the
8628         forward slash.
8629
8630 2009-07-08  DJ Delorie  <dj@redhat.com>
8631
8632         * config/mep/mep-ivc2.cpu (cpmovtocsar0_C3, cpmovtocsar1_C3,
8633         cpmovtocc_C3, cpmovtocsar0_P0S_P1, cpmovtocsar1_P0S_P1,
8634         cpmovtocc_P0S_P1): Mark volatile.  Note which registers are
8635         written to.
8636         * config/mep/intrinsics.md: Regenerated.
8637         * config/mep/mep.c (mep_interrupt_saved_reg): Save IVC2 control
8638         registers when asm() or calls are detected.
8639
8640 2009-07-08  Manuel López-Ibáñez  <manu@gcc.gnu.org>
8641
8642         PR c++/31246
8643         * gimplify.c (gimplify_expr): Propagate no_warning flag when
8644         gimplifying.
8645         * gimple (gimple_build_call_from_tree): Likewise.
8646         * tree-cfg.c (remove_useless_stmts_warn_notreached): Check
8647         no_warning flag before warning.
8648
8649 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
8650
8651         * tree.c (set_expr_locus): Remove.
8652         * tree.h (EXPR_LOCUS,SET_EXPR_LOCUS,set_expr_locus): Remove.
8653         * c-typeck.c (c_finish_stmt_expr):  Replace EXPR_LOCUS by
8654         EXPR_LOCATION.
8655         * gimplify.c (internal_get_tmp_var): Likewise.
8656         (gimplify_call_expr): Likewise.
8657         (gimplify_one_sizepos): Likewise.
8658
8659 2009-07-07  Eric Botcazou  <ebotcazou@adacore.com>
8660
8661         PR debug/40666
8662         * dbxout.c (dbxout_symbol) <PARM_DECL>: Deal with parameters pointing
8663         to variables for debugging purposes.
8664
8665 2009-06-23  Mark Loeser  <mark@halcy0n.com>
8666
8667         PR build/40010
8668         * Makefile.in (gcc.pod): Depend on gcc-vers.texi.
8669
8670 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
8671
8672         * pretty-print.c (pp_base_format): Remove %J.
8673         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
8674         gcc_cxxdiag_char_table): Likewise.
8675         (init_dynamic_diag_info): Likewise.
8676
8677 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
8678
8679         * pretty-print.c (pp_base_format): Remove %H.
8680         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
8681         gcc_cxxdiag_char_table): Likewise.
8682         (init_dynamic_diag_info): Likewise.
8683         * config/mep/mep.c (mep_select_section): Likewise.
8684
8685 2009-07-07  Duncan Sands  <baldrick@free.fr>
8686
8687         * final.c (pass_clean_state): Give the pass a name.
8688         * passes.c (pass_rest_of_compilation): Likewise.
8689         * tree-optimize.c (pass_all_optimizations): Likewise.
8690
8691 2009-07-07  H.J. Lu  <hongjiu.lu@intel.com>
8692
8693         * config/ia64/ia64.c (ia64_handle_model_attribute): Remove
8694         an extra 'decl' for error_at.
8695
8696 2009-07-07  Jakub Jelinek  <jakub@redhat.com>
8697
8698         PR middle-end/40669
8699         * tree-tailcall.c (adjust_return_value_with_ops,
8700         create_tailcall_accumulator): Set DECL_GIMPLE_REG_P on the temporary
8701         if it has complex or vector type.
8702
8703 2009-07-07  Olivier Hainque  <hainque@adacore.com>
8704
8705         * config/alpha/t-osf4 (SHLIB_LINK): Do not hide the dummy weak
8706         pthread symbols.
8707
8708 2009-07-07  Basile Starynkevitch  <basile@starynkevitch.net>
8709
8710         * Makefile.in: added more lists of includes to PLUGIN_HEADERS.
8711
8712 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
8713
8714         * cgraphunit.c: Replace %J by an explicit location.  Update all calls.
8715         * c-decl.c: Likewise.
8716         * function.c: Likewise.
8717         * varasm.c: Likewise.
8718         * tree-ssa.c: Likewise.
8719         * c-common.c: Likewise.
8720         * tree-cfg.c: Likewise.
8721         * config/spu/spu.c: Likewise.
8722         * config/ia64/ia64.c: Likewise.
8723         * config/v850/v850.c: Likewise.
8724
8725 2009-07-06  DJ Delorie  <dj@redhat.com>
8726
8727         * config/mep/mep-core.cpu (fsft, ssarb): Mark as VOLATILE.
8728         * config/mep/mep-ivc2.cpu (many): Add VOLATILE to more insns that make
8729         unspecified accesses to control registers.
8730         * config/mep/intrinsics.md: Regenerate.
8731         * config/mep/intrinsics.h: Regenerate.
8732         * config/mep/mep-intrin.h: Regenerate.
8733
8734 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
8735
8736         * c-lex.c: Replace %H by an explicit location. Update all calls.
8737         * c-common.c: Likewise.
8738         * c-decl.c: Likewise.
8739         * c-typeck.c: Likewise.
8740         * fold-const.c: Likewise.
8741         * gimplify.c: Likewise.
8742         * stmt.c: Likewise.
8743         * tree-cfg.c: Likewise.
8744         * tree-ssa-loop-niter.c: Likewise.
8745         * tree-vrp.c: Likewise.
8746         * value-prof.c: Likewise.
8747
8748 2009-07-06  Diego Novillo  <dnovillo@google.com>
8749
8750         * tree-dfa.c (dump_variable): Write DECL_INITIAL for VAR
8751         if it has one.  Handle cases where VAR does not have an
8752         annotation or cfun is NULL.
8753
8754 2009-07-06  Diego Novillo  <dnovillo@google.com>
8755
8756         * tree.c: Include debug.h.
8757         (initialize_tree_contains_struct): New.
8758         (init_ttree): Call it.
8759         (tree_node_structure_for_code): Factor out of ...
8760         (tree_node_structure): ... here.
8761         * treestruct.def (TS_PHI_NODE): Remove.
8762         (TS_GIMPLE_STATEMENT): Remove.
8763
8764 2009-07-06  Diego Novillo  <dnovillo@google.com>
8765
8766         * tree-pretty-print.c (dump_generic_node): Protect against NULL op0.
8767         (debug_tree_chain): Handle cycles.
8768
8769 2009-07-06  Nick Clifton  <nickc@redhat.com>
8770             DJ Delorie  <dj@redhat.com>
8771
8772         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
8773         __FMOVD_ENABLED__ is defined.
8774         * config/sh/sh.h
8775         (TARGET_FMOVD): Provide a default definition.
8776         (MASK_FMOVD): Likewise.
8777         (TARGET_CPU_CPP_BUILTINS): Define
8778         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
8779         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
8780         two fmov instructions depending upon whether TARGET_FMOVD is enabled.
8781         (split for DF load from memory into register): Also handle
8782         MEMs which consist of REG+DISP addressing.
8783         (split for DF store from register to memory): Likewise.
8784         (movsf_ie): Always use single fp_mode.
8785         * config/sh/sh.c (sh_override_options): Do not automatically
8786         enable TARGET_MOVD for the SH2A when supporting doubles - leave
8787         that to the -mfmovd command line switch.
8788         (broken_move): Do not restrict fldi test to only the SH4 and SH4A.
8789         (fldi_ok): Always allow.
8790         * config/sh/sh.opt (mfmovd): Remove this switch.
8791         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
8792
8793 2009-07-06  J"orn Rennecke  <joern.rennecke@arc.com>
8794             Kaz Kojima  <kkojima@gcc.gnu.org>
8795
8796         PR rtl-optimization/30807
8797         * postreload.c (reload_combine): For every new use of REG_SUM,
8798         record the use of BASE.
8799
8800 2009-07-06  Jan Hubicka  <jh@suse.cz>
8801
8802         * params.def: Revert my accidental commit at 2009-06-30.
8803
8804 2009-07-04  Ian Lance Taylor  <iant@google.com>
8805
8806         PR target/40636
8807         * config/i386/msformat-c.c (mingw_format_attributes): Declare as
8808         EXPORTED_CONST.
8809         (mingw_format_attribute_overrides): Likewise.
8810
8811 2009-07-04  Jakub Jelinek  <jakub@redhat.com>
8812
8813         PR debug/40596
8814         * dwarf2out.c (based_loc_descr): For crtl->stack_realign_tried
8815         don't check cfa.reg.  Instead of cfa.indirect use
8816         fde && fde->drap_reg != INVALID_REGNUM test.
8817
8818 2009-07-04  Eric Botcazou  <ebotcazou@adacore.com>
8819
8820         * postreload.c (reload_combine): Replace CONST_REG with INDEX_REG.
8821
8822 2009-07-03  Vladimir Makarov  <vmakarov@redhat.com>
8823
8824         PR target/40587
8825         * ira.c (build_insn_chain): Use DF_LR_OUT instead of df_get_live_out.
8826
8827 2009-07-03  Richard Guenther  <rguenther@suse.de>
8828
8829         PR tree-optimization/40640
8830         * tree-switch-conversion.c (build_arrays): Perform arithmetic
8831         in original type.
8832
8833 2009-07-03  Jan Hubicka  <jh@suse.cz>
8834
8835         * ipa-inline.c (cgraph_decide_inlining_incrementally): When optimizing
8836         for size, reduce amount of inlining.
8837
8838 2009-07-03  Richard Guenther  <rguenther@suse.de>
8839
8840         PR middle-end/34163
8841         * tree-chrec.c (chrec_convert_1): Fold (T2)(t +- x) to (T2)t +- (T2)x
8842         if t +- x is known to not overflow and the conversion widens the
8843         operation.
8844         * Makefile.in (tree-chrec.o): Add $(FLAGS_H) dependency.
8845
8846 2009-07-03  Jan Hubicka  <jh@suse.cz>
8847
8848         * ipa-pure-const.c (analyze): Update loop optimizer init.
8849         * tree-ssa-loop-iv-canon.c (empty_loop_p, remove_empty_loop,
8850         try_remove_empty_loop, remove_empty_loops): Remove.
8851         * tree-ssa-loop.c (tree_ssa_empty_loop, pass_empty_loop): Remove.
8852         * tree-ssa-dce.c (find_obviously_necessary_stmts): Use finiteness info
8853         to mark regular loops as neccesary.
8854         (degenerate_phi_p): New function.
8855         (propagate_necessity, remove_dead_phis): Use it.
8856         (forward_edge_to_pdom): Likewise.
8857         (eliminate_unnecessary_stmts): Take care to remove uses of results of
8858         virtual PHI nodes that became unreachable.
8859         (perform_tree_ssa_dce): Initialize/deinitialize loop optimizer.
8860         * tree-flow.h (remove_empty_loops): Remove.
8861         * passes.c (init_optimization_passes): Remove.
8862
8863 2009-07-03  Uros Bizjak  <ubizjak@gmail.com>
8864
8865         * config/i386/i386.md (fix_trunc<mode>_fisttp_i387_1): Use
8866         can_create_pseudo_p.
8867         (*fix_trunc<mode>_i387_1): Ditto.
8868         (*floathi<mode>2_1): Ditto.
8869         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): Ditto.
8870         (*fistdi2_1): Ditto.
8871         (*fist<mode>2_1): Ditto.
8872         (frndintxf2_floor): Ditto.
8873         (*fist<mode>2_floor_1): Ditto.
8874         (frndintxf2_ceil): Ditto.
8875         (*fist<mode>2_ceil_1): Ditto.
8876         (frndintxf2_trunc): Ditto.
8877         (frndintxf2_mask_pm): Ditto.
8878         (fxam<mode>2_i387_with_temp): Ditto.
8879         * config/i386/sse.md (mulv16qi3): Ditto.
8880         (*sse2_mulv4si3): Ditto.
8881         (mulv2di3): Ditto.
8882         (sse4_2_pcmpestr): Ditto.
8883         (sse4_2_pcmpistr): Ditto.
8884
8885 2009-07-03  Jan Hubicka  <jh@suse.cz>
8886
8887         * tree-ssa-dce.c (bb_contains_live_stmts): New bitmap.
8888         (mark_stmt_necessary): Set it.
8889         (mark_operand_necessary): Set it.
8890         (mark_control_dependent_edges_necessary): Set it.
8891         (mark_virtual_phi_result_for_renaming): New function.
8892         (get_live_post_dom): New function.
8893         (forward_edge_to_pdom): New function.
8894         (remove_dead_stmt): Fix handling of control dependences.
8895         (tree_dce_init): Init new bitmap.
8896         (tree_dce_done): Free it.
8897
8898 2009-07-02  Richard Guenther  <rguenther@suse.de>
8899
8900         PR bootstrap/40617
8901         * tree-ssa-structalias.c (new_var_info): Initialize
8902         is_restrict_var.
8903
8904 2009-07-02  Jan Hubicka  <jh@suse.cz>
8905
8906         * ipa-pure-const.c (check_op): Use PTA info to see if indirect_ref is
8907         local.
8908
8909 2009-07-02  Paolo Bonzini  <bonzini@gnu.org>
8910
8911         * expmed.c (emit_cstore, emit_store_flag_1): Accept target_mode
8912         instead of recomputing it.  Adjust calls.
8913         (emit_store_flag): Adjust recursive calls.
8914
8915 2009-07-02  Richard Guenther  <rguenther@suse.de>
8916
8917         * tree-ssa-live.c (remove_unused_locals): Do not remove
8918         heap variables.
8919         * tree-ssa-structalias.c (handle_lhs_call): Delay setting
8920         of DECL_EXTERNAL for HEAP variables.
8921         (compute_points_to_sets): Set DECL_EXTERNAL for escaped
8922         HEAP variables.  Do not adjust RESTRICT vars.
8923         (find_what_var_points_to): Nobody cares if something
8924         points to READONLY.
8925
8926 2009-07-02  Ben Elliston  <bje@au.ibm.com>
8927
8928         * unwind-dw2-fde-glibc.c (_Unwind_IteratePhdrCallback): Move
8929         pc_low and pc_high declarations to the top of the function.
8930
8931 2009-07-01  DJ Delorie  <dj@redhat.com>
8932
8933         * config/mep/mep.c (mep_handle_option): Leave IVC2 control
8934         registers as fixed.
8935         (mep_interrupt_saved_reg): Save appropriate IVC2 control registers.
8936         * config/mep/mep-ivc2.cpu: Add VOLATILE to insns that make
8937         unspecified accesses to control registers.
8938         * config/mep/intrinsics.md: Regenerate.
8939         * config/mep/intrinsics.h: Regenerate.
8940         * config/mep/mep-intrin.h: Regenerate.
8941
8942 2009-07-01  Anthony Green  <green@moxielogic.com>
8943
8944         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
8945         instruction when possible.
8946         (moxie_expand_prologue): Ditto.  Also, save an instruction and
8947         some complexity by popping off of $r12 instead of $sp.
8948         * config/moxie/moxie.md (movsi_pop): Don't assume $sp.  Take two
8949         operands.
8950
8951 2009-07-01  Richard Henderson  <rth@redhat.com>
8952
8953         PR bootstrap/40347
8954         * function.c (reposition_prologue_and_epilogue_notes): If epilogue
8955         contained no insns, reposition note before last insn.
8956
8957 2009-07-01  Richard Henderson  <rth@redhat.com>
8958
8959         PR debug/40431
8960         * dwarf2out.c (def_cfa_1): Revert 2009-06-11 change for
8961         DW_CFA_def_cfa_offset and DW_CFA_def_cfa.
8962
8963 2009-07-01  Michael Meissner  <meissner@linux.vnet.ibm.com>
8964
8965         PR bootstrap/40558
8966         * config/rs6000/rs6000.c (print_operand): Undo change that breaks
8967         darwin9 for printing reg addresses with %y.
8968
8969 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
8970
8971         * combine.c (force_to_mode): Handle TRUNCATE.  Factor out
8972         truncation from operands in binary operations.
8973
8974 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
8975
8976         Revert:
8977         2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
8978         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
8979         subreg of op0 to the original op0.
8980
8981         * expmed.c (store_bit_field_1): Use a temporary as the destination
8982         instead of a paradoxical subreg when we need to truncate the result.
8983
8984 2009-07-01  DJ Delorie  <dj@redhat.com>
8985
8986         * config/mep/mep-ivc2.cpu (cmov, cmovc, cmovh): Add intrinsic
8987         names to VLIW variants.
8988         (ivc2rm, ivc2crn): Make data type consistent with non-VLIW variants.
8989         * config/mep/intrinsics.md: Regenerate.
8990         * config/mep/intrinsics.h: Regenerate.
8991         * config/mep/mep-intrin.h: Regenerate.
8992
8993 2009-07-01  Jakub Jelinek  <jakub@redhat.com>
8994
8995         PR debug/40462
8996         * jump.c (returnjump_p): Revert last patch.
8997         * dwarf2out.c (dwarf2out_begin_epilogue): Handle SEQUENCEs.
8998
8999 2009-07-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
9000
9001         PR target/40575
9002         * pa.md (casesi32p): Use jump table label to determine the offset
9003         of the jump table.
9004         (casesi64p): Likewise.
9005
9006         * pa.c (forward_branch_p): Return bool type.  Use instruction
9007         addresses when available.  Assert that INSN has a jump label.
9008         (pa_adjust_insn_length): Don't call forward_branch_p if INSN doesn't
9009         have a jump label.
9010
9011 2009-07-01  Richard Guenther  <rguenther@suse.de>
9012
9013         PR tree-optimization/19831
9014         * tree-ssa-dce.c (propagate_necessity): Calls to functions
9015         that only act as barriers do not make any previous stores necessary.
9016         * tree-ssa-structalias.c (handle_lhs_call): Delay making
9017         HEAP variables global, do not add a constraint from nonlocal.
9018         (find_func_aliases): Handle escapes through return statements.
9019         (compute_points_to_sets): Make escaped HEAP variables global.
9020
9021 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
9022
9023         PR bootstrap/40597
9024         * expmed.c (emit_store_flag): Perform a conversion if necessary,
9025         after reducing a DImode cstore to SImode.
9026
9027 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
9028
9029         * expr.c (expand_expr_real_1): Reinstate fallthrough to
9030         TRUTH_ANDIF_EXPR if do_store_flag returns NULL.
9031
9032 2009-07-01  Maciej W. Rozycki  <macro@linux-mips.org>
9033
9034         * config/vax/vax.h (TARGET_BSD_DIVMOD): New macro.  Set to 1.
9035         * config/vax/linux.h (TARGET_BSD_DIVMOD): New macro.  Redefine the
9036         to 0.
9037         * config/vax/vax.c (vax_init_libfuncs): Only redefine udiv_optab
9038         and umod_optab if TARGET_BSD_DIVMOD.
9039         * config/vax/lib1funcs.asm: New file.
9040         * config/vax/t-linux: New file.
9041         * config.gcc (vax-*-linux*): Set tmake_file to vax/t-linux.
9042
9043 2009-06-30  Jakub Jelinek  <jakub@redhat.com>
9044
9045         PR c++/40566
9046         * convert.c (convert_to_integer) <case COND_EXPR>: Don't convert
9047         to type arguments that have void type.
9048
9049         PR debug/40573
9050         * dwarf2out.c (gen_formal_parameter_die): Call
9051         equate_decl_number_to_die if node is different from origin.
9052
9053 2009-06-30  Anthony Green  <green@moxielogic.com>
9054
9055         Clean up moxie port for --enable-build-with-cxx.
9056         * config/moxie/moxie.c (moxie_function_value): First two
9057         parameters are const_tree, not tree.
9058         * config/moxie/moxie.h (enum reg_class): Rename CC_REG to CC_REGS.
9059         (REG_CLASS_NAMES): Ditto.
9060         (REGNO_REG_CLASS): Ditto.
9061         * config/moxie/moxie-protos.h (moxie_override_options): Declare.
9062         (moxie_function_value): Fix constyness of arguments.
9063
9064 2009-06-30  Eric Botcazou  <ebotcazou@adacore.com>
9065
9066         * cgraphunit.c (cgraph_finalize_compilation_unit): Call
9067         finalize_size_functions before further processing.
9068         * stor-layout.c: Include cgraph.h, tree-inline.h and tree-dump.h.
9069         (variable_size): Call self_referential_size on size expressions
9070         that contain a PLACEHOLDER_EXPR.
9071         (size_functions): New static variable.
9072         (copy_self_referential_tree_r): New static function.
9073         (self_referential_size): Likewise.
9074         (finalize_size_functions): New global function.
9075         * tree.c: Include tree-inline.h.
9076         (push_without_duplicates): New static function.
9077         (find_placeholder_in_expr): New global function.
9078         (substitute_in_expr) <tcc_declaration>: Return the replacement object
9079         on equality.
9080         <tcc_expression>: Likewise.
9081         <tcc_vl_exp>: If the replacement object is a constant, try to inline
9082         the call in the expression.
9083         * tree.h (finalize_size_functions): Declare.
9084         (find_placeholder_in_expr): Likewise.
9085         (FIND_PLACEHOLDER_IN_EXPR): New macro.
9086         (substitute_placeholder_in_expr): Update comment.
9087         * tree-inline.c (remap_decl): Do not unshare trees if do_not_unshare
9088         is true.
9089         (copy_tree_body_r): Likewise.
9090         (copy_tree_body): New static function.
9091         (maybe_inline_call_in_expr): New global function.
9092         * tree-inline.h (struct copy_body_data): Add do_not_unshare field.
9093         (maybe_inline_call_in_expr): Declare.
9094         * Makefile.in (tree.o): Depend on TREE_INLINE_H.
9095         (stor-layout.o): Depend on CGRAPH_H, TREE_INLINE_H, TREE_DUMP_H and
9096         GIMPLE_H.
9097
9098 2009-06-30  Richard Guenther  <rguenther@suse.de>
9099
9100         * tree-ssa-dce.c (mark_all_reaching_defs_necessary_1): Always
9101         continue walking.
9102         (propagate_necessity): Do not mark reaching defs of stores
9103         as necessary.
9104
9105 2009-06-30  Jan Hubicka  <jh@suse.cz>
9106
9107         * cfgloopanal.c (check_irred): Move into ...
9108         (mark_irreducible_loops): ... here; return true if ireducible
9109         loops was found.
9110         * ipa-pure-const.c: Include cfgloop.h and tree-scalar-evolution.h
9111         (analyze_function): Try to prove loop finiteness.
9112         * cfgloop.h (mark_irreducible_loops): Update prototype.
9113         * Makefile.in (ipa-pure-const.o): Add dependency on SCEV and CFGLOOP.
9114
9115 2009-06-30  Basile Starynkevitch  <basile@starynkevitch.net>
9116
9117         * Makefile.in (PLUGIN_HEADERS): added ggc, tree-dump, pretty-print.
9118
9119 2009-06-30  Ira Rosen  <irar@il.ibm.com>
9120
9121         PR tree-optimization/40542
9122         * tree-vect-stmts.c (vect_analyze_stmt): Don't vectorize volatile
9123         types.
9124
9125 2009-06-30  Martin Jambor  <mjambor@suse.cz>
9126
9127         PR tree-optimization/40582
9128         * tree-sra.c (build_ref_for_offset_1): Use types_compatible_p rather
9129         than useless_type_conversion_p.
9130         (generate_subtree_copies): Increment sra_stats.subtree_copies at a
9131         proper place.
9132
9133 2009-06-30  Martin Jambor  <mjambor@suse.cz>
9134
9135         PR middle-end/40554
9136         * tree-sra.c (sra_modify_expr): Add access->offset to start_offset.
9137
9138 2009-06-30  Richard Guenther  <rguenther@suse.de>
9139
9140         * tree-ssa-alias.c (walk_aliased_vdefs_1): Change interface to
9141         use ao_ref references.
9142         (walk_aliased_vdefs): Likewise.
9143         * tree-ssa-alias.h (walk_aliased_vdefs): Adjust prototype.
9144         * tree-ssa-dce.c (struct ref_data): Remove.
9145         (mark_aliased_reaching_defs_necessary_1): Use the ao_ref argument.
9146         (mark_aliased_reaching_defs_necessary): Adjust.
9147         (mark_all_reaching_defs_necessary_1): Likewise.
9148
9149 2009-06-30  Paolo Bonzini  <bonzini@gnu.org>
9150
9151         PR boostrap/40597
9152         * expmed.c (emit_cstore): New name of emit_store_flag_1.
9153         (emit_store_flag_1): Extract from emit_store_flag, adjust
9154         calls to (what now is) emit_cstore.
9155         (emit_store_flag): Call emit_store_flag_1 and also use it
9156         for what used to be recursive calls.
9157
9158 2009-06-30  Wei Guozhi  <carrot@google.com>
9159
9160         PR/40416
9161         * tree-ssa-sink.c (statement_sink_location): Stop sinking expression
9162         if the target bb post dominates from bb.
9163         * config/i386/i386.c (memory_address_length): Check existence of base
9164         register before using it.
9165
9166 2009-06-30  Nick Clifton  <nickc@redhat.com>
9167             DJ Delorie  <dj@redhat.com>
9168
9169         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
9170         __FMOVD_ENABLED__ is defined.
9171         * config/sh/sh.h
9172         (TARGET_FMOVD): Provide a default definition.
9173         (MASK_FMOVD): Likewise.
9174         (TARGET_CPU_CPP_BUILTINS): Define
9175         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
9176         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
9177         two fmov instructions depending upon whether TARGET_FMOVD is
9178         enabled.
9179         (split for DF load from memory into register): Also handle
9180         MEMs which consist of REG+DISP addressing.
9181         (split for DF store from register to memory): Likewise.
9182         * config/sh/sh.opt (mfmovd): Remove this switch.
9183         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
9184         * config/sh/sh.c (sh_override_options): Do not automatically
9185         enable TARGET_MOVD for the SH2A when supporting doubles - leave
9186         that to the -mfmovd command line switch.
9187
9188         * config/sh/sh.c (broken_move): Do not restrict fldi test to only
9189         the SH4 and SH4A.
9190         (fldi_ok): Always allow.
9191         * config/sh/sh.md (movsf_ie): Always use single fp_mode.
9192
9193 2009-06-29  DJ Delorie  <dj@redhat.com>
9194
9195         * doc/install.texi (mep-x-elf): Correct chip's full name.
9196
9197 2009-06-29  H.J. Lu  <hongjiu.lu@intel.com>
9198
9199         * doc/extend.texi: Fix typo.
9200
9201 2009-06-29  Tom Tromey  <tromey@redhat.com>
9202
9203         * dwarf2.h: Remove.
9204         * Makefile.in (DWARF2_H): New variable.
9205         (except.o): Use it.
9206         (dwarf2out.o): Likewise.
9207         (dwarf2asm.o): Likewise.
9208         * config/i386/t-i386: Use DWARF2_H.
9209         * except.c: Include elf/dwarf2.h.
9210         * unwind-dw2.c: Include elf/dwarf2.h.
9211         * dwarf2out.c: Include elf/dwarf2.h.
9212         (dw_loc_descr_struct) <dw_loc_opc>: Now a bitfield.
9213         <dtprel>: New field.
9214         (dwarf_stack_op_name): Don't handle INTERNAL_DW_OP_tls_addr.
9215         (size_of_loc_descr): Likewise.
9216         (output_loc_operands_raw): Likewise.
9217         (output_loc_operands): Handle new dtprel field.
9218         (loc_checksum): Update.
9219         (loc_descriptor_from_tree_1) <VAR_DDECL>: Set dtprel field.
9220         * unwind-dw2-fde-glibc.c: Include elf/dwarf2.h.
9221         * unwind-dw2-fde.c: Include elf/dwarf2.h.
9222         * dwarf2asm.c: Include elf/dwarf2.h.
9223         * unwind-dw2-fde-darwin.c: Include elf/dwarf2.h.
9224         * config/mmix/mmix.c: Include elf/dwarf2.h.
9225         * config/rs6000/darwin-fallback.c: Include elf/dwarf2.h.
9226         * config/xtensa/unwind-dw2-xtensa.c: Include elf/dwarf2.h.
9227         * config/sh/sh.c: Include elf/dwarf2.h.
9228         * config/i386/i386.c: Include elf/dwarf2.h.
9229
9230 2009-06-29  DJ Delorie  <dj@redhat.com>
9231
9232         * config/mep/mep.h (CPP_SPEC): Remove __cop macro.
9233
9234         * doc/extend.texi: Add MeP attributes and pragmas.
9235         * doc/invoke.text: Add MeP Options.
9236         * doc/contrib.texi: Add MeP contribution.
9237         * doc/md.texi: Add MeP constraints.
9238         * doc/install.texi: Add MeP target.
9239
9240 2009-06-30  Anatoly Sokolov  <aesok@post.ru>
9241
9242         * target.h (struct gcc_target): Add frame_pointer_required field.
9243         * target-def.h (TARGET_FRAME_POINTER_REQUIRED): New.
9244         (TARGET_INITIALIZER): Use TARGET_FRAME_POINTER_REQUIRED.
9245         * ira.c (setup_eliminable_regset): Use frame_pointer_required target
9246         hook.
9247         * reload1.c (update_eliminables): (Ditto.).
9248         * gcc/system.h (FRAME_POINTER_REQUIRED): Poison.
9249         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
9250         (INITIAL_FRAME_POINTER_OFFSET): (Ditto.).
9251
9252         * config/arc/arc.h (FRAME_POINTER_REQUIRED): Remove macro.
9253
9254         * config/arm/arm.h (FRAME_POINTER_REQUIRED): Remove macro.
9255         * config/arm/arm.c (TARGET_FRAME_POINTER_REQUIRED): Define.
9256         (arm_frame_pointer_required): New function.
9257
9258         * config/avr/avr.h (FRAME_POINTER_REQUIRED): Remove macro.
9259         * config/avr/avr.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
9260         (avr_frame_pointer_required_p): Declare as static.
9261         * config/avr/avr-protos.h (avr_frame_pointer_required_p): Remove.
9262
9263         * config/bfin/bfin.h (FRAME_POINTER_REQUIRED): Remove macro.
9264         * config/bfin/bfin.c (TARGET_FRAME_POINTER_REQUIRED): Define.
9265         (bfin_frame_pointer_required): Make as static, change return type
9266         to bool.
9267         * config/bfin/bfin-protos.h (bfin_frame_pointer_required): Remove.
9268
9269         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Remove macro.
9270         * config/cris/cris.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
9271         (cris_frame_pointer_required): New function.
9272
9273         * config/crx/crx.h (FRAME_POINTER_REQUIRED): Remove macro.
9274
9275         * config/fr30/fr30.h (FRAME_POINTER_REQUIRED): Remove macro.
9276         * config/fr30/fr30.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
9277         (fr30_frame_pointer_required): New function.
9278
9279         * config/frv/frv.h (FRAME_POINTER_REQUIRED): Remove macro.
9280         * config/frv/frv.c (TARGET_FRAME_POINTER_REQUIRED): Define.
9281         (frv_frame_pointer_required): Make as static, change return type
9282         to bool.
9283         * config/bfin/bfin-protos.h (frv_frame_pointer_required): Remove.
9284
9285         * config/i386/i386.h (FRAME_POINTER_REQUIRED): Remove macro.
9286         * config/i386/i386.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
9287         (ix86_frame_pointer_required): Make as static, change return type to
9288         bool.
9289         * config/i386/i386-protos.h (ix86_frame_pointer_required): Remove.
9290
9291         * config/m32c/m32c.h (FRAME_POINTER_REQUIRED): Remove macro.
9292         * config/m32c/m32c.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
9293
9294         * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Remove macro.
9295
9296         * config/mcore/mcore.h (CAN_ELIMINATE): Remove macro.
9297
9298         * config/mep/mep.h (FRAME_POINTER_REQUIRED): Remove macro.
9299
9300         * config/mips/mips.h (FRAME_POINTER_REQUIRED): Remove macro.
9301         * config/mips/mips.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
9302         (mips_frame_pointer_required): Make as static.
9303         * config/mips/mips-protos.h (mips_frame_pointer_required): Remove.
9304
9305         * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Remove macro.
9306         * config/mmix/mmix.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
9307         (mmix_frame_pointer_required): Mew function.
9308
9309         * config/moxie/moxie.h (FRAME_POINTER_REQUIRED): Remove macro.
9310         * config/moxie/moxie.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
9311
9312         * config/pa/pa.h (FRAME_POINTER_REQUIRED): Remove macro.
9313
9314         * config/score/score.h (FRAME_POINTER_REQUIRED): Remove macro.
9315
9316         * config/sh/sh.h (CAN_ELIMINATE): Remove macro.
9317
9318         * config/sparc/sparc.h (FRAME_POINTER_REQUIRED): Remove macro.
9319         (CAN_ELIMINATE): Redefine.
9320         * config/sparc/sparc.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
9321         (sparc_frame_pointer_required): New function.
9322         (sparc_can_eliminate): New function.
9323         * config/sparc/sparc-protos.h (sparc_can_eliminate): Declare.
9324
9325         * config/vax/vax.h (FRAME_POINTER_REQUIRED): Remove macro.
9326         * config/vax/vax.c (TARGET_FRAME_POINTER_REQUIRED): Define.
9327
9328         * config/xtensa/xtensa.h (FRAME_POINTER_REQUIRED): Remove macro.
9329         * config/xtensa/xtensa.c (TARGET_FRAME_POINTER_REQUIRED): Define.
9330         (xtensa_frame_pointer_required): Make as static, change return type
9331         to bool.
9332         * config/xtensa/xtensa-protos.h (xtensa_frame_pointer_required):
9333         Remove.
9334
9335 2009-06-29  Olatunji Ruwase  <tjruwase@google.com>
9336
9337         * doc/plugins.texi: Document PLUGIN_START_UNIT.
9338         * toplev.c (compile_file): Call PLUGIN_START_UNIT.
9339         * gcc-plugin.h (PLUGIN_START_UNIT): Added new event.
9340         * plugin.c (plugin_event_name): Added PLUGIN_START_UNIT.
9341         (register_callback): Handle PLUGIN_START_UNIT.
9342         (invoke_plugin_callbacks): Handle PLUGIN_START_UNIT.
9343
9344 2009-06-29  Eric Botcazou  <ebotcazou@adacore.com>
9345
9346         * tree.c (process_call_operands): Propagate TREE_READONLY from the
9347         operands.
9348         (PROCESS_ARG): Do not clear TREE_READONLY if CONSTANT_CLASS_P.
9349         (build3_stat): Propagate TREE_READONLY for COND_EXPR.
9350
9351 2009-06-29  Daniel Jacobowitz  <dan@codesourcery.com>
9352
9353         * config/arm/arm.h (REGISTER_MOVE_COST): Increase VFP register
9354         move cost.
9355
9356 2009-06-29  Uros Bizjak  <ubizjak@gmail.com>
9357
9358         * doc/extend.texi (Additional Floating Types): __float128 is also
9359         supported on i386 targets.
9360
9361 2009-06-29  Richard Guenther  <rguenther@suse.de>
9362
9363         PR middle-end/14187
9364         * tree-ssa-alias.h (struct pt_solution): Add vars_contains_restrict
9365         flag.
9366         (pt_solutions_same_restrict_base): Declare.
9367         * tree-ssa-structalias.c (struct variable_info): Add is_restrict_var
9368         flag.
9369         (new_var_info): Initialize is_global_var properly for SSA_NAMEs.
9370         (make_constraint_from, make_copy_constraint): Move earlier.
9371         (make_constraint_from_heapvar): New function.
9372         (make_constraint_from_restrict): Likewise.
9373         (handle_lhs_call): Use it.
9374         (find_func_aliases): Use it to track conversions to restrict
9375         qualified pointers.
9376         (struct fieldoff): Add only_restrict_pointers flag.
9377         (push_fields_onto_fieldstack): Initialize it.
9378         (create_variable_info_for): Track global restrict qualified pointers.
9379         (intra_create_variable_infos): Use make_constraint_from_heapvar.
9380         Track restrict qualified pointer arguments.
9381         (set_uids_in_ptset): Use varinfo is_global_var flag.
9382         (find_what_var_points_to): Set the vars_contains_restrict flag.
9383         Always create the points-to solution for sets including restrict tags.
9384         (pt_solutions_same_restrict_base): New function.
9385         * tree-ssa-alias.c (ptr_derefs_may_alias_p): For two restrict
9386         qualified pointers use pt_solutions_same_restrict_base as
9387         additional source for disambiguation.
9388
9389 2009-06-29  Richard Guenther  <rguenther@suse.de>
9390
9391         PR middle-end/38212
9392         * alias.c (find_base_decl): Remove.
9393         (get_deref_alias_set_1): Remove restrict handling.
9394         * c-common.c (c_apply_type_quals_to_decl): Do not set
9395         DECL_POINTER_ALIAS_SET.
9396         * gimplify.c (find_single_pointer_decl_1): Remove.
9397         (find_single_pointer_decl): Likewise.
9398         (internal_get_tmp_var): Remove restrict handling.
9399         (gimple_regimplify_operands): Likewise.
9400         * omp-low.c (expand_omp_atomic_pipeline): Do not set
9401         DECL_POINTER_ALIAS_SET. Use ref-all pointers.
9402         * print-tree.c (print_node): Do not print DECL_POINTER_ALIAS_SET.
9403         * tree.c (restrict_base_for_decl): Remove.
9404         (init_ttree): Do not allocate it.
9405         (make_node_stat): Do not set DECL_POINTER_ALIAS_SET.  Set
9406         LABEL_DECL_UID for label decls.
9407         (copy_node_stat): Do not copy restrict information.
9408         (decl_restrict_base_lookup): Remove.
9409         (decl_restrict_base_insert): Likewise.
9410         (print_restrict_base_statistics): Likewise.
9411         (dump_tree_statistics): Do not call print_restrict_base_statistics.
9412         * tree.h (DECL_POINTER_ALIAS_SET): Remove.
9413         (DECL_POINTER_ALIAS_SET_KNOWN_P): Likewise.
9414         (struct tree_decl_common): Rename pointer_alias_set to label_decl_uid.
9415         (LABEL_DECL_UID): Adjust.
9416         (DECL_BASED_ON_RESTRICT_P): Remove.
9417         (DECL_GET_RESTRICT_BASE): Likewise.
9418         (SET_DECL_RESTRICT_BASE): Likewise.
9419         (struct tree_decl_with_vis): Remove based_on_restrict_p flag.
9420
9421         * config/i386/i386.c (ix86_gimplify_va_arg): Use ref-all pointers
9422         instead of DECL_POINTER_ALIAS_SET.
9423         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
9424         * config/s390/s390.c (s390_gimplify_va_arg): Likewise.
9425         * config/spu/spu.c (spu_gimplify_va_arg_expr): Likewise.
9426
9427 2009-06-29  Richard Guenther  <rguenther@suse.de>
9428
9429         PR tree-optimization/40579
9430         * tree-vrp.c (vrp_evaluate_conditional): Bail out early if
9431         the IL to simplify has constants that overflowed.
9432
9433 2009-06-28  Uros Bizjak  <ubizjak@gmail.com>
9434
9435         PR tree-optimization/40550
9436         * tree-vect-generic.c (expand_vector_operations_1): Compute in
9437         vector_compute_type only when the size of vector_compute_type is
9438         less than the size of type.
9439
9440 2009-06-28  Eric Botcazou  <ebotcazou@adacore.com>
9441
9442         * fold-const.c (contains_label_1): Fix comments.
9443         (contains_label_p): Do not walk trees multiple time.
9444
9445 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
9446
9447         * config/i386/i386.h (enum ix86_fpcmp_strategy): New.
9448         * config/i386/i386.md (cbranchxf4, cstorexf4, cbranch<MODEF>4,
9449         cstore<MODEF>4, mov<X87MODEF>cc): Change predicate to
9450         ix86_fp_comparison_operator.
9451         (*fp_jcc_1_mixed, *fp_jcc_1_sse, *fp_jcc_1_387, *fp_jcc_2_mixed,
9452         *fp_jcc_2_sse, *fp_jcc_2_387): Delete
9453         (*fp_jcc_3_387, *fp_jcc_4_387, *fp_jcc_5_387, *fp_jcc_6_387,
9454         *fp_jcc_7_387, *fp_jcc_8<MODEF>_387): Eliminate call to
9455         !ix86_use_fcomi_compare, change ix86_fp_jump_nontrivial_p call
9456         to !TARGET_CMOVE, change predicate to ix86_fp_comparison_operator.
9457         (related splits): Change predicate to ix86_fp_comparison_operator.
9458         * config/i386/predicates.md: Use ix86_trivial_fp_comparison_operator
9459         instead of ix86_fp_comparison_codes.
9460         (ix86_trivial_fp_comparison_operator,
9461         ix86_fp_comparison_operator): New.
9462         * config/i386/i386-protos.h (ix86_fp_comparison_strategy): New.
9463         (ix86_expand_compare): Eliminate last two parameters.
9464         (ix86_fp_jump_nontrivial_p): Kill.
9465         * config/i386/i386.c (put_condition_code): Eliminate call to
9466         ix86_fp_comparison_codes and subsequent assertion.
9467         (ix86_fp_comparison_codes): Eliminate.
9468         (ix86_fp_swap_condition): New.
9469         (ix86_fp_comparison_arithmetics_cost, ix86_fp_comparison_fcomi_cost,
9470         ix86_fp_comparison_sahf_cost, ix86_use_fcomi_compare): Consolidate
9471         into ix86_fp_comparison_cost and ix86_fp_comparison_strategy.
9472         (ix86_prepare_fp_compare_args): Use ix86_fp_comparison_strategy
9473         and ix86_fp_swap_condition.
9474         (ix86_expand_fp_compare): Eliminate code for second jump/bypass jump.
9475         Use ix86_fp_comparison_strategy.
9476         (ix86_expand_compare): Likewise.  Eliminate last two arguments.
9477         (ix86_fp_jump_nontrivial_p): Eliminate.
9478         (ix86_expand_branch): Treat SFmode/DFmode/XFmode as simple.  Adjust
9479         call to ix86_expand_compare.
9480         (ix86_split_fp_branch, ix86_expand_setcc,
9481         ix86_expand_carry_flag_compare, ix86_expand_int_movcc,
9482         ix86_expand_fp_movcc): Eliminate code for second jump/bypass jump.
9483
9484 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
9485
9486         * config/arm/arm.c (arm_final_prescan_ins): Eliminate code
9487         related to jump_clobbers.
9488         * config/arm/arm.md (conds): Remove jump_clob case.
9489         (addsi3_cbranch, addsi3_cbranch_scratch, subsi3_cbranch, two
9490         splits): Change comparison_operator to arm_comparison_operator.
9491         (*arm_buneq, *arm_bltgt, *arm_buneq_reversed, *arm_bltgt_reversed):
9492         Eliminate.
9493
9494 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
9495
9496         * dojump.c (do_compare_rtx_and_jump): Try swapping the
9497         condition for floating point modes.
9498         * expmed.c (emit_store_flag_1): Move here a bigger part
9499         of emit_store_flag.
9500         (emit_store_flag): Try swapping the condition for floating point
9501         modes.
9502         * optabs.c (emit_cmp_and_jump_insns): Cope with constant op0 better.
9503
9504 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
9505
9506         * expr.c (expand_expr_real_1): Just use do_store_flag.
9507         (do_store_flag): Drop support for TRUTH_NOT_EXPR.  Use
9508         emit_store_flag_force.
9509         * expmed.c (emit_store_flag_force): Copy here trick
9510         previously in expand_expr_real_1.  Try reversing the comparison.
9511         (emit_store_flag_1): Work if target is NULL.
9512         (emit_store_flag): Work if target is NULL, using the result mode
9513         from the comparison.  Use split_comparison, restructure final part
9514         to simplify conditionals.
9515
9516 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
9517
9518         * builtins.c (expand_errno_check): Use do_compare_rtx_and_jump.
9519         * dojump.c (do_jump): Change handling of floating-point
9520         ops to use just do_compare_and_jump.
9521         (split_comparison): New.
9522         (do_compare_rtx_and_jump): Add here logic coming previously
9523         in do_jump, using split_comparison.
9524
9525 2009-06-27  H.J. Lu  <hongjiu.lu@intel.com>
9526
9527         PR target/40489
9528         * config/ia64/ia64.c (ia64_reorg): Check NULL insn.
9529
9530 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
9531
9532         * tree-ssa-alias.c: Fix unintentional commit.
9533
9534 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
9535
9536         * passes.c (execute_one_pass): Fix unintentional commit.
9537
9538 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
9539
9540         * df-problems.c (df_set_seen, df_unset_seen): Delete.
9541         (df_rd_local_compute, df_md_local_compute): Inline them.
9542
9543         (df_md_scratch): New.
9544         (df_md_alloc, df_md_free): Allocate/free it.
9545         (df_md_local_compute): Only include live registers in init.
9546         (df_md_transfer_function): Prune the in-set computed by
9547         the confluence function, and the gen-set too.
9548
9549 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
9550
9551         PR rtl-optimization/26854
9552         * timevar.def: Remove TV_DF_RU, add TV_DF_MD.
9553         * df-problems.c (df_rd_add_problem): Fix comment.
9554         (df_md_set_bb_info, df_md_free_bb_info, df_md_alloc,
9555         df_md_simulate_artificial_defs_at_top,
9556         df_md_simulate_one_insn, df_md_bb_local_compute_process_def,
9557         df_md_bb_local_compute, df_md_local_compute, df_md_reset,
9558         df_md_transfer_function, df_md_init, df_md_confluence_0,
9559         df_md_confluence_n, df_md_free, df_md_top_dump, df_md_bottom_dump,
9560         problem_MD, df_md_add_problem): New.
9561         * df.h (DF_MD, DF_MD_BB_INFO, struct df_md_bb_info, df_md,
9562         df_md_get_bb_info): New.
9563         (DF_LAST_PROBLEM_PLUS1): Adjust.
9564
9565         * Makefile.in (fwprop.o): Include domwalk.h.
9566         * fwprop.c: Include domwalk.h.
9567         (reg_defs, reg_defs_stack): New.
9568         (bitmap_only_bit_between): Remove.
9569         (process_defs): New.
9570         (process_uses): Use reg_defs and local_md instead of
9571         bitmap_only_bit_between and local_rd.
9572         (single_def_use_enter_block): New, from build_single_def_use_links.
9573         (single_def_use_leave_block): New.
9574         (build_single_def_use_links): Remove code moved to
9575         single_def_use_enter_block, invoke domwalk.
9576         (use_killed_between): Adjust comment.
9577
9578 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
9579
9580         * bitmap.h (bitmap_ior_and_into): New.
9581         * bitmap.c (bitmap_ior_and_into): New.
9582
9583 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
9584
9585         * domwalk.h (struct dom_walk_data): Remove all callbacks except
9586         before_dom_children_before_stmts and after_dom_children_after_stmts.
9587         Rename the two remaining callbacks to just before_dom_children and
9588         after_dom_children. Remove other GIMPLE statement walking bits.
9589         * domwalk.c (walk_dominator_tree): Remove now unsupported features.
9590         * graphite.c: Do not include domwalk.h.
9591         * tree-into-ssa.c (interesting_blocks): New global.
9592         (struct mark_def_sites_global_data): Remove it and names_to_rename.
9593         (mark_def_sites, rewrite_stmt, rewrite_add_phi_arguments,
9594         rewrite_update_stmt, rewrite_update_phi_arguments): Simplify
9595         now that they're not domwalk callbacks.
9596         (rewrite_initialize_block): Rename to...
9597         (rewrite_enter_block): ... this, place after called functions.  Test
9598         interesting_blocks, call rewrite_stmt and rewrite_add_phi_arguments.
9599         (rewrite_finalize_block): Rename to...
9600         (rewrite_leave_block): ... this, place after called functions.
9601         (rewrite_update_init_block): Rename to...
9602         (rewrite_update_enter_block): ... this, place after called functions.
9603         Test interesting_blocks, call rewrite_update_stmt and
9604         rewrite_update_phi_arguments.
9605         (rewrite_update_fini_block): Rename to...
9606         (rewrite_leave_block): ... this, place after called functions.
9607         (rewrite_blocks): Remove last argument, simplify initialization of
9608         walk_data.
9609         (mark_def_sites_initialize_block): Rename to...
9610         (mark_def_sites_block): ... this, call mark_def_sites.
9611         (mark_def_sites_blocks): Remove argument, simplify initialization of
9612         walk_data.
9613         (rewrite_into_ssa): Adjust for interesting_blocks_being a global.
9614         (update_ssa): Likewise.
9615         * tree-ssa-dom.c (optimize_stmt): Simplify now that it's not a domwalk
9616         callback.
9617         (tree_ssa_dominator_optimize): Simplify initialization of walk_data.
9618         (dom_opt_initialize_block): Rename to...
9619         (dom_opt_enter_block): ... this, place after called functions.  Walk
9620         statements here, inline propagate_to_outgoing_edges.
9621         (dom_opt_finalize_block): Rename to...
9622         (dom_opt_leave_block): ... this, place after called functions.
9623         * tree-ssa-dse.c (dse_optimize_stmt): Simplify now that it's not a
9624         domwalk callback.
9625         (dse_enter_block, dse_record_phi): New.
9626         (dse_record_phis): Delete.
9627         (dse_finalize_block): Rename to...
9628         (dse_leave_block): ... this.
9629         (tree_ssa_dse): Simplify initialization of walk_data.
9630         * tree-ssa-loop-im.c (determine_invariantness, move_computations):
9631         Adjust initialization of walk_data.
9632         * tree-ssa-loop-unswitch.c: Do not include domwalk.h.
9633         * tree-ssa-loop-phiopt.c (get_non_trapping):
9634         Adjust initialization of walk_data.
9635         * tree-ssa-loop-threadedge.c: Do not include domwalk.h.
9636         * tree-ssa-uncprop.c (uncprop_into_successor_phis): Simplify now that
9637         it's not a domwalk callback.
9638         (uncprop_initialize_block): Rename to...
9639         (dse_enter_block): ... this, call uncprop_into_successor_phis.
9640         (dse_finalize_block): Rename to...
9641         (dse_leave_block): ... this.
9642         (tree_ssa_uncprop): Simplify initialization of walk_data.
9643         * Makefile.in: Adjust dependencies.
9644
9645 2009-06-27  Richard Earnshaw  <rearnsha@arm.com>
9646
9647         * arm.md (casesi): Fix test for Thumb1.
9648         (thumb1_casesi_internal_pic): Likewise.
9649         (thumb1_casesi_dispatch): Likewise.
9650
9651 2009-06-26  Daniel Gutson  <dgutson@codesourcery.com>
9652
9653         * config/arm/arm-cores.def: Added core cortex-m0.
9654         * config/arm/arm-tune.md: Regenerated.
9655         * doc/invoke.texi: Added entry for cpu ARM Cortex-M0.
9656
9657 2009-06-26  DJ Delorie  <dj@redhat.com>
9658
9659         * config/mep/mep.opt (mfar): Remove -mfar as it doesn't do anything.
9660
9661         * config/mep/mep.c (mep_bundle_insns): Account for the fact that
9662         the scheduler doesn't tag jump insns.
9663
9664 2009-06-26  H.J. Lu  <hongjiu.lu@intel.com>
9665
9666         * c-decl.c (merge_decls): Re-indent.
9667
9668 2009-06-26  Janis Johnson  <janis187@us.ibm.com>
9669
9670         PR c/39902
9671         * tree.c (real_zerop, real_onep, real_twop, real_minus_onep):
9672         Special-case decimal float constants.
9673
9674 2009-06-26  Richard Henderson  <rth@redhat.com>
9675
9676         * function.h (struct function): Add cannot_be_copied_reason,
9677         and cannot_be_copied_set.
9678         * tree-inline.c (has_label_address_in_static_1): Rename from
9679         inline_forbidden_p_2; don't set inline_forbidden_reason here.
9680         (cannot_copy_type_1): Rename from inline_forbidden_p_op; likewise
9681         don't set inline_forbidden_reason.
9682         (copy_forbidden): New function, split out of inline_forbidden_p.
9683         (inline_forbidden_p_stmt): Don't check for nonlocal labels here.
9684         (inline_forbidden_p): Use copy_forbidden.
9685         (tree_versionable_function_p): Likewise.
9686         (inlinable_function_p): Merge into tree_inlinable_function_p.
9687         (tree_function_versioning): Remap cfun->nonlocal_goto_save_area.
9688         * ipa-cp.c (ipcp_versionable_function_p): New function.
9689         (ipcp_cloning_candidate_p): Use it.
9690         (ipcp_node_modifiable_p): Likewise.
9691
9692 2009-06-26  Olatunji Ruwase  <tjruwase@google.com>
9693
9694         * builtins.c (expand_builtin_alloca): Handle builtin alloca
9695         that is marked not to be inlined. Remove flag_mudflap use.
9696         * tree-mudflap.c: Rename mf_xform_derefs to mf_xfrom_statements.
9697         (mf_xform_statements): Mark builtin alloca calls as un-inlineable.
9698
9699 2009-06-26  Steve Ellcey  <sje@cup.hp.com>
9700
9701         PR bootstrap/40338
9702         * config/pa/t-pa-hpux10 (TARGET_LIBGCC2_CFLAGS): Add -frandom-seed.
9703         * config/pa/t-pa-hpux11 (TARGET_LIBGCC2_CFLAGS): Ditto.
9704
9705 2009-06-26  Kai Tietz  <kai.tietz@onevision.com>
9706
9707         * config/i386/mingw-tls.c (__mingwthr_key_dtor): Remove for none
9708         shared libgcc.
9709         (__mingwthr_remove_key_dtor): Likewise.
9710
9711 2009-06-26  Richard Guenther  <rguenther@suse.de>
9712
9713         * tree-ssa-structalias.c (do_ds_constraint): Simplify escape handling.
9714
9715 2009-06-26  Steven Bosscher  <steven@gcc.gnu.org>
9716
9717         PR middle-end/40525
9718         * ifcvt.c (dead_or_predicable): If predicating MERGE_BB fails,
9719         try the non-cond_exec path also.
9720
9721 2009-06-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
9722
9723         PR target/40468
9724         * pa.c (branch_to_delay_slot_p, branch_needs_nop_p): New functions.
9725         (output_cbranch): Use new functions.
9726         (output_lbranch, output_bb, output_bvb, output_dbra, output_movb):
9727         Likewise.
9728
9729 2009-06-25  Michael Meissner  <meissner@linux.vnet.ibm.com>
9730             Pat Haugen  <pthaugen@us.ibm.com>
9731             Revital Eres <ERES@il.ibm.com>
9732
9733         * config/rs6000/rs6000.c (print_operand): Correct lossage message
9734         for %c error.  Add %x support to print VSX registers as a unified
9735         register set, instead of separate float and altivec registers.
9736         Switch to use VECTOR_MEM_ALTIVEC_P instead of TARGET_ALTIVEC for
9737         %y case, and add support for VSX pre-modify addresses.
9738         (output_toc): Add assert for CONST containing an integer constant
9739         in the PLUS case.
9740         (rs6000_adjust_cost): Add POWER7 support.
9741         (insn_must_be_first_in_group): Ditto.
9742         (insn_must_be_last_in_group): Ditto.
9743         (rs6000_emit_popcount): Ditto.
9744         (rs6000_vector_mode_supported_p): Ditto.
9745
9746         * config/rs6000/rs6000-protos.h (rs6000_secondary_reload_class):
9747         Change some of the functions called by macros to being called
9748         through a pointer, so debug functions can be inserted if
9749         -mdebug=addr or -mdebug=cost.
9750         (rs6000_preferred_reload_class_ptr): Ditto.
9751         (rs6000_secondary_reload_class_ptr): Ditto.
9752         (rs6000_secondary_memory_needed_ptr): Ditto.
9753         (rs6000_cannot_change_mode_class_ptr): Ditto.
9754         (rs6000_secondary_reload_inner): Ditto.
9755         (rs6000_legitimize_reload_address): Ditto.
9756         (rs6000_legitimize_reload_address_ptr): Ditto.
9757         (rs6000_mode_dependent_address): Ditto.
9758         (rs6000_mode_dependent_address_ptr): Ditto.
9759
9760         * config/rs6000/rs6000.c (reg_offset_addressing_ok_p): New
9761         function to return true if the mode allows reg + integer
9762         addresses.
9763         (virtual_stack_registers_memory_p): New function to return true if
9764         the address refers to a virtual stack register.
9765         (rs6000_legitimate_offset_address_p): Move code to say whether a
9766         mode supports reg+int addressing to reg_offset_addressing_ok_p and
9767         call it.
9768         (rs6000_legitimate_address_p): Add checks for modes that only can
9769         do reg+reg addressing.  Start adding VSX support.
9770         (rs6000_legitimize_reload_address): Ditto.
9771         (rs6000_legitimize_address): Ditto.
9772         (rs6000_debug_legitimate_address_p): New debug functions for
9773         -mdebug=addr and -mdebug=cost.
9774         (rs6000_debug_rtx_costs): Ditto.
9775         (rs6000_debug_address_costs): Ditto.
9776         (rs6000_debug_adjust_cost): Ditto.
9777         (rs6000_debug_legitimize_address): Ditto.
9778         (rs6000_legitimize_reload_address_ptr): Point to call normal
9779         function or debug function.  Make functions called via pointer
9780         static.
9781         (rs6000_mode_dependent_address_ptr): Ditto.
9782         (rs6000_secondary_reload_class_ptr): Ditto.
9783         (rs6000_hard_regno_mode_ok): Add preliminary VSX support.
9784         (rs6000_emit_move): Add -mdebug=addr support.  Change an abort
9785         into a friendlier error.
9786         (rs6000_init_builtins): Add initial VSX support.
9787         (rs6000_adjust_cost): Fix some spacing issues.
9788
9789         * config/rs6000/rs6000.h (enum reg_class): Add VSX_REGS.
9790         (REG_CLASS_NAMES): Ditto.
9791         (REG_CLASS_CONTENTS): Ditto.
9792         (PREFERRED_RELOAD_CLASS): Move from a macro to calling through a
9793         pointer, to add -mdebug=addr support.
9794         (CANNOT_CHANGE_MODE_CLASS): Ditto.
9795         (SECONDARY_RELOAD_CLASS): Call through a pointer to add
9796         -mdebug=addr support.
9797         (LEGITIMIZE_RELOAD_ADDRESS): Ditto.
9798         (GO_IF_MODE_DEPENDENT_ADDRESS): Ditto.
9799         (enum rs6000_builtins): Add RS6000_BUILTIN_BSWAP_HI.
9800
9801         * config/rs6000/rs6000.md (bswaphi*): Add support for swapping
9802         16-bit values.
9803         (bswapsi*): Set attribute types for load/store.  Add combiner
9804         patterns to eliminate zero extend on 64-bit.
9805         (bswapdi*): Add support for swapping 64-bit values.  Use ldbrx and
9806         stdbrx if the hardware supports those instructions.
9807
9808 2009-06-25  Ian Lance Taylor  <iant@google.com>
9809
9810         * doc/invoke.texi (Option Summary): Mention -static-libstdc++.
9811         (Link Options): Document -static-libstdc++.
9812
9813 2009-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9814
9815         PR target/38731
9816         * config/rs6000/rs6000.c (LOCAL_ALIGNMENT): Redefine to just use
9817         DATA_ALIGNMENT instead.
9818
9819 2009-06-25  Richard Guenther  <rguenther@suse.de>
9820
9821         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Disambiguate
9822         indirect references against the callused/escaped solutions.
9823         (call_may_clobber_ref_p_1): Likewise.
9824
9825 2009-06-25  Martin Jambor  <mjambor@suse.cz>
9826
9827         PR tree-optimization/40493
9828         * tree-sra.c (sra_modify_expr): Correct BIT_FIELD_REF argument numbers.
9829         (enum unscalarized_data_handling): New type.
9830         (handle_unscalarized_data_in_subtree): Return what has been done.
9831         (load_assign_lhs_subreplacements): Handle left flushes differently.
9832         (sra_modify_assign): Use unscalarized_data_handling, simplified
9833         condition determining whether to remove the statement.
9834
9835 2009-06-25  Basile Starynkevitch  <basile@starynkevitch.net>
9836
9837         * doc/plugins.texi (Building GCC plugins): Correct typo in Makefile
9838         excerpt - @ should be doubled for texinfo.
9839
9840 2009-06-24  Ian Lance Taylor  <iant@google.com>
9841
9842         * config/arc/arc.c: Include "df.h".
9843         (arc_attribute_table): Make static.  Move higher in file.
9844         (arc_address_cost): Call SMALL_INT on INTVAL, not rtx.
9845         (output_shift): Initialize n later to avoid warning.
9846         * config/arm/arm.c (arm_attribute_table): Make static.  Move
9847         higher in file.
9848         * config/avr/avr.c (avr_attribute_table): Make static.  Move
9849         higher in file.
9850         (reg_class_tab): Change array type from int to enum reg_class.
9851         (avr_jump_mode): Change GET_MODE to GET_CODE when checking for
9852         LABEL_REF.
9853         (out_tsthi, ashlhi3_out): Don't use AS2 with "or" or "and".
9854         (lshrhi3_out): Likewise.
9855         (class_likely_spilled_p): Change return type to bool.
9856         (avr_rtx_costs): Use local code variable with enum type.
9857         * config/avr/avr.md (movmemhi): Use add_reg_note.
9858         (andhi3, andsi3): Don't use AS2 with "and".
9859         (iorhi3, iorsi3): Don't use AS2 with "or".
9860         * config/avr/avr-protos.h (class_likely_spilled_p): Update declaration.
9861         * config/crx/crx.c: Include "df.h".
9862         (crx_attribute_table): Make static.
9863         * config/m32r/m32r.c: Include "df.h".
9864         (m32r_attribute_table): Make static.  Move higher in file.
9865         (pop): Use add_reg_note.
9866         (block_move_call): Change 0 to LCT_NORMAL in function call.
9867         * config/m32r/m32r.md (movsi_insn): Remove unused local value.
9868         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Likewise.
9869         * config/m32r/m32r-protos.h (m32r_compute_function_type): Always
9870         declare, not just when TREE_CODE is defined.
9871         * config/m68hc11/m68hc11.c: Include "expr.h".
9872         (m68hc11_attribute_table): Make static.  Move higher in file.
9873         (m68hc11_small_indexed_indirect_p): Change 0 to VOIDmode in
9874         function call.
9875         (m68hc11_register_indirect_p): Likewise.
9876         (m68hc11_function_arg_padding): Change return type to enum
9877         direction.
9878         (emit_move_after_reload): Use add_reg_note.
9879         (m68hc11_emit_logical): Change code parameter to enum rtx_code.
9880         (m68hc11_split_logical): Likewise.
9881         (m68hc11_rtx_costs): Add local code_and outer_code variables with
9882         enum type.
9883         * config/m68hc11/predicates.md (reg_or_some_mem_operand): Change 0
9884         to VOIDmode in function call.
9885         * config/m68hc11/m68hc11-protos.h: Don't check TREE_CODE to see if
9886         tree is defined.
9887         (m68hc11_split_logical): Update declaration.
9888         (m68hc11_function_arg_padding): Update declaration.
9889         * config/mcore/mcore.c (regno_reg_class): Change form array of int
9890         to array of enum reg_class.
9891         (mcore_attribute_table): Make static.  Move higher in file.
9892         (mcore_rtx_costs): Add cast to enum type.
9893         * config/mcore/mcore.h (regno_reg_class): Update declaration.
9894         (GO_IF_LEGITIMATE_INDEX): Add cast to avoid warning.
9895         * config/sh/sh.c (sh_attribute_table): Make static.  Move higher
9896         in file.
9897         * config/sh/predicates.md (trapping_target_operand): Rename and to
9898         and_expr.
9899         * config/sparc/sparc.c (sparc_attribute_table): Make static.  Move
9900         higher in file.
9901         * config/spu/spu.c (spu_attribute_table): Make static.  Move
9902         higher in file.
9903         * config/v850/v850.c (v850_attribute_table): Make static.  Move
9904         higher in file.
9905         (v850_rtx_costs): Use local code with enum type.
9906         (expand_epilogue): Add cast.
9907         * config/v850/v850-c.c (ghs_pragma_section): Initialize repeat.
9908
9909 2009-06-23  Takashi YOSHII  <yoshii.takashi@renesas.com>
9910
9911         PR target/40515
9912         * doc/invoke.texi (SH Options): Document -m2a, -m2a-single,
9913         -m2a-single-only and -m2a-nofpu.
9914         * config/sh/sh.opt: Document m2a generates FPU code.
9915
9916 2009-06-24  Anatoly Sokolov  <aesok@post.ru>
9917
9918         * defaults.h (CAN_ELIMINATE): Provide default.
9919         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
9920         * config/alpha/alpha.h (CAN_ELIMINATE): Delete.
9921         * config/m32c/m32c.h (CAN_ELIMINATE): Delete.
9922         * config/spu/spu.h (CAN_ELIMINATE): Delete.
9923         * config/xtensa/xtensa.h (CAN_ELIMINATE): Delete.
9924         * config/moxie/moxie.h (CAN_ELIMINATE): Delete.
9925         * config/cris/cris.h (CAN_ELIMINATE): Delete.
9926         * config/mn10300/mn10300.h (CAN_ELIMINATE): Delete.
9927         * config/pa/pa64-linux.h (CAN_ELIMINATE): Delete.
9928         * config/mmix/mmix.h (CAN_ELIMINATE): Delete.
9929
9930 2009-06-24  DJ Delorie  <dj@redhat.com>
9931
9932         * mep-ext-cop.cpu: Fix copyright notice.
9933         * mep-default: Fix copyright notice.
9934         * mep-core: Fix copyright notice.
9935         * mep: Fix copyright notice.
9936         * mep-ivc2: Fix copyright notice.
9937         * mep-c5: Fix copyright notice.
9938
9939 2009-06-24  Denis Chertykov  <chertykov@gmail.com>
9940
9941         * doc/contrib.texi (Contributors):
9942
9943 2009-06-24  Andreas Krebbel  <krebbel1@de.ibm.com>
9944
9945         PR middle-end/40501
9946         * tree-ssa-math-opts.c (execute_optimize_bswap): Convert the bswap
9947         src and dst operands if necessary.
9948
9949 2009-06-23  DJ Delorie  <dj@redhat.com>
9950
9951         Add MeP port.
9952         * config.gcc: Add mep support.
9953         * recog.c: Resurrect validate_replace_rtx_subexp().
9954         * recog.h: Likewise.
9955         * config/mep/: Add new port:
9956         * config/mep/constraints.md: New file.
9957         * config/mep/default.h: New file.
9958         * config/mep/intrinsics.h: New file.
9959         * config/mep/intrinsics.md: New file.
9960         * config/mep/ivc2-template.h: New file.
9961         * config/mep/mep-c5.cpu: New file.
9962         * config/mep/mep-core.cpu: New file.
9963         * config/mep/mep-default.cpu: New file.
9964         * config/mep/mep-ext-cop.cpu: New file.
9965         * config/mep/mep-intrin.h: New file.
9966         * config/mep/mep-ivc2.cpu: New file.
9967         * config/mep/mep-lib1.asm: New file.
9968         * config/mep/mep-lib2.c: New file.
9969         * config/mep/mep-pragma.c: New file.
9970         * config/mep/mep-protos.h: New file.
9971         * config/mep/mep-tramp.c: New file.
9972         * config/mep/mep.c: New file.
9973         * config/mep/mep.cpu: New file.
9974         * config/mep/mep.h: New file.
9975         * config/mep/mep.md: New file.
9976         * config/mep/mep.opt: New file.
9977         * config/mep/predicates.md: New file.
9978         * config/mep/t-mep: New file.
9979
9980 2009-06-23  Ian Lance Taylor  <iant@google.com>
9981
9982         * configure.ac: Invoke AC_PROG_CXX.  Separate C specific warnings
9983         from loose_warn into c_loose_warn and from strict_warn into
9984         c_strict_warn.  Set and substitute warn_cxxflags.  Check for
9985         --enable-build-with-cxx.  Set and substitute
9986         ENABLE_BUILD_WITH_CXX.  Set and substitute HOST_LIBS.
9987         * Makefile.in (CXXFLAGS): New variable.
9988         (C_LOOSE_WARN, C_STRICT_WARN): New variables.
9989         (GCC_WARN_CFLAGS): Add $(C_LOOSE_WARN).  Add $(C_STRICT_WARN) if
9990         the default is the same as $(STRICT_WARN).
9991         (GCC_WARN_CXXFLAGS, WARN_CXXFLAGS): New variables.
9992         (CXX): New variable.
9993         (COMPILER): New value if ENABLE_BUILD_WITH_CXX.
9994         (COMPILER_FLAGS, LINKER, LINKER_FLAGS): Likewise.
9995         (ALL_COMPILERFLAGS, ALL_LINKERFLAGS): Likewise.
9996         (HOST_LIBS): New variable.
9997         (GCC_CFLAGS): Add $(C_LOOSE_WARN).
9998         (ALL_CXXFLAGS): New variable.
9999         (LIBS, BACKENDLIBS): Add $(HOST_LIBS).
10000         * doc/install.texi (Configuration): Document
10001         --enable-build-with-cxx, --with-stage1-ldflags,
10002         --with-stage1-libs, --with-boot-ldflags, --with-boot-libs.
10003         * configure: Rebuild.
10004
10005 2009-06-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
10006
10007         * config/arm/arm.c (arm_override_options): Fix braces and formatting
10008         from previous commit.
10009
10010 2009-06-23  Ian Lance Taylor  <iant@google.com>
10011
10012         * Makefile.in ($(out_object_file)): Depend upon $(DF_H).
10013
10014 2009-06-23  Ian Lance Taylor  <iant@google.com>
10015
10016         * reload.c (alternative_allows_const_pool_ref): Mark mem parameter
10017         with ATTRIBUTE_UNUSED.
10018
10019 2009-06-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
10020             Pat Haugen  <pthaugen@us.ibm.com>
10021             Revital Eres  <eres@il.ibm.com>
10022
10023         * config.in (HAVE_AS_POPCNTD): Add default definition.
10024         (HAVE_AS_LWSYNC): Ditto.
10025
10026         * configure.ac (gcc_cv_as_powerpc_mfpgpr): Provide real binutils
10027         release number.
10028         (gcc_cv_as_powerpc_cmpb): Ditto.
10029         (gcc_cv_as_powerpc_dfp): Ditto.
10030         (gcc_cv_as_powerpc_vsx): Ditto.
10031         (gcc_cv_as_powerpc_popcntd): Add feature test for assembler
10032         supporting the popcntd/lwsync instructions.
10033         (gcc_cv_as_powerpc_lwsync): Ditto.
10034         * configure: Regenerate.
10035
10036         * config/rs6000/aix53.h (ASM_CPU_SPEC): Add support for
10037         -mcpu=native and -mcpu=power7.
10038         * config/rs6000/aix61.h (ASM_CPU_SPEC): Ditto.
10039
10040         * config/rs6000/linux64.opt (-mprofile-kernel): Move switch to be
10041         a variable instead of a mask to reduce the number of mask bits.
10042         * config/rs6000/sysv4.opt (-mbit-align): Ditto.
10043         (-mbit-word): Ditto.
10044         (-mregnames): Ditto.
10045         * config/rs6000/rs6000.opt (-mupdate): Ditto.
10046         (-mfused-madd): Ditto.
10047
10048         * config/rs6000/rs6000.opt (-mpopcntd): New switch for non-VSX ISA
10049         2.06 instructions.
10050         (-mvsx): New switch for VSX instructions.
10051         (-misel): Move from a variable to a mask to allow it to be set by
10052         -mcpu=.
10053
10054         * config/rs6000/rs6000-protos.h (rs6000_hard_regno_nregs): Change
10055         function declaration to an array declaration.
10056         (rs6000_hard_regno_nregs): New external array declaration.
10057
10058         * config/rs6000/t-rs6000 (MD_INCLUDES): Define, add all of the .md
10059         files included by rs6000.md.
10060
10061         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Use
10062         SET_PROFILE_KERNEL macro to reset the -mprofile-kernel switch.
10063
10064         * config/rs6000/rs6000.c (rs6000_isel): Delete, -misel moved to be
10065         a target mask.
10066         (rs6000_debug_reg): New -mdebug= variables.
10067         (rs6000_debug_addr): Ditto.
10068         (rs6000_debug_cost): Ditto.
10069         (rs6000_pmode): New variable to hold Pmode.
10070         (rs6000_pointer_size): New variable to hold POINTER_SIZE.
10071         (rs6000_class_max_nregs): New array to hold CLASS_MAX_NREGS
10072         calculated at compiler start.
10073         (rs6000_hard_regno_nregs): Change function to an array which holds
10074         HARD_REGNO_NREGS calculated at compiler start.
10075         (rs6000_explicit_options): Delete isel field.
10076         (rs6000_vector_unit): New array to hold which vector unit
10077         supports arithmetic options for a given type.
10078         (rs6000_vector_mem): New array to hold which vector unit supports
10079         memory reference operations for a given type.
10080         (rs6000_vector_align): New array to given the alignment of each
10081         vector type.
10082         (power7_cost): New basic costs for power7.
10083         (SET_PROFILE_KERNEL): New macro for resetting -mprofile-kernel.
10084         (rs6000_hard_regno_nregs_internal): New function, moved from
10085         HARD_REGNO_NREGS, to calculate the number of registers each hard
10086         register takes for each type.
10087         (rs6000_debug_reg_print): New function for -mdebug=reg support.
10088         (rs6000_debug_vector_unit): New array, map rs6000_vector to string.
10089         (+rs6000_init_hard_regno_mode_ok): New function, move calculation
10090         of HARD_REGNO_NREGS, CLASS_MAX_NREGS, REGNO_REG_CLASS, and vector
10091         unit information here so it is calculated once at compiler startup
10092         time.
10093         (rs6000_override_options): Make -misel a target mask.  Add more
10094         power7 target masks.  Setup Pmode and POINTER_SIZE.  Add initial
10095         VSX support.  Add support for -mdebug=reg, -mdebug=addr, and
10096         -mdebug=cost.
10097         (POWERPC_MASKS): Add MASK_POPCNTD, MASK_VSX, and MASK_ISEL.
10098         (rs6000_handle_option): Move -misel from variable to target mask.
10099         (rs6000_builtin_mask_for_load): Add VSX support.
10100         (rs6000_conditional_register_usage): Ditto.
10101         (USE_ALTIVEC_FOR_ARG_P): Ditto.
10102         (function_arg_boundary): Ditto.
10103         (rs6000_expand_builtin): Ditto.
10104         (def_builtin): Make abort message a little friendlier.
10105         (rs6000_emit_int_cmove): Add support for 64-bit isel.
10106
10107         * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Depend on the
10108         assembler support the popcntd instruction instead of a vsx
10109         instruction to enable power7 support.
10110         (ASM_CPU_SPEC): Add support for -mcpu=native and -mcpu=power7.
10111         (EXTRA_SPECS): Add ASM_CPU_NATIVE_SPEC to allow passing the right
10112         option to the assembler if -mcpu=native.
10113         (ASM_CPU_NATIVE_SPEC): Ditto.
10114         (TARGET_POPCNTD): If assembler doesn't support popcntd, turn off
10115         ISA 2.06 features.
10116         (TARGET_LWSYNC_INSTRUCTION): Define whether it is safe to issue
10117         the lwsync instruction.
10118         (enum processor_type): Add PROCESSOR_POWER7.
10119         (rs6000_debug_reg): New -mdebug= options.
10120         (rs6000_debug_addr): Ditto.
10121         (rs6000_debug_cost): Ditto.
10122         (rs6000_isel): Delete.
10123         (enum rs6000_vector): New enum to say what vector unit we have.
10124         (VECTOR_UNIT_*): New macros to say which vector unit has
10125         arithmetic operations for a given type.
10126         (VECTOR_MEM_*): New macros to say which vector unit has memory
10127         operations for a given type.
10128         (TARGET_LDBRX): Whether the machine supports the ldbrx
10129         instruction.
10130         (TARGET_ISEL): Delete, -misel moved to be a mask.
10131         (TARGET_ISEL64): New macro for 64-bit isel support.
10132         (UNITS_PER_VSX_WORD): New macro.
10133         (POINTER_SIZE): Move to be an external variable, rather than
10134         calculating whether we are generating 32 ot 64-bit code.
10135         (Pmode): Ditto.
10136         (STACK_BOUNDARY): Add VSX support.
10137         (LOCAL_ALIGNMENT): Ditto.
10138         (SLOW_UNALIGNED_ACCESS): Ditto.
10139         (VSX_REGNO_P): New macro for VSX support.
10140         (VFLOAT_REGNO_P): Ditto.
10141         (VINT_REGNO_P): Ditto.
10142         (VLOGICAL_REGNO_P): Ditto.
10143         (VSX_VECTOR_MODE): Ditto.
10144         (VSX_SCALAR_MODE): Ditto.
10145         (VSX_MODE): Ditto.
10146         (VSX_MOVE_MODE): Ditto.
10147         (VSX_REG_CLASS_P): Ditto.
10148         (HARD_REGNO_NREGS): Instead of calling a function, use an array
10149         lookup.
10150         (UNITS_PER_SIMD_WORD): Add VSX support.
10151         (MODES_TIEABLE_P): Ditto.
10152         (STARTING_FRAME_OFFSET): Ditto.
10153         (STACK_DYNAMIC_OFFSET): Ditto.
10154         (EPILOGUE_USES): Ditto.
10155         (REGNO_REG_CLASS): Move to array lookup.
10156         (CLASS_MAX_NREGS): Ditto.
10157         (rs6000_vector_reg_class): Add declaration.
10158         (ADDITIONAL_REGISTER_NAMES): Add VSX names for the registers that
10159         overlap with the floating point and Altivec registers.
10160
10161         * config/rs6000/e500.h (CHECK_E500_OPTIONS): Disallow -mvsx.
10162
10163         * config/rs6000/driver-rs6000.c (asm_names): New static array to
10164         give the appropriate asm switches if -mcpu=native.
10165         (host_detect_local_cpu): Add support for "asm".
10166         (host_detect_local_cpu): Follow GNU code guidelines for name.
10167
10168         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Move
10169         -mbit-word to a variable instead of being a target mask.
10170
10171         * config/rs6000/sync.md (lwsync): If the assembler supports it,
10172         emit the lwsync instruction instead of emitting the instruction as
10173         an integer constant.
10174
10175         * config/rs6000/spe.md (spe_fixuns_truncdfsi2): Rename from
10176         fixuns_trundfsi2, move expander into rs6000.md.
10177
10178         * config/rs6000/rs6000.md (cpu): Add power7.
10179         (sel, *ptrsize): New mode attributes for 32/64-bit isel.
10180         (logical predicate patterns): Change the single instruction
10181         primitives that set CR0 to be fast_compare instead of compare.
10182         (norsi*): Ditto.
10183         (popcntwsi2): Add support for ISA 2.06 popcount instructions.
10184         (popcntddi2): Ditto.
10185         (popcount<mode>): Ditto.
10186         (floating multiply/add insns): Name the floating point
10187         multiply/add insns.
10188         (isel_signed_<mode>): Add support for -misel on 64-bit systems.
10189         (isel_unsigned_<mode>): Ditto.
10190         (fixuns_trundfsi2): Move expander here from spe.md.
10191         (smindi3): Define if we have -misel on 64-bit systems.
10192         (smaxdi3): Ditto.
10193         (umindi3): Ditto.
10194         (umaxdi3): Ditto.
10195
10196 2009-06-23  Anatoly Sokolov  <aesok@post.ru>
10197
10198         * config.gcc (avr-*-rtems*, avr-*-*): Set extra_gcc_objs and
10199         extra_objs.
10200         * config/avr/avr.c (avr_current_device): New variable.
10201         (avr_arch_types, avr_mcu_types): Move to avr-deveces.c.
10202         (avr_arch, mcu_type_s): Move to avr.h.
10203         * config/avr/avr.h (base_arch_s). Add reserved2, arch_name and
10204         default_data_section_start fields.
10205         (avr_arch): Moved from avr.c.
10206         (mcu_type_s): Moved from avr.c. Add short_sp, data_section_start and
10207         library_name fields.
10208         (avr_current_device, avr_mcu_types, avr_arch_types,
10209         avr_device_to_arch, avr_device_to_data_start,
10210         avr_device_to_startfiles, avr_device_to_devicelib): Declare.
10211         (EXTRA_SPEC_FUNCTIONS): Define.
10212         (LINK_SPEC): Remove device name to '-m ...' and '-Tdata ...' linker
10213         options mapping. Use device_to_arch and device_to_data_start insted.
10214         (STARTFILE_SPEC): Use device_to_startfile instead of crt_binutils.
10215         (CRT_BINUTILS_SPECS, EXTRA_SPECS): Remove.
10216         * config/avr/t-avr (driver-avr.o, avr-devices.o): New rules.
10217         * config/avr/driver-avr.c: New file.
10218         * config/avr/avr-devices.c: New file.
10219
10220 2009-06-23  Jakub Jelinek  <jakub@redhat.com>
10221
10222         * var-tracking.c (unshare_variable): Force initialized to
10223         be VAR_INIT_STATUS_INITIALIZED unless flag_var_tracking_uninit.
10224         (set_variable_part): Likewise.
10225         (struct variable_union_info): Remove pos_src field.
10226         (vui_vec, vui_allocated): New variables.
10227         (variable_union): Pass VAR_INIT_STATUS_UNKNOWN to unshare_variable
10228         unconditionally.  Avoid XCVECNEW/free for every sorting, for dst_l
10229         == 1 use a simpler sorting algorithm.  Compute pos field right
10230         away, don't fill in pos_src.  For dst_l == 2 avoid qsort.
10231         Avoid quadratic comparison if !flag_var_tracking_uninit.
10232         (variable_canonicalize): Pass VAR_INIT_STATUS_UNKNOWN to
10233         unshare_variable unconditionally.
10234         (dataflow_set_different_2): Removed.
10235         (dataflow_set_different): Don't traverse second hash table.
10236         (compute_bb_dataflow): Pass VAR_INIT_STATUS_UNINITIALIZED
10237         unconditionally to var_reg_set or var_mem_set.
10238         (emit_notes_in_bb): Likewise.
10239         (delete_variable_part): Pass VAR_INIT_STATUS_UNKNOWN to
10240         unshare_variable.
10241         (emit_note_insn_var_location): Don't set initialized to
10242         VAR_INIT_STATUS_INITIALIZED early.
10243         (vt_finalize): Free vui_vec if needed, clear vui_vec and
10244         vui_allocated.
10245         * rtl.c (rtx_equal_p): Don't implement on top of rtx_equal_p_cb.
10246
10247         * tree-object-size.c (addr_object_size): Instead of checking
10248         for non-NULL TREE_CHAIN of the FIELD_DECL check that there
10249         are no FIELD_DECLs following it.
10250
10251 2009-06-23  Andreas Krebbel  <krebbel1@de.ibm.com>
10252
10253         * tree-ssa-math-opts.c (find_bswap): Increase the search depth in
10254         order to match bswaps with signed source operands.
10255
10256 2009-06-23  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
10257
10258         * sdbout.c (sdbout_one_type): Fix braces in switch.
10259
10260 2009-06-23  Richard Guenther  <rguenther@suse.de>
10261
10262         * tree-ssa-structalias.c (struct variable_info): Add is_global_var
10263         member.
10264         (var_anything, anything_tree, var_nothing, nothing_tree, var_readonly,
10265         readonly_tree, var_escaped, escaped_tree, var_nonlocal, nonlocal_tree,
10266         var_callused, callused_tree, var_storedanything, storedanything_tree,
10267         var_integer, integer_tree): Remove global variables.
10268         (new_var_info): Do not pass new id, append the new var to the
10269         global variable vector.
10270         (do_ds_constraint): Use is_global_var member of the variable-info.
10271         (new_scalar_tmp_constraint_exp): Adjust.
10272         (create_function_info_for): Likewise.
10273         (create_variable_info_for): Likewise.
10274         (find_what_var_points_to): Remove dead code.
10275         (init_base_vars): Simplify.
10276         (compute_points_to_sets): Adjust.
10277
10278 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
10279
10280         * combine.c (try_combine): Dump information about the insns we're
10281         combining.
10282
10283 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
10284
10285         * combine.c (combine_simplify_rtx): Remove TRULY_NOOP_TRUNCATION
10286         check when calling force_to_mode on TRUNCATE's operand.
10287
10288 2009-06-22  Ian Lance Taylor  <iant@google.com>
10289
10290         * config/rs6000/rs6000.opt: Move msched-epilog before msched-prolog.
10291
10292 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
10293
10294         * config/arm/arm.md (prologue_use): Set length of fake insn to 0.
10295
10296 2009-06-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10297
10298         * doc/invoke.texi (Link Options): -nodefaultlibs and -nostdlib
10299         override library linkage flags such as -static-libgcc or
10300         -shared-libgcc.
10301
10302 2009-06-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
10303
10304         * config/m68k/m68k-devices.def: Add line for MCF5221x.
10305
10306 2009-06-22  Ian Lance Taylor  <iant@google.com>
10307
10308         * config/linux.opt: Put mglibc ahead of muclibc.
10309
10310         * c-decl.c (diagnose_mismatched_decls): Add -Wc++-compat warning
10311         for duplicate decls.
10312
10313 2009-06-22  Matthias Klose  <doko@ubuntu.com>
10314
10315         * Makefile.in (install-plugin): Remove extra `/' after $(DESTDIR).
10316
10317 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
10318
10319         PR objc/28050
10320         * c-parser.c (c_parser_objc_message_args): Return error_mark_node
10321         instead of NULL if a parser error occurs.
10322
10323 2009-06-22  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
10324
10325         * dwarf2out.c (dwarf2_debug_hooks): Initialize
10326         non-DWARF2_DEBUGGING_INFO version.
10327
10328 2009-06-22  Kai Tietz  <kai.tietz@onevision.com>
10329
10330         * config.gcc (i[34567]86-*-mingw*, x86_64-*-mingw*): Add
10331         i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file.
10332
10333         * config/i386/mingw32.h (LIBGCC2_HAS_TF_MODE): Define.
10334         (LIBGCC2_TF_CEXT): Define.
10335         (TF_SIZE): Define.
10336
10337 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
10338
10339         PR target/40463
10340         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Fix definition.
10341
10342 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
10343
10344         * config/arm/arm.c (arm_override_options): Disable
10345         -mcaller-super-interworking and -mcallee-super-interworking.
10346         * doc/invoke.texi (ARM Options): Document this.
10347
10348 2009-06-22  Nathan Sidwell  <nathan@codesourcery.com>
10349
10350         * config/arm/arm.c (arm_print_operand): Deal with HIGH.
10351         * config/arm/constraints.md (j): New constraint for movw operands.
10352         (N): Remove thumb2 meaning.
10353         * config/arm/arm.md (*arm_movw): Delete.
10354         (*arm_movsi_insn): Use j constraint for movw instead of N constraint.
10355         * config/arm/vfp.md (*arm_movsi_vfp, *thumb2_movsi_vfp): Likewise.
10356         * config/arm/thumb2.md (*thumb2_movsi_insn): Likewise.
10357
10358 2009-06-22  Martin Jambor  <mjambor@suse.cz>
10359
10360         PR tree-optimization/40492
10361         * tree-sra.c (sra_modify_assign): Pass zero offsets to
10362         build_ref_for_offset.
10363
10364 2009-06-22  Shujing Zhao  <pearly.zhao@oracle.com>
10365
10366         * alias.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P, CALL_P, NOTE_P and
10367         JUMP_TABLE_DATA_P predicates where applicable.
10368         * auto-inc-dec.c: Ditto.
10369         * builtins.c: Ditto.
10370         * caller-save.c: Ditto.
10371         * calls.c: Ditto.
10372         * cfgcleanup.c: Ditto.
10373         * cfglayout.c: Ditto.
10374         * cfgrtl.c: Ditto.
10375         * combine.c: Ditto.
10376         * combine-stack-adj.c: Ditto.
10377         * cse.c: Ditto.
10378         * cselib.c: Ditto.
10379         * dbxout.c: Ditto.
10380         * df-scan.c: Ditto.
10381         * dse.c: Ditto.
10382         * dwarf2asm.c: Ditto.
10383         * dwarf2out.c: Ditto.
10384         * emit-rtl.c: Ditto.
10385         * except.c: Ditto.
10386         * explow.c: Ditto.
10387         * expmed.c: Ditto.
10388         * expr.c: Ditto.
10389         * final.c: Ditto.
10390         * function.c: Ditto.
10391         * fwprop.c: Ditto.
10392         * gcse.c: Ditto.
10393         * genpreds.c: Ditto.
10394         * genrecog.c: Ditto.
10395         * ifcvt.c: Ditto.
10396         * ira-costs.c: Ditto.
10397         * ira-lives.c: Ditto.
10398         * jump.c: Ditto.
10399         * loop-iv.c: Ditto.
10400         * lower-subreg.c: Ditto.
10401         * modulo-sched.c: Ditto.
10402         * optabs.c: Ditto.
10403         * postreload.c: Ditto.
10404         * print-rtl.c: Ditto.
10405         * recog.c: Ditto.
10406         * reginfo.c: Ditto.
10407         * regmove.c: Ditto.
10408         * reload1.c: Ditto.
10409         * reload.c: Ditto.
10410         * reorg.c: Ditto.
10411         * rtlanal.c: Ditto.
10412         * rtl.c: Ditto.
10413         * sched-vis.c: Ditto.
10414         * sdbout.c: Ditto.
10415         * sel-sched-ir.c: Ditto.
10416         * simplify-rtx.c: Ditto.
10417         * targhooks.c: Ditto.
10418         * var-tracking.c: Ditto.
10419         * vmsdbgout.c: Ditto.
10420
10421 2009-06-22  Matthias Klose  <doko@ubuntu.com>
10422
10423         * Makefile.in (install-plugin): Always use DESTDIR.
10424
10425 2009-06-22  Olivier Hainque  <hainque@adacore.com>
10426
10427         * config/pa/pa.c (output_call): Don't optimize post call jumps
10428         into return address adjustments if the call may throw.
10429
10430 2009-06-21  Richard Earnshaw  <rearnsha@arm.com>
10431
10432         * arm.c (thumb1_output_casesi): New function.
10433         * arm.h (CASE_VECTOR_PC_RELATIVE): Thumb-1 code is also relative if
10434         optimizing for size or PIC.
10435         (CASE_VECTOR_SHORTEN_MODE): Handle thumb-1.
10436         * arm.md (UNSPEC_THUMB1_CASESI): New constant.
10437         (casesi): Handle Thumb-1 when optimizing for size or PIC.
10438         (thumb1_casesi_internal_pic): New expand rule.
10439         (thumb1_casesi_dispatch): New pattern.
10440         * aout.h (ASM_OUTPUT_ADDR_DIFF_ELT): Use shortened vectors for
10441         thumb-1 mode.
10442         * coff.h (JUMP_TABLES_IN_TEXT_SECTION): Thumb-1 jump tables are now
10443         in the text seciton when PIC or optimizing for size.
10444         * elf.h (JUMP_TABLES_IN_TEXT_SECTION): Likewise.
10445         * lib1funcs.asm ([__ARM_EABI__]): Add an attribute describing stack
10446         preservation properties of code.
10447         (__gnu_thumb1_case_sqi, __gnu_thumb1_case_uqi): New functions.
10448         (__gnu_thumb1_case_shi, __gnu_thumb1_case_uhi): New functions.
10449         (__gnu_thumb1_case_si): New function.
10450         * t-arm (LIB1ASMSRC): Define here.
10451         (LIB1ASMFUNCS): Add some common functions.
10452         * t-arm-elf (LIB1ASMSRC): Delete.
10453         (LIB1ASMFUNCS): Append to existing set.
10454         * t-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
10455         * t-strongarm-elf (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
10456         * t-symbian (LIB1ASMFUNCS): Likewise.
10457         * t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
10458         * t-wince-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
10459
10460 2009-06-21  Richard Guenther  <rguenther@suse.de>
10461
10462         PR tree-optimization/38729
10463         * tree-ssa-loop-niter.c (find_loop_niter_by_eval): Restrict
10464         to loops with a single exit if -fno-expensive-optimizations.
10465
10466 2009-06-21  Jakub Jelinek  <jakub@redhat.com>
10467
10468         * var-tracking.c (struct shared_hash_def, shared_hash): New types.
10469         (dataflow_set): Change vars type from htab_t to shared_hash.
10470         (shared_hash_pool, empty_shared_hash): New variables.
10471         (vars_clear): Removed.
10472         (shared_hash_shared, shared_hash_htab, shared_hash_copy,
10473         shared_hash_find_slot_unshare, shared_hash_find_slot,
10474         shared_hash_find_slot_noinsert, shared_hash_find): New
10475         static inlines.
10476         (shared_hash_unshare, shared_hash_destroy): New functions.
10477         (unshare_variable): Unshare set->vars if shared, use
10478         shared_hash_htab.
10479         (vars_copy): Use htab_traverse_noresize instead of htab_traverse.
10480         (get_init_value, find_src_set_src, dump_dataflow_set,
10481         clobber_variable_part, emit_notes_for_differences): Use
10482         shared_hash_htab.
10483         (dataflow_set_init): Remove second argument, set vars to
10484         empty_shared_hash instead of creating a new htab.
10485         (dataflow_set_clear): Call shared_hash_destroy and set vars
10486         to empty_shared_hash instead of calling vars_clear.
10487         (dataflow_set_copy): Don't call vars_copy, instead just share
10488         the src htab with dst.
10489         (variable_union): Use shared_hash_*, use initially NO_INSERT
10490         lookup if set->vars is shared.  Don't keep slot cleared before
10491         calling unshare_variable.  Unshare set->vars if needed.
10492         Even ->refcount == 1 vars must be unshared if set->vars is shared
10493         and var needs to be modified.
10494         (variable_canonicalize): New function.
10495         (dataflow_set_union): If dst->vars is empty, just share src->vars
10496         with dst->vars and traverse with variable_canonicalize to canonicalize
10497         and unshare what is needed.
10498         (dataflow_set_different): If old_set and new_set use the same shared
10499         htab, they aren't different.  If number of htab elements is different,
10500         htabs are different.  Use shared_hash_*.
10501         (dataflow_set_destroy): Call shared_hash_destroy instead of
10502         htab_delete.
10503         (compute_bb_dataflow, emit_notes_in_bb, vt_emit_notes): Don't pass
10504         second argument to dataflow_set_init.
10505         (vt_initialize): Likewise.  Initialize shared_hash_pool and
10506         empty_shared_hash, move bb in/out initialization afterwards.
10507         Use variable_htab_free instead of NULL as changed_variables del hook.
10508         (variable_was_changed): Change type of second argument to pointer to
10509         dataflow_set.  When inserting var into changed_variables, bump
10510         refcount.  Unshare set->vars if set is shared htab and slot needs to
10511         be cleared.
10512         (set_variable_part): Use shared_hash_*, use initially NO_INSERT
10513         lookup if set->vars is shared.  Unshare set->vars if needed.
10514         Even ->refcount == 1 vars must be unshared if set->vars is shared
10515         and var needs to be modified.  Adjust variable_was_changed caller.
10516         (delete_variable_part): Use shared_hash_*.  Even ->refcount == 1
10517         vars must be unshared if set->vars is shared and var needs to be
10518         modified.  Adjust variable_was_changed caller.
10519         (emit_note_insn_var_location): Don't pool_free var.
10520         (emit_notes_for_differences_1): Initialize empty_var->refcount to 0
10521         instead of 1.
10522         (vt_finalize): Call htab_delete on empty_shared_hash->htab and
10523         free_alloc_pool on shared_hash_pool.
10524
10525 2009-06-20  Anthony Green  <green@moxielogic.com>
10526
10527         * config/moxie/sfp-machine.h (__gcc_CMPtype, CMPtype): Define.
10528         * config/moxie/moxie.h (LOAD_EXTEND_OP): Define.
10529
10530 2009-06-20  Richard Guenther  <rguenther@suse.de>
10531
10532         * tree-ssa-structalias.c (find_func_aliases): For memset use
10533         a constraint from NULL if we memset to zero.
10534         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Add builtins
10535         we explicitly handle that do not read from memory.
10536         (call_may_clobber_ref_p_1): Properly handle builtins that may
10537         set errno.
10538
10539 2009-06-20  Richard Guenther  <rguenther@suse.de>
10540
10541         PR tree-optimization/40495
10542         * tree-ssa-structalias.c (get_constraint_exp_for_temp): Remove.
10543         (new_scalar_tmp_constraint_exp): New function.
10544         (process_constraint): Do not create temporary decls.
10545         (process_all_all_constraints): Likewise.
10546         (handle_const_call): Likewise.
10547         (create_function_info_for): Do not set decl.
10548
10549 2009-06-19  Ian Lance Taylor  <iant@google.com>
10550
10551         * config/rs6000/rs6000.c (rs6000_explicit_options): Make static.
10552         (rs6000_attribute_table): Make static; move before use.
10553
10554 2009-06-19  Eric Botcazou  <ebotcazou@adacore.com>
10555
10556         * tree.c (substitute_in_expr) <COMPONENT_REF>: Tweak and reformat.
10557         <tcc_vl_exp>: Call process_call_operands on the new CALL_EXPR.
10558         Propagate the TREE_READONLY flag without overwriting it.
10559         (substitute_placeholder_in_expr) <tcc_vl_exp>: Likewise.
10560         Propagate the TREE_READONLY flag onto the result.
10561         (process_call_operands): Move around.  Use correct constant value.
10562
10563 2009-06-19  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
10564
10565         PR target/40482
10566         * config/arm/arm.c (thumb_shiftable_const): Truncate val to 32 bits.
10567         * config/arm/arm.md: Likewise.
10568
10569 2009-06-19  Ian Lance Taylor  <iant@google.com>
10570
10571         * tree-cfg.c (gimple_redirect_edge_and_branch): Change ERROR_MARK
10572         to GIMPLE_ERROR_MARK.
10573
10574         * c-typeck.c (build_conditional_expr): Add op1_original_type and
10575         op2_original_type parameters.  Warn about using different enum types.
10576         * c-parser.c (c_parser_conditional_expression): Pass original
10577         types to build_conditional_expr.
10578         * c-tree.h (build_conditional_expr): Update declaration.
10579
10580 2009-06-19  Ian Lance Taylor  <iant@google.com>
10581
10582         * config/i386/i386.c (ix86_function_specific_save): Test that
10583         fields match values, rather than testing the values are in a
10584         certain range.
10585
10586 2009-06-19  Richard Guenther  <rguenther@suse.de>
10587
10588         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Handle
10589         ADDR_EXPR pointers.
10590         (ptr_derefs_may_alias_p): Likewise.
10591         (ptr_deref_may_alias_ref_p_1): New function.
10592         (ptr_deref_may_alias_ref_p): Likewise.
10593         (ref_maybe_used_by_call_p_1): Handle builtins that are not
10594         covered by looking at the ESCAPED solution.
10595         (call_may_clobber_ref_p_1): Likewise.
10596         * tree-ssa-structalias.c (get_constraint_for_ptr_offset):
10597         Handle NULL_TREE offset.  Do not produce redundant constraints.
10598         (process_all_all_constraints): New helper function.
10599         (do_structure_copy): Use it.
10600         (handle_lhs_call): Likewise.
10601         (find_func_aliases): Handle some builtins with pointer arguments
10602         and/or return values explicitly.
10603
10604 2009-06-19  Ian Lance Taylor  <iant@google.com>
10605
10606         * varasm.c (const_rtx_hash_1): Remove const qualifier from shift.
10607
10608 2009-06-19  Ian Lance Taylor  <iant@google.com>
10609
10610         * rtl.h (SUBREG_PROMOTED_UNSIGNED_P): Add cast to int.
10611
10612 2009-06-19  Ian Lance Taylor  <iant@google.com>
10613
10614         * ggc-page.c (ggc_pch_write_object): Initialize emptyBytes.
10615         * sdbout.c (sdb_debug_hooks): Initialize non-SDB_DEBUGGING_INFO
10616         version.
10617
10618         * c-decl.c (finish_decl): If -Wc++-compat, warn about
10619         uninitialized const.
10620
10621 2009-06-19  Ian Lance Taylor  <iant@google.com>
10622
10623         * dse.c (struct store_info): Rename bitmap field to bmap.  Change
10624         all uses.
10625
10626         * c-decl.c (in_struct, struct_types): Remove.
10627         (struct c_binding): Add in_struct field.
10628         (c_binding_ptr): Define type, along with VEC.
10629         (struct c_struct_parse_info): Define.
10630         (struct_parse_info): New static variable.
10631         (bind): Initialize in_struct field.
10632         (start_struct): Remove enclosing_in_struct and
10633         enclosing_struct_types parameters.  Add
10634         enclosing_struct_parse_info parameter.  Change all callers.  Set
10635         struct_parse_info rather than in_struct and struct_types.
10636         (grokfield): If -Wc++-compat and there is a symbol binding for the
10637         field name, set the in_struct flag and push it on the
10638         struct_parse_info->fields vector.
10639         (warn_cxx_compat_finish_struct): New static function.
10640         (finish_struct): Remove enclosing_in_struct and
10641         enclosing_struct_types parameters.  Add
10642         enclosing_struct_parse_info parameter.  Change all callers.  Don't
10643         set C_TYPE_DEFINED_IN_STRUCT here.  Call
10644         warn_cxx_compat_finish_struct.  Free struct_parse_info and set to
10645         parameter.  Only push on struct_types if warn_cxx_compat.
10646         (finish_enum): Only push on struct_types if warn_cxx_compat.
10647         (declspecs_add_type): Add loc parameter.  Change all callers.
10648         Change all error calls to error_at.  Pass loc, not input_location,
10649         to pedwarn calls.  Warn if -Wc++-compat and a typedef name is
10650         defined in a struct.  If -Wc++-compat and parsing a struct, record
10651         that a typedef name was used.
10652         * c-parser.c (c_parser_declspecs): Get location to pass to
10653         declspecs_add_type.
10654         (c_parser_struct_or_union_specifier): Update calls to start_struct
10655         and finish_struct.
10656         * c-tree.h (struct c_struct_parse_info): Declare.
10657         (finish_struct, start_struct): Update declarations.
10658         (declspecs_add_type): Update declaration.
10659
10660 2009-06-19  Ian Lance Taylor  <iant@google.com>
10661
10662         * c-decl.c (grokdeclarator): If -Wc++-compat, warn about a global
10663         variable with an anonymous type.
10664
10665 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
10666
10667         * see.c: Remove for real.
10668
10669 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
10670
10671         * optabs.h (enum optab_index): Add new OTI_significand.
10672         (significand_optab): Define corresponding macro.
10673         * optabs.c (init_optabs): Initialize significand_optab.
10674         * genopinit.c (optabs): Implement significand_optab using
10675         significand?f2 patterns.
10676         * builtins.c (expand_builtin_mathfn): Handle
10677         BUILT_IN_SIGNIFICAND{,F,L}.
10678         (expand_builtin): Expand BUILT_IN_SIGNIFICAND{,F,L} using
10679         expand_builtin_mathfn if flag_unsafe_math_optimizations is set.
10680
10681         * config/i386/i386.md (significandxf2, significand<mode>2): New
10682         expanders to implement significandf, significand and significandl
10683         built-ins as inline x87 intrinsics.
10684
10685 2009-06-18  Anatoly Sokolov  <aesok@post.ru>
10686
10687         * config/avr/avr.c (avr_override_options): Remove setting value of
10688         PARAM_INLINE_CALL_COST.
10689
10690 2009-06-18  Richard Henderson  <rth@redhat.com>
10691
10692         PR 40488
10693         * tree-pass.h (TDF_ASMNAME): New.
10694         * tree-dump.c (dump_options): Add asmname.
10695         * doc/invoke.texi: Document it.
10696
10697         * tree-pretty-print.c (maybe_dump_asm_name): Merge into...
10698         (dump_decl_name): ...here.
10699         (dump_function_name): New flags arg; mind TDF_ASMNAME.
10700         (dump_generic_node): Update dump_function_name calls.
10701         (print_call_name): New flags arg; update all dump calls.
10702         * diagnostic.h (print_call_name): Update.
10703         * gimple-pretty-print.c (dump_gimple_call): Update.
10704
10705 2009-06-18  H.J. Lu  <hongjiu.lu@intel.com>
10706
10707         PR target/40470
10708         * config/i386/i386.h (CLASS_LIKELY_SPILLED_P): Add SSE_FIRST_REG.
10709
10710 2009-06-18  Diego Novillo  <dnovillo@google.com>
10711
10712         * doc/plugins.texi: Document plugin_is_GPL_compatible.
10713         * plugin.c (str_license): Declare.
10714         (try_init_one_plugin): Assert that the symbol
10715         'plugin_is_GPL_compatible' exists.
10716
10717 2009-06-18  Sergei Dyshel  <sergeid@il.ibm.com>
10718
10719         * see.c: Remove.
10720         * Makefile.in (OBJS-common): Remove see.o.
10721         (see.o): Remove.
10722         * common.opt (fsee): Mark as preserved for backward compatibility.
10723         * opts.c (common_handle_option): Add OPT_fsee to the backward
10724         compatibility section.
10725         * passes.c (init_optimization_passes, pass_see): Remove pass.
10726         * timevar.def (TV_SEE): Remove.
10727         * tree-pass.h (pass_see): Remove declaration.
10728         * doc/invoke.texi (-fsee): Remove documentation.
10729
10730 2009-06-18  Martin Jambor  <mjambor@suse.cz>
10731
10732         * tree-sra.c: Include statistics.h
10733         (sra_stats): New variable.
10734         (sra_initialize): Clear sra_stats.
10735         (create_access_replacement): Increment sra_stats.replacements.
10736         (get_access_replacement): Do not return twice.
10737         (analyze_all_variable_accesses): Increment statistics counter by the
10738         number of scalarized aggregates.
10739         (generate_subtree_copies): Increment sra_stats.subtree_copies.
10740         (sra_modify_expr): Increment sra_stats.exprs.
10741         (load_assign_lhs_subreplacements): Increment sra_stats.subreplacements.
10742         (sra_modify_assign): Increment sra_stats.exprs,
10743         sra_stats.separate_lhs_rhs_handling and sra_stats.deleted.
10744         (perform_intra_sra): Update statistics counters.
10745         * Makefile.in (tree-sra.o): Add statistics.h to dependencies.
10746
10747 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
10748
10749         * config/arm/arm.c (TARGET_SCALAR_MODE_SUPPORTED_P): Redefine.
10750         (arm_scalar_mode_supported_p): New function.
10751
10752 2009-06-18  Paul Brook  <paul@codesourcery.com>
10753             Sandra Loosemore  <sandra@codesourcery.com>
10754
10755         * config/arm/sfp-machine.h (_FP_NANFRAC_H, _FP_NANSIGN_H): Define.
10756         (__extendhfsf2, __truncsfhf2): Define.
10757         * config/arm/fp16.c: New file.
10758         * config/arm/t-bpabi (LIB2FUNCS_STATIC_EXTRA): Add fp16.c.
10759         * config/arm/t-symbian (LIB2FUNCS_STATIC_EXTRA):  Add fp16.c.
10760
10761 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
10762
10763         * doc/extend.texi (Half-Precision): New section.
10764         * doc/invoke.texi (Option Summary): List -mfp16-format.
10765         (ARM Options): List neon-fp16 as -mfpu value.  Document -mfp16-format.
10766         * config/arm/arm.opt (mfp16-format=): New.
10767         * config/arm/arm.c: Include intl.h.
10768         (TARGET_INVALID_PARAMETER_TYPE): Redefine.
10769         (TARGET_INVALID_RETURN_TYPE): Redefine.
10770         (TARGET_PROMOTED_TYPE): Redefine.
10771         (TARGET_CONVERT_TO_TYPE): Redefine.
10772         (arm_fp16_format): Define.
10773         (all_fpus): Add entry for neon-fp16.
10774         (fp_model_for_fpu): Likewise.
10775         (struct fp16_format): Declare.
10776         (all_fp16_formats): Define.
10777         (arm_init_libfuncs): Add entries for HFmode conversions and arithmetic
10778         functions.
10779         (arm_override_options): Set arm_fp16_format. Call sorry for fp16
10780         and no ldrh.
10781         (arm_legitimate_index_p): Treat HFmode like HImode.
10782         (thumb1_legitimate_address_p): Make it recognize HFmode constants.
10783         (coproc_secondary_reload_class): Special-case HFmode.
10784         (arm_print_operand): Add 'z' specifier for vld1.16/vst1.16.
10785         (arm_hard_regno_mode_ok): Allow HFmode values in VFP registers.
10786         (arm_init_fp16_builtins): New.
10787         (arm_init_builtins): Call it.
10788         (arm_invalid_parameter_type): New.
10789         (arm_invalid_return_type): New.
10790         (arm_promoted_type): New.
10791         (arm_convert_to_type).
10792         (arm_file_start): Deal with neon-fp16 as fpu_name.  Emit tag for fp16
10793         format.
10794         (arm_emit_fp16_const): New function.
10795         (arm_mangle_type): Mangle __fp16 as "Dh".
10796         * config/arm/arm.h (TARGET_VFPD32): Make it know about
10797         FPUTYPE_NEON_FP16.
10798         (TARGET_NEON_FP16): New.
10799         (TARGET_NEON): Make it know about FPUTYPE_NEON_FP16.
10800         (enum fputype): Add FPUTYPE_NEON_FP16.
10801         (enum arm_fp16_format_type): Declare.
10802         (arm_fp16_format): Declare.
10803         (LARGEST_EXPONENT_IS_NORMAL): Define.
10804         * config/arm/arm-protos.h (arm_emit_fp16_const): Declare.
10805         * config/arm/arm-modes.def (HFmode): Define.
10806         * config/arm/vfp.md: (*movhf_vfp): New.
10807         (extendhfsf2): New.
10808         (truncsfhf2): New.
10809         * config/arm/arm.md: (fpu): Add neon_fp16.
10810         (floatsihf2, floatdihf2): New.
10811         (fix_trunchfsi2, fix_trunchfdi2): New.
10812         (truncdfhf2): New.
10813         (extendhfdf2): New.
10814         (movhf): New.
10815         (*arm32_movhf): New.
10816         (*thumb1_movhf): New.
10817         (consttable_2): Add check for HFmode constants.
10818         (consttable_4): Handle HFmode constants.
10819
10820 2009-06-18  Uros Bizjak  <ubizjak@gmail.com>
10821
10822         * convert.c (convert_to_integer): Convert (int)logb() into ilogb().
10823
10824 2009-06-17  Olivier Hainque  <hainque@adacore.com>
10825
10826         * collect2.c (main): Use CONST_CAST2 to perform char ** to
10827         const char ** conversion in AIX specific section.
10828
10829 2009-06-17  H.J. Lu  <hongjiu.lu@intel.com>
10830
10831         * config/i386/i386.c (ix86_special_builtin_type): Remove
10832         UINT64_FTYPE_PINT.  Add UINT64_FTYPE_PUNSIGNED.
10833         (bdesc_special_args): Updated.
10834         (ix86_init_mmx_sse_builtins): Likewise.
10835         (ix86_expand_special_args_builtin): Likewise.
10836
10837 2009-06-17  Richard Henderson  <rth@redhat.com>
10838
10839         * tree-pretty-print.c (maybe_dump_asm_name): New.
10840         (dump_decl_name): Use it.
10841         (PRINT_FUNCTION_NAME): Merge into...
10842         (dump_function_name): ... here.  Use maybe_dump_asm_name.
10843
10844 2009-06-17  Cary Coutant  <ccoutant@google.com>
10845
10846         * dbxout.c (dbxout_source_line): Add is_stmt parameter.
10847         Change caller.
10848         * debug.c (struct gcc_debug_hooks): Change placeholder for
10849         source_line hook.
10850         (debug_nothing_int_charstar_int): Replaced by...
10851         (debug_nothing_int_charstar_int_bool): ...this.
10852         * debug.h (struct gcc_debug_hooks): Add is_stmt parameter to
10853         source_line prototype.
10854         (debug_nothing_int_charstar_int): Replaced by...
10855         (debug_nothing_int_charstar_int_bool): ...this.
10856         * defaults.h (SUPPORTS_DISCRIMINATOR): New constant.
10857         * dwarf2out.c (dwarf2out_source_line): Add is_stmt parameter.
10858         Output is_stmt operand when necessary.
10859         * final.c (final_scan_insn): Pass is_stmt to source_line debug hook.
10860         (notice_source_line): Add is_stmt parameter.
10861         * sdbout.c (sdbout_source_line): Add is_stmt parameter.
10862         * vmsdbgout.c (vmsdbgout_source_line): Add is_stmt parameter.
10863         Change callers.
10864         * xcoffout.c (xcoffout_source_line): Add is_stmt parameter.
10865         * xcoffout.h (xcoffout_source_line): Add is_stmt parameter.
10866
10867 2009-06-17  Ian Lance Taylor  <iant@google.com>
10868
10869         * expr.c (struct move_by_pieces_d): Rename from move_by_pieces.
10870         Change all uses.
10871         (struct store_by_pieces_d): Rename from store_by_pieces.  Change
10872         call uses.
10873
10874 2009-06-17  Adam Nemet  <anemet@caviumnetworks.com>
10875
10876         * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS,
10877         STRIP_USELESS_TYPE_CONVERSION): Use tree_strip_nop_conversions,
10878         tree_strip_sign_nop_conversions and
10879         tree_ssa_strip_useless_type_conversions rather than stripping
10880         the operations here.
10881         (tree_strip_nop_conversions, tree_strip_sign_nop_conversions):
10882         Declare them.
10883         * gimple.h (tree_ssa_strip_useless_type_conversions): Declare it.
10884         * tree-ssa.c (tree_ssa_strip_useless_type_conversions): New function.
10885         * tree.c (tree_nop_conversion, tree_sign_nop_conversion,
10886         tree_strip_nop_conversions, tree_strip_sign_nop_conversions): New
10887         functions.
10888
10889 2009-06-17  Michael Eager  <eager@eagercon.com>
10890
10891         * config/rs6000/constraints.md (register_constraint "d"): New.
10892         * config/rs6000/dfp.md (movsd_store, extendsddd2, extendsdtd2,
10893         truncddsd2, *negdd2_fpr, *absdd2_fpr, *nabsdd2_fpr,
10894         *movdd_hardfloat32, *movdd_hardfloat64_mfpgpr, *movdd_hardfloat64,
10895         *negtd2_fp, *abstd2_fpr, *nabstd2_fpr, *movtd_internal, extendddtd2,
10896         trunctddd2, adddd3, addtd3, subdd3, subtd3, muldd3, multd3, divdd3,
10897         divtd3, *cmpdd_internal1, *cmptd_internal1, floatditd2, ftruncdd2,
10898         fixdddi2, ftrunctd2, fixtddi2): replace 'f' constraint with 'd'
10899         * config/rs6000/ppu_intrinsics.h (__mffs, __mtfsf, __mtfsfi, __fabs,
10900         __fnabs, __fmadd, __fmsub, __fnmadd, __fnmsub, __fsel, __frsqrte,
10901         __fsqrt, __fmul, __fmuls, __frsp, __fcfid, __fctid, __fctidz, __fctiw,
10902         __fctiwz): Same.
10903         * config/rs6000/rs6000.md (*extendsfdf2_fpr, *truncdfsf2_fpr,
10904         *fseldfsf4, *negdf2_fpr, *absdf2_fpr, *nabsdf2_fpr, *adddf3_fpr,
10905         *subdf3_fpr, *muldf3_fpr, *divdf3_fpr, recipdf3, fred, sqrtdf2,
10906         *fseldfdf4, *fselsfdf4, *floatsidf2_internal, *floatunssidf2_internal,
10907         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
10908         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2, rounddf2,
10909         stfiwx, floatdidf2, fix_truncdfdi2, floatdisf2_internal1,
10910         *movdf_hardfloat32, *movdf_hardfloat64_mfpgpr, *movdf_hardfloat64,
10911         *movtf_internal, *extenddftf2_internal, trunctfdf2_internal1,
10912         trunctfdf2_internal2, trunctfsf2_fprs, fix_trunc_helper,
10913         *fix_trunctfsi2_internal, negtf2_internal, *movdi_internal32,
10914         *movdi_mfpgpr, *movdi_internal64, *movdf_update1, *movdf_update2,
10915         *cmpdf_internal1, *cmptf_internal1, *cmptf_internal2): Same.
10916         * doc/md.texi: Describe PowerPC 'd' constraint, update 'f' constraint.
10917
10918 2009-06-16  Ian Lance Taylor  <iant@google.com>
10919
10920         * profile.c (total_num_never_executed): Don't define.
10921         (compute_branch_probabilities): Don't count or print
10922         num_never_executed.
10923         (init_branch_prob): Don't set total_num_never_executed.
10924         (end_branch_prob): Don't print total_num_never_executed.
10925
10926 2009-06-17  David Daney  <ddaney@caviumnetworks.com>
10927
10928         * jump.c (cleanup_barriers): Handle case of no insns before a barrier.
10929
10930 2009-06-17  David Edelsohn  <edelsohn@gnu.org>
10931
10932         * config/rs6000/dfp.md (nabsdd2_fpr): Correct mode.
10933         (nabstd2_fpr): Same.
10934
10935 2009-06-17  Steve Ellcey  <sje@cup.hp.com>
10936
10937         * expr.c (expand_assignment): Change complex type check.
10938
10939 2009-06-17  Basile Starynkevitch  <basile@starynkevitch.net>
10940
10941         * doc/plugins.texi (Building GCC plugins): Added new section.
10942
10943 2009-06-17  Ian Lance Taylor  <iant@google.com>
10944
10945         * c-pch.c (get_ident): Don't set size of templ array.
10946         (pch_init): Don't set size of partial_pch array.
10947
10948         * c-typeck.c (digest_init): If -Wc++-compat, warn about using a
10949         string constant to intialize an array whose size is the length of
10950         the string.
10951
10952 2009-06-17  Richard Guenther  <rguenther@suse.de>
10953
10954         PR tree-optimization/40389
10955         * tree-ssa-structalias.c (handle_rhs_call): Restrict NRV case
10956         to addressable types.
10957         * gimple.c (walk_stmt_load_store_addr_ops): Likewise.
10958
10959 2009-06-17  Richard Guenther  <rguenther@suse.de>
10960
10961         PR middle-end/40460
10962         * tree-chrec.h (build_polynomial_chrec): If we cannot determine
10963         if there is no evolution of left in the loop bail out.
10964         * tree-chrec.c (chrec_fold_multiply_poly_poly): CSE one
10965         chrec_fold_multiply.
10966
10967 2009-06-16  J"orn Rennecke  <joern.rennecke@arc.com>
10968             Janis Johnson  <janis187@us.ibm.com>
10969
10970         PR target/39254
10971         * config/rs6000/rs6000.c (rs6000_emit_move): Don't emit a USE
10972         for the symbol ref of a constant that is the source of a move
10973         - nor for any other not-obvious-label-ref constants.
10974
10975 2009-06-16  Olatunji Ruwase  <tjruwase@google.com>
10976
10977         * plugin.c (position_pass): Skip newly inserted pass during list
10978         traversal to avoid repeated insertion.
10979
10980 2009-06-16  Ian Lance Taylor  <iant@google.com>
10981
10982         * vec.h (VEC_stack_alloc): Define different version if
10983         GATHER_STATISTICS is defined, to accept and ignore MEM_STAT.
10984         (DEF_VEC_ALLOC_FUNC_P_STACK): Remove MEM_STAT_DECL.
10985         (DEF_VEC_ALLOC_FUNC_O_STACK): Likewise.
10986         (DEF_VEC_ALLOC_FUNC_I_STACK): Likewise.
10987
10988 2009-06-16  H.J. Lu  <hongjiu.lu@intel.com>
10989
10990         * config.gcc (extra_headers): Add ia32intrin.h for x86.
10991
10992         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_BSRSI,
10993         IX86_BUILTIN_BSRDI.  IX86_BUILTIN_RDPMC, IX86_BUILTIN_RDTSC.
10994         IX86_BUILTIN_RDTSCP.  IX86_BUILTIN_ROLQI, IX86_BUILTIN_ROLHI,
10995         IX86_BUILTIN_RORQI and IX86_BUILTIN_RORHI.
10996         (ix86_special_builtin_type): Add UINT64_FTYPE_VOID,
10997         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
10998         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
10999         (bdesc_special_args): Add __builtin_ia32_rdtsc and
11000         __builtin_ia32_rdtscp.
11001         (bdesc_args): Add __builtin_ia32_bsrsi, __builtin_ia32_bsrdi,
11002         __builtin_ia32_rolqi, __builtin_ia32_rolhi, __builtin_ia32_rorqi
11003         and __builtin_ia32_rorhi.
11004         (ix86_init_mmx_sse_builtins): Handle UINT64_FTYPE_VOID,
11005         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
11006         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
11007         (ix86_expand_args_builtin): Likewise.
11008         (ix86_expand_special_args_builtin): Likewise.
11009
11010         * config/i386/i386.md (UNSPECV_RDTSCP): New.
11011         (UNSPECV_RDTSC): Likewise.
11012         (UNSPECV_RDPMC): Likewise.
11013         (*bsr): Renamed to ...
11014         (bsr): This
11015         (*bsr_rex64): Renamed to ...
11016         (bsr_rex64): This.
11017         (rdpmc): New.
11018         (*rdpmc): Likewise.
11019         (*rdpmc_rex64): Likewise.
11020         (rdtsc): Likewise.
11021         (*rdtsc): Likewise.
11022         (*rdtsc_rex64): Likewise.
11023         (rdtscp): Likewise.
11024         (*rdtscp): Likewise.
11025         (*rdtscp_rex64): Likewise.
11026
11027         * config/i386/ia32intrin.h: New.
11028
11029         * config/i386/x86intrin.h: Include <ia32intrin.h>.
11030
11031 2009-06-16  Ian Lance Taylor  <iant@google.com>
11032
11033         * ira-build.c (copy_info_to_removed_store_destinations):
11034         Initialize parent_a.
11035
11036 2009-06-16  Ian Lance Taylor  <iant@google.com>
11037
11038         * c-decl.c (grokdeclarator): Change size_varies to bool.
11039
11040 2009-06-16  Ian Lance Taylor  <iant@google.com>
11041
11042         * sel-sched.c: Make forward declarations of move_op_hooks and
11043         fur_hooks explicitly extern.
11044
11045 2009-06-16  Ian Lance Taylor  <iant@google.com>
11046
11047         * df-problems.c (df_byte_lr_alloc): Don't set problem_data to itself.
11048         * vec.c (vec_gc_o_reserve_1): Don't set alloc to itself.
11049
11050 2009-06-16  Ian Lance Taylor  <iant@google.com>
11051
11052         * resource.c (mark_referenced_resources): Change
11053         include_delayed_effects parameter to bool.  Change all callers.
11054         (mark_end_of_function_resources): Likewise.
11055         * reorg.c (insn_references_resource_p): Likewise.
11056         (insn_sets_resource_p): Likewise.
11057         * resource.h (mark_referenced_resources): Update declaration.
11058         (mark_end_of_function_resources): Update declaration.
11059
11060 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
11061
11062         * config/rs6000/aix.h (LIBSTDCXX_STATIC): Remove -lstdc++.
11063
11064 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
11065
11066         * doc/install.texi (*-*-aix): Update explanation of XLC bootstrap.
11067         GCC can bootstrap on AIX with GNU Binutils 2.20.
11068
11069 2009-06-16  Ian Lance Taylor  <iant@google.com>
11070
11071         * Makefile.in (tree-vect-stmts.o): Depend upon $(TOPLEV_H).
11072
11073 2009-06-16  Ian Lance Taylor  <iant@google.com>
11074
11075         * toplev.h (floor_log2): If GCC_VERSION >= 3004, declare as static
11076         inline, not extern inline.
11077         (exact_log2): Likewise.
11078         * toplev.c (floor_log2): Only define if GCC_VERSION < 3004. Don't
11079         test CLZ_HWI.
11080         (exact_log2): Likewise, but don't test CTZ_HWI.
11081
11082 2009-06-16  Ian Lance Taylor  <iant@google.com>
11083
11084         * bitmap.c (bitmap_clear): Don't declare as inline.
11085         * gimple.c (gimplify_assign): Likewise.
11086         * tree-ssa-sccvn.c (vn_nary_op_compute_hash): Likewise.
11087         * haifa-sched.c (insn_cost): Don't declare with HAIFA_INLINE.
11088         (sched_scan_info): Remove duplicate definition.
11089
11090 2009-06-16  Ian Lance Taylor  <iant@google.com>
11091
11092         * c-common.c (skip_evaluation): Don't define.
11093         (c_inhibit_evaluation_warnings): Define global variable.
11094         (overflow_warning): Check c_inhibit_evaluation_warnings rather
11095         than skip_evaluation.
11096         (convert_and_check, warn_for_div_by_zero): Likewise.
11097         * c-common.h (skip_evaluation): Don't declare.
11098         (c_inhibit_evaluation_warnings): Declare.
11099         * c-parser.c (c_parser_typeof_specifier): Set
11100         c_inhibit_evaluation_warnings rather than skip_evaluation.
11101         (c_parser_conditional_expression): Likewise.
11102         (c_parser_binary_expression): Likewise.
11103         (c_parser_sizeof_expression): Likewise.
11104         (c_parser_alignof_expression): Likewise.
11105         * c-typeck.c (build_indirect_ref): Check
11106         c_inhibit_evaluation_warnings rather than skip_evaluation.
11107         (build_conditional_expr, build_binary_op): Likewise.
11108
11109 2009-06-16  Richard Guenther  <rguenther@suse.de>
11110
11111         * tree-ssa-alias.c (is_escape_site): Remove.
11112         * tree-ssa-alias.h (enum escape_type): Remove.
11113         (is_escape_site): Likewise.
11114         * tree-ssa-structalias.c (find_func_aliases): Handle escapes
11115         via casts and asms without deferring to is_escape_site.
11116
11117 2009-06-16  Jakub Jelinek  <jakub@redhat.com>
11118
11119         PR middle-end/40446
11120         * expr.c (expand_expr_real_1) <case VIEW_CONVERT_EXPR>: Don't
11121         use gen_lowpart if op0 has complex mode.
11122
11123 2009-06-16  Richard Guenther  <rguenther@suse.de>
11124
11125         * tree-ssa-structalias.c (do_ds_constraint): Stores in global
11126         variables add them to ESCAPED.
11127         (find_func_aliases): Do not make all indirectly stored values escaped.
11128
11129 2009-06-16  Rafael Avila de Espindola  <espindola@google.com>
11130
11131         * config/i386/winnt.c (i386_pe_encode_section_info): Update call to
11132         make_decl_one_only.
11133
11134 2009-06-16  Martin Jambor  <mjambor@suse.cz>
11135
11136         PR tree-optimization/40432
11137         * tree-sra.c (sra_modify_assign): When creating VIEW_CONVERT_EXPR,
11138         check whether we need to force gimple register operand.
11139
11140 2009-06-16  Martin Jambor  <mjambor@suse.cz>
11141
11142         PR tree-optimization/40413
11143         * tree-sra.c (load_assign_lhs_subreplacements): Pass offset to
11144         build_ref_for_offset.
11145         (propagate_subacesses_accross_link): Fix a typo in a comment.
11146
11147 2009-06-16  Ira Rosen  <irar@il.ibm.com>
11148
11149         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
11150         with additional parameter.
11151         * tree-vectorizer.h (enum vect_def_type): Add new value
11152         vect_nested_cycle.
11153         (enum vect_relevant): Add comments.
11154         (vect_is_simple_reduction): Add new argument.
11155         * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Add comments.
11156         Detect nested cycles.
11157         (vect_is_simple_reduction): Update documentation, add an argument to
11158         distinguish inner-loop reduction from nested cycle, detect nested
11159         cycles, fix printings and indentation, don't swap operands in case
11160         of nested cycle.
11161         (get_initial_def_for_reduction): Handle subtraction.
11162         (vect_create_epilog_for_reduction): Add new argument to specify
11163         reduction variable.
11164         (vect_finalize_reduction): Handle subtraction, fix comments.
11165         (vectorizable_reduction): Handle nested cycles. In case of nested
11166         cycle keep track of the reduction variable position. Call
11167         vect_is_simple_reduction with additional parameter. Use original
11168         statement code in reduction epilogue for nested cycle. Call
11169         vect_create_epilog_for_reduction with additional parameter.
11170         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Assert
11171         inner-loop vectorization.
11172         (vect_recog_widen_sum_pattern): Likewise.
11173         * tree-vect-stmts.c (process_use): Distinguish between nested cycles
11174         and reductions.
11175         (vect_mark_stmts_to_be_vectorized): Likewise.
11176         (vect_get_vec_def_for_operand): Handle nested cycles.
11177
11178 2009-06-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11179
11180         * doc/invoke.texi (Debugging Options): Fix option index entries
11181         for -fdump-statistics, -frandom-seed add entries for
11182         -fdump-tree-original, -fdump-tree-optimized, -frandom-seed.
11183         (FRV Options): Fix entries for -mTLS, -mtls.
11184         (HPPA Options): Fix entries for -mgnu-ld, -mhp-ld.
11185         (i386 and x86-64 Options): Fix entry for -mno-red-zone.
11186         (M68hc1x Options): Fix @itemx for -mnominmax.
11187         (MCore Options): Fix entry for -mno-lsim.
11188         (MMIX Options): Fix entry for -mabi=mmixware.
11189         (PDP-11 Options): Fix entry for -mbcopy-builtin.
11190
11191 2009-06-16  Basile Starynkevitch  <basile@starynkevitch.net>
11192
11193         * doc/plugins.texi (Interacting with the GCC Garbage Collector):
11194         Mention the plugin mode of gengtype.
11195         * doc/gty.texi (Source Files Containing Type Information): Likewise.
11196         * gengtype.c: Updated copyright.
11197         (plugin_files, nb_plugin_files) Added new static variables.
11198         (measure_input_list) Care about plugin_files.
11199         (write_rtx_next): Added early return in plugin mode.
11200         (create_file): Updated copyright year in generated file. Added
11201         asserts.
11202         (oprintf): Added early return if NULL outf.
11203         (get_output_file_with_visibility): Care of plugin_files.
11204         (get_output_file_name): May return null.
11205         (write_local): Added early return.
11206         (put_mangled_filename): Ditto.
11207         (finish_root_table): Added check for base_files.
11208         (write_roots): Care about null when plugins.
11209         (main): Added plugin mode.
11210
11211 2009-06-15  Ian Lance Taylor  <iant@google.com>
11212
11213         * df-problems.c (df_simulate_one_insn_forwards): Fix braces in switch.
11214         * gcov.c (read_count_file): Add braces around variables declared
11215         before label.
11216
11217         * c.opt (Wjump-misses-init): New warning.
11218         * c-opts.c (c_common_handle_option): Set warn_jump_misses_init for
11219         -Wall and -Wc++-compat if not already set.
11220         (c_common_post_options): Clear warn_jump_misses_init if it was not
11221         set.
11222         * c-decl.c (struct c_binding): Change type field to a union with
11223         new label field.  Make it the first field in the struct.  Update
11224         references to type to use u.type instead.
11225         (struct c_spot_bindings): Define.
11226         (struct c_goto_bindings): Define.
11227         (c_goto_bindings_p): Define, along with VECs.
11228         (struct c_label_vars): Define.
11229         (struct c_scope): Add has_label_bindings field.
11230         (bind_label, set_spot_bindings): New static functions.
11231         (decl_jump_unsafe, update_spot_bindings): New static functions.
11232         (update_label_decls): New static function.
11233         (pop_scope): Call update_label_decls.  Don't call c_end_vm_scope.
11234         Update binding u.label field to shadowed field.
11235         (c_binding_start_stmt_expr): New function.
11236         (c_binding_end_stmt_expr): New function.
11237         (pushdecl): Don't call c_begin_vm_scope.
11238         (make_label): Add defining and p_label_vars parameters.  Change
11239         all callers.
11240         (lookup_label): Correct test for whether a label has not yet been
11241         defined.  Call bind_label rather than bind.
11242         (warn_about_goto): New static function.
11243         (lookup_label_for_goto): New function.
11244         (declare_label): Call bind_label rather than bind.
11245         (check_earlier_gotos): New static function.
11246         (define_label): Don't give errors about jumping into statement
11247         expressions or scopes of variably modified types.  Call
11248         set_spot_bindings and check_earlier_gotos.  Call bind_label
11249         instead of bind.  Don't set label_context_stack_se or
11250         label_context_stack_vm.
11251         (c_get_switch_bindings): New function.
11252         (c_release_switch_bindings): New function.
11253         (c_check_switch_jump_warnings): New function.
11254         (start_function): Don't set label_context_stack_se or
11255         label_context_stack_vm.
11256         (finish_function): Likewise.
11257         * c-typeck.c (label_context_stack_se): Don't define.
11258         (label_context_stack_vm): Don't define.
11259         (c_finish_goto_label): Call lookup_label_for_goto rather than
11260         lookup_label.  Don't give errors about jumping into a statement
11261         expression or the scope of a variably modified type.  Don't set
11262         label_context_stack_se or label_context_stack_vm.
11263         (struct c_switch): Remove blocked_stmt_expr and blocked_vm
11264         fields.  Add bindings field.
11265         (c_start_case): Don't set deleted fields.  Set bindings field.
11266         (do_case): Rework order of tests.  Don't check blocked_stmt_expr
11267         or blocked_vm.  Call c_check_switch_jump_warnings.
11268         (c_finish_case): Don't test blocked_stmt_expr field.  Call
11269         c_release_switch_bindings.
11270         (c_begin_stmt_expr): Don't increment blocked_stmt_expr in
11271         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
11272         set label_context_stack_se.  Call c_bindings_start_stmt_expr.
11273         (c_finish_stmt_expr): Don't decrement blocked_stmt_expr in
11274         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
11275         set label_context_stack_se.  Call c_bindings_end_stmt_expr.
11276         (c_begin_vm_scope, c_end_vm_scope): Don't define.
11277         * c-tree.h (C_DECL_UNJUMPABLE_STMT_EXPR): Don't define.
11278         (C_DECL_UNDEFINABLE_STMT_EXPR): Don't define.
11279         (C_DECL_UNJUMPABLE_VM): Don't define.
11280         (C_DECL_UNDEFINABLE_VM): Don't define.
11281         (struct c_label_list): Don't define.
11282         (struct c_label_context_se): Don't define.
11283         (struct c_label_context_vm): Don't define.
11284         (struct c_spot_bindings): Declare.
11285         (c_bindings_start_stmt_expr): Declare.
11286         (c_bindings_end_stmt_expr): Declare.
11287         (lookup_label_for_goto): Declare.
11288         (c_get_switch_bindings, c_release_switch_bindings): Declare.
11289         (c_check_switch_jump_warnings): Declare.
11290         (label_context_stack_se, label_context_stack_vm): Don't declare.
11291         (c_finish_goto_label): Update declaration.
11292         (c_begin_vm_scope, c_end_vm_scope): Don't declare.
11293         * doc/invoke.texi (Option Summary): Mention -Wjump-misses-init.
11294         (Warning Options): Document -Wjump-misses-init.
11295
11296 2009-06-15  Jakub Jelinek  <jakub@redhat.com>
11297
11298         * tree-object-size.c (addr_object_size): Fix a pasto in the last
11299         change.
11300
11301 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
11302
11303         * cgraph.c (cgraph_make_node_local): Use DECL_COMDAT_GROUP.
11304
11305 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
11306
11307         * except.c (init_eh): Use BUILTINS_LOCATION when calling build_decl.
11308
11309 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
11310
11311         * tree-eh.c (lower_try_finally_switch): Initialize tf_loc.
11312
11313 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
11314
11315         * cgraphunit.c (cgraph_function_versioning,save_inline_function_body):
11316         Use DECL_COMDAT_GROUP instead of DECL_ONE_ONLY.
11317         * cgraph.c (cgraph_create_virtual_clone): Use DECL_COMDAT_GROUP.
11318         * config/i386/i386.c (ix86_file_end): Compute DECL_COMDAT_GROUP.
11319         * dwarf2asm.c (dw2_force_const_mem): Update call to
11320         make_decl_one_only.
11321         * langhooks-def.h (lhd_comdat_group, LANG_HOOKS_COMDAT_GROUP): Remove.
11322         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_COMDAT_GROUP.
11323         * langhooks.c (lhd_comdat_group): Remove.
11324         * langhooks.h (lang_hooks_for_decls): Remove comdat_group.
11325         * tree.h (DECL_COMDAT_GROUP): New.
11326         (DECL_ONE_ONLY): Use DECL_COMDAT_GROUP.
11327         (tree_decl_with_vis): Add comdat_group. Remove one_only.
11328         (make_decl_one_only): Change signature.
11329         * varasm.c (get_emutls_init_templ_addr, emutls_decl): Update call to
11330         make_decl_one_only.
11331         (make_decl_one_only): Change signature.
11332         (default_elf_asm_named_section): Use DECL_COMDAT_GROUP.
11333
11334 2009-06-15  Richard Guenther  <rguenther@suse.de>
11335
11336         PR middle-end/40439
11337         * tree.c (widest_int_cst_value): Fix bootstrap on 32bit HWI hosts.
11338
11339 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
11340
11341         * tree-ssa-math-opts.c: Remove extra divide.
11342
11343 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
11344
11345         * config/s390/s390.md ("bswap<mode>2"): Only available on z900.
11346
11347 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
11348
11349         * passes.c: Add bswap pass.
11350         * tree-pass.h: Add pass_optimize_bswap declaration.
11351         * tree-ssa-math-opts.c: Include diagnostics.h for print_gimple_stmt.
11352         Include rtl.h, expr.h and optabs.h for optab_handler check.
11353         (struct symbolic_number, pass_optimize_bswap): New definition.
11354         (do_shift_rotate, verify_symbolic_number_p): New functions.
11355         (find_bswap_1, find_bswap, execute_optimize_bswap): New functions.
11356         (gate_optimize_bswap): New function.
11357         * tree.c (widest_int_cst_value): New function.
11358         * tree.h (widest_int_cst_value): Prototype added.
11359
11360 2009-06-14  Steven Bosscher  <steven@gcc.gnu.org>
11361
11362         * cfgcleanup.c (old_insns_match_p): Remove code to substitute
11363         REG_EQUAL/REG_EQUIV notes.
11364
11365 2009-06-14  Richard Guenther  <rguenther@suse.de>
11366
11367         PR middle-end/40389
11368         * gimple.c (walk_stmt_load_store_addr_ops): The LHS of a call
11369         has its address taken if NRV was applied and it is addressable.
11370         * tree-ssa-structalias.c (get_constraint_for_address_of): New
11371         function split out from ...
11372         (get_constraint_for_1): ... here.
11373         (handle_rhs_call): Use it to mark the return slot escaped if
11374         it is addressable and NRV was applied.
11375
11376 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
11377
11378         * config/rs6000/rs6000-protos.h (altivec_resolve_overloaded_builtin):
11379         Change first argument type to location_t.
11380         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Same.
11381         Do not set input_location.
11382         Use loc instead of input_location throughout.
11383
11384 2009-06-13  Richard Guenther  <rguenther@suse.de>
11385
11386         PR tree-optimization/40421
11387         * tree-predcom.c (should_unroll_loop_p): Remove.
11388         (tree_predictive_commoning_loop): Use can_unroll_loop_p.
11389
11390 2009-06-13  Michael Meissner  <meissner@linux.vnet.ibm.com>
11391
11392         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
11393         Add location argument.
11394
11395 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
11396
11397         * config/alpha/alpha.c (alpha_build_builtin_va_list): Pass location to
11398         build_decl.
11399         * config/s390/s390.c (s390_build_builtin_va_list): Same.
11400         (s390_gimplify_va_arg): Pass location to create_artificial_label.
11401         * config/spu/spu-protos.h: Add location to
11402         spu_resolve_overloaded_builtin.
11403         * config/spu/spu.c (spu_build_builtin_va_list): Pass location to
11404         spu_build_builtin_va_list.
11405         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Add location
11406         argument.  Pass location to build_function_call_vec.
11407         * config/sh/sh.c (sh_build_builtin_va_list): Pass location to
11408         build_decl.
11409         (emit_fpu_switch): Same.
11410         (sh_gimplify_va_arg_expr): Pass location to create_artificial_label.
11411         * config/xtensa/xtensa.c (xtensa_build_builtin_va_list): Pass location
11412         to build_decl and create_artificial_label.
11413         (xtensa_gimplify_va_arg_expr): Same.
11414         * config/stormy16/stormy16.c (xstormy16_build_builtin_va_list): Same.
11415         (xstormy16_gimplify_va_arg_expr): Same.
11416         * config/iq2000/iq2000.c (iq2000_expand_prologue): Same.
11417         * config/arm/arm.c (arm_build_builtin_va_list): Same.
11418         * config/mips/mips.c (mips_build_builtin_va_list): Same.
11419         (mips16_build_function_stub): Same.
11420         (mips16_build_call_stub): Same.
11421
11422 2009-06-13  Richard Earnshaw  <rearnsha@arm.com>
11423
11424         PR target/40327
11425         * arm/constraints.md (Pa, Pb): New constraints.
11426         * arm/arm.md (thumb1_addsi3): Support more complex additions.  Add a
11427         split pattern to deal with them.
11428
11429 2009-06-13  Joerg Sonnenberger  <joerg@britannica.bec.de>
11430
11431         * doc/invoke.texi: Add missing option -Wp,OPTION in list,
11432         fix index entry for -Xpreprocessor.
11433
11434 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
11435
11436         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
11437         Add location argument to build_decl call.
11438         * config/rs6000/rs6000.c (rs6000_build_builtin_va_list): Same.
11439         (rs6000_init_builtins): Same.
11440         (spe_init_builtins): Same.
11441         (rs6000_gimplify_va_arg): Add location argument to
11442         create_artificial_label call.
11443
11444 2009-06-12  Steven Bosscher  <steven@gcc.gnu.org>
11445
11446         * timevar.def (TV_COMBINE_STACK_ADJUST): New timevar.
11447         * combine-stack-adj.c (pass_stack_adjustments): Use it.
11448         * Makefile.in: Fix GGC dependency for gcse.o.
11449
11450 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
11451
11452         * tree-pretty-print.c (dump_generic_node): Dump column numbers.
11453         * gimple-pretty-print.c (dump_gimple_stmt): Same.
11454         * gimplify.c (gimplify_modify_expr): Set location for GIMPLE_ASSIGNs
11455         created.
11456         * c-parser.c (c_parser_binary_expression): Use current column while
11457         building binary operations.
11458         * common.opt (fshow-column): Enable by default.
11459         * tree-vrp.c (check_array_ref): Use warning_at.
11460         (check_array_bounds): Use location from call back if expr has no
11461         location.
11462         * tree.h: Add location argument to maybe_fold_*.
11463         * tree-ssa-ccp.c (ccp_fold): Pass location to maybe_fold_*.
11464         (maybe_fold_offset_to_array_ref): Add location argument and use it.
11465         (maybe_fold_offset_to_component_ref): Same.
11466         (maybe_fold_offset_to_reference): Same.
11467         (maybe_fold_offset_to_address): Same.
11468         (maybe_fold_stmt_indirect): Same.
11469         (maybe_fold_stmt_addition): Same.
11470         (fold_stmt_r): Pass location to maybe_fold_*.
11471         (fold_gimple_assign): Same.
11472         * c-tree.h: Add location argument to finish_decl,
11473         default_function_array_conversion, store_init_value.
11474         * c-decl.c (define_label): Use error_at.
11475         (c_make_fname_decl): Pass location to finish_decl.
11476         (finish_decl): New location argument.
11477         (build_compound_literal): Pass location to store_init_value.
11478         (grokdeclarator): Pass location to finish_decl.
11479         (grokfield): Same.
11480         * c-typeck.c (array_to_pointer_conversion): New location argument.
11481         (function_to_pointer_conversion): Same.
11482         (default_function_array_conversion): Same.
11483         (parser_build_unary_op): Pass location to overflow_warning.
11484         (parser_build_binary_op): Same.  Use warning_at.
11485         (build_unary_op): Pass location to array_to_pointer_conversion.
11486         (build_c_cast): Pass location to digest_init.
11487         (build_modify_expr): New location argument.
11488         (convert_for_assignment): Same.
11489         (store_init_value): Same.
11490         (digest_init): Same.
11491         (output_init_element): Pass location to digest_init and
11492         array_to_pointer_conversion.
11493         (c_finish_return): Pass location to convert_for_assignment.
11494         * gimplify.c (gimplify_conversion): Pass location to
11495         maybe_fold_offset_to_address.
11496         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Pass location
11497         to maybe_fold_stmt_addition.
11498         * c-omp.c (c_finish_omp_atomic): Pass new location to
11499         build_modify_expr.
11500         (c_finish_omp_for): Same.
11501         * c-common.c (overflow_warning): New argument.
11502         * c-common.h: New argument to build_modify_expr, overflow_warning.
11503         * c-parser.c (c_parser_declaration_or_fndef): Pass location to
11504         finish_decl.
11505         (c_parser_initializer): Pass location to
11506         default_function_array_conversion.
11507         (c_parser_initelt): Same.
11508         (c_parser_initval): Same.
11509         (c_parser_asm_operands): Same.
11510         (c_parser_expr_no_commas): Same.  Pass location to build_modify_expr.
11511         (c_parser_conditional_expression): Same.
11512         (c_parser_binary_expression): Add location info to stack.  Use it.
11513         (c_parser_unary_expression): Pass location to
11514         default_function_array_conversion, parser_build_unary_op,
11515         build_indirect_ref, c_parser_postfix_expression_after_primary.
11516         (c_parser_postfix_expression_after_primary): New location argument.
11517         Use it.
11518         (c_parser_expression_conv): Pass location to
11519         default_function_array_conversion.
11520         (c_parser_expr_list): Same.
11521         (c_parser_omp_atomic): Same.
11522         (c_parser_omp_for_loop): Same.
11523         * c-tree.h: (struct c_declarator): Add comment to id_loc.
11524         (build_array_declarator): New argument.
11525         * c-decl.c (build_array_declarator): Add location argument.
11526         (grokdeclarator): Set id_loc for cdk_array.
11527         * c-parser.c (c_parser_direct_declarator_inner): Pass location to
11528         build_array_declarator.
11529         * tree.c (build_omp_clause): Add location argument.
11530         * tree.h (OMP_CLAUSE_HAS_LOCATION): New macro.
11531         (OMP_CLAUSE_LOCATION): New macro.
11532         (struct tree_omp_clause): Add location field.
11533         (build_omp_clause): Add argument.
11534         * testsuite/gcc.dg/gomp/for-1.c: Fix column.
11535         * cp/pt.c (tsubst_omp_for_iterator): Pass location to
11536         build_omp_clause.
11537         * cp/parser.c (cp_parser_omp_var_list_no_open): Same.
11538         (cp_parser_omp_clause_collapse): Same.
11539         (cp_parser_omp_clause_default): Same.
11540         (cp_parser_omp_clause_if): Same.
11541         (cp_parser_omp_clause_nowait): Same.
11542         (cp_parser_omp_clause_num_threads): Same.
11543         (cp_parser_omp_clause_ordered): Same.
11544         (cp_parser_omp_clause_schedule): Same.
11545         (cp_parser_omp_clause_untied): Same.
11546         (cp_parser_omp_for_loop): Same.
11547         (cp_parser_omp_parallel): Pass location to c_split_parallel_clauses.
11548         * c-tree.h (c_start_case): Add location argument.
11549         (c_process_expr_stmt): Same.
11550         (c_finish_goto_*): Same.
11551         * tree-parloops.c (initialize_reductions): Pass location to
11552         build_omp_clause.
11553         (create_parallel_loop): Same.
11554         * fortran/trans-openmp.c (gfc_trans_omp_variable_list): Same.
11555         (gfc_trans_omp_reduction_list): Same.
11556         (gfc_trans_omp_clauses): Same.
11557         (gfc_trans_omp_do): Same.
11558         * c-typeck.c (c_finish_goto_label): Same.
11559         (c_finish_goto_ptr): New location argument.
11560         (c_start_case): Same.
11561         (emit_side_effect_warnings): Same.
11562         (c_process_expr_stmt): Same.
11563         (c_finish_stmt_expr): Same.
11564         (c_finish_omp_clauses): Use error_at instead of error.
11565         * gimplify.c (gimplify_adjust_omp_clauses_1): Pass location to
11566         build_omp_clause.
11567         * c-omp.c (c_split_parallel_clauses): New location argument.
11568         * tree-nested.c (convert_nonlocal_reference_stmt): Pass location
11569         to build_omp_clause.
11570         (convert_local_reference_stmt): Same.
11571         (convert_gimple_call): Same.
11572         * c-common.h (c_split_parallel_clauses): New argument.
11573         * c-parser.c (c_parser_statement_after_labels): Pass location to
11574         c_finish_goto_label.
11575         (c_parser_switch_statement): Pass location to c_start_case.
11576         (c_parser_for_statement): Pass location to c_finish_expr_stmt,
11577         and c_process_expr_stmt.
11578         (c_parser_omp_variable_list): Add location argument.
11579         (c_parser_omp_clause_collapse): Pass location to build_omp_clause.
11580         (c_parser_omp_clause_default): Same.
11581         (c_parser_omp_clause_if): Same.
11582         (c_parser_omp_clause_num_threads): Same.
11583         (-c_parser_omp_clause_ordered): Same.
11584         (c_parser_omp_clause_reduction): Pass location to
11585         c_parser_omp_variable_list.
11586         (c_parser_omp_clause_schedule): Pass location to build_omp_clause.
11587         (c_parser_omp_clause_untied): Same.
11588         (c_parser_omp_for_loop): Pass location to c_process_expr_stmt.
11589         (c_parser_omp_parallel): Pass location to c_split_parallel_clauses.
11590
11591         * c-tree.h (check_for_loop_decls, undeclared_variable,
11592         build_component_ref, build_array_ref, build_external_ref,
11593         c_expr_sizeof_expr, c_expr_sizeof_type, parser_build_unary_op,
11594         build_conditional_expr, build_compound_expr, c_cast_expr,
11595         build_c_cast, build_asm_expr, c_end_compound_stmt, c_finish_stmt_expr,
11596         c_finish_return, c_finish_omp_parallel, c_finish_omp_task): New
11597         argument.
11598         * c-semantics.c (build_stmt): Same.
11599         (build_case_label): Same.
11600         * c-decl.c (c_finish_incomplete_decl): Pass location on down.
11601         (undeclared_variable): New argument.
11602         (make_label): Same.
11603         (lookup_label): Pass location on down.
11604         (define_label): Same.
11605         (finish_decl): Same.
11606         (build_compound_literal): Same.
11607         (finish_struct): Same.
11608         (finish_function): Do not set location here.
11609         (check_for_loop_decls): New argument.
11610         * tree.c (save_expr): Set location.
11611         (build_empty_stmt): New argument.
11612         * tree.h (build_empty_stmt): New argument to build_empty_stmt.
11613         (CAN_HAVE_LOCATION_P): Make sure we have a non empty node.
11614         * builtins.c (gimplify_va_arg_expr): Use locations.
11615         (expand_builtin_sync_operation): Same.
11616         * c-typeck.c (build_component_ref): New argument.
11617         (build_array_ref): Same.
11618         (build_external_ref): Same.
11619         (c_expr_sizeof_expr): Same.
11620         (c_expr_sizeof_type): Same.
11621         (parser_build_unary_op): Same.
11622         (build_conditional_expr): Same.
11623         (build_compound_expr): Pass location on down.
11624         (build_compound_expr): New argument.
11625         (build_c_cast): Same.
11626         (c_cast_expr): Same.
11627         (build_asm_expr): Same.
11628         (c_finish_return): Same.
11629         (c_process_expr_stmt): Pass location on down.
11630         (c_finish_stmt_expr): New argument.
11631         (push_clenaup): Same.
11632         (c_finish_omp_parallel): Same.
11633         (c_finish_omp_task): Same.
11634         * gimplify.c (gimplify_call_expr): Pass location on down.
11635         * c-omp.c (c_finish_omp_master): New argument.
11636         (c_finish_omp_critical): Same.
11637         (c_finish_omp_ordered): Same.
11638         (c_finish_omp_barrier): Same.
11639         (-c_finish_omp_taskwait): Same.
11640         (c_finish_omp_atomic): Same.
11641         (c_finish_omp_flush): Same.
11642         * tree-inline.c (copy_tree_body_r): Pass location on down.
11643         (inline_forbidden_p): Remove use of input_location.
11644         * c-gimplify.c (c_build_bind_expr): New argument.
11645         * c-common.c (c_common_truthvalue_conversion): Pass location on down.
11646         (c_sizeof_or_alignof_type): New argument.
11647         (c_alignof_expr): Same.
11648         (build_va_arg): Same.
11649         (c_add_case_label): Same.
11650         * c-common.h (c_sizeof_or_alignof_type, c_alignof_expr,
11651         c_sizeof, c_alignof, build_va_arg, build_stmt, build_case_label,
11652         c_build_bind_expr, objc_build_selector_expr, objc_build_throw_stmt,
11653         c_finish_omp_master, c_finish_omp_critical, c_finish_omp_ordered,
11654         c_finish_omp_barrier, c_finish_omp_atomic, c_finish_omp_flush,
11655         c_finish_omp_taskwait, c_finish_omp_for, c_split_parallel_clauses):
11656         New argument.
11657         * stub-objc.c (objc_build_selector_expr): Same.
11658         (objc_build_throw_stmt): Same.
11659         * c-parser.c (c_parser_declaration_or_fndef): Pass location on down.
11660         (c_parser_initelt): Same.
11661         (c_parser_compound_statement): Same.
11662         (c_parser_compound_statement_nostart): Same.
11663         (c_parser_label): Same.
11664         (c_parser_statement_after_labels): Same.
11665         (c_parser_if_body): Same.
11666         (c_parser_else_body): Same.
11667         (c_parser_if_statement): Same.
11668         (c_parser_switch_statement): Same.
11669         (c_parser_while_statement): Same.
11670         (c_parser_do_statement): Same.
11671         (c_parser_for_statement): Same.
11672         (c_parser_asm_statement): Same.
11673         (c_parser_conditional_expression): Same.
11674         (c_parser_binary_expression): Same.
11675         (c_parser_cast_expression): Same.
11676         (c_parser_unary_expression): Same.
11677         (c_parser_sizeof_expression): Same.
11678         (c_parser_alignof_expression): Same.
11679         (c_parser_postfix_expression): Same.
11680         (c_parser_expression): Same.
11681         (c_parser_objc_receiver): Same.
11682         (c_parser_omp_variable_list): Same.
11683         (c_parser_omp_structured_block): Same.
11684         (c_parser_omp_atomic): New argument.
11685         (c_parser_omp_barrier): Same.
11686         (c_parser_omp_critical): Same.
11687         (c_parser_omp_flush): Pass location on down.
11688         (c_parser_omp_for_loop): New argument.
11689         (c_parser_omp_for): Same.
11690         (c_parser_omp_master): Same.
11691         (c_parser_omp_ordered): Same.
11692         (c_parser_omp_sections_scope): Same.
11693         (c_parser_omp_sections): Same.
11694         (c_parser_omp_parallel): Same.
11695         (c_parser_omp_single): Same.
11696         (c_parser_omp_task): Same.
11697         (c_parser_omp_taskwait): Pass location on down.
11698         (c_parser_omp_construct): Same.
11699         (c_parser_omp_threadprivate): Same.
11700         * dwarf2asm.c, targhooks.c, optabs.c, tree.c, tree.h, target.h,
11701         builtins.c, omp-low.c, cgraphunit.c, tree-call-cdce.c,
11702         tree-ssa-alias.c, gimple-low.c, c-tree.h, expr.c, tree-parloops.c,
11703         c-decl.c, tree-eh.c, langhooks.c, function.c, stor-layout.c,
11704         c-typeck.c, gimplify.c, c-pragma.c, expmed.c, except.c, coverage.c,
11705         emit-rtl.c, cfgexpand.c, tree-mudflap.c, varasm.c, tree-nested.c,
11706         rtl.h, tree-inline.c, tree-profile.c, c-common.c, c-common.h,
11707         tree-switch-conversion.c, tree-cfg.c, ipa-struct-reorg.c, c-parser.c,
11708         config/i386/i386.c, stmt.c:
11709         Add location argument to the following function definitions and/or
11710         function calls: build_decl, objcp_start_struct, objcp_finish_struct,
11711         start_struct, finish_struct, PUSH_FIELD, create_artificial_label,
11712         cp_make_fname_decl, pushtag, implicitly_declare, c_make_fname_decl,
11713         build_compound_literal, parser_xref_tag, resolve_overloaded_builtin,
11714         do_case, c_finish_bc_stmt, build_compound_literal,
11715         build_function_call.
11716         * c-decl.c (build_compound_literal): Add location argument.
11717         Make all diagnostic calls use location.
11718         (start_struct): Same.
11719         (finish_struct): Same.
11720         (start_enum): Same.
11721         (build_enumerator): Same.
11722         (start_function): Same.
11723         (grokdeclarator): Make all diagnostic calls use location.
11724         (store_parm_decls_oldstyle): Same.
11725         * c-typeck.c (build_function_call): Add location argument.
11726         Make all diagnostic calls use location.
11727         (do_case): Same.
11728         (c_finish_bc_stmt): Same.
11729         * tree-nested.c (get_trampoline_type): Add argument.
11730         Pass location to build_decl.
11731         (lookup_tramp_for_decl): Pass location to get_trampoline_type.
11732         * rtl.h (RTL_LOCATION): New.
11733         * c-common.c (c_add_case_label): Add location argument.
11734         Make all diagnostic calls use location.
11735         * c-common.h: Add location argument to make_fname_decl, do_case,
11736         c_add_case_label, build_function_call, resolve_overloaded_builtin.
11737         * c-parser.c (c_parser_enum_specifier): Rename ident_loc to enum_loc.
11738         Set it appropriately for every case.  Pass enum_loc to start_enum
11739         call.  Pass value_loc first to build_enumerator.  Pass enum_loc to
11740         parser_xref_tag.
11741         (c_parser_struct_or_union_specifier): Save location.  Use it for
11742         start_struct, finish_struct, and parser_xref_tag.
11743
11744 2009-06-12  Ian Lance Taylor  <iant@google.com>
11745
11746         * fold-const.c (fold_unary): Rename local variable and to and_expr.
11747
11748         * c-opts.c (c_common_handle_option): For -Wc++-compat set
11749         cpp_opts->warn_cxx_operator_names.
11750
11751 2009-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11752
11753         PR tree-opt/38865
11754         * tree-ssa-sccvn.c (visit_reference_op_load): If vn_reference_lookup
11755         is returns NULL and OP is a VCE, look through the VCE.
11756
11757 2009-06-12  Ian Lance Taylor  <iant@google.com>
11758
11759         PR bootstrap/40430
11760         * collect2.c (main): Use CONST_CAST2 in code inside #if
11761         LINK_ELIMINATE_DUPLICATE_LDIRECTORIES.
11762
11763 2009-06-12  Joey Ye  <joey.ye@intel.com>
11764
11765         PR middle-end/39146
11766         * cfgexpand.c (get_decl_align_unit): Update
11767         max_used_stack_slot_alignment with align instead of
11768         stack_alignment_needed.
11769
11770         * function.c (assign_stack_local_1): Update
11771         max_used_stack_slot_alignment with alignment_in_bits instead
11772         of stack_alignment_needed.
11773         (locate_and_pad_parm): Don't update max_used_stack_slot_alignment
11774         here.
11775
11776 2009-06-12  Jakub Jelinek  <jakub@redhat.com>
11777
11778         * dwarf2out.c (last_var_location_insn): New variable.
11779         (dwarf2out_end_epilogue): Clear last_var_location_insn.
11780         (dwarf2out_var_location): Don't record anything after last real
11781         insn.  Only change labels if there were any real instructions
11782         in between last note and this one, or if changed sections.
11783
11784 2009-06-11  Richard Henderson  <rth@redhat.com>
11785
11786         * alpha.c (alpha_expand_prologue): Add a REF_CFA_REGISTER
11787         note when storing the frame pointer in a register.
11788         (FRP): Don't redefine to nothing for epilogue.
11789         (alpha_expand_epilogue): Mark register and sp restores.
11790         (unicosmk_gen_dsib): Don't mark weird frame pointer adjust.
11791
11792         * config/alpha/alpha.c (alpha_emit_setcc): Fix test for
11793         when gen_lowpart is needed.
11794
11795 2009-06-11  Richard Henderson  <rth@redhat.com>
11796
11797         * dwarf2out.c (def_cfa_1): Likewise for DW_CFA_cfa_offset.
11798
11799         * dwarf2out.c (need_data_align_sf_opcode): New.
11800         (div_data_align): Move earlier.
11801         (def_cfa_1, reg_save): Use it.
11802
11803 2009-06-11  H.J. Lu  <hongjiu.lu@intel.com>
11804
11805         * config/i386/i386.c (OPTION_MASK_ISA_CRC32_SET): New.
11806         (OPTION_MASK_ISA_CRC32_UNSET): Likewise.
11807         (ix86_handle_option): Handle OPT_mcrc32.
11808         (ix86_target_string): Add -mcrc32.
11809         (bdesc_args): Enable crc32 builtins with OPTION_MASK_ISA_CRC32.
11810
11811         * config/i386/i386.h (TARGET_CRC32): New.
11812
11813         * config/i386/i386.md (sse4_2_crc32<mode>): Also check TARGET_CRC32.
11814         (sse4_2_crc32di): Likewise.
11815
11816         * config/i386/i386.opt (mcrc32): New.
11817
11818         * doc/invoke.texi: Document -mcrc32.
11819
11820 2009-06-11  Richard Henderson  <rth@redhat.com>
11821
11822         * common.opt (gdwarf-): Accept a version number.
11823         * doc/invoke.texi (gdwarf-): Update docs.
11824         * opth-gen.awk: Special case -gdwarf+ to OPT_gdwarfplus.
11825         * opts.c (common_handle_option) [OPT_gdwarf_]: Verify dwarf
11826         version level, and record it.
11827
11828         * dwarf2.h (DW_CIE_VERSION): Remove.
11829         * dwarf2out.c (DWARF_VERSION): Remove.
11830         (add_fde_cfi): Skip DW_CFA_set_loc addition for dwarf3.
11831         (output_call_frame_info): Use CIE version 3 for dwarf3,
11832         or if the return register column is out of range for version 1.
11833         (dwarf_stack_op_name): Add all dwarf3 values.
11834         (DEBUG_PUBTYPES_SECTION): New.
11835         (size_of_die) [dw_val_class_die_ref]: Handle DW_FORM_ref_addr
11836         encoding change for dwarf3.
11837         (output_die) [dw_val_class_die_ref]: Likewise.
11838         (output_compilation_unit_header): Emit correct version for dwarf3.
11839         (output_line_info): Likewise.
11840         (output_pubnames): Update for DWARF_VERSION removal.
11841         (output_aranges): Likewise.
11842         (gen_subprogram_die): Emit DW_OP_call_frame_cfa if emitting dwarf3.
11843         (dwarf2out_init): Don't ifdef DEBUG_PUBTYPES_SECTION.
11844         (dwarf2out_finish): Likewise.
11845
11846 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
11847
11848         * system.h (gcc_assert, gcc_unreachable): Revert accidental commit
11849         in r148403.
11850
11851 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
11852
11853         PR c/39252
11854         * doc/extend.texi ( __builtin_unreachable): Document new builtin.
11855         * builtins.c (expand_builtin_unreachable): New function.
11856         (expand_builtin): Handle BUILT_IN_UNREACHABLE case.
11857         * builtins.def (BUILT_IN_UNREACHABLE): Add new builtin.
11858         * cfgcleanup.c (try_optimize_cfg): Delete empty blocks with no
11859         successors.
11860         * cfgrtl.c (rtl_verify_flow_info): Handle empty blocks when
11861         searching for missing barriers.
11862
11863 2009-06-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
11864
11865         * config/darwin.h (LINK_COMMAND_SPEC): Adjust spec to link libcov
11866         when -fprofile-generate* was passed.
11867         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
11868
11869 2009-06-11  Anthony Green  <green@moxielogic.com>
11870
11871         * config/moxie/moxie.md: Define length attribute for all instructions.
11872         (rCC): Define.
11873         (*b<cond:code>): Support limited branch ranges for new PC-relative
11874         branch instructions.
11875         * config/moxie/moxie.h (HAS_LONG_UNCOND_BRANCH): Define.
11876
11877 2009-06-11  Jakub Jelinek  <jakub@redhat.com>
11878
11879         * config/i386/i386.c (min_insn_size): Use get_attr_length
11880         for normal insns other than TYPE_MULTI, TYPE_OTHER and TYPE_FCMP.
11881         For __asm return 0.
11882
11883         * config/i386/i386.c (ix86_pad_returns): Use emit_jump_insn_before
11884         instead of emit_insn_before.
11885
11886 2009-06-10  Ian Lance Taylor  <iant@google.com>
11887
11888         PR bootstrap/40408
11889         * graphite.c (add_conditions_to_domain): Change SWITCH_EXPR to
11890         GIMPLE_SWITCH.
11891
11892 2009-06-10  Revital Eres  <eres@il.ibm.com>
11893
11894         * passes.c (init_optimization_passes): Reschedule
11895         predictive-commoning pass before complete unroll pass.
11896
11897 2009-06-10  Martin Jambor  <mjambor@suse.cz>
11898
11899         * cgraph.c (cgraph_node_can_be_local_p): New function.
11900         (cgraph_make_node_local): New function.
11901         * cgraph.h (cgraph_node_can_be_local_p): Declare.
11902         (cgraph_make_node_local): Declare.
11903
11904 2009-06-10  Nathan Froyd  <froydnj@codesourcery.com>
11905
11906         * tree.h (tree_base): Add packed_flag and user_align fields.
11907         Decrease size of spare field.
11908         (TYPE_USER_ALIGN): Use user_align from tree_base.
11909         (DECL_USER_ALIGN): Likewise.
11910         (TYPE_PACKED): Use packed_flag from tree_base.
11911         (DECL_PACKED): Likewise.
11912         (tree_type): Delete packed_flag and user_align fields.  Widen
11913         precision field.  Widen mode field and shuffle fields to align
11914         mode on an 8-bit boundary.
11915         (tree_decl_common): Delete decl_flag_1 and user_align fields.
11916         Renumber decl_flag_* fields.  Fix comments.  Widen
11917         decl_common_unused field.
11918         (DECL_HAS_VALUE_EXPR_P): Adjust for renumbering of decl_flag_* fields.
11919         (DECL_EXTERNAL): Likewise.
11920         (DECL_BIT_FIELD): Likewise.
11921         (DECL_NONADDRESSABLE_P): Likewise.
11922         (TYPE_DECL_SUPRESS_DEBUG): Likewise.
11923         * config/arm/arm-modes.def (XImode): Make it an INT_MODE.
11924
11925 2009-06-10  Ian Lance Taylor  <iant@google.com>
11926
11927         * vec.h (DEF_VEC_ALLOC_I): Use DEF_VEC_NONALLOC_FUNCS_I.
11928         (DEF_VEC_ALLOC_P): Use DEF_VEC_NONALLOC_FUNCS_P.
11929         (DEF_VEC_ALLOC_O): Use DEF_VEC_NONALLOC_FUNCS_O.
11930         (DEF_VEC_ALLOC_FUNC_P): Only define VEC_OP (T,A,alloc).
11931         (DEF_VEC_NONALLOC_FUNCS_P): New macro, broken out of old
11932         DEF_VEC_ALLOC_FUNC_P.
11933         (DEF_VEC_ALLOC_FUNC_O): Only define VEC_OP (T,A,alloc).
11934         (DEF_VEC_NONALLOC_FUNCS_O): New macro, broken out of old
11935         DEF_VEC_ALLOC_FUNC_O.
11936         (DEF_VEC_ALLOC_FUNC_I): Only define VEC_OP (T,A,alloc).
11937         (DEF_VEC_NONALLOC_FUNCS_I): New macro, broken out of old
11938         DEF_VEC_ALLOC_FUNC_I.
11939         (vec_stack_p_reserve, vec_stack_p_reserve_exact): Declare.
11940         (vec_stack_p_reserve_exact_1): Declare.
11941         (vec_stack_o_reserve, vec_stack_o_reserve_exact): Declare.
11942         (vec_stack_free): Declare.
11943         (VEC_stack_alloc): Define.
11944         (DEF_VEC_ALLOC_P_STACK, DEF_VEC_ALLOC_FUNC_P_STACK): Define.
11945         (DEF_VEC_ALLOC_O_STACK, DEF_VEC_ALLOC_FUNC_O_STACK): Define.
11946         (DEF_VEC_ALLOC_I_STACK, DEF_VEC_ALLOC_FUNC_I_STACK): Define.
11947         * vec.c (void_p): New type.  Call DEF_VEC_P and DEF_VEC_ALLOC_P
11948         for void_p.
11949         (stack_vecs): New static variable.
11950         (vec_stack_p_reserve_exact_1): New function.
11951         (vec_stack_o_reserve_1): New static function.
11952         (vec_stack_p_reserve, vec_stack_p_reserve_exact): New functions.
11953         (vec_stack_o_reserve, vec_stack_o_reserve_exact): New functions.
11954         (vec_stack_free): New function.
11955         * df-scan.c (df_ref): Use DEF_VEC_P and DEF_VEC_ALLOC_P_STACK.
11956         (VEC_df_ref_stack_alloc): Define.
11957         (df_mw_hardreg_ptr): New type.  Use DEF_VEC_P and
11958         DEF_VEC_ALLOC_P_STACK.
11959         (VEC_df_mw_hardreg_ptr_stack_alloc): Define.
11960         (struct df_collection_rec): Change _vec fields to VEC.  Remove
11961         _use fields.
11962         (df_free_collection_rec): Adjust for new fields.
11963         (df_insn_rescan): Use new df_collection_rec fields.
11964         (df_notes_rescan, df_canonize_collection_rec): Likewise.
11965         (df_ref_create_structure, df_ref_record): Likewise.
11966         (df_get_conditional_uses, df_get_call_refs): Likewise.
11967         (df_insn_refs_collect, df_bb_refs_collect): Likewise.
11968         (df_bb_refs_record, df_record_entry_block_defs): Likewise.
11969         (df_record_exit_block_uses, df_bb_verify): Likewise.
11970         (df_swap_refs): Change ref_vec parameter to VEC.  Change all callers.
11971         (df_sort_and_compress_refs): Change ref_vec parameter to VEC.
11972         Remove count parameter.  Change return type to void.  Change all
11973         callers.
11974         (df_sort_and_compress_mws): Change mw_vec parameter to VEC.
11975         Remove count parameter.  Change return type to void.  Change all
11976         callers.
11977         (df_install_refs): Change old_vec parameter to VEC.  Remove count
11978         parameter.  Change all callers.
11979         (df_install_mws): Change old_vec parameter to VEC.  Remove count
11980         parameter.  Change all callers.
11981         (df_refs_verify): Change new_rec parameter to VEC.  Change call
11982         callers.
11983         (df_mws_verify): Likewise.
11984
11985 2009-06-10  Alexandre Oliva  <aoliva@redhat.com>
11986
11987         * gcc.c (compare_files): Cast munmap argumento to caddr_t.
11988
11989 2009-06-10  H.J. Lu  <hongjiu.lu@intel.com>
11990
11991         * doc/extend.texi: Add description for __builtin_ia32_crc32di.
11992
11993 2009-06-10  Anthony Green  <green@moxielogic.com>
11994
11995         * config/moxie/crti.asm: New file.
11996         * config/moxie/crtn.asm: New file.
11997         * config/moxie/moxie.c: New file.
11998         * config/moxie/moxie.h: New file.
11999         * config/moxie/sfp-machine.h: New file.
12000         * config/moxie/moxie-protos.h: New file.
12001         * config/moxie/t-moxie: Created.
12002         * config/moxie/t-moxie-softfp: Created.
12003         * config/moxie/moxie.md: Created.
12004         * config/moxie/constraints.md: Created.
12005         * config.gcc: Add moxie support.
12006         * doc/md.texi (Machine Constraints): Add moxie constraints.
12007         * doc/contrib.texi (Contributors): Mention moxie port.
12008         * doc/install.texi (Specific): Mention the moxie port.
12009
12010 2009-06-09  Ian Lance Taylor  <iant@google.com>
12011
12012         * system.h (HAVE_DESIGNATED_INITIALIZERS): Don't define if
12013         compiling with C++.
12014         * optabs.c (optab_table): Only use designated initializers if
12015         HAVE_DESIGNATED_INITIALIZERS is defined.
12016         (convert_optab_table): Likewise.
12017         (init_optabs): Always call init_insn_codes if
12018         HAVE_DESIGNATED_INITIALIZERS is not defined.
12019
12020 2009-06-09  Ian Lance Taylor  <iant@google.com>
12021
12022         * targhooks.c (default_builtin_vectorized_function): Change fn
12023         parameter to unsigned int.
12024         (default_builtin_vectorized_conversion): Change code parameter to
12025         unsigned int.
12026         (default_builtin_reciprocal): Change fn parameter to unsigned int.
12027         * targhooks.h: Update declarations.
12028         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Change code
12029         parameter to unsigned int.
12030
12031         * c-typeck.c (comptypes_check_enum_int): New static function.
12032         (comptypes_internal): Add enum_and_int_p parameter.  Change all
12033         callers.
12034         (comp_target_types): Add location parameter.  Change all callers.
12035         (tagged_types_tu_compatible_p): Add enum_and_int_p parameter.
12036         Change all callers.
12037         (function_types_compatible_p, type_lists_compatible_p): Likewise.
12038         (build_conditional_expr): Add colon_loc parameter.  Change all
12039         callers.
12040         (convert_for_assignment): Add location parameter.  Change all callers.
12041         * c-parser.c (c_parser_conditional_expression): Pass location of
12042         colon to build_conditional_expr.
12043         * c-tree.h (build_conditional_expr): Update declaration.
12044
12045 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
12046
12047         * graphite.c: Revert previous patch.
12048
12049 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
12050
12051         PR bootstrap/40103
12052         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
12053
12054 2009-06-09  Ghassan Shobaki  <ghassan.shobaki@amd.com>
12055
12056         * tree-ssa-loop-prefetch.c
12057         (loop_prefetch_arrays): Fixed a portability problem in printf format
12058         string.
12059
12060 2009-06-09  Martin Jambor  <mjambor@suse.cz>
12061
12062         PR tree-optimization/40351
12063         * tree-sra.c (propagate_subacesses_accross_link): Check that a
12064         refrence to a potential artifical subaccess can be constructed.
12065
12066 2009-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
12067
12068         * config/sh/sh-protos.h (sh_optimization_options): Declare.
12069         (sh_override_options): Likewise.
12070         * config/sh/sh.c: Include params.h.
12071         (sh_optimization_options): New.
12072         (sh_override_options): Likewise.
12073         * config/sh/sh.c (OPTIMIZATION_OPTIONS): Use sh_optimization_options.
12074         (OVERRIDE_OPTIONS): Use sh_override_options.
12075
12076 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
12077
12078         * dwarf2out.c (emit_cfa_remember): New variable.
12079         (add_fde_cfi): If emit_cfa_remember, recurse to add
12080         DW_CFA_remember_state first.
12081         (dwarf2out_begin_epilogue): Don't add_fde_cfi DW_CFA_remember_state,
12082         instead just set emit_cfa_remember.
12083
12084 2009-06-08  Jan Hubicka  <jh@suse.cz>
12085
12086         PR debug/40126
12087         * dwarf2out.c (dwarf2out_abstract_function): Free decl_loc_table.
12088
12089 2009-06-08  Jan Hubicka  <jh@suse.cz>
12090
12091         PR middle-end/39834
12092         * cgraphunit.c (save_inline_function_body): Do not copy transform
12093         hooks for saved inline bodies.
12094         * ipa-passes.c (do_per_function): Do not add the hoks multiple times
12095         for given function.
12096
12097 2009-06-08  Adam Nemet  <anemet@caviumnetworks.com>
12098
12099         * jump.c (returnjump_p): Handle delayed branches.  Add missing
12100         function comment.
12101
12102 2009-06-08  Jan Hubicka  <jh@suse.cz>
12103
12104         PR middle-end/40102
12105         * cgraph.c (cgraph_create_edge_including_clones): Also asume that the
12106         original node might've been modified.
12107         * tree-inline.c (copy_bb): Do not assume that all clones are the same.
12108
12109 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
12110
12111         * tree-object-size.c (addr_object_size): Add OSI argument.
12112         Handle also INDIRECT_REF with SSA_NAME inside of it as base address.
12113         (compute_builtin_object_size, expr_object_size): Adjust callers.
12114         (plus_stmt_object_size): Call addr_object_size instead of
12115         compute_builtin_object_size.
12116
12117 2009-06-08  Ghassan Shobaki  <ghassan.shobaki@amd.com>
12118             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
12119
12120         * tree-ssa-loop-prefetch.c
12121         (gather_memory_references): Introduced a counter for the number of
12122         memory references.
12123         (anything_to_prefetch_p): Introduced a counter for the number of
12124         prefetches.
12125         (is_loop_prefetching_profitable): New function with a cost model
12126         for prefetching.
12127         (loop_prefetch_arrays): Use the new cost model to determine if
12128         prefetching is profitable.
12129         * params.def (MIN_INSN_TO_PREFETCH_RATIO,
12130         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
12131         * params.h (MIN_INSN_TO_PREFETCH_RATIO,
12132         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
12133         * doc/invoke.texi (MIN_INSN_TO_PREFETCT_RATIO,
12134         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
12135
12136 2009-06-08  Michael Matz  <matz@suse.de>
12137
12138         PR debug/40012
12139         * cfgexpand.c (set_rtl): Store place also in DECL_RTL, if all
12140         partitions use the same.
12141         (expand_one_var): Deal with DECL_RTL sometimes begin set also
12142         for basevars of SSA_NAMEs.
12143         (expand_used_vars): Reset TREE_USED for basevars of SSA_NAMEs,
12144         to not expand them twice.
12145         (gimple_expand_cfg): Clear DECL_RTL for those decls that have
12146         multiple places.
12147
12148 2009-06-08  Alexandre Oliva  <aoliva@redhat.com>
12149
12150         * common.opt (fcompare-debug=, fcompare-debug-second): New.
12151         (fdump-final-insns=, gtoggle): New.
12152         * doc/invoke.texi: Document them.
12153         * final.c (rest_of_clean_state): Dump final insn stream.
12154         * gcc.c (invoke_as): Hook in -fcompare-debug.
12155         (static_spec_functions): Add compare-debug-dump-opt,
12156         compare-debug-self-opt and compare-debug-auxbase-opt.
12157         (compare_debug, compare_debug_second, compare_debug_opt): New.
12158         (switches_debug_check, n_switches_debug_check): New.
12159         (debug_auxbase_opt, debug_check_temp_file): New.
12160         (process_command): Handle -fno-compare-debug, -fcompare-debug and
12161         -fcompare-debug=*.
12162         (do_self_spec): Handle arguments after switches.
12163         (do_spec_1): Add .gk extension to temp file basenames for compare.
12164         (check_live_switch): Take SWITCH_IGNORE into account, and earlier.
12165         (cc1_options): Use it instead of normal auxbase computation for
12166         the second compare-debug compilation.
12167         (compare_files): New.
12168         (main): Set up and implement compare debug mode.
12169         (compare_debug_dump_opt_spec_function): New.
12170         (compare_debug_self_opt_spec_function): New.
12171         (compare_debug_auxbase_opt_spec_function): New.
12172         * toplev.c (process_options): Handle flag_gtoggle,
12173         flag_dump_final_insns.
12174         * coverage.c (coverage_begin_output): Don't overwrite .gcno file
12175         during -fcompare-debug-second compilation.
12176
12177 2009-06-07  Ian Lance Taylor  <iant@google.com>
12178
12179         * dwarf2.h (enum dwarf_location_atom): Add INTERNAL_DW_OP_tls_addr.
12180         * dwarf2out.c (INTERNAL_DW_OP_tls_addr): Don't #define.
12181
12182         * c-common.c (c_do_switch_warnings): Don't exit early for -Wswitch
12183         with no default node.  Change warning with %H to warning_at.
12184         Don't clear warn_switch around case checking.
12185         * doc/invoke.texi (Warning Options): Clarify distinction between
12186         -Wswitch and -Wswitch-enum.
12187
12188 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
12189
12190         * tree-pass.h (TODO_update_ssa_any): Document internal use only.
12191
12192 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
12193
12194         * gbl-ctors.h: Add header guard.
12195
12196 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
12197
12198         * tree-flow.h (make_value_handle, set_value_handle, sort_vuses,
12199         sort_vuses_heap, vn_lookup_or_add, vn_lookup_or_add_with_stmt,
12200         vn_lookup_or_add_with_vuses, vn_add, vn_add_with_vuses,
12201         vn_lookup_with_stmt, vn_lookup, vn_lookup_with_vuses): Remove
12202         prototypes for removed functions.
12203         (expressions_equal_p): Move to ...
12204         * tree-ssa-sccvn.h: ... here and ...
12205         * matrix-reorg.c: ... adjust includes.
12206
12207 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
12208
12209         * ipa-struct-reorg.c (do_reorg_1): Fix whitespace in dump output.
12210
12211 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
12212
12213         * c-decl.c (finish_decl): Use bool for variable was_incomplete.
12214         (finish_function): Remove erroneous whitespace.
12215
12216 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
12217
12218         * tree-cfg.c (gimple_merge_blocks): Commentary typo fix.
12219         (verify_stmts): Print statement who's gimple_bb is set to a wrong BB
12220
12221 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
12222
12223         * errors.c (internal_error): Commentary typo fix.
12224         * gimple-iterator.c (gsi_insert_seq_on_edge): Ditto.
12225         * tree-ssa-pre.c: Ditto.
12226
12227 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
12228
12229         * basic-block.h (ENTRY_BLOCK, EXIT_BLOCK): Document that neither of
12230         them is supposed to hold actual statements.
12231
12232 2009-06-06  Ian Lance Taylor  <iant@google.com>
12233
12234         * doc/extend.texi (Attribute Syntax): Document that C++ labels on
12235         empty statements can now have attributes.
12236
12237 2009-06-05  Shujing Zhao  <pearly.zhao@oracle.com>
12238
12239         * config/mips/mips.c: Use REG_P and CONST_INT_P where applicable.
12240         * config/mips/mips.md: Ditto.
12241
12242 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
12243
12244         * config/rs6000/eabi.asm (__eabi_convert): Don't define if
12245         _RELOCATABLE.
12246         (__eabi_uconvert): Likewise.
12247
12248 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
12249
12250         * config/rs6000/ppc-asm.h: Protect auto-host.h inclusion and
12251         CFI_* definitions with IN_GCC.
12252
12253 2009-06-05  David Edelsohn  <edelsohn@gnu.org>
12254
12255         * xcoffout.h (xcoffout_source_line): Update prototype.
12256
12257 2009-06-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12258
12259         * builtins.c (do_mpc_ckconv, do_mpc_arg1): Use
12260         mpc_realref/mpc_imagref instead of MPC_RE/MPC_IM.
12261
12262 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
12263
12264         PR middle-end/40340
12265         * tree-ssa-live.c (remove_unused_scope_block_p): Don't prune
12266         inlined_function_outer_scope_p blocks for artificial inlines
12267         even at -g0/-g1.
12268         * tree.c (tree_nonartificial_location): Rewrite using
12269         block_nonartificial_location.
12270
12271 2009-06-05  Revital Eres  <eres@il.ibm.com>
12272             Leehod Baruch  <leehod@il.ibm.com>
12273
12274         * expr.c (expand_assignment): Expand MISALIGNED_INDIRECT_REF.
12275         (expand_expr_real_1): Remove comment.
12276         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
12277         Vectorize misaligned access when the target supports it.
12278         (vect_supportable_dr_alignment): Check for unaligned access support.
12279         * tree-vect-stmts.c (vectorizable_store): Generate misaligned store
12280         and remove asset.
12281
12282 2009-06-05  Julian Brown  <julian@codesourcery.com>
12283
12284         * config/arm/ieee754-df.S (cmpdf2): Avoid writing below SP.
12285         * config/arm/ieee754-sf.S (cmpsf2): Likewise.
12286
12287 2009-06-05  Richard Guenther  <rguenther@suse.de>
12288
12289         PR bootstrap/40350
12290         * dwarf2out.c (dwarf2out_begin_function): Mark discriminator
12291         as possibly unused.
12292
12293 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
12294
12295         * config/s390/s390.c (global_not_special_regno_p): New static inline.
12296         (save_gprs): Don't tell unwinder when a global register is saved.
12297         (s390_emit_epilogue): Emit needed epilogue unwind info.
12298
12299 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
12300
12301         * dwarf2out.c (deferred_asm_name): New.
12302         (add_name_and_src_coords_attributes): Defer creation of
12303         DW_AT_MIPS_linkage_name attribute if DECL_ASSEMBLER_NAME was not
12304         computed yet.
12305         (move_linkage_attr): New.
12306         (dwarf2out_finish): Revisit deferrals and emit attributes at the
12307         right place.
12308
12309 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
12310
12311         * tree-nested.c (finalize_nesting_tree_1): Declare the
12312         frame_decl in the binding tree.
12313
12314 2009-06-04  Cary Coutant  <ccoutant@google.com>
12315
12316         * basic-block.h (struct basic_block_def): Add discriminator field.
12317         * dbxout.c (dbxout_source_line): Add new parameter.  Change all
12318         callers.
12319         * debug.c (do_nothing_debug_hooks): Add additional entry.
12320         (debug_nothing_int_charstar_int): New function.
12321         * debug.h (struct gcc_debug_hooks): Add parameter to source_line hook.
12322         (debug_nothing_int_charstar_int): New declaration.
12323         * dwarf2out.c (dwarf2out_source_line): Add new parameter.  Write
12324         discriminator value in .loc directive.
12325         * final.c (last_discriminator): New variable.
12326         (discriminator): New variable.
12327         (final_start_function): Initialize above variables, pass current
12328         discriminator to debug hook.
12329         (notice_source_line): Check for discriminator change.
12330         * gimple-pretty-print.c (dump_bb_header): Print discriminator value.
12331         * sdbout.c (sdbout_source_line): New parameter.
12332         * tree-cfg.c (struct locus_discrim_map): New structure type.
12333         (discriminator_per_locus): New hash table.
12334         (build_gimple_cfg): Allocate and free discriminator hash table.
12335         (make_edges): Call assign_discriminator.
12336         (locus_map_hash): New function.
12337         (locus_map_eq): New function.
12338         (next_discriminator_for_locus): New function.
12339         (same_line_p): New function.
12340         (assign_discriminator): New function.
12341         (make_cond_expr_edges): Call assign_discriminator.
12342         (make_gimple_switch_edges): Likewise.
12343         (first_non_label_stmt): New function.
12344         * vmsdbgout.c (vmsdbgout_source_line): Add new parameter.  Change
12345         all callers.
12346         * xcoffout.c (xcoffout_source_line): Add new parameter.
12347
12348         * configure.ac (gcc_cv_as_discriminator): New configury check for
12349         gas support for discriminator.
12350         * configure: Regenerate.
12351         * config.in: Regenerate.
12352
12353 2009-06-04  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
12354
12355         * config/arm/arm.c (thumb2_legitimate_index_p): Initialize
12356         val after checking for integers.
12357
12358 2009-06-04  Uros Bizjak  <ubizjak@gmail.com>
12359
12360         * config/i386/i386.h (X86_64_MS_REGPARM_MAX): Rename from
12361         X64_REGPARM_MAX.
12362         (REGPARM_MAX): Use X86_64_MS_REGPARM_MAX.
12363         (X86_64_MS_SSE_REGPARM_MAX): Rename from X64_SSE_REGPARM_MAX.
12364         (SSE_REGPARM_MAX): Use X86_64_MS_SSE_REGPARM_MAX.
12365         * config/i386/i386.c: Use X86_64_MS_REGPARM_MAX instead of
12366         X64_REGPARM_MAX.  Use X86_64_MS_SSE_REGPARM_MAX instead of
12367         X64_SSE_REGPARM_MAX.
12368         * config/i386/i386.md: Use X86_64_MS_SSE_REGPARM_MAX instead of
12369         X64_SSE_REGPARM_MAX.
12370
12371 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
12372
12373         * gcc.c (report_times_to_file): New.
12374         (execute): Implement it.
12375         (process_command): Support -time=.
12376         * doc/invoke.texi: Document it.
12377
12378 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
12379
12380         * tree-ssa-live.c (remove_unused_scope_block_p): Keep variables
12381         that have value exprs.
12382
12383 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
12384
12385         * dwarf2asm.c (dw2_force_const_mem): Defer creation of
12386         declarations for constants until...
12387         (dw2_output_indirect_constant_1): ... this point.
12388
12389 2009-06-04  Richard Earnshaw  <rearnsha@arm.com>
12390
12391         PR target/10242
12392         * arm.md (arm_addsi3): Don't try to split an add with an
12393         eliminable register until after reload has completed.
12394
12395 2009-06-03  Ian Lance Taylor  <iant@google.com>
12396
12397         * dummy-checksum.c (executable_checksum): Use EXPORTED_CONST.
12398         * genattrtab.c (write_length_unit_log): Likewise.
12399         * genchecksum.c (dosum): Likewise.
12400         * gengtype.c (write_rtx_next): Likewise.
12401         (finish_root_table, write_roots): Likewise.
12402         * gimple.c (gimple_ops_offset_): Likewise.
12403         * tree-nomudflap.c (gt_ggc_r_gt_tree_mudflap_h): Likewise.
12404         * config/arc/arc.c (arc_attribute_table): Likewise.
12405         * config/arm/arm.c (arm_attribute_table): Likewise.
12406         * config/avr/avr.c (avr_attribute_table): Likewise.
12407         * config/crx/crx.c (crx_attribute_table): Likewise.
12408         * config/m32r/m32r.c (m32r_attribute_table): Likewise.
12409         * config/m68hc11/m68hc11.c (m68hc11_attribute_table): Likewise.
12410         * config/mcore/mcore.c (mcore_attribute_table): Likewise.
12411         * config/rs6000/rs6000.c (rs6000_attribute_table): Likewise.
12412         * config/sh/sh.c (sh_attribute_table): Likewise.
12413         * config/sparc/sparc.c (sparc_attribute_table): Likewise.
12414         * config/spu/spu.c (spu_attribute_table): Likewise.
12415         * config/v850/v850.c (v850_attribute_table): Likewise.
12416
12417         * config/alpha/alpha.c (vms_attribute_table): Make static.
12418         * config/bfin/bfin.c (bfin_attribute_table): Likewise.
12419         * config/h8300/h8300.c (h8300_attribute_table): Likewise.
12420         * config/mips/mips.c (mips_attribute_table): Likewise.
12421
12422         * Makefile.in (dummy-checksum.o): Depend upon $(CONFIG_H) and
12423         $(SYSTEM_H).
12424         (cc1-checksum.o): Likewise.
12425
12426 2009-06-03  Steve Ellcey  <sje@cup.hp.com>
12427
12428         * config/ia64/vect.md (*movv2sf_internal): Handle big endian case.
12429
12430 2009-06-03  Jakub Jelinek  <jakub@redhat.com>
12431
12432         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Return generated
12433         insn if it is changing sp.  Use gen_add3_insn instead of
12434         conditionally gen_addsi3 and gen_adddi3.
12435         (offset_below_red_zone_p): New static inline function.
12436         (rs6000_emit_epilogue): Emit needed epilogue unwind info.
12437         Use gen_add3_insn instead of conditionally gen_addsi3 and gen_adddi3.
12438         * config/rs6000/ppc-asm.h: Include auto-host.h.
12439         (CFI_STARTPROC, CFI_ENDPROC, CFI_DEF_CFA_REGISTER, CFI_OFFSET,
12440         CFI_RESTORE): Define.
12441         * config/rs6000/crtresxgpr.asm: Add unwind info.
12442         * config/rs6000/crtresxfpr.asm: Likewise.
12443         * config/rs6000/crtresgpr.asm: Likewise.
12444         * config/rs6000/crtresfpr.asm: Likewise.
12445         * config/rs6000/crtsavgpr.asm: Likewise.
12446         * config/rs6000/crtsavfpr.asm: Likewise.
12447
12448         * dwarf2out.c (output_cfi_directive): Pass 1 instead of 0 to second
12449         argument of DWARF2_FRAME_REG_OUT macros.
12450
12451 2009-06-03  Julian Brown  <julian@codesourcery.com>
12452
12453         * config/arm/arm.c (arm_hard_regno_mode_ok): Permit values of four
12454         words or less (including TImode) in core registers.
12455
12456 2009-06-03  Richard Guenther  <rguenther@suse.de>
12457
12458         PR middle-end/40328
12459         * fold-const.c (fold_convert): Fold the build COMPLEX_EXPR.
12460
12461 2009-06-03  Andrey Belevantsev  <abel@ispras.ru>
12462
12463         * statistics.c (statistics_counter_event): Do not record event
12464         in pass dump if its number == -1.
12465         (curr_statistics_hash): Add assert that we never get passes
12466         with static number == -1.
12467
12468 2009-06-03  Richard Guenther  <rguenther@suse.de>
12469             Andrey Belevantsev  <abel@ispras.ru>
12470
12471         * cfgexpand.c (discover_nonconstant_array_refs_r): Make only
12472         non-BLKmode arrays addressable.
12473
12474 2009-06-03  Maxim Kuvyrkov  <maxim@codesourcery.com>
12475
12476         * config/m68k/linux.h (HAVE_GAS_BALIGN_AND_P2ALIGN): Move to ...
12477         * config/m68k/m68k.h: ... here.
12478
12479 2009-06-03  Martin Jambor  <mjambor@suse.cz>
12480
12481         PR tree-optimization/40323
12482         * ipa-prop.c (get_ssa_def_if_simple_copy): Break if not single
12483         assignment.
12484
12485 2009-06-03  Richard Guenther  <rguenther@suse.de>
12486
12487         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
12488         consistently.
12489
12490 2009-06-03  Shujing Zhao  <pearly.zhao@oracle.com>
12491
12492         * config/sh/predicates.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
12493         JUMP_P, CALL_P, NONJUMP_INSN_P, NOTE_P, BARRIER_P and
12494         JUMP_TABLE_DATA_P where applicable.
12495         * config/sh/sh.c: Ditto.
12496         * config/sh/sh.h: Ditto.
12497         * config/sh/sh.md: Ditto.
12498         * config/sh/symbian.c: Ditto.
12499
12500 2009-06-03  Uros Bizjak  <ubizjak@gmail.com>
12501
12502         * config/i386/driver-i386.c (describe_cache): Optimize
12503         concatenation of strings.  Use snprintf instead of sprintf.
12504         (host_detect_local_cpu): Ditto.  Ignore -march and -mtune for native
12505         target when not compiling with GCC.
12506
12507 2009-06-02  Kaz Kojima  <kkojima@gcc.gnu.org>
12508
12509         * config/sh/sh.c: Revert last change.
12510         (sh_expand_epilogue): Emit a blockage insn before the frame
12511         pointer adjustment unconditionally.
12512
12513 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
12514
12515         * config/pa/pa-hpux.h (LINK_SPEC): Remove "%<fwhole-program".
12516         * config/pa/pa-hpux10.h (LINK_SPEC): Likewise.
12517         * config/pa/pa-hpux11.h (LINK_SPEC): Likewise.
12518         * gcc.c (set_collect_gcc_options): Don't add -fwhole-program
12519         to COLLECT_GCC_OPTIONS.
12520
12521 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
12522
12523         * collect2.c (target_system_root): New variable.
12524         (main): Handle --sysroot=.
12525         (ignore_library): Strip the sysroot from the library path.
12526
12527 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
12528
12529         * Makefile.in (COLLECT2_OBJS): Add collect2-aix.o.
12530         (collect2.o): Depend on collect2-aix.h.
12531         (collect2-aix.o): New rule.
12532         * collect2-aix.h: New file.
12533         * collect2-aix.c: Likewise.
12534         * collect2.c: Include collect2-aix.h.  Don't undefine
12535         OBJECT_FORMAT_COFF if CROSS_AIX_SUPPORT is defined.
12536         Guard native includes with #ifndef CROSS_DIRECTORY_STRUCTURE.
12537         Use TARGET_AIX_VERSION instead of _AIX51.
12538         * config/rs6000/aix43.h (TARGET_AIX_VERSION): Define.
12539         * config/rs6000/aix51.h (TARGET_AIX_VERSION): Likewise.
12540         * config/rs6000/aix52.h (TARGET_AIX_VERSION): Likewise.
12541         * config/rs6000/aix53.h (TARGET_AIX_VERSION): Likewise.
12542         * config/rs6000/aix61.h (TARGET_AIX_VERSION): Likewise.
12543
12544 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
12545
12546         * collect2.c (ignore_library): Avoid premature post-increment
12547         and null deference.
12548
12549 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
12550
12551         * Makefile.in (libgcc.mvars): Add TARGET_SYSTEM_ROOT.
12552         * config/rs6000/aix.h (LINK_SYSCALLS_SPEC): Add %R to the
12553         !CROSS_DIRECTORY_STRUCTURE alternative and use it for
12554         CROSS_DIRECTORY_STRUCTURE too.
12555         (LINK_LIBG_SPEC): Likewise.
12556         (LIB_SPEC): Add %R to sysroot paths.
12557         * config/rs6000/aix43.h (CPP_SPEC): Add %R to sysroot paths.
12558         (CPLUSPLUS_CPP_SPEC, LIB_SPEC): Likewise.
12559         * config/rs6000/aix51.h: As for aix43.h.
12560         * config/rs6000/aix52.h: Likewise.
12561         * config/rs6000/aix53.h: Likewise.
12562         * config/rs6000/aix61.h: Likewise.
12563         * config/rs6000/t-aix52 (SHLIB_LINK): Add $(TARGET_SYSTEM_ROOT)
12564         to the beginning of sysroot paths.
12565
12566 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
12567
12568         * print_rtl (print_rtx): Don't print modes in EXPR_LISTs and
12569         INSN_LISTs that are out of the REG_NOTE range.
12570
12571 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
12572
12573         * loop-unroll.c (struct iv_to_split): Add pointer to next.
12574         (struct var_to_expand): Likewise.
12575         (struct opt_info): Add head and tail for linked lists of the above.
12576         (analyze_insn_to_expand_var): Initialize next.
12577         (analyze_iv_to_split_insn): Likewise.
12578         (analyze_insns_in_loop): Create linked lists.
12579         (allocate_basic_variable): Simplify for use without hash table.
12580         (insert_var_expansion_initialization): Likewise, make it type-safer.
12581         (combine_var_copies_in_loop_exit): Likewise.
12582         (apply_opt_in_copies): Walk lists rather than hash tables.
12583         (release_var_copies): Simplified and inlined by hand into...
12584         (free_opt_info): ... this function.
12585
12586 2009-06-02  Richard Guenther  <rguenther@suse.de>
12587
12588         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
12589         for field decls.
12590
12591 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
12592
12593         * cfgexpand.c (gimple_expand_cfg): Discard the source location
12594         only for builtins that are not overridden.
12595
12596 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
12597
12598         * gengtype.c (adjust_field_rtx_def): Add NOTE_INSN_DELETED_LABEL's
12599         label string.
12600
12601 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
12602
12603         * df-core.c (df_ref_debug): Honor -fdump-noaddr.
12604
12605 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
12606
12607         * combine.c (move_deaths): Compare LUIDs within the same BB only.
12608
12609 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
12610
12611         * common.opt (fdump-unnumbered-links): New.
12612         * doc/invoke.texi (-fdump-unnumbered-links): Document it.
12613         * print-rtl.c (flag_dump_unnumbered_links): New.
12614         (print_rtx): Test it.
12615
12616 2009-06-02  Richard Earnshaw  <rearnsha@arm.com>
12617
12618         * arm.c (arm_get_frame_offsets): Prefer using r3 for padding a
12619         push/pop multiple to 8-byte alignment.
12620
12621 2009-06-01  Jakub Jelinek  <jakub@redhat.com>
12622
12623         * config/i386/i386.c (queued_cfa_restores): New static variable.
12624         (ix86_add_cfa_restore_note, ix86_add_queued_cfa_restore_notes): New
12625         functions.
12626         (pro_epilogue_adjust_stack): Call ix86_add_queued_cfa_restore_notes.
12627         (ix86_emit_restore_reg_using_pop): Add RED_OFFSET argument.
12628         Set RTX_FRAME_RELATED_P immediately after adding a REG_CFA_* note.
12629         Call ix86_add_cfa_restore_note instead of adding REG_CFA_OFFSET
12630         note unconditionally.
12631         (ix86_emit_restore_regs_using_mov): Likewise.
12632         (ix86_emit_restore_sse_regs_using_mov): Likewise.
12633         (ix86_emit_restore_regs_using_pop): Add RED_OFFSET argument, pass
12634         it through to ix86_emit_restore_reg_using_pop.
12635         (ix86_emit_leave): Add RED_OFFSET argument.  Call
12636         ix86_add_queued_cfa_restore_notes.  Call ix86_add_cfa_restore_note
12637         instead of adding REG_CFA_OFFSET note unconditionally.
12638         (ix86_expand_epilogue): Compute RED_OFFSET, pass it down to
12639         the above functions.  Call ix86_add_queued_cfa_restore_notes when
12640         needed.
12641
12642         * dwarf2out.c (dwarf2out_cfi_label): Add FORCE argument, if true,
12643         force output of the label even for dwarf2out_do_cfi_asm.
12644         (add_fde_cfi): If -g2 and above and cfi might change CFA,
12645         force creation of CFI label and chain DW_CFA_set_loc jumping to it
12646         for convert_cfa_to_fb_loc_list.  Adjust other dwarf2out_cfi_label
12647         caller.
12648         (dwarf2out_stack_adjust, dwarf2out_frame_debug,
12649         dwarf2out_begin_epilogue, dwarf2out_frame_debug_restore_state): Adjust
12650         dwarf2out_cfi_label callers.
12651         * tree.h (dwarf2out_cfi_label): Adjust prototype.
12652         * config/arm/arm.c (thumb_pushpop, thumb1_output_function_prologue):
12653         Adjust dwarf2out_cfi_label callers.
12654         * config/vax/vax.c (vax_output_function_prologue): Likewise.
12655
12656         * config/i386/i386.h (struct machine_cfa_state,
12657         struct machine_function): Guard with ifndef USED_FOR_TARGET
12658         instead of not IN_LIBGCC2 and not in IN_TARGET_LIBS.
12659
12660         PR other/40024
12661         * emutls.c (__emutls_get_address): Change arr->size to mean number
12662         of allocated arr->data entries instead of # of slots + 1.
12663
12664         PR middle-end/40316
12665         * recog.c (peep2_reinit_state): New function.
12666         (peephole2_init_state): Use it at the end of a basic block and also
12667         when seeing a RTX_FRAME_RELATED_P insn.
12668
12669 2009-06-01  Steve Ellcey  <sje@cup.hp.com>
12670
12671         * ia64.md (floatdirf2, fix_truncrfdi, floatunsdirf,
12672         fixuns_truncrfdi2): New.
12673         (fix_truncxfdi2_alts, fixuns_truncxfdi2_alts,
12674         *nmaddsf4_alts, *nmadddf4_alts, *nmadddf4_truncsf_alts,
12675         *mulxf3_alts, *mulxf3_truncsf_alts, *mulxf3_truncdf_alts,
12676         *maddxf4_alts, *maddxf4_alts_truncsf, *maddxf4_alts_truncdf,
12677         *nmaddxf4_alts, *nmaddxf4_truncsf_alts, *nmaddxf4_truncdf_alts,
12678         *recip_approx): Remove.
12679         (divsi3 modsi3, udivsi3, umodsi3, divsi3_internal, divdi3,
12680         moddi3, udivdi3, umoddi3, divdi3_internal_lat, divdi3_internal_thr,
12681         divsf3, sqrtsf2, divdf3, sqrtdf2, divxf3, sqrtxf2): Modify and
12682         move to div.md.
12683         * div.md (fix_truncrfdi2_alts, fixuns_truncrfdi2_alt,
12684         setf_exp_rf): New.
12685
12686 2009-06-01  Ian Lance Taylor  <iant@google.com>
12687
12688         * attribs.c (register_attribute): Use CONST_CAST.
12689         * collect2.c (main): Use CONST_CAST2.
12690         (scan_prog_file): Likewise.
12691         * gcc.c (process_command, main): Likewise.
12692         * toplev.c (toplev_main): Likewise.
12693
12694         * c-typeck.c (handle_warn_cast_qual): New static function,
12695         partially broken out of build_c_cast.
12696         (build_c_cast): Call handle_warn_cast_qual.
12697         * doc/invoke.texi (Warning Options): Document new effect of
12698         -Wcast-qual.
12699
12700 2009-06-01  Aldy Hernandez  <aldyh@redhat.com>
12701
12702         * diagnostic.c (diagnostic_build_prefix): Always print columns.
12703         (diagnostic_report_current_module): Print columns.
12704         * common.opt (flag_show_column): Enable by default.
12705
12706 2009-06-01  Luis Machado  <luisgpm@br.ibm.com>
12707
12708         * alias.c (find_base_term): Check for NULL term before returning.
12709
12710 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
12711
12712         Revert due to PR40320:
12713         2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
12714         * calls.c (emit_library_call_value_1): Don't force_operand for move
12715         and push insns.
12716
12717 2009-06-01  Olivier Hainque  <hainque@adacore.com>
12718             Eric Botcazou  <ebotcazou@adacore.com>
12719
12720         * tree.h (CONSTRUCTOR_BITFIELD_P): True if NODE, a FIELD_DECL, is
12721         to be processed as a bitfield for constructor output purposes.
12722         * output.h (initializer_constant_valid_for_bitfield_p): Declare
12723         new function.
12724         * varasm.c (oc_local_state): New type, output_constructor
12725         local state to support communication with helpers.
12726         (oc_outer_state): New type, output_constructor outer state of
12727         relevance in recursive calls.
12728         (output_constructor_array_range): New output_constructor helper,
12729         extracted code for an array range element.
12730         (output_constructor_regular_field): New output_constructor helper,
12731         extracted code for an element that is not a bitfield.
12732         (output_constructor_bitfield): New output_constructor helper,
12733         extracted code for a bitfield element.  Accept an OUTER state
12734         argument for recursive processing.  Recurse on record or array
12735         CONSTRUCTOR values, possibly past noop conversions.
12736         (initializer_constant_valid_for_bitfield_p): New predicate.  Whether
12737         VALUE is a valid constant-valued expression for use in a static
12738         bit-field initializer.
12739         (output_constructor): Rework to use helpers.  Accept and honor an
12740         OUTER state argument for recursive calls.  Return total size.  Be
12741         prepared for nested constructors initializing bitfields.
12742         (output_constant): Feed OUTER in calls to output_constructor.
12743
12744 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
12745
12746         * calls.c (emit_library_call_value_1): Don't force_operand for move
12747         and push insns.
12748
12749 2009-06-01  Nick Clifton  <nickc@redhat.com>
12750
12751         * doc/invoke.texi (IA-64 Options): Fix typo.
12752
12753 2009-06-01  Ira Rosen  <irar@il.ibm.com>
12754
12755         PR tree-optimization/39129
12756         * tree-vect-loop-manip.c (conservative_cost_threshold): Change the
12757         printed message.
12758         (vect_do_peeling_for_loop_bound): Use
12759         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
12760         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
12761         (vect_loop_versioning): Likewise.
12762         (vect_create_cond_for_alias_checks): Fix indentation.
12763         * tree-vectorizer.h (struct _loop_vec_info): Fix indentation of the
12764         macros.
12765         (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT): Define.
12766         (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Likewise.
12767         * tree-vect-loop.c (vect_analyze_loop_form): Change "too many BBs" to
12768         "control flow in loop".
12769         (vect_estimate_min_profitable_iters): Use
12770         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
12771         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
12772         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
12773         (vect_create_data_ref_ptr): Don't mention array dimension in printing.
12774         * tree-vect-stmts.c (vectorizable_store): Replace the check that the
12775         statement belongs to a group of strided accesses with the exact code
12776         check.
12777         (vectorizable_load): Likewise.
12778         * tree-vect-slp.c (vect_analyze_slp_instance): Spell out "basic block".
12779         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
12780
12781 2009-06-01  Gerald Pfeifer  <gerald@pfeifer.com>
12782
12783         * config/freebsd-stdint.h: New file.
12784         * config.gcc (*-*-freebsd): Set use_gcc_stdint=wrap.
12785         Add freebsd-stdint.h to tm_file.
12786
12787 2009-06-01  Richard Earnshaw  <rearnsha@arm.com>
12788
12789         * arm/thumb2.md (thumb2_zero_extendhidi2): New insn and split.
12790         (thumb2_extendhidi2): Likewise.
12791
12792 2009-05-31  Ian Lance Taylor  <iant@google.com>
12793
12794         * regstat.c (regstat_n_sets_and_refs): Remove duplicate definition.
12795
12796 2009-05-31  Ian Lance Taylor  <iant@google.com>
12797
12798         * Makefile.in (except.o): Depend upon gt-except.h, not gt-$(EXCEPT_H).
12799         (ipa-cp.o): Depend upon $(FIBHEAP_H) and $(PARAMS_H).
12800         (ipa-reference.o): Depend upon gt-ipa-reference.h.
12801
12802 2009-05-31  Jason Merrill  <jason@redhat.com>
12803
12804         * tree-pretty-print.c (print_call_name): Take the callee, not the
12805         call itself.  Make non-static.  Use dump_function_name for functions.
12806         (dump_generic_node): Adjust.
12807         * diagnostic.h: Declare print_call_name.
12808         * gimple-pretty-print.c (dump_gimple_call): Use it.
12809
12810 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
12811
12812         * config/sh/sh.md (ashldi3_std): New define_expand.
12813         (ashldi3): Use it.
12814
12815 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
12816
12817         PR target/40313
12818         * config/sh/sh.c: Include debug.h.
12819         (sh_expand_epilogue): Emit a blockage insn before the frame
12820         pointer adjustment also when dwarf2out_do_frame returns true.
12821
12822 2009-05-31  Richard Earnshaw  <rearnsha@arm.com>
12823
12824         * arm/thumb2.md (thumb2_extendsidi2): Add a split sub-pattern.
12825         (thumb2_extendqidi2): New pattern.
12826
12827 2009-05-31  Ira Rosen  <irar@il.ibm.com>
12828
12829         * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1): Don't
12830         mark phis for renaming.
12831         * tree-vectorizer.c (vect_memsyms_to_rename): Remove.
12832         (vectorize_loops): Don't allocate and free vect_memsyms_to_rename.
12833         Call mark_sym_for_renaming.
12834         * tree-vectorizer.h (vect_memsyms_to_rename): Remove.
12835         * tree-vect-loop.c (vect_transform_loop): Remove
12836         vect_memsyms_to_rename initialization and a call to
12837         mark_set_for_renaming.
12838
12839 2009-05-31  Jakub Jelinek  <jakub@redhat.com>
12840
12841         PR middle-end/40304
12842         * config/i386/i386.c (pro_epilogue_adjust_stack): Mark insns
12843         frame related even if !set_cfa && style < 0.
12844
12845 2009-05-30  Kai Tietz  <kai.tietz@onevision.com>
12846
12847         * config/i386/mingw-tls.c: New file.
12848         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Add mingw-tls.c file.
12849         * gthr-win32.h (MINGW32_SUPPORTS_MT_EH): Define it for targets
12850         defining _WIN32 but not __CYGWIN__.
12851
12852 2009-05-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12853
12854         * configure.ac: Add MPC support.
12855
12856         * config.in, configure: Regenerate.
12857
12858 2009-05-29  Richard Henderson  <rth@redhat.com>
12859
12860         * cfgcleanup.c (try_crossjump_to_edge): Only skip past
12861         NOTE_INSN_BASIC_BLOCK.
12862         * cfglayout.c (duplicate_insn_chain): Copy epilogue insn marks.
12863         Duplicate NOTE_INSN_EPILOGUE_BEG notes.
12864         * cfgrtl.c (can_delete_note_p): Allow NOTE_INSN_EPILOGUE_BEG
12865         to be deleted.
12866         * dwarf2out.c (struct cfa_loc): Change indirect field to bitfield,
12867         add in_use field.
12868         (add_cfi): Disable check redefining cfa away from drap.
12869         (lookup_cfa_1): Add remember argument; handle remember/restore.
12870         (lookup_cfa): Pass remember argument.
12871         (cfa_remember): New.
12872         (compute_barrier_args_size_1): Remove sibcall check.
12873         (dwarf2out_frame_debug_def_cfa): New.
12874         (dwarf2out_frame_debug_adjust_cfa): New.
12875         (dwarf2out_frame_debug_cfa_offset): New.
12876         (dwarf2out_frame_debug_cfa_register): New.
12877         (dwarf2out_frame_debug_cfa_restore): New.
12878         (dwarf2out_frame_debug): Handle REG_CFA_* notes.
12879         (dwarf2out_begin_epilogue): New.
12880         (dwarf2out_frame_debug_restore_state): New.
12881         (dw_cfi_oprnd1_desc): Handle DW_CFA_remember_state,
12882         DW_CFA_restore_state.
12883         (output_cfi_directive): Likewise.
12884         (convert_cfa_to_fb_loc_list): Likewise.
12885         (dw_cfi_oprnd1_desc): Handle DW_CFA_restore.
12886         * dwarf2out.h: Update.
12887         * emit-rtl.c (try_split): Don't split RTX_FRAME_RELATED_P.
12888         (copy_insn_1): Early out for null.
12889         * final.c (final_scan_insn): Call dwarf2out_begin_epilogue
12890         and dwarf2out_frame_debug_restore_state.
12891         * function.c (prologue, epilogue, sibcall_epilogue): Remove.
12892         (prologue_insn_hash, epilogue_insn_hash): New.
12893         (free_after_compilation): Adjust freeing accordingly.
12894         (record_insns): Create hash table if needed; push insns into
12895         hash instead of array.
12896         (maybe_copy_epilogue_insn): New.
12897         (contains): Search hash table instead of array.
12898         (sibcall_epilogue_contains): Remove.
12899         (thread_prologue_and_epilogue_insns): Split eh_return insns
12900         and mark them as epilogues.
12901         (reposition_prologue_and_epilogue_notes): Rewrite epilogue
12902         scanning in terms of basic blocks.
12903         * insn-notes.def (CFA_RESTORE_STATE): New.
12904         * jump.c (returnjump_p_1): Accept EH_RETURN.
12905         (eh_returnjump_p_1, eh_returnjump_p): New.
12906         * reg-notes.def (CFA_DEF_CFA, CFA_ADJUST_CFA, CFA_OFFSET,
12907         CFA_REGISTER, CFA_RESTORE): New.
12908         * rtl.def (EH_RETURN): New.
12909         * rtl.h (eh_returnjump_p, maybe_copy_epilogue_insn): Declare.
12910
12911         * config/bfin/bfin.md (UNSPEC_VOLATILE_EH_RETURN): Remove.
12912         (eh_return_internal): Use eh_return rtx; split w/ epilogue.
12913
12914         * config/i386/i386.c (gen_push): Update cfa state.
12915         (pro_epilogue_adjust_stack): Add set_cfa argument.  When true,
12916         add a CFA_ADJUST_CFA note.
12917         (ix86_dwarf_handle_frame_unspec): Remove.
12918         (ix86_expand_prologue): Update cfa state.
12919         (ix86_emit_restore_reg_using_pop): New.
12920         (ix86_emit_restore_regs_using_pop): New.
12921         (ix86_emit_leave): New.
12922         (ix86_emit_restore_regs_using_mov): Add CFA_RESTORE notes.
12923         (ix86_expand_epilogue): Add notes for unwinding the epilogue.
12924         * config/i386/i386.h (struct machine_cfa_state): New.
12925         (ix86_cfa_state): New.
12926         * config/i386/i386.md (UNSPEC_EH_RETURN): Remove.
12927         (eh_return_internal): Merge from eh_return_<mode>,
12928         use eh_return rtx, split w/ epilogue.
12929
12930 2009-05-29  Ian Lance Taylor  <iant@google.com>
12931
12932         * builtins.c (validate_gimple_arglist): Don't use va_arg with
12933         enum type.
12934         * calls.c (emit_library_call_value_1): Likewise.
12935
12936         * c-typeck.c (c_build_va_arg): New function.
12937         * c-tree.h (c_build_va_arg): Declare.
12938         * c-parser.c (c_parser_postfix_expression): Call c_build_va_arg
12939         instead of build_va_arg.
12940
12941 2009-05-29  Eric Botcazou  <ebotcazou@adacore.com>
12942
12943         * tree-ssa-loop-ivopts.c (strip_offset_1) <MULT_EXPR>: New case.
12944         (force_expr_to_var_cost) <NEGATE_EXPR>: Likewise.
12945         (ptr_difference_cost): Use affine combinations to compute it.
12946         (difference_cost): Likewise.
12947         (get_computation_cost_at): Compute more accurate cost for addresses
12948         if the ratio is a multiplier allowed in addresses.
12949         For non-addresses, consider that an additional offset or symbol is
12950         added only once.
12951
12952 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
12953
12954         * config/i386/i386.c (ix86_decompose_address): Avoid useless
12955         0 displacement.  Add 0 displacement if base is %[er]bp or %r13.
12956
12957         * config/i386/i386.md (prefix_data16, prefix_rep): Set to 0 for
12958         TYPE_SSE{MULADD,4ARG,IADD1,CVT1} by default.
12959         (prefix_rex): For UNIT_MMX don't imply the prefix by default
12960         if MODE_DI.
12961         (prefix_extra): Default to 2 for TYPE_SSE{MULADD,4ARG} and
12962         to 1 for TYPE_SSE{IADD1,CVT1}.
12963         (prefix_vex_imm8): Removed.
12964         (length_vex): Only pass 1 as second argument to
12965         ix86_attr_length_vex_default if prefix_extra is 0.
12966         (modrm): For TYPE_INCDEC only set to 0 if not TARGET_64BIT.
12967         (length): For prefix vex computation use length_immediate
12968         attribute instead of prefix_vex_imm8.
12969         (cmpqi_ext_3_insn, cmpqi_ext_3_insn_rex64,
12970         addqi_ext_1, addqi_ext_1_rex64, *testqi_ext_0, andqi_ext_0,
12971         *andqi_ext_0_cc, *iorqi_ext_0, *xorqi_ext_0, *xorqi_cc_ext_1,
12972         *xorqi_cc_ext_1_rex64): Override modrm attribute to 1.
12973         (extendsidi2_rex64, extendhidi2, extendqidi2, extendhisi2,
12974         *extendhisi2_zext, extendqihi2, extendqisi2, *extendqisi2_zext): Emit
12975         a space in between the operands.
12976         (*anddi_1_rex64, *andsi_1): Likewise.  Override prefix_rex to 1
12977         if one operand is 0xff and the other one si, di, bp or sp.
12978         (*andhi_1): Override prefix_rex to 1 if one operand is 0xff and the
12979         other one si, di, bp or sp.
12980         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Add mode attribute.
12981         (*ffssi_1, *ffsdi_1, ctzsi2, ctzdi2): Add
12982         type and mode attributes.
12983         (*bsr, *bsr_rex64, *bsrhi): Add type attribute.
12984         (*cmpfp_i_mixed, *cmpfp_iu_mixed): For TYPE_SSECOMI, clear
12985         prefix_rep attribute and set prefix_data16 attribute iff MODE_DF.
12986         (*cmpfp_i_sse, *cmpfp_iu_sse): Clear prefix_rep attribute and set
12987         prefix_data16 attribute iff MODE_DF.
12988         (*movsi_1): For TYPE_SSEMOV MODE_SI set prefix_data16 attribute.
12989         (fix_trunc<mode>di_sse): Set prefix_rex attribute.
12990         (*adddi_4_rex64, *addsi_4): Use const128_operand instead of
12991         constm128_operand in length_immediate computation.
12992         (*addhi_4): Likewise.  Fix mode attribute to MODE_HI.
12993         (anddi_1_rex64): Use movzbl/movzwl instead of movzbq/movzwq.
12994         (*avx_ashlti3, sse2_ashlti3, *avx_lshrti3, sse2_lshrti3): Set
12995         length_immediate attribute to 1.
12996         (x86_fnstsw_1, x86_fnstcw_1, x86_fldcw_1): Fix length attribute.
12997         (*movdi_1_rex64): Override prefix_rex or prefix_data16 attributes
12998         for certain alternatives.
12999         (*movdf_nointeger, *movdf_integer_rex64, *movdf_integer): Override
13000         prefix_data16 attribute if MODE_V1DF.
13001         (*avx_setcc<mode>, *sse_setcc<mode>, *sse5_setcc<mode>): Set
13002         length_immediate to 1.
13003         (set_got_rex64, set_rip_rex64): Remove length attribute, set
13004         length_address to 4, set mode attribute to MODE_DI.
13005         (set_got_offset_rex64): Likewise.  Set length_immediate to 0.
13006         (fxam<mode>2_i387): Set length attribute to 4.
13007         (*prefetch_sse, *prefetch_sse_rex, *prefetch_3dnow,
13008         *prefetch_3dnow_rex): Override length_address attribute.
13009         (sse4_2_crc32<mode>): Override prefix_data16 and prefix_rex
13010         attributes.
13011         * config/i386/predicates.md (ext_QIreg_nomode_operand): New predicate.
13012         (constm128_operand): Removed.
13013         * config/i386/i386.c (memory_address_length): For
13014         disp && !index && !base in 64-bit mode account for SIB byte if
13015         print_operand_address can't optimize disp32 into disp32(%rip)
13016         and UNSPEC doesn't imply (%rip) addressing.  Add 1 to length
13017         for fs: or gs: segment.
13018         (ix86_attr_length_immediate_default): When checking if shortform
13019         is possible, truncate immediate to the length of the non-shortened
13020         immediate.
13021         (ix86_attr_length_address_default): Ignore MEM_P operands
13022         with X constraint.
13023         (ix86_attr_length_vex_default): Only check for DImode on
13024         GENERAL_REG_P operands.
13025         * config/i386/sse.md (<sse>_comi, <sse>_ucomi): Clear
13026         prefix_rep attribute, set prefix_data16 attribute iff MODE_DF.
13027         (sse_cvttps2pi): Clear prefix_rep attribute.
13028         (sse2_cvttps2dq, *sse2_cvtpd2dq, sse2_cvtps2pd): Clear prefix_data16
13029         attribute.
13030         (*sse2_cvttpd2dq): Don't clear prefix_rep attribute.
13031         (*avx_ashr<mode>3, ashr<mode>3, *avx_lshr<mode>3, lshr<mode>3,
13032         *avx_ashl<mode>3, ashl<mode>3): Set length_immediate attribute to 1
13033         iff operand 2 is const_int_operand.
13034         (*vec_dupv4si, avx_shufpd256_1, *avx_shufpd_<mode>,
13035         sse2_shufpd_<mode>): Set length_immediate attribute to 1.
13036         (sse2_pshufd_1): Likewise.  Set prefix attribute to maybe_vex
13037         instead of vex.
13038         (sse2_pshuflw_1, sse2_pshufhw_1): Set length_immediate to 1 and clear
13039         prefix_data16.
13040         (sse2_unpckhpd, sse2_unpcklpd, sse2_storehpd, *vec_concatv2df): Set
13041         prefix_data16 attribute for movlpd and movhpd instructions.
13042         (sse2_loadhpd, sse2_loadlpd, sse2_movsd): Likewise.  Override
13043         length_immediate for shufpd instruction.
13044         (sse2_movntsi, sse3_lddqu): Clear prefix_data16 attribute.
13045         (avx_cmpp<avxmodesuffixf2c><mode>3,
13046         avx_cmps<ssemodesuffixf2c><mode>3, *avx_maskcmp<mode>3,
13047         <sse>_maskcmp<mode>3, <sse>_vmmaskcmp<mode>3,
13048         avx_shufps256_1, *avx_shufps_<mode>, sse_shufps_<mode>,
13049         *vec_dupv4sf_avx, *vec_dupv4sf): Set length_immediate attribute to 1.
13050         (*avx_cvtsi2ssq, *avx_cvtsi2sdq): Set length_vex attribute to 4.
13051         (sse_cvtsi2ssq, sse2_cvtsi2sdq): Set prefix_rex attribute to 1.
13052         (sse2_cvtpi2pd, sse_loadlps, sse2_storelpd): Override
13053         prefix_data16 attribute for the first alternative to 1.
13054         (*avx_loadlps): Override length_immediate for the first alternative.
13055         (*vec_concatv2sf_avx): Override length_immediate and prefix_extra
13056         attributes for second alternative.
13057         (*vec_concatv2sf_sse4_1): Override length_immediate and
13058         prefix_data16 attributes for second alternative.
13059         (*vec_setv4sf_avx, *avx_insertps, vec_extract_lo_<mode>,
13060         vec_extract_hi_<mode>, vec_extract_lo_v16hi,
13061         vec_extract_hi_v16hi, vec_extract_lo_v32qi,
13062         vec_extract_hi_v32qi): Set prefix_extra and length_immediate to 1.
13063         (*vec_setv4sf_sse4_1, sse4_1_insertps, *sse4_1_extractps): Set
13064         prefix_data16 and length_immediate to 1.
13065         (*avx_mulv2siv2di3, *avx_mulv4si3, sse4_2_gtv2di3): Set prefix_extra
13066         to 1.
13067         (*avx_<code><mode>3, *avx_eq<mode>3, *avx_gt<mode>3): Set
13068         prefix_extra attribute for variants that don't have 0f prefix alone.
13069         (*avx_pinsr<ssevecsize>): Likewise.  Set length_immediate to 1.
13070         (*sse4_1_pinsrb, *sse2_pinsrw, *sse4_1_pinsrd, *sse4_1_pextrb,
13071         *sse4_1_pextrb_memory, *sse2_pextrw, *sse4_1_pextrw_memory,
13072         *sse4_1_pextrd): Set length_immediate to 1.
13073         (*sse4_1_pinsrd): Likewise.  Set prefix_extra to 1.
13074         (*sse4_1_pinsrq, *sse4_1_pextrq): Set prefix_rex and length_immediate
13075         to 1.
13076         (*vec_extractv2di_1_rex64_avx, *vec_extractv2di_1_rex64,
13077         *vec_extractv2di_1_avx, *vec_extractv2di_1_sse2): Override
13078         length_immediate to 1 for second alternative.
13079         (*vec_concatv2si_avx, *vec_concatv2di_rex64_avx): Override
13080         prefix_extra and length_immediate attributes for the first
13081         alternative.
13082         (vec_concatv2si_sse4_1): Override length_immediate to 1 for the
13083         first alternative.
13084         (*vec_concatv2di_rex64_sse4_1): Likewise.  Override prefix_rex
13085         to 1 for the first and third alternative.
13086         (*vec_concatv2di_rex64_sse): Override prefix_rex to 1 for the second
13087         alternative.
13088         (*sse2_maskmovdqu, *sse2_maskmovdqu_rex64): Override length_vex
13089         attribute.
13090         (*sse_sfence, sse2_mfence, sse2_lfence): Override length_address
13091         attribute to 0.
13092         (*avx_phaddwv8hi3, *avx_phadddv4si3, *avx_phaddswv8hi3,
13093         *avx_phsubwv8hi3, *avx_phsubdv4si3, *avx_phsubswv8hi,
13094         *avx_pmaddubsw128, *avx_pmulhrswv8hi3, *avx_pshufbv16qi3,
13095         *avx_psign<mode>3): Set prefix_extra attribute to 1.
13096         (ssse3_phaddwv4hi3, ssse3_phadddv2si3, ssse3_phaddswv4hi3,
13097         ssse3_phsubwv4hi3, ssse3_phsubdv2si3, ssse3_phsubswv4hi3,
13098         ssse3_pmaddubsw, *ssse3_pmulhrswv4hi, ssse3_pshufbv8qi3,
13099         ssse3_psign<mode>3): Override prefix_rex attribute.
13100         (*avx_palignrti): Override prefix_extra and length_immediate to 1.
13101         (ssse3_palignrti): Override length_immediate to 1.
13102         (ssse3_palignrdi): Override length_immediate to 1, override
13103         prefix_rex attribute.
13104         (abs<mode>2): Override prefix_rep to 0, override prefix_rex attribute.
13105         (sse4a_extrqi): Override length_immediate to 2.
13106         (sse4a_insertqi): Likewise.  Override prefix_data16 to 0.
13107         (sse4a_insertq): Override prefix_data16 to 0.
13108         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>,
13109         avx_blendvp<avxmodesuffixf2c><avxmodesuffix>,
13110         avx_dpp<avxmodesuffixf2c><avxmodesuffix>, *avx_mpsadbw,
13111         *avx_pblendvb, *avx_pblendw, avx_roundp<avxmodesuffixf2c>256,
13112         avx_rounds<avxmodesuffixf2c>256): Override prefix_extra
13113         and length_immediate to 1.
13114         (sse4_1_blendp<ssemodesuffixf2c>, sse4_1_dpp<ssemodesuffixf2c>,
13115         sse4_2_pcmpestr, sse4_2_pcmpestri, sse4_2_pcmpestrm,
13116         sse4_2_pcmpestr_cconly, sse4_2_pcmpistr, sse4_2_pcmpistri,
13117         sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): Override prefix_data16
13118         and length_immediate to 1.
13119         (sse4_1_blendvp<ssemodesuffixf2c>): Override prefix_data16 to 1.
13120         (sse4_1_mpsadbw, sse4_1_pblendw): Override length_immediate to 1.
13121         (*avx_packusdw, avx_vtestp<avxmodesuffixf2c><avxmodesuffix>,
13122         avx_ptest256): Override prefix_extra to 1.
13123         (sse4_1_roundp<ssemodesuffixf2c>, sse4_1_rounds<ssemodesuffixf2c>):
13124         Override prefix_data16 and length_immediate to 1.
13125         (sse5_pperm_zero_v16qi_v8hi, sse5_pperm_sign_v16qi_v8hi,
13126         sse5_pperm_zero_v8hi_v4si, sse5_pperm_sign_v8hi_v4si,
13127         sse5_pperm_zero_v4si_v2di, sse5_pperm_sign_v4si_v2di,
13128         sse5_vrotl<mode>3, sse5_ashl<mode>3, sse5_lshl<mode>3): Override
13129         prefix_data16 to 0 and prefix_extra to 2.
13130         (sse5_rotl<mode>3, sse5_rotr<mode>3): Override length_immediate to 1.
13131         (sse5_frcz<mode>2, sse5_vmfrcz<mode>2): Don't override prefix_extra
13132         attribute.
13133         (*sse5_vmmaskcmp<mode>3, sse5_com_tf<mode>3,
13134         sse5_maskcmp<mode>3, sse5_maskcmp<mode>3, sse5_maskcmp_uns<mode>3):
13135         Override prefix_data16 and prefix_rep to 0, length_immediate to 1
13136         and prefix_extra to 2.
13137         (sse5_maskcmp_uns2<mode>3, sse5_pcom_tf<mode>3): Override
13138         prefix_data16 to 0, length_immediate to 1 and prefix_extra to 2.
13139         (*avx_aesenc, *avx_aesenclast, *avx_aesdec, *avx_aesdeclast,
13140         avx_vpermilvar<mode>3,
13141         avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>,
13142         avx_vbroadcastss256, avx_vbroadcastf128_p<avxmodesuffixf2c>256,
13143         avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>,
13144         avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>):
13145         Override prefix_extra to 1.
13146         (aeskeygenassist, pclmulqdq): Override length_immediate to 1.
13147         (*vpclmulqdq, avx_vpermil<mode>, avx_vperm2f128<mode>3,
13148         vec_set_lo_<mode>, vec_set_hi_<mode>, vec_set_lo_v16hi,
13149         vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Override
13150         prefix_extra and length_immediate to 1.
13151         (*avx_vzeroall, avx_vzeroupper, avx_vzeroupper_rex64): Override
13152         modrm to 0.
13153         (*vec_concat<mode>_avx): Override prefix_extra and length_immediate
13154         to 1 for the first alternative.
13155         * config/i386/mmx.md (*mov<mode>_internal_rex64): Override
13156         prefix_rep, prefix_data16 and/or prefix_rex attributes in certain
13157         cases.
13158         (*mov<mode>_internal_avx, *movv2sf_internal_rex64,
13159         *movv2sf_internal_avx, *movv2sf_internal): Override
13160         prefix_rep attribute for certain alternatives.
13161         (*mov<mode>_internal): Override prefix_rep or prefix_data16
13162         attributes for certain alternatives.
13163         (*movv2sf_internal_rex64_avx): Override prefix_rep and length_vex
13164         attributes for certain alternatives.
13165         (*mmx_addv2sf3, *mmx_subv2sf3, *mmx_mulv2sf3,
13166         *mmx_<code>v2sf3_finite, *mmx_<code>v2sf3, mmx_rcpv2sf2,
13167         mmx_rcpit1v2sf3, mmx_rcpit2v2sf3, mmx_rsqrtv2sf2, mmx_rsqit1v2sf3,
13168         mmx_haddv2sf3, mmx_hsubv2sf3, mmx_addsubv2sf3,
13169         *mmx_eqv2sf3, mmx_gtv2sf3, mmx_gev2sf3, mmx_pf2id, mmx_pf2iw,
13170         mmx_pi2fw, mmx_floatv2si2, mmx_pswapdv2sf2, *mmx_pmulhrwv4hi3,
13171         mmx_pswapdv2si2): Set prefix_extra attribute to 1.
13172         (mmx_ashr<mode>3, mmx_lshr<mode>3, mmx_ashl<mode>3): Set
13173         length_immediate to 1 if operand 2 is const_int_operand.
13174         (*mmx_pinsrw, mmx_pextrw, mmx_pshufw_1, *vec_dupv4hi,
13175         *vec_extractv2si_1): Set length_immediate attribute to 1.
13176         (*mmx_uavgv8qi3): Override prefix_extra attribute to 1 if
13177         using old 3DNOW insn rather than SSE/3DNOW_A.
13178         (mmx_emms, mmx_femms): Clear modrm attribute.
13179
13180 2009-05-29  Martin Jambor  <mjambor@suse.cz>
13181
13182         * tree-sra.c:  New implementation of SRA.
13183
13184         * params.def (PARAM_SRA_MAX_STRUCTURE_SIZE): Removed.
13185         (PARAM_SRA_MAX_STRUCTURE_COUNT): Removed.
13186         (PARAM_SRA_FIELD_STRUCTURE_RATIO): Removed.
13187         * params.h (SRA_MAX_STRUCTURE_SIZE): Removed.
13188         (SRA_MAX_STRUCTURE_COUNT): Removed.
13189         (SRA_FIELD_STRUCTURE_RATIO): Removed.
13190         * doc/invoke.texi (sra-max-structure-size): Removed.
13191         (sra-field-structure-ratio): Removed.
13192
13193 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
13194
13195         PR middle-end/40291
13196         * builtins.c (expand_builtin_memcmp): Convert len to sizetype
13197         before expansion.
13198
13199 2009-05-29  Andrey Belevantsev  <abel@ispras.ru>
13200
13201         PR rtl-optimization/40101
13202         * sel-sched-ir.c (get_seqno_by_preds): Allow returning negative
13203         seqno.  Adjust comment.
13204         * sel-sched.c (find_seqno_for_bookkeeping): Assert that when
13205         inserting bookkeeping before a jump, the jump is not scheduled.
13206         When no positive seqno found, provide a value.  Add comment.
13207
13208 2009-05-29  Richard Guenther  <rguenther@suse.de>
13209
13210         * tree-ssa-alias.c (nonaliasing_component_refs_p): Remove
13211         short-cutting on the first component.
13212
13213 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
13214
13215         PR middle-end/39958
13216         * omp-low.c (scan_omp_1_op): Call remap_type on TREE_TYPE
13217         for trees other than decls/types.
13218
13219 2009-05-29  Richard Guenther  <rguenther@suse.de>
13220
13221         * tree-ssa-operands.c (get_expr_operands): Do not handle
13222         INDIRECT_REFs in the handled-component case.  Remove
13223         unused get_ref_base_and_extent case.
13224         * tree-dfa.c (get_ref_base_and_extent): Avoid calling
13225         tree_low_cst and host_integerp where possible.
13226         * tree-ssa-structalias.c (equiv_class_label_eq): Check hash
13227         codes for equivalence.
13228         * dce.c (find_call_stack_args): Avoid redundant bitmap queries.
13229
13230 2009-05-29  David Billinghurst <billingd@gcc.gnu.org>
13231
13232         * config.gcc: Add i386/t-fprules-softfp and soft-fp/t-softfp
13233         to tmake_file for i[34567]86-*-cygwin*.
13234
13235 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
13236
13237         PR target/40017
13238         * config/rs6000/rs6000-c.c (_Bool_keyword): New variable.
13239         (altivec_categorize_keyword, init_vector_keywords,
13240         rs6000_cpu_cpp_builtins): Define _Bool as conditional macro
13241         similar to bool.
13242
13243 2009-05-29  Kai Tietz  <kai.tietz@onevision.com>
13244
13245         * tree.c (handle_dll_attribute): Check if node is
13246         of kind FUNCTION_DECL for DECL_DECLARED_INLINE_P check.
13247
13248 2009-05-29  Richard Earnshaw  <rearnsha@arm.com>
13249
13250         * config/arm/thumb2.md (thumb2_zero_extendsidi2): Add a split
13251         component.
13252         (thumb2_zero_extendqidi2): Likewise.
13253
13254 2009-05-28  Kaz Kojima  <kkojima@gcc.gnu.org>
13255
13256         * config/sh/sh.c (sh_expand_t_scc): Use gen_xorsi3_movrt
13257         instead of gen_movrt.
13258         * config/sh/sh.md (movrt): Remove.
13259
13260 2009-05-28  Steve Ellcey  <sje@cup.hp.com>
13261
13262         * doc/invoke.texi (IA-64 Options):
13263         Add -msdata, -mfused-madd, -mno-inline-float-divide,
13264         -mno-inline-int-divide, -mno-inline-sqrt, -msched-spec-ldc,
13265         -msched-spec-control-ldc, -msched-prefer-non-data-spec-insns,
13266         -msched-prefer-non-control-spec-insns,
13267         -msched-stop-bits-after-every-cycle,
13268         -msched-count-spec-in-critical-path,
13269         -msel-sched-dont-check-control-spec, -msched-fp-mem-deps-zero-cost
13270         -msched-max-memory-insns-hard-limit, -msched-max-memory-insns.
13271         Remove -mt, -pthread, -msched-ldc, -mno-sched-control-ldc,
13272         and -msched-spec-verbose.
13273
13274 2009-05-28  Joseph Myers  <joseph@codesourcery.com>
13275
13276         * config/arm/lib1funcs.asm (__clear_cache): Define if L_clear_cache.
13277         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define to give an
13278         error if used.
13279         * config/arm/t-linux-eabi (LIB1ASMFUNCS): Add _clear_cache.
13280
13281 2009-05-28  Richard Guenther  <rguenther@suse.de>
13282
13283         * tree-ssa-alias.c (ao_ref_init): New function.
13284         (ao_ref_base): Likewise.
13285         (ao_ref_base_alias_set): Likewise.
13286         (ao_ref_alias_set): Likewise.
13287         (refs_may_alias_p_1): Change signature.
13288         (refs_may_alias_p): Adjust.
13289         (refs_anti_dependent_p): Likewise.
13290         (refs_output_dependent_p): Likewise.
13291         (call_may_clobber_ref_p_1): Change signature.
13292         (call_may_clobber_ref_p): Adjust.
13293         (stmt_may_clobber_ref_p_1): New function split out from ...
13294         (stmt_may_clobber_ref_p): ... here.
13295         (maybe_skip_until): Adjust signature.
13296         (get_continuation_for_phi): Likewise.
13297         (walk_non_aliased_vuses): Likewise.
13298         * tree-ssa-alias.h (struct ao_ref_s): New structure type.
13299         (ao_ref_init): Declare.
13300         (ao_ref_base): Likewise.
13301         (ao_ref_alias_set): Likewise.
13302         (stmt_may_clobber_ref_p_1): Likewise.
13303         (walk_non_aliased_vuses): Adjust.
13304         * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): New function.
13305         (get_ref_from_reference_ops): remove.
13306         (vn_reference_lookup_2): Adjust signature.
13307         (vn_reference_lookup_3): Do not re-build trees.  Handle unions.
13308         (vn_reference_lookup_pieces): Adjust signature, do not re-build trees.
13309         (vn_reference_lookup): Adjust.
13310         (vn_reference_insert): Likewise.
13311         (vn_reference_insert_pieces): Adjust signature.
13312         (visit_reference_op_call): Adjust.
13313         * tree-ssa-pre.c (get_expr_type): Simplify.
13314         (phi_translate_1): Adjust.
13315         (compute_avail): Likewise.
13316         (translate_vuse_through_block): Do not re-build trees.
13317         (value_dies_in_block_x): Likewise.
13318         * tree-ssa-sccvn.h (struct vn_reference_s): Add type and alias-set
13319         fields.
13320         (vn_reference_lookup_pieces): Adjust declaration.
13321         (vn_reference_insert_pieces): Likewise.
13322
13323 2009-05-28  Benjamin Kosnik  <bkoz@redhat.com>
13324
13325         * tree-ssa-copy.c (replace_exp_1): Move op for warning-free use
13326         with checking disabled.
13327
13328 2009-05-28  Dave Korn  <dave.korn.cygwin@gmail.com>
13329
13330         PR target/37216
13331
13332         * configure.ac (HAVE_GAS_ALIGNED_COMM):  Add autoconf test and
13333         macro definition for support of three-operand format aligned
13334         .comm directive in assembler on cygwin/pe/mingw target OS.
13335         * configure:  Regenerate.
13336         * config.h:  Regenerate.
13337
13338         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common):  Use
13339         aligned form of .comm directive if -mpe-aligned-commons is in effect.
13340         * config/i386/cygming.opt (-mpe-aligned-commons):  Add new option.
13341
13342         * doc/invoke.texi (-mpe-aligned-commons):  Document new target option.
13343         * doc/tm.texi (ASM_OUTPUT_COMMON):  Document zero size commons.
13344
13345 2009-05-28  Ira Rosen  <irar@il.ibm.com>
13346
13347         PR tree-optimization/40254
13348         * tree-data-ref.c (dr_analyze_innermost): Take POFFSET into account
13349         in analysis of basic blocks.
13350
13351 2009-05-28  Adam Nemet  <anemet@caviumnetworks.com>
13352
13353         PR middle-end/33699
13354         * target.h (struct gcc_target): Fix indentation.  Add const_anchor.
13355         * target-def.h (TARGET_CONST_ANCHOR): New macro.
13356         (TARGET_INITIALIZER): Use it.
13357         * cse.c (CHEAPER): Move it up to the other macros.
13358         (insert): Rename this ...
13359         (insert_with_costs): ... to this.  Add cost parameters.  Update
13360         function comment.
13361         (insert): New function.  Call insert_with_costs.
13362         (compute_const_anchors, insert_const_anchor, insert_const_anchors,
13363         find_reg_offset_for_const, try_const_anchors): New functions.
13364         (cse_insn): Call try_const_anchors.  Adjust cost of src_related
13365         when using a const-anchor.  Call insert_const_anchors.
13366         * config/mips/mips.c (mips_set_mips16_mode): Set targetm.const_anchor.
13367         * doc/tm.texi (Misc): Document TARGET_CONST_ANCHOR.
13368
13369 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
13370
13371         * tree-inline.c (remap_decls): Enable nonlocalized variables
13372         when not optimizing.
13373
13374 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
13375
13376         * tree-ssa-live.c (remove_unused_locals): Skip when not optimizing.
13377         Simplify other tests involving optimize.
13378
13379 2009-05-27  Tom Tromey  <tromey@redhat.com>
13380
13381         * unwind-dw2.c (_Unwind_DebugHook): New function.
13382         (uw_install_context): Call _Unwind_DebugHook.
13383
13384 2009-05-27  Tom Tromey  <tromey@redhat.com>
13385
13386         * system.h (CONST_CAST2): Use C++ const_cast when compiled as C++
13387
13388 2009-05-27  Ian Lance Taylor  <iant@google.com>
13389
13390         * Makefile.in (LINKER, LINKER_FLAGS): Define.
13391         (LINKER_FOR_BUILD, BUILD_LINKERFLAGS): Define.
13392         (ALL_LINKERFLAGS): Define.
13393         (xgcc$(exeext)): Change $(COMPILER) to $(LINKER).
13394         (cpp$(exeext), cc1-dummy$(exeext), cc1$(exeext)): Likewise.
13395         (collect2$(exeext), mips-tfile, mips-tdump): Likewise.
13396         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
13397         (build/gen%$(build_exeext)): Change $(COMPILER_FOR_BUILD) to
13398         $(LINKER_FOR_BUILD).
13399         (build/gcov-iov$(build_exeext)): Likewise.
13400
13401 2009-05-27  Julian Brown  <julian@codesourcery.com>
13402
13403         * gcse.c (target.h): Include.
13404         (can_assign_to_reg_without_clobbers_p): Check that the target allows
13405         copy of argument to a pseudo register.
13406
13407 2009-05-27  Diego Novillo  <dnovillo@google.com>
13408
13409         * tree-ssa-live.c (dump_scope_block): Document arguments.
13410         (dump_scope_blocks): Document.
13411         (debug_scope_blocks): New.
13412         * tree-flow.h (debug_scope_blocks): Declare.
13413
13414 2009-05-21  Denis Chertykov  <denisc@overta.ru>
13415
13416         * doc/contrib.texi (Contributors): Add myself to the list.
13417
13418 2009-05-27  Olivier Hainque  <hainque@adacore.com>
13419
13420         * expr.c (target_align): New function.  Alignment the TARGET of an
13421         assignment may be assume to have.
13422         (highest_pow2_factor_for_target): Use it instead of relying on
13423         immediate tree attributes of TARGET, not necessarily honored when
13424         intermediate bitfields are involved.
13425
13426 2009-05-27  H.J. Lu  <hongjiu.lu@intel.com>
13427
13428         PR target/40266
13429         * config/i386/driver-i386.c (host_detect_local_cpu): Support
13430         AVX, SSE4, AES, PCLMUL and POPCNT.
13431
13432 2009-05-27  Diego Novillo  <dnovillo@google.com>
13433
13434         * tree-pretty-print.c (dump_location): New.
13435         (dump_generic_node): Call it.
13436         Factor code to handle BLOCK nodes ...
13437         (dump_block_node): ... here.
13438
13439 2009-05-27  Rafael Avila de Espindola  <espindola@google.com>
13440
13441         * Makefile.in (GCC_PLUGIN_H): New. Replace all uses of gcc-plugin.h
13442         with it.
13443         * doc/plugins.texi: Document that gcc-plugin.h must be the first to be
13444         included.
13445         * gcc-plugin.h: Include config.h and system.h.
13446         (IN_GCC): Define if not defined.
13447
13448 2009-05-27  Hans-Peter Nilsson  <hp@axis.com>
13449
13450         PR middle-end/40249
13451         * Makefile.in (CRTSTUFF_CFLAGS): Replace -fno-inline-functions
13452         with -fno-inline.
13453
13454 2009-05-27  Shujing Zhao  <pearly.zhao@oracle.com>
13455
13456         * config/m32r/m32r.c: Use REG_P, MEM_P and CONST_INT_P where
13457         applicable.
13458         * config/m32r/m32r.h: Ditto.
13459         * config/m32r/m32r.md: Ditto.
13460         * config/m32r/predicates.md: Ditto.
13461
13462 2009-05-27  Alexandre Oliva  <aoliva@redhat.com>
13463
13464         * cgraph.c (dump_cgraph_node): Honor -fdump-noaddr.
13465
13466 2009-05-26  Basile Starynkevitch  <basile@starynkevitch.net>
13467
13468         * doc/plugins.texi
13469         (Loading plugins): typo.
13470         (Plugin callbacks): Documented PLUGIN_INFO, PLUGIN_GGC_START,
13471         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
13472         (Interacting with the GCC Garbage Collector): Added new section.
13473         (Giving information about a plugin): Added new section for
13474         PLUGIN_INFO.
13475         * ggc.h (ggc_register_root_tab): Added declaration.
13476         * gcc-plugin.h (PLUGIN_GGC_START, PLUGIN_GGC_MARKING)
13477         (PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS): Added new events.
13478         (register_callback): Improved comment in declaration.
13479         * ggc-common.c (const_ggc_root_tab_t) Added new typedef for vectors.
13480         (extra_root_vec) Added static variable for dynamic roots registration.
13481         (ggc_register_root_tab) Added new routine.
13482         (ggc_mark_roots) Added iteration inside extra_root_vec, and invoke
13483         PLUGIN_GGC_MARKING event.
13484         * ggc-zone.c: Include plugin.h.
13485         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
13486         * ggc-page.c: Include plugin.h.
13487         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
13488         * plugin.c (plugin_event_name): added names of PLUGIN_GGC_START,
13489         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS
13490         (register_callback): check lack of callbacks for
13491         pseudo-events. Added handling of PLUGIN_REGISTER_GGC_ROOTS,
13492         PLUGIN_GGC_START, PLUGIN_GGC_MARKING, PLUGIN_GGC_END.
13493         (invoke_plugin_callbacks): Handle PLUGIN_GGC_START,
13494         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
13495         * Makefile.in (ggc-common.o, ggc-zone.o, ggc-page.o): Added
13496         dependency on plugin.h.
13497         (plugin.o): Added dependency on ggc.h...
13498
13499 2009-05-26  Richard Guenther  <rguenther@suse.de>
13500
13501         PR middle-end/40248
13502         Revert
13503         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
13504         with mismatched comparison modes.
13505
13506         * expr.c (expand_expr_real_1): Expand the operand of a
13507         VIEW_CONVERT_EXPR in its natural mode.
13508
13509 2009-05-26  Ian Lance Taylor  <iant@google.com>
13510
13511         * Makefile.in (COMPILER, COMPILER_FLAGS): Define.
13512         (COMPILER_FOR_BUILD, BUILD_COMPILERFLAGS): Define.
13513         (ALL_COMPILERFLAGS): Define.
13514         (.c.o, xgcc$(exeext), cpp$(exeext)): Use $(COMPILER).
13515         (cc1-dummy$(exeext), cc1$(exeext)): Likewise.
13516         (collect2$(exeext), collect2.o): Likewise.
13517         (c-opts.o, c-cppbuiltin.o, c-pch.o, gcc.o, gccspec.o): Likewise.
13518         (gcc-options.o, version.o, prefix.o, toplev.o): Likewise.
13519         ($(out_object_file), mips-tfile, mips-tdump): Likewise.
13520         (libbackend.o, intl.o, cppdefault.o): Likewise.
13521         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
13522         (build/%.o): Use $(COMPILER_FOR_BUILD).
13523         (build/gen%$(build_exeext)): Likewise.
13524         (build/gcov-iov$(build_exeext)): LIkewise.
13525         * config/t-darwin (darwin.o): Use $(COMPILER).
13526         (darwin-c.o, darwin-f.o, darwin-driver.o): Likewise.
13527         * config/t-sol2 (sol2-c.o): Likewise.
13528         (sol2.o): Likewise.
13529         * config/t-vxworks (vxworks.o): Likewise.
13530         * config/x-darwin (host-darwin.o): Likewise.
13531         * config/x-hpux (host-hpux.o): Likewise.
13532         * config/x-linux (host-linux.o): Likewise.
13533         * config/x-solaris (host-solaris.o): Likewise.
13534         * config/alpha/x-alpha (driver-alpha.o): Likewise.
13535         * config/arm/t-arm (arm-c.o): Likewise.
13536         * config/arm/t-pe (pe.o): Likewise.
13537         * config/arm/t-wince-pe (pe.o): Likewise.
13538         * config/i386/t-cygming (winnt.o): Likewise.
13539         (winnt-cxx.o, winnt-stubs.o, msformat-c.o): Likewise.
13540         * config/i386/t-cygwin (cygwin1.o): Likewise.
13541         (cygwin2.o): Likewise.
13542         * config/i386/t-i386 (i386-c.o): Likewise.
13543         * config/i386/t-interix (winnt.o): Likewise.
13544         * config/i386/t-netware (netware.o): Likewise.
13545         * config/i386/t-nwld (nwld.o): Likewise.
13546         * config/i386/x-darwin (host-i386-darwin.o): Likewise.
13547         * config/i386/x-i386 (driver-i386.o): Likewise.
13548         * config/i386/x-cygwin (host-cygwin.o): Likewise.
13549         * config/i386/x-mingw32 (host-mingw32.o): Likewise.
13550         * config/ia64/t-ia64 (ia64-c.o): Likewise.
13551         * config/m32c/t-m32c (m32c-pragma.o): Likewise.
13552         * config/mips/x-native (driver-native.o): Likewise.
13553         * config/rs6000/t-rs6000 (rs6000-c.o): Likewise.
13554         * config/rs6000/x-darwin (host-ppc-darwin.o): Likewise.
13555         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Likewise.
13556         * config/rs6000/x-rs6000 (driver-rs6000.o): Likewise.
13557         * config/score/t-score-elf (score7.o): Likewise.
13558         (score3.o): Likewise.
13559         * config/sh/t-sh (sh-c.o): Likewise.
13560         * config/sh/t-symbian (sh-c.o): Likewise.
13561         (symbian.o): Likewise.
13562         * config/spu/t-spu-elf (spu-c.o): Likewise.
13563         * config/v850/t-v850 (v850-c.o): Likewise.
13564         * config/v850/t-v850e (v850-c.o): Likewise.
13565
13566 2009-05-26  Richard Guenther  <rguenther@suse.de>
13567
13568         PR tree-optimization/40122
13569         * tree-ssa-ccp.c (ccp_fold): Fold vector CONSTRUCTORs to
13570         VECTOR_CSTs if possible.
13571         (fold_gimple_assign): Likewise.
13572
13573 2009-05-26  Richard Guenther  <rguenther@suse.de>
13574
13575         PR middle-end/40252
13576         * fold-const.c (fold_binary): Use the correct types for building
13577         rotates.
13578
13579 2009-05-26  Richard Guenther  <rguenther@suse.de>
13580
13581         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove
13582         redundant calls to merge_alias_info.
13583         (bump_vector_ptr): Likewise.
13584         * tree-ssa-copy.c (merge_alias_info): Remove.
13585         (replace_exp_1): Remove call to merge_alias_info.
13586         (propagate_tree_value): Likewise.
13587         (fini_copy_prop): Propagate points-to info.
13588         * tree-flow.h (merge_alias_info): Remove.
13589
13590 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
13591
13592         * config/picochip/picochip.C (PARAM_INLINE_CALL_COST): Remove.
13593
13594 2009-05-25  Jan Hubicka  <jh@suse.cz>
13595
13596         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
13597         * cgraph.h (struct inline_summary): New filed self_wize,
13598         size_inlining_benefit, self_time and time_inlining_benefit.
13599         (struct cgraph_global_info): Replace insns by time ans size fields.
13600         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
13601         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
13602         (ipcp_update_callgraph): Do not touch function bodies.
13603         * ipa-inline.c: Include except.h
13604         (MAX_TIME): New constant.
13605         (overall_insns): Remove.
13606         (leaf_node_p): New.
13607         (overall_size, max_benefit): New static variables.
13608         (cgraph_estimate_time_after_inlining): New function.
13609         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
13610         (cgraph_clone_inlined_nodes): Update size.
13611         (cgraph_mark_inline_edge): Update size.
13612         (cgraph_estimate_growth): Use size info.
13613         (cgraph_check_inline_limits): Check size.
13614         (cgraph_default_inline_p): Likewise.
13615         (cgraph_edge_badness): Compute badness based on benefit and size cost.
13616         (cgraph_decide_recursive_inlining): Check size.
13617         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
13618         and times.
13619         (cgraph_decide_inlining): Likewise.
13620         (cgraph_decide_inlining_incrementally): Likewise; honor
13621         PARAM_EARLY_INLINING_INSNS.
13622         (likely_eliminated_by_inlining_p): New predicate.
13623         (estimate_function_body_sizes): New function.
13624         (compute_inline_parameters): Use it.
13625         * except.c (must_not_throw_labels): New function.
13626         * except.h (must_not_throw_labels): Declare.
13627         * tree-inline.c (init_inline_once): Kill inlining_weigths
13628         * tree-ssa-structalias.c: Avoid uninitialized warning.
13629         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
13630         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
13631         (PARAM_INLINE_CALL_COST): Remove.
13632         (PARAM_EARLY_INLINING_INSNS): New.
13633
13634 2009-05-25  Richard Guenther  <rguenther@suse.de>
13635
13636         PR tree-optimization/36327
13637         * tree-ssa-alias.c (walk_non_aliased_vuses): Add second walker
13638         callback for reference translation or lookup at the point of may-defs.
13639         * tree-ssa-alias.h (walk_non_aliased_vuses): Adjust prototype.
13640         * tree-ssa-sccvn.c (get_ref_from_reference_ops): Bail out
13641         for union COMPONENT_REFs.
13642         (vn_reference_lookup_3): New callback.  Lookup from memset
13643         and CONSTRUCTOR assignment, translate through struct copies.
13644         (vn_reference_lookup_pieces): Make sure to not free the
13645         passed operands array.  Adjust walk_non_aliased_vuses call.
13646         (vn_reference_lookup): Adjust walk_non_aliased_vuses call,
13647         make sure we do not leak memory.
13648
13649 2009-05-25  Richard Guenther  <rguenther@suse.de>
13650
13651         * tree-ssa-alias.h (dump_points_to_solution): Declare.
13652         * tree-inline.c (expand_call_inline): Reset the escaped and
13653         callused solutions.
13654         * tree-ssa-structalias.c (pass_build_ealias): New.
13655         * tree-pass.h (pass_build_ealias): Declare.
13656         * passes.c (init_optimization_passes): Add PTA during
13657         early optimizations.
13658         * tree-ssa-alias.c (dump_alias_info): Dump the ESCAPED
13659         and CALLUSED solutions.
13660         (dump_points_to_solution): New function, split out from ...
13661         (dump_points_to_info_for): ... here.
13662         * tree-parloops.c (parallelize_loops): Reset the escaped and
13663         callused solutions.
13664
13665 2009-05-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
13666
13667         PR bootstrap/40027
13668         * config/i386/i386.c (USE_HIDDEN_LINKONCE): Only define if missing.
13669         * config/i386/sol2.h [!TARGET_GNU_LD] (USE_HIDDEN_LINKONCE): Define.
13670
13671 2009-05-25  Ira Rosen  <irar@il.ibm.com>
13672
13673         PR tree-optimization/40238
13674         * tree-vect-stmts.c (vect_init_vector): Insert initialization
13675         statements after basic block's labels.
13676         * tree-vect-slp.c (vect_slp_transform_bb): Call destroy_bb_vec_info()
13677         to free the allocated memory.
13678
13679 2009-05-24  Kaz Kojima  <kkojima@gcc.gnu.org>
13680
13681         * gcc/config/sh/sh.c (sh_set_return_address): Mark store of
13682         return address with a USE.
13683
13684 2009-05-24  Richard Guenther  <rguenther@suse.de>
13685
13686         PR middle-end/40233
13687         * tree.c (make_vector_type): Build the TYPE_DEBUG_REPRESENTATION_TYPEs
13688         array type from the main variant of the inner type.
13689
13690 2009-05-24  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
13691
13692         * config/vax/vax-protos.h (legitimate_constant_address_p): Change
13693         definition to bool (from int) to un-break build.
13694         (legitimate_constant_p, vax_mode_dependent_address_p): Likewise.
13695
13696 2009-05-24  Paolo Bonzini  <bonzini@gnu.org>
13697
13698         * tree-ssa-operands.h (push_stmt_changes, pop_stmt_changes,
13699         discard_stmt_changes): Delete.
13700         * tree-ssa-operands.c (scb_stack): Delete.
13701         (init_ssa_operands): Do not initialize it.
13702         (fini_ssa_operands): Do not free it.
13703         (push_stmt_changes, pop_stmt_changes, discard_stmt_changes): Delete.
13704
13705         * tree-cfg.c (replace_uses_by): Replace pop_stmt_changes with
13706         update_stmt, remove the others.  Fix comments.
13707         * tree-dfa.c (optimize_stack_restore): Likewise.
13708         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Likewise.
13709         * tree-ssa-loop-ivopts.c (rewrite_use): Likewise.
13710         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
13711         * tree-ssa-ccp.c (optimize_stack_restore, execute_fold_all_builtins):
13712         Likewise.
13713         * tree-ssa-propagate.c (substitute_and_fold): Likewise.
13714         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
13715         (dom_opt_finalize_block): Likewise, adjusting access to
13716         stmts_to_rescan.
13717         (optimize_stmt): Likewise, adjusting access to stmts_to_rescan.
13718         (stmts_to_rescan): Change item type to gimple.
13719         (tree_ssa_dominator_optimize): Change type of stmts_to_rescan.
13720
13721 2009-05-24  Ira Rosen  <irar@il.ibm.com>
13722
13723         * doc/passes.texi (Tree-SSA passes): Document SLP pass.
13724         * tree-pass.h (pass_slp_vectorize): New pass.
13725         * params.h (SLP_MAX_INSNS_IN_BB): Define.
13726         * timevar.def (TV_TREE_SLP_VECTORIZATION): Define.
13727         * tree-vectorizer.c (timevar.h): Include.
13728         (user_vect_verbosity_level): Declare.
13729         (vect_location): Fix comment.
13730         (vect_set_verbosity_level): Update user_vect_verbosity_level
13731         instead of vect_verbosity_level.
13732         (vect_set_dump_settings): Add an argument. Ignore user defined
13733         verbosity if dump flags require higher level of verbosity. Print to
13734         stderr only for loop vectorization.
13735         (vectorize_loops): Update call to vect_set_dump_settings.
13736         (execute_vect_slp): New function.
13737         (gate_vect_slp): Likewise.
13738         (struct gimple_opt_pass pass_slp_vectorize): New.
13739         * tree-vectorizer.h (struct _bb_vec_info): Define along macros to
13740         access its members.
13741         (vec_info_for_bb): New function.
13742         (struct _stmt_vec_info): Add bb_vinfo and a macro for its access.
13743         (VECTORIZATION_ENABLED): New macro.
13744         (SLP_ENABLED, SLP_DISABLED): Likewise.
13745         (vect_is_simple_use): Add bb_vec_info argument.
13746         (new_stmt_vec_info, vect_analyze_data_ref_dependences,
13747         vect_analyze_data_refs_alignment, vect_verify_datarefs_alignment,
13748         vect_analyze_data_ref_accesses, vect_analyze_data_refs,
13749         vect_schedule_slp, vect_analyze_slp): Likewise.
13750         (vect_analyze_stmt): Add slp_tree argument.
13751         (find_bb_location): Declare.
13752         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
13753         * tree-vect-loop.c (new_loop_vec_info): Adjust function calls.
13754         (vect_analyze_loop_operations, vect_analyze_loop,
13755         get_initial_def_for_induction, vect_create_epilog_for_reduction,
13756         vect_finalize_reduction, vectorizable_reduction,
13757         vectorizable_live_operation, vect_transform_loop): Likewise.
13758         * tree-data-ref.c (dr_analyze_innermost): Update comment,
13759         skip evolution analysis if analyzing a basic block.
13760         (dr_analyze_indices): Likewise.
13761         (initialize_data_dependence_relation): Skip the test whether the
13762         object is invariant for basic blocks.
13763         (compute_all_dependences): Skip dependence analysis for data
13764         references in basic blocks.
13765         (find_data_references_in_stmt): Don't fail in case of invariant
13766         access in basic block.
13767         (find_data_references_in_bb): New function.
13768         (find_data_references_in_loop): Move code to
13769         find_data_references_in_bb and add a call to it.
13770         (compute_data_dependences_for_bb): New function.
13771         * tree-data-ref.h (compute_data_dependences_for_bb): Declare.
13772         * tree-vect-data-refs.c (vect_check_interleaving): Adjust to the case
13773         that STEP is 0.
13774         (vect_analyze_data_ref_dependence): Check for interleaving in case of
13775         unknown dependence in basic block and fail in case of dependence in
13776         basic block.
13777         (vect_analyze_data_ref_dependences): Add bb_vinfo argument, get data
13778         dependence instances from either loop or basic block vectorization
13779         info.
13780         (vect_compute_data_ref_alignment): Check if it is loop vectorization
13781         before calling nested_in_vect_loop_p.
13782         (vect_compute_data_refs_alignment): Add bb_vinfo argument, get data
13783         dependence instances from either loop or basic block vectorization
13784         info.
13785         (vect_verify_datarefs_alignment): Likewise.
13786         (vect_enhance_data_refs_alignment): Adjust function calls.
13787         (vect_analyze_data_refs_alignment): Likewise.
13788         (vect_analyze_group_access): Fix printing. Skip different checks if
13789         DR_STEP is 0. Keep strided stores either in loop or basic block
13790         vectorization data structure. Fix indentation.
13791         (vect_analyze_data_ref_access): Fix comments, allow zero step in
13792         basic blocks.
13793         (vect_analyze_data_ref_accesses): Add bb_vinfo argument, get data
13794         dependence instances from either loop or basic block vectorization
13795         info.
13796         (vect_analyze_data_refs): Update comment. Call
13797         compute_data_dependences_for_bb to analyze basic blocks.
13798         (vect_create_addr_base_for_vector_ref): Check for outer loop only in
13799         case of loop vectorization. In case of basic block vectorization use
13800         data-ref itself as a base.
13801         (vect_create_data_ref_ptr): In case of basic block vectorization:
13802         don't advance the pointer, add new statements before the current
13803         statement.  Adjust function calls.
13804         (vect_supportable_dr_alignment): Support only aligned accesses in
13805         basic block vectorization.
13806         * common.opt (ftree-slp-vectorize): New flag.
13807         * tree-vect-patterns.c (widened_name_p): Adjust function calls.
13808         (vect_pattern_recog_1): Likewise.
13809         * tree-vect-stmts.c (process_use): Likewise.
13810         (vect_init_vector): Add new statements in the beginning of the basic
13811         block in case of basic block SLP.
13812         (vect_get_vec_def_for_operand): Adjust function calls.
13813         (vect_finish_stmt_generation): Likewise.
13814         (vectorizable_call): Add assert that it is loop vectorization, adjust
13815         function calls.
13816         (vectorizable_conversion, vectorizable_assignment): Likewise.
13817         (vectorizable_operation): In case of basic block SLP, take
13818         vectorization factor from statement's type and skip the relevance
13819         check. Adjust function calls.
13820         (vectorizable_type_demotion): Add assert that it is loop
13821         vectorization, adjust function calls.
13822         (vectorizable_type_promotion): Likewise.
13823         (vectorizable_store): Check for outer loop only in case of loop
13824         vectorization. Adjust function calls. For basic blocks, skip the
13825         relevance check and don't advance pointers.
13826         (vectorizable_load): Likewise.
13827         (vectorizable_condition): Add assert that it is loop vectorization,
13828         adjust function calls.
13829         (vect_analyze_stmt): Add argument. In case of basic block SLP, check
13830         that it is not reduction, get vector type, call only supported
13831         functions, skip loop specific parts.
13832         (vect_transform_stmt): Check for outer loop only in case of loop
13833         vectorization.
13834         (new_stmt_vec_info): Add new argument and initialize bb_vinfo.
13835         (vect_is_simple_use): Fix comment, add new argument, fix conditions
13836         for external definition.
13837         * passes.c (pass_slp_vectorize): New pass.
13838         * tree-vect-slp.c (find_bb_location): New function.
13839         (vect_get_and_check_slp_defs): Add argument, adjust function calls,
13840         check for patterns only in loops.
13841         (vect_build_slp_tree): Add argument, adjust function calls, fail in
13842         case of multiple types in basic block SLP.
13843         (vect_mark_slp_stmts_relevant): New function.
13844         (vect_supported_load_permutation_p): Fix comment.
13845         (vect_analyze_slp_instance): Add argument. In case of basic block
13846         SLP, take vectorization factor from statement's type, check that
13847         unrolling factor is 1. Adjust function call. Save SLP instance in
13848         either loop or basic block vectorization structure. Return FALSE,
13849         if SLP failed.
13850         (vect_analyze_slp): Add argument. Get strided stores groups from
13851         either loop or basic block vectorization structure. Return FALSE
13852         if basic block SLP failed.
13853         (new_bb_vec_info): New function.
13854         (destroy_bb_vec_info, vect_slp_analyze_node_operations,
13855         vect_slp_analyze_operations, vect_slp_analyze_bb): Likewise.
13856         (vect_schedule_slp): Add argument. Get SLP instances from either
13857         loop or basic block vectorization structure. Set vectorization factor
13858         to be 1 for basic block SLP.
13859         (vect_slp_transform_bb): New function.
13860         * params.def (PARAM_SLP_MAX_INSNS_IN_BB): Define.
13861
13862 2009-05-23  Mark Mitchell  <mark@codesourcery.com>
13863
13864         * final.c (shorten_branches): Do not align labels for jump tables.
13865         (final_scan_insn): Use JUMP_TABLE_DATA_P.
13866
13867 2009-05-23  Eric Botcazou  <ebotcazou@adacore.com>
13868
13869         * doc/passes.texi: Standardize spelling of RTL, Tree and Tree SSA.
13870         Remove outdated reference to flow.c and fix nits.
13871         * doc/gccint.texi: Tweak RTL description.
13872         * doc/rtl.texi: Likewise.
13873
13874 2009-05-23  Denis Chertykov  <chertykov@gmail.com>
13875
13876         * config/avr/avr.c: Change my email address.
13877         * config/avr/avr.h: Likewise.
13878         * config/avr/avr.md: Likewise.
13879         * config/avr/avr-protos.h: Likewise.
13880         * config/avr/libgcc.S: Likewise.
13881
13882 2009-05-22  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
13883
13884         * config/spu/spu-protos.h (aligned_mem_p, spu_valid_mov): Remove.
13885         (spu_split_load, spu_split_store): Change return type to int.
13886         (spu_split_convert): Declare.
13887         * config/spu/predicates.md (spu_mem_operand): Remove.
13888         (spu_mov_operand): Update.
13889         (spu_dest_operand, shiftrt_operator, extend_operator): Define.
13890         * config/spu/spu.c (regno_aligned_for_load): Remove.
13891         (reg_aligned_for_addr, spu_expand_load): Define.
13892         (spu_expand_extv): Reimplement and handle MEM.
13893         (spu_expand_insv): Handle MEM.
13894         (spu_sched_reorder): Handle insn's with length 0.
13895         (spu_legitimate_address_p): Reimplement.
13896         (store_with_one_insn_p): Return TRUE for any mode with size
13897         larger than 16 bytes.
13898         (address_needs_split): Define.
13899         (spu_expand_mov): Call spu_split_load and spu_split_store for MEM
13900         operands.
13901         (spu_convert_move): Define.
13902         (spu_split_load): Use spu_expand_load and change all MEM's to TImode.
13903         (spu_split_store): Change all MEM's to TImode.
13904         (spu_init_expanders): Preallocate registers that correspond to
13905         LAST_VIRTUAL_REG+1 and LAST_VIRTUAL_REG+2 and set them with
13906         mark_reg_pointer.
13907         (spu_split_convert): Define.
13908         * config/spu/spu.md (QHSI, QHSDI): New mode iterators.
13909         (_move<mode>, _movdi, _movti): Update predicate and condition.
13910         (load, store): Change to define_split.
13911         (extendqiti2, extendhiti2, extendsiti2, extendditi2): Simplify to
13912         extend<mode>ti2.
13913         (zero_extendqiti2, zero_extendhiti2, <v>lshr<mode>3_imm): Define.
13914         (lshr<mode>3, lshr<mode>3_imm, lshr<mode>3_re): Simplify to one
13915         define_insn_and_split of lshr<mode>3.
13916         (shrqbybi_<mode>, shrqby_<mode>): Simplify to define_expand.
13917         (<v>ashr<mode>3_imm): Define.
13918         (extv, extzv, insv): Allow MEM operands.
13919         (trunc_shr_ti<mode>, trunc_shr_tidi, shl_ext_<mode>ti,
13920         shl_ext_diti, sext_trunc_lshr_tiqisi, zext_trunc_lshr_tiqisi,
13921         sext_trunc_lshr_tihisi, zext_trunc_lshr_tihisi): Define for combine.
13922         (_spu_convert2): Change to define_insn_and_split and remove the
13923         corresponding define_peephole2.
13924         (stack_protect_set, stack_protect_test, stack_protect_test_si):
13925         Change predicates to memory_operand.
13926
13927 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
13928
13929         * config/arm/thumb2.md: Add 16-bit multiply instructions.
13930
13931 2009-05-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
13932
13933         PR tree-optimization/40219
13934         * tree.c (iterative_hash_expr): Make sure the builtin function is
13935         a normal builtin function and not a front end or back end builtin
13936         before indexing into the built_in_decls array.
13937
13938 2009-05-22  Richard Guenther  <rguenther@suse.de>
13939
13940         PR middle-end/38964
13941         * alias.c (write_dependence_p): Do not use TBAA for answering
13942         anti-dependence or output-dependence.
13943         * tree-ssa-structalias.c (set_uids_in_ptset): Remove TBAA pruning code.
13944         (emit_pointer_definition): Remove.
13945         (emit_alias_warning): Likewise.
13946         (find_what_var_points_to): Remove TBAA pruning code.
13947         (find_what_p_points_to): Likewise.  Do not warn about strict-aliasing
13948         violations.
13949         (compute_points_to_sets): Remove code computing the set of
13950         dereferenced pointers.
13951         * tree-data-ref.c (dr_may_alias_p): Properly use the split
13952         oracle for querying anti and output dependencies.
13953         * tree-ssa-alias.c (refs_may_alias_p_1): Add argument specifying
13954         if TBAA may be applied.
13955         (refs_anti_dependent_p): New function.
13956         (refs_output_dependent_p): Likewise.
13957         * tree-ssa-alias.h (refs_anti_dependent_p): Declare.
13958         (refs_output_dependent_p): Likewise.
13959         * doc/tree-ssa.texi (Memory model): New section.
13960         * doc/c-tree.texi (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
13961         * doc/gimple.texi (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
13962         * cfgexpand.c (expand_gimple_basic_block): Do not handle
13963         GIMPLE_CHANGE_DYNAMIC_TYPE or CHANGE_DYNAMIC_TYPE_EXPR.
13964         * expr.c (expand_expr_real_1): Likewise.
13965         * gimple-low.c (lower_stmt): Likewise.
13966         * gimple-pretty-print.c (dump_gimple_stmt): Likewise.
13967         (dump_gimple_cdt): Remove.
13968         * gimple.c (gss_for_code): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
13969         (gimple_size): Likewise.
13970         (walk_gimple_op): Likewise.
13971         (is_gimple_stmt): Likewise.
13972         (walk_stmt_load_store_addr_ops): Likewise.
13973         (gimple_build_cdt): Remove.
13974         * gimple.def (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
13975         * gimple.h (gimple_cdt_new_type): Remove.
13976         (gimple_cdt_new_type_ptr): Likewise.
13977         (gimple_cdt_set_new_type): Likewise.
13978         (gimple_cdt_location): Likewise.
13979         (gimple_cdt_location_ptr): Likewise.
13980         (gimple_cdt_set_location): Likewise.
13981         * gimplify.c (gimplify_expr): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
13982         * tree-cfg.c (remove_useless_stmts_1): Do not handle
13983         GIMPLE_CHANGE_DYNAMIC_TYPE.
13984         (verify_types_in_gimple_stmt): Likewise.
13985         * tree-inline.c (estimate_num_insns): Likewise.
13986         (expand_call_inline): Do not copy DECL_NO_TBAA_P.
13987         (copy_decl_to_var): Likewise.
13988         (copy_result_decl_to_var): Likewise.
13989         * tree-pretty-print.c (dump_generic_node): Do not handle
13990         CHANGE_DYNAMIC_TYPE_EXPR.
13991         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
13992         * tree-ssa-operands.c (get_expr_operands): Likewise.
13993         * tree-ssa-structalias.c (struct variable_info): Remove
13994         no_tbaa_pruning member.
13995         (new_var_info): Do not set it based on DECL_NO_TBAA_P.
13996         (unify_nodes): Do not copy it.
13997         (find_func_aliases): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
13998         (dump_solution_for_var): Do not dump no_tbaa_pruning state.
13999         (set_uids_in_ptset): Do not check it.
14000         (find_what_var_points_to): Likewise.
14001         (compute_tbaa_pruning): Remove.
14002         (compute_points_to_sets): Do not call it.
14003         * tree.c (walk_tree_1): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
14004         * tree.def (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
14005         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Remove.
14006         (CHANGE_DYNAMIC_TYPE_LOCATION): Likewise.
14007         (DECL_NO_TBAA_P): Likewise.
14008         (struct tree_decl_common): Move no_tbaa_flag to unused flags section.
14009         * omp-low.c (copy_var_decl): Do not copy DECL_NO_TBAA_P.
14010         (expand_omp_atomic_pipeline): Do not set it.
14011         * print-tree.c (print_node): Do not dump it.
14012         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
14013         redundant check.
14014
14015 2009-05-22 Vladimir Makarov <vmakarov@redhat.com>
14016
14017         PR target/39856
14018         * reg-stack.c (subst_stack_regs_pat): Remove gcc_assert for note
14019         for clobber.
14020
14021 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
14022
14023         * tree.c (handle_dll_attribute): Mark dllexport'd inlines as
14024         non-external.
14025
14026 2009-05-22  Ben Elliston  <bje@au.ibm.com>
14027
14028         * Makefile.in (bversion.h, s-bversion): New targets.
14029         (TOPLEV_H): Add bversion.h.
14030         * toplev.h: Include "bversion.h".
14031         (ATTRIBUTE_GCC_DIAG): When building with checking disabled, use
14032         the __format__ attribute only if compiling with the same version
14033         of GCC as the sources (the "build version").
14034
14035 2009-05-22  Ben Elliston  <bje@au.ibm.com>
14036
14037         * c-format.c (handle_format_attribute): Fix comment typo.
14038
14039 2009-05-21  Steve Ellcey  <sje@cup.hp.com>
14040
14041         PR target/37846
14042         * config/ia64/ia64.opt (mfused-madd): New.
14043         * config/ia64/ia64.h (TARGET_DEFAULT): Set MASK_FUSED_MADD.
14044         * config/ia64/hpux.h (TARGET_DEFAULT): Ditto.
14045         * config/ia64/ia64.md (maddsf4, msubsf4, nmaddsf4,
14046         madddf4, madddf4_trunc, msubdf4, msubdf4_trunc, nmadddf4,
14047         nmadddf4_truncsf, maddxf4, maddxf4_truncsf, maddxf4_truncdf,
14048         msubxf4, msubxf4_truncsf msubxf4_truncdf, nmaddxf4,
14049         nmaddxf4_truncsf, nmaddxf4_truncdf): Check TARGET_FUSED_MADD.
14050         * config/ia64/vect.md (addv2sf3, subv2sf3): Force fpma/fpms
14051         instruction if !TARGET_FUSED_MADD.
14052         (fpma, fpms): Remove colon from name.
14053
14054 2009-05-22  Richard Guenther  <rguenther@suse.de>
14055
14056         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Record
14057         TMR_ORIGINAL.  Always either record TMR_SYMBOL or TMR_BASE.
14058         * tree-ssa-pre.c (create_component_ref_by_pieces_1): Handle
14059         TARGET_MEM_REF.
14060         (create_expression_by_pieces): Only convert if necessary.
14061         * gimplify.c (gimplify_expr): Handle TARGET_MEM_REF.
14062         * tree-ssa-loop-im.c (gen_lsm_tmp_name): Handle INTEGER_CST.
14063
14064 2009-05-21  Adam Nemet  <anemet@caviumnetworks.com>
14065
14066         * config/mips/mips.md (*extzv_trunc<mode>_exts): Turn into a
14067         regular pattern from a template and rename it ...
14068         (*extzv_truncsi_exts): ... to this.
14069
14070 2009-05-21  Richard Guenther  <rguenther@suse.de>
14071
14072         * cgraph.h (struct cgraph_node): Remove inline_decl member.
14073         * ipa-inline.c (cgraph_mark_inline_edge): Do not check it.
14074         (cgraph_default_inline_p): Likewise.
14075         (cgraph_decide_inlining_incrementally): Likewise.
14076
14077 2009-05-21  H.J. Lu  <hongjiu.lu@intel.com>
14078             Uros Bizjak  <ubizjak@gmail.com>
14079
14080         * config/i386/cpuid.h (bit_MOVBE): New.
14081
14082         * config/i386/driver-i386.c (host_detect_local_cpu): Check movbe.
14083
14084         * config/i386/i386.c (OPTION_MASK_ISA_MOVBE_SET): New.
14085         (OPTION_MASK_ISA_MOVBE_UNSET): Likewise.
14086         (ix86_handle_option): Handle OPT_mmovbe.
14087         (ix86_target_string): Add -mmovbe.
14088         (pta_flags): Add PTA_MOVBE.
14089         (processor_alias_table): Add PTA_MOVBE to "atom".
14090         (override_options): Handle PTA_MOVBE.
14091
14092         * config/i386/i386.h (TARGET_MOVBE): New.
14093
14094         * config/i386/i386.md (bswapsi2): Check TARGET_MOVBE.
14095         (*bswapsi_movbe): New.
14096         (*bswapdi_movbe): Likewise.
14097         (bswapdi2): Renamed to ...
14098         (*bswapdi_1): This.
14099         (bswapdi2): New expander.
14100
14101         * config/i386/i386.opt (mmovbe): New.
14102
14103         * doc/invoke.texi: Document -mmovbe.
14104
14105 2009-05-21  Taras Glek  <tglek@mozilla.com>
14106
14107         * plugin.c (try_init_one_plugin): Updated to new plugin_init API.
14108         * gcc-plugin.h (plugin_init): Updated signature.
14109         * gcc-plugin.h (plugin_name_args): Moved to this header.
14110         * doc/plugins.texi (plugin_init): Updated documention to reflect
14111         API change.
14112         * doc/plugins.texi (plugin_name_args): Added to documention.
14113
14114 2009-05-21  Mark Mitchell  <mark@codesourcery.com>
14115
14116         * config/arm/neon.md (*mul<mode>3add<mode>_neon): New pattern.
14117         (*mul<mode>3neg<mode>add<mode>_neon): Likewise.
14118
14119 2009-05-21  Shujing Zhao  <pearly.zhao@oracle.com>
14120
14121         * config/i386/i386.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P and
14122         JUMP_TABLE_DATA_P predicates where applicable.
14123         * config/i386/predicates.md: Ditto.
14124         * config/i386/sse.md: Ditto.
14125
14126 2009-05-21  Jakub Jelinek  <jakub@redhat.com>
14127
14128         * config/i386/i386.md (adddi_4_rex64, addsi_4, addhi_4): For
14129         operand2 -128 override length_immediate attribute to 1.
14130         * config/i386/predicates.md (constm128_operand): New predicate.
14131
14132         * config/i386/i386.c (memory_address_length): Handle %r12
14133         the same as %rsp and %r13 the same as %rbp.  For %rsp and %rbp
14134         also check REGNO.
14135         (ix86_attr_length_address_default): For MODE_SI lea in 64-bit
14136         mode look through optional ZERO_EXTEND and SUBREG.
14137         * config/i386/i386.md (R12_REG): New define_constant.
14138         (prefix_data16): For sse unit set also for MODE_TI insns.
14139         (prefix_rex): For -m32 always return 0.  For TYPE_IMOVX
14140         insns set if operand 1 is ext_QIreg_operand.
14141         (modrm): For TYPE_IMOV clear only if not MODE_DI.  For
14142         TYPE_{ALU{,1},ICMP,TEST} insn clear if there is non-shortened
14143         immediate.
14144         (*movdi_extzv_1, zero_extendhidi2, zero_extendqidi2): Change
14145         mode from MODE_DI to MODE_SI.
14146         (movdi_1_rex64): Override modrm and length_immediate attributes
14147         only for movabs (TYPE_IMOV, alternative 2).
14148         (zero_extendsidi2_rex64): Clear prefix_0f attribute if TYPE_IMOVX.
14149         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit,
14150         *float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit,
14151         *float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit,
14152         *float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Set
14153         prefix_rex attribute if DImode.
14154         (*adddi_1_rex64, *adddi_2_rex64, *adddi_3_rex64, *adddi_5_rex64,
14155         *addsi_1, *addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
14156         *addsi_3_zext, *addsi_5, *addhi_1_lea, *addhi_1, *addhi_2, *addhi_3,
14157         *addhi_5, *addqi_1_lea, *addqi_1): Override length_immediate
14158         attribute to 1 if TYPE_ALU and operand 2 is const128_operand.
14159         (pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64):
14160         Likewise.  For TYPE_IMOV clear length_immediate attribute.
14161         (*ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashldi3_cconly_rex64,
14162         *ashlsi3_1, *ashlsi3_1_zext, *ashlsi3_cmp, **ashlsi3_cconly,
14163         *ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1, *ashlhi3_cmp,
14164         *ashlhi3_cconly, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
14165         *ashlqi3_cconly): Override length_immediate attribute to 0 if TYPE_ALU
14166         or one operand TYPE_ISHIFT.
14167         (*ashrdi3_1_one_bit_rex64, *ashrdi3_one_bit_cmp_rex64,
14168         *ashrdi3_one_bit_cconly_rex64, *ashrsi3_1_one_bit,
14169         *ashrsi3_1_one_bit_zext, *ashrsi3_one_bit_cmp,
14170         *ashrsi3_one_bit_cconly, *ashrsi3_one_bit_cmp_zext,
14171         *ashrhi3_1_one_bit, *ashrhi3_one_bit_cmp, *ashrhi3_one_bit_cconly,
14172         *ashrqi3_1_one_bit, *ashrqi3_1_one_bit_slp, *ashrqi3_one_bit_cmp,
14173         *ashrqi3_one_bit_cconly, *lshrdi3_1_one_bit_rex64,
14174         *lshrdi3_cmp_one_bit_rex64, *lshrdi3_cconly_one_bit_rex64,
14175         *lshrsi3_1_one_bit, *lshrsi3_1_one_bit_zext, *lshrsi3_one_bit_cmp,
14176         *lshrsi3_one_bit_cconly, *lshrsi3_cmp_one_bit_zext,
14177         *lshrhi3_1_one_bit, *lshrhi3_one_bit_cmp, *lshrhi3_one_bit_cconly,
14178         *lshrqi3_1_one_bit, *lshrqi3_1_one_bit_slp, *lshrqi2_one_bit_cmp,
14179         *lshrqi2_one_bit_cconly, *rotlsi3_1_one_bit_rex64, *rotlsi3_1_one_bit,
14180         *rotlsi3_1_one_bit_zext, *rotlhi3_1_one_bit, *rotlqi3_1_one_bit_slp,
14181         *rotlqi3_1_one_bit, *rotrdi3_1_one_bit_rex64, *rotrsi3_1_one_bit,
14182         *rotrsi3_1_one_bit_zext, *rotrhi3_one_bit, *rotrqi3_1_one_bit,
14183         *rotrqi3_1_one_bit_slp): Override length_immediate attribute to 0,
14184         set mode attribute, don't override length attribute.
14185         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Set prefix_0f attribute
14186         to 1.
14187         (return_internal_long): Set length attribute to 2 instead of 1.
14188         (*strmovqi_rex_1, *strsetqi_rex_1, *rep_stosqi_rex64,
14189         *cmpstrnqi_nz_rex_1, *cmpstrnqi_rex_1, *strlenqi_rex_1): Clear
14190         prefix_rex attribute.
14191         * config/i386/predicates.md (ext_QIreg_operand, const128_operand):
14192         New predicates.
14193         (memory_displacement_only_operand): Always return 0 for TARGET_64BIT.
14194
14195 2009-05-21  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
14196
14197         * config/arm/thumb2.md (orsi_notsi_si): Fix typo in pattern.
14198
14199 2009-05-20  Ian Lance Taylor  <iant@google.com>
14200
14201         * tree.c (build_tree_list_vec_stat): New function.
14202         (ctor_to_vec): New function.
14203         (build_nt_call_vec): New function.
14204         (build_call_array): Change args to be a const pointer.
14205         (build_call_vec): New function.
14206         * tree.h (build_nt_call_vec): Declare.
14207         (build_tree_list_vec_stat): Declare.
14208         (build_tree_list_vec): Define.
14209         (build_call_array): Update declaration.
14210         (build_call_vec): Declare.
14211         (ctor_to_vec): Declare.
14212         * c-common.c (tree_vector_cache): New static variable.
14213         (make_tree_vector): New function.
14214         (release_tree_vector): New function.
14215         (make_tree_vector_single): New function.
14216         (make_tree_vector_copy): New function.
14217         * c-common.h (tree_vector_cache, make_tree_vector): Declare.
14218         (make_tree_vector_single, make_tree_vector_copy): Declare.
14219         * c-parser.c (cached_expr_list_1, cached_expr_list_2): Remove.
14220         (c_parser_expr_list): Don't manage cache here, instead call
14221         make_tree_vector.
14222         (c_parser_release_expr_list): Remove static function.
14223         (c_parser_vec_to_tree_list): Remove static function.
14224         (c_parser_attributes): Call build_tree_list_vec instead of
14225         c_parser_vec_to_tree_list.  Call release_tree_vector instead of
14226         c_parser_release_expr_list.
14227         (c_parser_postfix_expression_after_primary): Likewise.
14228         (c_parser_objc_keywordexpr): Likewise.
14229
14230 2009-05-20  Sandra Loosemore  <sandra@codesourcery.com>
14231
14232         * doc/tm.texi (Misc): Document TARGET_INVALID_PARAMETER_TYPE,
14233         TARGET_INVALID_RETURN_TYPE, TARGET_PROMOTED_TYPE, and
14234         TARGET_CONVERT_TO_TYPE.
14235         * hooks.c (hook_tree_const_tree_null): Define.
14236         * hooks.h (hook_tree_const_tree_null): Declare.
14237         * target.h (struct gcc_target):  Add invalid_parameter_type,
14238         invalid_return_type, promoted_type, and convert_to_type fields.
14239         * target-def.h: (TARGET_INVALID_PARAMETER_TYPE): Define.
14240         (TARGET_INVALID_RETURN_TYPE): Define.
14241         (TARGET_PROMOTED_TYPE): Define.
14242         (TARGET_CONVERT_TO_TYPE): Define.
14243         (TARGET_INITIALIZER): Update for new fields.
14244         * c-decl.c (grokdeclarator): Check targetm.invalid_return_type.
14245         (grokparms): Check targetm.invalid_parameter_type.
14246         * c-typeck.c (default_conversion): Check targetm.promoted_type.
14247         * c-convert.c (convert): Check targetm.convert_to_type.
14248
14249 2009-05-20  Adam Nemet  <anemet@caviumnetworks.com>
14250
14251         * config/mips/mips.md (*extenddi_truncate<mode>,
14252         *extendsi_truncate<mode>): Emit exts if supported.  Add attribute
14253         defintions.
14254         (*extendhi_truncateqi): New define_insn_and_sptit.
14255
14256 2009-05-20  Jakub Jelinek  <jakub@redhat.com>
14257
14258         PR middle-end/40204
14259         * fold-const.c (fold_binary) <case BIT_AND_EXPR>: Avoid infinite
14260         recursion if build_int_cst_type returns the same INTEGER_CST as arg1.
14261
14262 2009-05-20  Eric Botcazou  <ebotcazou@adacore.com>
14263
14264         * fold-const.c (build_fold_addr_expr_with_type): Take the address of
14265         the operand of VIEW_CONVERT_EXPR.
14266
14267 2009-05-20  H.J. Lu  <hongjiu.lu@intel.com>
14268
14269         * config/i386/driver-i386.c (host_detect_local_cpu): Check
14270         extended family and model for Intel processors.  Support Intel Atom.
14271
14272 2009-05-20  Olivier Hainque  <hainque@adacore.com>
14273
14274         * gstab.h (stab_code_type): Define, to be used instead of the
14275         __stab_debug_code enum, made anonymous.  Add 2009 to the copyright
14276         notice.
14277         * dbxout.c (STAB_CODE_TYPE): Remove #define and replace use
14278         occurrences by stab_code_type.
14279         * mips-tfile.c (STAB_CODE_TYPE): Remove #define, unused.
14280
14281 2009-05-20  Martin Jambor  <mjambor@suse.cz>
14282
14283         * tree-flow.h (insert_edge_copies_seq): Undeclare.
14284         (sra_insert_before): Likewise.
14285         (sra_insert_after): Likewise.
14286         (sra_init_cache): Likewise.
14287         (sra_type_can_be_decomposed_p): Likewise.
14288         * tree-mudflap.c (insert_edge_copies_seq): Copied here from tree-sra.c
14289         * tree-sra.c (sra_type_can_be_decomposed_p): Made static.
14290         (sra_insert_before): Likewise.
14291         (sra_insert_after): Likewise.
14292         (sra_init_cache): Likewise.
14293         (insert_edge_copies_seq): Made static and moved upwards.
14294
14295         * tree-complex.c (extract_component): Added VIEW_CONVERT_EXPR switch
14296         case.
14297
14298         * tree-flow-inline.h (contains_view_convert_expr_p): New function.
14299
14300         * ipa-prop.c (get_ssa_def_if_simple_copy): New function.
14301         (determine_cst_member_ptr): Call get_ssa_def_if_simple_copy to skip
14302         simple copies.
14303
14304 2009-05-20  Richard Guenther  <rguenther@suse.de>
14305
14306         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
14307         with mismatched comparison modes.
14308
14309 2009-05-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
14310
14311         * config/arm/arm.md (*arm_iorsi3): Refactored for only ARM.
14312         (peephole ior (reg, int) -> mov, ior): Refactored for only ARM.
14313         * config/arm/thumb2.md (*thumb_andsi_not_shiftsi_si): Allow bic
14314         with shifts for Thumb2.
14315         (orsi_notsi): New for orn.
14316         (*thumb_orsi_notshiftsi_si): Allow orn with shifts.
14317         (*thumb2_iorsi3): Rewrite support for iorsi for Thumb2.
14318         * config/arm/arm.c (const_ok_for_op): Split case for IOR for Thumb2.
14319         (arm_gen_constant): Set can_invert for IOR and Thumb2, Add comments.
14320         Don't invert remainder for IOR.
14321
14322 2009-05-19  Zdenek Dvorak  <ook@ucw.cz>
14323
14324         PR tree-optimization/40087
14325         * tree-ssa-loop-niter.c (number_of_iterations_ne_max,
14326         number_of_iterations_ne): Rename never_infinite argument.
14327         (number_of_iterations_lt_to_ne, number_of_iterations_lt,
14328         number_of_iterations_le): Handle pointer-type ivs when
14329         exit_must_be_taken is false.
14330         (number_of_iterations_cond):  Do not always assume that
14331         exit_must_be_taken if the control variable is a pointer.
14332
14333 2009-05-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14334
14335         * c-typeck.c (build_binary_op): Allow % on integal vectors.
14336         * doc/extend.texi (Vector Extension): Document that % is allowed too.
14337
14338 2009-05-19  H.J. Lu  <hongjiu.lu@intel.com>
14339
14340         * config/i386/i386.c (ix86_avoid_jump_mispredicts): Check
14341         ASM_OUTPUT_MAX_SKIP_PAD instead of ASM_OUTPUT_MAX_SKIP_ALIGN.
14342
14343 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
14344
14345         PR c/40172
14346         * c.opt (Wlogical-op): Disabled by default.
14347         * c-opt (c_common_post_options): Do not enable Wlogical-op with
14348         Wextra.
14349         * doc/invoke.texi (Wlogical-op): Likewise.
14350
14351 2009-05-19  Eric Botcazou  <ebotcazou@adacore.com>
14352
14353         * tree-scalar-evolution.c (follow_ssa_edge_expr) <NOP_EXPR>: Turn
14354         into CASE_CONVERT.
14355         <PLUS_EXPR>: Strip useless type conversions instead of type nops.
14356         Propagate the type of the first operand.
14357         <ASSERT_EXPR>: Simplify.
14358         (follow_ssa_edge_in_rhs): Use gimple_expr_type to get the type.
14359         Rewrite using the RHS code as discriminant.
14360         <NOP_EXPR>: Turn into CASE_CONVERT.
14361         <PLUS_EXPR>: Propagate the type of the first operand.
14362
14363 2009-05-19  Steve Ellcey  <sje@cup.hp.com>
14364
14365         * config/ia64/ia64-protos.h (ia64_dconst_0_5): New.
14366         (ia64_dconst_0_375): New.
14367         * config/ia64/ia64.c (ia64_override_options): Remove
14368         -minline-sqrt-min-latency warning.
14369         (ia64_dconst_0_5_rtx, ia64_dconst_0_5): New.
14370         (ia64_dconst_0_375_rtx, ia64_dconst_0_375): New
14371         * config/ia64/ia64.md (*sqrt_approx): Remove.
14372         (sqrtsf2): Remove #if 0.
14373         (sqrtsf2_internal_thr): Rewrite and move to div.md.
14374         (sqrtdf): Remove assert.
14375         (sqrtdf2_internal_thr): Rewrite and move to div.md.
14376         (sqrtxf2): Remove #if 0.
14377         (sqrtxf2_internal_thr): Rewrite and move to div.md.
14378         * div.md (sqrt_approx_rf): New.
14379         (sqrtsf2_internal_thr): New implementation.
14380         (sqrtsf2_internal_lat): New.
14381         (sqrtdf2_internal_thr: New implementation.
14382         (sqrtxf2_internal): New implementation.
14383
14384 2009-05-19  Francois-Xavier Coudert  <fxcoudert@gmail.com>
14385             Hans-Peter Nilsson  <hp@axis.com>
14386
14387         * defaults.h (UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE)
14388         (WCHAR_TYPE, MODIFIED_WCHAR_TYPE, PTRDIFF_TYPE, WINT_TYPE)
14389         (INTMAX_TYPE, UINTMAX_TYPE, SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE)
14390         (INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE)
14391         (UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE)
14392         (INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE)
14393         (UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE)
14394         (INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE)
14395         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE)
14396         (SIZE_TYPE, PID_TYPE, CHAR16_TYPE, CHAR32_TYPE): Move defaults here...
14397         * c-common.c: ...from here.
14398
14399 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
14400
14401         * c-common.c (warn_logical_operator): Remove unnecessary conditionals.
14402
14403 2009-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14404
14405         * builtins.c (do_mpc_arg1): Separate MPFR/MPC C rounding types.
14406
14407 2009-05-19  Ben Elliston  <bje@au.ibm.com>
14408
14409         * unwind-dw2-fde.c (fde_unencoded_compare): Replace type punning
14410         assignments with memcpy calls.
14411         (add_fdes): Likewise.
14412         (binary_search_unencoded_fdes): Likewise.
14413         (linear_search_fdes): Eliminate type puns.
14414
14415 2009-05-19  Richard Guenther  <rguenther@suse.de>
14416
14417         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do
14418         not falsely claim to have propagated into all uses.
14419
14420 2009-05-19  Ben Elliston  <bje@au.ibm.com>
14421
14422         * doc/invoke.texi (C Dialect Options): Update OpenMP specification
14423         version to v3.0.
14424
14425 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
14426
14427         * config/sh/sh-protos.h (sh_legitimate_address_p): Remove.
14428         * config/sh/sh.c (sh_legitimate_address_p): Make static.
14429         (TARGET_LEGITIMATE_ADDRESS_P): New.
14430         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14431         * config/sh/sh.md: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
14432
14433 2009-05-18  Dodji Seketeli  <dodji@redhat.com>
14434
14435         PR debug/40109
14436         * dwarf2out.c (gen_type_die_with_usage): Generate the DIE as a
14437         child of the containing namespace's DIE.
14438
14439 2009-05-18  Adam Nemet  <anemet@caviumnetworks.com>
14440
14441         * config/mips/mips.md (*zero_extend<GPR:mode>_trunc<SHORT:mode>,
14442         *zero_extendhi_truncqi):  Move after the zero_extend patterns.
14443         (*extenddi_truncate<mode>, *extendsi_truncate<mode>): Move after the
14444         extend patterns.
14445
14446 2009-05-18  H.J. Lu  <hongjiu.lu@intel.com>
14447
14448         PR target/39942
14449         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Replace
14450         gen_align with gen_pad.
14451         (ix86_reorg): Check ASM_OUTPUT_MAX_SKIP_PAD instead of
14452         #ifdef ASM_OUTPUT_MAX_SKIP_ALIGN.
14453
14454         * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): New.
14455         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
14456
14457         * config/i386/i386.md (align): Renamed to ...
14458         (pad): This.  Replace ASM_OUTPUT_MAX_SKIP_ALIGN with
14459         ASM_OUTPUT_MAX_SKIP_PAD.
14460
14461 2009-05-18  Andreas Schwab  <schwab@linux-m68k.org>
14462
14463         * config.gcc: Fix variable syntax.
14464
14465         PR target/39531
14466         * config/m68k/m68k.c (output_andsi3): Mask off sign bit copies
14467         before calling exact_log2.
14468         (output_iorsi3): Likewise.
14469         (output_xorsi3): Likewise.
14470
14471 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
14472
14473         * config/sh/sh.c (expand_cbranchdi4): Use a scratch register
14474         for the none zero constant operand except for EQ and NE
14475         comprisons even when the first operand is R0.
14476
14477 2009-05-18  Andreas Krebbel  <krebbel1@de.ibm.com>
14478
14479         * config/s390/2064.md: Remove trailing whitespaces.
14480         * config/s390/2084.md: Likewise.
14481         * config/s390/constraints.md: Likewise.
14482         * config/s390/fixdfdi.h: Likewise.
14483         * config/s390/libgcc-glibc.ver: Likewise.
14484         * config/s390/s390-modes.def: Likewise.
14485         * config/s390/s390-protos.h: Likewise.
14486         * config/s390/s390.c: Likewise.
14487         * config/s390/s390.h: Likewise.
14488         * config/s390/s390.md: Likewise.
14489         * config/s390/tpf-unwind.h: Likewise.
14490
14491 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
14492
14493         * config/m68k/m68k.c (m68k_legitimize_address): Fix typo in signature.
14494
14495 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
14496
14497         M68K TLS support.
14498         * configure.ac (m68k-*-*): Check if binutils support TLS.
14499         * configure: Regenerate.
14500         * config/m68k/predicates.md (symbolic_operand): Extend comment.
14501         * config/m68k/constraints.md (Cu): New constraint.
14502         * config/m68k/m68k.md (UNSPEC_GOTOFF): Remove.
14503         (UNSPEC_RELOC16, UNSPEC_RELOC32): New constants.
14504         (movsi): Handle TLS symbols.
14505         (addsi3_5200): Handle XTLS symbols, indent.
14506         * config/m68k/m68k-protos.h (m68k_legitimize_tls_address): Declare.
14507         (m68k_tls_reference_p): Declare.
14508         (m68k_legitimize_address): Declare.
14509         (m68k_unwrap_symbol): Declare.
14510         * config/m68k/m68k.opt (mxtls): New option.
14511         * config/m68k/m68k.c (ggc.h): Include.
14512         (m68k_output_dwarf_dtprel): Implement hook.
14513         (TARGET_HAVE_TLS, TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
14514         (m68k_expand_prologue): Load GOT pointer when function needs it.
14515         (m68k_illegitimate_symbolic_constant_p): Handle TLS symbols.
14516         (m68k_legitimate_constant_address_p): Same.
14517         (m68k_decompose_address): Handle TLS references.
14518         (m68k_get_gp): New static function.
14519         (enum m68k_reloc): New contants.
14520         (TLS_RELOC_P): New macro.
14521         (m68k_wrap_symbol): New static function.
14522         (m68k_unwrap_symbol): New function.
14523         (m68k_final_prescan_insn_1): New static function.
14524         (m68k_final_prescan_insn): New function.
14525         (m68k_move_to_reg, m68k_wrap_symbol_into_got_ref): New static
14526         functions.
14527         (legitimize_pic_address): Handle TLS references..
14528         (m68k_tls_get_addr, m68k_get_tls_get_addr)
14529         (m68k_libcall_value_in_a0_p)
14530         (m68k_call_tls_get_addr, m68k_read_tp, m68k_get_m68k_read_tp)
14531         (m68k_call_m68k_read_tp): Helper variables and functions for ...
14532         (m68k_legitimize_tls_address): Handle TLS references.
14533         (m68k_tls_symbol_p, m68k_tls_reference_p_1, m68k_tls_reference_p):
14534         New functions.
14535         (m68k_legitimize_address): Handle TLS symbols.
14536         (m68k_get_reloc_decoration): New static function.
14537         (m68k_output_addr_const_extra): Handle UNSPEC_RELOC16 and
14538         UNSPEC_RELOC32.
14539         (m68k_output_dwarf_dtprel): Implement hook.
14540         (print_operand_address): Handle UNSPEC_RELOC16 adn UNSPEC_RELOC32.
14541         (m68k_libcall_value): Return result in A0 instead of D0 when asked by
14542         m68k_call_* routines.
14543         (sched_attr_op_type): Handle TLS symbols.
14544         (gt-m68k.h): Include.
14545         * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
14546         (LEGITIMATE_PIC_OPERAND_P): Support TLS.
14547
14548 2009-05-18  Martin Jambor  <mjambor@suse.cz>
14549
14550         * ipa-prop.c (ipa_check_stmt_modifications): Removed.
14551         (visit_store_addr_for_mod_analysis): New function.
14552         (ipa_detect_param_modifications): Use walk_stmt_load_store_addr_ops.
14553         (determine_cst_member_ptr): Use gimple_assign_single_p.
14554         (ipa_get_stmt_member_ptr_load_param): Use gimple_assign_single_p.
14555         (ipa_analyze_call_uses): Use !gimple_assign_rhs2 rather than number of
14556         operands.  Don't check number of operands of a NOP_EXPR.
14557
14558 2009-05-18  Eric Fisher  <joefoxreal@gmail.com>
14559
14560         * doc/tree-ssa.texi (SSA Operands): Fix a mistake.
14561
14562 2009-05-17  Manuel López-Ibáñez  <manu@gcc.gnu.org>
14563
14564         PR c/40172
14565         * c-common.c (warn_logical_operator): Don't warn if one of
14566         expression isn't always true or false.
14567
14568 2009-05-17  Kai Tietz  <kai.tietz@onevision.com>
14569
14570         * config/i386/biarch32.h: New file.
14571         * config.gcc: Add for target i386-w64-* the biarch32.h to tm_file.
14572
14573 2009-05-17  Adam Nemet  <anemet@caviumnetworks.com>
14574
14575         * config/mips/mips.md (*zero_extend<mode>_trunchi,
14576         *zero_extend<mode>_truncqi): Merge these into ...
14577         (*zero_extend<GPR:mode>_trunc<SHORT:mode>): ... this new pattern.
14578         Name the pattern following this as *zero_extendhi_truncqi.
14579
14580 2009-05-16  Brad Lucier  <lucier@math.purdue.edu>
14581
14582         PR middle-end/39301
14583         * hwint.h: Add macro HOST_WIDEST_INT_PRINT.
14584         * bitmap.c (bitmap_descriptor): Make fields HOST_WIDEST_INT.
14585         (output_info): Make field HOST_WIDEST_INT.
14586         (print_statistics): Use HOST_WIDEST_INT_PRINT.
14587         (dump_bitmat_statistics): Same.
14588
14589 2009-05-16  Francois-Xavier Coudert  <fxcoudert@gmail.com>
14590
14591         * config.gcc (use_gcc_stdint):  Set to wrap.
14592         * config/darwin.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
14593         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
14594         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
14595         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
14596         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
14597         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
14598         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
14599         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
14600
14601 2009-05-16  Joseph Myers  <joseph@codesourcery.com>
14602
14603         * config.gcc (mips*-*-*): Support arch_32, arch_64, tune_32 and
14604         tune_64.
14605         * config/mips/mips.h (MIPS_ABI_DEFAULT, MULTILIB_ABI_DEFAULT):
14606         Move definitions earlier.
14607         (OPT_ARCH64, OPT_ARCH32): Define.
14608         (OPTION_DEFAULT_SPECS): Add entries for arch_32, arch_64, tune_32
14609         and tune_64.
14610
14611 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
14612
14613         PR target/40153
14614         * arm.md (cstoresi_nltu_thumb1): Use a neg of ltu as the pattern name
14615         implies.
14616
14617 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
14618
14619         * arm.md (movdi2): Copy non-reg values to DImode registers.
14620
14621 2009-05-16  Jakub Jelinek  <jakub@redhat.com>
14622
14623         PR target/39942
14624         * final.c (label_to_max_skip): New function.
14625         (label_to_alignment): Only use LABEL_TO_ALIGNMENT if
14626         CODE_LABEL_NUMBER <= max_labelno.
14627         * output.h (label_to_max_skip): New prototype.
14628         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Renamed to...
14629         (ix86_avoid_jump_mispredicts): ... this.  Don't define if
14630         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.  Update comment.
14631         Handle CODE_LABELs with >= 16 byte alignment or with
14632         max_skip == (1 << align) - 1.
14633         (ix86_reorg): Don't call ix86_avoid_jump_mispredicts if
14634         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.
14635
14636         PR target/39942
14637         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Don't emit second
14638         .p2align 3 if MAX_SKIP is smaller than 7.
14639         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
14640
14641 2009-05-15  Ian Lance Taylor  <iant@google.com>
14642
14643         * alias.c (struct alias_set_entry_d): Rename from struct
14644         alias_set_entry.  Change all uses.
14645         * except.c (struct call_site_record_d): Rename from struct
14646         call_site_record.  Change all uses.
14647         * except.h (struct eh_region_d): Rename from struct eh_region.
14648         Change all uses.
14649         * gcse.c (struct hash_table_d): Rename from struct hash_table.
14650         Change all uses.
14651         * graphite.c (struct ivtype_map_elt_d): Rename fromstruct
14652         ivtype_map_elt.  Change all uses.
14653         (struct rename_map_elt_d): Rename fromstruct rename_map_elt.
14654         Change all uses.
14655         (struct ifsese_d): Rename fromstruct ifsese.  Change all uses.
14656         * graphite.h (struct name_tree_d): Rename from struct name_tree.
14657         Change all uses.
14658         (struct sese_d): Rename from struct sese.  Change all uses.
14659         * omega.h (struct eqn_d): Rename from struct eqn.  Change all uses.
14660         (struct omega_pb_d): Rename from struct omega_pb.  Change all uses.
14661         * optabs.h (struct optab_d): Rename from struct optab.  Change all
14662         uses.
14663         (struct convert_optab_d): Rename from struct convert_optab.
14664         Change all uses.
14665         * tree-pass.h (struct ipa_opt_pass_d): Rename fromstruct
14666         ipa_opt_pass.  Change all uses.
14667         * tree-predcom.c (struct dref_d): Rename from struct dref.  Change
14668         all uses.
14669
14670         * c-decl.c (pushtag): If -Wc++-compat, warn if the tag is already
14671         defined as a typedef.
14672         (grokdeclarator): If -Wc++-compat, warn if a typedef is already
14673         defined as a tag.
14674
14675 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
14676
14677         PR 16302
14678         * fold-const.c (make_range,build_range_check,merge_ranges): Move
14679         declaration to...
14680         (merge_ranges): Returns bool.
14681         * tree.h (make_range): .. to here.
14682         (build_range_check): Likewise.
14683         (merge_ranges): Likewise. Renamed from merge_ranges.
14684         * c-typeck.c (parser_build_binary_op): Update calls to
14685         warn_logical_operator.
14686         * c-common.c (warn_logical_operator): Add new warning.
14687         * c-common.h (warn_logical_operator): Update declaration.
14688
14689 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
14690
14691         * ira-conflicts.c (add_insn_allocno_copies): Fix wrong conditional.
14692
14693 2009-05-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14694
14695         * doc/install.texi: Document MPC requirements, flags etc.
14696
14697         * builtins.c (do_mpc_arg1, fold_builtin_ccos): New.
14698         (fold_builtin_cexp): Ensure we get a complex REAL_TYPE.
14699         Evaluate constant arguments.
14700         (fold_builtin_carg): Ensure we get a complex REAL_TYPE.
14701         (fold_builtin_1): Likewise, also evaluate constant arguments.
14702         Remove superfluous break.
14703         (do_mpc_ckconv): New.
14704         * real.h: Include mpc.h.
14705         * toplev.c (print_version): Output MPC version info if available.
14706
14707 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
14708
14709         * fold-const.c (fold_convert_const_real_from_real): Check for overflow.
14710
14711 2009-05-15  H.J. Lu  <hongjiu.lu@intel.com>
14712
14713         * config/i386/i386.c (ix86_reorg): Call optimize_function_for_speed_p
14714         only once.
14715
14716 2009-05-15  Jan Hubicka  <jh@suse.cz>
14717
14718         * doc/invoke.texi (max-early-inliner-iterations): New flag.
14719         * ipa-inline.c (enum inlining_mode): New INLINE_SIZE_NORECURSIVE.
14720         (try_inline): Fix return value.
14721         (cgraph_decide_inlining_incrementally): Honor new value.
14722         (cgraph_early_inlining): Handle indirect inlining.
14723         * params.def (PARAM_EARLY_INLINER_MAX_ITERATIONS): New.
14724
14725 2009-05-15  Jan Hubicka  <jh@suse.cz>
14726
14727         * cgraph.h (struct cgraph_node): Add finalized_by_frotnend flag.
14728         * cgraphunit.c (cgraph_finalize_function): Set it.
14729         (cgraph_expand_function): Use it.
14730
14731 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
14732
14733         * real.c (encode_ieee_half): Define.
14734         (decode_ieee_half): Define.
14735         (ieee_half_format): Define.
14736         (arm_half_format): Define.
14737         * real.h (ieee_half_format): Declare.
14738         (arm_half_format): Declare.
14739
14740 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
14741
14742         * optabs.c (prepare_float_lib_cmp):  Test that the comparison,
14743         swapped, and reversed optabs exist before trying to use them.
14744
14745 2009-05-15  Paul Brook  <paul@codesourcery.com>
14746             Sandra Loosemore  <sandra@codesourcery.com>
14747
14748         * config/arm/arm.c (neon_vector_mem_operand): Handle element/structure
14749         loads.  Allow PRE_DEC.
14750         (output_move_neon): Handle PRE_DEC.
14751         (arm_print_operand): Add 'A' for neon structure loads.
14752         * config/arm/arm-protos.h (neon_vector_mem_operand): Update prototype.
14753         * config/arm/neon.md (neon_mov): Update comment.
14754         * config/arm/constraints.md (Un, Us): Update neon_vector_mem_operand
14755         calls.
14756         (Um): New constraint.
14757
14758 2009-05-15  Jan Hubicka  <jh@suse.cz>
14759
14760         Revert the following patch until testsuite fallout is fixed:
14761         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
14762         * cgraph.h (struct inline_summary): New filed self_wize,
14763         size_inlining_benefit, self_time and time_inlining_benefit.
14764         (struct cgraph_global_info): Replace insns by time ans size fields.
14765         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
14766         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
14767         (ipcp_update_callgraph): Do not touch function bodies.
14768         * ipa-inline.c: Include except.h
14769         (MAX_TIME): New constant.
14770         (overall_insns): Remove
14771         (overall_size, max_benefit): New static variables.
14772         (cgraph_estimate_time_after_inlining): New function.
14773         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
14774         (cgraph_clone_inlined_nodes): Update size.
14775         (cgraph_mark_inline_edge): Update size.
14776         (cgraph_estimate_growth): Use size info.
14777         (cgraph_check_inline_limits): Check size.
14778         (cgraph_default_inline_p): Likewise.
14779         (cgraph_edge_badness): Compute badness based on benefit and size cost.
14780         (cgraph_decide_recursive_inlining): Check size.
14781         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
14782         and times.
14783         (cgraph_decide_inlining): Likewise.
14784         (cgraph_decide_inlining_incrementally): Likewise; honor
14785         PARAM_EARLY_INLINING_INSNS.
14786         (likely_eliminated_by_inlining_p): New predicate.
14787         (estimate_function_body_sizes): New function.
14788         (compute_inline_parameters): Use it.
14789         * except.c (must_not_throw_labels): New function.
14790         * except.h (must_not_throw_labels): Declare.
14791         * tree-inline.c (init_inline_once): Kill inlining_weigths
14792         * tree-ssa-structalias.c: Avoid uninitialized warning.
14793         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
14794         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
14795         (PARAM_INLINE_CALL_COST): Remove.
14796         (PARAM_EARLY_INLINING_INSNS): New.
14797
14798 2009-05-15  Richard Guenther  <rguenther@suse.de>
14799
14800         * tree-ssa-pre.c (eliminate): Use TODO_update_ssa_only_virtuals,
14801         not TODO_update_ssa.
14802
14803 2009-05-15  Richard Guenther  <rguenther@suse.de>
14804
14805         PR tree-optimization/39999
14806         * gimple.h (gimple_expr_type): Use the expression type looking
14807         through useless conversions.
14808         * tree-ssa-sccvn.c (vn_nary_op_lookup_stmt): Use gimple_expr_type.
14809         (vn_nary_op_insert_stmt): Likewise.
14810         (simplify_binary_expression): Likewise.
14811
14812 2009-05-15  Richard Guenther  <rguenther@suse.de>
14813
14814         * common.opt (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
14815         New options, enabled by default.
14816         * doc/invoke.texi (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
14817         Document.
14818         * tree-ssa-forwprop.c (gate_forwprop): Use flag_tree_forwprop.
14819         * tree-ssa-phiprop.c (gate_phiprop): Use flag_tree_phiprop.
14820         * tree-ssa-structalias.c (gate_tree_pta): New function.
14821         (pass_build_alias): Use it.
14822
14823 2009-05-15  Joseph Myers  <joseph@codesourcery.com>
14824
14825         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also
14826         recurse on an invariant address if a conversion from a pointer
14827         type to a wider integer type is involved.
14828
14829 2009-05-15  Jan Hubicka  <jh@suse.cz>
14830
14831         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
14832         * cgraph.h (struct inline_summary): New filed self_wize,
14833         size_inlining_benefit, self_time and time_inlining_benefit.
14834         (struct cgraph_global_info): Replace insns by time ans size fields.
14835         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
14836         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
14837         (ipcp_update_callgraph): Do not touch function bodies.
14838         * ipa-inline.c: Include except.h
14839         (MAX_TIME): New constant.
14840         (overall_insns): Remove
14841         (overall_size, max_benefit): New static variables.
14842         (cgraph_estimate_time_after_inlining): New function.
14843         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
14844         (cgraph_clone_inlined_nodes): Update size.
14845         (cgraph_mark_inline_edge): Update size.
14846         (cgraph_estimate_growth): Use size info.
14847         (cgraph_check_inline_limits): Check size.
14848         (cgraph_default_inline_p): Likewise.
14849         (cgraph_edge_badness): Compute badness based on benefit and size cost.
14850         (cgraph_decide_recursive_inlining): Check size.
14851         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
14852         and times.
14853         (cgraph_decide_inlining): Likewise.
14854         (cgraph_decide_inlining_incrementally): Likewise; honor
14855         PARAM_EARLY_INLINING_INSNS.
14856         (likely_eliminated_by_inlining_p): New predicate.
14857         (estimate_function_body_sizes): New function.
14858         (compute_inline_parameters): Use it.
14859         * except.c (must_not_throw_labels): New function.
14860         * except.h (must_not_throw_labels): Declare.
14861         * tree-inline.c (init_inline_once): Kill inlining_weigths
14862         * tree-ssa-structalias.c: Avoid uninitialized warning.
14863         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
14864         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
14865         (PARAM_INLINE_CALL_COST): Remove.
14866         (PARAM_EARLY_INLINING_INSNS): New.
14867         doc/invoke.texi (max-inline-insns-auto, early-inlining-insns): Update.
14868         (inline-call-cost): Remove.
14869         (early-inlining-insns): New.
14870
14871 2009-05-15  Eric Botcazou  <ebotcazou@adacore.com>
14872
14873         * dbxout.c (dbxout_range_type): Add LOW and HIGH parameters.  Use them
14874         for bounds.
14875         (print_int_cst_bounds_in_octal_p): Likewise.
14876         (dbxout_type): Adjust calls to above functions.  Be prepared to deal
14877         with subtypes.
14878         * dwarf2out.c (base_type_die): Likewise.
14879         (is_subrange_type): Delete.
14880         (subrange_type_die): Add LOW and HIGH parameters.  Use them for bounds.
14881         (modified_type_die): Call subrange_type_for_debug_p on subtypes.
14882         * fold-const.c (fold_truth_not_expr) <CONVERT_EXPR>: Do not strip it
14883         if the destination type is boolean.
14884         (build_range_check): Do not special-case subtypes.
14885         (fold_sign_changed_comparison): Likewise.
14886         (fold_unary): Likewise.
14887         * langhooks-def.h (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define.
14888         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_GET_SUBRANGE_BOUNDS.
14889         * langhooks.h (lang_hooks_for_types): Add get_subrange_bounds.
14890         * tree.c (subrange_type_for_debug_p): New predicate based on the
14891         former is_subrange_type.
14892         * tree.h (subrange_type_for_debug_p): Declare.
14893         * tree-chrec.c (avoid_arithmetics_in_type_p): Delete.
14894         (convert_affine_scev): Remove call to above function.
14895         (chrec_convert_aggressive): Likewise.
14896         * tree-ssa.c (useless_type_conversion_p_1): Do not specifically return
14897         false for conversions involving subtypes.
14898         * tree-vrp.c (vrp_val_max): Do not special-case subtypes.
14899         (vrp_val_min): Likewise.
14900         (needs_overflow_infinity): Likewise.
14901         (extract_range_from_unary_expr): Likewise.
14902
14903 2009-05-15  Paolo Bonzini  <bonzini@gnu.org>
14904
14905         * config/frv/frv.h: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
14906         * config/frv/frv.c: Likewise.
14907         * config/s390/s390.c: Likewise.
14908         * config/sparc/sparc.h: Likewise.
14909         * config/i386/i386.h: Likewise.
14910         * config/i386/i386.c: Likewise.
14911         * config/crx/crx.c: Likewise.
14912         * config/m68hc11/m68hc11.h: Likewise.
14913         * config/iq2000/iq2000.c: Likewise.
14914         * config/mn10300/mn10300.h: Likewise.
14915         * config/mn10300/mn10300.c: Likewise.
14916         * config/m68k/m68k.c: Likewise.
14917         * config/rs6000/rs6000.c: Likewise.
14918         * config/rs6000/xcoff.h: Likewise.
14919         * config/rs6000/linux64.h: Likewise.
14920         * config/rs6000/sysv4.h: Likewise.
14921         * config/score/score3.c: Likewise.
14922         * config/score/score7.c: Likewise.
14923         * config/score/score.c: Likewise.
14924         * config/arm/arm.md: Likewise.
14925         * config/mips/mips.c: Likewise.
14926         * config/mips/mips.md: Likewise.
14927         * config/bfin/bfin.h: Likewise.
14928         * config/pa/pa.c: Likewise.
14929         * config/pa/constraints.md: Likewise.
14930
14931         * config/pdp11/pdp11-protos.h (legitimate_address_p): Delete.
14932         * config/pdp11/pdp11.c (legitimate_address_p): Delete.
14933         * config/pdp11/pdp11.h: Use memory_address_p instead.
14934
14935 2009-05-14  Ian Lance Taylor  <iant@google.com>
14936
14937         * passes.c (finish_optimization_passes): Change i to int.
14938         * plugin.c (plugins_active_p): Change event to int.
14939         (dump_active_plugins): Likewise.
14940         * reginfo.c (invalid_mode_change_p): Change to to unsigned int.
14941         Add cast.
14942         * tree.c (tree_range_check_failed): Change c to unsigned int.
14943         (omp_clause_range_check_failed): Likewise.
14944         (build_common_builtin_nodes): Change mode to int.  Add cast.
14945         * config/ia64/ia64.c (is_emitted): Change r to unsigned int.
14946         (ia64_hard_regno_rename_ok, ia64_eh_uses): Likewise.
14947
14948         * c-typeck.c (build_unary_op): If -Wc++-compat, warn about using
14949         ++ or -- with a variable of enum type.
14950
14951 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
14952
14953         PR driver/40144
14954         * opts.c (common_handle_option): Add OPT_fcse_skip_blocks as a no-op.
14955
14956 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
14957
14958         * store-motion.c: Do not include params.h
14959         * Makefile.in: Fix dependencies for various files.
14960
14961 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
14962
14963         * auto-inc-dec.c: Fix pass description, remove apparent
14964         accidental duplication.
14965
14966 2009-05-14  H.J. Lu  <hongjiu.lu@intel.com>
14967
14968         PR middle-end/40147
14969         * ipa-utils.h (memory_identifier_string): Moved to ...
14970         * tree.h (memory_identifier_string): Here.  Add GTY(()).
14971
14972 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
14973
14974         * doc/tm.texi (TARGET_LEGITIMATE_ADDRESS_P): Refer mainly to this
14975         in the former documentation of...
14976         (GO_IF_LEGITIMATE_ADDRESS): ... this.
14977         * ira-conflicts.c (get_dup_num): Use address_operand.
14978         * targhooks.c (default_legitimate_address_p): New.
14979         * targhooks.h (default_legitimate_address_p): New.
14980         * reload.c (strict_memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]:
14981         Call hook.
14982         * recog.c (memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]: Call hook.
14983         * target.h (struct target): Add legitimate_address_p.
14984         * target-def.h (TARGET_LEGITIMATE_ADDRESS_P): New.
14985         (TARGET_INITIALIZER): Include it.
14986
14987         * config/alpha/alpha.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14988         * config/alpha/alpha-protos.h (alpha_legitimate_address_p): Remove.
14989         * config/alpha/alpha.c (alpha_legitimate_address_p): Make static.
14990         (TARGET_LEGITIMATE_ADDRESS_P): New.
14991
14992         * config/frv/frv.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14993         (REG_OK_STRICT_P): Delete.
14994         * config/frv/frv-protos.h (frv_legitimate_address_p): Rename to...
14995         (frv_legitimate_address_p_1): ... this.
14996         * config/frv/frv.c (frv_legitimate_address_p): Forward to...
14997         (frv_legitimate_address_p_1): ... the renamed old
14998         frv_legitimate_address_p.
14999         * config/frv/predicates.md: Adjust calls to frv_legitimate_address_p.
15000         (TARGET_LEGITIMATE_ADDRESS_P): New.
15001
15002         * config/s390/s390.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
15003         * config/s390/s390-protos.h (legitimate_address_p): Remove.
15004         * config/s390/s390.c (legitimate_address_p): Rename to...
15005         (s390_legitimate_address_p): ... this, make static.
15006         (legitimize_address): Adjust call.
15007         (TARGET_LEGITIMATE_ADDRESS_P): New.
15008         * config/s390/constraints.md ("e"): Call strict_memory_address_p.
15009
15010         * config/m32c/m32c.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
15011         * config/m32c/m32c-protos.h (m32c_legitimate_address_p): Remove.
15012         * config/m32c/m32c.c (m32c_legitimate_address_p): Make static.
15013         (TARGET_LEGITIMATE_ADDRESS_P): New.
15014
15015         * config/spu/spu.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
15016         * config/spu/spu-protos.h (spu_legitimate_address): Remove.
15017         * config/spu/spu.c (spu_legitimate_address): Rename to...
15018         (spu_legitimate_address_p): ... this, make static.
15019         (TARGET_LEGITIMATE_ADDRESS_P): New.
15020
15021         * config/sparc/sparc.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
15022         * config/sparc/sparc-protos.h (legitimate_address_p): Remove.
15023         * config/sparc/sparc.c (legitimate_address_p): Rename to...
15024         (sparc_legitimate_address_p): ... this, make static and return bool.
15025         (legitimize_address): Adjust call.
15026         (TARGET_LEGITIMATE_ADDRESS_P): New.
15027
15028         * config/i386/i386.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
15029         * config/i386/i386-protos.h (legitimate_address_p): Remove.
15030         * config/i386/i386.c (legitimate_address_p): Rename to...
15031         (ix86_legitimate_address_p): ... this, make static.
15032         (constant_address_p): Move after it, adjust call.
15033         (TARGET_LEGITIMATE_ADDRESS_P): New.
15034
15035         * config/avr/avr.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
15036         * config/avr/avr-protos.h (legitimate_address_p): Remove.
15037         * config/avr/avr.c (legitimate_address_p): Rename to...
15038         (avr_legitimate_address_p): ... this, make static.
15039         (legitimize_address): Adjust call.
15040         (TARGET_LEGITIMATE_ADDRESS_P): New.
15041
15042         * config/crx/crx.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
15043         * config/crx/crx-protos.h (crx_legitimate_address_p): Remove.
15044         * config/crx/crx.c (crx_legitimate_address_p): Make static.
15045         (TARGET_LEGITIMATE_ADDRESS_P): New.
15046
15047         * config/xtensa/xtensa.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
15048         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): Remove.
15049         * config/xtensa/xtensa.c (xtensa_legitimate_address_p): Make static.
15050         (TARGET_LEGITIMATE_ADDRESS_P): New.
15051
15052         * config/stormy16/stormy16.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
15053         * config/stormy16/stormy16-protos.h (xstormy16_legitimate_address_p):
15054         Remove.
15055         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p):
15056         Make static.
15057         (TARGET_LEGITIMATE_ADDRESS_P): New.
15058
15059         * config/m68hc11/m68hc11.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
15060         * config/m68hc11/m68hc11-protos.h (m68hc11_go_if_legitimate_address):
15061         Remove.
15062         * config/m68hc11/m68hc11.c (m68hc11_go_if_legitimate_address):
15063         Rename to...
15064         (m68hc11_legitimate_address_p): ... this, make static.
15065         (go_if_legitimate_address_internal): Rename to...
15066         (m68hc11_legitimate_address_p_1): ... this.
15067         (legitimize_address): Adjust call.
15068         (TARGET_LEGITIMATE_ADDRESS_P): New.
15069
15070         * config/iq2000/iq2000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
15071         * config/iq2000/iq2000-protos.h (iq2000_legitimate_address_p): Remove.
15072         * config/iq2000/iq2000.c (iq2000_legitimate_address_p): Make static.
15073         (TARGET_LEGITIMATE_ADDRESS_P): New.
15074
15075         * config/mn10300/mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
15076         * config/mn10300/mn10300-protos.h (legitimate_address_p): Remove.
15077         * config/mn10300/mn10300.c (legitimate_address_p): Rename to...
15078         (mn10300_legitimate_address_p): ... this, make static.
15079         (TARGET_LEGITIMATE_ADDRESS_P): New.
15080
15081         * config/m68k/m68k.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
15082         * config/m68k/m68k-protos.h (m68k_legitimate_address_p): Remove.
15083         * config/m68k/m68k.c (m68k_legitimate_address_p): Make static.
15084         (TARGET_LEGITIMATE_ADDRESS_P): New.
15085
15086         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
15087         (REG_OK_STRICT_FLAG, REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P): Delete.
15088         (INT_REG_OK_FOR_BASE_P, INT_REG_OK_FOR_INDEX_P): Move above.
15089         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
15090         * config/rs6000/rs6000-protos.h (rs6000_legitimate_address): Remove.
15091         * config/rs6000/rs6000.c (rs6000_legitimate_address): Rename to...
15092         (rs6000_legitimate_address_p): ... this, make static.
15093         (TARGET_LEGITIMATE_ADDRESS_P): New.
15094         (REG_MODE_OK_FOR_BASE_P): Delete.
15095         (rs6000_legitimize_reload_address): Use INT_REG_OK_FOR_BASE_P.
15096
15097         * config/picochip/picochip.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
15098         * config/picochip/picochip-protos.h (picochip_legitimate_address_p):
15099         Delete.
15100         * config/picochip/picochip.c (picochip_legitimate_address_p): Make
15101         static, adjust types.
15102         (TARGET_LEGITIMATE_ADDRESS_P): New.
15103
15104         * config/score/score.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
15105         * config/score/score.c (score_address_p): Rename to...
15106         (score_legitimate_address_p): ... this.
15107         (TARGET_LEGITIMATE_ADDRESS_P): New.
15108         * config/score/score3.c (score3_address_p): Rename to...
15109         (score3_legitimate_address_p): ... this.
15110         * config/score/score7.c (score7_address_p): Rename to...
15111         (score7_legitimate_address_p): ... this.
15112
15113         * config/arm/arm.h (ARM_GO_IF_LEGITIMATE_ADDRESS,
15114         THUMB2_GO_IF_LEGITIMATE_ADDRESS, THUMB1_GO_IF_LEGITIMATE_ADDRESS,
15115         GO_IF_LEGITIMATE_ADDRESS): Delete.
15116         * config/arm/arm-protos.h (thumb1_legitimate_address_p,
15117         thumb2_legitimate_address_p): Delete.
15118         (arm_legitimate_address_p): Rename to...
15119         (arm_legitimate_address_outer_p): ... this.
15120         * config/arm/constraints.md ("Uq"): Adjust call.
15121         * config/arm/predicates.md (arm_extendqisi_mem_op): Likewise.
15122         * config/arm/arm.c (arm_legitimate_address_p): New, rename old one
15123         to...
15124         (arm_legitimate_address_outer_p): ... this.
15125         (thumb1_legitimate_address_p, thumb2_legitimate_address_p): Make
15126         static.
15127         (TARGET_LEGITIMATE_ADDRESS_P): New.
15128
15129         * config/mips/mips.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
15130         * config/mips/mips-protos.h (mips_legitimate_address_p): Remove.
15131         * config/mips/mips.c (mips_legitimate_address_p): ... Make static.
15132         (TARGET_LEGITIMATE_ADDRESS_P): New.
15133
15134         * config/vax/vax.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
15135         * config/vax/vax-protos.h (legitimate_address_p): Remove.
15136         * config/vax/vax.c (legitimate_address_p): Rename to...
15137         (vax_legitimate_address_p): ... this, make static.
15138         (TARGET_LEGITIMATE_ADDRESS_P): New.
15139
15140         * config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
15141         * config/h8300/h8300-protos.h (h8300_legitimate_address_p): Remove.
15142         * config/h8300/h8300.c (h8300_legitimate_address_p): ... Make static.
15143         (TARGET_LEGITIMATE_ADDRESS_P): New.
15144
15145         * config/mmix/mmix.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
15146         * config/mmix/mmix-protos.h (mmix_legitimize_address): Remove.
15147         * config/mmix/mmix.c (mmix_legitimate_address): Rename to...
15148         (mmix_legitimate_address_p): ... this, make static.
15149         (TARGET_LEGITIMATE_ADDRESS_P): New.
15150
15151         * config/bfin/bfin.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
15152         * config/bfin/bfin-protos.h (bfin_legitimate_address_p): Remove.
15153         * config/bfin/bfin.c (bfin_legitimate_address_p): ... Make static.
15154         (TARGET_LEGITIMATE_ADDRESS_P): New.
15155
15156 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
15157
15158         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Remove handling
15159         of MODE_COMPLEX_INT.
15160
15161 2009-05-14  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
15162
15163         * config/alpha/alpha.c (alpha_initialize_trampoline): Change 0 to
15164         LCT_NORMAL in function call.
15165         * mips-tdump.c (print_file_desc): Add cast to enum type.
15166         * mips-tfile.c (add_ext_symbol): Add casts to enum types.
15167         (mark_stabs): Add casts to enum types.
15168         (parse_stabs_common): Add casts to enum types.
15169
15170 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
15171
15172         * config/mips/mips.c (mips_print_operand) <REG, MEM, default>:
15173         Check for invalid values of LETTER.
15174
15175 2009-05-13  Taras Glek  <tglek@mozilla.com>
15176
15177         * attribs.c (register_attribute): moved out attribute registration
15178         into register_attribute.
15179         * doc/plugins.texi: Documented register_attribute and
15180         PLUGIN_ATTRIBUTES.
15181         * gcc-plugin.h: Added forward decl for register_attribute.
15182         * gcc-plugin.h (plugins_event): Added PLUGIN_ATTRIBUTES.
15183         * plugin.c (register_callback, invoke_plugin_callbacks): Added
15184         PLUGIN_ATTRIBUTES boilerplate.
15185
15186 2009-05-14  Dave Korn  <dave.korn.cygwin@gmail.com>
15187
15188         * config/i386/msformat-c.c (ms_printf_length_specs):  Use enumeration
15189         values even in sentinel and empty entries.
15190         (ms_printf_flag_specs):  Likewise.
15191         (ms_scanf_flag_specs):  Likewise.
15192         (ms_strftime_flag_specs):  Likewise.
15193         (ms_print_char_table):  Likewise.
15194         (ms_scan_char_table):  Likewise.
15195         (ms_time_char_table):  Likewise.
15196
15197 2009-05-13  Doug Kwan  <dougkwan@google.com>
15198
15199         * tree-ssa-sccvn.c (compare_ops): Stabilize qsort.
15200
15201 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
15202
15203         * config/mips/mips.md (store): Add attributes for QI and HI.
15204         Update comment.
15205         (truncdisi2, truncdihi2, truncdiqi2): Merge these into ...
15206         (truncdi<mode>2): ... this new pattern.
15207
15208 2009-05-13  Brad Hards  <bradh@kde.org>
15209
15210         * Makefile.in (TEXI_GCCINT_FILES): Add plugins.texi.
15211
15212 2009-05-14  Jakub Jelinek  <jakub@redhat.com>
15213             Ben Elliston <bje@au.ibm.com>
15214
15215         PR middle-end/40035
15216         * dse.c (check_mem_read_rtx): Guard against width == -1.
15217
15218 2009-05-13  Michael Matz  <matz@suse.de>
15219
15220         PR middle-end/39976
15221         * tree-outof-ssa.c (maybe_renumber_stmts_bb): New function.
15222         (trivially_conflicts_p): New function.
15223         (insert_backedge_copies): Use it.
15224
15225 2009-05-13  Janis Johnson  <janis187@us.ibm.com>
15226
15227         * c-pragma.c (enum pragma_switch_t): Prefix constants with PRAGMA_.
15228         (handle_stdc_pragma): Use new enum constant names.
15229         (handle_pragma_float_const_decimal64): Ditto.
15230
15231 2009-05-13  Ian Lance Taylor  <iant@google.com>
15232
15233         * Makefile.in (build/gencheck.o): Depend upon all-tree.def, not
15234         tree.def.
15235
15236 2009-05-13  Nathan Sidwell  <nathan@codesourcery.com>
15237
15238         * config/m68k/t-uclinux (M68K_MLIB_CPU): Check for FL_UCLINUX.
15239         * config/m68k/m68k-devices.def: Add FL_UCLINUX to 68020 and 54455
15240         multilibs.
15241         * config/m68k/m68k.h (FL_UCLINUX): Define.
15242
15243 2009-05-13  Jan Hubicka  <jh@suse.cz>
15244
15245         * options.c (gfc_post_options): -fwhole-program imply -fwhole-file.
15246
15247 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
15248
15249         * config/sh/sh.h (OVERRIDE_OPTIONS): Clear flag_schedule_insns
15250         unless -fschedule-insns is specified.
15251
15252 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
15253
15254         PR target/39561
15255         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Don't set
15256         TARGET_EXPAND_CBRANCHDI4.
15257         * config/sh/sh.md (cbranchdi4): Don't check TARGET_EXPAND_CBRANCHDI4.
15258         * config/sh/sh.opt (mexpand-cbranchdi): Remove.
15259         (cmpeqdi): Fix comment.
15260
15261 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
15262
15263         * config/sh/sh-protos.h (sh_legitimate_index_p): Declare.
15264         (sh_legitimate_address_p): Likewise.
15265         * config/sh/sh.c (sh_legitimate_index_p): New.
15266         (sh_legitimate_address_p): Likewise.
15267         * config/sh/sh.h (REG_OK_FOR_BASE_P): Add STRICT parameter.
15268         (REG_OK_FOR_INDEX_P, SUBREG_OK_FOR_INDEX_P): Likewise.
15269         (MODE_DISP_OK_4, MODE_DISP_OK_8): Remove.
15270         (MAYBE_BASE_REGISTER_RTX_P): New macro.
15271         (MAYBE_INDEX_REGISTER_RTX_P): Likewise.
15272         (BASE_REGISTER_RTX_P): Use MAYBE_BASE_REGISTER_RTX_P.
15273         (INDEX_REGISTER_RTX_P): Use MAYBE_INDEX_REGISTER_RTX_P.
15274         (GO_IF_LEGITIMATE_INDEX): Use sh_legitimate_index_p.
15275         (GO_IF_LEGITIMATE_ADDRESS): Use sh_legitimate_address_p.
15276
15277 2009-05-12  Jan Hubicka  <jh@suse.cz>
15278
15279         * tree-inline.c (estimate_operator_cost): Add operands;
15280         when division happens by constant, it is cheap.
15281         (estimate_num_insns): Loads and stores are not having cost of 0;
15282         EH magic stuff is cheap; when computing runtime cost of switch,
15283         use log2 base of amount of its cases; builtin_expect has cost of 0;
15284         compute cost for moving return value of call.
15285         (init_inline_once): Initialize time_based flags.
15286         * tree-inline.h (eni_weights_d): Add time_based flag.
15287
15288 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
15289
15290         * df-core.c: Update head documentation.
15291
15292 2009-05-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
15293
15294         PR bootstrap/40118
15295         * rs6000.c (rs6000_generate_compare): Use op1b instead of
15296         shadowing exisiting variable op1.
15297
15298 2009-05-12  Uros Bizjak  <ubizjak@gmail.com>
15299
15300         PR target/37179
15301         * config/i386/driver-i386.c (processor_signatures): New enum.
15302         (SIG_GEODE): Move from vendor_signatures to processor_signatures.
15303         (host_detect_local_cpu): For SIG_AMD vendor, check for SIG_GEODE
15304         processor signature to detect geode processor.
15305
15306 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
15307
15308         Revert:
15309
15310         2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
15311
15312         * optabs.c (prepare_cmp_insn): Temporarily disable test that
15313         causes spurious differences between trunk and cond-optab branch.
15314
15315 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
15316
15317         * dojump.c (compare_from_rtx): Delete.
15318         * expmed.c (emit_store_flag): Only try cstore_optab.  Canonicalize
15319         any MODE_CC mode to the cstorecc4 pattern.  Use prepare_operand, fail
15320         if the comparison does not satisfy the predicate; test predicates for
15321         operands 2 and 3 of a cstore pattern.  Don't try cstore optab
15322         further if one existing pattern fails.
15323         * expr.h (compare_from_rtx): Delete.
15324         (prepare_operand): Declare it.
15325         * optabs.c: Change "lib call" to "libcall" throughout.
15326         (bcc_gen_fctn, setcc_gen_code, trap_rtx,
15327         HAVE_conditional_trap, emit_cmp_insn): Delete.
15328         (can_compare_p): Delete cmp_optab case.
15329         (prepare_float_lib_cmp): Return an rtx and a machine mode.
15330         Accept other parameters by value.
15331         (prepare_operand): Make non-static.
15332         (prepare_cmp_insn): Return an rtx and a machine mode.  Accept
15333         other parameters by value.  Try to widen operands here based on
15334         an optab_methods argument and looking at cbranch_optab.
15335         (emit_cmp_and_jump_insn_1): Accept test and mode, remove widening
15336         loop.  Use cbranch_optab directly.
15337         (emit_cmp_and_jump_insns): Fix comment.  Adjust call to
15338         prepare_cmp_insn and emit_cmp_and_jump_insn_1, remove obsolete
15339         assertion.
15340         (emit_conditional_move, emit_conditional_add): Inline what's needed
15341         of compare_from_rtx, using new prepare_cmp_insn for the rest.
15342         (init_optabs): Init cmp_optab with UNKNOWN, cbranch_optab
15343         with COMPARE.  Move cmov_optab and cstore_optab above
15344         with cbranch_optab, move cmp_optab down with ucmp_optab,
15345         remove tst_otpab.  Do not initialize trap_rtx.
15346         (gen_cond_trap): Do it here.  Use ctrap_optab.  Test predicate
15347         for trap code.  Do not check HAVE_conditional_trap.  Use
15348         prepare_cmp_insn.  Accept no predicate for operand 3.
15349         * optabs.h (OTI_cmp): Mark as used only for libcalls.
15350         (OTI_ctrap, ctrap_optab): New.
15351         (tst_optab): Delete.
15352         (bcc_gen_fctn, setcc_gen_code, emit_cmp_insn): Delete.
15353         * ifcvt.c (find_if_header): Replace HAVE_conditional_trap
15354         with lookup of ctrap_optab.
15355         * genopinit.c (cmp_optab, tst_optab, bcc_gen_fctn, setcc_gen_code):
15356         Delete.
15357         (ctrap_optab): New.
15358
15359         * combine.c (combine_simplify_rtx, simplify_set): Do not
15360         special case comparing against zero for cc0 machines.
15361         * simplify-rtx.c (simplify_binary_operation_1): Never remove
15362         COMPARE on cc0 machines.
15363         (simplify_relational_operation): Return a new expression when
15364         a COMPARE could be removed.
15365         * final.c (final_scan_insn): Compare cc_status values
15366         against LHS of a (compare FOO (const_int 0)) cc0 source.
15367         Also check if cc_status.value is the full compare.
15368
15369         * doc/md.texi (bCC, sCC, tstMM, cmpMM): Delete.
15370         (cstoreMM4): Document.
15371         (conditional_trap): Document ctrapMM4 instead.
15372         (sync_compare_and_swapMM): Refer to cbranchcc4.
15373         (Dependent Patterns): Eliminate obsolete information referring to
15374         the old jump optimization phase.
15375         (Canonicalization): Include cbranchcc4 case, omit canonicalization
15376         of compares with 0 on cc0 machines.
15377         (Jump Patterns): Refer to MODE_CC jump patterns preferably,
15378         avoiding references to cc0.  Remove text about storing operands
15379         in cmpMM.
15380         * doc/tm.texi (Condition Codes): Include blurb on different
15381         condition code representations, separate into subsections for
15382         CC0, MODE_CC and conditional execution.
15383
15384         * config/alpha/alpha-protos.h (alpha_emit_conditional_branch,
15385         alpha_emit_setcc): Accept operands and a machine mode.
15386         * config/alpha/alpha.c (alpha_emit_conditional_branch):
15387         Get code/op0/op1 from operands, use machine mode argument
15388         instead of alpha_compare.fp_p.  Emit the branch here.
15389         (alpha_emit_setcc): Likewise, and return boolean.
15390         (alpha_emit_conditional_move): Likewise.  Assert that
15391         cmp_op_mode == cmp_mode, and simplify accordingly.
15392         * config/alpha/alpha.h (struct alpha_compare, alpha_compare): Delete.
15393         * config/alpha/alpha.md (cmpdf, cmptf, cmpdi, bCC, sCC): Delete.
15394         (cbranchdf4, cbranchtf4, cbranchdi4, cstoredf4, cstoretf4,cstoredi4):
15395         Delete.
15396         (stack probe test): Use cbranchdi4.
15397         * config/alpha/predicates.md (alpha_cbranch_operator): New.
15398
15399         * config/arc/arc.c (gen_compare_reg): Do not emit cmp.
15400         * config/arc/arc.h (movsicc, movsfcc): Use it.
15401         (movdicc, *movdicc_insn, movdfcc, *movdfcc_insn): Remove.
15402         (cbranchsi4, cstoresi4): New.
15403         (cmpsi, bCC and sCC expanders): Remove.
15404
15405         * config/arm/arm.c (arm_compare_op0, arm_compare_op1): Delete.
15406         * config/arm/arm.h (arm_compare_op0, arm_compare_op1): Delete.
15407         * config/arm/predicates.md (arm_comparison_operator): Only include
15408         floating-point operators if there is a hardware floating-point unit.
15409         * config/arm/arm.md (cbranchsi4, cstoresi4): Enable for TARGET_32BIT,
15410         deferring to cbranch_cc and cstore_cc respectively.
15411         (cbranchsf4, cbranchdf4, cbranchdi4, cstoresf4, cstoredf4, cstoredi4,
15412         cbranch_cc, cstore_cc): New.
15413         (movsicc, movsfcc, movdfcc): Do not use arm_compare_op0 and
15414         arm_compare_op1.
15415         (bCC, sCC, cmpsi, cmpsf, cmpdf, cmpdi): Delete.
15416
15417         * config/avr/avr-protos.h (out_tstsi, out_tsthi): Adjust prototype.
15418         * config/avr/avr.c (out_tstsi, out_tsthi): Get the tested operand
15419         as an argument.
15420         (adjust_insn_length): Adjust calls.
15421         (avr_reorg): Handle (compare (foo) (const_int 0)).
15422         * config/avr/avr.md (tstqi, tsthi, tstsi): Remove.
15423         (*negated_tstqi, *negated_tsthi, *negated_tstsi): Unmacroize.
15424         (*reversed_tsthi, *reversed_tstsi): Add a scratch for simplicity.
15425         (cmpqi, cmphi, cmpsi): Prepend asterisk, fuse tst[qhs]i here.
15426         (bCC): Remove.
15427         (cbranchqi4, cbranchhi4, cbranchsi4): New.
15428         (tst -> sbrc/sbrs peephole2, cpse peephole): Wrap RHS with COMPARE.
15429
15430         * config/bfin/bfin.md (cmpbi, cmpsi, bCC, sCC): Delete.
15431         (cbranchsi4, cstorebi4, cstoresi4): New.
15432         (movbisi): This insn is duplicate, split it to zero_extend.
15433         * config/bfin/bfin.c (bfin_compare_op0, bfin_compare_op1): Delete
15434         (bfin_gen_compare): Do not use them.  Emit VOIDmode SET, not BImode.
15435         (bfin_optimize_loop): Use cbranch expander.
15436         * config/bfin/bfin.h (bfin_compare_op0, bfin_compare_op1): Delete.
15437         * config/bfin/predicates.md (bfin_cbranch_operator): Rename to...
15438         (bfin_bimode_comparison_operator): ... this.
15439         (bfin_direct_comparison_operator): New.
15440
15441         * config/cris/cris.c (cris_normal_notice_update_cc): Look
15442         inside (compare FOO (const_int 0)).
15443         (cris_rtx_costs): Handle ZERO_EXTRACT.
15444         * config/cris/cris.md (tstdi, tst<mode>, cmpdi): Delete.
15445         (*tstdi_non_v32): Fold in *cmpdi_non_v32.
15446         (*tstdi_v32): Delete.
15447         (*cmpdi_non_v32): Add M alternative for operand 1.
15448         (cmpsi, cmp<mode>): Make private.
15449         (*tstsi, *tst<mode>_cmp, *tst<mode>_non_cmp, *btst): Wrap LHS
15450         with COMPARE.
15451         (cbranch<mode>4, cbranchdi4, cstore<mode>4): New.
15452
15453         * config/crx/crx.md (cstore<mode>4, cbranchcc4): New.
15454         (cmp<mode>, bCOND_internal, b<code>, s<code>): Delete.
15455         (cbranch<mode>4, sCOND_internal): Use ordered_comparison_operator.
15456         (cc_reg_operand): New.
15457         (any_cond): Delete.
15458         * config/crx/crx.c (crx_compare_op0, crx_compare_op1,
15459         crx_expand_compare, crx_expand_branch, crx_expand_scond): Delete.
15460         * config/crx/crx.h (crx_compare_op0, crx_compare_op1): Delete.
15461         * config/crx/crx-protos.h (crx_expand_compare, crx_expand_branch,
15462         crx_expand_scond): Delete.
15463
15464         * config/fr30/fr30.md (cmp<mode>, bCC): Delete.
15465         (cbranchsi4): New.
15466         * config/fr30/fr30.c (fr30_compare_op0, fr30_compare_op1): Delete
15467         * config/fr30/fr30.h (fr30_compare_op0, fr30_compare_op1): Delete.
15468
15469         * config/frv/frv.md (cbranchsi4, cbranchsf4, cbranchdf4,
15470         cstoresi4, cstoresf4, cstoredf4): New.
15471         (cmpdi, cmpsi, cmpsf, cmpdf, bCC, sCC): Remove.
15472         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
15473         Receive the entire operands array.
15474         * config/frv/frv.h (frv_compare_op0, frv_compare_op1): Delete.
15475         * config/frv/frv.c (frv_compare_op0, frv_compare_op1): Delete.
15476         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
15477         Get test/op0/op1 from the operands array.
15478         (frv_emit_cond_move): Get test/op0/op1 from the test_rtx.
15479
15480         * config/h8300/h8300-protos.h (h8300_expand_branch): Accept operands.
15481         (h8300_expand_store): New.
15482         * config/h8300/h8300.c (h8300_rtx_costs): Handle (compare FOO
15483         (const_int 0)).
15484         (h8300_expand_branch): Emit compare here.  Adjust for new arguments.
15485         (h8300_expand_store): New.
15486         * config/h8300/h8300.md (btst combine patterns): Wrap with COMPARE
15487         or do not try to produce (set (cc0) REG).
15488         (peepholes): Wrap arguments with COMPARE.  Add a peephole to
15489         change a compare into a move to a scratch register.  Disable some
15490         peepholes when comparing with zero.
15491         (tstsi, tsthi, tstsi, cmpqi): Make private.
15492         (cmphi): Delete.
15493         (bCC, sCC): Delete.
15494         (cbranchqi4, cbranchhi4, cbranchsi4, cstoreqi4, cstorehi4,
15495         cstoresi4): New.
15496
15497         * config/i386/i386.c (ix86_expand_int_movcc, ix86_expand_int_addcc,
15498         ix86_expand_fp_movcc): Set ix86_compare_op0 and ix86_compare_op1.
15499         (ix86_emit_i387_log1p): Use gen_cbranchxf4.
15500         (ix86_emit_i387_log1p): Use cbranchxf2.
15501         (ix86_expand_setcc): Return void.
15502         * config/i386/i386-protos.h (ix86_expand_setcc): Return void.
15503         * config/i386/i386.md (cmpti, cmpdi, cmpsi, cmphi, cmpqi, cmpxf,
15504         cmp<MODEF>, cmpcc): Remove.
15505         (cbranchti4, cbranchdi4, cbranchsi4, cbranchhi4, cbranchqi4,
15506         cbranchxf4, cbranch<MODEF>4, cbranchcc4, cstoredi4, cstoresi4,
15507         cstorehi4, cstoreqi4, cstorexf4, cstore<MODEF>4, cstorecc): New.
15508         (sCC and bCC expanders): Remove.
15509         (stack_protect_test): Use cbranchcc4.
15510
15511         * config/ia64/ia64-protos.h (ia64_compare_op0, ia64_compare_op1):
15512         Delete.
15513         (ia64_expand_compare): Accept three rtx by reference and return void.
15514         * config/ia64/ia64.c (ia64_compare_op0, ia64_compare_op1): Delete.
15515         (ia64_expand_compare): Replace op0/op1 with *op0/*op1.  Get code
15516         from *expr.  Update *expr with the BImode comparison to do.
15517         * config/ia64/ia64.md (cmpbi, cmpsi, cmpdi, cmpsf, cmpdf, cmpxf,
15518         cmptf, bCC, sCC, conditional_trap): Delete.
15519         (cbranchbi4, cbranchsi4, cbranchdi4, cbranchsf4, cbranchdf4,
15520         cbranchxf4, cbranchtf4, cstorebi4, cstoresi4, cstoredi4, cstoresf4,
15521         cstoredf4, cstorexf4, cstoretf4, ctrapbi4, ctrapsi4, ctrapdi4,
15522         ctrapsf4, ctrapdf4, ctrapxf4, ctraptf4): New.
15523         * config/ia64/predicates.md (ia64_cbranch_operator): New.
15524
15525         * config/iq2000/iq2000-protos.h (gen_conditional_branch): Change
15526         type of last argument.
15527         * config/iq2000/iq2000.c (branch_cmp, branch_type): Remove.
15528         (gen_conditional_branch): Get code/cmp0/cmp1 from operands,
15529         use machine mode argument instead of branch_type.  Remove dead
15530         code for floating-point comparisons.
15531         * config/iq2000/iq2000.h (branch_cmp, branch_type): Remove.
15532         * config/iq2000/iq2000.md (cmpsi, cmpdi, cmpsf, cmpdf, tstsi, bCC):
15533         Remove.
15534         (cbranchsi4, cstoresi4): New.
15535         * config/iq2000/predicates.md (reg_or_const_operand): New.
15536
15537         * config/m32c/m32c.md (cbranch splitter): Use match_op_dup.
15538         * config/m32c/m32c.md (any_cond, gl_cond): Delete.
15539         (b<code>_op): Rewrite to...
15540         (bcc_op): ... this, using match_operator.
15541         (s<code>_op): Rewrite to...
15542         (scc_op): ... this, using match_operator.
15543         (s<code>_24_op): Rewrite to...
15544         (scc_op_24): ... this, using match_operator.
15545         (s<code>_<mode>): Rewrite to...
15546         (cstore<mode>4): ... this, using match_operator.
15547         (s<code>_<mode>_24): Rewrite to...
15548         (cstore<mode>4_24): ... this, using match_operator.
15549         * config/m32c/m32c-protos.h (m32c_cmp_flg_0, m32c_pend_compare,
15550         m32c_unpend_compare, m32c_expand_scc): Delete.
15551         * config/m32c/m32c.c (compare_op0, compare_op1, m32c_cmp_flg_0,
15552         m32c_pend_compare, m32c_unpend_compare, m32c_expand_scc): Delete.
15553         (m32c_expand_movcc): Change NE to EQ if necessary.
15554         (m32c_init_libfuncs): Modify cstore optab instead of setcc_gen_code.
15555
15556         * config/m32r/m32r-protos.h (gen_cond_store): New.
15557         * config/m32r/m32r.c (m32r_compare_op0, m32r_compare_op1): Delete.
15558         (gen_cond_store): New, from sCC patterns.
15559         (m32r_expand_block_move): Use cbranchsi4.
15560         * config/m32r/m32r.h (m32r_compare_op0, m32r_compare_op1): Delete.
15561         * config/m32r/m32r.md (cmpsi, bCC, sCC): Delete.
15562         (cbranchsi4, cstoresi4): New.
15563
15564         * config/m68hc11/m68hc11.c (m68hc11_compare_op0, m68hc11_compare_op1):
15565         Delete.
15566         (m68hc11_rtx_costs_1, m68hc11_rtx_costs): Handle ZERO_EXTRACT.
15567         (m68hc11_notice_update_cc): Look into a compare with 0.
15568         * config/m68hc11/m68hc11.h (m68hc11_compare_op0, m68hc11_compare_op1):
15569         Delete.
15570         * config/m68hc11/m68hc11.md (tstsi, tsthi, tstqi, cmpsi,
15571         cmphi, cmpqi, bCC): Delete.
15572         (cbranchsi4, cbranchhi4, cbranchqi4): New.
15573         (tstqi_1, tstqi_z_used, tstqi_1, bitcmpqi, bitcmpqi_z_used,
15574         bitcmpqi_12, bitcmphi, various splits and peephole2s): Wrap cc0<-reg
15575         sets with COMPARE.
15576
15577         * config/m68k/predicates.md (m68k_cstore_comparison_operator,
15578         const0_operand, const1_operand, m68k_subword_comparison_operand): New.
15579         * config/m68k/constraints.md (H): New.
15580         * config/m68k/m68k.md (tstdi): Remove define_expand, use name for
15581         the define_insn below.
15582         (tstsi, tsthi, tst<FP:mode>, cmphi, cmpqi, cmp<FP:mode>): Delete.
15583         (*tstsi_internal_68020_cf, *tstsi_internal, *tsthi_internal,
15584         *tstqi_internal, tst<mode>_6881, tst<mode>_cf, many unnamed
15585         patterns): Wrap RHS with COMPARE.
15586         (tst<FP>_68881, tst<FP>_cf): Use const0_operand.
15587         (*cmpdi_internal): Name this pattern.
15588         (cmpdi): Change to define_insn.
15589         (cbranchdi4, cstoredi4, cbranchsi4, cstoresi4, cbranchhi4, cstorehi4,
15590         cbranchqi4, cstoreqi4, cbranch<FP:mode>4, cstore<FP:mode>4): New.
15591         (scc0_di, scc0_di_5200, scc_di): Use the ordered_comparison_operator
15592         predicate.
15593         (seq, sne, sgt, sgtu, slt, sltu, sge, sgeu, sle, sleu, sordered,
15594         sunordered, suneq, sunge, sungt, sunle, sunlt, sltgt): Delete
15595         (conditional_trap): Change to...
15596         (ctrapdi4, ctrapsi4, ctraphi4, ctrapqi4): ... these.
15597         (*conditional_trap): Use the ordered_comparison_operator and
15598         const1_operand predicates.
15599         * config/m68k/m68k.c (m68k_last_compare_had_fp_operands): Delete.
15600         (m68k_expand_prologue): Use ctrapsi4 instead of cmpsi+conditional_trap.
15601         (m68k_rtx_costs): Look for ZERO_EXTRACT in a COMPARE.
15602         * config/m68k/m68k.h (m68k_last_compare_had_fp_operands): Delete.
15603
15604         * config/mcore/mcore-protos.h (arch_compare_op0, arch_compare_op1,
15605         mcore_modify_comparison, mcore_gen_compare_reg): Remove.
15606         (mcore_gen_compare): New.
15607         * config/mcore/mcore.c (arch_compare_op0, arch_compare_op1): Delete.
15608         (mcore_modify_comparison, mcore_gen_compare_reg): Fold into...
15609         (mcore_gen_compare): ... this.
15610         * config/mcore/mcore.md (cmpsi, bCC, sCC): Remove.
15611         (cbranchsi4, cstoresi4): New, using mcore_gen_compare.
15612         (stack probe pattern): Use cbranchsi4.
15613
15614         * config/mips/predicates.md (mips_cstore_operator): New.
15615         * config/mips/mips-ps-3d.md (movv2sfcc): Do not use cmp_operands.
15616         * config/mips/mips.md (any_cond): Delete.
15617         (conditional_trap): Rename to ctrap<GPR:mode>4.  Adjust predicates,
15618         always succeed.
15619         (fixuns_truncdfsi2, fixuns_truncdfdi2, fixuns_truncsfsi2,
15620         fixuns_truncsfdi2): Use cbranch patterns.
15621         (cmp<GPR:mode>, cmp<SCALARF:mode>): Delete.
15622         (b<code>): Change to cbranch<GPR:mode>4 and cbranch<SCALARF:mode>4.
15623         Adjust call to mips_expand_conditional_branch.
15624         (seq, sne, slt<u>, sle<u>, sgt<u>, sge<u>): Change to
15625         cstore<GPR:mode>4.
15626         * config/mips/mips-protos.h (mips_expand_conditional_branch,
15627         mips_expand_scc, mips_expand_conditional_trap): Adjust prototypes.
15628         * config/mips/mips.c (cmp_operands): Delete.
15629         (mips_emit_compare): Get comparison operands from *op0/*op1.
15630         (mips_expand_scc): Get code/op0/op1/target from operands.  Assert
15631         that it succeeds.  Use op0/op1 instead of cmp_operands.
15632         (mips_expand_conditional_branch, mips_expand_conditional_move,
15633         mips_expand_conditional_trap): Likewise.
15634         (mips_block_move_loop): Use cbranch patterns.
15635         * config/mips/mips.h (cmp_operands): Delete.
15636
15637         * config/mmix/mmix.c (mmix_valid_comparison): Delete.
15638         (mmix_gen_compare_reg): Just return a register in the right CC mode.
15639         * config/mmix/mmix.h (mmix_compare_op0, mmix_compare_op1): New.
15640         * config/mmix/mmix.md (cmpdi, cmpdf): Remove.
15641         (*cmpcc_folded): Rename to...
15642         (*cmpdi_folded): this.
15643         (*cmpcc): Rename to...
15644         (*cmps): ... this.
15645         (movdfcc, movdicc): Adjust for new semantics of mmix_gen_compare_reg.
15646         (bCC): Remove.
15647         (cbranchdi4): New.
15648         (cbranchdf4): New.  Handle invalid comparisons here.
15649         * config/mmix/predicates.md (float_comparison_operator): New.
15650
15651         * config/mn10300/mn10300.c (mn10300_rtx_costs): Consider 0 and
15652         zero_extract to be cheap in (compare (zero_extract) (const_int 0).
15653         * config/mn10300/mn10300.md (tst): Delete.
15654         (*tst_extqisi_am33, *tst_extqisi, *tst_exthisi_am33, *tst_exthisi):
15655         Name these patterns and wrap RHS in a compare.
15656         (*cmpsi): Make this pattern private.  Include tst.
15657         (*cmpsf): Make this pattern private.
15658         (and and zero_extract cc0 set): Wrap RHS in a COMPARE.
15659         (compare with zero peepholes): Likewise.
15660         (bCC): Remove.
15661         (cbranchsi4, cbranchsf4): New.
15662         (casesi): Use cbranchsi4.
15663
15664         * config/pa/pa.c (hppa_compare_op0, hppa_compare_op1,
15665         hppa_branch_type): Delete.
15666         (return_addr_rtx): Use cbranchsi4.
15667         (emit_bcond_fp): Accept all operands.  Replace CODE with NE.
15668         Emit CCFPmode comparison here.
15669         (gen_cmp_fp): Delete, now part of emit_bcond_fp.
15670         * config/pa/pa.h (enum cmp_type, hppa_compare_op0, hppa_compare_op1,
15671         hppa_branch_type): Delete.
15672         * config/pa/pa.md (cmpdi, cmpsi, cmpsf, cmpdf, sCC, bCC): Delete.
15673         (movsicc, movdicc): Remove references to hppa_compare_op0,
15674         hppa_compare_op1 and compare_from_rtx.
15675         (cbranchdi4, cbranchsi4, cbranchsf4, cbranchdf4, cstoresi4): New.
15676         (casesi): Use cbranchsi4.
15677
15678         * config/pdp11/pdp11-protos.h (output_jump): Change prototype.
15679         * config/pdp11/pdp11.c (output_jump): Embed opcodes here.
15680         * config/pdp11/pdp11.md (register_or_const0_operand): New.
15681         (cmpdf, cmphi, cmpqi): Make private.  Add tst alternatives.
15682         (cmpsi, tstsi, tstdf, tsthi, tstqi): Delete.
15683         (bCC): Delete.
15684         (cbranchdf4, cbranchhi4, cbranchqi4): New.
15685         (*branch, *branch_inverted): New.
15686
15687         * config/picochip/picochip.md (cbranchhi4): Use
15688         ordered_comparison_operator.
15689         (cmphi, bCC): Remove.
15690
15691         * config/rs6000/predicates.md (rs6000_cbranch_operator): New.
15692         (trap_comparison_operator): Delete.
15693         * config/rs6000/rs6000-protos.h (rs6000_emit_sCOND,
15694         rs6000_emit_cbranch): Accept mode and operands.
15695         * config/rs6000/rs6000.c (rs6000_compare_op0, rs6000_compare_op1,
15696         rs6000_compare_fp_p): Delete.
15697         (rs6000_generate_compare): Accept mode and comparison.  Extract code
15698         and op0/op1 from there.  Replace references to rs6000_compare_op0
15699         and rs6000_compare_op1.
15700         (rs6000_emit_sCOND): Adjust call to rs6000_generate_compare and
15701         extract result from passed operands.
15702         (rs6000_emit_cbranch): Adjust call to rs6000_generate_compare and
15703         extract loc from passed operands.
15704         (rs6000_emit_cmove): Likewise.
15705         * config/rs6000/rs6000.h (rs6000_compare_op0, rs6000_compare_op1,
15706         rs6000_compare_fp_p): Delete.
15707         * config/rs6000/rs6000.md (cmp<GPR>, cmp<FP>, bCC, sCC): Delete.
15708         (cbranch<GPR>4, cbranch<FP>4): New.
15709         (cstore<mode>4): New.  Consolidate here all choices about when to use
15710         portable or specialized sCC sequences.
15711         (stack_protect_test): Use cbranchsi4.
15712         (conditional_trap): Replace with ctrap<GPR>4.
15713         (conditional trap insn): Replace trap_comparison_operator with
15714         ordered_comparison_operator.
15715
15716         * config/s390/s390.c (s390_compare_op0, s390_compare_op1): Delete.
15717         (s390_emit_prologue): Use ctrap.
15718         * config/s390/s390.h (s390_compare_op0, s390_compare_op1): Delete.
15719         * config/s390/predicates.md (s390_eqne_operator, s390_scond_operator):
15720         New predicates replacing...
15721         * config/s390/s390.md (COMPARE, SCOND): ... these iterators.
15722         (cmp<GPR>, cmp<FP>, cmpcc): Delete.
15723         (trunc patterns): Use emit_cmp_and_jump_insns instead of cmp/branch.
15724         (add<mode>cc): Do not use s390_compare_op0/op1.
15725         (s<code>): Change to...
15726         (cstore<mode>4): ... this. Do not use s390_compare_op0/op1.
15727         (seq): Change to...
15728         (cstorecc4): ... this.  Handle EQ or NE equally.
15729         (*sne): Un-privatize for use in cstorecc4.
15730         (b<code>): Change to...
15731         (cbranch<GPR>4, cbranch<FP>4, cbranchcc4): ... these.
15732         (conditional_trap): Replace with...
15733         (ctrap<GPR>4, ctrap<FP>4): ... these.
15734         (stack_protect): Use cbranchcc4.
15735
15736         * config/score/score-conv.h (cmp_op0, cmp_op1): Delete.
15737         * config/score/score-protos.h (score_gen_cmp): Delete.
15738         * config/score/score.c (cmp_op0, cmp_op1, score_gen_cmp): Delete.
15739         (score_block_move-loop): Use cbranchsi4.
15740         * config/score/score.md (cbranchsi4): New.
15741         (cmpsi, bCC): Delete.
15742         * config/score/score3.c (cmp_op0, cmp_op1, score3_gen_cmp): Delete.
15743         (score3_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
15744         * config/score/score7.c (cmp_op0, cmp_op1, score7_gen_cmp): Delete.
15745         (score7_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
15746         * config/score/score3.h (score3_gen_cmp): Delete.
15747         * config/score/score7.h (score7_gen_cmp): Delete.
15748
15749         * config/sh/sh-protos.h (prepare_scc_operands): Rename to...
15750         (sh_emit_scc_to_t): ... this.  Return void.
15751         (from_compare): Rename to...
15752         (sh_emit_compare_and_branch): ... this.
15753         (sh_emit_compare_and_set): New.
15754         (sh_expand_t_scc): Accept operands.
15755         * config/sh/predicates.md (sh_float_comparison_operator): New.
15756         * config/sh/sh.c (sh_compare_op0, sh_compare_op1): Delete.
15757         (prepare_scc_operands): Rename to...
15758         (sh_emit_scc_to_t): ... this.  Return void.  Get op0/op1 from
15759         arguments.
15760         (sh_emit_cheap_store_flag): New.
15761         (sh_emit_set_t_insn): New.
15762         (from_compare): Rename to...
15763         (sh_emit_compare_and_branch): ... this.  Accept mode.  Rewrite
15764         handling of TARGET_SH2E floating point to avoid recursive call.
15765         Generate branch here.
15766         (sh_emit_compare_and_set): New.
15767         (sh_expand_t_scc): Get op0/op1 from arguments.
15768         (sh_emit_cheap_store_flag): New.
15769         * config/sh/sh.md (cbranchdi4, cbranchsi4): Include -mno-cbranchdi
15770         cases.
15771         (cbranchdi4_i): Use an "I08" constraint instead of an "i" constraint.
15772         (cmpsi, cmpdi, cmpsf, cmpdf): Delete.
15773         (movsicc, movdicc): Do nothing when it recreated operands from
15774         sh_compare_*. Use sh_emit_cheap_store_flag.  Adjust call to
15775         prepare_scc_operands (now sh_emit_scc_to_t).
15776         (udivdi3): Use cstoresi4.
15777         (beq_media, bne_media, bge_media, bgtu_media, bgeu_media, beq,
15778         bne, bgt, blt, ble, bge, bgtu, bltu, bgeu, bleu, bunordered): Delete.
15779         (cbranchint4_media, cbranchfp4_media): New.
15780         (casesi): Use cbranchdi4.
15781         (seq, slt, sle, sgt, sge, sgtu, sltu, sgeu, sne, sleu, sunordered):
15782         Delete.
15783         (cstore4_media, cstoresi4, cstoredi4, cstoresf4, cstoredf4): New.
15784         (movnegt): Remove second operand.
15785         (cbranchsf4, cbranchdf4): New.
15786         (stack_protect): Use cbranchdi4/cbranchsi4.
15787
15788         * config/sparc/sparc.c (sparc_compare_op0, sparc_compare_op1): Delete.
15789         (gen_compare_reg): Accept comparison, extract part of it to...
15790         (gen_compare_reg_1): ... this.
15791         (gen_compare_operator): Delete.
15792         (gen_v9_scc): Accept separate destination, comparison code and arms.
15793         Do not use sparc_compare_op0/sparc_compare_op1.
15794         (emit_scc_insn, emit_conditional_branch_insn): New.
15795         (emit_v9_brxx): Make static.  Remove useless assertion.
15796         (sparc_emit_float_lib_cmp): Return RTL instead of calling
15797         emit_cmp_insn.
15798         (sparc_expand_compare_and_swap_12): Use gen_compare_reg_1+cbranchcc4.
15799         * config/sparc/sparc-protos.h (gen_compare_reg,
15800         sparc_emit_float_lib_cmp): Adjust prototype.
15801         (emit_scc_insn, emit_conditional_branch_insn): New.
15802         (gen_v9_scc, emit_v9_brxx_insn, gen_compare_operator): Delete.
15803         * config/sparc/sparc.h (sparc_compare_op0, sparc_compare_op1): Delete.
15804         * config/sparc/sparc.md (P, I, F, V32, V32I, V64, V64I): Move all
15805         iterators to the top.
15806         (cmpsi, cmpdi, cmpsf, cmpdf, cmptf, seqsi_special_extend,
15807         snesi_special_extend, sCC, bCC, seqdi_special_trunc,
15808         snedi_special_trunc): Delete.
15809         (seqdi_special, snedi_special): Use expansion of seqdi_special_trunc
15810         and snedi_special_trunc.
15811         (cstoresi4, cstoredi4, cstore<F:mode>4, cbranchcc4, cbranchsi4,
15812         cbranchdi4, cbranch<F:mode>4): New.
15813         (mov<I:mode>cc, mov<F:mode>cc): Handle sparc_emit_float_lib_cmp
15814         here.  Use gen_compare_reg instead of gen_compare_operator.
15815         (conditional_trap): Replace with...
15816         (ctrapsi4, ctrapdi4): ... this.
15817         (stack_protect_test): Use cbranchcc4.
15818
15819         * config/spu/spu-protos.h (spu_emit_branch_or_set): Change second
15820         argument to rtx.
15821         * config/spu/spu.c (spu_compare_op0, spu_compare_op1): Remove.
15822         (spu_emit_branch_or_set): Get code/op0/op1 from second argument.
15823         Change spu_compare_op0/op1 to op0/op1 throughout.  Get target
15824         from operands[0] or operands[3] depending on is_set.
15825         * config/spu/spu.h (spu_compare_op0, spu_compare_op1): Remove.
15826         * config/spu/spu.md (cmp<mode:VQHSI>, cmp<mode:DTI>, cmp<mode:VSF>,
15827         cmpdf, bCC), sCC: Remove.
15828         (cbranch<mode:VQHSI>4, cbranch<mode:DTI>, cbranch<mode:VSF>4,
15829         cbranchdf4, cstore<mode:VQHSI>4, cstore<mode:DTI>, cstore<mode:VSF>4,
15830         cstoredf4): New.
15831         (mov<mode>cc): Accept ordered_comparison_operator, adjust call to
15832         spu_emit_branch_or_set.
15833
15834         * config/stormy16/stormy16-protos.h (xstormy16_emit_cbranch):
15835         Add two arguments.
15836         * config/stormy16/stormy16.h (xstormy16_compare_op0,
15837         xstormy16_compare_op1): Delete.
15838         * config/stormy16/stormy16.c (xstormy16_compare_op0,
15839         xstormy16_compare_op1): Delete.
15840         (xstormy16_emit_cbranch): Get op0/op1 from the new arguments.
15841         Adjust calls.
15842         * config/stormy16/stormy16.md (cbranchsi4, cbranchhi4): New.
15843         (cmphi, cmpsi, bCC): Remove.
15844
15845         * config/v850/v850.md (tstsi, cmpsi): Fold into...
15846         (*cmpsi): ... this one.
15847         (cbranchsi4, cstoresi4): New.
15848         (bCC expanders): Delete.
15849         (sCC insns): Fold into...
15850         (*setcc): ... this one.
15851         (casesi): Do not use gen_cmpsi and gen_bgtu.
15852         (various splits): Wrap "naked" RHS of a cc0 set with COMPARE.
15853         (movsicc): Simplify.
15854         * config/v850/v850.c (v850_rtx_costs): Handle ZERO_EXTRACT in COMPARE.
15855
15856         * config/vax/vax-protos.h (cond_name): New.
15857         (vax_output_conditional_branch): Remove.
15858         * config/vax/vax.c (cond_name): New.
15859         (vax_output_conditional_branch): Remove.
15860         * config/vax/vax.h (PRINT_OPERAND): Dispatch %c to cond_name.
15861         * config/vax/vax.md (tst<VAXint>, tst<VAXfp>): Remove.
15862         (cmp<VAXint>, cmp<VAXfp>): Privatize.  Add constraints for tst.
15863         (bit<VAXint>): Wrap source with (compare).
15864         (b<code> and following unnamed pattern): Rename to *branch and
15865         *branch_reversed.  Change macroization to match_operator.
15866         (cbranch<VAXint>4, cbranch<VAXfp>4): New.
15867
15868         * config/xtensa/predicates.md (xtensa_cstoresi_operator): New.
15869         * config/xtensa/xtensa-protos.h (xtensa_expand_conditional_branch):
15870         Change last argument to machine_mode.
15871         (xtensa_expand_scc): Add machine_mode argument.
15872         * config/xtensa/xtensa.c (branch_cmp, branch_type): Remove.
15873         (gen_conditional_move, xtensa_expand_conditional_branch,
15874         xtensa_expand_scc, xtensa_expand_conditional_move): Use mode
15875         instead of branch_type, fetch cmp0/cmp1/test_code from operands[].
15876         Adjust operand numbers.
15877         * config/xtensa/xtensa.h (enum cmp_type, branch_cmp, branch_type):
15878         Delete.
15879         * config/xtensa/xtensa.md (any_cond, any_scc): Delete.
15880         (cmpsi, cmpsf, b<code>, s<code>): Delete.
15881         (cbranchsi4, cbranchsf4, cstoresi4, cstoresf4): New.
15882
15883 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
15884
15885         * optabs.c (prepare_cmp_insn): Temporarily disable test that
15886         causes spurious differences between trunk and cond-optab branch.
15887
15888 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
15889
15890         PR target/37137
15891         * doc/install.texi (STAGE1_TFLAGS, BUILD_CONFIG): Document.
15892
15893 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
15894
15895         * tree.c (iterative_hash_pointer): Delete.
15896         (iterative_hash_expr): Short-circuit handling of NULL pointer.
15897         Hash UIDs and versions of SSA names.  Don't special-case built-in
15898         function declarations.
15899
15900 2009-05-11  Ian Lance Taylor  <iant@google.com>
15901
15902         PR bootstrap/40103
15903         * graphite.c: Force -Wc++-compat to only be a warning before
15904         #including "cloog/cloog.h".
15905
15906 2009-05-11  Martin Jambor  <mjambor@suse.cz>
15907
15908         * ipa-cp.c (ipcp_cloning_candidate_p): Add missing return false.
15909
15910 2009-05-11  Jan Hubicka  <jh@suse.cz>
15911
15912         * tree-ssa-loop-ivcanon.c: Include target.h
15913         (struct loop_size): new structure.
15914         (constant_after_peeling): New predicate.
15915         (tree_estimate_loop_size): New function.
15916         (estimated_unrolled_size): Rewrite for new estimates.
15917         (try_unroll_loop_completely): Use new estimates.
15918         * Makefile.in (tree-ssa-loop-ivcanon.o): Add dependenc on target.h
15919
15920 2009-05-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15921
15922         * config/spu/spu-c.c (spu_categorize_keyword): Update for recent
15923         libcpp interface change.
15924         (spu_macro_to_expand): Likewise.
15925
15926 2009-05-11  Paolo Bonzini  <bonzini@gnu.org>
15927
15928         PR tree-optimization/40026
15929         * gimplify.c (gimplify_init_constructor): Change initial conditional
15930         to assertion.  Rewrite TREE_OPERAND (*expr_p, 1) after
15931         optimize_compound_literals_in_ctor.
15932
15933 2009-05-11  Nathan Sidwell  <nathan@codesourcery.com>
15934
15935         * config/m68k/m68k-devices.def (52274, 52277, 5301x, 5225x, 51xx):
15936         New devices.
15937         * doc/invoke.texi (M680x0 Options): Document new coldfire cpus.
15938
15939 2009-05-11  H.J. Lu  <hongjiu.lu@intel.com>
15940
15941         * tree-vect-data-refs.c (vect_analyze_group_access): Use
15942         HOST_WIDE_INT for gap.
15943
15944 2009-05-11  Ira Rosen  <irar@il.ibm.com>
15945
15946         PR tree-optimization/40074
15947         * tree-vect-data-refs.c (vect_analyze_group_access): Take gaps into
15948         account in group size and step comparison.
15949
15950 2009-05-11  Richard Guenther  <rguenther@suse.de>
15951
15952         * passes.c (init_optimization_passes): Strip now incorrect comment.
15953         (execute_function_todo): Do not set PROP_alias.
15954         * tree-pass.h (PROP_alias): Remove.
15955         * tree-ssa-structalias.c (pass_build_alias): Do not provide PROP_alias.
15956         * tree-if-conv.c (pass_if_conversion): Do not require PROP_alias.
15957         * tree-nrv.c (pass_return_slot): Likewise.
15958         * tree-object-size.c (pass_object_sizes): Likewise.
15959         * tree-ssa-dom.c (pass_dominator): Likewise.
15960         (pass_phi_only_cprop): Likewise.
15961         * tree-ssa-dse.c (pass_dse): Likewise.
15962         * tree-ssa-phiopt.c (pass_phiopt): Likewise.
15963         (pass_cselim): Likewise.
15964         * tree-ssa-pre.c (pass_pre): Likewise.
15965         (pass_fre): Likewise.
15966         * tree-ssa-reassoc.c (pass_reassoc): Likewise.
15967         * tree-ssa-sink.c (pass_sink_code): Likewise.
15968         * tree-stdarg.c (pass_stdarg): Likewise.
15969         * tree-tailcall.c (pass_tail_calls): Likewise.
15970         * tree-vrp.c (pass_vrp): Likewise.
15971
15972 2009-05-10  Ian Lance Taylor  <iant@google.com>
15973
15974         * basic-block.h (enum profile_status): Break out of struct
15975         control_flow_graph.
15976         * cgraph.h (struct inline_summary): Break out of struct
15977         cgraph_local_info.
15978         * cgraphunit.c (enum cgraph_order_sort_kind): New enum, broken out
15979         of struct cgraph_order_sort.
15980         * combine.c (enum undo_kind): New enum, broken out of struct undo.
15981         * cse.c (struct branch_path): Break out of struct
15982         cse_basic_block_data.
15983         * except.h (enum eh_region_type): Break out of struct eh_region.
15984         * gcc.c (enum add_del): Break out of struct modify_target.
15985         * genrecog.c (enum decision_type): Break out of struct decision_test.
15986         * ggc-page.c (struct ggc_pch_ondisk): Break out of struct
15987         ggc_pch_data.
15988         * matrix-reorg.c (struct free_info): Break out of struct matrix_info.
15989         * regmove.c (enum match_use): New enum, broken out of struct match.
15990         * sched-int.h (enum post_call_group): New enum, broken out of
15991         struct deps.
15992         (struct deps_reg): Break out of struct deps.
15993         * target.h (struct asm_int_op): Break out of struct gcc_target.
15994         * tree-eh.c (struct goto_queue_node): Break out of struct
15995         leh_tf_state.
15996         * tree-inline.h (enum copy_body_cge_which): Break out of
15997         copy_body_data.
15998         * tree-pass.h (enum opt_pass_type): Break out of struct opt_pass.
15999
16000         * c-decl.c (in_struct, struct_types): New static variables.
16001         (pushtag): Add loc parameter.  Change all callers.
16002         (lookup_tag): Add ploc parameter.  Change all callers.
16003         (check_compound_literal_type): New function.
16004         (parser_xref_tag): Add loc parameter.  Change all callers.  If
16005         -Wc++-compat, warn about struct/union/enum types defined within a
16006         struct or union.
16007         (start_struct): Add enclosing_in_struct, enclosing_struct_types,
16008         and loc parameters.  Change all callers.  Change error calls to
16009         error_at, using loc.  For a redefinition, if the location of the
16010         original definition is known, report it.  Set in_struct and
16011         struct_types.  If -Wc++-compat warn if in sizeof, typeof, or alignof.
16012         (finish_struct): Add new parameters enclosing_in_struct and
16013         enclosing_struct_types.  Change all callers.  Set
16014         C_TYPE_DEFINED_IN_STRUCT for all struct/union/enum types defined
16015         in the struct.  If in a struct, add this struct to struct_types.
16016         (start_enum): Add loc parameter.  Change all callers.  Use
16017         error_at for errors, using loc.  For a redefinition, if the
16018         location of the original definition is known, report it.  If in a
16019         struct, add this enum type to struct_types.  If -Wc++-compat warn
16020         if in sizeof, typeof, or alignof.
16021         * c-parser.c (disable_extension_diagnostics): Disable -Wc++-compat.
16022         (enable_extension_diagnostics): Reenable -Wc++-compat if appropriate.
16023         (c_parser_enum_specifier): Get enum location for start_enum.
16024         (c_parser_struct_or_union_specifier): Get struct location for
16025         start_struct.  Save in_struct and struct_types status between
16026         start_struct and finish_struct.
16027         (c_parser_cast_expression): Get location of cast.
16028         (c_parser_alignof_expression): Get location of type.
16029         (c_parser_postfix_expression): Likewise.
16030         (c_parser_postfix_expression_after_paren_type): Add type_loc
16031         parameter.  Change all callers.  Call check_compound_literal_type.
16032         Use type_loc for error about variable size type.
16033         * c-typeck.c (build_external_ref): If -Wc++-compat, warn about a use
16034         of an enum constant from an enum type defined in a struct or union.
16035         (c_cast_expr): Add loc parameter.  Change all callers.  If
16036         -Wc++-compat, warn about defining a type in a cast.
16037         * c-tree.h (C_TYPE_DEFINED_IN_STRUCT): Define.
16038         (start_enum, start_struct, finish_struct): Update declarations.
16039         (parser_xref_tag, c_cast_expr): Update declarations.
16040         (check_compound_literal_type): Declare.
16041
16042 2009-05-11  Ben Elliston  <bje@au.ibm.com>
16043
16044         * config/rs6000/rs6000-c.c (altivec_categorize_keyword): Update
16045         for recent libcpp interface change.
16046         (rs6000_macro_to_expand): Likewise.
16047
16048 2009-05-10  Michael Matz  <matz@suse.de>
16049
16050         PR target/40031
16051         * config/arm/arm.c (require_pic_register): Emit on entry edge,
16052         not at entry of function.
16053
16054 2009-05-10  Richard Guenther  <rguenther@suse.de>
16055
16056         PR tree-optimization/40081
16057         Revert
16058         * tree-sra.c (instantiate_element): Instantiate scalar replacements
16059         using the main variant of the element type.  Do not fiddle with
16060         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
16061
16062         * tree-sra.c (sra_type_can_be_decomposed_p): Do not decompose
16063         structs with volatile fields.
16064
16065 2009-05-10  Jan Hubicka  <jh@suse.cz>
16066
16067         * tree-inline.c (delete_unreachable_blocks_update_callgraph): Declare.
16068         (estimate_move_cost): Assert that it does not get called for
16069         VOID_TYPE_P.
16070         (estimate_num_insns): Skip VOID types in argument handling.
16071         (optimize_inline_calls): Delete unreachable blocks and verify that
16072         callgraph is valid.
16073
16074 2009-05-10  Jan Hubicka  <jh@suse.cz>
16075
16076         * cgraphbuild.c (record_reference): Use cgraph_mark_address_taken_node.
16077         * cgraph.c (cgraph_mark_address_taken_node): New function.
16078         (dump_cgraph_node): Dump new flag.
16079         * cgraph.h (struct cgraph_node): Add address_taken.
16080         (cgraph_mark_address_taken_node): New function.
16081         * ipa.c (cgraph_postorder): Prioritize functions with address taken
16082         since new direct calls can be born.
16083
16084 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
16085
16086         * c-lex.c (c_lex_with_flags): Expect cpp_hashnode in
16087         tok->val.node.node.
16088
16089 2009-05-10  Jan Hubicka  <jh@suse.cz>
16090
16091         PR middle-end/40084
16092         * cgraph.c (cgraph_update_edges_for_call_stmt_node): Take old_call
16093         argument; rewrite.
16094         (cgraph_update_edges_for_call_stmt): Take old_decl argument.
16095         * cgraph.h (cgraph_update_edges_for_call_stmt): Update prototype.
16096         * tree-inline.c (copy_bb): Set frequency correctly.
16097         (fold_marked_statements): Update call to
16098         cgraph_update_edges_for_call_stmt.
16099
16100 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
16101
16102         * config/arc/arc.c (arc_handle_interrupt_attribute): Use %qE for
16103         identifiers in diagnostics.
16104         * config/arm/arm.c (arm_handle_fndecl_attribute,
16105         arm_handle_isr_attribute): Likewise.
16106         * config/avr/avr.c (avr_handle_progmem_attribute,
16107         avr_handle_fndecl_attribute, avr_handle_fntype_attribute): Likewise.
16108         * config/bfin/bfin.c (handle_int_attribute,
16109         bfin_handle_longcall_attribute, bfin_handle_l1_text_attribute,
16110         bfin_handle_l1_data_attribute, bfin_handle_longcall_attribute,
16111         bfin_handle_l1_text_attribute, bfin_handle_l1_data_attribute):
16112         Likewise.
16113         * config/darwin.c (darwin_handle_kext_attribute,
16114         darwin_handle_weak_import_attribute): Likewise.
16115         * config/h8300/h8300.c (h8300_handle_fndecl_attribute,
16116         h8300_handle_eightbit_data_attribute,
16117         h8300_handle_tiny_data_attribute): Likewise.
16118         * config/i386/i386.c (ix86_handle_cconv_attribute,
16119         ix86_handle_abi_attribute, ix86_handle_struct_attribute): Likewise.
16120         * config/i386/winnt.c (ix86_handle_shared_attribute,
16121         ix86_handle_selectany_attribute): Likewise.
16122         * config/ia64/ia64.c (ia64_handle_model_attribute): Likewise.
16123         * config/m32c/m32c.c (function_vector_handler): Likewise.
16124         * config/m68hc11/m68hc11.c (m68hc11_handle_page0_attribute,
16125         m68hc11_handle_fntype_attribute): Likewise.
16126         * config/m68k/m68k.c (m68k_handle_fndecl_attribute): Likewise.
16127         * config/mcore/mcore.c (mcore_handle_naked_attribute): Likewise.
16128         * config/mips/mips.c (mips_insert_attributes,
16129         mips_merge_decl_attributes, mips_expand_builtin): Likewise.
16130         * config/rs6000/rs6000.c (rs6000_handle_longcall_attribute,
16131         rs6000_handle_struct_attribute): Likewise.
16132         * config/sh/sh.c (sh_insert_attributes,
16133         sh_handle_resbank_handler_attribute,
16134         sh_handle_interrupt_handler_attribute,
16135         sh2a_handle_function_vector_handler_attribute,
16136         sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
16137         Likewise.
16138         * config/sh/symbian.c (sh_symbian_mark_dllimport): Likewise.
16139         * config/spu/spu.c (spu_handle_fndecl_attribute,
16140         spu_handle_vector_attribute): Likewise.
16141         * config/stormy16/stormy16.c
16142         (xstormy16_handle_interrupt_attribute): Likewise.
16143         * config/v850/v850-c.c (ghs_pragma_section): Likewise.
16144         * config/v850/v850.c (v850_handle_interrupt_attribute): Likewise.
16145
16146 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
16147
16148         * pretty-print.h (struct pretty_print_info): Add translate_identifiers.
16149         (pp_translate_identifiers): New.
16150         (pp_identifier): Only conditionally translate identifier to locale
16151         character set.
16152         * pretty-print.c (pp_construct): Set pp_translate_identifiers.
16153         (pp_base_tree_identifier): Only conditionally translate identifier
16154         to locale character set.
16155         * c-pretty-print.c (M_): Define.
16156         (pp_c_type_specifier, pp_c_primary_expression): Mark English
16157         fragments for conditional translation with M_.
16158         * tree-pretty-print.c (maybe_init_pretty_print): Disable
16159         identifier translation.
16160
16161 2009-05-10  Richard Guenther  <rguenther@suse.de>
16162
16163         PR tree-optimization/40081
16164         * tree-sra.c (instantiate_element): Instantiate scalar replacements
16165         using the main variant of the element type.  Do not fiddle with
16166         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
16167
16168 2009-05-09  Jan Hubicka  <jh@suse.cz>
16169
16170         PR middle-end/40080
16171         * cgraphunit.c (cgraph_materialize_all_clones): Do not redirect
16172         indirect calls; verify cgraph afterwards.
16173
16174 2009-05-09  Jan Hubicka  <jh@suse.cz>
16175
16176         PR bootstrap/40082
16177         * ipa.c (update_inlined_to_pointer): New function.
16178         (cgraph_remove_unreachable_nodes): Use it.
16179
16180 2009-05-09  Jan Hubicka  <jh@suse.cz>
16181
16182         * tree-eh.c (struct leh_state): Remove prev_try.
16183         (lower_try_finally, lower_catch, lower_eh_filter, lower_cleanup): Do
16184         not track prev_try.
16185         * except.c (gen_eh_region_cleanup, duplicate_eh_regions,
16186         copy_eh_region_1, copy_eh_region, redirect_eh_edge_to_label,
16187         remove_eh_handler_and_replace, foreach_reachable_handler,
16188         verify_eh_region, verify_eh_tree): Remove tracking of prev_try pointer.
16189         * except.h (struct eh_region): Remove eh_region_u_cleanup.
16190         (gen_eh_region_cleanup): Update prototype.
16191
16192 2009-05-09  Jan Hubicka  <jh@suse.cz>
16193
16194         PR middle-end/40043
16195         * except.c (copy_eh_region): Always set prev_try.
16196         (redirect_eh_edge_to_label): Find outer try.
16197         (foreach_reachable_handler): When looking for prev try
16198         handle case where previous try is not going to be taken.
16199
16200 2009-05-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
16201
16202         PR tree-optimization/40049
16203         * tree-vect-stmts.c (vectorizable_operation): If the machine has
16204         only vector/vector shifts, convert the type of the constant to the
16205         appropriate type to avoid building incorrect trees, which
16206         eventually have problems with garbage collection.
16207
16208 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
16209
16210         * fold-const.c (fold_binary): Do not fold multiplication by 1 or
16211         -1 for complex floating-point types if honoring signed zeros.
16212
16213 2009-05-08  Jan Hubicka  <jh@suse.cz>
16214
16215         * cgraphbuild.c (compute_call_stmt_bb_frequency): Accept function
16216         argument; handle correctly when profile is absent.
16217         (build_cgraph_edges): Update.
16218         (rebuild_cgraph_edges): Update.
16219         * cgraph.c: Do not include varray.h.
16220         (cgraph_set_call_stmt_including_clones): New function.
16221         (cgraph_create_edge_including_clones): Likewise
16222         (cgraph_update_edges_for_call_stmt_node): New static cfunction.
16223         (cgraph_update_edges_for_call_stmt): Handle clones.
16224         (cgraph_remove_node): Handle clone tree.
16225         (cgraph_remove_node_and_inline_clones): New function.
16226         (dump_cgraph_node): Dump clone tree.
16227         (cgraph_clone_node): Handle clone tree.
16228         (clone_function_name): Bring here from tree-inline.c.
16229         (cgraph_create_virtual_clone): New function.
16230         * cgraph.h (ipa_replace_map): Move here from ipa.h.
16231         (cgraph_clone_info): New function.
16232         (strut cgraph_node): Add clone_info and new clone tree pointers.
16233         (cgraph_remove_node_and_inline_clones,
16234         cgraph_set_call_stmt_including_clones,
16235         cgraph_create_edge_including_clones,
16236         cgraph_create_virtual_clone): Declare.
16237         (cgraph_function_versioning): Use VEC argument.
16238         (compute_call_stmt_bb_frequency): Update prototype.
16239         (cgraph_materialize_all_clones): New function.
16240         * ipa-cp.c (ipcp_update_cloned_node): Remove.
16241         (ipcp_create_replace_map): Update to VECtors.
16242         (ipcp_update_callgraph): Use virtual clones.
16243         (ipcp_update_bb_counts, ipcp_update_edges_counts): Remove.
16244         (ipcp_update_profiling): Do not update local profiling.
16245         (ipcp_insert_stage): Use VECtors and virtual clones.
16246         * cgraphunit.c (verify_cgraph_node): Verify clone tree.
16247         (clone_of_p): New function.
16248         (cgraph_preserve_function_body_p): Use clone tree.
16249         (cgraph_optimize): Materialize clones.
16250         (cgraph_function_versioning): Update for VECtors.
16251         (save_inline_function_body): Use clone tree.
16252         (cgraph_materialize_clone): New function.
16253         (cgraph_materialize_all_clones): Likewise.
16254         * ipa-inline.c (cgraph_default_inline_p): Use analyzed flags.
16255         * ipa.c: Include gimple.h.
16256         (cgraph_remove_unreachable_nodes): Use clone tree.
16257         * ipa-prop.c (ipa_note_param_call): Update call to
16258         compute_call_stmt_bb_frequencycall.
16259         * ipa-prop.h (ipa_replace_map): Move to cgraph.h.
16260         * tree-inline.c: Do not include varray.h or gt-tree-inline.h.
16261         (copy_bb): Handle updating of clone tree; add new edge when new call
16262         appears.
16263         (expand_call_inline): Be strict about every call having edge.
16264         (clone_fn_id_num, clone_function_name): Move to cgraph.c.
16265         (delete_unreachable_blocks_update_callgraph): New function.
16266         (tree_function_versioning): Use VECtors; always remove unreachable
16267         blocks and fold conditionals.
16268         * tree-inline.h: Do not include varray.h.
16269         (tree_function_versioning): Remove.
16270         * Makefile.in (GTFILES): Remove tree-inline.c
16271         * passes.c (do_per_function): Do only functions having body.
16272         * ipa-struct-reorg.c (do_reorg_1, collect_data_accesses): Handle clone
16273         tree.
16274
16275 2009-05-08  H.J. Lu  <hongjiu.lu@intel.com>
16276             Andrew Morrow  <acm@google.com>
16277
16278         PR c/36892
16279         * c-common.c (c_common_attribute_table): Permit deprecated
16280         attribute to take an optional argument.
16281         (handle_deprecated_attribute): If the optional argument to
16282         __attribute__((deprecated)) is not a string ignore the attribute
16283         and emit a warning.
16284
16285         * c-decl.c (grokdeclarator): Updated warn_deprecated_use call.
16286         * c-typeck.c (build_component_ref): Likewise.
16287         (build_external_ref): Likewise.
16288
16289         * toplev.c (warn_deprecated_use): Add an attribute argument.
16290         Emit the message associated with __attribute__((deprecated)).
16291
16292         * toplev.h (warn_deprecated_use): Updated.
16293
16294         * doc/extend.texi: Document new optional parameter to
16295         __attribute__((deprecated))
16296
16297 2009-05-08  Michael Eager <eager@eagercon.com>
16298
16299         * config/rs6000/rs6000.md (*movdf_softfloat32): replace
16300         !TARGET_DOUBLE_FLOAT with TARGET_SINGLE_FLOAT.
16301
16302 2009-05-08  Richard Guenther  <rguenther@suse.de>
16303
16304         PR tree-optimization/40062
16305         * tree-scalar-evolution.c (follow_ssa_edge_in_condition_phi):
16306         Avoid exponential behavior.
16307
16308 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
16309
16310         PR rtl-optimization/33928
16311         PR 26854
16312         * fwprop.c (use_def_ref, get_def_for_use, bitmap_only_bit_bitween,
16313         process_uses, build_single_def_use_links): New.
16314         (update_df): Update use_def_ref.
16315         (forward_propagate_into): Use get_def_for_use instead of use-def
16316         chains.
16317         (fwprop_init): Call build_single_def_use_links and let it initialize
16318         dataflow.
16319         (fwprop_done): Free use_def_ref.
16320         (fwprop_addr): Eliminate duplicate call to df_set_flags.
16321         * df-problems.c (df_rd_simulate_artificial_defs_at_top,
16322         df_rd_simulate_one_insn): New.
16323         (df_rd_bb_local_compute_process_def): Update head comment.
16324         (df_chain_create_bb): Use the new RD simulation functions.
16325         * df.h (df_rd_simulate_artificial_defs_at_top,
16326         df_rd_simulate_one_insn): New.
16327         * opts.c (decode_options): Enable fwprop at -O1.
16328         * doc/invoke.texi (-fforward-propagate): Document this.
16329
16330 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
16331
16332         PR c/24581
16333         * c-typeck.c (build_binary_op): Handle arithmetic between one real
16334         and one complex operand specially.
16335         * tree-complex.c (some_nonzerop): Do not identify a real value as
16336         zero if flag_signed_zeros.
16337
16338 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
16339
16340         PR rtl-optimization/33928
16341         * loop-invariant.c (record_use): Fix && vs. || mishap.
16342
16343 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
16344
16345         PR rtl-optimization/33928
16346         * loop-invariant.c (struct use): Add addr_use_p.
16347         (struct def): Add n_addr_uses.
16348         (struct invariant): Add cheap_address.
16349         (create_new_invariant): Set cheap_address.
16350         (record_use): Accept df_ref.  Set addr_use_p and update n_addr_uses.
16351         (record_uses): Pass df_ref to record_use.
16352         (get_inv_cost): Do not add inv->cost to comp_cost for cheap addresses
16353         used only as such.
16354
16355 2009-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
16356
16357         * config/sh/sh.c: Do not include c-pragma.h.
16358
16359 2009-05-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16360
16361         * config/spu/spu.c: Remove include of c-common.h.
16362
16363 2009-05-07  Janis Johnson  <janis187@us.ibm.com>
16364
16365         PR c/39037
16366         * c-common.h (mark_valid_location_for_stdc_pragma,
16367         valid_location_for_stdc_pragma_p, set_float_const_decimal64,
16368         clear_float_const_decimal64, float_const_decimal64_p): New.
16369         * c.opt (Wunsuffixed-float-constants): New.
16370         * c-lex.c (interpret_float): Use pragma FLOAT_CONST_DECIMAL64 for
16371         unsuffixed float constant, handle new warning.
16372         * c-cppbuiltin.c (c_cpp_builtins): Use cast for double constants.
16373         * c-decl.c (c_scope): New flag float_const_decimal64.
16374         (set_float_const_decimal64, clear_float_const_decimal64,
16375         float_const_decimal64_p): New.
16376         (push_scope): Set new flag.
16377         * c-parser.c (c_parser_translation_unit): Mark when it's valid
16378         to use STDC pragmas.
16379         (c_parser_external_declaration): Ditto.
16380         (c_parser_compound_statement_nostart): Ditto.
16381         * c-pragma.c (valid_location_for_stdc_pragma,
16382         mark_valid_location_for_stdc_pragma,
16383         valid_location_for_stdc_pragma_p, handle_stdc_pragma,
16384         handle_pragma_float_const_decimal64): New.
16385         (init_pragma): Register new pragma FLOAT_CONST_DECIMAL64.
16386         * cp/semantics.c (valid_location_for_stdc_pragma_p,
16387         set_float_const_decimal64, clear_float_const_decimal64,
16388         float_const_decimal64_p): New dummy functions.
16389         * doc/extend.texi (Decimal Float): Remove statement that the
16390         pragma, and suffix for double constants, are not supported.
16391         * doc/invoke.texi (Warning Options): List new option.
16392         (-Wunsuffixed-float-constants): New.
16393
16394 2009-05-08  Steven Bosscher  <steven@gcc.gnu.org>
16395
16396         * config/i386/i386.c: Do not include c-common.h.
16397
16398 2009-05-07  Mark Heffernan  <meheff@google.com>
16399
16400         * doc/invoke.texi (Debugging Options): Document change of debugging
16401         dump location.
16402         * opts.c (decode_options): Make dump_base_name relative to
16403         aux_base_name directory.
16404
16405 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
16406
16407         * config/picochip/picochip.h (NO_DOLLAR_IN_LABEL): Added.
16408         * config/picochip/libgccExtras/divmod15.asm : Removed redefiniton.
16409
16410 2009-05-07  Rafael Avila de Espindola  <espindola@google.com>
16411
16412         * Makefile.in (install-plugin): Simplify a bit.
16413
16414 2009-05-07  Paolo Bonzini  <bonzini@gnu.org>
16415
16416         * Makefile.in (OBJS-common): Add regcprop.o.
16417         (regcprop.o): New.
16418         * timevar.def (TV_CPROP_REGISTERS): New.
16419         * regrename.c (regrename_optimize): Return 0.
16420         (rest_of_handle_regrename): Delete.
16421         (pass_rename_registers): Point to regrename_optimize.
16422         (struct value_data_entry, struct value_data,
16423         kill_value_one_regno, kill_value_regno, kill_value,
16424         set_value_regno, init_value_data, kill_clobbered_value,
16425         kill_set_value, kill_autoinc_value, copy_value,
16426         mode_change_ok, maybe_mode_change, find_oldest_value_reg,
16427         replace_oldest_value_reg, replace_oldest_value_addr,
16428         replace_oldest_value_mem, copyprop_hardreg_forward_1,
16429         debug_value_data, validate_value_data): Move...
16430         * regcprop.c: ... here.
16431         (rest_of_handle_cprop): Delete.
16432         (pass_cprop_hardreg): Point to copyprop_hardreg_forward.
16433
16434 2009-05-07  Jakub Jelinek  <jakub@redhat.com>
16435
16436         PR middle-end/40057
16437         * dojump.c (prefer_and_bit_test): Use immed_double_const instead of
16438         GEN_INT for 1 << bitnum.
16439         (do_jump) <case BIT_AND_EXPR>: Use build_int_cst_wide_type instead of
16440         build_int_cst_type.
16441
16442 2009-05-07  Uros Bizjak  <ubizjak@gmail.com>
16443
16444         * doc/md.texi (Standard Pattern Names For Generation) [sync_nand]:
16445         Remove wrong description of "nand" operation.
16446
16447 2009-05-06  Richard Guenther  <rguenther@suse.de>
16448             Adam Nemet  <anemet@caviumnetworks.com>
16449
16450         * gimple.def (GIMPLE_ASSIGN): Fix incorrect information in the
16451         comment.  Add that if LHS is not a gimple register, then RHS1 has
16452         to be a single object (GIMPLE_SINGLE_RHS).
16453
16454 2009-05-06  Adam Nemet  <anemet@caviumnetworks.com>
16455
16456         * expr.c (get_def_for_expr): Move it up in the file.
16457         (store_field): When expanding a bit-field store, look at the
16458         defining gimple stmt for the masking conversion.
16459
16460 2009-05-06  Janis Johnson  <janis187@us.ibm.com>
16461
16462         PR middle-end/39986
16463         * dfp.c (encode_decimal32, decode_decimal32, encode_decimal64,
16464         decode_decimal64, encode_decimal128, decode_decimal128): Avoid
16465         32-bit memcpy into long.
16466
16467 2009-05-06  Jakub Jelinek  <jakub@redhat.com>
16468
16469         * dwarf2out.c (new_reg_loc_descr): Don't ever create DW_OP_regX.
16470         (one_reg_loc_descriptor): Create DW_OP_regX here instead of calling
16471         new_reg_loc_descr.
16472         (loc_by_reference): If loc is DW_OP_regX, change it into DW_OP_bregX 0
16473         instead of appending DW_OP_deref*.
16474
16475 2009-05-06  Michael Matz  <matz@suse.de>
16476
16477         PR middle-end/40021
16478         * cfgexpand.c (maybe_cleanup_end_of_block): New static function.
16479         (expand_gimple_cond): Use it to cleanup CFG and superfluous jumps.
16480
16481 2009-05-06  Rafael Avila de Espindola  <espindola@google.com>
16482
16483         * Makefile.in (install-plugin): Fix srcdir handling.
16484
16485 2009-05-06  Andrey Belevantsev  <abel@ispras.ru>
16486
16487         * tree-ssa.c (execute_update_address_taken): Handle TARGET_MEM_REF
16488         when processing for not_regs_needed bitmap.
16489         * gimple.c (walk_stmt_load_store_addr_ops): When visiting address,
16490         handle TARGET_MEM_REF in lhs.  Check TMR_BASE for NULL while
16491         handling it for rhs.
16492
16493 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
16494
16495         * config/i386/i386.md (unnamed inc/dec peephole): Use
16496         optimize_insn_for_size_p instead of optimize_size.
16497         * config/i386/predicates.md (incdec_operand): Likewise.
16498         (aligned_operand): Likewise.
16499         * config/i386/sse.md (divv8sf3): Likewise.
16500         (sqrtv8sf2): Likewise.
16501
16502 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
16503
16504         * config/i386/i386.c (ix86_build_signbit_mask): Make it static.
16505
16506         * config/i386/i386-protos.h (ix86_build_signbit_mask): Removed.
16507
16508 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
16509
16510         * config/i386/i386.md (*avx_<code><mode>3_finite): Replace
16511         ssemodesuffixf2c with avxmodesuffixf2c.
16512
16513 2009-05-06  Joseph Myers  <joseph@codesourcery.com>
16514
16515         PR c/40032
16516         * c-decl.c (grokdeclarator): Handle incomplete type of unnamed field.
16517
16518 2009-05-05  Jakub Jelinek  <jakub@redhat.com>
16519
16520         * tree.h: Remove DECL_BY_REFERENCE from private_flag comment.
16521         (struct tree_base): Adjust spacing for 8 bit boundaries.
16522         (struct tree_decl_common): Add decl_by_reference_flag bit.
16523         (DECL_BY_REFERENCE): Adjust.
16524         * print-tree.c (print_node): For VAR_DECL, PARM_DECL or RESULT_DECL,
16525         print DECL_BY_REFERENCE bit.
16526         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Revert last change.
16527         * dwarf2out.c (loc_by_reference, gen_decl_die): Check
16528         DECL_BY_REFERENCE for all VAR_DECLs, not just non-static ones.
16529         (gen_variable_die): Likewise.  Check TREE_PRIVATE/TREE_PROTECTED
16530         unconditionally.
16531
16532         PR middle-end/39666
16533         * gimplify.c (gimplify_switch_expr): If case labels cover the whole
16534         range of the type, but default label is missing, add it with one
16535         of the existing labels instead of adding a new label for it.
16536
16537 2009-05-05  Joseph Myers  <joseph@codesourcery.com>
16538
16539         * dwarf.h: Remove.
16540
16541 2009-05-05  Rafael Avila de Espindola  <espindola@google.com>
16542
16543         * Makefile.in (enable_plugin, plugin_includedir): New.
16544         (install): Depend on install-plugin.
16545         (PLUGIN_HEADERS): New.
16546         (install-plugin): New.
16547         * config.gcc: Add vxworks-dummy.h to tm_file for x86 and x86-64.
16548
16549 2009-05-05  Richard Guenther  <rguenther@suse.de>
16550
16551         PR tree-optimization/40022
16552         * tree-ssa-phiprop.c (struct phiprop_d): Exchange vop_stmt for
16553         the only vuse.
16554         (phivn_valid_p): Fix tuplification error, simplify.
16555         (phiprop_insert_phi): Add dumps.
16556         (propagate_with_phi): Simplify.
16557
16558 2009-05-05  Richard Guenther  <rguenther@suse.de>
16559
16560         PR middle-end/40023
16561         * builtins.c (gimplify_va_arg_expr): Properly build the address.
16562
16563 2009-05-05  Shujing Zhao  <pearly.zhao@oracle.com>
16564
16565         * tree.h (strip_float_extensions): Remove duplicate declaration.
16566         (build_low_bits_mask, debug_fold_checksum, expand_function_end,
16567         expand_function_start, stack_protect_prologue, stack_protect_epilogue,
16568         block_ultimate_origin): Rearrange the declarations line to match the
16569         comment that indicates the .c file which the functions are defined.
16570         (dwarf2out_*, set_decl_rtl): Add comment.
16571         (get_base_address): Adjust comment.
16572         (change_decl_assembler_name, maybe_fold_*, build_addr): Rearrange the
16573         declarations line and add comment.
16574         (is_builtin_name): Add blank after function name, for clarity.
16575
16576 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
16577
16578         * attribs.c (decl_attributes): Use %qE for identifiers in
16579         diagnostics.
16580         * cgraphunit.c (verify_cgraph_node): Translate function names to
16581         locale character set in diagnostics.
16582         * coverage.c (get_coverage_counts): Use %qE for identifiers in
16583         diagnostics.
16584         * doc/invoke.texi (-finstrument-functions-exclude-function-list):
16585         Document that functions are named in UTF-8.
16586         * expr.c (expand_expr_real_1): Translate function names to locale
16587         character set in diagnostics.
16588         * gimplify.c (omp_notice_variable, omp_is_private,
16589         gimplify_scan_omp_clauses): Use %qE for identifiers in
16590         diagnostics.
16591         * langhooks.c (lhd_print_error_function): Translate function names
16592         to locale character set.
16593         * langhooks.h (decl_printable_name): Document that return value is
16594         in internal character set.
16595         * stmt.c: Include pretty-print.h
16596         (tree_conflicts_with_clobbers_p): Use %qE for identifiers in
16597         diagnostics.
16598         (resolve_operand_name_1): Translate named operand name to locale
16599         character set.
16600         * stor-layout.c (finalize_record_size): Use %qE for identifiers in
16601         diagnostics.
16602         * toplev.c (announce_function): Translate function names to locale
16603         character set.
16604         (warn_deprecated_use): Use %qE for identifiers in diagnostics.
16605         (default_tree_printer): Use pp_identifier or translate identifiers
16606         to locale character set.  Mark "<anonymous>" for translation.
16607         * tree-mudflap.c (mx_register_decls, mudflap_finish_file): Use %qE
16608         for identifiers in diagnostics.
16609         * tree.c (handle_dll_attribute): Use %qE for identifiers in
16610         diagnostics.
16611         * varasm.c (output_constructor): Use %qE for identifiers in
16612         diagnostics.
16613
16614 2009-05-04  Rafael Avila de Espindola  <espindola@google.com>
16615
16616         * configure.ac: use ` ` instead of $()
16617         * configure: Regenerate.
16618
16619 2009-05-05  Ben Elliston  <bje@au.ibm.com>
16620
16621         * config/pa/linux-atomic.c: Eliminate conditional include of
16622         errno.h on non-LP64 systems to simplify build requirements.
16623
16624 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
16625
16626         * c-common.c (handle_mode_attribute): Use %qE for identifiers in
16627         diagnostics.
16628         * c-decl.c (check_bitfield_type_and_width): Make orig_name a tree
16629         and pass value to identifier_to_locale.
16630         (warn_variable_length_array): Make name a tree.
16631         (grokdeclarator): Separate diagnostic texts for named and unnamed
16632         declarators.  Use %qE for named declarators.
16633         * c-parser.c (c_lex_one_token): Use %qE for identifiers in
16634         diagnostics.
16635         * c-pragma.c (pop_alignment, handle_pragma_pack): Use %qE for
16636         identifiers in diagnostics.
16637         * c-typeck.c (push_member_name, start_init): Pass identifiers to
16638         identifier_to_locale.  Mark "anonymous" strings for translation.
16639
16640 2009-05-04  Michael Eager <eager@eagercon.com>
16641
16642         * config/rs6000/rs6000.c (rs6000_legitimate_address): Allow
16643         address for DImode/DFmode only if double-precision FP regs.
16644
16645 2009-05-04  Michael Eager <eager@eagercon.com>
16646
16647         * config/rs6000/rs6000.c (rs6000_libcall_value): Add
16648         TARGET_SINGLE_FLOAT check.
16649
16650 2009-05-04  Michael Eager <eager@eagercon.com>
16651
16652         * config/rs6000/xilinx.h: Add CPP_SPEC for -mxilinx-fpu options.
16653
16654 2009-05-04  Michael Eager <eager@eagercon.com>
16655
16656         * gcc/config.gcc: (powerpc-xilinx-eabi*): Add tm t-xilinx
16657         * config/rs6000/t-xilinx: New
16658
16659 2009-05-04  Paolo Bonzini  <bonzini@gnu.org>
16660
16661         * doc/tm.texi (LEGITIMIZE_ADDRESS): Revise documentation.
16662         * gcc/defaults.h (LEGITIMIZE_ADDRESS): Delete.
16663         * gcc/explow.c (memory_address): Use target hook.
16664         * gcc/targhooks.c (default_legitimize_address): New.
16665         * gcc/targhooks.h (default_legitimize_address): New.
16666         * gcc/target.h (legitimize_address): New.
16667         * gcc/target-def.h (TARGET_LEGITIMIZE_ADDRESS): New.
16668         (TARGET_INITIALIZER): Include it.
16669         * gcc/system.h (LEGITIMIZE_ADDRESS): Poison.
16670
16671         * config/bfin/bfin-protos.h (legitimize_address): Remove.
16672         * config/bfin/bfin.c (legitimize_address): Remove.
16673         * config/bfin/bfin.h (LEGITIMIZE_ADDRESS): Remove.
16674         * config/m68hc11/m68hc11-protos.h (m68hc11_legitimize_address):
16675         Remove.
16676         * config/m68hc11/m68hc11.c (m68hc11_legitimize_address): Remove.
16677         * config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Remove.
16678
16679         * gcc/config/arm/arm.h (LEGITIMIZE_ADDRESS, ARM_LEGITIMIZE_ADDRESS,
16680         THUMB_LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS): Delete.
16681         * gcc/config/s390/s390.h (LEGITIMIZE_ADDRESS): Delete.
16682         * gcc/config/m32c/m32c.h (LEGITIMIZE_ADDRESS): Delete.
16683         * gcc/config/sparc/sparc.h (LEGITIMIZE_ADDRESS): Delete.
16684         * gcc/config/m32r/m32r.h (LEGITIMIZE_ADDRESS): Delete.
16685         * gcc/config/i386/i386.h (LEGITIMIZE_ADDRESS): Delete.
16686         * gcc/config/sh/sh.h (LEGITIMIZE_ADDRESS): Delete.
16687         * gcc/config/avr/avr.h (LEGITIMIZE_ADDRESS): Delete.
16688         * gcc/config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Delete.
16689         * gcc/config/iq2000/iq2000.h (LEGITIMIZE_ADDRESS): Delete.
16690         * gcc/config/mn10300/mn10300.h (LEGITIMIZE_ADDRESS): Delete.
16691         * gcc/config/m68k/m68k.h (LEGITIMIZE_ADDRESS): Delete.
16692         * gcc/config/score/score.h (LEGITIMIZE_ADDRESS): Delete.
16693         * gcc/config/pa/pa.h (LEGITIMIZE_ADDRESS): Delete.
16694         * gcc/config/mips/mips.h (LEGITIMIZE_ADDRESS): Delete.
16695         * gcc/config/alpha/alpha.h (LEGITIMIZE_ADDRESS): Delete.
16696         * gcc/config/frv/frv.h (LEGITIMIZE_ADDRESS): Delete.
16697         * gcc/config/spu/spu.h (LEGITIMIZE_ADDRESS): Delete.
16698         * gcc/config/xtensa/xtensa.h (LEGITIMIZE_ADDRESS): Delete.
16699         * gcc/config/cris/cris.h (LEGITIMIZE_ADDRESS): Delete.
16700         * gcc/config/rs6000/rs6000.h (LEGITIMIZE_ADDRESS): Delete.
16701         * gcc/config/picochip/picochip.h (LEGITIMIZE_ADDRESS): Delete.
16702
16703         * gcc/config/s390/s390-protos.h (legitimize_address): Delete.
16704         * gcc/config/m32c/m32c-protos.h (m32c_legitimize_address): Delete.
16705         * gcc/config/sparc/sparc-protos.h (legitimize_address): Delete.
16706         * gcc/config/i386/i386-protos.h (legitimize_address): Delete.
16707         * gcc/config/avr/avr-protos.h (legitimize_address): Delete.
16708         * gcc/config/mn10300/mn10300-protos.h (legitimize_address): Delete.
16709         * gcc/config/score/score-protos.h (score_legitimize_address): Delete.
16710         * gcc/config/arm/arm-protos.h (arm_legitimize_address,
16711         (thumb_legitimize_address): Delete.
16712         * gcc/config/pa/pa-protos.h (hppa_legitimize_address): Delete.
16713         * gcc/config/mips/mips-protos.h (mips_legitimize_address): Delete.
16714         * gcc/config/alpha/alpha-protos.h (alpha_legitimize_address): Delete.
16715         * gcc/config/frv/frv-protos.h (frv_legitimize_address): Delete.
16716         * gcc/config/spu/spu-protos.h (spu_legitimize_address): Delete.
16717         * gcc/config/xtensa/xtensa-protos.h (xtensa_legitimize_address):
16718         Delete.
16719         * gcc/config/rs6000/rs6000-protos.h (rs6000_legitimize_address):
16720         Delete.
16721
16722         * config/arm/arm.c (arm_legitimize_address): Maybe call Thumb version.
16723         * config/m32c/m32c.c (m32c_legitimize_address): Standardize.
16724         * config/m32r/m32r.c (m32r_legitimize_address): New.
16725         * config/m68k/m68k.c (m68k_legitimize_address): New.
16726         * config/score/score.c (score_legitimize_address): Standardize.
16727         * config/score/score3.c (score3_legitimize_address): Standardize.
16728         * config/score/score3.h (score3_legitimize_address): Adjust.
16729         * config/score/score7.c (score7_legitimize_address): Standardize.
16730         * config/score/score7.h (score7_legitimize_address): Adjust.
16731         * config/sh/sh.c (sh_legitimize_address): New.
16732         * config/iq2000/iq2000.c (iq2000_legitimize_address): New.
16733
16734         * gcc/config/s390/s390.c (legitimize_address): Rename to...
16735         (s390_legitimize_address): ... this.
16736         * gcc/config/sparc/sparc.c (legitimize_address): Rename to...
16737         (sparc_legitimize_address): ... this.
16738         * gcc/config/i386/i386.c (legitimize_address): Rename to...
16739         (ix86_legitimize_address): ... this.
16740         * gcc/config/avr/avr.c (legitimize_address): Rename to...
16741         (avr_legitimize_address): ... this.
16742         * gcc/config/mn10300/mn10300.c (legitimize_address): Rename to...
16743         (mn10300_legitimize_address): ... this.
16744         * config/alpha/alpha.c (alpha_legitimize_address): Wrap...
16745         (alpha_legitimize_address_1): ... the old alpha_legitimize_address.
16746         (alpha_expand_mov): Adjust call.
16747
16748         * config/frv/frv.c (frv_legitimize_address): Return x on failure.
16749         * config/spu/spu.c (spu_legitimize_address): Likewise.
16750         * config/xtensa/xtensa.c (xtensa_legitimize_address): Likewise.
16751         * config/rs6000/rs6000.c (rs6000_legitimize_address): Likewise.
16752
16753 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
16754
16755         * intl.c (locale_encoding, locale_utf8): New.
16756         (gcc_init_libintl): Initialize locale_encoding and locale_utf8.
16757         * intl.h (locale_encoding, locale_utf8): Declare.
16758         * pretty-print.c: Include ggc.h.  Include iconv.h if HAVE_ICONV.
16759         (pp_base_tree_identifier, decode_utf8_char, identifier_to_locale):
16760         New.
16761         * pretty-print.h (pp_identifier): Call identifier_to_locale on ID
16762         argument.
16763         (pp_tree_identifier): Define to call pp_base_tree_identifier.
16764         (pp_base_tree_identifier): Declare as function.
16765         (identifier_to_locale): Declare.
16766         * Makefile.in (pretty-print.o): Update dependencies.
16767         * varasm.c (finish_aliases_1): Use %qE for identifiers in diagnostics.
16768
16769 2009-05-04  Richard Guenther  <rguenther@suse.de>
16770
16771         PR middle-end/40015
16772         * builtins.c (fold_builtin_memory_op): Do not decay to element
16773         type if the size matches the whole array.
16774
16775 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
16776
16777         * expmed.c (synth_mult): When trying out a shift, pass the result
16778         of a signed shift.
16779
16780 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
16781
16782         * expmed.c (shiftsub_cost): Rename to shiftsub0_cost.
16783         (shiftsub1_cost): New.
16784         (init_expmed): Compute shiftsub1_cost.
16785         (synth_mult): Optimize multiplications by constants of the form
16786         -(2^^m-1) for some constant positive integer m.
16787
16788 2009-05-03  Richard Guenther  <rguenther@suse.de>
16789
16790         PR c/39983
16791         * c-typeck.c (array_to_pointer_conversion): Do not built
16792         ADDR_EXPRs of arrays of pointer-to-element type.
16793         * c-gimplify.c (c_gimplify_expr): Revert change fixing
16794         up wrong ADDR_EXPRs after-the-fact.
16795         * c-common.c (strict_aliasing_warning): Strip pointer
16796         conversions for obtaining the original type.
16797         * builtins.c (fold_builtin_memset): Handle array types.
16798         (fold_builtin_memory_op): Handle folded POINTER_PLUS_EXPRs
16799         and array types
16800
16801 2009-05-03  Richard Guenther  <rguenther@suse.de>
16802
16803         PR middle-end/23329
16804         * tree-ssa.c (useless_type_conversion_p_1): Use get_deref_alias_set.
16805         Do not lose casts from array types with unknown extent to array
16806         types with known extent.
16807         * tree-ssa-copy.c (may_propagate_copy): Remove hack checking for
16808         alias set compatibility.
16809
16810 2009-05-03  Manuel López-Ibáñez  <manu@gcc.gnu.org>
16811
16812         * flags.h (extra_warnings): Delete.
16813         * toplev.c (process_options): Handle Wuninitialized here.
16814         * opts.c (extra_warnings): Delete.
16815         (set_Wextra): Delete.
16816         (common_handle_option): -Wextra can be handled automatically.
16817         * c-opts.c (c_common_handle_option): Delete obsolete code.
16818         (c_common_post_options): Simplify comment.
16819         * common.opt (W): Add Var.
16820         (Wextra): Add Var.
16821         (Wuninitialized): Initialize to -1.
16822
16823 2009-05-03  Adam Nemet  <anemet@caviumnetworks.com>
16824             Richard Guenther  <rguenther@suse.de>
16825
16826         * expr.c (get_def_for_expr): New function.
16827         (expand_expr_real_1) <PLUS_EXPR, MINUS_EXPR>: Adjust to work with
16828         SSA rather than trees.
16829         <MULT_EXPR>: Likewise.  Use subexp0 and subexp1 instead of
16830         TREE_OPERAND (exp, 0) and TREE_OPERAND (exp, 1).
16831
16832 2009-05-03  Joseph Myers  <joseph@codesourcery.com>
16833
16834         * c-common.c (reswords): Add _Imaginary.
16835         * c-common.c (enum rid): Add RID_IMAGINARY.
16836
16837 2009-05-03  Paolo Bonzini  <bonzini@gnu.org>
16838
16839         * tree.h (TYPE_VECTOR_OPAQUE): Fix documentation.
16840         Patch by Richard Guenther.
16841
16842 2009-05-03  Anatoly Sokolov  <aesok@post.ru>
16843
16844         * defaults.h (FRAME_POINTER_REQUIRED): Provide default.
16845         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
16846         * config/alpha/alpha.h (FRAME_POINTER_REQUIRED): Delete.
16847         * config/s390/s390.h (FRAME_POINTER_REQUIRED): Delete.
16848         * config/spu/spu.h (FRAME_POINTER_REQUIRED): Delete.
16849         * config/sh/sh.h (FRAME_POINTER_REQUIRED): Delete.
16850         * config/pdp11/pdp11.h (FRAME_POINTER_REQUIRED): Delete.
16851         * config/stormy16/stormy16.h (FRAME_POINTER_REQUIRED): Delete.
16852         * config/m68hc11/m68hc11.h (FRAME_POINTER_REQUIRED): Delete.
16853         * config/iq2000/iq2000.h (FRAME_POINTER_REQUIRED): Delete.
16854         * config/mn10300/mn10300.h (FRAME_POINTER_REQUIRED): Delete.
16855         * config/ia64/ia64.h (FRAME_POINTER_REQUIRED): Delete.
16856         * config/m68k/m68k.h (FRAME_POINTER_REQUIRED): Delete.
16857         * config/rs6000/rs6000.h (FRAME_POINTER_REQUIRED): Delete.
16858         * config/picochip/picochip.h (FRAME_POINTER_REQUIRED): Delete.
16859         * config/mcore/mcore.h (FRAME_POINTER_REQUIRED): Delete.
16860         * config/h8300/h8300.h (FRAME_POINTER_REQUIRED): Delete.
16861         * config/v850/v850.h (FRAME_POINTER_REQUIRED): Delete.
16862
16863 2009-05-02  Richard Guenther  <rguenther@suse.de>
16864
16865         PR tree-optimization/39940
16866         * tree-ssa-pre.c (eliminate): Make sure we may propagate before
16867         doing so.
16868
16869 2009-05-02  Richard Guenther  <rguenther@suse.de>
16870
16871         PR middle-end/40001
16872         * tree-ssa.c (execute_update_addresses_taken): Properly check
16873         if we can mark a variable DECL_GIMPLE_REG_P.
16874         * gimple.c (is_gimple_reg): Re-order check for DECL_GIMPLE_REG_P
16875         back to the end of the function.
16876         (is_gimple_reg_type): Remove complex type special casing.
16877         * gimplify.c (gimplify_bind_expr): Do not set DECL_GIMPLE_REG_P
16878         if not optimizing.
16879
16880 2009-05-02  Ben Elliston  <bje@au.ibm.com>
16881
16882         * doc/collect2.texi (Collect2): Document search path behaviour
16883         when configured with --with-ld.
16884
16885 2009-05-02  Jan Hubicka  <jh@suse.cz>
16886
16887         * tree-ssa-coalesce.c (coalesce_cost): Do not take ciritical
16888         parameter; update callers.
16889         (coalesce_cost_edge): EH edges are costier because they needs
16890         splitting even if not critical and even more costier when there are
16891         multiple EH predecestors.
16892
16893 2009-05-02  Jan Hubicka  <jh@suse.cz>
16894
16895         * except.c (remove_eh_handler_and_replace): Handle updating after
16896         removing TRY blocks.
16897
16898 2009-05-02  Eric Botcazou  <ebotcazou@adacore.com>
16899
16900         * store-motion.c (compute_store_table): Add ENABLE_CHECKING guard.
16901
16902 2009-05-02  Steven Bosscher  <steven@gcc.gnu.org>
16903
16904         * varasm.c: Do not include c-pragma.h.
16905         * attribs.c: Do not incude c-common.h.
16906
16907 2009-05-01  Michael Matz  <matz@suse.de>
16908
16909         * calls.c (initialize_argument_information): Handle SSA names like
16910         decls with a non MEM_P DECL_RTL.
16911
16912 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
16913
16914         * ipa-reference.c: Do not include c-common.h, include splay-tree.h.
16915         * ipa-utils.c: Likewise.
16916         * ipa-type-escape.c: Likewise.
16917         * cgraphunit.c Do not include c-common.h.
16918         * ipa-pure-const.c: Likewise.
16919         * tree-if-conv.c: Likewise.
16920         * matrix-reorg.c: Do not include c-common.h and c-tree.h.
16921         * ipa-struct-reorg.c: Likewise.
16922         * tree-nomudflap.c: Likewise.
16923         * tree-ssa-structalias.c: Likewise.
16924
16925 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
16926
16927         * store-motion.c: Many cleanups to make this pass a first-class
16928         citizen instead of an appendix to gcse load motion.  Add TODO list
16929         to make this pass faster/cleaner/better.
16930
16931         (struct ls_expr): Post gcse.c-split cleanups.
16932         Rename to st_expr.  Rename "loads" field to "antic_stores".  Rename
16933         "stores" field to "avail_stores".
16934         (pre_ldst_mems): Rename to store_motion_mems.
16935         (pre_ldst_table): Rename to store_motion_mems_table.
16936         (pre_ldst_expr_hash): Rename to pre_st_expr_hash, update users.
16937         (pre_ldst_expr_eq): Rename to pre_st_expr_eq, update users.
16938         (ldst_entry): Rename to st_expr_entry, update users.
16939         (free_ldst_entry): Rename to free_st_expr_entry, update users.
16940         (free_ldst_mems): Rename to free_store_motion_mems, update users.
16941         (enumerate_ldsts): Rename to enumerate_store_motion_mems,
16942         update caller.
16943         (first_ls_expr): Rename to first_st_expr, update users.
16944         (next_ls_expr): Rename to next_st_expr, update users.
16945         (print_ldst_list): Rename to print_store_motion_mems.  Print names of
16946         fields properly for store motion instead of names inherited from load
16947         motion in gcse.c.
16948         (ANTIC_STORE_LIST, AVAIL_STORE_LIST): Remove.
16949         (LAST_AVAIL_CHECK_FAILURE): Explain what this is.  Undefine when we
16950         are done with it.
16951
16952         (ae_kill): Rename to st_kill, update users.
16953         (ae_gen): Rename to st_avloc, update users.
16954         (transp): Rename to st_transp, update users.
16955         (pre_insert_map): Rename to st_insert_map, update users.
16956         (pre_delete_map): Rename to st_delete_map, update users.
16957         (insert_store, build_store_vectors, free_store_memory,
16958         one_store_motion_pass): Update for abovementioned changes.
16959
16960         (gcse_subst_count, gcse_create_count): Remove.
16961         (one_store_motion_pass): New statistics counters "n_stores_deleted"
16962         and "n_stores_created", local variables.
16963
16964         (extract_mentioned_regs, extract_mentioned_regs_1): Rewrite to
16965         use for_each_rtx.
16966
16967         (regvec, compute_store_table_current_insn): Remove.
16968         (reg_set_info, reg_clear_last_set): Remove.
16969         (compute_store_table): Use DF caches instead of local dataflow
16970         solvers.
16971
16972 2009-05-01  Joseph Myers  <joseph@codesourcery.com>
16973
16974         * c-objc-common.c (c_tree_printer): Print identifiers with
16975         pp_identifier, not pp_string.  Mark "({anonymous})" for
16976         translation.
16977         * c-pretty-print.c (pp_c_ws_string): New.
16978         (pp_c_cv_qualifier, pp_c_type_specifier,
16979         pp_c_specifier_qualifier_list, pp_c_parameter_type_list,
16980         pp_c_storage_class_specifier, pp_c_function_specifier,
16981         pp_c_attributes, pp_c_bool_constant, pp_c_constant,
16982         pp_c_primary_expression, pp_c_postfix_expression,
16983         pp_c_unary_expression, pp_c_shift_expression,
16984         pp_c_relational_expression, pp_c_equality_expression,
16985         pp_c_logical_and_expression, pp_c_logical_or_expression): Mostly
16986         use pp_string and pp_c_ws_string in place of pp_identifier and
16987         pp_c_identifier for non-identifiers.  Mark English strings for
16988         translation.
16989         * c-pretty-print.h (pp_c_ws_string): Declare.
16990
16991 2009-04-30  Paul Pluzhnikov  <ppluzhnikov@google.com>
16992             Roland McGrath <roland@redhat.com>
16993
16994         * configure.ac (HAVE_LD_BUILDID): New check for ld --build-id support.
16995         (ENABLE_LD_BUILDID): New configuration option.
16996         * gcc.c [HAVE_LD_BUILDID and ENABLE_LD_BUILDID]
16997         (LINK_BUILDID_SPEC): New macro.
16998         (init_spec): If defined, prepend it between LINK_EH_SPEC and
16999         link_spec.
17000         * doc/install.texi: Document --enable-linker-build-id option.
17001         * configure: Rebuild.
17002         * config.in: Rebuild.
17003
17004 2009-04-30  Adam Nemet  <anemet@caviumnetworks.com>
17005
17006         * config/mips/mips.h (FRAME_GROWS_DOWNWARD,
17007         MIPS_GP_SAVE_AREA_SIZE): Define new macros.
17008         (STARTING_FRAME_OFFSET): Return 0 if FRAME_GROWS_DOWNWARD.  Use
17009         MIPS_GP_SAVE_AREA_SIZE.
17010         * config/mips/mips.c (struct mips_frame_info): Update comment
17011         before arg_pointer_offset and hard_frame_pointer_offset.
17012         (mips_compute_frame_info): Update diagram before function: to
17013         correctly use stack_pointer_rtx for fp_sp_offset and gp_sp_offset, to
17014         indicate the position of frame_pointer_rtx with -fstack-protector and
17015         to show args_size.  Don't allocate cprestore area for leaf functions
17016         if FRAME_GROWS_DOWNWARD.  Use MIPS_GP_SAVE_AREA_SIZE to set
17017         cprestore_size.
17018         (mips_initial_elimination_offset): Update for FRAME_GROWS_DOWNWARD.
17019
17020 2009-04-30  Michael Matz  <matz@suse.de>
17021
17022         PR tree-optimization/39955
17023         * config/rs6000/rs6000.c (rs6000_check_sdmode): Also check SSA_NAMEs.
17024
17025 2009-04-30  Dave Korn  <dave.korn.cygwin@gmail.com>
17026
17027         * ira.c (setup_cover_and_important_classes):  Use safe macro
17028         REG_CLASS_FOR_CONSTRAINT instead of calling regclass_for_constraint
17029         directly.
17030         * genpreds.c (write_tm_preds_h):  Output suitable definition of
17031         REG_CLASS_FOR_CONSTRAINT.
17032
17033 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
17034
17035         * alloc-pool.c (alloc_pool_descriptor): Use an insert_opion value
17036         instead of an int.
17037         * bitmap.c (bitmap_descriptor): Likewise.
17038         * ggc-common.c (loc_descriptor): Likewise.
17039         * varray.c (varray_descriptor): Likewise.
17040         * vec.c (vec_descriptor): Likewise.
17041
17042 2009-04-30  Eric Botcazou  <ebotcazou@adacore.com>
17043
17044         * Makefile.in (dce.o): Add $(EXCEPT_H).
17045         * dce.c: Include except.h and delete redundant vector definitions.
17046         (deletable_insn_p): Return false for non-call insns that can throw
17047         if DF is running.
17048
17049 2009-04-30  Steven Bosscher  <steven@gcc.gnu.org>
17050
17051         * gcse.c (ae_gen): Remove.
17052         (can_assign_to_reg_p): Rename to can_assign_to_reg_without_clobbers_p
17053         and make non-static function to make it available in store-motion.c.
17054         Update call sites with search-and-replace.
17055         (enumerate_ldsts, reg_set_info, reg_clear_last_set, store_ops_ok,
17056         extract_mentioned_regs, extract_mentioned_regs_helper,
17057         find_moveable_store, compute_store_table, load_kills_store, find_loads,
17058         store_killed_in_insn, store_killed_after, store_killed_before,
17059         build_store_vectors, insert_insn_start_basic_block, insert-store,
17060         remove_reachable_equiv_notes, replace_store_insn, delete_store,
17061         free_store_memory, one_store_motion_pass, gate_rtl_store_motion,
17062         execute_rtl_store_motion, pass_rtl_store_motion): Move to...
17063         * store-motion.c: ...new file.  Also copy data structures from gcse.c
17064         and clean up to remove parts not used by store motion.
17065         * rtl.h (can_assign_to_reg_without_clobbers_p): Add prototype.
17066         * Makefile.in (store-motion.o): New rule. Add to OBJS-common.
17067
17068 2009-04-30  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
17069
17070         PR target/38571
17071         * config/arm/arm.h (FUNCTION_BOUNDARY): Set to 16 for thumb
17072         when optimizing for size.
17073
17074 2009-04-30  Hans-Peter Nilsson  <hp@axis.com>
17075
17076         * gcse.c (gcse_constant_p): Fix typo in last change.
17077
17078 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
17079
17080         * plugin.c: Include plugin-version.h only if ENABLE_PLUGIN is defined.
17081
17082 2009-04-30  Andreas Krebbel  <krebbel1@de.ibm.com>
17083
17084         * gcse.c (gcse_constant_p): Make sure the constant is sharable.
17085
17086 2009-04-29  James E. Wilson  <wilson@codesourcery.com>
17087
17088         * config/mips/mips.c (mips_add_offset): Use gen_int_mode for
17089         CONST_HIGH_PART result.
17090
17091 2009-04-29  Anatoly Sokolov  <aesok@post.ru>
17092
17093         * config/avr/avr.c (initial_elimination_offset): Rename to
17094         avr_initial_elimination_offset.
17095         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p,
17096         change return type to bool.
17097         (avr_can_eliminate): New function.
17098         * config/avr/avr.h (CAN_ELIMINATE): Use avr_can_eliminate.
17099         (FRAME_POINTER_REQUIRED): Use avr_frame_pointer_required_p.
17100         (INITIAL_ELIMINATION_OFFSET): Use avr_initial_elimination_offset.
17101         * config/avr/avr-protos.h (initial_elimination_offset): Rename to
17102         avr_initial_elimination_offset.
17103         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p.
17104         (avr_initial_elimination_offset): Define.
17105
17106 2009-04-29  Eric Botcazou  <ebotcazou@adacore.com>
17107             Steven Bosscher  <steven@gcc.gnu.org>
17108
17109         PR rtl-optimization/39938
17110         * Makefile.in (cfgrtl.o): Add $(INSN_ATTR_H).
17111         * cfgrtl.c: Include insn-attr.h.
17112         (rest_of_pass_free_cfg): New function.
17113         (pass_free_cfg): Use rest_of_pass_free_cfg as execute function.
17114         * resource.c (init_resource_info): Remove call to df_analyze.
17115
17116 2009-04-29  Richard Guenther  <rguenther@suse.de>
17117
17118         PR target/39943
17119         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Only
17120         allow conversion to signed integers.
17121
17122 2009-04-29  Richard Guenther  <rguenther@suse.de>
17123
17124         * tree-cfg.c (verify_gimple_assign_binary): Allow vector
17125         shifts of floating point vectors if the shift amount is
17126         a constant multiple of the element size.
17127
17128 2009-04-29  Andreas Krebbel  <krebbel1@de.ibm.com>
17129             Michael Matz  <matz@suse.de>
17130
17131         PR middle-end/39927
17132         PR bootstrap/39929
17133         * tree-outof-ssa.c (emit_partition_copy): New function.
17134         (insert_partition_copy_on_edge, insert_rtx_to_part_on_edge,
17135         insert_part_to_rtx_on_edge): Perform the partition base var
17136         copy using emit_partition_copy.
17137         (insert_value_copy_on_edge): Convert constants to the right mode.
17138         (insert_rtx_to_part_on_edge): Add UNSIGNEDSRCP parameter.
17139         (elim_create): Pass the sign of the src to insert_rtx_to_part_on_edge.
17140
17141 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
17142
17143         * config/bfin/bfin.c (bfin_optimize_loop): If we need a scratch reg,
17144         scan backwards to try to find a constant to initialize it.
17145
17146         * config/bfin/bfin.c (bfin_optimize_loop): When looking for the last
17147         insn before the loop_end instruction, don't look past labels.
17148
17149 2009-04-29  Richard Guenther  <rguenther@suse.de>
17150
17151         PR middle-end/39937
17152         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not
17153         loose type conversions.
17154         (forward_propagate_addr_expr): Fix tuplification bug.  Remove
17155         stmts only if there are no uses of its definition.
17156
17157 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
17158
17159         * config/bfin/bfin.h (splitting_loops): Declare.
17160         * config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315):
17161         Reorder bit definitions to be ascending.
17162         (WA_LOAD_LCREGS, ENABLE_WA_LOAD_LCREGS): New macros.
17163         * config/bfin/bfin.c (splitting_loops): New variable.
17164         (bfin_cpus): Add WA_LOAD_LCREGS as needed.
17165         (struct loop_info): Remove members INIT and LOOP_INIT.
17166         (bfin_optimize_loop): Don't set them.  Reorder the code that generates
17167         the LSETUP sequence.  Allow LC to be loaded from any register, but
17168         also add a case to push/pop a PREG scratch if ENABLE_WA_LOAD_LCREGS.
17169         (bfin_reorg_loops): When done, split all BB_ENDs with splitting_loops
17170         set to 1.
17171         * config/bfin/bfin.md (loop_end splitter): Use splitting_loops instead
17172         of reload_completed.
17173
17174         From Jie Zhang:
17175         * config/bfin/bfin.md (movsi_insn): Refine constraints.
17176
17177 2009-04-29  Rafael Avila de Espindola  <espindola@google.com>
17178
17179         * Makefile.in (PLUGIN_VERSION_H): New.
17180         (OBJS-common): Remove plugin-version.o.
17181         (plugin.o): Depend on (PLUGIN_VERSION_H).
17182         (plugin-version.o): Remove.
17183         * configure: Regenerate
17184         * configure.ac: Create plugin-version.h.
17185         * gcc-plugin.h (plugin_gcc_version): Remove.
17186         (plugin_default_version_check): Change signature.
17187         * plugin-version.c: Remove.
17188         * plugin.c: Include plugin-version.h.
17189         (str_plugin_gcc_version_name): Remove.
17190         (try_init_one_plugin): Pass gcc version to plugin_init.
17191         (plugin_default_version_check): Both gcc and plugin versions are now
17192         arguments.
17193
17194 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
17195
17196         * config/bfin/bfin.c (bfin_optimize_loop): Unify handling of
17197         problematic last insns.  Test for TYPE_CALL rather than CALL_P.
17198         Remove special case testing for last insn of inner loops. Don't fail
17199         if the loop ends with a jump, emit an extra nop instead.
17200
17201         * config/bfin/bfin.c (bfin_register_move_cost): Test for subsets of
17202         DREGS rather than comparing directly.  Remove code that tries to
17203         account for latencies.
17204
17205 2009-04-29  Richard Guenther  <rguenther@suse.de>
17206
17207         PR tree-optimization/39941
17208         * tree-ssa-pre.c (eliminate): Schedule update-ssa after
17209         eliminating an indirect call.
17210
17211 2009-04-29  Richard Guenther  <rguenther@suse.de>
17212
17213         * tree-cfg.c (verify_types_in_gimple_reference): Add require_lvalue
17214         parameter.  Allow invariants as base if !require_lvalue.
17215         (verify_gimple_assign_single): Adjust.
17216
17217 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
17218
17219         * config/bfin/bfin.md (sp_or_sm, spm_string, spm_name): New macro.
17220         (ss<spm_name>hi3, ss<spm_name>hi3_parts, ss<spm_name>hi3_low_parts,
17221         ss<spm_name_hi3_high_parts): New patterns, replacing ssaddhi3,
17222         ssubhi3, ssaddhi3_parts and sssubhi3_parts.
17223         (flag_mulhi3_parts): Produce a HImode output rather than trying to set
17224         a VEC_SELECT.
17225         * config/bfin/bfin.c (bfin_expand_builtin,
17226         case BFIN_BUILTIN_CPLX_SQU): Adjust accordingly.
17227
17228 2009-04-28  Richard Guenther  <rguenther@suse.de>
17229
17230         * tree-vect-loop.c (get_initial_def_for_induction): Use
17231         correct types for pointer increment.
17232
17233 2009-04-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
17234
17235         * toplev.c (print_version): Update GMP version string calculation.
17236
17237 2009-04-28  Eric Botcazou  <ebotcazou@adacore.com>
17238
17239         PR rtl-optimization/39938
17240         * resource.c (init_resource_info): Add call to df_analyze.
17241
17242 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
17243
17244         * config/alpha/alpha.md (usegp): Cast the result of
17245         alpha_find_lo_sum_using_gp to enum attr_usegp.
17246         * config/alpha/alpha.c (override_options): Remove end-of-structure
17247         marker element from cpu_table.  Use array size of cpu_table to handle
17248         -mcpu and -mtune options.
17249         (tls_symbolic_operand_type): Change 0 to TLS_MODEL_NONE.
17250
17251 2009-04-28  Joseph Myers  <joseph@codesourcery.com>
17252
17253         * config.gcc (powerpc*-*-* | rs6000-*-*): Add
17254         rs6000/option-defaults.h to tm_file.  Support cpu_32, cpu_64,
17255         tune_32 and tune_64.
17256         * doc/install.texi (--with-cpu-32, --with-cpu-64): Document
17257         support on PowerPC.
17258         * config/rs6000/rs6000.h (OPTION_DEFAULT_SPECS): Move to ...
17259         * config/rs6000/option-defaults.h: ... here.  New file.
17260         (OPT_64, OPT_32): Define.
17261         (MASK_64BIT): Define to 0 if not already defined.
17262         (OPT_ARCH64, OPT_ARCH32): Define.
17263         (OPTION_DEFAULT_SPECS): Add entries for cpu_32, cpu_64, tune_32
17264         and tune_64.
17265
17266 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
17267
17268         * config/arm/arm.c (arm_override_options): Emit error on using
17269         fpa with AAPCS.
17270
17271 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
17272
17273         PR rtl-optimization/39914
17274         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
17275         registers for allocnos created from user-defined variables only
17276         when not optimizing.
17277
17278 2009-04-28  Richard Guenther  <rguenther@suse.de>
17279
17280         PR middle-end/39937
17281         * fold-const.c (fold_binary): Use distribute_real_division only
17282         on float types.
17283
17284 2009-04-28  Steve Ellcey  <sje@cup.hp.com>
17285
17286         * config.gcc (hppa*64*-*-hpux11*): Set use_gcc_stdint and
17287         add hpux-stdint.h to tm_file.
17288         (hppa[12]*-*-hpux11*): Ditto.
17289         (ia64*-*-hpux*): Ditto.
17290         * config/hpux-stdint.h: New.
17291         * config/ia64/hpux.h (TARGET_OS_CPP_BUILTINS): Set
17292         __STDC_EXT__ for all compiles.
17293         * config/pa/pa-hpux.h: Ditto.
17294         * config/pa/pa-hpux10.h: Ditto.
17295         * config/pa/pa-hpux11.h: Ditto.
17296
17297 2009-04-28  Catherine Moore  <clm@codesourcery.com>
17298
17299         * debug.h (set_name): Add comment.
17300
17301 2009-04-28  Andrew Pinski  <pinskia@gmail.com>
17302
17303         PR target/39929
17304         * config/darwin.c (machopic_gen_offset): Check
17305         currently_expanding_to_rtl if current_ir_type returns IR_GIMPLE.
17306         * config/arm/arm.c (require_pic_register): Likewise.
17307
17308 2009-04-28  Paolo Bonzini  <bonzini@gnu.org>
17309
17310         * config/m32c/m32c.c (TARGET_PROMOTE_FUNCTION_RETURN,
17311         m32c_promote_function_return, TARGET_PROMOTE_PROTOTYPES,
17312         m32c_promote_prototypes): Delete.
17313
17314 2009-04-28  Michael Matz  <matz@suse.de>
17315
17316         PR middle-end/39922
17317         * tree-outof-ssa.c (insert_value_copy_on_edge): Don't convert
17318         constants.
17319
17320 2009-04-28  Richard Guenther  <rguenther@suse.de>
17321
17322         * tree-vect-stmts.c (vect_get_vec_def_for_operand): Fix type error.
17323
17324 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
17325
17326         * config/arm/arm-cores.def: Add support for arm1156t2f-s.
17327         * doc/invoke.texi (ARM Options): Document support for arm1156t2f-s.
17328         * config/arm/arm-tune.md: Regenerate.
17329
17330 2009-04-28  Alexander Monakov  <amonakov@ispras.ru>
17331
17332         * sel-sched-ir.c (maybe_tidy_empty_bb): Do not attempt to delete a
17333         block if there are complex incoming edges.
17334         (sel_merge_blocks): Remove useless assert.
17335         (sel_redirect_edge_and_branch): Check that edge was redirected.
17336         * sel-sched-ir.h (_eligible_successor_edge_p): Remove assert.
17337         (sel_find_rgns): Delete declaration.
17338         * sel-sched.c (purge_empty_blocks): Attempt to remove first block of
17339         the region when it is not a preheader.
17340
17341 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
17342
17343         PR c/39323
17344         * config/alpha/elf.h (MAX_OFILE_ALIGNMENT): Sync with elfos.h
17345
17346 2009-04-28  Richard Guenther  <rguenther@suse.de>
17347
17348         * tree.h (SSA_NAME_VALUE): Remove.
17349         (struct tree_ssa_name): Remove value_handle member.
17350         * tree-vrp.c (execute_vrp): Initialize/free the value-handle
17351         array for jump threading.
17352         * tree-ssa-propagate.c (ssa_prop_init): Do not initialize
17353         SSA_NAME_VALUEs.
17354         * print-tree.c (print_node): Do not dump SSA_NAME_VALUEs.
17355         * tree-flow.h (threadedge_initialize_values): Declare.
17356         (threadedge_finalize_values): Likewise.
17357         * tree-ssa-threadedge.c (ssa_name_values): New global variable.
17358         (SSA_NAME_VALUE): Define.
17359         (threadedge_initialize_values): New function.
17360         (threadedge_finalize_values): Likewise.
17361         * tree-ssa-dom.c (ssa_name_values): New global variable.
17362         (SSA_NAME_VALUE): Define.
17363         (tree_ssa_dominator_optimize): Initialize/free the value-handle array.
17364
17365 2009-04-28  Ira Rosen  <irar@il.ibm.com>
17366
17367         * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks):
17368         Use REPORT_VECTORIZED_LOCATIONS instead
17369         REPORT_VECTORIZED_LOOPS.
17370         * tree-vectorizer.c (vect_verbosity_level): Make static.
17371         (vect_loop_location): Rename to vect_location.
17372         (vect_set_verbosity_level): Update comment.
17373         (vect_set_dump_settings): Use REPORT_VECTORIZED_LOCATIONS
17374         and vect_location.
17375         (vectorize_loops): Fix comment. Use REPORT_VECTORIZED_LOCATIONS
17376         and vect_location. Use REPORT_UNVECTORIZED_LOCATIONS
17377         instead REPORT_UNVECTORIZED_LOOPS.
17378         * tree-vectorizer.h (enum vect_def_type): Rename vect_invariant_def
17379         and vect_loop_def to vect_external_def and vect_internal_def.
17380         (enum verbosity_levels): Rename REPORT_VECTORIZED_LOOPS
17381         and REPORT_UNVECTORIZED_LOOPS to REPORT_VECTORIZED_LOCATIONS and
17382         REPORT_UNVECTORIZED_LOCATIONS.
17383         (enum vect_relevant): Update comment. Rename vect_unused_in_loop
17384         and vect_used_in_loop and to vect_unused_in_scope and
17385         vect_used_in_scope.
17386         (STMT_VINFO_RELEVANT_P): Use vect_unused_in_scope.
17387         (vect_verbosity_level): Remove declaration.
17388         (vect_analyze_operations): Likewise.
17389         (vect_analyze_stmt): Declare.
17390         * tree-vect-loop.c (vect_determine_vectorization_factor): Use
17391         REPORT_UNVECTORIZED_LOCATIONS.
17392         (vect_get_loop_niters): Fix indentation.
17393         (vect_analyze_loop_form): Use REPORT_UNVECTORIZED_LOCATIONS.
17394         (vect_analyze_loop_operations): New function.
17395         (vect_analyze_loop): Call vect_analyze_loop_operations instead of
17396         vect_analyze_operations.
17397         (vect_is_simple_reduction): Use new names.
17398         (vectorizable_live_operation, vect_transform_loop): Likewise.
17399         * tree-vect-data-refs.c (vect_check_interleaving): Add a return value
17400         to specify whether the data references can be a part of interleaving
17401         chain.
17402         (vect_analyze_data_ref_dependence): Use new names.
17403         (vect_analyze_data_refs_alignment, vect_analyze_data_refs): Likewise.
17404         (vect_create_addr_base_for_vector_ref): Remove redundant code.
17405         * tree-vect-patterns.c (widened_name_p): Use new names.
17406         (vect_recog_dot_prod_pattern): Likewise.
17407         * tree-vect-stmts.c (vect_stmt_relevant_p): Use new names.
17408         (process_use, vect_mark_stmts_to_be_vectorized,
17409         vect_model_simple_cost, vect_model_store_cost,
17410         vect_get_vec_def_for_operand, vect_get_vec_def_for_stmt_copy,
17411         vectorizable_call, vectorizable_conversion, vectorizable_assignment,
17412         vectorizable_operation, vectorizable_type_demotion,
17413         vectorizable_type_promotion, vectorizable_store, vectorizable_load,
17414         vectorizable_condition): Likewise.
17415         (vect_analyze_operations): Split into vect_analyze_loop_operations
17416         and ...
17417         (vect_analyze_stmt): ... new function.
17418         (new_stmt_vec_info): Use new names.
17419         (vect_is_simple_use): Use new names and fix comment.
17420         * tree-vect-slp.c (vect_get_and_check_slp_defs): Use new names.
17421         (vect_build_slp_tree, vect_analyze_slp, vect_schedule_slp): Likewise.
17422
17423 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
17424
17425         PR target/39911
17426         * config/i386/i386.c (print_operand) ['Z']: Handle floating point
17427         and integer modes for x87 operands.  Do not ICE for unsupported size,
17428         generate error instead.  Generate error for unsupported operand types.
17429         ['z']: Do not handle HImode memory operands specially.  Warning
17430         for floating-point operands.  Fallthru to 'Z' for unsupported operand
17431         types.  Do not ICE for unsupported size, generate error instead.
17432         (output_387_binary_op): Use %Z to output operands.
17433         (output_fp_compare): Ditto.
17434         (output_387_reg_move): Ditto.
17435
17436 2009-04-28  Ben Elliston  <bje@au.ibm.com>
17437
17438         PR c++/35652
17439         Revert:
17440
17441         2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
17442
17443         * builtins.c (c_strlen): Do not warn here.
17444         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
17445         * c-common.c (pointer_int_sum): Take an explicit location.
17446         Warn about offsets out of bounds.
17447         * c-common.h (pointer_int_sum): Adjust declaration.
17448
17449 2009-04-27  Ian Lance Taylor  <iant@google.com>
17450
17451         * collect2.c (is_ctor_dtor): Change type of ret field in struct
17452         names to symkind.
17453         * dce.c (run_fast_df_dce): Change type of old_flags to int.
17454         * df-core.c (df_set_flags): Change return type to int.  Change
17455         type of old_flags to int.
17456         (df_clear_flags): Likewise.
17457         * df-scan.c (df_def_record_1): Change 0 to VOIDmode.
17458         (df_get_conditional_uses): Likewise.
17459         * df.h (df_set_flags, df_clear_flags): Update declarations.
17460         * dwarf2out.c (struct indirect_string_node): Change type of form
17461         field to enum dwarf_form.
17462         (AT_string_form): Change return type to enum dwarf_form.
17463         * fixed-value.c (fixed_compare): Add cast to enum type.
17464         * fwprop.c (update_df): Change 0 to VOIDmode.
17465         * gensupport.c: Change 0 to UNKNOWN.
17466         * gimple.h (gimple_cond_code): Add cast to enum type.
17467         * haifa-sched.c (reemit_notes): Add cast to enum type.
17468         * hooks.c (hook_int_void_no_regs): Remove function.
17469         * hooks.h (hook_int_void_no_regs): Remove declaration.
17470         * optabs.c (expand_widen_pattern_expr): Change 0 to VOIDmode.
17471         * predict.c (combine_predictions_for_insn): Add casts to enum type.
17472         * real.c (real_arithmetic): Add cast to enum type.
17473         (real_compare): Likewise.
17474         * target.h (struct gcc_target): Change return type of
17475         branch_target_register_class to enum reg_class.
17476         * target-def.h (TARGET_BRANCH_TARGET_REGISTER_CLASS): Define as
17477         default_branch_target_register_class.
17478         * targhooks.c (default_branch_target_register_class): New function.
17479         * targhooks.h (default_branch_target_register_class): Declare.
17480         * tree-data-ref.c (print_direction_vector): Add cast to enum type.
17481         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Remove
17482         cast to int.
17483         * tree-vect-loop.c (vect_create_epilog_for_reduction): Change 0 to
17484         ERROR_MARK.
17485         * tree-vect-slp.c (vect_build_slp_tree): Change 0 to
17486         vect_uninitialized_def.  Change 0 to ERROR_MARK.
17487         * tree-vect-stmts.c (supportable_widening_operation): Don't
17488         initialize icode1 and icode2.
17489         * tree-vectorizer.h (enum vect_def_type): Add vect_uninitialized_def.
17490         * config/sol2-c.c (cmn_err_length_specs): Change 0 to FMT_LEN_none
17491         and to STD_C89.
17492         (cmn_err_flag_specs): Change 0 to STD_C89.
17493         (cmn_err_char_table): Likewise.
17494         * config/arm/arm.c (get_arm_condition_code): Change type of code
17495         to enum arm_cond_code.
17496         (IWMMXT_BUILTIN): Change 0 to UNKNOWN.
17497         (IWMMXT_BUILTIN2): Likewise.
17498         (neon_builtin_type_bits): Don't define typedef.
17499         (neon_builtin_datum): Change type of bits field to int.
17500         (arm_expand_neon_args): Add cast to enum type.
17501         * config/ia64/ia64.c (tls_symbolic_operand_type): Change 0 to
17502         TLS_MODEL_NONE.
17503         * config/i386/i386.c (bdesc_multi_arg): Change 0 to UNKNOWN.  Add
17504         casts to enum type.
17505         * config/mips/mips.c (LOONGSON_BUILTIN_ALIAS): Change 0 to
17506         MIPS_FP_COND_f.
17507         * config/mips/mips.md (jal_macro): Return enum constant.
17508         (single_insn): Likewise.
17509         * config/rs6000/rs6000.c (bdesc_altivec_preds): Change 0 to
17510         CODE_FOR_nothing.
17511         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
17512         casts to enum type.
17513         * config/s390/s390.c (s390_tune_flags): Change type to int.
17514         (s390_arch_flags): Likewise.
17515         (s390_handle_arch_option): Change flags field of struct pta to int.
17516         * config/s390/s390.h (s390_tune_flags): Update declaration.
17517         (s390_arch_flags): Likewise.
17518         * config/sh/sh.c (prepare_move_operands): Compare
17519         tls_symbolic_operand result with enum constant.
17520         (sh_reorg): Change PUT_MODE to PUT_REG_NOTE_KIND.
17521         (sh_expand_prologue): Add cast to enum type.
17522         (sh_expand_epilogue): Likewise.
17523         (tls_symbolic_operand): Change return type to enum tls_model.
17524         (fpscr_set_from_mem): Add cast to enum type.
17525         (legitimize_pic_address): Compare tls_symbolic_operand result with
17526         enum constant.
17527         (sh_target_reg_class): Change return type to enum reg_class.
17528         * config/sh/sh.h (OVERRIDE_OPTIONS): Change CPU_xxx to
17529         PROCESSOR_xxx.
17530         * config/sh/sh-protos.h (tls_symbolic_operand): Update declaration.
17531         * config/sparc/sparc.c (sparc_override_options): Add cast to enum type.
17532         * config/sparc/sparc.md (empty_delay_slot): Return enum constant.
17533         (pic, calls_alloca, calls_eh_return, leaf_function): Likewise.
17534         (delayed_branch, tls_call_delay): Likewise.
17535         (eligible_for_sibcall_delay): Likewise.
17536         (eligible_for_return_delay): Likewise.
17537         * config/spu/spu.c (expand_builtin_args): Add cast to enum type.
17538         (spu_expand_builtin_1): Likewise.
17539
17540         * c-typeck.c (convert_for_assignment): Issue -Wc++-compat warnings
17541         for all types of conversions.
17542         (output_init_element): Issue -Wc++-compat warning if needed when
17543         initializing a bitfield with enum type.
17544         * c-parser.c (c_parser_expression): Set original_type to
17545         original_type of right hand operand of comma operator.
17546
17547 2009-04-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
17548
17549         * doc/c-tree.texi (Types, Functions, Expression trees): Fix
17550         grammar nits.
17551         * doc/cfg.texi (Maintaining the CFG, Liveness information): Likewise.
17552         * doc/cpp.texi (Standard Predefined Macros)
17553         (Implementation-defined behavior): Likewise.
17554         * doc/extend.texi (Function Attributes, Type Attributes): Likewise.
17555         * doc/gimple.texi (GIMPLE Exception Handling)
17556         (@code{GIMPLE_ASSIGN}): Likewise.
17557         * doc/install.texi (Prerequisites, Configuration, Specific): Likewise.
17558         * doc/invoke.texi (Warning Options, Optimize Options)
17559         (AVR Options, Darwin Options): Likewise.
17560         (Optimize Options): Reformulate -fwhole-program description.
17561         * doc/loop.texi (Lambda): Likewise.
17562         * doc/md.texi (Output Template, Define Constraints)
17563         (Standard Names, Insn Splitting): Likewise.
17564         * doc/options.texi (Option properties): Likewise.
17565         * doc/passes.texi (Tree-SSA passes): Likewise.
17566         * doc/rtl.texi (Side Effects, Assembler, Insns): Likewise.
17567         * doc/tm.texi (Register Classes, Old Constraints, Scalar Return)
17568         (File Names and DBX): Likewise.
17569         * doc/trouble.texi (Incompatibilities): Likewise.
17570
17571 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
17572
17573         * spu.c (spu_machine_dependent_reorg): Make sure branch label on hint
17574         instruction is correct.
17575
17576 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
17577
17578         Allow non-constant arguments to conversion intrinsics.
17579         * spu-protos.h (exp2_immediate_p, spu_gen_exp2): Declare.
17580         * predicates.md (spu_inv_exp2_operand, spu_exp2_operand): New.
17581         * spu.c (print_operand): Handle 'v' and 'w'.
17582         (exp2_immediate_p, spu_gen_exp2): Define.
17583         * spu-builtins.def (spu_convts, spu_convtu, spu_convtf_0,
17584         spu_convtf_1): Update parameter descriptions.
17585         * spu-builtins.md (spu_csflt, spu_cuflt, spu_cflts, spu_cfltu): Update.
17586         * constraints.md ('v', 'w'): New.
17587         * spu.md (UNSPEC_CSFLT, UNSPEC_CFLTS, UNSPEC_CUFLT, UNSPEC_CFLTU):
17588         Remove.
17589         (i2f, I2F): New define_mode_attr.
17590         (floatsisf2, floatv4siv4sf2, fix_truncsfsi2, fix_truncv4sfv4si2,
17591         floatunssisf2, floatunsv4siv4sf2, fixuns_truncsfsi2,
17592         fixuns_truncv4sfv4si2):  Update to use mode attribute.
17593         (float<mode><i2f>2_mul, float<mode><i2f>2_div,
17594         fix_trunc<mode><f2i>2_mul, floatuns<mode><i2f>2_mul,
17595         floatuns<mode><i2f>2_div, fixuns_trunc<mode><f2i>2_mul): New
17596         patterns for combine.
17597
17598 2009-04-27  Steven Bosscher  <steven@gcc.gnu.org>
17599
17600         * dbgcnt.def (cprop1, cprop2, gcse, jump_bypass): Remove
17601         (cprop, hoist, pre, store_motion): New debug counters.
17602         * tree-pass.h (pass_tracer): Move to list of gimple passes, it
17603         is not an RTL pass anymore.
17604         (pass_profiling): Remove extern decl for pass removed in 2005.
17605         (pass_gcse, pass_jump_bypass): Remove.
17606         * final.c (rest_of_clean_state): Set flag_rerun_cse_after_global_opts
17607         to 0 for clean state.
17608         * toplev.h (flag_rerun_cse_after_global_opts): Add extern declaration.
17609         * cse.c (gate_handle_cse_after_global_opts,
17610         rest_of_handle_cse_after_global_opts): New functions.
17611         (pass_cse_after_global_opts): New pass, does local CSE.
17612         * timevar.def (TV_GCSE, TV_CPROP1, TV_CPROP2, TV_BYPASS): Remove.
17613         (TV_CPROP): New timevar.
17614         * gcse.c (flag_rerun_cse_after_global_opts): New global variable.
17615         (run_jump_opt_after_gcse, max_gcse_regno): Remove global vars.
17616         (gcse_main, recompute_all_luids): Remove.
17617         (compute_hash_table_work): Call max_reg_num instead of reading
17618         max_gcse_regno.
17619         (cprop_jump): Don't set run_jump_opt_after_gcse.
17620         (constprop_register): Always allow to alter jumps.
17621         (cprop_insn): Likewise.
17622         (do_local_cprop): Likewise.
17623         (local_cprop_pass): Likewise.  Return non-zero if something changed.
17624         (cprop): Remove function, fold interesting bits into one_cprop_pass.
17625         (find_implicit_sets): Add note about missed optimization opportunity.
17626         (one_cprop_pass): Rewrite to be "the" CPROP pass, called from the
17627         pass_rtl_cprop execute function.
17628         Don't bother tracking the pass number, each pass gets its own dumpfile
17629         now anyway.
17630         Always allow to alter jumpsand bypass jumps.
17631         (bypass_block): Don't ignore regno >= max_gcse_regno, find_bypass_set
17632         will just find no suitable set.
17633         (pre_edge_insert): Fix dumping, this function is for PRE only.
17634         (one_pre_gcse_pass): Rewrite to be "the" PRE pass, called from the
17635         pass_rtl_pre execute function.
17636         (hoist_code): Return non-zero if something changed.  Keep track of
17637         substitutions and insertions for statistics gathering similar to PRE.
17638         (one_code_hoisting_pass): Rewrite to be "the" code hoisting pass,
17639         called from the pass_rtl_hoist execute function.  Show pass statistics.
17640         (compute_store_table): Use max_reg_num directly instead of using the
17641         formerly global max_gcse_regno.
17642         (build_store_vectors): Likewise.
17643         (replace_store_insn): Fix dumping.
17644         (store_motion): Rename to ...
17645         (one_store_motion_pass): ... this.  Rewrite to be "the" STORE_MOTION
17646         pass, called from the pass_rtl_store_motion execute function.  Keep
17647         track of substitutions and insertions for statistics gathering similar
17648         to PRE.
17649         (bypass_jumps): Remove, fold interesting bits into ...
17650         (one_cprop_pass): ... this.  Rewrite to be "the" CPROP pass, called
17651         from the pass_rtl_cprop execute function.
17652         (gate_handle_jump_bypass, rest_of_handle_jump_bypass,
17653         pass_jump_bypass): Remove.
17654         (gate_handle_gcse, rest_of_handle_gcse): Remove.
17655         (gate_rtl_cprop, execute_rtl_cprop, pass_rtl_cprop): New.
17656         (gate_rtl_pre, execute_rtl_pre, pass_rtl_pre): New.
17657         (gate_rtl_hoist, execute_rtl_hoist, pass_rtl_hoist): New.
17658         (gate_rtl_store_motion, execute_rtl_store_motion,
17659         pass_rtl_store_motion): New.
17660         * common.opt: Remove flag_cse_skip_blocks, adjust documentation to
17661         make it clear that -fcse-skip-blocks is a no-op for backward compat.
17662         * passes.c (init_optimization_passes): Remove pass_gcse and
17663         pass_jump_bypass.  Schedule cprop, pre, hoist, cprop, store_motion,
17664         and cse_after_global_opts in place of pass_gcse.  Schedule cprop
17665         instead of pass_jump_bypass.
17666
17667 2009-04-27  Richard Guenther  <rguenther@suse.de>
17668
17669         PR middle-end/39928
17670         * gimplify.c (gimplify_expr): If we are required to create
17671         a temporary make sure it ends up as register.
17672
17673 2009-04-27  H.J. Lu  <hongjiu.lu@intel.com>
17674
17675         PR target/39903
17676         * config/i386/i386.c (construct_container): Don't call
17677         gen_reg_or_parallel with BLKmode on X86_64_SSE_CLASS,
17678         X86_64_SSESF_CLASS and X86_64_SSEDF_CLASS.
17679
17680 2009-04-27  Michael Matz  <matz@suse.de>
17681
17682         * ssaexpand.h (struct ssaexpand): Member 'values' is a bitmap.
17683         (get_gimple_for_ssa_name): Adjust, lookup using SSA_NAME_DEF_STMT.
17684         * tree-ssa-live.h: (find_replaceable_exprs): Return a bitmap.
17685         (dump_replaceable_exprs): Take a bitmap.
17686         * cfgexpand.c (gimple_cond_pred_to_tree): Handle bitmap instead of
17687         array.
17688         (expand_gimple_basic_block): Likewise.
17689         * tree-ssa-ter.c (struct temp_expr_table_d): Make
17690         replaceable_expressions member a bitmap.
17691         (free_temp_expr_table): Pass back and deal with bitmap, not gimple*.
17692         (mark_replaceable): Likewise.
17693         (find_replaceable_in_bb, dump_replaceable_exprs): Likewise.
17694         * tree-outof-ssa.c (remove_ssa_form): 'values' is a bitmap.
17695
17696 2009-04-27  Richard Guenther  <rguenther@suse.de>
17697
17698         * tree-cfg.c (remove_useless_stmts): Verify stmts afterwards.
17699         (verify_stmts): Dispatch to gimple/type verification code.
17700         * tree-inline.c (remap_gimple_op_r): Work around C++ FE
17701         issue with call argument types.
17702
17703 2009-04-27  Michael Matz  <matz@suse.de>
17704
17705         * tree-into-ssa.c (regs_to_rename, mem_syms_to_rename): Remove.
17706         (init_update_ssa, delete_update_ssa, update_ssa): Remove references
17707         to above.
17708
17709 2009-04-27  Richard Sandiford  <rdsandiford@googlemail.com>
17710             Eric Botcazou  <ebotcazou@adacore.com>
17711
17712         * resource.c (find_basic_block): Use BLOCK_FOR_INSN to look up
17713         a label's basic block.
17714         (mark_target_live_regs): Tidy and rework obsolete comments.
17715         Change back DF problem to LIVE.  If a label starts a basic block,
17716         assume that all registers that used to be live then still are.
17717         (init_resource_info): If a label starts a basic block, set its
17718         BLOCK_FOR_INSN accordingly.
17719         (fini_resource_info): Undo the setting of BLOCK_FOR_INSN.
17720
17721 2009-04-27  Richard Guenther  <rguenther@suse.de>
17722
17723         * tree-flow-inline.h (function_ann): Remove.
17724         (get_function_ann): Likewise.
17725         * tree-dfa.c (create_function_ann): Remove.
17726         * tree-flow.h (struct static_var_ann_d): Remove.
17727         (struct function_ann_d): Likewise.
17728         (union tree_ann_d): Remove fdecl member.
17729         (function_ann_t): Remove.
17730         (function_ann, get_function_ann, create_function_ann): Remove
17731         declarations.
17732
17733 2009-04-27  Uros Bizjak  <ubizjak@gmail.com>
17734
17735         * config/alpha/alpha.c (code_for_builtin): Declare as enum insn_code.
17736
17737 2009-04-27  Jan Hubicka  <jh@suse.cz>
17738
17739         * ipa-pure-const.c (struct funct_state_d): New fields
17740         state_previously_known, looping_previously_known; remove
17741         state_set_in_source.
17742         (analyze_function): Use new fields.
17743         (propagate): Avoid assumption that state_set_in_source imply
17744         nonlooping.
17745
17746         * tree-ssa-loop-niter.c (finite_loop_p): New function.
17747         * tree-ssa-loop-ivcanon.c (empty_loop_p): Use it.
17748         * cfgloop.h (finite_loop_p): Declare.
17749
17750 2009-04-26  Michael Matz  <matz@suse.de>
17751
17752         * tree-flow.h (tree_ann_common_d): Remove aux and value_handle members.
17753
17754 2009-04-26  Michael Matz  <matz@suse.de>
17755
17756         * tree-pass.h (pass_del_ssa, pass_mark_used_blocks,
17757         pass_free_cfg_annotations, pass_free_datastructures): Remove decls.
17758         * gimple-low.c (mark_blocks_with_used_vars, mark_used_blocks,
17759         pass_mark_used_blocks): Remove.
17760         * tree-optimize.c (pass_free_datastructures,
17761         execute_free_cfg_annotations, pass_free_cfg_annotations): Remove.
17762         * passes.c (init_optimization_passes): Don't call
17763         pass_mark_used_blocks, remove dead code.
17764
17765 2009-04-26  H.J. Lu  <hongjiu.lu@intel.com>
17766
17767         * tree-outof-ssa.c (rewrite_trees): Add ATTRIBUTE_UNUSED.
17768         * tree-ssa-live.h (register_ssa_partition): Likewise.
17769
17770 2009-04-26  Michael Matz  <matz@suse.de>
17771
17772         Expand from SSA.
17773         * builtins.c (fold_builtin_next_arg): Handle SSA names.
17774         * tree-ssa-copyrename.c (rename_ssa_copies): Use ssa_name() directly.
17775         * tree-ssa-coalesce.c (create_outofssa_var_map): Mark only useful
17776         SSA names.
17777         (compare_pairs): Swap cost comparison.
17778         (coalesce_ssa_name): Don't use change_partition_var.
17779         * tree-nrv.c (struct nrv_data): Add modified member.
17780         (finalize_nrv_r): Set it.
17781         (tree_nrv): Use it to update statements.
17782         (pass_nrv): Require PROP_ssa.
17783         * tree-mudflap.c (mf_decl_cache_locals,
17784         mf_build_check_statement_for): Use make_rename_temp.
17785         (pass_mudflap_2): Require PROP_ssa, run ssa update at finish.
17786         * alias.c (find_base_decl): Handle SSA names.
17787         * emit-rtl (set_reg_attrs_for_parm): Make non-static.
17788         (component_ref_for_mem_expr): Don't leak SSA names into RTL.
17789         * rtl.h (set_reg_attrs_for_parm): Declare.
17790         * tree-optimize.c (pass_cleanup_cfg_post_optimizing): Rename
17791         to "optimized", remove unused locals at finish.
17792         (execute_free_datastructures): Make global, call
17793         delete_tree_cfg_annotations.
17794         (execute_free_cfg_annotations): Don't call
17795         delete_tree_cfg_annotations.
17796
17797         * ssaexpand.h: New file.
17798         * expr.c (toplevel): Include ssaexpand.h.
17799         (expand_assignment): Handle SSA names the same as register variables.
17800         (expand_expr_real_1): Expand SSA names.
17801         * cfgexpand.c (toplevel): Include ssaexpand.h.
17802         (SA): New global variable.
17803         (gimple_cond_pred_to_tree): Fold TERed comparisons into predicates.
17804         (SSAVAR): New macro.
17805         (set_rtl): New helper function.
17806         (add_stack_var): Deal with SSA names, use set_rtl.
17807         (expand_one_stack_var_at): Likewise.
17808         (expand_one_stack_var): Deal with SSA names.
17809         (stack_var_size_cmp): Use code (SSA_NAME / DECL) as tie breaker
17810         before unique numbers.
17811         (expand_stack_vars): Use set_rtl.
17812         (expand_one_var): Accept SSA names, add asserts for them, feed them
17813         to above subroutines.
17814         (expand_used_vars): Expand all partitions (without default defs),
17815         then only the local decls (ignoring those expanded already).
17816         (expand_gimple_cond): Remove edges when jumpif() expands an
17817         unconditional jump.
17818         (expand_gimple_basic_block): Don't clear EDGE_EXECUTABLE here,
17819         or remove abnormal edges.  Ignore insns setting the LHS of a TERed
17820         SSA name.
17821         (gimple_expand_cfg): Call into rewrite_out_of_ssa, initialize
17822         members of SA; deal with PARM_DECL partitions here; expand
17823         all PHI nodes, free tree datastructures and SA.  Commit instructions
17824         on edges, clear EDGE_EXECUTABLE and remove abnormal edges here.
17825         (pass_expand): Require and destroy PROP_ssa, verify SSA form, flow
17826         info and statements at start, collect garbage at finish.
17827         * tree-ssa-live.h (struct _var_map): Remove partition_to_var member.
17828         (VAR_ANN_PARTITION) Remove.
17829         (change_partition_var): Don't declare.
17830         (partition_to_var): Always return SSA names.
17831         (var_to_partition): Only accept SSA names.
17832         (register_ssa_partition): Only check argument.
17833         * tree-ssa-live.c (init_var_map): Don't allocate partition_to_var
17834         member.
17835         (delete_var_map): Don't free it.
17836         (var_union): Only accept SSA names, simplify.
17837         (partition_view_init): Mark only useful SSA names as used.
17838         (partition_view_fini): Only deal with SSA names.
17839         (change_partition_var): Remove.
17840         (dump_var_map): Use ssa_name instead of partition_to_var member.
17841         * tree-ssa.c (delete_tree_ssa): Don't remove PHI nodes on RTL
17842         basic blocks.
17843         * tree-outof-ssa.c (toplevel): Include ssaexpand.h and expr.h.
17844         (struct _elim_graph): New member const_dests; nodes member vector of
17845         ints.
17846         (set_location_for_edge): New static helper.
17847         (create_temp): Remove.
17848         (insert_partition_copy_on_edge, insert_part_to_rtx_on_edge,
17849         insert_value_copy_on_edge, insert_rtx_to_part_on_edge): New functions.
17850         (new_elim_graph): Allocate const_dests member.
17851         (clean_elim_graph): Truncate const_dests member.
17852         (delete_elim_graph): Free const_dests member.
17853         (elim_graph_size): Adapt to new type of nodes member.
17854         (elim_graph_add_node): Likewise.
17855         (eliminate_name): Likewise.
17856         (eliminate_build): Don't take basic block argument, deal only with
17857         partition numbers, not variables.
17858         (get_temp_reg): New static helper.
17859         (elim_create): Use it, deal with RTL temporaries instead of trees.
17860         (eliminate_phi): Adjust all calls to new signature.
17861         (assign_vars, replace_use_variable, replace_def_variable): Remove.
17862         (rewrite_trees): Only do checking.
17863         (edge_leader, stmt_list, leader_has_match, leader_match): Remove.
17864         (same_stmt_list_p, identical_copies_p, identical_stmt_lists_p,
17865         init_analyze_edges_for_bb, fini_analyze_edges_for_bb,
17866         contains_tree_r, MAX_STMTS_IN_LATCH,
17867         process_single_block_loop_latch, analyze_edges_for_bb,
17868         perform_edge_inserts): Remove.
17869         (expand_phi_nodes): New global function.
17870         (remove_ssa_form): Take ssaexpand parameter.  Don't call removed
17871         functions, initialize new parameter, remember partitions having a
17872         default def.
17873         (finish_out_of_ssa): New global function.
17874         (rewrite_out_of_ssa): Make global.  Adjust call to remove_ssa_form,
17875         don't reset in_ssa_p here, don't disable TER when mudflap.
17876         (pass_del_ssa): Remove.
17877         * tree-flow.h (struct var_ann_d): Remove out_of_ssa_tag and
17878         partition members.
17879         (execute_free_datastructures): Declare.
17880         * Makefile.in (SSAEXPAND_H): New variable.
17881         (tree-outof-ssa.o, expr.o, cfgexpand.o): Depend on SSAEXPAND_H.
17882         * basic-block.h (commit_one_edge_insertion): Declare.
17883         * passes.c (init_optimization_passes): Move pass_nrv and
17884         pass_mudflap2 before pass_cleanup_cfg_post_optimizing, remove
17885         pass_del_ssa, pass_free_datastructures, pass_free_cfg_annotations.
17886         * cfgrtl.c (commit_one_edge_insertion): Make global, don't declare.
17887         (redirect_branch_edge): Deal with super block when expanding, split
17888         out jump patching itself into ...
17889         (patch_jump_insn): ... here, new static helper.
17890
17891 2009-04-26  Michael Matz  <matz@suse.de>
17892
17893         * tree-ssa-copyrename.c (rename_ssa_copies): Don't iterate
17894         beyond num_ssa_names.
17895         * tree-ssa-ter.c (free_temp_expr_table): Likewise.
17896         * tree-ssa-coalesce.c (create_outofssa_var_map): Likewise.
17897
17898 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
17899
17900         PR inline-asm/39543
17901         * fwprop.c (forward_propagate_asm): New function.
17902         (forward_propagate_and_simplify): Propagate also into __asm, if it
17903         doesn't increase the number of referenced registers.
17904
17905         PR c/39889
17906         * stmt.c (warn_if_unused_value): Look through NON_LVALUE_EXPR.
17907
17908 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
17909
17910         * tree-nested.c (get_nonlocal_vla_type): If not optimizing, call
17911         note_nonlocal_vla_type for nonlocal VLAs.
17912         (note_nonlocal_vla_type, note_nonlocal_block_vlas,
17913         contains_remapped_vars, remap_vla_decls): New functions.
17914         (convert_nonlocal_reference_stmt): If not optimizing, call
17915         note_nonlocal_block_vlas on GIMPLE_BIND block vars.
17916         (nesting_copy_decl): Return {VAR,PARM,RESULT}_DECL unmodified
17917         if it wasn't found in var_map.
17918         (finalize_nesting_tree_1): Call remap_vla_decls.  If outermost
17919         GIMPLE_BIND doesn't have gimple_bind_block, chain debug_var_chain
17920         to BLOCK_VARS (DECL_INITIAL (root->context)) instead of calling
17921         declare_vars.
17922         * gimplify.c (nonlocal_vlas): New variable.
17923         (gimplify_var_or_parm_decl): Add debug VAR_DECLs for non-local
17924         referenced VLAs.
17925         (gimplify_body): Create and destroy nonlocal_vlas.
17926
17927         * dwarf2out.c (loc_descr_plus_const): New function.
17928         (build_cfa_aligned_loc, tls_mem_loc_descriptor,
17929         mem_loc_descriptor, loc_descriptor_from_tree_1,
17930         descr_info_loc, gen_variable_die): Use it.
17931
17932         * tree.h (DECL_BY_REFERENCE): Note that it is also valid for
17933         !TREE_STATIC VAR_DECLs.
17934         * dwarf2out.c (loc_by_reference, gen_decl_die): Handle
17935         DECL_BY_REFERENCE on !TREE_STATIC VAR_DECLs.
17936         (gen_variable_die): Likewise.  Don't look at TREE_PRIVATE if
17937         DECL_BY_REFERENCE is valid.
17938         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Don't look at TREE_PRIVATE
17939         for PARM_DECLs, RESULT_DECLs or !TREE_STATIC VAR_DECLs.
17940         * tree-nested.c (get_nonlocal_debug_decl, get_local_debug_decl):
17941         Copy DECL_BY_REFERENCE.
17942         (struct nesting_copy_body_data): New type.
17943         (nesting_copy_decl): New function.
17944         (finalize_nesting_tree_1): Remap types of debug_var_chain variables,
17945         if they have variable length.
17946
17947 2009-04-26  Michael Matz  <matz@suse.de>
17948
17949         * tree-sra.c (sra_build_assignment): Don't use into_ssa mode,
17950         mark new temporaries for renaming.
17951
17952 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
17953
17954         PR c/39581
17955         * c-decl.c (global_bindings_p): Return negative value.
17956         (c_variable_size): New.  Based on variable_size from
17957         stor-layout.c.
17958         (grokdeclarator): Call c_variable_size not variable_size.
17959
17960 2009-04-26  Uros Bizjak  <ubizjak@gmail.com>
17961
17962         * config/i386/i386.c (print_operand) ['z']: Fix typo.
17963
17964 2009-04-26  Kai Tietz  <kai.tietz@onevision.com>
17965
17966         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR):
17967         Redefine it to just use mingw/include.
17968         (ASM_SPEC): Rules for -m32 and -m64.
17969         (LINK_SPEC): Use Likewise.
17970         (SPEC_32): New define.
17971         (SPEC_64): Likewise.
17972         (SUB_LINK_SPEC): Likewise.
17973         (MULTILIB_DEFAULTS): New define.
17974         * config/i386/t-mingw-w64 (MULTILIB_OPTIONS):
17975         Add multilib options.
17976         (MULTILIB_DIRNAMES): Likewise.
17977         (MULTILIB_OSDIRNAMES): Likewise.
17978         (LIBGCC): Likewise.
17979         (INSTALL_LIBGCC): Likewise.
17980
17981 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
17982
17983         PR c/39556
17984         * c-tree.h (enum c_inline_static_type): New.
17985         (record_inline_static): Declare.
17986         * c-decl.c (struct c_inline_static, c_inline_statics,
17987         record_inline_static, check_inline_statics): New.
17988         (pop_file_scope): Call check_inline_statics.
17989         (start_decl): Call record_inline_static instead of pedwarning
17990         directly for static in inline function.
17991         * c-typeck.c (build_external_ref): Call record_inline_static
17992         instead of pedwarning directly for static referenced in inline
17993         function.
17994
17995 2009-04-26  Steven Bosscher  <steven@gcc.gnu.org>
17996
17997         * df-scan.c (df_insn_rescan): Salvage insn's LUID if the insn is
17998         not new but only being rescanned.
17999         * gcse.c (uid_cuid, max_uid, INSN_CUID, max_cuid, struct reg_set,
18000         reg_set_table, REG_SET_TABLE_SLOP, reg_set_in_block,
18001         alloc_reg_set_mem, free_reg_set_mem, record_one_set,
18002         record_set_info, compute_set, grealloc): Remove.
18003         (recompute_all_luids): New function.
18004         (gcse_main): Don't compute sets, and don't do related memory
18005         allocations/free-ing.  If something changed before the end of the
18006         pass, update LUIDs using recompute_all_luids.
18007         (alloc_gcse_mem): Don't compute LUIDs.  Don't allocate reg_set memory.
18008         (free_gcse_mem): Don't free it either.
18009         (oprs_unchanged_p, load_killed_in_block, record_last_reg_set_info):
18010         Use the df insn LUIDs.
18011         (load_killed_in_block): Likewise.
18012         (compute_hash_table_work): Don't compute reg_set_in_block.
18013         (compute_transp): Use DF_REG_DEF_CHAINs.
18014         (local_cprop_pass): Don't use compute_sets and related functions.
18015         (one_cprop_pass, pre_gcse, one_pre_gcse_pass, one_code_hoisting_pass):
18016         Use get_max_uid() instead of max_cuid.
18017         (insert_insn_end_basic_block, pre_insert_copy_insn,
18018         update_ld_motion_stores): Don't try to
18019         keep reg_set tables up to date.
18020         (pre_insert_copies): Use df insn LUIDs.
18021         (sbitmap pre_redundant_insns): Replace with uses of INSN_DELETED_P.
18022         (reg_set_info): Don't use extra bitmap argument.
18023         (compute_store_table): Don't compute reg_set_in_block.  Use DF scan
18024         information to compute regs_set_in_block.
18025         (free_store_memory, store_motion): Don't nullify reg_set_in_block.
18026         (bypass_jumps): Don't use compute_sets and friends.
18027
18028 2009-04-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
18029
18030         PR testsuite/39710
18031         * opts.c (undocumented_msg): Do not leave blank even with
18032         ENABLE_CHECKING.
18033
18034 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
18035
18036         * c-decl.c (build_enumerator): Allow values folding to integer
18037         constants but not integer constant expressions with a pedwarn if
18038         pedantic.
18039
18040 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
18041
18042         PR c/39582
18043         * c-typeck.c (c_expr_sizeof_type): Create a C_MAYBE_CONST_EXPR
18044         with non-null C_MAYBE_CONST_EXPR_PRE if size of a variable-length
18045         type is an integer constant.
18046
18047 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
18048
18049         PR target/39897
18050         * config/i386/i386.c (print_operand) ['z']: Revert handling of
18051         HImode operands.
18052
18053 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
18054
18055         PR c/39564
18056         * c-decl.c (grokdeclarator): Diagnose declarations of functions
18057         with variably modified return type and no storage class
18058         specifiers, except for the case of nested functions.  Distinguish
18059         extern declarations of functions with variably modified return
18060         types from those of objects with variably modified types.
18061
18062 2009-04-25  Jan Hubicka  <jh@suse.cz>
18063
18064         * tree.c (list_equal_p): New function.
18065         * tree.h (list_equal_p): Declare.
18066         * coretypes.h (edge_def, edge, const_edge, basic_block_def
18067         basic_block_def, basic_block, const_basic_block): New.
18068         * tree-eh.c (make_eh_edge): EH edges are not abnormal.
18069         (redirect_eh_edge): New function.
18070         (make_eh_edge_update_phi): EH edges are not abnormal.
18071         * except.c: Include tree-flow.h.
18072         (list_match): New function.
18073         (eh_region_replaceable_by_p): New function.
18074         (replace_region): New function.
18075         (hash_type_list): New function.
18076         (hash_eh_region): New function.
18077         (eh_regions_equal_p): New function.
18078         (merge_peers): New function.
18079         (remove_unreachable_regions): Verify EH tree when checking;
18080         merge peers.
18081         (copy_eh_region_1): New function.
18082         (copy_eh_region): New function.
18083         (push_reachable_handler): New function.
18084         (build_post_landing_pads, dw2_build_landing_pads): Be ready for
18085         regions without label but with live RESX.
18086         * except.h (redirect_eh_edge_to_label): New.
18087         * tree-flow.h (redirect_eh_edge): New.
18088         * coretypes.h (edge_def, edge, const_edge, basic_block_def
18089         basic_block_def, basic_block, const_basic_block): Remove.
18090         * Makefile.in (except.o): Add dependency on tree-flow.h
18091         * tree-cfg.c (gimple_redirect_edge_and_branch): Handle EH edges.
18092         * basic-block.h (edge, const_edge, basic_block, const_basic_block):
18093         Remove.
18094
18095 2009-04-25  Eric Botcazou  <ebotcazou@adacore.com>
18096
18097         PR bootstrap/39645
18098         * config/sparc/sparc.c (sparc_gimplify_va_arg): Set TREE_ADDRESSABLE
18099         on the destination of memcpy.
18100
18101 2009-04-25  Paolo Bonzini  <bonzini@gnu.org>
18102
18103         * doc/tm.texi (REGNO_OK_FOR_BASE_P, REGNO_MODE_OK_FOR_BASE_P,
18104         REGNO_MODE_OK_FOR_REG_BASE_P, REGNO_MODE_CODE_OK_FOR_BASE_P,
18105         REGNO_OK_FOR_INDEX_P): Mention strict/nonstrict difference.
18106
18107 2009-04-25  Jan Hubicka  <jh@suse.cz>
18108
18109         * tree-eh.c (tree_remove_unreachable_handlers): Handle shared labels.
18110         (tree_empty_eh_handler_p): Allow non-EH predecestors; allow region
18111         to be reached by different label than left.
18112         (update_eh_edges): Update comment; remove edge_to_remove if possible
18113         and return true if suceeded.
18114         (cleanup_empty_eh): Accept sharing map; handle shared regions.
18115         (cleanup_eh): Compute sharing map.
18116         * except.c (remove_eh_handler_and_replace): Add argument if we should
18117         update regions.
18118         (remove_unreachable_regions): Update for label sharing.
18119         (label_to_region_map): Likewise.
18120         (get_next_region_sharing_label): New function.
18121         (remove_eh_handler_and_replace): Add update_catch_try parameter; update
18122         prev_try pointers.
18123         (remove_eh_handler): Update.
18124         (remove_eh_region_and_replace_by_outer_of): New function.
18125         * except.h (struct eh_region): Add next_region_sharing_label.
18126         (remove_eh_region_and_replace_by_outer_of,
18127         get_next_region_sharing_label): Declare.
18128         * tree-cfgcleanup.c (tree_forwarder_block_p): Simplify.
18129
18130 2009-04-25  Jan Hubicka  <jh@suse.cz>
18131
18132         * tree-cfg.c (split_critical_edges): Split also edges where we can't
18133         insert code even if they are not critical.
18134
18135 2009-04-25  Jan Hubicka  <jh@suse.cz>
18136
18137         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
18138         (gimple_can_remove_branch_p): EH edges won't remove branch by
18139         redirection.
18140         * tree-inline.c (update_ssa_across_abnormal_edges): Do handle
18141         updating of non-abnormal EH edges.
18142         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
18143         (gimple_can_remove_branch_p): EH edges are unremovable by redirection.
18144         (split_critical_edges): Split also edges where emitting code on them
18145         will lead to splitting later.
18146
18147 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
18148             H.J. Lu  <hongjiu.lu@intel.com>
18149
18150         PR target/39590
18151         * configure.ac (HAVE_AS_IX86_FILDQ): On x86 targets check whether
18152         the configured assembler supports fildq and fistpq mnemonics.
18153         (HAVE_AS_IX86_FILDS): Rename from HAVE_GAS_FILDS_FISTS.
18154         * configure: Regenerated.
18155         * config.in: Ditto.
18156
18157         * config/i386/i386.c (print_operand): Handle 'Z'.
18158         ['z']: Remove handling of special fild/fist suffixes.
18159         (output_fix_trunc): Use '%Z' to output suffix of fist{,p,tp} insn.
18160         * config/i386/i386.md (*floathi<mode>2_i387): Use '%Z' to output
18161         suffix of fild insn.
18162         (*floatsi<mode>2_vector_mixed): Ditto.
18163         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Ditto.
18164         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Ditto.
18165         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
18166         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387): Ditto.
18167         * config/i386/gas.h (GAS_MNEMONICS): Remove.
18168
18169 2009-04-25  Ben Elliston  <bje@au.ibm.com>
18170
18171         * genrecog.c (validate_pattern): Do not warn for VOIDmode CALLs as
18172         the source of a set operation.
18173
18174 2009-04-25  Anatoly Sokolov  <aesok@post.ru>
18175
18176         * target.h (struct gcc_target): Add case_values_threshold field.
18177         * target-def.h (TARGET_CASE_VALUES_THRESHOLD): New.
18178         (TARGET_INITIALIZER): Use TARGET_CASE_VALUES_THRESHOLD.
18179         * targhooks.c (default_case_values_threshold): New function.
18180         * targhooks.h (default_case_values_threshold): Declare function.
18181         * stmt.c (expand_case): Use case_values_threshold target hook.
18182         * expr.h (case_values_threshold): Remove declartation.
18183         * expr.c (case_values_threshold): Remove function.
18184         * doc/tm.texi (CASE_VALUES_THRESHOLD): Revise documentation.
18185
18186         * config/avr/avr.h (CASE_VALUES_THRESHOLD): Remove macro.
18187         * config/avr/avr.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
18188         (avr_case_values_threshold): Declare as static.
18189         * config/avr/avr-protos.h (avr_case_values_threshold): Remove.
18190
18191         * config/avr/mn10300.h (CASE_VALUES_THRESHOLD): Remove macro.
18192         * config/avr/mn10300.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
18193         (mn10300_case_values_threshold): New function.
18194
18195 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
18196
18197         * ira.c (setup_cover_and_important_classes): Add enum cast.
18198
18199 2009-04-24  Vladimir Makarov  <vmakarov@redhat.com>
18200
18201         * genpreds.c (write_enum_constraint_num): Output definition of
18202         CONSTRAINT_NUM_DEFINED_P macro.
18203         * ira.c (setup_cover_and_important_classes): Use
18204         CONSTRAINT_NUM_DEFINED_P instead of CONSTRAINT__LIMIT in #ifdef.
18205
18206 2009-04-24  DJ Delorie  <dj@redhat.com>
18207
18208         * config/sh/sh.h (LIBGCC2_DOUBLE_TYPE_SIZE): Test
18209         __SH2A_SINGLE_ONLY__ also.
18210
18211 2009-04-24  Steve Ellcey  <sje@cup.hp.com>
18212
18213         * config/ia64/ia64.md (movfs_internal): Allow flt constants.
18214         (movdf_internal): Ditto.
18215         * config/ia64/ia64.c (ia64_legitimate_constant_p): Allow
18216         SFmode and DFmode constants.
18217         (ia64_print_operand): Add 'G' format for printing
18218         floating point constants.
18219
18220 2009-04-24  Richard Guenther  <rguenther@suse.de>
18221
18222         * tree-vrp.c (extract_range_from_binary_expr): Handle overflow
18223         from unsigned additions.
18224
18225 2009-04-24  Joseph Myers  <joseph@codesourcery.com>
18226
18227         * c-typeck.c (set_init_index): Allow array designators that are
18228         not integer constant expressions with a pedwarn if pedantic.
18229
18230 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
18231
18232         * simplify-rtx.c (simplify_binary_operation_1, case AND): Result is
18233         zero if no overlap in nonzero bits between the operands.
18234
18235 2009-04-24  Ian Lance Taylor  <iant@google.com>
18236
18237         * combine.c (record_value_for_reg): Change 0 to VOIDmode, twice.
18238         (record_dead_and_set_regs): Likewise.
18239         * df.h (struct df_mw_hardreg): Change flags field to int.
18240         (struct df_base_ref): Likewise.
18241         (struct df): Change changeable_flags field to int.
18242         * df-scan.c (df_defs_record): Change clobber_flags to int.
18243         * dwarf2.h (enum dwarf_tag): Make lo_user and hi_user values enum
18244         constants rather than #define macros.
18245         (enum dwarf_attribute, enum dwarf_location_atom): Likewise.
18246         (enum dwarf_type, enum dwarf_endianity_encoding): Likewise.
18247         (enum dwarf_calling_convention): Likewise.
18248         (enum dwarf_line_number_x_ops): Likewise.
18249         (enum dwarf_call_frame_info): Likewise.
18250         (enum dwarf_source_language): Likewise.
18251         * dwarf2out.c (int_loc_descriptor): Add cast to enum type.
18252         (add_calling_convention_attribute): Likewise.
18253         * fold-const.c (fold_undefer_overflow_warnings): Add cast to enum type.
18254         (combine_comparisons): Change compcode to int.  Add cast to enum type.
18255         * genrecog.c (maybe_both_true_2): Change c to int.
18256         (write_switch): Likewise.  Add cast to enum type.
18257         * gimplify.c (gimplify_omp_for): Handle return values from
18258         gimplify_expr using MIN rather than bitwise or.
18259         (gimplify_expr): Add cast to enum type.
18260         * ipa-prop.c (update_jump_functions_after_inlining): Change
18261         IPA_BOTTOM to IPA_JF_UNKNOWN.
18262         * ira.c (setup_class_subset_and_memory_move_costs): Change mode to int.
18263         Add casts to enum type.
18264         (setup_cover_and_important_classes): Change cl to int.  Add casts
18265         to enum type.
18266         (setup_class_translate): Change cl and mode to int.
18267         (ira_init_once): Change mode to int.
18268         (free_register_move_costs): Likewise.
18269         (setup_prohibited_mode_move_regs): Add casts to enum type.
18270         * langhooks.c (add_builtin_function_common): Rework assertion that
18271         value fits bitfield.
18272         * mcf.c (add_fixup_edge): Change type parameter to edge_type.
18273         * omega.c (omega_do_elimination): Avoid math on enum types.
18274         * optabs.c (expand_vec_shift_expr): Remove casts to int.
18275         * opts.c (set_debug_level): Change 2 to enum constant.  Use new
18276         int local to handle integral_argment value.
18277         * regmove.c (try_auto_increment): Change PUT_MODE to
18278         PUT_REG_NOTE_KIND.
18279         * reload.c (push_secondary_reload): Add casts to enum type.
18280         (secondary_reload_class, find_valid_class): Likewise.
18281         * reload1.c (emit_input_reload_insns): Likewise.
18282         * rtl.h (NOTE_VAR_LOCATION_STATUS): Likewise.
18283         * sel-sched.c (init_hard_regs_data): Change cur_mode to int.
18284         * sel-sched-ir.c (hash_with_unspec_callback): Change 0 to enum
18285         constant.
18286         * tree.c (build_common_builtin_nodes): Add casts to enum type.
18287         * tree-complex.c (complex_lattice_t): Typedef to int rather than
18288         enum type.
18289         (expand_complex_libcall): Add casts to enum type.
18290         * tree-into-ssa.c (get_ssa_name_ann): Change 0 to enum constant.
18291         * tree-vect-loop.c (vect_model_reduction_cost): Compare reduc_code
18292         with ERROR_MARK, not NUM_TREE_CODES.
18293         (vect_create_epilog_for_reduction): Likewise.
18294         (vectorizable_reduction): Don't initialize epiloc_reduc_code.
18295         When not using it, set it to ERROR_MARK rather than NUM_TREE_CODES.
18296         * tree-vect-patterns.c (vect_pattern_recog_1): Change vec_mode to
18297         enum machine_mode.
18298         * tree-vect-stmts.c (new_stmt_vec_info): Change 0 to
18299         vect_unused_in_loop.  Change 0 to loop_vect.
18300         * tree-vectorizer.c (vect_set_verbosity_level): Add casts to enum type.
18301         * var-tracking.c (get_init_value): Change return type to enum
18302         var_init_status.
18303         * vec.h (DEF_VEC_FUNC_P) [iterate]: Cast 0 to type T.
18304         * config/arm/arm.c (fp_model_for_fpu): Change to array to enum
18305         arm_fp_model.
18306         (arm_override_options): Add casts to enum type.
18307         (arm_emit_tls_decoration): Likewise.
18308         * config/i386/i386.c (ix86_function_specific_restore): Add casts
18309         to enum type.
18310         * config/i386/i386-c.c (ix86_pragma_target_parse): Likewise.
18311         * config/ia64/ia64.c (ia64_expand_compare): Change magic to int.
18312         * config/rs6000/rs6000.c (rs6000_override_options): Add casts to
18313         enum type.
18314         * config/s390/s390.c (code_for_builtin_64): Change to array of
18315         enum insn_code.
18316         (code_for_builtin_31): Likewise.
18317         (s390_expand_builtin): Change code_for_builtin to enum insn_code
18318         const *.
18319         * config/sparc/sparc.c (sparc_override_options): Change value
18320         field in struct code_model to enum cmodel.  In initializer change
18321         0 to NULL and add cast to enum type.
18322
18323         * c-typeck.c (build_modify_expr): Add lhs_origtype parameter.
18324         Change all callers.  Issue a -Wc++-compat warning using
18325         lhs_origtype if necessary.
18326         (convert_for_assignment): Issue -Wc++-compat warnings about
18327         invalid conversions to enum type on assignment.
18328         * c-common.h (build_modify_expr): Update declaration.
18329
18330 2009-04-24  Nick Clifton  <nickc@redhat.com>
18331
18332         * config/iq2000/iq2000.c (function_arg): Handle TImode values.
18333         (function_arg_advance): Likewise.
18334         * config/iq2000/iq2000.md (movsi_internal2): Fix the length of the
18335         5th alternative.
18336
18337 2009-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
18338
18339         * config/s390/constraints.md ('I', 'J'): Fix condition.
18340
18341 2009-04-24  Diego Novillo  <dnovillo@google.com>
18342
18343         * gengtype-parse.c (parse_error): Add newline after message.
18344
18345 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
18346
18347         * config/i386/sse.md (avxmodesuffixs): Removed.
18348         (*avx_pinsr<avxmodesuffixs>): Renamed to ...
18349         (*avx_pinsr<ssevecsize>): This.
18350
18351 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
18352
18353         * loop-iv.c (replace_single_def_regs): Look for REG_EQUAL notes;
18354         follow chains of regs with a single definition, and allow expressions
18355         that are function_invariant_p.
18356         (simple_rhs_p): Allow expressions that are function_invariant_p.
18357
18358 2009-04-24  Paolo Bonzini  <bonzini@gnu.org>
18359
18360         PR middle-end/39867
18361         * fold-const.c (fold_cond_expr_with_comparison): When folding
18362         > and >= to MAX, make sure the MAX uses the same type as the
18363         comparison's operands.
18364
18365 2009-04-24  Nick Clifton  <nickc@redhat.com>
18366
18367         * config/frv/frv.c (frv_frame_access): Do not use reg+reg
18368         addressing for DImode accesses.
18369         (frv_print_operand_address): Handle PLUS case.
18370         * config/frv/frv.h (FIXED_REGISTERS): Mark link register as fixed.
18371
18372 2009-04-24  Jakub Jelinek  <jakub@redhat.com>
18373
18374         PR rtl-optimization/39794
18375         * alias.c (canon_true_dependence): Add x_addr argument.
18376         * rtl.h (canon_true_dependence): Adjust prototype.
18377         * cse.c (check_dependence): Adjust canon_true_dependence callers.
18378         * cselib.c (cselib_invalidate_mem): Likewise.
18379         * gcse.c (compute_transp): Likewise.
18380         * dse.c (scan_reads_nospill): Likewise.
18381         (record_store, check_mem_read_rtx): Likewise.  For non-const-or-frame
18382         addresses pass base->val_rtx as mem_addr, for const-or-frame addresses
18383         canon_base_addr of the group, plus optional offset.
18384         (struct group_info): Rename canon_base_mem to
18385         canon_base_addr.
18386         (get_group_info): Set canon_base_addr to canon_rtx of base, not
18387         canon_rtx of base_mem.
18388
18389 2009-04-23  Paolo Bonzini  <bonzini@gnu.org>
18390
18391         * config/sh/sh.c (sh_expand_prologue, sh_expand_epilogue):
18392         Use memory_address_p instead of GO_IF_LEGITIMATE_ADDRESS.
18393
18394 2009-04-23  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
18395
18396         * config/spu/spu-builtins.h: Delete file.
18397
18398         * config/spu/spu.h (enum spu_builtin_type): Move here from
18399         spu-builtins.h.
18400         (struct spu_builtin_description): Likewise.  Add GTY marker.
18401         Do not use enum spu_function_code or enum insn_code.
18402         (spu_builtins): Add extern declaration.
18403
18404         * config/spu/spu.c: Do not include "spu-builtins.h".
18405         (enum spu_function_code, enum spu_builtin_type_index,
18406         V16QI_type_node, V8HI_type_node, V4SI_type_node, V2DI_type_node,
18407         V4SF_type_node, V2DF_type_node, unsigned_V16QI_type_node,
18408         unsigned_V8HI_type_node, unsigned_V4SI_type_node,
18409         unsigned_V2DI_type_node): Move here from spu-builtins.h.
18410         (spu_builtin_types): Make static.  Add GTY marker.
18411         (spu_builtins): Add extern declaration with GTY marker.
18412         Include "gt-spu.h".
18413
18414         * config/spu/spu-c.c: Do not include "spu-builtins.h".
18415         (spu_resolve_overloaded_builtin): Do not use spu_function_code.
18416         Check programmatically whether all parameters are scalar.
18417
18418         * config/spu/t-spu-elf (spu.o, spu-c.o): Update dependencies.
18419
18420 2009-04-23  Eric Botcazou  <ebotcazou@adacore.com>
18421
18422         * gimplify.c (gimplify_modify_expr_rhs) <VAR_DECL>: Do not do a direct
18423         assignment from the constructor either if the target is volatile.
18424
18425 2009-04-23  Daniel Jacobowitz  <dan@codesourcery.com>
18426
18427         * config/arm/arm.md (insv): Do not share operands[0].
18428
18429 2009-04-23  Nathan Sidwell  <nathan@codesourcery.com>
18430
18431         * config/vxlib-tls.c (active_tls_threads): Delete.
18432         (delete_hook_installed): New.
18433         (tls_delete_hook): Don't delete the delete hook.
18434         (tls_destructor): Delete it here.
18435         (__gthread_set_specific): Adjust installing the delete hook.
18436         (tls_delete_hook): Use __gthread_enter_tsd_dtor_context and
18437         __gthread_leave_tsd_dtor_context.
18438
18439 2009-04-23  Rafael Avila de Espindola  <espindola@google.com>
18440
18441         * c-format.c (gcc_tdiag_char_table): Add support for %E.
18442
18443 2009-04-23  Uros Bizjak  <ubizjak@gmail.com>
18444
18445         * config/alpha/alpha.c (alpha_legitimize_reload_address): Add cast to
18446         enum type.
18447         (alpha_rtx_costs): Ditto.
18448         (emit_unlikely_jump): Use add_reg_note.
18449         (emit_frame_store_1): Ditto.
18450         (alpha_expand_prologue): Ditto.
18451         (alpha_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
18452         * config/alpha/alpha.c (Unicos/Mk address splitter): Use add_reg_note.
18453
18454 2009-04-23  Nick Clifton  <nickc@redhat.com>
18455
18456         * config/v850/v850.md (epilogue): Remove suppressed code.
18457         (return): Rename to return_simple and remove test of frame size.
18458         * config/v850/v850.c (expand_epilogue): Rename call to gen_return
18459         to gen_return_simple.
18460
18461 2009-04-22  Jing Yu  <jingyu@google.com>
18462
18463         PR testsuite/39781
18464         * config/arm/arm.h: Define HANDLE_PRAGMA_PACK_PUSH_POP.
18465
18466 2009-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18467
18468         PR C/31499
18469         * c-typeck.c (process_init_element): Treat VECTOR_TYPE like ARRAY_TYPE
18470         and RECORD_TYPE/UNION_TYPE.  When outputing the actual element and the
18471         value is a VECTOR_CST, the element type is the element type of the
18472         vector.
18473
18474 2009-04-22  DJ Delorie  <dj@redhat.com>
18475
18476         * config/m32c/m32c.h: Update GTY annotations to new syntax.
18477
18478 2009-04-22  Jakub Jelinek  <jakub@redhat.com>
18479
18480         * alias.c (find_base_term): Move around LO_SUM case, so that
18481         CONST falls through into PLUS/MINUS handling.
18482
18483         PR c/39855
18484         * fold-const.c (fold_binary) <case LSHIFT_EXPR>: When optimizing
18485         into 0, use omit_one_operand.
18486
18487 2009-04-23  Ben Elliston  <bje@au.ibm.com>
18488
18489         * config/rs6000/linux-unwind.h (get_regs): Remove type
18490         puns. Change the type of `pc' to an array of unsigned ints and
18491         update all users.  Constify frame24.
18492
18493 2009-04-22  DJ Delorie  <dj@redhat.com>
18494
18495         * config/m32c/m32c.c (m32c_special_page_vector_p): Move
18496         declarations before code.
18497         (current_function_special_page_vector): Likewise.
18498         (m32c_expand_insv): Silence a warning.
18499
18500 2009-04-21  Taras Glek  <tglek@mozilla.com>
18501
18502         * alias.c: Update GTY annotations to new syntax.
18503         * basic-block.h: Likewise.
18504         * bitmap.h: Likewise.
18505         * c-common.h: Likewise.
18506         * c-decl.c: Likewise.
18507         * c-parser.c: Likewise.
18508         * c-pragma.c: Likewise.
18509         * c-tree.h: Likewise.
18510         * cfgloop.h: Likewise.
18511         * cgraph.h: Likewise.
18512         * config/alpha/alpha.c: Likewise.
18513         * config/arm/arm.h: Likewise.
18514         * config/avr/avr.h: Likewise.
18515         * config/bfin/bfin.c: Likewise.
18516         * config/cris/cris.c: Likewise.
18517         * config/darwin.c: Likewise.
18518         * config/frv/frv.c: Likewise.
18519         * config/i386/i386.c: Likewise.
18520         * config/i386/i386.h: Likewise.
18521         * config/i386/winnt.c: Likewise.
18522         * config/ia64/ia64.h: Likewise.
18523         * config/iq2000/iq2000.c: Likewise.
18524         * config/mips/mips.c: Likewise.
18525         * config/mmix/mmix.h: Likewise.
18526         * config/pa/pa.c: Likewise.
18527         * config/pa/pa.h: Likewise.
18528         * config/rs6000/rs6000.c: Likewise.
18529         * config/s390/s390.c: Likewise.
18530         * config/sparc/sparc.c: Likewise.
18531         * config/xtensa/xtensa.c: Likewise.
18532         * cselib.h: Likewise.
18533         * dbxout.c: Likewise.
18534         * dwarf2out.c: Likewise.
18535         * except.c: Likewise.
18536         * except.h: Likewise.
18537         * fixed-value.h: Likewise.
18538         * function.c: Likewise.
18539         * function.h: Likewise.
18540         * gimple.h: Likewise.
18541         * integrate.c: Likewise.
18542         * optabs.c: Likewise.
18543         * output.h: Likewise.
18544         * real.h: Likewise.
18545         * rtl.h: Likewise.
18546         * stringpool.c: Likewise.
18547         * tree-data-ref.c: Likewise.
18548         * tree-flow.h: Likewise.
18549         * tree-scalar-evolution.c: Likewise.
18550         * tree-ssa-address.c: Likewise.
18551         * tree-ssa-alias.h: Likewise.
18552         * tree-ssa-operands.h: Likewise.
18553         * tree.c: Likewise.
18554         * tree.h: Likewise.
18555         * varasm.c: Likewise.
18556         * varray.h: Likewise.
18557         * vec.h: Likewise.
18558         * coretypes.h: Do not define GTY macro if it is already defined.
18559         * doc/gty.texi: Update GTY documentation to new syntax.
18560         * gengtype-lex.l: Enforce attribute-like syntax for GTY
18561         annotations on structs.
18562         * gengtype-parse.c: Likewise.
18563
18564 2009-04-22  Mark Heffernan  <meheff@google.com>
18565
18566         * gcc.c (LINK_COMMAND_SPEC): Link with gcov with -fprofile-generate=.
18567
18568 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
18569
18570         * config/arm/arm.c (arm_rtx_costs_1): Use power_of_two_operand
18571         where appropriate.
18572
18573 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
18574
18575         * config/arm/arm.c (arm_size_rtx_costs): Treat a PLUS with a shift
18576         the same as a PLUS without a shift.  Increase the cost of a
18577         CONST_INT in MULT.
18578
18579 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18580
18581         * Makefile.in: Update dependencies.
18582         * errors.c (warning): Remove unused parameter 'opt'. Returns 'void'.
18583         * errors.h: Remove bogus comment about compatibility.
18584         (warning): Update declaration.
18585         * genautomata.c: Update all calls to warning.
18586         * gimple.c: Do not include errors.h. Include toplev.h.
18587         * tree-ssa-structalias.c: Do not include errors.h.
18588         * omega.c: Likewise.
18589         * tree-ssa-reassoc.c: Likewise.
18590         * config/spu/spu-c.c: Likewise.
18591         * config/spu/t-spu-elf: Update dependencies.
18592
18593 2009-04-22  Richard Guenther  <rguenther@suse.de>
18594
18595         PR tree-optimization/39824
18596         * tree-ssa-ccp.c (fold_const_aggregate_ref): For INDIRECT_REFs
18597         make sure the types are compatible.
18598
18599 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18600
18601         PR c++/14875
18602         * c-common.c (c_parse_error): Take a token_flags parameter.
18603         Use token_type for the token type instead.
18604         Pass token_flags to cpp_type2name.
18605         * c-common.h (c_parse_error): Update declaration.
18606         * c-parser.c (c_parser_error): Pass 0 as token flags.
18607
18608 2009-04-22  Andrey Belevantsev  <abel@ispras.ru>
18609
18610         PR rtl-optimization/39580
18611         * sel-sched-ir.c (insert_in_history_vect): Remove incorrect gcc_assert.
18612
18613 2009-04-22  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
18614
18615         * function.c (expand_function_end): Do not emit a jump to the "naked"
18616         return label for fall-through returns.
18617         * except.c (sjlj_emit_function_exit): Always place the call to the
18618         unregister function at the location installed by expand_function_end.
18619
18620 2009-04-22  Richard Guenther  <rguenther@suse.de>
18621
18622         PR tree-optimization/39845
18623         * tree-switch-conversion.c (build_arrays): Add new referenced vars.
18624         (gen_inbound_check): Likewise.
18625
18626 2009-04-22  Nathan Sidwell  <nathan@codesourcery.com>
18627
18628         * gthr-vxworks.h (struct __gthread_once_t): Add alignment and
18629         padding for PPC.
18630         (__GTHREAD_ONCE_INIT): Adjust ppc initializer.
18631         * config/vxlib.c (__gthread_once): Add race guard for PPC.
18632
18633 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
18634
18635         * config/sh/sh.c (shift_insns_rtx, shiftcosts, gen_shifty_op,
18636         sh_dynamicalize_shift_p, shl_and_scr_length): Truncate
18637         shift counts to avoid out-of-bounds array accesses.
18638
18639 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
18640
18641         * config/sparc/sparc.h (POINTER_SIZE): Fix comment.
18642         (Pmode): Move above.
18643
18644 2009-04-22  Uros Bizjak  <ubizjak@gmail.com>
18645
18646         * config/alpha/alpha.c: Use REG_P, MEM_P, CONST_INT_P, JUMP_P,
18647         NONJUMP_INSN_P, CALL_P, LABEL_P and NOTE_P predicates instead of
18648         GET_CODE macro.  Use IN_RANGE macro where appropriate.
18649         * config/alpha/alpha.h: Ditto.
18650         * config/alpha/alpha.md: Ditto.
18651         * config/alpha/constraints.md: Ditto.
18652         * config/alpha/predicates.md: Ditto.
18653
18654 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
18655
18656         * defaults.h (GO_IF_MODE_DEPENDENT_ADDRESS): Provide empty default.
18657         * config/frv/frv.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18658         * config/s390/s390.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18659         * config/m32c/m32c.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18660         * config/spu/spu.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18661         * config/i386/i386.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18662         * config/sh/sh.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18663         * config/pdp11/pdp11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18664         * config/avr/avr.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18665         * config/crx/crx.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18666         * config/fr30/fr30.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18667         * config/m68hc11/m68hc11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18668         * config/cris/cris.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18669         * config/iq2000/iq2000.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18670         * config/mn10300/mn10300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18671         * config/ia64/ia64.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18672         * config/m68k/m68k.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18673         * config/picochip/picochip.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18674         * config/arc/arc.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18675         * config/mcore/mcore.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18676         * config/score/score.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18677         * config/arm/arm.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18678         * config/pa/pa.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18679         * config/mips/mips.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18680         * config/v850/v850.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18681         * config/mmix/mmix.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18682         * config/bfin/bfin.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18683
18684 2009-04-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
18685
18686         * cfghooks.c (tidy_fallthru_edges): Remove find_basic_blocks
18687         references from comments.
18688         * cfgbuild.c: (count_basic_blocks): Delete.
18689         (find_basic_blocks_1): Delete.
18690         (find_basic_blocks): Delete.
18691         * except.c (finish_eh_generation): Make static.  Move comment from
18692         except.h here.  Remove find_basic_blocks references from comments.
18693         * except.h (finish_eh_generation): Delete.
18694         * basic-block.h (find_basic_blocks): Delete.
18695         * config/sh/sh.c (sh_output_mi_thunk): Delete a "#if 0" block.
18696
18697 2009-04-22  Dave Korn  <dave.korn.cygwin@gmail.com>
18698
18699         * sdbout.c (sdbout_symbol):  Pass VOIDmode to eliminate_regs.
18700         (sdbout_parms):  Likewise.
18701
18702 2009-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
18703
18704         * config/sh/sh.c (prepare_cbranch_operands): Use
18705         LAST_AND_UNUSED_RTX_CODE instead of CODE_FOR_nothing.
18706         (expand_cbranchdi4): Likewise.
18707         (from_compare): Add cast to enum type.
18708         (expand_cbranchsi4): Use add_reg_note.
18709         (output_stack_adjust, push, pop, sh_expand_prologue): Likewise.
18710         (sh_insn_length_adjustment): Use sh_cpu_attr instead of sh_cpu.
18711         (sh_initialize_trampoline): Change 0 to LCT_NORMAL in function call.
18712         (sh_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
18713         * config/sh/sh.md (cbranchsi4): Use LAST_AND_UNUSED_RTX_CODE
18714         instead of CODE_FOR_nothing.
18715         (cbranchdi4): Likewise.  Fix the order of arguments for
18716         gen_rtx_fmt_ee.
18717         (push_fpscr): Use add_reg_note.
18718         (pop_fpscr, movdf_i4+1, reload_outdf__RnFRm+3, reload_outdf__RnFRm+4,
18719         reload_outdf__RnFRm+5, fpu_switch+1, fpu_switch+2): Likewise.
18720
18721 2009-04-21  Joseph Myers  <joseph@codesourcery.com>
18722
18723         * ABOUT-GCC-NLS, ChangeLog, ChangeLog-1997, ChangeLog-1998,
18724         ChangeLog-1999, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
18725         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
18726         ChangeLog-2007, ChangeLog-2008, ChangeLog.dataflow, ChangeLog.lib,
18727         ChangeLog.ptr, ChangeLog.tree-ssa, ChangeLog.tuples, FSFChangeLog,
18728         FSFChangeLog.10, FSFChangeLog.11, LANGUAGES, ONEWS, acinclude.m4,
18729         config/alpha/gnu.h, config/alpha/libgcc-alpha-ldbl.ver,
18730         config/alpha/t-osf4, config/alpha/t-vms, config/alpha/va_list.h,
18731         config/alpha/x-vms, config/arc/t-arc,
18732         config/arm/README-interworking, config/arm/arm-c.c,
18733         config/arm/gentune.sh, config/arm/libgcc-bpabi.ver,
18734         config/arm/t-arm, config/arm/t-arm-elf, config/arm/t-arm-softfp,
18735         config/arm/t-bpabi, config/arm/t-linux, config/arm/t-linux-eabi,
18736         config/arm/t-netbsd, config/arm/t-pe, config/arm/t-strongarm-elf,
18737         config/arm/t-symbian, config/arm/t-vxworks, config/arm/t-wince-pe,
18738         config/avr/t-avr, config/bfin/elf.h, config/bfin/libgcc-bfin.ver,
18739         config/bfin/linux.h, config/bfin/t-bfin, config/bfin/t-bfin-elf,
18740         config/bfin/t-bfin-linux, config/bfin/t-bfin-uclinux,
18741         config/bfin/uclinux.h, config/cris/mulsi3.asm, config/cris/t-cris,
18742         config/cris/t-elfmulti, config/crx/t-crx,
18743         config/darwin-ppc-ldouble-patch.def, config/darwin-sections.def,
18744         config/divmod.c, config/fr30/t-fr30, config/frv/libgcc-frv.ver,
18745         config/frv/t-frv, config/frv/t-linux, config/h8300/genmova.sh,
18746         config/h8300/t-h8300, config/i386/athlon.md,
18747         config/i386/darwin-libgcc.10.4.ver,
18748         config/i386/darwin-libgcc.10.5.ver, config/i386/libgcc-glibc.ver,
18749         config/i386/mach.h, config/i386/netbsd.h, config/i386/t-crtpc,
18750         config/i386/t-cygming, config/i386/t-cygwin, config/i386/t-i386,
18751         config/i386/t-linux64, config/i386/t-nwld,
18752         config/i386/t-rtems-i386, config/i386/t-sol2-10,
18753         config/i386/x-mingw32, config/ia64/div.md, config/ia64/elf.h,
18754         config/ia64/ia64.opt, config/ia64/libgcc-glibc.ver,
18755         config/ia64/libgcc-ia64.ver, config/ia64/linux.h,
18756         config/ia64/sysv4.h, config/ia64/t-hpux, config/ia64/t-ia64,
18757         config/iq2000/abi, config/iq2000/lib2extra-funcs.c,
18758         config/iq2000/t-iq2000, config/libgcc-glibc.ver,
18759         config/m32r/libgcc-glibc.ver, config/m32r/t-linux,
18760         config/m32r/t-m32r, config/m68hc11/t-m68hc11,
18761         config/m68k/t-floatlib, config/m68k/t-linux, config/m68k/t-mlibs,
18762         config/m68k/t-uclinux, config/mcore/t-mcore,
18763         config/mcore/t-mcore-pe, config/mips/20kc.md, config/mips/4130.md,
18764         config/mips/5400.md, config/mips/5500.md, config/mips/crti.asm,
18765         config/mips/crtn.asm, config/mips/irix-crti.asm,
18766         config/mips/irix-crtn.asm, config/mips/libgcc-mips16.ver,
18767         config/mips/mips-dsp.md, config/mips/mips-dspr2.md,
18768         config/mips/mips-fixed.md, config/mips/sb1.md,
18769         config/mips/sr71k.md, config/mips/t-elf, config/mips/t-gofast,
18770         config/mips/t-iris6, config/mips/t-isa3264,
18771         config/mips/t-libgcc-mips16, config/mips/t-linux64,
18772         config/mips/t-mips, config/mips/t-r3900, config/mips/t-rtems,
18773         config/mips/t-sb1, config/mips/t-sde, config/mips/t-sdemtk,
18774         config/mips/t-slibgcc-irix, config/mips/t-sr71k, config/mips/t-st,
18775         config/mips/t-vr, config/mips/t-vxworks, config/mmix/t-mmix,
18776         config/mn10300/t-linux, config/mn10300/t-mn10300,
18777         config/pa/pa32-regs.h, config/pa/t-hpux-shlib, config/pa/t-linux,
18778         config/pa/t-linux64, config/pa/t-pa64, config/pdp11/t-pdp11,
18779         config/picochip/libgccExtras/clzsi2.asm,
18780         config/picochip/t-picochip, config/rs6000/darwin-ldouble-format,
18781         config/rs6000/darwin-libgcc.10.4.ver,
18782         config/rs6000/darwin-libgcc.10.5.ver,
18783         config/rs6000/libgcc-ppc-glibc.ver, config/rs6000/ppc-asm.h,
18784         config/rs6000/t-aix43, config/rs6000/t-aix52,
18785         config/rs6000/t-darwin, config/rs6000/t-fprules,
18786         config/rs6000/t-fprules-fpbit, config/rs6000/t-linux64,
18787         config/rs6000/t-lynx, config/rs6000/t-netbsd,
18788         config/rs6000/t-ppccomm, config/rs6000/t-ppcendian,
18789         config/rs6000/t-ppcgas, config/rs6000/t-rs6000,
18790         config/rs6000/t-rtems, config/rs6000/t-spe,
18791         config/rs6000/t-vxworks, config/s390/libgcc-glibc.ver,
18792         config/score/t-score-elf, config/sh/divcost-analysis,
18793         config/sh/libgcc-glibc.ver, config/sh/t-netbsd, config/sh/t-sh,
18794         config/sh/t-sh64, config/sh/t-superh, config/sh/t-symbian,
18795         config/sparc/libgcc-sparc-glibc.ver, config/sparc/sol2-bi.h,
18796         config/sparc/sol2-gas.h, config/sparc/sol2-gld-bi.h,
18797         config/sparc/t-elf, config/sparc/t-linux64, config/sparc/t-sol2,
18798         config/stormy16/stormy-abi, config/stormy16/t-stormy16,
18799         config/t-darwin, config/t-libunwind, config/t-libunwind-elf,
18800         config/t-linux, config/t-lynx, config/t-slibgcc-elf-ver,
18801         config/t-slibgcc-sld, config/t-sol2, config/t-vxworks,
18802         config/udivmod.c, config/udivmodsi4.c, config/v850/t-v850,
18803         config/v850/t-v850e, config/xtensa/t-xtensa, diagnostic.def,
18804         gdbinit.in, glimits.h, gstab.h, gsyms.h, java/ChangeLog,
18805         java/ChangeLog.ptr, java/ChangeLog.tree-ssa, libgcc-std.ver,
18806         limitx.h, version.c, xcoff.h: Add copyright and license notices.
18807         * config/h8300/genmova.sh: Include copyright and license notices
18808         in generated output.
18809         * config/h8300/mova.md: Regenerate.
18810         * doc/install.texi2html: Include word "Copyright" in copyright
18811         notice and use name "Free Software Foundation, Inc.".
18812         * ChangeLog, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
18813         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
18814         ChangeLog-2007, ChangeLog-2008: Correct dates.
18815
18816 2009-04-21  Eric Botcazou  <ebotcazou@adacore.com>
18817
18818         * c-common.c (c_common_truthvalue_conversion): Use LOCATION to build
18819         NE_EXPR operations as well.
18820         * c-parser.c (c_parser_condition): Do not set location information on
18821         the condition.
18822         (c_parser_conditional_expression): Likewise.
18823         (c_parser_binary_expression): Set location information on operators.
18824         * c-typeck.c (build_unary_op) <TRUTH_NOT_EXPR>: Reset the location if
18825         TRUTH_NOT_EXPR has been folded.
18826         * fold-const.c (fold_truth_not_expr): Copy location information from
18827         the incoming expression to the outgoing one.
18828         * gimplify.c (shortcut_cond_r): Add locus parameter.  Pass it to
18829         recursive calls on the LHS of the operator but pass that of the
18830         operator to recursive calls on the RHS of the operator.  Set it
18831         on the COND_EXPR.
18832         (shortcut_cond_expr): Set the locus of the operator on the second
18833         COND_EXPR and that of the expression on the first in degenerate cases.
18834         Pass the locus of the expression to calls to shortcut_cond_r.
18835         Set the locus of the 'then' block on the associated jump, if any.
18836         (gimplify_boolean_expr): Add locus parameter.  Set it on the COND_EXPR.
18837         (gimplify_expr) <TRUTH_ANDIF_EXPR>: Pass the locus of the outer
18838         expression to call to gimplify_boolean_expr.
18839
18840 2009-04-21  Kai Tietz  <kai.tietz@onevision.com>
18841
18842         * config.gcc: Add additional configuration for
18843         i686-w64-mingw* and x86_64-w64-mingw* triplet.
18844         * config/i386/mingw-w64.h: New mingw-w64 specific header.
18845         (CPP_SPEC): Redefine for allowing -municode option.
18846         (STARTFILE_SPEC): Likewise.
18847         * config/i386/t-mingw-w64: New.
18848         * config/i386/mingw-w64.opt: New.
18849         (municode): Add new target option.
18850         * doc/invoke.texi (municode): Add documentation for new option.
18851
18852 2009-04-21  Ian Lance Taylor  <iant@google.com>
18853
18854         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
18855         Correct test for number of arguments.
18856         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Likewise.
18857
18858 2009-04-21  Andreas Schwab  <schwab@linux-m68k.org>
18859
18860         * config/m68k/linux.h (FINALIZE_TRAMPOLINE): Use enum for second
18861         argument of emit_library_call.
18862
18863 2009-04-21  Richard Guenther  <rguenther@suse.de>
18864
18865         PR middle-end/39829
18866         * gimple.c (walk_stmt_load_store_addr_ops): Catch addresses
18867         inside VIEW_CONVERT_EXPRs.
18868
18869 2009-04-21  Martin Jambor  <mjambor@suse.cz>
18870
18871         * tree-switch-conversion.c (build_constructors): Split a long line.
18872         (constructor_contains_same_values_p): New function.
18873         (build_one_array): Create assigns of constants if possible, do not
18874         call mark_sym_for_renaming, call update_stmt.
18875         (build_arrays): Call make_ssa_name (create_tmp_var ()) instead of
18876         make_rename_temp.  Do not call mark_symbols_for_renaming, call
18877         update_stmt.
18878         (gen_def_assigns): Do not call mark_symbols_for_renaming or
18879         find_new_referenced_vars, call update_stmt.
18880         (gen_inbound_check): Use create_tmp_var and create ssa names manually
18881         instead of calling make_rename_temp.  Do not call
18882         find_new_referenced_vars or mark_symbols_for_renaming, call
18883         update_stmt.
18884
18885 2009-04-21  Richard Guenther  <rguenther@suse.de>
18886
18887         PR tree-optimization/39827
18888         * tree-ssa-phiprop.c (propagate_with_phi): Check SSA_NAME is in range.
18889         (tree_ssa_phiprop): Pass the correct array size.
18890
18891 2009-04-21  Uros Bizjak  <ubizjak@gmail.com>
18892
18893         * config/alpha/alpha.md (tune): Add cast to enum attr_tune.
18894
18895 2009-04-21  Manuel López-Ibáñez  <manu@gcc.gnu.org>
18896
18897         PR 16202
18898         * c-typeck.c (lvalue_p): Move declaration ...
18899         * c-common.h (lvalue_p): ... to here.
18900         * c-common.c (candidate_equal_p): New.
18901         (add_tlist): Use it.
18902         (merge_tlist): Use it.
18903         (warn_for_collisions_1): Likewise.
18904         (warning_candidate_p): Accept more candidates.
18905         (verify_tree): A warning candidate can be an expression. Use
18906         candidate_equal_p.
18907
18908 2009-04-21  Ben Elliston  <bje@au.ibm.com>
18909
18910         PR target/5267
18911         * doc/invoke.texi (RS/6000 and PowerPC Options): Add documentation
18912         for -mcall-eabi, -mcall-aixdesc, -mcall-freebsd and -mcall-openbsd
18913         options.  Remove -mcall-solaris documentation.
18914
18915 2009-04-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18916
18917         PR c++/13358
18918         * doc/invoke.texi (-Wlong-long): Update description.
18919         * c-lex (interpret_integer): Only warn if there was no previous
18920         overflow and -Wlong-long is enabled.
18921         * c-decl.c (declspecs_add_type): Drop redundant flags.
18922         * c.opt (Wlong-long): Init to -1.
18923         * c-opts.c (sanitize_cpp_opts): Synchronize cpp's warn_long_long
18924         and front-end warn_long_long. Wlong-long only depends on other
18925         flags if it is uninitialized.
18926         * c-parser.c (disable_extension_diagnostics): warn_long_long is
18927         the same for CPP and FE.
18928         (restore_extension_diagnostics): Likewise.
18929
18930 2009-04-20  Ian Lance Taylor  <iant@google.com>
18931
18932         Fix enum conversions which are invalid in C++:
18933         * auto-inc-dec.c (attempt_change): Change 0 to SET in function call.
18934         * calls.c (store_one_arg): Change 0 to EXPAND_NORMAL in function call.
18935         * cse.c (hash_rtx_cb): Change 0 to VOIDmode in function call.
18936         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add cast to enum type.
18937         * dbxout.c (dbxout_symbol): Change 0 to VOIDmode in function call.
18938         (dbxout_parms): Likewise.
18939         * df-core.c (df_set_flags): Change changeable_flags parameter to int.
18940         (df_clear_flags): Likewise.
18941         * df-problems.c (df_rd_bb_local_compute_process_def): Change
18942         top_flag parameter to int.
18943         (df_chain_create_bb_process_use): Likewise.
18944         (df_chain_add_problem): Change chain_flags parameter to unsigned int.
18945         Remove cast.
18946         * df-scan.c (df_ref_create): Change ref_flags parameter to int.
18947         (df_ref_create_structure, df_def_record_1): Likewise.
18948         (df_defs_record, df_uses_record, df_get_call_refs): Likewise.
18949         (df_notes_rescan): Change 0 to VOIDmode in function call.
18950         (df_get_call_refs, df_insn_refs_collect): Likewise.
18951         (df_bb_regs_collect): Likewise.
18952         (df_entry_block_defs_collect): Likewise.
18953         (df_exit_block_uses_collect): Likewise.
18954         * df.h: Update declarations.
18955         * double-int.c (double_int_divmod): Add cast to enum type.
18956         * dse.c (replace_inc_dec): Reverse parameters to gen_int_mode.
18957         * dwarf2out.c (new_reg_loc_descr): Add casts to enum type.
18958         (based_loc_descr): Likewise.
18959         (loc_descriptor_from_tree_1): Change first_op and second_op to
18960         enum dwarf_location_atom.  Add cast to enum type.
18961         * expmed.c (init_expmed): Change 0 to SET in function call.
18962         * expr.c (init_expr_target): Change 0 to VOIDmode in function call.
18963         (expand_expr_real_1): Change 0 to EXPAND_NORMAL in function call.
18964         (do_store_flag): Likewise.
18965         * fixed-value.h (struct fixed_value): Change mode to enum
18966         machine_mode.
18967         * function.c (assign_parms): Change 0 to VOIDmode in function call.
18968         * genautomata.c (insert_automaton_decl): Change 1 to INSERT in
18969         function call.
18970         (insert_insn_decl, insert_decl, insert_state): Likewise.
18971         (automata_list_finish): Likewise.
18972         * genrecog.c (process_define_predicate): Add cast to enum type.
18973         * gensupport.c (init_predicate_table): Add cast to enum type.
18974         * gimple.c (gimple_build_return): Change 0 to ERROR_MARK in
18975         function call.
18976         (gimple_build_call_1, gimple_build_label): Likewise.
18977         (gimple_build_goto, gimple_build_asm_1): Likewise.
18978         (gimple_build_switch_1, gimple_build_cdt): Likewise.
18979         * gimple.h (GIMPLE_CHECK): Change 0 to ERROR_MARK in function call.
18980         (enum fallback): Rename from enum fallback_t.
18981         (fallback_t): Typedef as int.
18982         * gimple-low.c (lower_builtin_setjmp): Change TSI_SAME_STMT to
18983         GSI_SAME_STMT in function call.
18984         * ira.c (setup_class_subset_and_memory_move_costs): Add casts to
18985         enum type.
18986         (setup_reg_class_relations): Likewise.
18987         (setup_reg_class_nregs): Change cl to int.  Add casts to enum type.
18988         (setup_prohibited_class_mode_regs): Add cast to enum type.
18989         (setup_prohibited_mode_move_regs): Likewise.
18990         * ira-costs.c (record_reg_classes): Change rclass to enum reg_class.
18991         (record_address_regs): Change i to enum reg_class.
18992         * lists.c (alloc_EXPR_LIST): Add cast to enum type.
18993         * machmode.h (GET_MODE_CLASS): Cast value to enum mode_class.
18994         (GET_MODE_WIDER_MODE): Cast value to enum machine_mode.
18995         (GET_MODE_2XWIDER_MODE): Likewise.
18996         (GET_CLASS_NARROWEST_MODE): Likewise.
18997         * omp-low.c (expand_omp_for): Add cast to enum type.
18998         * optabs.c (debug_optab_libfuncs): Add casts to enum type.
18999         * opts.c (enable_warning_as_error): Change kind to diagostic_t.
19000         * postreload.c (reload_cse_simplify_operands): Change rclass local
19001         to enum reg_class.
19002         * predict.c (combine_predictions_for_insn): Change best_predictor
19003         and predictor to enum br_predictor.
19004         (combine_predictions_for_bb): Likewise.
19005         (build_predict_expr): Change assignment to PREDICT_EXPR_OUTCOME to
19006         use SET_PREDICT_EXPR_OUTCOME.
19007         * real.c (real_arithmetic): Change icode to code in function call.
19008         * reginfo.c (init_move_cost): Add casts to enum type.
19009         (init_reg_sets_1, init_fake_stack_mems): Likewise.
19010         * regmove.c (regclass_compatible_p): Change class0 and class1 to
19011         enum reg_class.
19012         * reload.c (find_valid_class): Add casts to enum type.
19013         (push_reload): Change 0 to NO_REGS in function call.
19014         (find_reloads): Change this_alternative to array of enum
19015         reg_class.  Remove some now-unnecessary casts.
19016         (make_memloc): Change 0 to VOIDmode in function call.
19017         * reload1.c (reload): Change 0 to VOIDmode in function call.
19018         (eliminate_regs_1, elimination_effects): Likewise.
19019         (eliminate_regs_in_insn): Likewise.
19020         (emit_input_reload_insns): Add cast to enum type.
19021         (delete_output_reload): Change 0 to VOIDmode in function call.
19022         * reorg.c (insn_sets_resource_p): Convert include_delayed_effects
19023         to enum type in function call.
19024         * tree.h (PREDICT_EXPR_OUTCOME): Add cast to enum type.
19025         (SET_PREDICT_EXPR_OUTCOME): Define.
19026         * tree-dump.c (get_dump_file_info): Change phase parameter to int.
19027         (get_dump_file_name, dump_begin, dump_enabled_p): Likewise.
19028         (dump_initialized_p, dump_flag_name, dump_end): Likewise.
19029         (dump_function): Likewise.
19030         * tree-dump.h: Update declarations.
19031         * tree-pass.h: Update declarations.
19032         * varasm.c (assemble_integer): Change mclass to enum mode_class.
19033         * config/arm/arm.c (thumb_legitimize_reload_address): Add cast to
19034         enum type.
19035         (arm_rtx_costs_1): Correct parenthesization.
19036         (arm_rtx_costs): Add casts to enum type.
19037         (adjacent_mem_locations): Reverse arguments to const_ok_for_op.
19038         (vfp_emit_fstmd): Use add_rg_note.
19039         (emit_multi_reg_push, emit_sfm): Likewise.
19040         (thumb_set_frame_pointer): Likewise.
19041         (arm_expand_prologue): Likewise.
19042         (arm_regno_class): Change return type to enum reg_class.
19043         (thumb1_expand_prologue): Use add_reg_note.
19044         * config/arm/arm-protos.h (arm_regno_class): Update declaration.
19045         * config/arm/arm.h (INITIALIZE_TRAMPOLINE): Change 0 to LCT_NORMAL
19046         in function call.
19047         * config/arm/gentune.sh: Add cast to enum type.
19048         * config/arm/arm-tune.md: Rebuild.
19049         * config/i386/i386.c (ix86_expand_prologue): Use add_reg_note.
19050         (ix86_split_fp_branch, predict_jump): Likewise.
19051         (ix86_expand_multi_arg_builtin): Change sub_code from enum
19052         insn_code to enum rtx_code.
19053         (ix86_builtin_vectorized_function): Add cast to enum type.
19054         * config/i386/i386.md (truncdfsf2): Change slot to enum
19055         ix86_stack_slot.
19056         (truncxf<mode>2, isinf<mode>2): Likewise.
19057         * config/i386/i386-c.c (ix86_pragma_target_parse): Add cast to
19058         enum type.
19059         * config/ia64/ia64.c (ia64_split_tmode_move): Use add_reg_note.
19060         (spill_restore_mem, do_spill, ia64_expand_prologue): Likewise.
19061         (insert_bundle_state): Change 1 to INSERT in function call.
19062         (ia64_add_bundle_selector_before): Likewise.
19063         * config/ia64/ia64.md (cpu attr): Add cast to enum type.
19064         (save_stack_nonlocal): Change 0 to LCT_NORMAL in function call.
19065         (restore_stack_nonlocal): Likewise.
19066         * config/mips/mips.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL in
19067         function call.
19068         * config/mips/mips.c (mips_binary_cost): Change 0 to SET in
19069         function call.
19070         (mips_rtx_costs): Likewise.
19071         (mips_override_options): Add casts to enum type.
19072         * config/mips/sdemtk.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL
19073         in function call.
19074         * config/pa/pa.c (legitimize_pic_address): Use add_reg_note.
19075         (store_reg, set_reg_plus_d): Likewise.
19076         (hppa_expand_prologue, hppa_profile_hook): Likewise.
19077         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Add
19078         cast to enum type.
19079         (altivec_expand_vec_set_builtin): Change 0 to EXPAND_NORMAL in
19080         function call.
19081         (emit_unlikely_jump): Use add_reg_note.
19082         (rs6000_emit_allocate_stack): Likewise.
19083         (rs6000_frame_related, rs6000_emit_prologue): Likewise.
19084         (output_toc): Change 1 to INSERT in function call.
19085         (output_profile_hook): Change 0 to LCT_NORMAL in function call.
19086         (rs6000_initialize_trampoline): Likewise.
19087         (rs6000_init_dwarf_reg_sizes_extra): Change 0 to EXPAND_NORMAL in
19088         function call.
19089         * config/s390/s390.c (s390_rtx_costs): Add cast to enum type.
19090         (s390_expand_movmem): Change 0 to OPTAB_DIRECT in function call.
19091         (s390_expand_setmem, s390_expand_cmpmem): Likewise.
19092         (save_gprs): Use add_reg_note.
19093         (s390_emit_prologue): Likewise.
19094         (s390_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
19095         * config/sparc/sparc.c (sparc_expand_prologue): Use add_reg_note.
19096         (sparc_fold_builtin): Add cast to enum type.
19097         * config/spu/spu.c (spu_emit_branch_or_set): Change ior_code to
19098         enum insn_code.
19099         (spu_expand_prologue): Use add_reg_note.
19100         (expand_builtin_args): Change 0 to EXPAND_NORMAL in function call.
19101
19102 2009-04-20  Ian Lance Taylor  <iant@google.com>
19103
19104         * c-parser.c (c_parser_attributes): Change VEC back to tree list.
19105         (c_parser_postfix_expression_after_primary): Get VEC for list of
19106         arguments.  Get original types of arguments.  Call
19107         build_function_call_vec.
19108         (cached_expr_list_1, cached_expr_list_2): New static variables.
19109         (c_parser_expr_list): Change return type to VEC *.  Add
19110         p_orig_types parameter.  Change all callers.
19111         (c_parser_release_expr): New static function.
19112         (c_parser_vec_to_tree_list): New static function.
19113         * c-typeck.c (build_function_call): Rewrite to build a VEC and
19114         call build_function_call_vec.
19115         (build_function_call_vec): New function, based on old
19116         build_function_call.
19117         (convert_arguments): Remove nargs and argarray parameters.  Change
19118         values to a VEC.  Add origtypes parameter.
19119         (build_modify_expr): Add rhs_origtype parameter.  Change all callers.
19120         (convert_for_assignment): Add origtype parameter.  Change all
19121         callers.  If warn_cxx_compat, check for conversion to an enum
19122         type when calling a function.
19123         (store_init_value): Add origtype parameter.  Change all callers.
19124         (digest_init): Likewise.
19125         (struct init_node): Add origtype field.
19126         (add_pending_init): Add origtype parameter.  Change all callers.
19127         (output_init_element): Likewise.
19128         (output_pending_init_elements): Pass origtype from init_node to
19129         output_init_element.
19130         (process_init_element): Pass origtype from c_expr to
19131         output_init_element.
19132         (c_finish_return): Add origtype parameter.  Change all callers.
19133         * c-common.c (sync_resolve_size): Change params to VEC *.  Change
19134         caller.
19135         (sync_resolve_params): Likewise.
19136         (sync_resolve_return): Change params to first_param.  Change caller.
19137         (resolve_overloaded_builtins): Change params to VEC *.  Change
19138         callers.  Save first parameter around call to build_function_call_vec.
19139         * c-decl.c (finish_decl): Add origtype parameter.  Change all
19140         callers.  Call build_function_call_vec rather than
19141         build_function_call for cleanup.
19142         * c-tree.h: Update declarations.
19143         * c-common.h: Update declarations.
19144         * stub-objc.c (objc_rewrite_function_call): Change parameter from
19145         params to first_param.
19146         * target.h (struct gcc_target): Change resolve_overloaded_builtin
19147         params parameter from tree to void *.
19148         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
19149         Change arglist parameter to have type void *, and to be a pointer
19150         to a VEC.
19151         * config/rs6000/rs6000-protos.h
19152         (altivec_resolve_overloaded_builtin): Update declaration.
19153         * config/spu/spu-c.c (spu_resolved_overloaded_builtin): Change
19154         fnargs parameter to have type void *, and to be a pointer to a
19155         VEC.  Call build_function_call_vec instead of
19156         build_function_call.
19157         * config/spu/spu-protos.h (spu_expand_builtin): Update declaration.
19158
19159 2009-04-20  Joey Ye  <joey.ye@intel.com>
19160             Xuepeng Guo  <xuepeng.guo@intel.com>
19161             H.J. Lu  <hongjiu.lu@intel.com>
19162
19163         * config/i386/atom.md: Add bypasses with ix86_dep_by_shift_count.
19164
19165         * config/i386/i386.c (LEA_SEARCH_THRESHOLD): New macro.
19166         (IX86_LEA_PRIORITY): Likewise.
19167         (distance_non_agu_define): New function.
19168         (distance_agu_use): Likewise.
19169         (ix86_lea_for_add_ok): Likewise.
19170         (ix86_dep_by_shift_count): Likewise.
19171
19172         * config/i386/i386.md: Call ix86_lea_for_add_ok to decide we
19173         should split for LEA.
19174
19175         * config/i386/i386-protos.h (ix86_lea_for_add_ok): Declare new
19176         function.
19177         (ix86_dep_by_shift_count): Likewise.
19178
19179 2009-04-20  Richard Guenther  <rguenther@suse.de>
19180
19181         * expr.c (handled_component_p): Move ...
19182         * tree.h (handled_component_p): ... here.
19183         * tree.def: Re-order BIT_FIELD_REF, COMPONENT_REF,
19184         ARRAY_REF, ARRAY_RANGE_REF, VIEW_CONVERT_EXPR, IMAGPART_EXPR
19185         and REALPART_EXPR to be in one group.
19186
19187 2009-04-20  Richard Guenther  <rguenther@suse.de>
19188
19189         * basic-block.h (get_all_dominated_blocks): Declare.
19190         * dominance.c (get_all_dominated_blocks): New function.
19191         * tree-cfg.c (get_all_dominated_blocks): Remove.
19192         (remove_edge_and_dominated_blocks): Adjust.
19193         * tree-ssa-phiprop.c (tree_ssa_phiprop_1): Fold in ...
19194         (tree_ssa_phiprop): ... here.  Use get_all_dominated_blocks
19195         instead of recursing.
19196
19197 2009-04-20  Doug Kwan  <dougkwan@google.com>
19198
19199         * cgraph.h (cgraph_node_ptr): New type for vector functions.
19200         (struct cgraph_node_set_def): New type.
19201         (cgraph_node_set) New type. Also declare vector functions.
19202         (struct cgraph_node_set_element_def): New type.
19203         (cgraph_node_set_element): Ditto.
19204         (cgraph_node_set_iterator): New iterator type.
19205         (cgraph_node_set_new, cgraph_node_set_find, cgraph_node_set_add,
19206         cgraph_node_set_remove, dump_cgraph_node_set,
19207         debug_cgraph_node_set): New prototypes.
19208         (csi_end_p, csi_next, csi_node, csi_start, cgraph_node_in_set_p,
19209         cgraph_node_set_size): New inlines.
19210         * tree-pass.h (struct cgraph_node_set_def): New decl to avoid
19211         including cgraph.h.
19212         (struct ipa_opt_pass): Add struct cgraph_node_set_def
19213         argument to function 'write_summary'.
19214         * ipa.c: Include ggc.h.
19215         (hash_cgraph_node_set_element,
19216         eq_cgraph_node_set_element, cgraph_node_set_new,
19217         cgraph_node_set_add, cgraph_node_set_remove,
19218         cgraph_node_set_find, dump_cgraph_node_set,
19219         debug_cgraph_node_set): New functions.
19220         * Makefile.in (ipa.o): Add dependency on GGC_H.
19221
19222 2009-04-20  Ira Rosen  <irar@il.ibm.com>
19223
19224         PR tree-optimization/39675
19225         * tree-vect-loop.c (vect_transform_loop): Remove currently redundant
19226         check of the return code of vect_schedule_slp. Check that
19227         stmt_vec_info still exists for the statement, before checking its
19228         vectorization type.
19229
19230 2009-04-20  Michael Matz  <matz@suse.de>
19231
19232         * Makefile.in (generated_files): Take out $(simple_generated_c).
19233
19234 2009-04-19  Dave Korn  <dave.korn.cygwin@gmail.com>
19235
19236         * config/i386/cygwin-stdint.h (INTPTR_TYPE):  Remove "long".
19237         (UINTPTR_TYPE):  Likewise.
19238
19239 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
19240
19241         PR c/37481
19242         * c-typeck.c (digest_init): Check for initializing an array with a
19243         string literal.
19244
19245 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
19246
19247         PR c/19771
19248         * c-semantics.c (pop_stmt_list): Propagate
19249         STATEMENT_LIST_HAS_LABEL to parent statement list.
19250
19251 2009-04-19  Adam Nemet  <anemet@caviumnetworks.com>
19252
19253         * config/mips/mips.h (mips_tune_attr): New macro.
19254         * config/mips/mips.md (cpu): Use it.
19255
19256 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
19257
19258         PR c/38243
19259         * c-decl.c (shadow_tag_warned): Diagnose use of restrict when
19260         declaring a tag.
19261
19262 2009-04-19  Diego Novillo  <dnovillo@google.com>
19263
19264         * toplev.c (compile_file): Move call to coverage_finish ...
19265         * cgraphunit.c (ipa_passes): ... here.
19266         Call cgraph_process_new_functions.
19267         * ipa-utils.c (get_base_var): Handle CONSTRUCTOR.
19268         * Makefile.in (cgraphunit.o): Add dependency on COVERAGE_H.
19269
19270 2009-04-19  Jan Hubicka  <jh@suse.cz>
19271
19272         * cgraph.c (cgraph_create_edge, cgraph_set_call_stmt): Set proper
19273         cfun.
19274         (dump_cgraph_node): Dump can throw external flag.
19275         * ipa-pure-const.c (propagate): Fix propagation of nothrow flags.
19276
19277 2009-04-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
19278
19279         PR c/32061
19280         PR c++/36954
19281         * doc/invoke.texi: Add -Wlogical-op to -Wextra.
19282         * common.opt (Wlogical-op): Move from here...
19283         * c.opt (Wlogical-op): ... to here.
19284         * c-typeck.c (parser_build_binary_op): Update call to
19285         warn_logical_operator.
19286         * c-opts.c (c_common_post_options): Enable warn_logical_op with
19287         extra_warnings.
19288         * c-common.c (warn_logical_op): Update.
19289         * c-common.h (warn_logical_op): Update declaration.
19290
19291 2009-04-19  Eric Botcazou  <ebotcazou@adacore.com>
19292
19293         * tree.c (protected_set_expr_location): Fix formatting.
19294
19295 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
19296
19297         PR c/27676
19298         * c-typeck.c (readonly_warning): new.
19299         (build_unary_op, build_modify_expr): Use readonly_warning for
19300         storing into something readonly but not const-qualified.
19301
19302 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
19303
19304         PR c/22367
19305         * c-typeck.c (build_unary_op): Check for taking address of
19306         expression of type void.
19307
19308 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
19309
19310         PR c/35210
19311         * c-typeck.c (build_function_call): Check for calling a function
19312         with qualified void return types.  Call require_complete_type when
19313         generating a trap.
19314
19315 2009-04-18  Jan Hubicka  <jh@suse.cz>
19316
19317         * cgraph.c (cgraph_make_edge, dump_cgraph_node, cgraph_set_call_stmt):
19318         Set nothrow flag.
19319         * cgraph.h (struct function): Reduce loop_nest to 30 bits; add
19320         can_throw_external flag.
19321         * ipa-reference.c (ipa_utils_reduced_inorder): Update call.
19322         * ipa-pure-const.c (ignore_edge): New function.
19323         (propagate): Compute order for NOTHROW computation; set NOTHROWs
19324         only over can_throw_external edges.
19325         (local_pure_const): Add nothrow flag.
19326         * ipa-utils.c (searchc): Add ignore_edge callback.
19327         (ipa_utils_reduced_inorder): Add ignore_edge callback.
19328         * ipa-utils.h (ipa_utils_reduced_inorder): Update prototype.
19329         (set_nothrow_function_flags): Update cgraph.
19330         * tree-cfg.c (verify_stmt): Relax nothrow checking when in IPA mode.
19331
19332 2009-04-18  Richard Guenther  <rguenther@suse.de>
19333
19334         PR middle-end/39804
19335         * tree-ssa-ccp.c (fold_stmt_1): New function factored from ...
19336         (fold_stmt): ... this and ...
19337         (fold_stmt_inplace): ... this.
19338         (fold_stmt_1): Fold references in calls and asms.
19339         * tree-cfg.c (remove_useless_stmts_cond): Use fold_stmt.
19340
19341 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
19342
19343         * tree-vrp.c (ssa_name_nonzero_p): Remove.
19344         * tree.h: Remove the prototype for ssa_name_nonzero_p.
19345
19346 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
19347
19348         * tree.c (function_args_count): Remove.
19349         * tree.h: Remove the prototype for function_args_count.
19350
19351 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
19352
19353         * tree-iterator.c (expr_only): Remove.
19354         * tree.h: Remove the prototype for expr_only.
19355
19356 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
19357
19358         * reginfo.c (cannot_change_mode_set_regs): Remove.
19359         * rtl.h: Remove the prototype for cannot_change_mode_set_regs.
19360
19361 2009-04-08  Anatoly Sokolov  <aesok@post.ru>
19362
19363         * config/avr/avr.md (*rotlsi3_8, *rotlsi3_16, *rotlsi3_24 ): Check
19364         whether operands 0 and 1 overlaps.
19365
19366 2009-04-18  Manuel López-Ibáñez  <manu@gcc.gnu.org>
19367
19368         PR middle-end/36902
19369         * tree-vrp.c (check_array_ref): Pass a location_t instead of a
19370         pointer. Use warning_at instead of warning.
19371         (search_for_addr_array): Likewise.
19372         (check_array_bounds): Likewise.
19373         (check_all_array_refs): Check that the incoming edge is not in the
19374         list of edges to be removed.
19375         (check_all_array_refs): Avoid the temporal pointer.
19376         (vrp_visit_cond_stmt): Fix typo.
19377         (simplify_switch_using_ranges): Handle the case where the switch
19378         index is an integer constant.
19379
19380 2009-04-18  Adam Nemet  <anemet@caviumnetworks.com>
19381
19382         * config/mips/mips.c (mips_final_postscan_insn): Make it static.
19383
19384 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
19385
19386         * doc/extend.texi, doc/invoke.texi: Fix typos.
19387
19388 2009-04-17  Cary Coutant  <ccoutant@google.com>
19389
19390         * tree-flow-inline.h (get_lineno): Fix inverted test.
19391
19392 2009-04-17  Diego Novillo  <dnovillo@google.com>
19393
19394         * tree-ssa-pre.c (create_expression_by_pieces): Remove
19395         assertion for AVAIL_OUT.
19396
19397 2009-04-17  Mike Frysinger  <vapier@gentoo.org>
19398
19399         PR target/38627
19400         * config/sh/lib1funcs.asm [__ELF__ && __linux__]: Add .note.GNU-stack.
19401         * config/sh/linux-atomic.asm: Likewise.
19402
19403 2009-04-17  Diego Novillo  <dnovillo@google.com>
19404
19405         * except.c (debug_eh_tree): New.
19406         (struct eh_region, struct eh_status): Move ...
19407         * except.h: ... here.
19408         (add_type_for_runtime): Declare extern.
19409         (lookup_type_for_runtime): Likewise.
19410         (debug_eh_tree): Declare.
19411         * Makefile.in (GTFILES): List except.h before except.c
19412
19413 2009-04-17  Diego Novillo  <dnovillo@google.com>
19414
19415         * omp-low.c (create_omp_child_function): Set DECL_CONTEXT for DECL.
19416         * cgraphunit.c (cgraph_build_static_cdtor): Likewise.
19417         * tree-dfa.c (find_referenced_vars_in): Factor out of ...
19418         (find_vars_r): ... here.
19419         * tree-flow.h (find_referenced_vars_in): Declare.
19420         * tree-ssa-pre.c (create_expression_by_pieces): Assert
19421         that AVAIL_OUT exists for BLOCK.
19422         * Makefile.in (CGRAPH_H): Add dependency on cif-code.def
19423         (tree-loop-distribution.o): Fix dependency on TREE_VECTORIZER_H.
19424         (tree-parloops.o): Likewise.
19425
19426 2009-04-17  Simon Baldwin  <simonb@google.com>
19427
19428         * toplev.c (default_tree_printer): Add handling for %E format.
19429
19430 2009-04-17  Diego Novillo  <dnovillo@google.com>
19431
19432         * tree-pretty-print.c (dump_generic_node): Add break after
19433         TREE_BINFO handler.  Handle COMPLEX_TYPE, REAL_TYPE and
19434         FIXED_POINT_TYPE.  Handle NULL TREE_TYPEs.  Handle METHOD_TYPE and
19435         FUNCTION_TYPE together.  Call print_struct_decl when printing
19436         structures and TDF_SLIM is not given.
19437         (print_struct_decl): Fix logic for detecting recursion.
19438
19439 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
19440
19441         PR 31567
19442         * gcc.c (create_at_file): New.
19443         (compile_input_file_p): New.
19444         (do_spec_1): Use @args files for %i. Use create_at_file for %o.
19445         * main.c (main): Update call to toplev_main.
19446         * toplev.c (toplev_main): Change signature. Call expandargv.
19447         * toplev.h (toplev_main): Change signature.
19448
19449 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
19450
19451         * dwarf2out.c (field_byte_offset): Use the type size as the field size
19452         if the latter is not constant.
19453
19454 2009-04-17  David Edelsohn  <edelsohn@gnu.org>
19455
19456         * dbxout.c (xcoff_debug_hooks): Add set_name_debug_nothing.
19457
19458 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
19459
19460         * dbxout.c (dbxout_block): Reinstate test on TREE_USED.
19461         * tree-ssa-live.c (remove_unused_scope_block_p): Update TREE_USED bit.
19462
19463 2009-04-17  Richard Guenther  <rguenther@suse.de>
19464
19465         * tree-ssa-structalias.c (get_constraint_for_component_ref):
19466         Handle component references view-converting an invariant address.
19467
19468 2009-04-17  Adam Nemet  <anemet@caviumnetworks.com>
19469
19470         * doc/tm.texi (TARGET_DEFAULT_TARGET_FLAGS,
19471         TARGET_MIN_ANCHOR_OFFSET, TARGET_MAX_ANCHOR_OFFSET,
19472         TARGET_HAVE_SRODATA_SECTION, TARGET_HAVE_TLS,
19473         TARGET_UNWIND_TABLES_DEFAULT, TARGET_TERMINATE_DW2_EH_FRAME_INFO):
19474         Use @deftypevr rather than @deftypevar.
19475
19476 2009-04-17  Richard Guenther  <rguenther@suse.de>
19477
19478         * tree-ssa-forwprop.c (get_prop_dest_stmt): Clean up tuplification.
19479         (get_prop_source_stmt): Likewise.
19480         (can_propagate_from): Likewise.
19481
19482 2009-04-17  Andrew Stubbs  <ams@codesourcery.com>
19483
19484         * configure.ac: Add new AC_SUBST for TM_ENDIAN_CONFIG,
19485         TM_MULTILIB_CONFIG and TM_MULTILIB_EXCEPTIONS_CONFIG.
19486         (--with-multilib-list): Add default value.
19487         * configure: Regenerate.
19488         * Makefile.in (TM_ENDIAN_CONFIG): Define.
19489         (TM_MULTILIB_CONFIG, TM_MULTILIB_EXCEPTIONS_CONFIG): Define.
19490         * config.gcc (sh-*-*): Switch to using TM_ENDIAN_CONFIG,
19491         TM_MULTILIB_CONFIG, and TM_MULTILIB_EXCEPTIONS_CONFIG.
19492         Don't add default cpu to multilib list unnecessarily, but do enable
19493         the relevant compiler option..
19494         Add support for --with-multilib-list=<blank> and
19495         --with-multilib-list=!<somelib> to supress unwanted multilibs.
19496         * config/sh/t-sh (DEFAULT_ENDIAN, OTHER_ENDIAN): New variables.
19497         (MULTILIB_ENDIAN, MULTILIB_CPUS): Delete variables.
19498         (MULTILIB_OPTIONS): Redefine using OTHER_ENDIAN and
19499         TM_MULTILIB_CONFIG.
19500         (MULTILIB_EXCEPTIONS): Add TM_MULTILIB_EXCEPTIONS_CONFIG.
19501         (MULTILIB_OSDIRNAMES): New variable.
19502         * config/sh/t-1e: Delete file.
19503         * config/sh/t-mlib-sh1: Delete file.
19504         * config/sh/t-mlib-sh2: Delete file.
19505         * config/sh/t-mlib-sh2a: Delete file.
19506         * config/sh/t-mlib-sh2a-nofpu: Delete file.
19507         * config/sh/t-mlib-sh2a-single: Delete file.
19508         * config/sh/t-mlib-sh2a-single-only: Delete file.
19509         * config/sh/t-mlib-sh2e: Delete file.
19510         * config/sh/t-mlib-sh3e: Delete file.
19511         * config/sh/t-mlib-sh4: Delete file.
19512         * config/sh/t-mlib-sh4-nofpu: Delete file.
19513         * config/sh/t-mlib-sh4-single: Delete file.
19514         * config/sh/t-mlib-sh4-single-only: Delete file.
19515         * config/sh/t-mlib-sh4a: Delete file.
19516         * config/sh/t-mlib-sh4a-nofpu: Delete file.
19517         * config/sh/t-mlib-sh4a-single: Delete file.
19518         * config/sh/t-mlib-sh4a-single-only: Delete file.
19519         * config/sh/t-mlib-sh4al: Delete file.
19520         * config/sh/t-mlib-sh5-32media: Delete file.
19521         * config/sh/t-mlib-sh5-32media-nofpu: Delete file.
19522         * config/sh/t-mlib-sh5-64media: Delete file.
19523         * config/sh/t-mlib-sh5-64media-nofpu: Delete file.
19524         * config/sh/t-mlib-sh5-compact: Delete file.
19525         * config/sh/t-mlib-sh5-compact-nofpu: Delete file.
19526         * config/sh/t-linux: Don't override MULTILIB_EXCEPTIONS.
19527         * doc/install.texi (Options specification): Add
19528         --with-multilib-list and --with-endian.
19529
19530 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
19531
19532         * Makefile.in (REVISION_s): Always include quotes. Change ifdef to use
19533         REVISION_c.
19534         (OBJS-common): Add plugin-version.o.
19535         (plugin-version.o): New.
19536         * gcc-plugin.h (plugin_gcc_version): New.
19537         (plugin_default_version_check): New.
19538         (plugin_init_func, plugin_init): Add version argument.
19539         * plugin-version.c: New.
19540         * plugin.c (str_plugin_gcc_version_name): New.
19541         (try_init_one_plugin): Read plugin_gcc_version from the plugin and
19542         pass it to the init function.
19543         (plugin_default_version_check): New.
19544
19545 2009-04-17  Richard Guenther  <rguenther@suse.de>
19546
19547         * tree-ssa-alias.c (refs_may_alias_p_1): Do not use TBAA
19548         for decl-vs-decl disambiguation.
19549
19550 2009-04-17  Andreas Krebbel  <krebbel1@de.ibm.com>
19551
19552         * config/s390/s390.h (s390_tune_attr): New macro definition.
19553         * config/s390/s390.md (cpu attribute): Map to s390_tune_attr.
19554
19555 2009-04-17  Richard Guenther  <rguenther@suse.de>
19556
19557         * tree-ssa-ccp.c (struct fold_stmt_r_data): Remove.
19558         (fold_stmt_r): Likewise.
19559         (maybe_fold_reference): New function.
19560         (fold_gimple_assign): Handle cases fold_stmt_r did.
19561         (fold_stmt): Do not use fold_stmt_r.
19562         (fold_stmt_inplace): Likewise.
19563
19564 2009-04-17  Richard Guenther  <rguenther@suse.de>
19565
19566         * tree-ssa-dom.c (gimple_assign_unary_useless_conversion_p): Remove.
19567         (record_equivalences_from_stmt): Remove useless checks and
19568         simplifications.
19569         * tree-ssa-pre.c (eliminate): Avoid converting a constant if
19570         the type is already suitable.
19571
19572 2009-04-17  Paolo Bonzini  <bonzini@gnu.org>
19573
19574         * config/sh/sh.h (FUNCTION_VALUE): Fix call to sh_promote_prototypes.
19575
19576 2009-04-17  Uros Bizjak  <ubizjak@gmail.com>
19577
19578         * config/arm/sfp-machine.h (__gcc_CMPtype): New typedef.
19579         (CMPtype): Define as __gcc_CMPtype.
19580
19581 2009-04-17  Aurelien Jarno  <aurelien@aurel32.net>
19582
19583         * config.gcc: Add soft-fp/t-softfp and i386/t-linux to tmake_file
19584         for i[34567]86-*-kfreebsd*-gnu*, x86_64-*-kfreebsd*-gnu*.
19585
19586 2009-04-17  Richard Guenther  <rguenther@suse.de>
19587
19588         PR tree-optimization/39746
19589         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Remove
19590         special-casing for builtins and static variable use/def.
19591         (call_may_clobber_ref_p_1): Likewise.
19592
19593 2009-04-16  Ian Lance Taylor  <iant@google.com>
19594
19595         * df.h: Include "timevar.h".
19596         (struct df_problem): Change tv_id field to timevar_id_t.
19597         * tree-pass.h: Include "timevar.h".
19598         (struct opt_pass): Change tv_id field to timevar_id_t.
19599         * timevar.h (timevar_id_t): Define TV_NONE.
19600         * passes.c (execute_one_ipa_transform_pass): Check for tv_id !=
19601         TV_NONE rather than tv_id != 0.
19602         (execute_one_pass): Likewise.
19603         * Makefile.in (DF_H): Add $(TIMEVAR_H).
19604         (TREE_PASS_H): Define.  Change all instances of tree-pass.h in
19605         dependencies to $(TREE_PASS_H).
19606         * bt-load.c (pass_branch_target_load_optimize1): Set tv_id field
19607         to TV_NONE.
19608         (pass_branch_target_load_optimize2): Likewise.
19609         * cfglayout.c (pass_into_cfg_layout_mode): Likewise.
19610         (pass_outof_cfg_layout_mode): Likewise.
19611         * cgraphbuild.c (pass_remove_cgraph_callee_edges): Likewise.
19612         (pass_rebuild_cgraph_edges): Likewise.
19613         (pass_remove_cgraph_callee_edges): Likewise.
19614         * df-core.c (pass_df_initialize_opt): Likewise.
19615         (pass_df_initialize_no_opt): Likewise.
19616         (pass_df_finish): Likewise.
19617         * emit-rtl.c (pass_unshare_all_rtl): Likewise.
19618         * except.c (pass_set_nothrow_function_flags): Likewise.
19619         (pass_convert_to_eh_region_ranges): Likewise.
19620         * final.c (pass_compute_alignments): Likewise.
19621         * function.c (pass_instantiate_virtual_regs): Likewise.
19622         (pass_init_function): Likewise.
19623         (pass_leaf_regs): Likewise.
19624         (pass_match_asm_constraints): Likewise.
19625         * gimple-low.c (pass_lower_cf): Likewise.
19626         (pass_mark_used_blocks): Likewise.
19627         * init-regs.c (pass_initialize_regs): Likewise.
19628         * integrate.c (pass_initial_value_sets): Likewise.
19629         * ira.c (pass_ira): Likewise.
19630         * jump.c (pass_cleanup_barriers): Likewise.
19631         * omp-low.c (pass_expand_omp): Likewise.
19632         (pass_lower_omp): Likewise.
19633         * matrix-reorg.c (pass_ipa_matrix_reorg): Likewise.
19634         * recog.c (pass_split_all_insns): Likewise.
19635         (pass_split_after_reload): Likewise.
19636         (pass_split_before_regstack): Likewise.
19637         (pass_split_before_sched2): Likewise.
19638         (pass_split_for_shorten_branches): Likewise.
19639         * reginfo.c (pass_reginfo_init): Likewise.
19640         (pass_subregs_of_mode_init): Likewise.
19641         (pass_subregs_of_mode_finish): Likewise.
19642         * passes.c (pass_postreload): Likewise.
19643         * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
19644         * tree-cfg.c (pass_remove_useless_stmts): Likewise.
19645         (pass_warn_function_return): Likewise.
19646         (pass_warn_function_noreturn): Likewise.
19647         * tree-complex.c (pass_lower_complex): Likewise.
19648         (pass_lower_complex_O0): Likewise.
19649         * tree-if-conv.c (pass_if_conversion): Likewise.
19650         * tree-into-ssa.c (pass_build_ssa): Likewise.
19651         * tree-mudflap.c (pass_mudflap_1): Likewise.
19652         (pass_mudflap_2): Likewise.
19653         * tree-nomudflap.c (pass_mudflap_1): Likewise.
19654         (pass_mudflap_2): Likewise.
19655         * tree-nrv.c (pass_return_slot): Likewise.
19656         * tree-object-size.c (pass_object_sizes): Likewise.
19657         * tree-optimize.c (pass_all_optimizations): Likewise.
19658         (pass_early_local_passes): Likewise.
19659         (pass_all_early_optimizations): Likewise.
19660         (pass_cleanup_cfg): Likewise.
19661         (pass_cleanup_cfg_post_optimizing): Likewise.
19662         (pass_free_datastructures): Likewise.
19663         (pass_free_cfg_annotations): Likewise.
19664         (pass_fixup_cfg): Likewise.
19665         (pass_init_datastructures): Likewise.
19666         * tree-ssa.c (pass_early_warn_uninitialized): Likewise.
19667         (pass_late_warn_uninitialized): Likewise.
19668         (pass_update_address_taken): Likewise.
19669         * tree-ssa-ccp.c (pass_fold_builtins): Likewise.
19670         * tree-ssa-math-opts.c (pass_cse_reciprocals): Likewise.
19671         (pass_cse_sincos): Likewise.
19672         (pass_convert_to_rsqrt): Likewise.
19673         * tree-ssa-structalias.c (pass_build_alias): Likewise.
19674         * tree-stdarg.c (pass_stdarg): Likewise.
19675         * tree-tailcall.c (pass_tail_recursion): Likewise.
19676         (pass_tail_calls): Likewise.
19677         * tree-vect-generic.c (pass_lower_vector): Likewise.
19678         (pass_lower_vector_ssa): Likewise.
19679         * tree-vectorizer.c (pass_ipa_increase_alignment): Likewise.
19680
19681 2009-04-16  Joseph Myers  <joseph@codesourcery.com>
19682
19683         * config/mips/mips.c (mips_rtx_cost_data): Use SOFT_FP_COSTS in
19684         XLR entry.
19685         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC):
19686         Handle -march=xlr.
19687         * config/mips/xlr.md (ir_xlr_alu): Also accept insn types move,
19688         logical and signext.
19689
19690 2009-04-16  Kaz Kojima  <kkojima@gcc.gnu.org>
19691
19692         PR target/39767
19693         * config/sh/predicates.md (arith_operand): Check if the operand
19694         of TRUNCATE is a REG.
19695
19696 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
19697
19698         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
19699         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
19700
19701 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
19702
19703         * tree-iterator.c (tsi_split_statement_list_after,
19704         tsi_split_statement_list_before): Remove.
19705         * tree-iterator.h: Remove the prototypes for
19706         tsi_split_statement_list_after and tsi_split_statement_list_before.
19707
19708 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
19709
19710         * tree-ssa-propagate.c (stmt_makes_single_load): Remove.
19711         * tree-ssa-propagate.h: Remove the prototype for
19712         stmt_makes_single_load.
19713
19714 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
19715
19716         * emit-rtl.c (set_mem_attrs_from_reg): Remove.
19717         * rtl.h: Remove the prototype for set_mem_attrs_from_reg.
19718
19719 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
19720
19721         * tree-iterator.c (EXPR_LAST_BODY): Remove.
19722
19723 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
19724
19725         * except.c (eh_region_outer_p): Remove.
19726         * except.h: Remove the prototype for eh_region_outer_p.
19727
19728 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
19729
19730         * function.c (current_function_assembler_name): Remove.
19731         * function.h: Remove the prototype for
19732         current_function_assembler_name.
19733
19734 2009-04-16  Ian Lance Taylor  <iant@google.com>
19735
19736         * rtlanal.c (alloc_reg_note): New function, broken out of add_reg_note.
19737         (add_reg_note): Call alloc_reg_note.
19738         * rtl.h (alloc_reg_note): Declare.
19739         * combine.c (try_combine): Use alloc_reg_note.
19740         (recog_for_combine, move_deaths): Likewise.
19741         (distribute_notes): Use alloc_reg_note and add_reg_note.
19742         * haifa-sched.c (sched_create_recovery_edges): Use add_reg_note.
19743         * combine-stack-adj.c (adjust_frame_related_expr): Likewise.
19744         * reload1.c (eliminate_regs_1): Use alloc_reg_note.
19745
19746 2009-04-16  Vladimir Makarov  <vmakarov@redhat.com>
19747
19748         PR rtl-optimization/39762
19749         * ira-int.h (ira_register_move_cost, ira_may_move_in_cost,
19750         ira_may_move_out_cost): Add comments about way of their usage.
19751         (ira_get_register_move_cost, ira_get_may_move_cost): New functions.
19752
19753         * ira-conflicts.c (process_regs_for_copy): Use function
19754         ira_get_register_move_cost instead of global
19755         ira_register_move_cost.
19756
19757         * ira-color.c (update_copy_costs, calculate_allocno_spill_cost,
19758         color_pass, move_spill_restore, update_curr_costs): Ditto.
19759
19760         * ira-lives.c (process_single_reg_class_operands): Ditto.
19761
19762         * ira-emit.c (emit_move_list): Ditto.
19763
19764         * ira-costs.c (copy_cost): Don't call ira_init_register_move_cost.
19765         (record_reg_classes): Ditto.  Use functions
19766         ira_get_register_move_cost and ira_get_may_move_cost instead of
19767         global vars ira_register_move_cost, ira_may_move_out_cost and
19768         ira_may_move_in_cost.
19769         (record_address_regs): Don't call ira_init_register_move_cost.
19770         Use function ira_get_may_move_cost instead of global
19771         ira_may_move_in_cost.
19772         (process_bb_node_for_hard_reg_moves): Use function
19773         ira_get_register_move_cost instead of global ira_register_move_cost.
19774         (ira_costs): Don't call ira_init_register_move_cost.
19775
19776 2009-04-16  Richard Guenther  <rguenther@suse.de>
19777
19778         * tree-cfg.c (verify_gimple_assign_binary):
19779         Allow POINTER_PLUS_EXPR-like PLUS_EXPR for vectors.
19780         * ipa-struct-reorg.c (gen_size): Fold the built expressions.
19781         (create_general_new_stmt): Note that this function is broken.
19782
19783 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
19784
19785         * common.opt (fhelp): Add Var(help_flag).
19786         * gcc-plugin.h (plugin_info): Add help.
19787         * plugin.c (plugin_name_args): Add help.
19788         (register_plugin_info): Set plugin->help.
19789         (print_help_one_plugin): New.
19790         (print_plugins_help): New.
19791         * plugin.h (print_plugins_help): New.
19792         * toplev.c (toplev_main): Call print_plugins_help if needed.
19793
19794 2009-04-16  Richard Guenther  <rguenther@suse.de>
19795
19796         * gimple.c (gimple_copy): Do not clear addresses_taken bitmap.
19797         (gimple_ior_addresses_taken_1): New function.
19798         (gimple_ior_addresses_taken): Likewise.
19799         * gimple.h (struct gimple_statement_with_ops_base): Remove
19800         addresses_taken member.
19801         (gimple_ior_addresses_taken): Declare.
19802         (gimple_addresses_taken, gimple_addresses_taken_ptr,
19803         gimple_set_addresses_taken): Remove.
19804         * ipa-reference.c (mark_address): New function.
19805         (scan_stmt_for_static_refs): Use it for marking addresses taken.
19806         * tree-ssa-operands.c (add_to_addressable_set): Rename to ...
19807         (mark_address_taken): ... this.  Just set TREE_ADDRESSABLE.
19808         (gimple_add_to_addresses_taken): Remove.
19809         (get_tmr_operands): Call mark_address_taken.
19810         (get_asm_expr_operands): Likewise.
19811         (get_expr_operands): Likewise.
19812         (build_ssa_operands): Do not clear the addresses_taken bitmap.
19813         (free_stmt_operands): Do not free it.
19814         * tree-ssa.c (delete_tree_ssa): Likewise.
19815         (execute_update_addresses_taken): Use gimple_ior_addresses_taken.
19816
19817 2009-04-16  Richard Guenther  <rguenther@suse.de>
19818
19819         * gimple.h (walk_stmt_load_store_addr_ops): Declare.
19820         (walk_stmt_load_store_ops): Likewise.
19821         * gimple.c (get_base_loadstore): New function.
19822         (walk_stmt_load_store_addr_ops): Likewise.
19823         (walk_stmt_load_store_ops): Likewise.
19824         * ipa-pure-const.c (check_op): Simplify.
19825         (check_load, check_store): New functions.
19826         (check_stmt): Use walk_stmt_load_store_ops.
19827         * ipa-reference.c (mark_load): Adjust signature.
19828         (mark_store): Likewise.
19829         (scan_stmt_for_static_refs): Use walk_stmt_load_store_addr_ops.
19830
19831 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
19832
19833         * gcc-plugin.h (plugin_event): Add PLUGIN_INFO.
19834         (plugin_info): New.
19835         * opts.c (common_handle_option): Don't call print_version.
19836         * plugin.c (plugin_name_args): Add version.
19837         (register_plugin_info): New.
19838         (register_callback): Handle PLUGIN_INFO.
19839         (try_init_one_plugin): New.
19840         (init_one_plugin): Use try_init_one_plugin. Only free plugin_name_args
19841         if failed to init.
19842         (finalize_one_plugin): New.
19843         (finalize_plugins): New.
19844         (print_one_plugin): New.
19845         (print_plugins_versions): New.
19846         * plugin.h (print_plugins_versions): New.
19847         (finalize_plugins): New.
19848         * toplev.c (compile_file): Don't call initialize_plugins.
19849         (print_version): Call print_plugins_versions.
19850         (toplev_main): Call initialize_plugins. Print version if needed.
19851         Call finalize_plugins.
19852
19853 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
19854
19855         * common.opt (fversion): New.
19856         * gcc.c (print_version): New.
19857         (process_command): Don't print the version. Just set print_version.
19858         (main): Print version. Call subprocesses if print_version and
19859         verbose_flag are set.
19860         * opts.c (common_handle_option): Handle OPT_fversion.
19861
19862 2009-04-16  Richard Guenther  <rguenther@suse.de>
19863             Ira Rosen  <irar@il.ibm.com>
19864
19865         PR tree-optimization/39698
19866         * tree-vect-loop.c (get_initial_def_for_reduction): Use the
19867         type of the reduction variable.  Only generate the def if
19868         it is needed.
19869
19870         * omp-low.c (expand_omp_for_generic): When converting to a pointer
19871         make sure to first convert to an integer of the same precision.
19872         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer): Retain
19873         the type of the evolution correctly in computing the new
19874         induction variable base.
19875
19876 2009-04-16  Richard Guenther  <rguenther@suse.de>
19877
19878         PR middle-end/39625
19879         * tree-cfg.c (make_blocks): Split statements with to-be
19880         abnormal SSA names on the lhs.
19881
19882 2009-04-16  Paolo Bonzini  <bonzini@gnu.org>
19883
19884         * c-common.c (vector_targets_convertible_p, vector_types_convertible_p):
19885         Use TYPE_VECTOR_OPAQUE instead of targetm.vector_opaque_p.
19886         * c-typeck.c (really_start_incremental_init): Likewise.
19887         * target-def.h (TARGET_VECTOR_OPAQUE_P): Remove.
19888         (TARGET_INITIALIZER): Remove it.
19889         * target.h (struct target): Remove vector_opaque_p.
19890         * tree.c (build_opaque_vector_type): New.
19891         * tree.h (TYPE_VECTOR_OPAQUE): New.
19892         (build_opaque_vector_type): Declare.
19893         * doc/tm.texi (TARGET_VECTOR_OPAQUE_P): Remove.
19894         * config/rs6000/rs6000.c (build_opaque_vector_type,
19895         rs6000_is_vector_type, TARGET_VECTOR_OPAQUE_P): Remove.
19896         (rs6000_init_builtins): Use build_opaque_vector_type for
19897         opaque_V4SI_type_node.
19898
19899 2009-04-15  Catherine Moore  <clm@codesourcery.com>
19900
19901         * debug.h (set_name):  Declare.
19902         * dwarf2out.c (dwarf2out_set_name): Declare.
19903         (dwarf2_debug_hooks): Add set_name.
19904         (find_AT_string): New.
19905         (add_AT_string): Call find_AT_string.
19906         (dwarf2out_set_name): New.
19907         * cp/decl.c (grokdeclarator): Call set_name.
19908         * vmsdbgout.c (vmsdbg_debug_hooks): Add set_name_debug_nothing.
19909         * debug.c (do_nothing_debug_hooks):  Likewise.
19910         * dbxout.c (dbx_debug_hooks): Likewise.
19911         * sdbout.c (sdb_debug_hooks): Likewise.
19912
19913 2009-04-15  Michael Eager  <eager@eagercon.com>
19914
19915         * config/rs6000/rs6000.c (rs6000_function_value): Set function return
19916         reg for single-precision FPU.
19917         * config/rs6000/rs6000.md (movsi_internal1): Only for
19918         !TARGET_SINGLE_FPU.
19919         (movsi_internal1_single): New. Add pattern to move SI values to/from
19920         single-precision FP regs.
19921
19922 2009-04-15  Richard Guenther  <rguenther@suse.de>
19923
19924         * omp-low.c (lower_rec_input_clauses): Build correct address
19925         expressions.
19926         (expand_omp_for_generic): Fix multiplication type.
19927         * tree-loop-distribution.c (build_size_arg): Build a size_t argument.
19928         (generate_memset_zero): Fix types.
19929         * tree-profile.c (prepare_instrumented_value): Correctly
19930         widen a pointer.
19931
19932 2009-04-15  Ian Lance Taylor  <iant@google.com>
19933
19934         * c.opt (Wenum-compare): Enable for C and Objc.  Initialize to -1.
19935         * c-opts.c (c_common_handle_option): For C, set warn_enum_compare
19936         for -Wall and for -Wc++-compat.
19937         (c_common_post_options): For C++, set warn_enum_compare if not
19938         already set.
19939         * c-tree.h (struct c_expr): Add field original_type.
19940         (build_external_ref): Update declaration.
19941         * c-parser.c (c_parser_braced_init): Set original_type.
19942         (c_parser_initelt): Likewise.
19943         (c_parser_expr_no_commas): Likewise.
19944         (c_parser_conditional_expression): Likewise.
19945         (c_parser_cast_expression): Likewise.
19946         (c_parser_unary_expression): Likewise.  Pull setting of
19947         original_code to top of function.
19948         (c_parser_sizeof_expression): Set original_type.
19949         (c_parser_alignof_expression): Likewise.
19950         (c_parser_postfix_expression): Likewise.  Pull setting of
19951         original_code to top of function.
19952         (c_parser_postfix_expression_after_paren_type): Set original_type.
19953         (c_parser_postfix_expression_after_primary): Likewise.
19954         (c_parser_expression): Likewise.
19955         * c-typeck.c (build_external_ref): Add type parameter.  Change all
19956         callers.
19957         (c_expr_sizeof_expr): Set original_type field.
19958         (parser_build_unary_op): Likewise.
19959         (parser_build_binary_op): Likewise.  Optionally warn about
19960         comparisons of enums of different types.
19961         (digest_init): Set original_type field.
19962         (really_start_incremental_init): Likewise.
19963         (push_init_level, pop_init_level): Likewise.
19964         * doc/invoke.texi (Warning Options): -Wenum-compare now
19965         supported in C.
19966
19967 2009-04-15  Richard Guenther  <rguenther@suse.de>
19968
19969         * tree-ssa-pre.c (eliminate): When replacing a PHI node carry
19970         out a necessary conversion.
19971         * tree-ssa-sccvn.c (run_scc_vn): Also assign value-ids to
19972         names we didn't value number.
19973         * tree-mudflap.c (mf_build_check_statement_for): Use correct types.
19974
19975 2009-04-15  Richard Guenther  <rguenther@suse.de>
19976
19977         PR tree-optimization/39764
19978         * tree-ssa-ccp.c (get_value): Canonicalize value with
19979         canonicalize_float_value.
19980
19981 2009-04-15  Jan Hubicka  <jh@suse.cz>
19982
19983         * builtins.def (va_start, va_end, va_copy): Fix my previous commit.
19984         Wrong version of patch.
19985
19986 2009-04-15  Jan Hubicka  <jh@suse.cz>
19987
19988         * builtins.def (va_start, va_end, va_copy): Mark nothrow.
19989
19990 2009-04-15  Nathan Sidwell  <nathan@codesourcery.com>
19991
19992         * config/rs6000/rs6000.c (rs6000_init_builtins): Set TYPE_NAME of
19993         our distinct integral and vector types.
19994
19995 2009-04-15  Rafael Avila de Espindola  <espindola@google.com>
19996
19997         * class.c (build_vtbl_ref_1): Remove call to assemble_external.
19998         * init.c (build_vtbl_address): Remove call to assemble_external.
19999
20000 2009-04-14  Daniel Jacobowitz  <dan@codesourcery.com>
20001
20002         * config/rs6000/rs6000.c (rs6000_dwarf_register_span): Fix debug
20003         output for other floating point modes.
20004
20005 2009-04-14  Diego Novillo  <dnovillo@google.com>
20006
20007         * diagnostic.c (diagnostic_report_diagnostic): Do not
20008         warn about loaded plugins for DK_ERROR and DK_WARNING.
20009         * c-decl.c (declspecs_add_type): Move call to
20010         invoke_plugin_callbacks ...
20011         * c-parser.c (c_parser_declspecs): ... here.
20012         * plugin.c (dump_active_plugins): Tidy output.
20013
20014 2009-04-14  Diego Novillo  <dnovillo@google.com>
20015             Le-Chun Wu  <lcwu@google.com>
20016
20017         * configure.ac: Add --enable-plugin support.
20018         Define ENABLE_PLUGIN and PLUGINLIBS when specified.
20019         * Makefile.in (PLUGIN_H): Define.
20020         Export ENABLE_PLUGIN and GMPINC to site.exp.
20021         Add PLUGINLIBS to link command.
20022         Add/modify dependencies for plugin.o and files including plugin.h.
20023         (plugin.o): New.
20024         * config.in: Regenerate.
20025
20026         * opts.c (common_handle_option): Handle OPT_fplugin_ and
20027         OPT_fplugin_arg_.
20028
20029 2009-04-14  Le-Chun Wu  <lcwu@google.com>
20030
20031         * tree-pass.h (register_one_dump_file): Add a prototype for
20032         register_one_dump_file.
20033         * toplev.c (compile_file): Call initialize_plugins.
20034         (do_compile): Call invoke_plugin_callbacks.
20035         (toplev_main): Call invoke_plugin_callbacks.
20036         * common.opt: Add -fplugin= and -fplugin-arg-.
20037         * gcc-plugin.h: New public header file for plugins to include.
20038         * plugin.c: New source file.
20039         * plugin.h: New internal header file.
20040         * passes.c (register_one_dump_file): Make it external.
20041
20042         * c-parser.c (c_parser_declspecs): Call invoke_plugin_callbacks.
20043
20044 2009-04-14  Diego Novillo  <dnovillo@google.com>
20045
20046         * doc/plugins.texi: New.
20047         * doc/gccint.texi: Add reference to Plugins chapter.
20048         * doc/invoke.texi: Document -fplugin and -fplugin-arg
20049         * diagnostic.c (diagnostic_report_diagnostic): Warn about
20050         loaded plugins, if any.
20051         * timevar.def (TV_PLUGIN_INIT): Define.
20052         (TV_PLUGIN_RUN): Define.
20053         * plugin.c: Include timevar.h
20054         (plugins_active_p): New.
20055         (dump_active_plugins): New.
20056         (debug_active_plugins): New.
20057
20058 2009-04-14  Joseph Myers  <joseph@codesourcery.com>
20059
20060         * config/sol2.h (LINK_ARCH32_SPEC_BASE): Use %R with absolute
20061         library paths.
20062         * config/sparc/sol2-bi.h (LINK_ARCH64_SPEC_BASE): Likewise.
20063
20064 2009-04-14  Kazu Hirata  <kazu@codesourcery.com>
20065
20066         * config/arm/arm.c (arm_rtx_costs_1): Treat a minus with a shift
20067         the same as a minus without a shift.
20068
20069 2009-04-14  Nick Clifton  <nickc@redhat.com>
20070
20071         * config/stormy16/stormy16.md (ineqbranch_1): Do not assume that
20072         comparisons with small integers will always produce a short
20073         branch.
20074
20075 2009-04-14  Rafael Avila de Espindola  <espindola@google.com>
20076
20077         Merge:
20078         2008-12-19  Diego Novillo  <dnovillo@google.com>
20079
20080         * cgraph.c (dump_cgraph_node): Show memory address of NODE.
20081
20082 2009-04-14  Richard Guenther  <rguenther@suse.de>
20083
20084         * tree-cfg.c (verify_gimple_assign_unary): Adjust vector code
20085         verification.
20086         (verify_gimple_assign_binary): Likewise.  Handle shifts and
20087         rotates correctly.
20088         (verify_gimple_phi): Print the mismatched argument position.
20089         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer):
20090         Fix types.
20091         (vect_update_init_of_dr): Likewise.
20092         * matrix-reorg.c (transform_access_sites): Do what the
20093         comment suggests.
20094         * omp-low.c (expand_omp_atomic_pipeline): Use the correct types.
20095
20096 2009-04-13  Michael Eager  <eager@eagercon.com>
20097
20098         * config/rs6000/rs6000-c.c: generate defines if rs6000_xilinx_fpu:
20099         _XFPU, _XFPU_SP_LITE, _XFPU_SP_FULL, _XFPU_DP_LITE, _XFPU_DP_FULL
20100         * config/rs6000/xilinx.h: New.  Spec for powerpc-xilinx-eabi
20101         * config.gcc (powerpc-xilinx-eabi): add xilinx.h to tm_file,
20102         remove duplicate config
20103
20104 2009-04-13  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
20105
20106         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Dump
20107         file_name:line_number type locator of the call site.
20108
20109 2009-04-13  Vladimir Makarov  <vmakarov@redhat.com>
20110
20111         * genautomata.c: Put blank after comma.
20112         (automaton_decls): New.
20113         (struct unit_usage): Add comments to member next.
20114         (store_alt_unit_usage): Keep the list ordered.
20115         (unit_present_on_list_p, equal_alternatives_p): New.
20116         (check_regexp_units_distribution): Check units distribution
20117         correctness correctly.
20118         (main): Don't write automata if error is found.  Return correct
20119         exit code.
20120
20121         * config/m68k/cf.md (cfv4_ds): Remove.
20122         (cfv4_pOEP1, cfv4_sOEP1, cfv4_pOEP2,cfv4_sOEP2, cfv4_pOEP3,
20123         cfv4_sOEP3): Assign to cfv4_oep instead of cfv4_ds.
20124
20125         * config/rs6000/power4.md (lsuq_power4, iq_power4, fpq_power4,
20126         power4-load-ext, power4-store, power4-store-update,
20127         power4-fpstore, power4-fpstore-update, power4-two, power4-three,
20128         power4-insert, power4-compare, power4-lmul-cmp, power4-imul-cmp,
20129         power4-lmul, , power4-imul, power4-imul3, power4-sdiv,
20130         power4-sqrt, power4-isync): Modify reservation to make correct
20131         unit distribution to automata.
20132
20133         * config/rs6000/power5.md (iq_power5, fpq_power5, power5-store,
20134         power5-store-update, power5-two, power5-three, power5-lmul,
20135         power5-imul, power5-imul3, power5-sdiv, power5-sqrt): Ditto.
20136
20137 2009-04-13  Adam Nemet  <anemet@caviumnetworks.com>
20138
20139         * except.c (pass_set_nothrow_function_flags): Set name and add
20140         TODO_dump_func.
20141         (set_nothrow_function_flags): Mention in the dump file when
20142         changing a function to nothrow.
20143
20144 2009-04-13  Ozkan Sezer  <sezeroz@gmail.com>
20145
20146         PR/39066
20147         * gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Use __SIZE_TYPE__
20148         instead of unsigned long.
20149
20150 2009-04-13  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
20151
20152         * config/arm/arm.c (return_used_this_function): Remove.
20153         (arm_output_function_prologue): Remove use of
20154         return_used_this_function.
20155         (output_return_instruction): Replace use of
20156         return_used_this_function
20157         by cfun->machine->return_used_this_function.
20158         (arm_output_epilogue): Likewise.
20159         (arm_output_function_epilogue): Likewise.
20160         (thumb_unexpanded_epilogue): Likewise.
20161         * config/arm/arm.h (struct machine_function):
20162         New member return_used_this_function.
20163
20164 2009-04-12  Mark Mitchell  <mark@codesourcery.com>
20165
20166         * doc/install.texi: Correct description of default directory for
20167         --with-gxx-include-dir.
20168
20169 2009-04-12  Eric Botcazou  <ebotcazou@adacore.com>
20170
20171         * fold-const.c (build_range_check): Properly deal with enumeral and
20172         boolean base types.
20173
20174 2009-04-12  Steven Bosscher  <steven@gcc.gnu.org>
20175
20176         * doc/invoke.texi (max_gcse_passes): Remove documentation.
20177         * params.def (PARAM_MAX_GCSE_PASSES): Remove.
20178         * params.h (MAX_GCSE_PASSES): Remove.
20179         * gcse.c (gcse_main): Run CPROP1, PRE or HOIST, and CPROP2
20180         in sequence.  Remove ability to run multiple passes.
20181         (bypass_jumps): Report run as third CPROP pass.
20182
20183 2009-04-12  Adam Nemet  <anemet@caviumnetworks.com>
20184
20185         PR middle-end/39651
20186         * except.c (can_throw_external): Look at each insn in a SEQUENCE
20187         when deciding whether the whole SEQUENCE can throw.
20188
20189 2009-04-12  Uros Bizjak  <ubizjak@gmail.com>
20190
20191         PR target/39740
20192         * config/alpha/predicates.md (local_symbolic_operand): Return 1 for
20193         offseted label references.
20194
20195 2009-04-11  Jan Hubicka  <jh@suse.cz>
20196
20197         * tree-ssa-pre.c (eliminate): Fix call of update_stmt.
20198
20199 2009-04-11  Richard Guenther  <rguenther@suse.de>
20200
20201         PR middle-end/39732
20202         * tree-inline.c (declare_return_variable): Mark DECL_BY_REFERENCE
20203         return variables as TREE_ADDRESSABLE.
20204
20205 2009-04-11  Richard Guenther  <rguenther@suse.de>
20206
20207         PR tree-optimization/39713
20208         * tree-ssa-sccvn.c (vn_get_expr_for): Make sure built
20209         reference trees have SSA_NAME operands.
20210
20211 2009-04-11  Richard Guenther  <rguenther@suse.de>
20212
20213         PR c/39712
20214         * c-gimplify.c (c_gimplify_expr): Adjust check for mismatched
20215         address expressions.
20216
20217 2009-04-11  Dave Korn  <dave.korn.cygwin@gmail.com>
20218
20219         * config/i386/cygwin-stdint.h (INT_LEAST32_TYPE):  Update to
20220         match changes in Cygwin 1.7
20221         (UINT_LEAST32_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE,
20222         UINT_FAST16_TYPE, UINT_FAST32_TYPE):  Likewise.
20223
20224 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
20225
20226         PR tree-optimization/39701
20227         * doc/invoke.texi (Optimization Options): Document change in
20228         meaning and initialization of -fdelete-null-pointer-checks.
20229
20230 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
20231
20232         PR middle-end/39701
20233         * common.opt (-fdelete-null-pointer-checks): Initialize to 1.
20234
20235         * opts.c (decode_options): Don't set flag_delete_null_pointer_checks
20236         here.
20237
20238         * doc/invoke.texi: Update -fdelete-null-pointer-checks.
20239
20240 2009-04-10  Chao-ying Fu  <fu@mips.com>
20241
20242         * doc/tm.texi (Instruction Output): Document
20243         TARGET_ASM_FINAL_POSTSCAN_INSN.
20244         * target.h (final_postscan_insn): New field in asm_out.
20245         * target-def.h (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
20246         (TARGET_ASM_OUT): Add TARGET_ASM_FINAL_POSTSCAN_INSN.
20247         * final.c (final_scan_insn): Call
20248         targetm.asm_out.final_postscan_insn after outputting
20249         an asm macro and a normal instruction.
20250
20251         * config/mips/mips.h (FINAL_PRESCAN_INSN): New define.
20252         * config/mips/mips-protos.h (mips_final_prescan_insn): Declare.
20253         * config/mips/mips.c (mips_at_reg_p): New for_each_rtx callback.
20254         (mips_final_prescan_insn, mips_final_postscan_insn): New functions.
20255         (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
20256
20257 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
20258
20259         PR middle-end/39701
20260         * fold-const.c (tree_single_nonzero_warnv_p): Pass non-static
20261         variables as non-NULL even with -fdelete-null-pointer-checks.
20262
20263 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
20264
20265         * config/rs6000/darwin-vecsave.asm: Remove extra "*/".
20266
20267 2009-04-09  H.J. Lu  <hongjiu.lu@intel.com>
20268
20269         PR target/39678
20270         * config/i386/i386.c (classify_argument): Handle SCmode with
20271         (bit_offset % 64) != 0.
20272
20273 2009-04-09  Sandra Loosemore  <sandra@codesourcery.com>
20274
20275         * doc/invoke.texi (Optimize Options): Add cross-reference to
20276         -Q --help=optimizers examples.
20277
20278 2009-04-10  Ben Elliston  <bje@au.ibm.com>
20279
20280         PR target/36800
20281         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Do not set
20282         regalign for the reg == fpr and TDmode case.
20283
20284 2009-04-09  David Ayers  <ayers@fsfe.org>
20285
20286         PR objc/29200
20287         * objc/objc-act.c (warn_with_method): Remove helper function.
20288         (check_duplicates): Call warning and inform directly.
20289         (really_start_method): Likewise.
20290
20291 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
20292
20293         * expmed.c (expand_divmod): Always use a comparison for a division
20294         by a large unsigned integer.
20295
20296         * fold-const.c (tree_single_nonzero_warnv_p): Always treat decls
20297         for things others than variables or functions as nonzero.
20298
20299 2009-04-09  Nick Clifton  <nickc@redhat.com>
20300
20301         * unwind-compat.c: Change copyright header to refer to version
20302         3 of the GNU General Public License with version 3.1 of the
20303         GCC Runtime Library Exception and to point readers at the
20304         COPYING3 and COPYING3.RUNTIME files and the FSF's license web page.
20305         * config/alpha/crtfastmath.c: Likewise.
20306         * config/alpha/linux-unwind.h: Likewise.
20307         * config/alpha/qrnnd.asm: Likewise.
20308         * config/alpha/vms-crt0-64.c: Likewise.
20309         * config/alpha/vms-crt0.c: Likewise.
20310         * config/alpha/vms-dwarf2.asm: Likewise.
20311         * config/alpha/vms-dwarf2eh.asm: Likewise.
20312         * config/alpha/vms-psxcrt0-64.c: Likewise.
20313         * config/alpha/vms-psxcrt0.c: Likewise.
20314         * config/alpha/vms_tramp.asm: Likewise.
20315         * config/arc/initfini.c: Likewise.
20316         * config/arc/lib1funcs.asm: Likewise.
20317         * config/arm/bpabi-v6m.S: Likewise.
20318         * config/arm/bpabi.S: Likewise.
20319         * config/arm/bpabi.c: Likewise.
20320         * config/arm/crti.asm: Likewise.
20321         * config/arm/crtn.asm: Likewise.
20322         * config/arm/ieee754-df.S: Likewise.
20323         * config/arm/ieee754-sf.S: Likewise.
20324         * config/arm/lib1funcs.asm: Likewise.
20325         * config/arm/libunwind.S: Likewise.
20326         * config/arm/linux-atomic.c: Likewise.
20327         * config/arm/mmintrin.h: Likewise.
20328         * config/arm/pr-support.c: Likewise.
20329         * config/arm/unaligned-funcs.c: Likewise.
20330         * config/arm/unwind-arm.c: Likewise.
20331         * config/arm/unwind-arm.h: Likewise.
20332         * config/avr/libgcc.S: Likewise.
20333         * config/bfin/crti.s: Likewise.
20334         * config/bfin/crtlibid.s: Likewise.
20335         * config/bfin/crtn.s: Likewise.
20336         * config/bfin/lib1funcs.asm: Likewise.
20337         * config/bfin/linux-unwind.h: Likewise.
20338         * config/cris/arit.c: Likewise.
20339         * config/cris/cris_abi_symbol.c: Likewise.
20340         * config/darwin-64.c: Likewise.
20341         * config/darwin-crt2.c: Likewise.
20342         * config/darwin-crt3.c: Likewise.
20343         * config/darwin.h: Likewise.
20344         * config/dbxelf.h: Likewise.
20345         * config/dfp-bit.c: Likewise.
20346         * config/dfp-bit.h: Likewise.
20347         * config/elfos.h: Likewise.
20348         * config/fixed-bit.c: Likewise.
20349         * config/fixed-bit.h: Likewise.
20350         * config/fp-bit.c: Likewise.
20351         * config/fp-bit.h: Likewise.
20352         * config/fr30/crti.asm: Likewise.
20353         * config/fr30/crtn.asm: Likewise.
20354         * config/fr30/lib1funcs.asm: Likewise.
20355         * config/freebsd-spec.h: Likewise.
20356         * config/frv/cmovd.c: Likewise.
20357         * config/frv/cmovh.c: Likewise.
20358         * config/frv/cmovw.c: Likewise.
20359         * config/frv/frvbegin.c: Likewise.
20360         * config/frv/frvend.c: Likewise.
20361         * config/frv/lib1funcs.asm: Likewise.
20362         * config/glibc-stdint.h: Likewise.
20363         * config/h8300/clzhi2.c: Likewise.
20364         * config/h8300/crti.asm: Likewise.
20365         * config/h8300/crtn.asm: Likewise.
20366         * config/h8300/ctzhi2.c: Likewise.
20367         * config/h8300/fixunssfsi.c: Likewise.
20368         * config/h8300/lib1funcs.asm: Likewise.
20369         * config/h8300/parityhi2.c: Likewise.
20370         * config/h8300/popcounthi2.c: Likewise.
20371         * config/i386/ammintrin.h: Likewise.
20372         * config/i386/att.h: Likewise.
20373         * config/i386/avxintrin.h: Likewise.
20374         * config/i386/biarch64.h: Likewise.
20375         * config/i386/bmmintrin.h: Likewise.
20376         * config/i386/cpuid.h: Likewise.
20377         * config/i386/cross-stdarg.h: Likewise.
20378         * config/i386/crtfastmath.c: Likewise.
20379         * config/i386/crtprec.c: Likewise.
20380         * config/i386/cygming-crtbegin.c: Likewise.
20381         * config/i386/cygming-crtend.c: Likewise.
20382         * config/i386/cygwin.asm: Likewise.
20383         * config/i386/emmintrin.h: Likewise.
20384         * config/i386/gmm_malloc.h: Likewise.
20385         * config/i386/gthr-win32.c: Likewise.
20386         * config/i386/i386.h: Likewise.
20387         * config/i386/immintrin.h: Likewise.
20388         * config/i386/linux-unwind.h: Likewise.
20389         * config/i386/linux64.h: Likewise.
20390         * config/i386/mm3dnow.h: Likewise.
20391         * config/i386/mmintrin-common.h: Likewise.
20392         * config/i386/mmintrin.h: Likewise.
20393         * config/i386/nmmintrin.h: Likewise.
20394         * config/i386/pmm_malloc.h: Likewise.
20395         * config/i386/pmmintrin.h: Likewise.
20396         * config/i386/smmintrin.h: Likewise.
20397         * config/i386/sol2-c1.asm: Likewise.
20398         * config/i386/sol2-ci.asm: Likewise.
20399         * config/i386/sol2-cn.asm: Likewise.
20400         * config/i386/sol2-gc1.asm: Likewise.
20401         * config/i386/tmmintrin.h: Likewise.
20402         * config/i386/unix.h: Likewise.
20403         * config/i386/w32-unwind.h: Likewise.
20404         * config/i386/wmmintrin.h: Likewise.
20405         * config/i386/x86-64.h: Likewise.
20406         * config/i386/x86intrin.h: Likewise.
20407         * config/i386/xmmintrin.h: Likewise.
20408         * config/ia64/crtbegin.asm: Likewise.
20409         * config/ia64/crtend.asm: Likewise.
20410         * config/ia64/crtfastmath.c: Likewise.
20411         * config/ia64/crti.asm: Likewise.
20412         * config/ia64/crtn.asm: Likewise.
20413         * config/ia64/fde-glibc.c: Likewise.
20414         * config/ia64/lib1funcs.asm: Likewise.
20415         * config/ia64/linux-unwind.h: Likewise.
20416         * config/ia64/quadlib.c: Likewise.
20417         * config/ia64/unwind-ia64.c: Likewise.
20418         * config/linux.h: Likewise.
20419         * config/m32c/m32c-lib1.S: Likewise.
20420         * config/m32c/m32c-lib2-trapv.c: Likewise.
20421         * config/m32c/m32c-lib2.c: Likewise.
20422         * config/m32r/initfini.c: Likewise.
20423         * config/m68hc11/larith.asm: Likewise.
20424         * config/m68hc11/m68hc11-crt0.S: Likewise.
20425         * config/m68k/cf.md: Likewise.
20426         * config/m68k/crti.s: Likewise.
20427         * config/m68k/crtn.s: Likewise.
20428         * config/m68k/lb1sf68.asm: Likewise.
20429         * config/m68k/linux-unwind.h: Likewise.
20430         * config/mcore/crti.asm: Likewise.
20431         * config/mcore/crtn.asm: Likewise.
20432         * config/mcore/lib1.asm: Likewise.
20433         * config/mips/linux-unwind.h: Likewise.
20434         * config/mips/loongson.h: Likewise.
20435         * config/mips/mips16.S: Likewise.
20436         * config/mmix/crti.asm: Likewise.
20437         * config/mmix/crtn.asm: Likewise.
20438         * config/pa/fptr.c: Likewise.
20439         * config/pa/hpux-unwind.h: Likewise.
20440         * config/pa/lib2funcs.asm: Likewise.
20441         * config/pa/linux-atomic.c: Likewise.
20442         * config/pa/linux-unwind.h: Likewise.
20443         * config/pa/milli64.S: Likewise.
20444         * config/pa/quadlib.c: Likewise.
20445         * config/pa/stublib.c: Likewise.
20446         * config/picochip/libgccExtras/adddi3.asm: Likewise.
20447         * config/picochip/libgccExtras/ashlsi3.asm: Likewise.
20448         * config/picochip/libgccExtras/ashlsi3.c: Likewise.
20449         * config/picochip/libgccExtras/ashrsi3.asm: Likewise.
20450         * config/picochip/libgccExtras/ashrsi3.c: Likewise.
20451         * config/picochip/libgccExtras/cmpsi2.asm: Likewise.
20452         * config/picochip/libgccExtras/divmod15.asm: Likewise.
20453         * config/picochip/libgccExtras/divmodhi4.asm: Likewise.
20454         * config/picochip/libgccExtras/divmodsi4.asm: Likewise.
20455         * config/picochip/libgccExtras/longjmp.asm: Likewise.
20456         * config/picochip/libgccExtras/lshrsi3.asm: Likewise.
20457         * config/picochip/libgccExtras/lshrsi3.c: Likewise.
20458         * config/picochip/libgccExtras/parityhi2.asm: Likewise.
20459         * config/picochip/libgccExtras/popcounthi2.asm: Likewise.
20460         * config/picochip/libgccExtras/setjmp.asm: Likewise.
20461         * config/picochip/libgccExtras/subdi3.asm: Likewise.
20462         * config/picochip/libgccExtras/ucmpsi2.asm: Likewise.
20463         * config/picochip/libgccExtras/udivmodhi4.asm: Likewise.
20464         * config/picochip/libgccExtras/udivmodsi4.asm: Likewise.
20465         * config/rs6000/750cl.h: Likewise.
20466         * config/rs6000/altivec.h: Likewise.
20467         * config/rs6000/biarch64.h: Likewise.
20468         * config/rs6000/crtresfpr.asm: Likewise.
20469         * config/rs6000/crtresgpr.asm: Likewise.
20470         * config/rs6000/crtresxfpr.asm: Likewise.
20471         * config/rs6000/crtresxgpr.asm: Likewise.
20472         * config/rs6000/crtsavfpr.asm: Likewise.
20473         * config/rs6000/crtsavgpr.asm: Likewise.
20474         * config/rs6000/darwin-asm.h: Likewise.
20475         * config/rs6000/darwin-fallback.c: Likewise.
20476         * config/rs6000/darwin-fpsave.asm: Likewise.
20477         * config/rs6000/darwin-ldouble.c: Likewise.
20478         * config/rs6000/darwin-tramp.asm: Likewise.
20479         * config/rs6000/darwin-unwind.h: Likewise.
20480         * config/rs6000/darwin-vecsave.asm: Likewise.
20481         * config/rs6000/darwin-world.asm: Likewise.
20482         * config/rs6000/e500crtres32gpr.asm: Likewise.
20483         * config/rs6000/e500crtres64gpr.asm: Likewise.
20484         * config/rs6000/e500crtres64gprctr.asm: Likewise.
20485         * config/rs6000/e500crtrest32gpr.asm: Likewise.
20486         * config/rs6000/e500crtrest64gpr.asm: Likewise.
20487         * config/rs6000/e500crtresx32gpr.asm: Likewise.
20488         * config/rs6000/e500crtresx64gpr.asm: Likewise.
20489         * config/rs6000/e500crtsav32gpr.asm: Likewise.
20490         * config/rs6000/e500crtsav64gpr.asm: Likewise.
20491         * config/rs6000/e500crtsav64gprctr.asm: Likewise.
20492         * config/rs6000/e500crtsavg32gpr.asm: Likewise.
20493         * config/rs6000/e500crtsavg64gpr.asm: Likewise.
20494         * config/rs6000/e500crtsavg64gprctr.asm: Likewise.
20495         * config/rs6000/eabi-ci.asm: Likewise.
20496         * config/rs6000/eabi-cn.asm: Likewise.
20497         * config/rs6000/eabi.asm: Likewise.
20498         * config/rs6000/linux-unwind.h: Likewise.
20499         * config/rs6000/linux64.h: Likewise.
20500         * config/rs6000/paired.h: Likewise.
20501         * config/rs6000/paired.md: Likewise.
20502         * config/rs6000/ppc64-fp.c: Likewise.
20503         * config/rs6000/ppu_intrinsics.h: Likewise.
20504         * config/rs6000/rs6000.h: Likewise.
20505         * config/rs6000/si2vmx.h: Likewise.
20506         * config/rs6000/sol-ci.asm: Likewise.
20507         * config/rs6000/sol-cn.asm: Likewise.
20508         * config/rs6000/spe.h: Likewise.
20509         * config/rs6000/spu2vmx.h: Likewise.
20510         * config/rs6000/sysv4.h: Likewise.
20511         * config/rs6000/tramp.asm: Likewise.
20512         * config/rs6000/vec_types.h: Likewise.
20513         * config/s390/linux-unwind.h: Likewise.
20514         * config/s390/tpf-unwind.h: Likewise.
20515         * config/score/crti.asm: Likewise.
20516         * config/score/crtn.asm: Likewise.
20517         * config/sh/crt1.asm: Likewise.
20518         * config/sh/crti.asm: Likewise.
20519         * config/sh/crtn.asm: Likewise.
20520         * config/sh/divtab-sh4-300.c: Likewise.
20521         * config/sh/divtab-sh4.c: Likewise.
20522         * config/sh/divtab.c: Likewise.
20523         * config/sh/lib1funcs-4-300.asm: Likewise.
20524         * config/sh/lib1funcs-Os-4-200.asm: Likewise.
20525         * config/sh/lib1funcs.asm: Likewise.
20526         * config/sh/lib1funcs.h: Likewise.
20527         * config/sh/linux-atomic.asm: Likewise.
20528         * config/sh/linux-unwind.h: Likewise.
20529         * config/sh/shmedia.h: Likewise.
20530         * config/sh/sshmedia.h: Likewise.
20531         * config/sh/ushmedia.h: Likewise.
20532         * config/sparc/crtfastmath.c: Likewise.
20533         * config/sparc/linux-unwind.h: Likewise.
20534         * config/sparc/sol2-c1.asm: Likewise.
20535         * config/sparc/sol2-ci.asm: Likewise.
20536         * config/sparc/sol2-cn.asm: Likewise.
20537         * config/spu/divmodti4.c: Likewise.
20538         * config/spu/divv2df3.c: Likewise.
20539         * config/spu/float_disf.c: Likewise.
20540         * config/spu/float_unsdidf.c: Likewise.
20541         * config/spu/float_unsdisf.c: Likewise.
20542         * config/spu/float_unssidf.c: Likewise.
20543         * config/spu/mfc_multi_tag_release.c: Likewise.
20544         * config/spu/mfc_multi_tag_reserve.c: Likewise.
20545         * config/spu/mfc_tag_release.c: Likewise.
20546         * config/spu/mfc_tag_reserve.c: Likewise.
20547         * config/spu/mfc_tag_table.c: Likewise.
20548         * config/spu/multi3.c: Likewise.
20549         * config/spu/spu_internals.h: Likewise.
20550         * config/spu/spu_intrinsics.h: Likewise.
20551         * config/spu/spu_mfcio.h: Likewise.
20552         * config/spu/vec_types.h: Likewise.
20553         * config/spu/vmx2spu.h: Likewise.
20554         * config/stormy16/stormy16-lib2.c: Likewise.
20555         * config/svr4.h: Likewise.
20556         * config/sync.c: Likewise.
20557         * config/v850/lib1funcs.asm: Likewise.
20558         * config/vxlib-tls.c: Likewise.
20559         * config/vxlib.c: Likewise.
20560         * config/vxworks-dummy.h: Likewise.
20561         * config/xtensa/crti.asm: Likewise.
20562         * config/xtensa/crtn.asm: Likewise.
20563         * config/xtensa/ieee754-df.S: Likewise.
20564         * config/xtensa/ieee754-sf.S: Likewise.
20565         * config/xtensa/lib1funcs.asm: Likewise.
20566         * config/xtensa/lib2funcs.S: Likewise.
20567         * config/xtensa/linux-unwind.h: Likewise.
20568         * config/xtensa/unwind-dw2-xtensa.c: Likewise.
20569         * config/xtensa/unwind-dw2-xtensa.h: Likewise.
20570         * coretypes.h: Likewise.
20571         * crtstuff.c: Likewise.
20572         * defaults.h: Likewise.
20573         * dwarf2.h: Likewise.
20574         * emutls.c: Likewise.
20575         * gbl-ctors.h: Likewise.
20576         * gcov-io.h: Likewise.
20577         * ginclude/float.h: Likewise.
20578         * ginclude/iso646.h: Likewise.
20579         * ginclude/stdarg.h: Likewise.
20580         * ginclude/stdbool.h: Likewise.
20581         * ginclude/stddef.h: Likewise.
20582         * ginclude/stdfix.h: Likewise.
20583         * ginclude/stdint-gcc.h: Likewise.
20584         * ginclude/tgmath.h: Likewise.
20585         * gthr-aix.h: Likewise.
20586         * gthr-dce.h: Likewise.
20587         * gthr-gnat.c: Likewise.
20588         * gthr-gnat.h: Likewise.
20589         * gthr-lynx.h: Likewise.
20590         * gthr-mipssde.h: Likewise.
20591         * gthr-nks.h: Likewise.
20592         * gthr-posix.c: Likewise.
20593         * gthr-posix.h: Likewise.
20594         * gthr-posix95.h: Likewise.
20595         * gthr-rtems.h: Likewise.
20596         * gthr-single.h: Likewise.
20597         * gthr-solaris.h: Likewise.
20598         * gthr-tpf.h: Likewise.
20599         * gthr-vxworks.h: Likewise.
20600         * gthr-win32.h: Likewise.
20601         * gthr.h: Likewise.
20602         * libgcc2.c: Likewise.
20603         * libgcc2.h: Likewise.
20604         * libgcov.c: Likewise.
20605         * tsystem.h: Likewise.
20606         * typeclass.h: Likewise.
20607         * unwind-c.c: Likewise.
20608         * unwind-compat.h: Likewise.
20609         * unwind-dw2-fde-compat.c: Likewise.
20610         * unwind-dw2-fde-darwin.c: Likewise.
20611         * unwind-dw2-fde-glibc.c: Likewise.
20612         * unwind-dw2-fde.c: Likewise.
20613         * unwind-dw2-fde.h: Likewise.
20614         * unwind-dw2.c: Likewise.
20615         * unwind-dw2.h: Likewise.
20616         * unwind-generic.h: Likewise.
20617         * unwind-pe.h: Likewise.
20618         * unwind-sjlj.c: Likewise.
20619         * unwind.inc: Likewise.
20620         * config/arm/neon-gen.ml: Change generated copyright header to
20621         refer to version 3 of the GNU General Public License with
20622         version 3.1 of the GCC Runtime Library Exception and to point
20623         readers at the COPYING3 and COPYING3.RUNTIME files and the
20624         FSF's license web page.
20625         * config/arm/arm_neon.h: Regenerate.
20626
20627 2009-04-09  Jakub Jelinek  <jakub@redhat.com>
20628
20629         * config/cris/cris.md: Change copyright header to refer to version
20630         3 of the GNU General Public License.
20631         * doc/install.texi2html: Change copyright header to refer to version
20632         3 of the GNU General Public License and to point readers at the
20633         COPYING3 file and the FSF's license web page.
20634         * config/vax/linux.h: Likewise.
20635
20636 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
20637
20638         * config/i386/i386.md (cmpcc): New.
20639         * config/i386/sync.md (sync_compare_and_swap*): Set FLAGS_REG.
20640         (sync_compare_and_swap_cc*): Delete.
20641
20642         * config/s390/s390.c (s390_compare_emitted): Remove.
20643         (s390_emit_compare): Handle MODE_CC s390_compare_op0 like
20644         s390_compare_emitted used to be handled.  Assert that modes match.
20645         (s390_emit_compare_and_swap): Use s390_emit_compare, do not
20646         refer to sync_compare_and_swap_ccsi.
20647         * config/s390/s390.h (s390_compare_emitted): Remove.
20648         * config/s390/s390.md (seq): Look for MODE_CC s390_compare_op0
20649         instead of s390_compare_emitted.
20650         (stack_protect_test, sync_compare_and_swap_cc): Set s390_compare_op0
20651         instead of s390_compare_emitted.
20652         * config/s390/s390.md (cmpcc): New.
20653         (sync_compare_and_swapqi, sync_compare_and_swaphi): Clobber
20654         CC_REGNUM, do not pretend it's set.
20655         (sync_compare_and_swap_cc*): Delete.
20656         * config/s390/predicates.md (cc_reg_operand): New.
20657
20658         * expr.c (sync_compare_and_swap_cc): Delete.
20659         * optabs.h (sync_compare_and_swap_cc): Delete.
20660         * optabs.c (prepare_cmp_insn): Ignore which specific CCmode
20661         is being used with can_compare_p.
20662         (emit_cmp_and_jump_insn_1): Likewise when looking in the optab.
20663         (find_cc_set): New.
20664         (expand_bool_compare_and_swap): Do not use sync_compare_and_swap_cc,
20665         look for a MODE_CC set instead.  Use emit_store_flag.
20666         (expand_compare_and_swap_loop): Likewise, with some additional
20667         complication to avoid a force_reg when useless.  Use
20668         emit_cmp_and_jump_insns.
20669         * genopinit.c (optabs): Delete sync_compare_and_swap_cc.
20670         * doc/md.texi (sync_compare_and_swap_cc): Merge with
20671         sync_compare_and_swap documentation.
20672
20673 2009-04-09  Jan Hubicka  <jh@suse.cz>
20674
20675         * except.c (find_prev_try): Break out from ....
20676         (duplicate_eh_regions): ... here; properly update prev_try pointers
20677         when duplication part of tree.
20678         (dump_eh_tree): Improve dumping.
20679         (verify_eh_region): New.
20680         (verify_eh_tree): Use it.
20681
20682 2009-04-06  Richard Guenther  <rguenther@suse.de>
20683
20684         * c-gimplify.c (c_gimplify_expr): Fix the invalid GENERIC
20685         &ARRAY addresses by adjusting their types and prepending
20686         a conversion.
20687         * tree-cfg.c (verify_gimple_assign_single): Verify that
20688         addresses are correct.
20689
20690 2009-04-09  Richard Guenther  <rguenther@suse.de>
20691
20692         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Move non-constant
20693         indices into an array reference if possible.
20694         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
20695         Fold POINTER_PLUS_EXPR statements with invariant address.
20696
20697 2009-04-09  Alan Modra  <amodra@bigpond.net.au>
20698
20699         PR target/39634
20700         * config.gcc (powerpc64-*-linux*): Always build biarch.
20701
20702 2009-04-09  Joseph Myers  <joseph@codesourcery.com>
20703
20704         PR c/39613
20705         * c-typeck.c (do_case): If case label is not an INTEGER_CST, fold
20706         it and pedwarn if this results in an INTEGER_CST.
20707
20708 2009-04-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
20709
20710         * doc/install.texi: Update minimum GMP version.  Remove obsolete
20711         text in MPFR section.
20712
20713 2009-04-08  Jakub Jelinek  <jakub@redhat.com>
20714
20715         * dwarf2out.c (class_scope_p): New static inline.
20716         (class_or_namespace_scope_p): Use it.
20717         (gen_variable_die): Use DW_TAG_member tag for static data member
20718         declarations instead of DW_TAG_variable.
20719
20720         PR middle-end/39573
20721         * omp-low.c (expand_omp_taskreg): Finalize taskreg static local_decls
20722         variables.
20723
20724 2009-04-08  Richard Guenther  <rguenther@suse.de>
20725
20726         * tree-ssa-sccvn.c (valueize_refs): Do not continue to
20727         valueize random data.
20728
20729 2009-04-08  David Edelsohn  <edelsohn@gnu.org>
20730
20731         * config.gcc (aix tm_file):  Add aix-stdint.h.
20732         (aix tm clause use_gcc_stdint):  Set to wrap.
20733         * config/rs6000/aix-stdint.h:  New file.
20734
20735 2009-04-08  Richard Guenther  <rguenther@suse.de>
20736
20737         PR middle-end/36291
20738         * tree-dfa.c (add_referenced_var): Do not recurse into
20739         global initializers.
20740         * tree-ssa-ccp.c (get_symbol_constant_value): Add newly
20741         exposed variables.
20742         (fold_const_aggregate_ref): Likewise.
20743
20744 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
20745
20746         * recog.c (ordered_comparison_operator): New.
20747         * gensupport.c (std_preds): Add it.
20748         * doc/md.texi (Machine-Independent Predicates): Document it.
20749
20750 2009-04-08  Jan Hubicka  <jh@suse.cz>
20751
20752         * tree-eh.c (cleanup_eh): When not optimizing, do not try EH merging.
20753         * function.h (rtl_eh): Remove exception_handler_label_map.
20754         * except.c (ehl_hash, ehl_eq, add_ehl_entry,
20755         remove_exception_handler_label, for_each_eh_label_1): Remove.
20756         (rtl_remove_unreachable_regions): Remove.
20757         (convert_from_eh_region_ranges): Do not remove unreachable regions.
20758         (find_exception_handler_labels): Don't build the hashtable.
20759         (maybe_remove_eh_handler): Remove.
20760         (for_each_eh_label): Rewrite to walk the tree.
20761         (rest_of_handle_eh): Do not cleanup cfg prior EH construction.
20762         * except.h (maybe_remove_eh_handler): Remove.
20763         * passes.c (init_optimization_passes): Schedule second EH cleanup
20764         before out-of-ssa.
20765         * cfgrtl.c (rtl_delete_block, rtl_merge_blocks,
20766         cfg_layout_merge_blocks): Do not call maybe_remove_eh_handler.
20767
20768 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
20769
20770         * genoutput.c (validate_optab_operands): New.
20771         (gen_insn, gen_expand): Call it.
20772
20773         * genflags.c (gen_insn): Detect misused iterators.
20774         (main): Pass line_no to gen_insn, exit with status 1 on error.
20775
20776         * genextract.c (line_no): Make global.
20777         (VEC_safe_set_locstr): Change assertion to error message.
20778         (main): Exit with status 1 on error.
20779
20780 2009-04-08  Joseph Myers  <joseph@codesourcery.com>
20781
20782         PR c/39614
20783         PR c/39673
20784         * c-common.h (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
20785         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
20786         EXPR_INT_CONST_OPERANDS): Remove duplicate definitions.
20787         * c-convert.c (convert): Do not call fold on results of conversion
20788         functions when the result is a C_MAYBE_CONST_EXPR.
20789         * c-parser.c (c_parser_postfix_expression): Do not fold condition
20790         of __builtin_choose_expr.
20791         * c-typeck.c (remove_c_maybe_const_expr): New.
20792         (build_unary_op, build_conditional_expr, build_compound_expr,
20793         build_binary_op, c_objc_common_truthvalue_conversion): Call
20794         remove_c_maybe_const_expr on any input C_MAYBE_CONST_EXPR with
20795         integer operands.
20796
20797 2009-04-08  Bingfeng Mei  <bmei@broadcom.com>
20798
20799         * fold-const.c (const_binop): Combine two VECTOR_CST under operation
20800         CODE to produce a new one. Add a prototype to use fold_convert_const
20801
20802 2009-04-08  Danny Smith  <dannysmith@users.sourceforge.net>
20803
20804         PR bootstrap/39660
20805         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Don't
20806         mix declarations and code.
20807
20808 2009-04-08  Ben Elliston  <bje@au.ibm.com>
20809
20810         * gcc.c: Replace `CC' with `GCC' throughout.
20811
20812 2009-04-07  H.J. Lu  <hongjiu.lu@intel.com>
20813
20814         * doc/invoke.texi: Document Atom support.
20815
20816 2009-04-07  Jason Merrill  <jason@redhat.com>
20817
20818         PR c++/25185
20819         * c-common.h, c-common.c: Add flag_pretty_templates.
20820         * c-opts.c (c_common_handle_option): Set it.
20821         * c.opt: Add -fno-pretty-templates.
20822         * doc/invoke.texi (C++ Dialect Options): Likewise.
20823
20824 2009-04-07  Uros Bizjak  <ubizjak@gmail.com>
20825
20826         * config/ia64/ia64.c (ia64_builtins): Add IA64_BUILTIN_HUGE_VALQ.
20827         (ia64_init_builtins): Handle IA64_BUILTIN_HUGE_VALQ.
20828         (ia64_expand_builtin): Likewise.
20829
20830 2009-04-07  Martin Jambor  <mjambor@suse.cz>
20831
20832         * tree-ssa-alias.c (refs_may_alias_p_1): Check for
20833         is_gimple_min_invariant rather than CONSTANT_CLASS_P so that invariant
20834         ADDR_EXPRS are include too.
20835
20836 2009-04-07  Richard Guenther  <rguenther@suse.de>
20837
20838         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Non-aliased
20839         decls are only used if passes as parameters or if they are
20840         local statics and the call is not to a builtin.
20841         (call_may_clobber_ref_p_1): Likewise.
20842
20843 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
20844
20845         * expr.c (do_store_flag): Remove last argument.  Simplify code
20846         to avoid duplication of tests already done by can_compare_p.
20847         (expand_expr_real_1): Adjust caller.
20848
20849 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
20850
20851         * optabs.c (can_compare_p): Test the predicate of a
20852         cbranch and cstore pattern.
20853
20854 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
20855
20856         * expr.c (convert_move): Use emit_store_flag instead of
20857         "emulating" it.
20858
20859 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
20860
20861         * config/i386/i386.c (ix86_compare_emitted): Remove.
20862         (ix86_expand_compare, ix86_expand_branch): Handle MODE_CC
20863         ix86_compare_op0 like ix86_compare_emitted used to be handled.
20864         * config/i386/i386.h (ix86_compare_emitted): Remove.
20865         * config/i386/i386.md (stack_protect_test): Set ix86_compare_op0
20866         instead of ix86_compare_emitted.
20867         * config/i386/sync.md (sync_compare_and_swap_cc): Likewise.
20868
20869 2009-04-07  Andrew Stubbs  <ams@codesourcery.com>
20870
20871         * config.gcc (sh-*-*): Add sysroot-suffix.h to tm_file.
20872         Add t-sysroot-suffix to tmake_file.
20873         * config/print-sysroot-suffix.sh: New file.
20874         * config/t-sysroot-suffix: New file.
20875
20876 2009-04-07  Ben Elliston  <bje@au.ibm.com>
20877
20878         * libgcc2.c (INFINITY): Use __builtin_huge_val, not __builtin_inf,
20879         as the latter produces a warning when the target does not support
20880         infinity.
20881
20882 2009-04-07  Ben Elliston  <bje@au.ibm.com>
20883
20884         * dfp.c: Replace type punning assignments with memcpy throughout.
20885         * Makefile.in (dfp.o-warn): Remove.
20886
20887 2009-04-07  Alan Modra  <amodra@bigpond.net.au>
20888
20889         PR target/39634
20890         * config.gcc: Merge powerpc-*-linux* and powerpc64-*-linux*.
20891         Include soft-fp/t-softfp after rs6000/t-linux64.
20892
20893 2009-04-06  Eric Botcazou  <ebotcazou@adacore.com>
20894
20895         * stor-layout.c (set_sizetype): Use the full precision of their
20896         machine mode for bitsize types.
20897
20898 2009-04-06  H.J. Lu  <hongjiu.lu@intel.com>
20899
20900         * config/i386/i386.md: Revert 2 accidental checkins.
20901
20902 2009-04-06  Joey Ye  <joey.ye@intel.com>
20903             Xuepeng Guo  <xuepeng.guo@intel.com>
20904             H.J. Lu  <hongjiu.lu@intel.com>
20905
20906         Atom pipeline model, tuning and insn selection.
20907         * config.gcc (atom): Add atom config options and target.
20908
20909         * config/i386/atom.md: New.
20910
20911         * config/i386/i386.c (atom_cost): New cost.
20912         (m_ATOM): New macro flag.
20913         (initial_ix86_tune_features): Set m_ATOM.
20914         (x86_accumulate_outgoing_args): Likewise.
20915         (x86_arch_always_fancy_math_387): Likewise.
20916         (processor_target): Add Atom cost.
20917         (cpu_names): Add Atom cpu name.
20918         (override_options): Set Atom ISA.
20919         (ix86_issue_rate): New case PROCESSOR_ATOM.
20920         (ix86_adjust_cost): Likewise.
20921
20922         * config/i386/i386.h (TARGET_ATOM): New target macro.
20923         (ix86_tune_indices): Add X86_TUNE_OPT_AGU.
20924         (TARGET_OPT_AGU): New target option.
20925         (target_cpu_default): Add TARGET_CPU_DEFAULT_atom.
20926         (processor_type): Add PROCESSOR_ATOM.
20927
20928         * config/i386/i386.md (cpu): Add new value "atom".
20929         (use_carry, movu): New attr.
20930         (atom.md): Include atom.md.
20931         (adddi3_carry_rex64): Set attr "use_carry".
20932         (addqi3_carry): Likewise.
20933         (addhi3_carry): Likewise.
20934         (addsi3_carry): Likewise.
20935         (*addsi3_carry_zext): Likewise.
20936         (subdi3_carry_rex64): Likewise.
20937         (subqi3_carry): Likewise.
20938         (subhi3_carry): Likewise.
20939         (subsi3_carry): Likewise.
20940         (x86_movdicc_0_m1_rex64): Likewise.
20941         (*x86_movdicc_0_m1_se): Likewise.
20942         (x86_movsicc_0_m1): Likewise.
20943         (*x86_movsicc_0_m1_se): Likewise.
20944         (*adddi_1_rex64): Emit add insn as much as possible.
20945         (*addsi_1): Likewise.
20946         (return_internal): Set atom_unit.
20947         (return_internal_long): Likewise.
20948         (return_pop_internal): Likewise.
20949         (*rcpsf2_sse): Set atom_sse_attr attr.
20950         (*qrt<mode>2_sse): Likewise.
20951         (*prefetch_sse): Likewise.
20952
20953         * config/i386/i386-c.c (ix86_target_macros_internal): New case
20954         PROCESSOR_ATOM.
20955         (ix86_target_macros_internal): Likewise.
20956
20957         * config/i386/sse.md (cpu): Set attr "atom_sse_attr".
20958         (*prefetch_sse_rex): Likewise.
20959         (sse_rcpv4sf2): Likewise.
20960         (sse_vmrcpv4sf2): Likewise.
20961         (sse_sqrtv4sf2): Likewise.
20962         (<sse>_vmsqrt<mode>2): Likewise.
20963         (sse_ldmxcsr): Likewise.
20964         (sse_stmxcsr): Likewise.
20965         (*sse_sfence): Likewise.
20966         (sse2_clflush): Likewise.
20967         (*sse2_mfence): Likewise.
20968         (*sse2_lfence): Likewise.
20969         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Set attr "movu".
20970         (<sse>_movup<ssemodesuffixf2c>): Likewise.
20971         (avx_movdqu<avxmodesuffix>): Likewise.
20972         (avx_lddqu<avxmodesuffix>): Likewise.
20973         (sse2_movntv2di): Change attr "type" to "ssemov".
20974         (sse2_movntsi): Likewise.
20975         (rsqrtv8sf2): Change attr "type" to "sseadd".
20976         (sse3_addsubv2df3): Set attr "atom_unit".
20977         (sse3_h<plusminus_insn>v4sf3): Likewise.
20978         (*sse2_pmaddwd): Likewise.
20979         (*vec_extractv2di_1_rex64): Likewise.
20980         (*vec_extractv2di_1_avx): Likewise.
20981         (sse2_psadbw): Likewise.
20982         (ssse3_phaddwv8hi3): Likewise.
20983         (ssse3_phaddwv4hi3): Likewise.
20984         (ssse3_phadddv4si3): Likewise.
20985         (ssse3_phadddv2si3): Likewise.
20986         (ssse3_phaddswv8hi3): Likewise.
20987         (ssse3_phaddswv4hi3): Likewise.
20988         (ssse3_phsubwv8hi3): Likewise.
20989         (ssse3_phsubwv4hi3): Likewise.
20990         (ssse3_phsubdv4si3): Likewise.
20991         (ssse3_phsubdv2si3): Likewise.
20992         (ssse3_phsubswv8hi3): Likewise.
20993         (ssse3_phsubswv4hi3): Likewise.
20994         (ssse3_pmaddubsw128): Likewise.
20995         (sse3_pmaddubsw: Likewise.
20996         (ssse3_palignrti): Likewise.
20997         (ssse3_palignrdi): Likewise.
20998
20999 2009-04-06  Gerald Pfeifer  <gerald@pfeifer.com>
21000
21001         * doc/install.texi (Specific): Fix two cross-references to MinGW.
21002
21003 2009-04-06  Richard Guenther  <rguenther@suse.de>
21004
21005         PR tree-optimization/28868
21006         * tree-ssa-pre.c (inserted_phi_names): New bitmap to keep track
21007         of which PHI results we inserted.
21008         (insert_into_preds_of_block): Record inserted PHIs.
21009         (eliminate): Eliminate redundant PHI nodes.
21010         (init_pre): Init inserted_phi_names.
21011
21012 2009-04-06  Richard Guenther  <rguenther@suse.de>
21013
21014         PR tree-optimization/39643
21015         * tree-ssa-ccp.c (ccp_fold): Fold REALPART_EXPRs and
21016         IMAGPART_EXPRs of complex constants.
21017         (execute_fold_all_builtins): If we folded a call queue
21018         TODO_update_address_taken.
21019
21020 2009-04-06  Jan Hubicka  <jh@suse.cz>
21021
21022         PR middle-end/39659
21023         * except.c (remove_unreachable_regions): Propagate may_contain_throw
21024         flag.
21025
21026 2009-04-06  Andrew Stubbs  <ams@codesourcery.com>
21027
21028         * config/sh/lib1funcs.asm (ic_invalidate): Move ICBI out of the
21029         delay slot.
21030         (ic_invalidate_array): Likewise.
21031
21032 2009-04-06  Hariharan Sandanagobalane  <hariharan@picochip.com>
21033
21034         * calls.c (emit_library_call_value_1): Fix a problem with parameter
21035         alignment for library calls.
21036
21037 2009-04-06  Danny Smith  <dannysmith@users.sourceforge.net>
21038
21039         * config.gcc (mingw32 tm_file):  Add mingw-stdint.h.
21040         (mingw32 tm clause use_gcc_stdint):  Set to wrap.
21041         * config/i386/mingw-stdint.h:  New file.
21042
21043 2009-04-05  Richard Guenther  <rguenther@suse.de>
21044
21045         PR tree-optimization/39648
21046         * tree-ssa-sccvn.c (vn_reference_fold_indirect): Work around
21047         our &A vs. &A[0] IL deficiencies.
21048
21049 2009-04-04  Jan Hubicka  <jh@suse.cz>
21050
21051         * except.c (sjlj_find_directly_reachable_regions): Be ready for
21052         removed toplevel regions.
21053         (sjlj_mark_call_sites): Likewise.
21054
21055 2009-04-04  Dave Korn  <dave.korn.cygwin@gmail.com>
21056
21057         * config.gcc (cygwin tm_file):  Add cygwin-stdint.h.
21058         (cygwin tm clause use_gcc_stdint):  Set to wrap.
21059         * config/i386/cygwin-stdint.h:  New file.
21060
21061 2009-04-04  Richard Guenther  <rguenther@suse.de>
21062
21063         * Makefile.in (tree-ssa-copy.o): Add $(CFGLOOP_H) dependency.
21064         * tree-ssa-copy.c (init_copy_prop): Do not propagate through
21065         single-argument PHIs if we are in loop-closed SSA form.
21066         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Pass extra guards
21067         for the pre-condition.
21068         (slpeel_tree_peel_loop_to_edge): Likewise.
21069         (vect_build_loop_niters): Take an optional sequence to append stmts.
21070         (vect_generate_tmps_on_preheader): Likewise.
21071         (vect_do_peeling_for_loop_bound): Take extra guards for the
21072         pre-condition.
21073         (vect_do_peeling_for_alignment): Adjust.  Unconditionally apply
21074         the cost model check.
21075         (vect_loop_versioning): Take stmt and stmt list to put pre-condition
21076         guards if we are going to peel.  Do not apply versioning in that case.
21077         * tree-vectorizer.h (vect_loop_versioning): Adjust declaration.
21078         (vect_do_peeling_for_loop_bound): Likewise.
21079         * tree-vect-loop.c (vect_transform_loop): If we are peeling for
21080         loop bound only record extra pre-conditions, do not apply loop
21081         versioning.
21082
21083 2009-04-04  Richard Guenther  <rguenther@suse.de>
21084
21085         * tree-ssa-operands.c (pop_stmt_changes): Remove automatic
21086         renaming code.
21087
21088 2009-04-04  Jan Hubicka  <jh@suse.cz>
21089
21090         * tree-ssa-uncprop.c (associate_equivalences_with_edges): Use
21091         last_basic_block for size of bb->index indexed array.
21092         * bt-load.c (compute_defs_uses_and_gen, compute_kill,
21093         compute_out, link_btr_uses, build_btr_def_use_webs,
21094         build_btr_def_use_webs, migrate_btr_defs): Likewise.
21095
21096 2009-04-04  Jan Hubicka  <jh@suse.cz>
21097
21098         * except.c (remove_eh_handler_and_replace): Break out from ...
21099         (remove_eh_handler): ... here.
21100         (bring_to_root): New function.
21101         (remove_unreachable_regions): Collect MUST_NOT_THROW, unify runtime
21102         handled ones, bring others to root of tree.
21103
21104 2009-04-04  Jan Hubicka  <jh@suse.cz>
21105
21106         * tree-eh.c (tree_empty_eh_handler_p): Pattern match more curefully.
21107         (all_phis_safe_to_merge): New function.
21108         (update_info): New structure.
21109         (make_eh_edge_and_update_phi, update_eh_edges): New functions.
21110         (cleanup_empty_eh): Update SSA if possible.
21111
21112 2009-04-04  Richard Guenther  <rguenther@suse.de>
21113
21114         * tree-ssa.c (verify_ssa): With -O0 we do not need VOPs.
21115         * tree-ssa-operands.c (append_vdef): Do not append VOPs at -O0.
21116         (append_vuse): Likewise.
21117
21118 2009-04-04  Jakub Jelinek  <jakub@redhat.com>
21119
21120         * unwind-dw2.h (_Unwind_FrameState): Add REG_UNDEFINED enum value.
21121         * unwind-dw2.c (execute_cfa_program): Set how to REG_UNDEFINED
21122         instead of REG_UNSAVED for DW_CFA_undefined.
21123         (uw_update_context_1): Handle REG_UNDEFINED the same as REG_UNSAVED.
21124         (uw_update_context): If RA column is REG_UNDEFINED, mark it as
21125         outermost frame.
21126
21127 2009-04-04  Richard Earnshaw  <rearnsha@arm.com>
21128
21129         PR target/39501
21130         * arm.md (movsfcc): Disable if not TARGET_HARD_FLOAT.
21131
21132 2009-04-04  Richard Guenther  <rguenther@suse.de>
21133
21134         PR tree-optimization/8781
21135         PR tree-optimization/37892
21136         * tree-ssa-sccvn.h (vn_reference_fold_indirect): Declare.
21137         * tree-ssa-sccvn.c (vn_reference_fold_indirect): New function.
21138         (valueize_refs): Call it for *& valueizations.
21139         (shared_reference_ops_from_ref): Rename to ...
21140         (valueize_shared_reference_ops_from_ref): ... this and valueize.
21141         (shared_reference_ops_from_call): Rename to ...
21142         (valueize_shared_reference_ops_from_call): ... this and valueize.
21143         (vn_reference_lookup): Update.
21144         (visit_reference_op_call): Likewise.
21145         * tree-ssa-pre.c (phi_translate_1): Fold *&.
21146         (eliminate): Value-replace the call address in call statements.
21147
21148 2009-04-04  Richard Guenther  <rguenther@suse.de>
21149
21150         PR tree-optimization/39636
21151         * tree-ssa-forwprop.c
21152         (forward_propagate_addr_into_variable_array_index): Check for
21153         GIMPLE_ASSIGN before accessing the rhs code.
21154
21155 2009-04-03  Jason Merrill  <jason@redhat.com>
21156
21157         * stor-layout.c (set_sizetype): Set TYPE_CANONICAL.
21158
21159 2009-04-03  Steve Ellcey  <sje@cup.hp.com>
21160
21161         * config/ia64/ia64.md (extendsfdf2, extendsfxf2, extenddfxf2,
21162         truncdfsf2, truncxfsf2, truncxfdf2, floatdixf2, fix_truncsfdi2,
21163         fix_truncdfdi2, fix_truncxfdi2, fix_truncxfdi2_alts, floatunsdisf2,
21164         floatunsdidf2, floatunsdixf2, fixuns_truncsfdi2, fixuns_truncdfdi2,
21165         fixuns_truncxfdi2, fixuns_truncxfdi2_alts, divsi3_internal,
21166         smuldi3_highpart, umuldi3_highpart, ctzdi2, *getf_exp_xf,
21167         divdi3_internal_lat, divdi3_internal_thr, mulditi3, *mulditi3_internal,
21168         umulditi3, *umulditi3_internal, addsf3, mulsf3, abssf2, negsf2,
21169         *nabssf2, sminsf3, smaxsf3, *maddsf4, *msubsf4, *nmulsf3, *nmaddsf4,
21170         *nmaddsf4_alts, divsf3, *sqrt_approx, sqrtsf2, sqrtsf2_internal_thr,
21171         adddf3, *adddf3_trunc, muldf3, *muldf3_trunc, absdf2, negdf2, *nabsdf2,
21172         smindf3, smaxdf3, *madddf4, *madddf4_trunc, *msubdf4, *msubdf4_trunc,
21173         *nmuldf3, *nmuldf3_trunc, *nmadddf4, *nmadddf4_alts, *nmadddf4_truncsf,
21174         *nmadddf4_truncsf_alts, divdf3, sqrtdf2, sqrtdf2_internal_thr, divxf3,
21175         sqrtxf2, sqrtxf2_internal_thr, *recip_approx):
21176         Use fr_reg_or_fp01_operand instead of fr_register_operand
21177
21178         * config/ia64/div.md (extend<mode>rf2, truncrf<mode>2,
21179         recip_approx_rf, divsf3_internal_thr, divsf3_internal_lat,
21180         divdf3_internal_thr, divdf3_internal_lat divxf3_internal): Ditto.
21181
21182 2009-04-03  Vladimir Makarov  <vmakarov@redhat.com>
21183
21184         PR rtl-optimization/39607
21185         PR rtl-optimization/39631
21186
21187         Revert:
21188
21189         2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
21190         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
21191         instead of DF_LR_OUT.
21192         * ira-lives.c (process_bb_node_lives): Ditto.
21193         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
21194         instead of DF_LR_{OUT,IN}.
21195         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
21196         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
21197
21198 2009-04-03  Steven Bosscher  <steven@gcc.gnu.org>
21199
21200         * omp-low.c (pass_expand_omp): Don't claim to provide PROP_gimple_lomp.
21201         (execute_lower_omp): Always run but take the short way out if -fopenmp
21202         is not given.
21203         (gate_lower_omp): Remove, forcing the pass manager to always run the
21204         pass and always set PROP_gimple_lomp.
21205         (pass_lower_omp): Remove gate function.
21206         * matrix-reorg.c (pass_ipa_matrix_reorg): Don't claim to provide
21207         PROP_trees.  Instead, require it.
21208         * ipa-cp.c (pass_ipa_cp): Likewise.
21209         * ipa-inline.c (pass_early_inline): Don't claim to provide PROP_cfg.
21210         (pass_ipa_early_inline, pass_inline_parameters, pass_ipa_inline): Idem.
21211         * tree-profile.c (pass_tree_profile): Don't claim to provide PROP_cfg
21212         and PROP_gimple_leh.
21213
21214 2009-04-03  Richard Guenther  <rguenther@suse.de>
21215
21216         PR middle-end/13146
21217         PR tree-optimization/23940
21218         PR tree-optimization/33237
21219         PR middle-end/33974
21220         PR middle-end/34093
21221         PR tree-optimization/36201
21222         PR tree-optimization/36230
21223         PR tree-optimization/38049
21224         PR tree-optimization/38207
21225         PR tree-optimization/38230
21226         PR tree-optimization/38301
21227         PR tree-optimization/38585
21228         PR middle-end/38895
21229         PR tree-optimization/38985
21230         PR tree-optimization/39299
21231         * tree-ssa-structalias.h: Remove.
21232         * tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
21233         (NULL_DEF_OPERAND_P): Make of type def_operand_p.
21234         (struct vuse_element_d): Remove.
21235         (struct vuse_vec_d): Likewise.
21236         (VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
21237         VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
21238         SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
21239         VUSE_ELEMENT_VAR): Likewise.
21240         (struct voptype_d): Likewise.
21241         (NUM_VOP_FREE_BUCKETS): Likewise.
21242         (struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
21243         (struct stmt_operands_d): Remove.
21244         (VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
21245         VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
21246         VDEF_NUM, VDEF_VECT): Likewise.
21247         (copy_virtual_operands): Remove.
21248         (operand_build_cmp): Likewise.
21249         (create_ssa_artificial_load_stmt): Likewise.
21250         (enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
21251         (struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
21252         vuse_index and mayuse_index members.  Pack and move done and iter_type
21253         members to the front.
21254         (SSA_OP_VMAYUSE): Remove.
21255         (SSA_OP_VIRTUAL_USES): Adjust.
21256         (FOR_EACH_SSA_VDEF_OPERAND): Remove.
21257         (unlink_stmt_vdef): Declare.
21258         (add_to_addressable_set): Remove.
21259         * tree-vrp.c (stmt_interesting_for_vrp): Adjust.
21260         (vrp_visit_stmt): Likewise.
21261         * doc/tree-ssa.texi (Alias analysis): Update.
21262         * doc/invoke.texi (max-aliased-vops): Remove docs.
21263         (avg-aliased-vops): Likewise.
21264         * tree-into-ssa.c (syms_to_rename): Remove.
21265         (need_to_update_vops_p): Likewise.
21266         (need_to_initialize_update_ssa_p): Rename to ...
21267         (update_ssa_initialized_fn): ... this.  Track function we are
21268         initialized for.
21269         (symbol_marked_for_renaming): Simplify.
21270         (add_new_name_mapping): Do not set need_to_update_vops_p.
21271         (dump_currdefs): Use SYMS_TO_RENAME.
21272         (rewrite_update_stmt): Always walk all uses/defs.
21273         (dump_update_ssa): Adjust.
21274         (init_update_ssa): Take function argument.  Track what we are
21275         initialized for.
21276         (delete_update_ssa): Reset SYMS_TO_RENAME and update_ssa_initialized_fn.
21277         (create_new_def_for): Initialize for cfun, assert we are initialized
21278         for cfun.
21279         (mark_sym_for_renaming): Simplify.
21280         (mark_set_for_renaming): Do not initialize update-ssa.
21281         (need_ssa_update_p): Simplify.  Take function argument.
21282         (name_mappings_registered_p): Assert we ask for the correct function.
21283         (name_registered_for_update_p): Likewise.
21284         (ssa_names_to_replace): Likewise.
21285         (release_ssa_name_after_update_ssa): Likewise.
21286         (update_ssa): Likewise.  Use SYMS_TO_RENAME.
21287         (dump_decl_set): Do not print a newline.
21288         (debug_decl_set): Do it here.
21289         (dump_update_ssa): And here.
21290         * tree-ssa-loop-im.c (move_computations): Adjust.
21291         (movement_possibility): Likewise.
21292         (determine_max_movement): Likewise.
21293         (gather_mem_refs_stmt): Likewise.
21294         * tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
21295         or NAME_MEMORY_TAG.
21296         * tree-complex.c (update_all_vops): Remove.
21297         (expand_complex_move): Adjust.
21298         * tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
21299         Simplify test for memory referencing statement.  Exclude
21300         non-invariant ADDR_EXPRs.
21301         * tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
21302         * tree-loop-distribution.c (generate_memset_zero): Adjust.
21303         (rdg_flag_uses): Likewise.
21304         * tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
21305         related code.
21306         (tree_optimize_tail_calls_1): Also split the
21307         edge from the entry block if we have degenerate PHI nodes in
21308         the first basic block.
21309         * tree.c (init_ttree): Remove memory-tag related code.
21310         (tree_code_size): Likewise.
21311         (tree_node_structure): Likewise.
21312         (build7_stat): Re-write to be build6_stat.
21313         * tree.h (MTAG_P, TREE_MEMORY_TAG_CHECK, TMR_TAG): Remove.
21314         (SSA_VAR_P): Adjust.
21315         (struct tree_memory_tag): Remove.
21316         (struct tree_memory_partition_tag): Likewise.
21317         (union tree_node): Adjust.
21318         (build7): Re-write to be build6.
21319         * tree-pass.h (pass_reset_cc_flags): Remove.
21320         (TODO_update_address_taken): New flag.
21321         (pass_simple_dse): Remove.
21322         * ipa-cp.c (ipcp_update_callgraph): Update SSA form.
21323         * params.h (MAX_ALIASED_VOPS): Remove.
21324         (AVG_ALIASED_VOPS): Likewise.
21325         * omp-low.c (expand_omp_taskreg): Update SSA form.
21326         * tree-ssa-dse.c (dse_optimize_stmt): Properly query if the rhs
21327         aliases the lhs in a copy stmt.
21328         * tree-ssa-dse.c (struct address_walk_data): Remove.
21329         (memory_ssa_name_same): Likewise.
21330         (memory_address_same): Likewise.
21331         (get_kill_of_stmt_lhs): Likewise.
21332         (dse_possible_dead_store_p): Simplify, use the oracle.  Handle
21333         unused stores.  Look through PHI nodes into post-dominated regions.
21334         (dse_optimize_stmt): Simplify.  Properly remove stores.
21335         (tree_ssa_dse): Compute dominators.
21336         (execute_simple_dse): Remove.
21337         (pass_simple_dse): Likewise.
21338         * ipa-reference.c (scan_stmt_for_static_refs): Open-code
21339         gimple_loaded_syms and gimple_stored_syms computation.
21340         * toplev.c (dump_memory_report): Dump alias and pta stats.
21341         * tree-ssa-sccvn.c (vn_reference_compute_hash): Simplify.
21342         (vn_reference_eq): Likewise.
21343         (vuses_to_vec, copy_vuses_from_stmt, vdefs_to_vec,
21344         copy_vdefs_from_stmt, shared_lookup_vops, shared_vuses_from_stmt,
21345         valueize_vuses): Remove.
21346         (get_def_ref_stmt_vuses): Simplify.  Rename to ...
21347         (get_def_ref_stmt_vuse): ... this.
21348         (vn_reference_lookup_2): New function.
21349         (vn_reference_lookup_pieces): Use walk_non_aliased_vuses for
21350         walking equivalent vuses.  Simplify.
21351         (vn_reference_lookup): Likewise.
21352         (vn_reference_insert): Likewise.
21353         (vn_reference_insert_pieces): Likewise.
21354         (visit_reference_op_call): Simplify.
21355         (visit_reference_op_load): Likewise.
21356         (visit_reference_op_store): Likewise.
21357         (init_scc_vn): Remove shared_lookup_vuses initialization.
21358         (free_scc_vn): Remove shared_lookup_vuses freeing.
21359         (sort_vuses, sort_vuses_heap): Remove.
21360         (get_ref_from_reference_ops): Export.
21361         * tree-ssa-sccvn.h (struct vn_reference_s): Replace vuses
21362         vector with single vuse pointer.
21363         (vn_reference_lookup_pieces, vn_reference_lookup,
21364         vn_reference_insert, vn_reference_insert_pieces): Adjust prototypes.
21365         (shared_vuses_from_stmt): Remove.
21366         (get_ref_from_reference_ops): Declare.
21367         * tree-ssa-loop-manip.c (slpeel_can_duplicate_loop_p): Adjust.
21368         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
21369         memory-tag related code.
21370         * tree-ssa-ccp.c (get_symbol_constant_value): Remove memory-tag code.
21371         (likely_value): Add comment, skip static-chain of call statements.
21372         (surely_varying_stmt_p): Adjust.
21373         (gimplify_and_update_call_from_tree): Likewise.
21374         (execute_fold_all_builtins): Do not rebuild alias info.
21375         (gimplify_and_update_call_from_tree): Properly update VOPs.
21376         * tree-ssa-loop-ivopts.c (get_ref_tag): Remove.
21377         (copy_ref_info): Remove memory-tag related code.
21378         * tree-call-cdce.c (tree_call_cdce): Rename the VOP.
21379         * ipa-pure-const.c (check_decl): Remove memory-tag related code.
21380         (check_stmt): Open-code gimple_loaded_syms and gimple_stored_syms
21381         computation.
21382         * tree-ssa-dom.c (gimple_p): Remove typedef.
21383         (eliminate_redundant_computations): Adjust.
21384         (record_equivalences_from_stmt): Likewise.
21385         (avail_expr_hash): Likewise.
21386         (avail_expr_eq): Likewise.
21387         * tree-ssa-propagate.c (update_call_from_tree): Properly update VOPs.
21388         (stmt_makes_single_load): Likewise.
21389         (stmt_makes_single_store): Likewise.
21390         * tree-ssa-alias.c: Rewrite completely.
21391         (debug_memory_partitions, dump_mem_ref_stats, debug_mem_ref_stats,
21392         debug_mem_sym_stats, dump_mem_sym_stats_for_var,
21393         debug_all_mem_sym_stats, debug_mp_info, update_mem_sym_stats_from_stmt,
21394         delete_mem_ref_stats, create_tag_raw, dump_points_to_info,
21395         dump_may_aliases_for, debug_may_aliases_for, new_type_alias):
21396         Remove public functions.
21397         (pass_reset_cc_flags): Remove.
21398         (pass_build_alias): Move ...
21399         * tree-ssa-structalias.c (pass_build_alias): ... here.
21400         * tree-ssa-alias.c (may_be_aliased): Move ...
21401         * tree-flow-inline.h (may_be_aliased): ... here.
21402         tree-ssa-alias.c (struct count_ptr_d, count_ptr_derefs,
21403         count_uses_and_derefs): Move ...
21404         * gimple.c: ... here.
21405         * gimple.h (count_uses_and_derefs): Declare.
21406         * tree-ssa-alias.c (dump_alias_stats, ptr_deref_may_alias_global_p,
21407         ptr_deref_may_alias_decl_p, ptr_derefs_may_alias_p,
21408         same_type_for_tbaa, nonaliasing_component_refs_p, decl_refs_may_alias_p,
21409         indirect_ref_may_alias_decl_p, indirect_refs_may_alias_p,
21410         ref_maybe_used_by_call_p, ref_maybe_used_by_stmt_p,
21411         call_may_clobber_ref_p, stmt_may_clobber_ref_p, maybe_skip_until,
21412         get_continuation_for_phi, walk_non_aliased_vuses, walk_aliased_vdefs):
21413         New functions.
21414         * tree-dfa.c (refs_may_alias_p): Move ...
21415         * tree-ssa-alias.c (refs_may_alias_p): ... here.  Extend.
21416         * tree-ssa-alias.h: New file.
21417         * tree-ssa-sink.c (is_hidden_global_store): Adjust.
21418         (statement_sink_location): Likewise.
21419         * opts.c (decode_options): Do not adjust max-aliased-vops or
21420         avg-aliased-vops values.
21421         * timevar.def (TV_TREE_MAY_ALIAS): Remove.
21422         (TV_CALL_CLOBBER): Likewise.
21423         (TV_FLOW_SENSITIVE): Likewise.
21424         (TV_FLOW_INSENSITIVE): Likewise.
21425         (TV_MEMORY_PARTITIONING): Likewise.
21426         (TV_ALIAS_STMT_WALK): New timevar.
21427         * tree-ssa-loop-ivcanon.c (empty_loop_p): Adjust.
21428         * tree-ssa-address.c (create_mem_ref_raw): Use build6.
21429         (get_address_description): Remove memory-tag related code.
21430         * tree-ssa-ifcombine.c (bb_no_side_effects_p): Adjust.
21431         * treestruct.def (TS_MEMORY_TAG, TS_MEMORY_PARTITION_TAG): Remove.
21432         * tree-eh.c (cleanup_empty_eh): Do not leave stale SSA_NAMEs
21433         and immediate uses in statements.  Document.
21434         * gimple-pretty-print.c (dump_gimple_mem_ops): Adjust.
21435         (dump_symbols): Remove.
21436         (dump_gimple_mem_ops): Do not dump loaded or stored syms.
21437         * alias.c (get_deref_alias_set): New function split out from ...
21438         (get_alias_set): ... here.
21439         * alias.h (get_deref_alias_set): Declare.
21440         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove unused
21441         type parameter.  Remove restrict pointer handling.  Create a
21442         ref-all pointer in case type-based alias sets do not conflict.
21443         (vect_analyze_data_refs): Remove SMT related code.
21444         * tree-vect-stmts.c (vectorizable_store): Re-instantiate TBAA assert.
21445         (vectorizable_load): Likewise.
21446         * tree-data-ref.h (struct dr_alias): Remove symbol_tag field.
21447         (DR_SYMBOL_TAG, DR_VOPS): Remove.
21448         * tree-data-ref.c (dr_may_alias_p): Use the alias-oracle.
21449         Ignore vops and SMTs.
21450         (dr_analyze_alias): Likewise..
21451         (free_data_ref): Likewise.
21452         (create_data_ref): Likewise.
21453         (analyze_all_data_dependences): Likewise.
21454         (get_references_in_stmt): Adjust.
21455         * tree-flow-inline.h (gimple_aliases_computed_p,
21456         gimple_addressable_vars, gimple_call_clobbered_vars,
21457         gimple_call_used_vars, gimple_global_var, may_aliases, memory_partition,
21458         factoring_name_p, mark_call_clobbered, clear_call_clobbered,
21459         compare_ssa_operands_equal, symbol_mem_tag, set_symbol_mem_tag,
21460         gimple_mem_ref_stats): Remove.
21461         (gimple_vop): New function.
21462         (op_iter_next_use): Remove vuses and mayuses cases.
21463         (op_iter_next_def): Remove vdefs case.
21464         (op_iter_next_tree): Remove vuses, mayuses and vdefs cases.
21465         (clear_and_done_ssa_iter): Do not set removed fields.
21466         (op_iter_init): Likewise.  Skip vuse and/or vdef if requested.
21467         Assert we are not iterating over vuses or vdefs if not also
21468         iterating over uses or defs.
21469         (op_iter_init_use): Likewise.
21470         (op_iter_init_def): Likewise.
21471         (op_iter_next_vdef): Remove.
21472         (op_iter_next_mustdef): Likewise.
21473         (op_iter_init_vdef): Likewise.
21474         (compare_ssa_operands_equal): Likewise.
21475         (link_use_stmts_after): Handle vuse operand.
21476         (is_call_used): Use is_call_clobbered.
21477         (is_call_clobbered): Global variables are always call clobbered,
21478         query the call-clobbers bitmap.
21479         (mark_call_clobbered): Ignore global variables.
21480         (clear_call_clobbered): Likewise.
21481         * tree-ssa-coalesce.c (create_outofssa_var_map): Adjust
21482         virtual operands sanity check.
21483         * tree.def (NAME_MEMORY_TAG, SYMBOL_MEMORY_TAG, MEMORY_PARTITION_TAG):
21484         Remove.
21485         (TARGET_MEM_REF): Remove TMR_TAG operand.
21486         * tree-dfa.c (add_referenced_var): Initialize call-clobber state.
21487         Remove call-clobber related code.
21488         (remove_referenced_var): Likewise.  Do not clear mpt or symbol_mem_tag.
21489         (dump_variable): Do not dump SMTs, memory stats, may-aliases or
21490         partitions or escape reason.
21491         (get_single_def_stmt, get_single_def_stmt_from_phi,
21492         get_single_def_stmt_with_phi): Remove.
21493         (dump_referenced_vars): Tidy.
21494         (get_ref_base_and_extent): Allow bare decls.
21495         (collect_dfa_stats): Adjust.
21496         * graphite.c (rename_variables_in_stmt): Adjust.
21497         (graphite_copy_stmts_from_block): Likewise.
21498         (translate_clast): Likewise.
21499         * tree-ssa-pre.c (struct bb_bitmap_sets): Add expr_dies bitmap.
21500         (EXPR_DIES): New.
21501         (translate_vuse_through_block): Use the oracle.
21502         (phi_translate_1): Adjust.
21503         (value_dies_in_block_x): Use the oracle.  Cache the outcome
21504         in EXPR_DIES.
21505         (valid_in_sets): Check if the VUSE for
21506         a REFERENCE is available.
21507         (eliminate): Do not remove stmts during elimination,
21508         instead queue and remove them afterwards.
21509         (do_pre): Do not rebuild alias info.
21510         (pass_pre): Run TODO_rebuild_alias before PRE.
21511         * tree-ssa-live.c (remove_unused_locals): Remove memory-tag code.
21512         * tree-sra.c (sra_walk_function): Use gimple_references_memory_p.
21513         (mark_all_v_defs_stmt): Remove.
21514         (mark_all_v_defs_seq): Adjust.
21515         (sra_replace): Likewise.
21516         (scalarize_use): Likewise.
21517         (scalarize_copy): Likewise.
21518         (scalarize_init): Likewise.
21519         (scalarize_ldst): Likewise.
21520         (todoflags): Remove.
21521         (tree_sra): Do not rebuild alias info.
21522         (tree_sra_early): Adjust.
21523         (pass_sra): Run TODO_update_address_taken before SRA.
21524         * tree-predcom.c (set_alias_info): Remove.
21525         (prepare_initializers_chain): Do not call it.
21526         (mark_virtual_ops_for_renaming): Adjust.
21527         (mark_virtual_ops_for_renaming_list): Remove.
21528         (initialize_root_vars): Adjust.
21529         (initialize_root_vars_lm): Likewise.
21530         (prepare_initializers_chain): Likewise.
21531         * tree-ssa-copy.c (may_propagate_copy): Remove memory-tag related code.
21532         (may_propagate_copy_into_stmt): Likewise.
21533         (merge_alias_info): Do nothing for now.
21534         (propagate_tree_value_into_stmt): Adjust.
21535         (stmt_may_generate_copy): Likewise.
21536         * tree-ssa-forwprop.c (tidy_after_forward_propagate_addr): Do
21537         not mark symbols for renaming.
21538         (forward_propagate_addr_expr): Match up push/pop_stmt_changes
21539         with the same statement, make sure to update the new pointed-to one.
21540         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do not copy
21541         call statements, do not mark symbols for renaming.
21542         (mark_operand_necessary): Dump something.
21543         (ref_may_be_aliased): New function.
21544         (mark_aliased_reaching_defs_necessary_1): New helper function.
21545         (mark_aliased_reaching_defs_necessary): Likewise.
21546         (mark_all_reaching_defs_necessary_1): Likewise.
21547         (mark_all_reaching_defs_necessary): Likewise.
21548         (propagate_necessity): Do not process virtual PHIs.  For
21549         non-aliased loads mark all reaching definitions as necessary.
21550         For aliased loads and stores mark the immediate dominating
21551         aliased clobbers as necessary.
21552         (visited): New global static.
21553         (perform_tree_ssa_dce): Free visited bitmap after propagating
21554         necessity.
21555         (remove_dead_phis): Perform simple dead virtual PHI removal.
21556         (remove_dead_stmt): Properly unlink virtual operands when
21557         removing stores.
21558         (eliminate_unnecessary_stmts): Schedule PHI removal after
21559         stmt removal.
21560         * tree-ssa-ter.c (is_replaceable_p): Adjust.
21561         (process_replaceable): Likewise.
21562         (find_replaceable_in_bb): Likewise.
21563         * tree-ssa.c (verify_ssa_name): Verify all VOPs are
21564         based on the single gimple vop.
21565         (verify_flow_insensitive_alias_info): Remove.
21566         (verify_flow_sensitive_alias_info): Likewise.
21567         (verify_call_clobbering): Likewise.
21568         (verify_memory_partitions): Likewise.
21569         (verify_alias_info): Likewise.
21570         (verify_ssa): Adjust..
21571         (execute_update_addresses_taken): Export.  Update SSA
21572         manually.  Optimize only when optimizing.  Use a local bitmap.
21573         (pass_update_address_taken): Remove TODO_update_ssa, add
21574         TODO_dump_func.
21575         (pass_update_address_taken): Just use TODO_update_address_taken.
21576         (init_tree_ssa): Do not initialize addressable_vars.
21577         (verify_ssa): Verify new VUSE / VDEF properties.
21578         Verify that all stmts definitions have the stmt as SSA_NAME_DEF_STMT.
21579         Do not call verify_alias_info.
21580         (delete_tree_ssa): Clear the VUSE, VDEF operands.
21581         Do not free the loaded and stored syms bitmaps.  Reset the escaped
21582         and callused solutions.  Do not free addressable_vars.
21583         Remove memory-tag related code.
21584         (warn_uninitialized_var): Aliases are always available.
21585         * tree-ssa-loop-prefetch.c (gather_memory_references): Adjust.
21586         * lambda-code.c (can_put_in_inner_loop): Adjust.
21587         (can_put_after_inner_loop): Likewise.
21588         (perfect_nestify): Likewise.
21589         * tree-vect-stmts.c (vect_stmt_relevant_p): Adjust.
21590         (vect_gen_widened_results_half): Remove CALL_EXPR handling.
21591         (vectorizable_conversion): Do not mark symbols for renaming.
21592         * tree-inline.c (remap_gimple_stmt): Clear VUSE/VDEF.
21593         (expand_call_inline): Unlink the calls virtual operands before
21594         replacing it.
21595         (tree_function_versioning): Do not call update_ssa if we are not
21596         updating clones.  Simplify.
21597         * tree-ssa-phiprop.c (phivn_valid_p): Adjust.
21598         (propagate_with_phi): Likewise..
21599         * tree-outof-ssa.c (create_temp): Remove memory tag and call
21600         clobber code.  Assert we are not aliased or global.
21601         * tree-flow.h: Include tree-ssa-alias.h
21602         (enum escape_type): Remove.
21603         (struct mem_sym_stats_d): Likewise.
21604         (struct mem_ref_stats_d): Likewise.
21605         (struct gimple_df): Add vop member.  Remove global_var,
21606         call_clobbered_vars, call_used_vars, addressable_vars,
21607         aliases_compted_p and mem_ref_stats members.  Add syms_to_rename,
21608         escaped and callused members.
21609         (struct ptr_info_def): Remove all members, add points-to solution
21610         member pt.
21611         (struct var_ann_d): Remove in_vuse_list, in_vdef_list,
21612         call_clobbered, escape_mask, mpt and symbol_mem_tag members.
21613         * Makefile.in (TREE_FLOW_H): Add tree-ssa-alias.h.
21614         (tree-ssa-structalias.o): Remove tree-ssa-structalias.h.
21615         (tree-ssa-alias.o): Likewise.
21616         (toplev.o): Add tree-ssa-alias.h
21617         (GTFILES): Remove tree-ssa-structalias.h, add tree-ssa-alias.h.
21618         * gimple.c (gimple_set_bb): Fix off-by-one error.
21619         (is_gimple_reg): Do not handle memory tags.
21620         (gimple_copy): Also copy virtual operands.
21621         Delay updating the statement.  Do not reset loaded and stored syms.
21622         (gimple_set_stored_syms): Remove.
21623         (gimple_set_loaded_syms): Likewise.
21624         (gimple_call_copy_skip_args): Copy the virtual operands
21625         and mark the new statement modified.
21626         * tree-ssa-structalias.c (may_alias_p): Remove.
21627         (set_uids_in_ptset): Take the alias set to prune with as
21628         parameter.  Fold in the alias test of may_alias_p.
21629         (compute_points_to_sets): Compute whether a ptr is dereferenced
21630         in a local sbitmap.
21631         (process_constraint): Deal with &ANYTHING on the lhs, reject all
21632         other ADDRESSOF constraints on the lhs.
21633         (get_constraint_for_component_ref): Assert that we don't get
21634         ADDRESSOF constraints from the base of the reference.
21635         Properly generate UNKNOWN_OFFSET for DEREF if needed.
21636         (struct variable_info): Remove collapsed_to member.
21637         (get_varinfo_fc): Remove.
21638         (new_var_info): Do not set collapsed_to.
21639         (dump_constraint): Do not follow cycles.
21640         (dump_constraint_graph): Likewise.
21641         (build_pred_graph): Likewise.
21642         (build_succ_graph): Likewise.
21643         (rewrite_constraints): Likewise.
21644         (do_simple_structure_copy): Remove.
21645         (do_rhs_deref_structure_copy): Remove.
21646         (do_lhs_deref_structure_copy): Remove.
21647         (collapse_rest_of_var): Remove.
21648         (do_structure_copy): Re-implement.
21649         (pta_stats): New global variable.
21650         (dump_pta_stats): New function.
21651         (struct constraint_expr): Make offset signed.
21652         (UNKNOWN_OFFSET): Define special value.
21653         (dump_constraint): Dump UNKNOWN_OFFSET as UNKNOWN.
21654         (solution_set_expand): New helper function split out from ...
21655         (do_sd_constraint): ... here.
21656         (solution_set_add): Handle UNKNOWN_OFFSET.  Handle negative offsets.
21657         (do_ds_constraint): Likewise.
21658         (do_sd_constraint): Likewise.  Do not special-case ESCAPED = *ESCAPED
21659         and CALLUSED = *CALLUSED.
21660         (set_union_with_increment): Make inc argument signed.
21661         (type_safe): Remove.
21662         (get_constraint_for_ptr_offset): Handle unknown and negative
21663         constant offsets.
21664         (first_vi_for_offset): Handle offsets before start.  Bail
21665         out early for offsets beyond the variable extent.
21666         (first_or_preceding_vi_for_offset): New function.
21667         (init_base_vars): Add ESCAPED = ESCAPED + UNKNOWN_OFFSET constraint.
21668         Together with ESCAPED = *ESCAPED this properly computes reachability.
21669         (find_what_var_points_to): New function.
21670         (find_what_p_points_to): Implement in terms of find_what_var_points_to.
21671         (pt_solution_reset, pt_solution_empty_p, pt_solution_includes_global,
21672         pt_solution_includes_1, pt_solution_includes, pt_solutions_intersect_1,
21673         pt_solutions_intersect): New functions.
21674         (compute_call_used_vars): Remove.
21675         (compute_may_aliases): New main entry into PTA computation.
21676         * gimple.h (gimple_p): New typedef.
21677         (struct gimple_statement_base): Remove references_memory_p.
21678         (struct gimple_statement_with_memory_ops_base): Remove
21679         vdef_ops, vuse_ops, stores and loads members.  Add vdef and vuse
21680         members.
21681         (gimple_vuse_ops, gimple_set_vuse_ops, gimple_vdef_ops,
21682         gimple_set_vdef_ops, gimple_loaded_syms, gimple_stored_syms,
21683         gimple_set_references_memory): Remove.
21684         (gimple_vuse_op, gimple_vdef_op, gimple_vuse, gimple_vdef,
21685         gimple_vuse_ptr, gimple_vdef_ptri, gimple_set_vuse, gimple_set_vdef):
21686         New functions.
21687         * tree-cfg.c (move_block_to_fn): Fix off-by-one error.
21688         (verify_expr): Allow RESULT_DECL.
21689         (gimple_duplicate_bb): Do not copy virtual operands.
21690         (gimple_duplicate_sese_region): Adjust.
21691         (gimple_duplicate_sese_tail): Likewise.
21692         (mark_virtual_ops_in_region): Remove.
21693         (move_sese_region_to_fn): Do not call it.
21694         * passes.c (init_optimization_passes): Remove pass_reset_cc_flags
21695         and pass_simple_dse.
21696         (execute_function_todo): Handle TODO_update_address_taken,
21697         call execute_update_addresses_taken for TODO_rebuild_alias.
21698         (execute_todo): Adjust.
21699         (execute_one_pass): Init dump files early.
21700         * ipa-struct-reorg.c (finalize_var_creation): Do not mark vars
21701         call-clobbered.
21702         (create_general_new_stmt): Clear vops.
21703         * tree-ssa-reassoc.c (get_rank): Adjust.
21704         * tree-vect-slp.c (vect_create_mask_and_perm): Do not mark
21705         symbols for renaming.
21706         * params.def (PARAM_MAX_ALIASED_VOPS): Remove.
21707         (PARAM_AVG_ALIASED_VOPS): Likewise.
21708         * tree-ssanames.c (init_ssanames): Allocate SYMS_TO_RENAME.
21709         (duplicate_ssa_name_ptr_info): No need to copy the shared bitmaps.
21710         * tree-ssa-operands.c: Simplify for new virtual operand representation.
21711         (operand_build_cmp, copy_virtual_operands,
21712         create_ssa_artificial_load_stmt, add_to_addressable_set,
21713         gimple_add_to_addresses_taken): Remove public functions.
21714         (unlink_stmt_vdef): New function.
21715
21716 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
21717
21718         * config.gcc (powerpc-*-linux*): Merge variants.
21719
21720 2009-04-02  Chao-ying Fu  <fu@mips.com>
21721             James Grosbach  <james.grosbach@microchip.com>
21722
21723         * config/mips/mips.c (mips_frame_info): Add acc_mask, num_acc,
21724         num_cop0_regs, acc_save_offset, cop0_save_offset, acc_sp_offset,
21725         cop0_sp_offset.
21726         (machine_function): Add interrupt_handler_p, use_shadow_register_set_p,
21727         keep_interrupts_masked_p, use_debug_exception_return_p.
21728         (mips_attribute_table): Add interrupt, use_shadow_register_set,
21729         keep_interrupts_masked, use_debug_exception_return.
21730         (mips_interrupt_type_p, mips_use_shadow_register_set_p,
21731         mips_keep_interrupts_masked_p, mips_use_debug_exception_return_p):
21732         New functions.
21733         (mips_function_ok_for_sibcall): Return false for interrupt handlers.
21734         (mips_print_operand): Process COP0 registers to print $0 .. $31
21735         correctly for GAS to process.
21736         (mips_interrupt_extra_call_saved_reg_p): New function.
21737         (mips_cfun_call_saved_reg_p): For interrupt handlers, we need to check
21738         extra registers.
21739         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
21740         (mips_compute_frame_info): Add supports for interrupt context that
21741         includes doubleword accumulators and COP0 registers.
21742         (mips_for_each_saved_acc): New function.
21743         (mips_for_each_saved_gpr_and_fpr): Change the function name from
21744         mips_for_each_saved_reg.
21745         (mips_save_reg): Save accumulators.
21746         (mips_kernel_reg_p): A new for_each_rtx callback.
21747         (mips_expand_prologue): Support interrupt handlers.
21748         (mips_restore_reg): Restore accumulators.
21749         (mips_expand_epilogue): Support interrupt handlers.
21750         (mips_can_use_return_insn): Return false for interrupt handlers.
21751         (mips_epilogue_uses): New function.
21752         * config/mips/mips.md (UNSPEC_ERET, UNSPEC_DERET, UNSPEC_DI,
21753         UNSPEC_EHB, UNSPEC_RDPGPR, UNSPEC_COP0): New UNSPEC.
21754         (mips_eret, mips_deret, mips_di, mips_ehb, mips_rdpgpr,
21755         cop0_move): New instructions.
21756         * config/mips/mips-protos.h (mips_epilogue_uses): Declare.
21757         * config/mips/mips.h (K0_REG_NUM, K1_REG_NUM, KERNEL_REG_P): New
21758         defines.
21759         (COP0_STATUS_REG_NUM, COP0_CAUSE_REG_NUM, COP0_EPC_REG_NUM):
21760         New defines.
21761         (CAUSE_IPL, SR_IPL, SR_EXL, SR_IE): New defines.
21762         (MIPS_PROLOGUE_TEMP_REGNUM, MIPS_EPILOGUE_TEMP_REGNUM): For
21763         interrupt handlers, we use K0 as the temporary register.
21764         (EPILOGUE_USES): Change to a function call.
21765         * config/mips/sde.h (MIPS_EPILOGUE_TEMP_REGNUM): For interrupt
21766         handlers, we use K0 as the temporary register.
21767
21768         * doc/extend.texi (Function Attributes): Document interrupt,
21769         use_shadow_register_set, keep_interrupts_masked,
21770         use_debug_exception_return for MIPS attributes.
21771
21772 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
21773
21774         * config.gcc (powerpc64-*-gnu*): Add rs6000/default64.h to tm_file.
21775         Remove a number of t-files from tmake_file.
21776         * config/rs6000/sysv4.opt (mprototype): Name variable target_prototype.
21777         * config/rs6000/sysv4.h (TARGET_PROTOTYPE): Define.
21778         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Set
21779         target_prototype, not TARGET_PROTOTYPE.
21780         (LINK_OS_GNU_SPEC): Define.
21781         * config/rs6000/t-linux64 (LIB2FUNCS_EXTRA): Delete tramp.S
21782         and darwin-ldoubdle.c.
21783
21784 2009-04-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
21785
21786         PR driver/39293
21787         * gcc.c (save_temps_flag): Add support for -save-temps=obj.
21788         (cpp_options): Ditto.
21789         (default_compilers): Ditto.
21790         (display_help): Ditto.
21791         (process_command): Ditto.
21792         (do_spec_1): Ditto.
21793         (set_input): Use lbasename instead of duplicate code.
21794         (save_temps_prefix): New static for -save-temps=obj.
21795         (save_temps_length): Ditto.
21796
21797         * doc/invoke.texi (-save-temps=obj): Document new variant to
21798         -save-temps switch.
21799
21800 2009-04-02  Jeff Law  <law@redhat.com>
21801
21802         * reload1.c (fixup_eh_region_notes): Remove write-only "trap_count"
21803         variable.
21804
21805 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
21806
21807         * configure.ac: Support -Bstatic/-Bdynamic for linker version > 2.
21808         * configure: Regenerated.
21809
21810 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
21811
21812         * c-decl.c (merge_decls): Make sure newdecl and olddecl don't
21813         share the argument list.
21814
21815 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
21816
21817         Merge
21818
21819         2009-02-12  Diego Novillo  <dnovillo@google.com>
21820
21821         * varpool.c (debug_varpool): New.
21822         * cgraph.h (debug_varpool): Declare.
21823
21824 2009-04-02  Jan Hubicka  <jh@suse.cz>
21825
21826         * passes.c (init_optimization_passes): Remove two copies of ehcleanup
21827         pass.
21828
21829 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
21830
21831         * config/i386/i386.c (ix86_abi): Move initialization to ...
21832         (override_options): Here.
21833
21834 2009-04-02  Christian Bruel  <christian.bruel@st.com>
21835
21836         * config/sh/sh.c (sh_dwarf_register_span): New function.
21837         (TARGET_DWARF_REGISTER_SPAN): Define.
21838         * config/sh/sh-protos.h (sh_dwarf_register_span): Declare.
21839
21840 2009-04-02  Ira Rosen  <irar@il.ibm.com>
21841
21842         PR tree-optimization/39595
21843         * tree-vect-slp.c (vect_build_slp_tree): Check that the size of
21844         interleaved loads group is not  greater than the SLP group size.
21845
21846 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
21847
21848         * builtins.c (is_builtin_name): New.
21849         (called_as_built_in): Use is_builtin_name.
21850         * tree.h (is_builtin_name): New.
21851         * varasm.c (incorporeal_function_p): Use is_builtin_name
21852
21853 2009-04-02  Andrew Stubbs  <ams@codesourcery.com>
21854
21855         * config/sh/linux-unwind.h: Disable when inhibit_libc is defined.
21856
21857 2009-04-02  Dodji Seketeli  <dodji@redhat.com>
21858
21859         PR c++/26693
21860         * c-decl.c (clone_underlying_type): Move this ...
21861         * c-common.c (set_underlying_type): ... here.
21862         Also, make sure the function properly sets TYPE_STUB_DECL() on
21863         the newly created typedef variant type.
21864         * c-common.h (is_typedef_decl, set_underlying_type): Declare ...
21865         * c-common.c (is_typedef_decl, set_underlying_type): ... new entry
21866         points.
21867
21868 2009-04-02  Richard Guenther  <rguenther@suse.de>
21869
21870         PR tree-optimization/37221
21871         * tree-flow.h (degenerate_phi_result): Declare.
21872         * tree-ssa-dom.c (degenerate_phi_result): Export.
21873         * tree-scalar-evolution.c (analyze_initial_condition): If
21874         the initial condition is defined by a degenerate PHI node
21875         use the degenerate value.
21876
21877 2009-04-01  Eric Botcazou  <ebotcazou@adacore.com>
21878
21879         PR rtl-optimization/39588
21880         * combine.c (merge_outer_ops): Do not set the constant when this
21881         is not necessary.
21882         (simplify_shift_const_1): Do not modify it either in this case.
21883
21884 2009-04-01  Steven Bosscher  <steven@gcc.gnu.org>
21885
21886         * config/ia64/ia64.c (ia64_handle_option): Inform user that Itanium1
21887         tuning is deprecated if -mtune value is set to an Itanium1 variant.
21888
21889 2009-04-01  Janis Johnson  <janis187@us.ibm.com>
21890
21891         PR c/29027
21892         * c-lex.c (interpret_float): Default (no suffix) is double.
21893
21894 2009-04-1  Xinliang David Li  <davidxl@google.com>
21895
21896         * config/i386/i386.c (legitimate_constant_p): Recognize
21897         all one vector constant.
21898
21899 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
21900
21901         * config/vax/vax.c: Add #includes to silence warnings.
21902         Change #include order to silence two warnings.
21903
21904 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
21905
21906         * config/vax/linux.h (TARGET_DEFAULT): Add the MASK_QMATH flag bit.
21907         (ASM_SPEC): Pass -k to the assembler for PIC code.
21908
21909 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
21910
21911         * config.gcc: Add vax-*-linux* to the switch.
21912         * config/vax/linux.h: New file. (TARGET_VERSION,
21913         TARGET_OS_CPP_BUILTINS, TARGET_DEFAULT, CPP_SPEC, LINK_SPEC): Define.
21914
21915 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
21916
21917         * config/vax/vax.c (vax_output_int_move, adjacent_operands_p):
21918         Use predicate macros instead of GET_CODE() == foo.
21919         * config/vax/vax.md (movsi_2, movstrictqi, and<mode>3, ashrsi3,
21920         ashlsi3, rotrsi3, <unnamed>): Likewise.
21921
21922 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
21923
21924         * config/vax/builtins.md (jbbssiqi, jbbssihi, jbbssisi, jbbcciqi,
21925         jbbccihi, jbbccisi): Remova trailing whitespace.
21926         * config/vax/constraints.md: Likewise.
21927         * config/vax/elf.h: (ASM_PREFERRED_EH_DATA_FORMAT): Likewise.
21928         * config/vax/openbsd1.h (OBSD_OLD_GAS): Likewise.
21929         * config/vax/predicates.md: Likewise.
21930         * config/vax/vax.c (print_operand_address, vax_output_int_move,
21931         vax_expand_addsub_di_operands, adjacent_operands_p): Likewise.
21932         * config/vax/vax.h: Likewise.
21933         * config/vax/vax.md (nonlocal_goto): Likewise.
21934
21935 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
21936
21937         * config/vax/vax.c (vax_float_literal, vax_output_int_move)
21938         (indirectable_address_p, adjacent_operands_p): Add spaces around
21939         braces.
21940         * config/vax/vax-protos.h (adjacent_operands_p): Likewise.
21941
21942 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
21943
21944         * config/vax/vax.c (legitimate_constant_address_p,
21945         legitimate_constant_p, indirectable_address_p, nonindexed_address_p,
21946         index_term_p, reg_plus_index_p, legitimate_address_p,
21947         vax_mode_dependent_address_p): Update comments to match functions
21948         modified by the recent int->bool conversion.
21949
21950 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
21951
21952         * config/vax/builtins.md: Update copyright message.
21953         * config/vax/constraints.md: Likewise.
21954         * config/vax/netbsd-elf.h: Likewise.
21955         * config/vax/predicates.md: Likewise.
21956         * config/vax/vax-protos.h: Likewise.
21957         * config/vax/vax.c: Likewise.
21958         * config/vax/vax.h: Likewise.
21959         * config/vax/vax.md: Likewise.
21960         * config/vax/vax.opt: Likewise.
21961
21962 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
21963
21964         * config/vax/builtins.md (ffssi2, ffssi2_internal,
21965         sync_lock_test_and_set<mode>, sync_lock_release<mode>): Fix indention.
21966         * config/vax/constraints.md (B, R): Likewise.
21967         * config/vax/predicates.md (external_memory_operand,
21968         nonimmediate_addsub_di_operand): Likewise.
21969         * config/vax/vax.c (vax_output_int_add): Likewise.
21970         * config/vax/vax.md (movsi, movsi_2, mov<mode>, call_value,
21971         untyped_call): Likewise.
21972
21973 2009-04-01  Matt Thomas  <matt@3am-software.com>
21974
21975         * config/vax/predicates.md: New file.
21976         (symbolic_operand, local_symbolic_operand, external_symbolic_operand,
21977         external_const_operand, nonsymbolic_operand, external_memory_operand,
21978         indirect_memory_operand, indexed_memory_operand,
21979         illegal_blk_memory_operand, illegal_addsub_di_memory_operand,
21980         nonimmediate_addsub_di_operand, general_addsub_di_operand): New
21981         predicate.
21982         * config/vax/constraints.md: New file.
21983         (Z0, U06,  U08, U16, CN6, S08, S16, I, J, K, L, M, N, O, G, Q, B, R, T):
21984         New constraint.
21985         * config/vax/builtins.md: New file.
21986         (ffssi2, ffssi2_internal, sync_lock_test_and_set<mode>, jbbssiqi,
21987         jbbssihi, jbbssisi, sync_lock_release<mode>, jbbcciqi, jbbccihi,
21988         jbbccisi): Define.
21989         * config/vax/vax.opt (mqmath): Add option.
21990         * config/vax/vax.md (isfx): Extend with DI.
21991         (VAXintQH, VAXintQHSD): Define.
21992         (tst<mode>, cmp<mode>, *bit<mode>, movmemhi1, truncsiqi2, truncsihi2,
21993         mulsidi3, add<mode>3, sub<mode>, mul<mode>3, div<mode>3, and<mode>,
21994         and<mode>_const_int, ior<mode>3, xor<mode>3, neg<mode>2,
21995         one_cmpl<mode>2, ashlsi3, lshrsi3, rotlsi3): Update constraints.
21996         (movdi): Update constraints and use vax_output_int_move().
21997         (movsi, movsi_2, pushlclsymreg, pushextsymreg, movlclsymreg,
21998         movextsymreg, adddi3, adcdi3, subdi3, sbcdi3, pushextsym, movextsym,
21999         pushlclsym, movlclsym, movaddr<mode>, pushaddr<mode>,
22000         nonlocal_goto): New.
22001         (mov<mode>): Extend accepted operand types.
22002         (subdi3_old): Rename from subdi3, change update constraints and use
22003         a new implementation.
22004         * config/vax/vax.h (PCC_BITFIELD_TYPE_MATTERS): Add space.
22005         (FRAME_POINTER_CFA_OFFSET, IRA_COVER_CLASSES, CLASS_MAX_NREGS,
22006         MOVE_RATIO, CLEAR_RATIO): Define.
22007         (REG_CLASS_FROM_LETTER, CONST_OK_FOR_LETTER_P,
22008         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT): Delete.
22009         (PRINT_OPERAND): Redefine using a function instead of inlined code.
22010         * config/vax/vax.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Define.
22011         (split_quadword_operands): Make static and really allow variable
22012         splitting.
22013         (print_operand_address): Update for PIC generation.
22014         (print_operand, vax_builtin_setjmp_frame_value, vax_output_int_subtract,
22015         indexable_address_p, fixup_mathdi_operand,
22016         vax_expand_addsub_di_operands, adjacent_operands_p): New.
22017         (vax_float_literal, legitimate_constant_p,
22018         indirectable_constant_address_p, index_term_p,
22019         reg_plus_index_p): Return bool instead of int.
22020         (vax_rtx_costs): Fix cost for CONST_INT, indent and use HOST_WIDE_INT
22021         where needed.
22022         (vax_output_int_move, vax_output_int_add): Extend to allow PIC
22023         generation.
22024         (vax_output_conditional_branch): Indent.
22025         (legitimate_constant_address_p, indirectable_constant_address_p,
22026         indirectable_address_p, nonindexed_address_p, legitimate_address_p,
22027         vax_mode_dependent_address_p): Return bool instead of int, update for
22028         PIC generation.
22029         * config/vax/vax-protos.h (legitimate_constant_address_p,
22030         legitimate_constant_p, legitimate_address_p,
22031         vax_mode_dependent_address_p): Change declaration to bool.
22032         (legitimate_pic_operand_p, adjacent_operands_p, print_operand,
22033         vax_expand_addsub_di_operands, vax_output_int_subtract,
22034         vax_output_movmemsi): Declare.
22035         (split_quadword_operands, vax_float_literal): Delete declaration.
22036         * config/vax/netbsd-elf.h (CC1_SPEC, CC1PLUS_SPEC) Define.
22037         * config/vax/elf.h (NO_EXTERNAL_INDIRECT_ADDRESS,
22038         VAX_CC1_AND_CC1PLUS_SPEC, ASM_PREFERRED_EH_DATA_FORMAT,
22039         ASM_OUTPUT_DWARF_PCREL): Define.
22040         (ASM_SPEC): Change definition to allow PIC generation.
22041
22042 2009-04-01  Steve Ellcey  <sje@cup.hp.com>
22043
22044         * doc/sourcebuild.texi: Update front-end requirements.
22045
22046 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
22047
22048         PR target/39226
22049         * config/rs6000/rs6000.md (andsi3_internal5_nomc,
22050         anddi3_internal2_nomc, anddi3_internal3_nomc): Removed.
22051         (booldi3_internal3): Use boolean_or_operator instead of
22052         boolean_operator.
22053
22054 2009-04-01  Joseph Myers  <joseph@codesourcery.com>
22055
22056         PR c/39605
22057         * c-decl.c (grokdeclarator): Pedwarn for file-scope array
22058         declarator whose size is not an integer constant expression but
22059         folds to an integer constant, then treat it as a constant
22060         subsequently.
22061
22062 2009-04-01  Richard Guenther  <rguenther@suse.de>
22063
22064         * fold-const.c (fold_plusminus_mult_expr): Do not fold
22065         i * 4 + 2 to (i * 2 + 1) * 2.
22066
22067 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
22068
22069         PR c/37772
22070         * c-parser.c (c_parser_asm_statement): Skip until close paren and
22071         return if c_parser_asm_string_literal returned NULL.
22072
22073 2009-04-01  Nick Clifton  <nickc@redhat.com>
22074
22075         * config/m32c/m32c.h (LIBGCC2_UNITS_PER_WORD): Define if not
22076         already defined.
22077         * config/m32c/t-m32c (LIB2FUNCS_EXTRA): Add m32c-lib2-trapv.c.
22078         * config/m32c/m32c-lib2.c: Remove unused typedefs.  Rename the
22079         other typedefs to avoid conflicts with libgcc2.c.  Define labels
22080         to gain 16-bit bit-manipulation functions from libgcc2.c and then
22081         include it.
22082         * config/m32c/m32c-lib2-trapv.c: New file.  Define labels
22083         to gain 16-bit trapping arithmetic functions from libgcc2.c and
22084         then include it.
22085
22086 2009-04-01  Rafael Avila de Espindola  <espindola@google.com>
22087
22088         * varasm.c (default_function_rodata_section): Declare DOT as
22089         const char*.
22090
22091 2009-04-01  Kai Tietz  <kai.tietz@onevision.com>
22092             Andrey Galkin  <agalkin@hypercom.com>
22093
22094         PR/39492
22095         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address):
22096         Make object_name unique for each process.
22097
22098 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
22099
22100         PR other/39591
22101         * omp-low.c (remove_exit_barrier): Don't optimize if there are any
22102         addressable variables in the parallel that could go out of scope while
22103         running queued tasks.
22104
22105 2009-04-01  Anatoly Sokolov  <aesok@post.ru>
22106
22107         * config/avr/avr.h (avr_case_values_threshold): Remove declaration.
22108         (CASE_VALUES_THRESHOLD): Redefine.
22109         * config/avr/avr.c (avr_override_options): Remove initialization of
22110         avr_case_values_threshold variable.
22111         (avr_case_values_threshold): Remove variable. Add new function.
22112         * config/avr/avr-protos.h (avr_case_values_threshold): Declare.
22113         * config/avr/avr.opt (mno-tablejump): Remove option.
22114         * doc/invoke.texi (AVR Options): Remove -mno-tablejump.
22115
22116 2009-04-01  DJ Delorie  <dj@redhat.com>
22117
22118         * varasm.c (default_function_rodata_section): Don't assume
22119         anything about where the first '.' in the section name is.
22120
22121 2009-04-01  Alan Modra  <amodra@bigpond.net.au>
22122
22123         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Delete redundant
22124         rs6000_emit_stack_tie.
22125
22126 2009-03-31  Ian Lance Taylor  <iant@google.com>
22127
22128         * tree-eh.c (tree_remove_unreachable_handlers): Compare
22129         gimple_code with GIMPLE_RESX, not RESX.
22130
22131 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
22132
22133         * c-common.c (c_get_ident): New.
22134         (c_common_nodes_and_builtins): Call it for type names that may be NULL.
22135
22136 2009-04-01  Ben Elliston  <bje@au.ibm.com>
22137
22138         * config/rs6000/sysv4.opt (msdata): Improve option description.
22139
22140 2009-03-31  Steve Ellcey  <sje@cup.hp.com>
22141
22142         * config/ia64/ia64.md (divsf3_internal_lat): Remove.
22143         (divdf3_internal_lat): Remove.
22144         (divxf3_internal_lat): Remove.
22145         (divxf3_internal_thr): Remove.
22146         (divxf): Use divxf3_internal.
22147         * config/ia64/div.md (divsf3_internal_lat): New.
22148         (divdf3_internal_lat): New.
22149         (divxf3_internal): New.
22150
22151 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
22152
22153         PR c/448
22154         * Makefile.in (USE_GCC_STDINT): Define.
22155         (stmp-int-hdrs): Install stdint.h if applicable.
22156         * c-common.c (CHAR16_TYPE): Define in terms of UINT_LEAST16_TYPE
22157         if known.
22158         (CHAR32_TYPE): Define in terms of UINT_LEAST32_TYPE if known.
22159         (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE, INT64_TYPE,
22160         UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
22161         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
22162         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
22163         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
22164         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
22165         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
22166         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
22167         (c_common_nodes_and_builtins): Initialize
22168         underlying_wchar_type_node.  Do not initialize
22169         signed_wchar_type_node or unsigned_wchar_type_node.  Initialize
22170         nodes for new types.
22171         (c_stddef_cpp_builtins): Define macros for new types.
22172         * c-common.h (CTI_SIGNED_WCHAR_TYPE, CTI_UNSIGNED_WCHAR_TYPE):
22173         Remove.
22174         (CTI_UNDERLYING_WCHAR_TYPE, CTI_SIG_ATOMIC_TYPE, CTI_INT8_TYPE,
22175         CTI_INT16_TYPE, CTI_INT32_TYPE, CTI_INT64_TYPE, CTI_UINT8_TYPE,
22176         CTI_UINT16_TYPE, CTI_UINT32_TYPE, CTI_UINT64_TYPE,
22177         CTI_INT_LEAST8_TYPE, CTI_INT_LEAST16_TYPE, CTI_INT_LEAST32_TYPE,
22178         CTI_INT_LEAST64_TYPE, CTI_UINT_LEAST8_TYPE, CTI_UINT_LEAST16_TYPE,
22179         CTI_UINT_LEAST32_TYPE, CTI_UINT_LEAST64_TYPE, CTI_INT_FAST8_TYPE,
22180         CTI_INT_FAST16_TYPE, CTI_INT_FAST32_TYPE, CTI_INT_FAST64_TYPE,
22181         CTI_UINT_FAST8_TYPE, CTI_UINT_FAST16_TYPE, CTI_UINT_FAST32_TYPE,
22182         CTI_UINT_FAST64_TYPE, CTI_INTPTR_TYPE, CTI_UINTPTR_TYPE): Define.
22183         (signed_wchar_type_node, unsigned_wchar_type_node): Remove.
22184         (underlying_wchar_type_node, sig_atomic_type_node, int8_type_node,
22185         int16_type_node, int32_type_node, int64_type_node,
22186         uint8_type_node, uint16_type_node, c_uint32_type_node,
22187         c_uint64_type_node, int_least8_type_node, int_least16_type_node,
22188         int_least32_type_node, int_least64_type_node,
22189         uint_least8_type_node, uint_least16_type_node,
22190         uint_least32_type_node, uint_least64_type_node,
22191         int_fast8_type_node, int_fast16_type_node, int_fast32_type_node,
22192         int_fast64_type_node, uint_fast8_type_node, uint_fast16_type_node,
22193         uint_fast32_type_node, uint_fast64_type_node, intptr_type_node,
22194         uintptr_type_node): Define.
22195         * c-cppbuiltin.c (builtin_define_constants,
22196         builtin_define_type_minmax): New.
22197         (builtin_define_stdint_macros): Define more macros.
22198         (c_cpp_builtins): Define more limit macros.
22199         (type_suffix): New.
22200         (builtin_define_type_max): Define in terms of
22201         builtin_define_type_minmax.  Remove is_long parameter.  All
22202         callers changed.
22203         * config.gcc (use_gcc_stdint): Define.
22204         (tm_file): Add glibc-stdint.h for targets using glibc or uClibc.
22205         Add newlib-stdint.h for generic targets.
22206         * config/glibc-stdint.h, config/newlib-stdint.h,
22207         ginclude/stdint-gcc.h, ginclude/stdint-wrap.h: New.
22208         * config/m32c/m32c.h (UINTPTR_TYPE): Define.
22209         * config/score/score.h (UINTPTR_TYPE): Define.
22210         * config/sol2.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
22211         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
22212         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
22213         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
22214         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
22215         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
22216         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
22217         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
22218         * config/spu/spu.h (STDINT_LONG32): Define.
22219         * configure.ac (use_gcc_stdint): Substitute.
22220         * configure: Regenerate.
22221         * doc/cpp.texi (__SIG_ATOMIC_TYPE__, __INT8_TYPE__,
22222         __INT16_TYPE__, __INT32_TYPE__, __INT64_TYPE__, __UINT8_TYPE__,
22223         __UINT16_TYPE__, __UINT32_TYPE__, __UINT64_TYPE__,
22224         __INT_LEAST8_TYPE__, __INT_LEAST16_TYPE__, __INT_LEAST32_TYPE__,
22225         __INT_LEAST64_TYPE__, __UINT_LEAST8_TYPE__, __UINT_LEAST16_TYPE__,
22226         __UINT_LEAST32_TYPE_, __UINT_LEAST64_TYPE__, __INT_FAST8_TYPE__,
22227         __INT_FAST16_TYPE__, __INT_FAST32_TYPE__, __INT_FAST64_TYPE__,
22228         __UINT_FAST8_TYPE__, __UINT_FAST16_TYPE__, __UINT_FAST32_TYPE__,
22229         __UINT_FAST64_TYPE__, __INTPTR_TYPE__, __UINTPTR_TYPE__,
22230         __WINT_MAX__, __SIZE_MAX__, __PTRDIFF_MAX__, __UINTMAX_MAX__,
22231         __SIG_ATOMIC_MAX__, __INT8_MAX__, __INT16_MAX__, __INT32_MAX__,
22232         __INT64_MAX__, __UINT8_MAX__, __UINT16_MAX__, __UINT32_MAX__,
22233         __UINT64_MAX__, __INT_LEAST8_MAX__, __INT_LEAST16_MAX__,
22234         __INT_LEAST32_MAX__, __INT_LEAST64_MAX__, __UINT_LEAST8_MAX__,
22235         __UINT_LEAST16_MAX__, __UINT_LEAST32_MAX__, __UINT_LEAST64_MAX__,
22236         __INT_FAST8_MAX__, __INT_FAST16_MAX__, __INT_FAST32_MAX__,
22237         __INT_FAST64_MAX__, __UINT_FAST8_MAX__, __UINT_FAST16_MAX__,
22238         __UINT_FAST32_MAX__, __UINT_FAST64_MAX__, __INTPTR_MAX__,
22239         __UINTPTR_MAX__, __WCHAR_MIN__, __WINT_MIN__, __SIG_ATOMIC_MIN__,
22240         __INT8_C, __INT16_C, __INT32_C, __INT64_C, __UINT8_C, __UINT16_C,
22241         __UINT32_C, __UINT64_C, __INTMAX_C, __UINTMAX_C): Document.
22242         * doc/tm.texi (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE,
22243         INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
22244         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
22245         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
22246         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
22247         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
22248         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
22249         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Document.
22250
22251 2009-03-31  Bernd Schmidt  <bernd.schmidt@analog.com>
22252
22253         * loop-iv.c (suitable_set_for_replacement): Renamed from
22254         simplify_using_assignment; changed to return bool and to accept new
22255         args DEST and SRC.  Return true iff we find a source/destination pair
22256         that can be used to make a replacement, and fill SRC and DEST if so.
22257         Remove arg ALTERED.  Don't deal with altered regs here.  All callers
22258         changed.
22259         (simplify_using_initial_values): Deal with altered regs here and track
22260         more precisely the effect they have on the validity of our expression.
22261
22262         * loop-iv.c (simplify_using_condition): A condition of the form
22263         (EQ REG CONST) can be used to simply make a substitution.
22264         (simplify_using_initial_values): Keep track of conditions we have seen
22265         and keep using them to simplify new expressions, while applying the
22266         same substitutions to them as to the expression.
22267
22268         * simplify-rtx.c (simplify_relational_operation_1): Simplify
22269         (LTU (PLUS a C) C) or (LTU (PLUS a C) a) to (GEU a -C); likewise with
22270         GEU/LTU reversed.
22271
22272         * loop-iv.c (determine_max_iter): New arg OLD_NITER.  All callers
22273         changed.  Use this when trying to improve the upper bound.
22274         Generate the comparison by using simplify_gen_relational.
22275
22276         * loop-iv.c (simple_rhs_p): Allow more kinds of expressions.
22277
22278         * loop-iv.c (replace_single_def_regs, replace_in_expr): New static
22279         functions.
22280         (simplify_using_assignment, simplify_using_initial_values): Call
22281         replace_in_expr to make replacements.  Call replace_single_def_regs
22282         once on the initial version of the expression.
22283
22284 2009-03-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
22285
22286         PR target/27237
22287         * doc/invoke.texi (ARM Options): Update documentation for -mthumb.
22288
22289 2009-03-31  Richard Guenther  <rguenther@suse.de>
22290
22291         PR middle-end/31029
22292         * fold-const.c (fold_binary): Fold X +- Y CMP X to Y CMP 0 for
22293         equality comparisons.  Fold C - X CMP X if C % 2 == 1.
22294
22295 2009-03-31  Richard Guenther  <rguenther@suse.de>
22296
22297         * tree.h (div_if_zero_remainder): Declare.
22298         * fold-const.c (div_if_zero_remainder): Export.
22299         * tree-ssa-forwprop.c
22300         (forward_propagate_addr_into_variable_array_index): Handle
22301         constant array index addition outside of the variable index.
22302
22303 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
22304
22305         PR target/39592
22306         * config/i386/i386.md (*floatunssi<mode>2_1, two unnamed
22307         define_splits, floatunssi<mode>2): Require x87 conversions from
22308         DImode to be permitted.
22309
22310 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
22311
22312         PR preprocessor/15638
22313         * c-common.c (c_cpp_error): Handle CPP_DL_FATAL.
22314
22315 2009-03-31  Richard Guenther  <rguenther@suse.de>
22316
22317         PR middle-end/23401
22318         PR middle-end/27810
22319         * tree.h (DECL_GIMPLE_FORMAL_TEMP_P): Remove.
22320         (struct tree_decl_with_vis): Remove gimple_formal_temp member.
22321         * tree-eh.c (lower_eh_constructs_2): Move LHS assignment to
22322         a separate statement.
22323         * gimplify.c (pop_gimplify_context): Remove formal temp handling.
22324         (lookup_tmp_var): Likewise.
22325         (is_gimple_formal_tmp_or_call_rhs): Remove.
22326         (is_gimple_reg_or_call_rhs): Rename to ...
22327         (is_gimple_reg_rhs_or_call): ... this.
22328         (is_gimple_mem_or_call_rhs): Rename to ...
22329         (is_gimple_mem_rhs_or_call): ... this.
22330         (internal_get_tmp_var): Use is_gimple_reg_rhs_or_call.  Set
22331         DECL_GIMPLE_REG_P only if is_formal is true.
22332         (gimplify_compound_lval): Use is_gimple_reg.  Remove workaround
22333         for non-proper post-modify expression gimplification.
22334         (gimplify_self_mod_expr): For post-modify expressions gimplify
22335         the lvalue to a minimal lvalue.
22336         (rhs_predicate_for): Remove formal temp case.
22337         (gimplify_modify_expr_rhs): Likewise.
22338         (gimplify_addr_expr): Use is_gimple_reg.
22339         (gimplify_expr): Remove formal temp cases.
22340         (gimple_regimplify_operands): Likewise.
22341         * tree-ssa-pre.c (get_or_alloc_expr_for): Treat EXC_PTR_EXPR
22342         and FILTER_EXPR like constants.
22343         * gimple.c (walk_gimple_op): Fix val_only initialization, use
22344         is_gimple_reg.
22345         (is_gimple_formal_tmp_rhs): Remove.
22346         (is_gimple_reg_rhs): Remove special casing.
22347         (is_gimple_mem_rhs): Fix.
22348         (is_gimple_reg): Move DECL_GIMPLE_REG_P handling earlier.
22349         (is_gimple_formal_tmp_var): Remove.
22350         (is_gimple_formal_tmp_reg): Likewise.
22351         (is_gimple_min_lval): Allow invariant component ref parts.
22352         * gimple.h (is_gimple_formal_tmp_rhs, is_gimple_formal_tmp_var,
22353         is_gimple_formal_tmp_reg): Remove declarations.
22354         * tree-cfg.c (verify_expr): Verify that variables with address
22355         taken do not have DECL_GIMPLE_REG_P set.
22356         * tree-mudflap.c (mf_build_check_statement_for): Use
22357         force_gimple_operand instead of gimplify_expr.
22358
22359 2009-03-31  Ayal Zaks  <zaks@il.ibm.com>
22360
22361         * modulo-sched.c (sms_schedule_by_order): Pass the actual
22362         schedulable rows to compute_split_row.
22363
22364 2009-03-31  Ben Elliston  <bje@au.ibm.com>
22365
22366         PR target/31635
22367         * config/rs6000/rs6000.c (rs6000_handle_option): Handle
22368         OPT_mvrsave.
22369
22370 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
22371
22372         * doc/invoke.texi (RS/6000 and PowerPC Options):Document mtls-markers.
22373         * configure.ac (HAVE_AS_TLS_MARKERS): New gas feature check.
22374         * configure: Regenerate.
22375         * config.in: Regenerate.
22376         * config/rs6000/rs6000.opt (mtls-markers): Add.
22377         * config/rs6000/rs6000.h (TARGET_TLS_MARKERS): Define.
22378         * config/rs6000/rs6000.md (tls_gd_aix, tls_gd_sysv): Add splitter.
22379         (tls_ld_aix, tls_ld_sysv): Likewise.
22380         (tls_gd, tls_gd_call_aix, tls_gd_call_sysv): New insns.
22381         (tls_ld, tls_ld_call_aix, tls_ld_call_sysv): Likewise.
22382
22383 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
22384
22385         * config/spu/spu.c (spu_expand_prologue): Delete redundant code.
22386
22387 2009-03-30  Jan Hubicka  <jh@suse.cz>
22388
22389         * tree-eh.c (make_eh_edges): Set probability 100% to first edge
22390         out of RESX.
22391         (tree_remove_unreachable_handlers): Cleanup EH predecestor
22392         detection and label handling.
22393
22394 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
22395
22396         * ira-int.h (ira_allocno): Rename left_conflicts_num to
22397         left_conflicts_size.
22398         (ALLOCNO_LEFT_CONFLICTS_NUM): Rename to
22399         ALLOCNO_LEFT_CONFLICTS_SIZE.
22400
22401         * ira-color.c (allocno_spill_priority, push_allocno_to_stack,
22402         remove_allocno_from_bucket_and_push,
22403         allocno_spill_priority_compare, push_allocnos_to_stack,
22404         setup_allocno_available_regs_num): Use ALLOCNO_LEFT_CONFLICTS_SIZE
22405         instead of ALLOCNO_LEFT_CONFLICTS_NUM.
22406         (setup_allocno_left_conflicts_num): Ditto.  Rename to
22407         setup_allocno_left_conflicts_size.
22408         (put_allocno_into_bucket): Use ALLOCNO_LEFT_CONFLICTS_SIZE
22409         instead of ALLOCNO_LEFT_CONFLICTS_NUM and
22410         setup_allocno_left_conflicts_size instead of
22411         setup_allocno_left_conflicts_num.
22412
22413         * ira-build.c (ira_create_allocno): Use
22414         ALLOCNO_LEFT_CONFLICTS_SIZE instead of
22415         ALLOCNO_LEFT_CONFLICTS_NUM.
22416
22417 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
22418
22419         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
22420         instead of DF_LR_OUT.
22421
22422         * ira-lives.c (process_bb_node_lives): Ditto.
22423
22424         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
22425         instead of DF_LR_{OUT,IN}.
22426
22427         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
22428
22429         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
22430
22431 2009-03-30  Jan Hubicka  <jh@suse.cz>
22432
22433         * except.c (label_to_region_map): Fix thinko.
22434
22435 2009-03-30  Steve Ellcey  <sje@cup.hp.com>
22436
22437         PR middle-end/38237
22438         * tree.h (tree_find_value): New declaration.
22439         * tree.c (tree_find_value): New function.
22440         * varasm.c (assemble_external): Avoid duplicate entries on lists.
22441
22442 2009-03-30  Jakub Jelinek  <jakub@redhat.com>
22443
22444         PR debug/39563
22445         * c-decl.c (struct c_binding): Add locus field.
22446         (bind): Add locus argument, set locus field from it.
22447         (pop_scope): For b->nested VAR_DECL or FUNCTION_DECL,
22448         add a DECL_EXTERNAL copy of b->decl to current BLOCK_VARS.
22449         (push_file_scope, pushtag, pushdecl, pushdecl_top_level,
22450         implicitly_declare, undeclared_variable, lookup_label,
22451         declare_label, c_make_fname_decl, c_builtin_function,
22452         c_builtin_function_ext_scope, store_parm_decls_newstyle): Adjust
22453         bind callers.
22454
22455 2009-03-30  H.J. Lu  <hongjiu.lu@intel.com>
22456
22457         PR target/38781
22458         * config/i386/i386.c (classify_argument): Check total size of
22459         structure.
22460
22461 2009-03-30  Martin Jambor  <mjambor@suse.cz>
22462
22463         * ipa-prop.h (jump_func_type): Rename IPA_UNKNOWN, IPA_CONST,
22464         IPA_CONST_MEMBER_PTR, and IPA_PASS_THROUGH to IPA_JF_UNKNOWN,
22465         IPA_JF_CONST, IPA_JF_CONST_MEMBER_PTR, and IPA_JF_PASS_THROUGH
22466         respectively.
22467
22468         * tree-dfa.c (get_ref_base_and_extent): Return -1 maxsize if
22469         seen_variable_array_ref while also traversing a union.
22470
22471         * tree-inline.c (optimize_inline_calls): Do not call
22472         cgraph_node_remove_callees.
22473         * cgraphbuild.c (remove_cgraph_callee_edges): New function.
22474         (pass_remove_cgraph_callee_edges): New variable.
22475         * passes.c (init_optimization_passes): Add
22476         pass_remove_cgraph_callee_edges after early inlining and before all
22477         late intraprocedural passes.
22478
22479         * omp-low.c (expand_omp_taskreg): Always set current_function_decl.
22480
22481 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
22482
22483         * config/sparc/sparc.md (*nand<V64mode>_vis, *nand<V32mode>_vis):
22484         Fix typos in names.
22485
22486 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
22487
22488         * combine.c (simplify_comparison): Use have_insn_for.
22489         * dojump.c (do_jump): Likewise.
22490
22491 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
22492
22493         * config/sparc/sparc.c (sparc_compare_emitted): Remove.
22494         (gen_compare_reg, emit_v9_brxx_insn): Handle MODE_CC
22495         sparc_compare_op0 like sparc_compare_emitted used to be handled.
22496         (sparc_expand_compare_and_swap_12): Set sparc_compare_op0
22497         instead of sparc_compare_emitted.
22498         * config/sparc/sparc.h (sparc_compare_emitted): Remove.
22499         * config/sparc/sparc.md (stack_protect_test): Set sparc_compare_op0
22500         instead of sparc_compare_emitted.
22501
22502 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
22503
22504         * bb-reorder.c (partition_hot_cold_basic_blocks): Do not
22505         enter/exit cfglayout mode.
22506         (pass_partition_block): Require it.
22507         * combine.c (find_single_use, reg_dead_at_p): Use CFG.
22508         (combine_instructions): Track basic blocks instead of labels.
22509         (update_cfg_for_uncondjump): New.
22510         (try_combine): Use it.  Update jumps after rescanning.
22511         (pass_combine): Require PROP_cfglayout.
22512         * passes.c (pass_outof_cfg_layout_mode): Move after regmove.
22513
22514 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
22515
22516         * cfglayout.c (pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode):
22517         Provide/destroy PROP_cfglayout respectively.
22518         * gcse.c (pass_jump_bypass, pass_gcse): Require it.
22519         * tree-pass.h (PROP_cfglayout): New.
22520
22521 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
22522
22523         * fold-const.c (const_binop, fold_convert_const_real_from_fixed,
22524         fold_convert_const_fixed_from_fixed,
22525         fold_convert_const_fixed_from_int,
22526         fold_convert_const_fixed_from_real, fold_negate_const): Do not
22527         set TREE_CONSTANT_OVERFLOW.
22528         * tree.def: Remove mention of TREE_CONSTANT_OVERFLOW.
22529         * tree.h (TREE_CONSTANT_OVERFLOW): Delete.
22530
22531 2009-03-30  Ira Rosen  <irar@il.ibm.com>
22532
22533         * tree-vect-loop-manip.c: New file.
22534         * tree-vectorizer.c: Update documentation and included files.
22535         (vect_loop_location): Make extern.
22536         (rename_use_op): Move to tree-vect-loop-manip.c
22537         (rename_variables_in_bb, rename_variables_in_loop,
22538         slpeel_update_phis_for_duplicate_loop,
22539         slpeel_update_phi_nodes_for_guard1,
22540         slpeel_update_phi_nodes_for_guard2, slpeel_make_loop_iterate_ntimes,
22541         slpeel_tree_duplicate_loop_to_edge_cfg, slpeel_add_loop_guard,
22542         slpeel_can_duplicate_loop_p, slpeel_verify_cfg_after_peeling,
22543         set_prologue_iterations, slpeel_tree_peel_loop_to_edge,
22544         find_loop_location): Likewise.
22545         (new_stmt_vec_info): Move to tree-vect-stmts.c.
22546         (init_stmt_vec_info_vec, free_stmt_vec_info_vec, free_stmt_vec_info,
22547         get_vectype_for_scalar_type, vect_is_simple_use,
22548         supportable_widening_operation, supportable_narrowing_operation):
22549         Likewise.
22550         (bb_in_loop_p): Move to tree-vect-loop.c.
22551         (new_loop_vec_info, destroy_loop_vec_info,
22552         reduction_code_for_scalar_code, report_vect_op,
22553         vect_is_simple_reduction, vect_is_simple_iv_evolution): Likewise.
22554         (vect_can_force_dr_alignment_p): Move to tree-vect-data-refs.c.
22555         (vect_supportable_dr_alignment): Likewise.
22556         * tree-vectorizer.h (tree-data-ref.h): Include.
22557         (vect_loop_location): Declare.
22558         Reorganize function declarations according to the new file structure.
22559         * tree-vect-loop.c: New file.
22560         * tree-vect-analyze.c: Remove. Move functions to tree-vect-data-refs.c,
22561         tree-vect-stmts.c, tree-vect-slp.c, tree-vect-loop.c.
22562         * tree-vect-data-refs.c: New file.
22563         * tree-vect-patterns.c (timevar.h): Don't include.
22564         * tree-vect-stmts.c: New file.
22565         * tree-vect-transform.c: Remove. Move functions to tree-vect-stmts.c,
22566         tree-vect-slp.c, tree-vect-loop.c.
22567         * Makefile.in (OBJS-common): Remove tree-vect-analyze.o and
22568         tree-vect-transform.o. Add tree-vect-data-refs.o, tree-vect-stmts.o,
22569         tree-vect-loop.o, tree-vect-loop-manip.o, tree-vect-slp.o.
22570         (tree-vect-analyze.o): Remove.
22571         (tree-vect-transform.o): Likewise.
22572         (tree-vect-data-refs.o): Add rule.
22573         (tree-vect-stmts.o, tree-vect-loop.o, tree-vect-loop-manip.o,
22574         tree-vect-slp.o): Likewise.
22575         (tree-vect-patterns.o): Remove redundant dependencies.
22576         (tree-vectorizer.o): Likewise.
22577         * tree-vect-slp.c: New file.
22578
22579 2009-03-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
22580
22581         * optc-gen.awk: Warn if an option flag has multiple different
22582         help strings.
22583
22584 2009-03-30  Sebastian Pop  <sebastian.pop@amd.com>
22585
22586         * doc/invoke.texi (-floop-interchange, -floop-strip-mine,
22587         -floop-block): Document dependences on PPL, CLooG and Graphite.
22588
22589 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
22590
22591         PR rtl-optimization/323
22592         * c-common.c (c_fully_fold, convert_and_check,
22593         c_common_truthvalue_conversion): Handle EXCESS_PRECISION_EXPR.
22594         (c_fully_fold_internal): Disallow EXCESS_PRECISION_EXPR.
22595         * c-common.def (EXCESS_PRECISION_EXPR): New.
22596         * c-cppbuiltin.c (builtin_define_float_constants): Define
22597         constants with enough digits for long double.
22598         * c-lex.c (interpret_float): Interpret constant with excess
22599         precision where appropriate.
22600         * c-opts.c (c_common_post_options): Set
22601         flag_excess_precision_cmdline.  Give an error for
22602         -fexcess-precision=standard for C++ for processors where the
22603         option is significant.
22604         * c-parser.c (c_parser_conditional_expression): Handle excess
22605         precision in condition.
22606         * c-typeck.c (convert_arguments): Handle arguments with excess
22607         precision.
22608         (build_unary_op): Move excess precision outside operation.
22609         (build_conditional_expr): Likewise.
22610         (build_compound_expr): Likewise.
22611         (build_c_cast): Do cast on operand of EXCESS_PRECISION_EXPR.
22612         (build_modify_expr): Handle excess precision in RHS.
22613         (convert_for_assignment): Handle excess precision in converted
22614         value.
22615         (digest_init, output_init_element, process_init_element): Handle
22616         excess precision in initializer.
22617         (c_finish_return): Handle excess precision in return value.
22618         (build_binary_op): Handle excess precision in operands and add
22619         excess precision as needed for operation.
22620         * common.opt (-fexcess-precision=): New option.
22621         * config/i386/i386.h (X87_ENABLE_ARITH, X87_ENABLE_FLOAT): New.
22622         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
22623         For standard excess precision, output explicit conversion to and
22624         truncation from XFmode.
22625         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1,
22626         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp,
22627         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387, two unnamed
22628         define_splits, floatdi<X87MODEF:mode>2_i387_with_xmm, two unnamed
22629         define_splits, *floatunssi<mode>2_1, two unnamed define_splits,
22630         floatunssi<mode>2, add<mode>3, sub<mode>3, mul<mode>3, divdf3,
22631         divsf3, *fop_<mode>_comm_i387, *fop_<mode>_1_i387,
22632         *fop_<MODEF:mode>_2_i387, *fop_<MODEF:mode>_3_i387,
22633         *fop_df_4_i387, *fop_df_5_i387, *fop_df_6_i387, two unnamed
22634         define_splits, sqrt<mode>2): Disable where appropriate for
22635         standard excess precision.
22636         * convert.c (convert_to_real): Do not shorten arithmetic to type
22637         for which excess precision would be used.
22638         * defaults.h (TARGET_FLT_EVAL_METHOD_NON_DEFAULT): Define.
22639         * doc/invoke.texi (-fexcess-precision=): Document option.
22640         (-mfpmath=): Correct index entry.
22641         * flags.h (enum excess_precision, flag_excess_precision_cmdline,
22642         flag_excess_precision): New.
22643         * langhooks.c (lhd_post_options): Set
22644         flag_excess_precision_cmdline.
22645         * opts.c (common_handle_option): Handle -fexcess-precision=.
22646         * toplev.c (flag_excess_precision_cmdline, flag_excess_precision,
22647         init_excess_precision): New.
22648         (lang_dependent_init_target): Call init_excess_precision.
22649         * tree.c (excess_precision_type): New.
22650         * tree.h (excess_precision_type): Declare.
22651
22652 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
22653
22654         PR c/35235
22655         * c-typeck.c (build_component_ref): Do not copy qualifiers from
22656         non-lvalue to component.
22657
22658 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
22659
22660         PR preprocessor/34695
22661         * Makefile.in (c-opts.o): Depend on c-tree.h.
22662         * c-common.c: Move down include of diagnostic.h.
22663         (done_lexing, c_cpp_error): New.
22664         * c-common.h (done_lexing): Declare.
22665         * c-decl.c (c_write_global_declarations): Don't check cpp_errors
22666         (parse_in).
22667         * c-opts.c: Include c-tree.h.
22668         (c_common_init_options): Set preprocessor error callback.
22669         (c_common_handle_option): Do not set preprocessor
22670         inhibit_warnings, warnings_are_errors, warn_system_headers,
22671         pedantic_errors or inhibit_warnings flags.
22672         (c_common_post_options): Do not check cpp_errors (parse_in).
22673         (c_common_finish): Do not output dependencies if there were
22674         errors.  Do not check return value of cpp_finish.
22675         * c-ppoutput.c (pp_file_change): Set input_location.
22676         * c-tree.h (c_cpp_error): Declare.
22677         * diagnostic.c (diagnostic_set_info_translated): Also initialize
22678         override_column.
22679         (diagnostic_build_prefix): Check override_column.
22680         * diagnostic.h (diagnostic_info): Add override_column field.
22681         (diagnostic_override_column): Define.
22682
22683 2009-03-28  Paolo Bonzini  <bonzini@gnu.org>
22684
22685         * c-common.c (c_expand_expr, c_staticp): Remove.
22686         * c-common.def (COMPOUND_LITERAL_EXPR): Delete.
22687         * c-common.h (emit_local_var, c_staticp, COMPOUND_LITERAL_EXPR_DECL,
22688         COMPOUND_LITERAL_EXPR_DECL_EXPR): Remove.
22689         * c-gimplify.c (gimplify_compound_literal_expr,
22690         optimize_compound_literals_in_ctor): Remove.
22691         (c_gimplify_expr): Remove COMPOUND_LITERAL_EXPR handling.
22692         * c-objc-common.h (LANG_HOOKS_STATICP): Remove.
22693         * c-semantics.c (emit_local_var): Remove.
22694
22695         * langhooks-def.h (lhd_expand_expr): Remove.
22696         * langhooks.c (lhd_expand_expr): Remove.
22697         * langhooks.h (LANG_HOOKS_DEF): Remove LANG_HOOKS_EXPAND_EXPR.
22698
22699         * expr.c (expand_expr_real_1): Move COMPOUND_LITERAL_EXPR
22700         handling from c-semantics.c; don't call into langhook.
22701         (expand_expr_addr_expr_1): Check that we don't get non-GENERIC trees.
22702         * gimplify.c (gimplify_compound_literal_expr,
22703         optimize_compound_literals_in_ctor): Move from c-gimplify.c.
22704         (gimplify_init_constructor): Call optimize_compound_literals_in_ctor.
22705         (gimplify_modify_expr_rhs, gimplify_expr): Handle COMPOUND_LITERAL_EXPR
22706         as was done in c-gimplify.c.
22707         * tree.c (staticp): Move COMPOUND_LITERAL_EXPR handling from c_staticp.
22708         * tree.h (COMPOUND_LITERAL_EXPR_DECL, COMPOUND_LITERAL_EXPR_DECL_EXPR):
22709         Move from c-common.h.
22710         * tree.def (COMPOUND_LITERAL_EXPR): Move from c-common.def.
22711
22712         * tree.c (staticp): Do not call langhook.
22713         * langhooks.c (lhd_staticp): Delete.
22714         * langhooks-def.h (lhd_staticp): Delete prototype.
22715         (LANG_HOOKS_STATICP): Delete.
22716         (LANG_HOOKS_INITIALIZER): Delete LANG_HOOKS_STATICP.
22717
22718         * doc/c-tree.texi (Expression nodes): Refer to DECL_EXPRs
22719         instead of DECL_STMTs.
22720
22721 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
22722
22723         PR c/456
22724         PR c/5675
22725         PR c/19976
22726         PR c/29116
22727         PR c/31871
22728         PR c/35198
22729         * builtins.c (fold_builtin_sincos): Build COMPOUND_EXPR in
22730         void_type_node.
22731         (fold_call_expr): Return a NOP_EXPR from folding rather than the
22732         contained expression.
22733         * c-common.c (c_fully_fold, c_fully_fold_internal, c_save_expr): New.
22734         (c_common_truthvalue_conversion): Use c_save_expr.  Do not fold
22735         conditional expressions for C.
22736         (decl_constant_value_for_optimization): Move from
22737         decl_constant_value_for_broken_optimization in c-typeck.c.  Check
22738         whether optimizing and that the expression is a VAR_DECL not of
22739         array type instead of doing such checks in the caller.  Do not
22740         check pedantic.  Call gcc_unreachable for C++.
22741         * c-common.def (C_MAYBE_CONST_EXPR): New.
22742         * c-common.h (c_fully_fold, c_save_expr,
22743         decl_constant_value_for_optimization): New prototypes.
22744         (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
22745         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
22746         EXPR_INT_CONST_OPERANDS): Define.
22747         * c-convert.c (convert): Strip nops from expression.
22748         * c-decl.c (groktypename): Take extra parameters expr and
22749         expr_const_operands.  Update call to grokdeclarator.
22750         (start_decl): Update call to grokdeclarator.  Add statement for
22751         expressions used in type of decl.
22752         (grokparm): Update call to grokdeclarator.
22753         (push_parm_decl): Update call to grokdeclarator.
22754         (build_compound_literal): Add parameter non_const and build a
22755         C_MAYBE_COSNT_EXPR if applicable.
22756         (grokdeclarator): Take extra parameters expr and
22757         expr_const_operands.  Track expressions used in declaration
22758         specifiers and declarators.  Fold array sizes and track whether
22759         they are constant expressions and whether they are integer
22760         constant expressions.
22761         (parser_xref_tag): Set expr and expr_const_operands fields in
22762         return value.
22763         (grokfield): Update call to grokdeclarator.
22764         (start_function): Update call to grokdeclarator.
22765         (build_null_declspecs): Set expr and expr_const_operands fields in
22766         return value.
22767         (declspecs_add_type): Handle expressions in typeof specifiers.
22768         * c-parser.c (c_parser_declspecs): Set expr and
22769         expr_const_operands fields for declaration specifiers.
22770         (c_parser_enum_specifier): Likewise.
22771         (c_parser_struct_or_union_specifier): Likewise.
22772         (c_parser_typeof_specifier): Likewise.  Update call to
22773         groktypename.  Fold expression as needed.  Return expressions with
22774         type instead of adding statements.
22775         (c_parser_attributes): Update calls to c_parser_expr_list.
22776         (c_parser_statement_after_labels): Fold expression before passing
22777         to objc_build_throw_stmt.
22778         (c_parser_condition): Fold expression.
22779         (c_parser_asm_operands): Fold expression.
22780         (c_parser_conditional_expression): Use c_save_expr.  Update call
22781         to build_conditional_expr.
22782         (c_parser_alignof_expression): Update call to groktypename.
22783         (c_parser_postfix_expression): Preserve C_MAYBE_CONST_EXPR as
22784         original_code.  Fold expression argument of va_arg.  Create
22785         C_MAYBE_CONST_EXPR to preserve side effects of expressions in type
22786         argument to va_arg.  Update calls to groktypename.  Fold array
22787         index for offsetof.  Verify that first argument to
22788         __builtin_choose_expr has integer type.
22789         (c_parser_postfix_expression_after_paren_type): Update calls to
22790         groktypename and build_compound_literal.  Handle expressions with
22791         side effects in type name.
22792         (c_parser_postfix_expression_after_primary): Update call to
22793         c_parser_expr_list.  Set original_code for calls to
22794         __builtin_constant_p.
22795         (c_parser_expr_list): Take extra parameter fold_p.  Fold
22796         expressions if requested.
22797         (c_parser_objc_type_name): Update call to groktypename.
22798         (c_parser_objc_synchronized_statement): Fold expression.
22799         (c_parser_objc_receiver): Fold expression.
22800         (c_parser_objc_keywordexpr): Update call to c_parser_expr_list.
22801         (c_parser_omp_clause_num_threads, c_parser_omp_clause_schedule,
22802         c_parser_omp_atomic, c_parser_omp_for_loop): Fold expressions.
22803         * c-tree.h (CONSTRUCTOR_NON_CONST): Define.
22804         (struct c_typespec): Add elements expr and expr_const_operands.
22805         (struct c_declspecs): Add elements expr and expr_const_operands.
22806         (groktypename, build_conditional_expr, build_compound_literal):
22807         Update prototypes.
22808         (in_late_binary_op): Declare.
22809         * c-typeck.c (note_integer_operands): New function.
22810         (in_late_binary_op): New variable.
22811         (decl_constant_value_for_broken_optimization): Move to c-common.c
22812         and rename to decl_constant_value_for_optimization.
22813         (default_function_array_conversion): Do not strip nops.
22814         (default_conversion): Do not call
22815         decl_constant_value_for_broken_optimization.
22816         (build_array_ref): Do not fold result.
22817         (c_expr_sizeof_expr): Fold operand.  Use C_MAYBE_CONST_EXPR for
22818         result when operand is a VLA.
22819         (c_expr_sizeof_type): Update call to groktypename.  Handle
22820         expressions included in type name.  Use C_MAYBE_CONST_EXPR for
22821         result when operand names a VLA type.
22822         (build_function_call): Update call to build_compound_literal.
22823         Only fold result for calls to __builtin_* functions.  Strip
22824         NOP_EXPR from INTEGER_CST returned from such functions.  Fold
22825         the function designator.
22826         (convert_arguments): Fold arguments.  Update call to
22827         convert_for_assignment.
22828         (build_unary_op): Handle increment and decrement of
22829         C_MAYBE_CONST_EXPR.  Move lvalue checks for increment and
22830         decrement earlier.  Fold operand of increment and decrement.
22831         Handle address of C_MAYBE_CONST_EXPR.  Only fold expression being
22832         built for integer operand.  Wrap returns that are INTEGER_CSTs
22833         without being integer constant expressions or that have integer
22834         constant operands without being INTEGER_CSTs.
22835         (lvalue_p): Handle C_MAYBE_CONST_EXPR.
22836         (build_conditional_expr): Add operand ifexp_bcp.  Track whether
22837         result is an integer constant expression or can be used in
22838         unevaluated parts of one and avoid folding and wrap as
22839         appropriate.  Fold operands before possibly doing -Wsign-compare
22840         warnings.
22841         (build_compound_expr): Wrap result for C99 if operands can be used
22842         in integer constant expressions.
22843         (build_c_cast): Update call to digest_init.  Do not ignore
22844         overflow from casting floating-point constants to integers.  Wrap
22845         results that could be confused with integer constant expressions,
22846         null pointer constants or floating-point constants.
22847         (c_cast_expr): Update call to groktypename.  Handle expressions
22848         included in type name.
22849         (build_modify_expr): Handle modifying a C_MAYBE_CONST_EXPR.  Fold
22850         lhs inside possible SAVE_EXPR.  Fold RHS before assignment.
22851         Update calls to convert_for_assignment.
22852         (convert_for_assignment): Take new parameter
22853         null_pointer_constant.  Do not strip nops or call
22854         decl_constant_value_for_broken_optimization.  Set
22855         in_late_binary_op for conversions to boolean.
22856         (store_init_value): Update call to digest_init.
22857         (digest_init): Take new parameter null_pointer_constant.  Do not
22858         call decl_constant_value_for_broken_optimization.  pedwarn for
22859         initializers not constant expressions.  Update calls to
22860         convert_for_assignment.
22861         (constructor_nonconst): New.
22862         (struct constructor_stack): Add nonconst element.
22863         (really_start_incremental_init, push_init_level, pop_init_level):
22864         Handle constructor_nonconst and nonconst element.
22865         (set_init_index): Call constant_expression_warning for array
22866         designators.
22867         (output_init_element): Fold value.  Set constructor_nonconst as
22868         applicable.  pedwarn for initializers not constant expressions.
22869         Update call to digest_init.  Call constant_expression_warning
22870         where constant initializers are required.
22871         (process_init_element): Use c_save_expr.
22872         (c_finish_goto_ptr): Fold expression.
22873         (c_finish_return): Fold return value.  Update call to
22874         convert_for_assignment.
22875         (c_start_case): Fold switch expression.
22876         (c_process_expr_stmt): Fold expression.
22877         (c_finish_stmt_expr): Create C_MAYBE_CONST_EXPR as needed to
22878         ensure statement expression is not evaluated in constant expression.
22879         (build_binary_op): Track whether results are integer constant
22880         expressions or may occur in such, disable folding and wrap results
22881         as applicable.  Fold operands for -Wsign-compare warnings unless
22882         in_late_binary_op.
22883         (c_objc_common_truthvalue_conversion): Handle results folded to
22884         integer constants that are not integer constant expressions.
22885         * doc/extend.texi: Document when typeof operands are evaluated,
22886         that condition of __builtin_choose_expr is an integer constant
22887         expression, and more about use of __builtin_constant_p in
22888         initializers.
22889
22890 2009-03-29  Richard Guenther  <rguenther@suse.de>
22891
22892         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Properly
22893         propagate addresses of array references.
22894
22895 2009-03-29  Steven Bosscher  <steven@gcc.gnu.org>
22896
22897         * regmove.c (perhaps_ends_bb_p): Remove.
22898         (optimize_reg_copy_1): Don't call perhaps_ends_bb_p.  Get basic block
22899         from INSN and check that the main loop stays within that basic block.
22900         (optimize_reg_copy_1, optimize_reg_copy_3, fixup_match_2): Likewise.
22901         (regmove_forward_pass): Split out from regmove_optimize.  Use
22902         FOR_EACH_BB and FOR_BB_INSNS instead of traversing the insns stream.
22903         (regmove_backward_pass): Split out from regmove_optimize.  Use
22904         FOR_EACH_BB_REVERSE and FOR_BB_INSNS_REVERS_SAFE.
22905         (regmove_optimize): Simplify.
22906
22907 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
22908
22909         PR target/39545
22910         * config/i386/i386.c (classify_argument): Ignore flexible array
22911         member in struct and warn ABI change.
22912
22913 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
22914
22915         * config/i386/i386-protos.h (ix86_agi_dependent): New.
22916
22917         * config/i386/i386.c (ix86_agi_dependent): Rewrite.
22918         (ix86_adjust_cost): Updated.
22919
22920 2009-03-29  Jan Hubicka  <jh@suse.cz>
22921
22922         PR middle-end/28850
22923         * tree-pass.h (pass_cleanup_eh): New function.
22924         (remove_unreachable_regions): Break code handling RTL
22925         to rtl_remove_unreachable_regions; remove ERT_MUST_NOT_THROW
22926         that can not be reached by runtime.
22927         (can_be_reached_by_runtime): New function.
22928         (label_to_region_map): New function.
22929         (num_eh_regions): New function.
22930         (rtl_remove_unreachable_regions): New function.
22931         (convert_from_eh_region_ranges): Call rtl_remove_unreachable_regions.
22932         (remove_eh_region): New function.
22933         * except.h: Include sbitmap and vecprim.
22934         (remove_eh_region, remove_unreachable_regions, label_to_region_map,
22935         num_eh_regions): Declare.
22936         * passes.c (init_optimization_passes): Schedule cleanup_eh.
22937         * Makefile.in (EXCEPT_H): New; replace all uses of except.h by it.
22938         * tree-eh.c (tree_remove_unreachable_handlers): New function.
22939         (tree_empty_eh_handler_p): New function.
22940         (cleanup_empty_eh): New function.
22941         (cleanup_eh): New function.
22942         (pass_cleanup_eh): New function.
22943
22944 2009-03-29  Jan Hubicka  <jh@suse.cz>
22945
22946         * except.c (verify_eh_tree): Fix handling of fun!=cfun; be ready
22947         for removed regions.
22948
22949 2009-03-29  Jan Hubicka  <jh@suse.cz>
22950
22951         * except.c (dump_eh_tree): Dump all datastructures.
22952
22953 2009-03-29  Jan Hubicka  <jh@suse.cz>
22954
22955         * except.c (duplicate_eh_regions_0): Handle AKA bitmap.
22956         (duplicate_eh_regions_1): Likewise.
22957         (duplicate_eh_regions): Likewise; cleanup code gorwing the region
22958         vector; call EH verification.
22959         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
22960         Be ready for region being removed.
22961
22962 2009-03-29  Jan Hubicka  <jh@suse.cz>
22963
22964         * bitmap.c (bitmap_last_set_bit): New function.
22965         * bitmap.h (bitmap_last_set_bit): Declare.
22966
22967 2009-03-29  David Ayers  <ayers@fsfe.org>
22968
22969         PR objc/27377
22970         * c-typeck.c (build_conditional_expr): Emit ObjC warnings
22971         by calling objc_compare_types and surpress warnings about
22972         incompatible C pointers that are compatible ObjC pointers.
22973
22974 2009-03-29  Adam Nemet  <anemet@caviumnetworks.com>
22975
22976         * cgraphbuild.c (build_cgraph_edges, rebuild_cgraph_edges): Don't
22977         call initialize_inline_failed.
22978         (initialize_inline_failed): Move it from here ...
22979         * cgraph.c (initialize_inline_failed): ... to here.
22980         (cgraph_create_edge): Call initialize_inline_failed rather than
22981         setting inline_failed directly.
22982
22983 2009-03-29  Ben Elliston  <bje@au.ibm.com>
22984
22985         PR target/32542
22986         * sysv4.opt (msdata): Improve comment.
22987         * linux64.h (ASM_SPEC32): Do not pass -memb when -msdata is given.
22988         * sysv4.h (SVR4_ASM_SPEC): Likewise.
22989
22990 2009-03-29  Ben Elliston  <bje@au.ibm.com>
22991
22992         PR target/30451
22993         * config/rs6000/rs6000.md (*movti_ppc64): Correct the order of
22994         load and store attributes.
22995
22996 2009-03-29  Ben Elliston  <bje@au.ibm.com>
22997
22998         * config/i386/i386.c (enum ix86_builtins): Add IX86_BUILTIN_HUGE_VALQ.
22999         (ix86_init_builtins): Add built-in function __builtin_huge_valq.
23000         (ix86_expand_builtin): Handle IX86_BUILTIN_HUGE_VALQ.
23001         * doc/extend.texi (X86 Built-in Functions): Add index entries for
23002         __builtin_infq and __builtin_huge_valq.
23003
23004 2009-03-28  Anatoly Sokolov  <aesok@post.ru>
23005
23006         * config/avr/avr.c (avr_mcu_t): Add atmega8c1, atmega16c1 and
23007         atmega8m1 devices.
23008         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
23009         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.)
23010
23011 2009-03-28  Xinliang David Li  <davidxl@google.com>
23012
23013         * tree-ssa-ccp.c (ccp_finalize): Add dbg_count support.
23014         (do_dbg_cnt): New function.
23015
23016 2009-03-28  Jan Hubicka  <jh@suse.cz>
23017
23018         Merge from pretty-ipa:
23019
23020         2009-03-27  Jan Hubicka  <jh@suse.cz>
23021
23022         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
23023         * tree-pass.h (function_called_by_processed_nodes_p): Declare.
23024         * passes.c (function_called_by_processed_nodes_p): New.
23025         * ipa-pure-const.c (check_call): Fix handling of operands.
23026         (analyze_function): Dump debug output for skipped bodies.
23027         (local_pure_const): Use function_called_by_processed_nodes_p.
23028         * dwarf2out.c (reference_to_unused): Use output.
23029         * passes.c (do_per_function_toporder): Likewise.
23030
23031         2008-11-12  Jan Hubicka  <jh@suse.cz>
23032
23033         * tree-pass.h (pass_fixup_cfg, pass_local_pure_const): Declare.
23034         * ipa-pure-const.c (funct_state_d): Add can throw field; make
23035         state_set_in_source enum
23036         (check_decl): Ignore memory tags; do not set fake looping flags;
23037         dump diagnostics.
23038         (check_operand, check_tree, check_rhs_var, check_lhs_var,
23039         get_asm_expr_operands, scan_function_op, scan_function_stmt): Remove.
23040         (check_call, analyze_function): Rewrite.
23041         (check_stmt): New.
23042         (add_new_function): Update call of analyze_function.
23043         (generate_summary): Add call of analyze_function.
23044         (propagate): Propagate can_throw; handle state_set_in_source correctly.
23045         (local_pure_const): New function.
23046         (pass_local_pure_const): New pass.
23047         * ipa-inline.c (inline_transform): Set after_inlining.
23048         * tree-eh.c (stmt_can_throw_external): New.
23049         * tree-optimize.c (execute_fixup_cfg): Do not set after_inlining;
23050         work with aliasing built.
23051         * tree-flow.h (stmt_can_throw_external): New.
23052         * passes.c (init_optimization_passes): Schedule fixup_cfg pass early;
23053         and local pure/const pass in early and late optimization queue.
23054
23055 2009-03-28  Martin Jambor  <mjambor@suse.cz>
23056
23057         * fold-const.c (get_pointer_modulus_and_residue): New parameter
23058         allow_func_align.
23059         (fold_binary): Allow function decl aligment consideration is the
23060         second argument is integer constant one.
23061         * tree-ssa-forwprop.c (simplify_bitwise_and): New function.
23062         (tree_ssa_forward_propagate_single_use_vars): Handle assing statements
23063         with BIT_AND_EXPR on the RHS by calling simplify_bitwise_and.
23064
23065 2009-03-28  Jan Hubicka  <jh@suse.cz>
23066
23067         * dwarf2out.c (dwarf2out_begin_prologue): Use crtl->nothrow
23068         * tree-eh.c (stmt_could_throw_p): Remove check for WEAK decls.
23069         * function.h (rtl_data): Add nothrow flag.
23070         * except.c (set_nothrow_function_flags): Use crtl->nothrow;
23071         set DECL_NOTHROW for AVAILABLE functions.
23072
23073 2009-03-28  Jakub Jelinek  <jakub@redhat.com>
23074
23075         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): If macro
23076         following vector keyword has expansion starting with pixel or bool
23077         keyword, expand vector to __vector and pixel or bool to __pixel or
23078         __bool.
23079
23080         PR c++/39554
23081         * opts.c (warning_disallowed_functions, warn_disallowed_functions,
23082         warn_if_disallowed_function_p): Removed.
23083         (common_handle_option): Don't handle OPT_Wdisallowed_function_list_.
23084         * c-parser.c (c_parser_postfix_expression_after_primary): Don't call
23085         warning_if_disallowed_function_p.
23086         * flags.h (warn_if_disallowed_function_p,
23087         warn_disallowed_functions): Removed.
23088         * common.opt (Wdisallowed-function-list=): Removed.
23089         * doc/invoke.texi (-Wdisallowed-function-list=): Removed.
23090
23091 2009-03-28  Richard Guenther  <rguenther@suse.de>
23092
23093         PR tree-optimization/38723
23094         * tree-ssa-pre.c (compute_avail): Add all default definitions to
23095         the entry block.
23096
23097 2009-03-28  Jan Hubicka  <jh@suse.cz>
23098
23099         * tree-ssa-structalias.c (ipa_pta_execute): Fix bogus node->analyzed
23100         test introduced by my previous patch.
23101
23102 2009-03-28  Richard Guenther  <rguenther@suse.de>
23103
23104         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not leave
23105         the PHIs value undefined.
23106
23107 2009-03-28  Jan Hubicka  <jh@suse.cz>
23108
23109         * tree-pass.h (pass_fixup_cfg): New pass.
23110         * ipa-inline.c (inline_transform): Set
23111         always_inline_functions_inlined/after_inlining.
23112         * tree-optimize.c (execute_fixup_cfg): Do not set them here.
23113         (pass_fixup_cfg): New pass.
23114         * passes.c (init_optimization_passes): Add fixup_cfg.
23115
23116 2009-03-28  Richard Guenther  <rguenther@suse.de>
23117
23118         PR tree-optimization/38458
23119         * tree-ssa-copy.c (copy_prop_visit_phi_node): For the first
23120         argument use the arguments copy-of value.
23121
23122 2009-03-28  Richard Guenther  <rguenther@suse.de>
23123
23124         PR tree-optimization/38180
23125         * tree-ssa-ccp.c (get_default_value): Simplify.
23126         (likely_value): Likewise.
23127         (surely_varying_stmt_p): Properly handle VOP case.
23128         (ccp_initialize): Likewise.
23129         (ccp_fold): Handle propagating through *&.
23130         (fold_const_aggregate_ref): Also handle decls.
23131
23132 2009-03-28  Jan Hubicka  <jh@suse.cz>
23133
23134         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
23135         * cgraph.h (cgraph_node): Likewise.
23136         * cgraphunit.c (cgraph_process_new_functions): Set process flag.
23137         (cgraph_reset_node): Use process flag.
23138         (cgraph_mark_functions_to_output): Likewise.
23139         (cgraph_expand_function): Likewise.
23140         (cgraph_expand_all_functions): Likewise.
23141         (cgraph_output_in_order): Likewise.
23142         * dwarf2out.c (reference_to_unused): Likewise.
23143         * passes.c do_per_function_toporder): Likewise.
23144
23145 2009-03-28  Jan Hubicka  <jh@suse.cz>
23146
23147         Bring from lto-branch:
23148
23149         2008-09-03  Doug Kwan  <dougkwan@google.com>
23150
23151         * cgraphbuild.c (initialize_inline_failed): Use cgraph_inline_failed_t
23152         enums instead of reason strings.
23153         * cgraph.c (cgraph_create_edge): Same.
23154         (cgraph_inline_failed_string): New function.
23155         * cgraph.h (cgraph_inline_failed_t): New enum type.
23156         (cgraph_inline_failed_string): New prototype.
23157         (struct cgraph_edge): Change type of INLINED_FAILED from constant
23158         char pointer to cgraph_inline_failed_t.
23159         (cgraph_inline_p): Adjust prototype to use cgraph_inline_failed_t.
23160         (cgraph_default_inline_p): Ditto.
23161         * cgraphunit.c (cgraph_inline_p): Change type of parameter REASON
23162         to cgraph_inline_failed_t pointer.
23163         * cif-code.def: New file.
23164         * ipa-inline.c (cgraph_mark_inline_edge): Use an enum instead of a
23165         reason string.
23166         (cgraph_check_inline_limits): Change type of REASON to pointer to
23167         cgraph_inline_failed_t.  Replace reason strings with enums.
23168         (cgraph_default_inline_p): Ditto.
23169         (cgraph_recursive_inlining_p): Ditto.
23170         (update_caller_keys): Change type of FAILED_REASON to
23171         cgraph_inline_failed_t.
23172         (cgraph_set_inline_failed): Change type of REASON to pointer to
23173         cgraph_inline_failed_t.  Call cgraph_inline_failed_string to
23174         convert enums to strings for text output.
23175         (cgraph_decide_inlining_of_small_function): Change FAILED_REASON
23176         to be of type cgraph_inline_failed_t.  Replace reason strings with
23177         enums.  Call cgraph_inline_failed_string to covert enums
23178         to strings for text output.
23179         (cgraph_decide_inlining): Replace reason strings with enums.
23180         (cgraph_decide_inlining_incrementally): Change type of FAILED_REASON
23181         to cgraph_inline_failed_t type.  Call cgraph_inline_failed_string
23182         for text output.
23183         * tree-inline.c (expand_call_inline): Change type of REASON
23184         to cgraph_inline_failed_t.  Replace reason strings with enums.
23185         Call cgraph_inline_failed_string for text output.
23186         * Makefile.in (CGRAPH_H): Add cif-code.def to dependencies.
23187         (cgraph.o): Ditto.
23188
23189 2009-03-28  Jan Hubicka  <jh@suse.cz>
23190
23191         * cgraph.c (cgraph_node, cgraph_remove_node, dump_cgraph_node,
23192         cgraph_clone_node): Remove master clone handling.
23193         (cgraph_is_master_clone, cgraph_master_clone): Remove.
23194         * cgraph.h (master_clone): Remove.
23195         (cgraph_is_master_clone, cgraph_master_clone): Remove.
23196         * ipa-type-escape.c (type_escape_execute): Remove use of master clone.
23197         (tree-ssa-structalias.c (ipa_pta_execute): Likewise.
23198
23199 2009-03-28  Jan Hubicka  <jh@suse.cz>
23200
23201         * cgraph.c (cgraph_function_body_availability): Functions declared
23202         inline are always safe to assume that it is not going to be replaced.
23203
23204 2009-03-28  Richard Guenther  <rguenther@suse.de>
23205
23206         PR tree-optimization/38513
23207         * tree-ssa-pre.c (eliminate): Remove redundant stores.
23208         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
23209         EXC_PTR_EXPR and FILTER_EXPR.
23210         (get_ref_from_reference_ops): Likewise.
23211
23212 2009-03-28  Richard Guenther  <rguenther@suse.de>
23213
23214         PR tree-optimization/38968
23215         * tree-vect-analyze.c (vect_compute_data_ref_alignment):
23216         Use FLOOR_MOD_EXPR to compute misalignment.
23217
23218 2009-03-28  Richard Guenther  <rguenther@suse.de>
23219
23220         PR tree-optimization/37795
23221         * tree.h (combine_comparisons): Declare.
23222         * fold-const.c (combine_comparisons): Export.
23223         * tree-ssa-ifcombine.c (ifcombine_ifandif): Optimize two successive
23224         comparisons.
23225         (ifcombine_iforif): Use combine_comparisons.
23226
23227 2009-03-28  Jan Hubicka  <jh@suse.cz>
23228
23229         * tree-eh.c (inlinable_call_p): New function.
23230         (make_eh_edges): Use it.
23231         (verify_eh_edges): Use it.
23232         (stmt_can_throw_external, stmt_can_throw_internal): Use it.
23233         * except.c (reachable_next_level): Add inlinable_function argument
23234         (sjlj_find_directly_reachable_regions): Update.
23235         (add_reachable_handler): Do not set saw_any_handlers.
23236         (reachable_next_level): Handle MUST_NOT_THROW more curefully.
23237         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
23238         Add new inlinable call parameter.
23239         (can_throw_internal, can_throw_external): Update.
23240         * except.h (can_throw_internal_1, can_throw_external_1,
23241         foreach_reachable_handler): Update declaration.
23242
23243 2009-03-28  Joseph Myers  <joseph@codesourcery.com>
23244
23245         * config/arm/t-arm-coff, config/h8300/coff.h,
23246         config/i386/i386-aout.h, config/i386/i386-coff.h,
23247         config/libgloss.h, config/m68k/coff.h, config/m68k/m68k-aout.h,
23248         config/pdp11/2bsd.h, config/rs6000/aix41.h,
23249         config/rs6000/aix41.opt, config/rs6000/t-newas, config/sh/coff.h,
23250         fix-header.c, fixproto, gen-protos.c, protoize.c, scan-decls.c,
23251         scan-types.sh, scan.c, scan.h, sort-protos, sys-protos.h,
23252         sys-types.h: Remove.
23253         * Makefile.in: Remove protoize and fixproto support and references
23254         in comments.
23255         (SYSCALLS.c.X-warn, TARGET_GETGROUPS_T, STMP_FIXPROTO,
23256         PROTOIZE_INSTALL_NAME, UNPROTOIZE_INSTALL_NAME, FIXPROTO_DEFINES):
23257         Remove.
23258         (ALL_HOST_OBJS): Remove $(PROTO_OBJS).
23259         (MOSTLYCLEANFILES): Remove protoize$(exeext) and
23260         unprotoize$(exeext).
23261         (rest.encap): Don't depend on $(STMP_FIXPROTO)
23262         (.PHONY): Don't depend on proto.
23263         (libgcc-support): Don't depend on $(STMP_FIXPROTO).
23264         (proto, PROTO_OBJS, protoize$(exeext), unprotoize$(exeext),
23265         protoize.o, unprotoize.o, SYSCALLS.c.X, test-protoize-simple,
23266         deduced.h, GEN_PROTOS_OBJS, build/gen-protos$(build_exeext),
23267         build/gen-protos.o, build/scan.o, xsys-protos.h,
23268         build/fix-header$(build_exeext), build/fix-header.o,
23269         build/scan-decls.o, fixhdr.ready, stmp-fixproto,
23270         stmp-install-fixproto): Remove.
23271         (mostlyclean): Don't remove xsys-protos.hT, SYSCALLS.c.X,
23272         SYSCALLS.c or fixproto files.
23273         (install-common): Don't install protoize.
23274         (install-headers-tar, install-headers-cpio, install-headers-cp):
23275         Don't depend on $(STMP_FIXPROTO).
23276         (install-mkheaders): Don't depend on $(STMP_FIXPROTO).  Don't
23277         install fixproto files or write out fixproto settings.
23278         (uninstall): Don't uninstall protoize.
23279         * config.gcc (use_fixproto): Remove.
23280         (arm-*-coff*, armel-*-coff*, h8300-*-*, i[34567]86-*-aout*,
23281         i[34567]86-*-coff*, m68k-*-aout*, m68k-*-coff*, pdp11-*-bsd,
23282         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*, sh-*-*): Remove.
23283         * config/m32r/t-linux (STMP_FIXPROTO): Remove.
23284         * config/m68k/m68k.c: Remove M68K_TARGET_COFF-conditional code.
23285         * config/mips/t-iris (FIXPROTO_DEFINES): Remove.
23286         * config/pa/t-pa-hpux (FIXPROTO_DEFINES): Remove.
23287         * config/pdp11/pdp11.c: Remove TWO_BSD-conditional code.
23288         * config/t-svr4 (FIXPROTO_DEFINES): Remove.
23289         * config/t-vxworks (STMP_FIXPROTO): Remove.
23290         * configure.ac (AC_TYPE_GETGROUPS, TARGET_GETGROUPS_T,
23291         STMP_FIXPROTO): Remove.
23292         * config.in, configure: Regenerate.
23293         * crtstuff.c (gid_t, uid_t): Don't undefine.
23294         * doc/install.texi: Change m68k-coff to m68k-elf in example.
23295         (arm-*-coff, arm-*-aout: Remove target entries.
23296         (*-ibm-aix*): Mention removal of support for AIX 4.2 and older.
23297         Remove mention of AIX 4.1.
23298         (m68k-*-*): Remove mention of m68k-*-aout and m68k-*-coff*.
23299         * doc/invoke.texi (Running Protoize): Remove.
23300         * doc/trouble.texi (Actual Bugs): Remove mention of fixproto.
23301         (Protoize Caveats): Remove.
23302         * tsystem.h: Update comments on headers assumed to exist.
23303
23304 2009-03-27  Vladimir Makarov  <vmakarov@redhat.com>
23305
23306         * genautomata.c: Add a new year to the copyright.  Add a new
23307         reference.
23308         (struct insn_reserv_decl): Add comments for member bypass_list.
23309         (find_bypass): Remove.
23310         (insert_bypass): New.
23311         (process_decls): Use insert_bypass.
23312         (output_internal_insn_latency_func): Output all bypasses with the
23313         same input insn in one switch case.
23314
23315         * rtl.def (define_bypass): Describe bypass choice.
23316         * doc/md.texi (define_bypass): Ditto.
23317
23318 2009-03-27  Richard Guenther  <rguenther@suse.de>
23319
23320         * gimplify.c (mark_addressable): Export.
23321         * tree-flow.h (mark_addressable): Declare.
23322         * tree-ssa-loop-manip.c (create_iv): Mark the base addressable.
23323         * tree-ssa.c (verify_phi_args): Verify that address taken
23324         variables have TREE_ADDRESSABLE set.
23325
23326 2009-03-27  Richard Guenther  <rguenther@suse.de>
23327
23328         * fold-const.c (build_fold_addr_expr_with_type_1): Rename back to ...
23329         (build_fold_addr_expr_with_type): ... this.  Remove in_fold handling.
23330         Do not mark decls TREE_ADDRESSABLE.
23331         (build_fold_addr_expr): Adjust.
23332         (fold_addr_expr): Remove.
23333         (fold_unary): Use build_fold_addr_expr.
23334         (fold_comparison): Likewise.
23335         (split_address_to_core_and_offset): Likewise.
23336         * coverage.c (tree_coverage_counter_addr): Mark the array decl
23337         TREE_ADDRESSABLE.
23338         * gimplify.c (mark_addressable): Do not exclude RESULT_DECLs.
23339         (gimplify_modify_expr_to_memcpy): Mark source and destination
23340         addressable.
23341         * omp-low.c (create_omp_child_function): Mark the object decl
23342         TREE_ADDRESSABLE.
23343         (lower_rec_input_clauses): Mark the var we take the address of
23344         TREE_ADDRESSABLE.
23345         (lower_omp_taskreg): Mark the sender decl TREE_ADDRESSABLE.
23346
23347 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
23348
23349         PR middle-end/39315
23350         * cfgexpand.c (expand_one_stack_var_at): Change alignment
23351         limit to MAX_SUPPORTED_STACK_ALIGNMENT.
23352
23353 2009-03-27  Richard Guenther  <rguenther@suse.de>
23354
23355         PR tree-optimization/39120
23356         * tree-ssa-structalias.c (handle_rhs_call): Fill out return
23357         constraints.
23358         (handle_lhs_call): Process return constraints.  Add escape
23359         constraints if necessary.
23360         (handle_const_call): Fill out return constraints.  Make nested
23361         case more precise.  Avoid consttmp if possible.
23362         (handle_pure_call): Fill out return constraints.  Avoid
23363         callused if possible.
23364         (find_func_aliases): Simplify call handling.
23365
23366 2009-03-27  Richard Guenther  <rguenther@suse.de>
23367
23368         PR tree-optimization/39120
23369         * tree-ssa-structalias.c (do_sd_constraint): Do not use CALLUSED
23370         as a representative.
23371         (solve_graph): Do propagate CALLUSED.
23372         (handle_pure_call): Use a scalar constraint from CALLUSED for
23373         the return value.
23374         (find_what_p_points_to): CALLUSED shall not appear in poins-to
23375         solutions.
23376
23377 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
23378
23379         PR c/39323
23380         * c-common.c (handle_aligned_attribute): Properly check alignment
23381         overflow.  Use (1U << i) instead of (1 << i).
23382
23383         * emit-rtl.c (get_mem_align_offset): Use "unsigned int" for align.
23384
23385         * expr.h (get_mem_align_offset): Updated.
23386
23387         * tree.h (tree_decl_common): Change align to "unsigned int" and
23388         move it before pointer_alias_set.
23389
23390 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
23391             Jakub Jelinek  <jakub@redhat.com>
23392
23393         PR target/38034
23394         * config/ia64/sync.md (cmpxchg_rel_<mode>): Replace input
23395         gr_register_operand with gr_reg_or_0_operand.
23396         (cmpxchg_rel_di): Likewise.
23397         (sync_lock_test_and_set<mode>): Likewise.
23398
23399 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
23400
23401         * jump.c (rtx_renumbered_equal_p): Use subreg_get_info.
23402         (true_regnum): Likewise.
23403
23404         * rtlanal.c (subreg_info): Moved to ...
23405         * rtl.h (subreg_info): Here.  New.
23406         (subreg_get_info): New.
23407
23408         * rtlanal.c (subreg_get_info): Make it extern.
23409
23410 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
23411
23412         PR target/39472
23413         * config/i386/i386.c (ix86_abi): New.
23414         (override_options): Handle -mabi=.
23415         (ix86_function_arg_regno_p): Replace DEFAULT_ABI with ix86_abi.
23416         (ix86_call_abi_override): Likewise.
23417         (init_cumulative_args): Likewise.
23418         (function_arg_advance): Likewise.
23419         (function_arg_64): Likewise.
23420         (function_arg): Likewise.
23421         (ix86_pass_by_reference): Likewise.
23422         (ix86_function_value_regno_p): Likewise.
23423         (ix86_build_builtin_va_list_abi): Likewise.
23424         (setup_incoming_varargs_64): Likewise.
23425         (is_va_list_char_pointer): Likewise.
23426         (ix86_init_machine_status): Likewise.
23427         (ix86_reg_parm_stack_space): Use enum calling_abi on call_abi.
23428         (ix86_function_type_abi): Return enum calling_abi.  Rewrite
23429         for 64bit.  Replace DEFAULT_ABI with ix86_abi.
23430         (ix86_function_abi): Make it static and return enum calling_abi.
23431         (ix86_cfun_abi): Return enum calling_abi.  Replace DEFAULT_ABI
23432         with ix86_abi.
23433         (ix86_fn_abi_va_list): Updated.
23434
23435         * config/i386/i386.h (ix86_abi): New.
23436         (STACK_BOUNDARY): Replace DEFAULT_ABI with ix86_abi.
23437         (CONDITIONAL_REGISTER_USAGE): Likewise.
23438         (CUMULATIVE_ARGS): Change call_abi type to enum calling_abi.
23439         (machine_function): Likewise.
23440
23441         * config/i386/i386.md (untyped_call): Replace DEFAULT_ABI
23442         with ix86_abi.
23443         * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Likewise.
23444         (STACK_BOUNDARY): Likewise.
23445         * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Likewise.
23446
23447         * config/i386/i386.opt (mabi=): New.
23448
23449         * config/i386/i386-protos.h (ix86_cfun_abi): Changed to
23450         return enum calling_abi.
23451         (ix86_function_type_abi): Likewise.
23452         (ix86_function_abi): Removed.
23453
23454         * doc/invoke.texi: Document -mabi= option for x86.
23455
23456 2009-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
23457
23458         * builtins.c (real_dconstp): Delete.
23459         (fold_builtin_logarithm): Remove inaccurate log(e) special case.
23460
23461 2009-03-27  Dodji Seketeli  <dodji@redhat.com>
23462             Jakub Jelinek  <jakub@redhat.com>
23463
23464         PR debug/37959
23465         * dwarf2out.c (dwarf_attr_name): Handle DW_AT_explicit attribute.
23466         (gen_subprogram_die): When a function is explicit, generate the
23467         DW_AT_explicit attribute.
23468         * langhooks.h (struct lang_hooks_for_decls): Add
23469         function_decl_explicit_p langhook.
23470         * langhooks-def.h (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P): Define.
23471         (LANG_HOOKS_DECLS): Add LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P.
23472
23473 2009-03-27  Jakub Jelinek  <jakub@redhat.com>
23474
23475         * builtins.c (fold_builtin_memory_op): Optimize memmove
23476         into memcpy if we can prove source and destination don't overlap.
23477
23478         * tree-inline.c: Include gt-tree-inline.h.
23479         (clone_fn_id_num): New variable.
23480         (clone_function_name): New function.
23481         (tree_function_versioning): Use it.
23482         * Makefile.in (GTFILES): Add tree-inline.c.
23483
23484 2009-03-27  Mark Mitchell  <mark@codesourcery.com>
23485
23486         * BASE-VER: Change to 4.5.0.
23487
23488 2009-03-27  Xinliang David Li  <davidxl@google.com>
23489
23490         PR tree-optimization/39557
23491         * tree-ssa.c (warn_uninitialized_vars): free postdom info.
23492
23493 2009-03-27  Xinliang David Li  <davidxl@google.com>
23494
23495         PR tree-optimization/39548
23496         * tree-ssa-copy.c (copy_prop_visit_phi_node): Add copy
23497         candidate check.
23498
23499 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
23500
23501         * c-common.c (pointer_int_sum): Use %wd on return from
23502         tree_low_cst.
23503
23504 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
23505
23506         * c-common.c (pointer_int_sum): Use HOST_WIDE_INT_PRINT_DEC
23507         on return from tree_low_cst.
23508
23509 2009-03-27  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23510
23511         PR c++/36799
23512         * ginclude/stdarg.h (va_copy): Define also for
23513         __GXX_EXPERIMENTAL_CXX0X__.
23514
23515 2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23516
23517         PR c++/35652
23518         * builtins.h (c_strlen): Do not warn here.
23519         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
23520         * c-common.c (pointer_int_sum): Take an explicit location.
23521         Warn about offsets out of bounds.
23522         * c-common.h (pointer_int_sum): Adjust declaration.
23523
23524 2009-03-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23525
23526         * doc/invoke.texi (i386 and x86-64 Windows Options): Fix texinfo
23527         markup glitch.
23528
23529 2009-03-26  Jakub Jelinek  <jakub@redhat.com>
23530
23531         PR c++/39554
23532         * opts.c (warn_if_disallowed_function_p): Don't assume
23533         get_callee_fndecl must return non-NULL.
23534
23535 2009-03-26  Vladimir Makarov  <vmakarov@redhat.com>
23536
23537         PR rtl-optimization/39522
23538         * reload1.c (reload_as_needed): Invalidate reg_last_reload_reg too
23539         when reg_reloaded_valid is set.
23540
23541 2009-03-26  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
23542
23543         * config/spu/divv2df3.c: New file.
23544         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add it.
23545         (DPBIT_FUNCS): Filter out _div_df.
23546
23547 2009-03-26  Bernd Schmidt  <bernd.schmidt@analog.com>
23548
23549         * config/bfin/bfin.c (bfin_optimize_loop): If the LSETUP goes before
23550         a jump insn, count that jump in the distance to the loop start.
23551
23552 2009-03-25  Kaz Kojima  <kkojima@gcc.gnu.org>
23553
23554         PR target/39523
23555         * config/sh/sh.c (calc_live_regs): Fix condition for global
23556         registers except PIC_OFFSET_TABLE_REGNUM.
23557
23558 2009-03-25  Kai Tietz  <kai.tietz@onevision.com>
23559
23560         PR/39518
23561         * doc/invoke.texi (-mconsole): New.
23562         (-mcygwin): New.
23563         (-mno-cygwin): New.
23564         (-mdll): New.
23565         (-mnop-fun-dllimport): New.
23566         (-mthread): New.
23567         (-mwin32): New.
23568         (-mwindows): New.
23569         (sub section "i386 and x86-64 Windows Options"): New.
23570
23571 2009-03-25  Ralf Corsépius  <ralf.corsepius@rtems.org>
23572
23573         * config/arm/rtems-elf.h: Remove LINK_GCC_C_SEQUENCE_SPEC.
23574         * config/rs6000/t-rtems: Remove MULTILIB_EXTRA_OPTS.
23575
23576 2009-03-25  Richard Guenther  <rguenther@suse.de>
23577
23578         PR middle-end/39497
23579         * Makefile.in (dfp.o-warn): Use -fno-strict-aliasing instead
23580         of -Wno-error.
23581
23582 2009-03-25  Andrey Belevantsev  <abel@ispras.ru>
23583
23584         * config/ia64/ia64.c (ia64_set_sched_flags): Zero spec_info->mask when
23585         neither of haifa/selective schedulers are working.
23586
23587 2009-03-25  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23588
23589         * doc/invoke.texi (Debugging Options): Fix description of
23590         -fno-merge-debug-strings.
23591
23592 2009-03-24  Hans-Peter Nilsson  <hp@axis.com>
23593
23594         * config/cris/libgcc.ver: New version-script.
23595         * config/cris/t-linux (SHLIB_MAPFILES): Use it.
23596
23597         * configure.ac <GAS features, nop mnemonic>: Add pattern
23598         crisv32-*-* for "nop".
23599         <GAS features, Thread-local storage>: Add item for CRIS and CRIS v32.
23600         * configure: Regenerate.
23601
23602 2009-03-24  Ira Rosen  <irar@il.ibm.com>
23603
23604         PR tree-optimization/39529
23605         * tree-vect-transform.c (vect_create_data_ref_ptr): Call
23606         mark_sym_for_renaming for the tag copied to the new vector
23607         pointer.
23608
23609 2009-03-24  Arthur Loiret  <aloiret@debian.org>
23610
23611         * config.host (alpha*-*-linux*): Use driver-alpha.o and alpha/x-alpha.
23612         * config/alpha/linux.h (host_detect_local_cpu): Declare, add to
23613         EXTRA_SPEC_FUNCTIONS.
23614         (MCPU_MTUNE_NATIVE_SPECS, DRIVER_SELF_SPECS): New macros.
23615         * config/alpha/driver-alpha.c, config/alpha/x-alpha: New.
23616         * doc/invoke.texi (DEC Alpha Options): Document 'native' value for
23617         -march and -mtune options.
23618
23619 2009-03-24  Ralf Corsépius  <ralf.corsepius@rtems.org>
23620
23621         * config/m68k/t-rtems: Add m5329 multilib.
23622
23623 2009-03-24  Dodji Seketeli  <dodji@redhat.com>
23624             Jakub Jelinek  <jakub@redhat.com>
23625
23626         PR debug/39524
23627         * dwarf2out.c (gen_variable_die): Avoid adding duplicate declaration
23628         nodes.
23629
23630 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
23631
23632         PR c/39495
23633         * c-parser.c (c_parser_omp_for_loop): Call c_parser_binary_expression
23634         instead of c_parser_expression_conv, if original_code isn't one of the
23635         4 allowed comparison codes, fail.
23636
23637 2009-03-23  Richard Guenther  <rguenther@suse.de>
23638
23639         * cgraph.h (struct cgraph_node): Reorder fields for 64-bit hosts.
23640         * tree.h (struct tree_type): Likewise.
23641         * reload.h (struct insn_chain): Likewise.
23642         * dwarf2out.c (struct dw_loc_descr_struct): Likewise.
23643         * function.h (struct function): Likewise.
23644         * tree-ssa-structalias.c (struct equiv_class_label): Likewise.
23645
23646 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
23647
23648         PR tree-optimization/39516
23649         * lambda-code.c (perfect_nestify): Fix type of the uboundvar variable.
23650
23651 2009-03-23  Bingfeng Mei  <bmei@broadcom.com>
23652
23653         * config.gcc (need_64bit_hwint): Make clear that need_64bit_hwint
23654         should be set true if BITS_PER_WORD of target is bigger than 32
23655
23656 2009-03-22  Hans-Peter Nilsson  <hp@axis.com>
23657
23658         * config/cris/linux.h (CRIS_LINK_SUBTARGET_SPEC):
23659         Translate -B-options to -rpath-link.  Correct existing
23660         rpath-link and conditionalize on !nostdlib.
23661
23662 2009-03-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23663
23664         * doc/extend.texi (Function Attributes, Variable Attributes):
23665         Fix typos.
23666         * doc/invoke.texi (Debugging Options, Optimize Options)
23667         (i386 and x86-64 Options, MCore Options): Likewise.
23668
23669 2009-03-20  Jakub Jelinek  <jakub@redhat.com>
23670
23671         PR debug/37890
23672         * dwarf2out.c (gen_namespace_die): Add context_die argument and use
23673         it for block local namespace aliases.
23674         (gen_decl_die): Pass context_die to gen_namespace_die.
23675
23676 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
23677
23678         PR c/39495
23679         * c-omp.c (c_finish_omp_for): Allow NE_EXPR with TREE_TYPE (decl)'s
23680         minimum or maximum value.
23681
23682 2009-03-19  Alexandre Oliva  <aoliva@redhat.com>
23683
23684         * reginfo.c (globalize_reg): Recompute derived reg sets.
23685
23686 2009-03-19  Ozkan Sezer  <sezeroz@gmail.com>
23687
23688         PR target/39063
23689         * libgcc2.c (mprotect): Do not use signed arguments for
23690         VirtualProtect, use DWORD arguments.  Also fix the 'may
23691         be used uninitialized' warning for the np variable.
23692
23693 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
23694
23695         PR target/39496
23696         * config/i386/i386.c (ix86_function_regparm): Don't optimize local
23697         functions using regparm calling conventions when not optimizing.
23698         (ix86_function_sseregparm): Similarly for sseregparm calling
23699         conventions.
23700
23701 2009-03-19  Li Feng  <nemokingdom@gmail.com>
23702
23703         PR middle-end/39500
23704         * tree-data-ref.c (analyze_subscript_affine_affine): There is no
23705         dependence if the first conflict is after niter iterations.
23706
23707 2009-03-19  Hans-Peter Nilsson  <hp@axis.com>
23708
23709         PR middle-end/38609
23710         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Force for all
23711         functions with dynamic stack-pointer adjustments.
23712
23713 2009-03-19  Ben Elliston  <bje@au.ibm.com>
23714
23715         * doc/invoke.texi (RS/6000 and PowerPC Options): Fix -msdata-data
23716         option; change to -msdata=data.
23717
23718 2009-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23719
23720         * c.opt: Unify help texts for -Wdeprecated, -Wsystem-headers,
23721         and -fopenmp.
23722
23723 2009-03-18  Eric Botcazou  <ebotcazou@adacore.com>
23724
23725         PR target/35180
23726         * config/sparc/sparc.md (do_builtin_setjmp_setup): Prettify asm output.
23727
23728 2009-03-18  Sandra Loosemore  <sandra@codesourcery.com>
23729
23730         * doc/invoke.texi (Code Gen Options): Expand discussion of
23731         -fno-common.
23732
23733 2009-03-18  Jakub Jelinek  <jakub@redhat.com>
23734
23735         * dse.c (struct group_info): Reorder fields for 64-bit hosts.
23736         * matrix-reorg.c (struct matrix_info): Likewise.
23737         * tree-ssa-loop-ivopts.c (struct ivopts_data): Likewise.
23738         * rtl.h (struct mem_attrs): Likewise.
23739         * df.h (struct df): Likewise.
23740         * tree-data-ref.h (struct data_dependence_relation): Likewise.
23741         * ira-int.h (struct ira_allocno): Likewise.
23742         * df-scan.c (struct df_collection_rec): Likewise.
23743         * ira.c (struct equivalence): Likewise.
23744         * function.c (struct temp_slot): Likewise.
23745         * cfgloop.h (struct loop): Likewise.
23746
23747         PR debug/39485
23748         * function.c (use_register_for_decl): When not optimizing, disregard
23749         register keyword for variables with types containing methods.
23750
23751 2009-03-18  Sebastian Pop  <sebastian.pop@amd.com>
23752
23753         PR middle-end/39447
23754         * graphite.c (exclude_component_ref): Renamed contains_component_ref_p.
23755         (is_simple_operand): Call contains_component_ref_p before calling data
23756         reference analysis that would fail on COMPONENT_REFs.
23757
23758         * tree-vrp.c (search_for_addr_array): Fix formatting.
23759
23760 2009-03-18  Richard Guenther  <rguenther@suse.de>
23761
23762         * tree-vect-transform.c (vect_loop_versioning): Fold the
23763         generated comparisons.
23764         * tree-vectorizer.c (set_prologue_iterations): Likewise.
23765         (slpeel_tree_peel_loop_to_edge): Likewise.
23766
23767 2009-03-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23768
23769         PR middle-end/37805
23770         * opts.c (print_specific_help): In addition to `undocumented',
23771         accept `separate' and `joined' flags if passed alone.  Describe
23772         output by the first matched one of those.
23773         (common_handle_option): Skip over empty strings.
23774         * gcc.c (display_help): Fix help string for `--help='.
23775         * doc/invoke.texi (Option Summary, Overall Options): With
23776         `--help=', classes and qualifiers can both be repeated, but
23777         only the latter can be negated.  One should not pass only
23778         negated qualifiers.  Fix markup and examples.
23779
23780         Revert
23781         2008-10-14  Jakub Jelinek  <jakub@redhat.com>
23782         PR middle-end/37805
23783         * opts.c (common_handle_option): Don't ICE on -fhelp=joined
23784         and -fhelp=separate.
23785
23786 2009-03-17  Jing Yu  <jingyu@google.com>
23787
23788         PR middle-end/39378
23789         * function.h (struct rtl_data): Move is_thunk from here...
23790         (struct function): ...to here.
23791         * cp/method.c (use_thunk): Change is_thunk from crtl to cfun.
23792         * varasm.c (assemble_start_function): Change is_thunk from crtl to
23793         cfun.
23794         * config/alpha/alpha.c (alpha_sa_mask): Change is_thunk from crtl to
23795         cfun.
23796         (alpha_does_function_need_gp, alpha_start_function): Likewise.
23797         (alpha_output_function_end_prologue): Likewise.
23798         (alpha_end_function, alpha_output_mi_thunk_osf): Likewise.
23799         * config/rs6000/rs6000.c (rs6000_ra_ever_killed): Likewise.
23800         (rs6000_output_function_epilogue): Likewise.
23801         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
23802
23803 2009-03-17  Uros Bizjak  <ubizjak@gmail.com>
23804
23805         PR target/39482
23806         * config/i386/i386.md (*truncdfsf_mixed): Avoid combining registers
23807         from different units in a single alternative.
23808         (*truncdfsf_i387): Ditto.
23809         (*truncxfsf2_mixed): Ditto.
23810         (*truncxfdf2_mixed): Ditto.
23811
23812 2009-03-17  Jakub Jelinek  <jakub@redhat.com>
23813
23814         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Allow
23815         non-NAMESPACE_DECL IMPORTED_DECL_ASSOCIATED_DECL.
23816
23817         PR debug/39474
23818         * tree-ssa-live.c (remove_unused_locals): Don't remove local
23819         unused non-artificial variables when not optimizing.
23820
23821         PR debug/39471
23822         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Emit
23823         DW_TAG_imported_module even if decl is IMPORTED_DECL with
23824         NAMESPACE_DECL in its DECL_INITIAL.
23825
23826         PR middle-end/39443
23827         * optabs.c (set_user_assembler_libfunc): New function.
23828         * expr.h (set_user_assembler_libfunc): New prototype.
23829         * c-common.c: Include libfuncs.h.
23830         (set_builtin_user_assembler_name): Call set_user_assembler_libfunc
23831         for memcmp, memset, memcpy, memmove and abort.
23832         * Makefile.in (c-common.o): Depend on libfuncs.h.
23833
23834         PR debug/39412
23835         * dwarf2out.c (gen_inlined_enumeration_type_die,
23836         gen_inlined_structure_type_die, gen_inlined_union_type_die,
23837         gen_tagged_type_instantiation_die): Removed.
23838         (gen_decl_die): For TYPE_DECL_IS_STUB with non-NULL decl_origin
23839         do nothing.
23840
23841 2009-03-17  Janis Johnson  <janis187@us.ibm.com>
23842
23843         PR testsuite/38526
23844         * Makefile.in (site.exp): Rename TEST_GCC_EXEC_PREFIX and comment
23845         its use.
23846         (check-%): Don't set GCC_EXEC_PREFIX when invoking runtest.
23847         (check-parallel-%): Ditto.
23848         (check-consistency): Ditto.
23849
23850 2009-03-17  Kai Tietz  <kai.tietz@onevision.com>
23851
23852         * ipa-struct-reorg.c (create_general_new_stmt): Initialize
23853         local variable rhs by NULL_TREE.
23854
23855 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
23856
23857         PR target/39477
23858         * doc/extend.texi: Correct register behavior for regparm on Intel 386.
23859
23860 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
23861
23862         PR target/39476
23863         * config/i386/i386.c (ix86_function_regparm): Rewrite for 64bit.
23864
23865 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
23866
23867         PR target/39473
23868         * config/i386/i386.c (ix86_expand_call): Check extra clobbers
23869         for ms->sysv ABI calls only in 64bit mode.
23870
23871         * config/i386/i386.md (untyped_call): Support 32bit.
23872
23873 2009-03-16  H.J. Lu  <hongjiu.lu@intel.com>
23874
23875         * doc/extend.texi: Replace x86_65 with x86_64.
23876
23877 2009-03-16  Jakub Jelinek  <jakub@redhat.com>
23878
23879         PR tree-optimization/39455
23880         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Fix types
23881         mismatches for POINTER_TYPE_P (type).
23882         (number_of_iterations_le): Likewise.
23883
23884 2009-03-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
23885
23886         * config/picochip/picochip.c: Removed profiling support.
23887         * config/picochip/picochip.md: Removed profiling instruction.
23888         * config/picochip/picochip.h: Removed profiling builtin.
23889
23890 2009-03-16  Joseph Myers  <joseph@codesourcery.com>
23891
23892         * doc/install.texi (--with-host-libstdcxx): Document.
23893
23894 2009-03-14  Anatoly Sokolov  <aesok@post.ru>
23895
23896         PR target/34299
23897         * config/avr/avr.c (avr_handle_fndecl_attribute): Move code for
23898         generate a warning if the function name does not begin with
23899         "__vector" and the function has either the 'signal' or 'interrupt'
23900         attribute, from here to ...
23901         (avr_declare_function_name): ...here. New function.
23902         * config/avr/avr.h (ASM_DECLARE_FUNCTION_NAME): Redefine.
23903         * config/avr/avr-protos.h (avr_declare_function_name): Declare.
23904
23905 2009-03-14  Jakub Jelinek  <jakub@redhat.com>
23906
23907         PR bootstrap/39454
23908         * cse.c (fold_rtx): Don't modify original const_arg1 when
23909         canonicalizing SHIFT_COUNT_TRUNCATED shift count, do it on a
23910         separate variable instead.
23911         * rtlanal.c (nonzero_bits1) <case ASHIFTRT>: Don't assume anything
23912         from out of range shift counts.
23913         (num_sign_bit_copies1) <case ASHIFTRT, case ASHIFT>: Similarly.
23914
23915 2009-03-13  Catherine Moore  <clm@codesourcery.com>
23916
23917         * config/i386/x-mingw32 (host-mingw32.o): Replace
23918         diagnostic.h with $(DIAGNOSTIC_H).
23919
23920 2009-03-12  Jakub Jelinek  <jakub@redhat.com>
23921
23922         PR target/39431
23923         * config/i386/predicates.md (cmpxchg8b_pic_memory_operand): New
23924         predicate.
23925         * config/i386/sync.md (sync_compare_and_swap<mode>,
23926         sync_compare_and_swap_cc<mode>): For DImode with -m32 -fpic check
23927         if operands[1] is cmpxchg8b_pic_memory_operand, if not force address
23928         into a register.
23929         (sync_double_compare_and_swapdi_pic,
23930         sync_double_compare_and_swap_ccdi_pic): Require operand 1 to be
23931         cmpxchg8b_pic_memory_operand instead of just memory_operand.
23932
23933 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
23934
23935         PR target/39445
23936         * config/i386/i386.c (ix86_expand_push): Don't set memory alignment.
23937
23938 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
23939
23940         PR target/39327
23941         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
23942         (avx_addsubv4df3): Likewise.
23943         (*avx_addsubv4sf3): Likewise.
23944         (sse3_addsubv4sf3): Likewise.
23945
23946 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
23947
23948         PR target/38824
23949         * config/i386/i386.md: Compare REGNO on the new peephole2 patterns.
23950
23951 2009-03-12  Vladimir Makarov  <vmakarov@redhat.com>
23952
23953         PR debug/39432
23954         * ira-int.h (struct allocno): Fix comment for calls_crossed_num.
23955         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
23956         registers for allocnos created from user-defined variables.
23957
23958 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
23959
23960         PR target/39181
23961         * config/spu/spu.c (spu_expand_mov): Handle invalid subregs
23962         of non-integer mode as well.
23963
23964 2009-03-11  Adam Nemet  <anemet@caviumnetworks.com>
23965
23966         * gimplify.c (gimplify_call_expr): Don't set CALL_CANNOT_INLINE_P
23967         for functions for which the parameter types are unknown.
23968
23969 2009-03-11  Jakub Jelinek  <jakub@redhat.com>
23970
23971         PR target/39137
23972         * cfgexpand.c (get_decl_align_unit): Use LOCAL_DECL_ALIGNMENT macro.
23973         * defaults.h (LOCAL_DECL_ALIGNMENT): Define if not yet defined.
23974         * config/i386/i386.h (LOCAL_DECL_ALIGNMENT): Define.
23975         * config/i386/i386.c (ix86_local_alignment): For
23976         -m32 -mpreferred-stack-boundary=2 use 32-bit alignment for
23977         long long variables on the stack to avoid dynamic realignment.
23978         Allow the first argument to be a decl rather than type.
23979         * doc/tm.texi (LOCAL_DECL_ALIGNMENT): Document.
23980
23981 2009-03-11  Nick Clifton  <nickc@redhat.com>
23982
23983         PR target/5362
23984         * config/mcore/mcore.opt: Remove deprecated m4align and m8align
23985         options.
23986         Add description to mno-lsim option.
23987         * config/mcore/mcore.h: Remove comment about deprecated m4align
23988         option.
23989         (TARGET_DEFAULT): Remove deprecated MASK_M8ALIGN.
23990         * doc/invoke.texi: Add description of mno-lsim and
23991         mstack-increment options.
23992
23993         * config/fr30/fr30.opt: Document the -mno-lsim option.
23994         * doc/invoke.texi: Add descriptions of the FR30's -msmall-model
23995         and -mno-lsim options.
23996
23997 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
23998
23999         * fold-const.c (fold_comparison): Only call fold_inf_compare
24000         if the mode supports infinities.
24001
24002 2009-03-11  Jason Merrill  <jason@redhat.com>
24003
24004         PR debug/39086
24005         * tree-nrv.c (tree_nrv): Don't do this optimization if the front
24006         end already did.  Notice GIMPLE_CALL modifications of the result.
24007         Don't copy debug information from an ignored decl or a decl from
24008         another function.
24009
24010 2009-03-10  Richard Guenther  <rguenther@suse.de>
24011             Nathan Froyd  <froydnj@codesourcery.com>
24012
24013         PR middle-end/37850
24014         * libgcc2.c (__mulMODE3): Use explicit assignments to form the result.
24015         (__divMODE3): Likewise.
24016
24017 2009-03-09  Jakub Jelinek  <jakub@redhat.com>
24018
24019         PR tree-optimization/39394
24020         * gimplify.c (gimplify_type_sizes): Gimplify DECL_SIZE and
24021         DECL_SIZE_UNIT of variable length FIELD_DECLs.
24022
24023 2009-03-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
24024
24025         * recog.c (verfiy_changes): Disallow renaming of hard regs in
24026         inline asms for register asm ("") declarations.
24027
24028 2009-03-09  Eric Botcazou  <ebotcazou@adacore.com>
24029
24030         * fold-const.c (fold_unary): Fix comment.
24031
24032 2009-03-07  Jan Hubicka  <jh@suse.cz>
24033
24034         PR target/39361
24035         * tree-inline.c (setup_one_parameter): Do replacement of const
24036         argument by constant in SSA form.
24037
24038 2009-03-07  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
24039
24040         PR middle-end/38028
24041         * function.c (assign_parm_setup_stack): Use STACK_SLOT_ALIGNMENT to
24042         determine alignment passed to assign_stack_local.
24043         (assign_parms_unsplit_complex): Likewise.
24044         * except.c (sjlj_build_landing_pads): Likewise.
24045
24046 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
24047
24048         PR middle-end/39360
24049         * tree-flow.h (add_referenced_var): Return bool instead of void.
24050         * tree-dfa.c (add_referenced_var): Return result of
24051         referenced_var_check_and_insert call.
24052         * tree-inline.c (expand_call_inline): Call add_referenced_var instead
24053         of referenced_var_check_and_insert.
24054
24055         PR debug/39372
24056         * dwarf2out.c (add_abstract_origin_attribute): Return origin_die.
24057         (gen_variable_die): Emit DW_AT_location on abstract static variable's
24058         DIE, don't emit it if abstract origin already has it.
24059         * tree-cfg.c (remove_useless_stmts_bind): GIMPLE_BINDs with any
24060         BLOCK_NONLOCALIZED_VARS in its gimple_bind_block aren't useless.
24061
24062 2009-03-06  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
24063
24064         * genpreds.c (needs_variable): Fix parentheses at variable name
24065         detection.
24066         (write_tm_constrs_h): Indent generated code.
24067
24068 2009-03-06  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
24069
24070         * doc/extend.texi (Function Attributes): Add documentation
24071         for isr attributes.
24072
24073 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
24074
24075         PR debug/39387
24076         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): For IMPORTED_DECL
24077         take locus from its DECL_SOURCE_LOCATION instead of input_location.
24078
24079 2009-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
24080
24081         * config/bfin/bfin.c (bfin_discover_loop): When retrying fails, mark
24082         the loop as bad.
24083
24084 2009-03-05  Jakub Jelinek  <jakub@redhat.com>
24085
24086         PR debug/39379
24087         * tree-cfg.c (remove_useless_stmts_bind): Don't remove GIMPLE_BINDs
24088         with blocks containing IMPORTED_DECLs in BLOCK_VARS.
24089
24090 2009-03-05  Uros Bizjak  <ubizjak@gmail.com>
24091
24092         * config/i386/i386.md (R8_REG, R9_REG): New constants.
24093         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Use named
24094         constants instead of magic numbers.
24095         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
24096         (QI_REG_P): Ditto.
24097         * config/i386/i386.c (x86_64_int_parameter_registers): Ditto.
24098         (x86_64_ms_abi_int_parameter_registers): Ditto.
24099         (x86_64_int_return_registers): Ditto.
24100         (ix86_maybe_switch_abi): Ditto.
24101         (ix86_expand_call): Ditto for clobbered_registers array.
24102         (ix86_hard_regno_mode_ok): Ditto.
24103         (x86_extended_QIreg_mentioned_p): Ditto.
24104
24105 2009-03-05  J"orn Rennecke  <joern.rennecke@arc.com>
24106
24107         PR tree-optimization/39349
24108         * cse.c (cse_insn): Fix loop to stop at VOIDmode.
24109
24110         * combine.c (gen_lowpart_for_combine): Use omode when generating
24111         clobber.
24112
24113 2009-03-04  J"orn Rennecke  <joern.rennecke@arc.com>
24114
24115         PR rtl-optimization/39235
24116         * loop-iv.c (get_simple_loop_desc): Use XCNEW.
24117
24118 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
24119
24120         * graphite.c (nb_reductions_in_loop): Update simple_iv arguments.
24121
24122 2009-03-04  Richard Guenther  <rguenther@suse.de>
24123
24124         PR tree-optimization/39362
24125         * tree-ssa-sccvn.c (visit_use): Stores and copies from SSA_NAMEs
24126         that occur in abnormal PHIs should be varying.
24127
24128 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
24129
24130         * tree-scalar-evolution.c (analyze_scalar_evolution_in_loop):
24131         Extend comments.
24132         (simple_iv):  Take loop as an argument instead of statement.
24133         * tree-scalar-evolution.h (simple_iv): Declaration changed.
24134         * tree-ssa-loop-niter.c (number_of_iterations_exit): Update calls
24135         to simple_iv.
24136         * tree-ssa-loop-ivopts.c (determine_biv_step, find_givs_in_stmt_scev):
24137         Ditto.
24138         * tree-parloops.c (loop_parallel_p, canonicalize_loop_ivs): Ditto.
24139         * matrix-reorg.c (analyze_transpose): Ditto.
24140         * tree-data-ref.c (dr_analyze_innermost): Ditto.
24141         * tree-vect-analyze.c (vect_analyze_data_refs): Ditto.
24142         * tree-predcom.c (ref_at_iteration): Ditto.
24143         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Ditto.
24144
24145 2009-03-04  Richard Guenther  <rguenther@suse.de>
24146
24147         PR tree-optimization/39358
24148         * tree-ssa-structalias.c (do_sd_constraint): Fix check for
24149         escaped_id and callused_id.
24150         (solve_graph): Likewise.
24151
24152 2009-03-04  Richard Guenther  <rguenther@suse.de>
24153
24154         PR tree-optimization/39339
24155         * tree-sra.c (try_instantiate_multiple_fields): Make it
24156         no longer ICE on the above.
24157
24158 2009-03-03  Joseph Myers  <joseph@codesourcery.com>
24159
24160         * emit-rtl.c (adjust_address_1): Reduce offset to a signed value
24161         that fits within Pmode.
24162
24163 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
24164
24165         PR middle-end/10109
24166         * tm.texi (LIBCALL_VALUE): Update description.
24167
24168 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
24169
24170         PR middle-end/34443
24171         * doc/extend.texi (section): Update description.
24172
24173 2009-03-03  H.J. Lu  <hongjiu.lu@intel.com>
24174
24175         PR middle-end/39345
24176         * tree-inline.c (remapped_type): New.
24177         (can_be_nonlocal): Call remapped_type instead of remap_type.
24178
24179 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
24180
24181         PR fortran/39354
24182         * gimplify.c (goa_stabilize_expr): Handle tcc_comparison,
24183         TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR.
24184
24185 2009-03-03  Richard Guenther  <rguenther@suse.de>
24186
24187         PR middle-end/39272
24188         * tree.c (tree_nonartificial_location): New function.
24189         * tree.h (tree_nonartificial_location): Declare.
24190         * builtins.c (expand_builtin_memory_chk): Provide location
24191         of the call location for artificial function pieces.
24192         (maybe_emit_chk_warning): Likewise.
24193         (maybe_emit_sprintf_chk_warning): Likewise.
24194         (maybe_emit_free_warning): Likewise.
24195         * expr.c (expand_expr_real_1): Likewise.
24196
24197 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
24198
24199         PR tree-optimization/39343
24200         * tree-ssa-ccp.c (maybe_fold_offset_to_address): Don't check if
24201         COMPONENT_REF t has ARRAY_TYPE.
24202
24203 2009-03-02  Sebastian Pop  <sebastian.pop@amd.com>
24204
24205         PR middle-end/39335
24206         * tree-parloops.c (canonicalize_loop_ivs): Call fold_convert
24207         when the type precision of the induction variable should be
24208         larger than the type precision of nit.
24209         (gen_parallel_loop): Update use of canonicalize_loop_ivs.
24210         * graphite.c (graphite_loop_normal_form): Same.
24211         * tree-flow.h (canonicalize_loop_ivs): Update declaration.
24212
24213 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
24214
24215         * config/i386/i386.md (ST?_REG, MM?_REG): New constants.
24216         (*call_1_rex64_ms_sysv): Use named constants instead of magic
24217         numbers to describe clobbered registers.
24218         (*call_value_0_rex64_ms_sysv): Ditto.
24219         * config/i386/mmx.md (mmx_emms): Ditto.
24220         (mmx_femms): Ditto.
24221
24222 2009-03-02  Richard Sandiford  <rdsandiford@googlemail.com>
24223
24224         * config/mips/mips.c (mips_mdebug_abi_name): Fix the handling
24225         of ABI_64.
24226
24227 2009-03-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
24228
24229         * config/spu/spu.c (TARGET_SECTION_TYPE_FLAGS): Define.
24230         (spu_section_type_flags): New function.
24231
24232 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
24233
24234         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not copy
24235         reg_class_contents of FLOAT_REGS into a temporary.
24236
24237 2009-03-02  Richard Guenther  <rguenther@suse.de>
24238             Ira Rosen  <irar@il.ibm.com>
24239
24240         PR tree-optimization/39318
24241         * tree-vect-transform.c (vectorizable_call): Transfer the EH region
24242         information to the vectorized statement.
24243
24244 2009-03-01  Uros Bizjak  <ubizjak@gmail.com>
24245
24246         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not shadow "i"
24247         variable.  Use defined names instead of magic constants for REX SSE
24248         registers.
24249
24250 2009-03-01  Richard Guenther  <rguenther@suse.de>
24251
24252         PR tree-optimization/39331
24253         * omp-low.c (lower_send_shared_vars): Do not receive new
24254         values for the reference of DECL_BY_REFERENCE parms or results.
24255
24256 2009-03-01  Jan Hubicka  <jh@suse.cz>
24257
24258         PR debug/39267
24259         * tree.h (BLOCK_NONLOCALIZED_VARS, BLOCK_NUM_NONLOCALIZED_VARS,
24260         BLOCK_NONLOCALIZED_VAR): New macros.
24261         (tree_block): Add nonlocalized_vars.
24262         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die,
24263         gen_decl_die): Add origin argument.  Allow generation of die with
24264         origin at hand only.
24265         (gen_member_die, gen_type_die_with_usage, force_decl_die,
24266         declare_in_namespace, gen_namescpace_die, dwarf2out_decl): Update use
24267         of gen_*.
24268         (gen_block_die): Fix checking for unused blocks.
24269         (process_scope_var): Break out from .... ; work with origins only.
24270         (decls_for_scope) ... here; process nonlocalized list.
24271         (dwarf2out_ignore_block): Look for nonlocalized vars.
24272         * tree-ssa-live.c (remove_unused_scope_block_p): Look for nonlocalized
24273         vars.
24274         (dump_scope_block): Dump them.
24275         * tree-inline.c (remap_decls): Handle nonlocalized vars.
24276         (remap_block): Likewise.
24277         (can_be_nonlocal): New predicate.
24278         (copy_bind_expr, copy_gimple_bind): Update use of remap_block.
24279
24280 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
24281
24282         * configure: Regenerate.
24283
24284 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
24285
24286         * optc-gen.awk: No need to duplicate option flags twice.
24287         Reuse help texts for duplicate options which do not have any.
24288
24289         * gcc.c (display_help): Document --version.
24290
24291         * gcc.c (main): If print_help_list and verbose_flag, ensure
24292         driver output comes before subprocess output.
24293
24294         * optc-gen.awk: Assign all remaining fields to help string,
24295         space-separated, for multi-line help in *.opt.
24296
24297         * doc/invoke.texi (Warning Options): -Wsync-nand is C/C++ only.
24298         -Wno-pedantic-ms-format is for MinGW targets only.
24299
24300         * doc/options.texi (Option file format): Fix bad indentation,
24301         restoring dropped sentence.
24302
24303 2009-02-28  Jan Hubicka  <jh@suse.cz>
24304
24305         * tree-inline.c (tree_function_versioning): Output debug info.
24306
24307 2009-02-28  Jan Hubicka  <jh@suse.cz>
24308
24309         PR debug/39267
24310         * tree-inline.c (setup_one_parameter): Do not copy propagate
24311         arguments when not optimizing.
24312
24313 2009-02-28  H.J. Lu  <hongjiu.lu@intel.com>
24314
24315         PR target/39327
24316         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
24317         (avx_addsubv4df3): Likewise.
24318         (*avx_addsubv4sf3): Likewise.
24319         (sse3_addsubv4sf3): Likewise.
24320         (*avx_addsubv2df3): Likewise.
24321         (sse3_addsubv2df3): Likewise.
24322         (avx_unpckhps256): Correct item selectors.
24323         (avx_unpcklps256): Likewise.
24324         (avx_unpckhpd256): Likewise.
24325         (avx_unpcklpd256): Likewise.
24326
24327 2009-02-28  Jan Hubicka  <jh@suse.cz>
24328
24329         * tree-inline.c (expand_call_inline): Avoid duplicate declarations of
24330         static vars.
24331         (copy_arguments_for_versioning): If var is declared don't declare it.
24332         (tree_function_versioning): First setup substitutions and then copy
24333         args.
24334
24335 2009-02-27  Jan Hubicka  <jh@suse.cz>
24336
24337         PR debug/39267
24338         * cgraph.h (varpool_output_debug_info): Remove.
24339         * cgraphunit.c (varpool_output_debug_info): Remove.
24340         * dwarf2out.c (deferred_locations_struct): New struct
24341         (deferred_locations): New type.
24342         (deferred_locations_list): New static var.
24343         (deffer_location): New function.
24344         (gen_variable_die): Use it.
24345         (decls_for_scope): Output info on local static vars.
24346         (dwarf2out_finish): Process deferred locations.
24347         * varpool.c (varpool_output_debug_info): Remove.
24348
24349 2009-02-27  Jan Hubicka  <jh@suse.cz>
24350
24351         PR debug/39267
24352         * tree.h (TREE_PROTECTED): Fix comment.
24353         (BLOCK_HANDLER_BLOCK): Remove.
24354         (struct tree_block): Remove handler_block add body_block.
24355         (inlined_function_outer_scope_p): New.
24356         (is_body_block): Remove.
24357         * dbxout.c (dbxout_block): Remove BLOCK_HANDLER_BLOCK.
24358         * dwarf2out.c (is_inlined_entry_point): Remove.
24359         (add_high_low_attributes): Use inlined_function_outer_scope_p.
24360         (gen_block_die): Use is_inlined_entry_point check.  Remove body block
24361         code.
24362         * langhooks.h (struct lang_hooks): Remove no_bodu_blocks.
24363         * gimplify.c (gimplify_expr): Gimplify body blocks.
24364         * tree-ssa-live.c (remove_unused_scope_block_p): Allow removing wrapper
24365         block with multiple subblocks.
24366         (dump_scope_block): Prettier output; dump more flags and info.
24367         (dump_scope_blocks): New.
24368         (remove_unused_locals): Use dump_scope_blocks.
24369         * tree-flow.h (dump_scope_blocks): Declare.
24370         * tree-cfg.c (execute_build_cfg): Dump scope blocks.
24371         * stmt.c (is_body_block): Remove.
24372         * tree-inline.c (remap_block): Copy BODY_BLOCK info.
24373         * langhooks-def.h (LANG_HOOKS_NO_BODY_BLOCKS): Remove.
24374
24375 2009-02-27  Sebastian Pop  <sebastian.pop@amd.com>
24376
24377         PR middle-end/39308
24378         * graphite.c (graphite_loop_normal_form): Do not call
24379         number_of_iterations_exit from a gcc_assert.
24380
24381 2009-02-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
24382
24383         * config/s390/s390.c (s390_swap_cmp): Look for conditional
24384         jumps if COND is NULL.
24385         (find_cond_jump): New function.
24386         (s390_z10_optimize_cmp): Handling for reg-reg compares added.
24387         * config/s390/s390.md: Remove z10_cobra attribute value.
24388
24389 2009-02-26  Uros Bizjak  <ubizjak@gmail.com>
24390
24391         * config/alpha/alpha.h (alpha_expand_mov): Return false if
24392         force_const_mem returns NULL_RTX.
24393
24394 2009-02-26  Jan Hubicka  <jh@suse.cz>
24395
24396         PR debug/39267
24397         * cgraph.h (varpool_output_debug_info): Remove.
24398         * cgraphunit.c (varpool_output_debug_info): Remove.
24399         * dwarf2out.c (deferred_locations_struct): New struct
24400         (deferred_locations): New type.
24401         (deferred_locations_list): New static var.
24402         (deffer_location): New function.
24403         (gen_variable_die): Use it.
24404         (decls_for_scope): Output info on local static vars.
24405         (dwarf2out_finish): Process deferred locations.
24406         * varpool.c (varpool_output_debug_info): Remove.
24407
24408 2009-02-25  H.J. Lu  <hongjiu.lu@intel.com>
24409
24410         PR rtl-optimization/39241
24411         * jump.c (rtx_renumbered_equal_p): Remove 2 superfluous calls
24412         to subreg_offset_representable_p.
24413
24414 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
24415
24416         * regmove.c (regmove_optimize): Conform to struct rtl_opt_pass
24417         execute function prototype.  Get f and nregs from max_reg_num
24418         and get_insns.  Remove the first backward pass as it's dead,
24419         guard the forward pass by flag_expensive_optimizations.
24420         (rest_of_handle_regmove): Delete.
24421         (pass_regmove): Replace it with regmove_optimize.
24422
24423 2009-02-25  Martin Jambor  <mjambor@suse.cz>
24424
24425         PR tree-optimization/39259
24426         * tree-inline.c (initialize_cfun): Remove asserts for calls_setjmp and
24427         calls_alloca function flags.
24428         (copy_bb): Set calls_setjmp and alls_alloca function flags if such
24429         calls are detected.
24430
24431 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
24432
24433         * regmove.c (discover_flags_reg, flags_set_1, mark_flags_life_zones,
24434         flags_set_1_rtx, flags_set_1_set): Delete.
24435         (regmove_optimize): Do not call mark_flags_life_zones.
24436
24437 2009-02-24  Julian Brown  <julian@codesourcery.com>
24438
24439         PR target/35965
24440         * config/arm/arm.c (require_pic_register): Only set
24441         cfun->machine->pic_reg once per function.
24442
24443 2009-02-24  Sandra Loosemore  <sandra@codesourcery.com>
24444
24445         * doc/invoke.texi (Link Options): Document an easier way to pass
24446         options that take arguments to the GNU linker using -Xlinker and -Wl.
24447
24448 2009-02-24  Steve Ellcey  <sje@cup.hp.com>
24449
24450         PR target/33785
24451         * doc/tm.texi (TARGET_C99_FUNCTIONS): Fix description.
24452
24453 2009-02-24  Richard Guenther  <rguenther@suse.de>
24454
24455         PR debug/39285
24456         * dwarf2out.c (gen_enumeration_type_die): Handle CONST_DECLs.
24457
24458 2009-02-24  Richard Guenther  <rguenther@suse.de>
24459             Zdenek Dvorak  <ook@ucw.cz>
24460
24461         PR tree-optimization/39233
24462         * tree-ssa-loop-ivopts.c (add_candidate_1): Do not except pointers
24463         from converting them to a generic type.
24464
24465 2009-02-23  Sebastian Pop  <sebastian.pop@amd.com>
24466
24467         PR tree-optimization/39260
24468         * graphite.c (harmful_stmt_in_bb): Stop a SCoP when the basic block
24469         contains a condition with a real type.
24470         (build_scop_conditions_1): Conditions are always last_stmt of a bb.
24471
24472 2009-02-23  Jason Merrill  <jason@redhat.com>
24473
24474         PR c++/38880
24475         * varasm.c (initializer_constant_valid_p) [PLUS_EXPR]: Check
24476         narrowing_initializer_constant_valid_p.
24477         (narrowing_initializer_constant_valid_p): Don't return
24478         null_pointer_node for adding a pointer to itself.
24479
24480 2009-02-23  Jan Hubicka  <jh@suse.cz>
24481
24482         PR c/12245
24483         * ggc.h (htab_create_ggc): Use ggc_free to free hashtable when
24484         resizing.
24485
24486 2009-02-23  Jan Hubicka  <jh@suse.cz>
24487
24488         PR tree-optimization/37709
24489         * tree.c (block_ultimate_origin): Move here from dwarf2out.
24490         * tree.h (block_ultimate_origin): Declare.
24491         * dwarf2out.c (block_ultimate_origin): Move to tree.c
24492         * tree-ssa-live.c (remove_unused_scope_block_p):
24493         Eliminate blocks containig no instructions nor live variables nor
24494         nested blocks.
24495         (dump_scope_block): New function.
24496         (remove_unused_locals): Enable removal of dead blocks by default;
24497         enable dumping at TDF_DETAILS.
24498
24499 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
24500
24501         * config/i386/i386.c (classify_argument): Don't allow COImode
24502         and OImode.
24503         (function_arg_advance_32): Don't allow OImode.
24504         (function_arg_32): Likewise.
24505         (function_value_32): Likewise.
24506         (return_in_memory_32): Likewise.
24507         (function_arg_64): Remove OImode comment.
24508
24509 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
24510
24511         PR target/39261
24512         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
24513         ix86_expand_vector_set for V4DImode in 64bit mode only.
24514         (ix86_expand_vector_init_one_var): Likewise.
24515
24516 2009-02-21  Sebastian Pop  <sebastian.pop@amd.com>
24517
24518         * graphite.c (graphite_trans_loop_block): Adjust tile size to 51.
24519
24520 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
24521
24522         PR bootstrap/39257
24523         * loop-iv.c: Revert last change.
24524         * emit-rtl.c: Likewise.
24525
24526 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
24527
24528         PR target/39256
24529         * config/i386/i386.c (type_natural_mode): Remove an extra
24530         space in the warning message.
24531         (function_value_32): Handle 32-byte vector modes.
24532         (return_in_memory_32): Likewise.
24533
24534 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
24535
24536         * loop-iv.c (truncate_value): New function.
24537         (iv_subreg, get_iv_value, iv_number_of_iterations): Use it instead
24538         of lowpart_subreg.
24539         (lowpart_subreg): Move to...
24540         * emit-rtl.c: ...here.
24541
24542 2009-02-21  Danny Smith  <dannysmith@users.sourceforge.net>
24543
24544         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common): Revert
24545         accidental and undocumented change at revision 140860.
24546
24547 2009-02-21  Joseph Myers  <joseph@codesourcery.com>
24548
24549         * config/arm/arm.c (arm_gimplify_va_arg_expr): Update prototype to
24550         take gimple_seq * arguments.
24551         (arm_mangle_type): Use CONST_CAST_TREE on type argument passed to
24552         types_compatible_p langhook.
24553
24554 2009-02-20  Mark Mitchell  <mark@codesourcery.com>
24555             Joseph Myers  <joseph@codesourcery.com>
24556
24557         * config/arm/arm.c (arm_builtin_va_list): New function.
24558         (arm_expand_builtin_va_start): Likewise.
24559         (arm_gimplify_va_arg_expr): Likewise.
24560         (TARGET_BUILD_BUILTIN_VA_LIST): Define.
24561         (TARGET_BUILD_BUILTIN_VA_START): Likewise.
24562         (TARGET_BUILD_BUILTIN_VA_ARG_EXPR): Likewise.
24563         (va_list_type): New variable.
24564         (arm_mangle_type): Mangle va_list_type appropriately.
24565
24566 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
24567
24568         PR middle-end/39157
24569         * Makefile.in (loop-invariant.o): Depend on $(PARAMS_H).
24570         * params.h (LOOP_INVARIANT_MAX_BBS_IN_LOOP): Define.
24571         * params.def (loop-invariant-max-bbs-in-loop): New parameter.
24572         * opts.c (decode_options): Set loop-invariant-max-bbs-in-loop
24573         parameter to 1000 for -O1 by default.
24574         * doc/invoke.texi (loop-invariant-max-bbs-in-loop): Document new
24575         parameter.
24576         * loop-invariant.c: Include params.h.
24577         (move_loop_invariants): Don't call move_single_loop_invariants on
24578         very large loops.
24579
24580 2009-02-20  Jaka Mocnik  <jaka@xlab.si>
24581
24582         * calls.c (emit_library_call_value_1): Use slot_offset instead of
24583         offset when calculating bounds for indexing stack_usage_map.  Fixes
24584         a buffer overflow with certain target setups.
24585
24586 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
24587
24588         PR target/39240
24589         * calls.c (expand_call): Clear try_tail_call if caller and callee
24590         disagree in promotion of function return value.
24591
24592 2009-02-19  Jakub Jelinek  <jakub@redhat.com>
24593
24594         PR target/39175
24595         * c-common.c (c_determine_visibility): If visibility changed and
24596         DECL_RTL has been already set, call make_decl_rtl to update symbol
24597         flags.
24598
24599 2009-02-19  H.J. Lu  <hongjiu.lu@intel.com>
24600
24601         PR c++/39188
24602         * varasm.c (assemble_variable): Don't check DECL_NAME when
24603         globalizing a variable.
24604
24605 2009-02-19  Joseph Myers  <joseph@codesourcery.com>
24606
24607         PR c/38483
24608         * builtins.c (gimplify_va_arg_expr): Evaluate the va_list
24609         expression before any __builtin_trap call.
24610         * c-typeck.c (build_function_call): Convert and check function
24611         arguments before generating a call to a trap.  Evaluate the
24612         function arguments before the trap.
24613
24614 2009-02-19  Uros Bizjak  <ubizjak@gmail.com>
24615
24616         PR target/39228
24617         * config/i386/i386.md (isinfxf2): Split from isinf<mode>2.
24618         (UNSPEC_FXAM_MEM): New unspec.
24619         (fxam<mode>2_i387_with_temp): New insn and split pattern.
24620         (isinf<mode>2): Use MODEF mode iterator.  Force operand[1] through
24621         memory using fxam<mode>2_i387_with_temp to remove excess precision.
24622
24623 2009-02-19  Richard Guenther  <rguenther@suse.de>
24624
24625         PR tree-optimization/39207
24626         PR tree-optimization/39074
24627         * tree-ssa-structalias.c (storedanything_id, var_storedanything,
24628         storedanything_tree): New.
24629         (do_ds_constraint): Simplify ANYTHING shortcutting.  Update
24630         the STOREDANYTHING solution if the lhs solution contains ANYTHING.
24631         (build_succ_graph): Add edges from STOREDANYTHING to all
24632         non-direct nodes.
24633         (init_base_vars): Initialize STOREDANYTHING.
24634         (compute_points_to_sets): Free substitution info after
24635         building the succ graph.
24636         (ipa_pta_execute): Likewise.
24637
24638         * tree-ssa-structalias.c (struct variable_info): Add may_have_pointers
24639         field.
24640         (do_ds_constraint): Do not add to special var or non-pointer
24641         field solutions.
24642         (type_could_have_pointers): Split out from ...
24643         (could_have_pointers): ... here.  For arrays use the element type.
24644         (create_variable_info_for): Initialize may_have_pointers.
24645         (new_var_info): Likewise.
24646         (handle_lhs_call): Make the HEAP variable unknown-sized.
24647         (intra_create_variable_infos): Use a type with pointers for
24648         PARM_NOALIAS, make it unknown-sized.
24649
24650 2009-02-18  H.J. Lu  <hongjiu.lu@intel.com>
24651
24652         PR target/39224
24653         * config/i386/i386.c (ix86_return_in_memory): Properly check ABI.
24654
24655 2009-02-18  Jason Merrill  <jason@redhat.com>
24656
24657         PR target/39179
24658         * tree-ssa-ccp.c (get_symbol_constant_value): Don't assume zero
24659         value if DECL_EXTERNAL.
24660         * tree-sra.c (sra_walk_gimple_assign): Likewise.
24661         * target.h (gcc_target::binds_local_p): Clarify "module".
24662         * tree.h (TREE_PUBLIC): Clarify "module".
24663
24664 2009-02-17  Xuepeng Guo  <xuepeng.guo@intel.com>
24665
24666         PR target/38891
24667         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move the hunk of
24668         initialization for MS_ABI prior to the hunk of !TARGET_MMX.
24669
24670 2009-02-17  H.J. Lu  <hongjiu.lu@intel.com>
24671
24672         PR target/39082
24673         * c.opt (Wabi): Support C and ObjC.
24674         (Wpsabi): New.
24675
24676         * c-opts.c (c_common_handle_option): Handle OPT_Wabi.
24677
24678         * config/i386/i386.c (classify_argument): Warn once about the ABI
24679         change when passing union with long double.
24680
24681         * doc/invoke.texi: Update -Wabi for warning psABI changes.
24682
24683 2009-02-18  Joseph Myers  <joseph@codesourcery.com>
24684
24685         PR c/35447
24686         * c-parser.c (c_parser_compound_statement): Always enter and leave
24687         a scope.
24688
24689 2009-02-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
24690
24691         PR target/34587
24692         * config/darwin.h (SUPPORTS_INIT_PRIORITY): Define.
24693
24694 2009-02-18  Jakub Jelinek  <jakub@redhat.com>
24695
24696         PR tree-optimization/36922
24697         * tree-data-ref.c (initialize_matrix_A): Handle BIT_NOT_EXPR.
24698         * tree-scalar-evolution.c (interpret_rhs_expr, instantiate_scev_1):
24699         Likewise.
24700
24701 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
24702
24703         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
24704         to 0 for EABI64.
24705
24706 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
24707
24708         * config/mips/mips.md (type): Reclassify lui_movf as "unknown".
24709
24710 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
24711
24712         * config/mips/mips.c (mips_gimplify_va_arg_expr): Fix invalid
24713         tree sharing.
24714
24715 2009-02-17  Ruan Beihong  <ruanbeihong@gmail.com>
24716             Richard Sandiford  <rdsandiford@googlemail.com>
24717
24718         * config/mips/mips.c (CODE_FOR_loongson_biadd): Delete.
24719         * config/mips/loongson.md (reduc_uplus_<mode>): Rename to...
24720         (loongson_biadd): ...this.
24721
24722 2009-02-17  Richard Guenther  <rguenther@suse.de>
24723
24724         PR tree-optimization/39202
24725         * tree-ssa-structalias.c (do_structure_copy): Before collapsing
24726         a var make sure to follow existing collapses.
24727
24728 2009-02-17  Richard Guenther  <rguenther@suse.de>
24729
24730         PR middle-end/39214
24731         * langhooks.c (lhd_print_error_function): Check for NULL block.
24732
24733 2009-02-17  Richard Guenther  <rguenther@suse.de>
24734
24735         PR tree-optimization/39204
24736         * tree-ssa-pre.c (phi_translate_1): Lookup the value-number
24737         of the PHI arg.
24738
24739 2009-02-17  Uros Bizjak  <ubizjak@gmail.com>
24740
24741         * config/soft-fp/double.h: Update from glibc CVS.
24742
24743 2009-02-17  Richard Guenther  <rguenther@suse.de>
24744
24745         PR tree-optimization/39207
24746         * tree-ssa-structalias.c (find_what_p_points_to): Do not emit
24747         strict-aliasing warnings for pointers pointing to NULL.
24748
24749 2009-02-16  Joseph Myers  <joseph@codesourcery.com>
24750
24751         PR c/35446
24752         * c-parser.c (c_parser_braced_init): Call pop_init_level when
24753         skipping until next close brace.
24754
24755 2009-02-16  H.J. Lu  <hongjiu.lu@intel.com>
24756
24757         PR target/37049
24758         * config/i386/i386.c (ix86_expand_push): Set memory alignment
24759         to function argument boundary.
24760
24761 2009-02-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
24762
24763         * config/picochip/picochip.md (lea_add): Allow any nonimmediate
24764         in the lea_add. Reload eventually constraints it properly.
24765         * config/picochip/constraints.md: Remove the target constraint
24766         "b", since it is not needed anymore.
24767
24768 2009-02-16  Jakub Jelinek  <jakub@redhat.com>
24769
24770         * gthr-dce.h: Uglify function parameter and local variable names.
24771         * gthr-gnat.h: Likewise.
24772         * gthr-mipssde.h: Likewise.
24773         * gthr-nks.h: Likewise.
24774         * gthr-posix95.h: Likewise.
24775         * gthr-posix.h: Likewise.
24776         * gthr-rtems.h: Likewise.
24777         * gthr-single.h: Likewise.
24778         * gthr-solaris.h: Likewise.
24779         * gthr-tpf.h: Likewise.
24780         * gthr-vxworks.h: Likewise.
24781         * gthr-win32.h: Likewise.
24782
24783 2009-02-15  H.J. Lu  <hongjiu.lu@intel.com>
24784
24785         PR target/39196
24786         * config/i386/i386.md: Restrict the new peephole2 to move
24787         between MMX/SSE registers.
24788
24789 2009-02-15  Richard Guenther  <rguenther@suse.de>
24790
24791         Revert
24792         2009-02-13  Richard Guenther  <rguenther@suse.de>
24793
24794         * configure.ac: Enable LFS.
24795         * configure: Re-generate.
24796         * config.in: Likewise.
24797
24798 2009-02-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
24799
24800         * config/spu/spu_internals.h (spu_sr, spu_sra, spu_srqw,
24801         spu_srqwbyte, spu_srqwbytebc): Define.
24802         * config/spu/spu-builtins.def (spu_sr, spu_sra, spu_srqw,
24803         spu_srqwbyte, spu_srqwbytebc): New overloaded builtins.
24804         * config/spu/spu.md ("shrqbybi_<mode>", "shrqbi_<mode>",
24805         "shrqby_<mode>"): New insn-and-split patterns.
24806         * config/spu/spu.c (expand_builtin_args): Determine and return
24807         number of operands using spu_builtin_description data.
24808         (spu_expand_builtin_1): Use it.
24809
24810 2009-02-13  Steve Ellcey  <sje@cup.hp.com>
24811
24812         PR target/38056
24813         * config/ia64/ia64.c (ia64_function_ok_for_sibcall): Check
24814         TARGET_CONST_GP.
24815
24816 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
24817
24818         PR target/39149
24819         * config/i386/i386.c (override_options): Correct warning
24820         messages for -malign-loops, -malign-jumps and -malign-functions.
24821
24822 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
24823
24824         PR target/39152
24825         * config/i386/i386.md: Restrict the new peephole2 to move
24826         between the general purpose registers.
24827
24828 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
24829
24830         PR target/39162
24831         * config/i386/i386.c (type_natural_mode): Add a new argument.
24832         Return the original mode and warn ABI change if vector size is 32byte.
24833         (function_arg_advance): Updated.
24834         (function_arg): Likewise.
24835         (ix86_function_value): Likewise.
24836         (ix86_return_in_memory): Likewise.
24837         (ix86_sol10_return_in_memory): Likewise.
24838         (ix86_gimplify_va_arg): Likewise.
24839         (function_arg_32): Don't warn ABX ABI change here.
24840         (function_arg_64): Likewise.
24841
24842 2009-02-13  Bernd Schmidt  <bernd.schmidt@analog.com>
24843
24844         * loop-iv.c (implies_p): In the final case, test that operands 0
24845         of the two comparisons match.
24846
24847         * config/bfin/bfin.c (find_prev_insn_start): New function.
24848         (bfin_optimize_loop): Use it in some cases instead of PREV_INSN.
24849         (find_next_insn_start): Move.
24850
24851 2009-02-13  Richard Guenther  <rguenther@suse.de>
24852
24853         * configure.ac: Enable LFS.
24854         * configure: Re-generate.
24855         * config.in: Likewise.
24856
24857 2009-02-13  Joseph Myers  <joseph@codesourcery.com>
24858
24859         PR c/35444
24860         * c-parser.c (c_parser_parms_list_declarator): Discard pending
24861         sizes on syntax error after some arguments have been parsed.
24862
24863 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
24864
24865         * doc/invoke.texi (-fira): Remove.
24866
24867 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
24868
24869         * caller-save.c: Replace regclass.c with reginfo.c in comments.
24870         * recog.c: Likewise.
24871         * rtl.h: Likewise.
24872
24873 2009-02-12  Uros Bizjak  <ubizjak@gmail.com>
24874
24875         * longlong.h (sub_ddmmss): New for ia64. Ported from GMP 4.2.
24876         (umul_ppmm): Likewise.
24877         (count_leading_zeros): Likewise.
24878         (count_trailing_zeros): Likewise.
24879         (UMUL_TIME): Likewise.
24880
24881 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
24882
24883         * config.gcc (ia64*-*-linux*): Add ia64/t-fprules-softfp and
24884         soft-fp/t-softfp to tmake_file.
24885
24886         * config/ia64/ia64.c (ia64_soft_fp_init_libfuncs): New.
24887         (ia64_expand_compare): Use HPUX library for TFmode only for HPUX.
24888         (ia64_builtins) [IA64_BUILTIN_COPYSIGNQ, IA64_BUILTIN_FABSQ,
24889         IA64_BUILTIN_INFQ]: New.
24890         (ia64_init_builtins): Initialize __builtin_infq,
24891         __builtin_fabsq and __builtin_copysignq if not HPUX.
24892         (ia64_expand_builtin): Handle IA64_BUILTIN_COPYSIGNQ,
24893         IA64_BUILTIN_FABSQ and IA64_BUILTIN_INFQ.
24894
24895         * config/ia64/lib1funcs.asm (__divtf3): Define only if
24896         SHARED is defined.
24897         (__fixtfti): Likewise.
24898         (__fixunstfti): Likewise.
24899         (__floattitf): Likewise.
24900
24901         * config/ia64/libgcc-glibc.ver: New.
24902         * config/ia64/t-fprules-softfp: Likewise.
24903         * config/ia64/sfp-machine.h: Likewise.
24904
24905         * config/ia64/linux.h (LIBGCC2_HAS_TF_MODE): New.
24906         (LIBGCC2_TF_CEXT): Likewise.
24907         (TF_SIZE): Likewise.
24908         (TARGET_INIT_LIBFUNCS): Likewise.
24909
24910         * config/ia64/t-glibc (SHLINB_MAPFILES):
24911         Add $(srcdir)/config/ia64/libgcc-glibc.ver.
24912
24913 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
24914
24915         * config/i386/i386.c (construct_container): Rewrite processing
24916         BLKmode with X86_64_SSE_CLASS.
24917
24918 2009-02-12  Paolo Bonzini  <bonzini@gnu.org>
24919
24920         PR target/39152
24921         * config/i386/i386.md: Replace simplify_replace_rtx with
24922         replace_rtx in the new peephole2.
24923
24924 2009-02-12  Nathan Sidwell  <nathan@codesourcery.com>
24925
24926         * doc/invoke.texi (Optimize Options): Stop claiming inlining and
24927         loop unrolling do not happen at -O2.
24928
24929 2009-02-12  Michael Matz  <matz@suse.de>
24930
24931         * gcc.c (ASM_DEBUG_SPEC): Check for -g0.
24932
24933 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
24934
24935         * dwarf2out.c (dwarf2out_finish): Force output of comp_unit_die
24936         for -g3.
24937
24938 2009-02-12  Ben Elliston  <bje@au.ibm.com>
24939
24940         * config/rs6000/rs6000.md (allocate_stack): Use _stack form of
24941         patterns when updating the back chain.  Missed in the 2009-02-10
24942         change.
24943
24944 2009-02-11  Janis Johnson  <janis187@us.ibm.com>
24945
24946         * doc/extend.texi (Decimal Floating Types): Update identifier of
24947         draft TR and list of missing support.
24948
24949 2009-02-11  Jakub Jelinek  <jakub@redhat.com>
24950
24951         PR middle-end/39154
24952         * gimplify.c (omp_notice_variable): If adding GOVD_SEEN
24953         bit to variable length decl's flags, add it also to its
24954         pointer replacement variable.
24955
24956 2009-02-11  Uros Bizjak  <ubizjak@gmail.com>
24957             Jakub Jelinek  <jakub@redhat.com>
24958
24959         PR target/39118
24960         * config/i386/i386.md (UNSPEC_MEMORY_BLOCKAGE): New constant.
24961         (memory_blockage): New expander.
24962         (*memory_blockage): New insn pattern.
24963         * config/i386/i386.c (ix86_expand_prologue): Use memory_blockage
24964         instead of general blockage at the end of function prologue when
24965         frame pointer is used to access red zone area.  Do not emit blockage
24966         when profiling, it is emitted in generic code.
24967         (ix86_expand_epilogue): Emit memory_blockage at the beginning of
24968         function epilogue when frame pointer is used to access red zone area.
24969
24970 2009-02-11  Paolo Bonzini  <bonzini@gnu.org>
24971
24972         PR target/38824
24973         * config/i386/i386.md: Add two new peephole2 to avoid mov followed
24974         by arithmetic with memory operands.
24975         * config/i386/predicates.md (commutative_operator): New.
24976
24977 2009-02-10  Janis Johnson  <janis187@us.ibm.com>
24978
24979         * doc/extend.texi (Fixed-Point Types): Break long paragraphs into
24980         bulleted lists.
24981
24982 2009-02-10  Eric Botcazou  <ebotcazou@adacore.com>
24983
24984         * alias.h (record_alias_subset): Declare.
24985         * alias.c (record_alias_subset): Make global.
24986
24987 2009-02-10  Nick Clifton  <nickc@redhat.com>
24988
24989         * tree-parloops.c: Change license to GPLv3.
24990         * ipa-struct-reorg.c: Change license to GPLv3.
24991         * ipa-struct-reorg.h: Change license to GPLv3.
24992
24993 2009-02-10  Steve Ellcey  <sje@cup.hp.com>
24994
24995         PR c/39084
24996         * c-decl.c (start_struct): Return NULL on error.
24997
24998 2009-02-10  Jakub Jelinek  <jakub@redhat.com>
24999
25000         PR middle-end/39124
25001         * cfgloopmanip.c (remove_path): Call remove_bbs after
25002         cancel_loop_tree, not before it.
25003
25004         PR target/39139
25005         * function.h (struct function): Add has_local_explicit_reg_vars bit.
25006         * gimplify.c (gimplify_bind_expr): Set it if local DECL_HARD_REGISTER
25007         VAR_DECLs were seen.
25008         * tree-ssa-live.c (remove_unused_locals): Recompute
25009         cfun->has_local_explicit_reg_vars.
25010         * tree-ssa-sink.c (statement_sink_location): Don't sink BLKmode
25011         copies or clearings if cfun->has_local_explicit_reg_vars.
25012
25013 2009-02-10  Uros Bizjak  <ubizjak@gmail.com>
25014
25015         PR target/39118
25016         * config/i386/i386.c (expand_prologue): Emit blockage at the end
25017         of function prologue when frame pointer is used to access
25018         red zone area.
25019
25020 2009-02-10  Richard Guenther  <rguenther@suse.de>
25021
25022         PR middle-end/39127
25023         * gimplify.c (gimple_regimplify_operands): Always look if
25024         we need to create a temporary.
25025
25026 2009-02-10  Richard Guenther  <rguenther@suse.de>
25027
25028         PR tree-optimization/39132
25029         * tree-loop-distribution.c (todo): New global var.
25030         (generate_memset_zero): Trigger TODO_rebuild_alias.
25031         (tree_loop_distribution): Return todo.
25032
25033 2009-02-10  H.J. Lu  <hongjiu.lu@intel.com>
25034
25035         PR target/39119
25036         * config/i386/i386.c (x86_64_reg_class): Remove X86_64_AVX_CLASS.
25037         (x86_64_reg_class_name): Removed.
25038         (classify_argument): Return 0 if bytes > 32.  Return 0 if the
25039         first one isn't X86_64_SSE_CLASS or any other ones aren't
25040         X86_64_SSEUP_CLASS when size > 16bytes.  Don't turn
25041         X86_64_SSEUP_CLASS into X86_64_SSE_CLASS if the preceded one
25042         is X86_64_SSEUP_CLASS.  Set AVX modes to 1 X86_64_SSE_CLASS
25043         and 3 X86_64_SSEUP_CLASS.
25044         (construct_container): Remove X86_64_AVX_CLASS.  Handle 4
25045         registers with 1 X86_64_SSE_CLASS and 3 X86_64_SSEUP_CLASS.
25046
25047 2009-02-10  Ben Elliston  <bje@au.ibm.com>
25048
25049         * config/rs6000/rs6000.md (allocate_stack): Always use an update
25050         form instruction to update the stack back chain word, even if the
25051         user has disabled the generation of update instructions.
25052         (movdi_<mode>_update_stack): New.
25053         (movsi_update_stack): Likewise.
25054         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Likewise,
25055         always use an update form instruction to update the stack back
25056         chain word.
25057
25058 2009-02-09  Sebastian Pop  <sebastian.pop@amd.com>
25059
25060         PR middle-end/38953
25061         * graphite.c (if_region_set_false_region): After moving a region in
25062         the false branch of a condition, remove the empty dummy basic block.
25063         (gloog): Remove wrong fix for PR38953.
25064
25065 2009-02-09  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
25066
25067         * config/spu/spu.c (array_to_constant): Fix (latent) wrong-code
25068         generation due to implicit sign extension.
25069
25070 2009-02-09  Eric Botcazou  <ebotcazou@adacore.com>
25071
25072         PR middle-end/38981
25073         * tree-ssa-coalesce.c (add_coalesce): Cap the costs of coalesce pairs
25074         at MUST_COALESCE_COST-1 instead of MUST_COALESCE_COST.
25075
25076 2009-02-09  Richard Guenther  <rguenther@suse.de>
25077
25078         PR middle-end/35202
25079         * convert.c (convert_to_real): Disable (float)fn((double)x)
25080         to fnf(x) conversion if errno differences may occur and
25081         -fmath-errno is set.
25082
25083 2009-02-07  Anatoly Sokolov  <aesok@post.ru>
25084
25085         * config/avr/avr.c (avr_mcu_t): Add ata6289 device.
25086         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
25087         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
25088
25089 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
25090
25091         PR c/35434
25092         * c-common.c (handle_alias_attribute): Disallow attribute for
25093         anything not a FUNCTION_DECL or VAR_DECL.
25094
25095 2009-02-06  Janis Johnson  <janis187@us.ibm.com>
25096
25097         PR c/39035
25098         * real.c (do_compare): Special-case compare of zero against
25099         decimal float value.
25100
25101 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
25102
25103         PR c/36432
25104         * c-decl.c (grokdeclarator): Don't treat [] declarators in fields
25105         as indicating flexible array members unless the field itself is
25106         being declarared as the incomplete array.
25107
25108 2009-02-06  Jan Hubicka  <jh@suse.cz>
25109
25110         PR tree-optimization/38844
25111         * ipa-inline.c (try_inline): Stop inlining recursion when edge
25112         is already inlined.
25113
25114 2009-02-06  Richard Guenther  <rguenther@suse.de>
25115
25116         PR middle-end/38977
25117         * tree-cfg.c (need_fake_edge_p): Force a fake edge for
25118         fork because we may expand it as __gcov_fork.
25119
25120 2009-02-06  Nick Clifton  <nickc@redhat.com>
25121
25122         * config/m32c/m32c.h (PCC_BITFIELD_TYPE_MATTERS): Define to zero.
25123
25124 2009-02-06  Paolo Bonzini  <bonzini@gnu.org>
25125
25126         PR tree-optimization/35659
25127         * tree-ssa-sccvn.c (vn_constant_eq, vn_reference_eq, vn_nary_op_eq
25128         vn_phi_eq): Shortcut if hashcode does not match.
25129         (vn_reference_op_compute_hash): Do not call iterative_hash_expr for
25130         NULL operands.
25131         * tree-ssa-pre.c (pre_expr_hash): Look at hashcode if available,
25132         and avoid iterative_hash_expr.
25133         (FOR_EACH_VALUE_ID_IN_SET): New.
25134         (value_id_compare): Remove.
25135         (sorted_array_from_bitmap_set): Use FOR_EACH_VALUE_ID_IN_SET to
25136         sort expressions by value id.
25137
25138 2009-02-05  Kaz Kojima  <kkojima@gcc.gnu.org>
25139
25140         PR target/38991
25141         * config/sh/predicates.md (general_movsrc_operand): Don't check
25142         the subreg of system registers here.
25143
25144 2009-02-05  Jakub Jelinek  <jakub@redhat.com>
25145
25146         PR c++/39106
25147         * cgraphunit.c (cgraph_function_versioning): Clear also DECL_VIRTUAL_P
25148         on the copied decl.
25149
25150 2009-02-05  Paolo Bonzini  <bonzini@gnu.org>
25151
25152         PR rtl-optimization/39110
25153         * rtlanal.c (rtx_addr_can_trap_p_1): Shortcut unaligned
25154         addresses, not aligned ones.
25155
25156 2009-02-05  Daniel Berlin  <dberlin@dberlin.org>
25157             Richard Guenther  <rguenther@suse.de>
25158
25159         PR tree-optimization/39100
25160         * tree-ssa-structalias.c (do_ds_constraint): Actually do what the
25161         comment says and add edges.
25162
25163 2009-02-05  Joseph Myers  <joseph@codesourcery.com>
25164
25165         PR c/35435
25166         * c-common.c (handle_tls_model_attribute): Ignore attribute for
25167         non-VAR_DECLs without checking DECL_THREAD_LOCAL_P.
25168
25169 2009-02-04  Tobias Grosser  <grosser@fim.uni-passau.de>
25170
25171         * graphite.c (bb_in_sese_p, sese_build_livein_liveouts_use,
25172         sese_build_livein_liveouts_bb, sese_build_livein_liveouts,
25173         register_bb_in_sese, new_sese, free_sese): Moved.
25174         (dot_scop_1, build_scop_loop_nests, build_loop_iteration_domains,
25175         outermost_loop_in_scop, build_scop_iteration_domain,
25176         expand_scalar_variables_ssa_name, get_vdef_before_scop,
25177         limit_scops): Use bb_in_sese_p instead of bb_in_scop_p.
25178         Use loop_in_sese_p instead of loop_in_scop_p.
25179         (new_graphite_bb, gloog): Do not initialize SCOP_BBS_B.
25180         (new_scop, free_scop): Remove SCOP_LOOP2CLOOG_LOOP and SCOP_BBS_B.
25181         (scopdet_basic_block_info): Fix bug in scop detection.
25182         (new_loop_to_cloog_loop_str, hash_loop_to_cloog_loop,
25183         eq_loop_to_cloog_loop): Remove.
25184         (nb_loops_around_loop_in_scop, nb_loop
25185         ref_nb_loops): Moved here...
25186         * graphite.h (ref_nb_loops): ... from here.
25187         (struct scop): Remove bbs_b bitmap and loop2cloog_loop.
25188         (loop_domain_dim, loop_iteration_vector_dim): Remove.
25189         (SCOP_BBS_B, bb_in_scop_p, loop_in_scop_p): Removed.
25190
25191 2009-02-04  Paolo Bonzini  <bonzini@gnu.org>
25192             Hans-Peter Nilsson  <hp@axis.com>
25193
25194         PR rtl-optimization/37889
25195         * rtlanal.c (rtx_addr_can_trap_p_1): Add offset and size arguments.
25196         Move offset handling from PLUS to before the switch.  Use new
25197         arguments when considering SYMBOL_REFs too.
25198         (rtx_addr_can_trap_p): Pass dummy offset and size.
25199         (enum may_trap_p_flags): Remove.
25200         (may_trap_p_1): Pass size from MEM_SIZE.
25201
25202         PR rtl-optimization/38921
25203         * loop-invariant.c (find_invariant_insn): Use may_trap_or_fault_p.
25204         * rtl.h (may_trap_after_code_motion_p): Delete prototype.
25205         * rtlanal.c (may_trap_after_code_motion_p): Delete.
25206         (may_trap_p, may_trap_or_fault_p): Pass 0/1 as flags.
25207
25208 2009-02-04  H.J. Lu  <hongjiu.lu@intel.com>
25209
25210         AVX Programming Reference (January, 2009)
25211         * config/i386/sse.md (*vpclmulqdq): New.
25212
25213 2009-02-04  Jakub Jelinek  <jakub@redhat.com>
25214
25215         PR tree-optimization/38977
25216         PR gcov-profile/38292
25217         * calls.c (special_function_p): Disregard __builtin_ prefix.
25218
25219 2009-02-04  Hariharan Sandanagobalane  <hariharan@picochip.com>
25220
25221         * config/picochip/picochip.c (GO_IF_LEGITIMATE_ADDRESS): Disallow
25222         non-indexable addresses even before reload.
25223
25224 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
25225
25226         PR c/29129
25227         * c-decl.c (grokdeclarator): Mark [*] arrays in field declarators
25228         as having variable size.  Do not give an error for unnamed
25229         parameters with [*] declarators.  Give a warning for type names
25230         with [*] declarators and mark them as variable size.
25231         * c-parser.c (c_parser_sizeof_expression): Do not give an error
25232         for sizeof applied to [*] type names.
25233
25234 2009-02-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
25235
25236         PR C++/36607
25237         * convert.c (convert_to_integer): Treat OFFSET_TYPE like INTEGER_TYPE.
25238
25239 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
25240
25241         * gcc.c (process_command): Update copyright notice dates.
25242         * gcov.c (print_version): Likewise.
25243         * gcov-dump.c (print_version): Likewise.
25244         * mips-tfile.c (main): Likewise.
25245         * mips-tdump.c (main): Likewise.
25246
25247 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
25248
25249         PR c/35433
25250         * c-typeck.c (composite_type): Set TYPE_SIZE and TYPE_SIZE_UNIT
25251         for composite type involving a zero-length array type.
25252
25253 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
25254
25255         PR target/35318
25256         * function.c (match_asm_constraints_1): Skip over
25257         initial optional % in the constraint.
25258
25259         PR inline-asm/39059
25260         * c-parser.c (c_parser_postfix_expression): If fixed point is not
25261         supported, don't accept FIXED_CSTs.
25262         * c-decl.c (finish_declspecs): Error if fixed point is not supported
25263         and _Sat is used without _Fract/_Accum.  Set specs->type to
25264         integer_type_node for cts_fract/cts_accum if fixed point is not
25265         supported.
25266
25267 2009-02-02  Catherine Moore  <clm@codesourcery.com>
25268
25269         * sde.h (SUBTARGET_ARM_SPEC): Don't assemble -fpic code as -mabicalls.
25270
25271 2009-02-02  Richard Sandiford  <rdsandiford@googlemail.com>
25272
25273         * config/mips/mips.h (FILE_HAS_64BIT_SYMBOLS): New macro.
25274         (ABI_HAS_64BIT_SYMBOLS): Use it.
25275         (DWARF2_ADDR_SIZE): Use it instead of ABI_HAS_64BIT_SYMBOLS.
25276
25277 2009-02-02  Paul Brook  <paul@codesourcery.com>
25278
25279         * config/arm/arm.md (arm_addsi3): Add r/r/k alternative.
25280
25281 2009-02-02  Jakub Jelinek  <jakub@redhat.com>
25282
25283         PR inline-asm/39058
25284         * recog.h (asm_operand_ok): Add constraints argument.
25285         * recog.c (asm_operand_ok): Likewise.  If it is set, for digits
25286         recurse on matching constraint.
25287         (check_asm_operands): Pass constraints as 3rd argument to
25288         asm_operand_ok.  Don't look up matching constraint here.
25289         * stmt.c (expand_asm_operands): Pass NULL as 3rd argument
25290         to asm_operand_ok.
25291
25292 2009-02-02  Ben Elliston  <bje@au.ibm.com>
25293
25294         * doc/tm.texi (Storage Layout): Fix TARGET_ALIGN_ANON_BITFIELD and
25295         TARGET_NARROW_VOLATILE_BITFIELD macro names.
25296
25297 2009-01-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
25298
25299         * doc/install.texi (hppa*-hp-hpux*): Update binutils and linker
25300         information.  Remove some obsolete information.  Reorganize.
25301
25302         * config/pa/fptr.c: Revert license to GPL 2.
25303         * config/pa/milli64.S: Likewise.
25304
25305 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
25306
25307         PR target/38904
25308         * mkmap-flat.awk (END):  Use pe_dll command-line arg to pass
25309         LIBRARY name in, instead of hard-coding it.
25310         * config.gcc (i[34567]86-*-pe | i[34567]86-*-cygwin*):  Add an
25311         extra target make frag to tmake_files according to EH model.
25312         (i[34567]86-*-mingw* | x86_64-*-mingw*):  Likewise.
25313         * config/i386/t-dw2-eh, config/i386/t-sjlj-eh:  Add new target
25314         frags that define makefile variable EH_MODEL appropriately.
25315         * config/i386/cygming.h (DWARF2_UNWIND_INFO):  Add comment.
25316         * config/i386/cygwin.h (LIBGCC_EH_EXTN):  Define to nothing or
25317         to "-sjlj" according to type of EH configured.
25318         (LIBGCC_SONAME):  Concatenate it to shared library base name.
25319         * config/i386/mingw32.h (LIBGCC_EH_EXTN):  Define to "_dw2" or
25320         to "_sjlj" according to type of EH configured.
25321         (LIBGCC_SONAME):  Concatenate it to shared library base name.
25322         * config/i386/t-cygming (SHLIB_SONAME):  Use EH_MODEL.
25323         (SHLIB_LINK):  Add missing semicolon to if-else construct.
25324         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
25325         string value of "pe_dll" command-line option.
25326         * config/i386/t-cygwin (SHLIB_EH_EXTENSION):  New helper.
25327         (SHLIB_SONAME):  Use it when overriding t-cygming default.
25328         (SHLIB_IMPLIB):  Override t-cygming default.
25329         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
25330         string value of "pe_dll" command-line option.
25331
25332 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
25333
25334         PR target/38952
25335         * config/i386/i386.c (ix86_builtin_setjmp_frame_value): New.
25336         (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Override default to point at it.
25337
25338 2009-01-31  Richard Guenther  <rguenther@suse.de>
25339
25340         PR tree-optimization/38937
25341         * tree-ssa-structalias.c (do_sd_constraint): Do not shortcut
25342         computing the transitive closure.
25343
25344 2009-01-30  Richard Guenther  <rguenther@suse.de>
25345
25346         PR tree-optimization/39041
25347         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
25348         Propagate variable indices only if the types match for this stmt.
25349
25350 2009-01-30  Jakub Jelinek  <jakub@redhat.com>
25351
25352         PR target/39013
25353         * c-decl.c (pop_scope): Set DECL_EXTERNAL for functions declared
25354         inline but never defined.
25355
25356 2009-01-30  Wolfgang Gellerich  <gellerich@de.ibm.com>
25357
25358         * config/s390/s390.md (*insv<mode>_reg_extimm): Removed.
25359         (*insv_h_di_reg_extimm): New insn.
25360         (*insv_l<mode>_reg_extimm): New insn.
25361
25362 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
25363
25364         * config/picochip/picochip.c (flag_conserve_stack): set
25365         PARAM_LARGE_STACK_FRAME and PARAM_STACK_FRAME_GROWTH to zero under
25366         fconserve-stack. Reduce call-overhead used by inliner.
25367
25368 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
25369
25370         PR/38157
25371         * common.opt (flag_conserve_stack): Initialised to zero.
25372
25373 2009-01-30  Kai Tietz  <kai.tietz@onevision.com>
25374
25375         PR/39002
25376         * config/i386/i386.c (ix86_can_use_return_insn_p): Check for nsseregs.
25377         (ix86_expand_epilogue): Take nsseregs in account to use proper restore
25378         method.
25379
25380 2009-01-29  H.J. Lu  <hongjiu.lu@intel.com>
25381
25382         * ira-color.c (allocno_reload_assign): Update comments.
25383         * regmove.c (regmove_optimize): Likewise.
25384
25385         * ra.h: Removed.
25386
25387 2009-01-29  Robert Millan  <rmh@aybabtu.com>
25388
25389         * config.gcc: Recognize GNU/kOpenSolaris (*-*-kopensolaris*-gnu).
25390         * config/i386/kopensolaris-gnu.h: New file.  Undefine
25391         `MD_UNWIND_SUPPORT'.
25392         * config/kopensolaris-gnu.h: New file (based on kfreebsd-gnu.h).
25393
25394 2009-01-29  Kazu Hirata  <kazu@codesourcery.com>
25395
25396         PR tree-optimization/39007
25397         * tree-loop-distribution.c (generate_builtin): Use
25398         recompute_dominator to compute the immediate dominator of the
25399         basic block just after the loop.
25400
25401 2009-01-29  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
25402
25403         * config/i386/sol2-10.h [!HAVE_AS_IX86_DIFF_SECT_DELTA]
25404         (ASM_OUTPUT_DWARF_PCREL): Define.
25405
25406 2009-01-29  Vladimir Makarov  <vmakarov@redhat.com>
25407
25408         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Modify description.
25409         * doc/passes.texi: Remove entries about regclass, local-alloc, and
25410         global.  Modify entries about regmove and IRA.
25411
25412         * ra-conflict.c: Remove the file.
25413
25414         * reload.c (push_reload, find_dummy_reload): Remove flag_ira.
25415
25416         * tree-pass.h (pass_local_alloc, pass_global_alloc): Remove.
25417         (pass_regclass_init): Rename to pass_reginfo_init.
25418
25419         * cfgloopanal.c (estimate_reg_pressure_cost): Remove flag_ira.
25420
25421         * toplev.h (flag_ira): Remove.
25422
25423         * caller-save.c (setup_save_areas): Remove flag_ira.
25424
25425         * ira-color.c (ira_reuse_stack_slot, ira_mark_new_stack_slot): Ditto.
25426
25427         * global.c: Remove the file.
25428
25429         * opts.c (decode_options): Remove flag_ira.
25430
25431         * hard-reg-set.h (losing_caller_save_reg_set): Remove.
25432
25433         * regmove.c: Modify file description.
25434         (find_use_as_address, try_auto_increment): Define them only if
25435         AUTO_INC_DEC is defined.
25436         (replacement_quality, replace_in_call_usage, fixup_match_1,
25437         stable_and_no_regs_but_for_p): Remove.
25438         (reg_set_in_bb): Make it static.
25439         (regmove_optimize): Remove flag_ira and code which worked for
25440         !flag_ira.
25441
25442         * local-alloc.c: Remove the file.
25443
25444         * common.opt (fira): Remove.
25445
25446         * ira.c: Include except.h.
25447         (eliminable_regset): Move from global.c.
25448         (mark_elimination): Ditto.  Remove flag_ira.
25449         (reg_renumber, struct equivalence, reg_equiv, equiv_mem,
25450         equiv_mem_modified, validate_equiv_mem_from_store,
25451         validate_equiv_mem, equiv_init_varies_p, equiv_init_movable_p,
25452         contains_replace_regs, memref_referenced_p, memref_used_between_p,
25453         no_equiv, recorded_label_ref): Move from local-alloc.c.
25454         (update_equiv_regs): Ditto.  Make it static.
25455         (print_insn_chain, print_insn_chains): Move it from global.c.
25456         (pseudo_for_reload_consideration_p): Ditto.  Remove flag_ira.
25457         (build_insn_chain): Ditto.  Make it static.
25458         (ra_init_live_subregs): Move from ra-conflict.c.  Make it static.
25459         Rename to init_live_subregs.
25460         (gate_ira): Remove flag_ira.
25461
25462         * regclass.c: Rename reginfo.c.  Change file description.
25463         (FORBIDDEN_INC_DEC_CLASSES): Remove.
25464         (reg_class_superclasses, forbidden_inc_dec_class, in_inc_dec): Remove.
25465         (init_reg_sets_1): Remove code for evaluation of
25466         reg_class_superclasses and losing_caller_save_reg_set.
25467         (init_regs): Remove init_reg_autoinc.
25468         (struct costs, costs, init_cost, ok_for_index_p_nonstrict,
25469         ok_for_base_p_nonstrict): Remove.
25470         (regclass_init): Rename to reginfo_init.  Don't initialize init_cost.
25471         (pass_regclass_init): Rename to pass_reginfo_init.  Modify
25472         corresponding entries.
25473         (dump_regclass, record_operand_costs, scan_one_insn,
25474         init_reg_autoinc, regclass, record_reg_classes, copy_cost,
25475         record_address_regs, auto_inc_dec_reg_p): Remove.
25476         (gt-regclass.h): Rename to gt-reginfo.h.
25477
25478         * rtl.h (dump_global_regs, retry_global_alloc,
25479         build_insn_chain, dump_local_alloc, update_equiv_regs): Remove.
25480
25481         * Makefile.in (RA_H): Remove.
25482         (OBJS-common): Remove global.o, local-alloc.o, and ra-conflict.o.
25483         Rename regclass.o to reginfo.o.
25484         (regclass.o): Rename to reginfo.o.  Rename gt-regclass.h to
25485         gt-reginfo.h.
25486         (global.o, local-alloc.o, ra-conflict.o): Remove entries.
25487         (GTFILES): Rename regclass.c to reginfo.c.
25488
25489         * passes.c (init_optimization_passes): Remove pass_local_alloc and
25490         pass_global_alloc.  Rename pass_regclass_init to pass_reginfo_init.
25491
25492         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
25493         count_spilled_pseudo, find_reg, alter_reg, delete_output_reload):
25494         Remove flag_ira.
25495         (finish_spills): Ditto.  Remove code for !flag_ira.
25496
25497 2009-01-29  Kenneth Zadeck  <zadeck@naturalbridge.com>
25498
25499         PR middle-end/35854
25500         * doc/invoke.texi (rtl debug options): Complete rewrite.
25501         * auto-inc-dec.c (pass_inc_dec): Rename pass from "auto-inc-dec"
25502         to auto_inc_dec".
25503         * mode-switching.c (pass_mode_switching): Rename pass from
25504         "mode-sw" to "mode_sw".
25505         * except.c (pass_convert_to_eh_ranges): Rename pass from
25506         "eh-ranges" to "eh_ranges".
25507         * lower-subreg.c (pass_lower_subreg): Renamed pass from "subreg"
25508         to "subreg1".
25509
25510
25511 2009-01-29  Andrey Belevantsev  <abel@ispras.ru>
25512             Alexander Monakov  <amonakov@ispras.ru>
25513
25514         PR middle-end/38857
25515         * sel-sched.c (count_occurrences_1): Check that *cur_rtx is a hard
25516         register.
25517         (move_exprs_to_boundary): Change return type and pass through
25518         should_move from move_op.  Relax assert.  Update usage ...
25519         (schedule_expr_on_boundary): ... here.  Use should_move instead of
25520         cant_move.
25521         (move_op_orig_expr_found): Indicate that insn was disconnected from
25522         stream.
25523         (code_motion_process_successors): Do not call after_merge_succs
25524         callback if original expression was not found when traversing any of
25525         the branches.
25526         (code_motion_path_driver): Change return type.  Update prototype.
25527         (move_op): Update comment.  Add a new parameter (should_move).  Update
25528         prototype.  Set *should_move based on indication provided by
25529         move_op_orig_expr_found.
25530
25531 2009-01-28  Pat Haugen  <pthaugen@us.ibm.com>
25532
25533         * doc/invoke.texi (avoid-indexed-addresses): Document new option.
25534         * config/rs6000/rs6000-protos.h (avoiding_indexed_address_p): Declare.
25535         * config/rs6000/rs6000.opt (avoid-indexed-addresses): New option.
25536         * config/rs6000/rs6000.c (rs6000_override_options): Default
25537         avoid-indexed-addresses on for Power6, off for everything else.
25538         (avoiding_indexed_address_p): New function.
25539         (rs6000_legitimize_address): Use it.
25540         (rs6000_legitimate_address): Likewise.
25541         * config/rs6000/rs6000.md (movXX_updateX): Likewise
25542
25543 2009-01-28  Kazu Hirata  <kazu@codesourcery.com>
25544
25545         PR tree-optimization/38997
25546         * tree-loop-distribution.c (generate_memset_zero): Use
25547         POINTER_PLUS_EXPR for a pointer addition.
25548
25549 2009-01-28  Andreas Krebbel  <krebbel1@de.ibm.com>
25550
25551         * config/s390/s390.md (bswap<mode>2): New pattern added.
25552
25553 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
25554
25555         * config/s390/s390.md (*tls_load_31): Added type attribute.
25556
25557 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
25558
25559         * config/s390/s390.md: Fix a few comments.
25560
25561 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
25562
25563         * config/s390/s390.md (*tmsi_reg): Fixed z10prop attribute.
25564         (*tm<mode>_full): Fixed z10prop attribute.
25565         (*tst<mode>_extimm): Fixed z10prop attribute.
25566         (*tst<mode>_cconly_extimm): Fixed z10prop attribute.
25567         (*tstqiCCT_cconly): Fixed z10prop attribute.
25568         (*cmpsi_ccu_zerohi_rlsi): Fixed z10prop attribute.
25569         (*movsi_larl): Fixed z10prop attribute.
25570         (*movsi_zarch): Fixed z10prop attribute.
25571         (*movsi_eas): Fixed z10prop attribute.
25572         (*movhi): Fixed z10prop attribute.
25573         (*movqi): Fixed z10prop attribute.
25574         (*movstrictqi): Fixed z10prop attribute.
25575         (*mov<mode>): Fixed z10prop attribute.
25576         (*movcc): Fixed z10prop attribute.
25577         (*sethighpartdi_64): Fixed z10prop attribute.
25578         (*zero_extendhi<mode>2_z10): Fixed z10prop attribute.
25579         (*negdi2_sign_cc): Fixed z10prop attribute.
25580         (*negdi2_sign): Fixed z10prop attribute.
25581         (*absdi2_sign_cc): Fixed z10prop attribute.
25582         (*absdi2_sign): Fixed z10prop attribute.
25583         (*negabsdi2_sign_cc): Fixed z10prop attribute.
25584         (*negabsdi2_sign): Fixed z10prop attribute.
25585         (*cmp_and_trap_signed_int<mode>): Fixed z10prop attribute.
25586         (*cmp_and_trap_unsigned_int<mode>): Fixed z10prop attribute.
25587         (doloop_si64): Fixed z10prop attribute.
25588         (doloop_si31): Fixed z10prop attribute.
25589         (doloop_long): Fixed z10prop attribute.
25590         (indirect_jump): Fixed z10prop attribute.
25591         (nop): Fixed z10prop attribute.
25592         (main_base_64): Fixed z10prop attribute.
25593         (reload_base_64): Fixed z10prop attribute.
25594
25595 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
25596
25597         PR rtl-optimization/38740
25598         * reorg.c (gate_handle_delay_slots): Avoid dbr scheduling
25599         if !optimize.
25600         * config/mips/mips.c (mips_reorg): Likewise.
25601
25602 2009-01-28  Richard Guenther  <rguenther@suse.de>
25603
25604         PR tree-optimization/38926
25605         * tree-ssa-pre.c (add_to_value): Assert we add only expressions
25606         with the correct value id to a value.
25607         (do_regular_insertion): Use the value number of edoubleprime
25608         for the value number of the expr.
25609
25610         Revert
25611         2008-08-21  Richard Guenther  <rguenther@suse.de>
25612
25613         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
25614         a PHI ask VN if it is already available.
25615         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
25616         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
25617
25618 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
25619
25620         PR middle-end/38934
25621         * tree-vrp.c (extract_range_from_assert): For LE_EXPR and LT_EXPR
25622         set to varying whenever max has TREE_OVERFLOW set, similarly
25623         for GE_EXPR and GT_EXPR and TREE_OVERFLOW min.
25624
25625 2009-01-28  Richard Guenther  <rguenther@suse.de>
25626
25627         PR middle-end/38908
25628         * tree-ssa.c (warn_uninitialized_var): Do not warn for seemingly
25629         uninitialized aggregate uses in call arguments.
25630
25631 2009-01-28  Paolo Bonzini  <bonzini@gnu.org>
25632
25633         PR tree-optimization/38984
25634         * tree-ssa-structalias.c (get_constraints_for_1): Do not use
25635         the nothing_id variable if -fno-delete-null-pointer-checks.
25636
25637 2009-01-28  Uros Bizjak  <ubizjak@gmail.com>
25638
25639         PR target/38988
25640         * config/i386/i386.md (set_rip_rex64): Wrap operand 1 in label_ref.
25641         (set_got_offset_rex64): Ditto.
25642
25643 2009-01-27  H.J. Lu  <hongjiu.lu@intel.com>
25644
25645         PR target/38941
25646         * doc/extend.texi: Improve local variable with asm reg.
25647
25648 2009-01-27  Adam Nemet  <anemet@caviumnetworks.com>
25649
25650         * c.opt (Wpacked-bitfield-compat): Change init value to -1.
25651         * c-opts.c (c_common_post_options): If -W*packed-bitfield-compat
25652         was not supplied then set warn_packed_bitfield_compat to the
25653         default value of 1.
25654         * stor-layout.c (place_field): Check warn_packed_bitfield_compat
25655         against 1.
25656
25657 2009-01-27  Richard Guenther  <rguenther@suse.de>
25658
25659         PR tree-optimization/38503
25660         * cfgexpand.c (expand_gimple_basic_block): Ignore
25661         GIMPLE_CHANGE_DYNAMIC_TYPE during expansion.
25662         * tree-ssa-structalias.c (set_uids_in_ptset): Do not prune
25663         variables that cannot have TBAA applied.
25664         (compute_points_to_sets): Do not remove GIMPLE_CHANGE_DYNAMIC_TYPE
25665         statements.
25666
25667 2009-01-27  Uros Bizjak  <ubizjak@gmail.com>
25668
25669         PR middle-end/38969
25670         * calls.c (initialize_argument_information): Do not wrap complex
25671         arguments in SAVE_EXPR.
25672
25673 2009-01-26  Andreas Tobler  <a.tobler@schweiz.org>
25674
25675         * config/t-vxworks (LIBGCC2_INCLUDES): Fix typo.
25676         (INSTALL_LIBGCC): Revert typo commit.
25677
25678 2009-01-26  Richard Guenther  <rguenther@suse.de>
25679
25680         PR tree-optimization/38745
25681         * tree-ssa-alias.c (update_alias_info_1): Exclude RESULT_DECL
25682         from special handling.
25683
25684 2009-01-26  Richard Guenther  <rguenther@suse.de>
25685
25686         PR tree-optimization/38745
25687         * tree-ssa.c (execute_update_addresses_taken): Do not include
25688         variables that cannot possibly be a register in not_reg_needs.
25689         Do not clear TREE_ADDRESSABLE on vars that may not become
25690         registers.
25691         * tree-ssa.c (update_alias_info_1): Include those in the set
25692         of addressable vars.
25693
25694 2009-01-26  Richard Guenther  <rguenther@suse.de>
25695
25696         PR middle-end/38851
25697         * Makefile.in (tree-ssa-dse.o): Add langhooks.h.
25698         * tree-ssa-dse.c: Include langhooks.h
25699         (execute_simple_dse): Remove stores with zero size.
25700
25701 2009-01-24  Jakub Jelinek  <jakub@redhat.com>
25702
25703         PR c/38957
25704         * c-typeck.c (c_finish_return): Handle POINTER_PLUS_EXPR the same way
25705         as PLUS_EXPR.
25706
25707 2009-01-24  Julian Brown  <julian@codesourcery.com>
25708
25709         * config/arm/t-linux-eabi (LIB2FUNCS_STATIC_EXTRA): Add
25710         config/arm/linux-atomic.c.
25711         * config/arm/linux-atomic.c: New.
25712
25713 2009-01-24  Eric Botcazou  <ebotcazou@adacore.com>
25714
25715         * config/sparc/linux.h (DBX_REGISTER_NUMBER): Delete.
25716         * config/sparc/linux64.h (DBX_REGISTER_NUMBER): Likewise.
25717         * config/sparc/sysv4.h (DBX_REGISTER_NUMBER): Likewise.
25718
25719 2009-01-24  H.J. Lu  <hongjiu.lu@intel.com>
25720
25721         PR c/38938
25722         * c-opts.c (c_common_handle_option): Update warn_pointer_sign
25723         properly.
25724
25725 2009-01-24  Sebastian Pop  <sebastian.pop@amd.com>
25726
25727         PR tree-optimization/38953
25728         * graphite.c (graphite_verify): Add a call to verify_loop_closed_ssa.
25729         (scop_adjust_phis_for_liveouts): Initialize false_i to zero.
25730         (gloog): Split the exit of the scop when the scop exit is a loop exit.
25731         (graphite_transform_loops): Only call cleanup_tree_cfg if gloog
25732         changed the CFG.
25733
25734 2009-01-24  Paul Brook  <paul@codesourcery.com>
25735
25736         * config/arm/neon.md (neon_type): Move to arm.md.
25737         (neon_mov<VSTRUCT>): Add neon_type attribute.
25738         * config/arm/arm.md (neon_type): Move to here.
25739         (conds): Add "unconditioal" and use as default for NEON insns.
25740
25741 2009-01-24  Ben Elliston  <bje@au.ibm.com>
25742
25743         * bitmap.h (BITMAP_FREE): Eliminate `implicit conversion from
25744         void *' warning from -Wc++-compat.
25745         * Makefile.in (dominance.o-warn): Remove.
25746
25747 2009-01-23  Paolo Bonzini  <bonzini@gnu.org>
25748
25749         PR tree-optimization/38932
25750         * fold-const.c (fold_unary_ignore_overflow): New.
25751         * tree.h (fold_unary_ignore_overflow): Declare.
25752         * tree-ssa-ccp.c (ccp_fold): Use fold_unary_ignore_overflow.
25753         * tree-ssa-sccvn.c (visit_reference_op_load,
25754         simplify_unary_expression): Likewise.
25755
25756 2009-01-22  Adam Nemet  <anemet@caviumnetworks.com>
25757
25758         * c-decl.c (finish_struct): Move code to set DECL_PACKED after
25759         DECL_BIT_FIELD is alreay known.  Also inherit packed for bitfields
25760         regardless of their type.
25761         * c-common.c (handle_packed_attribute): Don't ignore packed on
25762         bitfields.
25763         * c.opt (Wpacked-bitfield-compat): New warning option.
25764         * stor-layout.c (place_field): Warn if offset of a field changed.
25765         * doc/extend.texi (packed): Mention the ABI change.
25766         * doc/invoke.texi (-Wpacked-bitfield-compat): Document.
25767         (Warning Options): Add it to the list.
25768
25769 2009-01-22  H.J. Lu  <hongjiu.lu@intel.com>
25770
25771         * c-opts.c (c_common_post_options): Fix a typo in comments.
25772
25773 2009-01-22  Steve Ellcey  <sje@cup.hp.com>
25774
25775         PR middle-end/38615
25776         * gimplify.c (gimplify_init_constructor): Fix promotion of const
25777         variables to static.
25778         * doc/invoke.texi (-fmerge-all-constants): Update description.
25779
25780 2009-01-22  Uros Bizjak  <ubizjak@gmail.com>
25781
25782         PR target/38931
25783         * config/i386/i386.md (*movsi_1): Use type "mmx" for alternative 2.
25784         (*movdi_1_rex64): Use type "mmx" for alternative 5.
25785
25786 2009-01-22  Richard Earnshaw  <rearnsha@arm.com>
25787
25788         * arm.h (DATA_ALIGNMENT): Align structures, unions and arrays to
25789         a word boundary.
25790         (LOCAL_ALIGNMENT): Similarly.
25791
25792 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
25793             Joseph Myers  <joseph@codesourcery.com>
25794
25795         * config/arm/arm.c (all_architectures): Add iWMMXt2 entry.
25796         * config/arm/arm-cores.def: New ARM_CORE entry for iWMMXt2.
25797         * config/arm/arm-tune.md: Regenerate.
25798         * doc/invoke.texi (ARM Options): Document -mcpu=iwmmxt2 and
25799         -march=iwmmxt2.
25800
25801 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
25802
25803         * config/arm/bpabi.h (SUBTARGET_EXTRA_ASM_SPEC): Bump EABI
25804         version number to five.
25805
25806 2009-01-22  Dodji Seketeli  <dodji@redhat.com>
25807
25808         PR c++/38930
25809         * c-decl.c (clone_underlying_type): Revert PR c++/26693 changes.
25810         * c-common.c (set_underlying_type): Likewise.
25811         (is_typedef_decl ): Likewise
25812         * tree.h: Likewise
25813         (set_underlying_type): Likewise.
25814         (is_typedef_type): Likewise.
25815
25816 2009-01-21  Vladimir Makarov  <vmakarov@redhat.com>
25817
25818         PR middle-end/38587
25819         * ira-color.c (coalesce_spill_slots): Don't coalesce allocnos
25820         crossing setjmps.
25821
25822 2009-01-21  Dave Korn  <dave.korn.cygwin@gmail.com>
25823
25824         PR bootstrap/37660
25825         * config/i386/cygwin.h (SHARED_LIBGCC_SPEC):  New helper macro.
25826         (LIBGCC_SPEC):  Don't define.
25827         (REAL_LIBGCC_SPEC):  Define instead, using SHARED_LIBGCC_SPEC.
25828
25829 2009-01-21  Uros Bizjak  <ubizjak@gmail.com>
25830
25831         PR rtl-optimization/38879
25832         * alias.c (base_alias_check): Unaligned access via AND address can
25833         alias all surrounding object types except those with sizes equal
25834         or wider than the size of unaligned access.
25835
25836 2009-01-21  Dodji Seketeli  <dodji@redhat.com>
25837
25838         PR c++/26693
25839         * c-decl.c (clone_underlying_type): Move this ...
25840         * c-common.c (set_underlying_type): ... here.
25841         Also, make sure the function properly sets TYPE_STUB_DECL() on
25842         the newly created typedef variant type.
25843         (is_typedef_decl ): New entry point.
25844         * tree.h: Added a new member member_types_needing_access_check to
25845         struct tree_decl_non_common.
25846         (set_underlying_type): New entry point.
25847         (is_typedef_type): Likewise.
25848
25849 2009-01-21  Bingfeng Mei  <bmei@broadcom.com>
25850
25851         * alias.c (walk_mems_1, walk_mems_2, insn_alias_sets_conflict_p):
25852         Check whether two instructions have memory references that
25853         belong to conflicting alias sets.  walk_mems_1 and walk_mems_2
25854         are helper functions for traversing.
25855         * alias.h (insn_alias_sets_confilict_p): New prototypes.
25856         * ddg.c (add_inter_loop_mem_dep): Call insn_alias_sets_conflict_p
25857         not to draw dependency edge for instructions with non-conflicting
25858         alias sets.
25859
25860 2009-01-20  Joseph Myers  <joseph@codesourcery.com>
25861
25862         PR other/38758
25863         * longlong.h: Update copyright years.  Use soft-fp license notice.
25864         Sync __clz_tab declaration with glibc.
25865
25866 2009-01-20  Steve Ellcey  <sje@cup.hp.com>
25867
25868         PR target/30687
25869         * doc/extend.texi (syscall_linkage): New.
25870         (version_id): Modify.
25871
25872 2009-01-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
25873             Richard Guenther  <rguenther@suse.de>
25874
25875         PR tree-optimization/38747
25876         PR tree-optimization/38748
25877         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Disable the VCE
25878         conversion if the base address is an indirect reference and the
25879         aliasing sets could cause issues.
25880
25881 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
25882
25883         * common.opt (fgraphite, fgraphite-identity): Add comment for
25884         explaining why these options are not documented.
25885
25886 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
25887
25888         * graphite.c (stmt_simple_for_scop_p): Also handle cases when
25889         gimple_call_lhs is NULL.
25890
25891 2009-01-20  Paolo Bonzini  <bonzini@gnu.org>
25892
25893         PR target/38868
25894         * emit-rtl.c (adjust_address_1): Make sure memref is never
25895         overwritten.
25896
25897 2009-01-20  Ben Elliston  <bje@au.ibm.com>
25898
25899         * libgcov.c (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
25900         const qualifier from arg parameter. Remove unnecessary cast to char *.
25901         * gcov-io.h (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
25902         const qualifier from arg 2.
25903
25904 2009-01-19  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
25905
25906         * config/darwin.h: Add static-libgfortran to LINK_SPEC.
25907
25908 2009-01-19  Vladimir Makarov  <vmakarov@redhat.com>
25909
25910         PR c/38869
25911         * rtl.h (reinit_regs): New prototype.
25912         * regclass.c: Include ira.h.
25913         (reinit_regs): New.
25914         * Makefile.in (regclass.o): Add ira.h.
25915         * config/i386/i386.c (ix86_maybe_switch_abi): Use reinit_regs.
25916
25917 2009-01-18  H.J. Lu  <hongjiu.lu@intel.com>
25918
25919         PR target/38736
25920         * c-common.c (handle_aligned_attribute): Use
25921         ATTRIBUTE_ALIGNED_VALUE instead of BIGGEST_ALIGNMENT for
25922         default alignment value.
25923
25924         * c-cppbuiltin.c (c_cpp_builtins): Define __BIGGEST_ALIGNMENT__.
25925
25926         * defaults.h (ATTRIBUTE_ALIGNED_VALUE): New.
25927         * config/i386/i386.h (ATTRIBUTE_ALIGNED_VALUE): Likewise.
25928
25929         * doc/extend.texi: Update __attribute__ ((aligned)).  Document
25930         __BIGGEST_ALIGNMENT__.
25931
25932         * doc/tm.texi: Document ATTRIBUTE_ALIGNED_VALUE.
25933
25934 2009-01-18  Richard Guenther  <rguenther@suse.de>
25935
25936         PR tree-optimization/38819
25937         * tree-flow.h (operation_could_trap_helper_p): Declare.
25938         * tree-eh.c (operation_could_trap_helper_p): Export.
25939         * tree-ssa-sccvn.h (vn_nary_may_trap): Declare.
25940         * tree-ssa-sccvn.c (vn_nary_may_trap): New function.
25941         * tree-ssa-pre.c (insert_into_preds_of_block): Check if we
25942         are about to insert a possibly trapping instruction and fail
25943         in this case.
25944
25945 2009-01-18  Andreas Schwab  <schwab@suse.de>
25946
25947         * doc/install.texi (Configuration): Remove obsolete paragraph
25948         about use of --with-gnu-ld with --with-gnu-as.
25949
25950 2009-01-18  Kazu Hirata  <kazu@codesourcery.com>
25951
25952         * doc/extend.texi, doc/gimple.texi, doc/invoke.texi,
25953         doc/md.texi, doc/sourcebuild.texi, doc/tm.texi: Fix typos.
25954         Follow spelling conventions.
25955
25956 2009-01-18  Ben Elliston  <bje@au.ibm.com>
25957
25958         * bitmap.c (bitmap_obstack_alloc_stat): Adjust cast to eliminate
25959         C++ warning about implicit conversion from void * to struct
25960         bitmap_head_def *.
25961         (bitmap_obstack_free): Likewise for bitmap_element *.
25962         * Makefile.in (bitmap.o-warn): Remove.
25963
25964 2009-01-17  Dave Korn  <dave.korn.cygwin@gmail.com>
25965
25966         * Makefile.in (BACKENDLIBS):  Reorder to match dependencies.
25967
25968 2009-01-17  Sebastian Pop  <sebastian.pop@amd.com>
25969             Tobias Grosser  <tobi.grosser@amd.com>
25970
25971         * graphite.c (graphite_trans_scop_block): Do not block single
25972         nested loops.
25973
25974 2009-01-16  Alexandre Oliva  <aoliva@redhat.com>
25975
25976         * ebitmap.h (ebitmap_iter_init): Initialize all fields.
25977         * ipa-struct-reorg.c (gen_struct_type): Replace known-true
25978         test with assertion.
25979
25980 2009-01-16  Richard Guenther  <rguenther@suse.de>
25981
25982         PR tree-optimization/38835
25983         PR middle-end/36227
25984         * fold-const.c (fold_binary): Remove PTR + INT -> (INT)(PTR p+ INT)
25985         and INT + PTR -> (INT)(PTR p+ INT) folding.
25986         * tree-ssa-address.c (create_mem_ref): Properly use POINTER_PLUS_EXPR.
25987
25988 2009-01-16  Adam Nemet  <anemet@caviumnetworks.com>
25989
25990         PR target/38554
25991         * expmed.c (expand_shift): With SHIFT_COUNT_TRUNCATED, don't lift
25992         the subreg from a lowpart subreg if it is also casting the value.
25993
25994 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
25995             Tobias Grosser  <tobi.grosser@amd.com>
25996
25997         * graphite.c (compare_prefix_loops): New.
25998         (build_scop_canonical_schedules): Rewritten.
25999         (graphite_transform_loops): Move build_scop_canonical_schedules
26000         after build_scop_iteration_domain.
26001
26002 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
26003             Tobias Grosser  <tobi.grosser@amd.com>
26004
26005         * graphite.c (add_conditions_to_domain): Add the loops to
26006         the dimension of the iteration domain.  Do copy the domain
26007         only when it exists.
26008         (build_scop_conditions_1): Do not call add_conditions_to_domain.
26009         (add_conditions_to_constraints): New.
26010         (can_generate_code_stmt, can_generate_code): Removed.
26011         (gloog): Do not call can_generate_code.
26012         (graphite_transform_loops): Call add_conditions_to_constraints
26013         after building the iteration domain.
26014
26015 2009-01-16  Jakub Jelinek  <jakub@redhat.com>
26016
26017         PR tree-optimization/38789
26018         * tree-ssa-threadedge.c
26019         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
26020         __builtin_constant_p.
26021
26022 2009-01-16  Kenneth Zadeck  <zadeck@naturalbridge.com>
26023
26024         * dce.c (delete_unmarked_insns): Reversed the order that insns are
26025         examined before deleting them.
26026
26027 2009-01-16  Richard Earnshaw  <rearnsha@arm.com>
26028
26029         * function.c (aggregate_value_p): Correctly extract the function
26030         type from CALL_EXPR_FN lookup.
26031
26032 2009-01-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
26033
26034         * config/picochip/picochip.c (picochip_override_options): Revert
26035         CFI asm flag disable commited previously.
26036
26037 2009-01-15  Sebastian Pop  <sebastian.pop@amd.com>
26038             Tobias Grosser  <tobi.grosser@amd.com>
26039             Jan Sjodin  <jan.sjodin@amd.com>
26040
26041         * graphite.c (scan_tree_for_params): On substractions negate
26042         all the coefficients of the term.
26043         (clast_to_gcc_expression_red): New.  Handle reduction expressions
26044         of more than two operands.
26045         (clast_to_gcc_expression): Call clast_to_gcc_expression_red.
26046         (get_vdef_before_scop): Handle also the case of default definitions.
26047
26048 2009-01-15  Richard Sandiford  <rdsandiford@googlemail.com>
26049
26050         * caller-save.c (add_used_regs_1, add_used_regs): New functions.
26051         (insert_one_insn): Use them instead of REG_DEAD and REG_INC notes.
26052         Also use them when walking CALL_INSN_FUNCTION_USAGE.
26053
26054 2009-01-15  H.J. Lu  <hongjiu.lu@intel.com>
26055             Joey Ye  <joey.ye@intel.com>
26056
26057         PR middle-end/37843
26058         * cfgexpand.c (expand_stack_alignment): Don't update stack
26059         boundary nor check incoming stack boundary here.
26060         (gimple_expand_cfg): Update stack boundary and check incoming
26061         stack boundary here.
26062
26063 2009-01-15  Kenneth Zadeck  <zadeck@naturalbridge.com>
26064
26065         * dce.c (find_call_stack_args, delete_unmarked_insns): Fixed comments.
26066
26067 2009-01-14  Jakub Jelinek  <jakub@redhat.com>
26068
26069         PR rtl-optimization/38245
26070         * calls.c (expand_call): Add stack arguments to
26071         CALL_INSN_FUNCTION_USAGE even for pure calls (when
26072         ACCUMULATE_OUTGOING_ARGS) and even for args partially passed
26073         in regs and partially in memory or BLKmode arguments.
26074         (emit_library_call_value_1): Add stack arguments to
26075         CALL_INSN_FUNCTION_USAGE even for pure calls (when
26076         ACCUMULATE_OUTGOING_ARGS).
26077         * dce.c: Include tm_p.h.
26078         (find_call_stack_args): New function.
26079         (deletable_insn_p): Call it for CALL_P insns.  Add ARG_STORES
26080         argument.
26081         (mark_insn): Call find_call_stack_args for CALL_Ps.
26082         (prescan_insns_for_dce): Walk insns backwards in bb rather than
26083         forwards.  Allocate and free arg_stores bitmap if needed, pass it
26084         down to deletable_insn_p, don't mark stores set in arg_stores
26085         bitmap, clear the bitmap at the beginning of each bb.
26086         * Makefile.in (dce.o): Depend on $(TM_P_H).
26087
26088 2009-01-14  Michael Meissner  <gnu@the-meissners.org>
26089
26090         PR target/22599
26091         * config/i386/i386.c (print_operand): Add tests for 'D', 'C', 'F', 'f'
26092         to make sure the insn is a conditional test (bug 22599).  Reformat a
26093         few long lines.
26094
26095 2009-01-14  Sebastian Pop  <sebastian.pop@amd.com>
26096
26097         PR middle-end/38431
26098         * graphite.c (get_vdef_before_scop, scop_adjust_vphi): New.
26099         (scop_adjust_phis_for_liveouts): Call scop_adjust_vphi.
26100         (gloog): Do not call cleanup_tree_cfg.
26101         (graphite_transform_loops): Call cleanup_tree_cfg after all
26102         scops have been code generated.
26103
26104 2009-01-14  Basile Starynkevitch  <basile@starynkevitch.net>
26105         * doc/gty.texi (Invoking the garbage collector): Added new node
26106         and section documenting ggc_collect.
26107
26108 2009-01-14  Richard Guenther  <rguenther@suse.de>
26109
26110         PR tree-optimization/38826
26111         PR middle-end/38477
26112         * tree-ssa-structalias.c (emit_alias_warning): Emit the pointer
26113         initialization notes only if we actually emitted a warning.
26114         (intra_create_variable_infos): Add constraints for a result decl
26115         that is passed by hidden reference.
26116         (build_pred_graph): Mark all related variables non-direct on
26117         address-taking.
26118
26119 2009-01-14  Nick Clifton  <nickc@redhat.com>
26120
26121         * ira-conflicts.c: Include addresses.h for the definition of
26122         base_reg_class.
26123         (ira_build_conflicts): Use base_reg_class instead of BASE_REG_CLASS.
26124         * Makefile.in: Add a dependency of ira-conflicts.o on addresses.h.
26125
26126 2009-01-13  Vladimir Makarov  <vmakarov@redhat.com>
26127
26128         PR target/38811
26129         * Makefile.in (ira-lives.o): Add except.h.
26130
26131         * ira-lives.c: Include except.h.
26132         (process_bb_node_lives): Process can_throw_internal.
26133
26134 2009-01-13  Jakub Jelinek  <jakub@redhat.com>
26135
26136         PR rtl-optimization/38774
26137         * combine.c (simplify_set): When undoing cc_use change, don't do
26138         PUT_CODE on the newly created comparison, but instead put back the
26139         old comparison.
26140
26141 2009-01-13  Joseph Myers  <joseph@codesourcery.com>
26142
26143         * doc/invoke.texi (ARM Options): Update lists of -mcpu and -march
26144         values.  Remove duplicate arm8 entry.
26145
26146 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
26147
26148         PR tree-optimization/38786
26149         * graphite.c (expand_scalar_variables_ssa_name): New, outlined from
26150         the SSA_NAME case of expand_scalar_variables_expr.
26151         Set the type of an expression to the type of its assign statement.
26152         (expand_scalar_variables_expr): Also gather the scalar computation
26153         used to index the memory access.  Do not pass loop_p.
26154         Fix comment.  Stop recursion on tcc_constant or tcc_declaration.
26155         (expand_scalar_variables_stmt): Pass to expand_scalar_variables_expr
26156         the gimple_stmt_iterator where it inserts new code.
26157         Do not pass loop_p.
26158         (copy_bb_and_scalar_dependences): Do not pass loop_p.
26159         (translate_clast): Update call to copy_bb_and_scalar_dependences.
26160
26161 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
26162
26163         * graphite.h (debug_value): Removed.
26164         * graphite.c (debug_value): Removed.
26165
26166 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
26167
26168         * config/arm/arm.c (output_move_double): Don't synthesize thumb-2
26169         ldrd/strd with two 32-bit instructions.
26170
26171 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
26172
26173         * config/arm/arm.c (struct processors): Pass for speed down into
26174         cost helper functions.
26175         (const_ok_for_op): Handle COMPARE and inequality nodes.
26176         (arm_rtx_costs_1): Rewrite.
26177         (arm_size_rtx_costs): Update prototype.
26178         (arm_rtx_costs): Pass speed down to helper functions.
26179         (arm_slowmul_rtx_costs): Rework cost calculations.
26180         (arm_fastmul_rtx_costs, arm_xscale_rtx_costs): Likewise.
26181         (arm_9e_rtx_costs): Likewise.
26182
26183 2009-01-13  Uros Bizjak  <ubizjak@gmail.com>
26184
26185         * config/alpha/alpha.c (alpha_legitimate_address_p): Explicit
26186         relocations of local symbols wider than UNITS_PER_WORD are not valid.
26187         (alpha_legitimize_address): Do not split local symbols wider than
26188         UNITS_PER_WORD into HIGH/LO_SUM parts.
26189
26190 2009-01-13  Danny Smith  <dannysmith@users.sourceforge.net>
26191
26192         PR bootstrap/38580
26193         * gcc.c (process_command): Replace call to execvp with calls
26194         to pex_one and exit.
26195
26196 2009-01-03  Anatoly Sokolov  <aesok@post.ru>
26197
26198         PR target/29141
26199         * config/avr/t-avr (LIB1ASMFUNCS): Add _tablejump_elpm.
26200         * config/avr/libgcc.S (__do_global_ctors, __do_global_dtors): Add
26201         variant for devices with 3-byte PC.
26202         (__tablejump_elpm__): New.
26203
26204 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
26205
26206         PR c/32041
26207         * c-parser.c (c_parser_postfix_expression): Allow `->' in
26208         offsetof member-designator, handle it as `[0].'.
26209
26210 2009-01-12  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
26211
26212         * pa.c (pa_asm_output_mi_thunk): Use pc-relative branch to thunk
26213         function when not using named sections on targets with named sections
26214         if branch distance is less than 262132.
26215
26216 2009-01-12  Richard Earnshaw  <rearnsha@arm.com>
26217
26218         * combine.c (combine_instructions):  Recompute
26219         optimize_this_for_speed_p  for each BB in the main combine loop.
26220
26221 2009-01-12  Tomas Bily  <tbily@suse.cz>
26222
26223         PR middlend/38385
26224         * tree-loop-distribution.c (prop_phis): New function.
26225         (generate_builtin): Call prop_phis.
26226
26227 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
26228
26229         PR tree-optimization/38807
26230         * tree-ssa-reassoc.c (remove_visited_stmt_chain): Don't look at
26231         gimple_visited_p unless stmt is GIMPLE_ASSIGN.
26232
26233 2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
26234
26235         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
26236         subreg of op0 to the original op0.
26237
26238 2009-01-11  Laurent GUERBY  <laurent@guerby.net>
26239
26240         * doc/sourcebuild.texi (Source Tree): Move up intl and fixinc.
26241
26242 2009-01-11  Markus Schoepflin  <markus.schoepflin@comsoft.de>
26243
26244         PR debug/7055
26245         * mips-tfile.c (parse_def): Fix parsing of def strings
26246         starting with digits.
26247
26248 2009-01-10  Jakub Jelinek  <jakub@redhat.com>
26249
26250         PR target/38695
26251         * config/arm/arm.c (arm_is_long_call_p): Don't call
26252         arm_function_in_section_p if decl isn't a FUNCTION_DECL.
26253
26254 2009-01-09  Steven Bosscher  <steven@gcc.gnu.org>
26255
26256         * regrename.c (regrename_optimize): Fix dumping.
26257         (find_oldest_value_reg): Preserve REG_POINTER.
26258         (copy_hardreg_forward_1): Likewise.
26259
26260 2009-01-09  Diego Novillo  <dnovillo@google.com>
26261
26262         * gimple.h (struct gimple_statement_base) <uid>: Document
26263         the restrictions on its use.
26264         (gimple_uid): Tidy.
26265         (gimple_set_uid): Tidy.
26266
26267 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
26268
26269         * config/i386/i386.c (ix86_expand_movmem, ix86_expand_setmem): Add
26270         zero guard even if align_bytes != 0 and count is smaller than
26271         size_needed.
26272
26273 2009-01-09  Vladimir Makarov  <vmakarov@redhat.com>
26274
26275         PR rtl-optimization/38495
26276         * ira-emit.c (print_move_list, ira_debug_move_list): New functions.
26277         (add_range_and_copies_from_move_list): Print all added ranges.
26278         Add ranges to memory optimized destination.
26279
26280 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
26281
26282         PR target/38686
26283         PR target/38708
26284         * config/i386/i386.c (override_options): Reject
26285         -mstringop-strategy=rep_8byte with -m32.
26286         (ix86_expand_movmem): For size_needed == 1 set epilogue_size_needed
26287         to 1.  Do count comparison against epilogue_size_needed at compile
26288         time even when count_exp was constant forced into register.  For
26289         size_needed don't jump to epilogue, instead just avoid aligning
26290         and invoke the body algorithm.  If need_zero_guard, add zero guard
26291         even if count is non-zero, but smaller than size_needed + number of
26292         bytes that could be stored for alignment.
26293         (ix86_expand_setmem): For size_needed == 1 set epilogue_size_needed
26294         to 1.  If need_zero_guard, add zero guard even if count is non-zero,
26295         but smaller than size_needed + number of bytes that could be stored
26296         for alignment.  Compare size_needed with epilogue_size_needed instead
26297         of desired_align - align, don't adjust size_needed, pass
26298         epilogue_size_needed to the epilogue expanders.
26299
26300         PR c/35742
26301         * c-pretty-print.c (pp_c_expression): Handle GOTO_EXPR like BIND_EXPR.
26302
26303 2009-01-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
26304
26305         * pa.c (last_address): Change to unsigned.
26306         (update_total_code_bytes): Change argument to unsigned.  Don't
26307         check if insn addresses are set.
26308         (pa_output_function_epilogue): Set last_address to UINT_MAX if insn
26309         addresses are not set.
26310         (pa_asm_output_mi_thunk): Handle wrap when updating last_address.
26311
26312 2009-01-09  Nick Clifton  <nickc@redhat.com>
26313
26314         * config/sh/symbian.c: Replace uses of DECL_INLINE with
26315         DECL_DECLARED_INLINE_P.
26316
26317 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
26318
26319         PR middle-end/38347
26320         * dojump.c (do_jump_by_parts_zero_rtx): Use mode instead of
26321         GET_MODE (op0) in operand_subword_force calls.
26322
26323         PR middle-end/38771
26324         * fold-const.c (fold_unary): For COMPOUND_EXPR and COND_EXPR,
26325         fold_convert arg0 operands to TREE_TYPE (op0) first.
26326
26327 2009-01-08  Vladimir Makarov  <vmakarov@redhat.com>
26328
26329         * params.def (ira-max-conflict-table-size): Decrease default value
26330         to 1000.
26331
26332 2009-01-08  Jakub Jelinek  <jakub@redhat.com>
26333
26334         PR tree-optimization/37031
26335         * lambda-code.c (lambda_collect_parameters): Call pointer_set_destroy
26336         on parameter_set.
26337         (build_access_matrix): Reserve correct size for AM_MATRIX vector,
26338         allocate it using gc instead of heap, use VEC_quick_push instead of
26339         VEC_safe_push.
26340         * graphite.c (build_access_matrix): Allocate AM_MATRIX vector using gc
26341         instead of heap, use VEC_quick_push instead of VEC_safe_push.
26342         * tree-data-ref.h (struct access_matrix): Change matrix to gc
26343         allocated vector from heap allocated.
26344         * lambda.h: Add DEF_VEC_ALLOC_P for gc allocated lambda_vector.
26345         * tree-loop-linear.c (linear_transform_loops): Allocate nest
26346         vector only after perfect_loop_nest_depth call.
26347
26348 2009-01-08  Sebastian Pop  <sebastian.pop@amd.com>
26349             Jan Sjodin  <jan.sjodin@amd.com>
26350
26351         PR tree-optimization/38559
26352         * graphite.c (debug_value, copy_constraint,
26353         swap_constraint_variables, scale_constraint_variable, ): New.
26354         (get_lower_bound, get_upper_bound): Removed.
26355         (graphite_trans_bb_strip_mine): Clean up this code that works
26356         only for constant number of iterations.  Fully copy upper and
26357         lower bound constraints, not only the constant part of them.
26358         * graphite.h (debug_value): Declared.
26359
26360 2009-01-08  Ira Rosen  <irar@il.ibm.com>
26361
26362         PR tree-optimization/37194
26363         * tree-vect-transform.c (vect_estimate_min_profitable_iters):
26364         Don't add the cost of cost model guard in prologue to scalar
26365         outside cost in case of known number of iterations.
26366
26367 2009-01-07  Nathan Froyd  <froydnj@codesourcery.com>
26368             Alan Modra  <amodra@bigpond.net.au>
26369
26370         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check for
26371         non-word-aligned REG+CONST addressing.
26372
26373 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
26374
26375         PR target/38706
26376         * config/alpha/alpha.c (alpha_end_function): For TARGET_ABI_OSF, call
26377         free_after_compilation when outputting a thunk.
26378         (alpha_output_mi_thunk_osf): Assert that we are processing a thunk.
26379         Do not call free_after_compilation here.
26380
26381 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
26382
26383         * config/i386/i386.c (ix86_target_string): Use ARRAY_SIZE.
26384         (ix86_valid_target_attribute_inner_p): Ditto.
26385
26386 2009-01-07  Jan Sjodin  <jan.sjodin@amd.com>
26387
26388         PR tree-optimization/38492
26389         PR tree-optimization/38498
26390         * tree-check.c (operator_is_linear, scev_is_linear_expression): New.
26391         * tree-chrec.h (scev_is_linear_expression): Declared.
26392         * graphite.c (graphite_cannot_represent_loop_niter): New.
26393         (scopdet_basic_block_info): Call graphite_cannot_represent_loop_niter.
26394         (graphite_loop_normal_form): Use gcc_assert.
26395         (scan_tree_for_params): Use CASE_CONVERT.
26396         (phi_node_is_iv, bb_contains_non_iv_scalar_phi_nodes): New.
26397         (build_scop_conditions_1): Call bb_contains_non_iv_scalar_phi_nodes.
26398         Use gcc_assert.  Discard scops that contain unhandled cases.
26399         (build_scop_conditions): Return a boolean status for unhandled cases.
26400         (strip_mine_profitable_p): Print the loop number, not its depth.
26401         (is_interchange_valid): Pass the depth of the loop nest, don't
26402         recompute it wrongly.
26403         (graphite_trans_bb_block): Same.
26404         (graphite_trans_bb_block): Print tentative of loop blocking.
26405         (graphite_trans_scop_block): Do not print that the loop has been
26406         blocked.
26407         (graphite_transform_loops): Do not handle scops that contain condition
26408         scalar phi nodes.
26409
26410 2009-01-07  H.J. Lu  <hongjiu.lu@intel.com>
26411
26412         AVX Programming Reference (December, 2008)
26413         * config/i386/avxintrin.h (_mm256_stream_si256): New.
26414         (_mm256_stream_pd): Likewise.
26415         (_mm256_stream_ps): Likewise.
26416
26417         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVNTDQ256,
26418         IX86_BUILTIN_MOVNTPD256 and IX86_BUILTIN_MOVNTPS256.
26419         (ix86_special_builtin_type): Add VOID_FTYPE_PV4DI_V4DI.
26420         (bdesc_special_args): Add __builtin_ia32_movntdq256,
26421         __builtin_ia32_movntpd256 and __builtin_ia32_movntps256.
26422         (ix86_init_mmx_sse_builtins): Handle VOID_FTYPE_PV4DI_V4DI.
26423         (ix86_expand_special_args_builtin): Likewise.
26424
26425         * config/i386/sse.md (AVXMODEDI): New.
26426         (avx_movnt<mode>): Likewise.
26427         (avx_movnt<mode>): Likewise.
26428         (<sse>_movnt<mode>): Remove AVX support.
26429         (sse2_movntv2di): Likewise.
26430
26431 2009-01-07  Richard Guenther  <rguenther@suse.de>
26432
26433         PR middle-end/38751
26434         * fold-const.c (extract_muldiv): Remove obsolete comment.
26435         (fold_plusminus_mult_expr): Undo MINUS_EXPR
26436         to PLUS_EXPR canonicalization for the canonicalization.
26437
26438 2009-01-07  Gerald Pfeifer  <gerald@pfeifer.com>
26439
26440         * doc/install.texi (alpha*-dec-osf*): Remove note on 32-bit
26441         hosted cross-compilers generating less efficient code.
26442
26443 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
26444
26445         * function.h (rtl_data): Add a dbr_scheduled_p field.
26446         * reorg.c (dbr_schedule): Set it.
26447         (gate_handle_delay_slots): Check it.
26448         * config/mips/mips.c (mips_base_delayed_branch): Delete.
26449         (mips_reorg): Check flag_delayed_branch instead of
26450         mips_base_delayed_branch.
26451         (mips_override_options): Don't set mips_base_delayed_branch
26452         or flag_delayed_branch.
26453
26454 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
26455
26456         PR rtl-optimization/38426.
26457         * ira.c (ira): Set current_function_is_leaf earlier.
26458
26459 2009-01-06  Jakub Jelinek  <jakub@redhat.com>
26460
26461         PR rtl-optimization/38722
26462         * combine.c (try_combine): Don't modify PATTERN (i3) and notes
26463         too early, only set a flag and modify after last possible
26464         undo_all point.
26465
26466 2009-01-06  Janis Johnson  <janis187@us.ibm.com>
26467
26468         PR c/34252
26469         * ginclude/float.h: Rename DECnn_DEN to DECnn_SUBNORMAL_MIN.
26470         * real.c (decimal_single_format): Correct values of emin and emax.
26471         (decimal_double_format): Ditto.
26472         (decimal_quad_format): Ditto.
26473         * c-cppbuiltin.c (builtin_define_decimal_float_constants): Adjust
26474         computation of DECnn_MIN and DECnn_MAX for corrected values of
26475         emin and emax.  Define __DECnn_SUBNORMAL_MIN__ instead of
26476         __DECnn_MIN__, and adjust its computation for the corrected value
26477         of emin.
26478
26479 2009-01-06  Jan Hubicka  <jh@suse.cz>
26480
26481         PR target/38744
26482         * config/i386/i386.c (ix86_expand_call): Use ARRAY_SIZE.
26483
26484 2009-01-06  Gerald Pfeifer  <gerald@pfeifer.com>
26485
26486         * doc/contrib.texi (Contributors): Slightly adjust the end note.
26487         Add Robert Clark to the list of testers.
26488
26489 2009-01-06  Jan Hubicka  <jh@suse.cz>
26490             Kai Tietz  <kai.tietz@onevision.com>
26491
26492         * config/i386/i386.md (*msabi_syvabi): Add SSE regs clobbers.
26493         * config/i386/i386.c (ix86_expand_call): Add clobbers.
26494
26495 2009-01-06  Jan Hubicka  <jh@suse.cz>
26496             Kai Tietz  <kai.tietz@onevision.com>
26497
26498         * config/i386/i386.h (CONDITIONAL_CALL_USAGE): SSE regs are not used
26499         for w64 ABI.
26500         * config/i386/i386.c (struct ix86_frame): Add padding0 and nsseregs.
26501         (ix86_nsaved_regs): Count only general purpose regs.
26502         (ix86_nsaved_sseregs): New.
26503         (ix86_compute_frame_layout): Update nsseregs; set preferred alignment
26504         to 16 for w64; compute padding and size of sse reg save area.
26505         (ix86_emit_save_regs, ix86_emit_save_regs_using_mov): Save only
26506         general purpose regs.
26507         (ix86_emit_save_sse_regs_using_mov): New.
26508         (ix86_expand_prologue): Save SSE regs if needed.
26509         (ix86_emit_restore_regs_using_mov): Use only general purpose regs.
26510         (ix86_emit_restore_sse_regs_using_mov): New.
26511         (ix86_expand_epilogue): Save SSE regs if needed.
26512
26513 2009-01-06  Jan Hubicka  <jh@suse.cz>
26514             Kai Tietz  <kai.tietz@onevision.com>
26515
26516         * config/i386/i386.h (ACCUMULATE_OUTGOING_ARGS): Enable for MSABI
26517         * config/i386/i386.c (init_cumulative_args): Disallow calls of MSABI
26518         functions when accumulate outgoing args is off.
26519
26520 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
26521
26522         PR bootstrap/38742
26523         * ira-color.c (ira_reuse_stack_slot): Check ENABLE_IRA_CHECKING
26524         before using pseudos_have_intersected_live_ranges_p.
26525
26526         * ira-int.h (ira_assert): Always define.
26527
26528 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
26529
26530         AVX Programming Reference (December, 2008)
26531         * config/i386/avxintrin.h (_mm_permute2_pd): Removed.
26532         (_mm256_permute2_pd): Likewise.
26533         (_mm_permute2_ps): Likewise.
26534         (_mm256_permute2_ps): Likewise.
26535         * config/i386/i386.md (UNSPEC_VPERMIL2): Likewise.
26536         * config/i386/sse.md (avx_vpermil2<mode>3): Likewise.
26537
26538         * config/i386/i386.c (ix86_builtins): Remove
26539         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
26540         IX86_BUILTIN_VPERMIL2PD256 and IX86_BUILTIN_VPERMIL2PS256.
26541         (ix86_builtin_type): Remove V8SF_FTYPE_V8SF_V8SF_V8SI_INT,
26542         V4DF_FTYPE_V4DF_V4DF_V4DI_INT, V4SF_FTYPE_V4SF_V4SF_V4SI_INT
26543         and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
26544         (bdesc_args): Remove __builtin_ia32_vpermil2pd,
26545         __builtin_ia32_vpermil2ps, __builtin_ia32_vpermil2pd256 and
26546         __builtin_ia32_vpermil2ps256.
26547         (ix86_init_mmx_sse_builtins): Updated.
26548         (ix86_expand_args_builtin): Likewise.
26549
26550 2009-01-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
26551
26552         * pa.c (output_call): Relocate non-jump insns in the delay slot of
26553         long absolute calls when generating PA 2.0 code.
26554
26555 2009-01-05  Vladimir Makarov  <vmakarov@redhat.com>
26556
26557         PR rtl-optimization/38583
26558         * params.h (IRA_MAX_CONFLICT_TABLE_SIZE): New macro.
26559
26560         * params.def (ira-max-conflict-table-size): New.
26561
26562         * doc/invoke.texi (ira-max-conflict-table-size): Decribe.
26563
26564         * ira.h (ira_conflicts_p): New external definition.
26565
26566         * ira-conflicts.c (build_conflict_bit_table): Do not build too big
26567         table.  Report this.  Return result of building.
26568         (ira_build_conflicts): Use ira_conflicts_p.  Check result of
26569         building conflict table.
26570
26571         * ira-color.c (fast_allocation): Use num instead of ira_allocnos_num.
26572         (ira_color): Use ira_conflicts_p.
26573
26574         * global.c: Include ira.h.
26575         (pseudo_for_reload_consideration_p, build_insn_chain): Use
26576         ira_conflicts_p.
26577
26578         * Makefile.in (global.o): Add ira.h.
26579
26580         * ira-build.c (mark_all_loops_for_removal,
26581         propagate_some_info_from_allocno): New.
26582         (remove_unnecessary_allocnos): Call
26583         propagate_some_info_from_allocno.
26584         (remove_low_level_allocnos): New.
26585         (remove_unnecessary_regions): Add parameter.  Call
26586         mark_all_loops_for_removal and remove_low_level_allocnos.  Pass
26587         parameter to remove_unnecessary_regions.
26588         (ira_build): Remove all regions but root if the conflict table was
26589         not built.  Update conflict hard regs for allocnos crossing calls.
26590
26591         * ira.c (ira_conflicts_p): New global.
26592         (ira): Define and use ira_conflicts_p.
26593
26594         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
26595         count_spilled_pseudo, find_reg, alter_reg, finish_spills,
26596         emit_input_reload_insns, delete_output_reload): Use ira_conflicts_p.
26597
26598 2009-01-06  Ben Elliston  <bje@au.ibm.com>
26599
26600         * gengtype-lex.l (YY_NO_INPUT): Define.
26601
26602 2009-01-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
26603
26604         PR c/34911
26605         * c-common.c (handle_vector_size_attribute): Also reject
26606         BOOLEAN_TYPE types.
26607
26608 2009-01-05  Sebastian Pop  <sebastian.pop@amd.com>
26609
26610         PR tree-optimization/38492
26611         * graphite.c (rename_map_elt, debug_rename_elt,
26612         debug_rename_map_1, debug_rename_map, new_rename_map_elt,
26613         rename_map_elt_info, eq_rename_map_elts,
26614         get_new_name_from_old_name, bb_in_sese_p): Moved around.
26615         (sese_find_uses_to_rename_use): Renamed sese_build_livein_liveouts_use.
26616         (sese_find_uses_to_rename_bb): Renamed sese_build_livein_liveouts_bb.
26617         (sese_build_livein_liveouts): New.
26618         (new_sese, free_sese): New.
26619         (new_scop): Call new_sese.
26620         (free_scop): Call free_sese.
26621         (rename_variables_from_edge, rename_phis_end_scop): Removed.
26622         (register_old_new_names): Renamed register_old_and_new_names.
26623         (register_scop_liveout_renames, add_loop_exit_phis,
26624         insert_loop_close_phis, struct igp,
26625         default_liveout_before_guard, add_guard_exit_phis,
26626         insert_guard_phis, copy_renames): New.
26627         (translate_clast): Call insert_loop_close_phis and insert_guard_phis.
26628         (sese_add_exit_phis_edge): Renamed scop_add_exit_phis_edge.
26629         (rewrite_into_sese_closed_ssa): Renamed scop_insert_phis_for_liveouts.
26630         (scop_adjust_phis_for_liveouts): New.
26631         (gloog): Call scop_adjust_phis_for_liveouts.
26632
26633         * graphite.h (struct sese): Documented.  Added fields liveout,
26634         num_ver and livein.
26635         (SESE_LIVEOUT, SESE_LIVEIN, SESE_LIVEIN_VER, SESE_NUM_VER): New.
26636         (new_sese, free_sese, sese_build_livein_liveouts): Declared.
26637         (struct scop): Added field liveout_renames.
26638         (SCOP_LIVEOUT_RENAMES): New.
26639
26640 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
26641
26642         PR tree-optimization/38510
26643         * graphite.c (recompute_all_dominators): Call mark_irreducible_loops.
26644         (translate_clast): Call recompute_all_dominators before
26645         graphite_verify.
26646         (gloog): Call recompute_all_dominators before graphite_verify.
26647
26648 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
26649             Jan Sjodin  <jan.sjodin@amd.com>
26650
26651         PR tree-optimization/38500
26652         * graphite.c (create_sese_edges): Call fix_loop_structure after
26653         splitting blocks.
26654
26655 2009-01-05  Joel Sherrill  <joel.sherrill@oarcorp.com>
26656
26657         * config.gcc: Add m32r*-*-rtems*.
26658         * config/m32r/rtems.h: New file.
26659
26660 2009-01-05  Ben Elliston  <bje@au.ibm.com>
26661
26662         * Makefile.in (.po.gmo): Use mkinstalldirs, not test -d || mkdir.
26663         (.po.pox): Likewise.
26664         (po/gcc.pot): Likewise.
26665
26666 2009-01-04  David S. Miller  <davem@davemloft.net>
26667
26668         * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED_RTX): Delete.
26669         (STARTING_FRAME_OFFSET): Always set to zero.
26670
26671 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
26672
26673         * tree.def (LSHIFT_EXPR, RSHIFT_EXPR): Add commentary.
26674         * tree-cfg.c (verify_gimple_assign_binary): Allow shifts of
26675         fixed-point types, and vectors of the same.
26676
26677 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
26678
26679         * config/mips/sync.md (*mb_barrier): Rename to...
26680         (*memory_barrier): ...this.
26681
26682 2009-01-04  Jonathan Wakely  <jwakely.gcc@gmail.com>
26683
26684         * doc/extend.texi (Function Attributes): Move @cindex after @item
26685         for 'artificial' and 'flatten'. Fix grammar for 'externally_visible'
26686         and put in alphabetical order. Fix 'target' name and put in order.
26687         * doc/invoke.texi (-Wstrict-null-sentinel, -fipa-matrix-reorg): Fix
26688         typos.
26689
26690 2009-01-04  Uros Bizjak  <ubizjak@gmail.com>
26691
26692         * config/s390/s390.md (UNSPEC_MB): Rename from UNSPECV_MB.
26693         (memory_barrier): Expand as unspec instead of unspec_volatile.
26694         Remove mem:BLK from insn operands.  Use Pmode scratch register.
26695         (*memory_barrier): Define as unspec instead of unspec_volatile.
26696         Use (match_dup 0) as input operand.
26697
26698         * config/sparc/sparc.md (UNSPEC_MEMBAR): Rename from UNSPECV_MEMBAR.
26699         * config/sparc/sync.md (memory_barrier): Expand as unspec instead of
26700         unspec_volatile.  Remove mem:BLK from insn operands.  Use Pmode
26701         scratch register.  Remove operand 1.
26702         (*stbar): Define as unspec instead of unspec_volatile.
26703         Use (match_dup 0) as input operand, remove (const_int 8).
26704         (*membar): Define as unspec instead of unspec_volatile.
26705         Use (match_dup 0) as input operand, remove input operand 2.
26706
26707         * config/xtensa/xtensa.md (UNSPEC_MEMW): Rename from UNSPECV_MEMW.
26708         (memory_barrier): Expand as unspec instead of unspec_volatile.
26709         Remove mem:BLK from insn operands.  Use Pmode scratch register.
26710         (*memory_barrier): Define as unspec instead of unspec_volatile.
26711         Use (match_dup 0) as input operand.
26712
26713         * config/ia64/sync.md (memory_barrier): Redefine as expander pattern.
26714         Remove mem:BLK from insn operands.  Use Pmode scratch register.
26715         Set volatile flag on operand 0.
26716         (*memory_barrier): New insn pattern.
26717
26718         * config/rs6000/sync.md (memory_barrier): Remove mem:BLK from
26719         insn operands.
26720         (*memory_barrier): Use (match_dup 0) as input operand.
26721
26722         * config/mips/sync.md (memory_barrier): Redefine as expander pattern.
26723         Remove mem:BLK from insn operands.  Use Pmode scratch register.
26724         Set volatile flag on operand 0.
26725         (*mb_internal): New insn pattern.
26726
26727         * config/alpha/sync.md (*memory_barrier): Rename from *mb_internal.
26728
26729 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
26730
26731         PR middle-end/38586
26732         * function.c (struct temp_slot): Move to the section of the file
26733         that deals with temp slots.  Remove field 'address'.
26734         (temp_slot_address_table): New hash table of address -> temp slot.
26735         (struct temp_slot_address_entry): New struct, items for the table.
26736         (temp_slot_address_compute_hash, temp_slot_address_hash,
26737         temp_slot_address_eq, insert_temp_slot_address): Support functions
26738         for the new table.
26739         (find_temp_slot_from_address): Rewrite to use the new hash table.
26740         (remove_unused_temp_slot_addresses): Remove addresses of temp
26741         slots that have been made available.
26742         (remove_unused_temp_slot_addresses_1): Call-back for htab_traverse,
26743         worker function for remove_unused_temp_slot_addresses.
26744         (assign_stack_temp_for_type): Don't clear the temp slot address list.
26745         Add the temp slot address to the address -> temp slot map.
26746         (update_temp_slot_address): Update via insert_temp_slot_address.
26747         (free_temp_slots): Call remove_unused_temp_slot_addresses.
26748         (pop_temp_slots): Likewise.
26749         (init_temp_slots): Allocate the address -> temp slot map, or empty
26750         the map if it is already allocated.
26751         (prepare_function_start): Initialize temp slot processing.
26752
26753 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
26754
26755         PR middle-end/38584
26756         * cfgexpand.c (estimate_stack_frame_size): Simplify the estimate:
26757         Calculate the size of all stack vars assuming no packing of stack
26758         vars will happen, replacing a quadratic algorithm with a linear one.
26759
26760 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
26761
26762         PR target/38707
26763         * expmed.c (store_bit_field_1): Don't modify op0 if movstrict insn
26764         can't be used.
26765
26766 2009-01-03  Diego Novillo  <dnovillo@google.com>
26767
26768         * doc/contrib.texi: Update contributions.
26769
26770 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
26771
26772         PR c++/38705
26773         * builtins.c (fold_builtin_memory_op): Give up if either operand
26774         is volatile.  Set srctype or desttype to non-qualified version
26775         of the other type.
26776
26777         PR c/38700
26778         * builtins.c (fold_builtin_expect): Only check DECL_WEAK for VAR_DECLs
26779         and FUNCTION_DECLs.
26780
26781 2009-01-02  Kenneth Zadeck  <zadeck@naturalbridge.com>
26782
26783         PR rtl-optimization/35805
26784         * df-problems.c (df_lr_finalize): Add recursive call to resolve lr
26785         problem if fast dce is able to remove any instructions.
26786         * dce.c (dce_process_block): Fix dump message.
26787
26788 2009-01-02  Mark Mitchell  <mark@codesourcery.com>
26789
26790         PR 33649
26791         * tree-ssa-pre.c (compute_antic): Correct loop bounds.
26792
26793 2009-01-02  Jakub Jelinek  <jakub@redhat.com>
26794
26795         PR middle-end/38690
26796         * tree-flow.h (op_code_prio, op_prio): New prototypes.
26797         * tree-pretty-print.c (op_code_prio): New function.
26798         (op_prio): No longer static.  Use op_code_prio.
26799         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs):
26800         Use op_prio and op_code_prio to determine if () should be
26801         printed around operand(s) or not.
26802
26803         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs,
26804         dump_gimple_call, dump_gimple_switch, dump_gimple_cond,
26805         dump_gimple_label, dump_gimple_try, dump_symbols, dump_gimple_phi,
26806         dump_gimple_mem_ops, dump_bb_header, dump_bb_end, pp_cfg_jump): Use
26807         pp_character instead of pp_string for single letter printing.
26808
26809 2009-01-02  Richard Sandiford  <rdsandiford@googlemail.com>
26810
26811         * doc/extend.texi: Fix '#pragma GCC option' typo.
26812
26813 2009-01-02  Richard Guenther  <rguenther@suse.de>
26814
26815         * doc/install.texi (--enable-checking): Mention different
26816         default for stage1.
26817         (--enable-stage1-checking): Document.
26818
26819 2009-01-01  Andrew Pinski  <pinskia@gmail.com>
26820
26821         PR middle-end/30142
26822         * tree-cfg.c (verify_expr): Add INDIRECT_REF case.  Change MODIFY_EXPR
26823         case to be an error.
26824
26825 2009-01-02  Ben Elliston  <bje@au.ibm.com>
26826
26827         * config/fp-bit.h (pack_d): Constify argument.
26828         * config/fp-bit.c (makenan): Constify return type. Remove casts.
26829         (isnan): Constify argument.
26830         (isinf): Likewise.
26831         (iszero): Likewise.
26832         (pack_d): Likewise.
26833         (_fpadd_parts): Constify return type.
26834         (_fpmul_parts): Likewise.
26835         (_fpdiv_parts): Likewise.
26836
26837 2009-01-01  Jakub Jelinek  <jakub@redhat.com>
26838
26839         PR c/36489
26840         * c-typeck.c (add_pending_init): Add IMPLICIT argument.  Only
26841         warn about overwriting initializer with side-effects or
26842         -Woverride-init if !IMPLICIT.
26843         (output_init_element): Likewise.  Pass IMPLICIT down to
26844         add_pending_init.
26845         (process_init_element): Add IMPLICIT argument.  Pass it down
26846         to output_init_element.
26847         (push_init_element, pop_init_level, set_designator): Adjust
26848         process_init_element callers.
26849         (set_nonincremental_init, set_nonincremental_init_from_string):
26850         Adjust add_pending_init callers.
26851         (output_pending_init_elements): Adjust output_init_element callers.
26852         * c-tree.h (process_init_element): Adjust prototype.
26853         * c-parser.c (c_parser_initelt, c_parser_initval): Adjust
26854         process_init_element callers.
26855
26856 \f
26857 Copyright (C) 2009 Free Software Foundation, Inc.
26858
26859 Copying and distribution of this file, with or without modification,
26860 are permitted in any medium without royalty provided the copyright
26861 notice and this notice are preserved.