OSDN Git Service

* config/mn10300/mn10300.h (USER_LABEL_PREFIX): Define.
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-10-02  Nick Clifton  <nickc@redhat.com>
2
3         * config/mn10300/mn10300.h (USER_LABEL_PREFIX): Define.
4         (ASM_OUTPUT_LABELREF): Use asm_fprintf and %U.
5
6 2009-10-01  Jan Hubicka  <jh@suse.cz>
7
8         * cgraph.c (cgraph_clone_node): Add redirect_callers parameter.
9         (cgraph_create_virtual_clone): Just pass redirect_callers
10         around.
11         * cgraph.h (cgraph_clone_node): Update prototype.
12         * ipa-pure-const.c (self_recursive_p): New function.
13         (propagate): Use it.
14         * ipa-inline.c (cgraph_clone_inlined_nodes,
15         cgraph_decide_recursive_inlining): Update.
16
17 2009-10-01  David Daney  <ddaney@caviumnetworks.com>
18
19         * gcc/config/mips/mips.c (mips_process_sync_loop) Emit syncw
20         instructions for TARGET_OCTEON.
21
22 2009-10-01  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
23
24         * config/arm/arm.c (arm_override_options): Turn off
25         flag_dwarf2_cfi_asm for AAPCS variants.
26
27 2009-10-01  Martin Jambor  <mjambor@suse.cz>
28
29         PR middle-end/12392
30         * tree-sra.c (convert_callers): Do not call
31         compute_inline_parameters on one caller more than once.
32
33 2009-10-01  Nick Clifton  <nickc@redhat.com>
34
35         * config/vax/netbsd-elf.h (NETBSD_CC1_AND_CC1PLUS_SPEC): Define as
36         an empty string if not already defined.
37
38 2009-10-01  Martin Jambor  <mjambor@suse.cz>
39
40         PR bootstrap/41395
41         * tree-sra.c (is_va_list_type): New function.
42         (find_var_candidates): Call is_va_list_type.
43         (find_param_candidates): Check that the type or the type pointed
44         to are not va_list types.
45
46 2009-10-01  Martin Jambor  <mjambor@suse.cz>
47
48         PR c++/41503
49         * cp/pt.c (function_parameter_expanded_from_pack_p): Return false if
50         DECL_ARTIFICIAL (param_decl) is true.
51         
52 2009-09-30  Gabriel Dos Reis  <gdr@cs.tamu.edu>
53
54         * tree.h (tree_decl_common::lang_flag_8): New.
55         * c-common.c (c_common_reswords): Include "constexpr" as C++0x
56         keyword. 
57         * c-common.h (RID_CONSTEXPR): New.
58
59 2009-09-30  Uros Bizjak  <ubizjak@gmail.com>
60
61         * config/alpha/alpha.c (alpha_gimplify_va_arg_1):
62         Use ref-all pointers.
63         (alpha_gimplify_va_arg): Ditto.
64
65 2009-09-30  Jakub Jelinek  <jakub@redhat.com>
66
67         PR target/41279
68         * cfgloopanal.c (num_loop_insns): Don't increment ninsns for each bb
69         before insn counting loop now that BB_END (bb) is counted.  Ensure
70         the return value isn't zero.
71
72 2009-09-30  Nick Clifton  <nickc@redhat.com>
73
74         * config.gcc (sh-symbianelf): Replace definition of extra_objs
75         with separate definitions of c_target_objs and cxx_target_objs.
76         * config/sh/t-sh: Add rules to build symbian-cxx.o, symbian-c.o
77         and symbian-base.o.
78         * config/sh/sh.c (TARGET_CXX_INPUT_EXPORT_CLASS): Use
79         sh_symbian_import_export_class.
80         * config/sh/sh-protos.h: Fix names of exported symbian functions.
81         * config/sh/symbian.c: Delete, moving code into...
82         * config/sh/symbian-base.c: ... here
83         * config/sh/symbian-c.c: ... and here
84         * config/sh/symbian-cxx.c: ... and here.
85
86 2009-09-30  Uros Bizjak  <ubizjak@gmail.com>
87
88         PR target/22093
89         * config/alpha/alpha.md (unaligned_storehi_be): Force operand
90         of plus RTX into register.
91
92 2009-09-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
93
94         * doc/install.texi: Linguistic and markup fixes.
95         (Configuration) <--disable-cpp>: Remove description.
96         <--enable-maintainer-mode>: Autotools files are affected, too.
97         <--with-sysroot>: Improve description.
98         (Building): Bump required GNU make version.
99
100 2009-09-29  Harsha Jagasia  <harsha.jagasia@amd.com>
101
102         * config.gcc (i[34567]86-*-*): Include fma4intrin.h.
103         (x86_64-*-*): Ditto.
104
105         * config/i386/fma4intrin.h: New file, provide common x86 compiler
106         intrinisics for FMA4.
107         * config/i386/cpuid.h (bit_FMA4): Define FMA4 bit.
108         * config/i386/x86intrin.h: Fix typo to SSE4A instead of SSE4a.
109         Add FMA4 check and fma4intrin.h.
110         * config/i386/i386-c.c(ix86_target_macros_internal): Check
111         ISA_FLAG for FMA4.
112         * config/i386/i386.h(TARGET_FMA4): New macro for FMA4.
113         * config/i386/i386.md (UNSPEC_FMA4_INTRINSIC): Add new UNSPEC
114         constant for FMA4 support.
115         (UNSPEC_FMA4_FMADDSUB): Ditto.
116         (UNSPEC_FMA4_FMSUBADD): Ditto.
117         * config/i386/i386.opt (-mfma4): New switch for FMA4 support.
118         * config/i386/i386-protos.h (ix86_fma4_valid_op_p): Add declaration.
119         (ix86_expand_fma4_multiple_memory): Ditto.
120         * config/i386/i386.c (OPTION_MASK_ISA_FMA4_SET): New.
121         (OPTION_MASK_ISA_FMA4_UNSET): New.
122         (OPTION_MASK_ISA_SSE4A_UNSET): Change definition to depend on FMA4.
123         (OPTION_MASK_ISA_AVX_UNSET): Change definition to depend on FMA4.
124         (ix86_handle_option): Handle -mfma4.
125         (isa_opts): Handle -mfma4.
126         (enum pta_flags): Add PTA_FMA4.
127         (override_options): Add FMA4 support.
128         (IX86_BUILTIN_VFMADDSS): New for FMA4 intrinsic.
129         (IX86_BUILTIN_VFMADDSD): Ditto.
130         (IX86_BUILTIN_VFMADDPS): Ditto.
131         (IX86_BUILTIN_VFMADDPD): Ditto.
132         (IX86_BUILTIN_VFMSUBSS): Ditto.
133         (IX86_BUILTIN_VFMSUBSD): Ditto.
134         (IX86_BUILTIN_VFMSUBPS): Ditto.
135         (IX86_BUILTIN_VFMSUBPD): Ditto.
136         (IX86_BUILTIN_VFMADDSUBPS): Ditto.
137         (IX86_BUILTIN_VFMADDSUBPD): Ditto.
138         (IX86_BUILTIN_VFMSUBADDPS): Ditto.
139         (IX86_BUILTIN_VFMSUBADDPD): Ditto.
140         (IX86_BUILTIN_VFNMADDSS): Ditto.
141         (IX86_BUILTIN_VFNMADDSD): Ditto.
142         (IX86_BUILTIN_VFNMADDPS): Ditto.
143         (IX86_BUILTIN_VFNMADDPD): Ditto.
144         (IX86_BUILTIN_VFNMSUBSS): Ditto.
145         (IX86_BUILTIN_VFNMSUBSD): Ditto.
146         (IX86_BUILTIN_VFNMSUBPS): Ditto.
147         (IX86_BUILTIN_VFNMSUBPD): Ditto.
148         (IX86_BUILTIN_VFMADDPS256): Ditto.
149         (IX86_BUILTIN_VFMADDPD256): Ditto.
150         (IX86_BUILTIN_VFMSUBPS256): Ditto.
151         (IX86_BUILTIN_VFMSUBPD256): Ditto.
152         (IX86_BUILTIN_VFMADDSUBPS256): Ditto.
153         (IX86_BUILTIN_VFMADDSUBPD256): Ditto.
154         (IX86_BUILTIN_VFMSUBADDPS256): Ditto.
155         (IX86_BUILTIN_VFMSUBADDPD256): Ditto.
156         (IX86_BUILTIN_VFNMADDPS256): Ditto.
157         (IX86_BUILTIN_VFNMADDPD256): Ditto.
158         (IX86_BUILTIN_VFNMSUBPS256): Ditto.
159         (IX86_BUILTIN_VFNMSUBPD256): Ditto.
160         (enum multi_arg_type): New enum for describing the various FMA4
161         intrinsic argument types.
162         (bdesc_multi_arg): New table for FMA4 intrinsics.
163         (ix86_init_mmx_sse_builtins): Add FMA4 intrinsic support.
164         (ix86_expand_multi_arg_builtin): New function for creating FMA4
165         intrinsics.
166         (ix86_expand_builtin): Add FMA4 intrinsic support.
167         (ix86_fma4_valid_op_p): New function to validate FMA4 3 and 4
168         operand instructions.
169         (ix86_expand_fma4_multiple_memory): New function to split the
170         second memory reference from FMA4 instructions.
171         * config/i386/sse.md (ssemodesuffixf4): New mode attribute for FMA4.
172         (ssemodesuffixf2s): Ditto.
173         (fma4_fmadd<mode>4): Add FMA4 floating point multiply/add
174         instructions.
175         (fma4_fmsub<mode>4): Ditto.
176         (fma4_fnmadd<mode>4): Ditto.
177         (fma4_fnmsub<mode>4): Ditto.
178         (fma4_vmfmadd<mode>4): Ditto.
179         (fma4_vmfmsub<mode>4): Ditto.
180         (fma4_vmfnmadd<mode>4): Ditto.
181         (fma4_vmfnmsub<mode>4): Ditto.
182         (fma4_fmadd<mode>4256): Ditto.
183         (fma4_fmsub<mode>4256): Ditto.
184         (fma4_fnmadd<mode>4256): Ditto.
185         (fma4_fnmsub<mode>4256): Ditto.
186         (fma4_fmaddsubv8sf4): Ditto.
187         (fma4_fmaddsubv4sf4): Ditto.
188         (fma4_fmaddsubv4df4): Ditto.
189         (fma4_fmaddsubv2df4): Ditto.
190         (fma4_fmsubaddv8sf4): Ditto.
191         (fma4_fmsubaddv4sf4): Ditto.
192         (fma4_fmsubaddv4df4): Ditto.
193         (fma4_fmsubaddv2df4): Ditto.
194         (fma4i_fmadd<mode>4): Add FMA4 floating point multiply/add
195         instructions for intrinsics.
196         (fma4i_fmsub<mode>4): Ditto.
197         (fma4i_fnmadd<mode>4): Ditto.
198         (fma4i_fnmsub<mode>4): Ditto.
199         (fma4i_vmfmadd<mode>4): Ditto.
200         (fma4i_vmfmsub<mode>4): Ditto.
201         (fma4i_vmfnmadd<mode>4): Ditto.
202         (fma4i_vmfnmsub<mode>4): Ditto.
203         (fma4i_fmadd<mode>4256): Ditto.
204         (fma4i_fmsub<mode>4256): Ditto.
205         (fma4i_fnmadd<mode>4256): Ditto.
206         (fma4i_fnmsub<mode>4256): Ditto.
207         (fma4i_fmaddsubv8sf4): Ditto.
208         (fma4i_fmaddsubv4sf4): Ditto.
209         (fma4i_fmaddsubv4df4): Ditto.
210         (fma4i_fmaddsubv2df4): Ditto.
211         (fma4i_fmsubaddv8sf4): Ditto.
212         (fma4i_fmsubaddv4sf4): Ditto.
213         (fma4i_fmsubaddv4df4): Ditto.
214         (fma4i_fmsubaddv2df4): Ditto.
215
216         * doc/invoke.texi (-mfma4): Add documentation.
217         * doc/extend.texi (x86 intrinsics): Add FMA4 intrinsics.
218
219 2009-09-29  Richard Henderson  <rth@redhat.com>
220
221         * tree-eh.c (unsplit_eh): Do not unsplit if there's already
222         an edge to the new destination block.
223
224 2009-09-29  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
225
226         PR target/41393
227         * pa.c (hppa_profile_hook): Use
228         make_reg_eh_region_note_nothrow_nononlocal to add REG_EH_REGION note.
229
230 2009-09-29  Steve Ellcey  <sje@cup.hp.com>
231             Alexander Monakov  <amonakov@ispras.ru>
232
233         PR target/41365
234         * config/ia64/predicates.md (not_postinc_destination_operand): New.
235         (not_postinc_memory_operand): New.
236         (not_postinc_move_operand): New.
237         * config/ia64/ia64.md (*cmovdi_internal): Disallow autoincrement.
238         (*cmovsi_internal): Ditto.
239
240 2009-09-29  Pat Haugen  <pthaugen@us.ibm.com>
241
242         * config/rs6000/rs6000.c (rs6000_issue_rate): Don't artificially
243         restrict issue_rate in first pass when scheduling for register
244         pressure.
245
246 2009-09-29  Basile Starynkevitch  <basile@starynkevitch.net>
247             Rafael Avila de Espindola  <espindola@google.com>
248
249         * gengtype.c (plugin_output): New.
250         (get_output_file_with_visibility): Return plugin_output for plugins.
251         (main): Parse and use the -P option.
252         * gty.texi: Update the command line format.
253
254 2009-09-29  Jakub Jelinek  <jakub@redhat.com>
255
256         PR debug/41438
257         * dwarf2out.c (const_ok_for_output_1, const_ok_for_output): New
258         functions.
259         (mem_loc_descriptor, loc_descriptor, add_const_value_attribute): Bail
260         out if !const_ok_for_output.
261
262         PR debug/41474
263         * dwarf2out.c (mem_loc_descriptor) <case CONCAT, case CONCATN,
264         case VAR_LOCATION>: Remove gcc_unreachable ().
265
266 2009-09-29  Harsha Jagasia  <harsha.jagasia@amd.com>
267
268         * config.gcc (i[34567]86-*-*): Remove mmintrin-common.h.
269         (x86_64-*-*): Ditto.
270         * config/i386/smmintrin.h: Move instructions in mmintrin-common.h
271         back to smmintrin.h.
272         * config/i386/cpuid.h: (bit_SSE5): Remove SSE5 bit.
273         * config/i386/x86intrin.h: Remove SSE5.
274         * config/i386/mmintrin-common.h: Delete file.
275         * doc/extend.texi (x86 intrinsics): Remove SSE5 flags and builtins.
276
277 2009-09-29  Richard Guenther  <rguenther@suse.de>
278
279         * alias.c (ao_ref_from_mem): Properly deal with off decl accesses
280         resulting from stack temporaries on STRICT_ALIGNMENT targets.
281
282 2009-09-29  Nick Clifton  <nickc@redhat.com>
283
284         * function.c (current_function_name): If there is no current
285         function just return "<none>".
286
287 2009-09-28  Sriraman Tallam  <tmsriram@google.com>
288
289         * tree-pass.h (register_pass_info): New structure.
290         (pass_positioning_ops): Move enum from gcc-plugin.h.
291         (register_pass): New function.
292         * gcc-plugin.h (plugin_pass): Delete structure.
293         (pass_positioning_ops): Delete enum.
294         * plugin.c (regsiter_pass): Delete function.
295         (position_pass): Delete function.
296         (added_pass_nodes): Delete variable.
297         (prev_added_pass_nodes): Delete variable.
298         (pass_list_node): Delete structure.
299         * passes.c (make_pass_instance): New function.
300         (next_pass_1): Change to call make_pass_instance.
301         (pass_list_node): Move structure from gcc-plugin.h.
302         (added_pass_nodes): Move variable from plugin.c.
303         (prev_added_pass_nodes): Move variable from plugin.c.
304         (position_pass): New function.
305         (register_pass): New function.
306
307 2009-09-28  Easwaran Raman  <eraman@google.com>
308
309         * ifcvt.c (noce_try_abs): Recognize pattern and call
310         expand_one_cmpl_abs_nojump.
311         * optabs.c (expand_one_cmpl_abs_nojump): New function.
312         * optabs.h (expand_one_cmpl_abs_nojump): Declare.
313
314 2009-09-28  Ian Lance Taylor  <iant@google.com>
315
316         PR middle-end/40500
317         * c-opts.c (c_common_handle_option): Don't set
318         warn_jump_misses_init for -Wall.
319         * doc/invoke.texi (Warning Options): Update documentation.
320
321 2009-09-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
322
323         * Makefile.in ($(out_object_file)): Depend on
324         gt-$(basename $(notdir $(out_file))).h.
325
326 2009-09-28  Richard Henderson  <rth@redhat.com>
327
328         * except.h (struct eh_region_d): Add use_cxa_end_cleanup.
329         * except.c (gen_eh_region): Set it.
330         (duplicate_eh_regions_1): Copy it.
331         * tree-eh.c (lower_resx): Use it to determine which function
332         to call to resume.
333
334         * langhooks.h (struct lang_hooks): Add eh_use_cxa_end_cleanup.
335         * langhooks-def.h (LANG_HOOKS_EH_USE_CXA_END_CLEANUP): New.
336         * builtins.def (BUILT_IN_CXA_END_CLEANUP): New.
337         * tree.c (build_common_builtin_nodes): Remove parameter.  Build
338         BUILT_IN_CXA_END_CLEANUP if necessary.
339
340         * c-common.c (c_define_builtins): Update call to
341         build_common_builtin_nodes.
342
343 2009-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
344
345         * spu.c (get_branch_target): Return NULL for ASM_OPERANDS patterns.
346
347 2009-09-28  Michael Matz  <matz@suse.de>
348
349         * builtins.c (interclass_mathfn_icode): New helper.
350         (expand_builtin_interclass_mathfn): Use it here, and split folding
351         into ...
352         (fold_builtin_interclass_mathfn): ... this new folder.
353         (build_call_nofold_loc): New static helper.
354         (build_call_nofold): New wrapper macro for above.
355         (expand_builtin_int_roundingfn): Use it instead of build_call_expr.
356         (expand_builtin_pow): Ditto.
357         (expand_builtin_memset_args): Ditto.
358         (expand_builtin_printf): Ditto.
359         (expand_builtin_fprintf): Ditto.
360         (expand_builtin_sprintf): Ditto.
361         (expand_builtin_memory_chk): Ditto.
362         (expand_builtin_mempcpy_args): Ditto and don't call folders.
363         (expand_builtin_stpcpy): Ditto.
364         (expand_builtin_strcmp): Ditto.
365         (expand_builtin_strncmp): Ditto.
366         (expand_builtin_strcpy): Remove FNDECL and MODE arguments.
367         (expand_builtin_strcpy_args): Don't call folders.
368         (expand_builtin_memcmp): Ditto.
369         (expand_builtin_strncpy): Ditto, and use target.
370         (expand_builtin_memcpy): Ditto.
371         (expand_builtin_strstr, expand_builtin_strchr, expand_builtin_strrchr,
372         expand_builtin_strpbrk, expand_builtin_memmove,
373         expand_builtin_memmove_args, expand_builtin_bcopy,
374         expand_builtin_memchr, expand_builtin_strcat, expand_builtin_strncat,
375         expand_builtin_strspn, expand_builtin_strcspn,
376         expand_builtin_fputs): Remove these.
377         (expand_builtin): Don't call the above, change calls to other
378         expanders that changed prototype.
379         (fold_builtin_stpcpy): New folder split out from expand_builtin_stpcpy.
380         (fold_builtin_1 <ISFINITE, ISINF, ISNORMAL>): Call
381         fold_builtin_interclass_mathfn.
382         (fold_builtin_2 <STPCPY>): Call fold_builtin_stpcpy.
383         (fold_builtin_strcat): Add folding split from expand_builtin_strcat.
384
385         * fold-const.c (fold_binary_loc <NE_EXPR>): Add !exp != 0 -> !exp.
386         * passes.c (init_optimization_passes): Move pass_fold_builtins
387         after last phiopt pass.
388         * tree-inline.c (fold_marked_statements): When folding builtins
389         iterate over all instruction potentially generated.
390         * tree-ssa-ccp.c (gimplify_and_update_call_from_tree): Declare
391         earlier.
392         (fold_gimple_call): Use it to always fold calls (into potentially
393         multiple instructions).
394         * tree-ssa-dom.c (optimize_stmt): Resolve __builtin_constant_p
395         calls into zero at this time.
396         * tree-ssa-propagate.c (substitute_and_fold): Ignore multiple
397         statements generated by builtin folding.
398
399 2009-09-28  Nick Clifton  <nickc@redhat.com>
400
401         * config/m32r/m32r.c (m32r_is_insn): Return false for debugging
402         insns.
403
404 2009-09-28  Duncan Sands  <baldrick@free.fr>
405
406         * gcc-plugin.h (PLUGIN_REGISTER_GGC_CACHES): New event.
407         * plugin.c (plugin_event_name): Add PLUGIN_REGISTER_GGC_CACHES.
408         (register_callback): Dispatch it.
409         (invoke_plugin_callbacks): Incorporate in sanity check.
410         * ggc.h (ggc_register_cache_tab): Add declaration.
411         * ggc-common.c (ggc_register_root_tab): Simplify.
412         (const_ggc_cache_tab_t): New typedef.
413         (extra_cache_vec): New vector of dynamically added cache tables.
414         (ggc_register_cache_tab): New function.
415         (ggc_scan_cache_tab): New function.
416         (ggc_mark_roots): Simplify dynamic roots.  Handle dynamic caches.
417         * doc/plugins.texi: Document PLUGIN_REGISTER_GGC_CACHES.
418
419 2009-09-27  Richard Henderson  <rth@redhat.com>
420
421         * tree-ssa-ccp.c (optimize_stack_restore): Relax the conditions under
422         which we remove __builtin_stack_restore.
423
424 2009-09-27  Bernd Schmidt  <bernd.schmidt@analog.com>
425
426         * loop-iv.c (iv_analyze_op): Use function_invariant_p, not CONSTANT_P,
427         to test for GRD_INVARIANT.
428         (simple_rhs_p): Anything that's function_invariant_p is fine.
429
430 2009-09-27  Rafael Avila de Espindola  <espindola@google.com>
431
432         * gengtype.c (main): Use plunge_files instead of plugin_output.
433
434 2009-09-27  Basile Starynkevitch  <basile@starynkevitch.net>
435             Rafael Avila de Espindola  <espindola@google.com>
436
437         * gengtype.c (write_root, write_roots): Add a emit_pch argument.
438         Don't print pch related info if it is false.
439         (main): Don't print pch info in plugin mode.
440
441 2009-09-27  Eric Botcazou  <ebotcazou@adacore.com>
442
443         * dwarf2out.c (enum dw_val_class): Replace dw_val_class_long_long
444         with dw_val_class_const_double.
445         (struct dw_val_struct): Replace val_long_long with val_double and
446         adjust for above change.
447         (output_loc_operands): Likewise.
448         (add_AT_long_long): Rename into...
449         (add_AT_double): ...this.
450         (print_die): Replace dw_val_class_long_long with
451         dw_val_class_const_double and adjust.
452         (attr_checksum): Likewise.
453         (same_dw_val_p): Likewise.
454         (size_of_die): Likewise.
455         (value_format): Likewise.
456         (output_die): Likewise.
457         (loc_descriptor) <CONST_DOUBLE>: Likewise.
458         (add_const_value_attribute) <CONST_DOUBLE>: Call add_AT_double
459         instead of add_AT_long_long.
460         (add_bound_info) <INTEGER_CST>: Generate the bound as an unsigned
461         value with the precision of its type.
462
463 2009-09-27  Andreas Schwab  <schwab@linux-m68k.org>
464
465         PR c/41476
466         * c-typeck.c (build_conditional_expr): Use the readonly and
467         volatile flags of the operand types, not of the operands itself.
468
469 2009-09-27  Peter O'Gorman  <pogma@thewrittenword.com>
470
471         collect2.c (main): Look for -brtl before adding libraries.
472
473 2009-09-27  Jonathan Gray  <jsg@openbsd.org>
474
475         * config.gcc: Update OpenBSD targets.
476         * config/openbsd-stdint.h: New file.
477         * config/openbsd-libpthread.h: New file.
478         * config/openbsd.h: Update and break out LIB_SPEC definition.
479         * config/alpha/openbsd.h: Overhaul to reflect ELF migration.
480         * config/i386/openbsdelf.h: Correct types.
481         * config/m68k/openbsd.h: Likewise.
482         * config/mips/openbsd.h: Likewise.
483         * config/vax/openbsd.h: Likewise.
484
485 2009-09-27  Eric Botcazou  <ebotcazou@adacore.com>
486
487         * fold-const.c (maybe_lvalue_p): Return false for M(IN|AX)_EXPR.
488         (extract_muldiv_1) <MINUS_EXPR>: Swap operands if necessary.
489         * stor-layout.c (layout_type) <ARRAY_TYPE>: Do not take the maximum
490         of the length and zero.
491
492 2009-09-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
493
494         * Makefile.in (TOPLEV_H): Use $(INPUT_H) not input.h.
495         (FLAGS_H): Add options.h $(REAL_H).
496         (SEL_SCHED_IR_H): Add $(BITMAP_H) vecprim.h $(CFGLOOP_H).
497         (TREE_VECTORIZER_H): New.
498         (EBITMAP_H): Renamed from EBIMAP_H.
499         (c-decl.o, c-objc-common.o, c-pretty-print.o, attribs.o, c-omp.o)
500         (gtype-desc.o, ggc-common.o, ggc-page.o, ggc-zone.o, langhooks.o)
501         (tree.o, tree-ssa-structalias.o, tree-ssa-ter.o, tree-ssanames.o)
502         (tree-phinodes.o, tree-ssa-loop.o, tree-ssa-math-opts.o)
503         (gimple-low.o, omp-low.o, sese.o, graphite-blocking.o)
504         (graphite-clast-to-gimple.o, graphite-dependences.o)
505         (graphite-interchange.o, graphite-poly.o, graphite-scop-detection.o)
506         (graphite-sese-to-poly.o, tree-vect-loop.o, tree-vect-loop-manip.o)
507         (tree-vect-patterns.o, tree-vect-slp.o, tree-vect-stmts.o)
508         (tree-vect-data-refs.o, tree-vectorizer.o, gimple.o, tree-mudflap.o)
509         (targhooks.o, stmt.o, emit-rtl.o, ipa.o, matrix-reorg.o, ipa-inline.o)
510         (gcse.o, tree-ssa-ccp.o, df-byte-scan.o, vec.o, caller-save.o)
511         (ira-build.o, ira-costs.o, ira-color.o, ira-emit.o, ira.o)
512         (haifa-sched.o, sched-rgn.o, sel-sched.o, sel-sched-dump.o)
513         (sel-sched-ir.o, final.o, $(out_object_file)): Dependencies
514         updated and fixed as per above changes and per
515         check_makefile_deps.sh output.
516
517         PR bootstrap/40928
518         * configure.ac: Use $LIBS for '-ldl', not $LDFLAGS.
519         * configure: Regenerate.
520
521 2009-09-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
522
523         * doc/install.texi: Update minimum MPC version to 0.7.
524
525 2009-09-26  Gerald Pfeifer  <gerald@pfeifer.com>
526
527         * doc/install.texi (Binaries): Remove reference to the binary
528         distribution CD-ROM from the FSF.
529
530 2009-09-26  Michael Matz  <matz@suse.de>
531
532         PR lto/40758
533         PR middle-end/41470
534         * tree-ssa-coalesce.c (coalesce_ssa_name): Add only SSA names
535         that are mentioned in the body.
536
537 2009-09-26  Michael Matz  <matz@suse.de>
538
539         PR tree-optimization/41454
540         * tree-ssa-dom (stmts_to_rescan): Remove variable.
541         (tree_ssa_dominator_optimize): Don't allocate and free it.
542         (dom_opt_leave_block): Don't iterate over it.
543         (eliminate_redundant_computations): Don't return a value.
544         (cprop_operand, cprop_into_stmt): Ditto.
545         (optimize_stmt): Don't defer updating stmts.
546
547 2009-09-25  Dodji Seketeli  <dodji@redhat.com>
548
549         * dwarf2out.c (dwarf_tag_name, gen_generic_params_dies,
550         generic_parameter_die, template_parameter_pack_die,
551         gen_formal_parameter_die, gen_subprogram_die): Adjust after renaming
552         DW_TAG_formal_parameter_pack and DW_TAG_template_parameter_pack into
553         DW_TAG_GNU_formal_parameter_pack and DW_TAG_GNU_template_parameter_pack.
554
555 2009-09-25  Anatoly Sokolov  <aesok@post.ru>
556
557         * config/v850/v850.h (FUNCTION_VALUE): Remove.
558         * config/v850/v850.c (v850_function_value): New function.
559         (TARGET_FUNCTION_VALUE): Define.
560
561 2009-09-25  Jakub Jelinek  <jakub@redhat.com>
562
563         * tree-vect-stmts.c (vectorizable_call): Call
564         mark_symbols_for_renaming after vect_finish_stmt_generation.
565
566         * dwarf2out.c (tls_mem_loc_descriptor): Pass 1 instead of 2
567         to loc_descriptor_from_tree.
568         (add_location_or_const_value_attribute): Pass 0 instead of 2
569         for decl_by_reference_p decls.
570
571 2009-09-25  Richard Guenther  <rguenther@suse.de>
572
573         PR middle-end/41463
574         * tree-dfa.c (get_ref_base_and_extent): Fix issue with trailing
575         arrays again.
576
577 2009-09-25  Ben Elliston  <bje@au.ibm.com>
578
579         * doc/invoke.texi (RS/6000 and PowerPC Options): Add missing comma
580         after `power7'.
581
582 2009-09-25  Alan Modra  <amodra@bigpond.net.au>
583
584         * config/rs6000/rs6000.md (load_toc_v4_PIC_3c): Correct POWER
585         form of instruction.
586
587 2009-09-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
588
589         PR middle-end/41435
590         * fold-const.c (const_binop): Handle complex int division.
591         * tree-complex.c (expand_complex_div_straight,
592         expand_complex_div_wide): Update comments.
593
594 2009-09-24  DJ Delorie  <dj@redhat.com>
595
596         PR target/41456
597         * config/m32c/m32c.h (REG_CLASS_CONTENTS): Add R13.
598         (reg_class): Likewise.
599         (REG_CLASS_NAMES): Likewise.
600         * config/m32c/m32c.c (m32c_reg_class_from_constraint): Likewise.
601
602         * config/m32c/m32c.c (m32c_override_options): Disable -fivopts for
603         M32C.
604
605 2009-09-24  Michael Meissner  <meissner@linux.vnet.ibm.com>
606
607         * config/rs6000/predicates.md (indexed_or_indirect_operand):
608         Delete VSX load/store with update support.
609         * config/rs6000/rs6000.c (rs6000_legitimate_address_p): Ditto.
610         * config/rs6000/vsx.md (vsx_mov<mode>): Ditto.
611         (vsx_movti): Ditto.
612         (VSX_U): Delete.
613         (VSbit): Ditto.
614         (VStype_load_update): Ditto.
615         (VStype_store_update): Ditto.
616         (vsx_load<VSX_U:mode>_update_<P:mptrsize>): Ditto.
617         (vsx_store<VSX_U:mode>_update_<P:mptrsize>): Ditto.
618
619         * config/rs6000/rs6000.h (enum rs6000_builtins): Delete VSX
620         load/store with update builtins.
621
622 2009-09-24  Kai Tietz  <kai.tietz@onevision.com>
623
624         * libgcc2.c (L_trampoline): Prototype for getpagesize
625         and mprotect in WINNT case.
626
627 2009-09-24  Anatoly Sokolov  <aesok@post.ru>
628
629         * config/rs6000/rs6000.h (FUNCTION_VALUE): Remove macro.
630         * config/rs6000/rs6000-protos.h (rs6000_function_value): Remove.
631         * config/rs6000/rs6000.c (rs6000_function_value): Make static, add
632         'outgoing' argument.
633         (TARGET_FUNCTION_VALUE): Define.
634
635 2009-09-24  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
636
637         * config/darwin.h (DWARF2_DEBUGGING_INFO): Define as 1.
638
639 2009-09-24  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
640
641         PR bootstrap/41405
642         * common.opt: Initialize dwarf_strict to -1.
643         * toplev.c (process_options): Catch unset dwarf_strict
644         and set to 0 for all targets not overriding.
645         * config/darwin.c (darwin_override_options): Catch unset
646         dwarf_strict and override to 1.
647
648 2009-09-24  Jeff Law  <law@redhat.com>
649
650         * tree-into-ssa.c (rewrite_into_ssa): Free interesting_blocks.
651
652 2009-09-24  Richard Guenther  <rguenther@suse.de>
653
654         PR tree-optimization/36143
655         PR tree-optimization/38747
656         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Only
657         create VIEW_CONVERT_EXPRs for TBAA compatible accesses.
658
659 2009-09-24  Jakub Jelinek  <jakub@redhat.com>
660
661         PR bootstrap/41457
662         * dwarf2out.c (add_const_value_attribute): For HIGH and CONST_FIXED,
663         return false instead of gcc_unreachable ().  For CONST return the
664         value returned by recursive call instead of always returning true.
665         (tree_add_const_value_attribute): Return the value returned by
666         add_const_value_attribute instead of always returning true if rtl
667         is non-NULL.
668
669 2009-09-23  Justin Seyster  <jrseys@gmail.com>
670
671         * Makefile.in (PLUGIN_HEADERS): Include real.h.
672
673 2009-09-24  Jakub Jelinek  <jakub@redhat.com>
674
675         * cgraphunit.c (cgraph_lower_function): Revert last change.
676         * targhooks.c (default_static_chain): Use !DECL_STATIC_CHAIN
677         instead of DECL_NO_STATIC_CHAIN.
678         * tree-cfg.c (verify_gimple_call): Likewise.
679         * tree-nested.c (get_chain_decl, get_chain_field,
680         convert_tramp_reference_op, convert_gimple_call): Likewise.
681         (convert_all_function_calls): Likewise.  Always set or clear
682         DECL_STATIC_CHAIN initially, for !n->outer clear it.
683         (lower_nested_functions): Remove DECL_NO_STATIC_CHAIN checking code.
684         * c-parser.c (c_parser_declaration_or_fndef): Set DECL_STATIC_CHAIN
685         if nested.
686         * print-tree.c (print_node): Handle DECL_STATIC_CHAIN instead of
687         DECL_NO_STATIC_CHAIN.
688         * config/i386/i386.c (ix86_static_chain): Use !DECL_STATIC_CHAIN
689         instead of DECL_NO_STATIC_CHAIN.
690         (ix86_function_regparm, find_drap_reg): Likewise.  Don't test
691         decl_function_context.
692         * varasm.c (initializer_constant_valid_p): Likewise.
693         * tree.h (DECL_NO_STATIC_CHAIN): Renamed to ...
694         (DECL_STATIC_CHAIN): ... this.
695         * config/moxie/moxie.c (moxie_static_chain): Use !DECL_STATIC_CHAIN
696         instead of DECL_NO_STATIC_CHAIN.
697
698 2009-09-23  Basile Starynkevitch  <basile@starynkevitch.net>
699             Rafael Avila de Espindola  <espindola@google.com>
700
701         * gengtype.c (nb_plugin_files): Make it unsigned to match
702         num_gt_files. Adjust other variables to avoid warnings.
703         (main): Allocate an all zero lang_bitmap before each plugin file name
704         to match regular file names.
705
706 2009-09-23  Richard Henderson  <rth@redhat.com>
707
708         * doc/tm.texi (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Remove.
709         (TARGET_STATIC_CHAIN): Mention that this hook must be used for
710         static chain passed in memory.
711         * system.h (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Poison.
712         * targhooks.c (default_static_chain): Don't handle STATIC_CHAIN,
713         STATIC_CHAIN_INCOMING.  Issue a sorry if there's no
714         STATIC_CHAIN_REGNUM defined.
715
716         * config/picochip/picochip-protos.h: s/class/klass/.
717         * config/picochip/picochip.c (TARGET_STATIC_CHAIN): New.
718         (picochip_static_chain): New.
719         * config/picochip/picochip.h (STATIC_CHAIN): Remove.
720         (STATIC_CHAIN_INCOMING): Remove.
721
722         * config/xtensa/xtensa.c (TARGET_STATIC_CHAIN): New.
723         (xtensa_static_chain): New.
724         * config/xtensa/xtensa.h (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Remove.
725
726 2009-09-23  Anatoly Sokolov  <aesok@post.ru>
727
728         * config/pa/pa.h (FUNCTION_VALUE): Remove macro.
729         * config/pa/pa-protos.h (function_value): Remove.
730         * config/pa/pa.c (pa_function_value): Rename from function_value.
731         Make static, add 'outgoing' argument.
732         (TARGET_FUNCTION_VALUE): Define.
733
734 2009-09-23  Anatoly Sokolov  <aesok@post.ru>
735
736         * config/avr/avr.c (avr_regs_to_save): Use current_function_is_leaf
737         instead of cfun->machine->is_leaf.
738         * config/avr/avr.h (machine_function): Remove is_leaf field.
739
740 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
741
742         PR debug/41439
743         * dwarf2out.c (address_of_int_loc_descriptor): Don't emit
744         DW_OP_piece after DW_OP_stack_value, adjust size calculations
745         for it, when DW_OP_stack_value and DW_OP_implicit_value has
746         the same size, prefer DW_OP_stack_value.
747         (loc_descriptor, loc_list_for_address_of_addr_expr_of_indirect_ref,
748         loc_list_from_tree): Don't emit DW_OP_piece after DW_OP_stack_value.
749
750 2009-09-23  Alexandre Oliva  <aoliva@redhat.com>
751
752         PR debug/41353
753         * var-tracking.c (add_with_sets): Sort MO_VAL_LOC last among uses.
754
755 2009-09-23  Alexandre Oliva  <aoliva@redhat.com>
756
757         PR debug/41248
758         * cfgexpand.c (convert_debug_memory_address): New.
759         (expand_debug_expr): Convert base address and offset to the same
760         mode.  Use it to convert addresses to other modes.  Accept
761         ptr_mode addresses.
762
763 2009-09-23  Richard Guenther  <rguenther@suse.de>
764
765         * alias.c (ao_ref_from_mem): Correct for negative MEM_OFFSET
766         produced for bigendian targets with promoted subregs.
767
768 2009-09-23  Richard Guenther  <rguenther@suse.de>
769
770         * value-prof.c (gimple_ic): Purge old EH edges only after building
771         the new ones.
772
773 2009-09-23  Nick Clifton  <nickc@redhat.com>
774
775         * config/arc/arc.c (arc_trampoline_init): Fix typo.
776
777 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
778
779         PR bootstrap/41405
780         * doc/invoke.texi: Document -gstrict-dwarf and -gno-strict-dwarf.
781
782         PR bootstrap/41436
783         * cgraphunit.c (cgraph_lower_function): Set DECL_NO_STATIC_CHAIN
784         on non-nested functions.
785
786 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
787             Jan Hubicka  <jh@suse.cz>
788
789         * dwarf2out.c (loc_list_plus_const): Only define if
790         DWARF2_DEBUGGING_INFO.
791         (address_of_int_loc_descriptor): Likewise.
792
793         PR debug/41411
794         * dwarf2out.c (mem_loc_descriptor): Handle HIGH.
795
796 2009-09-23  Uros Bizjak  <ubizjak@gmail.com>
797
798         PR c/39779
799         * c-typeck.c (build_binary_op) <short_shift>: Check that integer
800         constant is more than zero.
801
802 2009-09-23  Alan Modra  <amodra@bigpond.net.au>
803
804         PR target/40473
805         * config/rs6000/rs6000.c (rs6000_output_function_prologue): Don't
806         call final to emit non-scheduled prologue, instead insert at entry.
807
808 2009-09-22  Loren J. Rittle  <ljrittle@acm.org>
809             Joseph S. Myers  <joseph@codesourcery.com>
810
811         * doc/install.texi (*-*-freebsd*): Add proper format codes.
812
813 2009-09-22  Basile Starynkevitch  <basile@starynkevitch.net>
814             Rafael Avila de Espindola  <espindola@google.com>
815
816         * gengtype.c (is_file_equal): New function.
817         (close_output_files): Use is_file_equal. Free of->buf.
818
819 2009-09-22  Basile Starynkevitch  <basile@starynkevitch.net>
820             Rafael Avila de Espindola  <espindola@google.com>
821
822         * gengtype.c (write_types, write_local): Add the output_header
823         argument. Update all callers.
824
825 2009-09-22  Dodji Seketeli  <dodji@redhat.com>
826
827         * dwarf2out.c (template_parameter_pack_die,
828         gen_formal_parameter_pack_die ): New functions.
829         (make_ith_pack_parameter_name): Remove this function.
830         (dwarf_tag_name): Support printing DW_TAG_template_parameter_pack and
831         DW_TAG_formal_parameter_pack.
832         (gen_generic_params_dies): Represent each template parameter pack
833         by a DW_TAG_template_parameter_pack DIE. Argument pack elements are
834         represented by usual DW_TAG_template_*_parameter DIEs that are
835         children of the DW_TAG_template_parameter_pack element DIE.
836         (generic_parameter_die): This doesn't deal with parameter pack
837         names anymore. Don't generate DW_AT_name for some DIEs, e.g. children
838         of parameter pack DIEs.
839         (gen_formal_parameter_die): Add a flag to not emit DW_AT_name
840         in certain cases, e.g. for pack elements.
841         (gen_formal_types_die, gen_decl_die): Adjust usage of
842         gen_formal_parameter_die.
843         (gen_subprogram_die): Represent each function parameter pack by a
844         DW_TAG_formal_parameter_pack DIE. Arguments of of the pack are
845         represented by usual DW_TAG_formal_parameter DIEs that are children
846         of the DW_TAG_formal_parameter_pack DIE. Remove references to
847         ____builtin_va_alist decls as no part of the compiler uses those
848         anymore.
849         * langhooks.h (struct lang_hooks_for_decls): Add
850         function_parm_expanded_from_pack_p, get_generic_function_decl
851         and function_parameter_pack_p hooks.  Fix comment for
852         get_innermost_generic_parms hook.
853         * langhooks-def.h (LANG_HOOKS_FUNCTION_PARAMETER_PACK_P,
854         LANG_HOOKS_FUNCTION_PARM_EXPANDED_FROM_PACK_P ): Declare new hook
855         macros and use them to initialize lang_hook.
856
857 2009-09-22  Richard Henderson  <rth@redhat.com>
858
859         * system.h (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE): Poison.
860         (TRAMPOLINE_ADJUST_ADDRESS): Poison.
861         * target-def.h (TARGET_ASM_TRAMPOLINE_TEMPLATE): Don't conditionalize
862         on TRAMPOLINE_TEMPLATE.
863         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): Don't conditionalize on
864         TRAMPOLINE_ADJUST_ADDRESS.
865         * targhooks.c (default_asm_trampoline_template): Remove.
866         (default_trampoline_adjust_address): Remove.
867         (default_trampoline_init): Don't handle INITIALIZE_TRAMPOLINE.
868         * targhooks.h: Update decls.
869
870 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
871
872         * config/i386/cygming.h (TARGET_USE_JCR_SECTION): Enable.
873         * config/i386/cygwin.h (LIBGCJ_SONAME): Define.
874         * config/i386/mingw32.h (LIBGCJ_SONAME): Likewise.
875
876 2009-09-22  Alexandre Oliva  <aoliva@redhat.com>
877
878         PR debug/41295
879         * reload1.c (reload): Reset debug insns with pseudos without
880         equivalences.
881
882 2009-09-22  Janis Johnson  <janis187@us.ibm.com>
883
884         * config/i386/i386.c (ix86_scalar_mode_supported_p): Don't return
885         unconditional true for decimal float modes.
886         * config/rs6000/rs6000.c (rs6000_scalar_mode_supported_p): Ditto.
887         * config/s390/s390.c (s390_scalar_mode_supported_p): Ditto.
888
889 2009-09-22  Loren J. Rittle  <ljrittle@acm.org>
890
891         * unwind-dw2-fde-glibc.c: Define and use USE_PT_GNU_EH_FRAME.
892         Enable a new case for __FreeBSD__ >= 7.
893         * crtstuff.c:  Define USE_PT_GNU_EH_FRAME for __FreeBSD__ >= 7.
894         * config/t-freebsd: Define LIB2ADDEH and LIB2ADDEHDEP.
895         * config/freebsd-spec.h: Conditionally define LINK_EH_SPEC
896         and USE_LD_AS_NEEDED.
897
898         * doc/install.texi (*-*-freebsd*): Update target information.
899
900 2009-09-22  Richard Guenther  <rguenther@suse.de>
901
902         PR middle-end/41395
903         * tree-dfa.c (get_ref_base_and_extent): Handle trailing
904         arrays really properly.
905
906 2009-09-22  Richard Henderson  <rth@redhat.com>
907
908         PR target/41246
909         * target.h (struct gcc_target): Add asm_out.trampoline_template,
910         calls.static_chain, calls.trampoline_init,
911         calls.trampoline_adjust_address.
912         * target-def.h (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
913         (TARGET_STATIC_CHAIN, TARGET_TRAMPOLINE_INIT): New.
914         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
915         * builtins.c (expand_builtin_setjmp_receiver): Use
916         targetm.calls.static_chain; only clobber registers.
917         (expand_builtin_init_trampoline): Use targetm.calls.trampoline_init;
918         set up memory attributes properly for the trampoline block.
919         (expand_builtin_adjust_trampoline): Use
920         targetm.calls.trampoline_adjust_address.
921         * calls.c (prepare_call_address): Add fndecl argument.  Use
922         targetm.calls.static_chain.
923         * df-scan.c (df_need_static_chain_reg): Remove.
924         (df_get_entry_block_def_set): Use targetm.calls.static_chain;
925         consolodate static chain handling.
926         * doc/tm.texi: Document new hooks.
927         * emit-rtl.c (static_chain_rtx, static_chain_incoming_rtx): Remove.
928         (init_emit_regs): Don't initialize them.
929         * expr.h (prepare_call_address): Update decl.
930         * final.c (profile_function): Use targetm.calls.static_chain.
931         * function.c (expand_function_start): Likewise.
932         * rtl.h (static_chain_rtx, static_chain_incoming_rtx): Remove.
933         * stmt.c (expand_nl_goto_receiver): Use targetm.calls.static_chain;
934         only clobber registers.
935         * targhooks.c (default_static_chain): New.
936         (default_asm_trampoline_template, default_trampoline_init): New.
937         (default_trampoline_adjust_address): New.
938         * targhooks.h: Declare them.
939         * varasm.c (assemble_trampoline_template): Use
940         targetm.asm_out.trampoline_template.  Make the memory block const
941         and set its size.
942
943         * config/alpha/alpha.c (alpha_trampoline_init): Rename from
944         alpha_initialize_trampoline.  Make static.  Merge VMS parameter
945         differences into the TARGET_ABI_OPEN_VMS code block.
946         (TARGET_TRAMPOLINE_INIT): New.
947         * config/alpha/alpha.h (TRAMPOLINE_TEMPLATE): Remove.
948         (TRAMPOLINE_SECTION, INITIALIZE_TRAMPOLINE): Remove.
949         * config/alpha/vms.h (TRAMPOLINE_SIZE, TRAMPOLINE_ALIGNMENT): Remove.
950         (INITIALIZE_TRAMPOLINE): Remove.
951
952         * config/arc/arc.h (TRAMPOLINE_ALIGNMENT): New.
953         (TRAMPOLINE_TEMPLATE): Merge with ...
954         (INITIALIZE_TRAMPOLINE): ... this and move ...
955         * config/arc/arc.c (arc_trampoline_init): ... here.
956         (TARGET_TRAMPOLINE_INIT): New.
957
958         * config/arm/arm.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
959         (TARGET_TRAMPOLINE_INIT, TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
960         (arm_asm_trampoline_template): New.
961         (arm_trampoline_init, arm_trampoline_adjust_address): New.
962         * config/arm/arm.h (TRAMPOLINE_TEMPLATE, ARM_TRAMPOLINE_TEMPLATE,
963         THUMB2_TRAMPOLINE_TEMPLATE, THUMB1_TRAMPOLINE_TEMPLATE): Move all
964         code to arm_asm_trampoline_template.
965         (TRAMPOLINE_ADJUST_ADDRESS): Move code to
966         arm_trampoline_adjust_address.
967         (INITIALIZE_TRAMPOLINE): Move code to arm_trampoline_init;
968         adjust for target hook parameters.
969
970         * config/avr/avr.h (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE):
971         Remove.
972
973         * config/bfin/bfin-protos.h (initialize_trampoline): Remove.
974         * config/bfin/bfin.c (bfin_asm_trampoline_template): New.
975         (bfin_trampoline_init): Rename from initialize_trampoline;
976         make static; update for target hook parameters.
977         (TARGET_ASM_TRAMPOLINE_TEMPLATE, TARGET_TRAMPOLINE_INIT): New.
978         * config/bfin/bfin.h (TRAMPOLINE_TEMPLATE): Move code to
979         bfin_asm_trampoline_template.
980         (INITIALIZE_TRAMPOLINE): Remove.
981
982         * config/cris/cris.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
983         TARGET_TRAMPOLINE_INIT, cris_asm_trampoline_template,
984         cris_trampoline_init): New.
985         * config/cris/cris.h (TRAMPOLINE_TEMPLATE): Move code to
986         cris_asm_trampoline_template.
987         (INITIALIZE_TRAMPOLINE): Move code to cris_trampoline_init;
988         adjust for target hook parameters.
989
990         * config/crx/crx.h (INITIALIZE_TRAMPOLINE): Remove.
991
992         * config/fr30/fr30.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
993         TARGET_TRAMPOLINE_INIT, fr30_asm_trampoline_template,
994         fr30_trampoline_init): New.
995         * config/fr30/fr30.h (TRAMPOLINE_TEMPLATE): Move code to
996         fr30_asm_trampoline_template.
997         (INITIALIZE_TRAMPOLINE): Move code to fr30_trampoline_init;
998         adjust for target hook parameters.
999
1000         * config/frv/frv.c (TARGET_TRAMPOLINE_INIT): New.
1001         (frv_trampoline_init): Rename from frv_initialize_trampoline;
1002         make static, adjust arguments for TARGET_TRAMPOLINE_INIT hook.
1003         * config/frv/frv.h (INITIALIZE_TRAMPOLINE): Remove.
1004         * config/frv/frv-protos.h (frv_initialize_trampoline): Remove.
1005
1006         * config/h8300/h8300.c (h8300_trampoline_init): New.
1007         (TARGET_TRAMPOLINE_INIT): New.
1008         * config/h8300/h8300.h (INITIALIZE_TRAMPOLINE): Move code
1009         to h8300_trampoline_init and adjust for hook parameters.
1010
1011         * config/ia64/ia64-protos.h (ia64_initialize_trampoline): Remove.
1012         * config/ia64/ia64.c (TARGET_TRAMPOLINE_INIT): New.
1013         (ia64_trampoline_init): Rename from ia64_initialize_trampoline;
1014         make static; adjust for hook parameters.
1015         * config/ia64/ia64.h (INITIALIZE_TRAMPOLINE): Remove.
1016
1017         * config/iq2000/iq2000.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
1018         (TARGET_TRAMPOLINE_INIT): New.
1019         (iq2000_asm_trampoline_template, iq2000_trampoline_init): New.
1020         * config/iq2000/iq2000.h (TRAMPOLINE_TEMPLATE): Move code to
1021         iq2000_asm_trampoline_template.
1022         (INITIALIZE_TRAMPOLINE): Move code to iq2000_trampoline_init.
1023         (TRAMPOLINE_CODE_SIZE): New.
1024         (TRAMPOLINE_SIZE): Use it.
1025         (TRAMPOLINE_ALIGNMENT): Follow Pmode.
1026
1027         * config/m32c/m32c-protos.h (m32c_initialize_trampoline): Remove.
1028         * config/m32c/m32c.c (TARGET_TRAMPOLINE_INIT): New.
1029         (m32c_trampoline_init): Rename from m32c_initialize_trampoline;
1030         adjust for hook parameters.
1031         * config/m32c/m32c.h (INITIALIZE_TRAMPOLINE): Remove.
1032
1033         * config/m32r/m32r.c (TARGET_TRAMPOLINE_INIT): New.
1034         (m32r_trampoline_init): New.
1035         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Move code to
1036         m32r_trampoline_init.
1037
1038         * config/m68hc11/m68hc11.c (TARGET_TRAMPOLINE_INIT): New.
1039         (m68hc11_trampoline_init): Rename from m68hc11_initialize_trampoline;
1040         make static; update for hook parameters.
1041         * config/m68hc11/m68hc11-protos.h: Update.
1042         * config/m68hc11/m68hc11.h (INITIALIZE_TRAMPOLINE): Remove.
1043
1044         * config/mcore/mcore.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
1045         (TARGET_TRAMPOLINE_INIT): New.
1046         (mcore_function_value): Fix typo.
1047         (mcore_asm_trampoline_template, mcore_trampoline_init): New.
1048         * config/mcore/mcore.h (TRAMPOLINE_TEMPLATE): Move code
1049         to mcore_asm_trampoline_template.
1050         (INITIALIZE_TRAMPOLINE): Move code to mcore_trampoline_init.
1051
1052         * config/mep/mep.h (INITIALIZE_TRAMPOLINE): Remove.
1053         * config/mep/mep.c (TARGET_TRAMPOLINE_INIT): New.
1054         (mep_trampoline_init): Rename from mep_init_trampoline; make static;
1055         update for hook parameters.
1056         * config/mep/mep-protos.h (mep_init_trampoline): Remove.
1057
1058         * config/mips/mips.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
1059         mips_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
1060         mips_trampoline_init): New.
1061         * config/mips/mips.h (TRAMPOLINE_TEMPLATE): Move code to
1062         mips_asm_trampoline_template.
1063         (INITIALIZE_TRAMPOLINE): Move code to mips_trampoline_init;
1064         update for hook parameters.
1065
1066         * gcc/config/mmix/mmix.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
1067         (TARGET_TRAMPOLINE_INIT): New.
1068         (mmix_trampoline_size): Remove.
1069         (mmix_asm_trampoline_template): Rename from mmix_trampoline_template;
1070         make static.  Remove out-of-date tetra vs octa comment.
1071         (mmix_trampoline_init): Rename from mmix_initialize_trampoline;
1072         make static; update for hook parameters.
1073         * config/mmix/mmix.h (TRAMPOLINE_TEMPLATE): Remove.
1074         (INITIALIZE_TRAMPOLINE): Remove.
1075         (TRAMPOLINE_SIZE): Use a constant instead of mmix_trampoline_size.
1076         (TRAMPOLINE_ALIGNMENT): New.
1077         * gcc/config/mmix/mmix-protos.h: Update.
1078
1079         * config/mn10300/mn10300.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
1080         mn10300_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
1081         mn10300_trampoline_init): New.
1082         * config/mn10300/mn10300.h (TRAMPOLINE_TEMPLATE): Move code to
1083         mn10300_asm_trampoline_template.
1084         (INITIALIZE_TRAMPOLINE): Move code to mn10300_trampoline_init.
1085
1086         * config/moxie/moxie.c (moxie_static_chain,
1087         moxie_asm_trampoline_template, moxie_trampoline_init,
1088         TARGET_STATIC_CHAIN, TARGET_ASM_TRAMPOLINE_TEMPLATE,
1089         TARGET_TRAMPOLINE_INIT): New.
1090         * config/moxie/moxie.h (INITIALIZE_TRAMPOLINE): Move code to
1091         moxie_trampoline_init.
1092         (TRAMPOLINE_TEMPLATE): Move code to moxie_asm_trampoline_template.
1093         (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Remove.
1094
1095         * gcc/config/pa/pa.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
1096         pa_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
1097         pa_trampoline_init, TARGET_TRAMPOLINE_ADJUST_ADDRESS,
1098         pa_trampoline_adjust_address): New.
1099         * config/pa/pa.h (TRAMPOLINE_TEMPLATE): Move code to
1100         pa_asm_trampoline_template.
1101         (TRAMPOLINE_ALIGNMENT): New.
1102         (TRAMPOLINE_CODE_SIZE): Move to pa.c.
1103         (INITIALIZE_TRAMPOLINE): Move code to pa_trampoline_init;
1104         adjust for hook parameters.
1105         (TRAMPOLINE_ADJUST_ADDRESS): Move code to pa_trampoline_adjust_address.
1106
1107         * config/pdp11/pdp11.c (pdp11_trampoline_init): New.
1108         (TARGET_TRAMPOLINE_INIT): New.
1109         * config/pdp11/pdp11.h (TRAMPOLINE_TEMPLATE): Remove.
1110         (INITIALIZE_TRAMPOLINE): Move code to pdp11_trampoline_init.
1111
1112         * config/picochip/picochip.h (INITIALIZE_TRAMPOLINE): Remove.
1113
1114         * config/rs6000/rs6000-protos.h (rs6000_initialize_trampoline): Remove.
1115         * config/rs6000/rs6000.c (TARGET_TRAMPOLINE_INIT): New.
1116         (rs6000_trampoline_init): Rename from rs6000_initialize_trampoline;
1117         make static; adjust parameters for the hook.
1118         * config/rs6000/rs6000.h (INITIALIZE_TRAMPOLINE): Remove.
1119
1120         * config/s390/s390.c (s390_asm_trampoline_template): Rename from
1121         s390_trampoline_template; make static.
1122         (s390_trampoline_init): Rename from s390_initialize_trampoline;
1123         make static; adjust for target hook.
1124         (TARGET_ASM_TRAMPOLINE_TEMPLATE, TARGET_TRAMPOLINE_INIT): New.
1125         * config/s390/s390-protos.h: Remove trampoline decls.
1126         * config/s390/s390.h (INITIALIZE_TRAMPOLINE): Remove.
1127         (TRAMPOLINE_TEMPLATE): Remove.
1128         (TRAMPOLINE_ALIGNMENT): New.
1129
1130         * config/score/score-protos.h (score_initialize_trampoline): Remove.
1131         * config/score/score.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
1132         (TARGET_TRAMPOLINE_INIT): New.
1133         (score_asm_trampoline_template): New.
1134         (score_trampoline_init): Rename from score_initialize_trampoline;
1135         make static; adjust for hook parameters.
1136         * config/score/score.h (TRAMPOLINE_TEMPLATE): Move code to
1137         score[37]_asm_trampoline_template.
1138         (INITIALIZE_TRAMPOLINE): Remove.
1139         * config/score/score3.c (score3_asm_trampoline_template): New.
1140         (score3_trampoline_init): Rename from score3_initialize_trampoline;
1141         adjust for target hook.
1142         * config/score/score7.c (score7_asm_trampoline_template): New.
1143         (score7_trampoline_init): Rename from score7_initialize_trampoline;
1144         adjust for target hook.
1145         * config/score/score3.h, config/score/score7.h: Update.
1146
1147         * config/sh/sh-protos.h (sh_initialize_trampoline): Remove.
1148         * config/sh/sh.c (TARGET_TRAMPOLINE_INIT): New.
1149         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
1150         (sh_trampoline_init): Rename from sh_initialize_trampoline;
1151         make static; adjust for target hook parameters.
1152         (sh_trampoline_adjust_address): New.
1153         * config/sh/sh.h (INITIALIZE_TRAMPOLINE): New.
1154         (TRAMPOLINE_ADJUST_ADDRESS): Move code to sh_trampoline_adjust_address.
1155
1156         * config/sparc/sparc.c (TARGET_TRAMPOLINE_INIT): New.
1157         (sparc32_initialize_trampoline): Rename from
1158         sparc_initialize_trampoline; make static; replace tramp parameter
1159         with m_tramp and update memory accesses.
1160         (sparc64_initialize_trampoline): Similarly.
1161         (sparc_trampoline_init): New.
1162         * config/sparc/sparc-protos.h: Remove trampoline decls.
1163         * config/sparc/sparc.h (INITIALIZE_TRAMPOLINE): Remove.
1164         * config/sparc/sparc.md (nonlocal_goto): Don't use static_chain_rtx.
1165
1166         * config/spu/spu.c (TARGET_TRAMPOLINE_INIT): New.
1167         (array_to_constant): Make ARR parameter const.
1168         (spu_trampoline_init): Rename from spu_initialize_trampoline;
1169         make static; update for hook parameters.
1170         * config/spu/spu-protos.h: Update decls.
1171         * config/spu/spu.h (INITIALIZE_TRAMPOLINE): Remove.
1172
1173         * config/stormy16/stormy16.c (xstormy16_trampoline_init): Rename
1174         from xstormy16_initialize_trampoline; make static; update for
1175         hook parameters.
1176         (TARGET_TRAMPOLINE_INIT): New.
1177         * config/stormy16/stormy16.h (INITIALIZE_TRAMPOLINE): Remove.
1178
1179         * config/v850/v850.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
1180         (TARGET_TRAMPOLINE_INIT): New.
1181         (v850_can_eliminate): Make static.
1182         (v850_asm_trampoline_template, v850_trampoline_init): New.
1183         * config/v850/v850.h (TRAMPOLINE_TEMPLATE): Move code to
1184         v850_asm_trampoline_template.
1185         (INITIALIZE_TRAMPOLINE): Move code to v850_trampoline_init
1186         and adjust for target hook parameters.
1187
1188         * config/vax/vax.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
1189         (TARGET_TRAMPOLINE_INIT): New.
1190         (vax_asm_trampoline_template, vax_trampoline_init): New.
1191         * config/vax/vax.h (TRAMPOLINE_TEMPLATE): Move code to
1192         vax_asm_trampoline_template.
1193         (INITIALIZE_TRAMPOLINE): Move code to vax_trampoline_init.
1194
1195         * config/xtensa/xtensa.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
1196         (TARGET_TRAMPOLINE_INIT): New.
1197         (xtensa_asm_trampoline_template): Rename from
1198         xtensa_trampoline_template; make static.
1199         (xtensa_trampoline_init): Rename from xtensa_initialize_trampoline;
1200         make static; update for hook parameters.
1201         * config/xtensa/xtensa-protos.h: Remove trampoline decls.
1202         * config/xtensa/xtensa.h (TRAMPOLINE_TEMPLATE): Remove.
1203         (INITIALIZE_TRAMPOLINE): Remove.
1204
1205         * config/i386/i386.c (ix86_function_regparm): Do not issue an
1206         error for nested functions with regparm=3.
1207         (ix86_compute_frame_layout): Adjust frame pointer offset for
1208         ix86_static_chain_on_stack.
1209         (ix86_expand_prologue): Handle ix86_static_chain_on_stack.
1210         (ix86_emit_restore_reg_using_pop): Increment ix86_cfa_state->offset,
1211         don't reset to UNITS_PER_WORD.
1212         (ix86_emit_leave): Adjust ix86_cfa_state.
1213         (ix86_expand_epilogue): Handle ix86_static_chain_on_stack.
1214         (ix86_static_chain): New.
1215         (ix86_trampoline_init): Rename from x86_initialize_trampoline;
1216         make static; update for target hook parameters; use ix86_static_chain.
1217         (TARGET_STATIC_CHAIN, TARGET_TRAMPOLINE_INIT): New.
1218         * config/i386/i386.h (STATIC_CHAIN_REGNUM): Remove.
1219         (INITIALIZE_TRAMPOLINE): Remove.
1220         (TRAMPOLINE_SIZE): Use 24 for 64-bit.
1221         (struct machine_function): Use BOOL_BITFIELD; rearrange bitfields
1222         to the end.  Add static_chain_on_stack.
1223         (ix86_static_chain_on_stack): New.
1224
1225         * config/m68k/m68k.c (TARGET_TRAMPOLINE_INIT): New.
1226         (m68k_output_mi_thunk): Don't use static_chain_rtx.
1227         (m68k_trampoline_init): New.
1228         * config/m68k/m68k.h (INITIALIZE_TRAMPOLINE): Move code to
1229         m68k_trampoline_init and adjust for hook parameters.
1230         * config/m68k/netbsd-elf.h (TRAMPOLINE_TEMPLATE): Remove.
1231         (TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE): Remove.
1232
1233 2009-09-22  Jakub Jelinek  <jakub@redhat.com>
1234
1235         * config/rs6000/rs6000.c (bdesc_2arg): Fix CODE_FOR_vector_gt* codes
1236         for __builtin_altivec_vcmpgt{sb,uh,sh,uw}.
1237
1238         * reload1.c (reload): Call wrap_constant when substituting
1239         reg for equiv inside of DEBUG_INSNs.
1240
1241         PR bootstrap/41405
1242         * dwarf2out.c (base_type_die, record_type_tag, gen_subprogram_die,
1243         add_call_src_coords_attributes, add_high_low_attributes,
1244         gen_compile_unit_die, gen_type_die_with_usage force_decl_die,
1245         gen_decl_die, dwarf2out_imported_module_or_decl_1, dwarf2out_finish,
1246         dwarf2out_imported_module_or_decl): Avoid using DWARF3 additions
1247         when -gdwarf-2 -gstrict-dwarf.
1248         (loc_list_from_tree): Likewise.  Avoid using DWARF4 additions when
1249         -gdwarf-[23] -gstrict-dwarf.
1250         (address_of_int_loc_descriptor, loc_descriptor,
1251         loc_list_for_address_of_addr_expr_of_indirect_ref): Avoid using
1252         DWARF4 additions when -gdwarf-[23] -gstrict-dwarf.
1253         * common.opt (gno-strict-dwarf, gstrict-dwarf): New options.
1254
1255 2009-09-22  Richard Guenther  <rguenther@suse.de>
1256
1257         PR tree-optimization/41428
1258         * tree-ssa-ccp.c (ccp_fold_stmt): New function.
1259         (ccp_finalize): Pass it to substitute_and_fold.
1260
1261 2009-09-22  Richard Guenther  <rguenther@suse.de>
1262
1263         * tree-ssa-propagate.h (ssa_prop_fold_stmt_fn): Declare.
1264         (substitute_and_fold): Adjust prototype.
1265         * tree-vrp.c (vrp_evaluate_conditional): Make static.
1266         (simplify_stmt_using_ranges): Likewise.
1267         (fold_predicate_in): Move here from tree-ssa-propagate.c.
1268         (vrp_fold_stmt): New function.
1269         (vrp_finalize): Pass it to substitute_and_fold.
1270         * tree-flow.h (vrp_evaluate_conditional): Remove.
1271         (simplify_stmt_using_ranges): Likewise.
1272         * tree-ssa-ccp.c (ccp_finalize): Adjust call to substitute_and_fold.
1273         * tree-ssa-copy.c (fini_copy_prop): Likewise.
1274         * tree-ssa-propagate.c (struct prop_stats_d): Rename num_pred_folded
1275         member.
1276         (fold_predicate_in): Move to tree-vrp.c.
1277         (substitute_and_fold): Use the callback instead of calling into
1278         tree-vrp.c functions directly.
1279
1280 2009-09-22  Jakub Jelinek  <jakub@redhat.com>
1281
1282         * dwarf2out.c (address_of_int_loc_descriptor): Avoid signed/unsigned
1283         comparison warning on rs6000.
1284
1285         PR middle-end/41429
1286         * tree-cfg.c (remove_useless_stmts_tc): Call gsi_next (gsi) even for
1287         GIMPLE_EH_MUST_NOT_THROW cleanup.
1288         (verify_types_in_gimple_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.
1289
1290 2009-09-22  Jack Howarth  <howarth@bromo.med.uc.edu>
1291
1292         PR middle-end/41260
1293         * gcc/config.gcc: Use darwin9.h and darwin10.h on darwin10 and later.
1294         * gcc/config/darwin10.h: Add file to pass -no_compact_unwind on
1295         LIB_SPEC for darwin10 and later since it always uses the unwinder in
1296         libSystem which is derived from the gcc 4.2.1 unwinder.
1297
1298 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
1299
1300         PR middle-end/41357
1301         * varasm.c (default_encode_section_info): Copy TLS model into
1302         sym_ref flags regardless of backend support for TLS, for all
1303         model types except TLS_MODEL_EMULATED.
1304
1305 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
1306
1307         PR bootstrap/41404
1308         * dwarf2out.c (mem_loc_descriptor): Punt on CONST_STRING until
1309         we can handle it correctly.
1310
1311 2009-09-21  Gerald Pfeifer  <gerald@pfeifer.com>
1312
1313         * doc/install.texi (os2): Remove section.
1314
1315 2009-09-21  Gerald Pfeifer  <gerald@pfeifer.com>
1316
1317         * doc/standards.texi (Objective-C): Adjust two URLs.
1318
1319 2009-09-21  Giuseppe Scrivano <gscrivano@gnu.org>
1320
1321         * tree-tailcall.c (process_assignment): Don't check if a
1322         multiplication or an addition are already present.
1323         (find_tail_calls): Combine multiple additions and multiplications.
1324         (adjust_accumulator_values): Emit accumulators.
1325
1326 2009-09-21  Kai Tietz  <kai.tietz@onevision.com>
1327
1328         * config/i386/i386.c (ix86_expand_epilogue): Adjust offset for
1329         xmm register restore.
1330
1331 2009-09-21  Jan Hubicka  <jh@suse.cz>
1332
1333         * dwarf2out.c (decl_loc_table_eq): Allow decl_loc_table to be NULL.
1334         (dwarf2out_abstract_function): NULLify decl_loc_table at begginig and
1335         restore at the end.
1336
1337 2009-09-21  Eric Botcazou  <ebotcazou@adacore.com>
1338
1339         * stor-layout.c (layout_type): Remove obsolete code.
1340
1341 2009-09-20  H.J. Lu  <hongjiu.lu@intel.com>
1342
1343         PR middle-end/41395
1344         * opts.c (decode_options): Don't turn on flag_ipa_sra for opt2.
1345
1346 2009-09-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1347
1348         PR middle-end/30789
1349         * builtins.c (do_mpc_arg2): Accept DO_NONFINITE parameter.
1350         (do_mpc_ckconv): Accept FORCE_CONVERT parameter.
1351         (fold_builtin_2, do_mpc_arg1): Update accordingly.
1352         * fold-const.c (const_binop): Likewise.
1353         * real.h (do_mpc_arg2): Update prototype.
1354
1355 2009-09-20  Jan Hubicka  <jh@suse.cz>
1356
1357         * dwarf2out.c (add_const_value_attribute): Return true if successful.
1358         (add_location_or_const_value_attribute): Rewrite using
1359         loc_list_from_tree.
1360         (tree_add_const_value_attribute): Return true if successful.
1361         (tree_add_const_value_attribute_for_decl): Likewise.
1362
1363         * dwarf2out.c (address_of_int_loc_descriptor): Break out from ...
1364         (loc_descriptor): ... here;
1365         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
1366         (cst_pool_loc_descr): Break out from ...; do not reffer constant
1367         pool items that was not marked for output.
1368         (loc_list_from_tree): ... here; handle special cases of ADDR_EXPR;
1369         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
1370         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
1371         handle ALIGN_INDIRECT_REF, MISALIGNED_INDIRECT_REF, REALPART_EXPR,
1372         IMAGPART_EXPR; handle address of INTEGER_CST; improve handling of
1373         CONSTRUCTOR; handle REAL_CST, STRING_CST, COMPLEX_CST; use
1374         DW_OP_stack_value to get address of items that are not available
1375         as addresses.
1376         (dw_loc_list): Handle single element lists correctly.
1377
1378 2009-09-20  Kai Tietz  <kai.tietz@onevision.com>
1379             Pascal Obry  <obry@adacore.com>
1380
1381         * unwind-dw2-fde.c (classify_object_over_fdes):
1382         Cast the constant 1 to _Unwind_Ptr.
1383         (add_fdes): Likewise.
1384         (linear_search_fdes): Likewise.
1385
1386 2009-09-20  Eric Botcazou  <ebotcazou@adacore.com>
1387
1388         * stor-layout.c (set_sizetype): Avoid useless type copy.
1389
1390 2009-09-20  Richard Sandiford  <rdsandiford@googlemail.com>
1391
1392         * configure.ac (gcc_cv_ld_mips_personality_relaxation): New
1393         feature check.
1394         (HAVE_LD_PERSONALITY_RELAXATION): New macro definition.
1395         * configure, config.in: Regenerate.
1396         * dwarf2asm.c (eh_data_format_name): Handle DW_EH_PE_indirect |
1397         DW_EH_PE_absptr.
1398         * config/mips/mips.h (TARGET_WRITABLE_EH_FRAME): New macro.
1399         (ASM_PREFERRED_EH_DATA_FORMAT): Define.  Use MIPS_EH_INDIRECT
1400         for global data if the output could be used in a shared library.
1401         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
1402         to 0 if TARGET_WRITABLE_EH_FRAME.
1403
1404 2009-09-20  Paolo Bonzini <bonzini@gnu.org>
1405
1406         PR rtl-optimization/39886
1407         * combine.c (update_cfg_for_uncondjump): Set EDGE_FALLTHRU
1408         just when insn is equal to BB_END (bb).
1409
1410 2009-09-19  Adam Nemet  <anemet@caviumnetworks.com>
1411
1412         * config/mips/mips.opt (mrelax-pic-calls): New option.
1413         * config/mips/mips.c (mips_strip_unspec_address): Move it up in
1414         the file.
1415         (mips_unspec_call): Change "unspec_call" expander into this.
1416         (mips_strip_unspec_call): New function.
1417         (mips_got_load): Call mips_unspec_call instead of
1418         gen_unspec_call<mode>.
1419         (mips16_build_call_stub): Fix comment for fp_code.  Adjust call to
1420         MIPS_CALL.
1421         (mips_cfg_in_reorg): New function.
1422         (mips16_lay_out_constants): Use it to decide whether to call
1423         CFG-aware insn splitting.
1424         (r10k_insert_cache_barriers): Move CFG set-up code from here to
1425         mips_reorg.  Move DF set-up code from here ...
1426         (mips_df_reorg): ... to here.  Call r10k_insert_cache_barriers
1427         from here.
1428         (mips_reorg): Call mips_df_reorg instead of
1429         r10k_insert_cache_barriers.  Move CFG set-up code here from
1430         r10k_insert_cache_barriers.
1431         (mips_call_expr_from_insn): New function.
1432         (mips_pic_call_symbol_from_set): Likewise.
1433         (mips_find_pic_call_symbol): Likewise.
1434         (mips_annotate_pic_call_expr): Likewise.
1435         (mips_get_pic_call_symbol): Likewise.
1436         (mips_annotate_pic_calls): Likewise.
1437         (mips_override_options): Disable -mrelax-pic-calls unless PIC
1438         calls are used.
1439         (mips_set_mips16_mode): Disable -mrelax-pic-calls for MIPS16.
1440         * config/mips/mips-protos.h (mips_get_pic_call_symbol): Declare it.
1441         * config/mips/mips.h (MIPS_CALL): Use it to print the .reloc
1442         directive.
1443         * config/mips/mips.md (UNSPEC_CALL_ATTR): New unspec.
1444         (unspec_call<mode>): Remove it.
1445         (sibcall_internal, sibcall_value_internal,
1446         sibcall_value_multiple_internal, call_internal, call_split,
1447         call_value_internal, call_value_split,
1448         call_value_multiple_internal, call_value_multiple_split): Pass
1449         SIZE_OPNO to MIPS_CALL.
1450         (call_internal_direct, call_direct_split,
1451         call_value_internal_direct, call_value_direct_split): Pass -1 as
1452         SIZE_OPNO to MIPS_CALL.
1453         * configure.ac <mips*-*-*>: Add test for .reloc R_MIPS_JALR.
1454         * configure: Regenerate.
1455         * doc/invoke.texi (Option Summary): Add -mrelax-pic-calls
1456         and -mno-relax-pic-calls.
1457         (MIPS Options): Document -mrelax-pic-calls and -mno-relax-pic-calls.
1458
1459 2009-09-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
1460
1461         PR bootstrap/35619
1462         * Makefile.in (stmp-fixinc): Ensure `include-fixed' is created
1463         in the directory this rule is called from, rather than the
1464         toplevel 'gcc' directory, to fix in-tree build.
1465
1466 2009-09-19  Chris Demetriou  <cgd@google.com>
1467
1468         PR preprocessor/28435:
1469         * c-opts.c (c_common_handle_option): For -MD and -MMD, indicate
1470         to cpplib that the preprocessor output is needed.
1471
1472 2009-09-19  Jakub Jelinek  <jakub@redhat.com>
1473
1474         * config/rs6000/rs6000.md (*save_gpregs_<mode>, *save_fpregs_<mode>,
1475         *restore_gpregs_<mode>, *return_and_restore_gpregs_<mode>,
1476         *return_and_restore_fpregs_<mode>,
1477         *return_and_restore_fpregs_aix_<mode>): Remove 'z' operand modifier.
1478
1479         PR bootstrap/41397
1480         * dwarf2out.c (mem_loc_descriptor) <case SUBREG>: Recurse
1481         instead of assuming it has always a REG inside of it.
1482
1483 2009-09-18  Gerald Pfeifer  <gerald@pfeifer.com>
1484
1485         * config/freebsd.h: Update comment on types.
1486         (WINT_TYPE): Define.
1487
1488 2009-09-18  Jason Merrill  <jason@redhat.com>
1489
1490         * c.opt: Add -fno-deduce-init-list.
1491
1492 2009-09-18  Neil Vachharajani  <nvachhar@google.com>
1493
1494         * value-prof.c (interesting_stringop_to_profile_p): Added output
1495         argument to indicate which parameter is the size parameter.
1496         * value-prof.c (gimple_stringop_fixed_value): Use
1497         INTERESTING_STRINGOP_TO_PROFILE_P to find size argument.
1498         * value-prof.c (gimple_stringops_transform): Update call sites to
1499         INTERESTING_STRINGOP_TO_PROFILE_P to reflect parameter change.
1500
1501 2009-09-18  Uros Bizjak  <ubizjak@gmail.com>
1502
1503         PR target/38288
1504         From David Binderman <dcb314@hotmail.com>:
1505         * gcc/config/i386/i386.c (ix86_function_regparm): Remove useless
1506         local variable f.  Remove stale comments.
1507         (ix86_compute_frame_layout): Remove useless local variable total_size.
1508         Remove #if 0'd code.
1509         (legitimate_address_p): Remove useless local variables
1510         reason_rtx and reason.
1511         (ix86_split_copysign_const): Remove useless local variable op1.
1512         (scale_counter): Remove useless local variable piece_size_mask.
1513
1514 2009-09-18  Jakub Jelinek  <jakub@redhat.com>
1515
1516         * stmt.c (expand_asm_operands): Set REG_ATTRS on the temporary from
1517         output decl.
1518
1519 2009-09-17  Michael Haubenwallner  <michael.haubenwallner@salomon.at>
1520
1521         PR target/40913
1522         * config/pa/t-hpux-shlib: Set soname in libgcc_s.sl.
1523
1524 2009-09-17  Jakub Jelinek  <jakub@redhat.com>
1525
1526         * c-decl.c (finish_struct): Adjust DECL_SOURCE_LOCATION of
1527         TYPE_STUB_DECL.
1528
1529 2009-09-17  Alexandre Oliva  <aoliva@redhat.com>
1530
1531         * dwarf2out.c (loc_descriptor): Emit DW_OP_stack_value and
1532         DW_OP_implicit_value even without dwarf_version 4.
1533
1534 2009-09-17  Jan Hubicka  <jh@suse.cz>
1535
1536         * dwarf2out.c: Include tree-pass.h and gimple.h.
1537         (loc_list_plus_const): New function.
1538         (loc_descriptor_from_tree_1): Rename to ...
1539         (loc_descriptor_from_tree): ... remove original.
1540         (loc_list_from_tree): New function.
1541         (add_AT_location_description): Accept location list.
1542         (tls_mem_loc_descriptor): Update call of loc_descriptor_from_tree.
1543         (concatn_mem_loc_descriptor): Remove.
1544         (mem_loc_descriptor): Handle CONCAT/CONCATN and VAR_LOCATION by
1545         returning NULL.
1546         (secname_for_decl): Move up.
1547         (hidden_reference_p): New function; break out from ...
1548         (loc_by_refernece): ... here; move up.
1549         (dw_loc_list): New function.
1550         (single_element_loc_list): New function.
1551         (single_element_loc_list_p): New function.
1552         (add_loc_descr_to_each): New function.
1553         (add_loc_list): New function.
1554         (loc_descr_from_tree): Make wraper of loc_list_from_tree.
1555         (loc_list_from_tree): Reroganized from loc_descr_from_tree;
1556         add diagnostics why expansion failed.
1557         (add_location_or_const_value_attribute): Support location lists.
1558         (add_bound_info): Likewise.
1559         (descr_info_loc): Update call of loc_descriptor_from_tree.
1560         (gen_variable_die): Work on location lists.
1561         * final.c (pass_final): Add dump file.
1562         * Makefile.in (dwarf2out.o): Add new dependencies.
1563
1564 2009-09-17  Janis Johnson  <janis187@us.ibm.com>
1565
1566         PR c/41049
1567         * real.c decimal_from_integer, decimal_integer_string): New.
1568         (real_from_integer): Use them as special case for decimal float.
1569         * config/dfp-bit.c (_si_to_sd, _usi_to_sd): Use default rounding.
1570         (_di_to_sd, _di_to_dd, _di_to_td, _udi_to_sd, _udi_to_dd, _udi_to_td):
1571         Do not append zero after the decimal point in string to convert.
1572
1573 2009-09-17  Alexander Monakov  <amonakov@ispras.ru>
1574
1575         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Add bounds only
1576         for ARRAY_REFs.  Use array_ref_{low,up}_bound to determine bounds.
1577
1578 2009-09-17  Martin Jambor  <mjambor@suse.cz>
1579
1580         * common.opt (fipa-sra): New switch.
1581         * opts.c (decode_options): Turn flag_ipa_sra on for opt2.
1582         * timevar.def (TV_IPA_SRA): New timevar.
1583         * params.def (ipa-sra-ptr-growth-factor): New parameter.
1584         * doc/invoke.texi: Document -fipa-sra and ipa-sra-ptr-growth-factor.
1585         * tree-sra.c: Include cgraph.c.
1586         (enum sra_mode): Added SRA_MODE_EARLY_IPA.
1587         (struct access): Added fields stmt, grp_maybe_modified, grp_scalar_ptr
1588         and grp_not_necessarilly_dereferenced.
1589         (func_param_count): New variable.
1590         (encountered_apply_args): New variable.
1591         (bb_dereferences): New variable.
1592         (final_bbs): New variable.
1593         (no_accesses_representant): New variable.
1594         (no_accesses_p): New function.
1595         (dump_access): Dump the new fields.
1596         (sra_initialize): Set encountered_apply_args to false.
1597         (get_ssa_base_param): New function.
1598         (mark_parm_dereference): New function.
1599         (create_access): Caring for INIDRECT_REFs and different handling of
1600         varialble length accesses in early IPA SRA.  Store the stmt - a new
1601         parameter - to the new access.
1602         (build_access_from_expr_1): New parameter stmt, passed to
1603         create_access.  Handle INDIRECT_REFs.
1604         (build_access_from_expr): Pass the current statement to
1605         build_access_from_expr_1.
1606         (disqualify_ops_if_throwing_stmt): Trigger only in intraprocedural
1607         passes.
1608         (build_accesses_from_assign): Pass the current statement to
1609         build_access_from_expr_1.  Do not create assign links in IPA-SRA.
1610         (scan_function): Call handle_ssa_defs on phi nodes.  Set bits in
1611         final_bbs when necessary.  Check for calls to __builtin_apply_args.
1612         Fixup EH info if anythng was changed.
1613         (is_unused_scalar_param): New function.
1614         (ptr_parm_has_direct_uses): New function.
1615         (find_param_candidates): New function.
1616         (mark_maybe_modified): New function.
1617         (analyze_modified_params): New function.
1618         (propagate_dereference_distances): New function.
1619         (dump_dereferences_table): New function.
1620         (analyze_caller_dereference_legality): New function.
1621         (unmodified_by_ref_scalar_representative): New function.
1622         (splice_param_accesses): New function.
1623         (decide_one_param_reduction): New function.
1624         (enum ipa_splicing_result): New type.
1625         (splice_all_param_accesses): New function.
1626         (get_param_index): New function.
1627         (turn_representatives_into_adjustments): New function.
1628         (analyze_all_param_acesses): New function.
1629         (get_replaced_param_substitute): New function.
1630         (get_adjustment_for_base): New function.
1631         (replace_removed_params_ssa_names): New function.
1632         (sra_ipa_reset_debug_stmts): New function.
1633         (sra_ipa_modify_expr): New function.
1634         (sra_ipa_modify_assign): New function.
1635         (convert_callers): New function.
1636         (modify_function): New function.
1637         (ipa_sra_preliminary_function_checks): New function.
1638         (ipa_early_sra): New function.
1639         (ipa_early_sra_gate): New function.
1640         (pass_early_ipa_sra): New variable.
1641         * Makefile.in (tree-sra.o): Add cgraph.h to dependencies.
1642
1643 2009-09-17  Michael Matz  <matz@suse.de>
1644
1645         PR middle-end/41347
1646         * tree.c (build_type_attribute_qual_variant): Export.
1647         * tree.h (build_type_attribute_qual_variant): Declare.
1648         * tree-inline.c (remap_type_1): Use it to build variants with
1649         the original qualifiers and attributes.
1650
1651 2009-09-17  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
1652
1653         * cfglayout.c (fixup_reorder_chain): Accept conditional jumps
1654         without a fallthrough edge.
1655
1656 2009-09-16  DJ Delorie  <dj@redhat.com>
1657
1658         * config/m32c/m32c.c (m32c_emit_epilogue): Check for R8C or M16C
1659         chip and ignore the "fast_interrupt" attribute if so.
1660
1661 2009-09-16  Richard Henderson  <rth@redhat.com>
1662
1663         PR middle-end/41360
1664         * cfgbuild.c (find_bb_boundaries): Really re-instate 2009-09-02
1665         barrier fix.
1666
1667 2009-09-16  Richard Henderson  <rth@redhat.com>
1668
1669         PR target/41246
1670         * tree-cfg.c (verify_gimple_call): Validate that gimple_call_chain
1671         is set only if DECL_NO_STATIC_CHAIN is unset.
1672         * tree-nested.c (iter_nestinfo_start, iter_nestinfo_next): New.
1673         (FOR_EACH_NEST_INFO): New.
1674         (walk_all_functions): Use it.
1675         (finalize_nesting_tree): Likewise.
1676         (unnest_nesting_tree): Likewise.
1677         (free_nesting_tree): Use iter_nestinfo_start, iter_nestinfo_next.
1678         (get_chain_decl, get_chain_field): Reset DECL_NO_STATIC_CHAIN.
1679         (convert_gimple_call): Early out if gimple_call_chain already set.
1680         (convert_all_function_calls): Iterate until no new functions
1681         require a static chain.
1682         (finalize_nesting_tree_1): Assert DECL_NO_STATIC_CHAIN is unset
1683         when building a trampoline.  Use dump_function_to_file instead
1684         of dump_function.
1685         (lower_nested_functions): Open dump_file.  Validate that decls
1686         that have DECL_NO_STATIC_CHAIN from the front end don't have that
1687         bit reset by this pass.
1688
1689 2009-09-16  Michael Matz  <matz@suse.de>
1690
1691         PR fortran/41212
1692         * tree.h (struct tree_decl_common): Add decl_restricted_flag,
1693         shorten decl_common_unused.
1694         (DECL_RESTRICTED_P): New accessor.
1695         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Use it
1696         to disambiguate marked decls and restrict pointers.
1697
1698 2009-09-16  Richard Henderson  <rth@redhat.com>
1699
1700         PR middle-end/41360
1701         * cfgbuild.c (find_bb_boundaries): Re-instate 2009-09-02 barrier fix.
1702
1703 2009-09-16  Jakub Jelinek  <jakub@redhat.com>
1704
1705         * integrate.c (set_block_abstract_flags): Call
1706         set_decl_abstract_flags also on BLOCK_NONLOCALIZED_VARs.
1707
1708 2009-09-16  Richard Guenther  <rguenther@suse.de>
1709
1710         PR middle-end/34011
1711         * tree-flow-inline.h (may_be_aliased): Compute readonly variables
1712         as non-aliased.
1713
1714 2009-09-16  DJ Delorie  <dj@redhat.com>
1715             Kaz Kojima  <kkojima@gcc.gnu.org>
1716
1717         * config/sh/sh.c (output_stack_adjust): Add new argument frame_p.
1718         (sh_expand_prologue): Update calls to output_stack_adjust.
1719         (sh_expand_epilogue): Likewise.
1720
1721 2009-09-15  Adam Nemet  <anemet@caviumnetworks.com>
1722
1723         PR bootstrap/41349
1724         * reorg.c (redundant_insn): Don't count notes or DEBUG_INSNs when
1725         trying to limit the extent of searches in the insn stream.
1726
1727 2009-09-15  Nathan Froyd  <froydnj@codesourcery.com>
1728             Jakub Jelinek  <jakub@redhat.com>
1729
1730         PR target/41175
1731         PR target/40677
1732         * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence
1733         problem.
1734         (SAVRES_NOINLINE_GPRS_SAVES_LR, SAVRES_NOINLINE_FPRS_SAVES_LR,
1735         SAVRES_NOINLINE_FPRS_DOESNT_RESTORE_LR): New strategy bits.
1736         (rs6000_savres_strategy): Always save FP registers inline if the
1737         target doesn't support hardware double-precision.  Set the above
1738         bits in return value when needed.
1739         (rs6000_savres_routine_sym): Fix computation for cache selector.
1740         Mark the generated symbol as a function.  Rename exitp argument to
1741         lr.  Move code for determining the name of the symbol...
1742         (rs6000_savres_routine_name): ...here.  New function.  Add cases for
1743         getting the names right on AIX and 64-bit Linux.
1744         (savres_routine_name): New variable.
1745         (rs6000_make_savres_rtx): Rename exitp argument to lr.  Don't assert
1746         lr isn't set when savep.  Use r12 resp. r1 instead of r11 depending
1747         on what the target routine uses as a base register.  If savep && lr
1748         describe saving of r0 into memory slot.
1749         (rs6000_emit_prologue): Correct use of call_used_regs.  Fix out of
1750         line calls for AIX ABI.
1751         (rs6000_output_function_prologue): Use rs6000_savres_routine_name to
1752         determine FP save/restore functions.
1753         (rs6000_emit_stack_reset): Handle savres if sp_offset != 0 and
1754         frame_reg_rtx != sp_reg_rtx.  Use gen_add3_insn instead of
1755         gen_addsi3.
1756         (rs6000_emit_epilogue): Adjust computation of restore_lr.
1757         Duplicate restoration of LR and execute the appropriate one
1758         depending on whether GPRs are being restored inline.  Set r11 from
1759         offsetted frame_reg_rtx instead of sp_reg_rtx; if frame_reg_rtx is
1760         r11, adjust sp_offset.  Use gen_add3_insn instead of gen_addsi3.
1761         Fix out of line calls for AIX ABI.
1762         * config/rs6000/rs6000.md (*return_and_restore_fpregs_aix_<mode>):
1763         New insn.
1764         * config/rs6000/spe.md (*save_gpregs_spe): Use explicit match for
1765         register 11.
1766         (*restore_gpregs_spe): Likewise.
1767         (*return_and_restore_gpregs_spe): Likewise.
1768         * config/rs6000/linux64.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
1769         Define to empty string unconditionally.
1770         * config/rs6000/sysv4.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
1771         Define to empty string unconditionally.
1772         (GP_SAVE_INLINE, FP_SAVE_INLINE): Handle TARGET_64BIT the same as
1773         !TARGET_64BIT.
1774
1775 2009-09-15  Jan Hubicka  <jh@suse.cz>
1776
1777         * doc/invoke.texi (inline-insns-auto): Drop from 60 to 50.
1778         * params.def (inline-insns-auto): Likewise.
1779
1780 2009-09-15  Martin Jambor  <mjambor@suse.cz>
1781
1782         * ipa-inline.c (estimate_function_body_sizes): Dump info about
1783         individual statements only at TDF_DETAILS dump level.  Format
1784         source for 80 characters per line.
1785
1786 2009-09-15  Christian Bruel  <christian.bruel@st.com>
1787
1788         * regrename.c (do_replace): Update REG_DEAD notes.
1789
1790 2009-09-15  Revital Eres  <eres@il.ibm.com>
1791
1792         * doc/tm.texi (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Document.
1793         * targhooks.c (default_builtin_support_vector_misalignment):
1794         New builtin function.
1795         * targhooks.h (default_builtin_support_vector_misalignment):
1796         Declare.
1797         * target.h (builtin_support_vector_misalignment):
1798         New field in struct gcc_target.
1799         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Call
1800         new builtin function.
1801         * target-def.h (TARGET_SUPPORT_VECTOR_MISALIGNMENT):
1802         Define.
1803         * config/rs6000/rs6000.c
1804         (rs6000_builtin_support_vector_misalignment): New function.
1805         (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Define.
1806
1807 2009-09-15  Jie Zhang  <jie.zhang@analog.com>
1808
1809         * config/bfin/bfin.c (length_for_loop): Use NONDEBUG_INSN_P
1810         instead of INSN_P.
1811         (bfin_optimize_loop): Likewise.
1812         (bfin_gen_bundles): Likewise.
1813         (workaround_speculation): Likewise.
1814         (find_load): Return NULL_RTX for debug_insn.
1815
1816 2009-09-15  Uros Bizjak  <ubizjak@gmail.com>
1817
1818         * config/alpha/alpha.md (smaxsf3): Disable for IEEE mode.
1819         (sminsf3): Ditto.
1820
1821 2009-09-14  DJ Delorie  <dj@redhat.com>
1822
1823         * config/mep/mep.h (JUMP_TABLES_IN_TEXT_SECTION): Define.
1824         * config/mep/mep.c (mep_emit_cbranch): Don't use BEQZ/BNEI in
1825         VLIW mode.
1826
1827 2009-09-14  Richard Henderson  <rth@redhat.com>
1828             Jakub Jelinek  <jakub@redhat.com>
1829
1830         * builtins.c (expand_builtin_synchronize): Use gimple_build_asm_vec.
1831         * cfgbuild.c (make_edges): Handle asm goto.
1832         * cfglayout.c (fixup_reorder_chain): Likewise.
1833         * cfgrtl.c (patch_jump_insn): Likewise.
1834         * gimple-pretty-print.c (dump_gimple_asm): Likewise.
1835         * gimple.c (gimple_build_asm_1): Add and use nlabels parameter.
1836         (gimple_build_asm_vec): Add and use labels parameter.
1837         (gimple_build_asm): Remove.
1838         (walk_gimple_asm): Walk labels too.
1839         * gimple.def (GIMPLE_ASM): Update docs.
1840         * gimple.h: Update decls.
1841         (struct gimple_statement_asm): Change nc to use unsigned char;
1842         add nl member.
1843         (gimple_asm_nlabels): New.
1844         (gimple_asm_label_op, gimple_asm_set_label_op): New.
1845         * gimplify.c (gimplify_asm_expr): Copy labels from ASM_EXPR
1846         into gimple_build_asm_vec.
1847         * jump.c (mark_jump_label_asm): New.
1848         (mark_jump_label): Use it.
1849         (redirect_jump_1): Handle asm goto.
1850         (invert_jump_1): Soft fail if X is null.
1851         * recog.c (extract_asm_operands): New.
1852         (asm_noperands): Use it; handle asm labels.
1853         (decode_asm_operands): Use extract_asm_operands.
1854         (asm_operand_ok): Properly handle empty string.
1855         * reg-stack.c (get_asm_operands_in_out): Rename from
1856         get_asm_operand_n_inputs; use extract_asm_operands; return both
1857         inputs and outputs by reference; update all callers.
1858         * rtl.def (ASM_OPERANDS): Add label vector as operand 6.
1859         * rtl.h (ASM_OPERANDS_LABEL_VEC): New.
1860         (ASM_OPERANDS_LABEL_LENGTH, ASM_OPERANDS_LABEL): New.
1861         (ASM_OPERANDS_SOURCE_LOCATION): Renumber.
1862         (extract_asm_operands): Declare.
1863         * stmt.c (expand_asm_operands): Add and use labels parameter.
1864         (check_unique_operand_names): Likewise.
1865         (resolve_asm_operand_names, resolve_operand_name_1): Likewise.
1866         (expand_asm_stmt): Handle asm labels.
1867         * tree-cfg.c (make_gimple_asm_edges): New.
1868         (make_edges): Use it.
1869         (cleanup_dead_labels): Handle asm labels.
1870         (is_ctrl_altering_stmt): Likewise.
1871         (gimple_redirect_edge_and_branch): Likewise.
1872         * tree.def (ASM_EXPR): Add 5th operand.
1873         * tree.h (ASM_LABELS): New.
1874         (resolve_asm_operand_names): Update decl.
1875
1876         * c-parser.c (c_parser_asm_statement): Parse asm goto.
1877         (c_parser_asm_goto_operands): New.
1878         * c-tree.h (build_asm_expr): Update decl.
1879         * c-typeck.c (build_asm_expr): Add and use labels parameter.
1880         * doc/extend.texi: Document asm goto.
1881
1882 2009-09-14  Richard Henderson  <rth@redhat.com>
1883
1884         * except.h: Update declarations.
1885         (struct pointer_map_t): Forward declare.
1886         (ERT_UNKNOWN, ERT_THROW, ERT_CATCH): Remove.
1887         (struct eh_landing_pad_d, eh_landing_pad): New.
1888         (struct eh_catch_d, eh_catch): New.
1889         (struct eh_region_d): Remove next_region_sharing_label, aka,
1890         label, tree_label, landing_pad, post_landing_pad, resume,
1891         may_contain_throw.  Rename region_number to index.  Remove
1892         u.eh_catch, u.eh_throw.  Rename u.eh_try.eh_catch to first_catch.
1893         Add u.must_not_throw, landing_pads, exc_ptr_reg, filter_reg.
1894         (VEC(eh_landing_pad,gc)): New.
1895         (struct eh_status): Remove last_region_number.  Add lp_array,
1896         throw_stmt_table, ttype_data, ehspec_data.
1897         (ehr_next, FOR_ALL_EH_REGION_AT): New.
1898         (FOR_ALL_EH_REGION_FN, FOR_ALL_EH_REGION): New.
1899         * except.c (lang_protect_cleanup_actions): Return tree.
1900         (struct ehl_map_entry): Remove.
1901         (init_eh_for_function): Push zero entries for region and lp_array.
1902         (gen_eh_region): Add to region_array immediately.
1903         (gen_eh_region_catch): Operate on eh_catch objects.
1904         (gen_eh_landing_pad): New.
1905         (get_eh_region_may_contain_throw, get_eh_region_tree_label): Remove.
1906         (get_eh_region_no_tree_label, set_eh_region_tree_label): Remove.
1907         (get_eh_region_from_number, get_eh_region_from_number_fn): New.
1908         (get_eh_landing_pad_from_number_fn): New.
1909         (get_eh_landing_pad_from_number): New.
1910         (get_eh_region_from_lp_number_fn): New.
1911         (get_eh_region_from_lp_number): New.
1912         (expand_resx_stmt, note_eh_region_may_contain_throw): Remove.
1913         (get_exception_pointer, get_exception_filter): Remove.
1914         (collect_eh_region_array, can_be_reached_by_runtime): Remove.
1915         (current_function_has_exception_handlers): Simplify.
1916         (bring_to_root, eh_region_replaceable_by_p): Remove.
1917         (replace_region, hash_type_list, hash_eh_region): Remove.
1918         (eh_regions_equal_p, merge_peers, remove_unreachable_regions): Remove.
1919         (label_to_region_map, num_eh_regions): Remove.
1920         (get_next_region_sharing_label, must_not_throw_labels): Remove.
1921         (find_exception_handler_labels): Remove.
1922         (duplicate_eh_regions_0, find_prev_try): Remove.
1923         (struct duplicate_eh_regions_data): New.
1924         (duplicate_eh_regions_1): Rewrite.
1925         (duplicate_eh_regions): Return a pointer map instead of an
1926         integer offset.
1927         (copy_eh_region_1, copy_eh_region, push_reachable_handler): Remove.
1928         (redirect_eh_edge_to_label): Remove.
1929         (eh_region_outermost): Rewrite using eh_region pointers
1930         instead of integers.
1931         (add_ttypes_entry): Update for ttype_data move to eh_status.
1932         (add_ehspec_entry): Rewrite with VEC instead of varray.
1933         (assign_filter_values): Likewise.  Export.
1934         (build_post_landing_pads, connect_post_landing_pads): Remove.
1935         (dw2_build_landing_pads): Rewrite to use lp_array.
1936         (struct sjlj_lp_info, sjlj_find_directly_reachable_regions): Remove.
1937         (sjlj_assign_call_site_values): Rewrite to use lp_array.
1938         (sjlj_emit_dispatch_table, sjlj_build_landing_pads): Likewise.
1939         (sjlj_mark_call_sites): Update for landing pad numbers.
1940         (finish_eh_generation): Rewrite.
1941         (gate_handle_eh): Do nothing for no eh tree.
1942         (pass_rtl_eh): Move up near finish_eh_generation.
1943         (remove_eh_landing_pad): New.
1944         (remove_eh_handler): Export.
1945         (remove_eh_region, remove_eh_handler_and_replace): Remove.
1946         (for_each_eh_label): Rewrite to use lp_array.
1947         (make_reg_eh_region_note): New.
1948         (make_reg_eh_region_note_nothrow_nononlocal): New.
1949         (insn_could_throw_p): New.
1950         (copy_reg_eh_region_note_forward): New.
1951         (copy_reg_eh_region_note_backward): New.
1952         (check_handled, add_reachable_handler): Remove.
1953         (reachable_next_level, foreach_reachable_handler): Remove.
1954         (arh_to_landing_pad, arh_to_label, reachable_handlers): Remove.
1955         (get_eh_region_and_lp_from_rtx): New.
1956         (get_eh_region_from_rtx): New.
1957         (can_throw_internal_1, can_throw_external_1): Remove.
1958         (can_throw_internal): Use get_eh_region_from_rtx.
1959         (can_throw_external): Use get_eh_region_and_lp_from_rtx.
1960         (insn_nothrow_p, can_nonlocal_goto): New.
1961         (expand_builtin_eh_common, expand_builtin_eh_pointer): New.
1962         (expand_builtin_eh_filter, expand_builtin_eh_copy_values): New.
1963         (add_action_record): Use VEC not varray.
1964         (collect_one_action_chain): Update for eh_region changes.
1965         (convert_to_eh_region_ranges): Make static.  Use VEC not varray.
1966         Use get_eh_region_and_lp_from_rtx.
1967         (gate_convert_to_eh_region_ranges): New.
1968         (pass_convert_to_eh_region_ranges): Use it.
1969         (push_uleb128, push_sleb128): Use VEC not varray.
1970         (output_one_function_exception_table): Likewise.
1971         (dump_eh_tree): Update for eh_region changes.
1972         (verify_eh_tree): Likewise.
1973         (verify_eh_region, default_init_unwind_resume_libfunc): Remove.
1974         * tree-eh.c: Include target.h.
1975         (add_stmt_to_eh_lp_fn): Rename from add_stmt_to_eh_region_fn.
1976         Don't disallow GIMPLE_RESX; adjust argument check.
1977         (add_stmt_to_eh_lp): Rename from add_stmt_to_eh_region.
1978         (record_stmt_eh_region): Update for landing pad numbers;
1979         generate a landing pad if necessary.
1980         (remove_stmt_from_eh_lp): Rename from remove_stmt_from_eh_region.
1981         (remove_stmt_from_eh_lp_fn): Similarly.
1982         (lookup_stmt_eh_lp_fn): Rename from lookup_stmt_eh_region_fn.
1983         Update for lp numbers; don't special case missing throw_stmt_table.
1984         (lookup_expr_eh_lp): Similarly.
1985         (lookup_stmt_eh_lp): Rename from lookup_stmt_eh_region.
1986         (eh_seq, eh_region_may_contain_throw): New.
1987         (struct leh_state): Add ehp_region.
1988         (struct leh_tf_state): Remove eh_label.
1989         (emit_post_landing_pad): New.
1990         (emit_resx, emit_eh_dispatch): New.
1991         (note_eh_region_may_contain_throw): New.
1992         (frob_into_branch_around): Take eh_region not eh label;
1993         emit eh code into eh_seq.
1994         (honor_protect_cleanup_actions): Early exit for no actions.  Don't
1995         handle EXC_PTR_EXPR, FILTER_EXPR.  Use gimple_build_eh_must_not_throw,
1996         lower_eh_must_not_throw.  Emit code to eh_seq.
1997         (lower_try_finally_nofallthru): Emit eh code to eh_seq.
1998         (lower_try_finally_onedest): Likewise.
1999         (lower_try_finally_copy): Likewise.
2000         (lower_try_finally_switch): Likewise.
2001         (lower_try_finally): Initialize ehp_region.
2002         (lower_catch): Update for eh_catch objects.
2003         (lower_eh_filter): Don't handle must_not_throw.
2004         (lower_eh_must_not_throw): New.
2005         (lower_cleanup): Don't set eh_label.
2006         (lower_eh_constructs_2): Resolve eh builtins.
2007         Handle GIMPLE_EH_MUST_NOT_THROW.
2008         (lower_eh_constructs): Initialize eh_region_may_contain_throw.
2009         Add eh_seq to the end of the function body.
2010         (make_eh_dispatch_edges): New.
2011         (make_eh_edge): Remove.
2012         (make_eh_edges): Simplify for landing pads.
2013         (redirect_eh_edge_1): New.
2014         (redirect_eh_edge): Use it.
2015         (redirect_eh_dispatch_edge): New.
2016         (stmt_could_throw_p): Use a switch.  Allow RESX.
2017         (stmt_can_throw_external): Use lookup_stmt_eh_lp.
2018         (stmt_can_throw_internal): Likewise.
2019         (maybe_clean_eh_stmt_fn, maybe_clean_eh_stmt): New.
2020         (maybe_clean_or_replace_eh_stmt): Update for landing pads.
2021         (maybe_duplicate_eh_stmt_fn, maybe_duplicate_eh_stmt): New.
2022         (gate_refactor_eh): New.
2023         (pass_refactor_eh): Use it.
2024         (lower_resx, execute_lower_resx, pass_lower_resx): New.
2025         (lower_eh_dispatch, execute_lower_eh_dispatch): New.
2026         (gate_lower_ehcontrol, pass_lower_eh_dispatch): New.
2027         (remove_unreachable_handlers): Rename from
2028         tree_remove_unreachable_handlers; rewrite for landing pads;
2029         call remove_eh_handler directly.
2030         (remove_unreachable_handlers_no_lp): New.
2031         (unsplit_eh, unsplit_all_eh): New.
2032         (tree_empty_eh_handler_p, all_phis_safe_to_merge): Remove.
2033         (cleanup_empty_eh_merge_phis, cleanup_empty_eh_move_lp): New.
2034         (cleanup_empty_eh_unsplit): New.
2035         (cleanup_empty_eh): Rewrite.
2036         (cleanup_all_empty_eh): New.
2037         (execute_cleanup_eh): Rename from cleanup_eh.  Remove unreachable
2038         handlers first.  Use unsplit_all_eh, cleanup_all_empty_eh.
2039         (gate_cleanup_eh): New.
2040         (pass_cleanup_eh): Use it.
2041         (verify_eh_edges): Move later in file.  Expect one EH edge.
2042         (verify_eh_dispatch_edge): New.
2043
2044         * Makefile.in (FUNCTION_H): Use vecprim.h, not varray.h.
2045         (gtype-desc.o): Add TARGET_H.
2046         (tree.o): Use EXCEPT_H, not except.h.
2047         (cfgbuild.o): Add EXPR_H.
2048         (GTFILES): Add vecprim.h.
2049         * builtins.c (expand_builtin): Handle BUILT_IN_EH_POINTER,
2050         BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES.
2051         * builtins.def (BUILT_IN_UNWIND_RESUME, BUILT_IN_EH_POINTER,
2052         BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES): New.
2053         * calls.c (emit_call_1): Use make_reg_eh_region_note.
2054         * cfgbuild.c (control_flow_insn_p): Use can_nonlocal_goto; tidy
2055         calls to can_throw_internal.
2056         (rtl_make_eh_edge): Use get_eh_landing_pad_from_rtx.
2057         (make_edges): Don't handle RESX; use can_nonlocal_goto.
2058         * cfgexpand.c (expand_gimple_stmt_1): Don't handle RESX.
2059         (expand_gimple_stmt): Use make_reg_eh_region_note.
2060         (expand_debug_expr): Don't handle EXC_PTR_EXPR and FILTER_EXPR.
2061         (gimple_expand_cfg): Don't call convert_from_eh_region_ranges,
2062         or find_exception_handler_labels.
2063         * cfgrtl.c (rtl_verify_flow_info_1): Don't handle RESX.  Assert
2064         there is exacly one EH edge.  Use can_nonlocal_goto and
2065         can_throw_internal.
2066         * cgraphunit.c (update_call_expr): Use maybe_clean_eh_stmt_fn.
2067         (cgraph_materialize_all_clones): Use maybe_clean_or_replace_eh_stmt.
2068         * combine.c (can_combine_p, try_combine): Use insn_nothrow_p.
2069         * cse.c (count_reg_usage, insn_live_p): Use insn_could_throw_p.
2070         * dce.c (deletable_insn_p_1): Don't test may_trap_p.
2071         (deletable_insn_p): Use insn_nothrow_p; reorder nonjump insn test.
2072         * dse.c (scan_insn): Use insn_could_throw_p.
2073         * emit-rtl.c (try_split): Use copy_reg_eh_region_note_backward.
2074         * expr.c (expand_expr_real): Use make_reg_eh_region_note.
2075         (expand_expr_real_1): Don't handle RESX, EXC_PTR, or FILTER_EXPR.
2076         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't handle
2077         EXC_PTR_EXPR or FILTER_EXPR.
2078         (tree_expr_nonzero_warnv_p): Likewise.
2079         * function.h: Include vecprim.h, not varray.h
2080         (struct rtl_eh): Remove filter, exc_ptr, built_landing_pad members;
2081         move ttype_data and ehspec_data members to struct eh_status; change
2082         action_record_data member to a VEC.
2083         * gcse.c (hash_scan_set): Use can_throw_internal.
2084         * gengtype.c (open_base_files): Add target.h to gtype-desc.c.
2085         * gimple-iterator.c (gsi_replace): Use maybe_clean_or_replace_eh_stmt.
2086         * gimple-low.c (lower_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.
2087         (block_may_fallthru): Don't handle RESX_EXPR.
2088         * gimple-pretty-print.c (dump_gimple_label): Dump EH_LANDING_PAD_NR.
2089         (dump_gimple_eh_must_not_throw, dump_gimple_eh_dispatch): New.
2090         (dump_gimple_stmt): Dump landing pad information with TDF_EH;
2091         handle GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH.
2092         * gimple.c (gss_for_code): Handle GIMPLE_EH_MUST_NOT_THROW,
2093         GIMPLE_EH_DISPATCH, GIMPLE_RESX.
2094         (gimple_size): Likewise.
2095         (gimple_build_eh_dispatch, gimple_build_eh_must_not_throw): New.
2096         (gimple_build_resx): Use gimple_build_with_ops.
2097         (DEFTREECODE): Don't handle EXC_PTR_EXPR, FILTER_EXPR.
2098         (is_gimple_val): Likewise.
2099         (is_gimple_stmt): Remove RESX_EXPR.
2100         * gimple.def (GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH): New.
2101         (GIMPLE_RESX): Reorder with other EH constructs.
2102         * gimple.h (struct gimple_statement_eh_mnt): New.
2103         (struct gimple_statement_eh_ctrl): Rename from gimple_statement_resx.
2104         (gimple_eh_filter_must_not_throw): Remove.
2105         (gimple_eh_filter_set_must_not_throw): Remove.
2106         (gimple_eh_must_not_throw_fndecl): New.
2107         (gimple_eh_dispatch_region, gimple_eh_dispatch_set_region): New.
2108         (is_gimple_resx): New.
2109         * gimplify.c (gimplify_expr): Don't handle EXC_PTR_EXPR, RESX_EXPR.
2110         Don't copy EH_FILTER_MUST_NOT_THROW.
2111         * gsstruct.def (GSS_EH_MNT, GSS_EHCONTROL): New.
2112         * ipa-inline.c (estimate_function_body_sizes): Don't try to
2113         handle must_not_throw_labels specially.
2114         * ipa-pure-const.c (check_call): Update debug statement for LP.
2115         * ipa-type-escape.c (check_operand): Don't handle EXC_PTR or FILTER.
2116         * ipa-utils.c (get_base_var): Likewise.
2117         * libfunc.h (LTI_unwind_resume, unwind_resume_libfunc): Remove.
2118         * lower-subreg.c (move_eh_region_note): Remove.
2119         (resolve_simple_move): Use copy_reg_eh_region_note_forward.
2120         * omp-low.c (new_omp_context): Update for eh_lp_nr.
2121         (create_task_copyfn): Likewise.
2122         (maybe_catch_exception): Use gimple_build_eh_filter.
2123         * optabs.c (emit_libcall_block): Update test for no-nonlocal-goto
2124         REG_EH_REGION.  Use make_reg_eh_region_note_nothrow_nononlocal.
2125         * passes.c (init_optimization_passes): Add pass_lower_eh_dispatch
2126         and pass_lower_resx.
2127         * print-tree.c (print_node): Dump EH_LANDING_PAD_NR.
2128         * recog.c (peephole2_optimize): Use copy_reg_eh_region_note_backward,
2129         can_throw_internal, can_nonlocal_goto.
2130         * reload1.c (fixup_eh_region_note): Use insn_could_throw_p,
2131         copy_reg_eh_region_note_forward.
2132         (emit_input_reload_insns): Use copy_reg_eh_region_note_forward.
2133         (emit_output_reload_insns): Likewise.
2134         (copy_eh_notes): Remove.
2135         * rtl.def (RESX): Remove.
2136         * rtl.h: Update declarations.
2137         * sese.c (graphite_copy_stmts_from_block): Use maybe_duplicate_eh_stmt.
2138         * tree-cfg.c (make_edges): Handle GIMPLE_EH_DISPATCH.
2139         (update_eh_label): Remove.
2140         (cleanup_dead_labels_eh): New.
2141         (cleanup_deal_labels): Use it instead of update_eh_label.
2142         (gimple_merge_blocks): Update landing pad data structure when
2143         removing a landing pad label.
2144         (remove_useless_stmts_tc): Remove gimple_eh_filter_must_not_throw
2145         test; handle GIMPLE_EH_MUST_NOT_THROW.
2146         (is_ctrl_altering_stmt): Handle GIMPLE_EH_DISPATCH.
2147         (verify_gimple_assign_single): Don't handle EXC_PTR or FILTER_EXPR.
2148         (verify_types_in_gimple_stmt): Handle GIMPLE_EH_DISPATCH.
2149         (verify_stmt): Likewise.  Verify landing pads.
2150         (gimple_redirect_edge_and_branch): Handle GIMPLE_EH_DISPATCH.
2151         (gimple_duplicate_bb): Use maybe_duplicate_eh_stmt.
2152         (struct move_stmt_d): Add eh_map.
2153         (move_stmt_eh_region_nr, move_stmt_eh_region_tree_nr): New.
2154         (move_stmt_r): Remap eh region numbers in builtin calls,
2155         resx and eh_dispatch.
2156         (move_block_to_fn): Remove eh_offset parameter.  Use
2157         maybe_duplicate_eh_stmt_fn.
2158         (find_outermost_region_in_block): Operate on eh_region pointers
2159         instead of region numbers.
2160         (move_sese_region_to_fn): Expect eh_map instead of eh_offset from
2161         duplicate_eh_regions.
2162         * tree-cfgcleanup.c (tree_forwarder_block_p): Move entry block edge
2163         test earlier.  Disallow EH landing pads.
2164         * tree-cfa.c (create_tree_common_ann): Don't set ann->rn.
2165         * tree-flow.h: Update declarations.
2166         (struct tree_ann_common_d): Replace rn with lp_nr.
2167         * tree-inline.c (copy_tree_body_r): Don't handle RESX_EXPR.
2168         (remap_eh_region_nr, remap_eh_region_tree_nr): New.
2169         (remap_gimple_stmt): Remap eh region numbers in builtin calls,
2170         resx and eh_dispatch.
2171         (copy_bb): Use maybe_duplicate_eh_stmt_fn.
2172         (copy_edges_for_bb): Use make_eh_dispatch_edges.
2173         (copy_cfg_body): Expect eh_map instead of eh_region_offset
2174         from duplicate_eh_regions.
2175         (estimate_num_insns): Don't handle EXC_PTR_EXPR or FILTER_EXPR;
2176         update RESX; handle EH_DISPATCH.
2177         (expand_call_inline): Set eh_lp_nr, not eh_region.
2178         (maybe_inline_call_in_expr): Likewise.
2179         * tree-inline.h (struct copy_body_data): Replace eh_region with
2180         eh_lp_nr, eh_region_offset with eh_map.
2181         * tree-optimize.c (execute_fixup_cfg): Use maybe_clean_eh_stmt.
2182         * tree-pass.h (pass_lower_eh_dispatch, pass_lower_resx): New.
2183         * tree-pretty-print.c (dump_generic_node): Don't handle
2184         EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR.
2185         * tree-sra.c (scan_function): Use maybe_clean_eh_stmt.
2186         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Don't handle
2187         EXC_PTR_EXPR, FILTER_EXPR.
2188         * tree-ssa-operands.c (get_expr_operands): Likewise.
2189         * tree-ssa-propagate.c (valid_gimple_rhs_p): Likewise.
2190         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
2191         (ao_ref_init_from_vn_reference): Likewise.
2192         * tree-ssa-sink.c (statement_sink_location): Likewise.
2193         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
2194         (mark_virtual_phi_result_for_renaming): Export.  Tidy.
2195         * tree-ssa-pre.c (get_or_alloc_expr_for): Don't handle
2196         EXC_PTR_EXPR, FILTER_EXPR.
2197         (is_exception_related): Remove.
2198         (compute_avail): Don't call it.
2199         * tree-ssa-structalias.c: Remove VEC definitions for int and unsigned.
2200         * tree.c (find_decls_types_in_eh_region): Update for eh_region changes.
2201         (find_decls_types_in_node): Use FOR_ALL_EH_REGION_FN.
2202         (build_common_builtin_nodes): Add enable_cxa_end_cleanup parameter.
2203         Build EH builtins.
2204         (build_resx): Remove.
2205         * tree.def (EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR): Remove.
2206         * tree.h: Update declarations.
2207         (EH_FILTER_MUST_NOT_THROW): Remove.
2208         (struct tree_label_decl): Add eh_landing_pad_nr.
2209         (EH_LANDING_PAD_NR): New.
2210         * value-prof.c (gimple_ic): Tidy variable names.  Update for
2211         landing pad numbers.
2212         (gimple_stringop_fixed_value): Tidy variable names.  Assert
2213         that neither call stmt can throw.
2214         * vecprim.h (uchar): New.
2215         (VEC(uchar,heap), VEC(uchar,gc)): New.
2216
2217         * c-common.c (c_define_builtins): Update call to
2218         build_common_builtin_nodes.
2219         * c-parser.c (c_parse_file): Don't call
2220         default_init_unwind_resume_libfunc.
2221
2222 2009-09-14  Richard Sandiford  <rdsandiford@googlemail.com>
2223
2224         * config/mips/mips-protos.h (mips_cfun_has_cprestore_slot_p): Declare.
2225         (mips_cprestore_address_p): Likewise.
2226         (mips_save_gp_to_cprestore_slot): Likewise.
2227         (mips_restore_gp): Rename to...
2228         (mips_restore_gp_from_cprestore_slot): ...this.
2229         (mips_must_initialize_gp_p): Declare.
2230         (mips_emit_save_slot_move): Likewise.
2231         (mips_output_load_label): Return nothing.
2232         (mips_eh_uses): Declare.
2233         * config/mips/mips.h (TARGET_SPLIT_CALLS): Require epilogue_completed.
2234         (TARGET_CPRESTORE_DIRECTIVE): New macro.
2235         (TARGET_ABSOLUTE_JUMPS): Likewise.
2236         (EH_USES): Likewise.
2237         (FIRST_PSEUDO_REGISTER): Update comment.
2238         (MIPS_ABSOLUTE_JUMP): New macro, extracted from...
2239         (MIPS_CALL): ...here.
2240         (REGISTER_NAMES): Add $cprestore.
2241         * config/mips/mips.c (machine_function): Remove has_gp_insn_p.
2242         Add load_label_length, has_inflexible_gp_insn_p,
2243         has_flexible_gp_insn_p, must_initialize_gp_p and
2244         must_restore_gp_when_clobbered_p.
2245         (mips_expand_call): Don't generate split instructions here.
2246         (mips_split_call): Update the call to mips_restore_gp after
2247         the above name change.
2248         (mips16_cfun_returns_in_fpr_p): Move earlier in file.
2249         (mips_find_gp_ref): New function.
2250         (mips_insn_has_inflexible_gp_ref_p): Likewise.
2251         (mips_cfun_has_inflexible_gp_ref_p): Likewise.
2252         (mips_insn_has_flexible_gp_ref_p): Likewise.
2253         (mips_cfun_has_flexible_gp_ref_p): Likewise.
2254         (mips_function_has_gp_insn): Delete.
2255         (mips_global_pointer): Drop the df_regs_ever_live_p check.
2256         Use the new functions above.  Only return INVALID_REGNUM
2257         for TARGET_ABSOLUTE_JUMPS.
2258         (mips_must_initialize_gp_p): New function.
2259         (mips_get_cprestore_base_and_offset): New function, extracted from...
2260         (mips_cprestore_slot): ...here.  Take a bool parameter.
2261         (mips_cfun_has_cprestore_slot_p): New function.
2262         (mips_cprestore_address_p): Likewise.
2263         (mips_save_gp_to_cprestore_slot): Likewise.
2264         (mips_restore_gp): Rename to...
2265         (mips_restore_gp_from_cprestore_slot): ...this.  Assert
2266         epilogue_completed.  Update the call to mips_cprestore_slot.
2267         Test cfun->machine->must_restore_gp_when_clobbered_p.
2268         (mips_direct_save_slot_move_p): New function.
2269         (mips_emit_save_slot_move): Likewise.
2270         (mips_output_cplocal): Test mips_must_initialize_gp_p () instead
2271         of cfun->machine->global_pointer.
2272         (mips_output_function_prologue): Check mips_must_initialize_gp_p ().
2273         (mips_save_reg): Use mips_emit_save_slot_move.
2274         (mips_expand_prologue): Set must_initialize_gp_p.
2275         Use mips_cfun_has_cprestore_slot_p.  Use gen_potential_cprestore
2276         for all cprestore saves.  Emit a use_cprestore instruction after
2277         setting up the cprestore slot.
2278         (mips_restore_reg): Use mips_emit_save_slot_move.
2279         (mips_process_load_label): New function.
2280         (mips_load_label_length): Likewise.
2281         (mips_output_load_label): Don't return asm: output it here instead.
2282         Use mips_process_load_label.
2283         (mips_adjust_insn_length): Adjust the length of branch instructions
2284         that have length MAX_PIC_BRANCH_LENGTH.
2285         (mips_output_conditional_branch): Update the call to
2286         mips_output_load_label.  Assume the branch target is OPERANDS[0]
2287         rather than OPERANDS[1].  Use MIPS_ABSOLUTE_JUMP for absolute jumps.
2288         (mips_output_order_conditional_branch): Swap the meaning of
2289         OPERANDS[0] and OPERANDS[1].
2290         (mips_variable_issue): Don't count ghost instructions.
2291         (mips_expand_ghost_gp_insns): New function.
2292         (mips_reorg): Rerun mips_reorg_process_insns if it returns true.
2293         (mips_output_mi_thunk): Set must_initialize_gp_p.
2294         (mips_eh_uses): New function.
2295         * config/mips/predicates.md (cprestore_save_slot_operand)
2296         (cprestore_load_slot_operand): New predicates.
2297         * config/mips/mips.md (UNSPEC_POTENTIAL_CPRESTORE): New unspec.
2298         (UNSPEC_MOVE_GP): Likewise.
2299         (UNSPEC_CPRESTORE, UNSPEC_RESTORE_GP, UNSPEC_EH_RETURN)
2300         (UNSPEC_CONSTTABLE_INT, UNSPEC_CONSTTABLE_FLOAT): Bump to make room.
2301         (CPRESTORE_SLOT_REGNUM): New register.
2302         (MAX_PIC_BRANCH_LENGTH): New constant.
2303         (jal_macro): Use MIPS_ABSOLUTE_JUMPS.
2304         (length): Use MAX_PIC_BRANCH_LENGTH as a placeholder for PIC long
2305         branches.  Fix commentary.
2306         (loadgp_newabi_<mode>): Change from unspec_volatile to unspec.
2307         Only split if mips_must_initialize_gp_p; expand to nothing otherwise.
2308         Change type to "ghost".
2309         (loadgp_absolute_<mode>): Likewise.
2310         (loadgp_rtp_<mode>): Likewise.
2311         (copygp_mips16): Likewise.
2312         (loadgp_blockage): Remove redundant mode attribute.
2313         (potential_cprestore): New instruction.
2314         (cprestore): Turn into an unspec set.
2315         (use_cprestore): New instruction.
2316         (*branch_fp): Swap operands 0 and 1.  Remove redundant mode attribute.
2317         (*branch_fp_inverted): Likewise.
2318         (*branch_order<mode>): Likewise.
2319         (*branch_order<mode>_inverted): Likewise.
2320         (*branch_equality<mode>): Likewise.
2321         (*branch_equality<mode>_inverted): Likewise.
2322         (*branch_bit<bbv><mode>): Likewise.
2323         (*branch_bit<bbv><mode>_inverted): Likewise.
2324         (*branch_equality<mode>_mips16): Remove redundant mode.
2325         (jump): Turn into a define_expand.
2326         (*jump_absolute): New instruction.
2327         (*jump_pic): Likewise.
2328         (*jump_mips16): Rename previously-unnamed pattern.  Remove
2329         redundant mode attribute.
2330         (restore_gp): Split on epilogue_completed rather than
2331         reload_completed.  Change type to "ghost".
2332         (move_gp<mode>): New instruction.
2333         * config/mips/mips-dsp.md (mips_bposge): Swap operands 0 and 1.
2334         Remove redundant mode attribute.
2335         * config/mips/mips-ps-3d.md (bc1any4t): Likewise.
2336         (bc1any4f, bc1any2t, bc1any2f): Likewise.
2337         (*branch_upper_lower, *branch_upper_lower_inverted): Likewise.
2338
2339 2009-09-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
2340
2341         PR target/41210
2342         * config/rs6000/rs6000.c (rs6000_function_value): V2DF and V2DI
2343         are returned in the same register (vs34 or v2) that Altivec vector
2344         types are returned in.
2345         (rs6000_libcall_value): Ditto.
2346
2347         PR target/41331
2348         * config/rs6000/rs6000.c (rs6000_emit_move): Use gen_add3_insn
2349         instead of explicit addsi3/adddi3 calls.
2350         (rs6000_split_multireg_move): Ditto.
2351         (rs6000_emit_allocate_stack): Ditto.
2352         (rs6000_emit_prologue): Ditto.
2353         (rs6000_output_mi_thunk): Ditto.
2354
2355         * config/rs6000/rs6000.md (bswapdi*): Don't assume the pointer
2356         size is 64 bits if we can use 64-bit registers.
2357
2358 2009-09-14  Bernd Schmidt  <bernd.schmidt@analog.com>
2359
2360         * config/bfin/bfin.c (bfin_longcall_p): Don't use short calls for weak
2361         symbols.
2362
2363         From Jie Zhang <jie.zhang@analog.com>:
2364         * config/bfin/bfin.c (bfin_expand_prologue): Ask do_link to
2365         save FP and RETS with saveall attribute.
2366         (bfin_expand_epilogue): Ask do_unlink to restore FP and RETS
2367         with saveall attribute.
2368
2369         * config/bfin/bfin.c (bfin_expand_builtin,
2370         case BFIN_BUILTIN_MULT_1X32X32): Force constants to registers for the
2371         operands.
2372
2373         From Jie Zhang <jie.zhang@analog.com>:
2374         * config/bfin/bfin.c (bfin_expand_builtin): Initialize icodes
2375         before use in two places.
2376         * config/bfin/bfin.md (AREG): Define mode iterator.
2377         (reload_in, reload_out): Use mode iterator AREG.
2378
2379 2009-09-14  Richard Guenther  <rguenther@suse.de>
2380
2381         PR middle-end/41350
2382         * dwarf2out.c (dwarf2out_begin_prologue): Adjust non-CFI asm
2383         EH personality path.
2384
2385 2009-09-13  Richard Guenther  <rguenther@suse.de>
2386             Rafael Avila de Espindola  <espindola@google.com>
2387
2388         * langhooks-def.h (LANG_HOOKS_EH_RUNTIME_TYPE): Define.
2389         (LANG_HOOKS_EH_PERSONALITY): Likewise.
2390         (LANG_HOOKS_INITIALIZER): Adjust.
2391         (lhd_pass_through_t): Declare.
2392         * langhooks.h (struct lang_hooks): Add eh_runtime_type and
2393         eh_personality.
2394         * langhooks.c (lhd_pass_through_t): New function.
2395         * dwarf2out.c (output_call_frame_info, dwarf2out_do_cfi_startproc,
2396         dwarf2out_begin_prologue): Use personality from current_function_decl.
2397         * expr.h (get_personality_function): Declare.
2398         * expr.c (get_personality_function): New function.
2399         (build_personality_function): Likewise.
2400         * libfuncs.h (libfunc_index): Remove LTI_eh_personality.
2401         (eh_personality_libfunc): Remove.
2402         * optabs.c (build_libfunc_function): New function split out from ...
2403         (init_one_libfunc): ... here.
2404         * tree.h (DECL_FUNCTION_PERSONALITY): New.
2405         (tree_function_decl): Add personality.
2406         (lhd_gcc_personality): Declare.
2407         (build_personality_function): Likewise.
2408         * tree.c (gcc_eh_personality_decl): New.
2409         (lhd_gcc_personality): New function.
2410         * except.h (lang_eh_runtime_type): Remove.
2411         (enum eh_personality_kind): New.
2412         (build_personality_function): Declare.
2413         (function_needs_eh_personality): Declare.
2414         * except.c (lang_eh_runtime_type): Remove.
2415         (function_needs_eh_personality): New function.
2416         (add_type_for_runtime): Call lang_hooks.type_for_runtime instead.
2417         (sjlj_emit_function_enter, output_function_exception_table):
2418         Use personality from current_function_decl.
2419         * tree-eh.c (lower_eh_constructs): Set DECL_FUNCTION_PERSONALITY.
2420         * tree-inline.c (tree_can_inline_p): Do not inline across different
2421         EH personalities.
2422         (expand_call_inline): Likewise.  Adjust the callers EH personality.
2423         (tree_function_versioning): Copy DECL_FUNCTION_PERSONALITY.
2424         * cgraph.c (cgraph_add_new_function): Set DECL_FUNCTION_PERSONALITY.
2425         * Makefile.in (cgraph.o): Add $(EXCEPT_H) dependency.
2426         (c-parser.o): Likewise
2427         * c-tree.h (c_eh_initialized_p): Remove.
2428         (c_maybe_initialize_eh): Likewise.
2429         * c-decl.c (finish_decl): Don't call c_maybe_initialize_eh.
2430         (finish_decl): Don't call c_maybe_initialize_eh.
2431         (c_eh_initialized_p): Remove.
2432         (c_maybe_initialize_eh): Likewise.
2433         * c-parser.c (c_parser_omp_construct): Likewise.
2434         (c_parse_file): Initialize exception handling.
2435
2436 2009-09-13  Kai Tietz  <kai.tietz@onevision.com>
2437
2438         * config.gcc (tm_file): Remove i386/biarch32.h
2439         for i?86-w64-mingw* case.
2440         (i?86-*-mingw* andx86_64-*-mingw*): Add multilib
2441         support.
2442         * config.host: Set for x64 mingw the option
2443         use_long_long_for_widest_fast_int to yes.
2444
2445 2009-09-13  Eric Botcazou  <ebotcazou@adacore.com>
2446
2447         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
2448         * dbxout.c (dbxout_function_end): Do not test DECL_IGNORED_P.
2449         (dbxout_begin_function): Likewise.
2450         * final.c (dwarf2_debug_info_emitted_p): New predicate.
2451         (final_start_function): Do not emit debug info if DECL_IGNORED_P is
2452         set on the function.
2453         (final_end_function): Likewise.
2454         (final_scan_insn): Likewise.
2455         (rest_of_handle_final): Likewise.
2456         * varasm.c (assemble_start_function): Likewise.
2457         * config/rs6000/xcoff.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
2458
2459 2009-09-12  Jason Merrill  <jason@redhat.com>
2460
2461         * dbgcnt.c (dbg_cnt_process_single_pair): constify.
2462         * opts.c (common_handle_option): constify.
2463
2464 2009-09-12  Gerald Pfeifer  <gerald@pfeifer.com>
2465
2466         * doc/install.texi (avr): Remove obsolete reference site.
2467
2468 2009-09-12  Gerald Pfeifer  <gerald@pfeifer.com>
2469
2470         * doc/install.texi (Binaries): Adjust AIX link.
2471
2472 2009-09-12  Akim Demaille  <demaille@gostai.com>
2473
2474         * doc/invoke.texi (-fstrict-aliasing): Correct two examples.
2475         Use an imperative sentence.
2476
2477 2009-09-11  Richard Henderson  <rth@redhat.com>
2478
2479         * gsstruct.def (DEFGSSTRUCT): Remove printable-name argument; add
2480         structure-name and has-tree-operands arguments; update all entries.
2481         * gimple.def (DEFGSCODE): Replace 3rd argument with GSS_symbol;
2482         update all entries.
2483         * gimple.c (gimple_ops_offset_): Use HAS_TREE_OP argument.
2484         (gsstruct_code_size): New.
2485         (gss_for_code_): New.
2486         (gss_for_code): Remove.
2487         (gimple_size): Rewrite using gsstruct_code_size.
2488         (gimple_statement_structure): Move to gimple.h.
2489         * gimple.h (gimple_ops_offset_, gss_for_code_): Declare.
2490         (gss_for_code, gimple_statement_structure): New.
2491         (gimple_ops): Use new arrays; tidy.
2492
2493 2009-09-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2494
2495         * config/pa/predicates.md (symbolic_operand): Require a CONST symbolic
2496         operand to be a PLUS expression.
2497         * config/pa/pa.c (pa_secondary_reload): Likewise.
2498
2499 2009-09-11  Jakub Jelinek  <jakub@redhat.com>
2500
2501         * combine.c (propagate_for_debug_subst): Call wrap_constant on top.
2502
2503         * print-rtl.c (print_rtx): Use JUMP_LABEL (in_rtx) instead of
2504         XEXP (in_rtx, 8).
2505
2506 2009-09-11  Bernd Schmidt  <bernd.schmidt@analog.com>
2507
2508         From Jie Zhang <jie.zhang@analog.com>:
2509         * doc/extend.texi (node Function Attributes): Document l2
2510         function attribute.
2511         (node Blackfin Variable Attributes): Document l2 variable attributes.
2512
2513 2009-09-11  Loren J. Rittle  <ljrittle@acm.org>
2514
2515         * config.gcc (*-*-freebsd*): Enable default_use_cxa_atexit
2516         to match the system compiler's configuration at inflection point.
2517         Add comment to remark a remaining difference with system compiler.
2518
2519         * configure.ac (*-*-freebsd*): Enable check for __stack_chk_fail.
2520         * configure: Regenerate.
2521
2522 2009-09-11  Bernd Schmidt  <bernd.schmidt@analog.com>
2523
2524         From Jie Zhang <jie.zhang@analog.com>:
2525         * config/bfin/bfin.c (bfin_expand_call): Handle L2 functions.
2526         (bfin_handle_l2_attribute): New.
2527         (bfin_attribute_table): Add l2 attribute.
2528
2529 2009-09-11  Michael Matz  <matz@suse.de>
2530
2531         PR middle-end/41275
2532         * tree-inline.c (remap_decls): Don't put DECL_EXTERNAL decls
2533         on the local_decls list.
2534
2535 2009-09-11  Alexandre Oliva  <aoliva@redhat.com>
2536
2537         PR debug/41276
2538         PR debug/41307
2539         * cselib.c (cselib_expand_value_rtx_cb): Document callback
2540         interface.
2541         (cselib_expand_value_rtx_1): Use callback for SUBREGs.  Adjust
2542         for VALUEs, to implement the documented interface.
2543         * var-tracking.c (vt_expand_loc_callback): Handle SUBREGs.
2544         Adjust for VALUEs and anything else, to implement the
2545         documented interface.
2546
2547 2009-09-10  Nathan Froyd  <froydnj@codesourcery.com>
2548
2549         * config/rs6000/rs6000.h (DATA_ALIGNMENT): Check that we are dealing
2550         with actual SPE/paired vector modes before using 64-bit alignment.
2551         Check that TYPE is a REAL_TYPE for TARGET_E500_DOUBLE.
2552
2553 2009-09-10  DJ Delorie  <dj@redhat.com>
2554
2555         * config/mep/mep.md (eh_epilogue): Defer until after epilogue is
2556         emitted.
2557
2558         * config/mep/mep.h (LEGITIMATE_CONSTANT_P): New.
2559         * config/mep/mep.c (mep_legitimate_constant_p): New.
2560         * config/mep/mep-protos.h: Prototype it.
2561
2562 2009-09-10  Richard Henderson  <rth@redhat.com>
2563
2564         * print-rtl.c (print_rtx): Fix JUMP_LABEL index.
2565
2566 2009-09-10  Jason Merrill  <jason@redhat.com>
2567
2568         * tree.c (chain_index): New fn.
2569         * tree.h: Declare it.
2570
2571 2009-09-10  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
2572
2573         * config/sol2-c.c (cmn_err_length_specs): Initialize
2574         scalar_identity_flag.
2575
2576 2009-09-10  Richard Henderson  <rth@redhat.com>
2577
2578         * tree.h (struct tree_decl_common): Move align member earlier;
2579         move label_decl_uid member ...
2580         (struct tree_label_decl): ... here.
2581         (LABEL_DECL_UID): Update to match.
2582
2583         * tree-cfg.c (dump_function_to_file): Dump eh tree with TDF_EH,
2584         not TDF_DETAILS.
2585
2586         * tree-cfg.c (gimple_redirect_edge_and_branch): Do
2587         gimple_try_redirect_by_replacing_jump test after no-op and EH tests.
2588
2589         * tree-cfg.c (split_edge_bb_loc): Don't disallow placement at
2590         dest_prev if the edge is complex.
2591
2592         * tree-cfg.c (is_ctrl_stmt): Use a switch.
2593
2594         * tree-cfg.c (gimple_can_merge_blocks_p): Move label and
2595         loop latch tests earlier.
2596
2597         * gimple-iterator.c (gimple_find_edge_insert_loc): Insert
2598         before GIMPLE_RETURN, not after its predecessor; insert
2599         before GIMPLE_RESX.
2600
2601         * gimple-iterator.c (gimple_find_edge_insert_loc): Use
2602         gimple_seq_empty_p to test for no PHI nodes.
2603         * tree-cfg.c (split_critical_edges): Likewise.
2604
2605         * c-common.h (c_dialect_cxx, c_dialect_objc): Boolify.
2606
2607 2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
2608
2609         * final.c (shorten_branches) : Ignore DEBUG_INSN_P instructions
2610         introduced by the VTA branch merge.
2611
2612 2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
2613
2614         * ira-conflicts.c: Use fputs or putc instead of fprintf
2615         where appropriate.
2616         * cfg.c: Ditto.
2617         * toplev.c: Ditto.
2618         * tree-switch-conversion.c: Ditto.
2619
2620 2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
2621
2622         * config/picochip/picochip.c : Ignore DEBUG_INSN_P instructions
2623         introduced by the VTA branch merge.
2624
2625 2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
2626
2627         Revert:
2628         2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
2629
2630         PR rtl-optimization/39779
2631         * expr.c (convert_modes): Return when mode == oldmode after
2632         CONST_INTs are processed.
2633
2634 2009-09-10  Nick Clifton  <nickc@redhat.com>
2635
2636         * config/mep/mep.c (mep_encode_section_info): Copy weakness
2637         attribute and referring decl when creating renamed symbol.
2638
2639 2009-09-10  Richard Guenther  <rguenther@suse.de>
2640
2641         PR middle-end/41257
2642         * cgraphunit.c (cgraph_emit_thunks): Emit thunks only for
2643         reachable nodes.
2644         (cgraph_finalize_compilation_unit): Compute reachability
2645         before emitting thunks.  Properly process aliases before
2646         possibly removing unreachable nodes.
2647
2648 2009-09-10  Richard Guenther  <rguenther@suse.de>
2649
2650         PR middle-end/41254
2651         * tree.c (struct free_lang_data_d): Add worklist member.
2652         (find_decls_types_r): Push onto the worklist instead of recursing.
2653         Handle TREE_BINFOs properly.
2654         (find_decls_types): New function wrapped around find_decls_types_r
2655         to process the worklist.
2656         (find_decls_types_in_eh_region): Use it.
2657         (find_decls_types_in_node): Likewise.
2658         (find_decls_types_in_var): Likewise.
2659         (free_lang_data_in_cgraph): Likewise.  Free the worklist.
2660         * tree.h (RECORD_OR_UNION_TYPE_P): New.
2661         (AGGREGATE_TYPE_P): Adjust.
2662
2663 2009-09-09  Jason Merrill  <jason@redhat.com>
2664
2665         * configure.ac: Check glibc version even if we have an in-tree
2666         assembler.
2667
2668 2009-09-09  Anthony Green  <green@moxielogic.com>
2669
2670         * config/moxie/moxie.md (*movsi, *movhi, *movqi): Use xor to load
2671         the constant 0 when appropriate.
2672         * config/moxie/constraints.md: Add constraint O.
2673
2674         * config/moxie/moxie.c (moxie_setup_incoming_varargs): Adjust
2675         to pass up to 6 32-bit argument values in registers.
2676         (moxie_function_arg): Ditto.
2677         (moxie_arg_partial_bytes): Ditto.
2678         * config/moxie/moxie.h (FUNCTION_ARG_ADVANCE): Ditto.
2679         (REG_PARM_STACK_SPACE): Ditto.
2680         (FUNCTION_ARG_REGNO_P): Ditto.
2681
2682         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
2683         instruction to allocate stack space.
2684
2685 2009-09-09  Segher Boessenkool  <segher@kernel.crashing.org>
2686
2687         * config/rs6000/rs6000.md (bswapdi2_64bit): Fix
2688         unnecessarily stringent constraints.  Fix address
2689         calculation in the splitters.
2690
2691 2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
2692
2693         PR rtl-optimization/39779
2694         * expr.c (convert_modes): Return when mode == oldmode after
2695         CONST_INTs are processed.
2696
2697 2009-09-09  Kai Tietz  <kai.tietz@onevision.com>
2698
2699         PR/41315
2700         * config/i386.c (ix86_can_use_return_insn_p): Check for padding0, too.
2701         (ix86_expand_prologue): Take frame.padding0 into logic of
2702         to_allocate checks.
2703         (ix86_expand_epilogue): Likewise.
2704
2705 2009-09-09  Jakub Jelinek  <jakub@redhat.com>
2706
2707         * config/t-slibgcc-elf-ver (SHLIB_MAKE_SOLINK, SHLIB_INSTALL_SOLINK):
2708         New variables.
2709         (SHLIB_LINK, SHLIB_INSTALL): Use them.
2710         * config/t-slibgcc-libgcc: New file.
2711         * config.gcc (powerpc*-*-linux*, powerpc*-*-gnu*): Use it.
2712
2713 2009-09-09  Martin Jambor  <mjambor@suse.cz>
2714
2715         PR tree-optimization/41089
2716         * tree-sra.c (find_var_candidates): Do not consider va_lists in
2717         early SRA.
2718
2719 2009-09-09  Richard Henderson  <rth@redhat.com>
2720
2721         * gimple.h (CASE_GIMPLE_OMP): New.
2722         (is_gimple_omp): Use it.
2723         * tree-cfg.c (is_ctrl_altering_stmt): Likewise.
2724         (verify_gimple_debug): Likewise.
2725
2726 2009-09-09  Richard Guenther  <rguenther@suse.de>
2727
2728         PR tree-optimization/41101
2729         * tree-ssa-pre.c (maximal_set): Remove.
2730         (compute_antic_aux): Treat the maximal set as implicitly all ones.
2731         Defer all blocks we didn't visit at least one successor.
2732         (add_to_exp_gen): Do not add to the maximal set.
2733         (make_values_for_phi): Likewise.
2734         (compute_avail): Likewise.
2735         (init_pre): Do not allocate the maximal set.
2736         (execute_pre): Do not dump it.
2737
2738 2009-09-09  Martin Jambor  <mjambor@suse.cz>
2739
2740         * tree-cfg.c (verify_gimple_phi): Check that gimple_phi_result is
2741         an SSA_NAME rather than a is_gimple_variable.
2742
2743 2009-09-09  Richard Guenther  <rguenther@suse.de>
2744
2745         PR middle-end/41317
2746         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Remove
2747         code dealing with plain pointer bases.
2748         (maybe_fold_offset_to_reference): Likewise.
2749         (maybe_fold_stmt_addition): Adjust.
2750
2751 2009-09-09  Richard Guenther  <rguenther@suse.de>
2752
2753         * tree.c (free_lang_data_in_type): Do not free the type variant
2754         chains.
2755         (free_lang_data): Merge char_type_node with its properly signed
2756         variant.
2757         (pass_ipa_free): Collect after freeing language specific data.
2758
2759 2009-09-09  Michael Matz  <matz@suse.de>
2760
2761         PR middle-end/41268
2762         * cfgexpand.c (expand_gimple_stmt_1): Use an int for storing
2763         SUBREG_PROMOTED_UNSIGNED_P, instead of a bool.
2764         * rtl.h (struct rtx, SUBREG_PROMOTED_UNSIGNED_P): Update comments
2765         to reflect reality.
2766
2767 2009-09-08  DJ Delorie  <dj@redhat.com>
2768
2769         * config/mep/mep.c (conversions[]): Add "ml" pattern.
2770
2771 2009-09-04  Jason Merrill  <jason@redhat.com>
2772
2773         * tree.c (tree_find_value): Remove.
2774         * tree.h: Remove prototype.
2775         * varasm.c (assemble_external): Use value_member instead.
2776
2777 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
2778
2779         * toplev.c (process_options): Choose default debugging type when
2780         gtoggle enables debug info and type is unset.
2781
2782 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
2783
2784         PR debug/41276
2785         PR debug/41307
2786         * cselib.c (cselib_expand_value_rtx_1): Don't return copy of
2787         invalid subreg.
2788
2789 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
2790
2791         * configure: Rebuilt with modified libtool.m4.
2792
2793 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
2794
2795         PR debug/41229
2796         PR debug/41291
2797         PR debug/41300
2798         * tree-ssa.c (execute_update_addresses_taken): Update debug insns.
2799
2800 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
2801
2802         * tree-ssa-loop-ivopts.c (get_phi_with_result): Remove.
2803         (remove_statement): Likewise.
2804         (rewrite_use_nonlinear_expr): Adjust.
2805         (remove_unused_ivs): Collect SSA NAMEs to remove and call...
2806         * tree-ssa.c (release_defs_bitset): ... this.  New.
2807         * tree-flow.h (release_defs_bitset): Declare.
2808
2809 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
2810
2811         PR debug/41232
2812         * tree-ssa-phiopt.c (minmax_replacement): Skip debug stmts
2813         in the middle block.
2814
2815 2009-09-08  Kai Tietz  <kai.tietz@onevision.com>
2816
2817         * tree-ssa-reassoc.c (find_operand_rank): Cast pointer
2818         via intptr_t to long type.
2819         (insert_operand_rank): Cast long type via intptr_t to
2820         pointer type.
2821         * genattrtab.c (RTL_HASH): Use intptr_t to cast from
2822         pointer to scalar.
2823         * c-pretty-print.c (pp_c_tree_decl_identifier): Cast
2824         from pointer to unsigned via uintptr_t.
2825
2826         * configure.ac (GCC_STDINT_TYPES): Initialize intptr_t,
2827         uintptr_t, HAVE_INTTYPES_H, HAVE_STDINT_H, HAVE_UINTPTR_T,
2828         and HAVE_INTPTR_T.
2829         * configure: Regenerated.
2830         * config.in: Regenerated
2831         * system.h (stdint.h): Add include.
2832         (inttypes.h): Likewise.
2833         * Makefile.in (aclocal): Add config/stdint.m4.
2834         * aclocal.m4: Regenerated.
2835
2836 2009-09-08  Bernd Schmidt  <bernd.schmidt@analog.com>
2837
2838         * config/bfin/bfin.c (np_check_regno, np_after_branch): New static
2839         variables.
2840         (note_np_check_stores): New function.
2841         (harmless_null_pointer_p): New function.
2842         (trapping_loads_p): New args NP_REG and AFTER_NP_BRANCH.  Callers
2843         changed.  Take into account whether we're in the shadow of a condjump
2844         that tested NP_REG for NULL.
2845         Lose all code that tested for SEQUENCEs.
2846         (workaround_speculation): Avoid inserting NOPs for loads that are
2847         either always executed or a NULL pointer.
2848
2849 2009-09-08  Jan Hubicka  <jh@suse.cz>
2850
2851         * doc/invoke.texi (early-inlining-insns): Reduce from 12 to 8.
2852         * params.def (early-inlining-insns): Likewise.
2853
2854 2009-09-08  Jakub Jelinek  <jakub@redhat.com>
2855
2856         PR rtl-optimization/41239
2857         * sched-int.h (struct deps): Add last_function_call_may_noreturn field.
2858         * sched-rgn.c (deps_join): Join also last_function_call_may_noreturn
2859         lists.
2860         * sched-deps.c (sched_analyze_insn): Prevent moving trapping insns
2861         across calls, as the calls might not always return normally.
2862         (call_may_noreturn_p): New function.
2863         (deps_analyze_insn): Update last_function_call_may_noreturn list.
2864         (init_deps): Initialize it.
2865         (remove_from_deps): Also remove calls from
2866         last_function_call_may_noreturn list.
2867
2868 2009-09-07  Richard Henderson  <rth@redhat.com>
2869
2870         * tree-ssa-sccvn.c (vn_reference_lookup_3): Don't assume there are
2871         more VR->OPERANDS than LHS operands.  Free LHS before returning.
2872
2873 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
2874
2875         * config/bfin/bfin.md (UNSPEC_VOLATILE_STALL): New constant.
2876         (attr "addrtype"): New member "spreg".
2877         Use it if mem_spfp_address_operand is true for the address.
2878         (attr "type"): New entry "stall".
2879         (cpu_unit "load"): New.
2880         (insn_reservations "load32", "loadp", "loadi"): Add reservation of
2881         "load".
2882         (insn_reservation "loadsp"): New.
2883         (insn_reservation "load_stall1"): New.
2884         (insn_reservation "load_stall3"): New.
2885         (stall): New insn.
2886         * config/bfin/predicates.md (const1_operand, const3_operand): New.
2887         (mem_p_address_operand): Exclude stack and frame pointer based
2888         addresses.
2889         (mem_spfp_address_operand): New; match them here.
2890         * config/bfin/bfin.c (add_sched_insns_for_speculation): New function.
2891         (bfin_reorg): Call it if scheduling insns.
2892         (bfin_gen_bundles): Remove dummy insns created by
2893         add_sched_insns_for_speculation.
2894
2895         From Jie Zhang <jie.zhang@analog.com>:
2896         * config/bfin/bfin-protos.h (enum bfin_cpu_type, bfin_cpu_type,
2897         bfin_si_revision, bfin_workarounds): Move these ...
2898         * config/bfin/bfin.h: ... here.
2899
2900         From Mike Frysinger  <michael.frysinger@analog.com>
2901         * config/bfin/bfin-protos.h (bfin_cpu_type): Add BFIN_CPU_BF542M,
2902         BFIN_CPU_BF544M, BFIN_CPU_BF547M, BFIN_CPU_BF548M, and BFIN_CPU_BF549M.
2903         * config/bfin/bfin.c (bfin_cpus[]): Add 0.3 for bf542m, bf544m,
2904         bf547m, bf548m, and bf549m.
2905         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF542M__
2906         for BFIN_CPU_BF542M, __ADSPBF544M__ for BFIN_CPU_BF544M,
2907         __ADSPBF547M__ for BFIN_CPU_BF547M, __ADSPBF548M__ for
2908         BFIN_CPU_BF548M, and __ADSPBF549M__ for BFIN_CPU_BF549M.
2909         * config/bfin/t-bfin-elf (MULTILIB_MATCHES): Select bf532-none for
2910         bf542m-none, bf544m-none, bf547m-none, bf548m-none, and bf549m-none.
2911         * config/bfin/t-bfin-linux (MULTILIB_MATCHES): Likewise.
2912         * config/bfin/t-bfin-uclinux (MULTILIB_MATCHES): Likewise.
2913         * doc/invoke.texi (Blackfin Options): Document that -mcpu now accepts
2914         bf542m, bf544m, bf547m, bf548m, and bf549m.
2915
2916         From Jie Zhang <jie.zhang@analog.com>:
2917         * config/bfin/predicates.md (p_register_operand): New predicate.
2918         (dp_register_operand): New predicate.
2919         * config/bfin/bfin-protos.h (WA_05000074): Define.
2920         (ENABLE_WA_05000074): Define.
2921         * config/bfin/bfin.c (bfin_cpus[]): Add WA_05000074 for all cpus.
2922         (bfin_gen_bundles): Put dsp32shiftimm instruction in slot[0].
2923         * config/bfin/bfin.md (define_attr type): Add dsp32shiftimm.
2924         (define_attr addrtype): Allow load/store register to be P register.
2925         (define_attr storereg): New.
2926         (define_cpu_unit anomaly_05000074): New.
2927         (define_insn_reservation dsp32shiftimm): New.
2928         (define_insn_reservation dsp32shiftimm_anomaly_05000074): New.
2929         (define_insn_reservation loadp): Cannot use slot2.
2930         (define_insn_reservation loadsp): Cannot use slot2.
2931         (define_insn_reservation storep): Cannot use slot2. Does not
2932         apply when working around 05000074.
2933         (define_insn_reservation storep_anomaly_05000074): New.
2934         (define_insn_reservation storei): Does not apply when working
2935         around 05000074.
2936         (define_insn_reservation storei_anomaly_05000074): New.
2937         (define_attr length): Add dsp32shiftimm case.
2938         (define_insn movsi_insn32, movsi_insv, ashlsi3_insn, ashrsi3,
2939         ror_one, rol_one, lshrsi3, lshrpdi3, ashrpdi3, movhiv2hi_low,
2940         movhiv2hi_high, composev2hi, packv2hi, movv2hi_hi,
2941         ssashiftv2hi3, ssashifthi3, ssashiftsi3, lshiftv2hi3, lshifthi3):
2942         Set type as dsp32shiftimm for dsp32shiftimm alternatives.
2943
2944 2009-09-07  Martin Jambor  <mjambor@suse.cz>
2945
2946         PR middle-end/41282
2947         * tree-sra.c (create_artificial_child_access): Return NULL if
2948         build_ref_for_offset fails.
2949         (propagate_subacesses_accross_link): Allow build_ref_for_offset
2950         and create_artificial_child_access to fail.
2951
2952 2009-09-06  Dmitry Gorbachev  <d.g.gorbachev@gmail.com>
2953
2954         PR c++/41214
2955         * unwind-dw2.c (uw_init_context_1): Mark noinline.
2956         * config/ia64/unwind-ia64.c (uw_init_context_1): Likewise.
2957         * config/xtensa/unwind-dw2-xtensa.c (uw_init_context_1): Likewise.
2958
2959 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
2960
2961         * config/bfin/bfin.c (bfin_optimize_loop): When creating a new basic
2962         block, ensure it has an exit edge.  Emit a barrier after a jump.
2963
2964 2009-09-07  Nick Clifton  <nickc@redhat.com>
2965
2966         * gcc.c (this_is_linker_script): New variable.  Like
2967         this_is_library_file but for the %T constructor.
2968         (end_going_arg): If this_is_linker_script is set then locate the
2969         script and insert a --script switch before it
2970         (do_spec_2): Initialise this_is_linker_script.
2971         (do_spec_1): Likewise.  Handle %T construct.
2972         (eval_spec_function): Preserve this_is_linker_script.
2973         * doc/invoke.texi: Document %T construct in spec files.
2974         * config/m32c/m32c.h (LIB_SPEC): Use it.
2975
2976 2009-09-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
2977
2978         * rtl.h (PREFETCH_SCHEDULE_BARRIER_P): New macro.
2979         * sched-deps.c (sched_analyze_2): Make prefetches a hard barrier
2980         when volatile flag is set.
2981         * doc/rtl.texi (PREFETCH_SCHEDULE_BARRIER_P): Add documentation pieces.
2982
2983 2009-09-06  Eric Botcazou  <ebotcazou@adacore.com>
2984
2985         PR bootstrap/41241
2986         * combine-stack-adj.c (try_apply_stack_adjustment): Handle stores.
2987         (combine_stack_adjustments_for_block): Allow insns between stack
2988         adjustments and stores with corresponding pre-(dec|inc)rement or
2989         pre-modify operation.
2990
2991 2009-09-06  Jakub Jelinek  <jakub@redhat.com>
2992
2993         PR bootstrap/41241
2994         * combine-stack-adj.c (struct csa_memlist): Rename to...
2995         (struct csa_reflist): ... this.  Rename mem field to ref.
2996         (free_csa_memlist): Rename to...
2997         (free_csa_reflist): ... this.
2998         (record_one_stack_memref): Rename to...
2999         (record_one_stack_ref): ... this.  Handle also REG_P.
3000         (try_apply_stack_adjustment): Handle also REG_P.
3001         (struct record_stack_memrefs_data): Rename to...
3002         (struct record_stack_refs_data): ... this.  Rename memlist field to
3003         reflist.
3004         (record_stack_memrefs): Rename to...
3005         (record_stack_refs): ... this.  For DEBUG_INSNs keep traversing
3006         subexpressions instead of failing when a MEM contains SP references.
3007         For SP itself in DEBUG_INSNs queue it also onto reflist chain.
3008         (combine_stack_adjustments_for_block): Adjust for mem to ref renaming.
3009
3010 2009-09-06  Richard Guenther  <rguenther@suse.de>
3011
3012         PR middle-end/41144
3013         * tree.c (build_array_type): Do not record types marked
3014         with structural equality in the canonical type hashtable.
3015
3016 2009-09-06  Richard Guenther  <rguenther@suse.de>
3017
3018         PR middle-end/41261
3019         * tree-ssa-alias.c (refs_may_alias_p_1): Bail out for function decls.
3020
3021 2009-09-05  Richard Guenther  <rguenther@suse.de>
3022
3023         PR middle-end/41181
3024         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Use the correct type.
3025
3026 2009-09-05  Richard Guenther  <rguenther@suse.de>
3027
3028         PR debug/41273
3029         * tree-ssa-operands.c (get_tmr_operands): Pass through opf_no_vops.
3030
3031 2009-09-05  Richard Guenther  <rguenther@suse.de>
3032
3033         PR middle-end/41271
3034         * tree-ssa.c (useless_type_conversion_p): Drop qualifiers
3035         before comparing function argument types.
3036
3037 2009-09-05  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
3038
3039         PR target/41024
3040         * config/i386/mingw-w64.h (ASM_SPEC): Pass -v instead of -V to
3041         the assembler.
3042
3043 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
3044
3045         Revert:
3046         2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
3047
3048         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
3049         locators before emit_insn is called.
3050
3051 2009-09-04  Vladimir Makarov  <vmakarov@redhat.com>
3052
3053         PR bootstrap/41241
3054         * ira.c (update_equiv_reg): Revert my previous patch for the PR.
3055         * reginfo.c (resize_reg_info): Call allocate_reg_info if necessary.
3056         (reginfo_init): Don't call allocate_reg_info.
3057
3058 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
3059
3060         PR target/41262
3061         * config/alpha/alpha.c (alpha_does_function_need_gp): Use
3062         NONDEBUG_INSN_P instead of INSN_P.
3063
3064 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
3065
3066         PR debug/41225
3067         * tree-vect-stmts.c (vect_stmt_relevant_p): Skip debug uses.
3068
3069 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
3070
3071         PR target/41252
3072         * config/arm/vfp.md (*cmpdf_split_vfp): Fix src mode in the second
3073         pattern of the split.
3074
3075 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
3076
3077         * toplev.c (process_options): Move setter of flag_var_tracking
3078         before other tests that depend on it.  Move down setter of
3079         flag_rename_registers.  Don't enable var-tracking-assignments
3080         by default if selective scheduling is enabled.  Warn if both
3081         are enabled.
3082
3083 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
3084
3085         * var-tracking.c (dv_is_decl_p): Adjust NULL behavior to match
3086         comment.  Use switch statement to catch overlaps between rtx
3087         and tree codes.  Accept FUNCTION_DECLs in addition to those in...
3088         (IS_DECL_CODE): ... here. Remove.
3089         (check_value_is_not_decl): Remove.
3090         (dv_from_decl, dv_from_value): Check after conversion.
3091
3092 2009-09-04  Richard Guenther  <rguenther@suse.de>
3093
3094         PR middle-end/41257
3095         * (cgraph_finalize_compilation_unit): Move finalizing aliases
3096         after emitting tunks.  Move emitting thunks and ctors from ...
3097         (cgraph_optimize): ... here.  Remove redundant
3098         cgraph_analyze_functions.
3099         * varasm.c (find_decl_and_mark_needed): Remove no longer
3100         necessary check.
3101         (finish_aliases_1): Adjust check for thunk aliases.
3102
3103 2009-09-04  Daniel Gutson  <dgutson@codesourcery.com>
3104
3105         * config/arm/arm.md (ctzsi2): Added braces
3106         to avoid warning that broke booststrap.
3107
3108 2009-09-04  Martin Jambor  <mjambor@suse.cz>
3109
3110         PR tree-optimization/41112
3111         * tree-sra.c (build_ref_for_offset_1): Signal that we cannot
3112         handle variable-bounded arrays.
3113         (expr_with_var_bounded_array_refs_p): New function.
3114         (analyze_access_subtree): Call expr_with_var_bounded_array_refs_p.
3115
3116 2009-09-04  Wolfgang Gellerich  <gellerich@de.ibm.com>
3117
3118         * config/s390/2097.md: Removed two incorrect bypasses.
3119         (z10_fsimpdf): Fixed latency.
3120         (z10_fhex): New insn_reservation.
3121         (z10_floaddf): Fixed latency.
3122         (z10_floadsf): Fixed latency.
3123         (z10_ftrunctf): Fixed latency.
3124         (z10_ftruncdf): Fixed latency.
3125         * config/s390/s390.c (z10_cost): Fixed values.
3126         (s390_adjust_priority): Added z10 path.
3127         * config/s390/s390.md (type): Added fhex.
3128         (*mov<mode>_64dfp): Updated type attribute.
3129         (*mov<mode>_64): Updated type attribute.
3130         (*mov<mode>_31): Updated type attribute.
3131         (*mov<mode>"): Likewise.
3132         * config/s390/2084.md (x_fsimpdf): Updated condition.
3133
3134 2009-09-04  Andreas Krebbel  <krebbel1@de.ibm.com>
3135
3136         * config/s390/s390.md ("*fmadd<mode>", "*fmsub<mode>"): Enable mem
3137         RTXs in the predicate for operand 1.
3138
3139 2009-09-03  Daniel Gutson  <dgutson@codesourcery.com>
3140
3141         * config/arm/arm.md (UNSPEC_RBIT): New constant.
3142         (rbitsi2): New insn.
3143         (ctzsi2): New expand.
3144         * config/arm/arm.h (CTZ_DEFINED_VALUE_AT_ZERO): New macro.
3145
3146 2009-09-03  Martin Jambor  <mjambor@suse.cz>
3147
3148         * tree-sra.c (duplicate_expr_for_different_base): Removed.
3149         (create_artificial_child_access): Use build_ref_for_offset instead
3150         of duplicate_expr_for_different_base.
3151         (propagate_subacesses_accross_link): Likewise.
3152
3153 2009-09-03  Richard Sandiford  <rdsandiford@googlemail.com>
3154
3155         * config/mips/mips.c (USEFUL_INSN_P): Use NONDEBUG_INSN_P instead
3156         of INSN_P.
3157         (mips16e_collect_argument_saves): Skip debug instructions.
3158         (mips_74k_agen_init): Use CALL_P || JUMP_P instead of !NONJUMP_INSN_P.
3159         (mips16_lay_out_constants): Use USEFUL_INSN_P instead of INSN_P.
3160         (r10k_insert_cache_barriers): Likewise.
3161         (mips_reorg_process_insns): Likewise.
3162
3163 2009-09-03  Vladimir Makarov  <vmakarov@redhat.com>
3164
3165         PR bootstrap/41241
3166         * ira.c (update_equiv_reg): Remove check on class likely spill.
3167
3168 2009-09-03  Jakub Jelinek  <jakub@redhat.com>
3169
3170         PR debug/41236
3171         * dwarf2out.c (loc_descriptor): Don't use SUBREG_REG macro on
3172         SIGN_EXTEND or ZERO_EXTEND.  Don't assume there is a REG inside of
3173         it or SUBREG.
3174
3175         PR debug/41238
3176         * function.c (assign_parm_find_stack_rtl): Don't set mem attributes on
3177         the stack slot if it is passed by invisible reference.
3178         * var-tracking.c (vt_add_function_parameters): Handle arguments passed
3179         by invisible reference.
3180
3181 2009-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
3182
3183         * config/bfin/linux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
3184         * config/bfin/uclinux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
3185         * config/bfin/bfin.h (TARGET_SUPPORTS_SYNC_CALLS): Provide default of
3186         0.
3187         * config/bfin/sync.md: New file.
3188         * config/bfin/bfin.md: Include it.
3189         (UNSPEC_ATOMIC): New.
3190         (UNSPEC_ONES): Provide a unique number.
3191
3192         From Jie Zhang <jie.zhang@analog.com>:
3193         * config/bfin/bfin.c (ret_regs): New.
3194         (must_save_fp_p): Don't return true because of frame_pointer_needed.
3195         (must_save_rets_p): New.
3196         (n_regs_saved_by_prologue): Use must_save_rets_p instead of
3197         current_function_is_leaf.
3198         (do_link): Likewise.
3199         (do_unlink): Likewise.
3200         (expand_interrupt_handler_prologue): Use ret_regs array.
3201         (expand_interrupt_handler_epilogue): Use ret_regs array and
3202         pass return register to gen_return_internal.
3203         (bfin_expand_epilogue): Pass return register to
3204         gen_return_internal.
3205         (bfin_expand_call): Explicitly clobber RETS.
3206         * config/bfin/bfin.h (FUNCTION_RETURN_REGISTERS): Define.
3207         * config/bfin/bfin.md (call_symbol_fdpic, call_value_symbol_fdpic,
3208         call_insn_fdpic, call_value_insn_fdpic, call_symbol,
3209         call_value_symbol, call_insn, call_value_insn): Explicitly clobber
3210         RETS.
3211         (return_internal): Take a reg rtx rather than the register number.
3212
3213 2009-09-03  H.J. Lu  <hongjiu.lu@intel.com>
3214
3215         * tree-parloops.c (parallelize_loops): Cast to HOST_WIDE_INT
3216         when comparing against estimated_loop_iterations_int return.
3217
3218 2009-09-03  Richard Guenther  <rguenther@suse.de>
3219
3220         * dwarf2out.c (dwarf2out_do_cfi_asm): Remove check of
3221         eh_personality_libfunc.
3222
3223 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
3224
3225         * tree-parloops.c (separate_decls_in_region): Add space.
3226
3227 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
3228
3229         * tree-parloops.c (separate_decls_in_region): Change the condition
3230         checking if there are reductions in the loop.
3231
3232 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
3233
3234         PR tree-optimization/38275
3235         * tree-parloops.c (parallelize_loops): Replace profitability condition
3236         for expected number of iterations.
3237
3238 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
3239
3240         * doc/invoke.texi (BUILD_CONFIG): Document --with-build-config.
3241         (bootstrap-debug): Explain conditions in which it becomes default.
3242         (bootstrap-debug-big): Rather than duplicate bootstrap-debug,
3243         make it add to it.
3244
3245 2009-09-03  Namhyung Kim  <namhyung@gmail.com>
3246
3247         * doc/invoke.texi (Optimize Options): Move
3248         -finline-small-functions to the -O2 list.
3249
3250 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
3251
3252         * toplev.c (process_options): Enable var-tracking-assignments
3253         by default if var-tracking is enabled.
3254
3255 2009-09-02  David Daney  <ddaney@caviumnetworks.com>
3256
3257         * cfgbuild.c (find_bb_boundaries): Split blocks containing a
3258         barrier.
3259         * emit-rtl.c (prev_nonnote_insn_bb): New function.
3260         * rtl.h (prev_nonnote_insn_bb): Declare it.
3261
3262 2009-09-03  Diego Novillo  <dnovillo@google.com>
3263
3264         * cgraph.c (cgraph_node_for_decl): New.
3265         * cgraph.h (cgraph_node_for_decl): Declare.
3266         * tree.c (host_integerp): Return 0 if T is NULL.
3267
3268 2009-09-03  Diego Novillo  <dnovillo@google.com>
3269
3270         * tree.h (struct alias_pair): Move from varasm.c.
3271         (alias_pairs): Likewise.
3272         (TYPE_MAXVAL): Define.
3273         (TYPE_MINVAL): Define.
3274         (iterative_hash_host_wide_int): Declare.
3275         (remove_unreachable_alias_pairs): Declare.
3276         * tree-pass.h (pass_ipa_free_lang_data): Declare.
3277         * diagnostic.c (default_diagnostic_starter): Make extern.
3278         (default_diagnostic_finalizer): Make extern.
3279         * diagnostic.h (default_diagnostic_starter): Declare.
3280         (default_diagnostic_finalizer): Declare.
3281         (default_tree_printer): Declare.
3282         * toplev.c (default_tree_printer): Make extern.
3283
3284 2009-09-03  Richard Guenther  <rguenther@suse.de>
3285             Diego Novillo  <dnovillo@google.com>
3286
3287         * cgraph.c (cgraph_add_new_function): Remove gimplification.
3288         * cgraphunit.c (cgraph_expand_function): Do not emit
3289         associated thunks from here.
3290         (cgraph_emit_thunks): New.
3291         (cgraph_optimize): Call it.
3292         Return if any IPA pass finds an error.
3293         * varasm.c (finish_aliases_1): Ignore errorneous aliases used
3294         by thunks.
3295
3296 2009-09-03  Simon Baldwin  <simonb@google.com>
3297             Rafael Espindola  <espindola@google.com>
3298             Richard Guenther  <rguenther@suse.de>
3299             Doug Kwan  <dougkwan@google.com>
3300             Diego Novillo  <dnovillo@google.com>
3301
3302         * tree.c: Include tree-pass.h, langhooks-def.h,
3303         diagnostic.h, cgraph.h, timevar.h, except.h and debug.h.
3304         (free_lang_data_in_type): New.
3305         (need_assembler_name_p): New.
3306         (free_lang_data_in_block): New.
3307         (free_lang_data_in_decl): New.
3308         (struct free_lang_data_d): New.
3309         (add_tree_to_fld_list): New.
3310         (find_decls_types_r): New.
3311         (get_eh_types_for_runtime): New.
3312         (find_decls_types_in_eh_region): New.
3313         (find_decls_types_in_node): New.
3314         (find_decls_types_in_var): New.
3315         (free_lang_data_in_cgraph): New.
3316         (free_lang_data): New.
3317         (gate_free_lang_data): New.
3318         (pass_ipa_free_lang_data): New.
3319
3320 2009-09-03  Diego Novillo  <dnovillo@google.com>
3321
3322         * timevar.def (TV_IPA_FREE_LANG_DATA): Define.
3323         * langhooks.h (struct lang_hooks): Add field free_lang_data.
3324         (lang_hooks): Remove const qualifier.
3325         * ipa.c (cgraph_remove_unreachable_nodes): Call
3326         remove_unreachable_alias_pairs.
3327         * except.c (add_type_for_runtime): Check if TYPE has
3328         already been converted.
3329         (lookup_type_for_runtime): Likewise.
3330         (check_handled): Handle converted types.
3331         * varasm.c (remove_unreachable_alias_pairs): New.
3332         * gimple.c: Include demangle.h.
3333         (gimple_decl_printable_name): New.
3334         (gimple_fold_obj_type_ref): New.
3335         * gimple.h (gimple_decl_printable_name): Declare.
3336         (gimple_fold_obj_type_ref): Declare.
3337         * passes.c (init_optimization_passes): Add pass
3338         pass_ipa_free_lang_data.
3339         * langhooks-def.h (LANG_HOOKS_FREE_LANG_DATA): Define.
3340         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_FREE_LANG_DATA.
3341
3342 2009-09-03  Diego Novillo  <dnovillo@google.com>
3343
3344         * c-lang.c (lang_hooks): Remove const qualifier.
3345
3346 2009-09-02  Loren James Rittle  <ljrittle@acm.org>
3347
3348         * doc/install.texi (*-*-freebsd*): Update target information.
3349
3350 2009-09-02  Anatoly Sokolov  <aesok@post.ru>
3351
3352         * hard-reg-set.h (call_fixed_regs): Remove.
3353         * reginfo.c (call_fixed_regs): Remove.
3354         (init_reg_sets_1): Remove initialization of call_fixed_regs.
3355         (globalize_reg): Don't use call_fixed_regs.
3356         * caller-save.c (init_caller_save): Use call_fixed_reg_set instead of
3357         call_fixed_regs.
3358
3359 2009-09-01  Michael Matz  <matz@suse.de>
3360
3361         * expr.h (emit_storent_insn, expand_expr_real_1,
3362         expand_expr_real_2): Declare.
3363         * expr.c (emit_storent_insn, expand_expr_real_1,
3364         expand_expr_real_2): Export.
3365         (store_expr): Setting and evaluating dont_return_target is useless.
3366         (expand_expr_real_1, <case GOTO_EXPR, RETURN_EXPR, SWITCH_EXPR,
3367         LABEL_EXPR and ASM_EXPR>): Move to gcc_unreachable.
3368         * except.c (expand_resx_expr): Rename to ...
3369         (expand_resx_stmt): ... this.  Rewrite to take gimple statement.
3370         * except.h (expand_resx_stmt): Declare.
3371         * stmt.c: Add include gimple.h
3372         (expand_asm_expr): Rename to ...
3373         (expand_asm_stmt): ... this. Rewrite to take gimple statement.
3374         (expand_case): Rewrite to take gimple statement.
3375         * tree.h (expand_asm_stmt): Declare.
3376         (expand_case): Change prototype.
3377         * Makefile.in (stmt.o): Depend on gimple.h.
3378         * builtins.c (expand_builtin_synchronize): Build gimple asm
3379         statement, not an ASM_EXPR.
3380         * cfgexpand.c (gimple_cond_pred_to_tree, set_expr_location_r,
3381         gimple_to_tree, release_stmt_tree): Remove.
3382         (expand_gimple_cond): Don't call gimple_cond_pred_to_tree or
3383         ggc_free, but hold comparison code and operands separately.
3384         Call jumpif_1 and jumpifnot_1 instead of jumpif and jumpifnot.
3385         (expand_call_stmt, expand_gimple_stmt_1,
3386         expand_gimple_stmt): New helpers.
3387         (expand_gimple_tailcall): Don't call gimple_to_tree, expand_expr_stmt,
3388         release_stmt_tree.  Call expand_gimple_stmt instead.
3389         (expand_gimple_basic_block): Ditto.
3390
3391         * calls.c (emit_call_1): Don't look at EH regions here, make
3392         fntree parameter useless.
3393         (expand_call): New local rettype for TREE_TYPE(exp), use it
3394         throughout.  Remove local p, use addr instead.
3395         Don't look at EH regions here.
3396
3397 2009-09-02  Vladimir Makarov  <vmakarov@redhat.com>
3398
3399         * doc/invoke.texi (-fsched-pressure): Document it.
3400         (-fsched-reg-pressure-heuristic): Remove it.
3401
3402         * reload.c (ira.h): Include.
3403         (find_reloads): Add choosing reload on number of small spilled
3404         classes.
3405
3406         * haifa-sched.c (ira.h): Include.
3407         (sched_pressure_p, sched_regno_cover_class, curr_reg_pressure,
3408         saved_reg_pressure, curr_reg_live, saved_reg_live,
3409         region_ref_regs): New variables.
3410         (sched_init_region_reg_pressure_info, mark_regno_birth_or_death,
3411         initiate_reg_pressure_info, setup_ref_regs,
3412         initiate_bb_reg_pressure_info, save_reg_pressure,
3413         restore_reg_pressure, dying_use_p, print_curr_reg_pressure): New
3414         functions.
3415         (setup_insn_reg_pressure_info): New function.
3416         (rank_for_schedule): Add pressure checking and insn issue time.
3417         Remove comparison of insn reg weights.
3418         (ready_sort): Set insn reg pressure info.
3419         (update_register_pressure, setup_insn_max_reg_pressure,
3420         update_reg_and_insn_max_reg_pressure,
3421         sched_setup_bb_reg_pressure_info): New functions.
3422         (schedule_insn): Add code for printing and updating reg pressure info.
3423         (find_set_reg_weight, find_insn_reg_weight): Remove.
3424         (ok_for_early_queue_removal): Do nothing if pressure_only_p.
3425         (debug_ready_list): Print reg pressure info.
3426         (schedule_block): Ditto.  Check insn issue time.
3427         (sched_init): Set up sched_pressure_p.  Allocate and set up some
3428         reg pressure related info.
3429         (sched_finish): Free some reg pressure related info.
3430         (fix_tick_ready): Make insn always ready if pressure_p.
3431         (init_h_i_d): Don't call find_insn_reg_weight.
3432         (haifa_finish_h_i_d): Free insn reg pressure info.
3433
3434         * ira-int.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
3435         ira_memory_move_cost, ira_class_hard_regs,
3436         ira_class_hard_regs_num, ira_no_alloc_regs,
3437         ira_available_class_regs, ira_reg_class_cover_size,
3438         ira_reg_class_cover, ira_class_translate): Move to ira.h.
3439
3440         * ira-lives.c (single_reg_class): Check mode to find how many
3441         registers are necessary for operand.
3442         (ira_implicitly_set_insn_hard_regs): New.
3443
3444         * common.opt (fsched-pressure): New options.
3445         (fsched-reg-pressure-heuristic): Remove.
3446
3447         * ira.c (setup_eliminable_regset): Rename to
3448         ira_setup_eliminable_regset.  Make it external.
3449         (expand_reg_info): Pass cover class to setup_reg_classes.
3450         (ira): Call resize_reg_info instead of allocate_reg_info.
3451
3452         * sched-deps.c: Include ira.h.
3453         (implicit_reg_pending_clobbers, implicit_reg_pending_uses): New.
3454         (create_insn_reg_use, create_insn_reg_set, setup_insn_reg_uses,
3455         reg_pressure_info, insn_use_p, mark_insn_pseudo_birth,
3456         mark_insn_hard_regno_birth, mark_insn_reg_birth,
3457         mark_pseudo_death, mark_hard_regno_death, mark_reg_death,
3458         mark_insn_reg_store, mark_insn_reg_clobber,
3459         setup_insn_reg_pressure_info): New.
3460         (sched_analyze_1): Update implicit_reg_pending_uses.
3461         (sched_analyze_insn): Find implicit sets, uses, clobbers of regs.
3462         Use them to create dependencies.  Set insn reg uses and pressure
3463         info.  Process reg_pending_uses in one place.
3464         (free_deps): Free implicit sets.
3465         (remove_from_deps): Remove implicit sets if necessary.  Check
3466         implicit sets when clearing reg_last_in_use.
3467         (init_deps_global): Clear implicit_reg_pending_clobbers and
3468         implicit_reg_pending_uses.
3469
3470         * ira.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
3471         ira_memory_move_cost, ira_class_hard_regs,
3472         ira_class_hard_regs_num, ira_no_alloc_regs,
3473         ira_available_class_regs, ira_reg_class_cover_size,
3474         ira_reg_class_cover, ira_class_translate): Move from ira-int.h.
3475         (ira_setup_eliminable_regset, ira_set_pseudo_classes,
3476         ira_implicitly_set_insn_hard_regs): New prototypes.
3477
3478         * ira-costs.c (pseudo_classes_defined_p, allocno_p,
3479         cost_elements_num): New variables.
3480         (allocno_costs, total_costs): Rename to costs and
3481         total_allocno_costs.
3482         (COSTS_OF_ALLOCNO): Rename to COSTS.
3483         (allocno_pref): Rename to pref.
3484         (allocno_pref_buffer): Rename to pref_buffer.
3485         (common_classes): Rename to regno_cover_class.
3486         (COST_INDEX): New.
3487         (record_reg_classes): Set allocno attributes only if allocno_p.
3488         (record_address_regs): Ditto.  Use COST_INDEX instead of ALLOCNO_NUM.
3489         (scan_one_insn): Use COST_INDEX and COSTS instead of ALLOCNO_NUM
3490         and COSTS_OF_ALLOCNO.
3491         (print_costs): Rename to print_allocno_costs.
3492         (print_pseudo_costs): New.
3493         (process_bb_node_for_costs): Split into 2 functions with new
3494         function process_bb_for_costs.  Pass BB to process_bb_for_costs.
3495         (find_allocno_class_costs): Rename to find_costs_and_classes.  Add
3496         new parameter dump_file.  Use cost_elements_num instead of
3497         ira_allocnos_num.  Make one iteration if preferred classes were
3498         already calculated for scheduler.  Make 2 versions of code
3499         depending on allocno_p.
3500         (setup_allocno_cover_class_and_costs): Check allocno_p.  Use
3501         regno_cover_class and COSTS instead of common_classes and
3502         COSTS_OF_ALLOCNO.
3503         (init_costs, finish_costs): New.
3504         (ira_costs): Set up allocno_p and cost_elements_num.  Call
3505         init_costs and finish_costs.
3506         (ira_set_pseudo_classes): New.
3507
3508         * rtl.h (allocate_reg_info): Remove.
3509         (resize_reg_info): Change return type.
3510         (reg_cover_class): New.
3511         (setup_reg_classes): Add new parameter.
3512
3513         * sched-int.h (struct deps_reg): New member implicit_sets.
3514         (sched_pressure_p, sched_regno_cover_class): New external definitions.
3515         (INCREASE_BITS): New macro.
3516         (struct reg_pressure_data, struct reg_use_data): New.
3517         (struct _haifa_insn_data): Remove reg_weight.  Add members
3518         reg_pressure, reg_use_list, reg_set_list, and
3519         reg_pressure_excess_cost_change.
3520         (struct deps): New member implicit_sets.
3521         (pressure_p): New variable.
3522         (COVER_CLASS_BITS, INCREASE_BITS): New macros.
3523         (struct reg_pressure_data, struct reg_use_data): New.
3524         (INSN_REG_WEIGHT): Remove.
3525         (INSN_REG_PRESSURE, INSN_MAX_REG_PRESSURE, INSN_REG_USE_LIST,
3526         INSN_REG_SET_LIST, INSN_REG_PRESSURE_EXCESS_COST_CHANGE): New macros.
3527         (sched_init_region_reg_pressure_info,
3528         sched_setup_bb_reg_pressure_info): New prototypes.
3529
3530         * reginfo.c (struct reg_pref): New member coverclass.
3531         (reg_cover_class): New function.
3532         (reginfo_init, pass_reginfo_init): Move after free_reg_info.
3533         (reg_info_size): New variable.
3534         (allocate_reg_info): Make static.  Setup reg_info_size.
3535         (resize_reg_info): Use reg_info_size.  Return flag of resizing.
3536         (setup_reg_classes): Add a new parameter.  Setup cover class too.
3537
3538         * Makefile.in (reload.o, haifa-sched.o, sched-deps.o): Add ira.h to
3539         the dependencies.
3540
3541         * sched-rgn.c (deps_join): Set up implicit_sets.
3542         (schedule_region): Set up region and basic blocks pressure
3543         relative info.
3544
3545         * passes.c (init_optimization_passes): Move
3546         pass_subregs_of_mode_init before pass_sched.
3547
3548 2009-09-02  Martin Jambor  <mjambor@suse.cz>
3549
3550         * tree-sra.c (struct access): New field grp_hint.
3551         (dump_access): Dump grp_hint.
3552         (sort_and_splice_var_accesses): Set grp_hint if a group is read
3553         multiple times.
3554         (analyze_access_subtree): Only scalarize accesses with grp_hint set or
3555         those which have been specifically read and somehow written to.
3556         (propagate_subacesses_accross_link): Set grp_hint of right child and
3557         also possibly of the left child.
3558
3559 2009-09-02  Jakub Jelinek  <jakub@redhat.com>
3560
3561         * tree-object-size.c (addr_object_size): Always use object_size_type
3562         0 or 2 when determining the pointer pointed object size.
3563
3564 2009-09-02  Richard Guenther  <rguenther@suse.de>
3565
3566         Revert
3567         2009-08-31  Richard Guenther  <rguenther@suse.de>
3568
3569         * builtins.c (fold_builtin_memory_op): Use the alias oracle
3570         to query if the memory regions for memmove overlap.
3571         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
3572         asserts on pointers, instead deal with odd trees.
3573         (ptr_derefs_may_alias_p): Likewise.
3574         (refs_may_alias_p_1): Constructor bases also never alias.
3575
3576 2009-08-01  Christian Bruel  <christian.bruel@st.com>
3577
3578         Revert:
3579         2009-07-31  Christian Bruel  <christian.bruel@st.com>
3580         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
3581
3582 2009-09-01  Alexandre Oliva  <aoliva@redhat.com>
3583
3584         * doc/invoke.texi (-fvar-tracking-assignments): New.
3585         (-fvar-tracking-assignments-toggle): New.
3586         (-fdump-final-insns=file): Mark filename as optional.
3587         (--param min-nondebug-insn-uid): New.
3588         (-gdwarf-@{version}): Mention version 4.
3589         * opts.c (common_handle_option): Accept it.
3590         * tree-vrp.c (find_assert_locations_1): Skip debug stmts.
3591         * regrename.c (regrename_optimize): Drop last.  Don't count debug
3592         insns as uses.  Don't reject change because of debug insn.
3593         (do_replace): Reject DEBUG_INSN as chain starter.  Take base_regno
3594         from the chain starter, and check for inexact matches in DEBUG_INSNS.
3595         (scan_rtx_reg): Accept inexact matches in DEBUG_INSNs.
3596         (build_def_use): Simplify and fix the marking of DEBUG_INSNs.
3597         * sched-ebb.c (schedule_ebbs): Skip boundary debug insns.
3598         * fwprop.c (forward_propagate_and_simplify): ...into debug insns.
3599         * doc/gimple.texi (is_gimple_debug): New.
3600         (gimple_debug_bind_p): New.
3601         (is_gimple_call, gimple_assign_cast_p): End sentence with period.
3602         * doc/install.texi (bootstrap-debug): More details.
3603         (bootstrap-debug-big, bootstrap-debug-lean): Document.
3604         (bootstrap-debug-lib): More details.
3605         (bootstrap-debug-ckovw): Update.
3606         (bootstrap-time): New.
3607         * tree-into-ssa.c (mark_def_sites): Skip debug stmts.
3608         (insert_phi_nodes_for): Insert debug stmts.
3609         (rewrite_stmt): Take iterator.  Insert debug stmts.
3610         (rewrite_enter_block): Adjust.
3611         (maybe_replace_use_in_debug_stmt): New.
3612         (rewrite_update_stmt): Use it.
3613         (mark_use_interesting): Return early for debug stmts.
3614         * tree-ssa-loop-im.c (rewrite_bittest): Propagate DEFs into debug
3615         stmts before replacing stmt.
3616         (move_computations_stmt): Likewise.
3617         * ira-conflicts.c (add_copies): Skip debug insns.
3618         * regstat.c (regstat_init_n_sets_and_refs): Discount debug insns.
3619         (regstat_bb_compute_ri): Skip debug insns.
3620         * tree-ssa-threadupdate.c (redirection_block_p): Skip debug stmts.
3621         * tree-ssa-loop-manip.c (find_uses_to_rename_stmt,
3622         check_loop_closed_ssa_stmt): Skip debug stmts.
3623         * tree-tailcall.c (find_tail_calls): Likewise.
3624         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Likewise.
3625         * tree.h (MAY_HAVE_DEBUG_STMTS): New.
3626         (build_var_debug_value_stat): Declare.
3627         (build_var_debug_value): Define.
3628         (target_for_debug_bind): Declare.
3629         * reload.c (find_equiv_reg): Skip debug insns.
3630         * rtlanal.c (reg_used_between_p): Skip debug insns.
3631         (side_effects_p): Likewise.
3632         (canonicalize_condition): Likewise.
3633         * ddg.c (create_ddg_dep_from_intra_loop_link): Check that non-debug
3634         insns never depend on debug insns.
3635         (create_ddg_dep_no_link): Likewise.
3636         (add_cross_iteration_register_deps): Use ANTI_DEP for debug insns.
3637         Don't add inter-loop dependencies for debug insns.
3638         (build_intra_loop_deps): Likewise.
3639         (create_ddg): Count debug insns.
3640         * ddg.h (struct ddg::num_debug): New.
3641         (num_backargs): Pair up with previous int field.
3642         * diagnostic.c (diagnostic_report_diagnostic): Skip notes on
3643         -fcompare-debug-second.
3644         * final.c (get_attr_length_1): Skip debug insns.
3645         (rest_of_clean-state): Don't dump CFA_RESTORE_STATE.
3646         * gcc.c (invoke_as): Call compare-debug-dump-opt.
3647         (driver_self_specs): Map -fdump-final-insns to
3648         -fdump-final-insns=..
3649         (get_local_tick): New.
3650         (compare_debug_dump_opt_spec_function): Test for . argument and
3651         compute output name.  Compute temp output spec without flag name.
3652         Compute -frandom-seed.
3653         (OPT): Undef after use.
3654         * cfgloopanal.c (num_loop_insns): Skip debug insns.
3655         (average_num_loop_insns): Likewise.
3656         * params.h (MIN_NONDEBUG_INSN_UID): New.
3657         * gimple.def (GIMPLE_DEBUG): New.
3658         * ipa-reference.c (scan_stmt_for_static_refs): Skip debug stmts.
3659         * auto-inc-dec.c (merge_in_block): Skip debug insns.
3660         (merge_in_block): Fix whitespace.
3661         * toplev.c (flag_var_tracking): Update comment.
3662         (flag_var_tracking_assignments): New.
3663         (flag_var_tracking_assignments_toggle): New.
3664         (process_options): Don't open final insns dump file if we're not
3665         going to write to it.  Compute defaults for var_tracking.
3666         * df-scan.c (df_insn_rescan_debug_internal): New.
3667         (df_uses_record): Handle debug insns.
3668         * haifa-sched.c (ready): Initialize n_debug.
3669         (contributes_to_priority): Skip debug insns.
3670         (dep_list_size): New.
3671         (priority): Use it.
3672         (rank_for_schedule): Likewise.  Schedule debug insns as soon as
3673         they're ready.  Disregard previous debug insns to make decisions.
3674         (queue_insn): Never queue debug insns.
3675         (ready_add, ready_remove_first, ready_remove): Count debug insns.
3676         (schedule_insn): Don't reject debug insns because of issue rate.
3677         (get_ebb_head_tail, no_real_insns_p): Skip boundary debug insns.
3678         (queue_to_ready): Skip and discount debug insns.
3679         (choose_ready): Let debug insns through.
3680         (schedule_block): Check boundary debug insns.  Discount debug
3681         insns, schedule them early.  Adjust whitespace.
3682         (set_priorities): Check for boundary debug insns.
3683         (add_jump_dependencies): Use dep_list_size.
3684         (prev_non_location_insn): New.
3685         (check_cfg): Use it.
3686         * tree-ssa-loop-ivopts.c (find-interesting_users): Skip debug
3687         stmts.
3688         (remove_unused_ivs): Reset debug stmts.
3689         * modulo-sched.c (const_iteration_count): Skip debug insns.
3690         (res_MII): Discount debug insns.
3691         (loop_single_full_bb_p): Skip debug insns.
3692         (sms_schedule): Likewise.
3693         (sms_schedule_by_order): Likewise.
3694         (ps_has_conflicts): Likewise.
3695         * caller-save.c (refmarker_fn): New.
3696         (save_call_clobbered_regs): Replace regs with saved mem in
3697         debug insns.
3698         (mark_referenced_regs): Take pointer, mark and arg.  Adjust.
3699         Call refmarker_fn mark for hardregnos.
3700         (mark_reg_as_referenced): New.
3701         (replace_reg_with_saved_mem): New.
3702         * ipa-pure-const.c (check_stmt): Skip debug stmts.
3703         * cse.c (cse_insn): Canonicalize debug insns.  Skip them when
3704         searching back.
3705         (cse_extended_basic_block): Skip debug insns.
3706         (count_reg_usage): Likewise.
3707         (is_dead_reg): New, split out of...
3708         (set_live_p): ... here.
3709         (insn_live_p): Use it for debug insns.
3710         * tree-stdarg.c (check_all_va_list_escapes): Skip debug stmts.
3711         (execute_optimize_stdarg): Likewise.
3712         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
3713         * tree-ssa-propagate.c (substitute_and_fold): Don't regard
3714         changes in debug stmts as changes.
3715         * sel-sched.c (moving_insn_creates_bookkeeping_block_p): New.
3716         (moveup_expr): Don't move across debug insns.  Don't move
3717         debug insn if it would create a bookkeeping block.
3718         (moveup_expr_cached): Don't use cache for debug insns that
3719         are heads of blocks.
3720         (compute_av_set_inside_bb): Skip debug insns.
3721         (sel_rank_for_schedule): Schedule debug insns first.  Remove
3722         dead code.
3723         (block_valid_for_bookkeeping_p); Support lax searches.
3724         (create_block_for_bookkeeping): Adjust block numbers when
3725         encountering debug-only blocks.
3726         (find_place_for_bookkeeping): Deal with debug-only blocks.
3727         (generate_bookkeeping_insn): Accept no place to insert.
3728         (remove_temp_moveop_nops): New argument full_tidying.
3729         (prepare_place_to_insert): Deal with debug insns.
3730         (advance_state_on_fence): Debug insns don't start cycles.
3731         (update_boundaries): Take fence as argument.  Deal with
3732         debug insns.
3733         (schedule_expr_on_boundary): No full_tidying on debug insns.
3734         (fill_insns): Deal with debug insns.
3735         (track_scheduled_insns_and_blocks): Don't count debug insns.
3736         (need_nop_to_preserve_insn_bb): New, split out of...
3737         (remove_insn_from_stream): ... this.
3738         (fur_orig_expr_not_found): Skip debug insns.
3739         * rtl.def (VALUE): Move up.
3740         (DEBUG_INSN): New.
3741         * tree-ssa-sink.c (all_immediate_uses_same_place): Skip debug stmts.
3742         (nearest_common_dominator_of_uses): Take debug_stmts argument.
3743         Set it if debug stmts are found.
3744         (statement_sink_location): Skip debug stmts.  Propagate
3745         moving defs into debug stmts.
3746         * ifcvt.c (first_active_insn): Skip debug insns.
3747         (last_active_insns): Likewise.
3748         (cond_exec_process_insns): Likewise.
3749         (noce_process_if_block): Likewise.
3750         (check_cond_move_block): Likewise.
3751         (cond_move_convert_if_block): Likewise.
3752         (block_jumps_and_fallthru_p): Likewise.
3753         (dead_or_predicable): Likewise.
3754         * dwarf2out.c (debug_str_hash_forced): New.
3755         (find_AT_string): Add comment.
3756         (gen_label_for_indirect_string): New.
3757         (get_debug_string_label): New.
3758         (AT_string_form): Use it.
3759         (mem_loc_descriptor): Handle non-TLS symbols.  Handle MINUS , DIV,
3760         MOD, AND, IOR, XOR, NOT, ABS, NEG, and CONST_STRING.  Accept but
3761         discard COMPARE, IF_THEN_ELSE, ROTATE, ROTATERT, TRUNCATE and
3762         several operations that cannot be represented with DWARF opcodes.
3763         (loc_descriptor): Ignore SIGN_EXTEND and ZERO_EXTEND.  Require
3764         dwarf_version 4 for DW_OP_implicit_value and DW_OP_stack_value.
3765         (dwarf2out_var_location): Take during-call mark into account.
3766         (output_indirect_string): Update comment.  Output if there are
3767         label and references.
3768         (prune_indirect_string): New.
3769         (prune_unused_types): Call it if debug_str_hash_forced.
3770         More in dwarf2out.c, from Jakub Jelinek <jakub@redhat.com>:
3771         (dw_long_long_const): Remove.
3772         (struct dw_val_struct): Change val_long_long type to rtx.
3773         (print_die, attr_checksum, same_dw_val_p, loc_descriptor): Adjust for
3774         val_long_long change to CONST_DOUBLE rtx from a long hi/lo pair.
3775         (output_die): Likewise.  Use HOST_BITS_PER_WIDE_INT size of each
3776         component instead of HOST_BITS_PER_LONG.
3777         (output_loc_operands): Likewise.  For const8* assert
3778         HOST_BITS_PER_WIDE_INT rather than HOST_BITS_PER_LONG is >= 64.
3779         (output_loc_operands_raw): For const8* assert HOST_BITS_PER_WIDE_INT
3780         rather than HOST_BITS_PER_LONG is >= 64.
3781         (add_AT_long_long): Remove val_hi and val_lo arguments, add
3782         val_const_double.
3783         (size_of_die): Use HOST_BITS_PER_WIDE_INT size multiplier instead of
3784         HOST_BITS_PER_LONG for dw_val_class_long_long.
3785         (add_const_value_attribute): Adjust add_AT_long_long caller.  Don't
3786         handle TLS SYMBOL_REFs.  If CONST wraps a constant, tail recurse.
3787         (dwarf_stack_op_name): Handle DW_OP_implicit_value and
3788         DW_OP_stack_value.
3789         (size_of_loc_descr, output_loc_operands, output_loc_operands_raw):
3790         Handle DW_OP_implicit_value.
3791         (extract_int): Move prototype earlier.
3792         (mem_loc_descriptor): For SUBREG punt if inner
3793         mode size is wider than DWARF2_ADDR_SIZE.  Handle SIGN_EXTEND
3794         and ZERO_EXTEND by DW_OP_shl and DW_OP_shr{a,}.  Handle
3795         EQ, NE, GT, GE, LT, LE, GTU, GEU, LTU, LEU, SMIN, SMAX, UMIN,
3796         UMAX, SIGN_EXTRACT, ZERO_EXTRACT.
3797         (loc_descriptor): Compare mode size with DWARF2_ADDR_SIZE
3798         instead of Pmode size.
3799         (loc_descriptor): Add MODE argument.  Handle CONST_INT, CONST_DOUBLE,
3800         CONST_VECTOR, CONST, LABEL_REF and SYMBOL_REF if mode != VOIDmode,
3801         attempt to handle other expressions.  Don't handle TLS SYMBOL_REFs.
3802         (concat_loc_descriptor, concatn_loc_descriptor,
3803         loc_descriptor_from_tree_1): Adjust loc_descriptor callers.
3804         (add_location_or_const_value_attribute): Likewise.  For single
3805         location loc_lists attempt to use add_const_value_attribute
3806         for constant decls.  Add DW_AT_const_value even if
3807         NOTE_VAR_LOCATION is VAR_LOCATION with CONSTANT_P or CONST_STRING
3808         in its expression.
3809         * cfgbuild.c (inside_basic_block_p): Handle debug insns.
3810         (control_flow_insn_p): Likewise.
3811         * tree-parloops.c (eliminate_local_variables_stmt): Handle debug stmt.
3812         (separate_decls_in_region_debug_bind): New.
3813         (separate_decls_in_region): Process debug bind stmts afterwards.
3814         * recog.c (verify_changes): Handle debug insns.
3815         (extract_insn): Likewise.
3816         (peephole2_optimize): Skip debug insns.
3817         * dse.c (scan_insn): Skip debug insns.
3818         * sel-sched-ir.c (return_nop_to_pool): Take full_tidying argument.
3819         Pass it on.
3820         (setup_id_for_insn): Handle debug insns.
3821         (maybe_tidy_empty_bb): Adjust whitespace.
3822         (tidy_control_flow): Skip debug insns.
3823         (sel_remove_insn): Adjust for debug insns.
3824         (sel_estimate_number_of_insns): Skip debug insns.
3825         (create_insn_rtx_from_pattern): Handle debug insns.
3826         (create_copy_of_insn_rtx): Likewise.
3827         * sel-sched-.h (sel_bb_end): Declare.
3828         (sel_bb_empty_or_nop_p): New.
3829         (get_all_loop_exits): Use it.
3830         (_eligible_successor_edge_p): Likewise.
3831         (return_nop_to_pool): Adjust.
3832         * tree-eh.c (tre_empty_eh_handler_p): Skip debug stmts.
3833         * ira-lives.c (process_bb_node_lives): Skip debug insns.
3834         * gimple-pretty-print.c (dump_gimple_debug): New.
3835         (dump_gimple_stmt): Use it.
3836         (dump_bb_header): Skip gimple debug stmts.
3837         * regmove.c (optimize_reg_copy_1): Discount debug insns.
3838         (fixup_match_2): Likewise.
3839         (regmove_backward_pass): Likewise.  Simplify combined
3840         replacement.  Handle debug insns.
3841         * function.c (instantiate_virtual_regs): Handle debug insns.
3842         * function.h (struct emit_status): Add x_cur_debug_insn_uid.
3843         * print-rtl.h: Include cselib.h.
3844         (print_rtx): Print VALUEs.  Split out and recurse for VAR_LOCATIONs.
3845         * df.h (df_inns_rescan_debug_internal): Declare.
3846         * gcse.c (alloc_hash_table): Estimate n_insns.
3847         (cprop_insn): Don't regard debug insns as changes.
3848         (bypass_conditional_jumps): Skip debug insns.
3849         (one_pre_gcse_pass): Adjust.
3850         (one_code_hoisting_pass): Likewise.
3851         (compute_ld_motion_mems): Skip debug insns.
3852         (one_cprop_pass): Adjust.
3853         * tree-if-conv.c (tree_if_convert_stmt): Reset debug stmts.
3854         (if_convertible_stmt_p): Handle debug stmts.
3855         * init-regs.c (initialize_uninitialized_regs): Skip debug insns.
3856         * tree-vect-loop.c (vect_is_simple_reduction): Skip debug stmts.
3857         * ira-build.c (create_bb_allocnos): Skip debug insns.
3858         * tree-flow-inline.h (has_zero_uses): Discount debug stmts.
3859         (has_single_use): Likewise.
3860         (single_imm_use): Likewise.
3861         (num_imm_uses): Likewise.
3862         * tree-ssa-phiopt.c (empty_block_p): Skip debug stmts.
3863         * tree-ssa-coalesce.c (build_ssa_conflict_graph): Skip debug stmts.
3864         (create_outofssa_var_map): Likewise.
3865         * lower-subreg.c (adjust_decomposed_uses): New.
3866         (resolve_debug): New.
3867         (decompose_multiword_subregs): Use it.
3868         * tree-dfa.c (find_referenced_vars): Skip debug stmts.
3869         * emit-rtl.c: Include params.h.
3870         (cur_debug_insn_uid): Define.
3871         (set_new_first_and_last_insn): Set cur_debug_insn_uid too.
3872         (copy_rtx_if_shared_1): Handle debug insns.
3873         (reset_used_flags): Likewise.
3874         (set_used_flags): LIkewise.
3875         (get_max_insn_count): New.
3876         (next_nondebug_insn): New.
3877         (prev_nondebug_insn): New.
3878         (make_debug_insn_raw): New.
3879         (emit_insn_before_noloc): Handle debug insns.
3880         (emit_jump_insn_before_noloc): Likewise.
3881         (emit_call_insn_before_noloc): Likewise.
3882         (emit_debug_insn_before_noloc): New.
3883         (emit_insn_after_noloc): Handle debug insns.
3884         (emit_jump_insn_after_noloc): Likewise.
3885         (emit_call_insn_after_noloc): Likewise.
3886         (emit_debug_insn_after_noloc): Likewise.
3887         (emit_insn_after): Take loc from earlier non-debug insn.
3888         (emit_jump_insn_after): Likewise.
3889         (emit_call_insn_after): Likewise.
3890         (emit_debug_insn_after_setloc): New.
3891         (emit_debug_insn_after): New.
3892         (emit_insn_before): Take loc from later non-debug insn.
3893         (emit_jump_insn_before): Likewise.
3894         (emit_call_insn_before): Likewise.
3895         (emit_debug_insn_before_setloc): New.
3896         (emit_debug_insn_before): New.
3897         (emit_insn): Handle debug insns.
3898         (emit_debug_insn): New.
3899         (emit_jump_insn): Handle debug insns.
3900         (emit_call_insn): Likewise.
3901         (emit): Likewise.
3902         (init_emit): Take min-nondebug-insn-uid into account.
3903         Initialize cur_debug_insn_uid.
3904         (emit_copy_of_insn_after): Handle debug insns.
3905         * cfgexpand.c (gimple_assign_rhs_to_tree): Do not overwrite
3906         location of single rhs in place.
3907         (maybe_dump_rtl_for_gimple_stmt): Dump lineno.
3908         (floor_sdiv_adjust): New.
3909         (cell_sdiv_adjust): New.
3910         (cell_udiv_adjust): New.
3911         (round_sdiv_adjust): New.
3912         (round_udiv_adjust): New.
3913         (wrap_constant): Moved from cselib.
3914         (unwrap_constant): New.
3915         (expand_debug_expr): New.
3916         (expand_debug_locations): New.
3917         (expand_gimple_basic_block): Drop hiding redeclaration.  Expand
3918         debug bind stmts.
3919         (gimple_expand_cfg): Expand debug locations.
3920         * cselib.c: Include tree-pass.h.
3921         (struct expand_value_data): New.
3922         (cselib_record_sets_hook): New.
3923         (PRESERVED_VALUE_P, LONG_TERM_PRESERVED_VALUE_P): New.
3924         (cselib_clear_table): Move, and implemnet in terms of...
3925         (cselib_reset_table_with_next_value): ... this.
3926         (cselib_get_next_unknown_value): New.
3927         (discard_useless_locs): Don't discard preserved values.
3928         (cselib_preserve_value): New.
3929         (cselib_preserved_value_p): New.
3930         (cselib_preserve_definitely): New.
3931         (cselib_clear_preserve): New.
3932         (cselib_preserve_only_values): New.
3933         (new_cselib_val): Take rtx argument.  Dump it in details.
3934         (cselib_lookup_mem): Adjust.
3935         (expand_loc): Take regs_active in struct.  Adjust.  Silence
3936         dumps unless details are requested.
3937         (cselib_expand_value_rtx_cb): New.
3938         (cselib_expand_value_rtx): Rename and reimplment in terms of...
3939         (cselib_expand_value_rtx_1): ... this.  Adjust.  Silence dumps
3940         without details.  Copy more subregs.  Try to resolve values
3941         using a callback.  Wrap constants.
3942         (cselib_subst_to_values): Adjust.
3943         (cselib_log_lookup): New.
3944         (cselib_lookup): Call it.
3945         (cselib_invalidate_regno): Don't count preserved values as useless.
3946         (cselib_invalidate_mem): Likewise.
3947         (cselib_record_set): Likewise.
3948         (struct set): Renamed to cselib_set, moved to cselib.h.
3949         (cselib_record_sets): Adjust.  Call hook.
3950         (cselib_process_insn): Reset table when it would be cleared.
3951         (dump_cselib_val): New.
3952         (dump_cselib_table): New.
3953         * tree-cfgcleanup.c (tree_forwarded_block_p): Skip debug stmts.
3954         (remove_forwarder_block): Support moving debug stmts.
3955         * cselib.h (cselib_record_sets_hook): Declare.
3956         (cselib_expand_callback): New type.
3957         (cselib_expand_value_rtx_cb): Declare.
3958         (cselib_reset_table_with_next_value): Declare.
3959         (cselib_get_next_unknown_value): Declare.
3960         (cselib_preserve_value): Declare.
3961         (cselib_preserved_value_p): Declare.
3962         (cselib_preserve_only_values): Declare.
3963         (dump_cselib_table): Declare.
3964         * cfgcleanup.c (flow_find_cross_jump): Skip debug insns.
3965         (try_crossjump_to_edge): Likewise.
3966         (delete_unreachable_blocks): Remove dominant GIMPLE blocks after
3967         dominated blocks when debug stmts are present.
3968         * simplify-rtx.c (delegitimize_mem_from_attrs): New.
3969         * tree-ssa-live.c (remove_unused_locals): Skip debug stmts.
3970         (set_var_live_on_entry): Likewise.
3971         * loop-invariant.c (find_invariants_bb): Skip debug insns.
3972         * cfglayout.c (curr_location, last_location): Make static.
3973         (set_curr_insn_source_location): Don't avoid bouncing.
3974         (get_curr_insn_source_location): New.
3975         (get_curr_insn_block): New.
3976         (duplicate_insn_chain): Handle debug insns.
3977         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Propagate
3978         into debug stmts.
3979         * common.opt (fcompare-debug): Move to sort order.
3980         (fdump-unnumbered-links): Likewise.
3981         (fvar-tracking-assignments): New.
3982         (fvar-tracking-assignments-toggle): New.
3983         * tree-ssa-dce.c (mark_stmt_necessary): Don't mark blocks
3984         because of debug stmts.
3985         (mark_stmt_if_obviously_necessary): Mark debug stmts.
3986         (eliminate_unnecessary_stmts): Walk dominated blocks before
3987         dominators.
3988         * tree-ssa-ter.c (find_replaceable_in_bb): Skip debug stmts.
3989         * ira.c (memref_used_between_p): Skip debug insns.
3990         (update_equiv_regs): Likewise.
3991         * sched-deps.c (sd_lists_size): Accept empty list.
3992         (sd_init_insn): Mark debug insns.
3993         (sd_finish_insn): Unmark them.
3994         (sd_add_dep): Reject non-debug deps on debug insns.
3995         (fixup_sched_groups): Give debug insns group treatment.
3996         Skip debug insns.
3997         (sched_analyze_reg): Don't mark debug insns for sched before call.
3998         (sched_analyze_2): Handle debug insns.
3999         (sched_analyze_insn): Compute next non-debug insn.  Handle debug
4000         insns.
4001         (deps_analyze_insn): Handle debug insns.
4002         (deps_start_bb): Skip debug insns.
4003         (init_deps): Initialize last_debug_insn.
4004         * tree-ssa.c (target_for_debug_bind): New.
4005         (find_released_ssa_name): New.
4006         (propagate_var_def_into_debug_stmts): New.
4007         (propagate_defs_into_debug_stmts): New.
4008         (verify_ssa): Skip debug bind stmts without values.
4009         (warn_uninialized_vars): Skip debug stmts.
4010         * target-def.h (TARGET_DELEGITIMIZE_ADDRESS): Set default.
4011         * rtl.c (rtx_equal_p_cb): Handle VALUEs.
4012         (rtx_equal_p): Likewise.
4013         * ira-costs.c (scan_one_insn): Skip debug insns.
4014         (process_bb_node_for_hard_reg_moves): Likewise.
4015         * rtl.h (DEBUG_INSN_P): New.
4016         (NONDEBUG_INSN_P): New.
4017         (MAY_HAVE_DEBUG_INSNS): New.
4018         (INSN_P): Accept debug insns.
4019         (RTX_FRAME_RELATED_P): Likewise.
4020         (INSN_DELETED_P): Likewise
4021         (PAT_VAR_LOCATION_DECL): New.
4022         (PAT_VAR_LOCATION_LOC): New.
4023         (PAT_VAR_OCATION_STATUS): New.
4024         (NOTE_VAR_LOCATION_DECL): Reimplement.
4025         (NOTE_VAR_LOCATION_LOC): Likewise.
4026         (NOTE_VAR_LOCATION_STATUS): Likewise.
4027         (INSN_VAR_LOCATION): New.
4028         (INSN_VAR_LOCATION_DECL): New.
4029         (INSN_VAR_LOCATION_LOC): New.
4030         (INSN_VAR_LOCATION_STATUS): New.
4031         (gen_rtx_UNKNOWN_VAR_LOC): New.
4032         (VAR_LOC_UNKNOWN_P): New.
4033         (NOTE_DURING_CALL_P): New.
4034         (SCHED_GROUP_P): Accept debug insns.
4035         (emit_debug_insn_before): Declare.
4036         (emit_debug_insn_before_noloc): Declare.
4037         (emit_debug_insn_beore_setloc): Declare.
4038         (emit_debug_insn_after): Declare.
4039         (emit_debug_insn_after_noloc): Declare.
4040         (emit_debug_insn_after_setloc): Declare.
4041         (emit_debug_insn): Declare.
4042         (make_debug_insn_raw): Declare.
4043         (prev_nondebug_insn): Declare.
4044         (next_nondebug_insn): Declare.
4045         (delegitimize_mem_from_attrs): Declare.
4046         (get_max_insn_count): Declare.
4047         (wrap_constant): Declare.
4048         (unwrap_constant): Declare.
4049         (get_curr_insn_source_location): Declare.
4050         (get_curr_insn_block): Declare.
4051         * tree-inline.c (insert_debug_decl_map): New.
4052         (processing_debug_stmt): New.
4053         (remap_decl): Don't create new mappings in debug stmts.
4054         (remap_gimple_op_r): Don't add references in debug stmts.
4055         (copy_tree_body_r): Likewise.
4056         (remap_gimple_stmt): Handle debug bind stmts.
4057         (copy_bb): Skip debug stmts.
4058         (copy_edges_for_bb): Likewise.
4059         (copy_debug_stmt): New.
4060         (copy_debug_stmts): New.
4061         (copy_body): Copy debug stmts at the end.
4062         (insert_init_debug_bind): New.
4063         (insert_init_stmt): Take id.  Skip and emit debug stmts.
4064         (setup_one_parameter): Remap variable earlier, register debug mapping.
4065         (estimate_num_insns): Skip debug stmts.
4066         (expand_call_inline): Preserve debug_map.
4067         (optimize_inline_calls): Check for no debug_stmts left-overs.
4068         (unsave_expr_now): Preserve debug_map.
4069         (copy_gimple_seq_and_replace_locals): Likewise.
4070         (tree_function_versioning): Check for no debug_stmts left-overs.
4071         Init and destroy debug_map as needed.  Split edges unconditionally.
4072         (build_duplicate_type): Init and destroy debug_map as needed.
4073         * tree-inline.h: Include gimple.h instead of pointer-set.h.
4074         (struct copy_body_data): Add debug_stmts and debug_map.
4075         * sched-int.h (struct ready_list): Add n_debug.
4076         (struct deps): Add last_debug_insn.
4077         (DEBUG_INSN_SCHED_P): New.
4078         (BOUNDARY_DEBUG_INSN_P): New.
4079         (SCHEDULE_DEBUG_INSN_P): New.
4080         (sd_iterator_cond): Accept empty list.
4081         * combine.c (create_log_links): Skip debug insns.
4082         (combine_instructions): Likewise.
4083         (cleanup_auto_inc_dec): New.  From Jakub Jelinek: Make sure the
4084         return value is always unshared.
4085         (struct rtx_subst_pair): New.
4086         (auto_adjust_pair): New.
4087         (propagate_for_debug_subst): New.
4088         (propagate_for_debug): New.
4089         (try_combine): Skip debug insns.  Propagate removed defs into
4090         debug insns.
4091         (next_nonnote_nondebug_insn): New.
4092         (distribute_notes): Use it.  Skip debug insns.
4093         (distribute_links): Skip debug insns.
4094         * tree-outof-ssa.c (set_location_for_edge): Likewise.
4095         * resource.c (mark_target_live_regs): Likewise.
4096         * var-tracking.c: Include cselib.h and target.h.
4097         (enum micro_operation_type): Add MO_VAL_USE, MO_VAL_LOC, and
4098         MO_VAL_SET.
4099         (micro_operation_type_name): New.
4100         (enum emit_note_where): Add EMIT_NOTE_AFTER_CALL_INSN.
4101         (struct micro_operation_def): Update comments.
4102         (decl_or_value): New type.  Use instead of decls.
4103         (struct emit_note_data_def): Add vars.
4104         (struct attrs_def): Use decl_or_value.
4105         (struct variable_tracking_info_def): Add permp, flooded.
4106         (struct location_chain_def): Update comment.
4107         (struct variable_part_def): Use decl_or_value.
4108         (struct variable_def): Make var_part a variable length array.
4109         (valvar_pool): New.
4110         (scratch_regs): New.
4111         (cselib_hook_called): New.
4112         (dv_is_decl_p): New.
4113         (dv_is_value_p): New.
4114         (dv_as_decl): New.
4115         (dv_as_value): New.
4116         (dv_as_opaque): New.
4117         (dv_onepart_p): New.
4118         (dv_pool): New.
4119         (IS_DECL_CODE): New.
4120         (check_value_is_not_decl): New.
4121         (dv_from_decl): New.
4122         (dv_from_value): New.
4123         (dv_htab_hash): New.
4124         (variable_htab_hash): Use it.
4125         (variable_htab_eq): Support values.
4126         (variable_htab_free): Free from the right pool.
4127         (attrs_list_member, attrs_list_insert): Use decl_or_value.
4128         (attrs_list_union): Adjust.
4129         (attrs_list_mpdv_union): New.
4130         (tie_break_pointers): New.
4131         (canon_value_cmp): New.
4132         (unshare_variable): Return possibly-modified slot.
4133         (vars_copy_1): Adjust.
4134         (var_reg_decl_set): Adjust.  Split out of...
4135         (var_reg_set): ... this.
4136         (get_init_value): Adjust.
4137         (var_reg_delete_and_set): Adjust.
4138         (var_reg_delete): Adjust.
4139         (var_regno_delete): Adjust.
4140         (var_mem_decl_set): Split out of...
4141         (var_mem_set): ... this.
4142         (var_mem_delete_and_set): Adjust.
4143         (var_mem_delete): Adjust.
4144         (val_store): New.
4145         (val_reset): New.
4146         (val_resolve): New.
4147         (variable_union): Adjust.  Speed up merge of 1-part vars.
4148         (variable_canonicalize): Use unshared slot.
4149         (VALUED_RECURSED_INTO): New.
4150         (find_loc_in_1pdv): New.
4151         (struct dfset_merge): New.
4152         (insert_into_intersection): New.
4153         (intersect_loc_chains): New.
4154         (loc_cmp): New.
4155         (canonicalize_loc_order_check): New.
4156         (canonicalize_values_mark): New.
4157         (canonicalize_values_star): New.
4158         (variable_merge_over_cur): New.
4159         (variable_merge_over_src): New.
4160         (dataflow_set_merge): New.
4161         (dataflow_set_equiv_regs): New.
4162         (remove_duplicate_values): New.
4163         (struct dfset_post_merge): New.
4164         (variable_post_merge_new_vals): New.
4165         (variable_post_merge_perm_vals): New.
4166         (dataflow_post_merge_adjust): New.
4167         (find_mem_expr_in_1pdv): New.
4168         (dataflow_set_preserve_mem_locs): New.
4169         (dataflow_set_remove_mem_locs): New.
4170         (dataflow_set_clear_at_call): New.
4171         (onepart_variable_different_p): New.
4172         (variable_different_p): Use it.
4173         (dataflow_set_different_1): Adjust.  Make detailed dump more verbose.
4174         (track_expr_p): Add need_rtl parameter.  Don't generate rtl
4175         if not needed.
4176         (track_loc_p): Pass it true.
4177         (struct count_use_info): New.
4178         (find_use_val): New.
4179         (replace_expr_with_values): New.
4180         (log_op_type): New.
4181         (use_type): New, partially split out of...
4182         (count_uses): ... this.  Count new micro-ops.
4183         (count_uses_1): Adjust.
4184         (count_stores): Adjust.
4185         (count_with_sets): New.
4186         (VAL_NEEDS_RESOLUTION): New.
4187         (VAL_HOLDS_TRACK_EXPR): New.
4188         (VAL_EXPR_IS_COPIED): New.
4189         (VAL_EXPR_IS_CLOBBERED): New.
4190         (add_uses): Adjust.  Generate new micro-ops.
4191         (add_uses_1): Adjust.
4192         (add_stores): Generate new micro-ops.
4193         (add_with_sets): New.
4194         (find_src_status): Adjust.
4195         (find_src_set_src): Adjust.
4196         (compute_bb_dataflow): Use dataflow_set_clear_at_call.
4197         Handle new micro-ops.  Canonicalize value equivalances.
4198         (vt_find_locations): Compute total size of hash tables for
4199         dumping.  Perform merge for var-tracking-assignments.  Don't
4200         disregard single-block loops.
4201         (dump_attrs_list): Handle decl_or_value.
4202         (dump_variable): Take variable.  Deal with decl_or_value.
4203         (dump_variable_slot): New.
4204         (dump_vars): Use it.
4205         (dump_dataflow_sets): Adjust.
4206         (set_slot_part): New, extended to support one-part variables
4207         after splitting out of...
4208         (set_variable_part): ... this.
4209         (clobber_slot_part): New, split out of...
4210         (clobber_variable_part): ... this.
4211         (delete_slot_part): New, split out of...
4212         (delete_variable_part): .... this.
4213         (check_wrap_constant): New.
4214         (vt_expand_loc_callback): New.
4215         (vt_expand_loc): New.
4216         (emit_note_insn_var_location): Adjust.  Handle values.  Handle
4217         EMIT_NOTE_AFTER_CALL_INSN.
4218         (emit_notes_for_differences_1): Adjust.  Handle values.
4219         (emit_notes_for_differences_2): Likewise.
4220         (emit_notes_for_differences): Adjust.
4221         (emit_notes_in_bb): Take pointer to set.  Emit AFTER_CALL_INSN notes.
4222         Adjust.  Handle new micro-ops.
4223         (vt_add_function_parameters): Adjust.  Create and bind values.
4224         (vt_initialize): Adjust.  Initialize scratch_regs and
4225         valvar_pool, flooded and perm..  Initialize and use cselib.  Log
4226         operations.  Move some code to count_with_sets and add_with_sets.
4227         (delete_debug_insns): New.
4228         (vt_debug_insns_local): New.
4229         (vt_finalize): Release permp, valvar_pool, scratch_regs.  Finish
4230         cselib.
4231         (var_tracking_main): If var-tracking-assignments is enabled
4232         but var-tracking isn't, delete debug insns and leave.  Likewise
4233         if we exceed limits or fail the stack adjustments tests, and
4234         after all var-tracking processing.
4235         More in var-tracking, from Jakub Jelinek <jakub@redhat.com>:
4236         (dataflow_set): Add traversed_vars.
4237         (value_chain, const_value_chain): New typedefs.
4238         (value_chain_pool, value_chains): New variables.
4239         (value_chain_htab_hash, value_chain_htab_eq, add_value_chain,
4240         add_value_chains, add_cselib_value_chains, remove_value_chain,
4241         remove_value_chains, remove_cselib_value_chains): New functions.
4242         (shared_hash_find_slot_unshare_1, shared_hash_find_slot_1,
4243         shared_hash_find_slot_noinsert_1, shared_hash_find_1): New
4244         static inlines.
4245         (shared_hash_find_slot_unshare, shared_hash_find_slot,
4246         shared_hash_find_slot_noinsert, shared_hash_find): Update.
4247         (dst_can_be_shared): New variable.
4248         (unshare_variable): Unshare set->vars if shared, use shared_hash_*.
4249         Clear dst_can_be_shared.  If set->traversed_vars is non-NULL and
4250         different from set->vars, look up slot again instead of using the
4251         passed in slot.
4252         (dataflow_set_init): Initialize traversed_vars.
4253         (variable_union): Use shared_hash_*.  Use initially NO_INSERT
4254         lookup if set->vars is shared.  Don't keep slot cleared before
4255         calling unshare_variable.  Unshare set->vars if needed.  Adjust
4256         unshare_variable callers.  Clear dst_can_be_shared if needed.
4257         Even ->refcount == 1 vars must be unshared if set->vars is shared
4258         and var needs to be modified.
4259         (dataflow_set_union): Set traversed_vars during canonicalization.
4260         (VALUE_CHANGED, DECL_CHANGED): Define.
4261         (set_dv_changed, dv_changed_p): New static inlines.
4262         (track_expr_p): Clear DECL_CHANGED.
4263         (dump_dataflow_sets): Set it.
4264         (variable_was_changed): Call set_dv_changed.
4265         (emit_note_insn_var_location): Likewise.
4266         (changed_variables_stack): New variable.
4267         (check_changed_vars_1, check_changed_vars_2): New functions.
4268         (emit_notes_for_changes): Do nothing if changed_variables is
4269         empty.  Traverse changed_variables with check_changed_vars_1,
4270         call check_changed_vars_2 on each changed_variables_stack entry.
4271         (emit_notes_in_bb): Add SET argument.  Just clear it at the
4272         beginning, use it instead of local &set, don't destroy it at the end.
4273         (vt_emit_notes): Call dataflow_set_clear early on all
4274         VTI(bb)->out sets, never use them, instead use emit_notes_in_bb
4275         computed set, dataflow_set_clear also VTI(bb)->in when we are
4276         done with the basic block.  Initialize changed_variables_stack,
4277         free it afterwards.  If ENABLE_CHECKING verify that after noting
4278         differences to an empty set value_chains hash table is empty.
4279         (vt_initialize): Initialize value_chains and value_chain_pool.
4280         (vt_finalize): Delete value_chains htab, free value_chain_pool.
4281         (variable_tracking_main): Call dump_dataflow_sets before calling
4282         vt_emit_notes, not after it.
4283         * tree-flow.h (propagate_defs_into_debug_stmts): Declare.
4284         (propagate_var_def_into_debug_stmts): Declare.
4285         * df-problems.c (df_lr_bb_local_compute): Skip debug insns.
4286         (df_set_note): Reject debug insns.
4287         (df_whole_mw_reg_dead_p): Take added_notes_p argument.  Don't
4288         add notes to debug insns.
4289         (df_note_bb_compute): Adjust.  Likewise.
4290         (df_simulate_uses): Skip debug insns.
4291         (df_simulate_initialize_backwards): Likewise.
4292         * reg-stack.c (subst_stack_regs_in_debug_insn): New.
4293         (subst_stack_regs_pat): Reject debug insns.
4294         (convert_regs_1): Handle debug insns.
4295         * Makefile.in (TREE_INLINE_H): Take pointer-set.h from GIMPLE_H.
4296         (print-rtl.o): Depend on cselib.h.
4297         (cselib.o): Depend on TREE_PASS_H.
4298         (var-tracking.o): Depend on cselib.h and TARGET_H.
4299         * sched-rgn.c (rgn_estimate_number_of_insns): Discount debug insns.
4300         (init_ready_list): Skip boundary debug insns.
4301         (add_branch_dependences): Skip debug insns.
4302         (free_block_dependencies): Check for blocks with only debug insns.
4303         (compute_priorities): Likewise.
4304         * gimple.c (gss_for_code): Handle GIMPLE_DEBUG.
4305         (gimple_build_with_ops_stat): Take subcode as unsigned.  Adjust
4306         all callers.
4307         (gimple_build_debug_bind_stat): New.
4308         (empty_body_p): Skip debug stmts.
4309         (gimple_has_side_effects): Likewise.
4310         (gimple_rhs_has_side_effects): Likewise.
4311         * gimple.h (enum gimple_debug_subcode, GIMPLE_DEBUG_BIND): New.
4312         (gimple_build_debug_bind_stat): Declare.
4313         (gimple_build_debug_bind): Define.
4314         (is_gimple_debug): New.
4315         (gimple_debug_bind_p): New.
4316         (gimple_debug_bind_get_var): New.
4317         (gimple_debug_bind_get_value): New.
4318         (gimple_debug_bind_get_value_ptr): New.
4319         (gimple_debug_bind_set_var): New.
4320         (gimple_debug_bind_set_value): New.
4321         (GIMPLE_DEBUG_BIND_NOVALUE): New internal temporary macro.
4322         (gimple_debug_bind_reset_value): New.
4323         (gimple_debug_bind_has_value_p): New.
4324         (gsi_next_nondebug): New.
4325         (gsi_prev_nondebug): New.
4326         (gsi_start_nondebug_bb): New.
4327         (gsi_last_nondebug_bb): New.
4328         * sched-vis.c (print_pattern): Handle VAR_LOCATION.
4329         (print_insn): Handle DEBUG_INSN.
4330         * tree-cfg.c (remove_bb): Walk stmts backwards.  Let loc
4331         of first insn prevail.
4332         (first_stmt): Skip debug stmts.
4333         (first_non_label_stmt): Likewise.
4334         (last_stmt): Likewise.
4335         (has_zero_uses_1): New.
4336         (single_imm_use_1): New.
4337         (verify_gimple_debug): New.
4338         (verify_types_in_gimple_stmt): Handle debug stmts.
4339         (verify_stmt): Likewise.
4340         (debug_loop_num): Skip debug stmts.
4341         (remove_edge_and_dominated_blocks): Remove dominators last.
4342         * tree-ssa-reasssoc.c (rewrite_expr_tree): Propagate into debug stmts.
4343         (linearize_expr): Likewise.
4344         * config/i386/i386.c (ix86_delegitimize_address): Call
4345         default implementation.
4346         * config/ia64/ia64.c (ia64_safe_itanium_class): Handle debug insns.
4347         (group_barrier_needed): Skip debug insns.
4348         (emit_insn_group_barriers): Likewise.
4349         (emit_all_insn_group_barriers): Likewise.
4350         (ia64_variable_issue): Handle debug insns.
4351         (ia64_dfa_new_cycle): Likewise.
4352         (final_emit_insn_group_barriers): Skip debug insns.
4353         (ia64_dwarf2out_def_steady_cfa): Take frame argument.  Don't
4354         def cfa without frame.
4355         (process_set): Likewise.
4356         (process_for_unwind_directive): Pass frame on.
4357         * config/rs6000/rs6000.c (TARGET_DELEGITIMIZE_ADDRESS): Define.
4358         (rs6000_delegitimize_address): New.
4359         (rs6000_debug_adjust_cost): Handle debug insns.
4360         (is_microcoded_insn): Likewise.
4361         (is_cracked_insn): Likewise.
4362         (is_nonpipeline_insn): Likewise.
4363         (insn_must_be_first_in_group): Likewise.
4364         (insn_must_be_last_in_group): Likewise.
4365         (force_new_group): Likewise.
4366         * cfgrtl.c (rtl_split_block): Emit INSN_DELETED note if block
4367         contains only debug insns.
4368         (rtl_merge_blocks): Skip debug insns.
4369         (purge_dead_edges): Likewise.
4370         (rtl_block_ends_with_call_p): Skip debug insns.
4371         * dce.c (deletable_insn_p): Handle VAR_LOCATION.
4372         (mark_reg_dependencies): Skip debug insns.
4373         * params.def (PARAM_MIN_NONDEBUG_INSN_UID): New.
4374         * tree-ssanames.c (release_ssa_name): Propagate def into debug stmts.
4375         * tree-ssa-threadedge.c
4376         (record_temporary_equivalences_from_stmts): Skip debug stmts.
4377         * regcprop.c (replace_oldest_value_addr): Skip debug insns.
4378         (replace_oldest_value_mem): Use ALL_REGS for debug insns.
4379         (copyprop_hardreg_forward_1): Handle debug insns.
4380         * reload1.c (reload): Skip debug insns.  Replace unassigned
4381         pseudos in debug insns with their equivalences.
4382         (eliminate_regs_in_insn): Skip debug insns.
4383         (emit_input_reload_insns): Skip debug insns at first, adjust
4384         them later.
4385         * tree-ssa-operands.c (add_virtual_operand): Reject debug stmts.
4386         (get_indirect_ref_operands): Pass opf_no_vops on.
4387         (get_expr_operands): Likewise.  Skip debug stmts.
4388         (parse_ssa_operands): Scan debug insns with opf_no_vops.
4389
4390 2009-09-01  Richard Henderson  <rth@redhat.com>
4391
4392         * tree-ssa-ccp.c (ccp_initialize): Make sure to simulate
4393         stmt_ends_pp_p statements at least once.
4394         * tree-vrp.c (vrp_initialize): Likewise.
4395         (vrp_visit_stmt): Be prepared for non-interesting stmts.
4396
4397 2009-09-01  Dodji Seketeli  <dodji@redhat.com>
4398
4399         PR bootstrap/41205
4400         Fix AIX bootstrap after PR debug/30161
4401         * dwarf2out.c (make_ith_pack_parameter_name): Don't used strnlen
4402         that is a GNU extension.
4403         (tmpl_value_parm_die_table): Move the definition of this global
4404         outside #ifdef DWARF2_DEBUGGING_INFO region.
4405
4406 2009-09-01  Richard Guenther  <rguenther@suse.de>
4407
4408         * tree.c (tree_expr_size): New function.
4409         * tree.h (tree_expr_size): Declare.
4410         * rtlanal.c (rtx_addr_can_trap_p_1): Adjust comment.
4411         * builtins.c (fold_builtin_memory_op): Use tree_expr_size.
4412         * langhooks.c (lhd_expr_size): Remove.
4413         * langhooks.h (struct lang_hooks): Remove expr_size.
4414         * explow.c (expr_size): Use tree_expr_size.
4415         (int_expr_size): Likewise.
4416         * langhooks-def.h (lhd_expr_size): Remove.
4417         (LANG_HOOKS_EXPR_SIZE): Likewise.
4418         (LANG_HOOKS_INITIALIZER): Adjust.
4419
4420 2009-09-01  Richard Guenther  <rguenther@suse.de>
4421
4422         * tree-flow.h (mark_addressable): Move declaration ...
4423         * tree.h (mark_addressable): ... here.
4424         * stmt.c (expand_asm_operands): Use mark_addressable, not
4425         lang_hooks.mark_addressable.
4426         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
4427         LANG_HOOKS_MARK_ADDRESSABLE.
4428         * langhooks.h (struct lang_hooks): Remove mark_addressable langhook.
4429         * c-objc-common.h (LANG_HOOKS_MARK_ADDRESSABLE): Remove.
4430
4431 2009-08-31  Chris Demetriou  <cgd@google.com>
4432
4433         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Never
4434         vectorize if not TARGET_SSE2.
4435
4436 2009-08-31  DJ Delorie  <dj@redhat.com>
4437
4438         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Exclude coprocessor
4439         registers if no coprocessor is enabled.
4440
4441 2009-08-31  Dodji Seketeli  <dodji@redhat.com>
4442
4443         PR debug/30161
4444         * cgraph.h (cgraph_get_node): Declare ...
4445         * cgraph.c (cgraph_get_node): ... new function.
4446         * dwarf2out.c (gen_generic_params_dies,
4447         generic_parameter_die, tree_add_const_value_attribute_for_decl,
4448         make_ith_pack_parameter_name,
4449         append_entry_to_tmpl_value_parm_die_table,
4450         gen_remaining_tmpl_value_param_die_attribute): New functions.
4451         (gen_subprogram_die): Generate debug info for template parameters
4452         if debug info level is higher than DINFO_LEVEL_TERSE.
4453         Use tree_add_const_value_attribute_for_decl instead of
4454         tree_add_const_value_attribute.
4455         (gen_const_die): Use tree_add_const_value_attribute_for_decl
4456         instead of tree_add_const_value_attribute.
4457         (gen_struct_or_union_type_die): Generate debug
4458         info for template parameters if debug info level is higher than
4459         DINFO_LEVEL_TERSE.
4460         (tree_add_const_value_attribute): Handle integral and pointer
4461         constants. Update comment.
4462         (dwarf_tag_name): Support DW_TAG_GNU_template_template_param.
4463         (dwarf_attr_name): Support DW_AT_GNU_template_name.
4464         (reference_to_unused): Fix thinko. Remove redundant predicates from
4465         tests.
4466         (tree_add_const_value_attribute): Make this work for constant
4467         expressions only.
4468         tree_add_const_value_attribute_for_decl is to be used for variable
4469         DECLs now.
4470         (add_location_or_const_value_attribute): Use
4471         tree_add_const_value_attribute_for_decl now.
4472         (dwarf2out_finish): Emit the DW_AT_const_value attribute of
4473         DW_TAG_template_value_param DIEs after function DIEs have been
4474         emitted.
4475         * langhooks.h (lang_hooks_for_types): Add
4476         get_argument_pack_elems.
4477         (lang_hooks_for_decls): Add generic_generic_parameter_decl_p.
4478         (lang_hooks): Added get_innermost_generic_parms,
4479         get_innermost_generic_args.
4480         * langhooks-def.h (LANG_HOOKS_GET_INNERMOST_GENERIC_PARMS,
4481         LANG_HOOKS_GET_INNERMOST_GENERIC_ARGS,
4482         LANG_HOOKS_GET_ARGUMENT_PACK_ELEMS,
4483         LANG_HOOKS_GENERIC_GENERIC_PARAMETER_DECL_P): New language hooks.
4484
4485 2009-08-31  DJ Delorie  <dj@redhat.com>
4486
4487         * config/mep/mep.c (machine_function): Add frame_locked flag.  Set
4488         it once we start generating the prologue or epilogue.
4489         (mep_call_saves_register): If the frame is locked, re-use
4490         cached values.
4491         (mep_assign_save_slots): New, broken out from mep_expand_prologue.
4492         (mep_expand_prologue): Call it.
4493         (mep_expand_epilogue): Likewise.
4494         (mep_start_function): Use the same logic as mep_expand_prologue.
4495         (mep_pass_by_reference): Make logic more readable.
4496         (mep_return_in_memory): Zero-sized objects are passed in memory.
4497         (mep_reorg_noframe): Make sure we have accurate REG_DEAD notes.
4498
4499 2009-08-31  Richard Guenther  <rguenther@suse.de>
4500
4501         * builtins.c (fold_builtin_memory_op): Use the alias oracle
4502         to query if the memory regions for memmove overlap.
4503         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
4504         asserts on pointers, instead deal with odd trees.
4505         (ptr_derefs_may_alias_p): Likewise.
4506         (refs_may_alias_p_1): Constructor bases also never alias.
4507
4508 2009-08-31  Gerald Pfeifer  <gerald@pfeifer.com>
4509
4510         * doc/install.texi (Final install): Adjust reference on where to
4511         order printed manuals.
4512
4513 2009-08-30  Olivier Hainque  <hainque@adacore.com>
4514
4515         * dwarf2out.c (switch_to_frame_table_section): Move
4516         definition prior to first use.
4517
4518 2009-08-30  Richard Guenther  <rguenther@suse.de>
4519
4520         PR tree-optimization/41186
4521         * tree-ssa-alias.c (ptr_deref_may_alias_ref_p): Remove.
4522         (ao_ref_init_from_ptr_and_size): New function.
4523         (ref_maybe_used_by_call_p_1): Be more precise tracking
4524         used ranges for builtin functions.
4525         (ref_maybe_used_by_call_p): Adjust.
4526         (call_may_clobber_ref_p_1): Be more precise tracking clobbered
4527         ranges for builtin functions.
4528         * tree-ssa-alias.h (ao_ref_init_from_ptr_and_size): Declare.
4529
4530 2009-08-30  Alan Modra  <amodra@bigpond.net.au>
4531
4532         PR target/41081
4533         * fwprop.c (get_reg_use_in): Delete.
4534         (free_load_extend): New function.
4535         (forward_propagate_subreg): Use it.
4536
4537 2009-08-29  Kaz Kojima  <kkojima@gcc.gnu.org>
4538
4539         * config.gcc (sh*-*-elf): Add superh stuff only for sh*-superh-elf.
4540
4541 2009-08-29  Kai Tietz<kai.tietz@onevision.com>
4542
4543         PR/41184
4544         * config/i386.c (ix86_expand_epilogue): Correct stack adjustment for
4545         padding.
4546
4547 2009-08-29  Douglas B Rupp  <rupp@gnat.com>
4548
4549         * crtstuff.c (__do_global_dtors_aux): Use atexit if no
4550         fini or fini_array section.
4551
4552 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
4553
4554         * graphite-dependences.c (graphite_legal_transform_bb): Call
4555         pbb_remove_duplicate_pdrs.
4556         * graphite-poly.c (can_collapse_pdr): Removed.
4557         (pdr_find_duplicate): Removed.
4558         (can_collapse_pdrs): New.
4559         (pbb_remove_duplicate_pdrs): New.
4560         (new_poly_dr): Do not look for duplicates.
4561         * graphite-poly.h (struct poly_bb): New field pdr_duplicates_removed.
4562         (PBB_PDR_DUPLICATES_REMOVED): New.
4563         (pbb_remove_duplicate_pdrs): Declared.
4564
4565 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
4566
4567         * graphite-interchange.c (pbb_interchange_profitable_p): Adjust
4568         the strides by multiplying by PDR_NB_REFS.
4569         * graphite-poly.c (can_collapse_pdr): New.
4570         (pdr_find_duplicate): New.
4571         (new_poly_dr): Call pdr_find_duplicate.  Collapse duplicate PDRs.
4572         Initialize PDR_NB_REFS.
4573         * graphite-poly.h (struct poly_dr): Add field nb_refs.
4574         (PDR_NB_REFS): New.
4575         (new_poly_dr): Number of subscripts is a graphite_dim_t.
4576
4577 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
4578
4579         PR middle-end/40965
4580         * graphite-poly.c (apply_poly_transforms): Remove legality test before
4581         any transform.
4582
4583 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
4584
4585         * graphite-dependences.c (pddr_original_scattering): Return NULL
4586         for read-read dependence relations.
4587         * graphite-poly.h (enum poly_dr_type): Fix comment.
4588         (pdr_read_p): New.
4589         (pdr_write_p): New.
4590         (pdr_may_write_p): New.
4591
4592 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
4593
4594         * graphite-poly.h (enum POLY_DR_TYPE): Renamed poly_dr_type.
4595         (struct poly_dr): Same.
4596         (new_poly_dr): Same.
4597         * graphite-poly.c (new_poly_dr): Same.
4598         * graphite-dependences.c (dot_deps): Disable call to system.
4599
4600 2009-08-28  Cary Coutant  <ccoutant@google.com>
4601
4602         PR debug/41063
4603         * dwarf2out.c (gen_type_die_with_usage): Use proper context for
4604         struct/union/enum types local to a function.
4605
4606 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
4607             Sebastian Pop  <sebastian.pop@amd.com>
4608
4609         * graphite-blocking.c (pbb_strip_mine_loop_depth): Renamed
4610         pbb_strip_mine_time_depth.  Changed the implementation so that
4611         transformation is expressed as a transformation on
4612         time (scatttering) dimensions.  Also, ensures that the 2d+1
4613         scheduling format is preserved.
4614         (pbb_strip_mine_profitable_p): Profitability is based on the
4615         iteration number of a given time (scattering) dimension,
4616         and not on a original loop depth dimension.
4617         (pbb_strip_mine): Call pbb_number_of_iterations_at_time.
4618         (pbb_do_strip_mine): Call psct_dynamic_dim.
4619         * graphite-poly.c (pbb_number_of_iterations_at_time): New.
4620         * graphite-poly.h (pbb_number_of_iterations_at_time): Declared.
4621         (pbb_nb_dynamic_scattering_transform): New.
4622         (psct_dynamic_dim): New.
4623
4624 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
4625
4626         * graphite-ppl.c (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
4627         * graphite-ppl.h (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
4628         * graphite-poly.c (pbb_number_of_iterations): Rename ppl_max_for_le.
4629         * graphite-interchange.c (build_linearized_memory_access): Same.
4630         (memory_stride_in_loop): Same.
4631
4632 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
4633
4634         * graphite-dependences.c (pddr_original_scattering): New.
4635         (graphite_legal_transform_dr): Call pddr_original_scattering.
4636         (dot_deps_1): New.
4637         (dot_deps): New.
4638         * graphite-dependences.h (dot_deps): Declared.
4639         * graphite-poly.c (new_poly_dr): Initialize PDR_ID.
4640         (print_pdr): Print PDR_ID.
4641         * graphite-poly.h (struct poly_dr): Add field id.
4642         (PDR_ID): New.
4643         (pbb_index): New.
4644         * graphite-scop-detection.c (dot_all_scops_1): Cleanup comment.
4645
4646 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
4647
4648         * graphite-dependences.c (graphite_carried_dependence_level_k): Do
4649         not delete the original dependence relation.
4650
4651 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
4652
4653         * graphite-dependences.c (new_poly_dr_pair): Renamed new_poly_ddr.
4654         (eq_poly_dr_pair_p): Renamed eq_poly_ddr_p.
4655         (hash_poly_dr_pair_p): Renamed hash_poly_ddr_p.
4656         (free_poly_ddr): New.
4657         (pddr_is_empty): New.
4658         (dependence_polyhedron_1): Now returns a poly_ddr_p.
4659         (dependence_polyhedron): Same.  Remove useless gcc_assert.
4660         Remove fprintfs.
4661         (graphite_legal_transform_dr): Call pddr_is_empty and free_poly_ddr.
4662         (graphite_carried_dependence_level_k): Call pddr_is_empty.
4663         * graphite-dependences.h (enum poly_dependence_kind): New.
4664         (poly_dr_pair): Renamed poly_ddr.  Added a field kind.
4665         (PDRP_SOURCE): Renamed PDDR_SOURCE.
4666         (PDRP_SINK): Renamed PDDR_SINK.
4667         (PDRP_DDP): Renamed PDDR_DDP.
4668         (PDDR_KIND): New.
4669         (free_poly_ddr): Declared.
4670         * graphite-poly.c (new_scop): Use the new hash function names.
4671         * graphite-poly.h (struct scop): Renamed field original_pdr_pairs
4672         into original_pddrs.
4673         (SCOP_ORIGINAL_PDR_PAIRS): Renamed SCOP_ORIGINAL_PDDRS.
4674
4675 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
4676
4677         * cfgloopmanip.c (create_empty_loop_on_edge): Generate upper
4678         bounds with LT_EXPR to make niter analysis more precise on code
4679         generated by Graphite.
4680
4681 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
4682
4683         * graphite-dependences.c (graphite_legal_transform_dr): Fix formatting.
4684         (graphite_legal_transform_bb): Same.
4685         (poly_drs_may_alias_p): Same.
4686
4687 2009-08-28  Richard Guenther  <rguenther@suse.de>
4688
4689         * tree.def: Remove note about obsolete TYPE_NONCOPIED_PARTS.
4690
4691 2009-08-28  Jan Beulich  <jbeulich@novell.com>
4692
4693         * config/i386/netware.c: Include langhooks.h.
4694         (i386_nlm_encode_section_info): Simplify.
4695         (netware_override_options): Delete.
4696         * config/i386/netware.h (netware_override_options): Delete
4697         declaration.
4698         (OVERRIDE_OPTIONS): Delete definition.
4699         (SUBTARGET_OVERRIDE_OPTIONS): Define.
4700         (ASM_COMMENT_START): Define.
4701         * config/i386/nwld.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Define.
4702
4703 2009-08-28  Jan Beulich  <jbeulich@novell.com>
4704
4705         * configure.ac: For in-tree ld, do a plain version check to
4706         determine whether comdat groups are supported.
4707         * configure: Regenerate.
4708
4709 2009-08-28  Olivier Hainque  <hainque@adacore.com>
4710
4711         * collect2.c (DO_COLLECT_EXPORT_LIST): New internal macro,
4712         always defined.  Reflect definition or absence of such for
4713         COLLECT_EXPORT_LIST.  Readability helper.
4714         (scanfilter): New enum, to help control what symbols
4715         are to be considered or ignored by scan_prog_file.
4716         (enum pass): Rename as "scanpass", moved together with scanfilter
4717         prior to scan_prog_file's prototype.
4718         (scan_prog_file): Accept and honor scanpass and scanfilter arguments.
4719         Group prototype with the scanpass/scanfilter definitions, factorize
4720         head comments for the several implementations at the prototype.
4721         (main): Reorganize the first pass link control to let AIX
4722         drag only the needed frame tables in executables.  Prevent
4723         frame tables collection during the scan aimed at static ctors.
4724         Pre-link and scan for frame tables later to compensate.
4725         * doc/tm.texi (ASM_OUTPUT_DWARF_TABLE_REF): New macro.
4726         A C statement to issue assembly directives that create a reference
4727         to the given DWARF table identifier label from the current function
4728         section.
4729         * dwarf2out.c (switch_to_eh_frame_section): Add a BACK argument
4730         to differentiate first time section entry.  Only emit a .data
4731         tables start identifier label the first time around.
4732         (switch_to_frame_table_section): New function.  Helper for
4733         output_call_frame_info to switch possibly BACK into the eh_frame
4734         or the debug_frame section depending on FOR_EH.
4735         (output_call_frame_info): Use helper to first enter the proper
4736         frame section.
4737         (output_fde): Use ASM_OUTPUT_DWARF_TABLE_REF when defined to
4738         emit a link to the frame table start label from each function
4739         section.
4740         * config/rs6000/rs6000.c (rs6000_aix_asm_output_dwarf_table_ref):
4741         New function.  Implementation of ASM_OUTPUT_DWARF_TABLE_REF.
4742         * config/rs6000/rs6000-protos.h: Declare it.
4743         * config/rs6000/aix.h (ASM_OUTPUT_DWARF_TABLE_REF): Define.
4744
4745 2009-08-27  Kaz Kojima  <kkojima@gcc.gnu.org>
4746
4747         * config/sh/sh.c (split_branches): Check the result of
4748         next_active_insn.
4749
4750 2009-08-27  Steve Ellcey  <sje@cup.hp.com>
4751
4752         * config/ia64/hpux.h (LIB_SPEC): Add -lrt for when
4753         using -pthread -fopenmp
4754
4755 2009-08-27  Gerald Pfeifer  <gerald@pfeifer.com>
4756
4757         * doc/service.texi (service directory): Update URL.
4758
4759 2009-08-27  Uros Bizjak  <ubizjak@gmail.com>
4760
4761         PR rtl-optimization/40861
4762         * simplify-rtx.c (simplify_subreg): Do not call simplify_gen_subreg to
4763         extract word from a multi-word subreg for negative byte positions.
4764
4765 2009-08-27  Tristan Gingold  <gingold@adacore.com>
4766             Douglas B Rupp  <rupp@gnat.com>
4767
4768         * config/ia64/ia64.c (ia64_attribute_table): Add "common_object" entry.
4769         (SECTION_VMS_OVERLAY): Define.
4770         (ia64_vms_common_object_attribute): Added.  Handle the "common_object"
4771         attribute.
4772         (ia64_vms_elf_asm_named_section): Added.  Generate .section pseudo-op
4773         for common_object.
4774         (ia64_vms_output_aligned_decl_common): Added.  Generate pseudo-op for
4775         common_object declarations.
4776         (ia64_section_type_flags): Set section flag for common_object.
4777         * config/ia64/ia64-protos.h
4778         (ia64_vms_output_aligned_decl_common): Declare.
4779         (ia64_vms_elf_asm_named_section): Declare.
4780
4781 2009-08-27  Michael Matz  <matz@suse.de>
4782
4783         * expr.c (expand_expr_real_2): New function taking exploded
4784         unary or binary expression, split out from ...
4785         (expand_expr_real_1): ... here.  Move over all unary/binary
4786         switch parts to above function, in particular these codes:
4787         PAREN_EXPR, NOP_EXPR, CONVERT_EXPR, POINTER_PLUS_EXPR, PLUS_EXPR,
4788         MINUS_EXPR, MULT_EXPR, TRUNC_DIV_EXPR, FLOOR_DIV_EXPR, CEIL_DIV_EXPR,
4789         ROUND_DIV_EXPR, EXACT_DIV_EXPR, RDIV_EXPR, TRUNC_MOD_EXPR,
4790         FLOOR_MOD_EXPR, CEIL_MOD_EXPR, ROUND_MOD_EXPR, FIXED_CONVERT_EXPR,
4791         FIX_TRUNC_EXPR, FLOAT_EXPR, NEGATE_EXPR, ABS_EXPR, MAX_EXPR, MIN_EXPR,
4792         BIT_NOT_EXPR, TRUTH_AND_EXPR, BIT_AND_EXPR, TRUTH_OR_EXPR,
4793         BIT_IOR_EXPR, TRUTH_XOR_EXPR, BIT_XOR_EXPR, LROTATE_EXPR, RROTATE_EXPR,
4794         LSHIFT_EXPR, RSHIFT_EXPR, LT_EXPR, LE_EXPR, GT_EXPR, GE_EXPR, EQ_EXPR,
4795         NE_EXPR, UNORDERED_EXPR, ORDERED_EXPR, UNLT_EXPR, UNLE_EXPR, UNGT_EXPR,
4796         UNGE_EXPR, UNEQ_EXPR, LTGT_EXPR, TRUTH_NOT_EXPR, COMPLEX_EXPR,
4797         WIDEN_SUM_EXPR, REDUC_MAX_EXPR, REDUC_MIN_EXPR, REDUC_PLUS_EXPR,
4798         VEC_EXTRACT_EVEN_EXPR, VEC_EXTRACT_ODD_EXPR, VEC_INTERLEAVE_HIGH_EXPR,
4799         VEC_INTERLEAVE_LOW_EXPR, VEC_LSHIFT_EXPR, VEC_RSHIFT_EXPR,
4800         VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR, VEC_UNPACK_FLOAT_HI_EXPR,
4801         VEC_UNPACK_FLOAT_LO_EXPR, VEC_WIDEN_MULT_HI_EXPR,
4802         VEC_WIDEN_MULT_LO_EXPR, VEC_PACK_TRUNC_EXPR, VEC_PACK_SAT_EXPR,
4803         VEC_PACK_FIX_TRUNC_EXPR.
4804         (<case PAREN_EXPR>): Call set_mem_attributes() with type, not the
4805         full expression.
4806
4807 2009-08-27  Richard Guenther  <rguenther@suse.de>
4808
4809         * gengtype.c (main): Handle uint64_t.
4810         * ipa-utils.c (get_base_var): Indent properly.
4811         * tree-ssa-live.c (debug_scope_block): New function.
4812         * tree-flow.h (debug_scope_block): Declare.
4813         * tree-ssa-copy.c (replace_exp_1): Add vertical space.
4814         * basic-block.h (enum profile_status): Rename to
4815         enum profile_status_d.
4816         (x_profile_status): Adjust type.
4817
4818 2009-08-27  Dodji Seketeli  <dodji@redhat.com>
4819
4820         PR debug/41170
4821         * dwarf2out.c (get_context_die): Declare this static function.
4822         (gen_type_die_with_usage): Make sure a DIE is a generated for
4823         the context of a typedef.
4824
4825 2009-08-26  Anatoly Sokolov  <aesok@post.ru>
4826
4827         * doc/invoke.texi (AVR Options): Remove documentation of -minit-stack
4828         switch.
4829
4830 2009-08-26  Richard Sandiford  <rdsandiford@googlemail.com>
4831
4832         * config/mips/mips-protos.h (mips_output_sync): Declare.
4833         (mips_sync_loop_insns): Likewise.
4834         (mips_output_sync_loop): Replace first two parameters with an rtx.
4835         * config/mips/mips.c (mips_multi_member): New structure.
4836         (mips_multi_members): New variable.
4837         (mips_multi_start): New function.
4838         (mips_multi_add): Likewise.
4839         (mips_multi_add_insn): Likewise.
4840         (mips_multi_add_label): Likewise.
4841         (mips_multi_last_index): Likewise.
4842         (mips_multi_copy_insn): Likewise.
4843         (mips_multi_set_operand): Likewise.
4844         (mips_multi_write): Likewise.
4845         (mips_print_operand_punctuation): Remove '%|' and '%-'.
4846         (mips_init_print_operand_punct): Update accordingly.
4847         (mips_start_ll_sc_sync_block): New function.
4848         (mips_end_ll_sc_sync_block): Likewise.
4849         (mips_output_sync): Likewise.
4850         (mips_sync_insn1_template): Likewise.
4851         (mips_sync_insn2_template): Likewise.
4852         (mips_get_sync_operand): Likewise.
4853         (mips_process_sync_loop): Likewise.
4854         (mips_output_sync_loop): Use mips_process_sync_loop.
4855         (mips_sync_loop_insns): New function.
4856         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Delete.
4857         (MIPS_COMPARE_AND_SWAP_12): Likewise.
4858         (MIPS_COMPARE_AND_SWAP_12_ZERO_OP): Likewise.
4859         (MIPS_COMPARE_AND_SWAP_12_NONZERO_OP): Likewise.
4860         (MIPS_SYNC_OP, MIPS_SYNC_OP_12): Likewise.
4861         (MIPS_SYNC_OP_12_AND, MIPS_SYNC_OP_12_XOR): Likewise.
4862         (MIPS_SYNC_OLD_OP_12): Likewise.
4863         (MIPS_SYNC_OLD_OP_12_AND, MIPS_SYNC_OLD_OP_12_XOR): Likewise.
4864         (MIPS_SYNC_NEW_OP_12): Likewise.
4865         (MIPS_SYNC_NEW_OP_12_AND, MIPS_SYNC_NEW_OP_12_XOR): Likewise.
4866         (MIPS_SYNC_OLD_OP, MIPS_SYNC_NEW_OP): Likewise.
4867         (MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND, MIPS_SYNC_NEW_NAND): Likewise.
4868         (MIPS_SYNC_EXCHANGE, MIPS_SYNC_EXCHANGE_12): Likewise.
4869         (MIPS_SYNC_EXCHANGE_12_ZERO_OP): Likewise.
4870         (MIPS_SYNC_EXCHANGE_12_NONZER_OP): Likewise.
4871         * config/mips/mips.md (sync_mem): New attribute.
4872         (sync_oldval, sync_newval, sync_inclusive_mask): Likewise.
4873         (sync_exclusive_mask, sync_required_oldval): Likewise.
4874         (sync_insn1_op2, sync_insn1, sync_insn2): Likewise.
4875         (sync_release_barrier): Likewise.
4876         (length): Handle sync loops.
4877         (sync): Use mips_output_sync.
4878         * config/mips/sync.md (*memory_barrier): Use mips_output_sync.
4879         (sync_compare_and_swap<mode>): Set the new sync_* attributes
4880         and use mips_output_sync_loop.
4881         (compare_and_swap_12, sync_add<mode>, sync_<optab>_12): Likewise.
4882         (sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12): Likewise.
4883         (sync_old_nand_12, sync_new_nand_12, sync_sub<mode>): Likewise.
4884         (sync_old_add<mode>, sync_old_sub<mode>): Likewise.
4885         (sync_new_add<mode>, sync_new_sub<mode>): Likewise.
4886         (sync_<optab><mode>, sync_old_<optab><mode>): Likewise.
4887         (sync_new_<optab><mode>, sync_nand<mode>): Likewise.
4888         (sync_old_nand<mode>, sync_new_nand<mode>): Likewise.
4889         (sync_lock_test_and_set<mode>, test_and_set_12): Likewise.
4890
4891 2009-08-26  Richard Guenther  <rguenther@suse.de>
4892
4893         PR middle-end/41163
4894         * gimplify.c (gimplify_addr_expr): Canonicalize ADDR_EXPRs if
4895         the types to not match.
4896         * tree-cfg.c (verify_gimple_assign_single): Adjust ADDR_EXPR
4897         verification.
4898         * tree-ssa.c (useless_type_conversion_p): Conversions to
4899         pointers to unprototyped functions are useless.
4900
4901 2009-08-26  Richard Guenther  <rguenther@suse.de>
4902
4903         * tree-ssa-structalias.c (create_variable_info_for): Remove strange
4904         whole-program condition, prepare to be called for non-globals.
4905         (intra_create_variable_infos): For restrict qualified DECL_BY_REFERENCE
4906         params build a representative with known type and track its fields.
4907
4908 2009-08-26  Uros Bizjak  <ubizjak@gmail.com>
4909
4910         * config/alpha/sync.md: Update comment about unpredictable LL/SC lock
4911         clearing by a taken branch.
4912         (sync_<fetchop_name><mode>): Split when epilogue_completed is set,
4913         effectively after bbro pass.
4914         (sync_nand<mode>): Ditto.
4915         (sync_old_<fetchop_name><mode>): Ditto.
4916         (sync_old_nand<mode>): Ditto.
4917         (sync_new_<fetchop_name><mode>): Dito.
4918         (sync_new_nand<mode>): Ditto.
4919         (sync_compare_and_swap<mode>_1): Ditto.
4920         (*sync_compare_and_swap<mode>): Ditto.
4921         (sync_lock_test_and_set<mode>_1): Ditto.
4922         ("sync_lock_test_and_set<mode>): Ditto.
4923
4924 2009-08-25  Douglas B Rupp  <rupp@gnat.com>
4925
4926         * hwint.h (HOST_LONG_FORMAT): New macro
4927         * bitmap.c, c-decl.c, mips-tfile.c, print-rtl.c, print-tree.c:
4928         Use HOST_PTR_PRINTF.
4929         * system.h (HOST_PTR_PRINTF): Resurrect old macro
4930         * doc/hostconfig.texi (HOST_LONG_FORMAT): Document.
4931         (HOST_PTR_PRINTF): Document.
4932
4933 2009-08-25 Jan Hubicka  <jh@suse.cz>
4934
4935         * config/i386/bmmintrin.h: Replace by #error.
4936
4937         Revert:
4938         Michael Meissner  <michael.meissner@amd.com>
4939         Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
4940         Tony Linthicum  <tony.linthicum@amd.com>
4941
4942         * config/i386/i386.h (TARGET_SSE5): New macro for SSE5.
4943         (TARGET_ROUND): New macro for the round/ptest instructions which
4944         are shared between SSE4.1 and SSE5.
4945         (OPTION_MASK_ISA_ROUND): Ditto.
4946         (OPTION_ISA_ROUND): Ditto.
4947         (TARGET_FUSED_MADD): New macro for -mfused-madd swtich.
4948         (TARGET_CPU_CPP_BUILTINS): Add SSE5 support.
4949
4950         * config/i386/i386.opt (-msse5): New switch for SSE5 support.
4951         (-mfused-madd): New switch to give users control over whether the
4952         compiler optimizes to use the multiply/add SSE5 instructions.
4953
4954         * config/i386/i386.c (enum pta_flags): Add PTA_SSE5.
4955         (ix86_handle_option): Turn off 3dnow if -msse5.
4956         (override_options): Add SSE5 support.
4957         (print_operand): %Y prints comparison codes for SSE5 com/pcom
4958         instructions.
4959         (ix86_expand_sse_movcc): Add SSE5 support.
4960         (ix86_expand_sse5_unpack): New function to use pperm to unpack a
4961         vector type to the next largest size.
4962         (ix86_expand_sse5_pack): New function to use pperm to pack a
4963         vector type to the next smallest size.
4964         (IX86_BUILTIN_FMADDSS): New for SSE5 intrinsic.
4965         (IX86_BUILTIN_FMADDSD): Ditto.
4966         (IX86_BUILTIN_FMADDPS): Ditto.
4967         (IX86_BUILTIN_FMADDPD): Ditto.
4968         (IX86_BUILTIN_FMSUBSS): Ditto.
4969         (IX86_BUILTIN_FMSUBSD): Ditto.
4970         (IX86_BUILTIN_FMSUBPS): Ditto.
4971         (IX86_BUILTIN_FMSUBPD): Ditto.
4972         (IX86_BUILTIN_FNMADDSS): Ditto.
4973         (IX86_BUILTIN_FNMADDSD): Ditto.
4974         (IX86_BUILTIN_FNMADDPS): Ditto.
4975         (IX86_BUILTIN_FNMADDPD): Ditto.
4976         (IX86_BUILTIN_FNMSUBSS): Ditto.
4977         (IX86_BUILTIN_FNMSUBSD): Ditto.
4978         (IX86_BUILTIN_FNMSUBPS): Ditto.
4979         (IX86_BUILTIN_FNMSUBPD): Ditto.
4980         (IX86_BUILTIN_PCMOV_V2DI): Ditto.
4981         (IX86_BUILTIN_PCMOV_V4SI): Ditto.
4982         (IX86_BUILTIN_PCMOV_V8HI): Ditto.
4983         (IX86_BUILTIN_PCMOV_V16QI): Ditto.
4984         (IX86_BUILTIN_PCMOV_V4SF): Ditto.
4985         (IX86_BUILTIN_PCMOV_V2DF): Ditto.
4986         (IX86_BUILTIN_PPERM): Ditto.
4987         (IX86_BUILTIN_PERMPS): Ditto.
4988         (IX86_BUILTIN_PERMPD): Ditto.
4989         (IX86_BUILTIN_PMACSSWW): Ditto.
4990         (IX86_BUILTIN_PMACSWW): Ditto.
4991         (IX86_BUILTIN_PMACSSWD): Ditto.
4992         (IX86_BUILTIN_PMACSWD): Ditto.
4993         (IX86_BUILTIN_PMACSSDD): Ditto.
4994         (IX86_BUILTIN_PMACSDD): Ditto.
4995         (IX86_BUILTIN_PMACSSDQL): Ditto.
4996         (IX86_BUILTIN_PMACSSDQH): Ditto.
4997         (IX86_BUILTIN_PMACSDQL): Ditto.
4998         (IX86_BUILTIN_PMACSDQH): Ditto.
4999         (IX86_BUILTIN_PMADCSSWD): Ditto.
5000         (IX86_BUILTIN_PMADCSWD): Ditto.
5001         (IX86_BUILTIN_PHADDBW): Ditto.
5002         (IX86_BUILTIN_PHADDBD): Ditto.
5003         (IX86_BUILTIN_PHADDBQ): Ditto.
5004         (IX86_BUILTIN_PHADDWD): Ditto.
5005         (IX86_BUILTIN_PHADDWQ): Ditto.
5006         (IX86_BUILTIN_PHADDDQ): Ditto.
5007         (IX86_BUILTIN_PHADDUBW): Ditto.
5008         (IX86_BUILTIN_PHADDUBD): Ditto.
5009         (IX86_BUILTIN_PHADDUBQ): Ditto.
5010         (IX86_BUILTIN_PHADDUWD): Ditto.
5011         (IX86_BUILTIN_PHADDUWQ): Ditto.
5012         (IX86_BUILTIN_PHADDUDQ): Ditto.
5013         (IX86_BUILTIN_PHSUBBW): Ditto.
5014         (IX86_BUILTIN_PHSUBWD): Ditto.
5015         (IX86_BUILTIN_PHSUBDQ): Ditto.
5016         (IX86_BUILTIN_PROTB): Ditto.
5017         (IX86_BUILTIN_PROTW): Ditto.
5018         (IX86_BUILTIN_PROTD): Ditto.
5019         (IX86_BUILTIN_PROTQ): Ditto.
5020         (IX86_BUILTIN_PROTB_IMM): Ditto.
5021         (IX86_BUILTIN_PROTW_IMM): Ditto.
5022         (IX86_BUILTIN_PROTD_IMM): Ditto.
5023         (IX86_BUILTIN_PROTQ_IMM): Ditto.
5024         (IX86_BUILTIN_PSHLB): Ditto.
5025         (IX86_BUILTIN_PSHLW): Ditto.
5026         (IX86_BUILTIN_PSHLD): Ditto.
5027         (IX86_BUILTIN_PSHLQ): Ditto.
5028         (IX86_BUILTIN_PSHAB): Ditto.
5029         (IX86_BUILTIN_PSHAW): Ditto.
5030         (IX86_BUILTIN_PSHAD): Ditto.
5031         (IX86_BUILTIN_PSHAQ): Ditto.
5032         (IX86_BUILTIN_FRCZSS): Ditto.
5033         (IX86_BUILTIN_FRCZSD): Ditto.
5034         (IX86_BUILTIN_FRCZPS): Ditto.
5035         (IX86_BUILTIN_FRCZPD): Ditto.
5036         (IX86_BUILTIN_CVTPH2PS): Ditto.
5037         (IX86_BUILTIN_CVTPS2PH): Ditto.
5038         (IX86_BUILTIN_COMEQSS): Ditto.
5039         (IX86_BUILTIN_COMNESS): Ditto.
5040         (IX86_BUILTIN_COMLTSS): Ditto.
5041         (IX86_BUILTIN_COMLESS): Ditto.
5042         (IX86_BUILTIN_COMGTSS): Ditto.
5043         (IX86_BUILTIN_COMGESS): Ditto.
5044         (IX86_BUILTIN_COMUEQSS): Ditto.
5045         (IX86_BUILTIN_COMUNESS): Ditto.
5046         (IX86_BUILTIN_COMULTSS): Ditto.
5047         (IX86_BUILTIN_COMULESS): Ditto.
5048         (IX86_BUILTIN_COMUGTSS): Ditto.
5049         (IX86_BUILTIN_COMUGESS): Ditto.
5050         (IX86_BUILTIN_COMORDSS): Ditto.
5051         (IX86_BUILTIN_COMUNORDSS): Ditto.
5052         (IX86_BUILTIN_COMFALSESS): Ditto.
5053         (IX86_BUILTIN_COMTRUESS): Ditto.
5054         (IX86_BUILTIN_COMEQSD): Ditto.
5055         (IX86_BUILTIN_COMNESD): Ditto.
5056         (IX86_BUILTIN_COMLTSD): Ditto.
5057         (IX86_BUILTIN_COMLESD): Ditto.
5058         (IX86_BUILTIN_COMGTSD): Ditto.
5059         (IX86_BUILTIN_COMGESD): Ditto.
5060         (IX86_BUILTIN_COMUEQSD): Ditto.
5061         (IX86_BUILTIN_COMUNESD): Ditto.
5062         (IX86_BUILTIN_COMULTSD): Ditto.
5063         (IX86_BUILTIN_COMULESD): Ditto.
5064         (IX86_BUILTIN_COMUGTSD): Ditto.
5065         (IX86_BUILTIN_COMUGESD): Ditto.
5066         (IX86_BUILTIN_COMORDSD): Ditto.
5067         (IX86_BUILTIN_COMUNORDSD): Ditto.
5068         (IX86_BUILTIN_COMFALSESD): Ditto.
5069         (IX86_BUILTIN_COMTRUESD): Ditto.
5070         (IX86_BUILTIN_COMEQPS): Ditto.
5071         (IX86_BUILTIN_COMNEPS): Ditto.
5072         (IX86_BUILTIN_COMLTPS): Ditto.
5073         (IX86_BUILTIN_COMLEPS): Ditto.
5074         (IX86_BUILTIN_COMGTPS): Ditto.
5075         (IX86_BUILTIN_COMGEPS): Ditto.
5076         (IX86_BUILTIN_COMUEQPS): Ditto.
5077         (IX86_BUILTIN_COMUNEPS): Ditto.
5078         (IX86_BUILTIN_COMULTPS): Ditto.
5079         (IX86_BUILTIN_COMULEPS): Ditto.
5080         (IX86_BUILTIN_COMUGTPS): Ditto.
5081         (IX86_BUILTIN_COMUGEPS): Ditto.
5082         (IX86_BUILTIN_COMORDPS): Ditto.
5083         (IX86_BUILTIN_COMUNORDPS): Ditto.
5084         (IX86_BUILTIN_COMFALSEPS): Ditto.
5085         (IX86_BUILTIN_COMTRUEPS): Ditto.
5086         (IX86_BUILTIN_COMEQPD): Ditto.
5087         (IX86_BUILTIN_COMNEPD): Ditto.
5088         (IX86_BUILTIN_COMLTPD): Ditto.
5089         (IX86_BUILTIN_COMLEPD): Ditto.
5090         (IX86_BUILTIN_COMGTPD): Ditto.
5091         (IX86_BUILTIN_COMGEPD): Ditto.
5092         (IX86_BUILTIN_COMUEQPD): Ditto.
5093         (IX86_BUILTIN_COMUNEPD): Ditto.
5094         (IX86_BUILTIN_COMULTPD): Ditto.
5095         (IX86_BUILTIN_COMULEPD): Ditto.
5096         (IX86_BUILTIN_COMUGTPD): Ditto.
5097         (IX86_BUILTIN_COMUGEPD): Ditto.
5098         (IX86_BUILTIN_COMORDPD): Ditto.
5099         (IX86_BUILTIN_COMUNORDPD): Ditto.
5100         (IX86_BUILTIN_COMFALSEPD): Ditto.
5101         (IX86_BUILTIN_COMTRUEPD): Ditto.
5102         (IX86_BUILTIN_PCOMEQUB): Ditto.
5103         (IX86_BUILTIN_PCOMNEUB): Ditto.
5104         (IX86_BUILTIN_PCOMLTUB): Ditto.
5105         (IX86_BUILTIN_PCOMLEUB): Ditto.
5106         (IX86_BUILTIN_PCOMGTUB): Ditto.
5107         (IX86_BUILTIN_PCOMGEUB): Ditto.
5108         (IX86_BUILTIN_PCOMFALSEUB): Ditto.
5109         (IX86_BUILTIN_PCOMTRUEUB): Ditto.
5110         (IX86_BUILTIN_PCOMEQUW): Ditto.
5111         (IX86_BUILTIN_PCOMNEUW): Ditto.
5112         (IX86_BUILTIN_PCOMLTUW): Ditto.
5113         (IX86_BUILTIN_PCOMLEUW): Ditto.
5114         (IX86_BUILTIN_PCOMGTUW): Ditto.
5115         (IX86_BUILTIN_PCOMGEUW): Ditto.
5116         (IX86_BUILTIN_PCOMFALSEUW): Ditto.
5117         (IX86_BUILTIN_PCOMTRUEUW): Ditto.
5118         (IX86_BUILTIN_PCOMEQUD): Ditto.
5119         (IX86_BUILTIN_PCOMNEUD): Ditto.
5120         (IX86_BUILTIN_PCOMLTUD): Ditto.
5121         (IX86_BUILTIN_PCOMLEUD): Ditto.
5122         (IX86_BUILTIN_PCOMGTUD): Ditto.
5123         (IX86_BUILTIN_PCOMGEUD): Ditto.
5124         (IX86_BUILTIN_PCOMFALSEUD): Ditto.
5125         (IX86_BUILTIN_PCOMTRUEUD): Ditto.
5126         (IX86_BUILTIN_PCOMEQUQ): Ditto.
5127         (IX86_BUILTIN_PCOMNEUQ): Ditto.
5128         (IX86_BUILTIN_PCOMLTUQ): Ditto.
5129         (IX86_BUILTIN_PCOMLEUQ): Ditto.
5130         (IX86_BUILTIN_PCOMGTUQ): Ditto.
5131         (IX86_BUILTIN_PCOMGEUQ): Ditto.
5132         (IX86_BUILTIN_PCOMFALSEUQ): Ditto.
5133         (IX86_BUILTIN_PCOMTRUEUQ): Ditto.
5134         (IX86_BUILTIN_PCOMEQB): Ditto.
5135         (IX86_BUILTIN_PCOMNEB): Ditto.
5136         (IX86_BUILTIN_PCOMLTB): Ditto.
5137         (IX86_BUILTIN_PCOMLEB): Ditto.
5138         (IX86_BUILTIN_PCOMGTB): Ditto.
5139         (IX86_BUILTIN_PCOMGEB): Ditto.
5140         (IX86_BUILTIN_PCOMFALSEB): Ditto.
5141         (IX86_BUILTIN_PCOMTRUEB): Ditto.
5142         (IX86_BUILTIN_PCOMEQW): Ditto.
5143         (IX86_BUILTIN_PCOMNEW): Ditto.
5144         (IX86_BUILTIN_PCOMLTW): Ditto.
5145         (IX86_BUILTIN_PCOMLEW): Ditto.
5146         (IX86_BUILTIN_PCOMGTW): Ditto.
5147         (IX86_BUILTIN_PCOMGEW): Ditto.
5148         (IX86_BUILTIN_PCOMFALSEW): Ditto.
5149         (IX86_BUILTIN_PCOMTRUEW): Ditto.
5150         (IX86_BUILTIN_PCOMEQD): Ditto.
5151         (IX86_BUILTIN_PCOMNED): Ditto.
5152         (IX86_BUILTIN_PCOMLTD): Ditto.
5153         (IX86_BUILTIN_PCOMLED): Ditto.
5154         (IX86_BUILTIN_PCOMGTD): Ditto.
5155         (IX86_BUILTIN_PCOMGED): Ditto.
5156         (IX86_BUILTIN_PCOMFALSED): Ditto.
5157         (IX86_BUILTIN_PCOMTRUED): Ditto.
5158         (IX86_BUILTIN_PCOMEQQ): Ditto.
5159         (IX86_BUILTIN_PCOMNEQ): Ditto.
5160         (IX86_BUILTIN_PCOMLTQ): Ditto.
5161         (IX86_BUILTIN_PCOMLEQ): Ditto.
5162         (IX86_BUILTIN_PCOMGTQ): Ditto.
5163         (IX86_BUILTIN_PCOMGEQ): Ditto.
5164         (IX86_BUILTIN_PCOMFALSEQ): Ditto.
5165         (IX86_BUILTIN_PCOMTRUEQ): Ditto.
5166         (enum multi_arg_type): New enum for describing the various SSE5
5167         intrinsic argument types.
5168         (bdesc_multi_arg): New table for SSE5 intrinsics.
5169         (ix86_init_mmx_sse_builtins): Add SSE5 intrinsic support.
5170         (ix86_expand_multi_arg_builtin): New function for creating SSE5
5171         intrinsics.
5172         (ix86_expand_builtin): Add SSE5 intrinsic support.
5173         (ix86_sse5_valid_op_p): New function to validate SSE5 3 and 4
5174         operand instructions.
5175         (ix86_expand_sse5_multiple_memory): New function to split the
5176         second memory reference from SSE5 instructions.
5177         (type_has_variadic_args_p): Delete in favor of stdarg_p.
5178         (ix86_return_pops_args): Use stdarg_p to determine if the function
5179         has variable arguments.
5180         (ix86_setup_incoming_varargs): Ditto.
5181         (x86_this_parameter): Ditto.
5182
5183         * config/i386/i386-protos.h (ix86_expand_sse5_unpack): Add
5184         declaration.
5185         (ix86_expand_sse5_pack): Ditto.
5186         (ix86_sse5_valid_op_p): Ditto.
5187         (ix86_expand_sse5_multiple_memory): Ditto.
5188
5189         * config/i386/i386.md (UNSPEC_SSE5_INTRINSIC): Add new UNSPEC
5190         constant for SSE5 support.
5191         (UNSPEC_SSE5_UNSIGNED_CMP): Ditto.
5192         (UNSPEC_SSE5_TRUEFALSE): Ditto.
5193         (UNSPEC_SSE5_PERMUTE): Ditto.
5194         (UNSPEC_SSE5_ASHIFT): Ditto.
5195         (UNSPEC_SSE5_LSHIFT): Ditto.
5196         (UNSPEC_FRCZ): Ditto.
5197         (UNSPEC_CVTPH2PS): Ditto.
5198         (UNSPEC_CVTPS2PH): Ditto.
5199         (PCOM_FALSE): Add new constant for true/false SSE5 comparisons.
5200         (PCOM_TRUE): Ditto.
5201         (COM_FALSE_S): Ditto.
5202         (COM_FALSE_P): Ditto.
5203         (COM_TRUE_S): Ditto.
5204         (COM_TRUE_P): Ditto.
5205         (type attribute): Add ssemuladd, sseiadd1, ssecvt1, sse4arg types.
5206         (unit attribute): Add support for ssemuladd, ssecvt1, sseiadd1 sse4arg
5207         types.
5208         (memory attribute): Ditto.
5209         (sse4_1_round<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
5210         Use SSE4_1_ROUND_* constants instead of hard coded numbers.
5211         (rint<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
5212         (floor<mode>2): Ditto.
5213         (ceil<mode>2): Ditto.
5214         (btrunc<mode>2): Ditto.
5215         (nearbyintdf2): Ditto.
5216         (nearbyintsf2): Ditto.
5217         (sse_setccsf): Disable if SSE5.
5218         (sse_setccdf): Ditto.
5219         (sse5_setcc<mode>): New support for SSE5 conditional move.
5220         (sse5_pcmov_<mode>): Ditto.
5221
5222         * config/i386/sse.md (SSEMODE1248): New mode iterator for SSE5.
5223         (SSEMODEF4): Ditto.
5224         (SSEMODEF2P): Ditto.
5225         (ssemodesuffixf4): New mode attribute for SSE5.
5226         (ssemodesuffixf2s): Ditto.
5227         (ssemodesuffixf2c): Ditto.
5228         (sserotatemax): Ditto.
5229         (ssescalarmode): Ditto.
5230         (sse_maskcmpv4sf3): Disable if SSE5.
5231         (sse_maskcmpv2df3): Ditto.
5232         (sse_vmmaskcmpv4sf3): Ditto.
5233         (sse5_fmadd<mode>4): Add SSE5 floating point multiply/add instructions.
5234         (sse5_vmfmadd<mode>4): Ditto.
5235         (sse5_fmsub<mode>4): Ditto.
5236         (sse5_vmfmsub<mode>4): Ditto.
5237         (sse5_fnmadd<mode>4): Ditto.
5238         (sse5_vmfnmadd<mode>4): Ditto.
5239         (sse5_fnmsub<mode>4): Ditto.
5240         (sse5_vmfnmsub<mode>4): Ditto.
5241         (sse5i_fmadd<mode>4): Ditto.
5242         (sse5i_fmsub<mode>4): Ditto.
5243         (sse5i_fnmadd<mode>4): Ditto.
5244         (sse5i_fnmsub<mode>4): Ditto.
5245         (sse5i_vmfmadd<mode>4): Ditto.
5246         (sse5i_vmfmsub<mode>4): Ditto.
5247         (sse5i_vmfnmadd<mode>4): Ditto.
5248         (sse5i_vmfnmsub<mode>4): Ditto.
5249         (mulv16qi3): Add SSE5 support.
5250         (mulv4si3): Ditto.
5251         (sse5_mulv4si3): New insn for 32-bit multiply support on SSE5.
5252         (sse2_mulv4si3): Disable if SSE5.
5253         (sse4_1_roundpd): Use TARGET_ROUND instead of TARGET_SSE4_1.
5254         (sse4_1_roundps): Ditto.
5255         (sse4_1_roundsd): Ditto.
5256         (sse4_1_roundss): Ditto.
5257         (sse_maskcmpv4sf3): Disable if SSE5 so the SSE5 instruction will
5258         be generated.
5259         (sse_maskcmpsf3): Ditto.
5260         (sse_vmmaskcmpv4sf3): Ditto.
5261         (sse2_maskcmpv2df3): Ditto.
5262         (sse2_maskcmpdf3): Ditto.
5263         (sse2_vmmaskcmpv2df3): Ditto.
5264         (sse2_eq<mode>3): Ditto.
5265         (sse2_gt<mode>3): Ditto.
5266         (sse5_pcmov_<mode>): Add SSE5 support.
5267         (vec_unpacku_hi_v16qi): Ditto.
5268         (vec_unpacks_hi_v16qi): Ditto.
5269         (vec_unpacku_lo_v16qi): Ditto.
5270         (vec_unpacks_lo_v16qi): Ditto.
5271         (vec_unpacku_hi_v8hi): Ditto.
5272         (vec_unpacks_hi_v8hi): Ditto.
5273         (vec_unpacku_lo_v8hi): Ditto.
5274         (vec_unpacks_lo_v8hi): Ditto.
5275         (vec_unpacku_hi_v4si): Ditto.
5276         (vec_unpacks_hi_v4si): Ditto.
5277         (vec_unpacku_lo_v4si): Ditto.
5278         (vec_unpacks_lo_v4si): Ditto.
5279         (sse5_pmacsww): New SSE5 intrinsic insn.
5280         (sse5_pmacssww): Ditto.
5281         (sse5_pmacsdd): Ditto.
5282         (sse5_pmacssdd): Ditto.
5283         (sse5_pmacssdql): Ditto.
5284         (sse5_pmacssdqh): Ditto.
5285         (sse5_pmacsdqh): Ditto.
5286         (sse5_pmacsswd): Ditto.
5287         (sse5_pmacswd): Ditto.
5288         (sse5_pmadcsswd): Ditto.
5289         (sse5_pmadcswd): Ditto.
5290         (sse5_pcmov_<move>): Conditional move support on SSE5.
5291         (sse5_phaddbw): New SSE5 intrinsic insn.
5292         (sse5_phaddbd): Ditto.
5293         (sse5_phaddbq): Ditto.
5294         (sse5_phaddwd): Ditto.
5295         (sse5_phaddwq): Ditto.
5296         (sse5_phadddq): Ditto.
5297         (sse5_phaddubw): Ditto.
5298         (sse5_phaddubd): Ditto.
5299         (sse5_phaddubq): Ditto.
5300         (sse5_phadduwd): Ditto.
5301         (sse5_phadduwq): Ditto.
5302         (sse5_phaddudq): Ditto.
5303         (sse5_phsubbw): Ditto.
5304         (sse5_phsubwd): Ditto.
5305         (sse5_phsubdq): Ditto.
5306         (sse5_pperm): Ditto.
5307         (sse5_pperm_sign_v16qi_v8hi): New insns for pack/unpack with SSE5.
5308         (sse5_pperm_zero_v16qi_v8hi): Ditto.
5309         (sse5_pperm_sign_v8hi_v4si): Ditto.
5310         (sse5_pperm_zero_v8hi_v4si): Ditto.
5311         (sse5_pperm_sign_v4si_v2di): Ditto.
5312         (sse5_pperm_sign_v4si_v2di): Ditto.
5313         (sse5_pperm_pack_v2di_v4si): Ditto.
5314         (sse5_pperm_pack_v4si_v8hi): Ditto.
5315         (sse5_pperm_pack_v8hi_v16qi): Ditto.
5316         (sse5_perm<mode>): New SSE5 intrinsic insn.
5317         (rotl<mode>3): Ditto.
5318         (sse5_rotl<mode>3): Ditto.
5319         (sse5_ashl<mode>3): Ditto.
5320         (sse5_lshl<mode>3): Ditto.
5321         (sse5_frcz<mode>2): Ditto.
5322         (sse5s_frcz<mode>2): Ditto.
5323         (sse5_cvtph2ps): Ditto.
5324         (sse5_cvtps2ph): Ditto.
5325         (sse5_vmmaskcmp<mode>3): Ditto.
5326         (sse5_com_tf<mode>3): Ditto.
5327         (sse5_maskcmp<mode>3): Ditto.
5328         (sse5_maskcmp_uns<mode>3): Ditto.
5329         (sse5_maskcmp_uns2<mode>3): Ditto.
5330         (sse5_pcom_tf<mode>3): Ditto.
5331
5332         * config/i386/predicates.md (sse5_comparison_float_operator):
5333         New predicate to match the comparison operators supported by
5334         the SSE5 com instruction.
5335         (ix86_comparison_int_operator): New predicate to match just the
5336         signed int comparisons.
5337         (ix86_comparison_uns_operator): New predicate to match just the
5338         unsigned int comparisons.
5339
5340         * doc/invoke.texi (-msse5): Add documentation.
5341         (-mfused-madd): Ditto.
5342
5343         * doc/extend.texi (x86 intrinsics): Document new SSE5 intrinsics.
5344
5345         * config.gcc (i[34567]86-*-*): Include bmmintrin.h and
5346         mmintrin-common.h.
5347         (x86_64-*-*): Ditto.
5348
5349         * config/i386/cpuid.h (bit_SSE5): Define SSE5 bit.
5350
5351         * config/i386/bmmintrin.h: New file, provide common x86 compiler
5352         intrinisics for SSE5.
5353
5354         * config/i386/smmintrin.h: Move instructions shared with SSE5 to
5355         mmintrin-common.h.
5356
5357         * config/i386/mmintrin-common.h: New file, to contain common
5358         instructions between SSE4.1 and SSE5.
5359
5360         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration): Use
5361         FOREACH_FUNCTION_ARGS to iterate over the argument list.
5362         (gen_regparm_prefix): Ditto.
5363
5364         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix): Use
5365         FOREACH_FUNCTION_ARGS to iterate over the argument list.  Use
5366         prototype_p to determine if a function is prototyped.
5367
5368 2009-08-25 Ville Voutilainen <ville.voutilainen@gmail.com>
5369
5370         * c-common.c (c_common_reswords) add the alignof keyword,
5371         with same RID as __alignof and __alignof__
5372
5373 2009-08-25  Anatoly Sokolov  <aesok@post.ru>
5374
5375         * hooks.h (hook_bool_const_int_const_int_true): Declare.
5376         * hooks.c (hook_bool_const_int_const_int_true): New function.
5377         * target.h (struct gcc_target): Add can_eliminate field.
5378         * target-def.h (TARGET_CAN_ELIMINATE): Define.
5379         (TARGET_INITIALIZER): Use TARGET_CAN_ELIMINATE.
5380         * ira.c (setup_eliminable_regset): Use can_eliminate target hook.
5381         * reload1.c (update_eliminables, init_elim_table): (Ditto.).
5382         (elim_table): Revise comment.
5383         * system.h (CAN_ELIMINATE): Poison.
5384         * defaults.h (CAN_ELIMINATE): Remove.
5385         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
5386
5387         * config/alpha/vms.h (CAN_ELIMINATE): Remove macro.
5388         * config/alpha/alpha.c (TARGET_CAN_ELIMINATE) [TARGET_ABI_OPEN_VMS]:
5389         Define macro.
5390         (alpha_vms_can_eliminate): Declare as static, change return type to
5391         bool.
5392         * config/alpha/alpha-protos.h (alpha_vms_can_eliminate): Remove.
5393
5394         * config/arm/arm.h (CAN_ELIMINATE): Remove macro.
5395         * config/arm/arm.c (TARGET_CAN_ELIMINATE): Define macro.
5396         (arm_can_eliminate): New function.
5397
5398         * config/avr/avr.h (CAN_ELIMINATE): Remove macro.
5399         * config/avr/avr.c (TARGET_CAN_ELIMINATE): Define macro.
5400         (avr_can_eliminate): Declare as static.
5401         * config/avr/avr-protos.h (avr_can_eliminate): Remove.
5402
5403         * config/bfin/bfin.h (CAN_ELIMINATE): Remove macro.
5404         * config/bfin/bfin.c (TARGET_CAN_ELIMINATE): Define macro.
5405         (bfin_can_eliminate): New function.
5406
5407         * config/crx/crx.h (CAN_ELIMINATE): Remove macro.
5408         * config/crx/crx.c (TARGET_CAN_ELIMINATE): Define macro.
5409         (crx_can_eliminate): New function.
5410
5411         * config/fr30/fr30.h (CAN_ELIMINATE): Remove macro.
5412         * config/fr30/fr30.c (TARGET_CAN_ELIMINATE): Define macro.
5413         (fr30_can_eliminate): New function.
5414
5415         * config/frv/frv.h (CAN_ELIMINATE): Remove macro.
5416         * config/frv/frv.c (TARGET_CAN_ELIMINATE): Define macro.
5417         (frv_can_eliminate): New function.
5418
5419         * config/h8300/h8300.h (CAN_ELIMINATE): Remove macro.
5420         * config/h8300/h8300.c (TARGET_CAN_ELIMINATE): Define macro.
5421         (h8300_can_eliminate): New function.
5422
5423         * config/i386/i386.h (CAN_ELIMINATE): Remove macro.
5424         * config/i386/i386.c (TARGET_CAN_ELIMINATE): Define macro.
5425         (i386_can_eliminate): Declare as static, change return type to bool.
5426         * config/i386/i386-protos.h (i386_can_eliminate): Remove.
5427
5428         * config/ia64/ia64.h (CAN_ELIMINATE): Remove macro.
5429         * config/ia64/ia64.c (TARGET_CAN_ELIMINATE): Define macro.
5430         (ia64_can_eliminate): New function.
5431
5432         * config/iq2000/iq2000.h (CAN_ELIMINATE): Remove macro.
5433         * config/iq2000/iq2000.c (TARGET_CAN_ELIMINATE): Define macro.
5434         (iq2000_can_eliminate): New function.
5435
5436         * config/m32r/m32r.h (CAN_ELIMINATE): Remove macro.
5437         * config/m32r/m32r.c (TARGET_CAN_ELIMINATE): Define macro.
5438         (m32r_can_eliminate): New function.
5439
5440         * config/m68hc11/m68hc11.h (CAN_ELIMINATE): Remove macro.
5441         * config/m68hc11/m68hc11.c (TARGET_CAN_ELIMINATE): Define macro.
5442         (m68hc11_can_eliminate): New function.
5443
5444         * config/m68k/m68k.h (CAN_ELIMINATE): Remove macro.
5445         * config/m68k/m68k.c (TARGET_CAN_ELIMINATE): Define macro.
5446         (m68k_can_eliminate): New function.
5447
5448         * config/mep/mep.h (CAN_ELIMINATE): Remove macro.
5449         * config/mep/mep.c (TARGET_CAN_ELIMINATE): Define macro.
5450         (mep_can_eliminate): New function.
5451
5452         * config/mips/mips.h (CAN_ELIMINATE): Remove macro.
5453         * config/mips/mips.c (TARGET_CAN_ELIMINATE): Define macro.
5454         (mips_can_eliminate): New function.
5455
5456         * config/rs6000/rs6000.h (CAN_ELIMINATE): Remove macro.
5457         * config/rs6000/rs6000.c (TARGET_CAN_ELIMINATE): Define macro.
5458         (rs6000_can_eliminate): New function.
5459
5460         * config/s390/s390.h (CAN_ELIMINATE): Remove macro.
5461         * config/s390/s390.c (TARGET_CAN_ELIMINATE): Define macro.
5462         (s390_can_eliminate): Declare as static.
5463         * config/s390/s390-protos.h (sparc_can_eliminate): Remove.
5464
5465         * config/score/score.h (CAN_ELIMINATE): Remove macro.
5466         * config/score/score.c (TARGET_CAN_ELIMINATE): Define macro.
5467         (score_can_eliminate): New function.
5468
5469         * config/sparc/sparc.h (CAN_ELIMINATE): Remove macro.
5470         * config/sparc/sparc.c (TARGET_CAN_ELIMINATE): Define macro.
5471         (sparc_can_eliminate): Declare as static.
5472         * config/sparc/sparc-protos.h (sparc_can_eliminate): Remove.
5473
5474         * config/stormy16/stormy16.h (CAN_ELIMINATE): Remove macro.
5475         * config/stormy16/stormy16.c (TARGET_CAN_ELIMINATE): Define macro.
5476         (xstormy16_can_eliminate): New function.
5477
5478         * config/v850/v850.h (CAN_ELIMINATE): Remove macro.
5479         * config/v850/v850.c (TARGET_CAN_ELIMINATE): Define macro.
5480         (v850_can_eliminate): New function.
5481
5482 2009-08-25  Uros Bizjak  <ubizjak@gmail.com>
5483
5484         * config/alpha/alpha.md (*cmpdf_ieee_ext[123]): Remove.
5485         (*cmpdf_internal): Enable for all ALPHA_FPTM levels.
5486         (*movdfcc_ext[1234]): Disable for IEEE mode.
5487
5488 2009-08-25  Eric Botcazou  <ebotcazou@adacore.com>
5489
5490         * gimplify.c (prepare_gimple_addressable): New static function.
5491         (gimplify_modify_expr_to_memcpy): Invoke it on the RHS before marking
5492         it addressable.
5493         (gimplify_addr_expr): Invoke it similarly on the operand instead of
5494         manually fiddling with it.
5495
5496 2009-08-25  Michael Matz  <matz@suse.de>
5497
5498         * expr.h (jumpifnot_1, jumpif_1, do_jump_1): Declare.
5499         * dojump.c (do_jump_by_parts_greater): Take two operands instead of
5500         full expression.
5501         (do_jump_by_parts_equality, do_compare_and_jump): Ditto.
5502         (jumpifnot_1, jumpif_1): New wrappers for do_jump_1.
5503         (do_jump): Split out code for simple binary comparisons into ...
5504         (do_jump_1): ... this, taking the individual operands and code.
5505         Change callers to helper function above accordingly.
5506         * expr.c (expand_expr_real_1): Use jumpifnot_1 for simple binary
5507         comparisons.
5508
5509 2009-08-25  Michael Matz  <matz@suse.de>
5510
5511         * expr.h (struct separate_ops, sepops): New type for passing
5512         around an exploded simple expression.
5513         * optabs.c (expand_widen_pattern_expr, expand_vec_shift_expr):
5514         Use this structure instead of expression tree.
5515         (get_vcond_icode, expand_vec_cond_expr_p): Don't take whole
5516         expression, only its type.
5517         (expand_vec_cond_expr): Take type and individual operands instead
5518         of full expression.
5519         * optabs.h (expand_widen_pattern_expr, expand_vec_cond_expr,
5520         expand_vec_shift_expr): Change prototype accordingly.
5521         * tree-vect-stmts.c (vectorizable_condition): Change call of
5522         expand_vec_cond_expr_p to pass only type.
5523         * expr.c (do_store_flags): Change prototype and implementation
5524         to take an exploded expression.
5525         (expand_expr_real_1): New local ops initialized with details
5526         of the full expression.  Use it instead of full
5527         expression in calls to do_store_flags, expand_vec_cond_expr,
5528         expand_widen_pattern_expr and expand_vec_shift_expr.
5529
5530 2009-08-25  Michael Matz  <matz@suse.de>
5531
5532         * expr.c (expand_expr_real_1): New local treeop0, treeop1,
5533         treeop2 initialized with first three operands of the full expression.
5534         Substitute all TREE_OPERAND (exp, [012]) calls with them.
5535
5536 2009-08-25  Kai Tietz  <kai.tietz@onevision.com>
5537
5538         * gcc/gthr-win32.h (__UNUSED_PARAM): Define, if not already present.
5539         (__gthread_objc_condition_allocate): Mark arguments as unused.
5540         (__gthread_objc_condition_deallocate): Likewise.
5541         (__gthread_objc_condition_wait): Likewise.
5542         (__gthread_objc_condition_broadcast): Likewise.
5543         (__gthread_objc_condition_signal): Likewise.
5544         (__gthread_objc_thread_detach): Cast via INT_PTR to pointer.
5545         (__gthread_objc_thread_id): Likewise.
5546
5547 2009-08-25  Janus Weil  <janus@gcc.gnu.org>
5548
5549         PR middle-end/41149
5550         * tree-pretty-print.c (print_call_name): Print the correct call name
5551         for procedure pointer components.
5552
5553 2009-08-24  Steve Ellcey  <sje@cup.hp.com>
5554
5555         * config/ia64/ia64.c (ia64_promote_function_mode): Call
5556         default_promote_function_mode when not VMS.
5557
5558 2009-08-24  Olivier Hainque  <hainque@adacore.com>
5559
5560         * convert.c (convert_to_integer): Don't assume an input pointer is
5561         POINTER_SIZE wide.  Fetch from the type instead.
5562
5563 2009-08-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5564
5565         * configure.ac (AC_PREREQ): Bump to 2.64.
5566
5567 2009-08-24  Rafael Avila de Espindola  <espindola@google.com>
5568
5569         * gcc.c (standard_exec_prefix_1,standard_exec_prefix_2): Remove.
5570         (process_command): Don't search standard_exec_prefix_1 and
5571         standard_exec_prefix_2.
5572
5573 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
5574
5575         * config/arm/arm.c (output_return_instruction): Handle for
5576         unified syntax.
5577
5578 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
5579
5580         * config/arm/arm.c (arm_select_cc_mode): Handle subreg.
5581
5582 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
5583
5584         * config/arm/vfp.md (*arm_movdi_vfp): Mark as predicable.
5585         (*arm_movdf_vfp): Likewise.
5586
5587 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
5588
5589         * config/arm/neon.md (vashl<mode>3): Rename from ashl<mode>3.
5590         (vashr<mode>3): Rename from ashr<mode>3.
5591         (vlshr<mode>3): Rename from lshr<mode>3.
5592
5593 2009-08-24  Kai Tietz  <kai.tietz@onevision.com>
5594
5595         PR/40786
5596         * c-format.c (format_wanted_type): Add new member scalar_identity_flag.
5597         (check_format_info_main): Use scalar_identify_flag.
5598         (check_format_types): Check for scalar size identity if
5599         scalar_identify_flag is set.
5600         (printf_length_specs): Extend by new field.
5601         (asm_fprintf_length_specs): Likewise.
5602         (gcc_diag_length_specs): Likewise.
5603         (scanf_length_specs): Likewise.
5604         (strfmon_length_specs): Likewise.
5605         (gcc_gfc_length_specs): Likewise.
5606         * config/i386/msformat-c.c (ms_printf_length_specs): Likewise.
5607         (ms_printf_flag_specs): Likewise.
5608         * c-format.h (format_length_info): Add new member scalar_identity_flag.
5609
5610 2009-08-23  Uros Bizjak  <ubizjak@gmail.com>
5611
5612         PR target/40718
5613         * config/i386/i386.c (*call_pop_1): Disable for sibling calls.
5614         (*call_value_pop_1): Ditto.
5615         (*sibcall_pop_1): New insn pattern.
5616         (*sibcall_value_pop_1): Ditto.
5617
5618 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
5619
5620         PR target/41081
5621         * config/rs6000/rs6000.md (rotlsi3_64, ashlsi3_64, lshrsi3_64,
5622         ashrsi3_64): New.
5623
5624 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
5625
5626         PR target/41081
5627         * fwprop.c (try_fwprop_subst): Allow multiple sets.
5628         (get_reg_use_in): New function.
5629         (forward_propagate_subreg): Propagate through subreg of zero_extend
5630         or sign_extend.
5631
5632 2009-08-22  Kaz Kojima  <kkojima@gcc.gnu.org>
5633
5634         * config/sh/t-sh (TARGET_LIBGCC2_CFLAGS): Define.
5635         * config/sh/t-netbsd (TARGET_LIBGCC2_CFLAGS): Add -mieee.
5636
5637 2009-08-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5638
5639         * configure.ac: Remove --with-datarootdir, --with-docdir,
5640         --with-htmldir switches.  No need to call AC_SUBST for
5641         datarootdir, docdir, htmldir any more.
5642         * configure: Regenerate.
5643         * doc/install.texi (Configuration): Document --datarootdir,
5644         --docdir, --htmldir, --pdfdir; update documentation for
5645         --infodir, --mandir.
5646         (Prerequisites): Bump Autoconf version to 2.64, Automake to 1.11,
5647         M4 to 1.4.6.
5648
5649         * aclocal.m4: Regenerate.
5650         * config.in: Regenerate.
5651         * configure: Regenerate.
5652
5653 2009-08-21  Douglas B Rupp  <rupp@gnat.com>
5654             Olivier Hainque  <hainque@adacore.com>
5655
5656         * config/ia64/ia64.c: Include libfuncs.h.
5657         (TARGET_PROMOTE_FUNCITON_MODE): Define target macro.
5658         (ia64_expand_call): Use reg 25 on VMS.
5659         (ia64_initialize_trampoline): Fix for VMS ABI.
5660         (ia64_function_arg_offset): Always returns 0 when TARGET_ABI_OPEN_VMS.
5661         (ia64_function_arg): Initialize reg 25 on VMS.
5662         Fix OpenVMS ABI issues for varargs.
5663         For OpenVMS, emit the Argument Information register set in the
5664         incoming/sibcall case as well.
5665         (ia64_arg_type): New function.
5666         (ia64_function_arg_advance): Keep track of cum->words.
5667         Fix OpenVMS ABI issues for varargs.
5668         (ia64_function_value): On VMS, promote mode of non-aggregate types.
5669         (ia64_override_options): Set flag_no_common on VMS.
5670         (ia64_init_builtins): Disable FWRITE builtin.
5671         (ia64_asm_output_external): Call DO_CRTL_NAMES.
5672         (ia64_vms_init_libfuncs): Add decc$ routines.
5673         (ia64_vms_valid_pointer_mode): New function.
5674         (ia64_struct_value_rtx): Allways NULL_RTX on VMS.
5675         (ia64_promote_function_mode): New function
5676         * config/ia64/ia64.h (TARGET_ABI_OPEN_VMS): Define as 0 for default.
5677         (LONG_DOUBLE_TYPE_SIZE): Force to 64 on VMS.
5678         (LIBCGC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
5679         (INIT_CUMULATIVE_ARGS): Add atypes for VMS.
5680         (INIT_CUMULATIVE_INCOMING_ARGS): Likewise.
5681         (ASM_OUTPUT_DEF): Use ISDIGIT instead of isdigit.
5682         Suppress trailing '#' if VALUE is numeric.
5683         * config/ia64/vms.h (PROMOTE_FUNCTION_MODE): Remove, code moved to
5684         ia64_promote_function_mode.
5685         (TARGET_VALID_POINTER_MODE): Define.
5686
5687 2009-08-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
5688
5689         PR target/40671
5690         * config/rs6000/rs6000.c (rs6000_override_options): Use
5691         TARGET_64BIT instead of TARGET_POWERPC64 to set the size of pointers.
5692
5693         PR target/41145
5694         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Fix
5695         reporting of vector + decimal/boolean/complex error.
5696
5697 2009-08-21  Jakub Jelinek  <jakub@redhat.com>
5698
5699         * config/rs6000/rs6000.c (rs6000_init_builtins): Fix type of
5700         __vector double TYPE_DECL.
5701
5702 2009-08-21  Richard Earnshaw  <rearnsha@arm.com>
5703
5704         * arm.h (MACHMODE): New define.  Include insn-modes.h if available.
5705         (CUMULATIVE_ARGS): Use MACHMODE for declaration of aapcs_vfp_mode.
5706         * arm.c (aapcs_vfp_is_call_or_return_candidate): Change base_mode
5707         to pointer to enum machine_mode.  Update all callers as needed.
5708
5709 2009-08-21 Uros Bizjak <ubizjak@gmail.com>
5710
5711         * config/alpha/alpha.md (exception_receiver): Emit alternative
5712         GP load sequence if flag_reorder_blocks_and_partition is set.
5713         (*exception_receiver_2): Also enable when
5714         flag_reorder_blocks_and_partition is set.
5715
5716 2009-08-20  Matt Rice  <ratmice@gmail.com>
5717             Diego Novillo  <dnovillo@google.com>
5718
5719         * Makefile.in (PLUGIN_HEADERS): Include incpath.h and
5720         tree-ssa-sccvn.h.
5721
5722 2009-08-20  Richard Guenther  <rguenther@suse.de>
5723
5724         * c-objc-common.h (LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): Do not define.
5725         * c-tree.h (c_dup_lang_specific_decl): Remove.
5726         (struct lang_decl, struct lang_type): Move definitions ...
5727         * c-lang.h: ... here.  New file.
5728         * c-decl.c: Include c-lang.h.
5729         (c_dup_lang_specific_decl): Remove.
5730         * c-typeck.c: Include c-lang.h.
5731         * Makefile.in (c-decl.o): Add c-lang.h dependency.
5732         (c-typeck.o): Likewise.
5733         * c-config-lang.in (gtfiles): Add c-lang.h.
5734         * gengtype.c (get_output_file_with_visibility): Handle c-lang.h
5735         like c-tree.h.
5736
5737 2009-08-20  Uros Bizjak  <ubizjak@gmail.com>
5738
5739         * config/alpha/alpha.c (alpha_end_function): Do not clear
5740         crtl->emit structure and free insn locators if cfun->is_thunk is true,
5741         this is now handled in generic code.
5742
5743 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
5744
5745         * config/s390/s390.c (Z10_PREDICT_DISTANCE): New macro.
5746         (s390_z10_fix_long_loop_prediction): New function.
5747         (s390_z10_optimize_cmp): INSN walk moved to callee - s390_reorg.
5748         (s390_reorg): Walk over the INSNs and invoke
5749         s390_z10_fix_long_loop_prediction and s390_z10_optimize_cmp.
5750
5751 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
5752
5753         * config/s390/s390.md ("*brx_stage1_<GPR:mode>", "*brxg_64bit",
5754         "*brx_64bit", "*brx_31bit"): New patterns.
5755         * config/s390/s390.c ('E'): New output modifier.
5756
5757 2009-08-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
5758             Richard Earnshaw  <richard.earnshaw@arm.com>
5759
5760         * config/arm/arm.c (arm_emit_movpair): Handle CONST_INT.
5761         * config/arm/arm.md (*arm_movtas_ze): New pattern for movt.
5762
5763 2009-08-19  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5764
5765         * pa.md (reload_inhi, reload_outhi, reload_inqi, reload_outqi): New
5766         patterns.
5767         * pa.c (emit_move_sequence): Check if address of operand1 is valid
5768         for mode mode of operand0 when doing secondary reload for SAR.
5769
5770 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
5771
5772         PR middle-end/41123
5773         * expr.c (expand_expr_real_1) <normal_inner_ref>: Handle all kinds
5774         of CONCAT, not just bitpos 0 bitsize size of the whole CONCAT.
5775
5776 2009-08-19  Jason Merrill  <jason@redhat.com>
5777
5778         * doc/invoke.texi (C++ Dialect Options): Note change of minimum
5779         supported template depth in C++0x.
5780
5781 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
5782
5783         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Don't call
5784         free_after_compilation.
5785         * config/score/score7.c (score7_output_mi_thunk): Likewise.
5786         * config/score/score3.c (score3_output_mi_thunk): Likewise.
5787         * config/ia64/ia64.c (ia64_output_mi_thunk): Likewise.
5788         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
5789         * config/sh/sh.c (sh_output_mi_thunk): Likewise.
5790         * config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
5791         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
5792
5793 2009-08-19  Ian Lance Taylor  <iant@google.com>
5794
5795         * doc/md.texi (Insn Canonicalizations): Correct canonicalization
5796         of (plus (mult (neg B) C) A).
5797
5798 2009-08-18  Michael Matz  <matz@suse.de>
5799
5800         * omp-low.c (optimize_omp_library_calls): Use types_compatible_p
5801         instead of comparing TYPE_MAIN_VARIANT for equality.
5802         * tree-vect-patterns.c (vect_recog_dot_prod_pattern,
5803         vect_recog_widen_mult_pattern, vect_recog_widen_sum_pattern): Ditto.
5804         * tree-vect-loop.c (vect_is_simple_reduction): Ditto.
5805         * gimplify.c (goa_lhs_expr_p): Ditto and use
5806         STRIP_USELESS_TYPE_CONVERSION.
5807
5808 2009-08-18  Michael Matz  <matz@suse.de>
5809
5810         * tree-ssa-structalias.c (create_variable_info_for): Also mark
5811         first field in a struct.
5812         (intra_create_variable_infos): Don't deal with flag_argument_noalias.
5813
5814 2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
5815
5816         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
5817         locators before emit_insn is called.  Remove assert that
5818         cfun->is_thunk.
5819         (alpha_end_function): Clear crtl->emit structure and free insn
5820         locators if cfun->is_thunk is true.
5821
5822 2009-08-18  Jason Merrill  <jason@redhat.com>
5823
5824         * config/elfos.h (ASM_DECLARE_OBJECT_NAME): Use gnu_unique_object
5825         type if available.
5826         * configure.ac: Test for it.
5827         * configure, config.in: Regenerate.
5828         * doc/install.texi: Document --enable-gnu-unique-object.
5829
5830 2009-08-18  Richard Guenther  <rguenther@suse.de>
5831
5832         PR middle-end/41094
5833         * builtins.c (fold_builtin_pow): Fold pow(pow(x,y),z) to
5834         pow(x,y*z) only if x is nonnegative.
5835
5836 2009-08-18  Jakub Jelinek  <jakub@redhat.com>
5837
5838         * bb-reorder.c (fix_up_fall_thru_edges): Only call invert_jump
5839         on jumps.
5840
5841         PR target/40971
5842         * config/rs6000/rs6000.c (rs6000_legitimize_address): For
5843         [DT][FDI]mode ensure the offset isn't 4/8/12 bytes below 0x8000.
5844
5845 2009-08-17  DJ Delorie  <dj@redhat.com>
5846
5847         * config/m32c/m32c.md (UNS_FSETB, UNS_FREIT): New.
5848         * config/m32c/prologue.md (epilogue_freit): New.
5849         (fset_b): New.
5850         * config/m32c/m32c.c (m32c_function_needs_enter): Add prototype.
5851         (bank_switch_p): Likewise.
5852         (fast_interrupt_p): Likewise.
5853         (interrupt_p): Likewise.
5854         (m32c_conditional_register_usage): Round memregs size up.
5855         (need_to_save): We only need to save $a0 when we use ENTER.
5856         (interrupt_p): Check for fast_interrupt too.
5857         (bank_switch_p): New.
5858         (fast_interrupt_p): New.
5859         (m32c_attribute_table): Add bank_switch and fast_interrupt.
5860         (m32c_emit_prolog): Support bank switching and fast interrupts.
5861         * doc/extend.texi (Function Attributes): Add bank_switch and
5862         fast_interrupt.
5863
5864 2009-08-17  Douglas B Rupp  <rupp@gnat.com>
5865
5866         * config/alpha/alpha.c (vms_valid_pointer_mode): New function.
5867         * config/alpha/vms.h (TARGET_VALID_POINTER_MODE): Define.
5868
5869 2009-08-16  Douglas B Rupp  <rupp@gnat.com>
5870
5871         * doc/invoke.texi (Target options): Add new option list for IA-64/VMS.
5872         (menu): Add IA-64/VMS Options.
5873         (IA-64/VMS Options): Likewise.
5874
5875 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
5876
5877         PR target/38599
5878         * config/mips/mips.md (*lwxs): Use :P for pointer values.
5879
5880 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
5881
5882         * config/mips/mips-protos.h (mips_push_asm_switch): New function.
5883         (mips_pop_asm_switch): Likewise.
5884         * config/mips/mips.c (set_noreorder, set_nomacro, set_noat): Replace
5885         with...
5886         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
5887         (mips_push_asm_switch_1, mips_pop_asm_switch_1): New functions.
5888         (mips_push_asm_switch, mips_pop_asm_switch): Likewise.
5889         (mips_print_operand_punctuation): Use them.  Check mips_noreorder
5890         instead of set_noreorder.
5891         (mips_output_function_prologue): Use the new functions.
5892         (mips_output_function_epilogue): Likewise.
5893         (mips_need_noat_wrapper_p): New function, split out from...
5894         (mips_final_prescan_insn, mips_final_postscan_insn): ...here.
5895         Use mips_push_asm_switch and mips_pop_asm_switch.
5896         * config/mips/mips.h (FUNCTION_PROFILER): Use mips_push_asm_switch
5897         and mips_pop_asm_switch.
5898         (ASM_OUTPUT_REG_POP): Likewise.
5899         (DBR_OUTPUT_SEQEND): Remove boilerplate comment.
5900         Use mips_pop_asm_switch.
5901         (mips_asm_switch): New structure.
5902         (set_noreorder, set_nomacro): Replace with...
5903         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
5904         * config/mips/mips.md (fix_truncdfsi2_macro): Use mips_nomacro
5905         instead of set_nomacro.
5906         (fix_truncsfsi2_macro): Likewise.
5907         (cprestore): Likewise.
5908         (hazard): Use mips_noreorder instead of set_noreorder.
5909         * config/mips/sdemtk.h (FUNCTION_PROFILER): As for mips.h.
5910
5911 2009-08-16  Uros Bizjak  <ubizjak@gmail.com>
5912
5913         * config/alpha/alpha.c (alpha_end_function): Handle NULL_RTX returned
5914         from prev_active_insn.
5915
5916 2009-08-16  Anatoly Sokolov  <aesok@post.ru>
5917
5918         * config/avr/avr.h (AVR_HAVE_8BIT_SP): New macros.
5919         * config/avr/avr.c (avr_override_options): Initialize
5920         avr_current_arch variable.
5921         (avr_cpu_cpp_builtins): Define __AVR_HAVE_8BIT_SP__ or
5922         __AVR_HAVE_16BIT_SP__ according to the device type.
5923         (expand_prologue, output_movhi): Use AVR_HAVE_8BIT_SP instead of
5924         TARGET_TINY_STACK.
5925         (expand_epilogue): Use correct QI mode frame pointer for tiny stack.
5926         Use AVR_HAVE_8BIT_SP instead of TARGET_TINY_STACK.
5927
5928 2009-08-16  Dodji Seketeli  <dodji@redhat.com>
5929
5930         PR debug/37801
5931         * gcc/dwarf2out.c (gen_inlined_subroutine_die): Concentrate on
5932         generating inlined subroutine die only. We shouldn't be
5933         called for anything else.
5934         (gen_block_die): Don't generate inline subroutine debug info for
5935         abstract blocks.
5936
5937 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
5938
5939         * graphite-poly.c (print_pbb): Print PBB index.
5940
5941 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
5942
5943         PR middle-end/40981
5944         * graphite-interchange.c (ppl_max_for_le): Moved...
5945         * graphite-poly.c (pbb_number_of_iterations): Call ppl_max_for_le.
5946         * graphite-ppl.c (ppl_max_for_le): ... here.  Correct the use of
5947         ppl_Pointset_Powerset_C_Polyhedron_maximize.
5948         * graphite-ppl.h (ppl_max_for_le): Declared.
5949
5950 2009-08-14  Olatunji Ruwase <tjruwase@google.com>
5951
5952         * doc/extend.texi (Symbol-Renaming Pragmas): redefine_extname is
5953         supported on all platforms.
5954         * target.h (struct gcc_target): Remove handle_pragma_redefine_extname.
5955         * c-cppbuiltin.c: Remove use of targetm.handle_pragma_redefine_extname.
5956         * c-pragma.c: Likewise.
5957         * target-def.h (TARGET_INITIALIZER): Remove
5958         TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
5959         * config/sol2.h: Remove use of TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
5960
5961 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
5962
5963         * config/ia64/fde-vms.c: New file.
5964         * config/ia64/fde-glibc.c (_Unwind_FindTableEntry): Add dummy arg.
5965         * config/ia64/unwind-ia64.c (UNW_ accessors): Move to unwind-ia64.h
5966         (MD_UNW_COMPATIBLE_PERSONALITY_P): Provide default.
5967         (uw_frame_state_for): Only register a personality routine if it is
5968         known to be compatible with our expectations.
5969         (_Unwind_FindEnclosingFunction, uw_frame_state_for):
5970         Declare unw_table_entry stack variable and
5971         mod all calls to _Unwind_FindTableEntry to add arg.
5972         * config/ia64/unwind-ia64.h (UNW_ accessors): Move here.
5973         (_Unwind_FindTableEntry): Add arg to prototype.
5974
5975 2009-08-14  Eric Botcazou  <ebotcazou@adacore.com>
5976
5977         * config/ia64/unwind-ia64.c (struct _Unwind_Context): Add new
5978         field 'signal_pfs_loc'.
5979         (uw_frame_state_for): Remove duplicate code dealing with leaf
5980         procedures without unwind info.
5981         If in the frame after unwinding through a signal handler, restore
5982         the AR.PFS register instead of the CFM if AR.PFS has not been saved.
5983         * config/ia64/linux-unwind.h (ia64_fallback_frame_state): Do not set
5984         'pfs_loc' to the AR.PFS location in the signal context; instead
5985         set 'signal_pfs_loc'.
5986         Manually generate the unwind info for the AR.PFS register.
5987         (ABI_MARKER_OLD_LINUX_SIGTRAMP, ABI_MARKER_OLD_LINUX_INTERRUPT,
5988         ABI_MARKER_LINUX_SIGTRAMP, ABI_MARKER_LINUX_INTERRUPT): Define.
5989         (ia64_handle_unwabi): Test 'fs->unwabi' against them.
5990         Do not set 'pfs_loc' to the AR.PFS location in the signal context;
5991         instead set 'signal_pfs_loc'.
5992         Remove code preventing the AR.PFS register from being restored
5993         from the signal context.
5994
5995 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
5996             Tristan Gingold  <gingold@adacore.com>
5997
5998         * config.gcc (ia64-hp-*vms*): Insert ia64/t-ia64 in tmake_file.
5999         * config/ia64/t-vms: New file.
6000         * config/ia64/vms64.h: New file.
6001         * config/ia64/vms.h: New file.
6002         * config/ia64/vms-crtinit.asm: New file.
6003         * config/ia64/vms_symvec_libgcc_s.opt: New file.
6004         * config/ia64/vms-unwind.h: New file.
6005
6006 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
6007
6008         * config/alpha/alpha.c (alpha_emit_conditional_move): Handle
6009         TFmode compares.
6010
6011 2009-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6012
6013         PR middle-end/30789
6014         * builtins.c (do_mpc_arg2): Make extern, define for any MPC version.
6015         Move declaration...
6016         * real.h (do_mpc_arg2): ... here.
6017         * fold-const.c (const_binop): Use MPC for complex MULT_EXPR
6018         and RDIV_EXPR.
6019
6020 2009-08-14  Rafael Avila de Espindola  <espindola@google.com>
6021
6022         * final.c (add_debug_prefix_map): Don't use GC memory for
6023         old_prefix and new_prefix.
6024
6025 2009-08-14  Richard Guenther  <rguenther@suse.de>
6026
6027         * ipa-prop.c (compute_complex_pass_through): If we cannot
6028         compute a non-varying offset for IPA_JF_ANCESTOR punt.
6029
6030 2009-08-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
6031
6032         * c-lex.c (c_lex_with_flags): Increase size of local variable
6033         to avoid memory clobber.
6034
6035 2009-08-14  Paolo Bonzini  <bonzini@gnu.org>
6036
6037         PR target/40934
6038         * config/i386/i386.c (ix86_fp_comparison_strategy):
6039         Only enable/disable sahf at function granularity.
6040
6041 2009-08-14  Hans-Peter Nilsson  <hp@axis.com>
6042
6043         PR rtl-optimization/41064
6044         * reload1.c (reload_as_needed): Don't call extract_insn
6045         for known invalid replacements after calling
6046         validate_replace_rtx_group and verify_changes.
6047
6048 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
6049
6050         PR target/41019
6051         * config/i386/sse.md (SSEMODE124C8): New mode iterator.
6052         (vcond<SSEMODEF2P:mode>): Assert that operation is supported by
6053         ix86_expand_fp_vcond.
6054         (vcond<SSEMODE124C8:mode>): Use SSEMODE124C8 instead of SSEMODE124.
6055         Assert that operation is supported by ix86_expand_int_vcond.
6056         (vcondu<SSEMODE124C8:mode>): Ditto.
6057
6058 2009-08-13  DJ Delorie  <dj@redhat.com>
6059
6060         * config/i386/djgpp-stdint.h: New.
6061         * config.gcc (djgpp): Use it.
6062
6063 2009-08-13  Kaz Kojima  <kkojima@gcc.gnu.org>
6064
6065         * config/sh/sh.c (sh_override_options): When flag_exceptions or
6066         flag_unwind_tables is on, turn flag_reorder_blocks_and_partition off.
6067
6068 2009-08-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
6069
6070         * tree-ssa-loop-prefetch.c
6071         (prune_ref_by_group_reuse): Enhance probabilistic analysis
6072         for long-stride pruning.
6073         (compute_miss_rate): New function to compute the probability
6074         that two memory references access different cache lines.
6075
6076 2009-08-13  Dave Korn  <dave.korn.cygwin@gmail.com>
6077
6078         * gcc/config/i386/cygwin.h (LINK_SPEC): Add --enable-auto-image-base.
6079
6080 2009-08-13  Richard Guenther  <rguenther@suse.de>
6081
6082         PR middle-end/41047
6083         * tree-ssa-ccp.c (ccp_fold): When folding pointer additions
6084         use the constant pointer type.
6085         * gimplify.c (canonicalize_addr_expr): Canonicalize independent
6086         of CV qualifiers on the target pointer type.
6087         * tree-ssa.c (useless_type_conversion_p): Move incomplete pointer
6088         conversion check before restrict check.
6089
6090 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
6091
6092         PR target/41029
6093         * config/sh/sh.md (reload_outdf__RnFRm+4): Fix thinko.
6094
6095 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
6096
6097         * config/sh/sh.c (sh_promote_function_mode): Add ATTRIBUTE_UNUSED.
6098
6099 2009-08-12  Richard Guenther  <rguenther@suse.de>
6100
6101         PR tree-optimization/41011
6102         * ipa-cp.c (ipcp_lattice_from_jfunc): Deal with failing fold
6103         and reference constructing.
6104
6105 2009-08-12  Xinliang David Li  <davidxl@google.com>
6106
6107         PR tree-optimization/41012
6108         * tree-flow.h : New external interface.
6109         * gimple-low.c (check_call_arg): Change to public function.
6110         Remove argument mismatch check in lowering.
6111         * tree-inline.h (tree_can_inline_p): Interface change.
6112         * tree-inline.c (tree_can_inline_p): Fold argument mismatch check
6113         into this function.
6114         * ipa-inline.c (cgraph_decide_inlining_of_small_functions):
6115         Call change to tree_can_inline_p function.
6116         (cgraph_decide_inlining_incrementally): Ditto.
6117
6118 2009-08-12  Richard Sandiford  <rdsandiford@googlemail.com>
6119
6120         PR tree-optimization/41031
6121         * tree-outof-ssa.c (insert_value_copy_on_edge): Use promote_decl_mode
6122         on the partition variable rather than promote_mode on the source
6123         type.  Assert that the partition variable's type has the same
6124         mode as the source value's.
6125
6126 2009-08-12  Paolo Bonzini  <bonzini@gnu.org>
6127
6128         * doc/tm.texi (TARGET_PROMOTE_FUNCTION_MODE): Add documentation
6129         for for_return == 2.
6130         * function.c (assign_parm_setup_reg): Use for_return == 2, improve
6131         comments.
6132         * calls.c (expand_call): Fix typo.
6133         * explow.c (promote_decl_mode): Use for_return == 2 for RESULT_DECL
6134         and PARM_DECL.
6135         * stmt.c (expand_value_return): Use promote_function_mode to copy out
6136         of pseudo.
6137         * targhooks.c (default_promote_function_mode): Handle for_return == 2.
6138         * config/cris/cris.c (cris_promote_function_mode): Likewise.
6139         * config/mmix/mmix.c (mmix_promote_function_mode): Likewise.
6140         * config/pa/pa.c (pa_promote_function_mode): Likewise.
6141
6142 2009-08-12  Andrew Haley  <aph@redhat.com>
6143
6144         * config/arm/arm.c (arm_init_libfuncs): Add __sync_synchronize.
6145
6146 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
6147
6148         PR bootstrap/40103
6149         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
6150
6151 2009-08-12  Richard Guenther  <rguenther@suse.de>
6152
6153         * alias.c (get_alias_set): Honor TYPE_STRUCTURAL_EQUALITY_P.
6154         * gimplify.c (gimplify_modify_expr): Do not use
6155         lang_hooks.types_compatible_p.
6156         * tree-ssa.c (useless_type_conversion_p): For aggregates
6157         just return false if the canonical types differ.
6158
6159 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
6160
6161         PR middle-end/40980
6162         * sese.c (convert_for_phi_arg): New.
6163         (add_guard_exit_phis): Use convert_for_phi_arg.
6164
6165 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
6166
6167         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Dont add
6168         unknown subscript upper bounds.
6169
6170 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
6171             Pranav Garg  <pranav.garg2107@gmail.com>
6172
6173         * graphite-interchange.c (gather_access_strides): Removed.
6174         (ppl_max_for_le): New.
6175         (build_linearized_memory_access): New.
6176         (memory_stride_in_loop): New.
6177         (pbb_interchange_profitable_p): Reimplemented.
6178         * graphite-ppl.h (ppl_new_id_map): New.
6179         (ppl_interchange): New.
6180
6181 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
6182
6183         * graphite-interchange.c (compute_subscript): Removed.
6184         (compute_array_size_cstr): Removed.
6185         (compute_array_size_poly): Removed.
6186         (compute_array_size): Removed.
6187         (gather_access_strides_poly): Removed.
6188         (gather_access_strides): Empty.
6189
6190 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
6191
6192         * graphite-dependences.c (dependence_polyhedron_1): Replace
6193         pdr_nb_subscripts with PDR_NB_SUBSCRIPTS.
6194         (graphite_legal_transform_dr): Same.
6195         (graphite_carried_dependence_level_k): Same.
6196         * graphite-poly.c (new_poly_dr): Add a parameter nb_subscripts.
6197         Initialize PDR_NB_SUBSCRIPTS.
6198         (print_pdr_access_layout): Replace pdr_nb_subscripts with
6199         PDR_NB_SUBSCRIPTS.
6200         * graphite-poly.h (struct poly_dr): Add nb_subscripts field.
6201         (PDR_NB_SUBSCRIPTS): New.
6202         (pdr_nb_subscripts): Removed.
6203         (pdr_dim): Simplified.
6204         * graphite-sese-to-poly.c (build_poly_dr): Replace pdr_nb_subscripts
6205         with PDR_NB_SUBSCRIPTS.
6206
6207 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
6208
6209         * graphite-interchange.c (compute_array_size): Remove use of
6210         PDR_DATA_CONTAINER.
6211         * graphite-poly.c (new_poly_dr): Remove argument data_container.
6212         Do not initialize PDR_DATA_CONTAINER.
6213         (print_pdr): Do not print PDR_DATA_CONTAINER.
6214         * graphite-poly.h (struct poly_dr): Remove data_container field.
6215         (PDR_DATA_CONTAINER): Removed.
6216         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Remove use of
6217         PDR_DATA_CONTAINER.
6218         (build_poly_dr): Same.
6219
6220 2009-08-12  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
6221             Sebastian Pop  <sebastian.pop@amd.com>
6222
6223         * graphite-dependences.c (graphite_legal_transform_dr): Work on a
6224         copy of the dependence polyhedron.  Free the temporary objects.
6225         (graphite_carried_dependence_level_k): Free unused objects before
6226         returning.
6227
6228 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
6229
6230         * graphite-blocking.c (scop_do_strip_mine): Call store_scattering.
6231         Early return without analyzing the data dependences if no
6232         transform has been done.  Call restore_scattering if the transform
6233         is not legal.
6234         (graphite-interchange.c): Same.
6235         * graphite-poly.c (print_scattering_function): Test for
6236         PBB_TRANSFORMED.
6237         (graphite_read_transforms): Initialize PBB_TRANSFORMED.
6238         (apply_poly_transforms): Do not gcc_assert that
6239         the transform is legal.
6240         (new_poly_bb): Initialize PBB_TRANSFORMED, PBB_SAVED and PBB_ORIGINAL.
6241         Do not initialize PBB_NB_SCATTERING_TRANSFORM, PBB_NB_LOCAL_VARIABLES,
6242         PBB_TRANSFORMED_SCATTERING, and PBB_ORIGINAL_SCATTERING.
6243         (free_poly_dr): Free PBB_TRANSFORMED, PBB_SAVED, and PBB_ORIGINAL.
6244         * graphite-poly.h (struct poly_scattering): New.
6245         (struct poly_bb): Add original, transformed, and saved fields.
6246         Remove transformed_scattering, original_scattering,
6247         nb_local_variables and nb_scattering_transform fields.
6248         (PBB_ORIGINAL, PBB_TRANSFORMED, PBB_SAVED): New.
6249         (poly_scattering_new): New.
6250         (poly_scattering_free): New.
6251         (poly_scattering_copy): New.
6252         (store_scattering_pbb): New.
6253         (store_scattering): New.
6254         (restore_scattering_pbb): New.
6255         (restore_scattering): New.
6256         * graphite-sese-to-poly.c (build_pbb_scattering_polyhedrons):
6257         Initialize PBB_TRANSFORMED and PBB_ORIGINAL.
6258
6259 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
6260
6261         * graphite-poly.c (print_pbb): Add parentheses in the pretty print.
6262         (print_scop): Same.
6263
6264 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
6265
6266         * Makefile.in (graphite.o): Depends on PREDICT_H.
6267         * graphite.c: Include predict.h.
6268         (graphite_finalize): Call tree_estimate_probability.
6269         * predict.c (predict_loops): Do not call scev_initialize and
6270         scev_finalize.
6271         (tree_estimate_probability_bb): New.
6272         (tree_estimate_probability): Do not initialize loops: move that
6273         code to the driver.  Call tree_estimate_probability_bb.
6274         (tree_estimate_probability_driver): New.
6275         (pass_profile): Use tree_estimate_probability_driver.
6276         * predict.h (tree_estimate_probability): Declared.
6277
6278 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
6279
6280         * graphite-clast-to-gimple.c (gloog): Add time to TV_GRAPHITE_CODE_GEN.
6281         * graphite-dependences.c (graphite_legal_transform): Add time to
6282         TV_GRAPHITE_DATA_DEPS.
6283         (dependency_between_pbbs_p): Same.
6284         * timevar.def (TV_GRAPHITE_DATA_DEPS, TV_GRAPHITE_CODE_GEN): New.
6285
6286 2009-08-12  Andrey Belevantsev  <abel@ispras.ru>
6287
6288         PR rtl-optimization/41033
6289         * alias.c (nonoverlapping_component_refs_p): Punt when strict
6290         aliasing is disabled.
6291
6292 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
6293
6294         * config/mips/predicates.md (qi_mask_operand, hi_mask_operand,
6295         si_mask_operand, and_load_operand, low_bitmask_operand,
6296         and_reg_operand, and_operand): New predicates.
6297         * config/mips/constraints.md (Yb, Yh, Yw, Yz): New constraints.
6298         * config/mips/mips.c (and_operands_ok): New function.
6299         * config/mips/mips-protos.h (and_operands_ok): Declare it.
6300         * config/mips/mips.md (move_type): Add ext_ins and logical.
6301         (type): Handle them.
6302         (and<mode>3): Use and_reg_operand as the second operand's predicate.
6303         (*and<mode>3): Add alternatives for lbu, lhu, lwu, <d>ext and
6304         shift_shift.  Remove commutative constraint modifier.
6305         (*and<mode>3_mips16): Add alternatives for lbu, lhu, lwu and
6306         shift_shift.
6307         (*clear_upper32_dext): Remove define_insn_and_split.
6308         (*clear_upper32): Turn this define_insn_and_split ...
6309         (splitter for ANDing register with 0xffff_ffff): .. into this.
6310
6311 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
6312
6313         * combine.c (try_widen_shift_mode): Factor out code to check if an
6314         integer constant is a low-order bitmask from here ...
6315         * rtlanal.c (low_bitmask_len): ... to here.
6316         * rtl.h (low_bitmask_len): Declare.
6317
6318 2009-08-11  Uros Bizjak  <ubizjak@gmail.com>
6319
6320         PR target/8603
6321         * config/alpha/alpha.md (addsi3): Remove expander.
6322         (addsi3): Rename from *addsi3_internal insn pattern.
6323         (subsi3): Remove expander.
6324         (subsi3): Rename from *subsi3_internal insn pattern.
6325
6326 2009-08-11  Douglas B Rupp  <rupp@gnat.com>
6327
6328         * config/alpha/alpha.c (alpha_init_builtins): Nullify FWRITE and
6329         FWRITE_UNLOCKED.
6330
6331 2009-08-11  Vasiliy Fofanov  <fofanov@adacore.com>
6332             Eric Botcazou  <botcazou@adacore.com>
6333             Douglas B Rupp  <rupp@gnat.com>
6334
6335         * config/alpha/alpha.c (alpha_return_in_memory): On VMS, ensure
6336         that records that fit in 64 bits are returned by immediate value,
6337         as required by OpenVMS Calling Standard.
6338         (function_value): Adjust for above modification.
6339         (alpha_va_start) <TARGET_ABI_OPEN_VMS>: Use
6340         virtual_incoming_args_rtx as base object, not next_arg.
6341         * config/alpha/vms.h: (DEFAULT_PCC_STRUCT_RETURN): Define as 0.
6342
6343 2009-08-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
6344
6345         * reload.c (find_reloads_subreg_address): Check the original
6346         req_equiv_mem address to detect the case where an address is
6347         not valid in the outer mode.
6348
6349 2009-08-11  Richard Guenther  <rguenther@suse.de>
6350
6351         PR bootstrap/40788
6352         * builtins.c (gimplify_va_arg_expr): Do not call SET_EXPR_LOCATION.
6353
6354 2009-08-10  Douglas B Rupp  <rupp@gnat.com>
6355
6356         * config/alpha/vms.h (OPTIMIZATION_OPTIONS): Remove
6357         (OVERRIDE_OPTIONS): Incorporate removed OPTIMIZATION_OPTIONS.
6358
6359 2009-08-10  Olivier Hainque  <hainqueu@adacore.com>
6360             Douglas B Rupp  <rupp@gnat.com>
6361
6362         * config/alpha/alpha.c (alpha_sa_size): Force procedure type to
6363         PT_STACK when frame_pointer_needed on OpenVMS.
6364         (alpha_pv_save_size, alpha_using_fp): Remove.
6365         (alpha_vms_can_eliminate): New function. Support for CAN_ELIMINATE
6366         with proper processing for PT_NULL.
6367         (alpha_vms_initial_elimination_offset): New function. Support for
6368         INITIAL_ELIMINATION_OFFSET with proper processing for PT_NULL.
6369         (alpha_sa_size): Force procedure type to PT_STACK when
6370         frame_pointer_needed on OpenVMS.
6371         * config/alpha/alpha-protos.h (alpha_pv_save_size): Remove prototype.
6372         (alpha_using_fp): Likewise.
6373         (alpha_vms_can_eliminate): Add prototype.
6374         (alpha_vms_initial_elimination_offset): Likewise.
6375         * config/alpha/vms.h (CAN_ELIMINATE, INITIAL_ELIMINATION_OFFSET):
6376         Call alpha_vms_can_eliminate and alpha_vms_initial_elimination_offset.
6377
6378 2009-08-10  Eric Botcazou  <botcazou@adacore.com>
6379             Douglas B Rupp  <rupp@gnat.com>
6380
6381         * config/alpha/alpha.c (common_object_handler): New function.
6382         (vms_attribute_table): Declare a single attribute "common_object".
6383         (vms_output_aligned_decl_common): New global function.
6384         (SECTION_VMS_OVERLAY): Delete.
6385         (SECTION_VMS_GLOBAL): Likewise.
6386         (SECTION_VMS_INITIALIZE): Likewise.
6387         (vms_asm_named_section): Remove support for above flags.
6388         (vms_section_type_flags): Delete.
6389         (TARGET_SECTION_TYPE_FLAGS): Likewise.
6390         * config/alpha/alpha-protos.h (vms_output_aligned_decl_common): New.
6391         * config/alpha/vms.h (ASM_OUTPUT_ALIGNED_COMMON): Delete.
6392         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New macro.
6393
6394 2009-08-10  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
6395
6396         PR target/41015
6397         * longlong.h [__sh__] (udiv_qrnnd): Add T register to clobber list.
6398         (sub_ddmmss): Likewise.
6399
6400 2009-08-10  Andreas Tobler  <a.tobler@schweiz.org>
6401
6402         PR bootstrap/41018
6403         * config/rs6000/freebsd.h: Define SVR4_ASM_SPEC. Adjust copyright
6404         year.
6405
6406 2009-08-10  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
6407
6408         PR target/37053
6409         * reload1.c (reload_as_needed): Use cancel_changes to completely
6410         undo a failed replacement attempt.
6411
6412 2009-08-10  Richard Guenther  <rguenther@suse.de>
6413
6414         PR middle-end/41006
6415         * tree-ssa.c (useless_type_conversion_p_1): Fold into ...
6416         (useless_type_conversion_p): ... here.  Require pointer targets
6417         to be compatible.
6418
6419 2009-08-10  Dodji Seketeli  <dodji@redhat.com>
6420
6421         PR c++/40866
6422         * tree-inline.c (copy_statement_list): The resulting copy shouldn't
6423         loose the original type of the statement list.
6424
6425 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
6426
6427         * config/alpha/alpha.c: Include libfuncs.h
6428         (avms_asm_output_extern): New function.
6429         (alpha_init_libfuncs): Init some decc libfuncs.
6430         * config/alpha/alpha-protos.h (avms_asm_output_external): Declare.
6431         * config/alpha/vms.h (ASM_OUTPUT_EXTERNAL): Define.
6432         (DO_CRTL_NAMES): Define.
6433         (LIB_SPEC): Remove.
6434         * config/alpha/vms64.h: (POINTERS_EXTEND_UNSIGNED): Remove undef.
6435         (LONG_TYPE_SIZE): Define.
6436         (TARGET_OS_CPP_BUILTINS): Define with __LONG_POINTERS=1
6437         (SUBTARGET_SWITCHES): Define malloc64 switch.
6438         (TARGET_DEFAULT): Default MASK_MALLOC64 set.
6439         (MASK_RETURN_ADDR): Define.
6440         doc/invoke.texi (mmalloc64): Document switch.
6441
6442 2009-08-09  Olivier Hainque  <hainque@adacore.com>
6443             Douglas B Rupp  <rupp@gnat.com>
6444
6445         * config/alpha/alpha.c (struct machine_function): New flag for VMS,
6446         uses_condition_handler.
6447         (alpha_expand_builtin_establish_vms_condition_handler): New expander.
6448         (alpha_expand_builtin_revert_vms_condition_handler): New expander.
6449         (enum alpha_builtin): New ALPHA_BUILTIN_REVERT_VMS_CONDITION_HANDLER
6450         and ALPHA_BUILTIN_ESTABLISH_VMS_CONDITION_HANDLER values.
6451         (code_for_builtin): New insn codes for the new alpha_builtins.
6452         (alpha_init_builtins): Register the new functions as BUILT_IN_MD.
6453         (alpha_sa_size): Account for uses_condition_handler.
6454         (alpha_expand_prologue): Likewise.
6455         (alpha_start_function): Likewise.
6456         (alpha_expand_epilogue): Likewise.
6457         * config/alpha/alpha-protos.h: Prototype the new alpha.c builtin
6458         establish/revert expanders.
6459         * config/alpha/alpha.h (DWARF_FRAME_REGNUM): Define.
6460         * config/alpha/alpha.md (builtin_establish_vms_condition_handler):
6461         New expander, resorting to the alpha.c associated function.
6462         (builtin_revert_vms_condition_handler): Likewise.
6463         * config/alpha/vms-gcc_shell_handler.c: New file. Implements
6464         __gcc_shell_handler, the static VMS condition handler used as
6465         an indirection wrapper to the current dynamically established
6466         handler.
6467         * config/alpha/vms-unwind.h: Complete rewrite.
6468         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Add vms-gcc_shell_handler.c
6469         * config/alpha/vms.h (MD_UNWIND_SUPPORT):
6470
6471 2009-08-09  Eric Botcazou  <botcazou@adacore.com>
6472             Douglas B Rupp  <rupp@gnat.com>
6473
6474         * config/alpha/alpha.c (alpha_links): Add 'target' field.
6475         (alpha_need_linkage): Handle aliases.  Return function symbol.
6476         (alpha_use_linkage): Rename 'linkage' argument to 'func'.
6477         Use ultimate alias target for the linkage name.
6478         * config/alpha/alpha.md (movmemdi): Use the symbol returned
6479         by alpha_need_linkage for the function symbol.
6480         (setmemdi): Likewise.
6481
6482 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
6483
6484         * config/alpha/alpha.c (TARGET_ASM_UNALIGNED_*_OP): Define if on VMS.
6485         * config/alpha/vms.h (OBJECT_FORMAT_ELF): Define.
6486         (ASM_WEAKEN_LABEL): Define.
6487         (CRT_CALL_STATIC_FUNCTION): Define.
6488         (STARTFILE_SPEC): Add crtbegin.o crtbeginS.o.
6489         (ENDFILE_SPEC): Define.
6490         (INIT_SECTION_ASM_OP): Define.
6491         * config/alpha/vms-dwarf2eh.asm (__EH_FRAME_BEGIN__): Remove.
6492         * config/alpha/t-vms (EXTRA_PARTS): Add crtbegin.o crtbeginS.o
6493         crtend.o crtendS.o.
6494         (MULTILIB_OSDIRNAMES): Define.
6495         (shlib_version): Define.
6496         (SHLIB_EXT): Define.
6497         (SHLIB_OBJS): Define.
6498         (SHLIB_NAME): Define.
6499         (SHLIB_MULTILIB): Define.
6500         (SHLIB_INSTALL): Define.
6501         (SHLIB_SYMVEC): Define.
6502         (SHLIB_SYMVECX2): Define.
6503         (SHLIB_LINK): Define.
6504
6505 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
6506
6507         * config/alpha/alpha.c (alpha_initialize_trampoline):
6508         Initialize VMS trampoline IAW ABI for bounded procedure calls.
6509         (alpha_start_function): Emit transfer address on nested functions
6510         for VMS trampoline call.
6511         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Remove vms_tramp.asm
6512         since no longer used.
6513         * config/alpha/vms-tramp.asm: Remove.
6514         * config/alpha/vms.h (TRAMPOLINE_TEMPLATE): Leave undefined
6515         since now only data initialized at runtime.
6516
6517 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
6518
6519         * config/alpha/vms.h (HANDLE_SYSV_PRAGMA): Define.
6520         (LINK_GCC_C_SEQUENCE_SPEC): Define.
6521         (MD_EXEC_PREFIX): Remove, no longer used.
6522         (MD_STARTFILE_PREFIX): Likewise.
6523         (INCLUDE_DEFAULTS): Likewise.
6524         * config/alpha/t-vms:
6525         (vms-dwarf2.o, vms-dwarf2eh.o): Use GCC_FOR_TARGET to compile.
6526
6527 2009-08-09  Richard Guenther  <rguenther@suse.de>
6528
6529         PR tree-optimization/41016
6530         * tree-ssa-ifcombine.c (get_name_for_bit_test): Fix tuplification bug.
6531         (operand_precision): Remove.
6532         (integral_operand_p): Likewise.
6533         (recognize_single_bit_test): Adjust.
6534
6535 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
6536
6537         * c-common.c (c_fully_fold_internal): Issue a warning if a binary
6538         operation overflows.  Likewise non-cast unary arithmetic.
6539         If one arm of a conditional expression is always taken,
6540         inhibit evaluation warnings for the other arm.  Likewise inhibit
6541         evaluation warnings for the second && or || operand if the first
6542         operand is enough to determine the result.
6543         * c-typeck.c (build_conditional_expr): Apply the same inhibition
6544         rules here.
6545         (build_binary_op): Prevent duplicate evaluation warnings.
6546
6547 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
6548
6549         * tree-out-of-ssa.c (insert_value_copy_on_edge): If the source
6550         and destination have different modes, Use promote_mode to
6551         determine the signedness of the conversion.  Assert that the
6552         promoted source mode matches the destination mode.  Don't pass
6553         the destination and destination mode to expand_expr if the source
6554         mode is different.  Simplify conversion logic.
6555
6556 2009-08-09  Ira Rosen  <irar@il.ibm.com>
6557
6558         PR tree-optimization/41008
6559         * tree-vect-loop.c (vect_is_simple_reduction): Get operands
6560         from condition only in case it's a comparison. Adjust checks.
6561
6562 2009-08-09  Bernd Schmidt  <bernd.schmidt@analog.com>
6563
6564         * tree-dfa.c (renumber_gimple_stmt_uids_in_blocks): New function.
6565         * tree-flow.h (renumber_gimple_stmt_uids_in_blocks): Declare it.
6566         * tree-ssa-loop-ivopts.c (comp_cost): Make COST an integer.
6567         (enum iv_position): Add IP_AFTER_USE and IP_BEFORE_USE.
6568         (dump_cand): Handle them.
6569         (struct iv_cand): New members COST_STEP and AINC_USE.
6570         (stmt_after_increment): Likewise.
6571         (stmt_after_inc_pos): Renamed from stmt_after_ip_original_pos.  All
6572         callers changed.  Use gimple_uid comparison instead of scanning.
6573         (add_candidate_1): When looking for identical candidates, take
6574         AINC_USE into account.  Set it for new candidates.
6575         (force_expr_to_var_cost): Cast target_spill_cost to int.
6576         (get_address_cost): New arguments STMT_AFTER_INC and MAY_AUTOINC.
6577         All callers changed.  Check for availability of autoinc addressing
6578         modes, both in general for a given mode, and in the specific use case.
6579         (get_computation_cost_at): New argument CAN_AUTOINC.  All callers
6580         changed.
6581         (get_computation_cost): Likewise.
6582         (autoinc_possible_for_pair, set_autoinc_for_original_candidates,
6583         add_autoinc_candidates): New static functions.
6584         (add_candidate): Call add_autoinc_candidates for candidates based on
6585         a USE_ADDRESS use.
6586         (find_iv_candidates): Call set_autoinc_for_original_candidates.
6587         (determine_use_iv_cost_address): If we have an autoinc candidate at
6588         the matching use, verify autoinc is possible and subtract the cost
6589         of the candidate's step from the cost.
6590         (determine_iv_cost): Record the cost of the increment in the COST_STEP
6591         member of the candidate.
6592         (tree_ssa_iv_optimize_loop): Swap the calls to determine_iv_costs and
6593         determine_use_iv_costs.  Call renumber_gimple_stmt_uids_in_blocks.
6594
6595 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
6596
6597         * config.build (ia64-hp-*vms*): New target.
6598         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
6599         with ia64-hp-*vms*.
6600         * config.gcc (ia64-hp-*vms*): New target.
6601         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
6602         with ia64-hp-*vms*.
6603         * config.host (ia64-hp-*vms*): New target.
6604         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
6605         with ia64-hp-*vms*.
6606
6607 2009-08-08  Richard Guenther  <rguenther@suse.de>
6608
6609         PR tree-optimization/40991
6610         * tree-ssa-pre.c (eliminate): Delay purging EH edges.
6611
6612 2009-08-08  Richard Sandiford  <rdsandiford@googlemail.com>
6613
6614         * combine.c (gen_lowpart_or_truncate): Exclude CONST_INTs from
6615         mode check.  Do truncations in an integer mode.
6616         (force_to_mode): Handle subregs for all mode types.  Only do
6617         arithmetic simplifications on integer modes.
6618
6619 2009-08-07  Richard Guenther  <rguenther@suse.de>
6620
6621         PR tree-optimization/40999
6622         * tree-ssa-ccp.c (get_symbol_constant_value): Handle CONST_DECLs.
6623         (maybe_fold_reference): Lookup constant initializers.
6624         (fold_gimple_assign): Likewise.
6625
6626 2009-08-07  Richard Guenther  <rguenther@suse.de>
6627
6628         * tree-ssa.c (useless_type_conversion_p_1): Only for types
6629         that require structural equality defer to the langhook.
6630
6631 2009-08-07  Martin Jambor  <mjambor@suse.cz>
6632
6633         * ipa-prop.h (enum jump_func_type): New value IPA_JF_ANCESTOR, changed
6634         comments.
6635         (struct ipa_pass_through_data): New type.
6636         (struct ipa_ancestor_jf_data): New type.
6637         (union jump_func_value): Removed field formal_id, added fields
6638         pass_through and ancestor.
6639         (struct ipa_param_call_note): Changed type of formal_id to int from
6640         unsigned.
6641         * ipa-prop.c (ipa_print_node_jump_functions): Print pass through with
6642         operations jump functions and ancestor jump functions.
6643         (compute_complex_pass_through): New function.
6644         (compute_scalar_jump_functions): Call compute_complex_pass_through,
6645         reflect changes in the jump function strucutre.
6646         (update_jump_functions_after_inlining): Ignore complex pass-through
6647         and ancestor jump functions.
6648         * ipa-cp.c (ipcp_lattice_from_jfunc): Added support for ancestor and
6649         polynomial pass-through with operation jump functions.
6650
6651 2009-08-07  Jakub Jelinek  <jakub@redhat.com>
6652
6653         * dwarf2out.c (output_fde): When doing hot/cold partitioning, use
6654         fde->dw_fde_begin as begin label instead of hot/cold label.
6655         Use LLSDAC label instead of LLSDA for second section lsda.
6656         (dwarf2out_do_cfi_startproc): Add SECOND argument.  Use LLSDAC
6657         label instead of LLSDA if it is true.
6658         (dwarf2out_begin_prologue, dwarf2out_switch_text_section): Adjust
6659         callers.
6660         * except.c (add_call_site, dw2_size_of_call_site_table): Add
6661         SECTION argument.  Use it as index into crtl->eh.call_site_record
6662         array.
6663         (dw2_output_call_site_table): Likewise.  Add CS_FORMAT argument,
6664         use it to determine how to print table entries instead of using
6665         #ifdef HAVE_AS_LEB128.  For SECTION > 0 use hot resp. cold
6666         label instead of normal begin label as base.
6667         (sjlj_assign_call_site_values): Adjust add_call_site caller.
6668         (convert_to_eh_region_ranges): When doing hot/cold partitioning,
6669         ensure no EH range spans between sections and that landing pads
6670         are always in the corresponding section.
6671         (sjlj_size_of_call_site_table, sjlj_output_call_site_table): Adjust
6672         for crtl->eh.call_site_record being an array rather than scalar.
6673         (output_one_function_exception_table): New function, copied
6674         from output_function_exception_table.  Adjust
6675         dw2_size_of_call_site_table, dw2_output_call_site_table
6676         callers.  For SECOND section use *C suffixed labels.
6677         (output_function_exception_table): Call
6678         output_one_function_exception_table and, when doing hot/cold
6679         partitioning, also another time for the second section.
6680         * opts.c: Include except.h.
6681         (decode_options): Allow -freorder-blocks-and-partition with
6682         exceptions, unless SJLJ or TARGET_UNWIND_INFO.
6683         * Makefile.in (opts.o): Depend on $(EXCEPT_H).
6684         * function.h (struct rtl_eh): Change call_site_record from
6685         scalar into array of 2 elements.
6686
6687 2009-08-07  Martin Jambor  <mjambor@suse.cz>
6688
6689         * ipa-prop.c (count_formal_params_1): New function.
6690         (ipa_get_vector_of_formal_parms): New function.
6691         (get_vector_of_formal_parm_types): New function.
6692         (ipa_modify_formal_parameters): New function.
6693         (ipa_modify_call_arguments): New function.
6694         (index_in_adjustments_multiple_times_p): New function.
6695         (ipa_combine_adjustments): New function.
6696         (ipa_dump_param_adjustments): New function.
6697         * ipa-prop.h (struct ipa_parm_adjustment): New type.
6698         (ipa_get_vector_of_formal_parms): Declare.
6699         (ipa_modify_formal_parameters): Declare.
6700         (ipa_modify_call_arguments): Declare.
6701         (ipa_combine_adjustments): Declare.
6702         (ipa_dump_param_adjustments): Declare.
6703         (build_ref_for_offset): Declare.
6704         * Makefile.in (tree-sra.o): Add ipa-prop.h to dependencies.
6705         * tree-sra.c: Include ipa-prop.c.
6706         (build_ref_for_offset): Make public.
6707
6708 2009-08-06  Neil Vachharajani  <nvachhar@gmail.com>
6709
6710         * value-prof.c (init_pid_map): Replace xmalloc with XCNEWVEC.
6711
6712 2009-08-06  Thomas Schwinge  <tschwinge@gnu.org>
6713
6714         * gcc/doc/extend.texi (__builtin_extract_return_address)
6715         (__builtin_frob_return_address): Document.
6716
6717 2009-08-06  Paul Brook  <paul@codesourcery.com>
6718
6719         * config/arm/lib1funcs.asm (ARM_DIV_BODY): Add Thumb-2 implementation.
6720         (udivsi3, aeabi_uidivmod, divsi3, aeabi_idivmod): Only use Thumb-1
6721         implementation on ARMv6-M.
6722
6723 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
6724
6725         * doc/extend.texi (pcs): Document new attribute for ARM.
6726
6727 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
6728
6729         * arm.c (pcs_attribute_args): Comment out unsupported attribute
6730         variants.
6731
6732 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
6733
6734         * arm.c (arm_handle_pcs_attribute): Pass the entire name object to
6735         warning ().
6736
6737 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
6738
6739         * arm.c (arm_handle_pcs_attribute): Use %qE in warning.
6740
6741 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
6742
6743         Merge ARM/hard_vfp_branch to trunk.
6744
6745         2009-08-04  Richard Earnshaw  <rearnsha@arm.com>
6746
6747         * arm.c (libcall_eq): New function.
6748         (libcall_hash): New function.
6749         (add_libcall): New function.
6750         (arm_libcall_uses_aapcs_base): New function.
6751         (arm_libcall_value): Use arm_libcall_uses_aapcs_base to check for
6752         libcalls using the base PCS.
6753         (arm_init_cumulative_args): Likewise.
6754
6755         2009-07-20  Joseph Myers  <joseph@codesourcery.com>
6756
6757         * config/arm/arm.c (arm_libcall_value, arm_init_cumulative_args):
6758         Use base ABI for conversion libfuncs between HFmode and SFmode.
6759
6760         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
6761
6762         * config/arm/arm.c (aapcs_vfp_sub_candidate): Use V2SImode and
6763         V4SImode as representatives of all 64-bit and 128-bit vector
6764         types.  Allow vector types without vector modes.
6765         (aapcs_vfp_is_call_or_return_candidate): Handle vector types
6766         without vector modes like BLKmode.
6767         (aapcs_vfp_allocate): Handle TImode for non-TARGET_NEON like
6768         BLKmode.  Avoid unsupported vector modes or TImode moves for
6769         non-TARGET_NEON.
6770         (aapcs_vfp_allocate_return_reg): Likewise.
6771         (arm_vector_mode_supported_p): Only support V2SImode, V4HImode and
6772         V8QImode if TARGET_NEON || TARGET_IWMMXT.
6773
6774         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
6775
6776         * config/arm/arm.c (arm_handle_pcs_attribute): New.
6777         (arm_get_pcs_model): Pass attribute arguments to
6778         arm_pcs_from_attribute.
6779         (arm_init_cumulative_args): Use base AAPCS for conversions from
6780         floating-point types to DImode.
6781         (arm_attribute_table): Add pcs attribute.
6782         (arm_handle_pcs_attribute): New.
6783         * config/arm/bpabi.h (DECLARE_LIBRARY_RENAMES): When renaming
6784         conversions from floating-point types to DImode, also declare them
6785         to use base AAPCS and declare functions they call to use base
6786         AAPCS and their RTABI names.
6787
6788         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
6789
6790         * doc/invoke.texi (-mfloat-abi=@var{name}): Remove statement about
6791         -mfloat-abi=hard not being supported for VFP.
6792
6793         2009-05-11  Kazu Hirata  <kazu@codesourcery.com>
6794
6795         * config/sparc/sparc.c (sparc_emit_float_lib_cmp): Pass a libcall
6796         SYMBOL_REF to hard_libcall_value.
6797
6798         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
6799             Richard Earnshaw  <rearnsha@arm.com>
6800
6801         * config/arm/arm.c (aapcs_layout_arg): Once a co-processor argument
6802         has been put on the stack, all remaining co-processory arguments for
6803         that co-processor also go on the stack.
6804
6805         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
6806
6807         * config/arm/arm.c (arm_return_in_memory): Handle returning
6808         vectors of suitable size in registers also for AAPCS case.
6809
6810         2009-01-13  Richard Earnshaw <rearnsha@arm.com>
6811
6812         * doc/tm.texi (TARGET_LIBCALL_VALUE): Add missing end statement.
6813
6814         2008-12-09  Richard Earnshaw <rearnsha@arm.com>
6815
6816         ARM Hard-VFP calling convention
6817         * target-def.h (TARGET_LIBCALL_VALUE): New hook.
6818         * target.h (gcc_target): Add libcall_value to table of call hooks.
6819         * targhooks.h (default_libcall_value): Default implementation.
6820         * targhooks.c (default_libcall_value): Likewise.
6821         * doc/tm.texi (TARGET_LIBCALL_VALUE): Document it.
6822         * optabs.c (expand_unop): Use it.
6823         * expr.h (hard_libcall_value): Pass the function RTX through.
6824         * calls.c (emit_library_call_value_1): Update call to
6825         hard_libcall_value.
6826         * explow.c (hard_libcall_value): Use new target hook.
6827         * testsuite/lib/target-supports.exp
6828         (check_effective_target_arm_hard_vfp_ok): New hook.
6829         (check_effective_target_arm_neon_ok): Improve test for neon
6830         availability.
6831         * testsuite/gcc.target/arm/eabi1.c: Only run test in base variant.
6832         * config/arm/arm.c: Include cgraph.h
6833         (TARGET_FUNCTION_VALUE): Override default hook.
6834         (arm_pcs_default): New variable.
6835         (arm_override_options): Don't fault hard calling convention with VFP.
6836         Add support for AAPCS variants.
6837         (arm_function_value): Make static.  Handle AAPCS variants.
6838         (arm_libcall_value): New function.
6839         (arm_apply_result_size): Handle VFP registers in results.
6840         (arm_return_in_memory): Rework all AAPCS variants; handle hard-vfp
6841         conventions.
6842         (pcs_attribute_args): New variable.
6843         (arm_pcs_from_attribute): New function.
6844         (arm_get_pcs_model): New function.
6845         (aapcs_vfp_cum_init): New function.
6846         (aapcs_vfp_sub_candidate): New function.
6847         (aapcs_vfp_is_return_candidate): New function.
6848         (aapcs_vfp_is_call_candidate): New function.
6849         (aapcs_vfp_allocate): New function.
6850         (aapcs_vfp_allocate_return_reg): New function.
6851         (aapcs_vfp_advance): New function.
6852         (aapcs_cp_arg_layout): New variable.
6853         (aapcs_select_call_coproc): New function.
6854         (aapcs_select_return_coproc): New function.
6855         (aapcs_allocate_return_reg): New function.
6856         (aapcs_libcall_value): New function.
6857         (aapcs_layout_arg): New function.
6858         (arm_init_cumulative_args): Initialize AAPCS args data.
6859         (arm_function_arg): Handle AAPCS variants using new interface.
6860         (arm_arg_parital_bytes): Likewise.
6861         (arm_function_arg_advance): New function.
6862         (arm_function_ok_for_sibcall): Ensure that sibling calls agree on
6863         calling conventions.
6864         (arm_setup_incoming_varargs): Handle new AAPCS args data.
6865         * arm.h (NUM_VFP_ARG_REGS): Define.
6866         (LIBCALL_VALUE): Update.
6867         (FUNCTION_VALUE): Delete.
6868         (FUNCTION_VALUE_REGNO_P): Add VFP regs.
6869         (arm_pcs): New enum.
6870         (CUMULATIVE_ARGS): New data to support AAPCS argument marshalling.
6871         (FUNCTION_ARG_ADVANCE): Call arm_function_arg_advance.
6872         (FUNCTION_ARG_REGNO_P): Add VFP regs.
6873         * arm-protos.h (arm_function_arg_advance): Add.
6874         (aapcs_libcall_value): Add.
6875         (arm_function_value): Delete.
6876
6877 2009-08-06  Uros Bizjak  <ubizjak@gmail.com>
6878             H.J. Lu  <hongjiu.lu@intel.com>
6879
6880         PR target/40957
6881         * config/i386/i386.c (standard_sse_mode_p): Remove.
6882         (standard_sse_constant_p): Return 2 for integer mode
6883         vector_all_ones_operand when SSE2 is enabled.
6884         (standard_sse_constant_opcode)<case 2>: Always return [v]pcmpeqd.
6885         (ix86_expand_vector_move): Do not check for negative values from
6886         standard_sse_constant_p.
6887
6888 2009-08-06  Richard Guenther  <rguenther@suse.de>
6889
6890         * tree-ssa.c (useless_type_conversion_p_1): Make function and
6891         array type comparisons frontend independent.
6892         * Makefile.in (tree-ssa.o): Add $(TARGET_H) dependency.
6893         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Always fill
6894         out array reference lower bound and element size operands.
6895         (ao_ref_init_from_vn_reference): Properly compute the offset
6896         for ARRAY_RANGE_REF.
6897         (vn_reference_fold_indirect): Fill out array reference lower
6898         bound and element size operands.
6899         * tree-ssa-pre.c (phi_translate_1): Fail if we have to translate
6900         a non gimple valued reference operand which can happen for
6901         array reference lower bound or element size.
6902         (create_component_ref_by_pieces_1): Properly generate the
6903         element size operand for array references.
6904
6905 2009-08-06  Richard Guenther  <rguenther@suse.de>
6906
6907         PR tree-optimization/40964
6908         * tree.c (iterative_hash_host_wide_int): Export.
6909         * tree.h (iterative_hash_host_wide_int): Declare.
6910         * tree-ssa-structalias.c (heapvar_map): New struct.
6911         (heapvar_map_eq): New function.
6912         (heapvar_map_hash): Likewise.
6913         (heapvar_lookup): Adjust.
6914         (heapvar_insert): Likewise.
6915         (make_constraint_from_heapvar): Allow multiple heap variables
6916         per decl at different offsets.
6917         (init_alias_heapvars): Adjust.
6918
6919 2009-08-04  David Daney  <ddaney@caviumnetworks.com>
6920
6921         * config/mips/mips.h (TARGET_SYNC_AFTER_SC): New macro.
6922         * mips_output_sync_loop (mips_output_sync_loop): Only emit
6923         trailing sync if TARGET_SYNC_AFTER_SC.
6924
6925 2009-08-05  David Daney  <ddaney@caviumnetworks.com>
6926
6927         * gcc/config/mips/sync.md (sync_compare_and_swap<mode>,
6928         compare_and_swap_12, sync_add<mode>, sync_<optab>_12,
6929         sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12,
6930         sync_old_nand_12, sync_new_nand_12, sync_sub<mode>,
6931         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
6932         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
6933         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
6934         sync_new_nand<mode>, sync_lock_test_and_set<mode>,
6935         test_and_set_12): Rewrite calls to mips_output_sync_loop.
6936         * gcc/config/mips/mips-protos.h (mips_output_sync_loop): Make
6937         the prototype declaration match the definition.
6938         * gcc/config/mips/mips.c (mips_output_sync_loop):  Emit sync
6939         instructions explicitly.  Add barrier_before and operands
6940         parameters.
6941         * gcc/config/mips/mips.h (MIPS_COMPARE_AND_SWAP,
6942         MIPS_COMPARE_AND_SWAP_12, MIPS_SYNC_OP, MIPS_SYNC_OP_12,
6943         MIPS_SYNC_OLD_OP_12, MIPS_SYNC_NEW_OP_12, MIPS_SYNC_OLD_OP,
6944         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
6945         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE,
6946         MIPS_SYNC_EXCHANGE_12): Remove sync instructions.
6947
6948 2009-08-05  Andrew Pinski  <pinskia@gmail.com>
6949
6950         * tree-ssa-alias.c: Fix intervals to use [) syntax.
6951
6952 2009-08-05  Uros Bizjak  <ubizjak@gmail.com>
6953             Mikulas Patocka  <mikulas@artax.karlin.mff.cuni.cz>
6954
6955         PR target/40906
6956         * config/i386/i386.c (ix86_split_long_move): Fix push of multi-part
6957         source operand.
6958
6959 2009-08-05  Jakub Jelinek  <jakub@redhat.com>
6960
6961         PR rtl-optimization/40924
6962         * dse.c (canon_address): Before calling cselib_expand_value_rtx
6963         make sure canon_rtx (mem_address) isn't simpler than
6964         canon_rtx (expanded_mem_address).
6965
6966 2009-08-05  Li Feng  <nemokingdom@gmail.com>
6967
6968         * graphite-sese-to-poly.c (build_pbb_drs): Remove build alias set
6969         for each poly_bb_p.
6970         (build_scop_drs): Build alias set for each SCoP.
6971
6972 2009-08-04  Sandra Loosemore  <sandra@codesourcery.com>
6973
6974         * doc/invoke.texi (MIPS Options): Document new 1004K -march options.
6975         * config/mips/mips.c (mips_cpu_info_table): Add 1004K cores.
6976         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Add pattern for 1004K.
6977         (MIPS_ARCH_FLOAT_SPEC): Likewise.
6978         (BASE_DRIVER_SELF_SPECS): Likewise.
6979
6980 2009-08-04  Andrew Pinski  <pinskia@gmail.com>
6981
6982         * tree-ssa-alias.c: Fix some comment typos.
6983
6984 2009-08-04  Kaz Kojima  <kkojima@gcc.gnu.org>
6985
6986         * config/sh/linux-atomic.asm (ATOMIC_BOOL_COMPARE_AND_SWAP,
6987         ATOMIC_OP_AND_FETCH, ATOMIC_COMBOP_AND_FETCH): Define.
6988
6989 2009-08-03  Janis Johnson  <janis187@us.ibm.com>
6990
6991         PR c/39902
6992         * simplify-rtx.c (simplify_binary_operation_1): Disable
6993         simplifications for decimal float operations.
6994
6995 2009-08-03  Jakub Jelinek  <jakub@redhat.com>
6996
6997         PR middle-end/40943
6998         * tree-ssa.c (warn_uninitialized_var): Even on LHS warn for
6999         operand of INDIRECT_REF.
7000
7001 2009-08-03  Uros Bizjak  <ubizjak@gmail.com>
7002
7003         * config/alpha/alpha.c (alpha_legitimate_constant_p): Reject CONST
7004         constants referencing TLS symbols.
7005
7006 2009-08-03  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
7007
7008         * config/sh/linux-atomic.asm (ATOMIC_COMPARE_AND_SWAP): Rename
7009         __sync_compare_and_swap_* to __sync_val_compare_and_swap_*.
7010
7011 2009-08-03  Richard Guenther  <rguenther@suse.de>
7012
7013         * tree.c (make_vector_type): Build a main variant first,
7014         get the canonical one and then build the variant.
7015         * tree-ssa.c (useless_type_conversion_p_1): Handle
7016         fixed-point types.
7017         (useless_type_conversion_p): Conversions to pointers to
7018         incomplete record types are useless.
7019
7020 2009-08-03  Richard Guenther  <rguenther@suse.de>
7021
7022         * tree-cfg.c (pass_warn_unused_result): Mark name that no dump
7023         file will be created.
7024         * omp-low.c (pass_diagnose_omp_blocks): Likewise.
7025         * toplev.c (compile_file): Adjust comment.
7026
7027 2009-08-03  Kaz Kojima  <kkojima@gcc.gnu.org>
7028
7029         * config/sh/sh-protos.h (sh_promote_function_mode): Remove.
7030         * config/sh/sh.c (sh_promote_function_mode): Wrap long lines.
7031         (TARGET_PROMOTE_FUNCTION_MODE): Define.
7032         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
7033         (sh_promote_function_mode): Fix typo.
7034
7035 2009-08-03  Andreas Krebbel  <krebbel1@de.ibm.com>
7036
7037         * explow.c (promote_mode): Mark TYPE and PUNSIGNEDP as possibly unused.
7038
7039 2009-08-02  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7040
7041         * pa.c (pa_promote_function_mode): Remove ATTRIBUTE_UNUSED from
7042         declaration arguments.
7043
7044 2009-08-02  Uros Bizjak  <ubizjak@gmail.com>
7045
7046         * config/i386/i386.c (ix86_expand_fp_compare): Use const0_rtx instead
7047         of GEN_INT (0x00) and const1_rtx instead of GEN_INT (0x01).
7048         (ix86_split_ashl): Ditto.
7049         (ix86_expand_vector_init_one_nonzero): Ditto.
7050         (ix86_expand_vector_set): Ditto.
7051         (ix86_expand_reduc_v4sf): Ditto.
7052
7053 2009-08-02  Paolo Bonzini  <bonzini@gnu.org>
7054
7055         * explow.c (promote_function_mode): Remove assert.
7056         * config/sh/sh.c (sh_promote_function_mode): Declare.
7057
7058 2009-08-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7059
7060         * config/pa/pa.c (pa_promote_function_mode): Declare.
7061         Change to static.  Fix promote_mode call.
7062
7063         * gthr-dce.h (CONST_CAST2): Define if not defined.
7064         (__gthread_setspecific): Use CONST_CAST2 to fix warning.
7065
7066         * config.gcc (hppa[12]*-*-hpux10*): Add stdint support.
7067
7068 2009-08-01  Paolo Bonzini  <bonzini@gnu.org>
7069
7070         * expr.c (store_constructor): Use promote_decl_mode.  Remove
7071         now write-only variable unsignedp.
7072         (expand_expr_real_1): Use promote_decl_mode.
7073         * expr.h (promote_function_mode, promote_decl_mode): New.
7074         (promote_mode): Remove last argument.
7075         * function.c (assign_temp): Drop last argument of promote_mode.
7076         (assign_parm_find_data_types): Use promote_function_mode.
7077         (assign_parm_setup_reg): Likewise.
7078         (expand_function_end): Use promote_function_mode.
7079         * calls.c (initialize_argument_information): Use promote_function_mode.
7080         (precompute_arguments): Use promote_mode instead of checking if
7081         only PROMOTE_FUNCTION_MODE is defined.
7082         (expand_call): When making sibcall decisions, use promote_function_mode.
7083         Below, remove an if for targetm.calls.promote_function_return and
7084         and use promote_function_mode.
7085         (emit_library_call_value_1): Use promote_function_mode, fix bug
7086         where promote_mode was passed FOR_CALL == 0 for a return value in an
7087         assertion.
7088         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
7089         * explow.c (promote_function_mode, promote_decl_mode): New.
7090         (promote_mode): Keep only the FOR_CALL == 0 case.
7091         * combine.c (setup_incoming_promotion): Remove test of
7092         promote_function_args.  Use promote_function_mode.
7093         * stmt.c (expand_value_return): Use promote_decl_mode.
7094         (expand_decl): Use promote_decl_mode.
7095
7096         * expr.c (store_constructor): Use promote_decl_mode.  Remove
7097         now write-only variable unsignedp.
7098         (expand_expr_real_1): Use promote_decl_mode.
7099         * expr.h (promote_function_mode, promote_decl_mode): New.
7100         (promote_mode): Remove last argument.
7101         * function.c (assign_temp): Drop last argument of promote_mode.
7102         (assign_parm_find_data_types): Use promote_function_mode.
7103         (assign_parm_setup_reg): Likewise.
7104         (expand_function_end): Use promote_function_mode.
7105         * calls.c (initialize_argument_information): Use promote_function_mode.
7106         (precompute_arguments): Use promote_mode instead of checking if
7107         only PROMOTE_FUNCTION_MODE is defined.
7108         (expand_call): When making sibcall decisions, use promote_function_mode.
7109         Below, remove an if for targetm.calls.promote_function_return and
7110         and use promote_function_mode.
7111         (emit_library_call_value_1): Use promote_function_mode, fix bug
7112         where promote_mode was passed FOR_CALL == 0 for a return value in an
7113         assertion.
7114         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
7115         * explow.c (promote_function_mode, promote_decl_mode): New.
7116         (promote_mode): Keep only the FOR_CALL == 0 case.
7117         * combine.c (setup_incoming_promotion): Remove test of
7118         promote_function_args.  Use promote_function_mode.
7119         * stmt.c (expand_value_return): Use promote_decl_mode.
7120         (expand_decl): Use promote_decl_mode.
7121
7122         * explow.c (promote_function_mode): Just call the target hook.
7123         * targhooks.c (default_promote_function_mode,
7124         default_promote_function_mode_always_promote): New.
7125         * targhooks.h (default_promote_function_mode,
7126         default_promote_function_mode_always_promote): Declare.
7127         * target.h (promote_function_args, promote_function_return): Remove.
7128         (promote_function_mode): New.
7129         * target-def.h (TARGET_PROMOTE_FUNCTION_ARGS,
7130         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
7131         (TARGET_PROMOTE_FUNCTION_MODE): New.
7132         (TARGET_CALLS): Adjust.
7133         * system.h (TARGET_PROMOTE_FUNCTION_ARGS,
7134         TARGET_PROMOTE_FUNCTION_RETURN, PROMOTE_FUNCTION_MODE): Poison.
7135
7136         * config/s390/s390.h (PROMOTE_FUNCTION_MODE): Move...
7137         * config/s390/s390.c (s390_promote_function_mode): ... here,
7138         with pointer handling.
7139         (TARGET_PROMOTE_FUNCTION_MODE): Define.
7140         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
7141
7142         * config/sparc/sparc.h (PROMOTE_FUNCTION_MODE): Move...
7143         * config/sparc/sparc.c (sparc_promote_function_mode): ... here,
7144         with pointer handling.
7145         (TARGET_PROMOTE_FUNCTION_MODE): Define.
7146         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
7147
7148         * config/sh/sh-protos.h (sh_promote_function_mode): New.
7149         * config/sh/sh.c (sh_promote_function_mode): New.
7150         (TARGET_PROMOTE_FUNCTION_MODE): Define.
7151         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
7152
7153         * config/cris/cris.h (PROMOTE_FUNCTION_MODE): Move...
7154         * config/cris/cris.c (cris_promote_function_mode): ... here.
7155         (TARGET_PROMOTE_FUNCTION_MODE): Define.
7156         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
7157
7158         * config/mmix/mmix.h (PROMOTE_FUNCTION_MODE): Move...
7159         * config/mmix/mmix.c (mmix_promote_function_mode): ... here.
7160         (TARGET_PROMOTE_FUNCTION_MODE): Define.
7161         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
7162
7163         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Move...
7164         * config/arm/arm.c (arm_promote_function_mode): ... here, without
7165         complex type handling.
7166         (TARGET_PROMOTE_FUNCTION_MODE): Define.
7167         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
7168
7169         * config/pa/pa.c (pa_promote_function_mode): New.
7170         (TARGET_PROMOTE_FUNCTION_MODE): Define.
7171         (TARGET_PROMOTE_FUNCTION_RETURN): Remove.
7172
7173         * config/alpha/alpha.c (TARGET_PROMOTE_FUNCTION_ARGS,
7174         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
7175         (TARGET_PROMOTE_FUNCTION_MODE): Define equivalently.
7176         * config/xtensa/xtensa.c: Likewise.
7177         * config/stormy16/stormy16.c: Likewise.
7178         * config/iq2000/iq2000.c: Likewise.
7179         * config/rs6000/rs6000.c: Likewise.
7180         * config/picochip/picochip.c: Likewise.
7181         * config/arc/arc.c: Likewise.
7182         * config/mcore/mcore.c: Likewise.
7183         * config/score/score.c: Likewise.
7184         * config/mips/mips.c: Likewise.
7185         * config/bfin/bfin.c: Likewise.
7186         * config/ia64/ia64.c: Likewise (disabled though).
7187
7188         * config/frv/frv.h: Remove pointless remark.
7189
7190         * doc/tm.texi (PROMOTE_FUNCTION_MODE,
7191         TARGET_PROMOTE_FUNCTION_ARGS,
7192         TARGET_PROMOTE_FUNCTION_RETURN): Consolidate into...
7193         (TARGET_PROMOTE_FUNCTION_MODE): ... this.
7194
7195 2009-08-01  Sebastian Pop  <sebastian.pop@amd.com>
7196
7197         * doc/invoke.texi (-fgraphite-force-parallel): Renamed
7198         -floop-parallelize-all.
7199         * toplev.c (process_options): Rename flag_graphite_force_parallel to
7200         flag_loop_parallelize_all.
7201         * tree-ssa-loop.c (gate_graphite_transforms): Same.
7202         * graphite.c (graphite_transform_loops): Same.
7203         * common.opt: Same.
7204         * graphite-poly.c (apply_poly_transforms): Same.
7205
7206 2009-07-31  Richard Earnshaw  <rearnsha@arm.com>
7207
7208         PR tree-optimization/40914
7209         * ipa-prop.c (ipa_get_ptr_load_param): New argument use_delta,
7210         if set, then check the delta field of the PMF record.
7211         (ipa_get_stmt_member_ptr_load_param): Propagate new param use_delta.
7212         (ipa_analyze_call_uses): Handle machines where the vbit for a PMF
7213         call is stored in the delta.
7214
7215 2009-07-31  Adam Nemet  <anemet@caviumnetworks.com>
7216
7217         * config/mips/mips.md (*clear_upper32_dext): New pattern.
7218
7219 2009-07-31  Uros Bizjak  <ubizjak@gmail.com>
7220
7221         * config/i386/bsd.h (ASM_BYTE): New define.
7222         * config/i386/darwin.h (ASM_BYTE): Rename from ASM_BYTE_OP.
7223         * config/i386/att.h (ASM_BYTE): New define. Use ASM_BYTE instead of
7224         .byte.  Use fputs or putc instead of fprintf where appropriate.
7225         * config/i386/i386-interix.h: Use ASM_BYTE instead of .byte.  Use
7226         fputs or putc instead of fprintf where appropriate.
7227         * config/i386/i386elf.h: Ditto.
7228         * config/i386/sysv4.h: Ditto.
7229
7230         * config/i386/i386.c (TARGET_ASM_BYTE_OP): New define.
7231         * config/i386/i386.md (x86_sahf_1): Use ASM_BYTE instead of .byte.
7232         (*tls_global_dynamic_64): Ditto.
7233
7234 2009-07-31  Christian Bruel  <christian.bruel@st.com>
7235
7236         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
7237
7238 2009-07-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
7239
7240         * config/arm/arm.c (arm_arm_address_cost): Fix typo.
7241         Remove dead code for MINUS.
7242
7243 2009-07-31  Anthony Green  <green@moxielogic.com>
7244
7245         * config/moxie/moxie.c (moxie_expand_prologue): Use $r5 instead of
7246         $r12 in prologue.
7247         (moxie_expand_epilogue): Ditto for epilogue.
7248         (moxie_setup_incoming_varargs): ABI change.  Use 5 registers for
7249         incoming arguments.
7250         (moxie_function_arg): Ditto.
7251         (moxie_pass_by_reference): Ditto.
7252         (moxie_arg_partial_bytes): Ditto.
7253         * config/moxie/moxie.h (CALL_USED_REGISTERS): Ditto.
7254         (FUNCTION_ARG_ADVANCE) Ditto.
7255         (REG_PARM_STACK_SPACE) Ditto.
7256         (FUNCTION_ARG_REGNO_P) Dito.
7257
7258         * config.gcc: Add moxie linux config support.
7259         * gcc/config/moxie/uclinux.h: New file.
7260
7261 2009-07-31  DJ Delorie  <dj@redhat.com>
7262
7263         * config/sh/sh.md (UNSPECV_SP_SWITCH_B): New.
7264         (UNSPECV_SP_SWITCH_E): New.
7265         (sp_switch_1): Change to an unspec.
7266         (sp_switch_2): Change to an unspec.  Don't use post-inc when we
7267         replace $r15.
7268         * config/sh/sh.c (sh_expand_prologue): Use the constant pool to
7269         reference the new stack's address
7270
7271 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
7272
7273         * Makefile.in (OBJS-common): Added dependence on graphite-blocking.o,
7274         graphite-clast-to-gimple.o, graphite-dependences.o,
7275         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
7276         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o.
7277         (graphite-blocking.o,
7278         graphite-clast-to-gimple.o, graphite-dependences.o,
7279         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
7280         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o): New.
7281         * cfgloop.c (alloc_loop): Set loop->can_be_parallel to false.
7282         * cfgloop.h (struct loop): Add can_be_parallel field.
7283         * common.opt (fgraphite-identity): Moved up.
7284         (fgraphite-force-parallel): New flag.
7285         * graphite.c: Rewrite.
7286         * graphite.h: Rewrite.
7287         * passes.c (init_optimization_passes): Schedule a pass of DCE and LIM
7288         after Graphite.
7289         * toplev.c (graphite_out_file): New file descriptor.
7290         (graphite_in_file): New.
7291         (process_options): flag_graphite_force_parallel cannot be used without
7292         Graphite.
7293         * tree-ssa-loop.c: Include toplev.h.
7294         (gate_graphite_transforms): Enable flag_graphite for
7295         flag_graphite_force_parallel.
7296
7297 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
7298
7299         * ChangeLog.graphite: New.
7300         * graphite-blocking.c: New.
7301         * graphite-clast-to-gimple.c: New.
7302         * graphite-clast-to-gimple.h: New.
7303         * graphite-dependences.c: New.
7304         * graphite-dependences.h: New.
7305         * graphite-interchange.c: New.
7306         * graphite-poly.c: New.
7307         * graphite-poly.h: New.
7308         * graphite-ppl.c: New.
7309         * graphite-ppl.h: New.
7310         * graphite-scop-detection.c: New.
7311         * graphite-scop-detection.h: New.
7312         * graphite-sese-to-poly.c: New.
7313         * graphite-sese-to-poly.h: New.
7314         * sese.c: New.
7315         * sese.h: New.
7316
7317 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
7318
7319         * tree-chrec.c (evolution_function_right_is_integer_cst): New.
7320         * tree-chrec.h (evolution_function_right_is_integer_cst): Declared.
7321
7322 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
7323
7324         * tree-chrec.c (operator_is_linear): Handle BIT_NOT_EXPR.
7325         (scev_is_linear_expression): Return false if the evolution is not
7326         affine multivariate.
7327
7328 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
7329
7330         * tree-data-ref.c (graphite_find_data_references_in_stmt): New.
7331         * tree-data-ref.h (graphite_find_data_references_in_stmt): Declared.
7332
7333 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
7334
7335         * tree-data-ref.c (debug_data_references): New.
7336         (debug_data_reference): New.
7337         * tree-data-ref.h (debug_data_references): Declared.
7338         (debug_data_reference): Declared.
7339
7340 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
7341
7342         * tree-data-ref.c (stmt_simple_memref_p: Removed.
7343         * tree-data-ref.h (scop_p): Removed.
7344         (struct data_reference): Remove field scop.
7345         (DR_SCOP): Removed.
7346         (stmt_simple_memref_p): Removed.
7347
7348 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
7349
7350         * cfgloop.h (create_empty_loop_on_edge): Pass an extra argument.
7351         * cfgloopmanip.c (create_empty_loop_on_edge): Leave the loop_latch
7352         basic block empty.
7353
7354 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
7355
7356         * doc/invoke.texi (-fgraphite-force-parallel): Documented.
7357
7358 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
7359
7360         * doc/invoke.texi (-fgraphite-identity): Documented.
7361
7362 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
7363
7364         * tree-scalar-evolution.c: Fix comment.
7365         (instantiate_scev_1): Return unknow from scev instantiation if the
7366         result is not above instantiate_below.
7367
7368 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
7369
7370         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop): Not
7371         static anymore.  Instantiate the symbols that may have been introduced
7372         by chrec_apply.
7373         * tree-scalar-evolution.h (compute_overall_effect_of_inner_loop):
7374         Declared.
7375
7376 2009-07-30  DJ Delorie  <dj@redhat.com>
7377
7378         * config/mep/mep.c (mep_asm_init_sections): Add section flags and
7379         .vliw directive to VLIW sections.
7380
7381 2009-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
7382
7383         * Makefile.in (AUTOCONF, ACLOCAL, ACLOCAL_AMFLAGS, aclocal_deps):
7384         New variables.
7385         ($(srcdir)/configure, $(srcdir)/aclocal.m4): New rules.
7386         (AUTOHEADER): New variable.
7387         ($(srcdir)/cstamp-h.in): Use it.
7388
7389 2009-07-30  Michael Meissner  <meissner@linux.vnet.ibm.com>
7390             Pat Haugen  <pthaugen@us.ibm.com>
7391             Revital Eres <ERES@il.ibm.com>
7392
7393         * config/rs6000/vector.md (VEC_F): Add VSX support.
7394         (VEC_A): Ditto.
7395         (VEC_N): Ditto.
7396         (mov<mode>): Ditto.
7397         (vector_load_<mode>): Ditto.
7398         (vector_store_<mode>): Ditto.
7399         (vector GPR move split): Ditto.
7400         (vec_reload_and_plus_<mptrsize>): Ditto.
7401         (vec_reload_and_reg_<mptrsize>): Ditto.
7402         (add<mode>3): Ditto.
7403         (sub<mode>3): Ditto.
7404         (mul<mode>3): Ditto.
7405         (neg<mode>2): Ditto.
7406         (abs<mode>2): Ditto.
7407         (smin<mode>3): Ditto.
7408         (smax<mode>3): Ditto.
7409         (vector_eq<mode>): Ditto.
7410         (vector_gt<mode>): Ditto.
7411         (vector_ge<mode>): Ditto.
7412         (vector_gtu<mode>): Ditto.
7413         (vector_select_<mode>_uns): Ditto.
7414         (vector_eq_<mode>_p): Ditto.
7415         (vector_gt_<mode>_p): Ditto.
7416         (vector_ge_<mode>_p): Ditto.
7417         (vector_gtu_<mode>_p): Ditto.
7418         (cr6_test_for_zero): Ditto.
7419         (cr6_test_for_zero_reverse): Ditto.
7420         (cr6_test_for_lt): Ditto.
7421         (cr6_test_for_lt_reverse): Ditto.
7422         (xor<mode>3): Ditto.
7423         (ior<mode>3): Ditto.
7424         (and<mode>3): Ditto.
7425         (one_cmpl<mode>2): Ditto.
7426         (nor<mode>2): Ditto.
7427         (andc<mode>2): Ditto.
7428         (float<VEC_int<mode>2): Ditto.
7429         (unsigned_float<VEC_int><mode>2): Ditto.
7430         (fix_trunc<mode><VEC_int>2): Ditto.
7431         (fixuns_trunc<mode><VEC_int>2): Ditto.
7432         (vec_init<mode>):
7433         (vec_set<mode>): Ditto.
7434         (vec_extract<mode>): Ditto.
7435         (vec_interleave_highv4sf): Ditto.
7436         (vec_interleave_lowv4sf): Ditto.
7437         (vec_realign_load_<mode>): Ditto.
7438         (vec_shl_<mode>): Ditto.
7439         (vec_shr_<mode>): Ditto.
7440         (div<mode>3): New patterns for VSX.
7441         (vec_interleave_highv2df): Ditto.
7442         (vec_interleave_lowv2df): Ditto.
7443         (vec_pack_trunc_v2df): Ditto.
7444         (vec_pack_sfix_trunc_v2df): Ditto.
7445         (vec_pack_ufix_trunc_v2df): Ditto.
7446         (vec_unpacks_hi_v4sf): Ditto.
7447         (vec_unpacks_lo_v4sf): Ditto.
7448         (vec_unpacks_float_hi_v4si): Ditto.
7449         (vec_unpacks_float_lo_v4si): Ditto.
7450         (vec_unpacku_float_hi_v4si): Ditto.
7451         (vec_unpacku_float_lo_v4si): Ditto.
7452         (movmisalign<mode>): Ditto.
7453         (vector_ceil<mode>2): New patterns for vectorizing math library.
7454         (vector_floor<mode>2): Ditto.
7455         (vector_btrunc<mode>2): Ditto.
7456         (vector_copysign<mode>3): Ditto.
7457
7458         * config/rs6000/predicates.md (easy_vector_constant_msb): New
7459         predicate for setting the high bit in each word, used for copysign.
7460
7461         * config/rs6000/ppc-asm.h (f19): Whitespace.
7462         (f32-f63): Define if VSX.
7463         (v0-v31): Define if Altivec.
7464         (vs0-vs63): Define if VSX.
7465
7466         * config/rs6000/t-rs6000 (MD_INCLUDES): Add power7.md and vsx.md.
7467
7468         * config/rs6000/power7.md: New file, provide tuning parameters for
7469         -mcpu=power7.
7470
7471         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Add VSX support.
7472         (rs6000_cpu_cpp_builtins): Ditto.
7473         (altivec_overloaded_builtins): Ditto.
7474         (altivec_resolve_overloaded_builtin): Ditto.
7475
7476         * config/rs6000/rs6000.opt (-mno-vectorize-builtins): Add new
7477         debug switch to disable vectorizing simple math builtin
7478         functions.
7479
7480         * config/rs6000/rs6000.c (rs6000_builtin_vectorized_function):
7481         Vectorize simple math builtin functions.
7482         (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define target
7483         hook to vectorize math builtins.
7484         (rs6000_override_options): Enable -mvsx on -mcpu=power7.
7485         (rs6000_builtin_conversion): Add VSX/power7 support.
7486         (rs6000_builtin_vec_perm): Ditto.
7487         (vsplits_constant): Add support for loading up a vector constant
7488         with just the high bit set in each part.
7489         (rs6000_expand_vector_init): Add VSX/power7 support.
7490         (rs6000_expand_vector_set): Ditto.
7491         (rs6000_expand_vector_extract): Ditto.
7492         (rs6000_emit_move): Ditto.
7493         (bdesc_3arg): Ditto.
7494         (bdesc_2arg): Ditto.
7495         (bdesc_1arg): Ditto.
7496         (rs6000_expand_ternop_builtin): Ditto.
7497         (altivec_expand_builtin): Ditto.
7498         (rs6000_expand_unop_builtin): Ditto.
7499         (rs6000_init_builtins): Ditto.
7500         (altivec_init_builtins): Ditto.
7501         (builtin_function_type): Ditto.
7502         (rs6000_common_init_builtins): Ditto.
7503         (rs6000_handle_altivec_attribute); Ditto.
7504         (rs6000_mangle_type): Ditto.
7505         (rs6000_vector_mode_supported_p): Ditto.
7506         (rs6000_mode_dependent_address): Altivec addresses with AND -16
7507         are mode dependent.
7508
7509         * config/rs6000/vsx.md: New file for VSX support.
7510
7511         * config/rs6000/rs6000.h (EASY_VECTOR_MSB): New macro for
7512         identifing values with just the most significant bit set.
7513         (enum rs6000_builtins): Add builtins for VSX.  Add simple math
7514         vectorized builtins.
7515
7516         * config/rs6000/altivec.md (UNSPEC_VRFIP): Delete.
7517         (UNSPEC_VRFIM): Delete.
7518         (splitter for loading up vector with most significant bit): New
7519         splitter for vectorizing copysign.
7520         (altivec_vrfiz): Rename from altivec_fturncv4sf2.  Add support for
7521         vectorizing simple math functions.
7522         (altivec_vrfip): Add support for vectorizing simple math functions.
7523         (altivec_vrfim): Ditto.
7524         (altivec_copysign_v4sf3): New insn for Altivec copysign support.
7525
7526         * config/rs6000/rs6000.md (UNSPEC_BPERM): New constant.
7527         (power7.md, vsx.md): Include for power7 support.
7528         (copysigndf3): Use VSX instructions if -mvsx.
7529         (negdf2_fpr): Ditto.
7530         (absdf2_fpr): Ditto.
7531         (nabsdf2_fpr): Ditto.
7532         (adddf3_fpr): Ditto.
7533         (subdf3_fpr): Ditto.
7534         (muldf3_fpr): Ditto.
7535         (divdf3_fpr): Ditto.
7536         (fix_truncdfdi2_fpr): Ditto.
7537         (cmpdf_internal1): Ditto.
7538         (fred, fred_fpr): Convert into expander/insn to add VSX support.
7539         (btruncdf2, btruncdf2_fpr): Ditto.
7540         (ceildf2, ceildf2_fpr): Ditto.
7541         (floordf2, floordf2_fpr): Ditto.
7542         (floatdidf2, floatdidf2_fpr): Ditto.
7543         (fmadddf4_fpr): Name insn.  Use VSX instructions if -mvsx.
7544         (fmsubdf4_fpr): Ditto.
7545         (fnmadddf4_fpr_1): Ditto.
7546         (fnmadddf4_fpr_2): Ditto.
7547         (fnmsubdf4_fpr_1): Ditto.
7548         (fnmsubdf4_fpr_2): Ditto.
7549         (fixuns_truncdfdi2): Add expander for VSX support.
7550         (fix_truncdfdi2): Ditto.
7551         (fix_truncdfsi2): Ditto.
7552         (ftruncdf2): Ditto.
7553         (btruncsf2): Whitespace.
7554         (movdf_hardfloat32): Add support for VSX registers.
7555         (movdf_softfloat32): Ditto.
7556         (movdf_hardfloat64): Ditto.
7557         (movdf_hardfloat64_mfpgpr): Ditto.
7558         (movdf_softfloat64): Ditto.
7559         (movti splitters): Add check for vector registers supporting
7560         TImode in the future.
7561         (bpermd): Add power7 bpermd instruction.
7562
7563         * config/rs6000/altivec.h (vec_div): Define if VSX.
7564         (vec_mul): Ditto.
7565         (vec_msub): Ditto.
7566         (vec_nmadd): Ditto.
7567         (vec_nearbyint): Ditto.
7568         (vec_rint): Ditto.
7569         (vec_sqrt): Ditto.
7570         (all predicates): Use the generic builtin function, and not the V4SF
7571         specific function so that the predicates will work with VSX's V2DF.
7572         (vec_all_*): Ditto.
7573         (vec_any_*): Ditto.
7574
7575         * doc/extend.texi (PowerPC Altivec/VSX Built-in Functions):
7576         Document new VSX functions and types.
7577
7578         * doc/invoke.texi (PowerPc options): Document -mpopcntd, -mvsx
7579         switches.
7580
7581         * doc/md.texi (PowerPC constraints): Document "wd", "wf", "ws",
7582         "wa", and "j" constraints.  Modify "v" to talk about Altivec
7583         instead of just vector.
7584
7585 2009-07-30  Andrew MacLeod  <amacleod@redhat.com>
7586
7587         PR debug/26475
7588         * tree-into-ssa.c (insert_phi_nodes_for, rewrite_add_phi_arguments): Set
7589         location for phi arguments.
7590         (rewrite_update_phi_arguments): Find locations for reaching defs.
7591         * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis):
7592         Add location to add_phi_arg calls.
7593         * tree-loop-districbution.c (update_phis_for_loop_copy): Add locations.
7594         * tree-ssa-loop-manip.c (create_iv, add_exit_phis_edge,
7595         split_loop_exit_edge, tree_transform_and_unroll_loop): Add locations.
7596         * tree-tailcall.c (add_successor_phi_arg, eliminate_tail_call,
7597         create_tailcall_accumulator, tree_optimize_tail_calls_1): Add locations.
7598         * tree.h (struct phi_arg_d): Add location_t to PHI arguments.
7599         * tree-phinodes.c (make_phi_node): Initialize location.
7600         (resize_phi_node): Initialize location to UNKNOWN_LOCATION.
7601         (add_phi_arg): Add location parameter.
7602         (remove_phi_arg_num): Move location when moving phi argument.
7603         * omp-low.c (expand_parallel_call, expand_omp_for_static_chunk): Set
7604         location.
7605         * tree-vect-loop-manip.c (slpeel_update_phis_for_duplicate_loop,
7606         slpeel_update_phi_nodes_for_guard1,
7607         slpeel_update_phi_nodes_for_guard2,
7608         slpeel_tree_duplicate_loop_to_edge_cfg, set_prologue_iterations,
7609         vect_loop_versioning): Set locations.
7610         * tree-parloops.c (create_phi_for_local_result,
7611         transform_to_exit_first_loop, create_parallel_loop): Add locations.
7612         * gimple-pretty-print.c (dump_gimple_phi): Dump lineno's if present.
7613         * tree-vect-loop.c (get_initial_def_for_induction,
7614         vect_create_epilog_for_reduction, vect_finalize_reduction): Add
7615         locations.
7616         * tree-flow-inline.h (gimple_phi_arg_location): New.  Return locus.
7617         (gimple_phi_arg_location_from_edge): New.  Return locus from an edge.
7618         (gimple_phi_arg_set_location): New.  Set locus.
7619         (gimple_phi_arg_has_location): New.  Check for locus.
7620         (redirect_edge_var_map_location): New.  Return locus from var_map.
7621         * tree-vect-data-refs.c (vect_setup_realignment): Set location.
7622         * tree-ssa-phiopt.c (conditional_replacement): Set locus when
7623         combining PHI arguments.
7624         (cond_store_replacement): Set location.
7625         * cfgexpand.c (gimple_assign_rhs_to_tree): Transfer locus if possible.
7626         * grpahite.c (add_loop_exit_phis, add_guard_exit_phis,
7627         scop_add_exit_phis_edge): Add locations.
7628         * tree-cfgcleanup.c (remove_forwarder_block,
7629         remove_forwarder_block_with_phi): Add locations.
7630         * tree-ssa-pre.c (insert_into_preds_of_block): Add locations.
7631         * tree-predcom.c (initialize_root_vars, initialize_root_vars_lm): Add
7632         locations.
7633         * tree-ssa-dce.c (forward_edge_to_pdom): Add locations.
7634         * tree-ssa.c (redirect_edge_var_map_add, ssa_redirect_edge,
7635         flush_pending_stmts): Add source location.
7636         * lambda-code.c (perfect_nestify): Maintain location stack with argument
7637         stack to preserve locations.
7638         * tree-vect-stmts.c (vectorizable_load): Add location.
7639         * tree-inline.c (copy_phis_for_bb): Copy locus.
7640         (setup_one_parameter): Add call locus to inlined parameter stmts.
7641         (initialize_inlined_parameters): Pass in call location as parameter
7642         assignment locus.
7643         (tree_function_versioning): Pass location to setup_one_parameter.
7644         * tree-ssa-phiprop.c (phiprop_insert_phi): Set locations.
7645         * tree-outof-ssa.c (struct _elim_graph): Add source_location vecs for
7646         copy and edge lists.
7647         (insert_partition_copy_on_edge, insert_value_copy_on_edge,
7648         insert_rtx_to_part_on_edge, insert_part_to_rtx_on_edge): Provide a
7649         locus parameter and override the stmt default if provided.
7650         (new_elim_graph, clear_elim_graph, delete_elim_graph,
7651         elim_graph_add_edge, elim_graph_remove_succ_edge,
7652         FOR_EACH_ELIM_GRAPH_SUCC, FOR_EACH_ELIM_GRAPH_PRED, eliminate_build,
7653         elim_forward, elim_unvisited_predecessor, elim_backward, elim_create,
7654         eliminate_phi):  Add locus info in elimination graph for each edge and
7655         value copy.
7656         (insert_backedge_copies): Copy locus if present.
7657         * tree-flow.h (struct _edge_var_map): Add locus field.
7658         * tree-switch_conversions.c (fix_phi_nodes): Add locations.
7659         * tree-cfg.c (reinstall_phi_args, gimple_make_forwarder_block,
7660         add_phi_args_after_copy_edge, gimple_lv_adjust_loop_header_phi): Add
7661         locations.
7662         * ipa-struct-reorg.c (make_edge_and_fix_phis_of_dest): Add locations.
7663
7664 2009-07-30  Martin Jambor  <mjambor@suse.cz>
7665
7666         PR tree-optimization/40570
7667         * ipa-inline.c (cgraph_decide_inlining): Watch out for dead single
7668         use inlining loops.
7669
7670 2009-07-30  Razya Ladelsky <razya@il.ibm.com>
7671
7672         * ssa-loop-manip.c: Include langhooks.h.
7673         (rewrite_phi_with_iv): New.
7674         (rewrite_all_phi_nodes_with_iv): New.
7675         (canonicalize_loop_ivs): Move here from tree-parloops.c.
7676         Remove reduction_list argument. Use rewrite_all_phi_nodes_with_iv.
7677         * tree-parloops.c (loop_parallel_p): Move out all conditions
7678         except dependency check.
7679         (canonicalize_loop_ivs): Move to tree-ssa-loop-manip.c.
7680         (gen_parallel_loop): Call canonicalize_loop_ivs without
7681         reduction_list argument.
7682         (build_new_reduction): New.
7683         (gather_scalar_reductions): New.
7684         (try_get_loop_niter): New.
7685         (try_create_reduction_list): New.
7686         (parallleize_loops): Change the parallel conditions check.
7687         * tree-flow.h (canonicalize_loop_ivs): Remove one argument.
7688         * Makefile.in (tree-ssa-loop-manip.o): Add langhooks.h dependency.
7689
7690 2009-07-30  Dave Korn  <dave.korn.cygwin@gmail.com>
7691
7692         * opt-functions.awk (opt_args): Allow argument to be enclosed in
7693         curly braces.
7694         * doc/options.texi (Option properties):  Mention new quoting syntax.
7695
7696 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
7697
7698         * config/alpha/alpha.c (alpha_start_function):
7699         Handle VMS_DEBUG_MAIN_POINTER
7700         * config/alpha/vms.h (VMS_DEBUG_MAIN_POINTER): Define new macro.
7701         * doc/invoke.texi: Document -mdebug-main switch.
7702
7703 2009-07-29  Richard Henderson  <rth@redhat.com>
7704
7705         * cgraph.c (cgraph_set_call_stmt_including_clones): Tidy.
7706         (cgraph_create_edge_including_clones): Likewise.
7707         * tree-inline.c (copy_bb): Operate on the correct edges
7708         when updating the callgraph.
7709
7710 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
7711
7712         * config/alpha/vms-cc.c: Deleted.
7713         * config/alpha/vms-ld.c: Deleted.
7714         * config/alpha/t-vms64: Moved to config/vms
7715         * config/alpha/vms-crt0-64.c: Moved to config/vms
7716         * config/alpha/vms-crt0.c: Moved to config/vms
7717         * config/alpha/vms-psxcrt0-64.c: Moved to config/vms
7718         * config/alpha/vms-psxcrt0.c: Moved to config/vms
7719         * config/alpha/xm-vms.h: Moved to config/vms
7720         * config/alpha/x-vms: Moved to config/vms
7721         * config/alpha/t-vms (vcrt0.o, pcrt0.o): Move rules to new file
7722         config/vms/t-vms.
7723         * config/vms/t-vms: Moved here from config/alpha. Alpha specific
7724         parts removed. (STMP_FIXPROTO, STMP_FIXINC, LIMITS_H_TEST): Set.
7725         (version): Set.
7726         * config/vms/t-vms64: Moved here from config/alpha
7727         * config/vms/vms-crt0-64.c: Moved here from config/alpha.
7728         (argc,argv,envp): Enforce 32bit malloc'ing.
7729         * config/vms/vms-psxcrt0-64.c: Likewise.
7730         * config/vms/vms-crt0.c: Moved here from config/alpha.
7731         * config/vms/vms-psxcrt0.c: Likewise.
7732         * config/vms/vms-crtl-64.h: New file.
7733         * config/vms/vms-crtl.h: New file.
7734         * config/vms/vms.opt: New file.
7735         * config/vms/xm-vms64.h: New file.
7736         * config/vms/xm-vms.h: Moved here from config/alpha.
7737         (STANARD_EXEC_PREFIX, STANDARD_STARTFILE_PREFIX, STANDARD_INCLUDE_DIR):
7738         Set.
7739         * config/vms/x-vms: Moved here from config/alpha.
7740         (version, VMS_EXTRA_PARTS): Moved to t-vms.
7741         (vms-ld.o, vms-cc.o): Removed.
7742         (LN, LN_S, USE_COLLECT2, POD2MAN): Set.
7743
7744 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
7745
7746         * dwarf2out.c (add_name_and_src_coords_attributes): Push on the
7747         correct stack (obvious VMS fix).
7748
7749 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
7750
7751         * dwarf2out.c (output_file_names): Output VMS style file name, size,
7752         date, version info if VMS_DEBUGGING_INFO defined.
7753         * vmsdgbout.c (vms_file_stats_name): New functon. VMS style file name,
7754         size, date calculating code moved here.
7755
7756 2009-07-29  Paul Brook  <paul@codesourcery.com>
7757
7758         * config/arm/lib1funcs.asm (clear_cache): Use ARM_FUNC_START and
7759         do_push/do_pop.
7760
7761 2009-07-29  Uros Bizjak  <ubizjak@gmail.com>
7762
7763         PR target/40577
7764         * config/alpha/alpha.c (alpha_expand_unaligned_store): Convert src
7765         to DImode when generating insq_le insn.
7766
7767 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
7768
7769         * dwarf2out.c (DWARF2_INDIRECT_STRING_SUPPORT_MISSING_ON_TARGET):
7770         New macro set for VMS_DEBUGGGING_INFO.
7771         (AT_string_form): Use it.
7772
7773 2009-07-28  DJ Delorie  <dj@redhat.com>
7774
7775         * config/mep/mep.c (vtext_section): New.
7776         (vftext_section): New.
7777         (ftext_section): New.
7778         (mep_select_section): Add support for functions.
7779         (mep_unique_section): Likewise.
7780         (mep_asm_init_sections): Likewise.
7781         (mep_encode_section_info): Remove it from here.
7782
7783         * config/mep/mep.h (USE_SELECT_SECTION_FOR_FUNCTIONS): Define.
7784
7785 2009-07-28  Paolo Bonzini  <bonzinI@gnu.org>
7786
7787         * tree.h (TREE_DEPRECATED): Document it is used for types too.
7788         (TYPE_VECTOR_OPAQUE): Use default_def_flag
7789
7790 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
7791
7792         * dwarf2out.c (output_file_names): Test new macro
7793         DWARF2_DIR_SHOULD_END_WITH_SEPARATOR.
7794         (add_comp_dir_attribute): Likewise.
7795
7796 2009-07-28  Kai Tietz  <kai.tietz@onevision.com>
7797
7798         * config/i386/mingw-w64.h (LINK_SPEC): Add
7799         separating space between commands.
7800
7801 2009-07-28  Jan Hubicka  <jh@suse.cz>
7802
7803         PR tree-optimization/40759
7804         * tree-ssa-dce.c (mark_virtual_phi_result_for_renaming): Mark all uses
7805         for renaming.
7806
7807 2009-07-27  DJ Delorie  <dj@redhat.com>
7808
7809         * config/mep/mep.c (mep_expand_builtin_saveregs): Make sure 64-bit
7810         types are dword-aligned.
7811         (mep_expand_va_start): Likewise.
7812
7813 2009-07-27  Olivier Hainque  <hainque@adacore.com>
7814             Douglas B Rupp  <rupp@gnat.com>
7815
7816         * convert.c (convert_to_pointer): Don't assume the target
7817         pointer type is POINTER_SIZE long. Fetch its precision instead.
7818
7819 2009-07-27  Douglas B Rupp  <rupp@gnat.com>
7820
7821         * system.h (fopen): Undefine if macro.
7822
7823 2009-07-27  Jakub Jelinek  <jakub@redhat.com>
7824
7825         * dwarf2out.c (output_cfi_p): Removed.
7826         (output_cfis): New function.
7827         (output_fde): New function, split from output_call_frame_info.
7828         (output_call_frame_info): Use it.
7829         (dwarf2out_switch_text_section): Use output_cfis.
7830
7831 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
7832
7833         * config/i386/cygming.h (DWARF2_UNWIND_INFO): Error build when
7834         TARGET_BI_ARCH is specified without enabling SJLJ.
7835         * config/i386/mingw32.h (MD_UNWIND_SUPPORT): Define MD_UNWIND_SUPPORT,
7836         if TARGET_64BIT and TARGET_BI_ARCH aren't defined.
7837
7838 2009-07-26  Mikael Pettersson <mikpe@it.uu.se>
7839
7840         * arm.md (negdi2): Use DImode if forcing a value into a register.
7841
7842 2009-07-26  Ira Rosen  <irar@il.ibm.com>
7843
7844         PR tree-optimization/40801
7845         * tree-vect-stmts.c (vectorizable_call): Get previous copy
7846         of vector operand from the previous copy of vector statement.
7847         Pass the correct definition type value to
7848         vect_get_vec_def_for_stmt_copy().
7849
7850 2009-07-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7851
7852         * collect2.c (scan_libraries): Use CONST_CAST2 to perform char ** to
7853         const char ** conversion.
7854
7855 2009-07-25 David Daney <ddaney@caviumnetworks.com>
7856
7857         * system.h (gcc_assert): Invoke __builtin_unreachable() instead of
7858         fancy_abort() if !ENABLE_ASSERT_CHECKING.
7859         (gcc_unreachable): Invoke __builtin_unreachable() if
7860         !ENABLE_ASSERT_CHECKING.
7861
7862 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
7863
7864         PR rtl-optimization/40445
7865         * emit-rtl.c (next_nonnote_insn_bb): New function.
7866         * rtl.h (next_nonnote_insn_bb): Declare new function.
7867         * cfgcleanup.c (try_optimize_cfg): Don't remove an empty block
7868         with no successors that is the successor of the ENTRY_BLOCK.
7869         Continue from the top after removing an empty fallthrough block.
7870         * cfgrtl.c (get_last_bb_insn): Call next_nonnote_insn_bb instead
7871         of next_nonnote_insn.
7872
7873 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
7874
7875         * cfgcleanup.c (old_insns_match_p): Handle the case of empty blocks.
7876
7877 2009-07-25  Martin Jambor  <mjambor@suse.cz>
7878
7879         * c-common.c (c_common_attribute_table): New element for noclone.
7880         (handle_noclone_attribute): New function. Forward-declare.
7881         * tree-inline.c (tree_versionable_function_p): Check for noclone
7882         attribute.
7883         * doc/extend.texi (Labels as Values): Document need for noclone.
7884         (Function Attributes): Document noclone attribute.
7885
7886 2009-07-25  Jakub Jelinek  <jakub@redhat.com>
7887
7888         PR rtl-optimization/34999
7889         * dwarf2out.c (struct dw_fde_struct): Add dw_fde_switch_cfi
7890         and dw_fde_switched_cold_to_hot fields.
7891         (output_cfi_p): New function.
7892         (output_call_frame_info): If fde->dw_fde_switched_sections,
7893         output 2 FDEs instead of one with corrupted header.
7894         (dwarf2out_do_cfi_startproc): New function.
7895         (dwarf2out_begin_prologue): Use it.  Initialize fde->dw_fde_switch_cfi
7896         and fde->dw_fde_switched_cold_to_hot.
7897         (dwarf2out_switch_text_section): Compute
7898         fde->dw_fde_switched_cold_to_hot.  Switch to new text section here.
7899         If dwarf2out_do_cfi_asm, emit .cfi_endproc before it and call
7900         dwarf2out_do_cfi_startproc plus emit again currently active CFI insns.
7901         Otherwise, compute fde->dw_fde_switch_cfi.
7902
7903 2009-07-24  Cary Coutant  <ccoutant@google.com>
7904
7905         * tree-cfg.c (assign_discriminator): Add explicit parentheses.
7906
7907 2009-07-24  Cary Coutant  <ccoutant@google.com>
7908
7909         * cfghooks.c (split_block): Copy discriminator to new block.
7910         * tree-cfg.c (assign_discriminator): Check location of last
7911         instruction in block as well as first.
7912
7913 2009-07-24  Uros Bizjak  <ubizjak@gmail.com>
7914
7915         * config/i386/linux.c: Use fputs or putc instead of fprintf
7916         where appropriate.
7917         * config/i386/gas.h: Ditto.
7918         * config/i386/x86-64.h: Ditto.
7919         * config/i386/att.h: Ditto.
7920
7921 2009-07-24  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
7922
7923         * expmed.c (emit_store_flag): Use a recursive call to optimize the
7924         xor case.
7925
7926 2009-07-24  Martin Jambor  <mjambor@suse.cz>
7927
7928         * ipa-prop.h (struct ipa_node_params): New flag node_enqued.
7929         (ipa_push_func_to_list_1): Declare.
7930         (ipa_push_func_to_list): New function.
7931
7932         * ipa-prop.c (ipa_push_func_to_list_1): New function.
7933         (ipa_init_func_list): Call ipa_push_func_to_list_1.
7934         (ipa_push_func_to_list): Removed.
7935         (ipa_pop_func_from_list): Clear node_enqueued flag.
7936
7937 2009-07-24  Andreas Krebbel  <krebbel1@de.ibm.com>
7938
7939         * config/s390/s390.c (override_options): Default
7940         max-unrolled-insns to 100 for z10 tuning.
7941
7942 2009-07-24  Tobias Grosser  <grosser@fim.uni-passau.de>
7943
7944         * Makefile.in (TREE_DATA_REF_H, tree-vrp.o, tree-cfg.o, tree-if-conv.o
7945         tree-ssa-loop.o, tree-ssa-loop-niter.o, tree-ssa-loop-ivcanon.o,
7946         tree-ssa-loop-prefetch.o, tree-predcom.o, tree-affine.o,
7947         tree-scalar-evolution.o, tree-data-ref.o, tree-vect-loop.o,
7948         tree-vect-data-refs.o, tree-loop-linear.o, tree-loop-distribution.o
7949         tree-parloops.o, tree-pretty-printer.o, fold-const.o, tree-ssa-dce.o,
7950         lambda-code.o, params.o): Cleanup use of SCEV_H and TREE_DATA_REF_H.
7951
7952 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
7953
7954         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR): Remove and
7955         use default set in mingw32.h header.
7956         * config/i386/mingw32.h (STANDARD_INCLUDE_DIR): Use for 32-bit and
7957         64-bit /mingw/include path.
7958         (STANDARD_STARTFILE_PREFIX_1): Use for 32-bit and 64-bit /mingw/lib
7959         path.
7960
7961 2009-07-23  Neil Vachharajani  <nvachhar@google.com>
7962
7963         PR rtl-optimization/40209
7964         * loop-iv.c (iv_analysis_loop_init): Call df_note_add_problem.
7965
7966 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
7967
7968         * config/i386/i386.c: Use ASM_LONG instead of .long.  Concatenate
7969         ASM_LONG, LPREFIX, MCOUNT_NAME and PROFILE_COUNT_REGISTER strings
7970         with the rest of string where appropriate.  Use fputs or putc
7971         instead of fprintf where appropriate.
7972
7973 2009-07-22  Michael Meissner  <meissner@linux.vnet.ibm.com>
7974             Pat Haugen  <pthaugen@us.ibm.com>
7975             Revital Eres <ERES@il.ibm.com>
7976
7977         * config/rs6000/vector.md: New file.  Move most of the vector
7978         expander support here from altivec.md to allow for the VSX vector
7979         unit in the future.  Add support for secondary_reload patterns.
7980         Rewrite the patterns for vector comparison, and vector comparison
7981         predicate instructions so that the RTL expresses the desired
7982         behavior, instead of using unspec.
7983
7984         * config/rs6000/constraints.md ("f" constraint): Use
7985         rs6000_constraints to hold the precalculated register class.
7986         ("d" constraint): Ditto.
7987         ("wd" constraint): New constraint for VSX.
7988         ("wf" constraint): Ditto.
7989         ("ws" constraint): Ditto.
7990         ("wa" constraint): Ditto.
7991         ("wZ" constraint): Ditto.
7992         ("j" constraint): Ditto.
7993
7994         * config/rs6000/predicates.md (vsx_register_operand): New
7995         predicate for VSX.
7996         (vfloat_operand): New predicate for vector.md.
7997         (vint_operand): Ditto.
7998         (vlogical_operand): Ditto.
7999         (easy_fp_constant): If VSX, 0.0 is an easy constant.
8000         (easy_vector_constant): Add VSX support.
8001         (altivec_indexed_or_indirect_operand): New predicate for
8002         recognizing Altivec style memory references with AND -16.
8003
8004         * config/rs6000/rs6000.c (rs6000_vector_reload): New static global
8005         for vector secondary reload support.
8006         (rs6000_vector_reg_class): Delete, replacing it with
8007         rs6000_constraints.
8008         (rs6000_vsx_reg_class): Ditto.
8009         (rs6000_constraints): New array to hold the register classes of
8010         each of the register constraints that can vary at runtime.
8011         (builtin_mode_to_type): New static array for builtin function type
8012         creation.
8013         (builtin_hash_table): New static hash table for builtin function
8014         type creation.
8015         (TARGET_SECONDARY_RELOAD): Define target hook.
8016         (TARGET_IRA_COVER_CLASSES): Ditto.
8017         (rs6000_hard_regno_nregs_internal): If -mvsx, floating point
8018         registers are 128 bits if VSX memory reference instructions are used.
8019         (rs6000_hard_regno_mode_ok): For VSX, only check if the VSX memory
8020         unit is being used.
8021         (rs6000_debug_vector_unit): Move into rs6000_debug_reg_global.
8022         (rs6000_debug_reg_global): Move -mdebug=reg statements here.
8023         Print several of the scheduling related parameters.
8024         (rs6000_init_hard_regno_mode_ok): Switch to putting constraints in
8025         rs6000_constraints instead of rs6000_vector_reg_class.  Move
8026         -mdebug=reg code to rs6000_debug_reg_global.  Add support for
8027         -mvsx-align-128 debug switch.  Drop testing float_p if VSX or
8028         Altivec.  Add VSX support.  Setup for secondary reload support on
8029         Altivec/VSX registers.
8030         (rs6000_override_options): Make power7 set the scheduling groups
8031         like the power5.  Add support for new debug switches to override
8032         the scheduling defaults.  Temporarily disable -mcpu=power7 from
8033         setting -mvsx.  Add support for debug switches -malways-hint,
8034         -msched-groups, and -malign-branch-targets.
8035         (rs6000_buitlin_conversion): Add support for returning unsigned
8036         vector conversion functions to fix regressions due to stricter
8037         type checking.
8038         (rs6000_builtin_mul_widen_even): Ditto.
8039         (rs6000_builtin_mul_widen_odd): Ditto.
8040         (rs6000_builtin_vec_perm): Ditto.
8041         (rs6000_vec_const_move): On VSX, use xxlxor to clear register.
8042         (rs6000_expand_vector_init): Initial VSX support for using xxlxor
8043         to zero a register.
8044         (rs6000_emit_move): Fixup invalid const symbol_ref+reg that is
8045         generated upstream.
8046         (bdesc_3arg): Add builtins for unsigned types.  Add builtins for
8047         VSX types for bit operations.  Changes to accomidate vector.md.
8048         (bdesc_2arg): Ditto.
8049         (bdesc_1arg): Ditto.
8050         (struct builtin_description_predicates): Rewrite predicate
8051         handling so that RTL describes the operation, instead of passing
8052         the instruction to be used as a string argument.
8053         (bdesc_altivec_preds): Ditto.
8054         (altivec_expand_predicate_builtin): Ditto.
8055         (altivec_expand_builtin): Ditto.
8056         (rs6000_expand_ternop_builtin): Use a switch instead of an if
8057         statement for vsldoi support.
8058         (altivec_expand_ld_builtin): Change to use new names from vector.md.
8059         (altivec_expand_st_builtin): Ditto.
8060         (paired_expand_builtin): Whitespace changes.
8061         (rs6000_init_builtins): Add V2DF/V2DI types.  Initialize the
8062         builtin_mode_to_type table for secondary reload.  Call
8063         builtin_function_type to build random builtin functions.
8064         (altivec_init_builtins): Change to use builtin_function_type to
8065         create builtin function types dynamically as we need them.
8066         (builtin_hash_function): New support for hashing the tree types
8067         for builtin function as we need it, rather than trying to build
8068         all of the trees that we need.  Add initial preliminary VSX support.
8069         (builtin_function_type): Ditto.
8070         (builtin_function_eq): Ditto.
8071         (builtin_hash_struct): Ditto.
8072         (rs6000_init_builtins): Ditto.
8073         (rs6000_common_init_builtins): Ditto.
8074         (altivec_init_builtins): Ditto.
8075         (rs6000_common_init_builtins): Ditto.
8076         (enum reload_reg_type): New enum for simplifing reg classes.
8077         (rs6000_reload_register_type): Simplify register classes into GPR,
8078         Vector, and other registers.  Altivec and VSX addresses in reload.
8079         (rs6000_secondary_reload_inner): Ditto.
8080         (rs6000_ira_cover_classes): New target hook, that returns the
8081         appropriate cover classes, based on -mvsx being used or not.
8082         (rs6000_secondary_reload_class): Add VSX support.
8083         (get_vec_cmp_insn): Delete, rewrite vector conditionals.
8084         (get_vsel_insn): Ditto.
8085         (rs6000_emit_vector_compare): Rewrite vector conditional support
8086         so that where we can, we use RTL operators, instead of blindly use
8087         UNSPEC.
8088         (rs6000_emit_vector_select): Ditto.
8089         (rs6000_emit_vector_cond_expr): Ditto.
8090         (rs6000_emit_minmax): Directly generate min/max under altivec, vsx.
8091         (create_TOC_reference): Add -mdebug=addr support.
8092         (emit_frame_save): VSX loads/stores need register indexed addressing.
8093
8094         * config/rs6000/rs6000.md: Include vector.md.
8095
8096         * config/rs6000/t-rs6000 (MD_INCLUDES): Add vector.md.
8097
8098         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
8099         support for V2DI, V2DF in logical, permute, select operations.
8100
8101         * config/rs6000/rs6000.opt (-mvsx-scalar-double): Add new debug
8102         switch for vsx/power7.
8103         (-mvsx-scalar-memory): Ditto.
8104         (-mvsx-align-128): Ditto.
8105         (-mallow-movmisalign): Ditto.
8106         (-mallow-df-permute): Ditto.
8107         (-msched-groups): Ditto.
8108         (-malways-hint): Ditto.
8109         (-malign-branch-targets): Ditto.
8110
8111         * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Delete, use target
8112         hook instead.
8113         (IRA_COVER_CLASSES_PRE_VSX): Cover classes if not -mvsx.
8114         (IRA_COVER_CLASSES_VSX): Cover classes if -mvsx.
8115         (rs6000_vector_reg_class): Delete.
8116         (rs6000_vsx_reg_class): Ditto.
8117         (enum rs6000_reg_class_enum): New enum for the constraints that
8118         vary based on target switches.
8119         (rs6000_constraints): New array to hold the register class for all
8120         of the register constraints that vary based on the switches used.
8121         (ALTIVEC_BUILTIN_*_UNS): Add unsigned builtin functions.
8122         (enum rs6000_builtins): Add unsigned varients for the builtin
8123         declarations returned by target hooks for expanding multiplies,
8124         select, and permute operations.  Add VSX builtins.
8125         (enum rs6000_builtin_type_index): Add entries for VSX.
8126         (V2DI_type_node): Ditto.
8127         (V2DF_type_node): Ditto.
8128         (unsigned_V2DI_type_node): Ditto.
8129         (bool_long_type_node): Ditto.
8130         (intDI_type_internal_node): Ditto.
8131         (uintDI_type_internal_node): Ditto.
8132         (double_type_internal_node): Ditto.
8133
8134         * config/rs6000/altivec.md (whole file): Move all expanders to
8135         vector.md from altivec.md.  Rename insn matching functions to be
8136         altivec_foo.
8137         (UNSPEC_VCMP*): Delete, rewrite vector comparisons.
8138         (altivec_vcmp*): Ditto.
8139         (UNSPEC_VPERM_UNS): New, add for unsigned types using vperm.
8140         (VM): New iterator for moves that includes the VSX types.
8141         (altivec_vperm_<mode>): Add VSX types.  Add unsigned types.
8142         (altivec_vperm_<mode>_uns): New, for unsigned types.
8143         (altivec_vsel_*): Rewrite vector comparisons and predicate builtins.
8144         (altivec_eq<mode>): Ditto.
8145         (altivec_gt<mode>): Ditto.
8146         (altivec_gtu<mode>): Ditto.
8147         (altivec_eqv4sf): Ditto.
8148         (altivec_gev4sf): Ditto.
8149         (altivec_gtv4sf): Ditto.
8150         (altivec_vcmpbfp_p): Ditto.
8151
8152 2009-07-23  Richard Earnshaw  <rearnsha@arm.com>
8153
8154         * arm.md (split for ior/xor with shift and zero-extend): Cast op3 to
8155         unsigned HWI.
8156
8157 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
8158
8159         PR target/40832
8160         * config/i386/i386.c (output_387_ffreep): Rewrite to use
8161         ASM_SHORT instead of .word.
8162         * config/i386/i386.md (*tls_global_dynamic_64): Use ASM_SHORT
8163         instead of .word in asm template.
8164
8165 2009-07-22  Vladimir Makarov  <vmakarov@redhat.com>
8166
8167         PR target/37488
8168         * ira-lives.c (bb_has_abnormal_call_pred): New function.
8169         (process_bb_node_lives): Use it.
8170
8171         * ira.c (setup_cover_and_important_classes): Don't setup
8172         ira_important_class_nums.  Add cover classes to the end of
8173         important classes.
8174         (cover_class_order, comp_reg_classes_func, reorder_important_classes):
8175         New.
8176         (find_reg_class_closure): Use reorder_important_classes.
8177
8178         * config/i386/i386.h (IRA_COVER_CLASSES): Remove.
8179
8180         * config/i386/i386.c (i386_ira_cover_classes): New function.
8181         (TARGET_IRA_COVER_CLASSES): Redefine.
8182
8183         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Add a comment about
8184         importance of order of cover classes in the array.
8185
8186 2009-07-22  Diego Novillo  <dnovillo@google.com>
8187
8188         * tree-pass.h (TDF_EH): Define.
8189         * gimple-pretty-print.c (dump_gimple_stmt): If FLAGS
8190         contains TDF_EH, print the EH region number holding GS.
8191         * tree-dump.c (dump_options): Add "eh".
8192         * doc/invoke.texi: Document it.
8193
8194 2009-07-22  Doug Kwan  <dougkwan@google.com>
8195
8196         * config/arm/arm.md (subdi3) Copy non-reg values to DImode registers.
8197
8198 2009-07-22  Michael Matz  <matz@suse.de>
8199
8200         PR tree-optimization/35229
8201         PR tree-optimization/39300
8202
8203         * tree-ssa-pre.c (includes): Include tree-scalar-evolution.h.
8204         (inhibit_phi_insertion): New function.
8205         (insert_into_preds_of_block): Call it for REFERENCEs.
8206         (init_pre): Initialize and finalize scalar evolutions.
8207         * Makefile.in (tree-ssa-pre.o): Depend on tree-scalar-evolution.h .
8208
8209 2009-07-22  Uros Bizjak  <ubizjak@gmail.com>
8210
8211         * config/i386/predicates.md (zero_extended_scalar_load_operand):
8212         Use CONST_VECTOR_NUNITS to determine number of elements.
8213
8214 2009-07-22  Andreas Krebbel  <krebbel1@de.ibm.com>
8215
8216         * config/s390/constraints.md (ZQ, ZR, ZS, ZT): New constraints.
8217         (U, W): Constraints are now deprecated and will be removed if we
8218         run out of letters.
8219         * config/s390/s390.md (U, W): Replaced with ZQZR, ZSZT throughout
8220         the file.
8221         ("prefetch"): Add the stcmh instruction for prefetching.
8222         * config/s390/s390.c (s390_symref_operand_p): Function moved. No
8223         changes.
8224         (s390_short_displacement): Return always true if compiling for
8225         machines not providing the long displacement facility.
8226         (s390_mem_constraint): Support the new constraint letter Z.
8227         (s390_check_qrst_address): New function.
8228
8229 2009-07-21  DJ Delorie  <dj@redhat.com>
8230
8231         * config/mep/mep.c (mep_legitimize_arg): Leave control registers
8232         alone too.
8233
8234 2009-07-21  Jason Merrill  <jason@redhat.com>
8235
8236         * c-common.c (max_tinst_depth): Increase default to 1024.
8237
8238 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
8239
8240         * config/i386/sse.md (vec_unpacku_float_hi_v4si): New expander.
8241         (vec_unpacku_float_lo_v4si): Ditto.
8242
8243 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
8244
8245         PR target/40811
8246         * config/i386/sse.md (sse2_cvtudq2ps): New expander.
8247         (enum ix86_builtins): Add IX86_BUILTIN_CVTUDQ2PS.
8248         (builtin_description): Add __builtin_ia32_cvtudq2ps.
8249         (ix86_vectorize_builtin_conversion): Handle IX86_BUILTIN_CVTUDQ2PS.
8250
8251 2009-07-21  Jakub Jelinek  <jakub@redhat.com>
8252
8253         PR tree-optimization/40813
8254         * tree-inline.c (copy_bb): Regimplify RHS after last stmt, not before
8255         it.
8256
8257 2009-07-21  Kaz Kojima  <kkojima@gcc.gnu.org>
8258
8259         * config/sh/sh.c (sh_gimplify_va_arg_expr): Wrap the result
8260         with a NOP_EXPR if needed.
8261
8262 2009-07-21  Paul Brook <paul@codesourcery.com>
8263
8264         * tree-vectorizer.c (increase_alignment): Handle nested arrays.
8265         Terminate debug dump with newline.
8266
8267 2009-07-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8268
8269         * pa.c (compute_zdepwi_operands): Limit deposit length to 32 - lsb.
8270         Cast "1" to unsigned HOST_WIDE_INT.
8271         (compute_zdepdi_operands): Limit maximum length to 64 bits.  Limit
8272         deposit length to the maximum length - lsb.  Extend length if
8273         HOST_BITS_PER_WIDE_INT is 32.
8274
8275 2009-07-20  Olatunji Ruwase <tjruwase@google.com>
8276
8277         * cgraph.h (constant_pool_htab): New function.
8278         (constant_descriptor_tree): Move from varasm.c.
8279         * varasm.c (constant_pool_htab): New function.
8280         (constant_descriptor_tree): Move to cgraph.h.
8281
8282 2009-07-20  Olatunji Ruwase  <tjruwase@google.com>
8283
8284         * toplev.c: Invoke FINISH_UNIT callbacks before call to finalize().
8285
8286 2009-07-20  Shujing Zhao  <pearly.zhao@oracle.com>
8287
8288         * Makefile.in (TREE_INLINE_H, tree-inline.o, cgraph.o): Remove
8289         $(VARRAY_H).
8290
8291 2009-07-20  Xinliang David Li  <davidxl@google.com>
8292
8293         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add length check.
8294
8295 2009-07-20  Adam Nemet  <anemet@caviumnetworks.com>
8296
8297         * config/mips/mips.md (move_type): Add arith.
8298         (type): Handle arith.
8299         (zero_extendsidi2): Rename this into ...
8300         (*zero_extendsidi2): ... this.  Don't match if ISA_HAS_EXT_INS.
8301         (zero_extendsidi2): New expander.
8302         (*zero_extendsidi2_dext): New pattern.
8303
8304 2009-07-20  Nick Clifton  <nickc@redhat.com>
8305
8306         * config.gcc (mips64-*-*): Add definition of tm_defines in order
8307         to set MIPS_ABI_DEFAULT.
8308         * config/mips/vr.h (MIPS_ABI_DEFAULT): Remove definition.
8309
8310 2009-07-20  Jakub Jelinek  <jakub@redhat.com>
8311
8312         * tree-object-size.c (addr_object_size): Handle unions with
8313         array in it as last field of structs in __bos (, 1) as __bos (, 0).
8314
8315         PR tree-optimization/40792
8316         * tree.c (build_function_type_skip_args): Remove bogus assert.
8317
8318 2009-07-20  Jan Hubicka  <jh@suse.cz>
8319             Martin Jambor  <mjambor@suse.cz>
8320
8321         * cgraph.h (combined_args_to_skip): New field.
8322         * cgraph.c (cgraph_create_virtual_clone): Properly handle
8323         combined_args_to_skip and args_to_skip.
8324         * tree-inline.c (update_clone_info): New function.
8325         (tree_function_versioning): Call update_clone_info.
8326         * cgraphunit.c: (cgraph_materialize_clone): Dump materialized
8327         functions.
8328         (cgraph_materialize_all_clones): More extensive dumping, working
8329         with combined_args_to_skip rather than args_to_skip.
8330
8331 2009-07-20  Ira Rosen  <irar@il.ibm.com>
8332
8333         * tree-vectorizer.h (vectorizable_condition): Add parameters.
8334         * tree-vect-loop.c (vect_is_simple_reduction): Support COND_EXPR.
8335         (get_initial_def_for_reduction): Likewise.
8336         (vectorizable_reduction): Skip the check of first operand in case
8337         of COND_EXPR. Add check that it is outer loop vectorization if
8338         nested cycle was detected. Call vectorizable_condition() for
8339         COND_EXPR. If reduction epilogue cannot be created do not fail for
8340         nested cycles (if it is not double reduction). Assert that there
8341         is only one type in the loop in case of COND_EXPR. Call
8342         vectorizable_condition() to vectorize COND_EXPR.
8343         * tree-vect-stmts.c (vectorizable_condition): Update comment.
8344         Add parameters. Allow nested cycles if called from
8345         vectorizable_reduction(). Use reduction vector variable if provided.
8346         (vect_analyze_stmt): Call vectorizable_reduction() before
8347         vectorizable_condition().
8348         (vect_transform_stmt): Update call to vectorizable_condition().
8349
8350 2009-07-20  Christian Bruel  <christian.bruel@st.com>
8351
8352         * config/sh/sh.opt (-mfmovd): Resurrect and document.
8353         * doc/invoke.texi (-mfmovd): Likewise.
8354         * config/sh/sh.h (TARGET_FMOVD, MASK_FMOVD): Remove default setting.
8355
8356 2009-07-20  Jan Hubicka  <jh@suse.cz>
8357
8358         * tree-ssa-dce.c (remove_dead_phis): Only look for abnormal PHIs
8359         when handling SSA name.
8360
8361 2009-07-19  Jan Hubicka  <jh@suse.cz>
8362
8363         PR tree-optimization/40676
8364         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do renaming on all
8365         virtual PHIs in empty BBs.
8366
8367 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
8368
8369         * combine.c (make_compound_operation) <SUBREG>: If force_to_mode
8370         re-expanded the compound use gen_lowpart instead to convert to the
8371         desired mode.
8372
8373 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
8374
8375         * combine.c (try_widen_shift_mode): Add COUNT, OUTER_CODE and
8376         OUTER_CONST arguments.
8377         <LSHIFTRT>: Use them to allow widening if the bits shifted in from
8378         the new wider mode will be masked off.
8379         (simplify_shift_const_1): Adjust calls to try_widen_shift_mode.
8380
8381 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
8382
8383         * combine.c (try_widen_shift_mode) <LSHIFTRT>: Allow widening if the
8384         high-order bits are zero.
8385
8386 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
8387
8388         * combine.c (simplify_shift_const_1): Split code to determine
8389         shift_mode into ...
8390         (try_widen_shift_mode): ... here.  Allow widening for ASHIFTRT if the
8391         new bits shifted in are identical to the old sign bit.
8392
8393 2009-07-18  Richard Guenther  <rguenther@suse.de>
8394
8395         PR c/40787
8396         * gimplify.c (gimplify_call_expr): Reject code using results from
8397         functions returning void.
8398
8399 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
8400
8401         * doc/md.texi: Document the new PowerPC "es" constraint.
8402         Document that "m" can include automodified addresses on this target,
8403         and explain how %U must be used.  Extend the "Q" and "Z" documentation
8404         to suggest "es" as well as "m".
8405         * config/rs6000/constraints.md (es): New memory constraint.
8406         (Q, Z): Update strings to match new documentation.
8407
8408 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
8409
8410         * config/rs6000/rs6000.c (rs6000_mode_dependent_address): Allow any
8411         offset from virtual_stack_vars_rtx and arg_pointer_rtx.
8412         * config/rs6000/predicates.md (volatile_mem_operand): Use
8413         offsettable_nonstrict_memref_p.
8414         * config/rs6000/rs6000.md (*floatsidf2_internal): Remove split check.
8415         (*floatunssidf2_internal): Likewise.
8416         (*fix_truncdfsi2_internal): Likewise.
8417         (*fix_trunctfsi2_internal): Likewise.
8418
8419 2009-07-17  Anatoly Sokolov  <aesok@post.ru>
8420
8421         * config/avr/avr-devices.c (avr_mcu_t): Add atmega8u2, atmega16u2 and
8422         atmega32u2 devices.
8423         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
8424
8425 2009-07-17  Richard Guenther  <rguenther@suse.de>
8426
8427         PR c/40401
8428         * tree-pass.h (pass_diagnose_omp_blocks): Declare.
8429         (pass_warn_unused_result): Likewise.
8430         (TODO_set_props): Remove.
8431         * omp-low.c (diagnose_omp_structured_block_errors): Change to
8432         run as a pass.
8433         (pass_diagnose_omp_blocks): Define.
8434         * c-decl.c (pop_file_scope): Do not finalize the CU here.
8435         (c_gimple_diagnostics_recursively): Remove.
8436         (finish_function): Do not call it.
8437         (c_write_global_declarations): Continue after errors.
8438         Finalize the CU here.
8439         * c-gimplify.c (c_genericize): Do not gimplify here.
8440         * c-common.c (c_warn_unused_result): Move ...
8441         * tree-cfg.c (do_warn_unused_result): ... here.
8442         (run_warn_unused_result): New function.
8443         (gate_warn_unused_result): New function.
8444         (pass_warn_unused_result): New pass.
8445         * c-common.h (c_warn_unused_result): Remove.
8446         * flags.h (flag_warn_unused_result): Declare.
8447         * c-opts.c (c_common_init_options): Enable flag_warn_unused_result.
8448         * opts.c (flag_warn_unused_result): Initialize to false.
8449         * toplev.c (compile_file): Add comment.
8450         * omp-low.c (create_omp_child_function): Do not register
8451         the function with the frontend.
8452         (diagnose_omp_structured_block_errors): Prepare to be
8453         called as optimization pass.
8454         (gate_diagnose_omp_blocks): New function.
8455         (pass_diagnose_omp_blocks): New pass.
8456         * cgraph.h (cgraph_optimize): Remove.
8457         (cgraph_analyze_function): Likewise.
8458         * cgraph.c (cgraph_add_new_function): Gimplify C++ thunks.
8459         * cgraphunit.c (cgraph_lower_function): Lower nested functions
8460         before their parents here.
8461         (cgraph_finalize_function): Not here.
8462         (cgraph_analyze_function): Gimplify functions here.
8463         (cgraph_finalize_compilation_unit): Continue after errors.
8464         Optimize the callgraph from here.
8465         (cgraph_optimize): Make static.
8466         * langhooks.c (write_global_declarations): Finalize the CU.
8467         * gimplify.c (gimplify_asm_expr): Do not emit ASMs with errors.
8468         (gimplify_function_tree): Assert we gimplify only once.
8469         Set PROP_gimple_any property.
8470         * tree-nested.c (gimplify_all_functions): New function.
8471         (lower_nested_functions): Gimplify all nested functions.
8472         * gimple.h (diagnose_omp_structured_block_errors): Remove.
8473         * passes.c (init_optimization_passes): Add pass_warn_unused_result
8474         and pass_diagnose_omp_blocks after gimplification.  Do not
8475         set TODO_set_props on all_lowering_passes.
8476         (execute_one_pass): Do not handle TODO_set_props.
8477         * Makefile.in (cgraphunit.o): Add $(TREE_DUMP_H) dependency.
8478         (gimplify.o): Add tree-pass.h dependency.
8479         * tree-inline.c (copy_statement_list): Properly copy STATEMENT_LIST.
8480         (copy_tree_body_r): Properly handle TARGET_EXPR like SAVE_EXPR.
8481         (unsave_r): Likewise.
8482         * c-omp.c (c_finish_omp_atomic): Set DECL_CONTEXT on the
8483         temporary variable.
8484
8485 2009-07-17  Sandra Loosemore  <sandra@codesourcery.com>
8486
8487         * doc/service.texi (Service): Restore previously removed link,
8488         which isn't broken after all.
8489
8490 2009-07-17  Richard Guenther  <rguenther@suse.de>
8491
8492         PR tree-optimization/40321
8493         * tree-ssa-pre.c (add_to_exp_gen): Also add names defined by
8494         PHI nodes to the maximal set.
8495         (make_values_for_phi): Add PHI arguments to the maximal set.
8496         (execute_pre): Dump PHI_GEN and the maximal set.
8497
8498 2009-07-17  Jakub Jelinek  <jakub@redhat.com>
8499
8500         PR c++/40780
8501         * gimplify.c (gimplify_conversion): Don't change non-conversions into
8502         VIEW_CONVERT_EXPR.
8503
8504 2009-07-16  Sandra Loosemore  <sandra@codesourcery.com>
8505
8506         * doc/extend.texi (Nested Functions): Replace broken link with
8507         textual reference.
8508         * doc/service.texi (Service): Remove broken link.
8509
8510 2009-07-16  H.J. Lu  <hongjiu.lu@intel.com>
8511
8512         PR bootstrap/40781
8513         * builtins.c (expand_builtin_memcmp): Use loc instead of
8514         EXPR_LOCATION (exp).
8515         (expand_builtin_strncmp): Likewise.
8516
8517 2009-07-17  Aldy Hernandez  <aldyh@redhat.com>
8518             Manuel López-Ibáñez  <manu@gcc.gnu.org>
8519
8520         PR 40435
8521         * tree-complex.c, tree-loop-distribution.c, tree.c, tree.h,
8522         builtins.c, fold-const.c, omp-low.c, cgraphunit.c, tree-ssa-ccp.c,
8523         tree-ssa-dom.c, gimple-low.c, expr.c, tree-ssa-ifcombine.c,
8524         c-decl.c, stor-layout.c, tree-if-conv.c, c-typeck.c, gimplify.c,
8525         calls.c, tree-sra.c, tree-mudflap.c, tree-ssa-copy.c,
8526         tree-ssa-forwprop.c, c-convert.c, c-omp.c, varasm.c,
8527         tree-inline.c, c-common.c, c-common.h, gimple.c,
8528         tree-switch-conversion.c, gimple.h, tree-cfg.c, c-parser.c,
8529         convert.c: Add location argument to fold_{unary,binary,ternary},
8530         fold_build[123], build_call_expr, build_size_arg,
8531         build_fold_addr_expr, build_call_array, non_lvalue, size_diffop,
8532         fold_build1_initializer, fold_build2_initializer,
8533         fold_build3_initializer, fold_build_call_array,
8534         fold_build_call_array_initializer, fold_single_bit_test,
8535         omit_one_operand, omit_two_operands, invert_truthvalue,
8536         fold_truth_not_expr, build_fold_indirect_ref, fold_indirect_ref,
8537         combine_comparisons, fold_builtin_*, fold_call_expr,
8538         build_range_check, maybe_fold_offset_to_address, round_up,
8539         round_down.
8540
8541 2009-07-16  Jason Merrill  <jason@redhat.com>
8542
8543         PR libstdc++/37907
8544         * c-common.c (c_common_reswords): Add __is_standard_layout
8545         and __is_trivial.
8546         * c-common.h (enum rid): Add RID_IS_STD_LAYOUT and RID_IS_TRIVIAL.
8547         * doc/implement-cxx.texi: New.
8548         * doc/gcc.texi: Include it.
8549
8550 2009-07-16  DJ Delorie  <dj@redhat.com>
8551
8552         * config/m32c/m32c.c (m32c_compare_redundant): Avoid removing
8553         compares that may be indirectly affected by previous instructions.
8554
8555 2009-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8556
8557         * builtins.c (do_mpc_arg2): New.
8558         (fold_builtin_2): Fold builtin cpow.
8559         * real.h (HAVE_mpc_pow): New.
8560
8561 2009-07-16  Bingfeng Mei  <bmei@broadcom.com>
8562
8563         * modulo-sched.c (sms_schedule): stage_count <= 1 as correct
8564         comparison to skip unprofitable schedule
8565
8566 2009-07-16  Simon Baldwin  <simonb@google.com>
8567
8568         * gcc.c (option_map): New flag -no-canonical-prefixes.
8569         * (display_help): Print help text for new flag.
8570         * (process_command): Move options translation and language specifics
8571         and handle new flag early.  Use it to set a function pointer to a
8572         prefix builder.  Replace make_relative_prefix calls with calls to
8573         the function pointed to.  Ignore new flag in regular options handling.
8574         * doc/invoke.texi (Overall Options): Documented -no-canonical-prefixes.
8575
8576 2009-07-15  DJ Delorie  <dj@redhat.com>
8577
8578         * config/mep/mep.md (sibcall_internal): Change register to avoid
8579         argument registers.
8580         (sibcall_value_internal): Likewise.
8581
8582 2009-07-15  Eric Botcazou  <ebotcazou@adacore.com>
8583
8584         PR rtl-optimization/40710
8585         * resource.c (mark_target_live_regs): Reset DF problem to LR.
8586
8587 2009-07-15  Adam Nemet  <anemet@caviumnetworks.com>
8588
8589         * config/mips/mips.md (*extenddi_truncate<mode>,
8590         *extendsi_truncate<mode>): Change type attribute to move_type
8591         with shift_shift.  Split out code handling exts from here ...
8592         (*extend<GPR:mode>_truncate<SHORT:mode>_exts): ... to this new
8593         pattern.
8594         (*extendhi_truncateqi): Change type attribute to move_type with
8595         shift_shift.  Split out code handling exts from here ...
8596         (*extendhi_truncateqi_exts): ... to this new pattern.
8597
8598 2009-07-15  Uros Bizjak  <ubizjak@gmail.com>
8599
8600         * config/i386/sse.md (copysign<mode>3): Use "and-not" SSE instruction
8601         instead of "and" with inverted sign bit mask value.  Use
8602         "nonimmediate_operand" for operand 1 and operand 2 predicate.
8603         Allocate registers only for operand 4 and operand 5.
8604
8605 2009-07-15  Jakub Jelinek  <jakub@redhat.com>
8606
8607         PR middle-end/40747
8608         * fold-const.c (fold_cond_expr_with_comparison): When folding
8609         < and <= to MIN, make sure the MIN uses the same type as the
8610         comparison's operands.
8611
8612 2009-07-15  Richard Earnshaw  <rearnsha@arm.com>
8613
8614         * arm.md (ior_xor): New code iterator.
8615         (split for ior/xor with shift and zero-extend): New split pattern.
8616         * arm/predicates.md (subreg_lowpart_operator): New special predicate.
8617
8618 2009-07-15  Richard Guenther  <rguenther@suse.de>
8619
8620         * tree-ssa-structalias.c (make_constraint_from_heapvar): Initialize
8621         offset member.
8622
8623 2009-07-15  Richard Guenther  <rguenther@suse.de>
8624
8625         PR middle-end/40753
8626         * alias.c (ao_ref_from_mem): Reject FUNCTION_DECL and LABEL_DECL bases.
8627
8628 2009-07-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
8629
8630         * config/m68k/linux-unwind.h (m68k_fallback_frame_state): Update to
8631         handle 2.6.30 kernel.
8632
8633 2009-07-15  DJ Delorie  <dj@redhat.com>
8634
8635         * config/mep/mep.md (sibcall_internal): Change register to allow
8636         for 24-bit addresses.
8637         (sibcall_value_internal): Likewise.
8638
8639 2009-07-14  Ghassan Shobaki  <ghassan.shobaki@amd.com>
8640
8641         * doc/invoke.texi: Added descriptions of the  scheduling heuristics
8642         that are enabled/disabled by the flags introduced by a previous patch.
8643
8644 2009-07-14  DJ Delorie  <dj@redhat.com>
8645
8646         * config/mep/mep.md (sibcall_internal): Include non-toggling
8647         non-jmp case.
8648         (sibcall_value_internal): Likewise.
8649
8650 2009-07-14  Taras Glek  <tglek@mozilla.com>
8651             Rafael Espindola  <espindola@google.com>
8652
8653         * doc/sourcebuild.texi: Document install-plugin target.
8654         * configure.ac: Added install-plugin target to language makefiles.
8655         * configure: Regenerate.
8656         * Makefile.in: (install-plugin): Install more headers,
8657         depend on lang.install-plugin.
8658
8659 2009-07-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
8660
8661         * tree-vrp.c (vrp_evaluate_conditional): Mark strings for
8662         translation.
8663
8664 2009-07-14  DJ Delorie  <dj@redhat.com>
8665
8666         * config/mep/mep.c (mep_vliw_jmp_match): New function.
8667         * config/mep/mep-protos.h (mep_vliw_jmp_match): Prototype it.
8668         * config/mep/mep.md (sibcall_internal): Change test from
8669         mep_vliw_mode_match to mep_vliw_jmp_match.
8670         (sibcall_value_internal): Likewise.
8671
8672 2009-07-14  Uros Bizjak  <ubizjak@gmail.com>
8673
8674         * config/i386/sse.md (copysign<mode>3): New expander.
8675         * config/i386/i386-protos.h (ix86_build_signbit_mask): New prototype.
8676         * config/i386/i386.c (ix86_build_signbit_mask): Make public.
8677         Use ix86_build_const_vector.
8678         (enum ix86_builtins): Add IX86_BUILTIN_CPYSGNPS and
8679         IX86_BUILTIN_CPYSGNPD.
8680         (builtin_description): Add __builtin_ia32_copysignps and
8681         __builtin_ia32_copysignpd.
8682         (ix86_builtin_vectorized_function): Handle BUILT_IN_COPYSIGN
8683         and BUILT_IN_COPYSIGNF.
8684
8685 2009-07-13  Jason Merrill  <jason@redhat.com>
8686
8687         * builtins.c (can_trust_pointer_alignment): New fn.
8688         (get_pointer_alignment): Factor it out from here.
8689         * tree.h: Declare it.
8690
8691 2009-07-14  David Edelsohn  <edelsohn@gnu.org>
8692
8693         * config/rs6000/predicates.md (offsettable_mem_operand): Test
8694         RTX_AUTOINC class.
8695
8696 2009-07-14  Dodji Seketeli  <dodji@redhat.com>
8697
8698         PR debug/40705
8699         PR c++/403057
8700         * dwarf2.out.c (gen_type_die_with_usage): Added comment.
8701
8702 2009-07-14  Richard Guenther  <rguenther@suse.de>
8703             Andrey Belevantsev <abel@ispras.ru>
8704
8705         PR middle-end/40745
8706         * cfgexpand.c (partition_stack_vars): Do not bother to update
8707         alias information when not optimizing.
8708
8709 2009-07-14  Richard Guenther  <rguenther@suse.de>
8710             Andrey Belevantsev <abel@ispras.ru>
8711
8712         * tree-ssa-alias.h (refs_may_alias_p_1): Declare.
8713         (pt_solution_set): Likewise.
8714         * tree-ssa-alias.c (refs_may_alias_p_1): Export.
8715         * tree-ssa-structalias.c (pt_solution_set): New function.
8716         * final.c (rest_of_clean_state): Free SSA data structures.
8717         * print-rtl.c (print_decl_name): Remove.
8718         (print_mem_expr): Implement in terms of print_generic_expr.
8719         * alias.c (ao_ref_from_mem): New function.
8720         (rtx_refs_may_alias_p): Likewise.
8721         (true_dependence): Query alias-export info.
8722         (canon_true_dependence): Likewise.
8723         (write_dependence_p): Likewise.
8724         * tree-dfa.c (get_ref_base_and_extent): For void types leave
8725         size unknown.
8726         * emit-rtl.c (component_ref_for_mem_expr): Remove.
8727         (mem_expr_equal_p): Use operand_equal_p.
8728         (set_mem_attributes_minus_bitpos): Do not use
8729         component_ref_for_mem_expr.
8730         * cfgexpand.c (add_partitioned_vars_to_ptset): New function.
8731         (update_alias_info_with_stack_vars): Likewise.
8732         (partition_stack_vars): Call update_alias_info_with_stack_vars.
8733         * tree-ssa.c (delete_tree_ssa): Do not release SSA names
8734         explicitly nor clear stmt operands.
8735         Free the decl-to-pointer map.
8736         * tree-optimize.c (execute_free_datastructures): Do not free
8737         SSA data structures here.
8738         * tree-flow.h (struct gimple_df): Add decls_to_pointers member.
8739         * Makefile.in (emit-rtl.o): Add pointer-set.h dependency.
8740         (alias.o): Add tree-ssa-alias.h, pointer-set.h and $(TREE_FLOW_H)
8741         dependencies.
8742         (print-rtl.o): Add $(DIAGNOSTIC_H) dependency.
8743
8744 2009-07-13  DJ Delorie  <dj@redhat.com>
8745
8746         * config/mep/mep.h (CC1_SPEC): Tweak parameters to trigger
8747         unrolling at the right iteration count.
8748
8749         * config/mep/mep.c (mep_expand_prologue): Fix frame pointer
8750         calculations.
8751
8752 2009-07-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
8753
8754         * haifa-sched.c (rank_for_schedule): Introduced flags to
8755         enable/disable individual scheduling heuristics.
8756         * common.opt: Introduced flags to enable/disable individual
8757         heuristics in the scheduler.
8758         * doc/invoke.texi: Introduced flags to enable/disable individual
8759         heuristics in the scheduler.
8760
8761 2009-07-13  Kai Tietz  <kai.tietz@onevision.com>
8762
8763         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Remove file
8764         config/i386/mingw-tls.c.
8765         * config/i386/mingw-tls.c: Removed.
8766
8767 2009-07-13  Ira Rosen  <irar@il.ibm.com>
8768
8769         * tree-vect-loop.c (get_initial_def_for_reduction): Ensure that the
8770         checks access only relevant statements.
8771         (vectorizable_reduction): Likewise.
8772
8773 2009-07-12  Kai Tietz  <kai.tietz@onevision.com>
8774
8775         * config/i386/cygming.h (TARGET_OS_CPP_BUILTINS): Define _X86_
8776         just for 32-bit case.
8777
8778 2009-07-12  Jan Hubicka  <jh@suse.cz>
8779
8780         PR tree-optimization/40585
8781         * except.c (expand_resx_expr): When there already is resume
8782         instruction, produce linked list.
8783         (build_post_landing_pads): Assert that resume is empty.
8784         (connect_post_landing_pads): Handle resume lists.
8785         (dump_eh_tree): Dump resume list.
8786
8787 2009-07-12  Ira Rosen  <irar@il.ibm.com>
8788
8789         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
8790         with additional argument.
8791         * tree-vectorizer.h (enum vect_def_type): Add
8792         vect_double_reduction_def.
8793         (vect_is_simple_reduction): Add argument.
8794         * tree-vect-loop.c (vect_determine_vectorization_factor): Fix
8795         indentation.
8796         (vect_analyze_scalar_cycles_1): Detect double reduction. Call
8797         vect_is_simple_reduction with additional argument.
8798         (vect_analyze_loop_operations): Handle exit phi nodes in case of
8799         double reduction.
8800         (reduction_code_for_scalar_code): Handle additional codes by
8801         returning ERROR_MARK for them. Fix comment and indentation.
8802         (vect_is_simple_reduction): Fix comment, add argument to specify
8803         double reduction. Detect double reduction.
8804         (get_initial_def_for_induction): Fix indentation.
8805         (get_initial_def_for_reduction): Fix comment and indentation.
8806         Handle double reduction. Create initial definitions that do not
8807         require adjustment if ADJUSTMENT_DEF is NULL. Handle additional cases.
8808         (vect_create_epilog_for_reduction): Fix comment, add argument to
8809         handle double reduction. Use PLUS_EXPR in case of MINUS_EXPR in
8810         epilogue result extraction. Create double reduction phi node and
8811         replace relevant uses.
8812         (vectorizable_reduction): Call vect_is_simple_reduction with
8813         additional argument. Fix indentation. Update epilogue code treatment
8814         according to the changes in reduction_code_for_scalar_code. Check
8815         for double reduction. Call vect_create_epilog_for_reduction with
8816         additional argument.
8817         * tree-vect-stmts.c (process_use): Handle double reduction, update
8818         documentation.
8819         (vect_mark_stmts_to_be_vectorized): Handle double reduction.
8820         (vect_get_vec_def_for_operand): Likewise.
8821
8822 2009-07-12  Danny Smith  <dansmister@gmail.com>
8823
8824         * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't
8825         dllexport if !TREE_PUBLIC.
8826         (i386_pe_maybe_record_exported_symbol): Assert TREE_PUBLIC.
8827
8828 2009-07-11  Anatoly Sokolov  <aesok@post.ru>
8829
8830         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Redefine.
8831         (avr_extra_arch_macro) Remove declatation.
8832         * config/avr/avr.c (avr_cpu_cpp_builtins): New function.
8833         (avr_extra_arch_macro) Declare as static.
8834         * config/avr/avr-protos.h (avr_cpu_cpp_builtins): Dclare.
8835
8836 2009-07-11  Jan Hubicka  <jh@suse.cz>
8837
8838         PR middle-end/48388
8839         * except.c (can_be_reached_by_runtime): Test for NULL aka bitmap.
8840
8841 2009-07-11  Jakub Jelinek  <jakub@redhat.com>
8842
8843         PR debug/40713
8844         * dwarf2out.c (dw_fde_struct): Add in_std_section and
8845         cold_in_std_section bits.
8846         (dwarf2out_begin_prologue): Initialize them.
8847         (dwarf2out_finish): Don't emit FDE range into .debug_ranges
8848         if already covered by text_section or cold_text_section range.
8849
8850         PR rtl-optimization/40667
8851         * defaults.h (MINIMUM_ALIGNMENT): Define if not defined.
8852         * doc/tm.texi (MINIMUM_ALIGNMENT): Document it.
8853         * config/i386/i386.h (MINIMUM_ALIGNMENT): Define.
8854         * config/i386/i386.c (ix86_minimum_alignment): New function.
8855         * config/i386/i386-protos.h (ix86_minimum_alignment): New prototype.
8856         * cfgexpand.c (expand_one_var): Use MINIMIM_ALIGNMENT.
8857         * emit-rtl.c (gen_reg_rtx): Likewise.
8858         * function.c (assign_parms): Likewise.  If nominal_type needs
8859         bigger alignment than FUNCTION_ARG_BOUNDARY, use its alignment
8860         rather than passed_type's alignment.
8861
8862         PR target/40668
8863         * function.c (assign_parm_setup_stack): Adjust
8864         MEM_OFFSET (data->stack_parm) if promoted_mode is different
8865         from nominal_mode on big endian.
8866
8867 2009-07-11  Paolo Bonzini  <bonzini@gnu.org>
8868
8869         * expmed.c (emit_store_flag_1): Fix choice of zero vs. sign extension.
8870
8871 2009-07-10  DJ Delorie  <dj@redhat.com>
8872
8873         * config/mep/mep.c (mep_can_inline_p): Correct logic, and simplify.
8874
8875 2009-07-10  Mark Mitchell  <mark@codesourcery.com>
8876
8877         * config/arm/thumb2.md (thumb2_cbz): Correct computation of length
8878         attribute.
8879         (thumb2_cbnz): Likewise.
8880
8881 2009-07-10  David Daney  <ddaney@caviumnetworks.com>
8882
8883         PR target/39079
8884         * config.gcc (supported_defaults): Add synci.
8885         (with_synci): Add validation.
8886         (all_defaults): Add synci.
8887         * config/mips/mips.md (clear_cache): Use TARGET_SYNCI instead of
8888         ISA_HAS_SYNCI.
8889         (synci): Same.
8890         * config/mips/mips.opt (msynci): New option.
8891         * config/mips/mips.c (mips_override_options): Warn on use of
8892         -msynci for targets that do now support it.
8893         * gcc/config/mips/mips.h (OPTION_DEFAULT_SPECS): Add a default for
8894         msynci.
8895         * gcc/doc/invoke.texi (-msynci): Document the new option.
8896         * doc/install.texi (--with-synci): Document the new option.
8897
8898 2009-07-10  Richard Guenther  <rguenther@suse.de>
8899
8900         PR tree-optimization/40496
8901         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Create
8902         the PHI result with a compatible type.
8903
8904 2009-07-10  Manuel López-Ibáñez  <manu@gcc.gnu.org>
8905
8906         PR 25509
8907         PR 40614
8908         * c.opt (Wunused-result): New.
8909         * doc/invoke.texi: Document it.
8910         * c-common.c (c_warn_unused_result): Use it.
8911
8912 2009-07-09  DJ Delorie  <dj@redhat.com>
8913
8914         * targhooks.c (default_target_can_inline_p): Rename from
8915         default_target_option_can_inline_p.
8916         * targhooks.h (default_target_can_inline_p): Likewise.
8917         * target-def.h (TARGET_CAN_INLINE_P): Rename from
8918         TARGET_OPTION_CAN_INLINE_P.
8919         * config/i386/i386.c (TARGET_CAN_INLINE_P): Likewise.
8920         * config/mep/mep.c (TARGET_CAN_INLINE_P): Likewise.
8921         (mep_target_can_inline_p): Rename from
8922         mep_target_option_can_inline_p.
8923
8924         PR target/40626
8925         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Add coprocessor
8926         registers used to pass vectors.
8927
8928         * config/mep/mep.c (mep_option_can_inline_p): Remove error call.
8929
8930 2009-07-09  Tom Tromey  <tromey@redhat.com>
8931
8932         * unwind-dw2-fde-darwin.c: Include dwarf2.h.
8933         * config/mmix/mmix.c: Include dwarf2.h.
8934         * config/rs6000/darwin-fallback.c: Include dwarf2.h.
8935         * config/xtensa/unwind-dw2-xtensa.c: Include dwarf2.h.
8936         * config/sh/sh.c: Include dwarf2.h.
8937         * config/i386/i386.c: Include dwarf2.h.
8938         * Makefile.in (DWARF2_H): Remove 'elf'.
8939         * except.c: Include dwarf2.h.
8940         * unwind-dw2.c: Include dwarf2.h.
8941         * dwarf2out.c: Include dwarf2.h.
8942         * unwind-dw2-fde-glibc.c: Include dwarf2.h.
8943         * unwind-dw2-fde.c: Include dwarf2.h.
8944         * dwarf2asm.c: Include dwarf2.h.
8945
8946 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
8947
8948         * haifa-sched.c (insn_finishes_cycle_p): New static function.
8949         (max_issue): Use it.
8950         * sched-int.h (struct sched_info: insn_finishes_block_p): New
8951         scheduler hook.
8952         * sched-rgn.c (rgn_insn_finishes_block_p): Implement it.
8953         (region_sched_info): Update.
8954         * sched-ebb.c (ebb_sched_info): Update.
8955         * modulo-sched.c (sms_sched_info): Update.
8956         * sel-sched-ir.c (sched_sel_haifa_sched_info): Update.
8957
8958 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
8959
8960         * varasm.c (build_constant_desc): Don't share RTL in pool entries.
8961
8962 2009-07-09  Basile Starynkevitch  <basile@starynkevitch.net>
8963
8964         * plugin.c (try_init_one_plugin): passes RTLD_GLOBAL to dlopen.
8965
8966 2009-07-09  Jakub Jelinek  <jakub@redhat.com>
8967
8968         PR middle-end/40692
8969         * fold-const.c (fold_cond_expr_with_comparison): Don't replace
8970         arg1 with arg01 if arg1 is already INTEGER_CST.
8971
8972 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
8973
8974         * simplify-rtx.c (simplify_binary_operation_1) <AND>:
8975         Transform (and (truncate)) into (truncate (and)).
8976
8977 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
8978
8979         * combine.c (make_extraction): Check TRULY_NOOP_TRUNCATION before
8980         creating LHS paradoxical subregs.  Fix surrounding returns to
8981         use NULL_RTX rather than 0.
8982
8983 2009-07-08  DJ Delorie  <dj@redhat.com>
8984
8985         * config/mep/mep.c: (mep_option_can_inline_p): New.
8986         (TARGET_OPTION_CAN_INLINE_P): Define.
8987
8988 2009-07-08  Mark Wielaard  <mjw@redhat.com>
8989
8990         PR debug/40659
8991         * dwarf2out.c (add_data_member_location_attribute): When we have
8992         only a constant offset don't emit a new location description using
8993         DW_OP_plus_uconst, but just add the constant with add_AT_int, when
8994         dwarf_version > 2.
8995
8996 2009-07-08  Richard Henderson  <rth@redhat.com>
8997
8998         PR target/38900
8999         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move to i386.c.
9000         (enum reg_class): Add CLOBBERED_REGS.
9001         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Likewise.
9002         * config/i386/i386.c (ix86_conditional_register_usage): Moved
9003         from CONDITIONAL_REGISTER_USAGE; build CLOBBERED_REGS for 64-bit.
9004         (ix86_function_ok_for_sibcall): Tidy.  Disallow MS->SYSV sibcalls.
9005         (ix86_expand_call): Use sibcall_insn_operand when needed.  Don't
9006         force 64-bit sibcalls into R11.
9007         * config/i386/constraints.md (U): New constraint.
9008         * config/i386/i386.md (sibcall_1, sibcall_value_1): Use it.
9009         (sibcall_1_rex64, sibcall_value_1_rex64): Likewise.
9010         (sibcall_1_rex64_v, sibcall_value_1_rex64_v): Remove.
9011
9012 2009-07-08  Shujing Zhao  <pearly.zhao@oracle.com>
9013
9014         * basic-block.h (dump_regset, debug_regset): Remove duplicate
9015         prototypes.
9016         * c-objc-common.h (c_initialize_diagnostics): Ditto.
9017         * ebitmap.h (dump_ebitmap): Ditto.
9018         * optabs.h (optab_libfunc): Ditto.
9019         * tree.h (tree_expr_nonzero_warnv_p): Ditto.
9020         * tree-flow.h (vect_can_force_dr_alignment_p,
9021         get_vectype_for_scalar_type): Ditto.
9022         (vectorize_loops): Move prototype to ...
9023         * tree-vectorizer.h: ... here. Also, adjust comment.
9024         (vect_set_verbosity_level): Remove duplicate prototype.
9025         * tree-ssa-loop.c: Include tree-vectorizer.h.
9026         * Makefile.in (tree-ssa-loop.o): Depend on tree-vectorizer.h.
9027
9028 2009-07-08  Nick Clifton  <nickc@redhat.com>
9029
9030         * config/i386/unix.h (ASM_COMMENT_START): Add a space after the
9031         forward slash.
9032
9033 2009-07-08  DJ Delorie  <dj@redhat.com>
9034
9035         * config/mep/mep-ivc2.cpu (cpmovtocsar0_C3, cpmovtocsar1_C3,
9036         cpmovtocc_C3, cpmovtocsar0_P0S_P1, cpmovtocsar1_P0S_P1,
9037         cpmovtocc_P0S_P1): Mark volatile.  Note which registers are
9038         written to.
9039         * config/mep/intrinsics.md: Regenerated.
9040         * config/mep/mep.c (mep_interrupt_saved_reg): Save IVC2 control
9041         registers when asm() or calls are detected.
9042
9043 2009-07-08  Manuel López-Ibáñez  <manu@gcc.gnu.org>
9044
9045         PR c++/31246
9046         * gimplify.c (gimplify_expr): Propagate no_warning flag when
9047         gimplifying.
9048         * gimple (gimple_build_call_from_tree): Likewise.
9049         * tree-cfg.c (remove_useless_stmts_warn_notreached): Check
9050         no_warning flag before warning.
9051
9052 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
9053
9054         * tree.c (set_expr_locus): Remove.
9055         * tree.h (EXPR_LOCUS,SET_EXPR_LOCUS,set_expr_locus): Remove.
9056         * c-typeck.c (c_finish_stmt_expr):  Replace EXPR_LOCUS by
9057         EXPR_LOCATION.
9058         * gimplify.c (internal_get_tmp_var): Likewise.
9059         (gimplify_call_expr): Likewise.
9060         (gimplify_one_sizepos): Likewise.
9061
9062 2009-07-07  Eric Botcazou  <ebotcazou@adacore.com>
9063
9064         PR debug/40666
9065         * dbxout.c (dbxout_symbol) <PARM_DECL>: Deal with parameters pointing
9066         to variables for debugging purposes.
9067
9068 2009-06-23  Mark Loeser  <mark@halcy0n.com>
9069
9070         PR build/40010
9071         * Makefile.in (gcc.pod): Depend on gcc-vers.texi.
9072
9073 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
9074
9075         * pretty-print.c (pp_base_format): Remove %J.
9076         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
9077         gcc_cxxdiag_char_table): Likewise.
9078         (init_dynamic_diag_info): Likewise.
9079
9080 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
9081
9082         * pretty-print.c (pp_base_format): Remove %H.
9083         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
9084         gcc_cxxdiag_char_table): Likewise.
9085         (init_dynamic_diag_info): Likewise.
9086         * config/mep/mep.c (mep_select_section): Likewise.
9087
9088 2009-07-07  Duncan Sands  <baldrick@free.fr>
9089
9090         * final.c (pass_clean_state): Give the pass a name.
9091         * passes.c (pass_rest_of_compilation): Likewise.
9092         * tree-optimize.c (pass_all_optimizations): Likewise.
9093
9094 2009-07-07  H.J. Lu  <hongjiu.lu@intel.com>
9095
9096         * config/ia64/ia64.c (ia64_handle_model_attribute): Remove
9097         an extra 'decl' for error_at.
9098
9099 2009-07-07  Jakub Jelinek  <jakub@redhat.com>
9100
9101         PR middle-end/40669
9102         * tree-tailcall.c (adjust_return_value_with_ops,
9103         create_tailcall_accumulator): Set DECL_GIMPLE_REG_P on the temporary
9104         if it has complex or vector type.
9105
9106 2009-07-07  Olivier Hainque  <hainque@adacore.com>
9107
9108         * config/alpha/t-osf4 (SHLIB_LINK): Do not hide the dummy weak
9109         pthread symbols.
9110
9111 2009-07-07  Basile Starynkevitch  <basile@starynkevitch.net>
9112
9113         * Makefile.in: added more lists of includes to PLUGIN_HEADERS.
9114
9115 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
9116
9117         * cgraphunit.c: Replace %J by an explicit location.  Update all calls.
9118         * c-decl.c: Likewise.
9119         * function.c: Likewise.
9120         * varasm.c: Likewise.
9121         * tree-ssa.c: Likewise.
9122         * c-common.c: Likewise.
9123         * tree-cfg.c: Likewise.
9124         * config/spu/spu.c: Likewise.
9125         * config/ia64/ia64.c: Likewise.
9126         * config/v850/v850.c: Likewise.
9127
9128 2009-07-06  DJ Delorie  <dj@redhat.com>
9129
9130         * config/mep/mep-core.cpu (fsft, ssarb): Mark as VOLATILE.
9131         * config/mep/mep-ivc2.cpu (many): Add VOLATILE to more insns that make
9132         unspecified accesses to control registers.
9133         * config/mep/intrinsics.md: Regenerate.
9134         * config/mep/intrinsics.h: Regenerate.
9135         * config/mep/mep-intrin.h: Regenerate.
9136
9137 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
9138
9139         * c-lex.c: Replace %H by an explicit location. Update all calls.
9140         * c-common.c: Likewise.
9141         * c-decl.c: Likewise.
9142         * c-typeck.c: Likewise.
9143         * fold-const.c: Likewise.
9144         * gimplify.c: Likewise.
9145         * stmt.c: Likewise.
9146         * tree-cfg.c: Likewise.
9147         * tree-ssa-loop-niter.c: Likewise.
9148         * tree-vrp.c: Likewise.
9149         * value-prof.c: Likewise.
9150
9151 2009-07-06  Diego Novillo  <dnovillo@google.com>
9152
9153         * tree-dfa.c (dump_variable): Write DECL_INITIAL for VAR
9154         if it has one.  Handle cases where VAR does not have an
9155         annotation or cfun is NULL.
9156
9157 2009-07-06  Diego Novillo  <dnovillo@google.com>
9158
9159         * tree.c: Include debug.h.
9160         (initialize_tree_contains_struct): New.
9161         (init_ttree): Call it.
9162         (tree_node_structure_for_code): Factor out of ...
9163         (tree_node_structure): ... here.
9164         * treestruct.def (TS_PHI_NODE): Remove.
9165         (TS_GIMPLE_STATEMENT): Remove.
9166
9167 2009-07-06  Diego Novillo  <dnovillo@google.com>
9168
9169         * tree-pretty-print.c (dump_generic_node): Protect against NULL op0.
9170         (debug_tree_chain): Handle cycles.
9171
9172 2009-07-06  Nick Clifton  <nickc@redhat.com>
9173             DJ Delorie  <dj@redhat.com>
9174
9175         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
9176         __FMOVD_ENABLED__ is defined.
9177         * config/sh/sh.h
9178         (TARGET_FMOVD): Provide a default definition.
9179         (MASK_FMOVD): Likewise.
9180         (TARGET_CPU_CPP_BUILTINS): Define
9181         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
9182         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
9183         two fmov instructions depending upon whether TARGET_FMOVD is enabled.
9184         (split for DF load from memory into register): Also handle
9185         MEMs which consist of REG+DISP addressing.
9186         (split for DF store from register to memory): Likewise.
9187         (movsf_ie): Always use single fp_mode.
9188         * config/sh/sh.c (sh_override_options): Do not automatically
9189         enable TARGET_MOVD for the SH2A when supporting doubles - leave
9190         that to the -mfmovd command line switch.
9191         (broken_move): Do not restrict fldi test to only the SH4 and SH4A.
9192         (fldi_ok): Always allow.
9193         * config/sh/sh.opt (mfmovd): Remove this switch.
9194         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
9195
9196 2009-07-06  J"orn Rennecke  <joern.rennecke@arc.com>
9197             Kaz Kojima  <kkojima@gcc.gnu.org>
9198
9199         PR rtl-optimization/30807
9200         * postreload.c (reload_combine): For every new use of REG_SUM,
9201         record the use of BASE.
9202
9203 2009-07-06  Jan Hubicka  <jh@suse.cz>
9204
9205         * params.def: Revert my accidental commit at 2009-06-30.
9206
9207 2009-07-04  Ian Lance Taylor  <iant@google.com>
9208
9209         PR target/40636
9210         * config/i386/msformat-c.c (mingw_format_attributes): Declare as
9211         EXPORTED_CONST.
9212         (mingw_format_attribute_overrides): Likewise.
9213
9214 2009-07-04  Jakub Jelinek  <jakub@redhat.com>
9215
9216         PR debug/40596
9217         * dwarf2out.c (based_loc_descr): For crtl->stack_realign_tried
9218         don't check cfa.reg.  Instead of cfa.indirect use
9219         fde && fde->drap_reg != INVALID_REGNUM test.
9220
9221 2009-07-04  Eric Botcazou  <ebotcazou@adacore.com>
9222
9223         * postreload.c (reload_combine): Replace CONST_REG with INDEX_REG.
9224
9225 2009-07-03  Vladimir Makarov  <vmakarov@redhat.com>
9226
9227         PR target/40587
9228         * ira.c (build_insn_chain): Use DF_LR_OUT instead of df_get_live_out.
9229
9230 2009-07-03  Richard Guenther  <rguenther@suse.de>
9231
9232         PR tree-optimization/40640
9233         * tree-switch-conversion.c (build_arrays): Perform arithmetic
9234         in original type.
9235
9236 2009-07-03  Jan Hubicka  <jh@suse.cz>
9237
9238         * ipa-inline.c (cgraph_decide_inlining_incrementally): When optimizing
9239         for size, reduce amount of inlining.
9240
9241 2009-07-03  Richard Guenther  <rguenther@suse.de>
9242
9243         PR middle-end/34163
9244         * tree-chrec.c (chrec_convert_1): Fold (T2)(t +- x) to (T2)t +- (T2)x
9245         if t +- x is known to not overflow and the conversion widens the
9246         operation.
9247         * Makefile.in (tree-chrec.o): Add $(FLAGS_H) dependency.
9248
9249 2009-07-03  Jan Hubicka  <jh@suse.cz>
9250
9251         * ipa-pure-const.c (analyze): Update loop optimizer init.
9252         * tree-ssa-loop-iv-canon.c (empty_loop_p, remove_empty_loop,
9253         try_remove_empty_loop, remove_empty_loops): Remove.
9254         * tree-ssa-loop.c (tree_ssa_empty_loop, pass_empty_loop): Remove.
9255         * tree-ssa-dce.c (find_obviously_necessary_stmts): Use finiteness info
9256         to mark regular loops as neccesary.
9257         (degenerate_phi_p): New function.
9258         (propagate_necessity, remove_dead_phis): Use it.
9259         (forward_edge_to_pdom): Likewise.
9260         (eliminate_unnecessary_stmts): Take care to remove uses of results of
9261         virtual PHI nodes that became unreachable.
9262         (perform_tree_ssa_dce): Initialize/deinitialize loop optimizer.
9263         * tree-flow.h (remove_empty_loops): Remove.
9264         * passes.c (init_optimization_passes): Remove.
9265
9266 2009-07-03  Uros Bizjak  <ubizjak@gmail.com>
9267
9268         * config/i386/i386.md (fix_trunc<mode>_fisttp_i387_1): Use
9269         can_create_pseudo_p.
9270         (*fix_trunc<mode>_i387_1): Ditto.
9271         (*floathi<mode>2_1): Ditto.
9272         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): Ditto.
9273         (*fistdi2_1): Ditto.
9274         (*fist<mode>2_1): Ditto.
9275         (frndintxf2_floor): Ditto.
9276         (*fist<mode>2_floor_1): Ditto.
9277         (frndintxf2_ceil): Ditto.
9278         (*fist<mode>2_ceil_1): Ditto.
9279         (frndintxf2_trunc): Ditto.
9280         (frndintxf2_mask_pm): Ditto.
9281         (fxam<mode>2_i387_with_temp): Ditto.
9282         * config/i386/sse.md (mulv16qi3): Ditto.
9283         (*sse2_mulv4si3): Ditto.
9284         (mulv2di3): Ditto.
9285         (sse4_2_pcmpestr): Ditto.
9286         (sse4_2_pcmpistr): Ditto.
9287
9288 2009-07-03  Jan Hubicka  <jh@suse.cz>
9289
9290         * tree-ssa-dce.c (bb_contains_live_stmts): New bitmap.
9291         (mark_stmt_necessary): Set it.
9292         (mark_operand_necessary): Set it.
9293         (mark_control_dependent_edges_necessary): Set it.
9294         (mark_virtual_phi_result_for_renaming): New function.
9295         (get_live_post_dom): New function.
9296         (forward_edge_to_pdom): New function.
9297         (remove_dead_stmt): Fix handling of control dependences.
9298         (tree_dce_init): Init new bitmap.
9299         (tree_dce_done): Free it.
9300
9301 2009-07-02  Richard Guenther  <rguenther@suse.de>
9302
9303         PR bootstrap/40617
9304         * tree-ssa-structalias.c (new_var_info): Initialize
9305         is_restrict_var.
9306
9307 2009-07-02  Jan Hubicka  <jh@suse.cz>
9308
9309         * ipa-pure-const.c (check_op): Use PTA info to see if indirect_ref is
9310         local.
9311
9312 2009-07-02  Paolo Bonzini  <bonzini@gnu.org>
9313
9314         * expmed.c (emit_cstore, emit_store_flag_1): Accept target_mode
9315         instead of recomputing it.  Adjust calls.
9316         (emit_store_flag): Adjust recursive calls.
9317
9318 2009-07-02  Richard Guenther  <rguenther@suse.de>
9319
9320         * tree-ssa-live.c (remove_unused_locals): Do not remove
9321         heap variables.
9322         * tree-ssa-structalias.c (handle_lhs_call): Delay setting
9323         of DECL_EXTERNAL for HEAP variables.
9324         (compute_points_to_sets): Set DECL_EXTERNAL for escaped
9325         HEAP variables.  Do not adjust RESTRICT vars.
9326         (find_what_var_points_to): Nobody cares if something
9327         points to READONLY.
9328
9329 2009-07-02  Ben Elliston  <bje@au.ibm.com>
9330
9331         * unwind-dw2-fde-glibc.c (_Unwind_IteratePhdrCallback): Move
9332         pc_low and pc_high declarations to the top of the function.
9333
9334 2009-07-01  DJ Delorie  <dj@redhat.com>
9335
9336         * config/mep/mep.c (mep_handle_option): Leave IVC2 control
9337         registers as fixed.
9338         (mep_interrupt_saved_reg): Save appropriate IVC2 control registers.
9339         * config/mep/mep-ivc2.cpu: Add VOLATILE to insns that make
9340         unspecified accesses to control registers.
9341         * config/mep/intrinsics.md: Regenerate.
9342         * config/mep/intrinsics.h: Regenerate.
9343         * config/mep/mep-intrin.h: Regenerate.
9344
9345 2009-07-01  Anthony Green  <green@moxielogic.com>
9346
9347         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
9348         instruction when possible.
9349         (moxie_expand_prologue): Ditto.  Also, save an instruction and
9350         some complexity by popping off of $r12 instead of $sp.
9351         * config/moxie/moxie.md (movsi_pop): Don't assume $sp.  Take two
9352         operands.
9353
9354 2009-07-01  Richard Henderson  <rth@redhat.com>
9355
9356         PR bootstrap/40347
9357         * function.c (reposition_prologue_and_epilogue_notes): If epilogue
9358         contained no insns, reposition note before last insn.
9359
9360 2009-07-01  Richard Henderson  <rth@redhat.com>
9361
9362         PR debug/40431
9363         * dwarf2out.c (def_cfa_1): Revert 2009-06-11 change for
9364         DW_CFA_def_cfa_offset and DW_CFA_def_cfa.
9365
9366 2009-07-01  Michael Meissner  <meissner@linux.vnet.ibm.com>
9367
9368         PR bootstrap/40558
9369         * config/rs6000/rs6000.c (print_operand): Undo change that breaks
9370         darwin9 for printing reg addresses with %y.
9371
9372 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
9373
9374         * combine.c (force_to_mode): Handle TRUNCATE.  Factor out
9375         truncation from operands in binary operations.
9376
9377 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
9378
9379         Revert:
9380         2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
9381         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
9382         subreg of op0 to the original op0.
9383
9384         * expmed.c (store_bit_field_1): Use a temporary as the destination
9385         instead of a paradoxical subreg when we need to truncate the result.
9386
9387 2009-07-01  DJ Delorie  <dj@redhat.com>
9388
9389         * config/mep/mep-ivc2.cpu (cmov, cmovc, cmovh): Add intrinsic
9390         names to VLIW variants.
9391         (ivc2rm, ivc2crn): Make data type consistent with non-VLIW variants.
9392         * config/mep/intrinsics.md: Regenerate.
9393         * config/mep/intrinsics.h: Regenerate.
9394         * config/mep/mep-intrin.h: Regenerate.
9395
9396 2009-07-01  Jakub Jelinek  <jakub@redhat.com>
9397
9398         PR debug/40462
9399         * jump.c (returnjump_p): Revert last patch.
9400         * dwarf2out.c (dwarf2out_begin_epilogue): Handle SEQUENCEs.
9401
9402 2009-07-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
9403
9404         PR target/40575
9405         * pa.md (casesi32p): Use jump table label to determine the offset
9406         of the jump table.
9407         (casesi64p): Likewise.
9408
9409         * pa.c (forward_branch_p): Return bool type.  Use instruction
9410         addresses when available.  Assert that INSN has a jump label.
9411         (pa_adjust_insn_length): Don't call forward_branch_p if INSN doesn't
9412         have a jump label.
9413
9414 2009-07-01  Richard Guenther  <rguenther@suse.de>
9415
9416         PR tree-optimization/19831
9417         * tree-ssa-dce.c (propagate_necessity): Calls to functions
9418         that only act as barriers do not make any previous stores necessary.
9419         * tree-ssa-structalias.c (handle_lhs_call): Delay making
9420         HEAP variables global, do not add a constraint from nonlocal.
9421         (find_func_aliases): Handle escapes through return statements.
9422         (compute_points_to_sets): Make escaped HEAP variables global.
9423
9424 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
9425
9426         PR bootstrap/40597
9427         * expmed.c (emit_store_flag): Perform a conversion if necessary,
9428         after reducing a DImode cstore to SImode.
9429
9430 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
9431
9432         * expr.c (expand_expr_real_1): Reinstate fallthrough to
9433         TRUTH_ANDIF_EXPR if do_store_flag returns NULL.
9434
9435 2009-07-01  Maciej W. Rozycki  <macro@linux-mips.org>
9436
9437         * config/vax/vax.h (TARGET_BSD_DIVMOD): New macro.  Set to 1.
9438         * config/vax/linux.h (TARGET_BSD_DIVMOD): New macro.  Redefine the
9439         to 0.
9440         * config/vax/vax.c (vax_init_libfuncs): Only redefine udiv_optab
9441         and umod_optab if TARGET_BSD_DIVMOD.
9442         * config/vax/lib1funcs.asm: New file.
9443         * config/vax/t-linux: New file.
9444         * config.gcc (vax-*-linux*): Set tmake_file to vax/t-linux.
9445
9446 2009-06-30  Jakub Jelinek  <jakub@redhat.com>
9447
9448         PR c++/40566
9449         * convert.c (convert_to_integer) <case COND_EXPR>: Don't convert
9450         to type arguments that have void type.
9451
9452         PR debug/40573
9453         * dwarf2out.c (gen_formal_parameter_die): Call
9454         equate_decl_number_to_die if node is different from origin.
9455
9456 2009-06-30  Anthony Green  <green@moxielogic.com>
9457
9458         Clean up moxie port for --enable-build-with-cxx.
9459         * config/moxie/moxie.c (moxie_function_value): First two
9460         parameters are const_tree, not tree.
9461         * config/moxie/moxie.h (enum reg_class): Rename CC_REG to CC_REGS.
9462         (REG_CLASS_NAMES): Ditto.
9463         (REGNO_REG_CLASS): Ditto.
9464         * config/moxie/moxie-protos.h (moxie_override_options): Declare.
9465         (moxie_function_value): Fix constyness of arguments.
9466
9467 2009-06-30  Eric Botcazou  <ebotcazou@adacore.com>
9468
9469         * cgraphunit.c (cgraph_finalize_compilation_unit): Call
9470         finalize_size_functions before further processing.
9471         * stor-layout.c: Include cgraph.h, tree-inline.h and tree-dump.h.
9472         (variable_size): Call self_referential_size on size expressions
9473         that contain a PLACEHOLDER_EXPR.
9474         (size_functions): New static variable.
9475         (copy_self_referential_tree_r): New static function.
9476         (self_referential_size): Likewise.
9477         (finalize_size_functions): New global function.
9478         * tree.c: Include tree-inline.h.
9479         (push_without_duplicates): New static function.
9480         (find_placeholder_in_expr): New global function.
9481         (substitute_in_expr) <tcc_declaration>: Return the replacement object
9482         on equality.
9483         <tcc_expression>: Likewise.
9484         <tcc_vl_exp>: If the replacement object is a constant, try to inline
9485         the call in the expression.
9486         * tree.h (finalize_size_functions): Declare.
9487         (find_placeholder_in_expr): Likewise.
9488         (FIND_PLACEHOLDER_IN_EXPR): New macro.
9489         (substitute_placeholder_in_expr): Update comment.
9490         * tree-inline.c (remap_decl): Do not unshare trees if do_not_unshare
9491         is true.
9492         (copy_tree_body_r): Likewise.
9493         (copy_tree_body): New static function.
9494         (maybe_inline_call_in_expr): New global function.
9495         * tree-inline.h (struct copy_body_data): Add do_not_unshare field.
9496         (maybe_inline_call_in_expr): Declare.
9497         * Makefile.in (tree.o): Depend on TREE_INLINE_H.
9498         (stor-layout.o): Depend on CGRAPH_H, TREE_INLINE_H, TREE_DUMP_H and
9499         GIMPLE_H.
9500
9501 2009-06-30  Richard Guenther  <rguenther@suse.de>
9502
9503         * tree-ssa-dce.c (mark_all_reaching_defs_necessary_1): Always
9504         continue walking.
9505         (propagate_necessity): Do not mark reaching defs of stores
9506         as necessary.
9507
9508 2009-06-30  Jan Hubicka  <jh@suse.cz>
9509
9510         * cfgloopanal.c (check_irred): Move into ...
9511         (mark_irreducible_loops): ... here; return true if ireducible
9512         loops was found.
9513         * ipa-pure-const.c: Include cfgloop.h and tree-scalar-evolution.h
9514         (analyze_function): Try to prove loop finiteness.
9515         * cfgloop.h (mark_irreducible_loops): Update prototype.
9516         * Makefile.in (ipa-pure-const.o): Add dependency on SCEV and CFGLOOP.
9517
9518 2009-06-30  Basile Starynkevitch  <basile@starynkevitch.net>
9519
9520         * Makefile.in (PLUGIN_HEADERS): added ggc, tree-dump, pretty-print.
9521
9522 2009-06-30  Ira Rosen  <irar@il.ibm.com>
9523
9524         PR tree-optimization/40542
9525         * tree-vect-stmts.c (vect_analyze_stmt): Don't vectorize volatile
9526         types.
9527
9528 2009-06-30  Martin Jambor  <mjambor@suse.cz>
9529
9530         PR tree-optimization/40582
9531         * tree-sra.c (build_ref_for_offset_1): Use types_compatible_p rather
9532         than useless_type_conversion_p.
9533         (generate_subtree_copies): Increment sra_stats.subtree_copies at a
9534         proper place.
9535
9536 2009-06-30  Martin Jambor  <mjambor@suse.cz>
9537
9538         PR middle-end/40554
9539         * tree-sra.c (sra_modify_expr): Add access->offset to start_offset.
9540
9541 2009-06-30  Richard Guenther  <rguenther@suse.de>
9542
9543         * tree-ssa-alias.c (walk_aliased_vdefs_1): Change interface to
9544         use ao_ref references.
9545         (walk_aliased_vdefs): Likewise.
9546         * tree-ssa-alias.h (walk_aliased_vdefs): Adjust prototype.
9547         * tree-ssa-dce.c (struct ref_data): Remove.
9548         (mark_aliased_reaching_defs_necessary_1): Use the ao_ref argument.
9549         (mark_aliased_reaching_defs_necessary): Adjust.
9550         (mark_all_reaching_defs_necessary_1): Likewise.
9551
9552 2009-06-30  Paolo Bonzini  <bonzini@gnu.org>
9553
9554         PR boostrap/40597
9555         * expmed.c (emit_cstore): New name of emit_store_flag_1.
9556         (emit_store_flag_1): Extract from emit_store_flag, adjust
9557         calls to (what now is) emit_cstore.
9558         (emit_store_flag): Call emit_store_flag_1 and also use it
9559         for what used to be recursive calls.
9560
9561 2009-06-30  Wei Guozhi  <carrot@google.com>
9562
9563         PR/40416
9564         * tree-ssa-sink.c (statement_sink_location): Stop sinking expression
9565         if the target bb post dominates from bb.
9566         * config/i386/i386.c (memory_address_length): Check existence of base
9567         register before using it.
9568
9569 2009-06-30  Nick Clifton  <nickc@redhat.com>
9570             DJ Delorie  <dj@redhat.com>
9571
9572         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
9573         __FMOVD_ENABLED__ is defined.
9574         * config/sh/sh.h
9575         (TARGET_FMOVD): Provide a default definition.
9576         (MASK_FMOVD): Likewise.
9577         (TARGET_CPU_CPP_BUILTINS): Define
9578         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
9579         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
9580         two fmov instructions depending upon whether TARGET_FMOVD is
9581         enabled.
9582         (split for DF load from memory into register): Also handle
9583         MEMs which consist of REG+DISP addressing.
9584         (split for DF store from register to memory): Likewise.
9585         * config/sh/sh.opt (mfmovd): Remove this switch.
9586         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
9587         * config/sh/sh.c (sh_override_options): Do not automatically
9588         enable TARGET_MOVD for the SH2A when supporting doubles - leave
9589         that to the -mfmovd command line switch.
9590
9591         * config/sh/sh.c (broken_move): Do not restrict fldi test to only
9592         the SH4 and SH4A.
9593         (fldi_ok): Always allow.
9594         * config/sh/sh.md (movsf_ie): Always use single fp_mode.
9595
9596 2009-06-29  DJ Delorie  <dj@redhat.com>
9597
9598         * doc/install.texi (mep-x-elf): Correct chip's full name.
9599
9600 2009-06-29  H.J. Lu  <hongjiu.lu@intel.com>
9601
9602         * doc/extend.texi: Fix typo.
9603
9604 2009-06-29  Tom Tromey  <tromey@redhat.com>
9605
9606         * dwarf2.h: Remove.
9607         * Makefile.in (DWARF2_H): New variable.
9608         (except.o): Use it.
9609         (dwarf2out.o): Likewise.
9610         (dwarf2asm.o): Likewise.
9611         * config/i386/t-i386: Use DWARF2_H.
9612         * except.c: Include elf/dwarf2.h.
9613         * unwind-dw2.c: Include elf/dwarf2.h.
9614         * dwarf2out.c: Include elf/dwarf2.h.
9615         (dw_loc_descr_struct) <dw_loc_opc>: Now a bitfield.
9616         <dtprel>: New field.
9617         (dwarf_stack_op_name): Don't handle INTERNAL_DW_OP_tls_addr.
9618         (size_of_loc_descr): Likewise.
9619         (output_loc_operands_raw): Likewise.
9620         (output_loc_operands): Handle new dtprel field.
9621         (loc_checksum): Update.
9622         (loc_descriptor_from_tree_1) <VAR_DDECL>: Set dtprel field.
9623         * unwind-dw2-fde-glibc.c: Include elf/dwarf2.h.
9624         * unwind-dw2-fde.c: Include elf/dwarf2.h.
9625         * dwarf2asm.c: Include elf/dwarf2.h.
9626         * unwind-dw2-fde-darwin.c: Include elf/dwarf2.h.
9627         * config/mmix/mmix.c: Include elf/dwarf2.h.
9628         * config/rs6000/darwin-fallback.c: Include elf/dwarf2.h.
9629         * config/xtensa/unwind-dw2-xtensa.c: Include elf/dwarf2.h.
9630         * config/sh/sh.c: Include elf/dwarf2.h.
9631         * config/i386/i386.c: Include elf/dwarf2.h.
9632
9633 2009-06-29  DJ Delorie  <dj@redhat.com>
9634
9635         * config/mep/mep.h (CPP_SPEC): Remove __cop macro.
9636
9637         * doc/extend.texi: Add MeP attributes and pragmas.
9638         * doc/invoke.text: Add MeP Options.
9639         * doc/contrib.texi: Add MeP contribution.
9640         * doc/md.texi: Add MeP constraints.
9641         * doc/install.texi: Add MeP target.
9642
9643 2009-06-30  Anatoly Sokolov  <aesok@post.ru>
9644
9645         * target.h (struct gcc_target): Add frame_pointer_required field.
9646         * target-def.h (TARGET_FRAME_POINTER_REQUIRED): New.
9647         (TARGET_INITIALIZER): Use TARGET_FRAME_POINTER_REQUIRED.
9648         * ira.c (setup_eliminable_regset): Use frame_pointer_required target
9649         hook.
9650         * reload1.c (update_eliminables): (Ditto.).
9651         * gcc/system.h (FRAME_POINTER_REQUIRED): Poison.
9652         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
9653         (INITIAL_FRAME_POINTER_OFFSET): (Ditto.).
9654
9655         * config/arc/arc.h (FRAME_POINTER_REQUIRED): Remove macro.
9656
9657         * config/arm/arm.h (FRAME_POINTER_REQUIRED): Remove macro.
9658         * config/arm/arm.c (TARGET_FRAME_POINTER_REQUIRED): Define.
9659         (arm_frame_pointer_required): New function.
9660
9661         * config/avr/avr.h (FRAME_POINTER_REQUIRED): Remove macro.
9662         * config/avr/avr.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
9663         (avr_frame_pointer_required_p): Declare as static.
9664         * config/avr/avr-protos.h (avr_frame_pointer_required_p): Remove.
9665
9666         * config/bfin/bfin.h (FRAME_POINTER_REQUIRED): Remove macro.
9667         * config/bfin/bfin.c (TARGET_FRAME_POINTER_REQUIRED): Define.
9668         (bfin_frame_pointer_required): Make as static, change return type
9669         to bool.
9670         * config/bfin/bfin-protos.h (bfin_frame_pointer_required): Remove.
9671
9672         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Remove macro.
9673         * config/cris/cris.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
9674         (cris_frame_pointer_required): New function.
9675
9676         * config/crx/crx.h (FRAME_POINTER_REQUIRED): Remove macro.
9677
9678         * config/fr30/fr30.h (FRAME_POINTER_REQUIRED): Remove macro.
9679         * config/fr30/fr30.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
9680         (fr30_frame_pointer_required): New function.
9681
9682         * config/frv/frv.h (FRAME_POINTER_REQUIRED): Remove macro.
9683         * config/frv/frv.c (TARGET_FRAME_POINTER_REQUIRED): Define.
9684         (frv_frame_pointer_required): Make as static, change return type
9685         to bool.
9686         * config/bfin/bfin-protos.h (frv_frame_pointer_required): Remove.
9687
9688         * config/i386/i386.h (FRAME_POINTER_REQUIRED): Remove macro.
9689         * config/i386/i386.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
9690         (ix86_frame_pointer_required): Make as static, change return type to
9691         bool.
9692         * config/i386/i386-protos.h (ix86_frame_pointer_required): Remove.
9693
9694         * config/m32c/m32c.h (FRAME_POINTER_REQUIRED): Remove macro.
9695         * config/m32c/m32c.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
9696
9697         * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Remove macro.
9698
9699         * config/mcore/mcore.h (CAN_ELIMINATE): Remove macro.
9700
9701         * config/mep/mep.h (FRAME_POINTER_REQUIRED): Remove macro.
9702
9703         * config/mips/mips.h (FRAME_POINTER_REQUIRED): Remove macro.
9704         * config/mips/mips.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
9705         (mips_frame_pointer_required): Make as static.
9706         * config/mips/mips-protos.h (mips_frame_pointer_required): Remove.
9707
9708         * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Remove macro.
9709         * config/mmix/mmix.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
9710         (mmix_frame_pointer_required): Mew function.
9711
9712         * config/moxie/moxie.h (FRAME_POINTER_REQUIRED): Remove macro.
9713         * config/moxie/moxie.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
9714
9715         * config/pa/pa.h (FRAME_POINTER_REQUIRED): Remove macro.
9716
9717         * config/score/score.h (FRAME_POINTER_REQUIRED): Remove macro.
9718
9719         * config/sh/sh.h (CAN_ELIMINATE): Remove macro.
9720
9721         * config/sparc/sparc.h (FRAME_POINTER_REQUIRED): Remove macro.
9722         (CAN_ELIMINATE): Redefine.
9723         * config/sparc/sparc.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
9724         (sparc_frame_pointer_required): New function.
9725         (sparc_can_eliminate): New function.
9726         * config/sparc/sparc-protos.h (sparc_can_eliminate): Declare.
9727
9728         * config/vax/vax.h (FRAME_POINTER_REQUIRED): Remove macro.
9729         * config/vax/vax.c (TARGET_FRAME_POINTER_REQUIRED): Define.
9730
9731         * config/xtensa/xtensa.h (FRAME_POINTER_REQUIRED): Remove macro.
9732         * config/xtensa/xtensa.c (TARGET_FRAME_POINTER_REQUIRED): Define.
9733         (xtensa_frame_pointer_required): Make as static, change return type
9734         to bool.
9735         * config/xtensa/xtensa-protos.h (xtensa_frame_pointer_required):
9736         Remove.
9737
9738 2009-06-29  Olatunji Ruwase  <tjruwase@google.com>
9739
9740         * doc/plugins.texi: Document PLUGIN_START_UNIT.
9741         * toplev.c (compile_file): Call PLUGIN_START_UNIT.
9742         * gcc-plugin.h (PLUGIN_START_UNIT): Added new event.
9743         * plugin.c (plugin_event_name): Added PLUGIN_START_UNIT.
9744         (register_callback): Handle PLUGIN_START_UNIT.
9745         (invoke_plugin_callbacks): Handle PLUGIN_START_UNIT.
9746
9747 2009-06-29  Eric Botcazou  <ebotcazou@adacore.com>
9748
9749         * tree.c (process_call_operands): Propagate TREE_READONLY from the
9750         operands.
9751         (PROCESS_ARG): Do not clear TREE_READONLY if CONSTANT_CLASS_P.
9752         (build3_stat): Propagate TREE_READONLY for COND_EXPR.
9753
9754 2009-06-29  Daniel Jacobowitz  <dan@codesourcery.com>
9755
9756         * config/arm/arm.h (REGISTER_MOVE_COST): Increase VFP register
9757         move cost.
9758
9759 2009-06-29  Uros Bizjak  <ubizjak@gmail.com>
9760
9761         * doc/extend.texi (Additional Floating Types): __float128 is also
9762         supported on i386 targets.
9763
9764 2009-06-29  Richard Guenther  <rguenther@suse.de>
9765
9766         PR middle-end/14187
9767         * tree-ssa-alias.h (struct pt_solution): Add vars_contains_restrict
9768         flag.
9769         (pt_solutions_same_restrict_base): Declare.
9770         * tree-ssa-structalias.c (struct variable_info): Add is_restrict_var
9771         flag.
9772         (new_var_info): Initialize is_global_var properly for SSA_NAMEs.
9773         (make_constraint_from, make_copy_constraint): Move earlier.
9774         (make_constraint_from_heapvar): New function.
9775         (make_constraint_from_restrict): Likewise.
9776         (handle_lhs_call): Use it.
9777         (find_func_aliases): Use it to track conversions to restrict
9778         qualified pointers.
9779         (struct fieldoff): Add only_restrict_pointers flag.
9780         (push_fields_onto_fieldstack): Initialize it.
9781         (create_variable_info_for): Track global restrict qualified pointers.
9782         (intra_create_variable_infos): Use make_constraint_from_heapvar.
9783         Track restrict qualified pointer arguments.
9784         (set_uids_in_ptset): Use varinfo is_global_var flag.
9785         (find_what_var_points_to): Set the vars_contains_restrict flag.
9786         Always create the points-to solution for sets including restrict tags.
9787         (pt_solutions_same_restrict_base): New function.
9788         * tree-ssa-alias.c (ptr_derefs_may_alias_p): For two restrict
9789         qualified pointers use pt_solutions_same_restrict_base as
9790         additional source for disambiguation.
9791
9792 2009-06-29  Richard Guenther  <rguenther@suse.de>
9793
9794         PR middle-end/38212
9795         * alias.c (find_base_decl): Remove.
9796         (get_deref_alias_set_1): Remove restrict handling.
9797         * c-common.c (c_apply_type_quals_to_decl): Do not set
9798         DECL_POINTER_ALIAS_SET.
9799         * gimplify.c (find_single_pointer_decl_1): Remove.
9800         (find_single_pointer_decl): Likewise.
9801         (internal_get_tmp_var): Remove restrict handling.
9802         (gimple_regimplify_operands): Likewise.
9803         * omp-low.c (expand_omp_atomic_pipeline): Do not set
9804         DECL_POINTER_ALIAS_SET. Use ref-all pointers.
9805         * print-tree.c (print_node): Do not print DECL_POINTER_ALIAS_SET.
9806         * tree.c (restrict_base_for_decl): Remove.
9807         (init_ttree): Do not allocate it.
9808         (make_node_stat): Do not set DECL_POINTER_ALIAS_SET.  Set
9809         LABEL_DECL_UID for label decls.
9810         (copy_node_stat): Do not copy restrict information.
9811         (decl_restrict_base_lookup): Remove.
9812         (decl_restrict_base_insert): Likewise.
9813         (print_restrict_base_statistics): Likewise.
9814         (dump_tree_statistics): Do not call print_restrict_base_statistics.
9815         * tree.h (DECL_POINTER_ALIAS_SET): Remove.
9816         (DECL_POINTER_ALIAS_SET_KNOWN_P): Likewise.
9817         (struct tree_decl_common): Rename pointer_alias_set to label_decl_uid.
9818         (LABEL_DECL_UID): Adjust.
9819         (DECL_BASED_ON_RESTRICT_P): Remove.
9820         (DECL_GET_RESTRICT_BASE): Likewise.
9821         (SET_DECL_RESTRICT_BASE): Likewise.
9822         (struct tree_decl_with_vis): Remove based_on_restrict_p flag.
9823
9824         * config/i386/i386.c (ix86_gimplify_va_arg): Use ref-all pointers
9825         instead of DECL_POINTER_ALIAS_SET.
9826         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
9827         * config/s390/s390.c (s390_gimplify_va_arg): Likewise.
9828         * config/spu/spu.c (spu_gimplify_va_arg_expr): Likewise.
9829
9830 2009-06-29  Richard Guenther  <rguenther@suse.de>
9831
9832         PR tree-optimization/40579
9833         * tree-vrp.c (vrp_evaluate_conditional): Bail out early if
9834         the IL to simplify has constants that overflowed.
9835
9836 2009-06-28  Uros Bizjak  <ubizjak@gmail.com>
9837
9838         PR tree-optimization/40550
9839         * tree-vect-generic.c (expand_vector_operations_1): Compute in
9840         vector_compute_type only when the size of vector_compute_type is
9841         less than the size of type.
9842
9843 2009-06-28  Eric Botcazou  <ebotcazou@adacore.com>
9844
9845         * fold-const.c (contains_label_1): Fix comments.
9846         (contains_label_p): Do not walk trees multiple time.
9847
9848 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
9849
9850         * config/i386/i386.h (enum ix86_fpcmp_strategy): New.
9851         * config/i386/i386.md (cbranchxf4, cstorexf4, cbranch<MODEF>4,
9852         cstore<MODEF>4, mov<X87MODEF>cc): Change predicate to
9853         ix86_fp_comparison_operator.
9854         (*fp_jcc_1_mixed, *fp_jcc_1_sse, *fp_jcc_1_387, *fp_jcc_2_mixed,
9855         *fp_jcc_2_sse, *fp_jcc_2_387): Delete
9856         (*fp_jcc_3_387, *fp_jcc_4_387, *fp_jcc_5_387, *fp_jcc_6_387,
9857         *fp_jcc_7_387, *fp_jcc_8<MODEF>_387): Eliminate call to
9858         !ix86_use_fcomi_compare, change ix86_fp_jump_nontrivial_p call
9859         to !TARGET_CMOVE, change predicate to ix86_fp_comparison_operator.
9860         (related splits): Change predicate to ix86_fp_comparison_operator.
9861         * config/i386/predicates.md: Use ix86_trivial_fp_comparison_operator
9862         instead of ix86_fp_comparison_codes.
9863         (ix86_trivial_fp_comparison_operator,
9864         ix86_fp_comparison_operator): New.
9865         * config/i386/i386-protos.h (ix86_fp_comparison_strategy): New.
9866         (ix86_expand_compare): Eliminate last two parameters.
9867         (ix86_fp_jump_nontrivial_p): Kill.
9868         * config/i386/i386.c (put_condition_code): Eliminate call to
9869         ix86_fp_comparison_codes and subsequent assertion.
9870         (ix86_fp_comparison_codes): Eliminate.
9871         (ix86_fp_swap_condition): New.
9872         (ix86_fp_comparison_arithmetics_cost, ix86_fp_comparison_fcomi_cost,
9873         ix86_fp_comparison_sahf_cost, ix86_use_fcomi_compare): Consolidate
9874         into ix86_fp_comparison_cost and ix86_fp_comparison_strategy.
9875         (ix86_prepare_fp_compare_args): Use ix86_fp_comparison_strategy
9876         and ix86_fp_swap_condition.
9877         (ix86_expand_fp_compare): Eliminate code for second jump/bypass jump.
9878         Use ix86_fp_comparison_strategy.
9879         (ix86_expand_compare): Likewise.  Eliminate last two arguments.
9880         (ix86_fp_jump_nontrivial_p): Eliminate.
9881         (ix86_expand_branch): Treat SFmode/DFmode/XFmode as simple.  Adjust
9882         call to ix86_expand_compare.
9883         (ix86_split_fp_branch, ix86_expand_setcc,
9884         ix86_expand_carry_flag_compare, ix86_expand_int_movcc,
9885         ix86_expand_fp_movcc): Eliminate code for second jump/bypass jump.
9886
9887 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
9888
9889         * config/arm/arm.c (arm_final_prescan_ins): Eliminate code
9890         related to jump_clobbers.
9891         * config/arm/arm.md (conds): Remove jump_clob case.
9892         (addsi3_cbranch, addsi3_cbranch_scratch, subsi3_cbranch, two
9893         splits): Change comparison_operator to arm_comparison_operator.
9894         (*arm_buneq, *arm_bltgt, *arm_buneq_reversed, *arm_bltgt_reversed):
9895         Eliminate.
9896
9897 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
9898
9899         * dojump.c (do_compare_rtx_and_jump): Try swapping the
9900         condition for floating point modes.
9901         * expmed.c (emit_store_flag_1): Move here a bigger part
9902         of emit_store_flag.
9903         (emit_store_flag): Try swapping the condition for floating point
9904         modes.
9905         * optabs.c (emit_cmp_and_jump_insns): Cope with constant op0 better.
9906
9907 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
9908
9909         * expr.c (expand_expr_real_1): Just use do_store_flag.
9910         (do_store_flag): Drop support for TRUTH_NOT_EXPR.  Use
9911         emit_store_flag_force.
9912         * expmed.c (emit_store_flag_force): Copy here trick
9913         previously in expand_expr_real_1.  Try reversing the comparison.
9914         (emit_store_flag_1): Work if target is NULL.
9915         (emit_store_flag): Work if target is NULL, using the result mode
9916         from the comparison.  Use split_comparison, restructure final part
9917         to simplify conditionals.
9918
9919 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
9920
9921         * builtins.c (expand_errno_check): Use do_compare_rtx_and_jump.
9922         * dojump.c (do_jump): Change handling of floating-point
9923         ops to use just do_compare_and_jump.
9924         (split_comparison): New.
9925         (do_compare_rtx_and_jump): Add here logic coming previously
9926         in do_jump, using split_comparison.
9927
9928 2009-06-27  H.J. Lu  <hongjiu.lu@intel.com>
9929
9930         PR target/40489
9931         * config/ia64/ia64.c (ia64_reorg): Check NULL insn.
9932
9933 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
9934
9935         * tree-ssa-alias.c: Fix unintentional commit.
9936
9937 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
9938
9939         * passes.c (execute_one_pass): Fix unintentional commit.
9940
9941 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
9942
9943         * df-problems.c (df_set_seen, df_unset_seen): Delete.
9944         (df_rd_local_compute, df_md_local_compute): Inline them.
9945
9946         (df_md_scratch): New.
9947         (df_md_alloc, df_md_free): Allocate/free it.
9948         (df_md_local_compute): Only include live registers in init.
9949         (df_md_transfer_function): Prune the in-set computed by
9950         the confluence function, and the gen-set too.
9951
9952 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
9953
9954         PR rtl-optimization/26854
9955         * timevar.def: Remove TV_DF_RU, add TV_DF_MD.
9956         * df-problems.c (df_rd_add_problem): Fix comment.
9957         (df_md_set_bb_info, df_md_free_bb_info, df_md_alloc,
9958         df_md_simulate_artificial_defs_at_top,
9959         df_md_simulate_one_insn, df_md_bb_local_compute_process_def,
9960         df_md_bb_local_compute, df_md_local_compute, df_md_reset,
9961         df_md_transfer_function, df_md_init, df_md_confluence_0,
9962         df_md_confluence_n, df_md_free, df_md_top_dump, df_md_bottom_dump,
9963         problem_MD, df_md_add_problem): New.
9964         * df.h (DF_MD, DF_MD_BB_INFO, struct df_md_bb_info, df_md,
9965         df_md_get_bb_info): New.
9966         (DF_LAST_PROBLEM_PLUS1): Adjust.
9967
9968         * Makefile.in (fwprop.o): Include domwalk.h.
9969         * fwprop.c: Include domwalk.h.
9970         (reg_defs, reg_defs_stack): New.
9971         (bitmap_only_bit_between): Remove.
9972         (process_defs): New.
9973         (process_uses): Use reg_defs and local_md instead of
9974         bitmap_only_bit_between and local_rd.
9975         (single_def_use_enter_block): New, from build_single_def_use_links.
9976         (single_def_use_leave_block): New.
9977         (build_single_def_use_links): Remove code moved to
9978         single_def_use_enter_block, invoke domwalk.
9979         (use_killed_between): Adjust comment.
9980
9981 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
9982
9983         * bitmap.h (bitmap_ior_and_into): New.
9984         * bitmap.c (bitmap_ior_and_into): New.
9985
9986 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
9987
9988         * domwalk.h (struct dom_walk_data): Remove all callbacks except
9989         before_dom_children_before_stmts and after_dom_children_after_stmts.
9990         Rename the two remaining callbacks to just before_dom_children and
9991         after_dom_children. Remove other GIMPLE statement walking bits.
9992         * domwalk.c (walk_dominator_tree): Remove now unsupported features.
9993         * graphite.c: Do not include domwalk.h.
9994         * tree-into-ssa.c (interesting_blocks): New global.
9995         (struct mark_def_sites_global_data): Remove it and names_to_rename.
9996         (mark_def_sites, rewrite_stmt, rewrite_add_phi_arguments,
9997         rewrite_update_stmt, rewrite_update_phi_arguments): Simplify
9998         now that they're not domwalk callbacks.
9999         (rewrite_initialize_block): Rename to...
10000         (rewrite_enter_block): ... this, place after called functions.  Test
10001         interesting_blocks, call rewrite_stmt and rewrite_add_phi_arguments.
10002         (rewrite_finalize_block): Rename to...
10003         (rewrite_leave_block): ... this, place after called functions.
10004         (rewrite_update_init_block): Rename to...
10005         (rewrite_update_enter_block): ... this, place after called functions.
10006         Test interesting_blocks, call rewrite_update_stmt and
10007         rewrite_update_phi_arguments.
10008         (rewrite_update_fini_block): Rename to...
10009         (rewrite_leave_block): ... this, place after called functions.
10010         (rewrite_blocks): Remove last argument, simplify initialization of
10011         walk_data.
10012         (mark_def_sites_initialize_block): Rename to...
10013         (mark_def_sites_block): ... this, call mark_def_sites.
10014         (mark_def_sites_blocks): Remove argument, simplify initialization of
10015         walk_data.
10016         (rewrite_into_ssa): Adjust for interesting_blocks_being a global.
10017         (update_ssa): Likewise.
10018         * tree-ssa-dom.c (optimize_stmt): Simplify now that it's not a domwalk
10019         callback.
10020         (tree_ssa_dominator_optimize): Simplify initialization of walk_data.
10021         (dom_opt_initialize_block): Rename to...
10022         (dom_opt_enter_block): ... this, place after called functions.  Walk
10023         statements here, inline propagate_to_outgoing_edges.
10024         (dom_opt_finalize_block): Rename to...
10025         (dom_opt_leave_block): ... this, place after called functions.
10026         * tree-ssa-dse.c (dse_optimize_stmt): Simplify now that it's not a
10027         domwalk callback.
10028         (dse_enter_block, dse_record_phi): New.
10029         (dse_record_phis): Delete.
10030         (dse_finalize_block): Rename to...
10031         (dse_leave_block): ... this.
10032         (tree_ssa_dse): Simplify initialization of walk_data.
10033         * tree-ssa-loop-im.c (determine_invariantness, move_computations):
10034         Adjust initialization of walk_data.
10035         * tree-ssa-loop-unswitch.c: Do not include domwalk.h.
10036         * tree-ssa-loop-phiopt.c (get_non_trapping):
10037         Adjust initialization of walk_data.
10038         * tree-ssa-loop-threadedge.c: Do not include domwalk.h.
10039         * tree-ssa-uncprop.c (uncprop_into_successor_phis): Simplify now that
10040         it's not a domwalk callback.
10041         (uncprop_initialize_block): Rename to...
10042         (dse_enter_block): ... this, call uncprop_into_successor_phis.
10043         (dse_finalize_block): Rename to...
10044         (dse_leave_block): ... this.
10045         (tree_ssa_uncprop): Simplify initialization of walk_data.
10046         * Makefile.in: Adjust dependencies.
10047
10048 2009-06-27  Richard Earnshaw  <rearnsha@arm.com>
10049
10050         * arm.md (casesi): Fix test for Thumb1.
10051         (thumb1_casesi_internal_pic): Likewise.
10052         (thumb1_casesi_dispatch): Likewise.
10053
10054 2009-06-26  Daniel Gutson  <dgutson@codesourcery.com>
10055
10056         * config/arm/arm-cores.def: Added core cortex-m0.
10057         * config/arm/arm-tune.md: Regenerated.
10058         * doc/invoke.texi: Added entry for cpu ARM Cortex-M0.
10059
10060 2009-06-26  DJ Delorie  <dj@redhat.com>
10061
10062         * config/mep/mep.opt (mfar): Remove -mfar as it doesn't do anything.
10063
10064         * config/mep/mep.c (mep_bundle_insns): Account for the fact that
10065         the scheduler doesn't tag jump insns.
10066
10067 2009-06-26  H.J. Lu  <hongjiu.lu@intel.com>
10068
10069         * c-decl.c (merge_decls): Re-indent.
10070
10071 2009-06-26  Janis Johnson  <janis187@us.ibm.com>
10072
10073         PR c/39902
10074         * tree.c (real_zerop, real_onep, real_twop, real_minus_onep):
10075         Special-case decimal float constants.
10076
10077 2009-06-26  Richard Henderson  <rth@redhat.com>
10078
10079         * function.h (struct function): Add cannot_be_copied_reason,
10080         and cannot_be_copied_set.
10081         * tree-inline.c (has_label_address_in_static_1): Rename from
10082         inline_forbidden_p_2; don't set inline_forbidden_reason here.
10083         (cannot_copy_type_1): Rename from inline_forbidden_p_op; likewise
10084         don't set inline_forbidden_reason.
10085         (copy_forbidden): New function, split out of inline_forbidden_p.
10086         (inline_forbidden_p_stmt): Don't check for nonlocal labels here.
10087         (inline_forbidden_p): Use copy_forbidden.
10088         (tree_versionable_function_p): Likewise.
10089         (inlinable_function_p): Merge into tree_inlinable_function_p.
10090         (tree_function_versioning): Remap cfun->nonlocal_goto_save_area.
10091         * ipa-cp.c (ipcp_versionable_function_p): New function.
10092         (ipcp_cloning_candidate_p): Use it.
10093         (ipcp_node_modifiable_p): Likewise.
10094
10095 2009-06-26  Olatunji Ruwase  <tjruwase@google.com>
10096
10097         * builtins.c (expand_builtin_alloca): Handle builtin alloca
10098         that is marked not to be inlined. Remove flag_mudflap use.
10099         * tree-mudflap.c: Rename mf_xform_derefs to mf_xfrom_statements.
10100         (mf_xform_statements): Mark builtin alloca calls as un-inlineable.
10101
10102 2009-06-26  Steve Ellcey  <sje@cup.hp.com>
10103
10104         PR bootstrap/40338
10105         * config/pa/t-pa-hpux10 (TARGET_LIBGCC2_CFLAGS): Add -frandom-seed.
10106         * config/pa/t-pa-hpux11 (TARGET_LIBGCC2_CFLAGS): Ditto.
10107
10108 2009-06-26  Kai Tietz  <kai.tietz@onevision.com>
10109
10110         * config/i386/mingw-tls.c (__mingwthr_key_dtor): Remove for none
10111         shared libgcc.
10112         (__mingwthr_remove_key_dtor): Likewise.
10113
10114 2009-06-26  Richard Guenther  <rguenther@suse.de>
10115
10116         * tree-ssa-structalias.c (do_ds_constraint): Simplify escape handling.
10117
10118 2009-06-26  Steven Bosscher  <steven@gcc.gnu.org>
10119
10120         PR middle-end/40525
10121         * ifcvt.c (dead_or_predicable): If predicating MERGE_BB fails,
10122         try the non-cond_exec path also.
10123
10124 2009-06-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
10125
10126         PR target/40468
10127         * pa.c (branch_to_delay_slot_p, branch_needs_nop_p): New functions.
10128         (output_cbranch): Use new functions.
10129         (output_lbranch, output_bb, output_bvb, output_dbra, output_movb):
10130         Likewise.
10131
10132 2009-06-25  Michael Meissner  <meissner@linux.vnet.ibm.com>
10133             Pat Haugen  <pthaugen@us.ibm.com>
10134             Revital Eres <ERES@il.ibm.com>
10135
10136         * config/rs6000/rs6000.c (print_operand): Correct lossage message
10137         for %c error.  Add %x support to print VSX registers as a unified
10138         register set, instead of separate float and altivec registers.
10139         Switch to use VECTOR_MEM_ALTIVEC_P instead of TARGET_ALTIVEC for
10140         %y case, and add support for VSX pre-modify addresses.
10141         (output_toc): Add assert for CONST containing an integer constant
10142         in the PLUS case.
10143         (rs6000_adjust_cost): Add POWER7 support.
10144         (insn_must_be_first_in_group): Ditto.
10145         (insn_must_be_last_in_group): Ditto.
10146         (rs6000_emit_popcount): Ditto.
10147         (rs6000_vector_mode_supported_p): Ditto.
10148
10149         * config/rs6000/rs6000-protos.h (rs6000_secondary_reload_class):
10150         Change some of the functions called by macros to being called
10151         through a pointer, so debug functions can be inserted if
10152         -mdebug=addr or -mdebug=cost.
10153         (rs6000_preferred_reload_class_ptr): Ditto.
10154         (rs6000_secondary_reload_class_ptr): Ditto.
10155         (rs6000_secondary_memory_needed_ptr): Ditto.
10156         (rs6000_cannot_change_mode_class_ptr): Ditto.
10157         (rs6000_secondary_reload_inner): Ditto.
10158         (rs6000_legitimize_reload_address): Ditto.
10159         (rs6000_legitimize_reload_address_ptr): Ditto.
10160         (rs6000_mode_dependent_address): Ditto.
10161         (rs6000_mode_dependent_address_ptr): Ditto.
10162
10163         * config/rs6000/rs6000.c (reg_offset_addressing_ok_p): New
10164         function to return true if the mode allows reg + integer
10165         addresses.
10166         (virtual_stack_registers_memory_p): New function to return true if
10167         the address refers to a virtual stack register.
10168         (rs6000_legitimate_offset_address_p): Move code to say whether a
10169         mode supports reg+int addressing to reg_offset_addressing_ok_p and
10170         call it.
10171         (rs6000_legitimate_address_p): Add checks for modes that only can
10172         do reg+reg addressing.  Start adding VSX support.
10173         (rs6000_legitimize_reload_address): Ditto.
10174         (rs6000_legitimize_address): Ditto.
10175         (rs6000_debug_legitimate_address_p): New debug functions for
10176         -mdebug=addr and -mdebug=cost.
10177         (rs6000_debug_rtx_costs): Ditto.
10178         (rs6000_debug_address_costs): Ditto.
10179         (rs6000_debug_adjust_cost): Ditto.
10180         (rs6000_debug_legitimize_address): Ditto.
10181         (rs6000_legitimize_reload_address_ptr): Point to call normal
10182         function or debug function.  Make functions called via pointer
10183         static.
10184         (rs6000_mode_dependent_address_ptr): Ditto.
10185         (rs6000_secondary_reload_class_ptr): Ditto.
10186         (rs6000_hard_regno_mode_ok): Add preliminary VSX support.
10187         (rs6000_emit_move): Add -mdebug=addr support.  Change an abort
10188         into a friendlier error.
10189         (rs6000_init_builtins): Add initial VSX support.
10190         (rs6000_adjust_cost): Fix some spacing issues.
10191
10192         * config/rs6000/rs6000.h (enum reg_class): Add VSX_REGS.
10193         (REG_CLASS_NAMES): Ditto.
10194         (REG_CLASS_CONTENTS): Ditto.
10195         (PREFERRED_RELOAD_CLASS): Move from a macro to calling through a
10196         pointer, to add -mdebug=addr support.
10197         (CANNOT_CHANGE_MODE_CLASS): Ditto.
10198         (SECONDARY_RELOAD_CLASS): Call through a pointer to add
10199         -mdebug=addr support.
10200         (LEGITIMIZE_RELOAD_ADDRESS): Ditto.
10201         (GO_IF_MODE_DEPENDENT_ADDRESS): Ditto.
10202         (enum rs6000_builtins): Add RS6000_BUILTIN_BSWAP_HI.
10203
10204         * config/rs6000/rs6000.md (bswaphi*): Add support for swapping
10205         16-bit values.
10206         (bswapsi*): Set attribute types for load/store.  Add combiner
10207         patterns to eliminate zero extend on 64-bit.
10208         (bswapdi*): Add support for swapping 64-bit values.  Use ldbrx and
10209         stdbrx if the hardware supports those instructions.
10210
10211 2009-06-25  Ian Lance Taylor  <iant@google.com>
10212
10213         * doc/invoke.texi (Option Summary): Mention -static-libstdc++.
10214         (Link Options): Document -static-libstdc++.
10215
10216 2009-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10217
10218         PR target/38731
10219         * config/rs6000/rs6000.c (LOCAL_ALIGNMENT): Redefine to just use
10220         DATA_ALIGNMENT instead.
10221
10222 2009-06-25  Richard Guenther  <rguenther@suse.de>
10223
10224         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Disambiguate
10225         indirect references against the callused/escaped solutions.
10226         (call_may_clobber_ref_p_1): Likewise.
10227
10228 2009-06-25  Martin Jambor  <mjambor@suse.cz>
10229
10230         PR tree-optimization/40493
10231         * tree-sra.c (sra_modify_expr): Correct BIT_FIELD_REF argument numbers.
10232         (enum unscalarized_data_handling): New type.
10233         (handle_unscalarized_data_in_subtree): Return what has been done.
10234         (load_assign_lhs_subreplacements): Handle left flushes differently.
10235         (sra_modify_assign): Use unscalarized_data_handling, simplified
10236         condition determining whether to remove the statement.
10237
10238 2009-06-25  Basile Starynkevitch  <basile@starynkevitch.net>
10239
10240         * doc/plugins.texi (Building GCC plugins): Correct typo in Makefile
10241         excerpt - @ should be doubled for texinfo.
10242
10243 2009-06-24  Ian Lance Taylor  <iant@google.com>
10244
10245         * config/arc/arc.c: Include "df.h".
10246         (arc_attribute_table): Make static.  Move higher in file.
10247         (arc_address_cost): Call SMALL_INT on INTVAL, not rtx.
10248         (output_shift): Initialize n later to avoid warning.
10249         * config/arm/arm.c (arm_attribute_table): Make static.  Move
10250         higher in file.
10251         * config/avr/avr.c (avr_attribute_table): Make static.  Move
10252         higher in file.
10253         (reg_class_tab): Change array type from int to enum reg_class.
10254         (avr_jump_mode): Change GET_MODE to GET_CODE when checking for
10255         LABEL_REF.
10256         (out_tsthi, ashlhi3_out): Don't use AS2 with "or" or "and".
10257         (lshrhi3_out): Likewise.
10258         (class_likely_spilled_p): Change return type to bool.
10259         (avr_rtx_costs): Use local code variable with enum type.
10260         * config/avr/avr.md (movmemhi): Use add_reg_note.
10261         (andhi3, andsi3): Don't use AS2 with "and".
10262         (iorhi3, iorsi3): Don't use AS2 with "or".
10263         * config/avr/avr-protos.h (class_likely_spilled_p): Update declaration.
10264         * config/crx/crx.c: Include "df.h".
10265         (crx_attribute_table): Make static.
10266         * config/m32r/m32r.c: Include "df.h".
10267         (m32r_attribute_table): Make static.  Move higher in file.
10268         (pop): Use add_reg_note.
10269         (block_move_call): Change 0 to LCT_NORMAL in function call.
10270         * config/m32r/m32r.md (movsi_insn): Remove unused local value.
10271         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Likewise.
10272         * config/m32r/m32r-protos.h (m32r_compute_function_type): Always
10273         declare, not just when TREE_CODE is defined.
10274         * config/m68hc11/m68hc11.c: Include "expr.h".
10275         (m68hc11_attribute_table): Make static.  Move higher in file.
10276         (m68hc11_small_indexed_indirect_p): Change 0 to VOIDmode in
10277         function call.
10278         (m68hc11_register_indirect_p): Likewise.
10279         (m68hc11_function_arg_padding): Change return type to enum
10280         direction.
10281         (emit_move_after_reload): Use add_reg_note.
10282         (m68hc11_emit_logical): Change code parameter to enum rtx_code.
10283         (m68hc11_split_logical): Likewise.
10284         (m68hc11_rtx_costs): Add local code_and outer_code variables with
10285         enum type.
10286         * config/m68hc11/predicates.md (reg_or_some_mem_operand): Change 0
10287         to VOIDmode in function call.
10288         * config/m68hc11/m68hc11-protos.h: Don't check TREE_CODE to see if
10289         tree is defined.
10290         (m68hc11_split_logical): Update declaration.
10291         (m68hc11_function_arg_padding): Update declaration.
10292         * config/mcore/mcore.c (regno_reg_class): Change form array of int
10293         to array of enum reg_class.
10294         (mcore_attribute_table): Make static.  Move higher in file.
10295         (mcore_rtx_costs): Add cast to enum type.
10296         * config/mcore/mcore.h (regno_reg_class): Update declaration.
10297         (GO_IF_LEGITIMATE_INDEX): Add cast to avoid warning.
10298         * config/sh/sh.c (sh_attribute_table): Make static.  Move higher
10299         in file.
10300         * config/sh/predicates.md (trapping_target_operand): Rename and to
10301         and_expr.
10302         * config/sparc/sparc.c (sparc_attribute_table): Make static.  Move
10303         higher in file.
10304         * config/spu/spu.c (spu_attribute_table): Make static.  Move
10305         higher in file.
10306         * config/v850/v850.c (v850_attribute_table): Make static.  Move
10307         higher in file.
10308         (v850_rtx_costs): Use local code with enum type.
10309         (expand_epilogue): Add cast.
10310         * config/v850/v850-c.c (ghs_pragma_section): Initialize repeat.
10311
10312 2009-06-23  Takashi YOSHII  <yoshii.takashi@renesas.com>
10313
10314         PR target/40515
10315         * doc/invoke.texi (SH Options): Document -m2a, -m2a-single,
10316         -m2a-single-only and -m2a-nofpu.
10317         * config/sh/sh.opt: Document m2a generates FPU code.
10318
10319 2009-06-24  Anatoly Sokolov  <aesok@post.ru>
10320
10321         * defaults.h (CAN_ELIMINATE): Provide default.
10322         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
10323         * config/alpha/alpha.h (CAN_ELIMINATE): Delete.
10324         * config/m32c/m32c.h (CAN_ELIMINATE): Delete.
10325         * config/spu/spu.h (CAN_ELIMINATE): Delete.
10326         * config/xtensa/xtensa.h (CAN_ELIMINATE): Delete.
10327         * config/moxie/moxie.h (CAN_ELIMINATE): Delete.
10328         * config/cris/cris.h (CAN_ELIMINATE): Delete.
10329         * config/mn10300/mn10300.h (CAN_ELIMINATE): Delete.
10330         * config/pa/pa64-linux.h (CAN_ELIMINATE): Delete.
10331         * config/mmix/mmix.h (CAN_ELIMINATE): Delete.
10332
10333 2009-06-24  DJ Delorie  <dj@redhat.com>
10334
10335         * mep-ext-cop.cpu: Fix copyright notice.
10336         * mep-default: Fix copyright notice.
10337         * mep-core: Fix copyright notice.
10338         * mep: Fix copyright notice.
10339         * mep-ivc2: Fix copyright notice.
10340         * mep-c5: Fix copyright notice.
10341
10342 2009-06-24  Denis Chertykov  <chertykov@gmail.com>
10343
10344         * doc/contrib.texi (Contributors):
10345
10346 2009-06-24  Andreas Krebbel  <krebbel1@de.ibm.com>
10347
10348         PR middle-end/40501
10349         * tree-ssa-math-opts.c (execute_optimize_bswap): Convert the bswap
10350         src and dst operands if necessary.
10351
10352 2009-06-23  DJ Delorie  <dj@redhat.com>
10353
10354         Add MeP port.
10355         * config.gcc: Add mep support.
10356         * recog.c: Resurrect validate_replace_rtx_subexp().
10357         * recog.h: Likewise.
10358         * config/mep/: Add new port:
10359         * config/mep/constraints.md: New file.
10360         * config/mep/default.h: New file.
10361         * config/mep/intrinsics.h: New file.
10362         * config/mep/intrinsics.md: New file.
10363         * config/mep/ivc2-template.h: New file.
10364         * config/mep/mep-c5.cpu: New file.
10365         * config/mep/mep-core.cpu: New file.
10366         * config/mep/mep-default.cpu: New file.
10367         * config/mep/mep-ext-cop.cpu: New file.
10368         * config/mep/mep-intrin.h: New file.
10369         * config/mep/mep-ivc2.cpu: New file.
10370         * config/mep/mep-lib1.asm: New file.
10371         * config/mep/mep-lib2.c: New file.
10372         * config/mep/mep-pragma.c: New file.
10373         * config/mep/mep-protos.h: New file.
10374         * config/mep/mep-tramp.c: New file.
10375         * config/mep/mep.c: New file.
10376         * config/mep/mep.cpu: New file.
10377         * config/mep/mep.h: New file.
10378         * config/mep/mep.md: New file.
10379         * config/mep/mep.opt: New file.
10380         * config/mep/predicates.md: New file.
10381         * config/mep/t-mep: New file.
10382
10383 2009-06-23  Ian Lance Taylor  <iant@google.com>
10384
10385         * configure.ac: Invoke AC_PROG_CXX.  Separate C specific warnings
10386         from loose_warn into c_loose_warn and from strict_warn into
10387         c_strict_warn.  Set and substitute warn_cxxflags.  Check for
10388         --enable-build-with-cxx.  Set and substitute
10389         ENABLE_BUILD_WITH_CXX.  Set and substitute HOST_LIBS.
10390         * Makefile.in (CXXFLAGS): New variable.
10391         (C_LOOSE_WARN, C_STRICT_WARN): New variables.
10392         (GCC_WARN_CFLAGS): Add $(C_LOOSE_WARN).  Add $(C_STRICT_WARN) if
10393         the default is the same as $(STRICT_WARN).
10394         (GCC_WARN_CXXFLAGS, WARN_CXXFLAGS): New variables.
10395         (CXX): New variable.
10396         (COMPILER): New value if ENABLE_BUILD_WITH_CXX.
10397         (COMPILER_FLAGS, LINKER, LINKER_FLAGS): Likewise.
10398         (ALL_COMPILERFLAGS, ALL_LINKERFLAGS): Likewise.
10399         (HOST_LIBS): New variable.
10400         (GCC_CFLAGS): Add $(C_LOOSE_WARN).
10401         (ALL_CXXFLAGS): New variable.
10402         (LIBS, BACKENDLIBS): Add $(HOST_LIBS).
10403         * doc/install.texi (Configuration): Document
10404         --enable-build-with-cxx, --with-stage1-ldflags,
10405         --with-stage1-libs, --with-boot-ldflags, --with-boot-libs.
10406         * configure: Rebuild.
10407
10408 2009-06-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
10409
10410         * config/arm/arm.c (arm_override_options): Fix braces and formatting
10411         from previous commit.
10412
10413 2009-06-23  Ian Lance Taylor  <iant@google.com>
10414
10415         * Makefile.in ($(out_object_file)): Depend upon $(DF_H).
10416
10417 2009-06-23  Ian Lance Taylor  <iant@google.com>
10418
10419         * reload.c (alternative_allows_const_pool_ref): Mark mem parameter
10420         with ATTRIBUTE_UNUSED.
10421
10422 2009-06-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
10423             Pat Haugen  <pthaugen@us.ibm.com>
10424             Revital Eres  <eres@il.ibm.com>
10425
10426         * config.in (HAVE_AS_POPCNTD): Add default definition.
10427         (HAVE_AS_LWSYNC): Ditto.
10428
10429         * configure.ac (gcc_cv_as_powerpc_mfpgpr): Provide real binutils
10430         release number.
10431         (gcc_cv_as_powerpc_cmpb): Ditto.
10432         (gcc_cv_as_powerpc_dfp): Ditto.
10433         (gcc_cv_as_powerpc_vsx): Ditto.
10434         (gcc_cv_as_powerpc_popcntd): Add feature test for assembler
10435         supporting the popcntd/lwsync instructions.
10436         (gcc_cv_as_powerpc_lwsync): Ditto.
10437         * configure: Regenerate.
10438
10439         * config/rs6000/aix53.h (ASM_CPU_SPEC): Add support for
10440         -mcpu=native and -mcpu=power7.
10441         * config/rs6000/aix61.h (ASM_CPU_SPEC): Ditto.
10442
10443         * config/rs6000/linux64.opt (-mprofile-kernel): Move switch to be
10444         a variable instead of a mask to reduce the number of mask bits.
10445         * config/rs6000/sysv4.opt (-mbit-align): Ditto.
10446         (-mbit-word): Ditto.
10447         (-mregnames): Ditto.
10448         * config/rs6000/rs6000.opt (-mupdate): Ditto.
10449         (-mfused-madd): Ditto.
10450
10451         * config/rs6000/rs6000.opt (-mpopcntd): New switch for non-VSX ISA
10452         2.06 instructions.
10453         (-mvsx): New switch for VSX instructions.
10454         (-misel): Move from a variable to a mask to allow it to be set by
10455         -mcpu=.
10456
10457         * config/rs6000/rs6000-protos.h (rs6000_hard_regno_nregs): Change
10458         function declaration to an array declaration.
10459         (rs6000_hard_regno_nregs): New external array declaration.
10460
10461         * config/rs6000/t-rs6000 (MD_INCLUDES): Define, add all of the .md
10462         files included by rs6000.md.
10463
10464         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Use
10465         SET_PROFILE_KERNEL macro to reset the -mprofile-kernel switch.
10466
10467         * config/rs6000/rs6000.c (rs6000_isel): Delete, -misel moved to be
10468         a target mask.
10469         (rs6000_debug_reg): New -mdebug= variables.
10470         (rs6000_debug_addr): Ditto.
10471         (rs6000_debug_cost): Ditto.
10472         (rs6000_pmode): New variable to hold Pmode.
10473         (rs6000_pointer_size): New variable to hold POINTER_SIZE.
10474         (rs6000_class_max_nregs): New array to hold CLASS_MAX_NREGS
10475         calculated at compiler start.
10476         (rs6000_hard_regno_nregs): Change function to an array which holds
10477         HARD_REGNO_NREGS calculated at compiler start.
10478         (rs6000_explicit_options): Delete isel field.
10479         (rs6000_vector_unit): New array to hold which vector unit
10480         supports arithmetic options for a given type.
10481         (rs6000_vector_mem): New array to hold which vector unit supports
10482         memory reference operations for a given type.
10483         (rs6000_vector_align): New array to given the alignment of each
10484         vector type.
10485         (power7_cost): New basic costs for power7.
10486         (SET_PROFILE_KERNEL): New macro for resetting -mprofile-kernel.
10487         (rs6000_hard_regno_nregs_internal): New function, moved from
10488         HARD_REGNO_NREGS, to calculate the number of registers each hard
10489         register takes for each type.
10490         (rs6000_debug_reg_print): New function for -mdebug=reg support.
10491         (rs6000_debug_vector_unit): New array, map rs6000_vector to string.
10492         (+rs6000_init_hard_regno_mode_ok): New function, move calculation
10493         of HARD_REGNO_NREGS, CLASS_MAX_NREGS, REGNO_REG_CLASS, and vector
10494         unit information here so it is calculated once at compiler startup
10495         time.
10496         (rs6000_override_options): Make -misel a target mask.  Add more
10497         power7 target masks.  Setup Pmode and POINTER_SIZE.  Add initial
10498         VSX support.  Add support for -mdebug=reg, -mdebug=addr, and
10499         -mdebug=cost.
10500         (POWERPC_MASKS): Add MASK_POPCNTD, MASK_VSX, and MASK_ISEL.
10501         (rs6000_handle_option): Move -misel from variable to target mask.
10502         (rs6000_builtin_mask_for_load): Add VSX support.
10503         (rs6000_conditional_register_usage): Ditto.
10504         (USE_ALTIVEC_FOR_ARG_P): Ditto.
10505         (function_arg_boundary): Ditto.
10506         (rs6000_expand_builtin): Ditto.
10507         (def_builtin): Make abort message a little friendlier.
10508         (rs6000_emit_int_cmove): Add support for 64-bit isel.
10509
10510         * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Depend on the
10511         assembler support the popcntd instruction instead of a vsx
10512         instruction to enable power7 support.
10513         (ASM_CPU_SPEC): Add support for -mcpu=native and -mcpu=power7.
10514         (EXTRA_SPECS): Add ASM_CPU_NATIVE_SPEC to allow passing the right
10515         option to the assembler if -mcpu=native.
10516         (ASM_CPU_NATIVE_SPEC): Ditto.
10517         (TARGET_POPCNTD): If assembler doesn't support popcntd, turn off
10518         ISA 2.06 features.
10519         (TARGET_LWSYNC_INSTRUCTION): Define whether it is safe to issue
10520         the lwsync instruction.
10521         (enum processor_type): Add PROCESSOR_POWER7.
10522         (rs6000_debug_reg): New -mdebug= options.
10523         (rs6000_debug_addr): Ditto.
10524         (rs6000_debug_cost): Ditto.
10525         (rs6000_isel): Delete.
10526         (enum rs6000_vector): New enum to say what vector unit we have.
10527         (VECTOR_UNIT_*): New macros to say which vector unit has
10528         arithmetic operations for a given type.
10529         (VECTOR_MEM_*): New macros to say which vector unit has memory
10530         operations for a given type.
10531         (TARGET_LDBRX): Whether the machine supports the ldbrx
10532         instruction.
10533         (TARGET_ISEL): Delete, -misel moved to be a mask.
10534         (TARGET_ISEL64): New macro for 64-bit isel support.
10535         (UNITS_PER_VSX_WORD): New macro.
10536         (POINTER_SIZE): Move to be an external variable, rather than
10537         calculating whether we are generating 32 ot 64-bit code.
10538         (Pmode): Ditto.
10539         (STACK_BOUNDARY): Add VSX support.
10540         (LOCAL_ALIGNMENT): Ditto.
10541         (SLOW_UNALIGNED_ACCESS): Ditto.
10542         (VSX_REGNO_P): New macro for VSX support.
10543         (VFLOAT_REGNO_P): Ditto.
10544         (VINT_REGNO_P): Ditto.
10545         (VLOGICAL_REGNO_P): Ditto.
10546         (VSX_VECTOR_MODE): Ditto.
10547         (VSX_SCALAR_MODE): Ditto.
10548         (VSX_MODE): Ditto.
10549         (VSX_MOVE_MODE): Ditto.
10550         (VSX_REG_CLASS_P): Ditto.
10551         (HARD_REGNO_NREGS): Instead of calling a function, use an array
10552         lookup.
10553         (UNITS_PER_SIMD_WORD): Add VSX support.
10554         (MODES_TIEABLE_P): Ditto.
10555         (STARTING_FRAME_OFFSET): Ditto.
10556         (STACK_DYNAMIC_OFFSET): Ditto.
10557         (EPILOGUE_USES): Ditto.
10558         (REGNO_REG_CLASS): Move to array lookup.
10559         (CLASS_MAX_NREGS): Ditto.
10560         (rs6000_vector_reg_class): Add declaration.
10561         (ADDITIONAL_REGISTER_NAMES): Add VSX names for the registers that
10562         overlap with the floating point and Altivec registers.
10563
10564         * config/rs6000/e500.h (CHECK_E500_OPTIONS): Disallow -mvsx.
10565
10566         * config/rs6000/driver-rs6000.c (asm_names): New static array to
10567         give the appropriate asm switches if -mcpu=native.
10568         (host_detect_local_cpu): Add support for "asm".
10569         (host_detect_local_cpu): Follow GNU code guidelines for name.
10570
10571         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Move
10572         -mbit-word to a variable instead of being a target mask.
10573
10574         * config/rs6000/sync.md (lwsync): If the assembler supports it,
10575         emit the lwsync instruction instead of emitting the instruction as
10576         an integer constant.
10577
10578         * config/rs6000/spe.md (spe_fixuns_truncdfsi2): Rename from
10579         fixuns_trundfsi2, move expander into rs6000.md.
10580
10581         * config/rs6000/rs6000.md (cpu): Add power7.
10582         (sel, *ptrsize): New mode attributes for 32/64-bit isel.
10583         (logical predicate patterns): Change the single instruction
10584         primitives that set CR0 to be fast_compare instead of compare.
10585         (norsi*): Ditto.
10586         (popcntwsi2): Add support for ISA 2.06 popcount instructions.
10587         (popcntddi2): Ditto.
10588         (popcount<mode>): Ditto.
10589         (floating multiply/add insns): Name the floating point
10590         multiply/add insns.
10591         (isel_signed_<mode>): Add support for -misel on 64-bit systems.
10592         (isel_unsigned_<mode>): Ditto.
10593         (fixuns_trundfsi2): Move expander here from spe.md.
10594         (smindi3): Define if we have -misel on 64-bit systems.
10595         (smaxdi3): Ditto.
10596         (umindi3): Ditto.
10597         (umaxdi3): Ditto.
10598
10599 2009-06-23  Anatoly Sokolov  <aesok@post.ru>
10600
10601         * config.gcc (avr-*-rtems*, avr-*-*): Set extra_gcc_objs and
10602         extra_objs.
10603         * config/avr/avr.c (avr_current_device): New variable.
10604         (avr_arch_types, avr_mcu_types): Move to avr-deveces.c.
10605         (avr_arch, mcu_type_s): Move to avr.h.
10606         * config/avr/avr.h (base_arch_s). Add reserved2, arch_name and
10607         default_data_section_start fields.
10608         (avr_arch): Moved from avr.c.
10609         (mcu_type_s): Moved from avr.c. Add short_sp, data_section_start and
10610         library_name fields.
10611         (avr_current_device, avr_mcu_types, avr_arch_types,
10612         avr_device_to_arch, avr_device_to_data_start,
10613         avr_device_to_startfiles, avr_device_to_devicelib): Declare.
10614         (EXTRA_SPEC_FUNCTIONS): Define.
10615         (LINK_SPEC): Remove device name to '-m ...' and '-Tdata ...' linker
10616         options mapping. Use device_to_arch and device_to_data_start insted.
10617         (STARTFILE_SPEC): Use device_to_startfile instead of crt_binutils.
10618         (CRT_BINUTILS_SPECS, EXTRA_SPECS): Remove.
10619         * config/avr/t-avr (driver-avr.o, avr-devices.o): New rules.
10620         * config/avr/driver-avr.c: New file.
10621         * config/avr/avr-devices.c: New file.
10622
10623 2009-06-23  Jakub Jelinek  <jakub@redhat.com>
10624
10625         * var-tracking.c (unshare_variable): Force initialized to
10626         be VAR_INIT_STATUS_INITIALIZED unless flag_var_tracking_uninit.
10627         (set_variable_part): Likewise.
10628         (struct variable_union_info): Remove pos_src field.
10629         (vui_vec, vui_allocated): New variables.
10630         (variable_union): Pass VAR_INIT_STATUS_UNKNOWN to unshare_variable
10631         unconditionally.  Avoid XCVECNEW/free for every sorting, for dst_l
10632         == 1 use a simpler sorting algorithm.  Compute pos field right
10633         away, don't fill in pos_src.  For dst_l == 2 avoid qsort.
10634         Avoid quadratic comparison if !flag_var_tracking_uninit.
10635         (variable_canonicalize): Pass VAR_INIT_STATUS_UNKNOWN to
10636         unshare_variable unconditionally.
10637         (dataflow_set_different_2): Removed.
10638         (dataflow_set_different): Don't traverse second hash table.
10639         (compute_bb_dataflow): Pass VAR_INIT_STATUS_UNINITIALIZED
10640         unconditionally to var_reg_set or var_mem_set.
10641         (emit_notes_in_bb): Likewise.
10642         (delete_variable_part): Pass VAR_INIT_STATUS_UNKNOWN to
10643         unshare_variable.
10644         (emit_note_insn_var_location): Don't set initialized to
10645         VAR_INIT_STATUS_INITIALIZED early.
10646         (vt_finalize): Free vui_vec if needed, clear vui_vec and
10647         vui_allocated.
10648         * rtl.c (rtx_equal_p): Don't implement on top of rtx_equal_p_cb.
10649
10650         * tree-object-size.c (addr_object_size): Instead of checking
10651         for non-NULL TREE_CHAIN of the FIELD_DECL check that there
10652         are no FIELD_DECLs following it.
10653
10654 2009-06-23  Andreas Krebbel  <krebbel1@de.ibm.com>
10655
10656         * tree-ssa-math-opts.c (find_bswap): Increase the search depth in
10657         order to match bswaps with signed source operands.
10658
10659 2009-06-23  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
10660
10661         * sdbout.c (sdbout_one_type): Fix braces in switch.
10662
10663 2009-06-23  Richard Guenther  <rguenther@suse.de>
10664
10665         * tree-ssa-structalias.c (struct variable_info): Add is_global_var
10666         member.
10667         (var_anything, anything_tree, var_nothing, nothing_tree, var_readonly,
10668         readonly_tree, var_escaped, escaped_tree, var_nonlocal, nonlocal_tree,
10669         var_callused, callused_tree, var_storedanything, storedanything_tree,
10670         var_integer, integer_tree): Remove global variables.
10671         (new_var_info): Do not pass new id, append the new var to the
10672         global variable vector.
10673         (do_ds_constraint): Use is_global_var member of the variable-info.
10674         (new_scalar_tmp_constraint_exp): Adjust.
10675         (create_function_info_for): Likewise.
10676         (create_variable_info_for): Likewise.
10677         (find_what_var_points_to): Remove dead code.
10678         (init_base_vars): Simplify.
10679         (compute_points_to_sets): Adjust.
10680
10681 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
10682
10683         * combine.c (try_combine): Dump information about the insns we're
10684         combining.
10685
10686 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
10687
10688         * combine.c (combine_simplify_rtx): Remove TRULY_NOOP_TRUNCATION
10689         check when calling force_to_mode on TRUNCATE's operand.
10690
10691 2009-06-22  Ian Lance Taylor  <iant@google.com>
10692
10693         * config/rs6000/rs6000.opt: Move msched-epilog before msched-prolog.
10694
10695 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
10696
10697         * config/arm/arm.md (prologue_use): Set length of fake insn to 0.
10698
10699 2009-06-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10700
10701         * doc/invoke.texi (Link Options): -nodefaultlibs and -nostdlib
10702         override library linkage flags such as -static-libgcc or
10703         -shared-libgcc.
10704
10705 2009-06-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
10706
10707         * config/m68k/m68k-devices.def: Add line for MCF5221x.
10708
10709 2009-06-22  Ian Lance Taylor  <iant@google.com>
10710
10711         * config/linux.opt: Put mglibc ahead of muclibc.
10712
10713         * c-decl.c (diagnose_mismatched_decls): Add -Wc++-compat warning
10714         for duplicate decls.
10715
10716 2009-06-22  Matthias Klose  <doko@ubuntu.com>
10717
10718         * Makefile.in (install-plugin): Remove extra `/' after $(DESTDIR).
10719
10720 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
10721
10722         PR objc/28050
10723         * c-parser.c (c_parser_objc_message_args): Return error_mark_node
10724         instead of NULL if a parser error occurs.
10725
10726 2009-06-22  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
10727
10728         * dwarf2out.c (dwarf2_debug_hooks): Initialize
10729         non-DWARF2_DEBUGGING_INFO version.
10730
10731 2009-06-22  Kai Tietz  <kai.tietz@onevision.com>
10732
10733         * config.gcc (i[34567]86-*-mingw*, x86_64-*-mingw*): Add
10734         i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file.
10735
10736         * config/i386/mingw32.h (LIBGCC2_HAS_TF_MODE): Define.
10737         (LIBGCC2_TF_CEXT): Define.
10738         (TF_SIZE): Define.
10739
10740 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
10741
10742         PR target/40463
10743         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Fix definition.
10744
10745 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
10746
10747         * config/arm/arm.c (arm_override_options): Disable
10748         -mcaller-super-interworking and -mcallee-super-interworking.
10749         * doc/invoke.texi (ARM Options): Document this.
10750
10751 2009-06-22  Nathan Sidwell  <nathan@codesourcery.com>
10752
10753         * config/arm/arm.c (arm_print_operand): Deal with HIGH.
10754         * config/arm/constraints.md (j): New constraint for movw operands.
10755         (N): Remove thumb2 meaning.
10756         * config/arm/arm.md (*arm_movw): Delete.
10757         (*arm_movsi_insn): Use j constraint for movw instead of N constraint.
10758         * config/arm/vfp.md (*arm_movsi_vfp, *thumb2_movsi_vfp): Likewise.
10759         * config/arm/thumb2.md (*thumb2_movsi_insn): Likewise.
10760
10761 2009-06-22  Martin Jambor  <mjambor@suse.cz>
10762
10763         PR tree-optimization/40492
10764         * tree-sra.c (sra_modify_assign): Pass zero offsets to
10765         build_ref_for_offset.
10766
10767 2009-06-22  Shujing Zhao  <pearly.zhao@oracle.com>
10768
10769         * alias.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P, CALL_P, NOTE_P and
10770         JUMP_TABLE_DATA_P predicates where applicable.
10771         * auto-inc-dec.c: Ditto.
10772         * builtins.c: Ditto.
10773         * caller-save.c: Ditto.
10774         * calls.c: Ditto.
10775         * cfgcleanup.c: Ditto.
10776         * cfglayout.c: Ditto.
10777         * cfgrtl.c: Ditto.
10778         * combine.c: Ditto.
10779         * combine-stack-adj.c: Ditto.
10780         * cse.c: Ditto.
10781         * cselib.c: Ditto.
10782         * dbxout.c: Ditto.
10783         * df-scan.c: Ditto.
10784         * dse.c: Ditto.
10785         * dwarf2asm.c: Ditto.
10786         * dwarf2out.c: Ditto.
10787         * emit-rtl.c: Ditto.
10788         * except.c: Ditto.
10789         * explow.c: Ditto.
10790         * expmed.c: Ditto.
10791         * expr.c: Ditto.
10792         * final.c: Ditto.
10793         * function.c: Ditto.
10794         * fwprop.c: Ditto.
10795         * gcse.c: Ditto.
10796         * genpreds.c: Ditto.
10797         * genrecog.c: Ditto.
10798         * ifcvt.c: Ditto.
10799         * ira-costs.c: Ditto.
10800         * ira-lives.c: Ditto.
10801         * jump.c: Ditto.
10802         * loop-iv.c: Ditto.
10803         * lower-subreg.c: Ditto.
10804         * modulo-sched.c: Ditto.
10805         * optabs.c: Ditto.
10806         * postreload.c: Ditto.
10807         * print-rtl.c: Ditto.
10808         * recog.c: Ditto.
10809         * reginfo.c: Ditto.
10810         * regmove.c: Ditto.
10811         * reload1.c: Ditto.
10812         * reload.c: Ditto.
10813         * reorg.c: Ditto.
10814         * rtlanal.c: Ditto.
10815         * rtl.c: Ditto.
10816         * sched-vis.c: Ditto.
10817         * sdbout.c: Ditto.
10818         * sel-sched-ir.c: Ditto.
10819         * simplify-rtx.c: Ditto.
10820         * targhooks.c: Ditto.
10821         * var-tracking.c: Ditto.
10822         * vmsdbgout.c: Ditto.
10823
10824 2009-06-22  Matthias Klose  <doko@ubuntu.com>
10825
10826         * Makefile.in (install-plugin): Always use DESTDIR.
10827
10828 2009-06-22  Olivier Hainque  <hainque@adacore.com>
10829
10830         * config/pa/pa.c (output_call): Don't optimize post call jumps
10831         into return address adjustments if the call may throw.
10832
10833 2009-06-21  Richard Earnshaw  <rearnsha@arm.com>
10834
10835         * arm.c (thumb1_output_casesi): New function.
10836         * arm.h (CASE_VECTOR_PC_RELATIVE): Thumb-1 code is also relative if
10837         optimizing for size or PIC.
10838         (CASE_VECTOR_SHORTEN_MODE): Handle thumb-1.
10839         * arm.md (UNSPEC_THUMB1_CASESI): New constant.
10840         (casesi): Handle Thumb-1 when optimizing for size or PIC.
10841         (thumb1_casesi_internal_pic): New expand rule.
10842         (thumb1_casesi_dispatch): New pattern.
10843         * aout.h (ASM_OUTPUT_ADDR_DIFF_ELT): Use shortened vectors for
10844         thumb-1 mode.
10845         * coff.h (JUMP_TABLES_IN_TEXT_SECTION): Thumb-1 jump tables are now
10846         in the text seciton when PIC or optimizing for size.
10847         * elf.h (JUMP_TABLES_IN_TEXT_SECTION): Likewise.
10848         * lib1funcs.asm ([__ARM_EABI__]): Add an attribute describing stack
10849         preservation properties of code.
10850         (__gnu_thumb1_case_sqi, __gnu_thumb1_case_uqi): New functions.
10851         (__gnu_thumb1_case_shi, __gnu_thumb1_case_uhi): New functions.
10852         (__gnu_thumb1_case_si): New function.
10853         * t-arm (LIB1ASMSRC): Define here.
10854         (LIB1ASMFUNCS): Add some common functions.
10855         * t-arm-elf (LIB1ASMSRC): Delete.
10856         (LIB1ASMFUNCS): Append to existing set.
10857         * t-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
10858         * t-strongarm-elf (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
10859         * t-symbian (LIB1ASMFUNCS): Likewise.
10860         * t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
10861         * t-wince-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
10862
10863 2009-06-21  Richard Guenther  <rguenther@suse.de>
10864
10865         PR tree-optimization/38729
10866         * tree-ssa-loop-niter.c (find_loop_niter_by_eval): Restrict
10867         to loops with a single exit if -fno-expensive-optimizations.
10868
10869 2009-06-21  Jakub Jelinek  <jakub@redhat.com>
10870
10871         * var-tracking.c (struct shared_hash_def, shared_hash): New types.
10872         (dataflow_set): Change vars type from htab_t to shared_hash.
10873         (shared_hash_pool, empty_shared_hash): New variables.
10874         (vars_clear): Removed.
10875         (shared_hash_shared, shared_hash_htab, shared_hash_copy,
10876         shared_hash_find_slot_unshare, shared_hash_find_slot,
10877         shared_hash_find_slot_noinsert, shared_hash_find): New
10878         static inlines.
10879         (shared_hash_unshare, shared_hash_destroy): New functions.
10880         (unshare_variable): Unshare set->vars if shared, use
10881         shared_hash_htab.
10882         (vars_copy): Use htab_traverse_noresize instead of htab_traverse.
10883         (get_init_value, find_src_set_src, dump_dataflow_set,
10884         clobber_variable_part, emit_notes_for_differences): Use
10885         shared_hash_htab.
10886         (dataflow_set_init): Remove second argument, set vars to
10887         empty_shared_hash instead of creating a new htab.
10888         (dataflow_set_clear): Call shared_hash_destroy and set vars
10889         to empty_shared_hash instead of calling vars_clear.
10890         (dataflow_set_copy): Don't call vars_copy, instead just share
10891         the src htab with dst.
10892         (variable_union): Use shared_hash_*, use initially NO_INSERT
10893         lookup if set->vars is shared.  Don't keep slot cleared before
10894         calling unshare_variable.  Unshare set->vars if needed.
10895         Even ->refcount == 1 vars must be unshared if set->vars is shared
10896         and var needs to be modified.
10897         (variable_canonicalize): New function.
10898         (dataflow_set_union): If dst->vars is empty, just share src->vars
10899         with dst->vars and traverse with variable_canonicalize to canonicalize
10900         and unshare what is needed.
10901         (dataflow_set_different): If old_set and new_set use the same shared
10902         htab, they aren't different.  If number of htab elements is different,
10903         htabs are different.  Use shared_hash_*.
10904         (dataflow_set_destroy): Call shared_hash_destroy instead of
10905         htab_delete.
10906         (compute_bb_dataflow, emit_notes_in_bb, vt_emit_notes): Don't pass
10907         second argument to dataflow_set_init.
10908         (vt_initialize): Likewise.  Initialize shared_hash_pool and
10909         empty_shared_hash, move bb in/out initialization afterwards.
10910         Use variable_htab_free instead of NULL as changed_variables del hook.
10911         (variable_was_changed): Change type of second argument to pointer to
10912         dataflow_set.  When inserting var into changed_variables, bump
10913         refcount.  Unshare set->vars if set is shared htab and slot needs to
10914         be cleared.
10915         (set_variable_part): Use shared_hash_*, use initially NO_INSERT
10916         lookup if set->vars is shared.  Unshare set->vars if needed.
10917         Even ->refcount == 1 vars must be unshared if set->vars is shared
10918         and var needs to be modified.  Adjust variable_was_changed caller.
10919         (delete_variable_part): Use shared_hash_*.  Even ->refcount == 1
10920         vars must be unshared if set->vars is shared and var needs to be
10921         modified.  Adjust variable_was_changed caller.
10922         (emit_note_insn_var_location): Don't pool_free var.
10923         (emit_notes_for_differences_1): Initialize empty_var->refcount to 0
10924         instead of 1.
10925         (vt_finalize): Call htab_delete on empty_shared_hash->htab and
10926         free_alloc_pool on shared_hash_pool.
10927
10928 2009-06-20  Anthony Green  <green@moxielogic.com>
10929
10930         * config/moxie/sfp-machine.h (__gcc_CMPtype, CMPtype): Define.
10931         * config/moxie/moxie.h (LOAD_EXTEND_OP): Define.
10932
10933 2009-06-20  Richard Guenther  <rguenther@suse.de>
10934
10935         * tree-ssa-structalias.c (find_func_aliases): For memset use
10936         a constraint from NULL if we memset to zero.
10937         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Add builtins
10938         we explicitly handle that do not read from memory.
10939         (call_may_clobber_ref_p_1): Properly handle builtins that may
10940         set errno.
10941
10942 2009-06-20  Richard Guenther  <rguenther@suse.de>
10943
10944         PR tree-optimization/40495
10945         * tree-ssa-structalias.c (get_constraint_exp_for_temp): Remove.
10946         (new_scalar_tmp_constraint_exp): New function.
10947         (process_constraint): Do not create temporary decls.
10948         (process_all_all_constraints): Likewise.
10949         (handle_const_call): Likewise.
10950         (create_function_info_for): Do not set decl.
10951
10952 2009-06-19  Ian Lance Taylor  <iant@google.com>
10953
10954         * config/rs6000/rs6000.c (rs6000_explicit_options): Make static.
10955         (rs6000_attribute_table): Make static; move before use.
10956
10957 2009-06-19  Eric Botcazou  <ebotcazou@adacore.com>
10958
10959         * tree.c (substitute_in_expr) <COMPONENT_REF>: Tweak and reformat.
10960         <tcc_vl_exp>: Call process_call_operands on the new CALL_EXPR.
10961         Propagate the TREE_READONLY flag without overwriting it.
10962         (substitute_placeholder_in_expr) <tcc_vl_exp>: Likewise.
10963         Propagate the TREE_READONLY flag onto the result.
10964         (process_call_operands): Move around.  Use correct constant value.
10965
10966 2009-06-19  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
10967
10968         PR target/40482
10969         * config/arm/arm.c (thumb_shiftable_const): Truncate val to 32 bits.
10970         * config/arm/arm.md: Likewise.
10971
10972 2009-06-19  Ian Lance Taylor  <iant@google.com>
10973
10974         * tree-cfg.c (gimple_redirect_edge_and_branch): Change ERROR_MARK
10975         to GIMPLE_ERROR_MARK.
10976
10977         * c-typeck.c (build_conditional_expr): Add op1_original_type and
10978         op2_original_type parameters.  Warn about using different enum types.
10979         * c-parser.c (c_parser_conditional_expression): Pass original
10980         types to build_conditional_expr.
10981         * c-tree.h (build_conditional_expr): Update declaration.
10982
10983 2009-06-19  Ian Lance Taylor  <iant@google.com>
10984
10985         * config/i386/i386.c (ix86_function_specific_save): Test that
10986         fields match values, rather than testing the values are in a
10987         certain range.
10988
10989 2009-06-19  Richard Guenther  <rguenther@suse.de>
10990
10991         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Handle
10992         ADDR_EXPR pointers.
10993         (ptr_derefs_may_alias_p): Likewise.
10994         (ptr_deref_may_alias_ref_p_1): New function.
10995         (ptr_deref_may_alias_ref_p): Likewise.
10996         (ref_maybe_used_by_call_p_1): Handle builtins that are not
10997         covered by looking at the ESCAPED solution.
10998         (call_may_clobber_ref_p_1): Likewise.
10999         * tree-ssa-structalias.c (get_constraint_for_ptr_offset):
11000         Handle NULL_TREE offset.  Do not produce redundant constraints.
11001         (process_all_all_constraints): New helper function.
11002         (do_structure_copy): Use it.
11003         (handle_lhs_call): Likewise.
11004         (find_func_aliases): Handle some builtins with pointer arguments
11005         and/or return values explicitly.
11006
11007 2009-06-19  Ian Lance Taylor  <iant@google.com>
11008
11009         * varasm.c (const_rtx_hash_1): Remove const qualifier from shift.
11010
11011 2009-06-19  Ian Lance Taylor  <iant@google.com>
11012
11013         * rtl.h (SUBREG_PROMOTED_UNSIGNED_P): Add cast to int.
11014
11015 2009-06-19  Ian Lance Taylor  <iant@google.com>
11016
11017         * ggc-page.c (ggc_pch_write_object): Initialize emptyBytes.
11018         * sdbout.c (sdb_debug_hooks): Initialize non-SDB_DEBUGGING_INFO
11019         version.
11020
11021         * c-decl.c (finish_decl): If -Wc++-compat, warn about
11022         uninitialized const.
11023
11024 2009-06-19  Ian Lance Taylor  <iant@google.com>
11025
11026         * dse.c (struct store_info): Rename bitmap field to bmap.  Change
11027         all uses.
11028
11029         * c-decl.c (in_struct, struct_types): Remove.
11030         (struct c_binding): Add in_struct field.
11031         (c_binding_ptr): Define type, along with VEC.
11032         (struct c_struct_parse_info): Define.
11033         (struct_parse_info): New static variable.
11034         (bind): Initialize in_struct field.
11035         (start_struct): Remove enclosing_in_struct and
11036         enclosing_struct_types parameters.  Add
11037         enclosing_struct_parse_info parameter.  Change all callers.  Set
11038         struct_parse_info rather than in_struct and struct_types.
11039         (grokfield): If -Wc++-compat and there is a symbol binding for the
11040         field name, set the in_struct flag and push it on the
11041         struct_parse_info->fields vector.
11042         (warn_cxx_compat_finish_struct): New static function.
11043         (finish_struct): Remove enclosing_in_struct and
11044         enclosing_struct_types parameters.  Add
11045         enclosing_struct_parse_info parameter.  Change all callers.  Don't
11046         set C_TYPE_DEFINED_IN_STRUCT here.  Call
11047         warn_cxx_compat_finish_struct.  Free struct_parse_info and set to
11048         parameter.  Only push on struct_types if warn_cxx_compat.
11049         (finish_enum): Only push on struct_types if warn_cxx_compat.
11050         (declspecs_add_type): Add loc parameter.  Change all callers.
11051         Change all error calls to error_at.  Pass loc, not input_location,
11052         to pedwarn calls.  Warn if -Wc++-compat and a typedef name is
11053         defined in a struct.  If -Wc++-compat and parsing a struct, record
11054         that a typedef name was used.
11055         * c-parser.c (c_parser_declspecs): Get location to pass to
11056         declspecs_add_type.
11057         (c_parser_struct_or_union_specifier): Update calls to start_struct
11058         and finish_struct.
11059         * c-tree.h (struct c_struct_parse_info): Declare.
11060         (finish_struct, start_struct): Update declarations.
11061         (declspecs_add_type): Update declaration.
11062
11063 2009-06-19  Ian Lance Taylor  <iant@google.com>
11064
11065         * c-decl.c (grokdeclarator): If -Wc++-compat, warn about a global
11066         variable with an anonymous type.
11067
11068 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
11069
11070         * see.c: Remove for real.
11071
11072 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
11073
11074         * optabs.h (enum optab_index): Add new OTI_significand.
11075         (significand_optab): Define corresponding macro.
11076         * optabs.c (init_optabs): Initialize significand_optab.
11077         * genopinit.c (optabs): Implement significand_optab using
11078         significand?f2 patterns.
11079         * builtins.c (expand_builtin_mathfn): Handle
11080         BUILT_IN_SIGNIFICAND{,F,L}.
11081         (expand_builtin): Expand BUILT_IN_SIGNIFICAND{,F,L} using
11082         expand_builtin_mathfn if flag_unsafe_math_optimizations is set.
11083
11084         * config/i386/i386.md (significandxf2, significand<mode>2): New
11085         expanders to implement significandf, significand and significandl
11086         built-ins as inline x87 intrinsics.
11087
11088 2009-06-18  Anatoly Sokolov  <aesok@post.ru>
11089
11090         * config/avr/avr.c (avr_override_options): Remove setting value of
11091         PARAM_INLINE_CALL_COST.
11092
11093 2009-06-18  Richard Henderson  <rth@redhat.com>
11094
11095         PR 40488
11096         * tree-pass.h (TDF_ASMNAME): New.
11097         * tree-dump.c (dump_options): Add asmname.
11098         * doc/invoke.texi: Document it.
11099
11100         * tree-pretty-print.c (maybe_dump_asm_name): Merge into...
11101         (dump_decl_name): ...here.
11102         (dump_function_name): New flags arg; mind TDF_ASMNAME.
11103         (dump_generic_node): Update dump_function_name calls.
11104         (print_call_name): New flags arg; update all dump calls.
11105         * diagnostic.h (print_call_name): Update.
11106         * gimple-pretty-print.c (dump_gimple_call): Update.
11107
11108 2009-06-18  H.J. Lu  <hongjiu.lu@intel.com>
11109
11110         PR target/40470
11111         * config/i386/i386.h (CLASS_LIKELY_SPILLED_P): Add SSE_FIRST_REG.
11112
11113 2009-06-18  Diego Novillo  <dnovillo@google.com>
11114
11115         * doc/plugins.texi: Document plugin_is_GPL_compatible.
11116         * plugin.c (str_license): Declare.
11117         (try_init_one_plugin): Assert that the symbol
11118         'plugin_is_GPL_compatible' exists.
11119
11120 2009-06-18  Sergei Dyshel  <sergeid@il.ibm.com>
11121
11122         * see.c: Remove.
11123         * Makefile.in (OBJS-common): Remove see.o.
11124         (see.o): Remove.
11125         * common.opt (fsee): Mark as preserved for backward compatibility.
11126         * opts.c (common_handle_option): Add OPT_fsee to the backward
11127         compatibility section.
11128         * passes.c (init_optimization_passes, pass_see): Remove pass.
11129         * timevar.def (TV_SEE): Remove.
11130         * tree-pass.h (pass_see): Remove declaration.
11131         * doc/invoke.texi (-fsee): Remove documentation.
11132
11133 2009-06-18  Martin Jambor  <mjambor@suse.cz>
11134
11135         * tree-sra.c: Include statistics.h
11136         (sra_stats): New variable.
11137         (sra_initialize): Clear sra_stats.
11138         (create_access_replacement): Increment sra_stats.replacements.
11139         (get_access_replacement): Do not return twice.
11140         (analyze_all_variable_accesses): Increment statistics counter by the
11141         number of scalarized aggregates.
11142         (generate_subtree_copies): Increment sra_stats.subtree_copies.
11143         (sra_modify_expr): Increment sra_stats.exprs.
11144         (load_assign_lhs_subreplacements): Increment sra_stats.subreplacements.
11145         (sra_modify_assign): Increment sra_stats.exprs,
11146         sra_stats.separate_lhs_rhs_handling and sra_stats.deleted.
11147         (perform_intra_sra): Update statistics counters.
11148         * Makefile.in (tree-sra.o): Add statistics.h to dependencies.
11149
11150 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
11151
11152         * config/arm/arm.c (TARGET_SCALAR_MODE_SUPPORTED_P): Redefine.
11153         (arm_scalar_mode_supported_p): New function.
11154
11155 2009-06-18  Paul Brook  <paul@codesourcery.com>
11156             Sandra Loosemore  <sandra@codesourcery.com>
11157
11158         * config/arm/sfp-machine.h (_FP_NANFRAC_H, _FP_NANSIGN_H): Define.
11159         (__extendhfsf2, __truncsfhf2): Define.
11160         * config/arm/fp16.c: New file.
11161         * config/arm/t-bpabi (LIB2FUNCS_STATIC_EXTRA): Add fp16.c.
11162         * config/arm/t-symbian (LIB2FUNCS_STATIC_EXTRA):  Add fp16.c.
11163
11164 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
11165
11166         * doc/extend.texi (Half-Precision): New section.
11167         * doc/invoke.texi (Option Summary): List -mfp16-format.
11168         (ARM Options): List neon-fp16 as -mfpu value.  Document -mfp16-format.
11169         * config/arm/arm.opt (mfp16-format=): New.
11170         * config/arm/arm.c: Include intl.h.
11171         (TARGET_INVALID_PARAMETER_TYPE): Redefine.
11172         (TARGET_INVALID_RETURN_TYPE): Redefine.
11173         (TARGET_PROMOTED_TYPE): Redefine.
11174         (TARGET_CONVERT_TO_TYPE): Redefine.
11175         (arm_fp16_format): Define.
11176         (all_fpus): Add entry for neon-fp16.
11177         (fp_model_for_fpu): Likewise.
11178         (struct fp16_format): Declare.
11179         (all_fp16_formats): Define.
11180         (arm_init_libfuncs): Add entries for HFmode conversions and arithmetic
11181         functions.
11182         (arm_override_options): Set arm_fp16_format. Call sorry for fp16
11183         and no ldrh.
11184         (arm_legitimate_index_p): Treat HFmode like HImode.
11185         (thumb1_legitimate_address_p): Make it recognize HFmode constants.
11186         (coproc_secondary_reload_class): Special-case HFmode.
11187         (arm_print_operand): Add 'z' specifier for vld1.16/vst1.16.
11188         (arm_hard_regno_mode_ok): Allow HFmode values in VFP registers.
11189         (arm_init_fp16_builtins): New.
11190         (arm_init_builtins): Call it.
11191         (arm_invalid_parameter_type): New.
11192         (arm_invalid_return_type): New.
11193         (arm_promoted_type): New.
11194         (arm_convert_to_type).
11195         (arm_file_start): Deal with neon-fp16 as fpu_name.  Emit tag for fp16
11196         format.
11197         (arm_emit_fp16_const): New function.
11198         (arm_mangle_type): Mangle __fp16 as "Dh".
11199         * config/arm/arm.h (TARGET_VFPD32): Make it know about
11200         FPUTYPE_NEON_FP16.
11201         (TARGET_NEON_FP16): New.
11202         (TARGET_NEON): Make it know about FPUTYPE_NEON_FP16.
11203         (enum fputype): Add FPUTYPE_NEON_FP16.
11204         (enum arm_fp16_format_type): Declare.
11205         (arm_fp16_format): Declare.
11206         (LARGEST_EXPONENT_IS_NORMAL): Define.
11207         * config/arm/arm-protos.h (arm_emit_fp16_const): Declare.
11208         * config/arm/arm-modes.def (HFmode): Define.
11209         * config/arm/vfp.md: (*movhf_vfp): New.
11210         (extendhfsf2): New.
11211         (truncsfhf2): New.
11212         * config/arm/arm.md: (fpu): Add neon_fp16.
11213         (floatsihf2, floatdihf2): New.
11214         (fix_trunchfsi2, fix_trunchfdi2): New.
11215         (truncdfhf2): New.
11216         (extendhfdf2): New.
11217         (movhf): New.
11218         (*arm32_movhf): New.
11219         (*thumb1_movhf): New.
11220         (consttable_2): Add check for HFmode constants.
11221         (consttable_4): Handle HFmode constants.
11222
11223 2009-06-18  Uros Bizjak  <ubizjak@gmail.com>
11224
11225         * convert.c (convert_to_integer): Convert (int)logb() into ilogb().
11226
11227 2009-06-17  Olivier Hainque  <hainque@adacore.com>
11228
11229         * collect2.c (main): Use CONST_CAST2 to perform char ** to
11230         const char ** conversion in AIX specific section.
11231
11232 2009-06-17  H.J. Lu  <hongjiu.lu@intel.com>
11233
11234         * config/i386/i386.c (ix86_special_builtin_type): Remove
11235         UINT64_FTYPE_PINT.  Add UINT64_FTYPE_PUNSIGNED.
11236         (bdesc_special_args): Updated.
11237         (ix86_init_mmx_sse_builtins): Likewise.
11238         (ix86_expand_special_args_builtin): Likewise.
11239
11240 2009-06-17  Richard Henderson  <rth@redhat.com>
11241
11242         * tree-pretty-print.c (maybe_dump_asm_name): New.
11243         (dump_decl_name): Use it.
11244         (PRINT_FUNCTION_NAME): Merge into...
11245         (dump_function_name): ... here.  Use maybe_dump_asm_name.
11246
11247 2009-06-17  Cary Coutant  <ccoutant@google.com>
11248
11249         * dbxout.c (dbxout_source_line): Add is_stmt parameter.
11250         Change caller.
11251         * debug.c (struct gcc_debug_hooks): Change placeholder for
11252         source_line hook.
11253         (debug_nothing_int_charstar_int): Replaced by...
11254         (debug_nothing_int_charstar_int_bool): ...this.
11255         * debug.h (struct gcc_debug_hooks): Add is_stmt parameter to
11256         source_line prototype.
11257         (debug_nothing_int_charstar_int): Replaced by...
11258         (debug_nothing_int_charstar_int_bool): ...this.
11259         * defaults.h (SUPPORTS_DISCRIMINATOR): New constant.
11260         * dwarf2out.c (dwarf2out_source_line): Add is_stmt parameter.
11261         Output is_stmt operand when necessary.
11262         * final.c (final_scan_insn): Pass is_stmt to source_line debug hook.
11263         (notice_source_line): Add is_stmt parameter.
11264         * sdbout.c (sdbout_source_line): Add is_stmt parameter.
11265         * vmsdbgout.c (vmsdbgout_source_line): Add is_stmt parameter.
11266         Change callers.
11267         * xcoffout.c (xcoffout_source_line): Add is_stmt parameter.
11268         * xcoffout.h (xcoffout_source_line): Add is_stmt parameter.
11269
11270 2009-06-17  Ian Lance Taylor  <iant@google.com>
11271
11272         * expr.c (struct move_by_pieces_d): Rename from move_by_pieces.
11273         Change all uses.
11274         (struct store_by_pieces_d): Rename from store_by_pieces.  Change
11275         call uses.
11276
11277 2009-06-17  Adam Nemet  <anemet@caviumnetworks.com>
11278
11279         * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS,
11280         STRIP_USELESS_TYPE_CONVERSION): Use tree_strip_nop_conversions,
11281         tree_strip_sign_nop_conversions and
11282         tree_ssa_strip_useless_type_conversions rather than stripping
11283         the operations here.
11284         (tree_strip_nop_conversions, tree_strip_sign_nop_conversions):
11285         Declare them.
11286         * gimple.h (tree_ssa_strip_useless_type_conversions): Declare it.
11287         * tree-ssa.c (tree_ssa_strip_useless_type_conversions): New function.
11288         * tree.c (tree_nop_conversion, tree_sign_nop_conversion,
11289         tree_strip_nop_conversions, tree_strip_sign_nop_conversions): New
11290         functions.
11291
11292 2009-06-17  Michael Eager  <eager@eagercon.com>
11293
11294         * config/rs6000/constraints.md (register_constraint "d"): New.
11295         * config/rs6000/dfp.md (movsd_store, extendsddd2, extendsdtd2,
11296         truncddsd2, *negdd2_fpr, *absdd2_fpr, *nabsdd2_fpr,
11297         *movdd_hardfloat32, *movdd_hardfloat64_mfpgpr, *movdd_hardfloat64,
11298         *negtd2_fp, *abstd2_fpr, *nabstd2_fpr, *movtd_internal, extendddtd2,
11299         trunctddd2, adddd3, addtd3, subdd3, subtd3, muldd3, multd3, divdd3,
11300         divtd3, *cmpdd_internal1, *cmptd_internal1, floatditd2, ftruncdd2,
11301         fixdddi2, ftrunctd2, fixtddi2): replace 'f' constraint with 'd'
11302         * config/rs6000/ppu_intrinsics.h (__mffs, __mtfsf, __mtfsfi, __fabs,
11303         __fnabs, __fmadd, __fmsub, __fnmadd, __fnmsub, __fsel, __frsqrte,
11304         __fsqrt, __fmul, __fmuls, __frsp, __fcfid, __fctid, __fctidz, __fctiw,
11305         __fctiwz): Same.
11306         * config/rs6000/rs6000.md (*extendsfdf2_fpr, *truncdfsf2_fpr,
11307         *fseldfsf4, *negdf2_fpr, *absdf2_fpr, *nabsdf2_fpr, *adddf3_fpr,
11308         *subdf3_fpr, *muldf3_fpr, *divdf3_fpr, recipdf3, fred, sqrtdf2,
11309         *fseldfdf4, *fselsfdf4, *floatsidf2_internal, *floatunssidf2_internal,
11310         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
11311         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2, rounddf2,
11312         stfiwx, floatdidf2, fix_truncdfdi2, floatdisf2_internal1,
11313         *movdf_hardfloat32, *movdf_hardfloat64_mfpgpr, *movdf_hardfloat64,
11314         *movtf_internal, *extenddftf2_internal, trunctfdf2_internal1,
11315         trunctfdf2_internal2, trunctfsf2_fprs, fix_trunc_helper,
11316         *fix_trunctfsi2_internal, negtf2_internal, *movdi_internal32,
11317         *movdi_mfpgpr, *movdi_internal64, *movdf_update1, *movdf_update2,
11318         *cmpdf_internal1, *cmptf_internal1, *cmptf_internal2): Same.
11319         * doc/md.texi: Describe PowerPC 'd' constraint, update 'f' constraint.
11320
11321 2009-06-16  Ian Lance Taylor  <iant@google.com>
11322
11323         * profile.c (total_num_never_executed): Don't define.
11324         (compute_branch_probabilities): Don't count or print
11325         num_never_executed.
11326         (init_branch_prob): Don't set total_num_never_executed.
11327         (end_branch_prob): Don't print total_num_never_executed.
11328
11329 2009-06-17  David Daney  <ddaney@caviumnetworks.com>
11330
11331         * jump.c (cleanup_barriers): Handle case of no insns before a barrier.
11332
11333 2009-06-17  David Edelsohn  <edelsohn@gnu.org>
11334
11335         * config/rs6000/dfp.md (nabsdd2_fpr): Correct mode.
11336         (nabstd2_fpr): Same.
11337
11338 2009-06-17  Steve Ellcey  <sje@cup.hp.com>
11339
11340         * expr.c (expand_assignment): Change complex type check.
11341
11342 2009-06-17  Basile Starynkevitch  <basile@starynkevitch.net>
11343
11344         * doc/plugins.texi (Building GCC plugins): Added new section.
11345
11346 2009-06-17  Ian Lance Taylor  <iant@google.com>
11347
11348         * c-pch.c (get_ident): Don't set size of templ array.
11349         (pch_init): Don't set size of partial_pch array.
11350
11351         * c-typeck.c (digest_init): If -Wc++-compat, warn about using a
11352         string constant to intialize an array whose size is the length of
11353         the string.
11354
11355 2009-06-17  Richard Guenther  <rguenther@suse.de>
11356
11357         PR tree-optimization/40389
11358         * tree-ssa-structalias.c (handle_rhs_call): Restrict NRV case
11359         to addressable types.
11360         * gimple.c (walk_stmt_load_store_addr_ops): Likewise.
11361
11362 2009-06-17  Richard Guenther  <rguenther@suse.de>
11363
11364         PR middle-end/40460
11365         * tree-chrec.h (build_polynomial_chrec): If we cannot determine
11366         if there is no evolution of left in the loop bail out.
11367         * tree-chrec.c (chrec_fold_multiply_poly_poly): CSE one
11368         chrec_fold_multiply.
11369
11370 2009-06-16  J"orn Rennecke  <joern.rennecke@arc.com>
11371             Janis Johnson  <janis187@us.ibm.com>
11372
11373         PR target/39254
11374         * config/rs6000/rs6000.c (rs6000_emit_move): Don't emit a USE
11375         for the symbol ref of a constant that is the source of a move
11376         - nor for any other not-obvious-label-ref constants.
11377
11378 2009-06-16  Olatunji Ruwase  <tjruwase@google.com>
11379
11380         * plugin.c (position_pass): Skip newly inserted pass during list
11381         traversal to avoid repeated insertion.
11382
11383 2009-06-16  Ian Lance Taylor  <iant@google.com>
11384
11385         * vec.h (VEC_stack_alloc): Define different version if
11386         GATHER_STATISTICS is defined, to accept and ignore MEM_STAT.
11387         (DEF_VEC_ALLOC_FUNC_P_STACK): Remove MEM_STAT_DECL.
11388         (DEF_VEC_ALLOC_FUNC_O_STACK): Likewise.
11389         (DEF_VEC_ALLOC_FUNC_I_STACK): Likewise.
11390
11391 2009-06-16  H.J. Lu  <hongjiu.lu@intel.com>
11392
11393         * config.gcc (extra_headers): Add ia32intrin.h for x86.
11394
11395         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_BSRSI,
11396         IX86_BUILTIN_BSRDI.  IX86_BUILTIN_RDPMC, IX86_BUILTIN_RDTSC.
11397         IX86_BUILTIN_RDTSCP.  IX86_BUILTIN_ROLQI, IX86_BUILTIN_ROLHI,
11398         IX86_BUILTIN_RORQI and IX86_BUILTIN_RORHI.
11399         (ix86_special_builtin_type): Add UINT64_FTYPE_VOID,
11400         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
11401         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
11402         (bdesc_special_args): Add __builtin_ia32_rdtsc and
11403         __builtin_ia32_rdtscp.
11404         (bdesc_args): Add __builtin_ia32_bsrsi, __builtin_ia32_bsrdi,
11405         __builtin_ia32_rolqi, __builtin_ia32_rolhi, __builtin_ia32_rorqi
11406         and __builtin_ia32_rorhi.
11407         (ix86_init_mmx_sse_builtins): Handle UINT64_FTYPE_VOID,
11408         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
11409         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
11410         (ix86_expand_args_builtin): Likewise.
11411         (ix86_expand_special_args_builtin): Likewise.
11412
11413         * config/i386/i386.md (UNSPECV_RDTSCP): New.
11414         (UNSPECV_RDTSC): Likewise.
11415         (UNSPECV_RDPMC): Likewise.
11416         (*bsr): Renamed to ...
11417         (bsr): This
11418         (*bsr_rex64): Renamed to ...
11419         (bsr_rex64): This.
11420         (rdpmc): New.
11421         (*rdpmc): Likewise.
11422         (*rdpmc_rex64): Likewise.
11423         (rdtsc): Likewise.
11424         (*rdtsc): Likewise.
11425         (*rdtsc_rex64): Likewise.
11426         (rdtscp): Likewise.
11427         (*rdtscp): Likewise.
11428         (*rdtscp_rex64): Likewise.
11429
11430         * config/i386/ia32intrin.h: New.
11431
11432         * config/i386/x86intrin.h: Include <ia32intrin.h>.
11433
11434 2009-06-16  Ian Lance Taylor  <iant@google.com>
11435
11436         * ira-build.c (copy_info_to_removed_store_destinations):
11437         Initialize parent_a.
11438
11439 2009-06-16  Ian Lance Taylor  <iant@google.com>
11440
11441         * c-decl.c (grokdeclarator): Change size_varies to bool.
11442
11443 2009-06-16  Ian Lance Taylor  <iant@google.com>
11444
11445         * sel-sched.c: Make forward declarations of move_op_hooks and
11446         fur_hooks explicitly extern.
11447
11448 2009-06-16  Ian Lance Taylor  <iant@google.com>
11449
11450         * df-problems.c (df_byte_lr_alloc): Don't set problem_data to itself.
11451         * vec.c (vec_gc_o_reserve_1): Don't set alloc to itself.
11452
11453 2009-06-16  Ian Lance Taylor  <iant@google.com>
11454
11455         * resource.c (mark_referenced_resources): Change
11456         include_delayed_effects parameter to bool.  Change all callers.
11457         (mark_end_of_function_resources): Likewise.
11458         * reorg.c (insn_references_resource_p): Likewise.
11459         (insn_sets_resource_p): Likewise.
11460         * resource.h (mark_referenced_resources): Update declaration.
11461         (mark_end_of_function_resources): Update declaration.
11462
11463 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
11464
11465         * config/rs6000/aix.h (LIBSTDCXX_STATIC): Remove -lstdc++.
11466
11467 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
11468
11469         * doc/install.texi (*-*-aix): Update explanation of XLC bootstrap.
11470         GCC can bootstrap on AIX with GNU Binutils 2.20.
11471
11472 2009-06-16  Ian Lance Taylor  <iant@google.com>
11473
11474         * Makefile.in (tree-vect-stmts.o): Depend upon $(TOPLEV_H).
11475
11476 2009-06-16  Ian Lance Taylor  <iant@google.com>
11477
11478         * toplev.h (floor_log2): If GCC_VERSION >= 3004, declare as static
11479         inline, not extern inline.
11480         (exact_log2): Likewise.
11481         * toplev.c (floor_log2): Only define if GCC_VERSION < 3004. Don't
11482         test CLZ_HWI.
11483         (exact_log2): Likewise, but don't test CTZ_HWI.
11484
11485 2009-06-16  Ian Lance Taylor  <iant@google.com>
11486
11487         * bitmap.c (bitmap_clear): Don't declare as inline.
11488         * gimple.c (gimplify_assign): Likewise.
11489         * tree-ssa-sccvn.c (vn_nary_op_compute_hash): Likewise.
11490         * haifa-sched.c (insn_cost): Don't declare with HAIFA_INLINE.
11491         (sched_scan_info): Remove duplicate definition.
11492
11493 2009-06-16  Ian Lance Taylor  <iant@google.com>
11494
11495         * c-common.c (skip_evaluation): Don't define.
11496         (c_inhibit_evaluation_warnings): Define global variable.
11497         (overflow_warning): Check c_inhibit_evaluation_warnings rather
11498         than skip_evaluation.
11499         (convert_and_check, warn_for_div_by_zero): Likewise.
11500         * c-common.h (skip_evaluation): Don't declare.
11501         (c_inhibit_evaluation_warnings): Declare.
11502         * c-parser.c (c_parser_typeof_specifier): Set
11503         c_inhibit_evaluation_warnings rather than skip_evaluation.
11504         (c_parser_conditional_expression): Likewise.
11505         (c_parser_binary_expression): Likewise.
11506         (c_parser_sizeof_expression): Likewise.
11507         (c_parser_alignof_expression): Likewise.
11508         * c-typeck.c (build_indirect_ref): Check
11509         c_inhibit_evaluation_warnings rather than skip_evaluation.
11510         (build_conditional_expr, build_binary_op): Likewise.
11511
11512 2009-06-16  Richard Guenther  <rguenther@suse.de>
11513
11514         * tree-ssa-alias.c (is_escape_site): Remove.
11515         * tree-ssa-alias.h (enum escape_type): Remove.
11516         (is_escape_site): Likewise.
11517         * tree-ssa-structalias.c (find_func_aliases): Handle escapes
11518         via casts and asms without deferring to is_escape_site.
11519
11520 2009-06-16  Jakub Jelinek  <jakub@redhat.com>
11521
11522         PR middle-end/40446
11523         * expr.c (expand_expr_real_1) <case VIEW_CONVERT_EXPR>: Don't
11524         use gen_lowpart if op0 has complex mode.
11525
11526 2009-06-16  Richard Guenther  <rguenther@suse.de>
11527
11528         * tree-ssa-structalias.c (do_ds_constraint): Stores in global
11529         variables add them to ESCAPED.
11530         (find_func_aliases): Do not make all indirectly stored values escaped.
11531
11532 2009-06-16  Rafael Avila de Espindola  <espindola@google.com>
11533
11534         * config/i386/winnt.c (i386_pe_encode_section_info): Update call to
11535         make_decl_one_only.
11536
11537 2009-06-16  Martin Jambor  <mjambor@suse.cz>
11538
11539         PR tree-optimization/40432
11540         * tree-sra.c (sra_modify_assign): When creating VIEW_CONVERT_EXPR,
11541         check whether we need to force gimple register operand.
11542
11543 2009-06-16  Martin Jambor  <mjambor@suse.cz>
11544
11545         PR tree-optimization/40413
11546         * tree-sra.c (load_assign_lhs_subreplacements): Pass offset to
11547         build_ref_for_offset.
11548         (propagate_subacesses_accross_link): Fix a typo in a comment.
11549
11550 2009-06-16  Ira Rosen  <irar@il.ibm.com>
11551
11552         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
11553         with additional parameter.
11554         * tree-vectorizer.h (enum vect_def_type): Add new value
11555         vect_nested_cycle.
11556         (enum vect_relevant): Add comments.
11557         (vect_is_simple_reduction): Add new argument.
11558         * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Add comments.
11559         Detect nested cycles.
11560         (vect_is_simple_reduction): Update documentation, add an argument to
11561         distinguish inner-loop reduction from nested cycle, detect nested
11562         cycles, fix printings and indentation, don't swap operands in case
11563         of nested cycle.
11564         (get_initial_def_for_reduction): Handle subtraction.
11565         (vect_create_epilog_for_reduction): Add new argument to specify
11566         reduction variable.
11567         (vect_finalize_reduction): Handle subtraction, fix comments.
11568         (vectorizable_reduction): Handle nested cycles. In case of nested
11569         cycle keep track of the reduction variable position. Call
11570         vect_is_simple_reduction with additional parameter. Use original
11571         statement code in reduction epilogue for nested cycle. Call
11572         vect_create_epilog_for_reduction with additional parameter.
11573         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Assert
11574         inner-loop vectorization.
11575         (vect_recog_widen_sum_pattern): Likewise.
11576         * tree-vect-stmts.c (process_use): Distinguish between nested cycles
11577         and reductions.
11578         (vect_mark_stmts_to_be_vectorized): Likewise.
11579         (vect_get_vec_def_for_operand): Handle nested cycles.
11580
11581 2009-06-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11582
11583         * doc/invoke.texi (Debugging Options): Fix option index entries
11584         for -fdump-statistics, -frandom-seed add entries for
11585         -fdump-tree-original, -fdump-tree-optimized, -frandom-seed.
11586         (FRV Options): Fix entries for -mTLS, -mtls.
11587         (HPPA Options): Fix entries for -mgnu-ld, -mhp-ld.
11588         (i386 and x86-64 Options): Fix entry for -mno-red-zone.
11589         (M68hc1x Options): Fix @itemx for -mnominmax.
11590         (MCore Options): Fix entry for -mno-lsim.
11591         (MMIX Options): Fix entry for -mabi=mmixware.
11592         (PDP-11 Options): Fix entry for -mbcopy-builtin.
11593
11594 2009-06-16  Basile Starynkevitch  <basile@starynkevitch.net>
11595
11596         * doc/plugins.texi (Interacting with the GCC Garbage Collector):
11597         Mention the plugin mode of gengtype.
11598         * doc/gty.texi (Source Files Containing Type Information): Likewise.
11599         * gengtype.c: Updated copyright.
11600         (plugin_files, nb_plugin_files) Added new static variables.
11601         (measure_input_list) Care about plugin_files.
11602         (write_rtx_next): Added early return in plugin mode.
11603         (create_file): Updated copyright year in generated file. Added
11604         asserts.
11605         (oprintf): Added early return if NULL outf.
11606         (get_output_file_with_visibility): Care of plugin_files.
11607         (get_output_file_name): May return null.
11608         (write_local): Added early return.
11609         (put_mangled_filename): Ditto.
11610         (finish_root_table): Added check for base_files.
11611         (write_roots): Care about null when plugins.
11612         (main): Added plugin mode.
11613
11614 2009-06-15  Ian Lance Taylor  <iant@google.com>
11615
11616         * df-problems.c (df_simulate_one_insn_forwards): Fix braces in switch.
11617         * gcov.c (read_count_file): Add braces around variables declared
11618         before label.
11619
11620         * c.opt (Wjump-misses-init): New warning.
11621         * c-opts.c (c_common_handle_option): Set warn_jump_misses_init for
11622         -Wall and -Wc++-compat if not already set.
11623         (c_common_post_options): Clear warn_jump_misses_init if it was not
11624         set.
11625         * c-decl.c (struct c_binding): Change type field to a union with
11626         new label field.  Make it the first field in the struct.  Update
11627         references to type to use u.type instead.
11628         (struct c_spot_bindings): Define.
11629         (struct c_goto_bindings): Define.
11630         (c_goto_bindings_p): Define, along with VECs.
11631         (struct c_label_vars): Define.
11632         (struct c_scope): Add has_label_bindings field.
11633         (bind_label, set_spot_bindings): New static functions.
11634         (decl_jump_unsafe, update_spot_bindings): New static functions.
11635         (update_label_decls): New static function.
11636         (pop_scope): Call update_label_decls.  Don't call c_end_vm_scope.
11637         Update binding u.label field to shadowed field.
11638         (c_binding_start_stmt_expr): New function.
11639         (c_binding_end_stmt_expr): New function.
11640         (pushdecl): Don't call c_begin_vm_scope.
11641         (make_label): Add defining and p_label_vars parameters.  Change
11642         all callers.
11643         (lookup_label): Correct test for whether a label has not yet been
11644         defined.  Call bind_label rather than bind.
11645         (warn_about_goto): New static function.
11646         (lookup_label_for_goto): New function.
11647         (declare_label): Call bind_label rather than bind.
11648         (check_earlier_gotos): New static function.
11649         (define_label): Don't give errors about jumping into statement
11650         expressions or scopes of variably modified types.  Call
11651         set_spot_bindings and check_earlier_gotos.  Call bind_label
11652         instead of bind.  Don't set label_context_stack_se or
11653         label_context_stack_vm.
11654         (c_get_switch_bindings): New function.
11655         (c_release_switch_bindings): New function.
11656         (c_check_switch_jump_warnings): New function.
11657         (start_function): Don't set label_context_stack_se or
11658         label_context_stack_vm.
11659         (finish_function): Likewise.
11660         * c-typeck.c (label_context_stack_se): Don't define.
11661         (label_context_stack_vm): Don't define.
11662         (c_finish_goto_label): Call lookup_label_for_goto rather than
11663         lookup_label.  Don't give errors about jumping into a statement
11664         expression or the scope of a variably modified type.  Don't set
11665         label_context_stack_se or label_context_stack_vm.
11666         (struct c_switch): Remove blocked_stmt_expr and blocked_vm
11667         fields.  Add bindings field.
11668         (c_start_case): Don't set deleted fields.  Set bindings field.
11669         (do_case): Rework order of tests.  Don't check blocked_stmt_expr
11670         or blocked_vm.  Call c_check_switch_jump_warnings.
11671         (c_finish_case): Don't test blocked_stmt_expr field.  Call
11672         c_release_switch_bindings.
11673         (c_begin_stmt_expr): Don't increment blocked_stmt_expr in
11674         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
11675         set label_context_stack_se.  Call c_bindings_start_stmt_expr.
11676         (c_finish_stmt_expr): Don't decrement blocked_stmt_expr in
11677         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
11678         set label_context_stack_se.  Call c_bindings_end_stmt_expr.
11679         (c_begin_vm_scope, c_end_vm_scope): Don't define.
11680         * c-tree.h (C_DECL_UNJUMPABLE_STMT_EXPR): Don't define.
11681         (C_DECL_UNDEFINABLE_STMT_EXPR): Don't define.
11682         (C_DECL_UNJUMPABLE_VM): Don't define.
11683         (C_DECL_UNDEFINABLE_VM): Don't define.
11684         (struct c_label_list): Don't define.
11685         (struct c_label_context_se): Don't define.
11686         (struct c_label_context_vm): Don't define.
11687         (struct c_spot_bindings): Declare.
11688         (c_bindings_start_stmt_expr): Declare.
11689         (c_bindings_end_stmt_expr): Declare.
11690         (lookup_label_for_goto): Declare.
11691         (c_get_switch_bindings, c_release_switch_bindings): Declare.
11692         (c_check_switch_jump_warnings): Declare.
11693         (label_context_stack_se, label_context_stack_vm): Don't declare.
11694         (c_finish_goto_label): Update declaration.
11695         (c_begin_vm_scope, c_end_vm_scope): Don't declare.
11696         * doc/invoke.texi (Option Summary): Mention -Wjump-misses-init.
11697         (Warning Options): Document -Wjump-misses-init.
11698
11699 2009-06-15  Jakub Jelinek  <jakub@redhat.com>
11700
11701         * tree-object-size.c (addr_object_size): Fix a pasto in the last
11702         change.
11703
11704 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
11705
11706         * cgraph.c (cgraph_make_node_local): Use DECL_COMDAT_GROUP.
11707
11708 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
11709
11710         * except.c (init_eh): Use BUILTINS_LOCATION when calling build_decl.
11711
11712 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
11713
11714         * tree-eh.c (lower_try_finally_switch): Initialize tf_loc.
11715
11716 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
11717
11718         * cgraphunit.c (cgraph_function_versioning,save_inline_function_body):
11719         Use DECL_COMDAT_GROUP instead of DECL_ONE_ONLY.
11720         * cgraph.c (cgraph_create_virtual_clone): Use DECL_COMDAT_GROUP.
11721         * config/i386/i386.c (ix86_file_end): Compute DECL_COMDAT_GROUP.
11722         * dwarf2asm.c (dw2_force_const_mem): Update call to
11723         make_decl_one_only.
11724         * langhooks-def.h (lhd_comdat_group, LANG_HOOKS_COMDAT_GROUP): Remove.
11725         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_COMDAT_GROUP.
11726         * langhooks.c (lhd_comdat_group): Remove.
11727         * langhooks.h (lang_hooks_for_decls): Remove comdat_group.
11728         * tree.h (DECL_COMDAT_GROUP): New.
11729         (DECL_ONE_ONLY): Use DECL_COMDAT_GROUP.
11730         (tree_decl_with_vis): Add comdat_group. Remove one_only.
11731         (make_decl_one_only): Change signature.
11732         * varasm.c (get_emutls_init_templ_addr, emutls_decl): Update call to
11733         make_decl_one_only.
11734         (make_decl_one_only): Change signature.
11735         (default_elf_asm_named_section): Use DECL_COMDAT_GROUP.
11736
11737 2009-06-15  Richard Guenther  <rguenther@suse.de>
11738
11739         PR middle-end/40439
11740         * tree.c (widest_int_cst_value): Fix bootstrap on 32bit HWI hosts.
11741
11742 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
11743
11744         * tree-ssa-math-opts.c: Remove extra divide.
11745
11746 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
11747
11748         * config/s390/s390.md ("bswap<mode>2"): Only available on z900.
11749
11750 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
11751
11752         * passes.c: Add bswap pass.
11753         * tree-pass.h: Add pass_optimize_bswap declaration.
11754         * tree-ssa-math-opts.c: Include diagnostics.h for print_gimple_stmt.
11755         Include rtl.h, expr.h and optabs.h for optab_handler check.
11756         (struct symbolic_number, pass_optimize_bswap): New definition.
11757         (do_shift_rotate, verify_symbolic_number_p): New functions.
11758         (find_bswap_1, find_bswap, execute_optimize_bswap): New functions.
11759         (gate_optimize_bswap): New function.
11760         * tree.c (widest_int_cst_value): New function.
11761         * tree.h (widest_int_cst_value): Prototype added.
11762
11763 2009-06-14  Steven Bosscher  <steven@gcc.gnu.org>
11764
11765         * cfgcleanup.c (old_insns_match_p): Remove code to substitute
11766         REG_EQUAL/REG_EQUIV notes.
11767
11768 2009-06-14  Richard Guenther  <rguenther@suse.de>
11769
11770         PR middle-end/40389
11771         * gimple.c (walk_stmt_load_store_addr_ops): The LHS of a call
11772         has its address taken if NRV was applied and it is addressable.
11773         * tree-ssa-structalias.c (get_constraint_for_address_of): New
11774         function split out from ...
11775         (get_constraint_for_1): ... here.
11776         (handle_rhs_call): Use it to mark the return slot escaped if
11777         it is addressable and NRV was applied.
11778
11779 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
11780
11781         * config/rs6000/rs6000-protos.h (altivec_resolve_overloaded_builtin):
11782         Change first argument type to location_t.
11783         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Same.
11784         Do not set input_location.
11785         Use loc instead of input_location throughout.
11786
11787 2009-06-13  Richard Guenther  <rguenther@suse.de>
11788
11789         PR tree-optimization/40421
11790         * tree-predcom.c (should_unroll_loop_p): Remove.
11791         (tree_predictive_commoning_loop): Use can_unroll_loop_p.
11792
11793 2009-06-13  Michael Meissner  <meissner@linux.vnet.ibm.com>
11794
11795         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
11796         Add location argument.
11797
11798 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
11799
11800         * config/alpha/alpha.c (alpha_build_builtin_va_list): Pass location to
11801         build_decl.
11802         * config/s390/s390.c (s390_build_builtin_va_list): Same.
11803         (s390_gimplify_va_arg): Pass location to create_artificial_label.
11804         * config/spu/spu-protos.h: Add location to
11805         spu_resolve_overloaded_builtin.
11806         * config/spu/spu.c (spu_build_builtin_va_list): Pass location to
11807         spu_build_builtin_va_list.
11808         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Add location
11809         argument.  Pass location to build_function_call_vec.
11810         * config/sh/sh.c (sh_build_builtin_va_list): Pass location to
11811         build_decl.
11812         (emit_fpu_switch): Same.
11813         (sh_gimplify_va_arg_expr): Pass location to create_artificial_label.
11814         * config/xtensa/xtensa.c (xtensa_build_builtin_va_list): Pass location
11815         to build_decl and create_artificial_label.
11816         (xtensa_gimplify_va_arg_expr): Same.
11817         * config/stormy16/stormy16.c (xstormy16_build_builtin_va_list): Same.
11818         (xstormy16_gimplify_va_arg_expr): Same.
11819         * config/iq2000/iq2000.c (iq2000_expand_prologue): Same.
11820         * config/arm/arm.c (arm_build_builtin_va_list): Same.
11821         * config/mips/mips.c (mips_build_builtin_va_list): Same.
11822         (mips16_build_function_stub): Same.
11823         (mips16_build_call_stub): Same.
11824
11825 2009-06-13  Richard Earnshaw  <rearnsha@arm.com>
11826
11827         PR target/40327
11828         * arm/constraints.md (Pa, Pb): New constraints.
11829         * arm/arm.md (thumb1_addsi3): Support more complex additions.  Add a
11830         split pattern to deal with them.
11831
11832 2009-06-13  Joerg Sonnenberger  <joerg@britannica.bec.de>
11833
11834         * doc/invoke.texi: Add missing option -Wp,OPTION in list,
11835         fix index entry for -Xpreprocessor.
11836
11837 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
11838
11839         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
11840         Add location argument to build_decl call.
11841         * config/rs6000/rs6000.c (rs6000_build_builtin_va_list): Same.
11842         (rs6000_init_builtins): Same.
11843         (spe_init_builtins): Same.
11844         (rs6000_gimplify_va_arg): Add location argument to
11845         create_artificial_label call.
11846
11847 2009-06-12  Steven Bosscher  <steven@gcc.gnu.org>
11848
11849         * timevar.def (TV_COMBINE_STACK_ADJUST): New timevar.
11850         * combine-stack-adj.c (pass_stack_adjustments): Use it.
11851         * Makefile.in: Fix GGC dependency for gcse.o.
11852
11853 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
11854
11855         * tree-pretty-print.c (dump_generic_node): Dump column numbers.
11856         * gimple-pretty-print.c (dump_gimple_stmt): Same.
11857         * gimplify.c (gimplify_modify_expr): Set location for GIMPLE_ASSIGNs
11858         created.
11859         * c-parser.c (c_parser_binary_expression): Use current column while
11860         building binary operations.
11861         * common.opt (fshow-column): Enable by default.
11862         * tree-vrp.c (check_array_ref): Use warning_at.
11863         (check_array_bounds): Use location from call back if expr has no
11864         location.
11865         * tree.h: Add location argument to maybe_fold_*.
11866         * tree-ssa-ccp.c (ccp_fold): Pass location to maybe_fold_*.
11867         (maybe_fold_offset_to_array_ref): Add location argument and use it.
11868         (maybe_fold_offset_to_component_ref): Same.
11869         (maybe_fold_offset_to_reference): Same.
11870         (maybe_fold_offset_to_address): Same.
11871         (maybe_fold_stmt_indirect): Same.
11872         (maybe_fold_stmt_addition): Same.
11873         (fold_stmt_r): Pass location to maybe_fold_*.
11874         (fold_gimple_assign): Same.
11875         * c-tree.h: Add location argument to finish_decl,
11876         default_function_array_conversion, store_init_value.
11877         * c-decl.c (define_label): Use error_at.
11878         (c_make_fname_decl): Pass location to finish_decl.
11879         (finish_decl): New location argument.
11880         (build_compound_literal): Pass location to store_init_value.
11881         (grokdeclarator): Pass location to finish_decl.
11882         (grokfield): Same.
11883         * c-typeck.c (array_to_pointer_conversion): New location argument.
11884         (function_to_pointer_conversion): Same.
11885         (default_function_array_conversion): Same.
11886         (parser_build_unary_op): Pass location to overflow_warning.
11887         (parser_build_binary_op): Same.  Use warning_at.
11888         (build_unary_op): Pass location to array_to_pointer_conversion.
11889         (build_c_cast): Pass location to digest_init.
11890         (build_modify_expr): New location argument.
11891         (convert_for_assignment): Same.
11892         (store_init_value): Same.
11893         (digest_init): Same.
11894         (output_init_element): Pass location to digest_init and
11895         array_to_pointer_conversion.
11896         (c_finish_return): Pass location to convert_for_assignment.
11897         * gimplify.c (gimplify_conversion): Pass location to
11898         maybe_fold_offset_to_address.
11899         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Pass location
11900         to maybe_fold_stmt_addition.
11901         * c-omp.c (c_finish_omp_atomic): Pass new location to
11902         build_modify_expr.
11903         (c_finish_omp_for): Same.
11904         * c-common.c (overflow_warning): New argument.
11905         * c-common.h: New argument to build_modify_expr, overflow_warning.
11906         * c-parser.c (c_parser_declaration_or_fndef): Pass location to
11907         finish_decl.
11908         (c_parser_initializer): Pass location to
11909         default_function_array_conversion.
11910         (c_parser_initelt): Same.
11911         (c_parser_initval): Same.
11912         (c_parser_asm_operands): Same.
11913         (c_parser_expr_no_commas): Same.  Pass location to build_modify_expr.
11914         (c_parser_conditional_expression): Same.
11915         (c_parser_binary_expression): Add location info to stack.  Use it.
11916         (c_parser_unary_expression): Pass location to
11917         default_function_array_conversion, parser_build_unary_op,
11918         build_indirect_ref, c_parser_postfix_expression_after_primary.
11919         (c_parser_postfix_expression_after_primary): New location argument.
11920         Use it.
11921         (c_parser_expression_conv): Pass location to
11922         default_function_array_conversion.
11923         (c_parser_expr_list): Same.
11924         (c_parser_omp_atomic): Same.
11925         (c_parser_omp_for_loop): Same.
11926         * c-tree.h: (struct c_declarator): Add comment to id_loc.
11927         (build_array_declarator): New argument.
11928         * c-decl.c (build_array_declarator): Add location argument.
11929         (grokdeclarator): Set id_loc for cdk_array.
11930         * c-parser.c (c_parser_direct_declarator_inner): Pass location to
11931         build_array_declarator.
11932         * tree.c (build_omp_clause): Add location argument.
11933         * tree.h (OMP_CLAUSE_HAS_LOCATION): New macro.
11934         (OMP_CLAUSE_LOCATION): New macro.
11935         (struct tree_omp_clause): Add location field.
11936         (build_omp_clause): Add argument.
11937         * testsuite/gcc.dg/gomp/for-1.c: Fix column.
11938         * cp/pt.c (tsubst_omp_for_iterator): Pass location to
11939         build_omp_clause.
11940         * cp/parser.c (cp_parser_omp_var_list_no_open): Same.
11941         (cp_parser_omp_clause_collapse): Same.
11942         (cp_parser_omp_clause_default): Same.
11943         (cp_parser_omp_clause_if): Same.
11944         (cp_parser_omp_clause_nowait): Same.
11945         (cp_parser_omp_clause_num_threads): Same.
11946         (cp_parser_omp_clause_ordered): Same.
11947         (cp_parser_omp_clause_schedule): Same.
11948         (cp_parser_omp_clause_untied): Same.
11949         (cp_parser_omp_for_loop): Same.
11950         (cp_parser_omp_parallel): Pass location to c_split_parallel_clauses.
11951         * c-tree.h (c_start_case): Add location argument.
11952         (c_process_expr_stmt): Same.
11953         (c_finish_goto_*): Same.
11954         * tree-parloops.c (initialize_reductions): Pass location to
11955         build_omp_clause.
11956         (create_parallel_loop): Same.
11957         * fortran/trans-openmp.c (gfc_trans_omp_variable_list): Same.
11958         (gfc_trans_omp_reduction_list): Same.
11959         (gfc_trans_omp_clauses): Same.
11960         (gfc_trans_omp_do): Same.
11961         * c-typeck.c (c_finish_goto_label): Same.
11962         (c_finish_goto_ptr): New location argument.
11963         (c_start_case): Same.
11964         (emit_side_effect_warnings): Same.
11965         (c_process_expr_stmt): Same.
11966         (c_finish_stmt_expr): Same.
11967         (c_finish_omp_clauses): Use error_at instead of error.
11968         * gimplify.c (gimplify_adjust_omp_clauses_1): Pass location to
11969         build_omp_clause.
11970         * c-omp.c (c_split_parallel_clauses): New location argument.
11971         * tree-nested.c (convert_nonlocal_reference_stmt): Pass location
11972         to build_omp_clause.
11973         (convert_local_reference_stmt): Same.
11974         (convert_gimple_call): Same.
11975         * c-common.h (c_split_parallel_clauses): New argument.
11976         * c-parser.c (c_parser_statement_after_labels): Pass location to
11977         c_finish_goto_label.
11978         (c_parser_switch_statement): Pass location to c_start_case.
11979         (c_parser_for_statement): Pass location to c_finish_expr_stmt,
11980         and c_process_expr_stmt.
11981         (c_parser_omp_variable_list): Add location argument.
11982         (c_parser_omp_clause_collapse): Pass location to build_omp_clause.
11983         (c_parser_omp_clause_default): Same.
11984         (c_parser_omp_clause_if): Same.
11985         (c_parser_omp_clause_num_threads): Same.
11986         (-c_parser_omp_clause_ordered): Same.
11987         (c_parser_omp_clause_reduction): Pass location to
11988         c_parser_omp_variable_list.
11989         (c_parser_omp_clause_schedule): Pass location to build_omp_clause.
11990         (c_parser_omp_clause_untied): Same.
11991         (c_parser_omp_for_loop): Pass location to c_process_expr_stmt.
11992         (c_parser_omp_parallel): Pass location to c_split_parallel_clauses.
11993
11994         * c-tree.h (check_for_loop_decls, undeclared_variable,
11995         build_component_ref, build_array_ref, build_external_ref,
11996         c_expr_sizeof_expr, c_expr_sizeof_type, parser_build_unary_op,
11997         build_conditional_expr, build_compound_expr, c_cast_expr,
11998         build_c_cast, build_asm_expr, c_end_compound_stmt, c_finish_stmt_expr,
11999         c_finish_return, c_finish_omp_parallel, c_finish_omp_task): New
12000         argument.
12001         * c-semantics.c (build_stmt): Same.
12002         (build_case_label): Same.
12003         * c-decl.c (c_finish_incomplete_decl): Pass location on down.
12004         (undeclared_variable): New argument.
12005         (make_label): Same.
12006         (lookup_label): Pass location on down.
12007         (define_label): Same.
12008         (finish_decl): Same.
12009         (build_compound_literal): Same.
12010         (finish_struct): Same.
12011         (finish_function): Do not set location here.
12012         (check_for_loop_decls): New argument.
12013         * tree.c (save_expr): Set location.
12014         (build_empty_stmt): New argument.
12015         * tree.h (build_empty_stmt): New argument to build_empty_stmt.
12016         (CAN_HAVE_LOCATION_P): Make sure we have a non empty node.
12017         * builtins.c (gimplify_va_arg_expr): Use locations.
12018         (expand_builtin_sync_operation): Same.
12019         * c-typeck.c (build_component_ref): New argument.
12020         (build_array_ref): Same.
12021         (build_external_ref): Same.
12022         (c_expr_sizeof_expr): Same.
12023         (c_expr_sizeof_type): Same.
12024         (parser_build_unary_op): Same.
12025         (build_conditional_expr): Same.
12026         (build_compound_expr): Pass location on down.
12027         (build_compound_expr): New argument.
12028         (build_c_cast): Same.
12029         (c_cast_expr): Same.
12030         (build_asm_expr): Same.
12031         (c_finish_return): Same.
12032         (c_process_expr_stmt): Pass location on down.
12033         (c_finish_stmt_expr): New argument.
12034         (push_clenaup): Same.
12035         (c_finish_omp_parallel): Same.
12036         (c_finish_omp_task): Same.
12037         * gimplify.c (gimplify_call_expr): Pass location on down.
12038         * c-omp.c (c_finish_omp_master): New argument.
12039         (c_finish_omp_critical): Same.
12040         (c_finish_omp_ordered): Same.
12041         (c_finish_omp_barrier): Same.
12042         (-c_finish_omp_taskwait): Same.
12043         (c_finish_omp_atomic): Same.
12044         (c_finish_omp_flush): Same.
12045         * tree-inline.c (copy_tree_body_r): Pass location on down.
12046         (inline_forbidden_p): Remove use of input_location.
12047         * c-gimplify.c (c_build_bind_expr): New argument.
12048         * c-common.c (c_common_truthvalue_conversion): Pass location on down.
12049         (c_sizeof_or_alignof_type): New argument.
12050         (c_alignof_expr): Same.
12051         (build_va_arg): Same.
12052         (c_add_case_label): Same.
12053         * c-common.h (c_sizeof_or_alignof_type, c_alignof_expr,
12054         c_sizeof, c_alignof, build_va_arg, build_stmt, build_case_label,
12055         c_build_bind_expr, objc_build_selector_expr, objc_build_throw_stmt,
12056         c_finish_omp_master, c_finish_omp_critical, c_finish_omp_ordered,
12057         c_finish_omp_barrier, c_finish_omp_atomic, c_finish_omp_flush,
12058         c_finish_omp_taskwait, c_finish_omp_for, c_split_parallel_clauses):
12059         New argument.
12060         * stub-objc.c (objc_build_selector_expr): Same.
12061         (objc_build_throw_stmt): Same.
12062         * c-parser.c (c_parser_declaration_or_fndef): Pass location on down.
12063         (c_parser_initelt): Same.
12064         (c_parser_compound_statement): Same.
12065         (c_parser_compound_statement_nostart): Same.
12066         (c_parser_label): Same.
12067         (c_parser_statement_after_labels): Same.
12068         (c_parser_if_body): Same.
12069         (c_parser_else_body): Same.
12070         (c_parser_if_statement): Same.
12071         (c_parser_switch_statement): Same.
12072         (c_parser_while_statement): Same.
12073         (c_parser_do_statement): Same.
12074         (c_parser_for_statement): Same.
12075         (c_parser_asm_statement): Same.
12076         (c_parser_conditional_expression): Same.
12077         (c_parser_binary_expression): Same.
12078         (c_parser_cast_expression): Same.
12079         (c_parser_unary_expression): Same.
12080         (c_parser_sizeof_expression): Same.
12081         (c_parser_alignof_expression): Same.
12082         (c_parser_postfix_expression): Same.
12083         (c_parser_expression): Same.
12084         (c_parser_objc_receiver): Same.
12085         (c_parser_omp_variable_list): Same.
12086         (c_parser_omp_structured_block): Same.
12087         (c_parser_omp_atomic): New argument.
12088         (c_parser_omp_barrier): Same.
12089         (c_parser_omp_critical): Same.
12090         (c_parser_omp_flush): Pass location on down.
12091         (c_parser_omp_for_loop): New argument.
12092         (c_parser_omp_for): Same.
12093         (c_parser_omp_master): Same.
12094         (c_parser_omp_ordered): Same.
12095         (c_parser_omp_sections_scope): Same.
12096         (c_parser_omp_sections): Same.
12097         (c_parser_omp_parallel): Same.
12098         (c_parser_omp_single): Same.
12099         (c_parser_omp_task): Same.
12100         (c_parser_omp_taskwait): Pass location on down.
12101         (c_parser_omp_construct): Same.
12102         (c_parser_omp_threadprivate): Same.
12103         * dwarf2asm.c, targhooks.c, optabs.c, tree.c, tree.h, target.h,
12104         builtins.c, omp-low.c, cgraphunit.c, tree-call-cdce.c,
12105         tree-ssa-alias.c, gimple-low.c, c-tree.h, expr.c, tree-parloops.c,
12106         c-decl.c, tree-eh.c, langhooks.c, function.c, stor-layout.c,
12107         c-typeck.c, gimplify.c, c-pragma.c, expmed.c, except.c, coverage.c,
12108         emit-rtl.c, cfgexpand.c, tree-mudflap.c, varasm.c, tree-nested.c,
12109         rtl.h, tree-inline.c, tree-profile.c, c-common.c, c-common.h,
12110         tree-switch-conversion.c, tree-cfg.c, ipa-struct-reorg.c, c-parser.c,
12111         config/i386/i386.c, stmt.c:
12112         Add location argument to the following function definitions and/or
12113         function calls: build_decl, objcp_start_struct, objcp_finish_struct,
12114         start_struct, finish_struct, PUSH_FIELD, create_artificial_label,
12115         cp_make_fname_decl, pushtag, implicitly_declare, c_make_fname_decl,
12116         build_compound_literal, parser_xref_tag, resolve_overloaded_builtin,
12117         do_case, c_finish_bc_stmt, build_compound_literal,
12118         build_function_call.
12119         * c-decl.c (build_compound_literal): Add location argument.
12120         Make all diagnostic calls use location.
12121         (start_struct): Same.
12122         (finish_struct): Same.
12123         (start_enum): Same.
12124         (build_enumerator): Same.
12125         (start_function): Same.
12126         (grokdeclarator): Make all diagnostic calls use location.
12127         (store_parm_decls_oldstyle): Same.
12128         * c-typeck.c (build_function_call): Add location argument.
12129         Make all diagnostic calls use location.
12130         (do_case): Same.
12131         (c_finish_bc_stmt): Same.
12132         * tree-nested.c (get_trampoline_type): Add argument.
12133         Pass location to build_decl.
12134         (lookup_tramp_for_decl): Pass location to get_trampoline_type.
12135         * rtl.h (RTL_LOCATION): New.
12136         * c-common.c (c_add_case_label): Add location argument.
12137         Make all diagnostic calls use location.
12138         * c-common.h: Add location argument to make_fname_decl, do_case,
12139         c_add_case_label, build_function_call, resolve_overloaded_builtin.
12140         * c-parser.c (c_parser_enum_specifier): Rename ident_loc to enum_loc.
12141         Set it appropriately for every case.  Pass enum_loc to start_enum
12142         call.  Pass value_loc first to build_enumerator.  Pass enum_loc to
12143         parser_xref_tag.
12144         (c_parser_struct_or_union_specifier): Save location.  Use it for
12145         start_struct, finish_struct, and parser_xref_tag.
12146
12147 2009-06-12  Ian Lance Taylor  <iant@google.com>
12148
12149         * fold-const.c (fold_unary): Rename local variable and to and_expr.
12150
12151         * c-opts.c (c_common_handle_option): For -Wc++-compat set
12152         cpp_opts->warn_cxx_operator_names.
12153
12154 2009-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12155
12156         PR tree-opt/38865
12157         * tree-ssa-sccvn.c (visit_reference_op_load): If vn_reference_lookup
12158         is returns NULL and OP is a VCE, look through the VCE.
12159
12160 2009-06-12  Ian Lance Taylor  <iant@google.com>
12161
12162         PR bootstrap/40430
12163         * collect2.c (main): Use CONST_CAST2 in code inside #if
12164         LINK_ELIMINATE_DUPLICATE_LDIRECTORIES.
12165
12166 2009-06-12  Joey Ye  <joey.ye@intel.com>
12167
12168         PR middle-end/39146
12169         * cfgexpand.c (get_decl_align_unit): Update
12170         max_used_stack_slot_alignment with align instead of
12171         stack_alignment_needed.
12172
12173         * function.c (assign_stack_local_1): Update
12174         max_used_stack_slot_alignment with alignment_in_bits instead
12175         of stack_alignment_needed.
12176         (locate_and_pad_parm): Don't update max_used_stack_slot_alignment
12177         here.
12178
12179 2009-06-12  Jakub Jelinek  <jakub@redhat.com>
12180
12181         * dwarf2out.c (last_var_location_insn): New variable.
12182         (dwarf2out_end_epilogue): Clear last_var_location_insn.
12183         (dwarf2out_var_location): Don't record anything after last real
12184         insn.  Only change labels if there were any real instructions
12185         in between last note and this one, or if changed sections.
12186
12187 2009-06-11  Richard Henderson  <rth@redhat.com>
12188
12189         * alpha.c (alpha_expand_prologue): Add a REF_CFA_REGISTER
12190         note when storing the frame pointer in a register.
12191         (FRP): Don't redefine to nothing for epilogue.
12192         (alpha_expand_epilogue): Mark register and sp restores.
12193         (unicosmk_gen_dsib): Don't mark weird frame pointer adjust.
12194
12195         * config/alpha/alpha.c (alpha_emit_setcc): Fix test for
12196         when gen_lowpart is needed.
12197
12198 2009-06-11  Richard Henderson  <rth@redhat.com>
12199
12200         * dwarf2out.c (def_cfa_1): Likewise for DW_CFA_cfa_offset.
12201
12202         * dwarf2out.c (need_data_align_sf_opcode): New.
12203         (div_data_align): Move earlier.
12204         (def_cfa_1, reg_save): Use it.
12205
12206 2009-06-11  H.J. Lu  <hongjiu.lu@intel.com>
12207
12208         * config/i386/i386.c (OPTION_MASK_ISA_CRC32_SET): New.
12209         (OPTION_MASK_ISA_CRC32_UNSET): Likewise.
12210         (ix86_handle_option): Handle OPT_mcrc32.
12211         (ix86_target_string): Add -mcrc32.
12212         (bdesc_args): Enable crc32 builtins with OPTION_MASK_ISA_CRC32.
12213
12214         * config/i386/i386.h (TARGET_CRC32): New.
12215
12216         * config/i386/i386.md (sse4_2_crc32<mode>): Also check TARGET_CRC32.
12217         (sse4_2_crc32di): Likewise.
12218
12219         * config/i386/i386.opt (mcrc32): New.
12220
12221         * doc/invoke.texi: Document -mcrc32.
12222
12223 2009-06-11  Richard Henderson  <rth@redhat.com>
12224
12225         * common.opt (gdwarf-): Accept a version number.
12226         * doc/invoke.texi (gdwarf-): Update docs.
12227         * opth-gen.awk: Special case -gdwarf+ to OPT_gdwarfplus.
12228         * opts.c (common_handle_option) [OPT_gdwarf_]: Verify dwarf
12229         version level, and record it.
12230
12231         * dwarf2.h (DW_CIE_VERSION): Remove.
12232         * dwarf2out.c (DWARF_VERSION): Remove.
12233         (add_fde_cfi): Skip DW_CFA_set_loc addition for dwarf3.
12234         (output_call_frame_info): Use CIE version 3 for dwarf3,
12235         or if the return register column is out of range for version 1.
12236         (dwarf_stack_op_name): Add all dwarf3 values.
12237         (DEBUG_PUBTYPES_SECTION): New.
12238         (size_of_die) [dw_val_class_die_ref]: Handle DW_FORM_ref_addr
12239         encoding change for dwarf3.
12240         (output_die) [dw_val_class_die_ref]: Likewise.
12241         (output_compilation_unit_header): Emit correct version for dwarf3.
12242         (output_line_info): Likewise.
12243         (output_pubnames): Update for DWARF_VERSION removal.
12244         (output_aranges): Likewise.
12245         (gen_subprogram_die): Emit DW_OP_call_frame_cfa if emitting dwarf3.
12246         (dwarf2out_init): Don't ifdef DEBUG_PUBTYPES_SECTION.
12247         (dwarf2out_finish): Likewise.
12248
12249 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
12250
12251         * system.h (gcc_assert, gcc_unreachable): Revert accidental commit
12252         in r148403.
12253
12254 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
12255
12256         PR c/39252
12257         * doc/extend.texi ( __builtin_unreachable): Document new builtin.
12258         * builtins.c (expand_builtin_unreachable): New function.
12259         (expand_builtin): Handle BUILT_IN_UNREACHABLE case.
12260         * builtins.def (BUILT_IN_UNREACHABLE): Add new builtin.
12261         * cfgcleanup.c (try_optimize_cfg): Delete empty blocks with no
12262         successors.
12263         * cfgrtl.c (rtl_verify_flow_info): Handle empty blocks when
12264         searching for missing barriers.
12265
12266 2009-06-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
12267
12268         * config/darwin.h (LINK_COMMAND_SPEC): Adjust spec to link libcov
12269         when -fprofile-generate* was passed.
12270         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
12271
12272 2009-06-11  Anthony Green  <green@moxielogic.com>
12273
12274         * config/moxie/moxie.md: Define length attribute for all instructions.
12275         (rCC): Define.
12276         (*b<cond:code>): Support limited branch ranges for new PC-relative
12277         branch instructions.
12278         * config/moxie/moxie.h (HAS_LONG_UNCOND_BRANCH): Define.
12279
12280 2009-06-11  Jakub Jelinek  <jakub@redhat.com>
12281
12282         * config/i386/i386.c (min_insn_size): Use get_attr_length
12283         for normal insns other than TYPE_MULTI, TYPE_OTHER and TYPE_FCMP.
12284         For __asm return 0.
12285
12286         * config/i386/i386.c (ix86_pad_returns): Use emit_jump_insn_before
12287         instead of emit_insn_before.
12288
12289 2009-06-10  Ian Lance Taylor  <iant@google.com>
12290
12291         PR bootstrap/40408
12292         * graphite.c (add_conditions_to_domain): Change SWITCH_EXPR to
12293         GIMPLE_SWITCH.
12294
12295 2009-06-10  Revital Eres  <eres@il.ibm.com>
12296
12297         * passes.c (init_optimization_passes): Reschedule
12298         predictive-commoning pass before complete unroll pass.
12299
12300 2009-06-10  Martin Jambor  <mjambor@suse.cz>
12301
12302         * cgraph.c (cgraph_node_can_be_local_p): New function.
12303         (cgraph_make_node_local): New function.
12304         * cgraph.h (cgraph_node_can_be_local_p): Declare.
12305         (cgraph_make_node_local): Declare.
12306
12307 2009-06-10  Nathan Froyd  <froydnj@codesourcery.com>
12308
12309         * tree.h (tree_base): Add packed_flag and user_align fields.
12310         Decrease size of spare field.
12311         (TYPE_USER_ALIGN): Use user_align from tree_base.
12312         (DECL_USER_ALIGN): Likewise.
12313         (TYPE_PACKED): Use packed_flag from tree_base.
12314         (DECL_PACKED): Likewise.
12315         (tree_type): Delete packed_flag and user_align fields.  Widen
12316         precision field.  Widen mode field and shuffle fields to align
12317         mode on an 8-bit boundary.
12318         (tree_decl_common): Delete decl_flag_1 and user_align fields.
12319         Renumber decl_flag_* fields.  Fix comments.  Widen
12320         decl_common_unused field.
12321         (DECL_HAS_VALUE_EXPR_P): Adjust for renumbering of decl_flag_* fields.
12322         (DECL_EXTERNAL): Likewise.
12323         (DECL_BIT_FIELD): Likewise.
12324         (DECL_NONADDRESSABLE_P): Likewise.
12325         (TYPE_DECL_SUPRESS_DEBUG): Likewise.
12326         * config/arm/arm-modes.def (XImode): Make it an INT_MODE.
12327
12328 2009-06-10  Ian Lance Taylor  <iant@google.com>
12329
12330         * vec.h (DEF_VEC_ALLOC_I): Use DEF_VEC_NONALLOC_FUNCS_I.
12331         (DEF_VEC_ALLOC_P): Use DEF_VEC_NONALLOC_FUNCS_P.
12332         (DEF_VEC_ALLOC_O): Use DEF_VEC_NONALLOC_FUNCS_O.
12333         (DEF_VEC_ALLOC_FUNC_P): Only define VEC_OP (T,A,alloc).
12334         (DEF_VEC_NONALLOC_FUNCS_P): New macro, broken out of old
12335         DEF_VEC_ALLOC_FUNC_P.
12336         (DEF_VEC_ALLOC_FUNC_O): Only define VEC_OP (T,A,alloc).
12337         (DEF_VEC_NONALLOC_FUNCS_O): New macro, broken out of old
12338         DEF_VEC_ALLOC_FUNC_O.
12339         (DEF_VEC_ALLOC_FUNC_I): Only define VEC_OP (T,A,alloc).
12340         (DEF_VEC_NONALLOC_FUNCS_I): New macro, broken out of old
12341         DEF_VEC_ALLOC_FUNC_I.
12342         (vec_stack_p_reserve, vec_stack_p_reserve_exact): Declare.
12343         (vec_stack_p_reserve_exact_1): Declare.
12344         (vec_stack_o_reserve, vec_stack_o_reserve_exact): Declare.
12345         (vec_stack_free): Declare.
12346         (VEC_stack_alloc): Define.
12347         (DEF_VEC_ALLOC_P_STACK, DEF_VEC_ALLOC_FUNC_P_STACK): Define.
12348         (DEF_VEC_ALLOC_O_STACK, DEF_VEC_ALLOC_FUNC_O_STACK): Define.
12349         (DEF_VEC_ALLOC_I_STACK, DEF_VEC_ALLOC_FUNC_I_STACK): Define.
12350         * vec.c (void_p): New type.  Call DEF_VEC_P and DEF_VEC_ALLOC_P
12351         for void_p.
12352         (stack_vecs): New static variable.
12353         (vec_stack_p_reserve_exact_1): New function.
12354         (vec_stack_o_reserve_1): New static function.
12355         (vec_stack_p_reserve, vec_stack_p_reserve_exact): New functions.
12356         (vec_stack_o_reserve, vec_stack_o_reserve_exact): New functions.
12357         (vec_stack_free): New function.
12358         * df-scan.c (df_ref): Use DEF_VEC_P and DEF_VEC_ALLOC_P_STACK.
12359         (VEC_df_ref_stack_alloc): Define.
12360         (df_mw_hardreg_ptr): New type.  Use DEF_VEC_P and
12361         DEF_VEC_ALLOC_P_STACK.
12362         (VEC_df_mw_hardreg_ptr_stack_alloc): Define.
12363         (struct df_collection_rec): Change _vec fields to VEC.  Remove
12364         _use fields.
12365         (df_free_collection_rec): Adjust for new fields.
12366         (df_insn_rescan): Use new df_collection_rec fields.
12367         (df_notes_rescan, df_canonize_collection_rec): Likewise.
12368         (df_ref_create_structure, df_ref_record): Likewise.
12369         (df_get_conditional_uses, df_get_call_refs): Likewise.
12370         (df_insn_refs_collect, df_bb_refs_collect): Likewise.
12371         (df_bb_refs_record, df_record_entry_block_defs): Likewise.
12372         (df_record_exit_block_uses, df_bb_verify): Likewise.
12373         (df_swap_refs): Change ref_vec parameter to VEC.  Change all callers.
12374         (df_sort_and_compress_refs): Change ref_vec parameter to VEC.
12375         Remove count parameter.  Change return type to void.  Change all
12376         callers.
12377         (df_sort_and_compress_mws): Change mw_vec parameter to VEC.
12378         Remove count parameter.  Change return type to void.  Change all
12379         callers.
12380         (df_install_refs): Change old_vec parameter to VEC.  Remove count
12381         parameter.  Change all callers.
12382         (df_install_mws): Change old_vec parameter to VEC.  Remove count
12383         parameter.  Change all callers.
12384         (df_refs_verify): Change new_rec parameter to VEC.  Change call
12385         callers.
12386         (df_mws_verify): Likewise.
12387
12388 2009-06-10  Alexandre Oliva  <aoliva@redhat.com>
12389
12390         * gcc.c (compare_files): Cast munmap argumento to caddr_t.
12391
12392 2009-06-10  H.J. Lu  <hongjiu.lu@intel.com>
12393
12394         * doc/extend.texi: Add description for __builtin_ia32_crc32di.
12395
12396 2009-06-10  Anthony Green  <green@moxielogic.com>
12397
12398         * config/moxie/crti.asm: New file.
12399         * config/moxie/crtn.asm: New file.
12400         * config/moxie/moxie.c: New file.
12401         * config/moxie/moxie.h: New file.
12402         * config/moxie/sfp-machine.h: New file.
12403         * config/moxie/moxie-protos.h: New file.
12404         * config/moxie/t-moxie: Created.
12405         * config/moxie/t-moxie-softfp: Created.
12406         * config/moxie/moxie.md: Created.
12407         * config/moxie/constraints.md: Created.
12408         * config.gcc: Add moxie support.
12409         * doc/md.texi (Machine Constraints): Add moxie constraints.
12410         * doc/contrib.texi (Contributors): Mention moxie port.
12411         * doc/install.texi (Specific): Mention the moxie port.
12412
12413 2009-06-09  Ian Lance Taylor  <iant@google.com>
12414
12415         * system.h (HAVE_DESIGNATED_INITIALIZERS): Don't define if
12416         compiling with C++.
12417         * optabs.c (optab_table): Only use designated initializers if
12418         HAVE_DESIGNATED_INITIALIZERS is defined.
12419         (convert_optab_table): Likewise.
12420         (init_optabs): Always call init_insn_codes if
12421         HAVE_DESIGNATED_INITIALIZERS is not defined.
12422
12423 2009-06-09  Ian Lance Taylor  <iant@google.com>
12424
12425         * targhooks.c (default_builtin_vectorized_function): Change fn
12426         parameter to unsigned int.
12427         (default_builtin_vectorized_conversion): Change code parameter to
12428         unsigned int.
12429         (default_builtin_reciprocal): Change fn parameter to unsigned int.
12430         * targhooks.h: Update declarations.
12431         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Change code
12432         parameter to unsigned int.
12433
12434         * c-typeck.c (comptypes_check_enum_int): New static function.
12435         (comptypes_internal): Add enum_and_int_p parameter.  Change all
12436         callers.
12437         (comp_target_types): Add location parameter.  Change all callers.
12438         (tagged_types_tu_compatible_p): Add enum_and_int_p parameter.
12439         Change all callers.
12440         (function_types_compatible_p, type_lists_compatible_p): Likewise.
12441         (build_conditional_expr): Add colon_loc parameter.  Change all
12442         callers.
12443         (convert_for_assignment): Add location parameter.  Change all callers.
12444         * c-parser.c (c_parser_conditional_expression): Pass location of
12445         colon to build_conditional_expr.
12446         * c-tree.h (build_conditional_expr): Update declaration.
12447
12448 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
12449
12450         * graphite.c: Revert previous patch.
12451
12452 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
12453
12454         PR bootstrap/40103
12455         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
12456
12457 2009-06-09  Ghassan Shobaki  <ghassan.shobaki@amd.com>
12458
12459         * tree-ssa-loop-prefetch.c
12460         (loop_prefetch_arrays): Fixed a portability problem in printf format
12461         string.
12462
12463 2009-06-09  Martin Jambor  <mjambor@suse.cz>
12464
12465         PR tree-optimization/40351
12466         * tree-sra.c (propagate_subacesses_accross_link): Check that a
12467         refrence to a potential artifical subaccess can be constructed.
12468
12469 2009-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
12470
12471         * config/sh/sh-protos.h (sh_optimization_options): Declare.
12472         (sh_override_options): Likewise.
12473         * config/sh/sh.c: Include params.h.
12474         (sh_optimization_options): New.
12475         (sh_override_options): Likewise.
12476         * config/sh/sh.c (OPTIMIZATION_OPTIONS): Use sh_optimization_options.
12477         (OVERRIDE_OPTIONS): Use sh_override_options.
12478
12479 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
12480
12481         * dwarf2out.c (emit_cfa_remember): New variable.
12482         (add_fde_cfi): If emit_cfa_remember, recurse to add
12483         DW_CFA_remember_state first.
12484         (dwarf2out_begin_epilogue): Don't add_fde_cfi DW_CFA_remember_state,
12485         instead just set emit_cfa_remember.
12486
12487 2009-06-08  Jan Hubicka  <jh@suse.cz>
12488
12489         PR debug/40126
12490         * dwarf2out.c (dwarf2out_abstract_function): Free decl_loc_table.
12491
12492 2009-06-08  Jan Hubicka  <jh@suse.cz>
12493
12494         PR middle-end/39834
12495         * cgraphunit.c (save_inline_function_body): Do not copy transform
12496         hooks for saved inline bodies.
12497         * ipa-passes.c (do_per_function): Do not add the hoks multiple times
12498         for given function.
12499
12500 2009-06-08  Adam Nemet  <anemet@caviumnetworks.com>
12501
12502         * jump.c (returnjump_p): Handle delayed branches.  Add missing
12503         function comment.
12504
12505 2009-06-08  Jan Hubicka  <jh@suse.cz>
12506
12507         PR middle-end/40102
12508         * cgraph.c (cgraph_create_edge_including_clones): Also asume that the
12509         original node might've been modified.
12510         * tree-inline.c (copy_bb): Do not assume that all clones are the same.
12511
12512 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
12513
12514         * tree-object-size.c (addr_object_size): Add OSI argument.
12515         Handle also INDIRECT_REF with SSA_NAME inside of it as base address.
12516         (compute_builtin_object_size, expr_object_size): Adjust callers.
12517         (plus_stmt_object_size): Call addr_object_size instead of
12518         compute_builtin_object_size.
12519
12520 2009-06-08  Ghassan Shobaki  <ghassan.shobaki@amd.com>
12521             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
12522
12523         * tree-ssa-loop-prefetch.c
12524         (gather_memory_references): Introduced a counter for the number of
12525         memory references.
12526         (anything_to_prefetch_p): Introduced a counter for the number of
12527         prefetches.
12528         (is_loop_prefetching_profitable): New function with a cost model
12529         for prefetching.
12530         (loop_prefetch_arrays): Use the new cost model to determine if
12531         prefetching is profitable.
12532         * params.def (MIN_INSN_TO_PREFETCH_RATIO,
12533         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
12534         * params.h (MIN_INSN_TO_PREFETCH_RATIO,
12535         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
12536         * doc/invoke.texi (MIN_INSN_TO_PREFETCT_RATIO,
12537         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
12538
12539 2009-06-08  Michael Matz  <matz@suse.de>
12540
12541         PR debug/40012
12542         * cfgexpand.c (set_rtl): Store place also in DECL_RTL, if all
12543         partitions use the same.
12544         (expand_one_var): Deal with DECL_RTL sometimes begin set also
12545         for basevars of SSA_NAMEs.
12546         (expand_used_vars): Reset TREE_USED for basevars of SSA_NAMEs,
12547         to not expand them twice.
12548         (gimple_expand_cfg): Clear DECL_RTL for those decls that have
12549         multiple places.
12550
12551 2009-06-08  Alexandre Oliva  <aoliva@redhat.com>
12552
12553         * common.opt (fcompare-debug=, fcompare-debug-second): New.
12554         (fdump-final-insns=, gtoggle): New.
12555         * doc/invoke.texi: Document them.
12556         * final.c (rest_of_clean_state): Dump final insn stream.
12557         * gcc.c (invoke_as): Hook in -fcompare-debug.
12558         (static_spec_functions): Add compare-debug-dump-opt,
12559         compare-debug-self-opt and compare-debug-auxbase-opt.
12560         (compare_debug, compare_debug_second, compare_debug_opt): New.
12561         (switches_debug_check, n_switches_debug_check): New.
12562         (debug_auxbase_opt, debug_check_temp_file): New.
12563         (process_command): Handle -fno-compare-debug, -fcompare-debug and
12564         -fcompare-debug=*.
12565         (do_self_spec): Handle arguments after switches.
12566         (do_spec_1): Add .gk extension to temp file basenames for compare.
12567         (check_live_switch): Take SWITCH_IGNORE into account, and earlier.
12568         (cc1_options): Use it instead of normal auxbase computation for
12569         the second compare-debug compilation.
12570         (compare_files): New.
12571         (main): Set up and implement compare debug mode.
12572         (compare_debug_dump_opt_spec_function): New.
12573         (compare_debug_self_opt_spec_function): New.
12574         (compare_debug_auxbase_opt_spec_function): New.
12575         * toplev.c (process_options): Handle flag_gtoggle,
12576         flag_dump_final_insns.
12577         * coverage.c (coverage_begin_output): Don't overwrite .gcno file
12578         during -fcompare-debug-second compilation.
12579
12580 2009-06-07  Ian Lance Taylor  <iant@google.com>
12581
12582         * dwarf2.h (enum dwarf_location_atom): Add INTERNAL_DW_OP_tls_addr.
12583         * dwarf2out.c (INTERNAL_DW_OP_tls_addr): Don't #define.
12584
12585         * c-common.c (c_do_switch_warnings): Don't exit early for -Wswitch
12586         with no default node.  Change warning with %H to warning_at.
12587         Don't clear warn_switch around case checking.
12588         * doc/invoke.texi (Warning Options): Clarify distinction between
12589         -Wswitch and -Wswitch-enum.
12590
12591 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
12592
12593         * tree-pass.h (TODO_update_ssa_any): Document internal use only.
12594
12595 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
12596
12597         * gbl-ctors.h: Add header guard.
12598
12599 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
12600
12601         * tree-flow.h (make_value_handle, set_value_handle, sort_vuses,
12602         sort_vuses_heap, vn_lookup_or_add, vn_lookup_or_add_with_stmt,
12603         vn_lookup_or_add_with_vuses, vn_add, vn_add_with_vuses,
12604         vn_lookup_with_stmt, vn_lookup, vn_lookup_with_vuses): Remove
12605         prototypes for removed functions.
12606         (expressions_equal_p): Move to ...
12607         * tree-ssa-sccvn.h: ... here and ...
12608         * matrix-reorg.c: ... adjust includes.
12609
12610 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
12611
12612         * ipa-struct-reorg.c (do_reorg_1): Fix whitespace in dump output.
12613
12614 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
12615
12616         * c-decl.c (finish_decl): Use bool for variable was_incomplete.
12617         (finish_function): Remove erroneous whitespace.
12618
12619 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
12620
12621         * tree-cfg.c (gimple_merge_blocks): Commentary typo fix.
12622         (verify_stmts): Print statement who's gimple_bb is set to a wrong BB
12623
12624 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
12625
12626         * errors.c (internal_error): Commentary typo fix.
12627         * gimple-iterator.c (gsi_insert_seq_on_edge): Ditto.
12628         * tree-ssa-pre.c: Ditto.
12629
12630 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
12631
12632         * basic-block.h (ENTRY_BLOCK, EXIT_BLOCK): Document that neither of
12633         them is supposed to hold actual statements.
12634
12635 2009-06-06  Ian Lance Taylor  <iant@google.com>
12636
12637         * doc/extend.texi (Attribute Syntax): Document that C++ labels on
12638         empty statements can now have attributes.
12639
12640 2009-06-05  Shujing Zhao  <pearly.zhao@oracle.com>
12641
12642         * config/mips/mips.c: Use REG_P and CONST_INT_P where applicable.
12643         * config/mips/mips.md: Ditto.
12644
12645 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
12646
12647         * config/rs6000/eabi.asm (__eabi_convert): Don't define if
12648         _RELOCATABLE.
12649         (__eabi_uconvert): Likewise.
12650
12651 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
12652
12653         * config/rs6000/ppc-asm.h: Protect auto-host.h inclusion and
12654         CFI_* definitions with IN_GCC.
12655
12656 2009-06-05  David Edelsohn  <edelsohn@gnu.org>
12657
12658         * xcoffout.h (xcoffout_source_line): Update prototype.
12659
12660 2009-06-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12661
12662         * builtins.c (do_mpc_ckconv, do_mpc_arg1): Use
12663         mpc_realref/mpc_imagref instead of MPC_RE/MPC_IM.
12664
12665 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
12666
12667         PR middle-end/40340
12668         * tree-ssa-live.c (remove_unused_scope_block_p): Don't prune
12669         inlined_function_outer_scope_p blocks for artificial inlines
12670         even at -g0/-g1.
12671         * tree.c (tree_nonartificial_location): Rewrite using
12672         block_nonartificial_location.
12673
12674 2009-06-05  Revital Eres  <eres@il.ibm.com>
12675             Leehod Baruch  <leehod@il.ibm.com>
12676
12677         * expr.c (expand_assignment): Expand MISALIGNED_INDIRECT_REF.
12678         (expand_expr_real_1): Remove comment.
12679         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
12680         Vectorize misaligned access when the target supports it.
12681         (vect_supportable_dr_alignment): Check for unaligned access support.
12682         * tree-vect-stmts.c (vectorizable_store): Generate misaligned store
12683         and remove asset.
12684
12685 2009-06-05  Julian Brown  <julian@codesourcery.com>
12686
12687         * config/arm/ieee754-df.S (cmpdf2): Avoid writing below SP.
12688         * config/arm/ieee754-sf.S (cmpsf2): Likewise.
12689
12690 2009-06-05  Richard Guenther  <rguenther@suse.de>
12691
12692         PR bootstrap/40350
12693         * dwarf2out.c (dwarf2out_begin_function): Mark discriminator
12694         as possibly unused.
12695
12696 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
12697
12698         * config/s390/s390.c (global_not_special_regno_p): New static inline.
12699         (save_gprs): Don't tell unwinder when a global register is saved.
12700         (s390_emit_epilogue): Emit needed epilogue unwind info.
12701
12702 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
12703
12704         * dwarf2out.c (deferred_asm_name): New.
12705         (add_name_and_src_coords_attributes): Defer creation of
12706         DW_AT_MIPS_linkage_name attribute if DECL_ASSEMBLER_NAME was not
12707         computed yet.
12708         (move_linkage_attr): New.
12709         (dwarf2out_finish): Revisit deferrals and emit attributes at the
12710         right place.
12711
12712 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
12713
12714         * tree-nested.c (finalize_nesting_tree_1): Declare the
12715         frame_decl in the binding tree.
12716
12717 2009-06-04  Cary Coutant  <ccoutant@google.com>
12718
12719         * basic-block.h (struct basic_block_def): Add discriminator field.
12720         * dbxout.c (dbxout_source_line): Add new parameter.  Change all
12721         callers.
12722         * debug.c (do_nothing_debug_hooks): Add additional entry.
12723         (debug_nothing_int_charstar_int): New function.
12724         * debug.h (struct gcc_debug_hooks): Add parameter to source_line hook.
12725         (debug_nothing_int_charstar_int): New declaration.
12726         * dwarf2out.c (dwarf2out_source_line): Add new parameter.  Write
12727         discriminator value in .loc directive.
12728         * final.c (last_discriminator): New variable.
12729         (discriminator): New variable.
12730         (final_start_function): Initialize above variables, pass current
12731         discriminator to debug hook.
12732         (notice_source_line): Check for discriminator change.
12733         * gimple-pretty-print.c (dump_bb_header): Print discriminator value.
12734         * sdbout.c (sdbout_source_line): New parameter.
12735         * tree-cfg.c (struct locus_discrim_map): New structure type.
12736         (discriminator_per_locus): New hash table.
12737         (build_gimple_cfg): Allocate and free discriminator hash table.
12738         (make_edges): Call assign_discriminator.
12739         (locus_map_hash): New function.
12740         (locus_map_eq): New function.
12741         (next_discriminator_for_locus): New function.
12742         (same_line_p): New function.
12743         (assign_discriminator): New function.
12744         (make_cond_expr_edges): Call assign_discriminator.
12745         (make_gimple_switch_edges): Likewise.
12746         (first_non_label_stmt): New function.
12747         * vmsdbgout.c (vmsdbgout_source_line): Add new parameter.  Change
12748         all callers.
12749         * xcoffout.c (xcoffout_source_line): Add new parameter.
12750
12751         * configure.ac (gcc_cv_as_discriminator): New configury check for
12752         gas support for discriminator.
12753         * configure: Regenerate.
12754         * config.in: Regenerate.
12755
12756 2009-06-04  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
12757
12758         * config/arm/arm.c (thumb2_legitimate_index_p): Initialize
12759         val after checking for integers.
12760
12761 2009-06-04  Uros Bizjak  <ubizjak@gmail.com>
12762
12763         * config/i386/i386.h (X86_64_MS_REGPARM_MAX): Rename from
12764         X64_REGPARM_MAX.
12765         (REGPARM_MAX): Use X86_64_MS_REGPARM_MAX.
12766         (X86_64_MS_SSE_REGPARM_MAX): Rename from X64_SSE_REGPARM_MAX.
12767         (SSE_REGPARM_MAX): Use X86_64_MS_SSE_REGPARM_MAX.
12768         * config/i386/i386.c: Use X86_64_MS_REGPARM_MAX instead of
12769         X64_REGPARM_MAX.  Use X86_64_MS_SSE_REGPARM_MAX instead of
12770         X64_SSE_REGPARM_MAX.
12771         * config/i386/i386.md: Use X86_64_MS_SSE_REGPARM_MAX instead of
12772         X64_SSE_REGPARM_MAX.
12773
12774 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
12775
12776         * gcc.c (report_times_to_file): New.
12777         (execute): Implement it.
12778         (process_command): Support -time=.
12779         * doc/invoke.texi: Document it.
12780
12781 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
12782
12783         * tree-ssa-live.c (remove_unused_scope_block_p): Keep variables
12784         that have value exprs.
12785
12786 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
12787
12788         * dwarf2asm.c (dw2_force_const_mem): Defer creation of
12789         declarations for constants until...
12790         (dw2_output_indirect_constant_1): ... this point.
12791
12792 2009-06-04  Richard Earnshaw  <rearnsha@arm.com>
12793
12794         PR target/10242
12795         * arm.md (arm_addsi3): Don't try to split an add with an
12796         eliminable register until after reload has completed.
12797
12798 2009-06-03  Ian Lance Taylor  <iant@google.com>
12799
12800         * dummy-checksum.c (executable_checksum): Use EXPORTED_CONST.
12801         * genattrtab.c (write_length_unit_log): Likewise.
12802         * genchecksum.c (dosum): Likewise.
12803         * gengtype.c (write_rtx_next): Likewise.
12804         (finish_root_table, write_roots): Likewise.
12805         * gimple.c (gimple_ops_offset_): Likewise.
12806         * tree-nomudflap.c (gt_ggc_r_gt_tree_mudflap_h): Likewise.
12807         * config/arc/arc.c (arc_attribute_table): Likewise.
12808         * config/arm/arm.c (arm_attribute_table): Likewise.
12809         * config/avr/avr.c (avr_attribute_table): Likewise.
12810         * config/crx/crx.c (crx_attribute_table): Likewise.
12811         * config/m32r/m32r.c (m32r_attribute_table): Likewise.
12812         * config/m68hc11/m68hc11.c (m68hc11_attribute_table): Likewise.
12813         * config/mcore/mcore.c (mcore_attribute_table): Likewise.
12814         * config/rs6000/rs6000.c (rs6000_attribute_table): Likewise.
12815         * config/sh/sh.c (sh_attribute_table): Likewise.
12816         * config/sparc/sparc.c (sparc_attribute_table): Likewise.
12817         * config/spu/spu.c (spu_attribute_table): Likewise.
12818         * config/v850/v850.c (v850_attribute_table): Likewise.
12819
12820         * config/alpha/alpha.c (vms_attribute_table): Make static.
12821         * config/bfin/bfin.c (bfin_attribute_table): Likewise.
12822         * config/h8300/h8300.c (h8300_attribute_table): Likewise.
12823         * config/mips/mips.c (mips_attribute_table): Likewise.
12824
12825         * Makefile.in (dummy-checksum.o): Depend upon $(CONFIG_H) and
12826         $(SYSTEM_H).
12827         (cc1-checksum.o): Likewise.
12828
12829 2009-06-03  Steve Ellcey  <sje@cup.hp.com>
12830
12831         * config/ia64/vect.md (*movv2sf_internal): Handle big endian case.
12832
12833 2009-06-03  Jakub Jelinek  <jakub@redhat.com>
12834
12835         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Return generated
12836         insn if it is changing sp.  Use gen_add3_insn instead of
12837         conditionally gen_addsi3 and gen_adddi3.
12838         (offset_below_red_zone_p): New static inline function.
12839         (rs6000_emit_epilogue): Emit needed epilogue unwind info.
12840         Use gen_add3_insn instead of conditionally gen_addsi3 and gen_adddi3.
12841         * config/rs6000/ppc-asm.h: Include auto-host.h.
12842         (CFI_STARTPROC, CFI_ENDPROC, CFI_DEF_CFA_REGISTER, CFI_OFFSET,
12843         CFI_RESTORE): Define.
12844         * config/rs6000/crtresxgpr.asm: Add unwind info.
12845         * config/rs6000/crtresxfpr.asm: Likewise.
12846         * config/rs6000/crtresgpr.asm: Likewise.
12847         * config/rs6000/crtresfpr.asm: Likewise.
12848         * config/rs6000/crtsavgpr.asm: Likewise.
12849         * config/rs6000/crtsavfpr.asm: Likewise.
12850
12851         * dwarf2out.c (output_cfi_directive): Pass 1 instead of 0 to second
12852         argument of DWARF2_FRAME_REG_OUT macros.
12853
12854 2009-06-03  Julian Brown  <julian@codesourcery.com>
12855
12856         * config/arm/arm.c (arm_hard_regno_mode_ok): Permit values of four
12857         words or less (including TImode) in core registers.
12858
12859 2009-06-03  Richard Guenther  <rguenther@suse.de>
12860
12861         PR middle-end/40328
12862         * fold-const.c (fold_convert): Fold the build COMPLEX_EXPR.
12863
12864 2009-06-03  Andrey Belevantsev  <abel@ispras.ru>
12865
12866         * statistics.c (statistics_counter_event): Do not record event
12867         in pass dump if its number == -1.
12868         (curr_statistics_hash): Add assert that we never get passes
12869         with static number == -1.
12870
12871 2009-06-03  Richard Guenther  <rguenther@suse.de>
12872             Andrey Belevantsev  <abel@ispras.ru>
12873
12874         * cfgexpand.c (discover_nonconstant_array_refs_r): Make only
12875         non-BLKmode arrays addressable.
12876
12877 2009-06-03  Maxim Kuvyrkov  <maxim@codesourcery.com>
12878
12879         * config/m68k/linux.h (HAVE_GAS_BALIGN_AND_P2ALIGN): Move to ...
12880         * config/m68k/m68k.h: ... here.
12881
12882 2009-06-03  Martin Jambor  <mjambor@suse.cz>
12883
12884         PR tree-optimization/40323
12885         * ipa-prop.c (get_ssa_def_if_simple_copy): Break if not single
12886         assignment.
12887
12888 2009-06-03  Richard Guenther  <rguenther@suse.de>
12889
12890         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
12891         consistently.
12892
12893 2009-06-03  Shujing Zhao  <pearly.zhao@oracle.com>
12894
12895         * config/sh/predicates.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
12896         JUMP_P, CALL_P, NONJUMP_INSN_P, NOTE_P, BARRIER_P and
12897         JUMP_TABLE_DATA_P where applicable.
12898         * config/sh/sh.c: Ditto.
12899         * config/sh/sh.h: Ditto.
12900         * config/sh/sh.md: Ditto.
12901         * config/sh/symbian.c: Ditto.
12902
12903 2009-06-03  Uros Bizjak  <ubizjak@gmail.com>
12904
12905         * config/i386/driver-i386.c (describe_cache): Optimize
12906         concatenation of strings.  Use snprintf instead of sprintf.
12907         (host_detect_local_cpu): Ditto.  Ignore -march and -mtune for native
12908         target when not compiling with GCC.
12909
12910 2009-06-02  Kaz Kojima  <kkojima@gcc.gnu.org>
12911
12912         * config/sh/sh.c: Revert last change.
12913         (sh_expand_epilogue): Emit a blockage insn before the frame
12914         pointer adjustment unconditionally.
12915
12916 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
12917
12918         * config/pa/pa-hpux.h (LINK_SPEC): Remove "%<fwhole-program".
12919         * config/pa/pa-hpux10.h (LINK_SPEC): Likewise.
12920         * config/pa/pa-hpux11.h (LINK_SPEC): Likewise.
12921         * gcc.c (set_collect_gcc_options): Don't add -fwhole-program
12922         to COLLECT_GCC_OPTIONS.
12923
12924 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
12925
12926         * collect2.c (target_system_root): New variable.
12927         (main): Handle --sysroot=.
12928         (ignore_library): Strip the sysroot from the library path.
12929
12930 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
12931
12932         * Makefile.in (COLLECT2_OBJS): Add collect2-aix.o.
12933         (collect2.o): Depend on collect2-aix.h.
12934         (collect2-aix.o): New rule.
12935         * collect2-aix.h: New file.
12936         * collect2-aix.c: Likewise.
12937         * collect2.c: Include collect2-aix.h.  Don't undefine
12938         OBJECT_FORMAT_COFF if CROSS_AIX_SUPPORT is defined.
12939         Guard native includes with #ifndef CROSS_DIRECTORY_STRUCTURE.
12940         Use TARGET_AIX_VERSION instead of _AIX51.
12941         * config/rs6000/aix43.h (TARGET_AIX_VERSION): Define.
12942         * config/rs6000/aix51.h (TARGET_AIX_VERSION): Likewise.
12943         * config/rs6000/aix52.h (TARGET_AIX_VERSION): Likewise.
12944         * config/rs6000/aix53.h (TARGET_AIX_VERSION): Likewise.
12945         * config/rs6000/aix61.h (TARGET_AIX_VERSION): Likewise.
12946
12947 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
12948
12949         * collect2.c (ignore_library): Avoid premature post-increment
12950         and null deference.
12951
12952 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
12953
12954         * Makefile.in (libgcc.mvars): Add TARGET_SYSTEM_ROOT.
12955         * config/rs6000/aix.h (LINK_SYSCALLS_SPEC): Add %R to the
12956         !CROSS_DIRECTORY_STRUCTURE alternative and use it for
12957         CROSS_DIRECTORY_STRUCTURE too.
12958         (LINK_LIBG_SPEC): Likewise.
12959         (LIB_SPEC): Add %R to sysroot paths.
12960         * config/rs6000/aix43.h (CPP_SPEC): Add %R to sysroot paths.
12961         (CPLUSPLUS_CPP_SPEC, LIB_SPEC): Likewise.
12962         * config/rs6000/aix51.h: As for aix43.h.
12963         * config/rs6000/aix52.h: Likewise.
12964         * config/rs6000/aix53.h: Likewise.
12965         * config/rs6000/aix61.h: Likewise.
12966         * config/rs6000/t-aix52 (SHLIB_LINK): Add $(TARGET_SYSTEM_ROOT)
12967         to the beginning of sysroot paths.
12968
12969 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
12970
12971         * print_rtl (print_rtx): Don't print modes in EXPR_LISTs and
12972         INSN_LISTs that are out of the REG_NOTE range.
12973
12974 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
12975
12976         * loop-unroll.c (struct iv_to_split): Add pointer to next.
12977         (struct var_to_expand): Likewise.
12978         (struct opt_info): Add head and tail for linked lists of the above.
12979         (analyze_insn_to_expand_var): Initialize next.
12980         (analyze_iv_to_split_insn): Likewise.
12981         (analyze_insns_in_loop): Create linked lists.
12982         (allocate_basic_variable): Simplify for use without hash table.
12983         (insert_var_expansion_initialization): Likewise, make it type-safer.
12984         (combine_var_copies_in_loop_exit): Likewise.
12985         (apply_opt_in_copies): Walk lists rather than hash tables.
12986         (release_var_copies): Simplified and inlined by hand into...
12987         (free_opt_info): ... this function.
12988
12989 2009-06-02  Richard Guenther  <rguenther@suse.de>
12990
12991         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
12992         for field decls.
12993
12994 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
12995
12996         * cfgexpand.c (gimple_expand_cfg): Discard the source location
12997         only for builtins that are not overridden.
12998
12999 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
13000
13001         * gengtype.c (adjust_field_rtx_def): Add NOTE_INSN_DELETED_LABEL's
13002         label string.
13003
13004 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
13005
13006         * df-core.c (df_ref_debug): Honor -fdump-noaddr.
13007
13008 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
13009
13010         * combine.c (move_deaths): Compare LUIDs within the same BB only.
13011
13012 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
13013
13014         * common.opt (fdump-unnumbered-links): New.
13015         * doc/invoke.texi (-fdump-unnumbered-links): Document it.
13016         * print-rtl.c (flag_dump_unnumbered_links): New.
13017         (print_rtx): Test it.
13018
13019 2009-06-02  Richard Earnshaw  <rearnsha@arm.com>
13020
13021         * arm.c (arm_get_frame_offsets): Prefer using r3 for padding a
13022         push/pop multiple to 8-byte alignment.
13023
13024 2009-06-01  Jakub Jelinek  <jakub@redhat.com>
13025
13026         * config/i386/i386.c (queued_cfa_restores): New static variable.
13027         (ix86_add_cfa_restore_note, ix86_add_queued_cfa_restore_notes): New
13028         functions.
13029         (pro_epilogue_adjust_stack): Call ix86_add_queued_cfa_restore_notes.
13030         (ix86_emit_restore_reg_using_pop): Add RED_OFFSET argument.
13031         Set RTX_FRAME_RELATED_P immediately after adding a REG_CFA_* note.
13032         Call ix86_add_cfa_restore_note instead of adding REG_CFA_OFFSET
13033         note unconditionally.
13034         (ix86_emit_restore_regs_using_mov): Likewise.
13035         (ix86_emit_restore_sse_regs_using_mov): Likewise.
13036         (ix86_emit_restore_regs_using_pop): Add RED_OFFSET argument, pass
13037         it through to ix86_emit_restore_reg_using_pop.
13038         (ix86_emit_leave): Add RED_OFFSET argument.  Call
13039         ix86_add_queued_cfa_restore_notes.  Call ix86_add_cfa_restore_note
13040         instead of adding REG_CFA_OFFSET note unconditionally.
13041         (ix86_expand_epilogue): Compute RED_OFFSET, pass it down to
13042         the above functions.  Call ix86_add_queued_cfa_restore_notes when
13043         needed.
13044
13045         * dwarf2out.c (dwarf2out_cfi_label): Add FORCE argument, if true,
13046         force output of the label even for dwarf2out_do_cfi_asm.
13047         (add_fde_cfi): If -g2 and above and cfi might change CFA,
13048         force creation of CFI label and chain DW_CFA_set_loc jumping to it
13049         for convert_cfa_to_fb_loc_list.  Adjust other dwarf2out_cfi_label
13050         caller.
13051         (dwarf2out_stack_adjust, dwarf2out_frame_debug,
13052         dwarf2out_begin_epilogue, dwarf2out_frame_debug_restore_state): Adjust
13053         dwarf2out_cfi_label callers.
13054         * tree.h (dwarf2out_cfi_label): Adjust prototype.
13055         * config/arm/arm.c (thumb_pushpop, thumb1_output_function_prologue):
13056         Adjust dwarf2out_cfi_label callers.
13057         * config/vax/vax.c (vax_output_function_prologue): Likewise.
13058
13059         * config/i386/i386.h (struct machine_cfa_state,
13060         struct machine_function): Guard with ifndef USED_FOR_TARGET
13061         instead of not IN_LIBGCC2 and not in IN_TARGET_LIBS.
13062
13063         PR other/40024
13064         * emutls.c (__emutls_get_address): Change arr->size to mean number
13065         of allocated arr->data entries instead of # of slots + 1.
13066
13067         PR middle-end/40316
13068         * recog.c (peep2_reinit_state): New function.
13069         (peephole2_init_state): Use it at the end of a basic block and also
13070         when seeing a RTX_FRAME_RELATED_P insn.
13071
13072 2009-06-01  Steve Ellcey  <sje@cup.hp.com>
13073
13074         * ia64.md (floatdirf2, fix_truncrfdi, floatunsdirf,
13075         fixuns_truncrfdi2): New.
13076         (fix_truncxfdi2_alts, fixuns_truncxfdi2_alts,
13077         *nmaddsf4_alts, *nmadddf4_alts, *nmadddf4_truncsf_alts,
13078         *mulxf3_alts, *mulxf3_truncsf_alts, *mulxf3_truncdf_alts,
13079         *maddxf4_alts, *maddxf4_alts_truncsf, *maddxf4_alts_truncdf,
13080         *nmaddxf4_alts, *nmaddxf4_truncsf_alts, *nmaddxf4_truncdf_alts,
13081         *recip_approx): Remove.
13082         (divsi3 modsi3, udivsi3, umodsi3, divsi3_internal, divdi3,
13083         moddi3, udivdi3, umoddi3, divdi3_internal_lat, divdi3_internal_thr,
13084         divsf3, sqrtsf2, divdf3, sqrtdf2, divxf3, sqrtxf2): Modify and
13085         move to div.md.
13086         * div.md (fix_truncrfdi2_alts, fixuns_truncrfdi2_alt,
13087         setf_exp_rf): New.
13088
13089 2009-06-01  Ian Lance Taylor  <iant@google.com>
13090
13091         * attribs.c (register_attribute): Use CONST_CAST.
13092         * collect2.c (main): Use CONST_CAST2.
13093         (scan_prog_file): Likewise.
13094         * gcc.c (process_command, main): Likewise.
13095         * toplev.c (toplev_main): Likewise.
13096
13097         * c-typeck.c (handle_warn_cast_qual): New static function,
13098         partially broken out of build_c_cast.
13099         (build_c_cast): Call handle_warn_cast_qual.
13100         * doc/invoke.texi (Warning Options): Document new effect of
13101         -Wcast-qual.
13102
13103 2009-06-01  Aldy Hernandez  <aldyh@redhat.com>
13104
13105         * diagnostic.c (diagnostic_build_prefix): Always print columns.
13106         (diagnostic_report_current_module): Print columns.
13107         * common.opt (flag_show_column): Enable by default.
13108
13109 2009-06-01  Luis Machado  <luisgpm@br.ibm.com>
13110
13111         * alias.c (find_base_term): Check for NULL term before returning.
13112
13113 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
13114
13115         Revert due to PR40320:
13116         2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
13117         * calls.c (emit_library_call_value_1): Don't force_operand for move
13118         and push insns.
13119
13120 2009-06-01  Olivier Hainque  <hainque@adacore.com>
13121             Eric Botcazou  <ebotcazou@adacore.com>
13122
13123         * tree.h (CONSTRUCTOR_BITFIELD_P): True if NODE, a FIELD_DECL, is
13124         to be processed as a bitfield for constructor output purposes.
13125         * output.h (initializer_constant_valid_for_bitfield_p): Declare
13126         new function.
13127         * varasm.c (oc_local_state): New type, output_constructor
13128         local state to support communication with helpers.
13129         (oc_outer_state): New type, output_constructor outer state of
13130         relevance in recursive calls.
13131         (output_constructor_array_range): New output_constructor helper,
13132         extracted code for an array range element.
13133         (output_constructor_regular_field): New output_constructor helper,
13134         extracted code for an element that is not a bitfield.
13135         (output_constructor_bitfield): New output_constructor helper,
13136         extracted code for a bitfield element.  Accept an OUTER state
13137         argument for recursive processing.  Recurse on record or array
13138         CONSTRUCTOR values, possibly past noop conversions.
13139         (initializer_constant_valid_for_bitfield_p): New predicate.  Whether
13140         VALUE is a valid constant-valued expression for use in a static
13141         bit-field initializer.
13142         (output_constructor): Rework to use helpers.  Accept and honor an
13143         OUTER state argument for recursive calls.  Return total size.  Be
13144         prepared for nested constructors initializing bitfields.
13145         (output_constant): Feed OUTER in calls to output_constructor.
13146
13147 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
13148
13149         * calls.c (emit_library_call_value_1): Don't force_operand for move
13150         and push insns.
13151
13152 2009-06-01  Nick Clifton  <nickc@redhat.com>
13153
13154         * doc/invoke.texi (IA-64 Options): Fix typo.
13155
13156 2009-06-01  Ira Rosen  <irar@il.ibm.com>
13157
13158         PR tree-optimization/39129
13159         * tree-vect-loop-manip.c (conservative_cost_threshold): Change the
13160         printed message.
13161         (vect_do_peeling_for_loop_bound): Use
13162         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
13163         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
13164         (vect_loop_versioning): Likewise.
13165         (vect_create_cond_for_alias_checks): Fix indentation.
13166         * tree-vectorizer.h (struct _loop_vec_info): Fix indentation of the
13167         macros.
13168         (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT): Define.
13169         (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Likewise.
13170         * tree-vect-loop.c (vect_analyze_loop_form): Change "too many BBs" to
13171         "control flow in loop".
13172         (vect_estimate_min_profitable_iters): Use
13173         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
13174         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
13175         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
13176         (vect_create_data_ref_ptr): Don't mention array dimension in printing.
13177         * tree-vect-stmts.c (vectorizable_store): Replace the check that the
13178         statement belongs to a group of strided accesses with the exact code
13179         check.
13180         (vectorizable_load): Likewise.
13181         * tree-vect-slp.c (vect_analyze_slp_instance): Spell out "basic block".
13182         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
13183
13184 2009-06-01  Gerald Pfeifer  <gerald@pfeifer.com>
13185
13186         * config/freebsd-stdint.h: New file.
13187         * config.gcc (*-*-freebsd): Set use_gcc_stdint=wrap.
13188         Add freebsd-stdint.h to tm_file.
13189
13190 2009-06-01  Richard Earnshaw  <rearnsha@arm.com>
13191
13192         * arm/thumb2.md (thumb2_zero_extendhidi2): New insn and split.
13193         (thumb2_extendhidi2): Likewise.
13194
13195 2009-05-31  Ian Lance Taylor  <iant@google.com>
13196
13197         * regstat.c (regstat_n_sets_and_refs): Remove duplicate definition.
13198
13199 2009-05-31  Ian Lance Taylor  <iant@google.com>
13200
13201         * Makefile.in (except.o): Depend upon gt-except.h, not gt-$(EXCEPT_H).
13202         (ipa-cp.o): Depend upon $(FIBHEAP_H) and $(PARAMS_H).
13203         (ipa-reference.o): Depend upon gt-ipa-reference.h.
13204
13205 2009-05-31  Jason Merrill  <jason@redhat.com>
13206
13207         * tree-pretty-print.c (print_call_name): Take the callee, not the
13208         call itself.  Make non-static.  Use dump_function_name for functions.
13209         (dump_generic_node): Adjust.
13210         * diagnostic.h: Declare print_call_name.
13211         * gimple-pretty-print.c (dump_gimple_call): Use it.
13212
13213 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
13214
13215         * config/sh/sh.md (ashldi3_std): New define_expand.
13216         (ashldi3): Use it.
13217
13218 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
13219
13220         PR target/40313
13221         * config/sh/sh.c: Include debug.h.
13222         (sh_expand_epilogue): Emit a blockage insn before the frame
13223         pointer adjustment also when dwarf2out_do_frame returns true.
13224
13225 2009-05-31  Richard Earnshaw  <rearnsha@arm.com>
13226
13227         * arm/thumb2.md (thumb2_extendsidi2): Add a split sub-pattern.
13228         (thumb2_extendqidi2): New pattern.
13229
13230 2009-05-31  Ira Rosen  <irar@il.ibm.com>
13231
13232         * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1): Don't
13233         mark phis for renaming.
13234         * tree-vectorizer.c (vect_memsyms_to_rename): Remove.
13235         (vectorize_loops): Don't allocate and free vect_memsyms_to_rename.
13236         Call mark_sym_for_renaming.
13237         * tree-vectorizer.h (vect_memsyms_to_rename): Remove.
13238         * tree-vect-loop.c (vect_transform_loop): Remove
13239         vect_memsyms_to_rename initialization and a call to
13240         mark_set_for_renaming.
13241
13242 2009-05-31  Jakub Jelinek  <jakub@redhat.com>
13243
13244         PR middle-end/40304
13245         * config/i386/i386.c (pro_epilogue_adjust_stack): Mark insns
13246         frame related even if !set_cfa && style < 0.
13247
13248 2009-05-30  Kai Tietz  <kai.tietz@onevision.com>
13249
13250         * config/i386/mingw-tls.c: New file.
13251         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Add mingw-tls.c file.
13252         * gthr-win32.h (MINGW32_SUPPORTS_MT_EH): Define it for targets
13253         defining _WIN32 but not __CYGWIN__.
13254
13255 2009-05-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13256
13257         * configure.ac: Add MPC support.
13258
13259         * config.in, configure: Regenerate.
13260
13261 2009-05-29  Richard Henderson  <rth@redhat.com>
13262
13263         * cfgcleanup.c (try_crossjump_to_edge): Only skip past
13264         NOTE_INSN_BASIC_BLOCK.
13265         * cfglayout.c (duplicate_insn_chain): Copy epilogue insn marks.
13266         Duplicate NOTE_INSN_EPILOGUE_BEG notes.
13267         * cfgrtl.c (can_delete_note_p): Allow NOTE_INSN_EPILOGUE_BEG
13268         to be deleted.
13269         * dwarf2out.c (struct cfa_loc): Change indirect field to bitfield,
13270         add in_use field.
13271         (add_cfi): Disable check redefining cfa away from drap.
13272         (lookup_cfa_1): Add remember argument; handle remember/restore.
13273         (lookup_cfa): Pass remember argument.
13274         (cfa_remember): New.
13275         (compute_barrier_args_size_1): Remove sibcall check.
13276         (dwarf2out_frame_debug_def_cfa): New.
13277         (dwarf2out_frame_debug_adjust_cfa): New.
13278         (dwarf2out_frame_debug_cfa_offset): New.
13279         (dwarf2out_frame_debug_cfa_register): New.
13280         (dwarf2out_frame_debug_cfa_restore): New.
13281         (dwarf2out_frame_debug): Handle REG_CFA_* notes.
13282         (dwarf2out_begin_epilogue): New.
13283         (dwarf2out_frame_debug_restore_state): New.
13284         (dw_cfi_oprnd1_desc): Handle DW_CFA_remember_state,
13285         DW_CFA_restore_state.
13286         (output_cfi_directive): Likewise.
13287         (convert_cfa_to_fb_loc_list): Likewise.
13288         (dw_cfi_oprnd1_desc): Handle DW_CFA_restore.
13289         * dwarf2out.h: Update.
13290         * emit-rtl.c (try_split): Don't split RTX_FRAME_RELATED_P.
13291         (copy_insn_1): Early out for null.
13292         * final.c (final_scan_insn): Call dwarf2out_begin_epilogue
13293         and dwarf2out_frame_debug_restore_state.
13294         * function.c (prologue, epilogue, sibcall_epilogue): Remove.
13295         (prologue_insn_hash, epilogue_insn_hash): New.
13296         (free_after_compilation): Adjust freeing accordingly.
13297         (record_insns): Create hash table if needed; push insns into
13298         hash instead of array.
13299         (maybe_copy_epilogue_insn): New.
13300         (contains): Search hash table instead of array.
13301         (sibcall_epilogue_contains): Remove.
13302         (thread_prologue_and_epilogue_insns): Split eh_return insns
13303         and mark them as epilogues.
13304         (reposition_prologue_and_epilogue_notes): Rewrite epilogue
13305         scanning in terms of basic blocks.
13306         * insn-notes.def (CFA_RESTORE_STATE): New.
13307         * jump.c (returnjump_p_1): Accept EH_RETURN.
13308         (eh_returnjump_p_1, eh_returnjump_p): New.
13309         * reg-notes.def (CFA_DEF_CFA, CFA_ADJUST_CFA, CFA_OFFSET,
13310         CFA_REGISTER, CFA_RESTORE): New.
13311         * rtl.def (EH_RETURN): New.
13312         * rtl.h (eh_returnjump_p, maybe_copy_epilogue_insn): Declare.
13313
13314         * config/bfin/bfin.md (UNSPEC_VOLATILE_EH_RETURN): Remove.
13315         (eh_return_internal): Use eh_return rtx; split w/ epilogue.
13316
13317         * config/i386/i386.c (gen_push): Update cfa state.
13318         (pro_epilogue_adjust_stack): Add set_cfa argument.  When true,
13319         add a CFA_ADJUST_CFA note.
13320         (ix86_dwarf_handle_frame_unspec): Remove.
13321         (ix86_expand_prologue): Update cfa state.
13322         (ix86_emit_restore_reg_using_pop): New.
13323         (ix86_emit_restore_regs_using_pop): New.
13324         (ix86_emit_leave): New.
13325         (ix86_emit_restore_regs_using_mov): Add CFA_RESTORE notes.
13326         (ix86_expand_epilogue): Add notes for unwinding the epilogue.
13327         * config/i386/i386.h (struct machine_cfa_state): New.
13328         (ix86_cfa_state): New.
13329         * config/i386/i386.md (UNSPEC_EH_RETURN): Remove.
13330         (eh_return_internal): Merge from eh_return_<mode>,
13331         use eh_return rtx, split w/ epilogue.
13332
13333 2009-05-29  Ian Lance Taylor  <iant@google.com>
13334
13335         * builtins.c (validate_gimple_arglist): Don't use va_arg with
13336         enum type.
13337         * calls.c (emit_library_call_value_1): Likewise.
13338
13339         * c-typeck.c (c_build_va_arg): New function.
13340         * c-tree.h (c_build_va_arg): Declare.
13341         * c-parser.c (c_parser_postfix_expression): Call c_build_va_arg
13342         instead of build_va_arg.
13343
13344 2009-05-29  Eric Botcazou  <ebotcazou@adacore.com>
13345
13346         * tree-ssa-loop-ivopts.c (strip_offset_1) <MULT_EXPR>: New case.
13347         (force_expr_to_var_cost) <NEGATE_EXPR>: Likewise.
13348         (ptr_difference_cost): Use affine combinations to compute it.
13349         (difference_cost): Likewise.
13350         (get_computation_cost_at): Compute more accurate cost for addresses
13351         if the ratio is a multiplier allowed in addresses.
13352         For non-addresses, consider that an additional offset or symbol is
13353         added only once.
13354
13355 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
13356
13357         * config/i386/i386.c (ix86_decompose_address): Avoid useless
13358         0 displacement.  Add 0 displacement if base is %[er]bp or %r13.
13359
13360         * config/i386/i386.md (prefix_data16, prefix_rep): Set to 0 for
13361         TYPE_SSE{MULADD,4ARG,IADD1,CVT1} by default.
13362         (prefix_rex): For UNIT_MMX don't imply the prefix by default
13363         if MODE_DI.
13364         (prefix_extra): Default to 2 for TYPE_SSE{MULADD,4ARG} and
13365         to 1 for TYPE_SSE{IADD1,CVT1}.
13366         (prefix_vex_imm8): Removed.
13367         (length_vex): Only pass 1 as second argument to
13368         ix86_attr_length_vex_default if prefix_extra is 0.
13369         (modrm): For TYPE_INCDEC only set to 0 if not TARGET_64BIT.
13370         (length): For prefix vex computation use length_immediate
13371         attribute instead of prefix_vex_imm8.
13372         (cmpqi_ext_3_insn, cmpqi_ext_3_insn_rex64,
13373         addqi_ext_1, addqi_ext_1_rex64, *testqi_ext_0, andqi_ext_0,
13374         *andqi_ext_0_cc, *iorqi_ext_0, *xorqi_ext_0, *xorqi_cc_ext_1,
13375         *xorqi_cc_ext_1_rex64): Override modrm attribute to 1.
13376         (extendsidi2_rex64, extendhidi2, extendqidi2, extendhisi2,
13377         *extendhisi2_zext, extendqihi2, extendqisi2, *extendqisi2_zext): Emit
13378         a space in between the operands.
13379         (*anddi_1_rex64, *andsi_1): Likewise.  Override prefix_rex to 1
13380         if one operand is 0xff and the other one si, di, bp or sp.
13381         (*andhi_1): Override prefix_rex to 1 if one operand is 0xff and the
13382         other one si, di, bp or sp.
13383         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Add mode attribute.
13384         (*ffssi_1, *ffsdi_1, ctzsi2, ctzdi2): Add
13385         type and mode attributes.
13386         (*bsr, *bsr_rex64, *bsrhi): Add type attribute.
13387         (*cmpfp_i_mixed, *cmpfp_iu_mixed): For TYPE_SSECOMI, clear
13388         prefix_rep attribute and set prefix_data16 attribute iff MODE_DF.
13389         (*cmpfp_i_sse, *cmpfp_iu_sse): Clear prefix_rep attribute and set
13390         prefix_data16 attribute iff MODE_DF.
13391         (*movsi_1): For TYPE_SSEMOV MODE_SI set prefix_data16 attribute.
13392         (fix_trunc<mode>di_sse): Set prefix_rex attribute.
13393         (*adddi_4_rex64, *addsi_4): Use const128_operand instead of
13394         constm128_operand in length_immediate computation.
13395         (*addhi_4): Likewise.  Fix mode attribute to MODE_HI.
13396         (anddi_1_rex64): Use movzbl/movzwl instead of movzbq/movzwq.
13397         (*avx_ashlti3, sse2_ashlti3, *avx_lshrti3, sse2_lshrti3): Set
13398         length_immediate attribute to 1.
13399         (x86_fnstsw_1, x86_fnstcw_1, x86_fldcw_1): Fix length attribute.
13400         (*movdi_1_rex64): Override prefix_rex or prefix_data16 attributes
13401         for certain alternatives.
13402         (*movdf_nointeger, *movdf_integer_rex64, *movdf_integer): Override
13403         prefix_data16 attribute if MODE_V1DF.
13404         (*avx_setcc<mode>, *sse_setcc<mode>, *sse5_setcc<mode>): Set
13405         length_immediate to 1.
13406         (set_got_rex64, set_rip_rex64): Remove length attribute, set
13407         length_address to 4, set mode attribute to MODE_DI.
13408         (set_got_offset_rex64): Likewise.  Set length_immediate to 0.
13409         (fxam<mode>2_i387): Set length attribute to 4.
13410         (*prefetch_sse, *prefetch_sse_rex, *prefetch_3dnow,
13411         *prefetch_3dnow_rex): Override length_address attribute.
13412         (sse4_2_crc32<mode>): Override prefix_data16 and prefix_rex
13413         attributes.
13414         * config/i386/predicates.md (ext_QIreg_nomode_operand): New predicate.
13415         (constm128_operand): Removed.
13416         * config/i386/i386.c (memory_address_length): For
13417         disp && !index && !base in 64-bit mode account for SIB byte if
13418         print_operand_address can't optimize disp32 into disp32(%rip)
13419         and UNSPEC doesn't imply (%rip) addressing.  Add 1 to length
13420         for fs: or gs: segment.
13421         (ix86_attr_length_immediate_default): When checking if shortform
13422         is possible, truncate immediate to the length of the non-shortened
13423         immediate.
13424         (ix86_attr_length_address_default): Ignore MEM_P operands
13425         with X constraint.
13426         (ix86_attr_length_vex_default): Only check for DImode on
13427         GENERAL_REG_P operands.
13428         * config/i386/sse.md (<sse>_comi, <sse>_ucomi): Clear
13429         prefix_rep attribute, set prefix_data16 attribute iff MODE_DF.
13430         (sse_cvttps2pi): Clear prefix_rep attribute.
13431         (sse2_cvttps2dq, *sse2_cvtpd2dq, sse2_cvtps2pd): Clear prefix_data16
13432         attribute.
13433         (*sse2_cvttpd2dq): Don't clear prefix_rep attribute.
13434         (*avx_ashr<mode>3, ashr<mode>3, *avx_lshr<mode>3, lshr<mode>3,
13435         *avx_ashl<mode>3, ashl<mode>3): Set length_immediate attribute to 1
13436         iff operand 2 is const_int_operand.
13437         (*vec_dupv4si, avx_shufpd256_1, *avx_shufpd_<mode>,
13438         sse2_shufpd_<mode>): Set length_immediate attribute to 1.
13439         (sse2_pshufd_1): Likewise.  Set prefix attribute to maybe_vex
13440         instead of vex.
13441         (sse2_pshuflw_1, sse2_pshufhw_1): Set length_immediate to 1 and clear
13442         prefix_data16.
13443         (sse2_unpckhpd, sse2_unpcklpd, sse2_storehpd, *vec_concatv2df): Set
13444         prefix_data16 attribute for movlpd and movhpd instructions.
13445         (sse2_loadhpd, sse2_loadlpd, sse2_movsd): Likewise.  Override
13446         length_immediate for shufpd instruction.
13447         (sse2_movntsi, sse3_lddqu): Clear prefix_data16 attribute.
13448         (avx_cmpp<avxmodesuffixf2c><mode>3,
13449         avx_cmps<ssemodesuffixf2c><mode>3, *avx_maskcmp<mode>3,
13450         <sse>_maskcmp<mode>3, <sse>_vmmaskcmp<mode>3,
13451         avx_shufps256_1, *avx_shufps_<mode>, sse_shufps_<mode>,
13452         *vec_dupv4sf_avx, *vec_dupv4sf): Set length_immediate attribute to 1.
13453         (*avx_cvtsi2ssq, *avx_cvtsi2sdq): Set length_vex attribute to 4.
13454         (sse_cvtsi2ssq, sse2_cvtsi2sdq): Set prefix_rex attribute to 1.
13455         (sse2_cvtpi2pd, sse_loadlps, sse2_storelpd): Override
13456         prefix_data16 attribute for the first alternative to 1.
13457         (*avx_loadlps): Override length_immediate for the first alternative.
13458         (*vec_concatv2sf_avx): Override length_immediate and prefix_extra
13459         attributes for second alternative.
13460         (*vec_concatv2sf_sse4_1): Override length_immediate and
13461         prefix_data16 attributes for second alternative.
13462         (*vec_setv4sf_avx, *avx_insertps, vec_extract_lo_<mode>,
13463         vec_extract_hi_<mode>, vec_extract_lo_v16hi,
13464         vec_extract_hi_v16hi, vec_extract_lo_v32qi,
13465         vec_extract_hi_v32qi): Set prefix_extra and length_immediate to 1.
13466         (*vec_setv4sf_sse4_1, sse4_1_insertps, *sse4_1_extractps): Set
13467         prefix_data16 and length_immediate to 1.
13468         (*avx_mulv2siv2di3, *avx_mulv4si3, sse4_2_gtv2di3): Set prefix_extra
13469         to 1.
13470         (*avx_<code><mode>3, *avx_eq<mode>3, *avx_gt<mode>3): Set
13471         prefix_extra attribute for variants that don't have 0f prefix alone.
13472         (*avx_pinsr<ssevecsize>): Likewise.  Set length_immediate to 1.
13473         (*sse4_1_pinsrb, *sse2_pinsrw, *sse4_1_pinsrd, *sse4_1_pextrb,
13474         *sse4_1_pextrb_memory, *sse2_pextrw, *sse4_1_pextrw_memory,
13475         *sse4_1_pextrd): Set length_immediate to 1.
13476         (*sse4_1_pinsrd): Likewise.  Set prefix_extra to 1.
13477         (*sse4_1_pinsrq, *sse4_1_pextrq): Set prefix_rex and length_immediate
13478         to 1.
13479         (*vec_extractv2di_1_rex64_avx, *vec_extractv2di_1_rex64,
13480         *vec_extractv2di_1_avx, *vec_extractv2di_1_sse2): Override
13481         length_immediate to 1 for second alternative.
13482         (*vec_concatv2si_avx, *vec_concatv2di_rex64_avx): Override
13483         prefix_extra and length_immediate attributes for the first
13484         alternative.
13485         (vec_concatv2si_sse4_1): Override length_immediate to 1 for the
13486         first alternative.
13487         (*vec_concatv2di_rex64_sse4_1): Likewise.  Override prefix_rex
13488         to 1 for the first and third alternative.
13489         (*vec_concatv2di_rex64_sse): Override prefix_rex to 1 for the second
13490         alternative.
13491         (*sse2_maskmovdqu, *sse2_maskmovdqu_rex64): Override length_vex
13492         attribute.
13493         (*sse_sfence, sse2_mfence, sse2_lfence): Override length_address
13494         attribute to 0.
13495         (*avx_phaddwv8hi3, *avx_phadddv4si3, *avx_phaddswv8hi3,
13496         *avx_phsubwv8hi3, *avx_phsubdv4si3, *avx_phsubswv8hi,
13497         *avx_pmaddubsw128, *avx_pmulhrswv8hi3, *avx_pshufbv16qi3,
13498         *avx_psign<mode>3): Set prefix_extra attribute to 1.
13499         (ssse3_phaddwv4hi3, ssse3_phadddv2si3, ssse3_phaddswv4hi3,
13500         ssse3_phsubwv4hi3, ssse3_phsubdv2si3, ssse3_phsubswv4hi3,
13501         ssse3_pmaddubsw, *ssse3_pmulhrswv4hi, ssse3_pshufbv8qi3,
13502         ssse3_psign<mode>3): Override prefix_rex attribute.
13503         (*avx_palignrti): Override prefix_extra and length_immediate to 1.
13504         (ssse3_palignrti): Override length_immediate to 1.
13505         (ssse3_palignrdi): Override length_immediate to 1, override
13506         prefix_rex attribute.
13507         (abs<mode>2): Override prefix_rep to 0, override prefix_rex attribute.
13508         (sse4a_extrqi): Override length_immediate to 2.
13509         (sse4a_insertqi): Likewise.  Override prefix_data16 to 0.
13510         (sse4a_insertq): Override prefix_data16 to 0.
13511         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>,
13512         avx_blendvp<avxmodesuffixf2c><avxmodesuffix>,
13513         avx_dpp<avxmodesuffixf2c><avxmodesuffix>, *avx_mpsadbw,
13514         *avx_pblendvb, *avx_pblendw, avx_roundp<avxmodesuffixf2c>256,
13515         avx_rounds<avxmodesuffixf2c>256): Override prefix_extra
13516         and length_immediate to 1.
13517         (sse4_1_blendp<ssemodesuffixf2c>, sse4_1_dpp<ssemodesuffixf2c>,
13518         sse4_2_pcmpestr, sse4_2_pcmpestri, sse4_2_pcmpestrm,
13519         sse4_2_pcmpestr_cconly, sse4_2_pcmpistr, sse4_2_pcmpistri,
13520         sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): Override prefix_data16
13521         and length_immediate to 1.
13522         (sse4_1_blendvp<ssemodesuffixf2c>): Override prefix_data16 to 1.
13523         (sse4_1_mpsadbw, sse4_1_pblendw): Override length_immediate to 1.
13524         (*avx_packusdw, avx_vtestp<avxmodesuffixf2c><avxmodesuffix>,
13525         avx_ptest256): Override prefix_extra to 1.
13526         (sse4_1_roundp<ssemodesuffixf2c>, sse4_1_rounds<ssemodesuffixf2c>):
13527         Override prefix_data16 and length_immediate to 1.
13528         (sse5_pperm_zero_v16qi_v8hi, sse5_pperm_sign_v16qi_v8hi,
13529         sse5_pperm_zero_v8hi_v4si, sse5_pperm_sign_v8hi_v4si,
13530         sse5_pperm_zero_v4si_v2di, sse5_pperm_sign_v4si_v2di,
13531         sse5_vrotl<mode>3, sse5_ashl<mode>3, sse5_lshl<mode>3): Override
13532         prefix_data16 to 0 and prefix_extra to 2.
13533         (sse5_rotl<mode>3, sse5_rotr<mode>3): Override length_immediate to 1.
13534         (sse5_frcz<mode>2, sse5_vmfrcz<mode>2): Don't override prefix_extra
13535         attribute.
13536         (*sse5_vmmaskcmp<mode>3, sse5_com_tf<mode>3,
13537         sse5_maskcmp<mode>3, sse5_maskcmp<mode>3, sse5_maskcmp_uns<mode>3):
13538         Override prefix_data16 and prefix_rep to 0, length_immediate to 1
13539         and prefix_extra to 2.
13540         (sse5_maskcmp_uns2<mode>3, sse5_pcom_tf<mode>3): Override
13541         prefix_data16 to 0, length_immediate to 1 and prefix_extra to 2.
13542         (*avx_aesenc, *avx_aesenclast, *avx_aesdec, *avx_aesdeclast,
13543         avx_vpermilvar<mode>3,
13544         avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>,
13545         avx_vbroadcastss256, avx_vbroadcastf128_p<avxmodesuffixf2c>256,
13546         avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>,
13547         avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>):
13548         Override prefix_extra to 1.
13549         (aeskeygenassist, pclmulqdq): Override length_immediate to 1.
13550         (*vpclmulqdq, avx_vpermil<mode>, avx_vperm2f128<mode>3,
13551         vec_set_lo_<mode>, vec_set_hi_<mode>, vec_set_lo_v16hi,
13552         vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Override
13553         prefix_extra and length_immediate to 1.
13554         (*avx_vzeroall, avx_vzeroupper, avx_vzeroupper_rex64): Override
13555         modrm to 0.
13556         (*vec_concat<mode>_avx): Override prefix_extra and length_immediate
13557         to 1 for the first alternative.
13558         * config/i386/mmx.md (*mov<mode>_internal_rex64): Override
13559         prefix_rep, prefix_data16 and/or prefix_rex attributes in certain
13560         cases.
13561         (*mov<mode>_internal_avx, *movv2sf_internal_rex64,
13562         *movv2sf_internal_avx, *movv2sf_internal): Override
13563         prefix_rep attribute for certain alternatives.
13564         (*mov<mode>_internal): Override prefix_rep or prefix_data16
13565         attributes for certain alternatives.
13566         (*movv2sf_internal_rex64_avx): Override prefix_rep and length_vex
13567         attributes for certain alternatives.
13568         (*mmx_addv2sf3, *mmx_subv2sf3, *mmx_mulv2sf3,
13569         *mmx_<code>v2sf3_finite, *mmx_<code>v2sf3, mmx_rcpv2sf2,
13570         mmx_rcpit1v2sf3, mmx_rcpit2v2sf3, mmx_rsqrtv2sf2, mmx_rsqit1v2sf3,
13571         mmx_haddv2sf3, mmx_hsubv2sf3, mmx_addsubv2sf3,
13572         *mmx_eqv2sf3, mmx_gtv2sf3, mmx_gev2sf3, mmx_pf2id, mmx_pf2iw,
13573         mmx_pi2fw, mmx_floatv2si2, mmx_pswapdv2sf2, *mmx_pmulhrwv4hi3,
13574         mmx_pswapdv2si2): Set prefix_extra attribute to 1.
13575         (mmx_ashr<mode>3, mmx_lshr<mode>3, mmx_ashl<mode>3): Set
13576         length_immediate to 1 if operand 2 is const_int_operand.
13577         (*mmx_pinsrw, mmx_pextrw, mmx_pshufw_1, *vec_dupv4hi,
13578         *vec_extractv2si_1): Set length_immediate attribute to 1.
13579         (*mmx_uavgv8qi3): Override prefix_extra attribute to 1 if
13580         using old 3DNOW insn rather than SSE/3DNOW_A.
13581         (mmx_emms, mmx_femms): Clear modrm attribute.
13582
13583 2009-05-29  Martin Jambor  <mjambor@suse.cz>
13584
13585         * tree-sra.c:  New implementation of SRA.
13586
13587         * params.def (PARAM_SRA_MAX_STRUCTURE_SIZE): Removed.
13588         (PARAM_SRA_MAX_STRUCTURE_COUNT): Removed.
13589         (PARAM_SRA_FIELD_STRUCTURE_RATIO): Removed.
13590         * params.h (SRA_MAX_STRUCTURE_SIZE): Removed.
13591         (SRA_MAX_STRUCTURE_COUNT): Removed.
13592         (SRA_FIELD_STRUCTURE_RATIO): Removed.
13593         * doc/invoke.texi (sra-max-structure-size): Removed.
13594         (sra-field-structure-ratio): Removed.
13595
13596 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
13597
13598         PR middle-end/40291
13599         * builtins.c (expand_builtin_memcmp): Convert len to sizetype
13600         before expansion.
13601
13602 2009-05-29  Andrey Belevantsev  <abel@ispras.ru>
13603
13604         PR rtl-optimization/40101
13605         * sel-sched-ir.c (get_seqno_by_preds): Allow returning negative
13606         seqno.  Adjust comment.
13607         * sel-sched.c (find_seqno_for_bookkeeping): Assert that when
13608         inserting bookkeeping before a jump, the jump is not scheduled.
13609         When no positive seqno found, provide a value.  Add comment.
13610
13611 2009-05-29  Richard Guenther  <rguenther@suse.de>
13612
13613         * tree-ssa-alias.c (nonaliasing_component_refs_p): Remove
13614         short-cutting on the first component.
13615
13616 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
13617
13618         PR middle-end/39958
13619         * omp-low.c (scan_omp_1_op): Call remap_type on TREE_TYPE
13620         for trees other than decls/types.
13621
13622 2009-05-29  Richard Guenther  <rguenther@suse.de>
13623
13624         * tree-ssa-operands.c (get_expr_operands): Do not handle
13625         INDIRECT_REFs in the handled-component case.  Remove
13626         unused get_ref_base_and_extent case.
13627         * tree-dfa.c (get_ref_base_and_extent): Avoid calling
13628         tree_low_cst and host_integerp where possible.
13629         * tree-ssa-structalias.c (equiv_class_label_eq): Check hash
13630         codes for equivalence.
13631         * dce.c (find_call_stack_args): Avoid redundant bitmap queries.
13632
13633 2009-05-29  David Billinghurst <billingd@gcc.gnu.org>
13634
13635         * config.gcc: Add i386/t-fprules-softfp and soft-fp/t-softfp
13636         to tmake_file for i[34567]86-*-cygwin*.
13637
13638 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
13639
13640         PR target/40017
13641         * config/rs6000/rs6000-c.c (_Bool_keyword): New variable.
13642         (altivec_categorize_keyword, init_vector_keywords,
13643         rs6000_cpu_cpp_builtins): Define _Bool as conditional macro
13644         similar to bool.
13645
13646 2009-05-29  Kai Tietz  <kai.tietz@onevision.com>
13647
13648         * tree.c (handle_dll_attribute): Check if node is
13649         of kind FUNCTION_DECL for DECL_DECLARED_INLINE_P check.
13650
13651 2009-05-29  Richard Earnshaw  <rearnsha@arm.com>
13652
13653         * config/arm/thumb2.md (thumb2_zero_extendsidi2): Add a split
13654         component.
13655         (thumb2_zero_extendqidi2): Likewise.
13656
13657 2009-05-28  Kaz Kojima  <kkojima@gcc.gnu.org>
13658
13659         * config/sh/sh.c (sh_expand_t_scc): Use gen_xorsi3_movrt
13660         instead of gen_movrt.
13661         * config/sh/sh.md (movrt): Remove.
13662
13663 2009-05-28  Steve Ellcey  <sje@cup.hp.com>
13664
13665         * doc/invoke.texi (IA-64 Options):
13666         Add -msdata, -mfused-madd, -mno-inline-float-divide,
13667         -mno-inline-int-divide, -mno-inline-sqrt, -msched-spec-ldc,
13668         -msched-spec-control-ldc, -msched-prefer-non-data-spec-insns,
13669         -msched-prefer-non-control-spec-insns,
13670         -msched-stop-bits-after-every-cycle,
13671         -msched-count-spec-in-critical-path,
13672         -msel-sched-dont-check-control-spec, -msched-fp-mem-deps-zero-cost
13673         -msched-max-memory-insns-hard-limit, -msched-max-memory-insns.
13674         Remove -mt, -pthread, -msched-ldc, -mno-sched-control-ldc,
13675         and -msched-spec-verbose.
13676
13677 2009-05-28  Joseph Myers  <joseph@codesourcery.com>
13678
13679         * config/arm/lib1funcs.asm (__clear_cache): Define if L_clear_cache.
13680         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define to give an
13681         error if used.
13682         * config/arm/t-linux-eabi (LIB1ASMFUNCS): Add _clear_cache.
13683
13684 2009-05-28  Richard Guenther  <rguenther@suse.de>
13685
13686         * tree-ssa-alias.c (ao_ref_init): New function.
13687         (ao_ref_base): Likewise.
13688         (ao_ref_base_alias_set): Likewise.
13689         (ao_ref_alias_set): Likewise.
13690         (refs_may_alias_p_1): Change signature.
13691         (refs_may_alias_p): Adjust.
13692         (refs_anti_dependent_p): Likewise.
13693         (refs_output_dependent_p): Likewise.
13694         (call_may_clobber_ref_p_1): Change signature.
13695         (call_may_clobber_ref_p): Adjust.
13696         (stmt_may_clobber_ref_p_1): New function split out from ...
13697         (stmt_may_clobber_ref_p): ... here.
13698         (maybe_skip_until): Adjust signature.
13699         (get_continuation_for_phi): Likewise.
13700         (walk_non_aliased_vuses): Likewise.
13701         * tree-ssa-alias.h (struct ao_ref_s): New structure type.
13702         (ao_ref_init): Declare.
13703         (ao_ref_base): Likewise.
13704         (ao_ref_alias_set): Likewise.
13705         (stmt_may_clobber_ref_p_1): Likewise.
13706         (walk_non_aliased_vuses): Adjust.
13707         * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): New function.
13708         (get_ref_from_reference_ops): remove.
13709         (vn_reference_lookup_2): Adjust signature.
13710         (vn_reference_lookup_3): Do not re-build trees.  Handle unions.
13711         (vn_reference_lookup_pieces): Adjust signature, do not re-build trees.
13712         (vn_reference_lookup): Adjust.
13713         (vn_reference_insert): Likewise.
13714         (vn_reference_insert_pieces): Adjust signature.
13715         (visit_reference_op_call): Adjust.
13716         * tree-ssa-pre.c (get_expr_type): Simplify.
13717         (phi_translate_1): Adjust.
13718         (compute_avail): Likewise.
13719         (translate_vuse_through_block): Do not re-build trees.
13720         (value_dies_in_block_x): Likewise.
13721         * tree-ssa-sccvn.h (struct vn_reference_s): Add type and alias-set
13722         fields.
13723         (vn_reference_lookup_pieces): Adjust declaration.
13724         (vn_reference_insert_pieces): Likewise.
13725
13726 2009-05-28  Benjamin Kosnik  <bkoz@redhat.com>
13727
13728         * tree-ssa-copy.c (replace_exp_1): Move op for warning-free use
13729         with checking disabled.
13730
13731 2009-05-28  Dave Korn  <dave.korn.cygwin@gmail.com>
13732
13733         PR target/37216
13734
13735         * configure.ac (HAVE_GAS_ALIGNED_COMM):  Add autoconf test and
13736         macro definition for support of three-operand format aligned
13737         .comm directive in assembler on cygwin/pe/mingw target OS.
13738         * configure:  Regenerate.
13739         * config.h:  Regenerate.
13740
13741         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common):  Use
13742         aligned form of .comm directive if -mpe-aligned-commons is in effect.
13743         * config/i386/cygming.opt (-mpe-aligned-commons):  Add new option.
13744
13745         * doc/invoke.texi (-mpe-aligned-commons):  Document new target option.
13746         * doc/tm.texi (ASM_OUTPUT_COMMON):  Document zero size commons.
13747
13748 2009-05-28  Ira Rosen  <irar@il.ibm.com>
13749
13750         PR tree-optimization/40254
13751         * tree-data-ref.c (dr_analyze_innermost): Take POFFSET into account
13752         in analysis of basic blocks.
13753
13754 2009-05-28  Adam Nemet  <anemet@caviumnetworks.com>
13755
13756         PR middle-end/33699
13757         * target.h (struct gcc_target): Fix indentation.  Add const_anchor.
13758         * target-def.h (TARGET_CONST_ANCHOR): New macro.
13759         (TARGET_INITIALIZER): Use it.
13760         * cse.c (CHEAPER): Move it up to the other macros.
13761         (insert): Rename this ...
13762         (insert_with_costs): ... to this.  Add cost parameters.  Update
13763         function comment.
13764         (insert): New function.  Call insert_with_costs.
13765         (compute_const_anchors, insert_const_anchor, insert_const_anchors,
13766         find_reg_offset_for_const, try_const_anchors): New functions.
13767         (cse_insn): Call try_const_anchors.  Adjust cost of src_related
13768         when using a const-anchor.  Call insert_const_anchors.
13769         * config/mips/mips.c (mips_set_mips16_mode): Set targetm.const_anchor.
13770         * doc/tm.texi (Misc): Document TARGET_CONST_ANCHOR.
13771
13772 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
13773
13774         * tree-inline.c (remap_decls): Enable nonlocalized variables
13775         when not optimizing.
13776
13777 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
13778
13779         * tree-ssa-live.c (remove_unused_locals): Skip when not optimizing.
13780         Simplify other tests involving optimize.
13781
13782 2009-05-27  Tom Tromey  <tromey@redhat.com>
13783
13784         * unwind-dw2.c (_Unwind_DebugHook): New function.
13785         (uw_install_context): Call _Unwind_DebugHook.
13786
13787 2009-05-27  Tom Tromey  <tromey@redhat.com>
13788
13789         * system.h (CONST_CAST2): Use C++ const_cast when compiled as C++
13790
13791 2009-05-27  Ian Lance Taylor  <iant@google.com>
13792
13793         * Makefile.in (LINKER, LINKER_FLAGS): Define.
13794         (LINKER_FOR_BUILD, BUILD_LINKERFLAGS): Define.
13795         (ALL_LINKERFLAGS): Define.
13796         (xgcc$(exeext)): Change $(COMPILER) to $(LINKER).
13797         (cpp$(exeext), cc1-dummy$(exeext), cc1$(exeext)): Likewise.
13798         (collect2$(exeext), mips-tfile, mips-tdump): Likewise.
13799         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
13800         (build/gen%$(build_exeext)): Change $(COMPILER_FOR_BUILD) to
13801         $(LINKER_FOR_BUILD).
13802         (build/gcov-iov$(build_exeext)): Likewise.
13803
13804 2009-05-27  Julian Brown  <julian@codesourcery.com>
13805
13806         * gcse.c (target.h): Include.
13807         (can_assign_to_reg_without_clobbers_p): Check that the target allows
13808         copy of argument to a pseudo register.
13809
13810 2009-05-27  Diego Novillo  <dnovillo@google.com>
13811
13812         * tree-ssa-live.c (dump_scope_block): Document arguments.
13813         (dump_scope_blocks): Document.
13814         (debug_scope_blocks): New.
13815         * tree-flow.h (debug_scope_blocks): Declare.
13816
13817 2009-05-21  Denis Chertykov  <denisc@overta.ru>
13818
13819         * doc/contrib.texi (Contributors): Add myself to the list.
13820
13821 2009-05-27  Olivier Hainque  <hainque@adacore.com>
13822
13823         * expr.c (target_align): New function.  Alignment the TARGET of an
13824         assignment may be assume to have.
13825         (highest_pow2_factor_for_target): Use it instead of relying on
13826         immediate tree attributes of TARGET, not necessarily honored when
13827         intermediate bitfields are involved.
13828
13829 2009-05-27  H.J. Lu  <hongjiu.lu@intel.com>
13830
13831         PR target/40266
13832         * config/i386/driver-i386.c (host_detect_local_cpu): Support
13833         AVX, SSE4, AES, PCLMUL and POPCNT.
13834
13835 2009-05-27  Diego Novillo  <dnovillo@google.com>
13836
13837         * tree-pretty-print.c (dump_location): New.
13838         (dump_generic_node): Call it.
13839         Factor code to handle BLOCK nodes ...
13840         (dump_block_node): ... here.
13841
13842 2009-05-27  Rafael Avila de Espindola  <espindola@google.com>
13843
13844         * Makefile.in (GCC_PLUGIN_H): New. Replace all uses of gcc-plugin.h
13845         with it.
13846         * doc/plugins.texi: Document that gcc-plugin.h must be the first to be
13847         included.
13848         * gcc-plugin.h: Include config.h and system.h.
13849         (IN_GCC): Define if not defined.
13850
13851 2009-05-27  Hans-Peter Nilsson  <hp@axis.com>
13852
13853         PR middle-end/40249
13854         * Makefile.in (CRTSTUFF_CFLAGS): Replace -fno-inline-functions
13855         with -fno-inline.
13856
13857 2009-05-27  Shujing Zhao  <pearly.zhao@oracle.com>
13858
13859         * config/m32r/m32r.c: Use REG_P, MEM_P and CONST_INT_P where
13860         applicable.
13861         * config/m32r/m32r.h: Ditto.
13862         * config/m32r/m32r.md: Ditto.
13863         * config/m32r/predicates.md: Ditto.
13864
13865 2009-05-27  Alexandre Oliva  <aoliva@redhat.com>
13866
13867         * cgraph.c (dump_cgraph_node): Honor -fdump-noaddr.
13868
13869 2009-05-26  Basile Starynkevitch  <basile@starynkevitch.net>
13870
13871         * doc/plugins.texi
13872         (Loading plugins): typo.
13873         (Plugin callbacks): Documented PLUGIN_INFO, PLUGIN_GGC_START,
13874         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
13875         (Interacting with the GCC Garbage Collector): Added new section.
13876         (Giving information about a plugin): Added new section for
13877         PLUGIN_INFO.
13878         * ggc.h (ggc_register_root_tab): Added declaration.
13879         * gcc-plugin.h (PLUGIN_GGC_START, PLUGIN_GGC_MARKING)
13880         (PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS): Added new events.
13881         (register_callback): Improved comment in declaration.
13882         * ggc-common.c (const_ggc_root_tab_t) Added new typedef for vectors.
13883         (extra_root_vec) Added static variable for dynamic roots registration.
13884         (ggc_register_root_tab) Added new routine.
13885         (ggc_mark_roots) Added iteration inside extra_root_vec, and invoke
13886         PLUGIN_GGC_MARKING event.
13887         * ggc-zone.c: Include plugin.h.
13888         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
13889         * ggc-page.c: Include plugin.h.
13890         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
13891         * plugin.c (plugin_event_name): added names of PLUGIN_GGC_START,
13892         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS
13893         (register_callback): check lack of callbacks for
13894         pseudo-events. Added handling of PLUGIN_REGISTER_GGC_ROOTS,
13895         PLUGIN_GGC_START, PLUGIN_GGC_MARKING, PLUGIN_GGC_END.
13896         (invoke_plugin_callbacks): Handle PLUGIN_GGC_START,
13897         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
13898         * Makefile.in (ggc-common.o, ggc-zone.o, ggc-page.o): Added
13899         dependency on plugin.h.
13900         (plugin.o): Added dependency on ggc.h...
13901
13902 2009-05-26  Richard Guenther  <rguenther@suse.de>
13903
13904         PR middle-end/40248
13905         Revert
13906         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
13907         with mismatched comparison modes.
13908
13909         * expr.c (expand_expr_real_1): Expand the operand of a
13910         VIEW_CONVERT_EXPR in its natural mode.
13911
13912 2009-05-26  Ian Lance Taylor  <iant@google.com>
13913
13914         * Makefile.in (COMPILER, COMPILER_FLAGS): Define.
13915         (COMPILER_FOR_BUILD, BUILD_COMPILERFLAGS): Define.
13916         (ALL_COMPILERFLAGS): Define.
13917         (.c.o, xgcc$(exeext), cpp$(exeext)): Use $(COMPILER).
13918         (cc1-dummy$(exeext), cc1$(exeext)): Likewise.
13919         (collect2$(exeext), collect2.o): Likewise.
13920         (c-opts.o, c-cppbuiltin.o, c-pch.o, gcc.o, gccspec.o): Likewise.
13921         (gcc-options.o, version.o, prefix.o, toplev.o): Likewise.
13922         ($(out_object_file), mips-tfile, mips-tdump): Likewise.
13923         (libbackend.o, intl.o, cppdefault.o): Likewise.
13924         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
13925         (build/%.o): Use $(COMPILER_FOR_BUILD).
13926         (build/gen%$(build_exeext)): Likewise.
13927         (build/gcov-iov$(build_exeext)): LIkewise.
13928         * config/t-darwin (darwin.o): Use $(COMPILER).
13929         (darwin-c.o, darwin-f.o, darwin-driver.o): Likewise.
13930         * config/t-sol2 (sol2-c.o): Likewise.
13931         (sol2.o): Likewise.
13932         * config/t-vxworks (vxworks.o): Likewise.
13933         * config/x-darwin (host-darwin.o): Likewise.
13934         * config/x-hpux (host-hpux.o): Likewise.
13935         * config/x-linux (host-linux.o): Likewise.
13936         * config/x-solaris (host-solaris.o): Likewise.
13937         * config/alpha/x-alpha (driver-alpha.o): Likewise.
13938         * config/arm/t-arm (arm-c.o): Likewise.
13939         * config/arm/t-pe (pe.o): Likewise.
13940         * config/arm/t-wince-pe (pe.o): Likewise.
13941         * config/i386/t-cygming (winnt.o): Likewise.
13942         (winnt-cxx.o, winnt-stubs.o, msformat-c.o): Likewise.
13943         * config/i386/t-cygwin (cygwin1.o): Likewise.
13944         (cygwin2.o): Likewise.
13945         * config/i386/t-i386 (i386-c.o): Likewise.
13946         * config/i386/t-interix (winnt.o): Likewise.
13947         * config/i386/t-netware (netware.o): Likewise.
13948         * config/i386/t-nwld (nwld.o): Likewise.
13949         * config/i386/x-darwin (host-i386-darwin.o): Likewise.
13950         * config/i386/x-i386 (driver-i386.o): Likewise.
13951         * config/i386/x-cygwin (host-cygwin.o): Likewise.
13952         * config/i386/x-mingw32 (host-mingw32.o): Likewise.
13953         * config/ia64/t-ia64 (ia64-c.o): Likewise.
13954         * config/m32c/t-m32c (m32c-pragma.o): Likewise.
13955         * config/mips/x-native (driver-native.o): Likewise.
13956         * config/rs6000/t-rs6000 (rs6000-c.o): Likewise.
13957         * config/rs6000/x-darwin (host-ppc-darwin.o): Likewise.
13958         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Likewise.
13959         * config/rs6000/x-rs6000 (driver-rs6000.o): Likewise.
13960         * config/score/t-score-elf (score7.o): Likewise.
13961         (score3.o): Likewise.
13962         * config/sh/t-sh (sh-c.o): Likewise.
13963         * config/sh/t-symbian (sh-c.o): Likewise.
13964         (symbian.o): Likewise.
13965         * config/spu/t-spu-elf (spu-c.o): Likewise.
13966         * config/v850/t-v850 (v850-c.o): Likewise.
13967         * config/v850/t-v850e (v850-c.o): Likewise.
13968
13969 2009-05-26  Richard Guenther  <rguenther@suse.de>
13970
13971         PR tree-optimization/40122
13972         * tree-ssa-ccp.c (ccp_fold): Fold vector CONSTRUCTORs to
13973         VECTOR_CSTs if possible.
13974         (fold_gimple_assign): Likewise.
13975
13976 2009-05-26  Richard Guenther  <rguenther@suse.de>
13977
13978         PR middle-end/40252
13979         * fold-const.c (fold_binary): Use the correct types for building
13980         rotates.
13981
13982 2009-05-26  Richard Guenther  <rguenther@suse.de>
13983
13984         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove
13985         redundant calls to merge_alias_info.
13986         (bump_vector_ptr): Likewise.
13987         * tree-ssa-copy.c (merge_alias_info): Remove.
13988         (replace_exp_1): Remove call to merge_alias_info.
13989         (propagate_tree_value): Likewise.
13990         (fini_copy_prop): Propagate points-to info.
13991         * tree-flow.h (merge_alias_info): Remove.
13992
13993 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
13994
13995         * config/picochip/picochip.C (PARAM_INLINE_CALL_COST): Remove.
13996
13997 2009-05-25  Jan Hubicka  <jh@suse.cz>
13998
13999         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
14000         * cgraph.h (struct inline_summary): New filed self_wize,
14001         size_inlining_benefit, self_time and time_inlining_benefit.
14002         (struct cgraph_global_info): Replace insns by time ans size fields.
14003         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
14004         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
14005         (ipcp_update_callgraph): Do not touch function bodies.
14006         * ipa-inline.c: Include except.h
14007         (MAX_TIME): New constant.
14008         (overall_insns): Remove.
14009         (leaf_node_p): New.
14010         (overall_size, max_benefit): New static variables.
14011         (cgraph_estimate_time_after_inlining): New function.
14012         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
14013         (cgraph_clone_inlined_nodes): Update size.
14014         (cgraph_mark_inline_edge): Update size.
14015         (cgraph_estimate_growth): Use size info.
14016         (cgraph_check_inline_limits): Check size.
14017         (cgraph_default_inline_p): Likewise.
14018         (cgraph_edge_badness): Compute badness based on benefit and size cost.
14019         (cgraph_decide_recursive_inlining): Check size.
14020         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
14021         and times.
14022         (cgraph_decide_inlining): Likewise.
14023         (cgraph_decide_inlining_incrementally): Likewise; honor
14024         PARAM_EARLY_INLINING_INSNS.
14025         (likely_eliminated_by_inlining_p): New predicate.
14026         (estimate_function_body_sizes): New function.
14027         (compute_inline_parameters): Use it.
14028         * except.c (must_not_throw_labels): New function.
14029         * except.h (must_not_throw_labels): Declare.
14030         * tree-inline.c (init_inline_once): Kill inlining_weigths
14031         * tree-ssa-structalias.c: Avoid uninitialized warning.
14032         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
14033         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
14034         (PARAM_INLINE_CALL_COST): Remove.
14035         (PARAM_EARLY_INLINING_INSNS): New.
14036
14037 2009-05-25  Richard Guenther  <rguenther@suse.de>
14038
14039         PR tree-optimization/36327
14040         * tree-ssa-alias.c (walk_non_aliased_vuses): Add second walker
14041         callback for reference translation or lookup at the point of may-defs.
14042         * tree-ssa-alias.h (walk_non_aliased_vuses): Adjust prototype.
14043         * tree-ssa-sccvn.c (get_ref_from_reference_ops): Bail out
14044         for union COMPONENT_REFs.
14045         (vn_reference_lookup_3): New callback.  Lookup from memset
14046         and CONSTRUCTOR assignment, translate through struct copies.
14047         (vn_reference_lookup_pieces): Make sure to not free the
14048         passed operands array.  Adjust walk_non_aliased_vuses call.
14049         (vn_reference_lookup): Adjust walk_non_aliased_vuses call,
14050         make sure we do not leak memory.
14051
14052 2009-05-25  Richard Guenther  <rguenther@suse.de>
14053
14054         * tree-ssa-alias.h (dump_points_to_solution): Declare.
14055         * tree-inline.c (expand_call_inline): Reset the escaped and
14056         callused solutions.
14057         * tree-ssa-structalias.c (pass_build_ealias): New.
14058         * tree-pass.h (pass_build_ealias): Declare.
14059         * passes.c (init_optimization_passes): Add PTA during
14060         early optimizations.
14061         * tree-ssa-alias.c (dump_alias_info): Dump the ESCAPED
14062         and CALLUSED solutions.
14063         (dump_points_to_solution): New function, split out from ...
14064         (dump_points_to_info_for): ... here.
14065         * tree-parloops.c (parallelize_loops): Reset the escaped and
14066         callused solutions.
14067
14068 2009-05-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
14069
14070         PR bootstrap/40027
14071         * config/i386/i386.c (USE_HIDDEN_LINKONCE): Only define if missing.
14072         * config/i386/sol2.h [!TARGET_GNU_LD] (USE_HIDDEN_LINKONCE): Define.
14073
14074 2009-05-25  Ira Rosen  <irar@il.ibm.com>
14075
14076         PR tree-optimization/40238
14077         * tree-vect-stmts.c (vect_init_vector): Insert initialization
14078         statements after basic block's labels.
14079         * tree-vect-slp.c (vect_slp_transform_bb): Call destroy_bb_vec_info()
14080         to free the allocated memory.
14081
14082 2009-05-24  Kaz Kojima  <kkojima@gcc.gnu.org>
14083
14084         * gcc/config/sh/sh.c (sh_set_return_address): Mark store of
14085         return address with a USE.
14086
14087 2009-05-24  Richard Guenther  <rguenther@suse.de>
14088
14089         PR middle-end/40233
14090         * tree.c (make_vector_type): Build the TYPE_DEBUG_REPRESENTATION_TYPEs
14091         array type from the main variant of the inner type.
14092
14093 2009-05-24  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
14094
14095         * config/vax/vax-protos.h (legitimate_constant_address_p): Change
14096         definition to bool (from int) to un-break build.
14097         (legitimate_constant_p, vax_mode_dependent_address_p): Likewise.
14098
14099 2009-05-24  Paolo Bonzini  <bonzini@gnu.org>
14100
14101         * tree-ssa-operands.h (push_stmt_changes, pop_stmt_changes,
14102         discard_stmt_changes): Delete.
14103         * tree-ssa-operands.c (scb_stack): Delete.
14104         (init_ssa_operands): Do not initialize it.
14105         (fini_ssa_operands): Do not free it.
14106         (push_stmt_changes, pop_stmt_changes, discard_stmt_changes): Delete.
14107
14108         * tree-cfg.c (replace_uses_by): Replace pop_stmt_changes with
14109         update_stmt, remove the others.  Fix comments.
14110         * tree-dfa.c (optimize_stack_restore): Likewise.
14111         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Likewise.
14112         * tree-ssa-loop-ivopts.c (rewrite_use): Likewise.
14113         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
14114         * tree-ssa-ccp.c (optimize_stack_restore, execute_fold_all_builtins):
14115         Likewise.
14116         * tree-ssa-propagate.c (substitute_and_fold): Likewise.
14117         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
14118         (dom_opt_finalize_block): Likewise, adjusting access to
14119         stmts_to_rescan.
14120         (optimize_stmt): Likewise, adjusting access to stmts_to_rescan.
14121         (stmts_to_rescan): Change item type to gimple.
14122         (tree_ssa_dominator_optimize): Change type of stmts_to_rescan.
14123
14124 2009-05-24  Ira Rosen  <irar@il.ibm.com>
14125
14126         * doc/passes.texi (Tree-SSA passes): Document SLP pass.
14127         * tree-pass.h (pass_slp_vectorize): New pass.
14128         * params.h (SLP_MAX_INSNS_IN_BB): Define.
14129         * timevar.def (TV_TREE_SLP_VECTORIZATION): Define.
14130         * tree-vectorizer.c (timevar.h): Include.
14131         (user_vect_verbosity_level): Declare.
14132         (vect_location): Fix comment.
14133         (vect_set_verbosity_level): Update user_vect_verbosity_level
14134         instead of vect_verbosity_level.
14135         (vect_set_dump_settings): Add an argument. Ignore user defined
14136         verbosity if dump flags require higher level of verbosity. Print to
14137         stderr only for loop vectorization.
14138         (vectorize_loops): Update call to vect_set_dump_settings.
14139         (execute_vect_slp): New function.
14140         (gate_vect_slp): Likewise.
14141         (struct gimple_opt_pass pass_slp_vectorize): New.
14142         * tree-vectorizer.h (struct _bb_vec_info): Define along macros to
14143         access its members.
14144         (vec_info_for_bb): New function.
14145         (struct _stmt_vec_info): Add bb_vinfo and a macro for its access.
14146         (VECTORIZATION_ENABLED): New macro.
14147         (SLP_ENABLED, SLP_DISABLED): Likewise.
14148         (vect_is_simple_use): Add bb_vec_info argument.
14149         (new_stmt_vec_info, vect_analyze_data_ref_dependences,
14150         vect_analyze_data_refs_alignment, vect_verify_datarefs_alignment,
14151         vect_analyze_data_ref_accesses, vect_analyze_data_refs,
14152         vect_schedule_slp, vect_analyze_slp): Likewise.
14153         (vect_analyze_stmt): Add slp_tree argument.
14154         (find_bb_location): Declare.
14155         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
14156         * tree-vect-loop.c (new_loop_vec_info): Adjust function calls.
14157         (vect_analyze_loop_operations, vect_analyze_loop,
14158         get_initial_def_for_induction, vect_create_epilog_for_reduction,
14159         vect_finalize_reduction, vectorizable_reduction,
14160         vectorizable_live_operation, vect_transform_loop): Likewise.
14161         * tree-data-ref.c (dr_analyze_innermost): Update comment,
14162         skip evolution analysis if analyzing a basic block.
14163         (dr_analyze_indices): Likewise.
14164         (initialize_data_dependence_relation): Skip the test whether the
14165         object is invariant for basic blocks.
14166         (compute_all_dependences): Skip dependence analysis for data
14167         references in basic blocks.
14168         (find_data_references_in_stmt): Don't fail in case of invariant
14169         access in basic block.
14170         (find_data_references_in_bb): New function.
14171         (find_data_references_in_loop): Move code to
14172         find_data_references_in_bb and add a call to it.
14173         (compute_data_dependences_for_bb): New function.
14174         * tree-data-ref.h (compute_data_dependences_for_bb): Declare.
14175         * tree-vect-data-refs.c (vect_check_interleaving): Adjust to the case
14176         that STEP is 0.
14177         (vect_analyze_data_ref_dependence): Check for interleaving in case of
14178         unknown dependence in basic block and fail in case of dependence in
14179         basic block.
14180         (vect_analyze_data_ref_dependences): Add bb_vinfo argument, get data
14181         dependence instances from either loop or basic block vectorization
14182         info.
14183         (vect_compute_data_ref_alignment): Check if it is loop vectorization
14184         before calling nested_in_vect_loop_p.
14185         (vect_compute_data_refs_alignment): Add bb_vinfo argument, get data
14186         dependence instances from either loop or basic block vectorization
14187         info.
14188         (vect_verify_datarefs_alignment): Likewise.
14189         (vect_enhance_data_refs_alignment): Adjust function calls.
14190         (vect_analyze_data_refs_alignment): Likewise.
14191         (vect_analyze_group_access): Fix printing. Skip different checks if
14192         DR_STEP is 0. Keep strided stores either in loop or basic block
14193         vectorization data structure. Fix indentation.
14194         (vect_analyze_data_ref_access): Fix comments, allow zero step in
14195         basic blocks.
14196         (vect_analyze_data_ref_accesses): Add bb_vinfo argument, get data
14197         dependence instances from either loop or basic block vectorization
14198         info.
14199         (vect_analyze_data_refs): Update comment. Call
14200         compute_data_dependences_for_bb to analyze basic blocks.
14201         (vect_create_addr_base_for_vector_ref): Check for outer loop only in
14202         case of loop vectorization. In case of basic block vectorization use
14203         data-ref itself as a base.
14204         (vect_create_data_ref_ptr): In case of basic block vectorization:
14205         don't advance the pointer, add new statements before the current
14206         statement.  Adjust function calls.
14207         (vect_supportable_dr_alignment): Support only aligned accesses in
14208         basic block vectorization.
14209         * common.opt (ftree-slp-vectorize): New flag.
14210         * tree-vect-patterns.c (widened_name_p): Adjust function calls.
14211         (vect_pattern_recog_1): Likewise.
14212         * tree-vect-stmts.c (process_use): Likewise.
14213         (vect_init_vector): Add new statements in the beginning of the basic
14214         block in case of basic block SLP.
14215         (vect_get_vec_def_for_operand): Adjust function calls.
14216         (vect_finish_stmt_generation): Likewise.
14217         (vectorizable_call): Add assert that it is loop vectorization, adjust
14218         function calls.
14219         (vectorizable_conversion, vectorizable_assignment): Likewise.
14220         (vectorizable_operation): In case of basic block SLP, take
14221         vectorization factor from statement's type and skip the relevance
14222         check. Adjust function calls.
14223         (vectorizable_type_demotion): Add assert that it is loop
14224         vectorization, adjust function calls.
14225         (vectorizable_type_promotion): Likewise.
14226         (vectorizable_store): Check for outer loop only in case of loop
14227         vectorization. Adjust function calls. For basic blocks, skip the
14228         relevance check and don't advance pointers.
14229         (vectorizable_load): Likewise.
14230         (vectorizable_condition): Add assert that it is loop vectorization,
14231         adjust function calls.
14232         (vect_analyze_stmt): Add argument. In case of basic block SLP, check
14233         that it is not reduction, get vector type, call only supported
14234         functions, skip loop specific parts.
14235         (vect_transform_stmt): Check for outer loop only in case of loop
14236         vectorization.
14237         (new_stmt_vec_info): Add new argument and initialize bb_vinfo.
14238         (vect_is_simple_use): Fix comment, add new argument, fix conditions
14239         for external definition.
14240         * passes.c (pass_slp_vectorize): New pass.
14241         * tree-vect-slp.c (find_bb_location): New function.
14242         (vect_get_and_check_slp_defs): Add argument, adjust function calls,
14243         check for patterns only in loops.
14244         (vect_build_slp_tree): Add argument, adjust function calls, fail in
14245         case of multiple types in basic block SLP.
14246         (vect_mark_slp_stmts_relevant): New function.
14247         (vect_supported_load_permutation_p): Fix comment.
14248         (vect_analyze_slp_instance): Add argument. In case of basic block
14249         SLP, take vectorization factor from statement's type, check that
14250         unrolling factor is 1. Adjust function call. Save SLP instance in
14251         either loop or basic block vectorization structure. Return FALSE,
14252         if SLP failed.
14253         (vect_analyze_slp): Add argument. Get strided stores groups from
14254         either loop or basic block vectorization structure. Return FALSE
14255         if basic block SLP failed.
14256         (new_bb_vec_info): New function.
14257         (destroy_bb_vec_info, vect_slp_analyze_node_operations,
14258         vect_slp_analyze_operations, vect_slp_analyze_bb): Likewise.
14259         (vect_schedule_slp): Add argument. Get SLP instances from either
14260         loop or basic block vectorization structure. Set vectorization factor
14261         to be 1 for basic block SLP.
14262         (vect_slp_transform_bb): New function.
14263         * params.def (PARAM_SLP_MAX_INSNS_IN_BB): Define.
14264
14265 2009-05-23  Mark Mitchell  <mark@codesourcery.com>
14266
14267         * final.c (shorten_branches): Do not align labels for jump tables.
14268         (final_scan_insn): Use JUMP_TABLE_DATA_P.
14269
14270 2009-05-23  Eric Botcazou  <ebotcazou@adacore.com>
14271
14272         * doc/passes.texi: Standardize spelling of RTL, Tree and Tree SSA.
14273         Remove outdated reference to flow.c and fix nits.
14274         * doc/gccint.texi: Tweak RTL description.
14275         * doc/rtl.texi: Likewise.
14276
14277 2009-05-23  Denis Chertykov  <chertykov@gmail.com>
14278
14279         * config/avr/avr.c: Change my email address.
14280         * config/avr/avr.h: Likewise.
14281         * config/avr/avr.md: Likewise.
14282         * config/avr/avr-protos.h: Likewise.
14283         * config/avr/libgcc.S: Likewise.
14284
14285 2009-05-22  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
14286
14287         * config/spu/spu-protos.h (aligned_mem_p, spu_valid_mov): Remove.
14288         (spu_split_load, spu_split_store): Change return type to int.
14289         (spu_split_convert): Declare.
14290         * config/spu/predicates.md (spu_mem_operand): Remove.
14291         (spu_mov_operand): Update.
14292         (spu_dest_operand, shiftrt_operator, extend_operator): Define.
14293         * config/spu/spu.c (regno_aligned_for_load): Remove.
14294         (reg_aligned_for_addr, spu_expand_load): Define.
14295         (spu_expand_extv): Reimplement and handle MEM.
14296         (spu_expand_insv): Handle MEM.
14297         (spu_sched_reorder): Handle insn's with length 0.
14298         (spu_legitimate_address_p): Reimplement.
14299         (store_with_one_insn_p): Return TRUE for any mode with size
14300         larger than 16 bytes.
14301         (address_needs_split): Define.
14302         (spu_expand_mov): Call spu_split_load and spu_split_store for MEM
14303         operands.
14304         (spu_convert_move): Define.
14305         (spu_split_load): Use spu_expand_load and change all MEM's to TImode.
14306         (spu_split_store): Change all MEM's to TImode.
14307         (spu_init_expanders): Preallocate registers that correspond to
14308         LAST_VIRTUAL_REG+1 and LAST_VIRTUAL_REG+2 and set them with
14309         mark_reg_pointer.
14310         (spu_split_convert): Define.
14311         * config/spu/spu.md (QHSI, QHSDI): New mode iterators.
14312         (_move<mode>, _movdi, _movti): Update predicate and condition.
14313         (load, store): Change to define_split.
14314         (extendqiti2, extendhiti2, extendsiti2, extendditi2): Simplify to
14315         extend<mode>ti2.
14316         (zero_extendqiti2, zero_extendhiti2, <v>lshr<mode>3_imm): Define.
14317         (lshr<mode>3, lshr<mode>3_imm, lshr<mode>3_re): Simplify to one
14318         define_insn_and_split of lshr<mode>3.
14319         (shrqbybi_<mode>, shrqby_<mode>): Simplify to define_expand.
14320         (<v>ashr<mode>3_imm): Define.
14321         (extv, extzv, insv): Allow MEM operands.
14322         (trunc_shr_ti<mode>, trunc_shr_tidi, shl_ext_<mode>ti,
14323         shl_ext_diti, sext_trunc_lshr_tiqisi, zext_trunc_lshr_tiqisi,
14324         sext_trunc_lshr_tihisi, zext_trunc_lshr_tihisi): Define for combine.
14325         (_spu_convert2): Change to define_insn_and_split and remove the
14326         corresponding define_peephole2.
14327         (stack_protect_set, stack_protect_test, stack_protect_test_si):
14328         Change predicates to memory_operand.
14329
14330 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
14331
14332         * config/arm/thumb2.md: Add 16-bit multiply instructions.
14333
14334 2009-05-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
14335
14336         PR tree-optimization/40219
14337         * tree.c (iterative_hash_expr): Make sure the builtin function is
14338         a normal builtin function and not a front end or back end builtin
14339         before indexing into the built_in_decls array.
14340
14341 2009-05-22  Richard Guenther  <rguenther@suse.de>
14342
14343         PR middle-end/38964
14344         * alias.c (write_dependence_p): Do not use TBAA for answering
14345         anti-dependence or output-dependence.
14346         * tree-ssa-structalias.c (set_uids_in_ptset): Remove TBAA pruning code.
14347         (emit_pointer_definition): Remove.
14348         (emit_alias_warning): Likewise.
14349         (find_what_var_points_to): Remove TBAA pruning code.
14350         (find_what_p_points_to): Likewise.  Do not warn about strict-aliasing
14351         violations.
14352         (compute_points_to_sets): Remove code computing the set of
14353         dereferenced pointers.
14354         * tree-data-ref.c (dr_may_alias_p): Properly use the split
14355         oracle for querying anti and output dependencies.
14356         * tree-ssa-alias.c (refs_may_alias_p_1): Add argument specifying
14357         if TBAA may be applied.
14358         (refs_anti_dependent_p): New function.
14359         (refs_output_dependent_p): Likewise.
14360         * tree-ssa-alias.h (refs_anti_dependent_p): Declare.
14361         (refs_output_dependent_p): Likewise.
14362         * doc/tree-ssa.texi (Memory model): New section.
14363         * doc/c-tree.texi (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
14364         * doc/gimple.texi (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
14365         * cfgexpand.c (expand_gimple_basic_block): Do not handle
14366         GIMPLE_CHANGE_DYNAMIC_TYPE or CHANGE_DYNAMIC_TYPE_EXPR.
14367         * expr.c (expand_expr_real_1): Likewise.
14368         * gimple-low.c (lower_stmt): Likewise.
14369         * gimple-pretty-print.c (dump_gimple_stmt): Likewise.
14370         (dump_gimple_cdt): Remove.
14371         * gimple.c (gss_for_code): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
14372         (gimple_size): Likewise.
14373         (walk_gimple_op): Likewise.
14374         (is_gimple_stmt): Likewise.
14375         (walk_stmt_load_store_addr_ops): Likewise.
14376         (gimple_build_cdt): Remove.
14377         * gimple.def (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
14378         * gimple.h (gimple_cdt_new_type): Remove.
14379         (gimple_cdt_new_type_ptr): Likewise.
14380         (gimple_cdt_set_new_type): Likewise.
14381         (gimple_cdt_location): Likewise.
14382         (gimple_cdt_location_ptr): Likewise.
14383         (gimple_cdt_set_location): Likewise.
14384         * gimplify.c (gimplify_expr): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
14385         * tree-cfg.c (remove_useless_stmts_1): Do not handle
14386         GIMPLE_CHANGE_DYNAMIC_TYPE.
14387         (verify_types_in_gimple_stmt): Likewise.
14388         * tree-inline.c (estimate_num_insns): Likewise.
14389         (expand_call_inline): Do not copy DECL_NO_TBAA_P.
14390         (copy_decl_to_var): Likewise.
14391         (copy_result_decl_to_var): Likewise.
14392         * tree-pretty-print.c (dump_generic_node): Do not handle
14393         CHANGE_DYNAMIC_TYPE_EXPR.
14394         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
14395         * tree-ssa-operands.c (get_expr_operands): Likewise.
14396         * tree-ssa-structalias.c (struct variable_info): Remove
14397         no_tbaa_pruning member.
14398         (new_var_info): Do not set it based on DECL_NO_TBAA_P.
14399         (unify_nodes): Do not copy it.
14400         (find_func_aliases): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
14401         (dump_solution_for_var): Do not dump no_tbaa_pruning state.
14402         (set_uids_in_ptset): Do not check it.
14403         (find_what_var_points_to): Likewise.
14404         (compute_tbaa_pruning): Remove.
14405         (compute_points_to_sets): Do not call it.
14406         * tree.c (walk_tree_1): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
14407         * tree.def (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
14408         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Remove.
14409         (CHANGE_DYNAMIC_TYPE_LOCATION): Likewise.
14410         (DECL_NO_TBAA_P): Likewise.
14411         (struct tree_decl_common): Move no_tbaa_flag to unused flags section.
14412         * omp-low.c (copy_var_decl): Do not copy DECL_NO_TBAA_P.
14413         (expand_omp_atomic_pipeline): Do not set it.
14414         * print-tree.c (print_node): Do not dump it.
14415         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
14416         redundant check.
14417
14418 2009-05-22 Vladimir Makarov <vmakarov@redhat.com>
14419
14420         PR target/39856
14421         * reg-stack.c (subst_stack_regs_pat): Remove gcc_assert for note
14422         for clobber.
14423
14424 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
14425
14426         * tree.c (handle_dll_attribute): Mark dllexport'd inlines as
14427         non-external.
14428
14429 2009-05-22  Ben Elliston  <bje@au.ibm.com>
14430
14431         * Makefile.in (bversion.h, s-bversion): New targets.
14432         (TOPLEV_H): Add bversion.h.
14433         * toplev.h: Include "bversion.h".
14434         (ATTRIBUTE_GCC_DIAG): When building with checking disabled, use
14435         the __format__ attribute only if compiling with the same version
14436         of GCC as the sources (the "build version").
14437
14438 2009-05-22  Ben Elliston  <bje@au.ibm.com>
14439
14440         * c-format.c (handle_format_attribute): Fix comment typo.
14441
14442 2009-05-21  Steve Ellcey  <sje@cup.hp.com>
14443
14444         PR target/37846
14445         * config/ia64/ia64.opt (mfused-madd): New.
14446         * config/ia64/ia64.h (TARGET_DEFAULT): Set MASK_FUSED_MADD.
14447         * config/ia64/hpux.h (TARGET_DEFAULT): Ditto.
14448         * config/ia64/ia64.md (maddsf4, msubsf4, nmaddsf4,
14449         madddf4, madddf4_trunc, msubdf4, msubdf4_trunc, nmadddf4,
14450         nmadddf4_truncsf, maddxf4, maddxf4_truncsf, maddxf4_truncdf,
14451         msubxf4, msubxf4_truncsf msubxf4_truncdf, nmaddxf4,
14452         nmaddxf4_truncsf, nmaddxf4_truncdf): Check TARGET_FUSED_MADD.
14453         * config/ia64/vect.md (addv2sf3, subv2sf3): Force fpma/fpms
14454         instruction if !TARGET_FUSED_MADD.
14455         (fpma, fpms): Remove colon from name.
14456
14457 2009-05-22  Richard Guenther  <rguenther@suse.de>
14458
14459         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Record
14460         TMR_ORIGINAL.  Always either record TMR_SYMBOL or TMR_BASE.
14461         * tree-ssa-pre.c (create_component_ref_by_pieces_1): Handle
14462         TARGET_MEM_REF.
14463         (create_expression_by_pieces): Only convert if necessary.
14464         * gimplify.c (gimplify_expr): Handle TARGET_MEM_REF.
14465         * tree-ssa-loop-im.c (gen_lsm_tmp_name): Handle INTEGER_CST.
14466
14467 2009-05-21  Adam Nemet  <anemet@caviumnetworks.com>
14468
14469         * config/mips/mips.md (*extzv_trunc<mode>_exts): Turn into a
14470         regular pattern from a template and rename it ...
14471         (*extzv_truncsi_exts): ... to this.
14472
14473 2009-05-21  Richard Guenther  <rguenther@suse.de>
14474
14475         * cgraph.h (struct cgraph_node): Remove inline_decl member.
14476         * ipa-inline.c (cgraph_mark_inline_edge): Do not check it.
14477         (cgraph_default_inline_p): Likewise.
14478         (cgraph_decide_inlining_incrementally): Likewise.
14479
14480 2009-05-21  H.J. Lu  <hongjiu.lu@intel.com>
14481             Uros Bizjak  <ubizjak@gmail.com>
14482
14483         * config/i386/cpuid.h (bit_MOVBE): New.
14484
14485         * config/i386/driver-i386.c (host_detect_local_cpu): Check movbe.
14486
14487         * config/i386/i386.c (OPTION_MASK_ISA_MOVBE_SET): New.
14488         (OPTION_MASK_ISA_MOVBE_UNSET): Likewise.
14489         (ix86_handle_option): Handle OPT_mmovbe.
14490         (ix86_target_string): Add -mmovbe.
14491         (pta_flags): Add PTA_MOVBE.
14492         (processor_alias_table): Add PTA_MOVBE to "atom".
14493         (override_options): Handle PTA_MOVBE.
14494
14495         * config/i386/i386.h (TARGET_MOVBE): New.
14496
14497         * config/i386/i386.md (bswapsi2): Check TARGET_MOVBE.
14498         (*bswapsi_movbe): New.
14499         (*bswapdi_movbe): Likewise.
14500         (bswapdi2): Renamed to ...
14501         (*bswapdi_1): This.
14502         (bswapdi2): New expander.
14503
14504         * config/i386/i386.opt (mmovbe): New.
14505
14506         * doc/invoke.texi: Document -mmovbe.
14507
14508 2009-05-21  Taras Glek  <tglek@mozilla.com>
14509
14510         * plugin.c (try_init_one_plugin): Updated to new plugin_init API.
14511         * gcc-plugin.h (plugin_init): Updated signature.
14512         * gcc-plugin.h (plugin_name_args): Moved to this header.
14513         * doc/plugins.texi (plugin_init): Updated documention to reflect
14514         API change.
14515         * doc/plugins.texi (plugin_name_args): Added to documention.
14516
14517 2009-05-21  Mark Mitchell  <mark@codesourcery.com>
14518
14519         * config/arm/neon.md (*mul<mode>3add<mode>_neon): New pattern.
14520         (*mul<mode>3neg<mode>add<mode>_neon): Likewise.
14521
14522 2009-05-21  Shujing Zhao  <pearly.zhao@oracle.com>
14523
14524         * config/i386/i386.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P and
14525         JUMP_TABLE_DATA_P predicates where applicable.
14526         * config/i386/predicates.md: Ditto.
14527         * config/i386/sse.md: Ditto.
14528
14529 2009-05-21  Jakub Jelinek  <jakub@redhat.com>
14530
14531         * config/i386/i386.md (adddi_4_rex64, addsi_4, addhi_4): For
14532         operand2 -128 override length_immediate attribute to 1.
14533         * config/i386/predicates.md (constm128_operand): New predicate.
14534
14535         * config/i386/i386.c (memory_address_length): Handle %r12
14536         the same as %rsp and %r13 the same as %rbp.  For %rsp and %rbp
14537         also check REGNO.
14538         (ix86_attr_length_address_default): For MODE_SI lea in 64-bit
14539         mode look through optional ZERO_EXTEND and SUBREG.
14540         * config/i386/i386.md (R12_REG): New define_constant.
14541         (prefix_data16): For sse unit set also for MODE_TI insns.
14542         (prefix_rex): For -m32 always return 0.  For TYPE_IMOVX
14543         insns set if operand 1 is ext_QIreg_operand.
14544         (modrm): For TYPE_IMOV clear only if not MODE_DI.  For
14545         TYPE_{ALU{,1},ICMP,TEST} insn clear if there is non-shortened
14546         immediate.
14547         (*movdi_extzv_1, zero_extendhidi2, zero_extendqidi2): Change
14548         mode from MODE_DI to MODE_SI.
14549         (movdi_1_rex64): Override modrm and length_immediate attributes
14550         only for movabs (TYPE_IMOV, alternative 2).
14551         (zero_extendsidi2_rex64): Clear prefix_0f attribute if TYPE_IMOVX.
14552         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit,
14553         *float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit,
14554         *float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit,
14555         *float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Set
14556         prefix_rex attribute if DImode.
14557         (*adddi_1_rex64, *adddi_2_rex64, *adddi_3_rex64, *adddi_5_rex64,
14558         *addsi_1, *addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
14559         *addsi_3_zext, *addsi_5, *addhi_1_lea, *addhi_1, *addhi_2, *addhi_3,
14560         *addhi_5, *addqi_1_lea, *addqi_1): Override length_immediate
14561         attribute to 1 if TYPE_ALU and operand 2 is const128_operand.
14562         (pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64):
14563         Likewise.  For TYPE_IMOV clear length_immediate attribute.
14564         (*ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashldi3_cconly_rex64,
14565         *ashlsi3_1, *ashlsi3_1_zext, *ashlsi3_cmp, **ashlsi3_cconly,
14566         *ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1, *ashlhi3_cmp,
14567         *ashlhi3_cconly, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
14568         *ashlqi3_cconly): Override length_immediate attribute to 0 if TYPE_ALU
14569         or one operand TYPE_ISHIFT.
14570         (*ashrdi3_1_one_bit_rex64, *ashrdi3_one_bit_cmp_rex64,
14571         *ashrdi3_one_bit_cconly_rex64, *ashrsi3_1_one_bit,
14572         *ashrsi3_1_one_bit_zext, *ashrsi3_one_bit_cmp,
14573         *ashrsi3_one_bit_cconly, *ashrsi3_one_bit_cmp_zext,
14574         *ashrhi3_1_one_bit, *ashrhi3_one_bit_cmp, *ashrhi3_one_bit_cconly,
14575         *ashrqi3_1_one_bit, *ashrqi3_1_one_bit_slp, *ashrqi3_one_bit_cmp,
14576         *ashrqi3_one_bit_cconly, *lshrdi3_1_one_bit_rex64,
14577         *lshrdi3_cmp_one_bit_rex64, *lshrdi3_cconly_one_bit_rex64,
14578         *lshrsi3_1_one_bit, *lshrsi3_1_one_bit_zext, *lshrsi3_one_bit_cmp,
14579         *lshrsi3_one_bit_cconly, *lshrsi3_cmp_one_bit_zext,
14580         *lshrhi3_1_one_bit, *lshrhi3_one_bit_cmp, *lshrhi3_one_bit_cconly,
14581         *lshrqi3_1_one_bit, *lshrqi3_1_one_bit_slp, *lshrqi2_one_bit_cmp,
14582         *lshrqi2_one_bit_cconly, *rotlsi3_1_one_bit_rex64, *rotlsi3_1_one_bit,
14583         *rotlsi3_1_one_bit_zext, *rotlhi3_1_one_bit, *rotlqi3_1_one_bit_slp,
14584         *rotlqi3_1_one_bit, *rotrdi3_1_one_bit_rex64, *rotrsi3_1_one_bit,
14585         *rotrsi3_1_one_bit_zext, *rotrhi3_one_bit, *rotrqi3_1_one_bit,
14586         *rotrqi3_1_one_bit_slp): Override length_immediate attribute to 0,
14587         set mode attribute, don't override length attribute.
14588         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Set prefix_0f attribute
14589         to 1.
14590         (return_internal_long): Set length attribute to 2 instead of 1.
14591         (*strmovqi_rex_1, *strsetqi_rex_1, *rep_stosqi_rex64,
14592         *cmpstrnqi_nz_rex_1, *cmpstrnqi_rex_1, *strlenqi_rex_1): Clear
14593         prefix_rex attribute.
14594         * config/i386/predicates.md (ext_QIreg_operand, const128_operand):
14595         New predicates.
14596         (memory_displacement_only_operand): Always return 0 for TARGET_64BIT.
14597
14598 2009-05-21  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
14599
14600         * config/arm/thumb2.md (orsi_notsi_si): Fix typo in pattern.
14601
14602 2009-05-20  Ian Lance Taylor  <iant@google.com>
14603
14604         * tree.c (build_tree_list_vec_stat): New function.
14605         (ctor_to_vec): New function.
14606         (build_nt_call_vec): New function.
14607         (build_call_array): Change args to be a const pointer.
14608         (build_call_vec): New function.
14609         * tree.h (build_nt_call_vec): Declare.
14610         (build_tree_list_vec_stat): Declare.
14611         (build_tree_list_vec): Define.
14612         (build_call_array): Update declaration.
14613         (build_call_vec): Declare.
14614         (ctor_to_vec): Declare.
14615         * c-common.c (tree_vector_cache): New static variable.
14616         (make_tree_vector): New function.
14617         (release_tree_vector): New function.
14618         (make_tree_vector_single): New function.
14619         (make_tree_vector_copy): New function.
14620         * c-common.h (tree_vector_cache, make_tree_vector): Declare.
14621         (make_tree_vector_single, make_tree_vector_copy): Declare.
14622         * c-parser.c (cached_expr_list_1, cached_expr_list_2): Remove.
14623         (c_parser_expr_list): Don't manage cache here, instead call
14624         make_tree_vector.
14625         (c_parser_release_expr_list): Remove static function.
14626         (c_parser_vec_to_tree_list): Remove static function.
14627         (c_parser_attributes): Call build_tree_list_vec instead of
14628         c_parser_vec_to_tree_list.  Call release_tree_vector instead of
14629         c_parser_release_expr_list.
14630         (c_parser_postfix_expression_after_primary): Likewise.
14631         (c_parser_objc_keywordexpr): Likewise.
14632
14633 2009-05-20  Sandra Loosemore  <sandra@codesourcery.com>
14634
14635         * doc/tm.texi (Misc): Document TARGET_INVALID_PARAMETER_TYPE,
14636         TARGET_INVALID_RETURN_TYPE, TARGET_PROMOTED_TYPE, and
14637         TARGET_CONVERT_TO_TYPE.
14638         * hooks.c (hook_tree_const_tree_null): Define.
14639         * hooks.h (hook_tree_const_tree_null): Declare.
14640         * target.h (struct gcc_target):  Add invalid_parameter_type,
14641         invalid_return_type, promoted_type, and convert_to_type fields.
14642         * target-def.h: (TARGET_INVALID_PARAMETER_TYPE): Define.
14643         (TARGET_INVALID_RETURN_TYPE): Define.
14644         (TARGET_PROMOTED_TYPE): Define.
14645         (TARGET_CONVERT_TO_TYPE): Define.
14646         (TARGET_INITIALIZER): Update for new fields.
14647         * c-decl.c (grokdeclarator): Check targetm.invalid_return_type.
14648         (grokparms): Check targetm.invalid_parameter_type.
14649         * c-typeck.c (default_conversion): Check targetm.promoted_type.
14650         * c-convert.c (convert): Check targetm.convert_to_type.
14651
14652 2009-05-20  Adam Nemet  <anemet@caviumnetworks.com>
14653
14654         * config/mips/mips.md (*extenddi_truncate<mode>,
14655         *extendsi_truncate<mode>): Emit exts if supported.  Add attribute
14656         defintions.
14657         (*extendhi_truncateqi): New define_insn_and_sptit.
14658
14659 2009-05-20  Jakub Jelinek  <jakub@redhat.com>
14660
14661         PR middle-end/40204
14662         * fold-const.c (fold_binary) <case BIT_AND_EXPR>: Avoid infinite
14663         recursion if build_int_cst_type returns the same INTEGER_CST as arg1.
14664
14665 2009-05-20  Eric Botcazou  <ebotcazou@adacore.com>
14666
14667         * fold-const.c (build_fold_addr_expr_with_type): Take the address of
14668         the operand of VIEW_CONVERT_EXPR.
14669
14670 2009-05-20  H.J. Lu  <hongjiu.lu@intel.com>
14671
14672         * config/i386/driver-i386.c (host_detect_local_cpu): Check
14673         extended family and model for Intel processors.  Support Intel Atom.
14674
14675 2009-05-20  Olivier Hainque  <hainque@adacore.com>
14676
14677         * gstab.h (stab_code_type): Define, to be used instead of the
14678         __stab_debug_code enum, made anonymous.  Add 2009 to the copyright
14679         notice.
14680         * dbxout.c (STAB_CODE_TYPE): Remove #define and replace use
14681         occurrences by stab_code_type.
14682         * mips-tfile.c (STAB_CODE_TYPE): Remove #define, unused.
14683
14684 2009-05-20  Martin Jambor  <mjambor@suse.cz>
14685
14686         * tree-flow.h (insert_edge_copies_seq): Undeclare.
14687         (sra_insert_before): Likewise.
14688         (sra_insert_after): Likewise.
14689         (sra_init_cache): Likewise.
14690         (sra_type_can_be_decomposed_p): Likewise.
14691         * tree-mudflap.c (insert_edge_copies_seq): Copied here from tree-sra.c
14692         * tree-sra.c (sra_type_can_be_decomposed_p): Made static.
14693         (sra_insert_before): Likewise.
14694         (sra_insert_after): Likewise.
14695         (sra_init_cache): Likewise.
14696         (insert_edge_copies_seq): Made static and moved upwards.
14697
14698         * tree-complex.c (extract_component): Added VIEW_CONVERT_EXPR switch
14699         case.
14700
14701         * tree-flow-inline.h (contains_view_convert_expr_p): New function.
14702
14703         * ipa-prop.c (get_ssa_def_if_simple_copy): New function.
14704         (determine_cst_member_ptr): Call get_ssa_def_if_simple_copy to skip
14705         simple copies.
14706
14707 2009-05-20  Richard Guenther  <rguenther@suse.de>
14708
14709         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
14710         with mismatched comparison modes.
14711
14712 2009-05-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
14713
14714         * config/arm/arm.md (*arm_iorsi3): Refactored for only ARM.
14715         (peephole ior (reg, int) -> mov, ior): Refactored for only ARM.
14716         * config/arm/thumb2.md (*thumb_andsi_not_shiftsi_si): Allow bic
14717         with shifts for Thumb2.
14718         (orsi_notsi): New for orn.
14719         (*thumb_orsi_notshiftsi_si): Allow orn with shifts.
14720         (*thumb2_iorsi3): Rewrite support for iorsi for Thumb2.
14721         * config/arm/arm.c (const_ok_for_op): Split case for IOR for Thumb2.
14722         (arm_gen_constant): Set can_invert for IOR and Thumb2, Add comments.
14723         Don't invert remainder for IOR.
14724
14725 2009-05-19  Zdenek Dvorak  <ook@ucw.cz>
14726
14727         PR tree-optimization/40087
14728         * tree-ssa-loop-niter.c (number_of_iterations_ne_max,
14729         number_of_iterations_ne): Rename never_infinite argument.
14730         (number_of_iterations_lt_to_ne, number_of_iterations_lt,
14731         number_of_iterations_le): Handle pointer-type ivs when
14732         exit_must_be_taken is false.
14733         (number_of_iterations_cond):  Do not always assume that
14734         exit_must_be_taken if the control variable is a pointer.
14735
14736 2009-05-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14737
14738         * c-typeck.c (build_binary_op): Allow % on integal vectors.
14739         * doc/extend.texi (Vector Extension): Document that % is allowed too.
14740
14741 2009-05-19  H.J. Lu  <hongjiu.lu@intel.com>
14742
14743         * config/i386/i386.c (ix86_avoid_jump_mispredicts): Check
14744         ASM_OUTPUT_MAX_SKIP_PAD instead of ASM_OUTPUT_MAX_SKIP_ALIGN.
14745
14746 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
14747
14748         PR c/40172
14749         * c.opt (Wlogical-op): Disabled by default.
14750         * c-opt (c_common_post_options): Do not enable Wlogical-op with
14751         Wextra.
14752         * doc/invoke.texi (Wlogical-op): Likewise.
14753
14754 2009-05-19  Eric Botcazou  <ebotcazou@adacore.com>
14755
14756         * tree-scalar-evolution.c (follow_ssa_edge_expr) <NOP_EXPR>: Turn
14757         into CASE_CONVERT.
14758         <PLUS_EXPR>: Strip useless type conversions instead of type nops.
14759         Propagate the type of the first operand.
14760         <ASSERT_EXPR>: Simplify.
14761         (follow_ssa_edge_in_rhs): Use gimple_expr_type to get the type.
14762         Rewrite using the RHS code as discriminant.
14763         <NOP_EXPR>: Turn into CASE_CONVERT.
14764         <PLUS_EXPR>: Propagate the type of the first operand.
14765
14766 2009-05-19  Steve Ellcey  <sje@cup.hp.com>
14767
14768         * config/ia64/ia64-protos.h (ia64_dconst_0_5): New.
14769         (ia64_dconst_0_375): New.
14770         * config/ia64/ia64.c (ia64_override_options): Remove
14771         -minline-sqrt-min-latency warning.
14772         (ia64_dconst_0_5_rtx, ia64_dconst_0_5): New.
14773         (ia64_dconst_0_375_rtx, ia64_dconst_0_375): New
14774         * config/ia64/ia64.md (*sqrt_approx): Remove.
14775         (sqrtsf2): Remove #if 0.
14776         (sqrtsf2_internal_thr): Rewrite and move to div.md.
14777         (sqrtdf): Remove assert.
14778         (sqrtdf2_internal_thr): Rewrite and move to div.md.
14779         (sqrtxf2): Remove #if 0.
14780         (sqrtxf2_internal_thr): Rewrite and move to div.md.
14781         * div.md (sqrt_approx_rf): New.
14782         (sqrtsf2_internal_thr): New implementation.
14783         (sqrtsf2_internal_lat): New.
14784         (sqrtdf2_internal_thr: New implementation.
14785         (sqrtxf2_internal): New implementation.
14786
14787 2009-05-19  Francois-Xavier Coudert  <fxcoudert@gmail.com>
14788             Hans-Peter Nilsson  <hp@axis.com>
14789
14790         * defaults.h (UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE)
14791         (WCHAR_TYPE, MODIFIED_WCHAR_TYPE, PTRDIFF_TYPE, WINT_TYPE)
14792         (INTMAX_TYPE, UINTMAX_TYPE, SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE)
14793         (INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE)
14794         (UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE)
14795         (INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE)
14796         (UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE)
14797         (INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE)
14798         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE)
14799         (SIZE_TYPE, PID_TYPE, CHAR16_TYPE, CHAR32_TYPE): Move defaults here...
14800         * c-common.c: ...from here.
14801
14802 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
14803
14804         * c-common.c (warn_logical_operator): Remove unnecessary conditionals.
14805
14806 2009-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14807
14808         * builtins.c (do_mpc_arg1): Separate MPFR/MPC C rounding types.
14809
14810 2009-05-19  Ben Elliston  <bje@au.ibm.com>
14811
14812         * unwind-dw2-fde.c (fde_unencoded_compare): Replace type punning
14813         assignments with memcpy calls.
14814         (add_fdes): Likewise.
14815         (binary_search_unencoded_fdes): Likewise.
14816         (linear_search_fdes): Eliminate type puns.
14817
14818 2009-05-19  Richard Guenther  <rguenther@suse.de>
14819
14820         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do
14821         not falsely claim to have propagated into all uses.
14822
14823 2009-05-19  Ben Elliston  <bje@au.ibm.com>
14824
14825         * doc/invoke.texi (C Dialect Options): Update OpenMP specification
14826         version to v3.0.
14827
14828 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
14829
14830         * config/sh/sh-protos.h (sh_legitimate_address_p): Remove.
14831         * config/sh/sh.c (sh_legitimate_address_p): Make static.
14832         (TARGET_LEGITIMATE_ADDRESS_P): New.
14833         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14834         * config/sh/sh.md: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
14835
14836 2009-05-18  Dodji Seketeli  <dodji@redhat.com>
14837
14838         PR debug/40109
14839         * dwarf2out.c (gen_type_die_with_usage): Generate the DIE as a
14840         child of the containing namespace's DIE.
14841
14842 2009-05-18  Adam Nemet  <anemet@caviumnetworks.com>
14843
14844         * config/mips/mips.md (*zero_extend<GPR:mode>_trunc<SHORT:mode>,
14845         *zero_extendhi_truncqi):  Move after the zero_extend patterns.
14846         (*extenddi_truncate<mode>, *extendsi_truncate<mode>): Move after the
14847         extend patterns.
14848
14849 2009-05-18  H.J. Lu  <hongjiu.lu@intel.com>
14850
14851         PR target/39942
14852         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Replace
14853         gen_align with gen_pad.
14854         (ix86_reorg): Check ASM_OUTPUT_MAX_SKIP_PAD instead of
14855         #ifdef ASM_OUTPUT_MAX_SKIP_ALIGN.
14856
14857         * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): New.
14858         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
14859
14860         * config/i386/i386.md (align): Renamed to ...
14861         (pad): This.  Replace ASM_OUTPUT_MAX_SKIP_ALIGN with
14862         ASM_OUTPUT_MAX_SKIP_PAD.
14863
14864 2009-05-18  Andreas Schwab  <schwab@linux-m68k.org>
14865
14866         * config.gcc: Fix variable syntax.
14867
14868         PR target/39531
14869         * config/m68k/m68k.c (output_andsi3): Mask off sign bit copies
14870         before calling exact_log2.
14871         (output_iorsi3): Likewise.
14872         (output_xorsi3): Likewise.
14873
14874 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
14875
14876         * config/sh/sh.c (expand_cbranchdi4): Use a scratch register
14877         for the none zero constant operand except for EQ and NE
14878         comprisons even when the first operand is R0.
14879
14880 2009-05-18  Andreas Krebbel  <krebbel1@de.ibm.com>
14881
14882         * config/s390/2064.md: Remove trailing whitespaces.
14883         * config/s390/2084.md: Likewise.
14884         * config/s390/constraints.md: Likewise.
14885         * config/s390/fixdfdi.h: Likewise.
14886         * config/s390/libgcc-glibc.ver: Likewise.
14887         * config/s390/s390-modes.def: Likewise.
14888         * config/s390/s390-protos.h: Likewise.
14889         * config/s390/s390.c: Likewise.
14890         * config/s390/s390.h: Likewise.
14891         * config/s390/s390.md: Likewise.
14892         * config/s390/tpf-unwind.h: Likewise.
14893
14894 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
14895
14896         * config/m68k/m68k.c (m68k_legitimize_address): Fix typo in signature.
14897
14898 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
14899
14900         M68K TLS support.
14901         * configure.ac (m68k-*-*): Check if binutils support TLS.
14902         * configure: Regenerate.
14903         * config/m68k/predicates.md (symbolic_operand): Extend comment.
14904         * config/m68k/constraints.md (Cu): New constraint.
14905         * config/m68k/m68k.md (UNSPEC_GOTOFF): Remove.
14906         (UNSPEC_RELOC16, UNSPEC_RELOC32): New constants.
14907         (movsi): Handle TLS symbols.
14908         (addsi3_5200): Handle XTLS symbols, indent.
14909         * config/m68k/m68k-protos.h (m68k_legitimize_tls_address): Declare.
14910         (m68k_tls_reference_p): Declare.
14911         (m68k_legitimize_address): Declare.
14912         (m68k_unwrap_symbol): Declare.
14913         * config/m68k/m68k.opt (mxtls): New option.
14914         * config/m68k/m68k.c (ggc.h): Include.
14915         (m68k_output_dwarf_dtprel): Implement hook.
14916         (TARGET_HAVE_TLS, TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
14917         (m68k_expand_prologue): Load GOT pointer when function needs it.
14918         (m68k_illegitimate_symbolic_constant_p): Handle TLS symbols.
14919         (m68k_legitimate_constant_address_p): Same.
14920         (m68k_decompose_address): Handle TLS references.
14921         (m68k_get_gp): New static function.
14922         (enum m68k_reloc): New contants.
14923         (TLS_RELOC_P): New macro.
14924         (m68k_wrap_symbol): New static function.
14925         (m68k_unwrap_symbol): New function.
14926         (m68k_final_prescan_insn_1): New static function.
14927         (m68k_final_prescan_insn): New function.
14928         (m68k_move_to_reg, m68k_wrap_symbol_into_got_ref): New static
14929         functions.
14930         (legitimize_pic_address): Handle TLS references..
14931         (m68k_tls_get_addr, m68k_get_tls_get_addr)
14932         (m68k_libcall_value_in_a0_p)
14933         (m68k_call_tls_get_addr, m68k_read_tp, m68k_get_m68k_read_tp)
14934         (m68k_call_m68k_read_tp): Helper variables and functions for ...
14935         (m68k_legitimize_tls_address): Handle TLS references.
14936         (m68k_tls_symbol_p, m68k_tls_reference_p_1, m68k_tls_reference_p):
14937         New functions.
14938         (m68k_legitimize_address): Handle TLS symbols.
14939         (m68k_get_reloc_decoration): New static function.
14940         (m68k_output_addr_const_extra): Handle UNSPEC_RELOC16 and
14941         UNSPEC_RELOC32.
14942         (m68k_output_dwarf_dtprel): Implement hook.
14943         (print_operand_address): Handle UNSPEC_RELOC16 adn UNSPEC_RELOC32.
14944         (m68k_libcall_value): Return result in A0 instead of D0 when asked by
14945         m68k_call_* routines.
14946         (sched_attr_op_type): Handle TLS symbols.
14947         (gt-m68k.h): Include.
14948         * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
14949         (LEGITIMATE_PIC_OPERAND_P): Support TLS.
14950
14951 2009-05-18  Martin Jambor  <mjambor@suse.cz>
14952
14953         * ipa-prop.c (ipa_check_stmt_modifications): Removed.
14954         (visit_store_addr_for_mod_analysis): New function.
14955         (ipa_detect_param_modifications): Use walk_stmt_load_store_addr_ops.
14956         (determine_cst_member_ptr): Use gimple_assign_single_p.
14957         (ipa_get_stmt_member_ptr_load_param): Use gimple_assign_single_p.
14958         (ipa_analyze_call_uses): Use !gimple_assign_rhs2 rather than number of
14959         operands.  Don't check number of operands of a NOP_EXPR.
14960
14961 2009-05-18  Eric Fisher  <joefoxreal@gmail.com>
14962
14963         * doc/tree-ssa.texi (SSA Operands): Fix a mistake.
14964
14965 2009-05-17  Manuel López-Ibáñez  <manu@gcc.gnu.org>
14966
14967         PR c/40172
14968         * c-common.c (warn_logical_operator): Don't warn if one of
14969         expression isn't always true or false.
14970
14971 2009-05-17  Kai Tietz  <kai.tietz@onevision.com>
14972
14973         * config/i386/biarch32.h: New file.
14974         * config.gcc: Add for target i386-w64-* the biarch32.h to tm_file.
14975
14976 2009-05-17  Adam Nemet  <anemet@caviumnetworks.com>
14977
14978         * config/mips/mips.md (*zero_extend<mode>_trunchi,
14979         *zero_extend<mode>_truncqi): Merge these into ...
14980         (*zero_extend<GPR:mode>_trunc<SHORT:mode>): ... this new pattern.
14981         Name the pattern following this as *zero_extendhi_truncqi.
14982
14983 2009-05-16  Brad Lucier  <lucier@math.purdue.edu>
14984
14985         PR middle-end/39301
14986         * hwint.h: Add macro HOST_WIDEST_INT_PRINT.
14987         * bitmap.c (bitmap_descriptor): Make fields HOST_WIDEST_INT.
14988         (output_info): Make field HOST_WIDEST_INT.
14989         (print_statistics): Use HOST_WIDEST_INT_PRINT.
14990         (dump_bitmat_statistics): Same.
14991
14992 2009-05-16  Francois-Xavier Coudert  <fxcoudert@gmail.com>
14993
14994         * config.gcc (use_gcc_stdint):  Set to wrap.
14995         * config/darwin.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
14996         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
14997         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
14998         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
14999         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
15000         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
15001         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
15002         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
15003
15004 2009-05-16  Joseph Myers  <joseph@codesourcery.com>
15005
15006         * config.gcc (mips*-*-*): Support arch_32, arch_64, tune_32 and
15007         tune_64.
15008         * config/mips/mips.h (MIPS_ABI_DEFAULT, MULTILIB_ABI_DEFAULT):
15009         Move definitions earlier.
15010         (OPT_ARCH64, OPT_ARCH32): Define.
15011         (OPTION_DEFAULT_SPECS): Add entries for arch_32, arch_64, tune_32
15012         and tune_64.
15013
15014 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
15015
15016         PR target/40153
15017         * arm.md (cstoresi_nltu_thumb1): Use a neg of ltu as the pattern name
15018         implies.
15019
15020 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
15021
15022         * arm.md (movdi2): Copy non-reg values to DImode registers.
15023
15024 2009-05-16  Jakub Jelinek  <jakub@redhat.com>
15025
15026         PR target/39942
15027         * final.c (label_to_max_skip): New function.
15028         (label_to_alignment): Only use LABEL_TO_ALIGNMENT if
15029         CODE_LABEL_NUMBER <= max_labelno.
15030         * output.h (label_to_max_skip): New prototype.
15031         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Renamed to...
15032         (ix86_avoid_jump_mispredicts): ... this.  Don't define if
15033         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.  Update comment.
15034         Handle CODE_LABELs with >= 16 byte alignment or with
15035         max_skip == (1 << align) - 1.
15036         (ix86_reorg): Don't call ix86_avoid_jump_mispredicts if
15037         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.
15038
15039         PR target/39942
15040         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Don't emit second
15041         .p2align 3 if MAX_SKIP is smaller than 7.
15042         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
15043
15044 2009-05-15  Ian Lance Taylor  <iant@google.com>
15045
15046         * alias.c (struct alias_set_entry_d): Rename from struct
15047         alias_set_entry.  Change all uses.
15048         * except.c (struct call_site_record_d): Rename from struct
15049         call_site_record.  Change all uses.
15050         * except.h (struct eh_region_d): Rename from struct eh_region.
15051         Change all uses.
15052         * gcse.c (struct hash_table_d): Rename from struct hash_table.
15053         Change all uses.
15054         * graphite.c (struct ivtype_map_elt_d): Rename fromstruct
15055         ivtype_map_elt.  Change all uses.
15056         (struct rename_map_elt_d): Rename fromstruct rename_map_elt.
15057         Change all uses.
15058         (struct ifsese_d): Rename fromstruct ifsese.  Change all uses.
15059         * graphite.h (struct name_tree_d): Rename from struct name_tree.
15060         Change all uses.
15061         (struct sese_d): Rename from struct sese.  Change all uses.
15062         * omega.h (struct eqn_d): Rename from struct eqn.  Change all uses.
15063         (struct omega_pb_d): Rename from struct omega_pb.  Change all uses.
15064         * optabs.h (struct optab_d): Rename from struct optab.  Change all
15065         uses.
15066         (struct convert_optab_d): Rename from struct convert_optab.
15067         Change all uses.
15068         * tree-pass.h (struct ipa_opt_pass_d): Rename fromstruct
15069         ipa_opt_pass.  Change all uses.
15070         * tree-predcom.c (struct dref_d): Rename from struct dref.  Change
15071         all uses.
15072
15073         * c-decl.c (pushtag): If -Wc++-compat, warn if the tag is already
15074         defined as a typedef.
15075         (grokdeclarator): If -Wc++-compat, warn if a typedef is already
15076         defined as a tag.
15077
15078 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
15079
15080         PR 16302
15081         * fold-const.c (make_range,build_range_check,merge_ranges): Move
15082         declaration to...
15083         (merge_ranges): Returns bool.
15084         * tree.h (make_range): .. to here.
15085         (build_range_check): Likewise.
15086         (merge_ranges): Likewise. Renamed from merge_ranges.
15087         * c-typeck.c (parser_build_binary_op): Update calls to
15088         warn_logical_operator.
15089         * c-common.c (warn_logical_operator): Add new warning.
15090         * c-common.h (warn_logical_operator): Update declaration.
15091
15092 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
15093
15094         * ira-conflicts.c (add_insn_allocno_copies): Fix wrong conditional.
15095
15096 2009-05-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15097
15098         * doc/install.texi: Document MPC requirements, flags etc.
15099
15100         * builtins.c (do_mpc_arg1, fold_builtin_ccos): New.
15101         (fold_builtin_cexp): Ensure we get a complex REAL_TYPE.
15102         Evaluate constant arguments.
15103         (fold_builtin_carg): Ensure we get a complex REAL_TYPE.
15104         (fold_builtin_1): Likewise, also evaluate constant arguments.
15105         Remove superfluous break.
15106         (do_mpc_ckconv): New.
15107         * real.h: Include mpc.h.
15108         * toplev.c (print_version): Output MPC version info if available.
15109
15110 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
15111
15112         * fold-const.c (fold_convert_const_real_from_real): Check for overflow.
15113
15114 2009-05-15  H.J. Lu  <hongjiu.lu@intel.com>
15115
15116         * config/i386/i386.c (ix86_reorg): Call optimize_function_for_speed_p
15117         only once.
15118
15119 2009-05-15  Jan Hubicka  <jh@suse.cz>
15120
15121         * doc/invoke.texi (max-early-inliner-iterations): New flag.
15122         * ipa-inline.c (enum inlining_mode): New INLINE_SIZE_NORECURSIVE.
15123         (try_inline): Fix return value.
15124         (cgraph_decide_inlining_incrementally): Honor new value.
15125         (cgraph_early_inlining): Handle indirect inlining.
15126         * params.def (PARAM_EARLY_INLINER_MAX_ITERATIONS): New.
15127
15128 2009-05-15  Jan Hubicka  <jh@suse.cz>
15129
15130         * cgraph.h (struct cgraph_node): Add finalized_by_frotnend flag.
15131         * cgraphunit.c (cgraph_finalize_function): Set it.
15132         (cgraph_expand_function): Use it.
15133
15134 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
15135
15136         * real.c (encode_ieee_half): Define.
15137         (decode_ieee_half): Define.
15138         (ieee_half_format): Define.
15139         (arm_half_format): Define.
15140         * real.h (ieee_half_format): Declare.
15141         (arm_half_format): Declare.
15142
15143 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
15144
15145         * optabs.c (prepare_float_lib_cmp):  Test that the comparison,
15146         swapped, and reversed optabs exist before trying to use them.
15147
15148 2009-05-15  Paul Brook  <paul@codesourcery.com>
15149             Sandra Loosemore  <sandra@codesourcery.com>
15150
15151         * config/arm/arm.c (neon_vector_mem_operand): Handle element/structure
15152         loads.  Allow PRE_DEC.
15153         (output_move_neon): Handle PRE_DEC.
15154         (arm_print_operand): Add 'A' for neon structure loads.
15155         * config/arm/arm-protos.h (neon_vector_mem_operand): Update prototype.
15156         * config/arm/neon.md (neon_mov): Update comment.
15157         * config/arm/constraints.md (Un, Us): Update neon_vector_mem_operand
15158         calls.
15159         (Um): New constraint.
15160
15161 2009-05-15  Jan Hubicka  <jh@suse.cz>
15162
15163         Revert the following patch until testsuite fallout is fixed:
15164         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
15165         * cgraph.h (struct inline_summary): New filed self_wize,
15166         size_inlining_benefit, self_time and time_inlining_benefit.
15167         (struct cgraph_global_info): Replace insns by time ans size fields.
15168         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
15169         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
15170         (ipcp_update_callgraph): Do not touch function bodies.
15171         * ipa-inline.c: Include except.h
15172         (MAX_TIME): New constant.
15173         (overall_insns): Remove
15174         (overall_size, max_benefit): New static variables.
15175         (cgraph_estimate_time_after_inlining): New function.
15176         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
15177         (cgraph_clone_inlined_nodes): Update size.
15178         (cgraph_mark_inline_edge): Update size.
15179         (cgraph_estimate_growth): Use size info.
15180         (cgraph_check_inline_limits): Check size.
15181         (cgraph_default_inline_p): Likewise.
15182         (cgraph_edge_badness): Compute badness based on benefit and size cost.
15183         (cgraph_decide_recursive_inlining): Check size.
15184         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
15185         and times.
15186         (cgraph_decide_inlining): Likewise.
15187         (cgraph_decide_inlining_incrementally): Likewise; honor
15188         PARAM_EARLY_INLINING_INSNS.
15189         (likely_eliminated_by_inlining_p): New predicate.
15190         (estimate_function_body_sizes): New function.
15191         (compute_inline_parameters): Use it.
15192         * except.c (must_not_throw_labels): New function.
15193         * except.h (must_not_throw_labels): Declare.
15194         * tree-inline.c (init_inline_once): Kill inlining_weigths
15195         * tree-ssa-structalias.c: Avoid uninitialized warning.
15196         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
15197         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
15198         (PARAM_INLINE_CALL_COST): Remove.
15199         (PARAM_EARLY_INLINING_INSNS): New.
15200
15201 2009-05-15  Richard Guenther  <rguenther@suse.de>
15202
15203         * tree-ssa-pre.c (eliminate): Use TODO_update_ssa_only_virtuals,
15204         not TODO_update_ssa.
15205
15206 2009-05-15  Richard Guenther  <rguenther@suse.de>
15207
15208         PR tree-optimization/39999
15209         * gimple.h (gimple_expr_type): Use the expression type looking
15210         through useless conversions.
15211         * tree-ssa-sccvn.c (vn_nary_op_lookup_stmt): Use gimple_expr_type.
15212         (vn_nary_op_insert_stmt): Likewise.
15213         (simplify_binary_expression): Likewise.
15214
15215 2009-05-15  Richard Guenther  <rguenther@suse.de>
15216
15217         * common.opt (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
15218         New options, enabled by default.
15219         * doc/invoke.texi (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
15220         Document.
15221         * tree-ssa-forwprop.c (gate_forwprop): Use flag_tree_forwprop.
15222         * tree-ssa-phiprop.c (gate_phiprop): Use flag_tree_phiprop.
15223         * tree-ssa-structalias.c (gate_tree_pta): New function.
15224         (pass_build_alias): Use it.
15225
15226 2009-05-15  Joseph Myers  <joseph@codesourcery.com>
15227
15228         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also
15229         recurse on an invariant address if a conversion from a pointer
15230         type to a wider integer type is involved.
15231
15232 2009-05-15  Jan Hubicka  <jh@suse.cz>
15233
15234         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
15235         * cgraph.h (struct inline_summary): New filed self_wize,
15236         size_inlining_benefit, self_time and time_inlining_benefit.
15237         (struct cgraph_global_info): Replace insns by time ans size fields.
15238         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
15239         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
15240         (ipcp_update_callgraph): Do not touch function bodies.
15241         * ipa-inline.c: Include except.h
15242         (MAX_TIME): New constant.
15243         (overall_insns): Remove
15244         (overall_size, max_benefit): New static variables.
15245         (cgraph_estimate_time_after_inlining): New function.
15246         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
15247         (cgraph_clone_inlined_nodes): Update size.
15248         (cgraph_mark_inline_edge): Update size.
15249         (cgraph_estimate_growth): Use size info.
15250         (cgraph_check_inline_limits): Check size.
15251         (cgraph_default_inline_p): Likewise.
15252         (cgraph_edge_badness): Compute badness based on benefit and size cost.
15253         (cgraph_decide_recursive_inlining): Check size.
15254         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
15255         and times.
15256         (cgraph_decide_inlining): Likewise.
15257         (cgraph_decide_inlining_incrementally): Likewise; honor
15258         PARAM_EARLY_INLINING_INSNS.
15259         (likely_eliminated_by_inlining_p): New predicate.
15260         (estimate_function_body_sizes): New function.
15261         (compute_inline_parameters): Use it.
15262         * except.c (must_not_throw_labels): New function.
15263         * except.h (must_not_throw_labels): Declare.
15264         * tree-inline.c (init_inline_once): Kill inlining_weigths
15265         * tree-ssa-structalias.c: Avoid uninitialized warning.
15266         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
15267         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
15268         (PARAM_INLINE_CALL_COST): Remove.
15269         (PARAM_EARLY_INLINING_INSNS): New.
15270         doc/invoke.texi (max-inline-insns-auto, early-inlining-insns): Update.
15271         (inline-call-cost): Remove.
15272         (early-inlining-insns): New.
15273
15274 2009-05-15  Eric Botcazou  <ebotcazou@adacore.com>
15275
15276         * dbxout.c (dbxout_range_type): Add LOW and HIGH parameters.  Use them
15277         for bounds.
15278         (print_int_cst_bounds_in_octal_p): Likewise.
15279         (dbxout_type): Adjust calls to above functions.  Be prepared to deal
15280         with subtypes.
15281         * dwarf2out.c (base_type_die): Likewise.
15282         (is_subrange_type): Delete.
15283         (subrange_type_die): Add LOW and HIGH parameters.  Use them for bounds.
15284         (modified_type_die): Call subrange_type_for_debug_p on subtypes.
15285         * fold-const.c (fold_truth_not_expr) <CONVERT_EXPR>: Do not strip it
15286         if the destination type is boolean.
15287         (build_range_check): Do not special-case subtypes.
15288         (fold_sign_changed_comparison): Likewise.
15289         (fold_unary): Likewise.
15290         * langhooks-def.h (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define.
15291         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_GET_SUBRANGE_BOUNDS.
15292         * langhooks.h (lang_hooks_for_types): Add get_subrange_bounds.
15293         * tree.c (subrange_type_for_debug_p): New predicate based on the
15294         former is_subrange_type.
15295         * tree.h (subrange_type_for_debug_p): Declare.
15296         * tree-chrec.c (avoid_arithmetics_in_type_p): Delete.
15297         (convert_affine_scev): Remove call to above function.
15298         (chrec_convert_aggressive): Likewise.
15299         * tree-ssa.c (useless_type_conversion_p_1): Do not specifically return
15300         false for conversions involving subtypes.
15301         * tree-vrp.c (vrp_val_max): Do not special-case subtypes.
15302         (vrp_val_min): Likewise.
15303         (needs_overflow_infinity): Likewise.
15304         (extract_range_from_unary_expr): Likewise.
15305
15306 2009-05-15  Paolo Bonzini  <bonzini@gnu.org>
15307
15308         * config/frv/frv.h: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
15309         * config/frv/frv.c: Likewise.
15310         * config/s390/s390.c: Likewise.
15311         * config/sparc/sparc.h: Likewise.
15312         * config/i386/i386.h: Likewise.
15313         * config/i386/i386.c: Likewise.
15314         * config/crx/crx.c: Likewise.
15315         * config/m68hc11/m68hc11.h: Likewise.
15316         * config/iq2000/iq2000.c: Likewise.
15317         * config/mn10300/mn10300.h: Likewise.
15318         * config/mn10300/mn10300.c: Likewise.
15319         * config/m68k/m68k.c: Likewise.
15320         * config/rs6000/rs6000.c: Likewise.
15321         * config/rs6000/xcoff.h: Likewise.
15322         * config/rs6000/linux64.h: Likewise.
15323         * config/rs6000/sysv4.h: Likewise.
15324         * config/score/score3.c: Likewise.
15325         * config/score/score7.c: Likewise.
15326         * config/score/score.c: Likewise.
15327         * config/arm/arm.md: Likewise.
15328         * config/mips/mips.c: Likewise.
15329         * config/mips/mips.md: Likewise.
15330         * config/bfin/bfin.h: Likewise.
15331         * config/pa/pa.c: Likewise.
15332         * config/pa/constraints.md: Likewise.
15333
15334         * config/pdp11/pdp11-protos.h (legitimate_address_p): Delete.
15335         * config/pdp11/pdp11.c (legitimate_address_p): Delete.
15336         * config/pdp11/pdp11.h: Use memory_address_p instead.
15337
15338 2009-05-14  Ian Lance Taylor  <iant@google.com>
15339
15340         * passes.c (finish_optimization_passes): Change i to int.
15341         * plugin.c (plugins_active_p): Change event to int.
15342         (dump_active_plugins): Likewise.
15343         * reginfo.c (invalid_mode_change_p): Change to to unsigned int.
15344         Add cast.
15345         * tree.c (tree_range_check_failed): Change c to unsigned int.
15346         (omp_clause_range_check_failed): Likewise.
15347         (build_common_builtin_nodes): Change mode to int.  Add cast.
15348         * config/ia64/ia64.c (is_emitted): Change r to unsigned int.
15349         (ia64_hard_regno_rename_ok, ia64_eh_uses): Likewise.
15350
15351         * c-typeck.c (build_unary_op): If -Wc++-compat, warn about using
15352         ++ or -- with a variable of enum type.
15353
15354 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
15355
15356         PR driver/40144
15357         * opts.c (common_handle_option): Add OPT_fcse_skip_blocks as a no-op.
15358
15359 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
15360
15361         * store-motion.c: Do not include params.h
15362         * Makefile.in: Fix dependencies for various files.
15363
15364 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
15365
15366         * auto-inc-dec.c: Fix pass description, remove apparent
15367         accidental duplication.
15368
15369 2009-05-14  H.J. Lu  <hongjiu.lu@intel.com>
15370
15371         PR middle-end/40147
15372         * ipa-utils.h (memory_identifier_string): Moved to ...
15373         * tree.h (memory_identifier_string): Here.  Add GTY(()).
15374
15375 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
15376
15377         * doc/tm.texi (TARGET_LEGITIMATE_ADDRESS_P): Refer mainly to this
15378         in the former documentation of...
15379         (GO_IF_LEGITIMATE_ADDRESS): ... this.
15380         * ira-conflicts.c (get_dup_num): Use address_operand.
15381         * targhooks.c (default_legitimate_address_p): New.
15382         * targhooks.h (default_legitimate_address_p): New.
15383         * reload.c (strict_memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]:
15384         Call hook.
15385         * recog.c (memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]: Call hook.
15386         * target.h (struct target): Add legitimate_address_p.
15387         * target-def.h (TARGET_LEGITIMATE_ADDRESS_P): New.
15388         (TARGET_INITIALIZER): Include it.
15389
15390         * config/alpha/alpha.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
15391         * config/alpha/alpha-protos.h (alpha_legitimate_address_p): Remove.
15392         * config/alpha/alpha.c (alpha_legitimate_address_p): Make static.
15393         (TARGET_LEGITIMATE_ADDRESS_P): New.
15394
15395         * config/frv/frv.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
15396         (REG_OK_STRICT_P): Delete.
15397         * config/frv/frv-protos.h (frv_legitimate_address_p): Rename to...
15398         (frv_legitimate_address_p_1): ... this.
15399         * config/frv/frv.c (frv_legitimate_address_p): Forward to...
15400         (frv_legitimate_address_p_1): ... the renamed old
15401         frv_legitimate_address_p.
15402         * config/frv/predicates.md: Adjust calls to frv_legitimate_address_p.
15403         (TARGET_LEGITIMATE_ADDRESS_P): New.
15404
15405         * config/s390/s390.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
15406         * config/s390/s390-protos.h (legitimate_address_p): Remove.
15407         * config/s390/s390.c (legitimate_address_p): Rename to...
15408         (s390_legitimate_address_p): ... this, make static.
15409         (legitimize_address): Adjust call.
15410         (TARGET_LEGITIMATE_ADDRESS_P): New.
15411         * config/s390/constraints.md ("e"): Call strict_memory_address_p.
15412
15413         * config/m32c/m32c.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
15414         * config/m32c/m32c-protos.h (m32c_legitimate_address_p): Remove.
15415         * config/m32c/m32c.c (m32c_legitimate_address_p): Make static.
15416         (TARGET_LEGITIMATE_ADDRESS_P): New.
15417
15418         * config/spu/spu.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
15419         * config/spu/spu-protos.h (spu_legitimate_address): Remove.
15420         * config/spu/spu.c (spu_legitimate_address): Rename to...
15421         (spu_legitimate_address_p): ... this, make static.
15422         (TARGET_LEGITIMATE_ADDRESS_P): New.
15423
15424         * config/sparc/sparc.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
15425         * config/sparc/sparc-protos.h (legitimate_address_p): Remove.
15426         * config/sparc/sparc.c (legitimate_address_p): Rename to...
15427         (sparc_legitimate_address_p): ... this, make static and return bool.
15428         (legitimize_address): Adjust call.
15429         (TARGET_LEGITIMATE_ADDRESS_P): New.
15430
15431         * config/i386/i386.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
15432         * config/i386/i386-protos.h (legitimate_address_p): Remove.
15433         * config/i386/i386.c (legitimate_address_p): Rename to...
15434         (ix86_legitimate_address_p): ... this, make static.
15435         (constant_address_p): Move after it, adjust call.
15436         (TARGET_LEGITIMATE_ADDRESS_P): New.
15437
15438         * config/avr/avr.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
15439         * config/avr/avr-protos.h (legitimate_address_p): Remove.
15440         * config/avr/avr.c (legitimate_address_p): Rename to...
15441         (avr_legitimate_address_p): ... this, make static.
15442         (legitimize_address): Adjust call.
15443         (TARGET_LEGITIMATE_ADDRESS_P): New.
15444
15445         * config/crx/crx.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
15446         * config/crx/crx-protos.h (crx_legitimate_address_p): Remove.
15447         * config/crx/crx.c (crx_legitimate_address_p): Make static.
15448         (TARGET_LEGITIMATE_ADDRESS_P): New.
15449
15450         * config/xtensa/xtensa.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
15451         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): Remove.
15452         * config/xtensa/xtensa.c (xtensa_legitimate_address_p): Make static.
15453         (TARGET_LEGITIMATE_ADDRESS_P): New.
15454
15455         * config/stormy16/stormy16.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
15456         * config/stormy16/stormy16-protos.h (xstormy16_legitimate_address_p):
15457         Remove.
15458         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p):
15459         Make static.
15460         (TARGET_LEGITIMATE_ADDRESS_P): New.
15461
15462         * config/m68hc11/m68hc11.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
15463         * config/m68hc11/m68hc11-protos.h (m68hc11_go_if_legitimate_address):
15464         Remove.
15465         * config/m68hc11/m68hc11.c (m68hc11_go_if_legitimate_address):
15466         Rename to...
15467         (m68hc11_legitimate_address_p): ... this, make static.
15468         (go_if_legitimate_address_internal): Rename to...
15469         (m68hc11_legitimate_address_p_1): ... this.
15470         (legitimize_address): Adjust call.
15471         (TARGET_LEGITIMATE_ADDRESS_P): New.
15472
15473         * config/iq2000/iq2000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
15474         * config/iq2000/iq2000-protos.h (iq2000_legitimate_address_p): Remove.
15475         * config/iq2000/iq2000.c (iq2000_legitimate_address_p): Make static.
15476         (TARGET_LEGITIMATE_ADDRESS_P): New.
15477
15478         * config/mn10300/mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
15479         * config/mn10300/mn10300-protos.h (legitimate_address_p): Remove.
15480         * config/mn10300/mn10300.c (legitimate_address_p): Rename to...
15481         (mn10300_legitimate_address_p): ... this, make static.
15482         (TARGET_LEGITIMATE_ADDRESS_P): New.
15483
15484         * config/m68k/m68k.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
15485         * config/m68k/m68k-protos.h (m68k_legitimate_address_p): Remove.
15486         * config/m68k/m68k.c (m68k_legitimate_address_p): Make static.
15487         (TARGET_LEGITIMATE_ADDRESS_P): New.
15488
15489         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
15490         (REG_OK_STRICT_FLAG, REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P): Delete.
15491         (INT_REG_OK_FOR_BASE_P, INT_REG_OK_FOR_INDEX_P): Move above.
15492         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
15493         * config/rs6000/rs6000-protos.h (rs6000_legitimate_address): Remove.
15494         * config/rs6000/rs6000.c (rs6000_legitimate_address): Rename to...
15495         (rs6000_legitimate_address_p): ... this, make static.
15496         (TARGET_LEGITIMATE_ADDRESS_P): New.
15497         (REG_MODE_OK_FOR_BASE_P): Delete.
15498         (rs6000_legitimize_reload_address): Use INT_REG_OK_FOR_BASE_P.
15499
15500         * config/picochip/picochip.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
15501         * config/picochip/picochip-protos.h (picochip_legitimate_address_p):
15502         Delete.
15503         * config/picochip/picochip.c (picochip_legitimate_address_p): Make
15504         static, adjust types.
15505         (TARGET_LEGITIMATE_ADDRESS_P): New.
15506
15507         * config/score/score.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
15508         * config/score/score.c (score_address_p): Rename to...
15509         (score_legitimate_address_p): ... this.
15510         (TARGET_LEGITIMATE_ADDRESS_P): New.
15511         * config/score/score3.c (score3_address_p): Rename to...
15512         (score3_legitimate_address_p): ... this.
15513         * config/score/score7.c (score7_address_p): Rename to...
15514         (score7_legitimate_address_p): ... this.
15515
15516         * config/arm/arm.h (ARM_GO_IF_LEGITIMATE_ADDRESS,
15517         THUMB2_GO_IF_LEGITIMATE_ADDRESS, THUMB1_GO_IF_LEGITIMATE_ADDRESS,
15518         GO_IF_LEGITIMATE_ADDRESS): Delete.
15519         * config/arm/arm-protos.h (thumb1_legitimate_address_p,
15520         thumb2_legitimate_address_p): Delete.
15521         (arm_legitimate_address_p): Rename to...
15522         (arm_legitimate_address_outer_p): ... this.
15523         * config/arm/constraints.md ("Uq"): Adjust call.
15524         * config/arm/predicates.md (arm_extendqisi_mem_op): Likewise.
15525         * config/arm/arm.c (arm_legitimate_address_p): New, rename old one
15526         to...
15527         (arm_legitimate_address_outer_p): ... this.
15528         (thumb1_legitimate_address_p, thumb2_legitimate_address_p): Make
15529         static.
15530         (TARGET_LEGITIMATE_ADDRESS_P): New.
15531
15532         * config/mips/mips.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
15533         * config/mips/mips-protos.h (mips_legitimate_address_p): Remove.
15534         * config/mips/mips.c (mips_legitimate_address_p): ... Make static.
15535         (TARGET_LEGITIMATE_ADDRESS_P): New.
15536
15537         * config/vax/vax.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
15538         * config/vax/vax-protos.h (legitimate_address_p): Remove.
15539         * config/vax/vax.c (legitimate_address_p): Rename to...
15540         (vax_legitimate_address_p): ... this, make static.
15541         (TARGET_LEGITIMATE_ADDRESS_P): New.
15542
15543         * config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
15544         * config/h8300/h8300-protos.h (h8300_legitimate_address_p): Remove.
15545         * config/h8300/h8300.c (h8300_legitimate_address_p): ... Make static.
15546         (TARGET_LEGITIMATE_ADDRESS_P): New.
15547
15548         * config/mmix/mmix.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
15549         * config/mmix/mmix-protos.h (mmix_legitimize_address): Remove.
15550         * config/mmix/mmix.c (mmix_legitimate_address): Rename to...
15551         (mmix_legitimate_address_p): ... this, make static.
15552         (TARGET_LEGITIMATE_ADDRESS_P): New.
15553
15554         * config/bfin/bfin.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
15555         * config/bfin/bfin-protos.h (bfin_legitimate_address_p): Remove.
15556         * config/bfin/bfin.c (bfin_legitimate_address_p): ... Make static.
15557         (TARGET_LEGITIMATE_ADDRESS_P): New.
15558
15559 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
15560
15561         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Remove handling
15562         of MODE_COMPLEX_INT.
15563
15564 2009-05-14  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
15565
15566         * config/alpha/alpha.c (alpha_initialize_trampoline): Change 0 to
15567         LCT_NORMAL in function call.
15568         * mips-tdump.c (print_file_desc): Add cast to enum type.
15569         * mips-tfile.c (add_ext_symbol): Add casts to enum types.
15570         (mark_stabs): Add casts to enum types.
15571         (parse_stabs_common): Add casts to enum types.
15572
15573 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
15574
15575         * config/mips/mips.c (mips_print_operand) <REG, MEM, default>:
15576         Check for invalid values of LETTER.
15577
15578 2009-05-13  Taras Glek  <tglek@mozilla.com>
15579
15580         * attribs.c (register_attribute): moved out attribute registration
15581         into register_attribute.
15582         * doc/plugins.texi: Documented register_attribute and
15583         PLUGIN_ATTRIBUTES.
15584         * gcc-plugin.h: Added forward decl for register_attribute.
15585         * gcc-plugin.h (plugins_event): Added PLUGIN_ATTRIBUTES.
15586         * plugin.c (register_callback, invoke_plugin_callbacks): Added
15587         PLUGIN_ATTRIBUTES boilerplate.
15588
15589 2009-05-14  Dave Korn  <dave.korn.cygwin@gmail.com>
15590
15591         * config/i386/msformat-c.c (ms_printf_length_specs):  Use enumeration
15592         values even in sentinel and empty entries.
15593         (ms_printf_flag_specs):  Likewise.
15594         (ms_scanf_flag_specs):  Likewise.
15595         (ms_strftime_flag_specs):  Likewise.
15596         (ms_print_char_table):  Likewise.
15597         (ms_scan_char_table):  Likewise.
15598         (ms_time_char_table):  Likewise.
15599
15600 2009-05-13  Doug Kwan  <dougkwan@google.com>
15601
15602         * tree-ssa-sccvn.c (compare_ops): Stabilize qsort.
15603
15604 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
15605
15606         * config/mips/mips.md (store): Add attributes for QI and HI.
15607         Update comment.
15608         (truncdisi2, truncdihi2, truncdiqi2): Merge these into ...
15609         (truncdi<mode>2): ... this new pattern.
15610
15611 2009-05-13  Brad Hards  <bradh@kde.org>
15612
15613         * Makefile.in (TEXI_GCCINT_FILES): Add plugins.texi.
15614
15615 2009-05-14  Jakub Jelinek  <jakub@redhat.com>
15616             Ben Elliston <bje@au.ibm.com>
15617
15618         PR middle-end/40035
15619         * dse.c (check_mem_read_rtx): Guard against width == -1.
15620
15621 2009-05-13  Michael Matz  <matz@suse.de>
15622
15623         PR middle-end/39976
15624         * tree-outof-ssa.c (maybe_renumber_stmts_bb): New function.
15625         (trivially_conflicts_p): New function.
15626         (insert_backedge_copies): Use it.
15627
15628 2009-05-13  Janis Johnson  <janis187@us.ibm.com>
15629
15630         * c-pragma.c (enum pragma_switch_t): Prefix constants with PRAGMA_.
15631         (handle_stdc_pragma): Use new enum constant names.
15632         (handle_pragma_float_const_decimal64): Ditto.
15633
15634 2009-05-13  Ian Lance Taylor  <iant@google.com>
15635
15636         * Makefile.in (build/gencheck.o): Depend upon all-tree.def, not
15637         tree.def.
15638
15639 2009-05-13  Nathan Sidwell  <nathan@codesourcery.com>
15640
15641         * config/m68k/t-uclinux (M68K_MLIB_CPU): Check for FL_UCLINUX.
15642         * config/m68k/m68k-devices.def: Add FL_UCLINUX to 68020 and 54455
15643         multilibs.
15644         * config/m68k/m68k.h (FL_UCLINUX): Define.
15645
15646 2009-05-13  Jan Hubicka  <jh@suse.cz>
15647
15648         * options.c (gfc_post_options): -fwhole-program imply -fwhole-file.
15649
15650 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
15651
15652         * config/sh/sh.h (OVERRIDE_OPTIONS): Clear flag_schedule_insns
15653         unless -fschedule-insns is specified.
15654
15655 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
15656
15657         PR target/39561
15658         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Don't set
15659         TARGET_EXPAND_CBRANCHDI4.
15660         * config/sh/sh.md (cbranchdi4): Don't check TARGET_EXPAND_CBRANCHDI4.
15661         * config/sh/sh.opt (mexpand-cbranchdi): Remove.
15662         (cmpeqdi): Fix comment.
15663
15664 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
15665
15666         * config/sh/sh-protos.h (sh_legitimate_index_p): Declare.
15667         (sh_legitimate_address_p): Likewise.
15668         * config/sh/sh.c (sh_legitimate_index_p): New.
15669         (sh_legitimate_address_p): Likewise.
15670         * config/sh/sh.h (REG_OK_FOR_BASE_P): Add STRICT parameter.
15671         (REG_OK_FOR_INDEX_P, SUBREG_OK_FOR_INDEX_P): Likewise.
15672         (MODE_DISP_OK_4, MODE_DISP_OK_8): Remove.
15673         (MAYBE_BASE_REGISTER_RTX_P): New macro.
15674         (MAYBE_INDEX_REGISTER_RTX_P): Likewise.
15675         (BASE_REGISTER_RTX_P): Use MAYBE_BASE_REGISTER_RTX_P.
15676         (INDEX_REGISTER_RTX_P): Use MAYBE_INDEX_REGISTER_RTX_P.
15677         (GO_IF_LEGITIMATE_INDEX): Use sh_legitimate_index_p.
15678         (GO_IF_LEGITIMATE_ADDRESS): Use sh_legitimate_address_p.
15679
15680 2009-05-12  Jan Hubicka  <jh@suse.cz>
15681
15682         * tree-inline.c (estimate_operator_cost): Add operands;
15683         when division happens by constant, it is cheap.
15684         (estimate_num_insns): Loads and stores are not having cost of 0;
15685         EH magic stuff is cheap; when computing runtime cost of switch,
15686         use log2 base of amount of its cases; builtin_expect has cost of 0;
15687         compute cost for moving return value of call.
15688         (init_inline_once): Initialize time_based flags.
15689         * tree-inline.h (eni_weights_d): Add time_based flag.
15690
15691 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
15692
15693         * df-core.c: Update head documentation.
15694
15695 2009-05-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
15696
15697         PR bootstrap/40118
15698         * rs6000.c (rs6000_generate_compare): Use op1b instead of
15699         shadowing exisiting variable op1.
15700
15701 2009-05-12  Uros Bizjak  <ubizjak@gmail.com>
15702
15703         PR target/37179
15704         * config/i386/driver-i386.c (processor_signatures): New enum.
15705         (SIG_GEODE): Move from vendor_signatures to processor_signatures.
15706         (host_detect_local_cpu): For SIG_AMD vendor, check for SIG_GEODE
15707         processor signature to detect geode processor.
15708
15709 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
15710
15711         Revert:
15712
15713         2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
15714
15715         * optabs.c (prepare_cmp_insn): Temporarily disable test that
15716         causes spurious differences between trunk and cond-optab branch.
15717
15718 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
15719
15720         * dojump.c (compare_from_rtx): Delete.
15721         * expmed.c (emit_store_flag): Only try cstore_optab.  Canonicalize
15722         any MODE_CC mode to the cstorecc4 pattern.  Use prepare_operand, fail
15723         if the comparison does not satisfy the predicate; test predicates for
15724         operands 2 and 3 of a cstore pattern.  Don't try cstore optab
15725         further if one existing pattern fails.
15726         * expr.h (compare_from_rtx): Delete.
15727         (prepare_operand): Declare it.
15728         * optabs.c: Change "lib call" to "libcall" throughout.
15729         (bcc_gen_fctn, setcc_gen_code, trap_rtx,
15730         HAVE_conditional_trap, emit_cmp_insn): Delete.
15731         (can_compare_p): Delete cmp_optab case.
15732         (prepare_float_lib_cmp): Return an rtx and a machine mode.
15733         Accept other parameters by value.
15734         (prepare_operand): Make non-static.
15735         (prepare_cmp_insn): Return an rtx and a machine mode.  Accept
15736         other parameters by value.  Try to widen operands here based on
15737         an optab_methods argument and looking at cbranch_optab.
15738         (emit_cmp_and_jump_insn_1): Accept test and mode, remove widening
15739         loop.  Use cbranch_optab directly.
15740         (emit_cmp_and_jump_insns): Fix comment.  Adjust call to
15741         prepare_cmp_insn and emit_cmp_and_jump_insn_1, remove obsolete
15742         assertion.
15743         (emit_conditional_move, emit_conditional_add): Inline what's needed
15744         of compare_from_rtx, using new prepare_cmp_insn for the rest.
15745         (init_optabs): Init cmp_optab with UNKNOWN, cbranch_optab
15746         with COMPARE.  Move cmov_optab and cstore_optab above
15747         with cbranch_optab, move cmp_optab down with ucmp_optab,
15748         remove tst_otpab.  Do not initialize trap_rtx.
15749         (gen_cond_trap): Do it here.  Use ctrap_optab.  Test predicate
15750         for trap code.  Do not check HAVE_conditional_trap.  Use
15751         prepare_cmp_insn.  Accept no predicate for operand 3.
15752         * optabs.h (OTI_cmp): Mark as used only for libcalls.
15753         (OTI_ctrap, ctrap_optab): New.
15754         (tst_optab): Delete.
15755         (bcc_gen_fctn, setcc_gen_code, emit_cmp_insn): Delete.
15756         * ifcvt.c (find_if_header): Replace HAVE_conditional_trap
15757         with lookup of ctrap_optab.
15758         * genopinit.c (cmp_optab, tst_optab, bcc_gen_fctn, setcc_gen_code):
15759         Delete.
15760         (ctrap_optab): New.
15761
15762         * combine.c (combine_simplify_rtx, simplify_set): Do not
15763         special case comparing against zero for cc0 machines.
15764         * simplify-rtx.c (simplify_binary_operation_1): Never remove
15765         COMPARE on cc0 machines.
15766         (simplify_relational_operation): Return a new expression when
15767         a COMPARE could be removed.
15768         * final.c (final_scan_insn): Compare cc_status values
15769         against LHS of a (compare FOO (const_int 0)) cc0 source.
15770         Also check if cc_status.value is the full compare.
15771
15772         * doc/md.texi (bCC, sCC, tstMM, cmpMM): Delete.
15773         (cstoreMM4): Document.
15774         (conditional_trap): Document ctrapMM4 instead.
15775         (sync_compare_and_swapMM): Refer to cbranchcc4.
15776         (Dependent Patterns): Eliminate obsolete information referring to
15777         the old jump optimization phase.
15778         (Canonicalization): Include cbranchcc4 case, omit canonicalization
15779         of compares with 0 on cc0 machines.
15780         (Jump Patterns): Refer to MODE_CC jump patterns preferably,
15781         avoiding references to cc0.  Remove text about storing operands
15782         in cmpMM.
15783         * doc/tm.texi (Condition Codes): Include blurb on different
15784         condition code representations, separate into subsections for
15785         CC0, MODE_CC and conditional execution.
15786
15787         * config/alpha/alpha-protos.h (alpha_emit_conditional_branch,
15788         alpha_emit_setcc): Accept operands and a machine mode.
15789         * config/alpha/alpha.c (alpha_emit_conditional_branch):
15790         Get code/op0/op1 from operands, use machine mode argument
15791         instead of alpha_compare.fp_p.  Emit the branch here.
15792         (alpha_emit_setcc): Likewise, and return boolean.
15793         (alpha_emit_conditional_move): Likewise.  Assert that
15794         cmp_op_mode == cmp_mode, and simplify accordingly.
15795         * config/alpha/alpha.h (struct alpha_compare, alpha_compare): Delete.
15796         * config/alpha/alpha.md (cmpdf, cmptf, cmpdi, bCC, sCC): Delete.
15797         (cbranchdf4, cbranchtf4, cbranchdi4, cstoredf4, cstoretf4,cstoredi4):
15798         Delete.
15799         (stack probe test): Use cbranchdi4.
15800         * config/alpha/predicates.md (alpha_cbranch_operator): New.
15801
15802         * config/arc/arc.c (gen_compare_reg): Do not emit cmp.
15803         * config/arc/arc.h (movsicc, movsfcc): Use it.
15804         (movdicc, *movdicc_insn, movdfcc, *movdfcc_insn): Remove.
15805         (cbranchsi4, cstoresi4): New.
15806         (cmpsi, bCC and sCC expanders): Remove.
15807
15808         * config/arm/arm.c (arm_compare_op0, arm_compare_op1): Delete.
15809         * config/arm/arm.h (arm_compare_op0, arm_compare_op1): Delete.
15810         * config/arm/predicates.md (arm_comparison_operator): Only include
15811         floating-point operators if there is a hardware floating-point unit.
15812         * config/arm/arm.md (cbranchsi4, cstoresi4): Enable for TARGET_32BIT,
15813         deferring to cbranch_cc and cstore_cc respectively.
15814         (cbranchsf4, cbranchdf4, cbranchdi4, cstoresf4, cstoredf4, cstoredi4,
15815         cbranch_cc, cstore_cc): New.
15816         (movsicc, movsfcc, movdfcc): Do not use arm_compare_op0 and
15817         arm_compare_op1.
15818         (bCC, sCC, cmpsi, cmpsf, cmpdf, cmpdi): Delete.
15819
15820         * config/avr/avr-protos.h (out_tstsi, out_tsthi): Adjust prototype.
15821         * config/avr/avr.c (out_tstsi, out_tsthi): Get the tested operand
15822         as an argument.
15823         (adjust_insn_length): Adjust calls.
15824         (avr_reorg): Handle (compare (foo) (const_int 0)).
15825         * config/avr/avr.md (tstqi, tsthi, tstsi): Remove.
15826         (*negated_tstqi, *negated_tsthi, *negated_tstsi): Unmacroize.
15827         (*reversed_tsthi, *reversed_tstsi): Add a scratch for simplicity.
15828         (cmpqi, cmphi, cmpsi): Prepend asterisk, fuse tst[qhs]i here.
15829         (bCC): Remove.
15830         (cbranchqi4, cbranchhi4, cbranchsi4): New.
15831         (tst -> sbrc/sbrs peephole2, cpse peephole): Wrap RHS with COMPARE.
15832
15833         * config/bfin/bfin.md (cmpbi, cmpsi, bCC, sCC): Delete.
15834         (cbranchsi4, cstorebi4, cstoresi4): New.
15835         (movbisi): This insn is duplicate, split it to zero_extend.
15836         * config/bfin/bfin.c (bfin_compare_op0, bfin_compare_op1): Delete
15837         (bfin_gen_compare): Do not use them.  Emit VOIDmode SET, not BImode.
15838         (bfin_optimize_loop): Use cbranch expander.
15839         * config/bfin/bfin.h (bfin_compare_op0, bfin_compare_op1): Delete.
15840         * config/bfin/predicates.md (bfin_cbranch_operator): Rename to...
15841         (bfin_bimode_comparison_operator): ... this.
15842         (bfin_direct_comparison_operator): New.
15843
15844         * config/cris/cris.c (cris_normal_notice_update_cc): Look
15845         inside (compare FOO (const_int 0)).
15846         (cris_rtx_costs): Handle ZERO_EXTRACT.
15847         * config/cris/cris.md (tstdi, tst<mode>, cmpdi): Delete.
15848         (*tstdi_non_v32): Fold in *cmpdi_non_v32.
15849         (*tstdi_v32): Delete.
15850         (*cmpdi_non_v32): Add M alternative for operand 1.
15851         (cmpsi, cmp<mode>): Make private.
15852         (*tstsi, *tst<mode>_cmp, *tst<mode>_non_cmp, *btst): Wrap LHS
15853         with COMPARE.
15854         (cbranch<mode>4, cbranchdi4, cstore<mode>4): New.
15855
15856         * config/crx/crx.md (cstore<mode>4, cbranchcc4): New.
15857         (cmp<mode>, bCOND_internal, b<code>, s<code>): Delete.
15858         (cbranch<mode>4, sCOND_internal): Use ordered_comparison_operator.
15859         (cc_reg_operand): New.
15860         (any_cond): Delete.
15861         * config/crx/crx.c (crx_compare_op0, crx_compare_op1,
15862         crx_expand_compare, crx_expand_branch, crx_expand_scond): Delete.
15863         * config/crx/crx.h (crx_compare_op0, crx_compare_op1): Delete.
15864         * config/crx/crx-protos.h (crx_expand_compare, crx_expand_branch,
15865         crx_expand_scond): Delete.
15866
15867         * config/fr30/fr30.md (cmp<mode>, bCC): Delete.
15868         (cbranchsi4): New.
15869         * config/fr30/fr30.c (fr30_compare_op0, fr30_compare_op1): Delete
15870         * config/fr30/fr30.h (fr30_compare_op0, fr30_compare_op1): Delete.
15871
15872         * config/frv/frv.md (cbranchsi4, cbranchsf4, cbranchdf4,
15873         cstoresi4, cstoresf4, cstoredf4): New.
15874         (cmpdi, cmpsi, cmpsf, cmpdf, bCC, sCC): Remove.
15875         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
15876         Receive the entire operands array.
15877         * config/frv/frv.h (frv_compare_op0, frv_compare_op1): Delete.
15878         * config/frv/frv.c (frv_compare_op0, frv_compare_op1): Delete.
15879         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
15880         Get test/op0/op1 from the operands array.
15881         (frv_emit_cond_move): Get test/op0/op1 from the test_rtx.
15882
15883         * config/h8300/h8300-protos.h (h8300_expand_branch): Accept operands.
15884         (h8300_expand_store): New.
15885         * config/h8300/h8300.c (h8300_rtx_costs): Handle (compare FOO
15886         (const_int 0)).
15887         (h8300_expand_branch): Emit compare here.  Adjust for new arguments.
15888         (h8300_expand_store): New.
15889         * config/h8300/h8300.md (btst combine patterns): Wrap with COMPARE
15890         or do not try to produce (set (cc0) REG).
15891         (peepholes): Wrap arguments with COMPARE.  Add a peephole to
15892         change a compare into a move to a scratch register.  Disable some
15893         peepholes when comparing with zero.
15894         (tstsi, tsthi, tstsi, cmpqi): Make private.
15895         (cmphi): Delete.
15896         (bCC, sCC): Delete.
15897         (cbranchqi4, cbranchhi4, cbranchsi4, cstoreqi4, cstorehi4,
15898         cstoresi4): New.
15899
15900         * config/i386/i386.c (ix86_expand_int_movcc, ix86_expand_int_addcc,
15901         ix86_expand_fp_movcc): Set ix86_compare_op0 and ix86_compare_op1.
15902         (ix86_emit_i387_log1p): Use gen_cbranchxf4.
15903         (ix86_emit_i387_log1p): Use cbranchxf2.
15904         (ix86_expand_setcc): Return void.
15905         * config/i386/i386-protos.h (ix86_expand_setcc): Return void.
15906         * config/i386/i386.md (cmpti, cmpdi, cmpsi, cmphi, cmpqi, cmpxf,
15907         cmp<MODEF>, cmpcc): Remove.
15908         (cbranchti4, cbranchdi4, cbranchsi4, cbranchhi4, cbranchqi4,
15909         cbranchxf4, cbranch<MODEF>4, cbranchcc4, cstoredi4, cstoresi4,
15910         cstorehi4, cstoreqi4, cstorexf4, cstore<MODEF>4, cstorecc): New.
15911         (sCC and bCC expanders): Remove.
15912         (stack_protect_test): Use cbranchcc4.
15913
15914         * config/ia64/ia64-protos.h (ia64_compare_op0, ia64_compare_op1):
15915         Delete.
15916         (ia64_expand_compare): Accept three rtx by reference and return void.
15917         * config/ia64/ia64.c (ia64_compare_op0, ia64_compare_op1): Delete.
15918         (ia64_expand_compare): Replace op0/op1 with *op0/*op1.  Get code
15919         from *expr.  Update *expr with the BImode comparison to do.
15920         * config/ia64/ia64.md (cmpbi, cmpsi, cmpdi, cmpsf, cmpdf, cmpxf,
15921         cmptf, bCC, sCC, conditional_trap): Delete.
15922         (cbranchbi4, cbranchsi4, cbranchdi4, cbranchsf4, cbranchdf4,
15923         cbranchxf4, cbranchtf4, cstorebi4, cstoresi4, cstoredi4, cstoresf4,
15924         cstoredf4, cstorexf4, cstoretf4, ctrapbi4, ctrapsi4, ctrapdi4,
15925         ctrapsf4, ctrapdf4, ctrapxf4, ctraptf4): New.
15926         * config/ia64/predicates.md (ia64_cbranch_operator): New.
15927
15928         * config/iq2000/iq2000-protos.h (gen_conditional_branch): Change
15929         type of last argument.
15930         * config/iq2000/iq2000.c (branch_cmp, branch_type): Remove.
15931         (gen_conditional_branch): Get code/cmp0/cmp1 from operands,
15932         use machine mode argument instead of branch_type.  Remove dead
15933         code for floating-point comparisons.
15934         * config/iq2000/iq2000.h (branch_cmp, branch_type): Remove.
15935         * config/iq2000/iq2000.md (cmpsi, cmpdi, cmpsf, cmpdf, tstsi, bCC):
15936         Remove.
15937         (cbranchsi4, cstoresi4): New.
15938         * config/iq2000/predicates.md (reg_or_const_operand): New.
15939
15940         * config/m32c/m32c.md (cbranch splitter): Use match_op_dup.
15941         * config/m32c/m32c.md (any_cond, gl_cond): Delete.
15942         (b<code>_op): Rewrite to...
15943         (bcc_op): ... this, using match_operator.
15944         (s<code>_op): Rewrite to...
15945         (scc_op): ... this, using match_operator.
15946         (s<code>_24_op): Rewrite to...
15947         (scc_op_24): ... this, using match_operator.
15948         (s<code>_<mode>): Rewrite to...
15949         (cstore<mode>4): ... this, using match_operator.
15950         (s<code>_<mode>_24): Rewrite to...
15951         (cstore<mode>4_24): ... this, using match_operator.
15952         * config/m32c/m32c-protos.h (m32c_cmp_flg_0, m32c_pend_compare,
15953         m32c_unpend_compare, m32c_expand_scc): Delete.
15954         * config/m32c/m32c.c (compare_op0, compare_op1, m32c_cmp_flg_0,
15955         m32c_pend_compare, m32c_unpend_compare, m32c_expand_scc): Delete.
15956         (m32c_expand_movcc): Change NE to EQ if necessary.
15957         (m32c_init_libfuncs): Modify cstore optab instead of setcc_gen_code.
15958
15959         * config/m32r/m32r-protos.h (gen_cond_store): New.
15960         * config/m32r/m32r.c (m32r_compare_op0, m32r_compare_op1): Delete.
15961         (gen_cond_store): New, from sCC patterns.
15962         (m32r_expand_block_move): Use cbranchsi4.
15963         * config/m32r/m32r.h (m32r_compare_op0, m32r_compare_op1): Delete.
15964         * config/m32r/m32r.md (cmpsi, bCC, sCC): Delete.
15965         (cbranchsi4, cstoresi4): New.
15966
15967         * config/m68hc11/m68hc11.c (m68hc11_compare_op0, m68hc11_compare_op1):
15968         Delete.
15969         (m68hc11_rtx_costs_1, m68hc11_rtx_costs): Handle ZERO_EXTRACT.
15970         (m68hc11_notice_update_cc): Look into a compare with 0.
15971         * config/m68hc11/m68hc11.h (m68hc11_compare_op0, m68hc11_compare_op1):
15972         Delete.
15973         * config/m68hc11/m68hc11.md (tstsi, tsthi, tstqi, cmpsi,
15974         cmphi, cmpqi, bCC): Delete.
15975         (cbranchsi4, cbranchhi4, cbranchqi4): New.
15976         (tstqi_1, tstqi_z_used, tstqi_1, bitcmpqi, bitcmpqi_z_used,
15977         bitcmpqi_12, bitcmphi, various splits and peephole2s): Wrap cc0<-reg
15978         sets with COMPARE.
15979
15980         * config/m68k/predicates.md (m68k_cstore_comparison_operator,
15981         const0_operand, const1_operand, m68k_subword_comparison_operand): New.
15982         * config/m68k/constraints.md (H): New.
15983         * config/m68k/m68k.md (tstdi): Remove define_expand, use name for
15984         the define_insn below.
15985         (tstsi, tsthi, tst<FP:mode>, cmphi, cmpqi, cmp<FP:mode>): Delete.
15986         (*tstsi_internal_68020_cf, *tstsi_internal, *tsthi_internal,
15987         *tstqi_internal, tst<mode>_6881, tst<mode>_cf, many unnamed
15988         patterns): Wrap RHS with COMPARE.
15989         (tst<FP>_68881, tst<FP>_cf): Use const0_operand.
15990         (*cmpdi_internal): Name this pattern.
15991         (cmpdi): Change to define_insn.
15992         (cbranchdi4, cstoredi4, cbranchsi4, cstoresi4, cbranchhi4, cstorehi4,
15993         cbranchqi4, cstoreqi4, cbranch<FP:mode>4, cstore<FP:mode>4): New.
15994         (scc0_di, scc0_di_5200, scc_di): Use the ordered_comparison_operator
15995         predicate.
15996         (seq, sne, sgt, sgtu, slt, sltu, sge, sgeu, sle, sleu, sordered,
15997         sunordered, suneq, sunge, sungt, sunle, sunlt, sltgt): Delete
15998         (conditional_trap): Change to...
15999         (ctrapdi4, ctrapsi4, ctraphi4, ctrapqi4): ... these.
16000         (*conditional_trap): Use the ordered_comparison_operator and
16001         const1_operand predicates.
16002         * config/m68k/m68k.c (m68k_last_compare_had_fp_operands): Delete.
16003         (m68k_expand_prologue): Use ctrapsi4 instead of cmpsi+conditional_trap.
16004         (m68k_rtx_costs): Look for ZERO_EXTRACT in a COMPARE.
16005         * config/m68k/m68k.h (m68k_last_compare_had_fp_operands): Delete.
16006
16007         * config/mcore/mcore-protos.h (arch_compare_op0, arch_compare_op1,
16008         mcore_modify_comparison, mcore_gen_compare_reg): Remove.
16009         (mcore_gen_compare): New.
16010         * config/mcore/mcore.c (arch_compare_op0, arch_compare_op1): Delete.
16011         (mcore_modify_comparison, mcore_gen_compare_reg): Fold into...
16012         (mcore_gen_compare): ... this.
16013         * config/mcore/mcore.md (cmpsi, bCC, sCC): Remove.
16014         (cbranchsi4, cstoresi4): New, using mcore_gen_compare.
16015         (stack probe pattern): Use cbranchsi4.
16016
16017         * config/mips/predicates.md (mips_cstore_operator): New.
16018         * config/mips/mips-ps-3d.md (movv2sfcc): Do not use cmp_operands.
16019         * config/mips/mips.md (any_cond): Delete.
16020         (conditional_trap): Rename to ctrap<GPR:mode>4.  Adjust predicates,
16021         always succeed.
16022         (fixuns_truncdfsi2, fixuns_truncdfdi2, fixuns_truncsfsi2,
16023         fixuns_truncsfdi2): Use cbranch patterns.
16024         (cmp<GPR:mode>, cmp<SCALARF:mode>): Delete.
16025         (b<code>): Change to cbranch<GPR:mode>4 and cbranch<SCALARF:mode>4.
16026         Adjust call to mips_expand_conditional_branch.
16027         (seq, sne, slt<u>, sle<u>, sgt<u>, sge<u>): Change to
16028         cstore<GPR:mode>4.
16029         * config/mips/mips-protos.h (mips_expand_conditional_branch,
16030         mips_expand_scc, mips_expand_conditional_trap): Adjust prototypes.
16031         * config/mips/mips.c (cmp_operands): Delete.
16032         (mips_emit_compare): Get comparison operands from *op0/*op1.
16033         (mips_expand_scc): Get code/op0/op1/target from operands.  Assert
16034         that it succeeds.  Use op0/op1 instead of cmp_operands.
16035         (mips_expand_conditional_branch, mips_expand_conditional_move,
16036         mips_expand_conditional_trap): Likewise.
16037         (mips_block_move_loop): Use cbranch patterns.
16038         * config/mips/mips.h (cmp_operands): Delete.
16039
16040         * config/mmix/mmix.c (mmix_valid_comparison): Delete.
16041         (mmix_gen_compare_reg): Just return a register in the right CC mode.
16042         * config/mmix/mmix.h (mmix_compare_op0, mmix_compare_op1): New.
16043         * config/mmix/mmix.md (cmpdi, cmpdf): Remove.
16044         (*cmpcc_folded): Rename to...
16045         (*cmpdi_folded): this.
16046         (*cmpcc): Rename to...
16047         (*cmps): ... this.
16048         (movdfcc, movdicc): Adjust for new semantics of mmix_gen_compare_reg.
16049         (bCC): Remove.
16050         (cbranchdi4): New.
16051         (cbranchdf4): New.  Handle invalid comparisons here.
16052         * config/mmix/predicates.md (float_comparison_operator): New.
16053
16054         * config/mn10300/mn10300.c (mn10300_rtx_costs): Consider 0 and
16055         zero_extract to be cheap in (compare (zero_extract) (const_int 0).
16056         * config/mn10300/mn10300.md (tst): Delete.
16057         (*tst_extqisi_am33, *tst_extqisi, *tst_exthisi_am33, *tst_exthisi):
16058         Name these patterns and wrap RHS in a compare.
16059         (*cmpsi): Make this pattern private.  Include tst.
16060         (*cmpsf): Make this pattern private.
16061         (and and zero_extract cc0 set): Wrap RHS in a COMPARE.
16062         (compare with zero peepholes): Likewise.
16063         (bCC): Remove.
16064         (cbranchsi4, cbranchsf4): New.
16065         (casesi): Use cbranchsi4.
16066
16067         * config/pa/pa.c (hppa_compare_op0, hppa_compare_op1,
16068         hppa_branch_type): Delete.
16069         (return_addr_rtx): Use cbranchsi4.
16070         (emit_bcond_fp): Accept all operands.  Replace CODE with NE.
16071         Emit CCFPmode comparison here.
16072         (gen_cmp_fp): Delete, now part of emit_bcond_fp.
16073         * config/pa/pa.h (enum cmp_type, hppa_compare_op0, hppa_compare_op1,
16074         hppa_branch_type): Delete.
16075         * config/pa/pa.md (cmpdi, cmpsi, cmpsf, cmpdf, sCC, bCC): Delete.
16076         (movsicc, movdicc): Remove references to hppa_compare_op0,
16077         hppa_compare_op1 and compare_from_rtx.
16078         (cbranchdi4, cbranchsi4, cbranchsf4, cbranchdf4, cstoresi4): New.
16079         (casesi): Use cbranchsi4.
16080
16081         * config/pdp11/pdp11-protos.h (output_jump): Change prototype.
16082         * config/pdp11/pdp11.c (output_jump): Embed opcodes here.
16083         * config/pdp11/pdp11.md (register_or_const0_operand): New.
16084         (cmpdf, cmphi, cmpqi): Make private.  Add tst alternatives.
16085         (cmpsi, tstsi, tstdf, tsthi, tstqi): Delete.
16086         (bCC): Delete.
16087         (cbranchdf4, cbranchhi4, cbranchqi4): New.
16088         (*branch, *branch_inverted): New.
16089
16090         * config/picochip/picochip.md (cbranchhi4): Use
16091         ordered_comparison_operator.
16092         (cmphi, bCC): Remove.
16093
16094         * config/rs6000/predicates.md (rs6000_cbranch_operator): New.
16095         (trap_comparison_operator): Delete.
16096         * config/rs6000/rs6000-protos.h (rs6000_emit_sCOND,
16097         rs6000_emit_cbranch): Accept mode and operands.
16098         * config/rs6000/rs6000.c (rs6000_compare_op0, rs6000_compare_op1,
16099         rs6000_compare_fp_p): Delete.
16100         (rs6000_generate_compare): Accept mode and comparison.  Extract code
16101         and op0/op1 from there.  Replace references to rs6000_compare_op0
16102         and rs6000_compare_op1.
16103         (rs6000_emit_sCOND): Adjust call to rs6000_generate_compare and
16104         extract result from passed operands.
16105         (rs6000_emit_cbranch): Adjust call to rs6000_generate_compare and
16106         extract loc from passed operands.
16107         (rs6000_emit_cmove): Likewise.
16108         * config/rs6000/rs6000.h (rs6000_compare_op0, rs6000_compare_op1,
16109         rs6000_compare_fp_p): Delete.
16110         * config/rs6000/rs6000.md (cmp<GPR>, cmp<FP>, bCC, sCC): Delete.
16111         (cbranch<GPR>4, cbranch<FP>4): New.
16112         (cstore<mode>4): New.  Consolidate here all choices about when to use
16113         portable or specialized sCC sequences.
16114         (stack_protect_test): Use cbranchsi4.
16115         (conditional_trap): Replace with ctrap<GPR>4.
16116         (conditional trap insn): Replace trap_comparison_operator with
16117         ordered_comparison_operator.
16118
16119         * config/s390/s390.c (s390_compare_op0, s390_compare_op1): Delete.
16120         (s390_emit_prologue): Use ctrap.
16121         * config/s390/s390.h (s390_compare_op0, s390_compare_op1): Delete.
16122         * config/s390/predicates.md (s390_eqne_operator, s390_scond_operator):
16123         New predicates replacing...
16124         * config/s390/s390.md (COMPARE, SCOND): ... these iterators.
16125         (cmp<GPR>, cmp<FP>, cmpcc): Delete.
16126         (trunc patterns): Use emit_cmp_and_jump_insns instead of cmp/branch.
16127         (add<mode>cc): Do not use s390_compare_op0/op1.
16128         (s<code>): Change to...
16129         (cstore<mode>4): ... this. Do not use s390_compare_op0/op1.
16130         (seq): Change to...
16131         (cstorecc4): ... this.  Handle EQ or NE equally.
16132         (*sne): Un-privatize for use in cstorecc4.
16133         (b<code>): Change to...
16134         (cbranch<GPR>4, cbranch<FP>4, cbranchcc4): ... these.
16135         (conditional_trap): Replace with...
16136         (ctrap<GPR>4, ctrap<FP>4): ... these.
16137         (stack_protect): Use cbranchcc4.
16138
16139         * config/score/score-conv.h (cmp_op0, cmp_op1): Delete.
16140         * config/score/score-protos.h (score_gen_cmp): Delete.
16141         * config/score/score.c (cmp_op0, cmp_op1, score_gen_cmp): Delete.
16142         (score_block_move-loop): Use cbranchsi4.
16143         * config/score/score.md (cbranchsi4): New.
16144         (cmpsi, bCC): Delete.
16145         * config/score/score3.c (cmp_op0, cmp_op1, score3_gen_cmp): Delete.
16146         (score3_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
16147         * config/score/score7.c (cmp_op0, cmp_op1, score7_gen_cmp): Delete.
16148         (score7_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
16149         * config/score/score3.h (score3_gen_cmp): Delete.
16150         * config/score/score7.h (score7_gen_cmp): Delete.
16151
16152         * config/sh/sh-protos.h (prepare_scc_operands): Rename to...
16153         (sh_emit_scc_to_t): ... this.  Return void.
16154         (from_compare): Rename to...
16155         (sh_emit_compare_and_branch): ... this.
16156         (sh_emit_compare_and_set): New.
16157         (sh_expand_t_scc): Accept operands.
16158         * config/sh/predicates.md (sh_float_comparison_operator): New.
16159         * config/sh/sh.c (sh_compare_op0, sh_compare_op1): Delete.
16160         (prepare_scc_operands): Rename to...
16161         (sh_emit_scc_to_t): ... this.  Return void.  Get op0/op1 from
16162         arguments.
16163         (sh_emit_cheap_store_flag): New.
16164         (sh_emit_set_t_insn): New.
16165         (from_compare): Rename to...
16166         (sh_emit_compare_and_branch): ... this.  Accept mode.  Rewrite
16167         handling of TARGET_SH2E floating point to avoid recursive call.
16168         Generate branch here.
16169         (sh_emit_compare_and_set): New.
16170         (sh_expand_t_scc): Get op0/op1 from arguments.
16171         (sh_emit_cheap_store_flag): New.
16172         * config/sh/sh.md (cbranchdi4, cbranchsi4): Include -mno-cbranchdi
16173         cases.
16174         (cbranchdi4_i): Use an "I08" constraint instead of an "i" constraint.
16175         (cmpsi, cmpdi, cmpsf, cmpdf): Delete.
16176         (movsicc, movdicc): Do nothing when it recreated operands from
16177         sh_compare_*. Use sh_emit_cheap_store_flag.  Adjust call to
16178         prepare_scc_operands (now sh_emit_scc_to_t).
16179         (udivdi3): Use cstoresi4.
16180         (beq_media, bne_media, bge_media, bgtu_media, bgeu_media, beq,
16181         bne, bgt, blt, ble, bge, bgtu, bltu, bgeu, bleu, bunordered): Delete.
16182         (cbranchint4_media, cbranchfp4_media): New.
16183         (casesi): Use cbranchdi4.
16184         (seq, slt, sle, sgt, sge, sgtu, sltu, sgeu, sne, sleu, sunordered):
16185         Delete.
16186         (cstore4_media, cstoresi4, cstoredi4, cstoresf4, cstoredf4): New.
16187         (movnegt): Remove second operand.
16188         (cbranchsf4, cbranchdf4): New.
16189         (stack_protect): Use cbranchdi4/cbranchsi4.
16190
16191         * config/sparc/sparc.c (sparc_compare_op0, sparc_compare_op1): Delete.
16192         (gen_compare_reg): Accept comparison, extract part of it to...
16193         (gen_compare_reg_1): ... this.
16194         (gen_compare_operator): Delete.
16195         (gen_v9_scc): Accept separate destination, comparison code and arms.
16196         Do not use sparc_compare_op0/sparc_compare_op1.
16197         (emit_scc_insn, emit_conditional_branch_insn): New.
16198         (emit_v9_brxx): Make static.  Remove useless assertion.
16199         (sparc_emit_float_lib_cmp): Return RTL instead of calling
16200         emit_cmp_insn.
16201         (sparc_expand_compare_and_swap_12): Use gen_compare_reg_1+cbranchcc4.
16202         * config/sparc/sparc-protos.h (gen_compare_reg,
16203         sparc_emit_float_lib_cmp): Adjust prototype.
16204         (emit_scc_insn, emit_conditional_branch_insn): New.
16205         (gen_v9_scc, emit_v9_brxx_insn, gen_compare_operator): Delete.
16206         * config/sparc/sparc.h (sparc_compare_op0, sparc_compare_op1): Delete.
16207         * config/sparc/sparc.md (P, I, F, V32, V32I, V64, V64I): Move all
16208         iterators to the top.
16209         (cmpsi, cmpdi, cmpsf, cmpdf, cmptf, seqsi_special_extend,
16210         snesi_special_extend, sCC, bCC, seqdi_special_trunc,
16211         snedi_special_trunc): Delete.
16212         (seqdi_special, snedi_special): Use expansion of seqdi_special_trunc
16213         and snedi_special_trunc.
16214         (cstoresi4, cstoredi4, cstore<F:mode>4, cbranchcc4, cbranchsi4,
16215         cbranchdi4, cbranch<F:mode>4): New.
16216         (mov<I:mode>cc, mov<F:mode>cc): Handle sparc_emit_float_lib_cmp
16217         here.  Use gen_compare_reg instead of gen_compare_operator.
16218         (conditional_trap): Replace with...
16219         (ctrapsi4, ctrapdi4): ... this.
16220         (stack_protect_test): Use cbranchcc4.
16221
16222         * config/spu/spu-protos.h (spu_emit_branch_or_set): Change second
16223         argument to rtx.
16224         * config/spu/spu.c (spu_compare_op0, spu_compare_op1): Remove.
16225         (spu_emit_branch_or_set): Get code/op0/op1 from second argument.
16226         Change spu_compare_op0/op1 to op0/op1 throughout.  Get target
16227         from operands[0] or operands[3] depending on is_set.
16228         * config/spu/spu.h (spu_compare_op0, spu_compare_op1): Remove.
16229         * config/spu/spu.md (cmp<mode:VQHSI>, cmp<mode:DTI>, cmp<mode:VSF>,
16230         cmpdf, bCC), sCC: Remove.
16231         (cbranch<mode:VQHSI>4, cbranch<mode:DTI>, cbranch<mode:VSF>4,
16232         cbranchdf4, cstore<mode:VQHSI>4, cstore<mode:DTI>, cstore<mode:VSF>4,
16233         cstoredf4): New.
16234         (mov<mode>cc): Accept ordered_comparison_operator, adjust call to
16235         spu_emit_branch_or_set.
16236
16237         * config/stormy16/stormy16-protos.h (xstormy16_emit_cbranch):
16238         Add two arguments.
16239         * config/stormy16/stormy16.h (xstormy16_compare_op0,
16240         xstormy16_compare_op1): Delete.
16241         * config/stormy16/stormy16.c (xstormy16_compare_op0,
16242         xstormy16_compare_op1): Delete.
16243         (xstormy16_emit_cbranch): Get op0/op1 from the new arguments.
16244         Adjust calls.
16245         * config/stormy16/stormy16.md (cbranchsi4, cbranchhi4): New.
16246         (cmphi, cmpsi, bCC): Remove.
16247
16248         * config/v850/v850.md (tstsi, cmpsi): Fold into...
16249         (*cmpsi): ... this one.
16250         (cbranchsi4, cstoresi4): New.
16251         (bCC expanders): Delete.
16252         (sCC insns): Fold into...
16253         (*setcc): ... this one.
16254         (casesi): Do not use gen_cmpsi and gen_bgtu.
16255         (various splits): Wrap "naked" RHS of a cc0 set with COMPARE.
16256         (movsicc): Simplify.
16257         * config/v850/v850.c (v850_rtx_costs): Handle ZERO_EXTRACT in COMPARE.
16258
16259         * config/vax/vax-protos.h (cond_name): New.
16260         (vax_output_conditional_branch): Remove.
16261         * config/vax/vax.c (cond_name): New.
16262         (vax_output_conditional_branch): Remove.
16263         * config/vax/vax.h (PRINT_OPERAND): Dispatch %c to cond_name.
16264         * config/vax/vax.md (tst<VAXint>, tst<VAXfp>): Remove.
16265         (cmp<VAXint>, cmp<VAXfp>): Privatize.  Add constraints for tst.
16266         (bit<VAXint>): Wrap source with (compare).
16267         (b<code> and following unnamed pattern): Rename to *branch and
16268         *branch_reversed.  Change macroization to match_operator.
16269         (cbranch<VAXint>4, cbranch<VAXfp>4): New.
16270
16271         * config/xtensa/predicates.md (xtensa_cstoresi_operator): New.
16272         * config/xtensa/xtensa-protos.h (xtensa_expand_conditional_branch):
16273         Change last argument to machine_mode.
16274         (xtensa_expand_scc): Add machine_mode argument.
16275         * config/xtensa/xtensa.c (branch_cmp, branch_type): Remove.
16276         (gen_conditional_move, xtensa_expand_conditional_branch,
16277         xtensa_expand_scc, xtensa_expand_conditional_move): Use mode
16278         instead of branch_type, fetch cmp0/cmp1/test_code from operands[].
16279         Adjust operand numbers.
16280         * config/xtensa/xtensa.h (enum cmp_type, branch_cmp, branch_type):
16281         Delete.
16282         * config/xtensa/xtensa.md (any_cond, any_scc): Delete.
16283         (cmpsi, cmpsf, b<code>, s<code>): Delete.
16284         (cbranchsi4, cbranchsf4, cstoresi4, cstoresf4): New.
16285
16286 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
16287
16288         * optabs.c (prepare_cmp_insn): Temporarily disable test that
16289         causes spurious differences between trunk and cond-optab branch.
16290
16291 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
16292
16293         PR target/37137
16294         * doc/install.texi (STAGE1_TFLAGS, BUILD_CONFIG): Document.
16295
16296 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
16297
16298         * tree.c (iterative_hash_pointer): Delete.
16299         (iterative_hash_expr): Short-circuit handling of NULL pointer.
16300         Hash UIDs and versions of SSA names.  Don't special-case built-in
16301         function declarations.
16302
16303 2009-05-11  Ian Lance Taylor  <iant@google.com>
16304
16305         PR bootstrap/40103
16306         * graphite.c: Force -Wc++-compat to only be a warning before
16307         #including "cloog/cloog.h".
16308
16309 2009-05-11  Martin Jambor  <mjambor@suse.cz>
16310
16311         * ipa-cp.c (ipcp_cloning_candidate_p): Add missing return false.
16312
16313 2009-05-11  Jan Hubicka  <jh@suse.cz>
16314
16315         * tree-ssa-loop-ivcanon.c: Include target.h
16316         (struct loop_size): new structure.
16317         (constant_after_peeling): New predicate.
16318         (tree_estimate_loop_size): New function.
16319         (estimated_unrolled_size): Rewrite for new estimates.
16320         (try_unroll_loop_completely): Use new estimates.
16321         * Makefile.in (tree-ssa-loop-ivcanon.o): Add dependenc on target.h
16322
16323 2009-05-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16324
16325         * config/spu/spu-c.c (spu_categorize_keyword): Update for recent
16326         libcpp interface change.
16327         (spu_macro_to_expand): Likewise.
16328
16329 2009-05-11  Paolo Bonzini  <bonzini@gnu.org>
16330
16331         PR tree-optimization/40026
16332         * gimplify.c (gimplify_init_constructor): Change initial conditional
16333         to assertion.  Rewrite TREE_OPERAND (*expr_p, 1) after
16334         optimize_compound_literals_in_ctor.
16335
16336 2009-05-11  Nathan Sidwell  <nathan@codesourcery.com>
16337
16338         * config/m68k/m68k-devices.def (52274, 52277, 5301x, 5225x, 51xx):
16339         New devices.
16340         * doc/invoke.texi (M680x0 Options): Document new coldfire cpus.
16341
16342 2009-05-11  H.J. Lu  <hongjiu.lu@intel.com>
16343
16344         * tree-vect-data-refs.c (vect_analyze_group_access): Use
16345         HOST_WIDE_INT for gap.
16346
16347 2009-05-11  Ira Rosen  <irar@il.ibm.com>
16348
16349         PR tree-optimization/40074
16350         * tree-vect-data-refs.c (vect_analyze_group_access): Take gaps into
16351         account in group size and step comparison.
16352
16353 2009-05-11  Richard Guenther  <rguenther@suse.de>
16354
16355         * passes.c (init_optimization_passes): Strip now incorrect comment.
16356         (execute_function_todo): Do not set PROP_alias.
16357         * tree-pass.h (PROP_alias): Remove.
16358         * tree-ssa-structalias.c (pass_build_alias): Do not provide PROP_alias.
16359         * tree-if-conv.c (pass_if_conversion): Do not require PROP_alias.
16360         * tree-nrv.c (pass_return_slot): Likewise.
16361         * tree-object-size.c (pass_object_sizes): Likewise.
16362         * tree-ssa-dom.c (pass_dominator): Likewise.
16363         (pass_phi_only_cprop): Likewise.
16364         * tree-ssa-dse.c (pass_dse): Likewise.
16365         * tree-ssa-phiopt.c (pass_phiopt): Likewise.
16366         (pass_cselim): Likewise.
16367         * tree-ssa-pre.c (pass_pre): Likewise.
16368         (pass_fre): Likewise.
16369         * tree-ssa-reassoc.c (pass_reassoc): Likewise.
16370         * tree-ssa-sink.c (pass_sink_code): Likewise.
16371         * tree-stdarg.c (pass_stdarg): Likewise.
16372         * tree-tailcall.c (pass_tail_calls): Likewise.
16373         * tree-vrp.c (pass_vrp): Likewise.
16374
16375 2009-05-10  Ian Lance Taylor  <iant@google.com>
16376
16377         * basic-block.h (enum profile_status): Break out of struct
16378         control_flow_graph.
16379         * cgraph.h (struct inline_summary): Break out of struct
16380         cgraph_local_info.
16381         * cgraphunit.c (enum cgraph_order_sort_kind): New enum, broken out
16382         of struct cgraph_order_sort.
16383         * combine.c (enum undo_kind): New enum, broken out of struct undo.
16384         * cse.c (struct branch_path): Break out of struct
16385         cse_basic_block_data.
16386         * except.h (enum eh_region_type): Break out of struct eh_region.
16387         * gcc.c (enum add_del): Break out of struct modify_target.
16388         * genrecog.c (enum decision_type): Break out of struct decision_test.
16389         * ggc-page.c (struct ggc_pch_ondisk): Break out of struct
16390         ggc_pch_data.
16391         * matrix-reorg.c (struct free_info): Break out of struct matrix_info.
16392         * regmove.c (enum match_use): New enum, broken out of struct match.
16393         * sched-int.h (enum post_call_group): New enum, broken out of
16394         struct deps.
16395         (struct deps_reg): Break out of struct deps.
16396         * target.h (struct asm_int_op): Break out of struct gcc_target.
16397         * tree-eh.c (struct goto_queue_node): Break out of struct
16398         leh_tf_state.
16399         * tree-inline.h (enum copy_body_cge_which): Break out of
16400         copy_body_data.
16401         * tree-pass.h (enum opt_pass_type): Break out of struct opt_pass.
16402
16403         * c-decl.c (in_struct, struct_types): New static variables.
16404         (pushtag): Add loc parameter.  Change all callers.
16405         (lookup_tag): Add ploc parameter.  Change all callers.
16406         (check_compound_literal_type): New function.
16407         (parser_xref_tag): Add loc parameter.  Change all callers.  If
16408         -Wc++-compat, warn about struct/union/enum types defined within a
16409         struct or union.
16410         (start_struct): Add enclosing_in_struct, enclosing_struct_types,
16411         and loc parameters.  Change all callers.  Change error calls to
16412         error_at, using loc.  For a redefinition, if the location of the
16413         original definition is known, report it.  Set in_struct and
16414         struct_types.  If -Wc++-compat warn if in sizeof, typeof, or alignof.
16415         (finish_struct): Add new parameters enclosing_in_struct and
16416         enclosing_struct_types.  Change all callers.  Set
16417         C_TYPE_DEFINED_IN_STRUCT for all struct/union/enum types defined
16418         in the struct.  If in a struct, add this struct to struct_types.
16419         (start_enum): Add loc parameter.  Change all callers.  Use
16420         error_at for errors, using loc.  For a redefinition, if the
16421         location of the original definition is known, report it.  If in a
16422         struct, add this enum type to struct_types.  If -Wc++-compat warn
16423         if in sizeof, typeof, or alignof.
16424         * c-parser.c (disable_extension_diagnostics): Disable -Wc++-compat.
16425         (enable_extension_diagnostics): Reenable -Wc++-compat if appropriate.
16426         (c_parser_enum_specifier): Get enum location for start_enum.
16427         (c_parser_struct_or_union_specifier): Get struct location for
16428         start_struct.  Save in_struct and struct_types status between
16429         start_struct and finish_struct.
16430         (c_parser_cast_expression): Get location of cast.
16431         (c_parser_alignof_expression): Get location of type.
16432         (c_parser_postfix_expression): Likewise.
16433         (c_parser_postfix_expression_after_paren_type): Add type_loc
16434         parameter.  Change all callers.  Call check_compound_literal_type.
16435         Use type_loc for error about variable size type.
16436         * c-typeck.c (build_external_ref): If -Wc++-compat, warn about a use
16437         of an enum constant from an enum type defined in a struct or union.
16438         (c_cast_expr): Add loc parameter.  Change all callers.  If
16439         -Wc++-compat, warn about defining a type in a cast.
16440         * c-tree.h (C_TYPE_DEFINED_IN_STRUCT): Define.
16441         (start_enum, start_struct, finish_struct): Update declarations.
16442         (parser_xref_tag, c_cast_expr): Update declarations.
16443         (check_compound_literal_type): Declare.
16444
16445 2009-05-11  Ben Elliston  <bje@au.ibm.com>
16446
16447         * config/rs6000/rs6000-c.c (altivec_categorize_keyword): Update
16448         for recent libcpp interface change.
16449         (rs6000_macro_to_expand): Likewise.
16450
16451 2009-05-10  Michael Matz  <matz@suse.de>
16452
16453         PR target/40031
16454         * config/arm/arm.c (require_pic_register): Emit on entry edge,
16455         not at entry of function.
16456
16457 2009-05-10  Richard Guenther  <rguenther@suse.de>
16458
16459         PR tree-optimization/40081
16460         Revert
16461         * tree-sra.c (instantiate_element): Instantiate scalar replacements
16462         using the main variant of the element type.  Do not fiddle with
16463         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
16464
16465         * tree-sra.c (sra_type_can_be_decomposed_p): Do not decompose
16466         structs with volatile fields.
16467
16468 2009-05-10  Jan Hubicka  <jh@suse.cz>
16469
16470         * tree-inline.c (delete_unreachable_blocks_update_callgraph): Declare.
16471         (estimate_move_cost): Assert that it does not get called for
16472         VOID_TYPE_P.
16473         (estimate_num_insns): Skip VOID types in argument handling.
16474         (optimize_inline_calls): Delete unreachable blocks and verify that
16475         callgraph is valid.
16476
16477 2009-05-10  Jan Hubicka  <jh@suse.cz>
16478
16479         * cgraphbuild.c (record_reference): Use cgraph_mark_address_taken_node.
16480         * cgraph.c (cgraph_mark_address_taken_node): New function.
16481         (dump_cgraph_node): Dump new flag.
16482         * cgraph.h (struct cgraph_node): Add address_taken.
16483         (cgraph_mark_address_taken_node): New function.
16484         * ipa.c (cgraph_postorder): Prioritize functions with address taken
16485         since new direct calls can be born.
16486
16487 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
16488
16489         * c-lex.c (c_lex_with_flags): Expect cpp_hashnode in
16490         tok->val.node.node.
16491
16492 2009-05-10  Jan Hubicka  <jh@suse.cz>
16493
16494         PR middle-end/40084
16495         * cgraph.c (cgraph_update_edges_for_call_stmt_node): Take old_call
16496         argument; rewrite.
16497         (cgraph_update_edges_for_call_stmt): Take old_decl argument.
16498         * cgraph.h (cgraph_update_edges_for_call_stmt): Update prototype.
16499         * tree-inline.c (copy_bb): Set frequency correctly.
16500         (fold_marked_statements): Update call to
16501         cgraph_update_edges_for_call_stmt.
16502
16503 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
16504
16505         * config/arc/arc.c (arc_handle_interrupt_attribute): Use %qE for
16506         identifiers in diagnostics.
16507         * config/arm/arm.c (arm_handle_fndecl_attribute,
16508         arm_handle_isr_attribute): Likewise.
16509         * config/avr/avr.c (avr_handle_progmem_attribute,
16510         avr_handle_fndecl_attribute, avr_handle_fntype_attribute): Likewise.
16511         * config/bfin/bfin.c (handle_int_attribute,
16512         bfin_handle_longcall_attribute, bfin_handle_l1_text_attribute,
16513         bfin_handle_l1_data_attribute, bfin_handle_longcall_attribute,
16514         bfin_handle_l1_text_attribute, bfin_handle_l1_data_attribute):
16515         Likewise.
16516         * config/darwin.c (darwin_handle_kext_attribute,
16517         darwin_handle_weak_import_attribute): Likewise.
16518         * config/h8300/h8300.c (h8300_handle_fndecl_attribute,
16519         h8300_handle_eightbit_data_attribute,
16520         h8300_handle_tiny_data_attribute): Likewise.
16521         * config/i386/i386.c (ix86_handle_cconv_attribute,
16522         ix86_handle_abi_attribute, ix86_handle_struct_attribute): Likewise.
16523         * config/i386/winnt.c (ix86_handle_shared_attribute,
16524         ix86_handle_selectany_attribute): Likewise.
16525         * config/ia64/ia64.c (ia64_handle_model_attribute): Likewise.
16526         * config/m32c/m32c.c (function_vector_handler): Likewise.
16527         * config/m68hc11/m68hc11.c (m68hc11_handle_page0_attribute,
16528         m68hc11_handle_fntype_attribute): Likewise.
16529         * config/m68k/m68k.c (m68k_handle_fndecl_attribute): Likewise.
16530         * config/mcore/mcore.c (mcore_handle_naked_attribute): Likewise.
16531         * config/mips/mips.c (mips_insert_attributes,
16532         mips_merge_decl_attributes, mips_expand_builtin): Likewise.
16533         * config/rs6000/rs6000.c (rs6000_handle_longcall_attribute,
16534         rs6000_handle_struct_attribute): Likewise.
16535         * config/sh/sh.c (sh_insert_attributes,
16536         sh_handle_resbank_handler_attribute,
16537         sh_handle_interrupt_handler_attribute,
16538         sh2a_handle_function_vector_handler_attribute,
16539         sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
16540         Likewise.
16541         * config/sh/symbian.c (sh_symbian_mark_dllimport): Likewise.
16542         * config/spu/spu.c (spu_handle_fndecl_attribute,
16543         spu_handle_vector_attribute): Likewise.
16544         * config/stormy16/stormy16.c
16545         (xstormy16_handle_interrupt_attribute): Likewise.
16546         * config/v850/v850-c.c (ghs_pragma_section): Likewise.
16547         * config/v850/v850.c (v850_handle_interrupt_attribute): Likewise.
16548
16549 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
16550
16551         * pretty-print.h (struct pretty_print_info): Add translate_identifiers.
16552         (pp_translate_identifiers): New.
16553         (pp_identifier): Only conditionally translate identifier to locale
16554         character set.
16555         * pretty-print.c (pp_construct): Set pp_translate_identifiers.
16556         (pp_base_tree_identifier): Only conditionally translate identifier
16557         to locale character set.
16558         * c-pretty-print.c (M_): Define.
16559         (pp_c_type_specifier, pp_c_primary_expression): Mark English
16560         fragments for conditional translation with M_.
16561         * tree-pretty-print.c (maybe_init_pretty_print): Disable
16562         identifier translation.
16563
16564 2009-05-10  Richard Guenther  <rguenther@suse.de>
16565
16566         PR tree-optimization/40081
16567         * tree-sra.c (instantiate_element): Instantiate scalar replacements
16568         using the main variant of the element type.  Do not fiddle with
16569         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
16570
16571 2009-05-09  Jan Hubicka  <jh@suse.cz>
16572
16573         PR middle-end/40080
16574         * cgraphunit.c (cgraph_materialize_all_clones): Do not redirect
16575         indirect calls; verify cgraph afterwards.
16576
16577 2009-05-09  Jan Hubicka  <jh@suse.cz>
16578
16579         PR bootstrap/40082
16580         * ipa.c (update_inlined_to_pointer): New function.
16581         (cgraph_remove_unreachable_nodes): Use it.
16582
16583 2009-05-09  Jan Hubicka  <jh@suse.cz>
16584
16585         * tree-eh.c (struct leh_state): Remove prev_try.
16586         (lower_try_finally, lower_catch, lower_eh_filter, lower_cleanup): Do
16587         not track prev_try.
16588         * except.c (gen_eh_region_cleanup, duplicate_eh_regions,
16589         copy_eh_region_1, copy_eh_region, redirect_eh_edge_to_label,
16590         remove_eh_handler_and_replace, foreach_reachable_handler,
16591         verify_eh_region, verify_eh_tree): Remove tracking of prev_try pointer.
16592         * except.h (struct eh_region): Remove eh_region_u_cleanup.
16593         (gen_eh_region_cleanup): Update prototype.
16594
16595 2009-05-09  Jan Hubicka  <jh@suse.cz>
16596
16597         PR middle-end/40043
16598         * except.c (copy_eh_region): Always set prev_try.
16599         (redirect_eh_edge_to_label): Find outer try.
16600         (foreach_reachable_handler): When looking for prev try
16601         handle case where previous try is not going to be taken.
16602
16603 2009-05-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
16604
16605         PR tree-optimization/40049
16606         * tree-vect-stmts.c (vectorizable_operation): If the machine has
16607         only vector/vector shifts, convert the type of the constant to the
16608         appropriate type to avoid building incorrect trees, which
16609         eventually have problems with garbage collection.
16610
16611 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
16612
16613         * fold-const.c (fold_binary): Do not fold multiplication by 1 or
16614         -1 for complex floating-point types if honoring signed zeros.
16615
16616 2009-05-08  Jan Hubicka  <jh@suse.cz>
16617
16618         * cgraphbuild.c (compute_call_stmt_bb_frequency): Accept function
16619         argument; handle correctly when profile is absent.
16620         (build_cgraph_edges): Update.
16621         (rebuild_cgraph_edges): Update.
16622         * cgraph.c: Do not include varray.h.
16623         (cgraph_set_call_stmt_including_clones): New function.
16624         (cgraph_create_edge_including_clones): Likewise
16625         (cgraph_update_edges_for_call_stmt_node): New static cfunction.
16626         (cgraph_update_edges_for_call_stmt): Handle clones.
16627         (cgraph_remove_node): Handle clone tree.
16628         (cgraph_remove_node_and_inline_clones): New function.
16629         (dump_cgraph_node): Dump clone tree.
16630         (cgraph_clone_node): Handle clone tree.
16631         (clone_function_name): Bring here from tree-inline.c.
16632         (cgraph_create_virtual_clone): New function.
16633         * cgraph.h (ipa_replace_map): Move here from ipa.h.
16634         (cgraph_clone_info): New function.
16635         (strut cgraph_node): Add clone_info and new clone tree pointers.
16636         (cgraph_remove_node_and_inline_clones,
16637         cgraph_set_call_stmt_including_clones,
16638         cgraph_create_edge_including_clones,
16639         cgraph_create_virtual_clone): Declare.
16640         (cgraph_function_versioning): Use VEC argument.
16641         (compute_call_stmt_bb_frequency): Update prototype.
16642         (cgraph_materialize_all_clones): New function.
16643         * ipa-cp.c (ipcp_update_cloned_node): Remove.
16644         (ipcp_create_replace_map): Update to VECtors.
16645         (ipcp_update_callgraph): Use virtual clones.
16646         (ipcp_update_bb_counts, ipcp_update_edges_counts): Remove.
16647         (ipcp_update_profiling): Do not update local profiling.
16648         (ipcp_insert_stage): Use VECtors and virtual clones.
16649         * cgraphunit.c (verify_cgraph_node): Verify clone tree.
16650         (clone_of_p): New function.
16651         (cgraph_preserve_function_body_p): Use clone tree.
16652         (cgraph_optimize): Materialize clones.
16653         (cgraph_function_versioning): Update for VECtors.
16654         (save_inline_function_body): Use clone tree.
16655         (cgraph_materialize_clone): New function.
16656         (cgraph_materialize_all_clones): Likewise.
16657         * ipa-inline.c (cgraph_default_inline_p): Use analyzed flags.
16658         * ipa.c: Include gimple.h.
16659         (cgraph_remove_unreachable_nodes): Use clone tree.
16660         * ipa-prop.c (ipa_note_param_call): Update call to
16661         compute_call_stmt_bb_frequencycall.
16662         * ipa-prop.h (ipa_replace_map): Move to cgraph.h.
16663         * tree-inline.c: Do not include varray.h or gt-tree-inline.h.
16664         (copy_bb): Handle updating of clone tree; add new edge when new call
16665         appears.
16666         (expand_call_inline): Be strict about every call having edge.
16667         (clone_fn_id_num, clone_function_name): Move to cgraph.c.
16668         (delete_unreachable_blocks_update_callgraph): New function.
16669         (tree_function_versioning): Use VECtors; always remove unreachable
16670         blocks and fold conditionals.
16671         * tree-inline.h: Do not include varray.h.
16672         (tree_function_versioning): Remove.
16673         * Makefile.in (GTFILES): Remove tree-inline.c
16674         * passes.c (do_per_function): Do only functions having body.
16675         * ipa-struct-reorg.c (do_reorg_1, collect_data_accesses): Handle clone
16676         tree.
16677
16678 2009-05-08  H.J. Lu  <hongjiu.lu@intel.com>
16679             Andrew Morrow  <acm@google.com>
16680
16681         PR c/36892
16682         * c-common.c (c_common_attribute_table): Permit deprecated
16683         attribute to take an optional argument.
16684         (handle_deprecated_attribute): If the optional argument to
16685         __attribute__((deprecated)) is not a string ignore the attribute
16686         and emit a warning.
16687
16688         * c-decl.c (grokdeclarator): Updated warn_deprecated_use call.
16689         * c-typeck.c (build_component_ref): Likewise.
16690         (build_external_ref): Likewise.
16691
16692         * toplev.c (warn_deprecated_use): Add an attribute argument.
16693         Emit the message associated with __attribute__((deprecated)).
16694
16695         * toplev.h (warn_deprecated_use): Updated.
16696
16697         * doc/extend.texi: Document new optional parameter to
16698         __attribute__((deprecated))
16699
16700 2009-05-08  Michael Eager <eager@eagercon.com>
16701
16702         * config/rs6000/rs6000.md (*movdf_softfloat32): replace
16703         !TARGET_DOUBLE_FLOAT with TARGET_SINGLE_FLOAT.
16704
16705 2009-05-08  Richard Guenther  <rguenther@suse.de>
16706
16707         PR tree-optimization/40062
16708         * tree-scalar-evolution.c (follow_ssa_edge_in_condition_phi):
16709         Avoid exponential behavior.
16710
16711 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
16712
16713         PR rtl-optimization/33928
16714         PR 26854
16715         * fwprop.c (use_def_ref, get_def_for_use, bitmap_only_bit_bitween,
16716         process_uses, build_single_def_use_links): New.
16717         (update_df): Update use_def_ref.
16718         (forward_propagate_into): Use get_def_for_use instead of use-def
16719         chains.
16720         (fwprop_init): Call build_single_def_use_links and let it initialize
16721         dataflow.
16722         (fwprop_done): Free use_def_ref.
16723         (fwprop_addr): Eliminate duplicate call to df_set_flags.
16724         * df-problems.c (df_rd_simulate_artificial_defs_at_top,
16725         df_rd_simulate_one_insn): New.
16726         (df_rd_bb_local_compute_process_def): Update head comment.
16727         (df_chain_create_bb): Use the new RD simulation functions.
16728         * df.h (df_rd_simulate_artificial_defs_at_top,
16729         df_rd_simulate_one_insn): New.
16730         * opts.c (decode_options): Enable fwprop at -O1.
16731         * doc/invoke.texi (-fforward-propagate): Document this.
16732
16733 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
16734
16735         PR c/24581
16736         * c-typeck.c (build_binary_op): Handle arithmetic between one real
16737         and one complex operand specially.
16738         * tree-complex.c (some_nonzerop): Do not identify a real value as
16739         zero if flag_signed_zeros.
16740
16741 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
16742
16743         PR rtl-optimization/33928
16744         * loop-invariant.c (record_use): Fix && vs. || mishap.
16745
16746 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
16747
16748         PR rtl-optimization/33928
16749         * loop-invariant.c (struct use): Add addr_use_p.
16750         (struct def): Add n_addr_uses.
16751         (struct invariant): Add cheap_address.
16752         (create_new_invariant): Set cheap_address.
16753         (record_use): Accept df_ref.  Set addr_use_p and update n_addr_uses.
16754         (record_uses): Pass df_ref to record_use.
16755         (get_inv_cost): Do not add inv->cost to comp_cost for cheap addresses
16756         used only as such.
16757
16758 2009-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
16759
16760         * config/sh/sh.c: Do not include c-pragma.h.
16761
16762 2009-05-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16763
16764         * config/spu/spu.c: Remove include of c-common.h.
16765
16766 2009-05-07  Janis Johnson  <janis187@us.ibm.com>
16767
16768         PR c/39037
16769         * c-common.h (mark_valid_location_for_stdc_pragma,
16770         valid_location_for_stdc_pragma_p, set_float_const_decimal64,
16771         clear_float_const_decimal64, float_const_decimal64_p): New.
16772         * c.opt (Wunsuffixed-float-constants): New.
16773         * c-lex.c (interpret_float): Use pragma FLOAT_CONST_DECIMAL64 for
16774         unsuffixed float constant, handle new warning.
16775         * c-cppbuiltin.c (c_cpp_builtins): Use cast for double constants.
16776         * c-decl.c (c_scope): New flag float_const_decimal64.
16777         (set_float_const_decimal64, clear_float_const_decimal64,
16778         float_const_decimal64_p): New.
16779         (push_scope): Set new flag.
16780         * c-parser.c (c_parser_translation_unit): Mark when it's valid
16781         to use STDC pragmas.
16782         (c_parser_external_declaration): Ditto.
16783         (c_parser_compound_statement_nostart): Ditto.
16784         * c-pragma.c (valid_location_for_stdc_pragma,
16785         mark_valid_location_for_stdc_pragma,
16786         valid_location_for_stdc_pragma_p, handle_stdc_pragma,
16787         handle_pragma_float_const_decimal64): New.
16788         (init_pragma): Register new pragma FLOAT_CONST_DECIMAL64.
16789         * cp/semantics.c (valid_location_for_stdc_pragma_p,
16790         set_float_const_decimal64, clear_float_const_decimal64,
16791         float_const_decimal64_p): New dummy functions.
16792         * doc/extend.texi (Decimal Float): Remove statement that the
16793         pragma, and suffix for double constants, are not supported.
16794         * doc/invoke.texi (Warning Options): List new option.
16795         (-Wunsuffixed-float-constants): New.
16796
16797 2009-05-08  Steven Bosscher  <steven@gcc.gnu.org>
16798
16799         * config/i386/i386.c: Do not include c-common.h.
16800
16801 2009-05-07  Mark Heffernan  <meheff@google.com>
16802
16803         * doc/invoke.texi (Debugging Options): Document change of debugging
16804         dump location.
16805         * opts.c (decode_options): Make dump_base_name relative to
16806         aux_base_name directory.
16807
16808 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
16809
16810         * config/picochip/picochip.h (NO_DOLLAR_IN_LABEL): Added.
16811         * config/picochip/libgccExtras/divmod15.asm : Removed redefiniton.
16812
16813 2009-05-07  Rafael Avila de Espindola  <espindola@google.com>
16814
16815         * Makefile.in (install-plugin): Simplify a bit.
16816
16817 2009-05-07  Paolo Bonzini  <bonzini@gnu.org>
16818
16819         * Makefile.in (OBJS-common): Add regcprop.o.
16820         (regcprop.o): New.
16821         * timevar.def (TV_CPROP_REGISTERS): New.
16822         * regrename.c (regrename_optimize): Return 0.
16823         (rest_of_handle_regrename): Delete.
16824         (pass_rename_registers): Point to regrename_optimize.
16825         (struct value_data_entry, struct value_data,
16826         kill_value_one_regno, kill_value_regno, kill_value,
16827         set_value_regno, init_value_data, kill_clobbered_value,
16828         kill_set_value, kill_autoinc_value, copy_value,
16829         mode_change_ok, maybe_mode_change, find_oldest_value_reg,
16830         replace_oldest_value_reg, replace_oldest_value_addr,
16831         replace_oldest_value_mem, copyprop_hardreg_forward_1,
16832         debug_value_data, validate_value_data): Move...
16833         * regcprop.c: ... here.
16834         (rest_of_handle_cprop): Delete.
16835         (pass_cprop_hardreg): Point to copyprop_hardreg_forward.
16836
16837 2009-05-07  Jakub Jelinek  <jakub@redhat.com>
16838
16839         PR middle-end/40057
16840         * dojump.c (prefer_and_bit_test): Use immed_double_const instead of
16841         GEN_INT for 1 << bitnum.
16842         (do_jump) <case BIT_AND_EXPR>: Use build_int_cst_wide_type instead of
16843         build_int_cst_type.
16844
16845 2009-05-07  Uros Bizjak  <ubizjak@gmail.com>
16846
16847         * doc/md.texi (Standard Pattern Names For Generation) [sync_nand]:
16848         Remove wrong description of "nand" operation.
16849
16850 2009-05-06  Richard Guenther  <rguenther@suse.de>
16851             Adam Nemet  <anemet@caviumnetworks.com>
16852
16853         * gimple.def (GIMPLE_ASSIGN): Fix incorrect information in the
16854         comment.  Add that if LHS is not a gimple register, then RHS1 has
16855         to be a single object (GIMPLE_SINGLE_RHS).
16856
16857 2009-05-06  Adam Nemet  <anemet@caviumnetworks.com>
16858
16859         * expr.c (get_def_for_expr): Move it up in the file.
16860         (store_field): When expanding a bit-field store, look at the
16861         defining gimple stmt for the masking conversion.
16862
16863 2009-05-06  Janis Johnson  <janis187@us.ibm.com>
16864
16865         PR middle-end/39986
16866         * dfp.c (encode_decimal32, decode_decimal32, encode_decimal64,
16867         decode_decimal64, encode_decimal128, decode_decimal128): Avoid
16868         32-bit memcpy into long.
16869
16870 2009-05-06  Jakub Jelinek  <jakub@redhat.com>
16871
16872         * dwarf2out.c (new_reg_loc_descr): Don't ever create DW_OP_regX.
16873         (one_reg_loc_descriptor): Create DW_OP_regX here instead of calling
16874         new_reg_loc_descr.
16875         (loc_by_reference): If loc is DW_OP_regX, change it into DW_OP_bregX 0
16876         instead of appending DW_OP_deref*.
16877
16878 2009-05-06  Michael Matz  <matz@suse.de>
16879
16880         PR middle-end/40021
16881         * cfgexpand.c (maybe_cleanup_end_of_block): New static function.
16882         (expand_gimple_cond): Use it to cleanup CFG and superfluous jumps.
16883
16884 2009-05-06  Rafael Avila de Espindola  <espindola@google.com>
16885
16886         * Makefile.in (install-plugin): Fix srcdir handling.
16887
16888 2009-05-06  Andrey Belevantsev  <abel@ispras.ru>
16889
16890         * tree-ssa.c (execute_update_address_taken): Handle TARGET_MEM_REF
16891         when processing for not_regs_needed bitmap.
16892         * gimple.c (walk_stmt_load_store_addr_ops): When visiting address,
16893         handle TARGET_MEM_REF in lhs.  Check TMR_BASE for NULL while
16894         handling it for rhs.
16895
16896 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
16897
16898         * config/i386/i386.md (unnamed inc/dec peephole): Use
16899         optimize_insn_for_size_p instead of optimize_size.
16900         * config/i386/predicates.md (incdec_operand): Likewise.
16901         (aligned_operand): Likewise.
16902         * config/i386/sse.md (divv8sf3): Likewise.
16903         (sqrtv8sf2): Likewise.
16904
16905 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
16906
16907         * config/i386/i386.c (ix86_build_signbit_mask): Make it static.
16908
16909         * config/i386/i386-protos.h (ix86_build_signbit_mask): Removed.
16910
16911 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
16912
16913         * config/i386/i386.md (*avx_<code><mode>3_finite): Replace
16914         ssemodesuffixf2c with avxmodesuffixf2c.
16915
16916 2009-05-06  Joseph Myers  <joseph@codesourcery.com>
16917
16918         PR c/40032
16919         * c-decl.c (grokdeclarator): Handle incomplete type of unnamed field.
16920
16921 2009-05-05  Jakub Jelinek  <jakub@redhat.com>
16922
16923         * tree.h: Remove DECL_BY_REFERENCE from private_flag comment.
16924         (struct tree_base): Adjust spacing for 8 bit boundaries.
16925         (struct tree_decl_common): Add decl_by_reference_flag bit.
16926         (DECL_BY_REFERENCE): Adjust.
16927         * print-tree.c (print_node): For VAR_DECL, PARM_DECL or RESULT_DECL,
16928         print DECL_BY_REFERENCE bit.
16929         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Revert last change.
16930         * dwarf2out.c (loc_by_reference, gen_decl_die): Check
16931         DECL_BY_REFERENCE for all VAR_DECLs, not just non-static ones.
16932         (gen_variable_die): Likewise.  Check TREE_PRIVATE/TREE_PROTECTED
16933         unconditionally.
16934
16935         PR middle-end/39666
16936         * gimplify.c (gimplify_switch_expr): If case labels cover the whole
16937         range of the type, but default label is missing, add it with one
16938         of the existing labels instead of adding a new label for it.
16939
16940 2009-05-05  Joseph Myers  <joseph@codesourcery.com>
16941
16942         * dwarf.h: Remove.
16943
16944 2009-05-05  Rafael Avila de Espindola  <espindola@google.com>
16945
16946         * Makefile.in (enable_plugin, plugin_includedir): New.
16947         (install): Depend on install-plugin.
16948         (PLUGIN_HEADERS): New.
16949         (install-plugin): New.
16950         * config.gcc: Add vxworks-dummy.h to tm_file for x86 and x86-64.
16951
16952 2009-05-05  Richard Guenther  <rguenther@suse.de>
16953
16954         PR tree-optimization/40022
16955         * tree-ssa-phiprop.c (struct phiprop_d): Exchange vop_stmt for
16956         the only vuse.
16957         (phivn_valid_p): Fix tuplification error, simplify.
16958         (phiprop_insert_phi): Add dumps.
16959         (propagate_with_phi): Simplify.
16960
16961 2009-05-05  Richard Guenther  <rguenther@suse.de>
16962
16963         PR middle-end/40023
16964         * builtins.c (gimplify_va_arg_expr): Properly build the address.
16965
16966 2009-05-05  Shujing Zhao  <pearly.zhao@oracle.com>
16967
16968         * tree.h (strip_float_extensions): Remove duplicate declaration.
16969         (build_low_bits_mask, debug_fold_checksum, expand_function_end,
16970         expand_function_start, stack_protect_prologue, stack_protect_epilogue,
16971         block_ultimate_origin): Rearrange the declarations line to match the
16972         comment that indicates the .c file which the functions are defined.
16973         (dwarf2out_*, set_decl_rtl): Add comment.
16974         (get_base_address): Adjust comment.
16975         (change_decl_assembler_name, maybe_fold_*, build_addr): Rearrange the
16976         declarations line and add comment.
16977         (is_builtin_name): Add blank after function name, for clarity.
16978
16979 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
16980
16981         * attribs.c (decl_attributes): Use %qE for identifiers in
16982         diagnostics.
16983         * cgraphunit.c (verify_cgraph_node): Translate function names to
16984         locale character set in diagnostics.
16985         * coverage.c (get_coverage_counts): Use %qE for identifiers in
16986         diagnostics.
16987         * doc/invoke.texi (-finstrument-functions-exclude-function-list):
16988         Document that functions are named in UTF-8.
16989         * expr.c (expand_expr_real_1): Translate function names to locale
16990         character set in diagnostics.
16991         * gimplify.c (omp_notice_variable, omp_is_private,
16992         gimplify_scan_omp_clauses): Use %qE for identifiers in
16993         diagnostics.
16994         * langhooks.c (lhd_print_error_function): Translate function names
16995         to locale character set.
16996         * langhooks.h (decl_printable_name): Document that return value is
16997         in internal character set.
16998         * stmt.c: Include pretty-print.h
16999         (tree_conflicts_with_clobbers_p): Use %qE for identifiers in
17000         diagnostics.
17001         (resolve_operand_name_1): Translate named operand name to locale
17002         character set.
17003         * stor-layout.c (finalize_record_size): Use %qE for identifiers in
17004         diagnostics.
17005         * toplev.c (announce_function): Translate function names to locale
17006         character set.
17007         (warn_deprecated_use): Use %qE for identifiers in diagnostics.
17008         (default_tree_printer): Use pp_identifier or translate identifiers
17009         to locale character set.  Mark "<anonymous>" for translation.
17010         * tree-mudflap.c (mx_register_decls, mudflap_finish_file): Use %qE
17011         for identifiers in diagnostics.
17012         * tree.c (handle_dll_attribute): Use %qE for identifiers in
17013         diagnostics.
17014         * varasm.c (output_constructor): Use %qE for identifiers in
17015         diagnostics.
17016
17017 2009-05-04  Rafael Avila de Espindola  <espindola@google.com>
17018
17019         * configure.ac: use ` ` instead of $()
17020         * configure: Regenerate.
17021
17022 2009-05-05  Ben Elliston  <bje@au.ibm.com>
17023
17024         * config/pa/linux-atomic.c: Eliminate conditional include of
17025         errno.h on non-LP64 systems to simplify build requirements.
17026
17027 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
17028
17029         * c-common.c (handle_mode_attribute): Use %qE for identifiers in
17030         diagnostics.
17031         * c-decl.c (check_bitfield_type_and_width): Make orig_name a tree
17032         and pass value to identifier_to_locale.
17033         (warn_variable_length_array): Make name a tree.
17034         (grokdeclarator): Separate diagnostic texts for named and unnamed
17035         declarators.  Use %qE for named declarators.
17036         * c-parser.c (c_lex_one_token): Use %qE for identifiers in
17037         diagnostics.
17038         * c-pragma.c (pop_alignment, handle_pragma_pack): Use %qE for
17039         identifiers in diagnostics.
17040         * c-typeck.c (push_member_name, start_init): Pass identifiers to
17041         identifier_to_locale.  Mark "anonymous" strings for translation.
17042
17043 2009-05-04  Michael Eager <eager@eagercon.com>
17044
17045         * config/rs6000/rs6000.c (rs6000_legitimate_address): Allow
17046         address for DImode/DFmode only if double-precision FP regs.
17047
17048 2009-05-04  Michael Eager <eager@eagercon.com>
17049
17050         * config/rs6000/rs6000.c (rs6000_libcall_value): Add
17051         TARGET_SINGLE_FLOAT check.
17052
17053 2009-05-04  Michael Eager <eager@eagercon.com>
17054
17055         * config/rs6000/xilinx.h: Add CPP_SPEC for -mxilinx-fpu options.
17056
17057 2009-05-04  Michael Eager <eager@eagercon.com>
17058
17059         * gcc/config.gcc: (powerpc-xilinx-eabi*): Add tm t-xilinx
17060         * config/rs6000/t-xilinx: New
17061
17062 2009-05-04  Paolo Bonzini  <bonzini@gnu.org>
17063
17064         * doc/tm.texi (LEGITIMIZE_ADDRESS): Revise documentation.
17065         * gcc/defaults.h (LEGITIMIZE_ADDRESS): Delete.
17066         * gcc/explow.c (memory_address): Use target hook.
17067         * gcc/targhooks.c (default_legitimize_address): New.
17068         * gcc/targhooks.h (default_legitimize_address): New.
17069         * gcc/target.h (legitimize_address): New.
17070         * gcc/target-def.h (TARGET_LEGITIMIZE_ADDRESS): New.
17071         (TARGET_INITIALIZER): Include it.
17072         * gcc/system.h (LEGITIMIZE_ADDRESS): Poison.
17073
17074         * config/bfin/bfin-protos.h (legitimize_address): Remove.
17075         * config/bfin/bfin.c (legitimize_address): Remove.
17076         * config/bfin/bfin.h (LEGITIMIZE_ADDRESS): Remove.
17077         * config/m68hc11/m68hc11-protos.h (m68hc11_legitimize_address):
17078         Remove.
17079         * config/m68hc11/m68hc11.c (m68hc11_legitimize_address): Remove.
17080         * config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Remove.
17081
17082         * gcc/config/arm/arm.h (LEGITIMIZE_ADDRESS, ARM_LEGITIMIZE_ADDRESS,
17083         THUMB_LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS): Delete.
17084         * gcc/config/s390/s390.h (LEGITIMIZE_ADDRESS): Delete.
17085         * gcc/config/m32c/m32c.h (LEGITIMIZE_ADDRESS): Delete.
17086         * gcc/config/sparc/sparc.h (LEGITIMIZE_ADDRESS): Delete.
17087         * gcc/config/m32r/m32r.h (LEGITIMIZE_ADDRESS): Delete.
17088         * gcc/config/i386/i386.h (LEGITIMIZE_ADDRESS): Delete.
17089         * gcc/config/sh/sh.h (LEGITIMIZE_ADDRESS): Delete.
17090         * gcc/config/avr/avr.h (LEGITIMIZE_ADDRESS): Delete.
17091         * gcc/config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Delete.
17092         * gcc/config/iq2000/iq2000.h (LEGITIMIZE_ADDRESS): Delete.
17093         * gcc/config/mn10300/mn10300.h (LEGITIMIZE_ADDRESS): Delete.
17094         * gcc/config/m68k/m68k.h (LEGITIMIZE_ADDRESS): Delete.
17095         * gcc/config/score/score.h (LEGITIMIZE_ADDRESS): Delete.
17096         * gcc/config/pa/pa.h (LEGITIMIZE_ADDRESS): Delete.
17097         * gcc/config/mips/mips.h (LEGITIMIZE_ADDRESS): Delete.
17098         * gcc/config/alpha/alpha.h (LEGITIMIZE_ADDRESS): Delete.
17099         * gcc/config/frv/frv.h (LEGITIMIZE_ADDRESS): Delete.
17100         * gcc/config/spu/spu.h (LEGITIMIZE_ADDRESS): Delete.
17101         * gcc/config/xtensa/xtensa.h (LEGITIMIZE_ADDRESS): Delete.
17102         * gcc/config/cris/cris.h (LEGITIMIZE_ADDRESS): Delete.
17103         * gcc/config/rs6000/rs6000.h (LEGITIMIZE_ADDRESS): Delete.
17104         * gcc/config/picochip/picochip.h (LEGITIMIZE_ADDRESS): Delete.
17105
17106         * gcc/config/s390/s390-protos.h (legitimize_address): Delete.
17107         * gcc/config/m32c/m32c-protos.h (m32c_legitimize_address): Delete.
17108         * gcc/config/sparc/sparc-protos.h (legitimize_address): Delete.
17109         * gcc/config/i386/i386-protos.h (legitimize_address): Delete.
17110         * gcc/config/avr/avr-protos.h (legitimize_address): Delete.
17111         * gcc/config/mn10300/mn10300-protos.h (legitimize_address): Delete.
17112         * gcc/config/score/score-protos.h (score_legitimize_address): Delete.
17113         * gcc/config/arm/arm-protos.h (arm_legitimize_address,
17114         (thumb_legitimize_address): Delete.
17115         * gcc/config/pa/pa-protos.h (hppa_legitimize_address): Delete.
17116         * gcc/config/mips/mips-protos.h (mips_legitimize_address): Delete.
17117         * gcc/config/alpha/alpha-protos.h (alpha_legitimize_address): Delete.
17118         * gcc/config/frv/frv-protos.h (frv_legitimize_address): Delete.
17119         * gcc/config/spu/spu-protos.h (spu_legitimize_address): Delete.
17120         * gcc/config/xtensa/xtensa-protos.h (xtensa_legitimize_address):
17121         Delete.
17122         * gcc/config/rs6000/rs6000-protos.h (rs6000_legitimize_address):
17123         Delete.
17124
17125         * config/arm/arm.c (arm_legitimize_address): Maybe call Thumb version.
17126         * config/m32c/m32c.c (m32c_legitimize_address): Standardize.
17127         * config/m32r/m32r.c (m32r_legitimize_address): New.
17128         * config/m68k/m68k.c (m68k_legitimize_address): New.
17129         * config/score/score.c (score_legitimize_address): Standardize.
17130         * config/score/score3.c (score3_legitimize_address): Standardize.
17131         * config/score/score3.h (score3_legitimize_address): Adjust.
17132         * config/score/score7.c (score7_legitimize_address): Standardize.
17133         * config/score/score7.h (score7_legitimize_address): Adjust.
17134         * config/sh/sh.c (sh_legitimize_address): New.
17135         * config/iq2000/iq2000.c (iq2000_legitimize_address): New.
17136
17137         * gcc/config/s390/s390.c (legitimize_address): Rename to...
17138         (s390_legitimize_address): ... this.
17139         * gcc/config/sparc/sparc.c (legitimize_address): Rename to...
17140         (sparc_legitimize_address): ... this.
17141         * gcc/config/i386/i386.c (legitimize_address): Rename to...
17142         (ix86_legitimize_address): ... this.
17143         * gcc/config/avr/avr.c (legitimize_address): Rename to...
17144         (avr_legitimize_address): ... this.
17145         * gcc/config/mn10300/mn10300.c (legitimize_address): Rename to...
17146         (mn10300_legitimize_address): ... this.
17147         * config/alpha/alpha.c (alpha_legitimize_address): Wrap...
17148         (alpha_legitimize_address_1): ... the old alpha_legitimize_address.
17149         (alpha_expand_mov): Adjust call.
17150
17151         * config/frv/frv.c (frv_legitimize_address): Return x on failure.
17152         * config/spu/spu.c (spu_legitimize_address): Likewise.
17153         * config/xtensa/xtensa.c (xtensa_legitimize_address): Likewise.
17154         * config/rs6000/rs6000.c (rs6000_legitimize_address): Likewise.
17155
17156 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
17157
17158         * intl.c (locale_encoding, locale_utf8): New.
17159         (gcc_init_libintl): Initialize locale_encoding and locale_utf8.
17160         * intl.h (locale_encoding, locale_utf8): Declare.
17161         * pretty-print.c: Include ggc.h.  Include iconv.h if HAVE_ICONV.
17162         (pp_base_tree_identifier, decode_utf8_char, identifier_to_locale):
17163         New.
17164         * pretty-print.h (pp_identifier): Call identifier_to_locale on ID
17165         argument.
17166         (pp_tree_identifier): Define to call pp_base_tree_identifier.
17167         (pp_base_tree_identifier): Declare as function.
17168         (identifier_to_locale): Declare.
17169         * Makefile.in (pretty-print.o): Update dependencies.
17170         * varasm.c (finish_aliases_1): Use %qE for identifiers in diagnostics.
17171
17172 2009-05-04  Richard Guenther  <rguenther@suse.de>
17173
17174         PR middle-end/40015
17175         * builtins.c (fold_builtin_memory_op): Do not decay to element
17176         type if the size matches the whole array.
17177
17178 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
17179
17180         * expmed.c (synth_mult): When trying out a shift, pass the result
17181         of a signed shift.
17182
17183 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
17184
17185         * expmed.c (shiftsub_cost): Rename to shiftsub0_cost.
17186         (shiftsub1_cost): New.
17187         (init_expmed): Compute shiftsub1_cost.
17188         (synth_mult): Optimize multiplications by constants of the form
17189         -(2^^m-1) for some constant positive integer m.
17190
17191 2009-05-03  Richard Guenther  <rguenther@suse.de>
17192
17193         PR c/39983
17194         * c-typeck.c (array_to_pointer_conversion): Do not built
17195         ADDR_EXPRs of arrays of pointer-to-element type.
17196         * c-gimplify.c (c_gimplify_expr): Revert change fixing
17197         up wrong ADDR_EXPRs after-the-fact.
17198         * c-common.c (strict_aliasing_warning): Strip pointer
17199         conversions for obtaining the original type.
17200         * builtins.c (fold_builtin_memset): Handle array types.
17201         (fold_builtin_memory_op): Handle folded POINTER_PLUS_EXPRs
17202         and array types
17203
17204 2009-05-03  Richard Guenther  <rguenther@suse.de>
17205
17206         PR middle-end/23329
17207         * tree-ssa.c (useless_type_conversion_p_1): Use get_deref_alias_set.
17208         Do not lose casts from array types with unknown extent to array
17209         types with known extent.
17210         * tree-ssa-copy.c (may_propagate_copy): Remove hack checking for
17211         alias set compatibility.
17212
17213 2009-05-03  Manuel López-Ibáñez  <manu@gcc.gnu.org>
17214
17215         * flags.h (extra_warnings): Delete.
17216         * toplev.c (process_options): Handle Wuninitialized here.
17217         * opts.c (extra_warnings): Delete.
17218         (set_Wextra): Delete.
17219         (common_handle_option): -Wextra can be handled automatically.
17220         * c-opts.c (c_common_handle_option): Delete obsolete code.
17221         (c_common_post_options): Simplify comment.
17222         * common.opt (W): Add Var.
17223         (Wextra): Add Var.
17224         (Wuninitialized): Initialize to -1.
17225
17226 2009-05-03  Adam Nemet  <anemet@caviumnetworks.com>
17227             Richard Guenther  <rguenther@suse.de>
17228
17229         * expr.c (get_def_for_expr): New function.
17230         (expand_expr_real_1) <PLUS_EXPR, MINUS_EXPR>: Adjust to work with
17231         SSA rather than trees.
17232         <MULT_EXPR>: Likewise.  Use subexp0 and subexp1 instead of
17233         TREE_OPERAND (exp, 0) and TREE_OPERAND (exp, 1).
17234
17235 2009-05-03  Joseph Myers  <joseph@codesourcery.com>
17236
17237         * c-common.c (reswords): Add _Imaginary.
17238         * c-common.c (enum rid): Add RID_IMAGINARY.
17239
17240 2009-05-03  Paolo Bonzini  <bonzini@gnu.org>
17241
17242         * tree.h (TYPE_VECTOR_OPAQUE): Fix documentation.
17243         Patch by Richard Guenther.
17244
17245 2009-05-03  Anatoly Sokolov  <aesok@post.ru>
17246
17247         * defaults.h (FRAME_POINTER_REQUIRED): Provide default.
17248         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
17249         * config/alpha/alpha.h (FRAME_POINTER_REQUIRED): Delete.
17250         * config/s390/s390.h (FRAME_POINTER_REQUIRED): Delete.
17251         * config/spu/spu.h (FRAME_POINTER_REQUIRED): Delete.
17252         * config/sh/sh.h (FRAME_POINTER_REQUIRED): Delete.
17253         * config/pdp11/pdp11.h (FRAME_POINTER_REQUIRED): Delete.
17254         * config/stormy16/stormy16.h (FRAME_POINTER_REQUIRED): Delete.
17255         * config/m68hc11/m68hc11.h (FRAME_POINTER_REQUIRED): Delete.
17256         * config/iq2000/iq2000.h (FRAME_POINTER_REQUIRED): Delete.
17257         * config/mn10300/mn10300.h (FRAME_POINTER_REQUIRED): Delete.
17258         * config/ia64/ia64.h (FRAME_POINTER_REQUIRED): Delete.
17259         * config/m68k/m68k.h (FRAME_POINTER_REQUIRED): Delete.
17260         * config/rs6000/rs6000.h (FRAME_POINTER_REQUIRED): Delete.
17261         * config/picochip/picochip.h (FRAME_POINTER_REQUIRED): Delete.
17262         * config/mcore/mcore.h (FRAME_POINTER_REQUIRED): Delete.
17263         * config/h8300/h8300.h (FRAME_POINTER_REQUIRED): Delete.
17264         * config/v850/v850.h (FRAME_POINTER_REQUIRED): Delete.
17265
17266 2009-05-02  Richard Guenther  <rguenther@suse.de>
17267
17268         PR tree-optimization/39940
17269         * tree-ssa-pre.c (eliminate): Make sure we may propagate before
17270         doing so.
17271
17272 2009-05-02  Richard Guenther  <rguenther@suse.de>
17273
17274         PR middle-end/40001
17275         * tree-ssa.c (execute_update_addresses_taken): Properly check
17276         if we can mark a variable DECL_GIMPLE_REG_P.
17277         * gimple.c (is_gimple_reg): Re-order check for DECL_GIMPLE_REG_P
17278         back to the end of the function.
17279         (is_gimple_reg_type): Remove complex type special casing.
17280         * gimplify.c (gimplify_bind_expr): Do not set DECL_GIMPLE_REG_P
17281         if not optimizing.
17282
17283 2009-05-02  Ben Elliston  <bje@au.ibm.com>
17284
17285         * doc/collect2.texi (Collect2): Document search path behaviour
17286         when configured with --with-ld.
17287
17288 2009-05-02  Jan Hubicka  <jh@suse.cz>
17289
17290         * tree-ssa-coalesce.c (coalesce_cost): Do not take ciritical
17291         parameter; update callers.
17292         (coalesce_cost_edge): EH edges are costier because they needs
17293         splitting even if not critical and even more costier when there are
17294         multiple EH predecestors.
17295
17296 2009-05-02  Jan Hubicka  <jh@suse.cz>
17297
17298         * except.c (remove_eh_handler_and_replace): Handle updating after
17299         removing TRY blocks.
17300
17301 2009-05-02  Eric Botcazou  <ebotcazou@adacore.com>
17302
17303         * store-motion.c (compute_store_table): Add ENABLE_CHECKING guard.
17304
17305 2009-05-02  Steven Bosscher  <steven@gcc.gnu.org>
17306
17307         * varasm.c: Do not include c-pragma.h.
17308         * attribs.c: Do not incude c-common.h.
17309
17310 2009-05-01  Michael Matz  <matz@suse.de>
17311
17312         * calls.c (initialize_argument_information): Handle SSA names like
17313         decls with a non MEM_P DECL_RTL.
17314
17315 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
17316
17317         * ipa-reference.c: Do not include c-common.h, include splay-tree.h.
17318         * ipa-utils.c: Likewise.
17319         * ipa-type-escape.c: Likewise.
17320         * cgraphunit.c Do not include c-common.h.
17321         * ipa-pure-const.c: Likewise.
17322         * tree-if-conv.c: Likewise.
17323         * matrix-reorg.c: Do not include c-common.h and c-tree.h.
17324         * ipa-struct-reorg.c: Likewise.
17325         * tree-nomudflap.c: Likewise.
17326         * tree-ssa-structalias.c: Likewise.
17327
17328 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
17329
17330         * store-motion.c: Many cleanups to make this pass a first-class
17331         citizen instead of an appendix to gcse load motion.  Add TODO list
17332         to make this pass faster/cleaner/better.
17333
17334         (struct ls_expr): Post gcse.c-split cleanups.
17335         Rename to st_expr.  Rename "loads" field to "antic_stores".  Rename
17336         "stores" field to "avail_stores".
17337         (pre_ldst_mems): Rename to store_motion_mems.
17338         (pre_ldst_table): Rename to store_motion_mems_table.
17339         (pre_ldst_expr_hash): Rename to pre_st_expr_hash, update users.
17340         (pre_ldst_expr_eq): Rename to pre_st_expr_eq, update users.
17341         (ldst_entry): Rename to st_expr_entry, update users.
17342         (free_ldst_entry): Rename to free_st_expr_entry, update users.
17343         (free_ldst_mems): Rename to free_store_motion_mems, update users.
17344         (enumerate_ldsts): Rename to enumerate_store_motion_mems,
17345         update caller.
17346         (first_ls_expr): Rename to first_st_expr, update users.
17347         (next_ls_expr): Rename to next_st_expr, update users.
17348         (print_ldst_list): Rename to print_store_motion_mems.  Print names of
17349         fields properly for store motion instead of names inherited from load
17350         motion in gcse.c.
17351         (ANTIC_STORE_LIST, AVAIL_STORE_LIST): Remove.
17352         (LAST_AVAIL_CHECK_FAILURE): Explain what this is.  Undefine when we
17353         are done with it.
17354
17355         (ae_kill): Rename to st_kill, update users.
17356         (ae_gen): Rename to st_avloc, update users.
17357         (transp): Rename to st_transp, update users.
17358         (pre_insert_map): Rename to st_insert_map, update users.
17359         (pre_delete_map): Rename to st_delete_map, update users.
17360         (insert_store, build_store_vectors, free_store_memory,
17361         one_store_motion_pass): Update for abovementioned changes.
17362
17363         (gcse_subst_count, gcse_create_count): Remove.
17364         (one_store_motion_pass): New statistics counters "n_stores_deleted"
17365         and "n_stores_created", local variables.
17366
17367         (extract_mentioned_regs, extract_mentioned_regs_1): Rewrite to
17368         use for_each_rtx.
17369
17370         (regvec, compute_store_table_current_insn): Remove.
17371         (reg_set_info, reg_clear_last_set): Remove.
17372         (compute_store_table): Use DF caches instead of local dataflow
17373         solvers.
17374
17375 2009-05-01  Joseph Myers  <joseph@codesourcery.com>
17376
17377         * c-objc-common.c (c_tree_printer): Print identifiers with
17378         pp_identifier, not pp_string.  Mark "({anonymous})" for
17379         translation.
17380         * c-pretty-print.c (pp_c_ws_string): New.
17381         (pp_c_cv_qualifier, pp_c_type_specifier,
17382         pp_c_specifier_qualifier_list, pp_c_parameter_type_list,
17383         pp_c_storage_class_specifier, pp_c_function_specifier,
17384         pp_c_attributes, pp_c_bool_constant, pp_c_constant,
17385         pp_c_primary_expression, pp_c_postfix_expression,
17386         pp_c_unary_expression, pp_c_shift_expression,
17387         pp_c_relational_expression, pp_c_equality_expression,
17388         pp_c_logical_and_expression, pp_c_logical_or_expression): Mostly
17389         use pp_string and pp_c_ws_string in place of pp_identifier and
17390         pp_c_identifier for non-identifiers.  Mark English strings for
17391         translation.
17392         * c-pretty-print.h (pp_c_ws_string): Declare.
17393
17394 2009-04-30  Paul Pluzhnikov  <ppluzhnikov@google.com>
17395             Roland McGrath <roland@redhat.com>
17396
17397         * configure.ac (HAVE_LD_BUILDID): New check for ld --build-id support.
17398         (ENABLE_LD_BUILDID): New configuration option.
17399         * gcc.c [HAVE_LD_BUILDID and ENABLE_LD_BUILDID]
17400         (LINK_BUILDID_SPEC): New macro.
17401         (init_spec): If defined, prepend it between LINK_EH_SPEC and
17402         link_spec.
17403         * doc/install.texi: Document --enable-linker-build-id option.
17404         * configure: Rebuild.
17405         * config.in: Rebuild.
17406
17407 2009-04-30  Adam Nemet  <anemet@caviumnetworks.com>
17408
17409         * config/mips/mips.h (FRAME_GROWS_DOWNWARD,
17410         MIPS_GP_SAVE_AREA_SIZE): Define new macros.
17411         (STARTING_FRAME_OFFSET): Return 0 if FRAME_GROWS_DOWNWARD.  Use
17412         MIPS_GP_SAVE_AREA_SIZE.
17413         * config/mips/mips.c (struct mips_frame_info): Update comment
17414         before arg_pointer_offset and hard_frame_pointer_offset.
17415         (mips_compute_frame_info): Update diagram before function: to
17416         correctly use stack_pointer_rtx for fp_sp_offset and gp_sp_offset, to
17417         indicate the position of frame_pointer_rtx with -fstack-protector and
17418         to show args_size.  Don't allocate cprestore area for leaf functions
17419         if FRAME_GROWS_DOWNWARD.  Use MIPS_GP_SAVE_AREA_SIZE to set
17420         cprestore_size.
17421         (mips_initial_elimination_offset): Update for FRAME_GROWS_DOWNWARD.
17422
17423 2009-04-30  Michael Matz  <matz@suse.de>
17424
17425         PR tree-optimization/39955
17426         * config/rs6000/rs6000.c (rs6000_check_sdmode): Also check SSA_NAMEs.
17427
17428 2009-04-30  Dave Korn  <dave.korn.cygwin@gmail.com>
17429
17430         * ira.c (setup_cover_and_important_classes):  Use safe macro
17431         REG_CLASS_FOR_CONSTRAINT instead of calling regclass_for_constraint
17432         directly.
17433         * genpreds.c (write_tm_preds_h):  Output suitable definition of
17434         REG_CLASS_FOR_CONSTRAINT.
17435
17436 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
17437
17438         * alloc-pool.c (alloc_pool_descriptor): Use an insert_opion value
17439         instead of an int.
17440         * bitmap.c (bitmap_descriptor): Likewise.
17441         * ggc-common.c (loc_descriptor): Likewise.
17442         * varray.c (varray_descriptor): Likewise.
17443         * vec.c (vec_descriptor): Likewise.
17444
17445 2009-04-30  Eric Botcazou  <ebotcazou@adacore.com>
17446
17447         * Makefile.in (dce.o): Add $(EXCEPT_H).
17448         * dce.c: Include except.h and delete redundant vector definitions.
17449         (deletable_insn_p): Return false for non-call insns that can throw
17450         if DF is running.
17451
17452 2009-04-30  Steven Bosscher  <steven@gcc.gnu.org>
17453
17454         * gcse.c (ae_gen): Remove.
17455         (can_assign_to_reg_p): Rename to can_assign_to_reg_without_clobbers_p
17456         and make non-static function to make it available in store-motion.c.
17457         Update call sites with search-and-replace.
17458         (enumerate_ldsts, reg_set_info, reg_clear_last_set, store_ops_ok,
17459         extract_mentioned_regs, extract_mentioned_regs_helper,
17460         find_moveable_store, compute_store_table, load_kills_store, find_loads,
17461         store_killed_in_insn, store_killed_after, store_killed_before,
17462         build_store_vectors, insert_insn_start_basic_block, insert-store,
17463         remove_reachable_equiv_notes, replace_store_insn, delete_store,
17464         free_store_memory, one_store_motion_pass, gate_rtl_store_motion,
17465         execute_rtl_store_motion, pass_rtl_store_motion): Move to...
17466         * store-motion.c: ...new file.  Also copy data structures from gcse.c
17467         and clean up to remove parts not used by store motion.
17468         * rtl.h (can_assign_to_reg_without_clobbers_p): Add prototype.
17469         * Makefile.in (store-motion.o): New rule. Add to OBJS-common.
17470
17471 2009-04-30  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
17472
17473         PR target/38571
17474         * config/arm/arm.h (FUNCTION_BOUNDARY): Set to 16 for thumb
17475         when optimizing for size.
17476
17477 2009-04-30  Hans-Peter Nilsson  <hp@axis.com>
17478
17479         * gcse.c (gcse_constant_p): Fix typo in last change.
17480
17481 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
17482
17483         * plugin.c: Include plugin-version.h only if ENABLE_PLUGIN is defined.
17484
17485 2009-04-30  Andreas Krebbel  <krebbel1@de.ibm.com>
17486
17487         * gcse.c (gcse_constant_p): Make sure the constant is sharable.
17488
17489 2009-04-29  James E. Wilson  <wilson@codesourcery.com>
17490
17491         * config/mips/mips.c (mips_add_offset): Use gen_int_mode for
17492         CONST_HIGH_PART result.
17493
17494 2009-04-29  Anatoly Sokolov  <aesok@post.ru>
17495
17496         * config/avr/avr.c (initial_elimination_offset): Rename to
17497         avr_initial_elimination_offset.
17498         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p,
17499         change return type to bool.
17500         (avr_can_eliminate): New function.
17501         * config/avr/avr.h (CAN_ELIMINATE): Use avr_can_eliminate.
17502         (FRAME_POINTER_REQUIRED): Use avr_frame_pointer_required_p.
17503         (INITIAL_ELIMINATION_OFFSET): Use avr_initial_elimination_offset.
17504         * config/avr/avr-protos.h (initial_elimination_offset): Rename to
17505         avr_initial_elimination_offset.
17506         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p.
17507         (avr_initial_elimination_offset): Define.
17508
17509 2009-04-29  Eric Botcazou  <ebotcazou@adacore.com>
17510             Steven Bosscher  <steven@gcc.gnu.org>
17511
17512         PR rtl-optimization/39938
17513         * Makefile.in (cfgrtl.o): Add $(INSN_ATTR_H).
17514         * cfgrtl.c: Include insn-attr.h.
17515         (rest_of_pass_free_cfg): New function.
17516         (pass_free_cfg): Use rest_of_pass_free_cfg as execute function.
17517         * resource.c (init_resource_info): Remove call to df_analyze.
17518
17519 2009-04-29  Richard Guenther  <rguenther@suse.de>
17520
17521         PR target/39943
17522         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Only
17523         allow conversion to signed integers.
17524
17525 2009-04-29  Richard Guenther  <rguenther@suse.de>
17526
17527         * tree-cfg.c (verify_gimple_assign_binary): Allow vector
17528         shifts of floating point vectors if the shift amount is
17529         a constant multiple of the element size.
17530
17531 2009-04-29  Andreas Krebbel  <krebbel1@de.ibm.com>
17532             Michael Matz  <matz@suse.de>
17533
17534         PR middle-end/39927
17535         PR bootstrap/39929
17536         * tree-outof-ssa.c (emit_partition_copy): New function.
17537         (insert_partition_copy_on_edge, insert_rtx_to_part_on_edge,
17538         insert_part_to_rtx_on_edge): Perform the partition base var
17539         copy using emit_partition_copy.
17540         (insert_value_copy_on_edge): Convert constants to the right mode.
17541         (insert_rtx_to_part_on_edge): Add UNSIGNEDSRCP parameter.
17542         (elim_create): Pass the sign of the src to insert_rtx_to_part_on_edge.
17543
17544 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
17545
17546         * config/bfin/bfin.c (bfin_optimize_loop): If we need a scratch reg,
17547         scan backwards to try to find a constant to initialize it.
17548
17549         * config/bfin/bfin.c (bfin_optimize_loop): When looking for the last
17550         insn before the loop_end instruction, don't look past labels.
17551
17552 2009-04-29  Richard Guenther  <rguenther@suse.de>
17553
17554         PR middle-end/39937
17555         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not
17556         loose type conversions.
17557         (forward_propagate_addr_expr): Fix tuplification bug.  Remove
17558         stmts only if there are no uses of its definition.
17559
17560 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
17561
17562         * config/bfin/bfin.h (splitting_loops): Declare.
17563         * config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315):
17564         Reorder bit definitions to be ascending.
17565         (WA_LOAD_LCREGS, ENABLE_WA_LOAD_LCREGS): New macros.
17566         * config/bfin/bfin.c (splitting_loops): New variable.
17567         (bfin_cpus): Add WA_LOAD_LCREGS as needed.
17568         (struct loop_info): Remove members INIT and LOOP_INIT.
17569         (bfin_optimize_loop): Don't set them.  Reorder the code that generates
17570         the LSETUP sequence.  Allow LC to be loaded from any register, but
17571         also add a case to push/pop a PREG scratch if ENABLE_WA_LOAD_LCREGS.
17572         (bfin_reorg_loops): When done, split all BB_ENDs with splitting_loops
17573         set to 1.
17574         * config/bfin/bfin.md (loop_end splitter): Use splitting_loops instead
17575         of reload_completed.
17576
17577         From Jie Zhang:
17578         * config/bfin/bfin.md (movsi_insn): Refine constraints.
17579
17580 2009-04-29  Rafael Avila de Espindola  <espindola@google.com>
17581
17582         * Makefile.in (PLUGIN_VERSION_H): New.
17583         (OBJS-common): Remove plugin-version.o.
17584         (plugin.o): Depend on (PLUGIN_VERSION_H).
17585         (plugin-version.o): Remove.
17586         * configure: Regenerate
17587         * configure.ac: Create plugin-version.h.
17588         * gcc-plugin.h (plugin_gcc_version): Remove.
17589         (plugin_default_version_check): Change signature.
17590         * plugin-version.c: Remove.
17591         * plugin.c: Include plugin-version.h.
17592         (str_plugin_gcc_version_name): Remove.
17593         (try_init_one_plugin): Pass gcc version to plugin_init.
17594         (plugin_default_version_check): Both gcc and plugin versions are now
17595         arguments.
17596
17597 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
17598
17599         * config/bfin/bfin.c (bfin_optimize_loop): Unify handling of
17600         problematic last insns.  Test for TYPE_CALL rather than CALL_P.
17601         Remove special case testing for last insn of inner loops. Don't fail
17602         if the loop ends with a jump, emit an extra nop instead.
17603
17604         * config/bfin/bfin.c (bfin_register_move_cost): Test for subsets of
17605         DREGS rather than comparing directly.  Remove code that tries to
17606         account for latencies.
17607
17608 2009-04-29  Richard Guenther  <rguenther@suse.de>
17609
17610         PR tree-optimization/39941
17611         * tree-ssa-pre.c (eliminate): Schedule update-ssa after
17612         eliminating an indirect call.
17613
17614 2009-04-29  Richard Guenther  <rguenther@suse.de>
17615
17616         * tree-cfg.c (verify_types_in_gimple_reference): Add require_lvalue
17617         parameter.  Allow invariants as base if !require_lvalue.
17618         (verify_gimple_assign_single): Adjust.
17619
17620 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
17621
17622         * config/bfin/bfin.md (sp_or_sm, spm_string, spm_name): New macro.
17623         (ss<spm_name>hi3, ss<spm_name>hi3_parts, ss<spm_name>hi3_low_parts,
17624         ss<spm_name_hi3_high_parts): New patterns, replacing ssaddhi3,
17625         ssubhi3, ssaddhi3_parts and sssubhi3_parts.
17626         (flag_mulhi3_parts): Produce a HImode output rather than trying to set
17627         a VEC_SELECT.
17628         * config/bfin/bfin.c (bfin_expand_builtin,
17629         case BFIN_BUILTIN_CPLX_SQU): Adjust accordingly.
17630
17631 2009-04-28  Richard Guenther  <rguenther@suse.de>
17632
17633         * tree-vect-loop.c (get_initial_def_for_induction): Use
17634         correct types for pointer increment.
17635
17636 2009-04-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
17637
17638         * toplev.c (print_version): Update GMP version string calculation.
17639
17640 2009-04-28  Eric Botcazou  <ebotcazou@adacore.com>
17641
17642         PR rtl-optimization/39938
17643         * resource.c (init_resource_info): Add call to df_analyze.
17644
17645 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
17646
17647         * config/alpha/alpha.md (usegp): Cast the result of
17648         alpha_find_lo_sum_using_gp to enum attr_usegp.
17649         * config/alpha/alpha.c (override_options): Remove end-of-structure
17650         marker element from cpu_table.  Use array size of cpu_table to handle
17651         -mcpu and -mtune options.
17652         (tls_symbolic_operand_type): Change 0 to TLS_MODEL_NONE.
17653
17654 2009-04-28  Joseph Myers  <joseph@codesourcery.com>
17655
17656         * config.gcc (powerpc*-*-* | rs6000-*-*): Add
17657         rs6000/option-defaults.h to tm_file.  Support cpu_32, cpu_64,
17658         tune_32 and tune_64.
17659         * doc/install.texi (--with-cpu-32, --with-cpu-64): Document
17660         support on PowerPC.
17661         * config/rs6000/rs6000.h (OPTION_DEFAULT_SPECS): Move to ...
17662         * config/rs6000/option-defaults.h: ... here.  New file.
17663         (OPT_64, OPT_32): Define.
17664         (MASK_64BIT): Define to 0 if not already defined.
17665         (OPT_ARCH64, OPT_ARCH32): Define.
17666         (OPTION_DEFAULT_SPECS): Add entries for cpu_32, cpu_64, tune_32
17667         and tune_64.
17668
17669 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
17670
17671         * config/arm/arm.c (arm_override_options): Emit error on using
17672         fpa with AAPCS.
17673
17674 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
17675
17676         PR rtl-optimization/39914
17677         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
17678         registers for allocnos created from user-defined variables only
17679         when not optimizing.
17680
17681 2009-04-28  Richard Guenther  <rguenther@suse.de>
17682
17683         PR middle-end/39937
17684         * fold-const.c (fold_binary): Use distribute_real_division only
17685         on float types.
17686
17687 2009-04-28  Steve Ellcey  <sje@cup.hp.com>
17688
17689         * config.gcc (hppa*64*-*-hpux11*): Set use_gcc_stdint and
17690         add hpux-stdint.h to tm_file.
17691         (hppa[12]*-*-hpux11*): Ditto.
17692         (ia64*-*-hpux*): Ditto.
17693         * config/hpux-stdint.h: New.
17694         * config/ia64/hpux.h (TARGET_OS_CPP_BUILTINS): Set
17695         __STDC_EXT__ for all compiles.
17696         * config/pa/pa-hpux.h: Ditto.
17697         * config/pa/pa-hpux10.h: Ditto.
17698         * config/pa/pa-hpux11.h: Ditto.
17699
17700 2009-04-28  Catherine Moore  <clm@codesourcery.com>
17701
17702         * debug.h (set_name): Add comment.
17703
17704 2009-04-28  Andrew Pinski  <pinskia@gmail.com>
17705
17706         PR target/39929
17707         * config/darwin.c (machopic_gen_offset): Check
17708         currently_expanding_to_rtl if current_ir_type returns IR_GIMPLE.
17709         * config/arm/arm.c (require_pic_register): Likewise.
17710
17711 2009-04-28  Paolo Bonzini  <bonzini@gnu.org>
17712
17713         * config/m32c/m32c.c (TARGET_PROMOTE_FUNCTION_RETURN,
17714         m32c_promote_function_return, TARGET_PROMOTE_PROTOTYPES,
17715         m32c_promote_prototypes): Delete.
17716
17717 2009-04-28  Michael Matz  <matz@suse.de>
17718
17719         PR middle-end/39922
17720         * tree-outof-ssa.c (insert_value_copy_on_edge): Don't convert
17721         constants.
17722
17723 2009-04-28  Richard Guenther  <rguenther@suse.de>
17724
17725         * tree-vect-stmts.c (vect_get_vec_def_for_operand): Fix type error.
17726
17727 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
17728
17729         * config/arm/arm-cores.def: Add support for arm1156t2f-s.
17730         * doc/invoke.texi (ARM Options): Document support for arm1156t2f-s.
17731         * config/arm/arm-tune.md: Regenerate.
17732
17733 2009-04-28  Alexander Monakov  <amonakov@ispras.ru>
17734
17735         * sel-sched-ir.c (maybe_tidy_empty_bb): Do not attempt to delete a
17736         block if there are complex incoming edges.
17737         (sel_merge_blocks): Remove useless assert.
17738         (sel_redirect_edge_and_branch): Check that edge was redirected.
17739         * sel-sched-ir.h (_eligible_successor_edge_p): Remove assert.
17740         (sel_find_rgns): Delete declaration.
17741         * sel-sched.c (purge_empty_blocks): Attempt to remove first block of
17742         the region when it is not a preheader.
17743
17744 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
17745
17746         PR c/39323
17747         * config/alpha/elf.h (MAX_OFILE_ALIGNMENT): Sync with elfos.h
17748
17749 2009-04-28  Richard Guenther  <rguenther@suse.de>
17750
17751         * tree.h (SSA_NAME_VALUE): Remove.
17752         (struct tree_ssa_name): Remove value_handle member.
17753         * tree-vrp.c (execute_vrp): Initialize/free the value-handle
17754         array for jump threading.
17755         * tree-ssa-propagate.c (ssa_prop_init): Do not initialize
17756         SSA_NAME_VALUEs.
17757         * print-tree.c (print_node): Do not dump SSA_NAME_VALUEs.
17758         * tree-flow.h (threadedge_initialize_values): Declare.
17759         (threadedge_finalize_values): Likewise.
17760         * tree-ssa-threadedge.c (ssa_name_values): New global variable.
17761         (SSA_NAME_VALUE): Define.
17762         (threadedge_initialize_values): New function.
17763         (threadedge_finalize_values): Likewise.
17764         * tree-ssa-dom.c (ssa_name_values): New global variable.
17765         (SSA_NAME_VALUE): Define.
17766         (tree_ssa_dominator_optimize): Initialize/free the value-handle array.
17767
17768 2009-04-28  Ira Rosen  <irar@il.ibm.com>
17769
17770         * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks):
17771         Use REPORT_VECTORIZED_LOCATIONS instead
17772         REPORT_VECTORIZED_LOOPS.
17773         * tree-vectorizer.c (vect_verbosity_level): Make static.
17774         (vect_loop_location): Rename to vect_location.
17775         (vect_set_verbosity_level): Update comment.
17776         (vect_set_dump_settings): Use REPORT_VECTORIZED_LOCATIONS
17777         and vect_location.
17778         (vectorize_loops): Fix comment. Use REPORT_VECTORIZED_LOCATIONS
17779         and vect_location. Use REPORT_UNVECTORIZED_LOCATIONS
17780         instead REPORT_UNVECTORIZED_LOOPS.
17781         * tree-vectorizer.h (enum vect_def_type): Rename vect_invariant_def
17782         and vect_loop_def to vect_external_def and vect_internal_def.
17783         (enum verbosity_levels): Rename REPORT_VECTORIZED_LOOPS
17784         and REPORT_UNVECTORIZED_LOOPS to REPORT_VECTORIZED_LOCATIONS and
17785         REPORT_UNVECTORIZED_LOCATIONS.
17786         (enum vect_relevant): Update comment. Rename vect_unused_in_loop
17787         and vect_used_in_loop and to vect_unused_in_scope and
17788         vect_used_in_scope.
17789         (STMT_VINFO_RELEVANT_P): Use vect_unused_in_scope.
17790         (vect_verbosity_level): Remove declaration.
17791         (vect_analyze_operations): Likewise.
17792         (vect_analyze_stmt): Declare.
17793         * tree-vect-loop.c (vect_determine_vectorization_factor): Use
17794         REPORT_UNVECTORIZED_LOCATIONS.
17795         (vect_get_loop_niters): Fix indentation.
17796         (vect_analyze_loop_form): Use REPORT_UNVECTORIZED_LOCATIONS.
17797         (vect_analyze_loop_operations): New function.
17798         (vect_analyze_loop): Call vect_analyze_loop_operations instead of
17799         vect_analyze_operations.
17800         (vect_is_simple_reduction): Use new names.
17801         (vectorizable_live_operation, vect_transform_loop): Likewise.
17802         * tree-vect-data-refs.c (vect_check_interleaving): Add a return value
17803         to specify whether the data references can be a part of interleaving
17804         chain.
17805         (vect_analyze_data_ref_dependence): Use new names.
17806         (vect_analyze_data_refs_alignment, vect_analyze_data_refs): Likewise.
17807         (vect_create_addr_base_for_vector_ref): Remove redundant code.
17808         * tree-vect-patterns.c (widened_name_p): Use new names.
17809         (vect_recog_dot_prod_pattern): Likewise.
17810         * tree-vect-stmts.c (vect_stmt_relevant_p): Use new names.
17811         (process_use, vect_mark_stmts_to_be_vectorized,
17812         vect_model_simple_cost, vect_model_store_cost,
17813         vect_get_vec_def_for_operand, vect_get_vec_def_for_stmt_copy,
17814         vectorizable_call, vectorizable_conversion, vectorizable_assignment,
17815         vectorizable_operation, vectorizable_type_demotion,
17816         vectorizable_type_promotion, vectorizable_store, vectorizable_load,
17817         vectorizable_condition): Likewise.
17818         (vect_analyze_operations): Split into vect_analyze_loop_operations
17819         and ...
17820         (vect_analyze_stmt): ... new function.
17821         (new_stmt_vec_info): Use new names.
17822         (vect_is_simple_use): Use new names and fix comment.
17823         * tree-vect-slp.c (vect_get_and_check_slp_defs): Use new names.
17824         (vect_build_slp_tree, vect_analyze_slp, vect_schedule_slp): Likewise.
17825
17826 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
17827
17828         PR target/39911
17829         * config/i386/i386.c (print_operand) ['Z']: Handle floating point
17830         and integer modes for x87 operands.  Do not ICE for unsupported size,
17831         generate error instead.  Generate error for unsupported operand types.
17832         ['z']: Do not handle HImode memory operands specially.  Warning
17833         for floating-point operands.  Fallthru to 'Z' for unsupported operand
17834         types.  Do not ICE for unsupported size, generate error instead.
17835         (output_387_binary_op): Use %Z to output operands.
17836         (output_fp_compare): Ditto.
17837         (output_387_reg_move): Ditto.
17838
17839 2009-04-28  Ben Elliston  <bje@au.ibm.com>
17840
17841         PR c++/35652
17842         Revert:
17843
17844         2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
17845
17846         * builtins.c (c_strlen): Do not warn here.
17847         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
17848         * c-common.c (pointer_int_sum): Take an explicit location.
17849         Warn about offsets out of bounds.
17850         * c-common.h (pointer_int_sum): Adjust declaration.
17851
17852 2009-04-27  Ian Lance Taylor  <iant@google.com>
17853
17854         * collect2.c (is_ctor_dtor): Change type of ret field in struct
17855         names to symkind.
17856         * dce.c (run_fast_df_dce): Change type of old_flags to int.
17857         * df-core.c (df_set_flags): Change return type to int.  Change
17858         type of old_flags to int.
17859         (df_clear_flags): Likewise.
17860         * df-scan.c (df_def_record_1): Change 0 to VOIDmode.
17861         (df_get_conditional_uses): Likewise.
17862         * df.h (df_set_flags, df_clear_flags): Update declarations.
17863         * dwarf2out.c (struct indirect_string_node): Change type of form
17864         field to enum dwarf_form.
17865         (AT_string_form): Change return type to enum dwarf_form.
17866         * fixed-value.c (fixed_compare): Add cast to enum type.
17867         * fwprop.c (update_df): Change 0 to VOIDmode.
17868         * gensupport.c: Change 0 to UNKNOWN.
17869         * gimple.h (gimple_cond_code): Add cast to enum type.
17870         * haifa-sched.c (reemit_notes): Add cast to enum type.
17871         * hooks.c (hook_int_void_no_regs): Remove function.
17872         * hooks.h (hook_int_void_no_regs): Remove declaration.
17873         * optabs.c (expand_widen_pattern_expr): Change 0 to VOIDmode.
17874         * predict.c (combine_predictions_for_insn): Add casts to enum type.
17875         * real.c (real_arithmetic): Add cast to enum type.
17876         (real_compare): Likewise.
17877         * target.h (struct gcc_target): Change return type of
17878         branch_target_register_class to enum reg_class.
17879         * target-def.h (TARGET_BRANCH_TARGET_REGISTER_CLASS): Define as
17880         default_branch_target_register_class.
17881         * targhooks.c (default_branch_target_register_class): New function.
17882         * targhooks.h (default_branch_target_register_class): Declare.
17883         * tree-data-ref.c (print_direction_vector): Add cast to enum type.
17884         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Remove
17885         cast to int.
17886         * tree-vect-loop.c (vect_create_epilog_for_reduction): Change 0 to
17887         ERROR_MARK.
17888         * tree-vect-slp.c (vect_build_slp_tree): Change 0 to
17889         vect_uninitialized_def.  Change 0 to ERROR_MARK.
17890         * tree-vect-stmts.c (supportable_widening_operation): Don't
17891         initialize icode1 and icode2.
17892         * tree-vectorizer.h (enum vect_def_type): Add vect_uninitialized_def.
17893         * config/sol2-c.c (cmn_err_length_specs): Change 0 to FMT_LEN_none
17894         and to STD_C89.
17895         (cmn_err_flag_specs): Change 0 to STD_C89.
17896         (cmn_err_char_table): Likewise.
17897         * config/arm/arm.c (get_arm_condition_code): Change type of code
17898         to enum arm_cond_code.
17899         (IWMMXT_BUILTIN): Change 0 to UNKNOWN.
17900         (IWMMXT_BUILTIN2): Likewise.
17901         (neon_builtin_type_bits): Don't define typedef.
17902         (neon_builtin_datum): Change type of bits field to int.
17903         (arm_expand_neon_args): Add cast to enum type.
17904         * config/ia64/ia64.c (tls_symbolic_operand_type): Change 0 to
17905         TLS_MODEL_NONE.
17906         * config/i386/i386.c (bdesc_multi_arg): Change 0 to UNKNOWN.  Add
17907         casts to enum type.
17908         * config/mips/mips.c (LOONGSON_BUILTIN_ALIAS): Change 0 to
17909         MIPS_FP_COND_f.
17910         * config/mips/mips.md (jal_macro): Return enum constant.
17911         (single_insn): Likewise.
17912         * config/rs6000/rs6000.c (bdesc_altivec_preds): Change 0 to
17913         CODE_FOR_nothing.
17914         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
17915         casts to enum type.
17916         * config/s390/s390.c (s390_tune_flags): Change type to int.
17917         (s390_arch_flags): Likewise.
17918         (s390_handle_arch_option): Change flags field of struct pta to int.
17919         * config/s390/s390.h (s390_tune_flags): Update declaration.
17920         (s390_arch_flags): Likewise.
17921         * config/sh/sh.c (prepare_move_operands): Compare
17922         tls_symbolic_operand result with enum constant.
17923         (sh_reorg): Change PUT_MODE to PUT_REG_NOTE_KIND.
17924         (sh_expand_prologue): Add cast to enum type.
17925         (sh_expand_epilogue): Likewise.
17926         (tls_symbolic_operand): Change return type to enum tls_model.
17927         (fpscr_set_from_mem): Add cast to enum type.
17928         (legitimize_pic_address): Compare tls_symbolic_operand result with
17929         enum constant.
17930         (sh_target_reg_class): Change return type to enum reg_class.
17931         * config/sh/sh.h (OVERRIDE_OPTIONS): Change CPU_xxx to
17932         PROCESSOR_xxx.
17933         * config/sh/sh-protos.h (tls_symbolic_operand): Update declaration.
17934         * config/sparc/sparc.c (sparc_override_options): Add cast to enum type.
17935         * config/sparc/sparc.md (empty_delay_slot): Return enum constant.
17936         (pic, calls_alloca, calls_eh_return, leaf_function): Likewise.
17937         (delayed_branch, tls_call_delay): Likewise.
17938         (eligible_for_sibcall_delay): Likewise.
17939         (eligible_for_return_delay): Likewise.
17940         * config/spu/spu.c (expand_builtin_args): Add cast to enum type.
17941         (spu_expand_builtin_1): Likewise.
17942
17943         * c-typeck.c (convert_for_assignment): Issue -Wc++-compat warnings
17944         for all types of conversions.
17945         (output_init_element): Issue -Wc++-compat warning if needed when
17946         initializing a bitfield with enum type.
17947         * c-parser.c (c_parser_expression): Set original_type to
17948         original_type of right hand operand of comma operator.
17949
17950 2009-04-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
17951
17952         * doc/c-tree.texi (Types, Functions, Expression trees): Fix
17953         grammar nits.
17954         * doc/cfg.texi (Maintaining the CFG, Liveness information): Likewise.
17955         * doc/cpp.texi (Standard Predefined Macros)
17956         (Implementation-defined behavior): Likewise.
17957         * doc/extend.texi (Function Attributes, Type Attributes): Likewise.
17958         * doc/gimple.texi (GIMPLE Exception Handling)
17959         (@code{GIMPLE_ASSIGN}): Likewise.
17960         * doc/install.texi (Prerequisites, Configuration, Specific): Likewise.
17961         * doc/invoke.texi (Warning Options, Optimize Options)
17962         (AVR Options, Darwin Options): Likewise.
17963         (Optimize Options): Reformulate -fwhole-program description.
17964         * doc/loop.texi (Lambda): Likewise.
17965         * doc/md.texi (Output Template, Define Constraints)
17966         (Standard Names, Insn Splitting): Likewise.
17967         * doc/options.texi (Option properties): Likewise.
17968         * doc/passes.texi (Tree-SSA passes): Likewise.
17969         * doc/rtl.texi (Side Effects, Assembler, Insns): Likewise.
17970         * doc/tm.texi (Register Classes, Old Constraints, Scalar Return)
17971         (File Names and DBX): Likewise.
17972         * doc/trouble.texi (Incompatibilities): Likewise.
17973
17974 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
17975
17976         * spu.c (spu_machine_dependent_reorg): Make sure branch label on hint
17977         instruction is correct.
17978
17979 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
17980
17981         Allow non-constant arguments to conversion intrinsics.
17982         * spu-protos.h (exp2_immediate_p, spu_gen_exp2): Declare.
17983         * predicates.md (spu_inv_exp2_operand, spu_exp2_operand): New.
17984         * spu.c (print_operand): Handle 'v' and 'w'.
17985         (exp2_immediate_p, spu_gen_exp2): Define.
17986         * spu-builtins.def (spu_convts, spu_convtu, spu_convtf_0,
17987         spu_convtf_1): Update parameter descriptions.
17988         * spu-builtins.md (spu_csflt, spu_cuflt, spu_cflts, spu_cfltu): Update.
17989         * constraints.md ('v', 'w'): New.
17990         * spu.md (UNSPEC_CSFLT, UNSPEC_CFLTS, UNSPEC_CUFLT, UNSPEC_CFLTU):
17991         Remove.
17992         (i2f, I2F): New define_mode_attr.
17993         (floatsisf2, floatv4siv4sf2, fix_truncsfsi2, fix_truncv4sfv4si2,
17994         floatunssisf2, floatunsv4siv4sf2, fixuns_truncsfsi2,
17995         fixuns_truncv4sfv4si2):  Update to use mode attribute.
17996         (float<mode><i2f>2_mul, float<mode><i2f>2_div,
17997         fix_trunc<mode><f2i>2_mul, floatuns<mode><i2f>2_mul,
17998         floatuns<mode><i2f>2_div, fixuns_trunc<mode><f2i>2_mul): New
17999         patterns for combine.
18000
18001 2009-04-27  Steven Bosscher  <steven@gcc.gnu.org>
18002
18003         * dbgcnt.def (cprop1, cprop2, gcse, jump_bypass): Remove
18004         (cprop, hoist, pre, store_motion): New debug counters.
18005         * tree-pass.h (pass_tracer): Move to list of gimple passes, it
18006         is not an RTL pass anymore.
18007         (pass_profiling): Remove extern decl for pass removed in 2005.
18008         (pass_gcse, pass_jump_bypass): Remove.
18009         * final.c (rest_of_clean_state): Set flag_rerun_cse_after_global_opts
18010         to 0 for clean state.
18011         * toplev.h (flag_rerun_cse_after_global_opts): Add extern declaration.
18012         * cse.c (gate_handle_cse_after_global_opts,
18013         rest_of_handle_cse_after_global_opts): New functions.
18014         (pass_cse_after_global_opts): New pass, does local CSE.
18015         * timevar.def (TV_GCSE, TV_CPROP1, TV_CPROP2, TV_BYPASS): Remove.
18016         (TV_CPROP): New timevar.
18017         * gcse.c (flag_rerun_cse_after_global_opts): New global variable.
18018         (run_jump_opt_after_gcse, max_gcse_regno): Remove global vars.
18019         (gcse_main, recompute_all_luids): Remove.
18020         (compute_hash_table_work): Call max_reg_num instead of reading
18021         max_gcse_regno.
18022         (cprop_jump): Don't set run_jump_opt_after_gcse.
18023         (constprop_register): Always allow to alter jumps.
18024         (cprop_insn): Likewise.
18025         (do_local_cprop): Likewise.
18026         (local_cprop_pass): Likewise.  Return non-zero if something changed.
18027         (cprop): Remove function, fold interesting bits into one_cprop_pass.
18028         (find_implicit_sets): Add note about missed optimization opportunity.
18029         (one_cprop_pass): Rewrite to be "the" CPROP pass, called from the
18030         pass_rtl_cprop execute function.
18031         Don't bother tracking the pass number, each pass gets its own dumpfile
18032         now anyway.
18033         Always allow to alter jumpsand bypass jumps.
18034         (bypass_block): Don't ignore regno >= max_gcse_regno, find_bypass_set
18035         will just find no suitable set.
18036         (pre_edge_insert): Fix dumping, this function is for PRE only.
18037         (one_pre_gcse_pass): Rewrite to be "the" PRE pass, called from the
18038         pass_rtl_pre execute function.
18039         (hoist_code): Return non-zero if something changed.  Keep track of
18040         substitutions and insertions for statistics gathering similar to PRE.
18041         (one_code_hoisting_pass): Rewrite to be "the" code hoisting pass,
18042         called from the pass_rtl_hoist execute function.  Show pass statistics.
18043         (compute_store_table): Use max_reg_num directly instead of using the
18044         formerly global max_gcse_regno.
18045         (build_store_vectors): Likewise.
18046         (replace_store_insn): Fix dumping.
18047         (store_motion): Rename to ...
18048         (one_store_motion_pass): ... this.  Rewrite to be "the" STORE_MOTION
18049         pass, called from the pass_rtl_store_motion execute function.  Keep
18050         track of substitutions and insertions for statistics gathering similar
18051         to PRE.
18052         (bypass_jumps): Remove, fold interesting bits into ...
18053         (one_cprop_pass): ... this.  Rewrite to be "the" CPROP pass, called
18054         from the pass_rtl_cprop execute function.
18055         (gate_handle_jump_bypass, rest_of_handle_jump_bypass,
18056         pass_jump_bypass): Remove.
18057         (gate_handle_gcse, rest_of_handle_gcse): Remove.
18058         (gate_rtl_cprop, execute_rtl_cprop, pass_rtl_cprop): New.
18059         (gate_rtl_pre, execute_rtl_pre, pass_rtl_pre): New.
18060         (gate_rtl_hoist, execute_rtl_hoist, pass_rtl_hoist): New.
18061         (gate_rtl_store_motion, execute_rtl_store_motion,
18062         pass_rtl_store_motion): New.
18063         * common.opt: Remove flag_cse_skip_blocks, adjust documentation to
18064         make it clear that -fcse-skip-blocks is a no-op for backward compat.
18065         * passes.c (init_optimization_passes): Remove pass_gcse and
18066         pass_jump_bypass.  Schedule cprop, pre, hoist, cprop, store_motion,
18067         and cse_after_global_opts in place of pass_gcse.  Schedule cprop
18068         instead of pass_jump_bypass.
18069
18070 2009-04-27  Richard Guenther  <rguenther@suse.de>
18071
18072         PR middle-end/39928
18073         * gimplify.c (gimplify_expr): If we are required to create
18074         a temporary make sure it ends up as register.
18075
18076 2009-04-27  H.J. Lu  <hongjiu.lu@intel.com>
18077
18078         PR target/39903
18079         * config/i386/i386.c (construct_container): Don't call
18080         gen_reg_or_parallel with BLKmode on X86_64_SSE_CLASS,
18081         X86_64_SSESF_CLASS and X86_64_SSEDF_CLASS.
18082
18083 2009-04-27  Michael Matz  <matz@suse.de>
18084
18085         * ssaexpand.h (struct ssaexpand): Member 'values' is a bitmap.
18086         (get_gimple_for_ssa_name): Adjust, lookup using SSA_NAME_DEF_STMT.
18087         * tree-ssa-live.h: (find_replaceable_exprs): Return a bitmap.
18088         (dump_replaceable_exprs): Take a bitmap.
18089         * cfgexpand.c (gimple_cond_pred_to_tree): Handle bitmap instead of
18090         array.
18091         (expand_gimple_basic_block): Likewise.
18092         * tree-ssa-ter.c (struct temp_expr_table_d): Make
18093         replaceable_expressions member a bitmap.
18094         (free_temp_expr_table): Pass back and deal with bitmap, not gimple*.
18095         (mark_replaceable): Likewise.
18096         (find_replaceable_in_bb, dump_replaceable_exprs): Likewise.
18097         * tree-outof-ssa.c (remove_ssa_form): 'values' is a bitmap.
18098
18099 2009-04-27  Richard Guenther  <rguenther@suse.de>
18100
18101         * tree-cfg.c (remove_useless_stmts): Verify stmts afterwards.
18102         (verify_stmts): Dispatch to gimple/type verification code.
18103         * tree-inline.c (remap_gimple_op_r): Work around C++ FE
18104         issue with call argument types.
18105
18106 2009-04-27  Michael Matz  <matz@suse.de>
18107
18108         * tree-into-ssa.c (regs_to_rename, mem_syms_to_rename): Remove.
18109         (init_update_ssa, delete_update_ssa, update_ssa): Remove references
18110         to above.
18111
18112 2009-04-27  Richard Sandiford  <rdsandiford@googlemail.com>
18113             Eric Botcazou  <ebotcazou@adacore.com>
18114
18115         * resource.c (find_basic_block): Use BLOCK_FOR_INSN to look up
18116         a label's basic block.
18117         (mark_target_live_regs): Tidy and rework obsolete comments.
18118         Change back DF problem to LIVE.  If a label starts a basic block,
18119         assume that all registers that used to be live then still are.
18120         (init_resource_info): If a label starts a basic block, set its
18121         BLOCK_FOR_INSN accordingly.
18122         (fini_resource_info): Undo the setting of BLOCK_FOR_INSN.
18123
18124 2009-04-27  Richard Guenther  <rguenther@suse.de>
18125
18126         * tree-flow-inline.h (function_ann): Remove.
18127         (get_function_ann): Likewise.
18128         * tree-dfa.c (create_function_ann): Remove.
18129         * tree-flow.h (struct static_var_ann_d): Remove.
18130         (struct function_ann_d): Likewise.
18131         (union tree_ann_d): Remove fdecl member.
18132         (function_ann_t): Remove.
18133         (function_ann, get_function_ann, create_function_ann): Remove
18134         declarations.
18135
18136 2009-04-27  Uros Bizjak  <ubizjak@gmail.com>
18137
18138         * config/alpha/alpha.c (code_for_builtin): Declare as enum insn_code.
18139
18140 2009-04-27  Jan Hubicka  <jh@suse.cz>
18141
18142         * ipa-pure-const.c (struct funct_state_d): New fields
18143         state_previously_known, looping_previously_known; remove
18144         state_set_in_source.
18145         (analyze_function): Use new fields.
18146         (propagate): Avoid assumption that state_set_in_source imply
18147         nonlooping.
18148
18149         * tree-ssa-loop-niter.c (finite_loop_p): New function.
18150         * tree-ssa-loop-ivcanon.c (empty_loop_p): Use it.
18151         * cfgloop.h (finite_loop_p): Declare.
18152
18153 2009-04-26  Michael Matz  <matz@suse.de>
18154
18155         * tree-flow.h (tree_ann_common_d): Remove aux and value_handle members.
18156
18157 2009-04-26  Michael Matz  <matz@suse.de>
18158
18159         * tree-pass.h (pass_del_ssa, pass_mark_used_blocks,
18160         pass_free_cfg_annotations, pass_free_datastructures): Remove decls.
18161         * gimple-low.c (mark_blocks_with_used_vars, mark_used_blocks,
18162         pass_mark_used_blocks): Remove.
18163         * tree-optimize.c (pass_free_datastructures,
18164         execute_free_cfg_annotations, pass_free_cfg_annotations): Remove.
18165         * passes.c (init_optimization_passes): Don't call
18166         pass_mark_used_blocks, remove dead code.
18167
18168 2009-04-26  H.J. Lu  <hongjiu.lu@intel.com>
18169
18170         * tree-outof-ssa.c (rewrite_trees): Add ATTRIBUTE_UNUSED.
18171         * tree-ssa-live.h (register_ssa_partition): Likewise.
18172
18173 2009-04-26  Michael Matz  <matz@suse.de>
18174
18175         Expand from SSA.
18176         * builtins.c (fold_builtin_next_arg): Handle SSA names.
18177         * tree-ssa-copyrename.c (rename_ssa_copies): Use ssa_name() directly.
18178         * tree-ssa-coalesce.c (create_outofssa_var_map): Mark only useful
18179         SSA names.
18180         (compare_pairs): Swap cost comparison.
18181         (coalesce_ssa_name): Don't use change_partition_var.
18182         * tree-nrv.c (struct nrv_data): Add modified member.
18183         (finalize_nrv_r): Set it.
18184         (tree_nrv): Use it to update statements.
18185         (pass_nrv): Require PROP_ssa.
18186         * tree-mudflap.c (mf_decl_cache_locals,
18187         mf_build_check_statement_for): Use make_rename_temp.
18188         (pass_mudflap_2): Require PROP_ssa, run ssa update at finish.
18189         * alias.c (find_base_decl): Handle SSA names.
18190         * emit-rtl (set_reg_attrs_for_parm): Make non-static.
18191         (component_ref_for_mem_expr): Don't leak SSA names into RTL.
18192         * rtl.h (set_reg_attrs_for_parm): Declare.
18193         * tree-optimize.c (pass_cleanup_cfg_post_optimizing): Rename
18194         to "optimized", remove unused locals at finish.
18195         (execute_free_datastructures): Make global, call
18196         delete_tree_cfg_annotations.
18197         (execute_free_cfg_annotations): Don't call
18198         delete_tree_cfg_annotations.
18199
18200         * ssaexpand.h: New file.
18201         * expr.c (toplevel): Include ssaexpand.h.
18202         (expand_assignment): Handle SSA names the same as register variables.
18203         (expand_expr_real_1): Expand SSA names.
18204         * cfgexpand.c (toplevel): Include ssaexpand.h.
18205         (SA): New global variable.
18206         (gimple_cond_pred_to_tree): Fold TERed comparisons into predicates.
18207         (SSAVAR): New macro.
18208         (set_rtl): New helper function.
18209         (add_stack_var): Deal with SSA names, use set_rtl.
18210         (expand_one_stack_var_at): Likewise.
18211         (expand_one_stack_var): Deal with SSA names.
18212         (stack_var_size_cmp): Use code (SSA_NAME / DECL) as tie breaker
18213         before unique numbers.
18214         (expand_stack_vars): Use set_rtl.
18215         (expand_one_var): Accept SSA names, add asserts for them, feed them
18216         to above subroutines.
18217         (expand_used_vars): Expand all partitions (without default defs),
18218         then only the local decls (ignoring those expanded already).
18219         (expand_gimple_cond): Remove edges when jumpif() expands an
18220         unconditional jump.
18221         (expand_gimple_basic_block): Don't clear EDGE_EXECUTABLE here,
18222         or remove abnormal edges.  Ignore insns setting the LHS of a TERed
18223         SSA name.
18224         (gimple_expand_cfg): Call into rewrite_out_of_ssa, initialize
18225         members of SA; deal with PARM_DECL partitions here; expand
18226         all PHI nodes, free tree datastructures and SA.  Commit instructions
18227         on edges, clear EDGE_EXECUTABLE and remove abnormal edges here.
18228         (pass_expand): Require and destroy PROP_ssa, verify SSA form, flow
18229         info and statements at start, collect garbage at finish.
18230         * tree-ssa-live.h (struct _var_map): Remove partition_to_var member.
18231         (VAR_ANN_PARTITION) Remove.
18232         (change_partition_var): Don't declare.
18233         (partition_to_var): Always return SSA names.
18234         (var_to_partition): Only accept SSA names.
18235         (register_ssa_partition): Only check argument.
18236         * tree-ssa-live.c (init_var_map): Don't allocate partition_to_var
18237         member.
18238         (delete_var_map): Don't free it.
18239         (var_union): Only accept SSA names, simplify.
18240         (partition_view_init): Mark only useful SSA names as used.
18241         (partition_view_fini): Only deal with SSA names.
18242         (change_partition_var): Remove.
18243         (dump_var_map): Use ssa_name instead of partition_to_var member.
18244         * tree-ssa.c (delete_tree_ssa): Don't remove PHI nodes on RTL
18245         basic blocks.
18246         * tree-outof-ssa.c (toplevel): Include ssaexpand.h and expr.h.
18247         (struct _elim_graph): New member const_dests; nodes member vector of
18248         ints.
18249         (set_location_for_edge): New static helper.
18250         (create_temp): Remove.
18251         (insert_partition_copy_on_edge, insert_part_to_rtx_on_edge,
18252         insert_value_copy_on_edge, insert_rtx_to_part_on_edge): New functions.
18253         (new_elim_graph): Allocate const_dests member.
18254         (clean_elim_graph): Truncate const_dests member.
18255         (delete_elim_graph): Free const_dests member.
18256         (elim_graph_size): Adapt to new type of nodes member.
18257         (elim_graph_add_node): Likewise.
18258         (eliminate_name): Likewise.
18259         (eliminate_build): Don't take basic block argument, deal only with
18260         partition numbers, not variables.
18261         (get_temp_reg): New static helper.
18262         (elim_create): Use it, deal with RTL temporaries instead of trees.
18263         (eliminate_phi): Adjust all calls to new signature.
18264         (assign_vars, replace_use_variable, replace_def_variable): Remove.
18265         (rewrite_trees): Only do checking.
18266         (edge_leader, stmt_list, leader_has_match, leader_match): Remove.
18267         (same_stmt_list_p, identical_copies_p, identical_stmt_lists_p,
18268         init_analyze_edges_for_bb, fini_analyze_edges_for_bb,
18269         contains_tree_r, MAX_STMTS_IN_LATCH,
18270         process_single_block_loop_latch, analyze_edges_for_bb,
18271         perform_edge_inserts): Remove.
18272         (expand_phi_nodes): New global function.
18273         (remove_ssa_form): Take ssaexpand parameter.  Don't call removed
18274         functions, initialize new parameter, remember partitions having a
18275         default def.
18276         (finish_out_of_ssa): New global function.
18277         (rewrite_out_of_ssa): Make global.  Adjust call to remove_ssa_form,
18278         don't reset in_ssa_p here, don't disable TER when mudflap.
18279         (pass_del_ssa): Remove.
18280         * tree-flow.h (struct var_ann_d): Remove out_of_ssa_tag and
18281         partition members.
18282         (execute_free_datastructures): Declare.
18283         * Makefile.in (SSAEXPAND_H): New variable.
18284         (tree-outof-ssa.o, expr.o, cfgexpand.o): Depend on SSAEXPAND_H.
18285         * basic-block.h (commit_one_edge_insertion): Declare.
18286         * passes.c (init_optimization_passes): Move pass_nrv and
18287         pass_mudflap2 before pass_cleanup_cfg_post_optimizing, remove
18288         pass_del_ssa, pass_free_datastructures, pass_free_cfg_annotations.
18289         * cfgrtl.c (commit_one_edge_insertion): Make global, don't declare.
18290         (redirect_branch_edge): Deal with super block when expanding, split
18291         out jump patching itself into ...
18292         (patch_jump_insn): ... here, new static helper.
18293
18294 2009-04-26  Michael Matz  <matz@suse.de>
18295
18296         * tree-ssa-copyrename.c (rename_ssa_copies): Don't iterate
18297         beyond num_ssa_names.
18298         * tree-ssa-ter.c (free_temp_expr_table): Likewise.
18299         * tree-ssa-coalesce.c (create_outofssa_var_map): Likewise.
18300
18301 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
18302
18303         PR inline-asm/39543
18304         * fwprop.c (forward_propagate_asm): New function.
18305         (forward_propagate_and_simplify): Propagate also into __asm, if it
18306         doesn't increase the number of referenced registers.
18307
18308         PR c/39889
18309         * stmt.c (warn_if_unused_value): Look through NON_LVALUE_EXPR.
18310
18311 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
18312
18313         * tree-nested.c (get_nonlocal_vla_type): If not optimizing, call
18314         note_nonlocal_vla_type for nonlocal VLAs.
18315         (note_nonlocal_vla_type, note_nonlocal_block_vlas,
18316         contains_remapped_vars, remap_vla_decls): New functions.
18317         (convert_nonlocal_reference_stmt): If not optimizing, call
18318         note_nonlocal_block_vlas on GIMPLE_BIND block vars.
18319         (nesting_copy_decl): Return {VAR,PARM,RESULT}_DECL unmodified
18320         if it wasn't found in var_map.
18321         (finalize_nesting_tree_1): Call remap_vla_decls.  If outermost
18322         GIMPLE_BIND doesn't have gimple_bind_block, chain debug_var_chain
18323         to BLOCK_VARS (DECL_INITIAL (root->context)) instead of calling
18324         declare_vars.
18325         * gimplify.c (nonlocal_vlas): New variable.
18326         (gimplify_var_or_parm_decl): Add debug VAR_DECLs for non-local
18327         referenced VLAs.
18328         (gimplify_body): Create and destroy nonlocal_vlas.
18329
18330         * dwarf2out.c (loc_descr_plus_const): New function.
18331         (build_cfa_aligned_loc, tls_mem_loc_descriptor,
18332         mem_loc_descriptor, loc_descriptor_from_tree_1,
18333         descr_info_loc, gen_variable_die): Use it.
18334
18335         * tree.h (DECL_BY_REFERENCE): Note that it is also valid for
18336         !TREE_STATIC VAR_DECLs.
18337         * dwarf2out.c (loc_by_reference, gen_decl_die): Handle
18338         DECL_BY_REFERENCE on !TREE_STATIC VAR_DECLs.
18339         (gen_variable_die): Likewise.  Don't look at TREE_PRIVATE if
18340         DECL_BY_REFERENCE is valid.
18341         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Don't look at TREE_PRIVATE
18342         for PARM_DECLs, RESULT_DECLs or !TREE_STATIC VAR_DECLs.
18343         * tree-nested.c (get_nonlocal_debug_decl, get_local_debug_decl):
18344         Copy DECL_BY_REFERENCE.
18345         (struct nesting_copy_body_data): New type.
18346         (nesting_copy_decl): New function.
18347         (finalize_nesting_tree_1): Remap types of debug_var_chain variables,
18348         if they have variable length.
18349
18350 2009-04-26  Michael Matz  <matz@suse.de>
18351
18352         * tree-sra.c (sra_build_assignment): Don't use into_ssa mode,
18353         mark new temporaries for renaming.
18354
18355 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
18356
18357         PR c/39581
18358         * c-decl.c (global_bindings_p): Return negative value.
18359         (c_variable_size): New.  Based on variable_size from
18360         stor-layout.c.
18361         (grokdeclarator): Call c_variable_size not variable_size.
18362
18363 2009-04-26  Uros Bizjak  <ubizjak@gmail.com>
18364
18365         * config/i386/i386.c (print_operand) ['z']: Fix typo.
18366
18367 2009-04-26  Kai Tietz  <kai.tietz@onevision.com>
18368
18369         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR):
18370         Redefine it to just use mingw/include.
18371         (ASM_SPEC): Rules for -m32 and -m64.
18372         (LINK_SPEC): Use Likewise.
18373         (SPEC_32): New define.
18374         (SPEC_64): Likewise.
18375         (SUB_LINK_SPEC): Likewise.
18376         (MULTILIB_DEFAULTS): New define.
18377         * config/i386/t-mingw-w64 (MULTILIB_OPTIONS):
18378         Add multilib options.
18379         (MULTILIB_DIRNAMES): Likewise.
18380         (MULTILIB_OSDIRNAMES): Likewise.
18381         (LIBGCC): Likewise.
18382         (INSTALL_LIBGCC): Likewise.
18383
18384 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
18385
18386         PR c/39556
18387         * c-tree.h (enum c_inline_static_type): New.
18388         (record_inline_static): Declare.
18389         * c-decl.c (struct c_inline_static, c_inline_statics,
18390         record_inline_static, check_inline_statics): New.
18391         (pop_file_scope): Call check_inline_statics.
18392         (start_decl): Call record_inline_static instead of pedwarning
18393         directly for static in inline function.
18394         * c-typeck.c (build_external_ref): Call record_inline_static
18395         instead of pedwarning directly for static referenced in inline
18396         function.
18397
18398 2009-04-26  Steven Bosscher  <steven@gcc.gnu.org>
18399
18400         * df-scan.c (df_insn_rescan): Salvage insn's LUID if the insn is
18401         not new but only being rescanned.
18402         * gcse.c (uid_cuid, max_uid, INSN_CUID, max_cuid, struct reg_set,
18403         reg_set_table, REG_SET_TABLE_SLOP, reg_set_in_block,
18404         alloc_reg_set_mem, free_reg_set_mem, record_one_set,
18405         record_set_info, compute_set, grealloc): Remove.
18406         (recompute_all_luids): New function.
18407         (gcse_main): Don't compute sets, and don't do related memory
18408         allocations/free-ing.  If something changed before the end of the
18409         pass, update LUIDs using recompute_all_luids.
18410         (alloc_gcse_mem): Don't compute LUIDs.  Don't allocate reg_set memory.
18411         (free_gcse_mem): Don't free it either.
18412         (oprs_unchanged_p, load_killed_in_block, record_last_reg_set_info):
18413         Use the df insn LUIDs.
18414         (load_killed_in_block): Likewise.
18415         (compute_hash_table_work): Don't compute reg_set_in_block.
18416         (compute_transp): Use DF_REG_DEF_CHAINs.
18417         (local_cprop_pass): Don't use compute_sets and related functions.
18418         (one_cprop_pass, pre_gcse, one_pre_gcse_pass, one_code_hoisting_pass):
18419         Use get_max_uid() instead of max_cuid.
18420         (insert_insn_end_basic_block, pre_insert_copy_insn,
18421         update_ld_motion_stores): Don't try to
18422         keep reg_set tables up to date.
18423         (pre_insert_copies): Use df insn LUIDs.
18424         (sbitmap pre_redundant_insns): Replace with uses of INSN_DELETED_P.
18425         (reg_set_info): Don't use extra bitmap argument.
18426         (compute_store_table): Don't compute reg_set_in_block.  Use DF scan
18427         information to compute regs_set_in_block.
18428         (free_store_memory, store_motion): Don't nullify reg_set_in_block.
18429         (bypass_jumps): Don't use compute_sets and friends.
18430
18431 2009-04-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
18432
18433         PR testsuite/39710
18434         * opts.c (undocumented_msg): Do not leave blank even with
18435         ENABLE_CHECKING.
18436
18437 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
18438
18439         * c-decl.c (build_enumerator): Allow values folding to integer
18440         constants but not integer constant expressions with a pedwarn if
18441         pedantic.
18442
18443 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
18444
18445         PR c/39582
18446         * c-typeck.c (c_expr_sizeof_type): Create a C_MAYBE_CONST_EXPR
18447         with non-null C_MAYBE_CONST_EXPR_PRE if size of a variable-length
18448         type is an integer constant.
18449
18450 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
18451
18452         PR target/39897
18453         * config/i386/i386.c (print_operand) ['z']: Revert handling of
18454         HImode operands.
18455
18456 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
18457
18458         PR c/39564
18459         * c-decl.c (grokdeclarator): Diagnose declarations of functions
18460         with variably modified return type and no storage class
18461         specifiers, except for the case of nested functions.  Distinguish
18462         extern declarations of functions with variably modified return
18463         types from those of objects with variably modified types.
18464
18465 2009-04-25  Jan Hubicka  <jh@suse.cz>
18466
18467         * tree.c (list_equal_p): New function.
18468         * tree.h (list_equal_p): Declare.
18469         * coretypes.h (edge_def, edge, const_edge, basic_block_def
18470         basic_block_def, basic_block, const_basic_block): New.
18471         * tree-eh.c (make_eh_edge): EH edges are not abnormal.
18472         (redirect_eh_edge): New function.
18473         (make_eh_edge_update_phi): EH edges are not abnormal.
18474         * except.c: Include tree-flow.h.
18475         (list_match): New function.
18476         (eh_region_replaceable_by_p): New function.
18477         (replace_region): New function.
18478         (hash_type_list): New function.
18479         (hash_eh_region): New function.
18480         (eh_regions_equal_p): New function.
18481         (merge_peers): New function.
18482         (remove_unreachable_regions): Verify EH tree when checking;
18483         merge peers.
18484         (copy_eh_region_1): New function.
18485         (copy_eh_region): New function.
18486         (push_reachable_handler): New function.
18487         (build_post_landing_pads, dw2_build_landing_pads): Be ready for
18488         regions without label but with live RESX.
18489         * except.h (redirect_eh_edge_to_label): New.
18490         * tree-flow.h (redirect_eh_edge): New.
18491         * coretypes.h (edge_def, edge, const_edge, basic_block_def
18492         basic_block_def, basic_block, const_basic_block): Remove.
18493         * Makefile.in (except.o): Add dependency on tree-flow.h
18494         * tree-cfg.c (gimple_redirect_edge_and_branch): Handle EH edges.
18495         * basic-block.h (edge, const_edge, basic_block, const_basic_block):
18496         Remove.
18497
18498 2009-04-25  Eric Botcazou  <ebotcazou@adacore.com>
18499
18500         PR bootstrap/39645
18501         * config/sparc/sparc.c (sparc_gimplify_va_arg): Set TREE_ADDRESSABLE
18502         on the destination of memcpy.
18503
18504 2009-04-25  Paolo Bonzini  <bonzini@gnu.org>
18505
18506         * doc/tm.texi (REGNO_OK_FOR_BASE_P, REGNO_MODE_OK_FOR_BASE_P,
18507         REGNO_MODE_OK_FOR_REG_BASE_P, REGNO_MODE_CODE_OK_FOR_BASE_P,
18508         REGNO_OK_FOR_INDEX_P): Mention strict/nonstrict difference.
18509
18510 2009-04-25  Jan Hubicka  <jh@suse.cz>
18511
18512         * tree-eh.c (tree_remove_unreachable_handlers): Handle shared labels.
18513         (tree_empty_eh_handler_p): Allow non-EH predecestors; allow region
18514         to be reached by different label than left.
18515         (update_eh_edges): Update comment; remove edge_to_remove if possible
18516         and return true if suceeded.
18517         (cleanup_empty_eh): Accept sharing map; handle shared regions.
18518         (cleanup_eh): Compute sharing map.
18519         * except.c (remove_eh_handler_and_replace): Add argument if we should
18520         update regions.
18521         (remove_unreachable_regions): Update for label sharing.
18522         (label_to_region_map): Likewise.
18523         (get_next_region_sharing_label): New function.
18524         (remove_eh_handler_and_replace): Add update_catch_try parameter; update
18525         prev_try pointers.
18526         (remove_eh_handler): Update.
18527         (remove_eh_region_and_replace_by_outer_of): New function.
18528         * except.h (struct eh_region): Add next_region_sharing_label.
18529         (remove_eh_region_and_replace_by_outer_of,
18530         get_next_region_sharing_label): Declare.
18531         * tree-cfgcleanup.c (tree_forwarder_block_p): Simplify.
18532
18533 2009-04-25  Jan Hubicka  <jh@suse.cz>
18534
18535         * tree-cfg.c (split_critical_edges): Split also edges where we can't
18536         insert code even if they are not critical.
18537
18538 2009-04-25  Jan Hubicka  <jh@suse.cz>
18539
18540         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
18541         (gimple_can_remove_branch_p): EH edges won't remove branch by
18542         redirection.
18543         * tree-inline.c (update_ssa_across_abnormal_edges): Do handle
18544         updating of non-abnormal EH edges.
18545         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
18546         (gimple_can_remove_branch_p): EH edges are unremovable by redirection.
18547         (split_critical_edges): Split also edges where emitting code on them
18548         will lead to splitting later.
18549
18550 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
18551             H.J. Lu  <hongjiu.lu@intel.com>
18552
18553         PR target/39590
18554         * configure.ac (HAVE_AS_IX86_FILDQ): On x86 targets check whether
18555         the configured assembler supports fildq and fistpq mnemonics.
18556         (HAVE_AS_IX86_FILDS): Rename from HAVE_GAS_FILDS_FISTS.
18557         * configure: Regenerated.
18558         * config.in: Ditto.
18559
18560         * config/i386/i386.c (print_operand): Handle 'Z'.
18561         ['z']: Remove handling of special fild/fist suffixes.
18562         (output_fix_trunc): Use '%Z' to output suffix of fist{,p,tp} insn.
18563         * config/i386/i386.md (*floathi<mode>2_i387): Use '%Z' to output
18564         suffix of fild insn.
18565         (*floatsi<mode>2_vector_mixed): Ditto.
18566         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Ditto.
18567         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Ditto.
18568         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
18569         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387): Ditto.
18570         * config/i386/gas.h (GAS_MNEMONICS): Remove.
18571
18572 2009-04-25  Ben Elliston  <bje@au.ibm.com>
18573
18574         * genrecog.c (validate_pattern): Do not warn for VOIDmode CALLs as
18575         the source of a set operation.
18576
18577 2009-04-25  Anatoly Sokolov  <aesok@post.ru>
18578
18579         * target.h (struct gcc_target): Add case_values_threshold field.
18580         * target-def.h (TARGET_CASE_VALUES_THRESHOLD): New.
18581         (TARGET_INITIALIZER): Use TARGET_CASE_VALUES_THRESHOLD.
18582         * targhooks.c (default_case_values_threshold): New function.
18583         * targhooks.h (default_case_values_threshold): Declare function.
18584         * stmt.c (expand_case): Use case_values_threshold target hook.
18585         * expr.h (case_values_threshold): Remove declartation.
18586         * expr.c (case_values_threshold): Remove function.
18587         * doc/tm.texi (CASE_VALUES_THRESHOLD): Revise documentation.
18588
18589         * config/avr/avr.h (CASE_VALUES_THRESHOLD): Remove macro.
18590         * config/avr/avr.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
18591         (avr_case_values_threshold): Declare as static.
18592         * config/avr/avr-protos.h (avr_case_values_threshold): Remove.
18593
18594         * config/avr/mn10300.h (CASE_VALUES_THRESHOLD): Remove macro.
18595         * config/avr/mn10300.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
18596         (mn10300_case_values_threshold): New function.
18597
18598 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
18599
18600         * ira.c (setup_cover_and_important_classes): Add enum cast.
18601
18602 2009-04-24  Vladimir Makarov  <vmakarov@redhat.com>
18603
18604         * genpreds.c (write_enum_constraint_num): Output definition of
18605         CONSTRAINT_NUM_DEFINED_P macro.
18606         * ira.c (setup_cover_and_important_classes): Use
18607         CONSTRAINT_NUM_DEFINED_P instead of CONSTRAINT__LIMIT in #ifdef.
18608
18609 2009-04-24  DJ Delorie  <dj@redhat.com>
18610
18611         * config/sh/sh.h (LIBGCC2_DOUBLE_TYPE_SIZE): Test
18612         __SH2A_SINGLE_ONLY__ also.
18613
18614 2009-04-24  Steve Ellcey  <sje@cup.hp.com>
18615
18616         * config/ia64/ia64.md (movfs_internal): Allow flt constants.
18617         (movdf_internal): Ditto.
18618         * config/ia64/ia64.c (ia64_legitimate_constant_p): Allow
18619         SFmode and DFmode constants.
18620         (ia64_print_operand): Add 'G' format for printing
18621         floating point constants.
18622
18623 2009-04-24  Richard Guenther  <rguenther@suse.de>
18624
18625         * tree-vrp.c (extract_range_from_binary_expr): Handle overflow
18626         from unsigned additions.
18627
18628 2009-04-24  Joseph Myers  <joseph@codesourcery.com>
18629
18630         * c-typeck.c (set_init_index): Allow array designators that are
18631         not integer constant expressions with a pedwarn if pedantic.
18632
18633 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
18634
18635         * simplify-rtx.c (simplify_binary_operation_1, case AND): Result is
18636         zero if no overlap in nonzero bits between the operands.
18637
18638 2009-04-24  Ian Lance Taylor  <iant@google.com>
18639
18640         * combine.c (record_value_for_reg): Change 0 to VOIDmode, twice.
18641         (record_dead_and_set_regs): Likewise.
18642         * df.h (struct df_mw_hardreg): Change flags field to int.
18643         (struct df_base_ref): Likewise.
18644         (struct df): Change changeable_flags field to int.
18645         * df-scan.c (df_defs_record): Change clobber_flags to int.
18646         * dwarf2.h (enum dwarf_tag): Make lo_user and hi_user values enum
18647         constants rather than #define macros.
18648         (enum dwarf_attribute, enum dwarf_location_atom): Likewise.
18649         (enum dwarf_type, enum dwarf_endianity_encoding): Likewise.
18650         (enum dwarf_calling_convention): Likewise.
18651         (enum dwarf_line_number_x_ops): Likewise.
18652         (enum dwarf_call_frame_info): Likewise.
18653         (enum dwarf_source_language): Likewise.
18654         * dwarf2out.c (int_loc_descriptor): Add cast to enum type.
18655         (add_calling_convention_attribute): Likewise.
18656         * fold-const.c (fold_undefer_overflow_warnings): Add cast to enum type.
18657         (combine_comparisons): Change compcode to int.  Add cast to enum type.
18658         * genrecog.c (maybe_both_true_2): Change c to int.
18659         (write_switch): Likewise.  Add cast to enum type.
18660         * gimplify.c (gimplify_omp_for): Handle return values from
18661         gimplify_expr using MIN rather than bitwise or.
18662         (gimplify_expr): Add cast to enum type.
18663         * ipa-prop.c (update_jump_functions_after_inlining): Change
18664         IPA_BOTTOM to IPA_JF_UNKNOWN.
18665         * ira.c (setup_class_subset_and_memory_move_costs): Change mode to int.
18666         Add casts to enum type.
18667         (setup_cover_and_important_classes): Change cl to int.  Add casts
18668         to enum type.
18669         (setup_class_translate): Change cl and mode to int.
18670         (ira_init_once): Change mode to int.
18671         (free_register_move_costs): Likewise.
18672         (setup_prohibited_mode_move_regs): Add casts to enum type.
18673         * langhooks.c (add_builtin_function_common): Rework assertion that
18674         value fits bitfield.
18675         * mcf.c (add_fixup_edge): Change type parameter to edge_type.
18676         * omega.c (omega_do_elimination): Avoid math on enum types.
18677         * optabs.c (expand_vec_shift_expr): Remove casts to int.
18678         * opts.c (set_debug_level): Change 2 to enum constant.  Use new
18679         int local to handle integral_argment value.
18680         * regmove.c (try_auto_increment): Change PUT_MODE to
18681         PUT_REG_NOTE_KIND.
18682         * reload.c (push_secondary_reload): Add casts to enum type.
18683         (secondary_reload_class, find_valid_class): Likewise.
18684         * reload1.c (emit_input_reload_insns): Likewise.
18685         * rtl.h (NOTE_VAR_LOCATION_STATUS): Likewise.
18686         * sel-sched.c (init_hard_regs_data): Change cur_mode to int.
18687         * sel-sched-ir.c (hash_with_unspec_callback): Change 0 to enum
18688         constant.
18689         * tree.c (build_common_builtin_nodes): Add casts to enum type.
18690         * tree-complex.c (complex_lattice_t): Typedef to int rather than
18691         enum type.
18692         (expand_complex_libcall): Add casts to enum type.
18693         * tree-into-ssa.c (get_ssa_name_ann): Change 0 to enum constant.
18694         * tree-vect-loop.c (vect_model_reduction_cost): Compare reduc_code
18695         with ERROR_MARK, not NUM_TREE_CODES.
18696         (vect_create_epilog_for_reduction): Likewise.
18697         (vectorizable_reduction): Don't initialize epiloc_reduc_code.
18698         When not using it, set it to ERROR_MARK rather than NUM_TREE_CODES.
18699         * tree-vect-patterns.c (vect_pattern_recog_1): Change vec_mode to
18700         enum machine_mode.
18701         * tree-vect-stmts.c (new_stmt_vec_info): Change 0 to
18702         vect_unused_in_loop.  Change 0 to loop_vect.
18703         * tree-vectorizer.c (vect_set_verbosity_level): Add casts to enum type.
18704         * var-tracking.c (get_init_value): Change return type to enum
18705         var_init_status.
18706         * vec.h (DEF_VEC_FUNC_P) [iterate]: Cast 0 to type T.
18707         * config/arm/arm.c (fp_model_for_fpu): Change to array to enum
18708         arm_fp_model.
18709         (arm_override_options): Add casts to enum type.
18710         (arm_emit_tls_decoration): Likewise.
18711         * config/i386/i386.c (ix86_function_specific_restore): Add casts
18712         to enum type.
18713         * config/i386/i386-c.c (ix86_pragma_target_parse): Likewise.
18714         * config/ia64/ia64.c (ia64_expand_compare): Change magic to int.
18715         * config/rs6000/rs6000.c (rs6000_override_options): Add casts to
18716         enum type.
18717         * config/s390/s390.c (code_for_builtin_64): Change to array of
18718         enum insn_code.
18719         (code_for_builtin_31): Likewise.
18720         (s390_expand_builtin): Change code_for_builtin to enum insn_code
18721         const *.
18722         * config/sparc/sparc.c (sparc_override_options): Change value
18723         field in struct code_model to enum cmodel.  In initializer change
18724         0 to NULL and add cast to enum type.
18725
18726         * c-typeck.c (build_modify_expr): Add lhs_origtype parameter.
18727         Change all callers.  Issue a -Wc++-compat warning using
18728         lhs_origtype if necessary.
18729         (convert_for_assignment): Issue -Wc++-compat warnings about
18730         invalid conversions to enum type on assignment.
18731         * c-common.h (build_modify_expr): Update declaration.
18732
18733 2009-04-24  Nick Clifton  <nickc@redhat.com>
18734
18735         * config/iq2000/iq2000.c (function_arg): Handle TImode values.
18736         (function_arg_advance): Likewise.
18737         * config/iq2000/iq2000.md (movsi_internal2): Fix the length of the
18738         5th alternative.
18739
18740 2009-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
18741
18742         * config/s390/constraints.md ('I', 'J'): Fix condition.
18743
18744 2009-04-24  Diego Novillo  <dnovillo@google.com>
18745
18746         * gengtype-parse.c (parse_error): Add newline after message.
18747
18748 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
18749
18750         * config/i386/sse.md (avxmodesuffixs): Removed.
18751         (*avx_pinsr<avxmodesuffixs>): Renamed to ...
18752         (*avx_pinsr<ssevecsize>): This.
18753
18754 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
18755
18756         * loop-iv.c (replace_single_def_regs): Look for REG_EQUAL notes;
18757         follow chains of regs with a single definition, and allow expressions
18758         that are function_invariant_p.
18759         (simple_rhs_p): Allow expressions that are function_invariant_p.
18760
18761 2009-04-24  Paolo Bonzini  <bonzini@gnu.org>
18762
18763         PR middle-end/39867
18764         * fold-const.c (fold_cond_expr_with_comparison): When folding
18765         > and >= to MAX, make sure the MAX uses the same type as the
18766         comparison's operands.
18767
18768 2009-04-24  Nick Clifton  <nickc@redhat.com>
18769
18770         * config/frv/frv.c (frv_frame_access): Do not use reg+reg
18771         addressing for DImode accesses.
18772         (frv_print_operand_address): Handle PLUS case.
18773         * config/frv/frv.h (FIXED_REGISTERS): Mark link register as fixed.
18774
18775 2009-04-24  Jakub Jelinek  <jakub@redhat.com>
18776
18777         PR rtl-optimization/39794
18778         * alias.c (canon_true_dependence): Add x_addr argument.
18779         * rtl.h (canon_true_dependence): Adjust prototype.
18780         * cse.c (check_dependence): Adjust canon_true_dependence callers.
18781         * cselib.c (cselib_invalidate_mem): Likewise.
18782         * gcse.c (compute_transp): Likewise.
18783         * dse.c (scan_reads_nospill): Likewise.
18784         (record_store, check_mem_read_rtx): Likewise.  For non-const-or-frame
18785         addresses pass base->val_rtx as mem_addr, for const-or-frame addresses
18786         canon_base_addr of the group, plus optional offset.
18787         (struct group_info): Rename canon_base_mem to
18788         canon_base_addr.
18789         (get_group_info): Set canon_base_addr to canon_rtx of base, not
18790         canon_rtx of base_mem.
18791
18792 2009-04-23  Paolo Bonzini  <bonzini@gnu.org>
18793
18794         * config/sh/sh.c (sh_expand_prologue, sh_expand_epilogue):
18795         Use memory_address_p instead of GO_IF_LEGITIMATE_ADDRESS.
18796
18797 2009-04-23  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
18798
18799         * config/spu/spu-builtins.h: Delete file.
18800
18801         * config/spu/spu.h (enum spu_builtin_type): Move here from
18802         spu-builtins.h.
18803         (struct spu_builtin_description): Likewise.  Add GTY marker.
18804         Do not use enum spu_function_code or enum insn_code.
18805         (spu_builtins): Add extern declaration.
18806
18807         * config/spu/spu.c: Do not include "spu-builtins.h".
18808         (enum spu_function_code, enum spu_builtin_type_index,
18809         V16QI_type_node, V8HI_type_node, V4SI_type_node, V2DI_type_node,
18810         V4SF_type_node, V2DF_type_node, unsigned_V16QI_type_node,
18811         unsigned_V8HI_type_node, unsigned_V4SI_type_node,
18812         unsigned_V2DI_type_node): Move here from spu-builtins.h.
18813         (spu_builtin_types): Make static.  Add GTY marker.
18814         (spu_builtins): Add extern declaration with GTY marker.
18815         Include "gt-spu.h".
18816
18817         * config/spu/spu-c.c: Do not include "spu-builtins.h".
18818         (spu_resolve_overloaded_builtin): Do not use spu_function_code.
18819         Check programmatically whether all parameters are scalar.
18820
18821         * config/spu/t-spu-elf (spu.o, spu-c.o): Update dependencies.
18822
18823 2009-04-23  Eric Botcazou  <ebotcazou@adacore.com>
18824
18825         * gimplify.c (gimplify_modify_expr_rhs) <VAR_DECL>: Do not do a direct
18826         assignment from the constructor either if the target is volatile.
18827
18828 2009-04-23  Daniel Jacobowitz  <dan@codesourcery.com>
18829
18830         * config/arm/arm.md (insv): Do not share operands[0].
18831
18832 2009-04-23  Nathan Sidwell  <nathan@codesourcery.com>
18833
18834         * config/vxlib-tls.c (active_tls_threads): Delete.
18835         (delete_hook_installed): New.
18836         (tls_delete_hook): Don't delete the delete hook.
18837         (tls_destructor): Delete it here.
18838         (__gthread_set_specific): Adjust installing the delete hook.
18839         (tls_delete_hook): Use __gthread_enter_tsd_dtor_context and
18840         __gthread_leave_tsd_dtor_context.
18841
18842 2009-04-23  Rafael Avila de Espindola  <espindola@google.com>
18843
18844         * c-format.c (gcc_tdiag_char_table): Add support for %E.
18845
18846 2009-04-23  Uros Bizjak  <ubizjak@gmail.com>
18847
18848         * config/alpha/alpha.c (alpha_legitimize_reload_address): Add cast to
18849         enum type.
18850         (alpha_rtx_costs): Ditto.
18851         (emit_unlikely_jump): Use add_reg_note.
18852         (emit_frame_store_1): Ditto.
18853         (alpha_expand_prologue): Ditto.
18854         (alpha_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
18855         * config/alpha/alpha.c (Unicos/Mk address splitter): Use add_reg_note.
18856
18857 2009-04-23  Nick Clifton  <nickc@redhat.com>
18858
18859         * config/v850/v850.md (epilogue): Remove suppressed code.
18860         (return): Rename to return_simple and remove test of frame size.
18861         * config/v850/v850.c (expand_epilogue): Rename call to gen_return
18862         to gen_return_simple.
18863
18864 2009-04-22  Jing Yu  <jingyu@google.com>
18865
18866         PR testsuite/39781
18867         * config/arm/arm.h: Define HANDLE_PRAGMA_PACK_PUSH_POP.
18868
18869 2009-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18870
18871         PR C/31499
18872         * c-typeck.c (process_init_element): Treat VECTOR_TYPE like ARRAY_TYPE
18873         and RECORD_TYPE/UNION_TYPE.  When outputing the actual element and the
18874         value is a VECTOR_CST, the element type is the element type of the
18875         vector.
18876
18877 2009-04-22  DJ Delorie  <dj@redhat.com>
18878
18879         * config/m32c/m32c.h: Update GTY annotations to new syntax.
18880
18881 2009-04-22  Jakub Jelinek  <jakub@redhat.com>
18882
18883         * alias.c (find_base_term): Move around LO_SUM case, so that
18884         CONST falls through into PLUS/MINUS handling.
18885
18886         PR c/39855
18887         * fold-const.c (fold_binary) <case LSHIFT_EXPR>: When optimizing
18888         into 0, use omit_one_operand.
18889
18890 2009-04-23  Ben Elliston  <bje@au.ibm.com>
18891
18892         * config/rs6000/linux-unwind.h (get_regs): Remove type
18893         puns. Change the type of `pc' to an array of unsigned ints and
18894         update all users.  Constify frame24.
18895
18896 2009-04-22  DJ Delorie  <dj@redhat.com>
18897
18898         * config/m32c/m32c.c (m32c_special_page_vector_p): Move
18899         declarations before code.
18900         (current_function_special_page_vector): Likewise.
18901         (m32c_expand_insv): Silence a warning.
18902
18903 2009-04-21  Taras Glek  <tglek@mozilla.com>
18904
18905         * alias.c: Update GTY annotations to new syntax.
18906         * basic-block.h: Likewise.
18907         * bitmap.h: Likewise.
18908         * c-common.h: Likewise.
18909         * c-decl.c: Likewise.
18910         * c-parser.c: Likewise.
18911         * c-pragma.c: Likewise.
18912         * c-tree.h: Likewise.
18913         * cfgloop.h: Likewise.
18914         * cgraph.h: Likewise.
18915         * config/alpha/alpha.c: Likewise.
18916         * config/arm/arm.h: Likewise.
18917         * config/avr/avr.h: Likewise.
18918         * config/bfin/bfin.c: Likewise.
18919         * config/cris/cris.c: Likewise.
18920         * config/darwin.c: Likewise.
18921         * config/frv/frv.c: Likewise.
18922         * config/i386/i386.c: Likewise.
18923         * config/i386/i386.h: Likewise.
18924         * config/i386/winnt.c: Likewise.
18925         * config/ia64/ia64.h: Likewise.
18926         * config/iq2000/iq2000.c: Likewise.
18927         * config/mips/mips.c: Likewise.
18928         * config/mmix/mmix.h: Likewise.
18929         * config/pa/pa.c: Likewise.
18930         * config/pa/pa.h: Likewise.
18931         * config/rs6000/rs6000.c: Likewise.
18932         * config/s390/s390.c: Likewise.
18933         * config/sparc/sparc.c: Likewise.
18934         * config/xtensa/xtensa.c: Likewise.
18935         * cselib.h: Likewise.
18936         * dbxout.c: Likewise.
18937         * dwarf2out.c: Likewise.
18938         * except.c: Likewise.
18939         * except.h: Likewise.
18940         * fixed-value.h: Likewise.
18941         * function.c: Likewise.
18942         * function.h: Likewise.
18943         * gimple.h: Likewise.
18944         * integrate.c: Likewise.
18945         * optabs.c: Likewise.
18946         * output.h: Likewise.
18947         * real.h: Likewise.
18948         * rtl.h: Likewise.
18949         * stringpool.c: Likewise.
18950         * tree-data-ref.c: Likewise.
18951         * tree-flow.h: Likewise.
18952         * tree-scalar-evolution.c: Likewise.
18953         * tree-ssa-address.c: Likewise.
18954         * tree-ssa-alias.h: Likewise.
18955         * tree-ssa-operands.h: Likewise.
18956         * tree.c: Likewise.
18957         * tree.h: Likewise.
18958         * varasm.c: Likewise.
18959         * varray.h: Likewise.
18960         * vec.h: Likewise.
18961         * coretypes.h: Do not define GTY macro if it is already defined.
18962         * doc/gty.texi: Update GTY documentation to new syntax.
18963         * gengtype-lex.l: Enforce attribute-like syntax for GTY
18964         annotations on structs.
18965         * gengtype-parse.c: Likewise.
18966
18967 2009-04-22  Mark Heffernan  <meheff@google.com>
18968
18969         * gcc.c (LINK_COMMAND_SPEC): Link with gcov with -fprofile-generate=.
18970
18971 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
18972
18973         * config/arm/arm.c (arm_rtx_costs_1): Use power_of_two_operand
18974         where appropriate.
18975
18976 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
18977
18978         * config/arm/arm.c (arm_size_rtx_costs): Treat a PLUS with a shift
18979         the same as a PLUS without a shift.  Increase the cost of a
18980         CONST_INT in MULT.
18981
18982 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18983
18984         * Makefile.in: Update dependencies.
18985         * errors.c (warning): Remove unused parameter 'opt'. Returns 'void'.
18986         * errors.h: Remove bogus comment about compatibility.
18987         (warning): Update declaration.
18988         * genautomata.c: Update all calls to warning.
18989         * gimple.c: Do not include errors.h. Include toplev.h.
18990         * tree-ssa-structalias.c: Do not include errors.h.
18991         * omega.c: Likewise.
18992         * tree-ssa-reassoc.c: Likewise.
18993         * config/spu/spu-c.c: Likewise.
18994         * config/spu/t-spu-elf: Update dependencies.
18995
18996 2009-04-22  Richard Guenther  <rguenther@suse.de>
18997
18998         PR tree-optimization/39824
18999         * tree-ssa-ccp.c (fold_const_aggregate_ref): For INDIRECT_REFs
19000         make sure the types are compatible.
19001
19002 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19003
19004         PR c++/14875
19005         * c-common.c (c_parse_error): Take a token_flags parameter.
19006         Use token_type for the token type instead.
19007         Pass token_flags to cpp_type2name.
19008         * c-common.h (c_parse_error): Update declaration.
19009         * c-parser.c (c_parser_error): Pass 0 as token flags.
19010
19011 2009-04-22  Andrey Belevantsev  <abel@ispras.ru>
19012
19013         PR rtl-optimization/39580
19014         * sel-sched-ir.c (insert_in_history_vect): Remove incorrect gcc_assert.
19015
19016 2009-04-22  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
19017
19018         * function.c (expand_function_end): Do not emit a jump to the "naked"
19019         return label for fall-through returns.
19020         * except.c (sjlj_emit_function_exit): Always place the call to the
19021         unregister function at the location installed by expand_function_end.
19022
19023 2009-04-22  Richard Guenther  <rguenther@suse.de>
19024
19025         PR tree-optimization/39845
19026         * tree-switch-conversion.c (build_arrays): Add new referenced vars.
19027         (gen_inbound_check): Likewise.
19028
19029 2009-04-22  Nathan Sidwell  <nathan@codesourcery.com>
19030
19031         * gthr-vxworks.h (struct __gthread_once_t): Add alignment and
19032         padding for PPC.
19033         (__GTHREAD_ONCE_INIT): Adjust ppc initializer.
19034         * config/vxlib.c (__gthread_once): Add race guard for PPC.
19035
19036 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
19037
19038         * config/sh/sh.c (shift_insns_rtx, shiftcosts, gen_shifty_op,
19039         sh_dynamicalize_shift_p, shl_and_scr_length): Truncate
19040         shift counts to avoid out-of-bounds array accesses.
19041
19042 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
19043
19044         * config/sparc/sparc.h (POINTER_SIZE): Fix comment.
19045         (Pmode): Move above.
19046
19047 2009-04-22  Uros Bizjak  <ubizjak@gmail.com>
19048
19049         * config/alpha/alpha.c: Use REG_P, MEM_P, CONST_INT_P, JUMP_P,
19050         NONJUMP_INSN_P, CALL_P, LABEL_P and NOTE_P predicates instead of
19051         GET_CODE macro.  Use IN_RANGE macro where appropriate.
19052         * config/alpha/alpha.h: Ditto.
19053         * config/alpha/alpha.md: Ditto.
19054         * config/alpha/constraints.md: Ditto.
19055         * config/alpha/predicates.md: Ditto.
19056
19057 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
19058
19059         * defaults.h (GO_IF_MODE_DEPENDENT_ADDRESS): Provide empty default.
19060         * config/frv/frv.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
19061         * config/s390/s390.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
19062         * config/m32c/m32c.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
19063         * config/spu/spu.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
19064         * config/i386/i386.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
19065         * config/sh/sh.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
19066         * config/pdp11/pdp11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
19067         * config/avr/avr.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
19068         * config/crx/crx.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
19069         * config/fr30/fr30.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
19070         * config/m68hc11/m68hc11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
19071         * config/cris/cris.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
19072         * config/iq2000/iq2000.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
19073         * config/mn10300/mn10300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
19074         * config/ia64/ia64.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
19075         * config/m68k/m68k.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
19076         * config/picochip/picochip.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
19077         * config/arc/arc.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
19078         * config/mcore/mcore.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
19079         * config/score/score.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
19080         * config/arm/arm.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
19081         * config/pa/pa.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
19082         * config/mips/mips.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
19083         * config/v850/v850.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
19084         * config/mmix/mmix.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
19085         * config/bfin/bfin.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
19086
19087 2009-04-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
19088
19089         * cfghooks.c (tidy_fallthru_edges): Remove find_basic_blocks
19090         references from comments.
19091         * cfgbuild.c: (count_basic_blocks): Delete.
19092         (find_basic_blocks_1): Delete.
19093         (find_basic_blocks): Delete.
19094         * except.c (finish_eh_generation): Make static.  Move comment from
19095         except.h here.  Remove find_basic_blocks references from comments.
19096         * except.h (finish_eh_generation): Delete.
19097         * basic-block.h (find_basic_blocks): Delete.
19098         * config/sh/sh.c (sh_output_mi_thunk): Delete a "#if 0" block.
19099
19100 2009-04-22  Dave Korn  <dave.korn.cygwin@gmail.com>
19101
19102         * sdbout.c (sdbout_symbol):  Pass VOIDmode to eliminate_regs.
19103         (sdbout_parms):  Likewise.
19104
19105 2009-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
19106
19107         * config/sh/sh.c (prepare_cbranch_operands): Use
19108         LAST_AND_UNUSED_RTX_CODE instead of CODE_FOR_nothing.
19109         (expand_cbranchdi4): Likewise.
19110         (from_compare): Add cast to enum type.
19111         (expand_cbranchsi4): Use add_reg_note.
19112         (output_stack_adjust, push, pop, sh_expand_prologue): Likewise.
19113         (sh_insn_length_adjustment): Use sh_cpu_attr instead of sh_cpu.
19114         (sh_initialize_trampoline): Change 0 to LCT_NORMAL in function call.
19115         (sh_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
19116         * config/sh/sh.md (cbranchsi4): Use LAST_AND_UNUSED_RTX_CODE
19117         instead of CODE_FOR_nothing.
19118         (cbranchdi4): Likewise.  Fix the order of arguments for
19119         gen_rtx_fmt_ee.
19120         (push_fpscr): Use add_reg_note.
19121         (pop_fpscr, movdf_i4+1, reload_outdf__RnFRm+3, reload_outdf__RnFRm+4,
19122         reload_outdf__RnFRm+5, fpu_switch+1, fpu_switch+2): Likewise.
19123
19124 2009-04-21  Joseph Myers  <joseph@codesourcery.com>
19125
19126         * ABOUT-GCC-NLS, ChangeLog, ChangeLog-1997, ChangeLog-1998,
19127         ChangeLog-1999, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
19128         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
19129         ChangeLog-2007, ChangeLog-2008, ChangeLog.dataflow, ChangeLog.lib,
19130         ChangeLog.ptr, ChangeLog.tree-ssa, ChangeLog.tuples, FSFChangeLog,
19131         FSFChangeLog.10, FSFChangeLog.11, LANGUAGES, ONEWS, acinclude.m4,
19132         config/alpha/gnu.h, config/alpha/libgcc-alpha-ldbl.ver,
19133         config/alpha/t-osf4, config/alpha/t-vms, config/alpha/va_list.h,
19134         config/alpha/x-vms, config/arc/t-arc,
19135         config/arm/README-interworking, config/arm/arm-c.c,
19136         config/arm/gentune.sh, config/arm/libgcc-bpabi.ver,
19137         config/arm/t-arm, config/arm/t-arm-elf, config/arm/t-arm-softfp,
19138         config/arm/t-bpabi, config/arm/t-linux, config/arm/t-linux-eabi,
19139         config/arm/t-netbsd, config/arm/t-pe, config/arm/t-strongarm-elf,
19140         config/arm/t-symbian, config/arm/t-vxworks, config/arm/t-wince-pe,
19141         config/avr/t-avr, config/bfin/elf.h, config/bfin/libgcc-bfin.ver,
19142         config/bfin/linux.h, config/bfin/t-bfin, config/bfin/t-bfin-elf,
19143         config/bfin/t-bfin-linux, config/bfin/t-bfin-uclinux,
19144         config/bfin/uclinux.h, config/cris/mulsi3.asm, config/cris/t-cris,
19145         config/cris/t-elfmulti, config/crx/t-crx,
19146         config/darwin-ppc-ldouble-patch.def, config/darwin-sections.def,
19147         config/divmod.c, config/fr30/t-fr30, config/frv/libgcc-frv.ver,
19148         config/frv/t-frv, config/frv/t-linux, config/h8300/genmova.sh,
19149         config/h8300/t-h8300, config/i386/athlon.md,
19150         config/i386/darwin-libgcc.10.4.ver,
19151         config/i386/darwin-libgcc.10.5.ver, config/i386/libgcc-glibc.ver,
19152         config/i386/mach.h, config/i386/netbsd.h, config/i386/t-crtpc,
19153         config/i386/t-cygming, config/i386/t-cygwin, config/i386/t-i386,
19154         config/i386/t-linux64, config/i386/t-nwld,
19155         config/i386/t-rtems-i386, config/i386/t-sol2-10,
19156         config/i386/x-mingw32, config/ia64/div.md, config/ia64/elf.h,
19157         config/ia64/ia64.opt, config/ia64/libgcc-glibc.ver,
19158         config/ia64/libgcc-ia64.ver, config/ia64/linux.h,
19159         config/ia64/sysv4.h, config/ia64/t-hpux, config/ia64/t-ia64,
19160         config/iq2000/abi, config/iq2000/lib2extra-funcs.c,
19161         config/iq2000/t-iq2000, config/libgcc-glibc.ver,
19162         config/m32r/libgcc-glibc.ver, config/m32r/t-linux,
19163         config/m32r/t-m32r, config/m68hc11/t-m68hc11,
19164         config/m68k/t-floatlib, config/m68k/t-linux, config/m68k/t-mlibs,
19165         config/m68k/t-uclinux, config/mcore/t-mcore,
19166         config/mcore/t-mcore-pe, config/mips/20kc.md, config/mips/4130.md,
19167         config/mips/5400.md, config/mips/5500.md, config/mips/crti.asm,
19168         config/mips/crtn.asm, config/mips/irix-crti.asm,
19169         config/mips/irix-crtn.asm, config/mips/libgcc-mips16.ver,
19170         config/mips/mips-dsp.md, config/mips/mips-dspr2.md,
19171         config/mips/mips-fixed.md, config/mips/sb1.md,
19172         config/mips/sr71k.md, config/mips/t-elf, config/mips/t-gofast,
19173         config/mips/t-iris6, config/mips/t-isa3264,
19174         config/mips/t-libgcc-mips16, config/mips/t-linux64,
19175         config/mips/t-mips, config/mips/t-r3900, config/mips/t-rtems,
19176         config/mips/t-sb1, config/mips/t-sde, config/mips/t-sdemtk,
19177         config/mips/t-slibgcc-irix, config/mips/t-sr71k, config/mips/t-st,
19178         config/mips/t-vr, config/mips/t-vxworks, config/mmix/t-mmix,
19179         config/mn10300/t-linux, config/mn10300/t-mn10300,
19180         config/pa/pa32-regs.h, config/pa/t-hpux-shlib, config/pa/t-linux,
19181         config/pa/t-linux64, config/pa/t-pa64, config/pdp11/t-pdp11,
19182         config/picochip/libgccExtras/clzsi2.asm,
19183         config/picochip/t-picochip, config/rs6000/darwin-ldouble-format,
19184         config/rs6000/darwin-libgcc.10.4.ver,
19185         config/rs6000/darwin-libgcc.10.5.ver,
19186         config/rs6000/libgcc-ppc-glibc.ver, config/rs6000/ppc-asm.h,
19187         config/rs6000/t-aix43, config/rs6000/t-aix52,
19188         config/rs6000/t-darwin, config/rs6000/t-fprules,
19189         config/rs6000/t-fprules-fpbit, config/rs6000/t-linux64,
19190         config/rs6000/t-lynx, config/rs6000/t-netbsd,
19191         config/rs6000/t-ppccomm, config/rs6000/t-ppcendian,
19192         config/rs6000/t-ppcgas, config/rs6000/t-rs6000,
19193         config/rs6000/t-rtems, config/rs6000/t-spe,
19194         config/rs6000/t-vxworks, config/s390/libgcc-glibc.ver,
19195         config/score/t-score-elf, config/sh/divcost-analysis,
19196         config/sh/libgcc-glibc.ver, config/sh/t-netbsd, config/sh/t-sh,
19197         config/sh/t-sh64, config/sh/t-superh, config/sh/t-symbian,
19198         config/sparc/libgcc-sparc-glibc.ver, config/sparc/sol2-bi.h,
19199         config/sparc/sol2-gas.h, config/sparc/sol2-gld-bi.h,
19200         config/sparc/t-elf, config/sparc/t-linux64, config/sparc/t-sol2,
19201         config/stormy16/stormy-abi, config/stormy16/t-stormy16,
19202         config/t-darwin, config/t-libunwind, config/t-libunwind-elf,
19203         config/t-linux, config/t-lynx, config/t-slibgcc-elf-ver,
19204         config/t-slibgcc-sld, config/t-sol2, config/t-vxworks,
19205         config/udivmod.c, config/udivmodsi4.c, config/v850/t-v850,
19206         config/v850/t-v850e, config/xtensa/t-xtensa, diagnostic.def,
19207         gdbinit.in, glimits.h, gstab.h, gsyms.h, java/ChangeLog,
19208         java/ChangeLog.ptr, java/ChangeLog.tree-ssa, libgcc-std.ver,
19209         limitx.h, version.c, xcoff.h: Add copyright and license notices.
19210         * config/h8300/genmova.sh: Include copyright and license notices
19211         in generated output.
19212         * config/h8300/mova.md: Regenerate.
19213         * doc/install.texi2html: Include word "Copyright" in copyright
19214         notice and use name "Free Software Foundation, Inc.".
19215         * ChangeLog, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
19216         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
19217         ChangeLog-2007, ChangeLog-2008: Correct dates.
19218
19219 2009-04-21  Eric Botcazou  <ebotcazou@adacore.com>
19220
19221         * c-common.c (c_common_truthvalue_conversion): Use LOCATION to build
19222         NE_EXPR operations as well.
19223         * c-parser.c (c_parser_condition): Do not set location information on
19224         the condition.
19225         (c_parser_conditional_expression): Likewise.
19226         (c_parser_binary_expression): Set location information on operators.
19227         * c-typeck.c (build_unary_op) <TRUTH_NOT_EXPR>: Reset the location if
19228         TRUTH_NOT_EXPR has been folded.
19229         * fold-const.c (fold_truth_not_expr): Copy location information from
19230         the incoming expression to the outgoing one.
19231         * gimplify.c (shortcut_cond_r): Add locus parameter.  Pass it to
19232         recursive calls on the LHS of the operator but pass that of the
19233         operator to recursive calls on the RHS of the operator.  Set it
19234         on the COND_EXPR.
19235         (shortcut_cond_expr): Set the locus of the operator on the second
19236         COND_EXPR and that of the expression on the first in degenerate cases.
19237         Pass the locus of the expression to calls to shortcut_cond_r.
19238         Set the locus of the 'then' block on the associated jump, if any.
19239         (gimplify_boolean_expr): Add locus parameter.  Set it on the COND_EXPR.
19240         (gimplify_expr) <TRUTH_ANDIF_EXPR>: Pass the locus of the outer
19241         expression to call to gimplify_boolean_expr.
19242
19243 2009-04-21  Kai Tietz  <kai.tietz@onevision.com>
19244
19245         * config.gcc: Add additional configuration for
19246         i686-w64-mingw* and x86_64-w64-mingw* triplet.
19247         * config/i386/mingw-w64.h: New mingw-w64 specific header.
19248         (CPP_SPEC): Redefine for allowing -municode option.
19249         (STARTFILE_SPEC): Likewise.
19250         * config/i386/t-mingw-w64: New.
19251         * config/i386/mingw-w64.opt: New.
19252         (municode): Add new target option.
19253         * doc/invoke.texi (municode): Add documentation for new option.
19254
19255 2009-04-21  Ian Lance Taylor  <iant@google.com>
19256
19257         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
19258         Correct test for number of arguments.
19259         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Likewise.
19260
19261 2009-04-21  Andreas Schwab  <schwab@linux-m68k.org>
19262
19263         * config/m68k/linux.h (FINALIZE_TRAMPOLINE): Use enum for second
19264         argument of emit_library_call.
19265
19266 2009-04-21  Richard Guenther  <rguenther@suse.de>
19267
19268         PR middle-end/39829
19269         * gimple.c (walk_stmt_load_store_addr_ops): Catch addresses
19270         inside VIEW_CONVERT_EXPRs.
19271
19272 2009-04-21  Martin Jambor  <mjambor@suse.cz>
19273
19274         * tree-switch-conversion.c (build_constructors): Split a long line.
19275         (constructor_contains_same_values_p): New function.
19276         (build_one_array): Create assigns of constants if possible, do not
19277         call mark_sym_for_renaming, call update_stmt.
19278         (build_arrays): Call make_ssa_name (create_tmp_var ()) instead of
19279         make_rename_temp.  Do not call mark_symbols_for_renaming, call
19280         update_stmt.
19281         (gen_def_assigns): Do not call mark_symbols_for_renaming or
19282         find_new_referenced_vars, call update_stmt.
19283         (gen_inbound_check): Use create_tmp_var and create ssa names manually
19284         instead of calling make_rename_temp.  Do not call
19285         find_new_referenced_vars or mark_symbols_for_renaming, call
19286         update_stmt.
19287
19288 2009-04-21  Richard Guenther  <rguenther@suse.de>
19289
19290         PR tree-optimization/39827
19291         * tree-ssa-phiprop.c (propagate_with_phi): Check SSA_NAME is in range.
19292         (tree_ssa_phiprop): Pass the correct array size.
19293
19294 2009-04-21  Uros Bizjak  <ubizjak@gmail.com>
19295
19296         * config/alpha/alpha.md (tune): Add cast to enum attr_tune.
19297
19298 2009-04-21  Manuel López-Ibáñez  <manu@gcc.gnu.org>
19299
19300         PR 16202
19301         * c-typeck.c (lvalue_p): Move declaration ...
19302         * c-common.h (lvalue_p): ... to here.
19303         * c-common.c (candidate_equal_p): New.
19304         (add_tlist): Use it.
19305         (merge_tlist): Use it.
19306         (warn_for_collisions_1): Likewise.
19307         (warning_candidate_p): Accept more candidates.
19308         (verify_tree): A warning candidate can be an expression. Use
19309         candidate_equal_p.
19310
19311 2009-04-21  Ben Elliston  <bje@au.ibm.com>
19312
19313         PR target/5267
19314         * doc/invoke.texi (RS/6000 and PowerPC Options): Add documentation
19315         for -mcall-eabi, -mcall-aixdesc, -mcall-freebsd and -mcall-openbsd
19316         options.  Remove -mcall-solaris documentation.
19317
19318 2009-04-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19319
19320         PR c++/13358
19321         * doc/invoke.texi (-Wlong-long): Update description.
19322         * c-lex (interpret_integer): Only warn if there was no previous
19323         overflow and -Wlong-long is enabled.
19324         * c-decl.c (declspecs_add_type): Drop redundant flags.
19325         * c.opt (Wlong-long): Init to -1.
19326         * c-opts.c (sanitize_cpp_opts): Synchronize cpp's warn_long_long
19327         and front-end warn_long_long. Wlong-long only depends on other
19328         flags if it is uninitialized.
19329         * c-parser.c (disable_extension_diagnostics): warn_long_long is
19330         the same for CPP and FE.
19331         (restore_extension_diagnostics): Likewise.
19332
19333 2009-04-20  Ian Lance Taylor  <iant@google.com>
19334
19335         Fix enum conversions which are invalid in C++:
19336         * auto-inc-dec.c (attempt_change): Change 0 to SET in function call.
19337         * calls.c (store_one_arg): Change 0 to EXPAND_NORMAL in function call.
19338         * cse.c (hash_rtx_cb): Change 0 to VOIDmode in function call.
19339         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add cast to enum type.
19340         * dbxout.c (dbxout_symbol): Change 0 to VOIDmode in function call.
19341         (dbxout_parms): Likewise.
19342         * df-core.c (df_set_flags): Change changeable_flags parameter to int.
19343         (df_clear_flags): Likewise.
19344         * df-problems.c (df_rd_bb_local_compute_process_def): Change
19345         top_flag parameter to int.
19346         (df_chain_create_bb_process_use): Likewise.
19347         (df_chain_add_problem): Change chain_flags parameter to unsigned int.
19348         Remove cast.
19349         * df-scan.c (df_ref_create): Change ref_flags parameter to int.
19350         (df_ref_create_structure, df_def_record_1): Likewise.
19351         (df_defs_record, df_uses_record, df_get_call_refs): Likewise.
19352         (df_notes_rescan): Change 0 to VOIDmode in function call.
19353         (df_get_call_refs, df_insn_refs_collect): Likewise.
19354         (df_bb_regs_collect): Likewise.
19355         (df_entry_block_defs_collect): Likewise.
19356         (df_exit_block_uses_collect): Likewise.
19357         * df.h: Update declarations.
19358         * double-int.c (double_int_divmod): Add cast to enum type.
19359         * dse.c (replace_inc_dec): Reverse parameters to gen_int_mode.
19360         * dwarf2out.c (new_reg_loc_descr): Add casts to enum type.
19361         (based_loc_descr): Likewise.
19362         (loc_descriptor_from_tree_1): Change first_op and second_op to
19363         enum dwarf_location_atom.  Add cast to enum type.
19364         * expmed.c (init_expmed): Change 0 to SET in function call.
19365         * expr.c (init_expr_target): Change 0 to VOIDmode in function call.
19366         (expand_expr_real_1): Change 0 to EXPAND_NORMAL in function call.
19367         (do_store_flag): Likewise.
19368         * fixed-value.h (struct fixed_value): Change mode to enum
19369         machine_mode.
19370         * function.c (assign_parms): Change 0 to VOIDmode in function call.
19371         * genautomata.c (insert_automaton_decl): Change 1 to INSERT in
19372         function call.
19373         (insert_insn_decl, insert_decl, insert_state): Likewise.
19374         (automata_list_finish): Likewise.
19375         * genrecog.c (process_define_predicate): Add cast to enum type.
19376         * gensupport.c (init_predicate_table): Add cast to enum type.
19377         * gimple.c (gimple_build_return): Change 0 to ERROR_MARK in
19378         function call.
19379         (gimple_build_call_1, gimple_build_label): Likewise.
19380         (gimple_build_goto, gimple_build_asm_1): Likewise.
19381         (gimple_build_switch_1, gimple_build_cdt): Likewise.
19382         * gimple.h (GIMPLE_CHECK): Change 0 to ERROR_MARK in function call.
19383         (enum fallback): Rename from enum fallback_t.
19384         (fallback_t): Typedef as int.
19385         * gimple-low.c (lower_builtin_setjmp): Change TSI_SAME_STMT to
19386         GSI_SAME_STMT in function call.
19387         * ira.c (setup_class_subset_and_memory_move_costs): Add casts to
19388         enum type.
19389         (setup_reg_class_relations): Likewise.
19390         (setup_reg_class_nregs): Change cl to int.  Add casts to enum type.
19391         (setup_prohibited_class_mode_regs): Add cast to enum type.
19392         (setup_prohibited_mode_move_regs): Likewise.
19393         * ira-costs.c (record_reg_classes): Change rclass to enum reg_class.
19394         (record_address_regs): Change i to enum reg_class.
19395         * lists.c (alloc_EXPR_LIST): Add cast to enum type.
19396         * machmode.h (GET_MODE_CLASS): Cast value to enum mode_class.
19397         (GET_MODE_WIDER_MODE): Cast value to enum machine_mode.
19398         (GET_MODE_2XWIDER_MODE): Likewise.
19399         (GET_CLASS_NARROWEST_MODE): Likewise.
19400         * omp-low.c (expand_omp_for): Add cast to enum type.
19401         * optabs.c (debug_optab_libfuncs): Add casts to enum type.
19402         * opts.c (enable_warning_as_error): Change kind to diagostic_t.
19403         * postreload.c (reload_cse_simplify_operands): Change rclass local
19404         to enum reg_class.
19405         * predict.c (combine_predictions_for_insn): Change best_predictor
19406         and predictor to enum br_predictor.
19407         (combine_predictions_for_bb): Likewise.
19408         (build_predict_expr): Change assignment to PREDICT_EXPR_OUTCOME to
19409         use SET_PREDICT_EXPR_OUTCOME.
19410         * real.c (real_arithmetic): Change icode to code in function call.
19411         * reginfo.c (init_move_cost): Add casts to enum type.
19412         (init_reg_sets_1, init_fake_stack_mems): Likewise.
19413         * regmove.c (regclass_compatible_p): Change class0 and class1 to
19414         enum reg_class.
19415         * reload.c (find_valid_class): Add casts to enum type.
19416         (push_reload): Change 0 to NO_REGS in function call.
19417         (find_reloads): Change this_alternative to array of enum
19418         reg_class.  Remove some now-unnecessary casts.
19419         (make_memloc): Change 0 to VOIDmode in function call.
19420         * reload1.c (reload): Change 0 to VOIDmode in function call.
19421         (eliminate_regs_1, elimination_effects): Likewise.
19422         (eliminate_regs_in_insn): Likewise.
19423         (emit_input_reload_insns): Add cast to enum type.
19424         (delete_output_reload): Change 0 to VOIDmode in function call.
19425         * reorg.c (insn_sets_resource_p): Convert include_delayed_effects
19426         to enum type in function call.
19427         * tree.h (PREDICT_EXPR_OUTCOME): Add cast to enum type.
19428         (SET_PREDICT_EXPR_OUTCOME): Define.
19429         * tree-dump.c (get_dump_file_info): Change phase parameter to int.
19430         (get_dump_file_name, dump_begin, dump_enabled_p): Likewise.
19431         (dump_initialized_p, dump_flag_name, dump_end): Likewise.
19432         (dump_function): Likewise.
19433         * tree-dump.h: Update declarations.
19434         * tree-pass.h: Update declarations.
19435         * varasm.c (assemble_integer): Change mclass to enum mode_class.
19436         * config/arm/arm.c (thumb_legitimize_reload_address): Add cast to
19437         enum type.
19438         (arm_rtx_costs_1): Correct parenthesization.
19439         (arm_rtx_costs): Add casts to enum type.
19440         (adjacent_mem_locations): Reverse arguments to const_ok_for_op.
19441         (vfp_emit_fstmd): Use add_rg_note.
19442         (emit_multi_reg_push, emit_sfm): Likewise.
19443         (thumb_set_frame_pointer): Likewise.
19444         (arm_expand_prologue): Likewise.
19445         (arm_regno_class): Change return type to enum reg_class.
19446         (thumb1_expand_prologue): Use add_reg_note.
19447         * config/arm/arm-protos.h (arm_regno_class): Update declaration.
19448         * config/arm/arm.h (INITIALIZE_TRAMPOLINE): Change 0 to LCT_NORMAL
19449         in function call.
19450         * config/arm/gentune.sh: Add cast to enum type.
19451         * config/arm/arm-tune.md: Rebuild.
19452         * config/i386/i386.c (ix86_expand_prologue): Use add_reg_note.
19453         (ix86_split_fp_branch, predict_jump): Likewise.
19454         (ix86_expand_multi_arg_builtin): Change sub_code from enum
19455         insn_code to enum rtx_code.
19456         (ix86_builtin_vectorized_function): Add cast to enum type.
19457         * config/i386/i386.md (truncdfsf2): Change slot to enum
19458         ix86_stack_slot.
19459         (truncxf<mode>2, isinf<mode>2): Likewise.
19460         * config/i386/i386-c.c (ix86_pragma_target_parse): Add cast to
19461         enum type.
19462         * config/ia64/ia64.c (ia64_split_tmode_move): Use add_reg_note.
19463         (spill_restore_mem, do_spill, ia64_expand_prologue): Likewise.
19464         (insert_bundle_state): Change 1 to INSERT in function call.
19465         (ia64_add_bundle_selector_before): Likewise.
19466         * config/ia64/ia64.md (cpu attr): Add cast to enum type.
19467         (save_stack_nonlocal): Change 0 to LCT_NORMAL in function call.
19468         (restore_stack_nonlocal): Likewise.
19469         * config/mips/mips.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL in
19470         function call.
19471         * config/mips/mips.c (mips_binary_cost): Change 0 to SET in
19472         function call.
19473         (mips_rtx_costs): Likewise.
19474         (mips_override_options): Add casts to enum type.
19475         * config/mips/sdemtk.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL
19476         in function call.
19477         * config/pa/pa.c (legitimize_pic_address): Use add_reg_note.
19478         (store_reg, set_reg_plus_d): Likewise.
19479         (hppa_expand_prologue, hppa_profile_hook): Likewise.
19480         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Add
19481         cast to enum type.
19482         (altivec_expand_vec_set_builtin): Change 0 to EXPAND_NORMAL in
19483         function call.
19484         (emit_unlikely_jump): Use add_reg_note.
19485         (rs6000_emit_allocate_stack): Likewise.
19486         (rs6000_frame_related, rs6000_emit_prologue): Likewise.
19487         (output_toc): Change 1 to INSERT in function call.
19488         (output_profile_hook): Change 0 to LCT_NORMAL in function call.
19489         (rs6000_initialize_trampoline): Likewise.
19490         (rs6000_init_dwarf_reg_sizes_extra): Change 0 to EXPAND_NORMAL in
19491         function call.
19492         * config/s390/s390.c (s390_rtx_costs): Add cast to enum type.
19493         (s390_expand_movmem): Change 0 to OPTAB_DIRECT in function call.
19494         (s390_expand_setmem, s390_expand_cmpmem): Likewise.
19495         (save_gprs): Use add_reg_note.
19496         (s390_emit_prologue): Likewise.
19497         (s390_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
19498         * config/sparc/sparc.c (sparc_expand_prologue): Use add_reg_note.
19499         (sparc_fold_builtin): Add cast to enum type.
19500         * config/spu/spu.c (spu_emit_branch_or_set): Change ior_code to
19501         enum insn_code.
19502         (spu_expand_prologue): Use add_reg_note.
19503         (expand_builtin_args): Change 0 to EXPAND_NORMAL in function call.
19504
19505 2009-04-20  Ian Lance Taylor  <iant@google.com>
19506
19507         * c-parser.c (c_parser_attributes): Change VEC back to tree list.
19508         (c_parser_postfix_expression_after_primary): Get VEC for list of
19509         arguments.  Get original types of arguments.  Call
19510         build_function_call_vec.
19511         (cached_expr_list_1, cached_expr_list_2): New static variables.
19512         (c_parser_expr_list): Change return type to VEC *.  Add
19513         p_orig_types parameter.  Change all callers.
19514         (c_parser_release_expr): New static function.
19515         (c_parser_vec_to_tree_list): New static function.
19516         * c-typeck.c (build_function_call): Rewrite to build a VEC and
19517         call build_function_call_vec.
19518         (build_function_call_vec): New function, based on old
19519         build_function_call.
19520         (convert_arguments): Remove nargs and argarray parameters.  Change
19521         values to a VEC.  Add origtypes parameter.
19522         (build_modify_expr): Add rhs_origtype parameter.  Change all callers.
19523         (convert_for_assignment): Add origtype parameter.  Change all
19524         callers.  If warn_cxx_compat, check for conversion to an enum
19525         type when calling a function.
19526         (store_init_value): Add origtype parameter.  Change all callers.
19527         (digest_init): Likewise.
19528         (struct init_node): Add origtype field.
19529         (add_pending_init): Add origtype parameter.  Change all callers.
19530         (output_init_element): Likewise.
19531         (output_pending_init_elements): Pass origtype from init_node to
19532         output_init_element.
19533         (process_init_element): Pass origtype from c_expr to
19534         output_init_element.
19535         (c_finish_return): Add origtype parameter.  Change all callers.
19536         * c-common.c (sync_resolve_size): Change params to VEC *.  Change
19537         caller.
19538         (sync_resolve_params): Likewise.
19539         (sync_resolve_return): Change params to first_param.  Change caller.
19540         (resolve_overloaded_builtins): Change params to VEC *.  Change
19541         callers.  Save first parameter around call to build_function_call_vec.
19542         * c-decl.c (finish_decl): Add origtype parameter.  Change all
19543         callers.  Call build_function_call_vec rather than
19544         build_function_call for cleanup.
19545         * c-tree.h: Update declarations.
19546         * c-common.h: Update declarations.
19547         * stub-objc.c (objc_rewrite_function_call): Change parameter from
19548         params to first_param.
19549         * target.h (struct gcc_target): Change resolve_overloaded_builtin
19550         params parameter from tree to void *.
19551         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
19552         Change arglist parameter to have type void *, and to be a pointer
19553         to a VEC.
19554         * config/rs6000/rs6000-protos.h
19555         (altivec_resolve_overloaded_builtin): Update declaration.
19556         * config/spu/spu-c.c (spu_resolved_overloaded_builtin): Change
19557         fnargs parameter to have type void *, and to be a pointer to a
19558         VEC.  Call build_function_call_vec instead of
19559         build_function_call.
19560         * config/spu/spu-protos.h (spu_expand_builtin): Update declaration.
19561
19562 2009-04-20  Joey Ye  <joey.ye@intel.com>
19563             Xuepeng Guo  <xuepeng.guo@intel.com>
19564             H.J. Lu  <hongjiu.lu@intel.com>
19565
19566         * config/i386/atom.md: Add bypasses with ix86_dep_by_shift_count.
19567
19568         * config/i386/i386.c (LEA_SEARCH_THRESHOLD): New macro.
19569         (IX86_LEA_PRIORITY): Likewise.
19570         (distance_non_agu_define): New function.
19571         (distance_agu_use): Likewise.
19572         (ix86_lea_for_add_ok): Likewise.
19573         (ix86_dep_by_shift_count): Likewise.
19574
19575         * config/i386/i386.md: Call ix86_lea_for_add_ok to decide we
19576         should split for LEA.
19577
19578         * config/i386/i386-protos.h (ix86_lea_for_add_ok): Declare new
19579         function.
19580         (ix86_dep_by_shift_count): Likewise.
19581
19582 2009-04-20  Richard Guenther  <rguenther@suse.de>
19583
19584         * expr.c (handled_component_p): Move ...
19585         * tree.h (handled_component_p): ... here.
19586         * tree.def: Re-order BIT_FIELD_REF, COMPONENT_REF,
19587         ARRAY_REF, ARRAY_RANGE_REF, VIEW_CONVERT_EXPR, IMAGPART_EXPR
19588         and REALPART_EXPR to be in one group.
19589
19590 2009-04-20  Richard Guenther  <rguenther@suse.de>
19591
19592         * basic-block.h (get_all_dominated_blocks): Declare.
19593         * dominance.c (get_all_dominated_blocks): New function.
19594         * tree-cfg.c (get_all_dominated_blocks): Remove.
19595         (remove_edge_and_dominated_blocks): Adjust.
19596         * tree-ssa-phiprop.c (tree_ssa_phiprop_1): Fold in ...
19597         (tree_ssa_phiprop): ... here.  Use get_all_dominated_blocks
19598         instead of recursing.
19599
19600 2009-04-20  Doug Kwan  <dougkwan@google.com>
19601
19602         * cgraph.h (cgraph_node_ptr): New type for vector functions.
19603         (struct cgraph_node_set_def): New type.
19604         (cgraph_node_set) New type. Also declare vector functions.
19605         (struct cgraph_node_set_element_def): New type.
19606         (cgraph_node_set_element): Ditto.
19607         (cgraph_node_set_iterator): New iterator type.
19608         (cgraph_node_set_new, cgraph_node_set_find, cgraph_node_set_add,
19609         cgraph_node_set_remove, dump_cgraph_node_set,
19610         debug_cgraph_node_set): New prototypes.
19611         (csi_end_p, csi_next, csi_node, csi_start, cgraph_node_in_set_p,
19612         cgraph_node_set_size): New inlines.
19613         * tree-pass.h (struct cgraph_node_set_def): New decl to avoid
19614         including cgraph.h.
19615         (struct ipa_opt_pass): Add struct cgraph_node_set_def
19616         argument to function 'write_summary'.
19617         * ipa.c: Include ggc.h.
19618         (hash_cgraph_node_set_element,
19619         eq_cgraph_node_set_element, cgraph_node_set_new,
19620         cgraph_node_set_add, cgraph_node_set_remove,
19621         cgraph_node_set_find, dump_cgraph_node_set,
19622         debug_cgraph_node_set): New functions.
19623         * Makefile.in (ipa.o): Add dependency on GGC_H.
19624
19625 2009-04-20  Ira Rosen  <irar@il.ibm.com>
19626
19627         PR tree-optimization/39675
19628         * tree-vect-loop.c (vect_transform_loop): Remove currently redundant
19629         check of the return code of vect_schedule_slp. Check that
19630         stmt_vec_info still exists for the statement, before checking its
19631         vectorization type.
19632
19633 2009-04-20  Michael Matz  <matz@suse.de>
19634
19635         * Makefile.in (generated_files): Take out $(simple_generated_c).
19636
19637 2009-04-19  Dave Korn  <dave.korn.cygwin@gmail.com>
19638
19639         * config/i386/cygwin-stdint.h (INTPTR_TYPE):  Remove "long".
19640         (UINTPTR_TYPE):  Likewise.
19641
19642 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
19643
19644         PR c/37481
19645         * c-typeck.c (digest_init): Check for initializing an array with a
19646         string literal.
19647
19648 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
19649
19650         PR c/19771
19651         * c-semantics.c (pop_stmt_list): Propagate
19652         STATEMENT_LIST_HAS_LABEL to parent statement list.
19653
19654 2009-04-19  Adam Nemet  <anemet@caviumnetworks.com>
19655
19656         * config/mips/mips.h (mips_tune_attr): New macro.
19657         * config/mips/mips.md (cpu): Use it.
19658
19659 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
19660
19661         PR c/38243
19662         * c-decl.c (shadow_tag_warned): Diagnose use of restrict when
19663         declaring a tag.
19664
19665 2009-04-19  Diego Novillo  <dnovillo@google.com>
19666
19667         * toplev.c (compile_file): Move call to coverage_finish ...
19668         * cgraphunit.c (ipa_passes): ... here.
19669         Call cgraph_process_new_functions.
19670         * ipa-utils.c (get_base_var): Handle CONSTRUCTOR.
19671         * Makefile.in (cgraphunit.o): Add dependency on COVERAGE_H.
19672
19673 2009-04-19  Jan Hubicka  <jh@suse.cz>
19674
19675         * cgraph.c (cgraph_create_edge, cgraph_set_call_stmt): Set proper
19676         cfun.
19677         (dump_cgraph_node): Dump can throw external flag.
19678         * ipa-pure-const.c (propagate): Fix propagation of nothrow flags.
19679
19680 2009-04-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
19681
19682         PR c/32061
19683         PR c++/36954
19684         * doc/invoke.texi: Add -Wlogical-op to -Wextra.
19685         * common.opt (Wlogical-op): Move from here...
19686         * c.opt (Wlogical-op): ... to here.
19687         * c-typeck.c (parser_build_binary_op): Update call to
19688         warn_logical_operator.
19689         * c-opts.c (c_common_post_options): Enable warn_logical_op with
19690         extra_warnings.
19691         * c-common.c (warn_logical_op): Update.
19692         * c-common.h (warn_logical_op): Update declaration.
19693
19694 2009-04-19  Eric Botcazou  <ebotcazou@adacore.com>
19695
19696         * tree.c (protected_set_expr_location): Fix formatting.
19697
19698 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
19699
19700         PR c/27676
19701         * c-typeck.c (readonly_warning): new.
19702         (build_unary_op, build_modify_expr): Use readonly_warning for
19703         storing into something readonly but not const-qualified.
19704
19705 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
19706
19707         PR c/22367
19708         * c-typeck.c (build_unary_op): Check for taking address of
19709         expression of type void.
19710
19711 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
19712
19713         PR c/35210
19714         * c-typeck.c (build_function_call): Check for calling a function
19715         with qualified void return types.  Call require_complete_type when
19716         generating a trap.
19717
19718 2009-04-18  Jan Hubicka  <jh@suse.cz>
19719
19720         * cgraph.c (cgraph_make_edge, dump_cgraph_node, cgraph_set_call_stmt):
19721         Set nothrow flag.
19722         * cgraph.h (struct function): Reduce loop_nest to 30 bits; add
19723         can_throw_external flag.
19724         * ipa-reference.c (ipa_utils_reduced_inorder): Update call.
19725         * ipa-pure-const.c (ignore_edge): New function.
19726         (propagate): Compute order for NOTHROW computation; set NOTHROWs
19727         only over can_throw_external edges.
19728         (local_pure_const): Add nothrow flag.
19729         * ipa-utils.c (searchc): Add ignore_edge callback.
19730         (ipa_utils_reduced_inorder): Add ignore_edge callback.
19731         * ipa-utils.h (ipa_utils_reduced_inorder): Update prototype.
19732         (set_nothrow_function_flags): Update cgraph.
19733         * tree-cfg.c (verify_stmt): Relax nothrow checking when in IPA mode.
19734
19735 2009-04-18  Richard Guenther  <rguenther@suse.de>
19736
19737         PR middle-end/39804
19738         * tree-ssa-ccp.c (fold_stmt_1): New function factored from ...
19739         (fold_stmt): ... this and ...
19740         (fold_stmt_inplace): ... this.
19741         (fold_stmt_1): Fold references in calls and asms.
19742         * tree-cfg.c (remove_useless_stmts_cond): Use fold_stmt.
19743
19744 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
19745
19746         * tree-vrp.c (ssa_name_nonzero_p): Remove.
19747         * tree.h: Remove the prototype for ssa_name_nonzero_p.
19748
19749 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
19750
19751         * tree.c (function_args_count): Remove.
19752         * tree.h: Remove the prototype for function_args_count.
19753
19754 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
19755
19756         * tree-iterator.c (expr_only): Remove.
19757         * tree.h: Remove the prototype for expr_only.
19758
19759 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
19760
19761         * reginfo.c (cannot_change_mode_set_regs): Remove.
19762         * rtl.h: Remove the prototype for cannot_change_mode_set_regs.
19763
19764 2009-04-08  Anatoly Sokolov  <aesok@post.ru>
19765
19766         * config/avr/avr.md (*rotlsi3_8, *rotlsi3_16, *rotlsi3_24 ): Check
19767         whether operands 0 and 1 overlaps.
19768
19769 2009-04-18  Manuel López-Ibáñez  <manu@gcc.gnu.org>
19770
19771         PR middle-end/36902
19772         * tree-vrp.c (check_array_ref): Pass a location_t instead of a
19773         pointer. Use warning_at instead of warning.
19774         (search_for_addr_array): Likewise.
19775         (check_array_bounds): Likewise.
19776         (check_all_array_refs): Check that the incoming edge is not in the
19777         list of edges to be removed.
19778         (check_all_array_refs): Avoid the temporal pointer.
19779         (vrp_visit_cond_stmt): Fix typo.
19780         (simplify_switch_using_ranges): Handle the case where the switch
19781         index is an integer constant.
19782
19783 2009-04-18  Adam Nemet  <anemet@caviumnetworks.com>
19784
19785         * config/mips/mips.c (mips_final_postscan_insn): Make it static.
19786
19787 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
19788
19789         * doc/extend.texi, doc/invoke.texi: Fix typos.
19790
19791 2009-04-17  Cary Coutant  <ccoutant@google.com>
19792
19793         * tree-flow-inline.h (get_lineno): Fix inverted test.
19794
19795 2009-04-17  Diego Novillo  <dnovillo@google.com>
19796
19797         * tree-ssa-pre.c (create_expression_by_pieces): Remove
19798         assertion for AVAIL_OUT.
19799
19800 2009-04-17  Mike Frysinger  <vapier@gentoo.org>
19801
19802         PR target/38627
19803         * config/sh/lib1funcs.asm [__ELF__ && __linux__]: Add .note.GNU-stack.
19804         * config/sh/linux-atomic.asm: Likewise.
19805
19806 2009-04-17  Diego Novillo  <dnovillo@google.com>
19807
19808         * except.c (debug_eh_tree): New.
19809         (struct eh_region, struct eh_status): Move ...
19810         * except.h: ... here.
19811         (add_type_for_runtime): Declare extern.
19812         (lookup_type_for_runtime): Likewise.
19813         (debug_eh_tree): Declare.
19814         * Makefile.in (GTFILES): List except.h before except.c
19815
19816 2009-04-17  Diego Novillo  <dnovillo@google.com>
19817
19818         * omp-low.c (create_omp_child_function): Set DECL_CONTEXT for DECL.
19819         * cgraphunit.c (cgraph_build_static_cdtor): Likewise.
19820         * tree-dfa.c (find_referenced_vars_in): Factor out of ...
19821         (find_vars_r): ... here.
19822         * tree-flow.h (find_referenced_vars_in): Declare.
19823         * tree-ssa-pre.c (create_expression_by_pieces): Assert
19824         that AVAIL_OUT exists for BLOCK.
19825         * Makefile.in (CGRAPH_H): Add dependency on cif-code.def
19826         (tree-loop-distribution.o): Fix dependency on TREE_VECTORIZER_H.
19827         (tree-parloops.o): Likewise.
19828
19829 2009-04-17  Simon Baldwin  <simonb@google.com>
19830
19831         * toplev.c (default_tree_printer): Add handling for %E format.
19832
19833 2009-04-17  Diego Novillo  <dnovillo@google.com>
19834
19835         * tree-pretty-print.c (dump_generic_node): Add break after
19836         TREE_BINFO handler.  Handle COMPLEX_TYPE, REAL_TYPE and
19837         FIXED_POINT_TYPE.  Handle NULL TREE_TYPEs.  Handle METHOD_TYPE and
19838         FUNCTION_TYPE together.  Call print_struct_decl when printing
19839         structures and TDF_SLIM is not given.
19840         (print_struct_decl): Fix logic for detecting recursion.
19841
19842 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
19843
19844         PR 31567
19845         * gcc.c (create_at_file): New.
19846         (compile_input_file_p): New.
19847         (do_spec_1): Use @args files for %i. Use create_at_file for %o.
19848         * main.c (main): Update call to toplev_main.
19849         * toplev.c (toplev_main): Change signature. Call expandargv.
19850         * toplev.h (toplev_main): Change signature.
19851
19852 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
19853
19854         * dwarf2out.c (field_byte_offset): Use the type size as the field size
19855         if the latter is not constant.
19856
19857 2009-04-17  David Edelsohn  <edelsohn@gnu.org>
19858
19859         * dbxout.c (xcoff_debug_hooks): Add set_name_debug_nothing.
19860
19861 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
19862
19863         * dbxout.c (dbxout_block): Reinstate test on TREE_USED.
19864         * tree-ssa-live.c (remove_unused_scope_block_p): Update TREE_USED bit.
19865
19866 2009-04-17  Richard Guenther  <rguenther@suse.de>
19867
19868         * tree-ssa-structalias.c (get_constraint_for_component_ref):
19869         Handle component references view-converting an invariant address.
19870
19871 2009-04-17  Adam Nemet  <anemet@caviumnetworks.com>
19872
19873         * doc/tm.texi (TARGET_DEFAULT_TARGET_FLAGS,
19874         TARGET_MIN_ANCHOR_OFFSET, TARGET_MAX_ANCHOR_OFFSET,
19875         TARGET_HAVE_SRODATA_SECTION, TARGET_HAVE_TLS,
19876         TARGET_UNWIND_TABLES_DEFAULT, TARGET_TERMINATE_DW2_EH_FRAME_INFO):
19877         Use @deftypevr rather than @deftypevar.
19878
19879 2009-04-17  Richard Guenther  <rguenther@suse.de>
19880
19881         * tree-ssa-forwprop.c (get_prop_dest_stmt): Clean up tuplification.
19882         (get_prop_source_stmt): Likewise.
19883         (can_propagate_from): Likewise.
19884
19885 2009-04-17  Andrew Stubbs  <ams@codesourcery.com>
19886
19887         * configure.ac: Add new AC_SUBST for TM_ENDIAN_CONFIG,
19888         TM_MULTILIB_CONFIG and TM_MULTILIB_EXCEPTIONS_CONFIG.
19889         (--with-multilib-list): Add default value.
19890         * configure: Regenerate.
19891         * Makefile.in (TM_ENDIAN_CONFIG): Define.
19892         (TM_MULTILIB_CONFIG, TM_MULTILIB_EXCEPTIONS_CONFIG): Define.
19893         * config.gcc (sh-*-*): Switch to using TM_ENDIAN_CONFIG,
19894         TM_MULTILIB_CONFIG, and TM_MULTILIB_EXCEPTIONS_CONFIG.
19895         Don't add default cpu to multilib list unnecessarily, but do enable
19896         the relevant compiler option..
19897         Add support for --with-multilib-list=<blank> and
19898         --with-multilib-list=!<somelib> to supress unwanted multilibs.
19899         * config/sh/t-sh (DEFAULT_ENDIAN, OTHER_ENDIAN): New variables.
19900         (MULTILIB_ENDIAN, MULTILIB_CPUS): Delete variables.
19901         (MULTILIB_OPTIONS): Redefine using OTHER_ENDIAN and
19902         TM_MULTILIB_CONFIG.
19903         (MULTILIB_EXCEPTIONS): Add TM_MULTILIB_EXCEPTIONS_CONFIG.
19904         (MULTILIB_OSDIRNAMES): New variable.
19905         * config/sh/t-1e: Delete file.
19906         * config/sh/t-mlib-sh1: Delete file.
19907         * config/sh/t-mlib-sh2: Delete file.
19908         * config/sh/t-mlib-sh2a: Delete file.
19909         * config/sh/t-mlib-sh2a-nofpu: Delete file.
19910         * config/sh/t-mlib-sh2a-single: Delete file.
19911         * config/sh/t-mlib-sh2a-single-only: Delete file.
19912         * config/sh/t-mlib-sh2e: Delete file.
19913         * config/sh/t-mlib-sh3e: Delete file.
19914         * config/sh/t-mlib-sh4: Delete file.
19915         * config/sh/t-mlib-sh4-nofpu: Delete file.
19916         * config/sh/t-mlib-sh4-single: Delete file.
19917         * config/sh/t-mlib-sh4-single-only: Delete file.
19918         * config/sh/t-mlib-sh4a: Delete file.
19919         * config/sh/t-mlib-sh4a-nofpu: Delete file.
19920         * config/sh/t-mlib-sh4a-single: Delete file.
19921         * config/sh/t-mlib-sh4a-single-only: Delete file.
19922         * config/sh/t-mlib-sh4al: Delete file.
19923         * config/sh/t-mlib-sh5-32media: Delete file.
19924         * config/sh/t-mlib-sh5-32media-nofpu: Delete file.
19925         * config/sh/t-mlib-sh5-64media: Delete file.
19926         * config/sh/t-mlib-sh5-64media-nofpu: Delete file.
19927         * config/sh/t-mlib-sh5-compact: Delete file.
19928         * config/sh/t-mlib-sh5-compact-nofpu: Delete file.
19929         * config/sh/t-linux: Don't override MULTILIB_EXCEPTIONS.
19930         * doc/install.texi (Options specification): Add
19931         --with-multilib-list and --with-endian.
19932
19933 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
19934
19935         * Makefile.in (REVISION_s): Always include quotes. Change ifdef to use
19936         REVISION_c.
19937         (OBJS-common): Add plugin-version.o.
19938         (plugin-version.o): New.
19939         * gcc-plugin.h (plugin_gcc_version): New.
19940         (plugin_default_version_check): New.
19941         (plugin_init_func, plugin_init): Add version argument.
19942         * plugin-version.c: New.
19943         * plugin.c (str_plugin_gcc_version_name): New.
19944         (try_init_one_plugin): Read plugin_gcc_version from the plugin and
19945         pass it to the init function.
19946         (plugin_default_version_check): New.
19947
19948 2009-04-17  Richard Guenther  <rguenther@suse.de>
19949
19950         * tree-ssa-alias.c (refs_may_alias_p_1): Do not use TBAA
19951         for decl-vs-decl disambiguation.
19952
19953 2009-04-17  Andreas Krebbel  <krebbel1@de.ibm.com>
19954
19955         * config/s390/s390.h (s390_tune_attr): New macro definition.
19956         * config/s390/s390.md (cpu attribute): Map to s390_tune_attr.
19957
19958 2009-04-17  Richard Guenther  <rguenther@suse.de>
19959
19960         * tree-ssa-ccp.c (struct fold_stmt_r_data): Remove.
19961         (fold_stmt_r): Likewise.
19962         (maybe_fold_reference): New function.
19963         (fold_gimple_assign): Handle cases fold_stmt_r did.
19964         (fold_stmt): Do not use fold_stmt_r.
19965         (fold_stmt_inplace): Likewise.
19966
19967 2009-04-17  Richard Guenther  <rguenther@suse.de>
19968
19969         * tree-ssa-dom.c (gimple_assign_unary_useless_conversion_p): Remove.
19970         (record_equivalences_from_stmt): Remove useless checks and
19971         simplifications.
19972         * tree-ssa-pre.c (eliminate): Avoid converting a constant if
19973         the type is already suitable.
19974
19975 2009-04-17  Paolo Bonzini  <bonzini@gnu.org>
19976
19977         * config/sh/sh.h (FUNCTION_VALUE): Fix call to sh_promote_prototypes.
19978
19979 2009-04-17  Uros Bizjak  <ubizjak@gmail.com>
19980
19981         * config/arm/sfp-machine.h (__gcc_CMPtype): New typedef.
19982         (CMPtype): Define as __gcc_CMPtype.
19983
19984 2009-04-17  Aurelien Jarno  <aurelien@aurel32.net>
19985
19986         * config.gcc: Add soft-fp/t-softfp and i386/t-linux to tmake_file
19987         for i[34567]86-*-kfreebsd*-gnu*, x86_64-*-kfreebsd*-gnu*.
19988
19989 2009-04-17  Richard Guenther  <rguenther@suse.de>
19990
19991         PR tree-optimization/39746
19992         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Remove
19993         special-casing for builtins and static variable use/def.
19994         (call_may_clobber_ref_p_1): Likewise.
19995
19996 2009-04-16  Ian Lance Taylor  <iant@google.com>
19997
19998         * df.h: Include "timevar.h".
19999         (struct df_problem): Change tv_id field to timevar_id_t.
20000         * tree-pass.h: Include "timevar.h".
20001         (struct opt_pass): Change tv_id field to timevar_id_t.
20002         * timevar.h (timevar_id_t): Define TV_NONE.
20003         * passes.c (execute_one_ipa_transform_pass): Check for tv_id !=
20004         TV_NONE rather than tv_id != 0.
20005         (execute_one_pass): Likewise.
20006         * Makefile.in (DF_H): Add $(TIMEVAR_H).
20007         (TREE_PASS_H): Define.  Change all instances of tree-pass.h in
20008         dependencies to $(TREE_PASS_H).
20009         * bt-load.c (pass_branch_target_load_optimize1): Set tv_id field
20010         to TV_NONE.
20011         (pass_branch_target_load_optimize2): Likewise.
20012         * cfglayout.c (pass_into_cfg_layout_mode): Likewise.
20013         (pass_outof_cfg_layout_mode): Likewise.
20014         * cgraphbuild.c (pass_remove_cgraph_callee_edges): Likewise.
20015         (pass_rebuild_cgraph_edges): Likewise.
20016         (pass_remove_cgraph_callee_edges): Likewise.
20017         * df-core.c (pass_df_initialize_opt): Likewise.
20018         (pass_df_initialize_no_opt): Likewise.
20019         (pass_df_finish): Likewise.
20020         * emit-rtl.c (pass_unshare_all_rtl): Likewise.
20021         * except.c (pass_set_nothrow_function_flags): Likewise.
20022         (pass_convert_to_eh_region_ranges): Likewise.
20023         * final.c (pass_compute_alignments): Likewise.
20024         * function.c (pass_instantiate_virtual_regs): Likewise.
20025         (pass_init_function): Likewise.
20026         (pass_leaf_regs): Likewise.
20027         (pass_match_asm_constraints): Likewise.
20028         * gimple-low.c (pass_lower_cf): Likewise.
20029         (pass_mark_used_blocks): Likewise.
20030         * init-regs.c (pass_initialize_regs): Likewise.
20031         * integrate.c (pass_initial_value_sets): Likewise.
20032         * ira.c (pass_ira): Likewise.
20033         * jump.c (pass_cleanup_barriers): Likewise.
20034         * omp-low.c (pass_expand_omp): Likewise.
20035         (pass_lower_omp): Likewise.
20036         * matrix-reorg.c (pass_ipa_matrix_reorg): Likewise.
20037         * recog.c (pass_split_all_insns): Likewise.
20038         (pass_split_after_reload): Likewise.
20039         (pass_split_before_regstack): Likewise.
20040         (pass_split_before_sched2): Likewise.
20041         (pass_split_for_shorten_branches): Likewise.
20042         * reginfo.c (pass_reginfo_init): Likewise.
20043         (pass_subregs_of_mode_init): Likewise.
20044         (pass_subregs_of_mode_finish): Likewise.
20045         * passes.c (pass_postreload): Likewise.
20046         * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
20047         * tree-cfg.c (pass_remove_useless_stmts): Likewise.
20048         (pass_warn_function_return): Likewise.
20049         (pass_warn_function_noreturn): Likewise.
20050         * tree-complex.c (pass_lower_complex): Likewise.
20051         (pass_lower_complex_O0): Likewise.
20052         * tree-if-conv.c (pass_if_conversion): Likewise.
20053         * tree-into-ssa.c (pass_build_ssa): Likewise.
20054         * tree-mudflap.c (pass_mudflap_1): Likewise.
20055         (pass_mudflap_2): Likewise.
20056         * tree-nomudflap.c (pass_mudflap_1): Likewise.
20057         (pass_mudflap_2): Likewise.
20058         * tree-nrv.c (pass_return_slot): Likewise.
20059         * tree-object-size.c (pass_object_sizes): Likewise.
20060         * tree-optimize.c (pass_all_optimizations): Likewise.
20061         (pass_early_local_passes): Likewise.
20062         (pass_all_early_optimizations): Likewise.
20063         (pass_cleanup_cfg): Likewise.
20064         (pass_cleanup_cfg_post_optimizing): Likewise.
20065         (pass_free_datastructures): Likewise.
20066         (pass_free_cfg_annotations): Likewise.
20067         (pass_fixup_cfg): Likewise.
20068         (pass_init_datastructures): Likewise.
20069         * tree-ssa.c (pass_early_warn_uninitialized): Likewise.
20070         (pass_late_warn_uninitialized): Likewise.
20071         (pass_update_address_taken): Likewise.
20072         * tree-ssa-ccp.c (pass_fold_builtins): Likewise.
20073         * tree-ssa-math-opts.c (pass_cse_reciprocals): Likewise.
20074         (pass_cse_sincos): Likewise.
20075         (pass_convert_to_rsqrt): Likewise.
20076         * tree-ssa-structalias.c (pass_build_alias): Likewise.
20077         * tree-stdarg.c (pass_stdarg): Likewise.
20078         * tree-tailcall.c (pass_tail_recursion): Likewise.
20079         (pass_tail_calls): Likewise.
20080         * tree-vect-generic.c (pass_lower_vector): Likewise.
20081         (pass_lower_vector_ssa): Likewise.
20082         * tree-vectorizer.c (pass_ipa_increase_alignment): Likewise.
20083
20084 2009-04-16  Joseph Myers  <joseph@codesourcery.com>
20085
20086         * config/mips/mips.c (mips_rtx_cost_data): Use SOFT_FP_COSTS in
20087         XLR entry.
20088         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC):
20089         Handle -march=xlr.
20090         * config/mips/xlr.md (ir_xlr_alu): Also accept insn types move,
20091         logical and signext.
20092
20093 2009-04-16  Kaz Kojima  <kkojima@gcc.gnu.org>
20094
20095         PR target/39767
20096         * config/sh/predicates.md (arith_operand): Check if the operand
20097         of TRUNCATE is a REG.
20098
20099 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
20100
20101         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
20102         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
20103
20104 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
20105
20106         * tree-iterator.c (tsi_split_statement_list_after,
20107         tsi_split_statement_list_before): Remove.
20108         * tree-iterator.h: Remove the prototypes for
20109         tsi_split_statement_list_after and tsi_split_statement_list_before.
20110
20111 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
20112
20113         * tree-ssa-propagate.c (stmt_makes_single_load): Remove.
20114         * tree-ssa-propagate.h: Remove the prototype for
20115         stmt_makes_single_load.
20116
20117 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
20118
20119         * emit-rtl.c (set_mem_attrs_from_reg): Remove.
20120         * rtl.h: Remove the prototype for set_mem_attrs_from_reg.
20121
20122 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
20123
20124         * tree-iterator.c (EXPR_LAST_BODY): Remove.
20125
20126 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
20127
20128         * except.c (eh_region_outer_p): Remove.
20129         * except.h: Remove the prototype for eh_region_outer_p.
20130
20131 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
20132
20133         * function.c (current_function_assembler_name): Remove.
20134         * function.h: Remove the prototype for
20135         current_function_assembler_name.
20136
20137 2009-04-16  Ian Lance Taylor  <iant@google.com>
20138
20139         * rtlanal.c (alloc_reg_note): New function, broken out of add_reg_note.
20140         (add_reg_note): Call alloc_reg_note.
20141         * rtl.h (alloc_reg_note): Declare.
20142         * combine.c (try_combine): Use alloc_reg_note.
20143         (recog_for_combine, move_deaths): Likewise.
20144         (distribute_notes): Use alloc_reg_note and add_reg_note.
20145         * haifa-sched.c (sched_create_recovery_edges): Use add_reg_note.
20146         * combine-stack-adj.c (adjust_frame_related_expr): Likewise.
20147         * reload1.c (eliminate_regs_1): Use alloc_reg_note.
20148
20149 2009-04-16  Vladimir Makarov  <vmakarov@redhat.com>
20150
20151         PR rtl-optimization/39762
20152         * ira-int.h (ira_register_move_cost, ira_may_move_in_cost,
20153         ira_may_move_out_cost): Add comments about way of their usage.
20154         (ira_get_register_move_cost, ira_get_may_move_cost): New functions.
20155
20156         * ira-conflicts.c (process_regs_for_copy): Use function
20157         ira_get_register_move_cost instead of global
20158         ira_register_move_cost.
20159
20160         * ira-color.c (update_copy_costs, calculate_allocno_spill_cost,
20161         color_pass, move_spill_restore, update_curr_costs): Ditto.
20162
20163         * ira-lives.c (process_single_reg_class_operands): Ditto.
20164
20165         * ira-emit.c (emit_move_list): Ditto.
20166
20167         * ira-costs.c (copy_cost): Don't call ira_init_register_move_cost.
20168         (record_reg_classes): Ditto.  Use functions
20169         ira_get_register_move_cost and ira_get_may_move_cost instead of
20170         global vars ira_register_move_cost, ira_may_move_out_cost and
20171         ira_may_move_in_cost.
20172         (record_address_regs): Don't call ira_init_register_move_cost.
20173         Use function ira_get_may_move_cost instead of global
20174         ira_may_move_in_cost.
20175         (process_bb_node_for_hard_reg_moves): Use function
20176         ira_get_register_move_cost instead of global ira_register_move_cost.
20177         (ira_costs): Don't call ira_init_register_move_cost.
20178
20179 2009-04-16  Richard Guenther  <rguenther@suse.de>
20180
20181         * tree-cfg.c (verify_gimple_assign_binary):
20182         Allow POINTER_PLUS_EXPR-like PLUS_EXPR for vectors.
20183         * ipa-struct-reorg.c (gen_size): Fold the built expressions.
20184         (create_general_new_stmt): Note that this function is broken.
20185
20186 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
20187
20188         * common.opt (fhelp): Add Var(help_flag).
20189         * gcc-plugin.h (plugin_info): Add help.
20190         * plugin.c (plugin_name_args): Add help.
20191         (register_plugin_info): Set plugin->help.
20192         (print_help_one_plugin): New.
20193         (print_plugins_help): New.
20194         * plugin.h (print_plugins_help): New.
20195         * toplev.c (toplev_main): Call print_plugins_help if needed.
20196
20197 2009-04-16  Richard Guenther  <rguenther@suse.de>
20198
20199         * gimple.c (gimple_copy): Do not clear addresses_taken bitmap.
20200         (gimple_ior_addresses_taken_1): New function.
20201         (gimple_ior_addresses_taken): Likewise.
20202         * gimple.h (struct gimple_statement_with_ops_base): Remove
20203         addresses_taken member.
20204         (gimple_ior_addresses_taken): Declare.
20205         (gimple_addresses_taken, gimple_addresses_taken_ptr,
20206         gimple_set_addresses_taken): Remove.
20207         * ipa-reference.c (mark_address): New function.
20208         (scan_stmt_for_static_refs): Use it for marking addresses taken.
20209         * tree-ssa-operands.c (add_to_addressable_set): Rename to ...
20210         (mark_address_taken): ... this.  Just set TREE_ADDRESSABLE.
20211         (gimple_add_to_addresses_taken): Remove.
20212         (get_tmr_operands): Call mark_address_taken.
20213         (get_asm_expr_operands): Likewise.
20214         (get_expr_operands): Likewise.
20215         (build_ssa_operands): Do not clear the addresses_taken bitmap.
20216         (free_stmt_operands): Do not free it.
20217         * tree-ssa.c (delete_tree_ssa): Likewise.
20218         (execute_update_addresses_taken): Use gimple_ior_addresses_taken.
20219
20220 2009-04-16  Richard Guenther  <rguenther@suse.de>
20221
20222         * gimple.h (walk_stmt_load_store_addr_ops): Declare.
20223         (walk_stmt_load_store_ops): Likewise.
20224         * gimple.c (get_base_loadstore): New function.
20225         (walk_stmt_load_store_addr_ops): Likewise.
20226         (walk_stmt_load_store_ops): Likewise.
20227         * ipa-pure-const.c (check_op): Simplify.
20228         (check_load, check_store): New functions.
20229         (check_stmt): Use walk_stmt_load_store_ops.
20230         * ipa-reference.c (mark_load): Adjust signature.
20231         (mark_store): Likewise.
20232         (scan_stmt_for_static_refs): Use walk_stmt_load_store_addr_ops.
20233
20234 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
20235
20236         * gcc-plugin.h (plugin_event): Add PLUGIN_INFO.
20237         (plugin_info): New.
20238         * opts.c (common_handle_option): Don't call print_version.
20239         * plugin.c (plugin_name_args): Add version.
20240         (register_plugin_info): New.
20241         (register_callback): Handle PLUGIN_INFO.
20242         (try_init_one_plugin): New.
20243         (init_one_plugin): Use try_init_one_plugin. Only free plugin_name_args
20244         if failed to init.
20245         (finalize_one_plugin): New.
20246         (finalize_plugins): New.
20247         (print_one_plugin): New.
20248         (print_plugins_versions): New.
20249         * plugin.h (print_plugins_versions): New.
20250         (finalize_plugins): New.
20251         * toplev.c (compile_file): Don't call initialize_plugins.
20252         (print_version): Call print_plugins_versions.
20253         (toplev_main): Call initialize_plugins. Print version if needed.
20254         Call finalize_plugins.
20255
20256 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
20257
20258         * common.opt (fversion): New.
20259         * gcc.c (print_version): New.
20260         (process_command): Don't print the version. Just set print_version.
20261         (main): Print version. Call subprocesses if print_version and
20262         verbose_flag are set.
20263         * opts.c (common_handle_option): Handle OPT_fversion.
20264
20265 2009-04-16  Richard Guenther  <rguenther@suse.de>
20266             Ira Rosen  <irar@il.ibm.com>
20267
20268         PR tree-optimization/39698
20269         * tree-vect-loop.c (get_initial_def_for_reduction): Use the
20270         type of the reduction variable.  Only generate the def if
20271         it is needed.
20272
20273         * omp-low.c (expand_omp_for_generic): When converting to a pointer
20274         make sure to first convert to an integer of the same precision.
20275         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer): Retain
20276         the type of the evolution correctly in computing the new
20277         induction variable base.
20278
20279 2009-04-16  Richard Guenther  <rguenther@suse.de>
20280
20281         PR middle-end/39625
20282         * tree-cfg.c (make_blocks): Split statements with to-be
20283         abnormal SSA names on the lhs.
20284
20285 2009-04-16  Paolo Bonzini  <bonzini@gnu.org>
20286
20287         * c-common.c (vector_targets_convertible_p, vector_types_convertible_p):
20288         Use TYPE_VECTOR_OPAQUE instead of targetm.vector_opaque_p.
20289         * c-typeck.c (really_start_incremental_init): Likewise.
20290         * target-def.h (TARGET_VECTOR_OPAQUE_P): Remove.
20291         (TARGET_INITIALIZER): Remove it.
20292         * target.h (struct target): Remove vector_opaque_p.
20293         * tree.c (build_opaque_vector_type): New.
20294         * tree.h (TYPE_VECTOR_OPAQUE): New.
20295         (build_opaque_vector_type): Declare.
20296         * doc/tm.texi (TARGET_VECTOR_OPAQUE_P): Remove.
20297         * config/rs6000/rs6000.c (build_opaque_vector_type,
20298         rs6000_is_vector_type, TARGET_VECTOR_OPAQUE_P): Remove.
20299         (rs6000_init_builtins): Use build_opaque_vector_type for
20300         opaque_V4SI_type_node.
20301
20302 2009-04-15  Catherine Moore  <clm@codesourcery.com>
20303
20304         * debug.h (set_name):  Declare.
20305         * dwarf2out.c (dwarf2out_set_name): Declare.
20306         (dwarf2_debug_hooks): Add set_name.
20307         (find_AT_string): New.
20308         (add_AT_string): Call find_AT_string.
20309         (dwarf2out_set_name): New.
20310         * cp/decl.c (grokdeclarator): Call set_name.
20311         * vmsdbgout.c (vmsdbg_debug_hooks): Add set_name_debug_nothing.
20312         * debug.c (do_nothing_debug_hooks):  Likewise.
20313         * dbxout.c (dbx_debug_hooks): Likewise.
20314         * sdbout.c (sdb_debug_hooks): Likewise.
20315
20316 2009-04-15  Michael Eager  <eager@eagercon.com>
20317
20318         * config/rs6000/rs6000.c (rs6000_function_value): Set function return
20319         reg for single-precision FPU.
20320         * config/rs6000/rs6000.md (movsi_internal1): Only for
20321         !TARGET_SINGLE_FPU.
20322         (movsi_internal1_single): New. Add pattern to move SI values to/from
20323         single-precision FP regs.
20324
20325 2009-04-15  Richard Guenther  <rguenther@suse.de>
20326
20327         * omp-low.c (lower_rec_input_clauses): Build correct address
20328         expressions.
20329         (expand_omp_for_generic): Fix multiplication type.
20330         * tree-loop-distribution.c (build_size_arg): Build a size_t argument.
20331         (generate_memset_zero): Fix types.
20332         * tree-profile.c (prepare_instrumented_value): Correctly
20333         widen a pointer.
20334
20335 2009-04-15  Ian Lance Taylor  <iant@google.com>
20336
20337         * c.opt (Wenum-compare): Enable for C and Objc.  Initialize to -1.
20338         * c-opts.c (c_common_handle_option): For C, set warn_enum_compare
20339         for -Wall and for -Wc++-compat.
20340         (c_common_post_options): For C++, set warn_enum_compare if not
20341         already set.
20342         * c-tree.h (struct c_expr): Add field original_type.
20343         (build_external_ref): Update declaration.
20344         * c-parser.c (c_parser_braced_init): Set original_type.
20345         (c_parser_initelt): Likewise.
20346         (c_parser_expr_no_commas): Likewise.
20347         (c_parser_conditional_expression): Likewise.
20348         (c_parser_cast_expression): Likewise.
20349         (c_parser_unary_expression): Likewise.  Pull setting of
20350         original_code to top of function.
20351         (c_parser_sizeof_expression): Set original_type.
20352         (c_parser_alignof_expression): Likewise.
20353         (c_parser_postfix_expression): Likewise.  Pull setting of
20354         original_code to top of function.
20355         (c_parser_postfix_expression_after_paren_type): Set original_type.
20356         (c_parser_postfix_expression_after_primary): Likewise.
20357         (c_parser_expression): Likewise.
20358         * c-typeck.c (build_external_ref): Add type parameter.  Change all
20359         callers.
20360         (c_expr_sizeof_expr): Set original_type field.
20361         (parser_build_unary_op): Likewise.
20362         (parser_build_binary_op): Likewise.  Optionally warn about
20363         comparisons of enums of different types.
20364         (digest_init): Set original_type field.
20365         (really_start_incremental_init): Likewise.
20366         (push_init_level, pop_init_level): Likewise.
20367         * doc/invoke.texi (Warning Options): -Wenum-compare now
20368         supported in C.
20369
20370 2009-04-15  Richard Guenther  <rguenther@suse.de>
20371
20372         * tree-ssa-pre.c (eliminate): When replacing a PHI node carry
20373         out a necessary conversion.
20374         * tree-ssa-sccvn.c (run_scc_vn): Also assign value-ids to
20375         names we didn't value number.
20376         * tree-mudflap.c (mf_build_check_statement_for): Use correct types.
20377
20378 2009-04-15  Richard Guenther  <rguenther@suse.de>
20379
20380         PR tree-optimization/39764
20381         * tree-ssa-ccp.c (get_value): Canonicalize value with
20382         canonicalize_float_value.
20383
20384 2009-04-15  Jan Hubicka  <jh@suse.cz>
20385
20386         * builtins.def (va_start, va_end, va_copy): Fix my previous commit.
20387         Wrong version of patch.
20388
20389 2009-04-15  Jan Hubicka  <jh@suse.cz>
20390
20391         * builtins.def (va_start, va_end, va_copy): Mark nothrow.
20392
20393 2009-04-15  Nathan Sidwell  <nathan@codesourcery.com>
20394
20395         * config/rs6000/rs6000.c (rs6000_init_builtins): Set TYPE_NAME of
20396         our distinct integral and vector types.
20397
20398 2009-04-15  Rafael Avila de Espindola  <espindola@google.com>
20399
20400         * class.c (build_vtbl_ref_1): Remove call to assemble_external.
20401         * init.c (build_vtbl_address): Remove call to assemble_external.
20402
20403 2009-04-14  Daniel Jacobowitz  <dan@codesourcery.com>
20404
20405         * config/rs6000/rs6000.c (rs6000_dwarf_register_span): Fix debug
20406         output for other floating point modes.
20407
20408 2009-04-14  Diego Novillo  <dnovillo@google.com>
20409
20410         * diagnostic.c (diagnostic_report_diagnostic): Do not
20411         warn about loaded plugins for DK_ERROR and DK_WARNING.
20412         * c-decl.c (declspecs_add_type): Move call to
20413         invoke_plugin_callbacks ...
20414         * c-parser.c (c_parser_declspecs): ... here.
20415         * plugin.c (dump_active_plugins): Tidy output.
20416
20417 2009-04-14  Diego Novillo  <dnovillo@google.com>
20418             Le-Chun Wu  <lcwu@google.com>
20419
20420         * configure.ac: Add --enable-plugin support.
20421         Define ENABLE_PLUGIN and PLUGINLIBS when specified.
20422         * Makefile.in (PLUGIN_H): Define.
20423         Export ENABLE_PLUGIN and GMPINC to site.exp.
20424         Add PLUGINLIBS to link command.
20425         Add/modify dependencies for plugin.o and files including plugin.h.
20426         (plugin.o): New.
20427         * config.in: Regenerate.
20428
20429         * opts.c (common_handle_option): Handle OPT_fplugin_ and
20430         OPT_fplugin_arg_.
20431
20432 2009-04-14  Le-Chun Wu  <lcwu@google.com>
20433
20434         * tree-pass.h (register_one_dump_file): Add a prototype for
20435         register_one_dump_file.
20436         * toplev.c (compile_file): Call initialize_plugins.
20437         (do_compile): Call invoke_plugin_callbacks.
20438         (toplev_main): Call invoke_plugin_callbacks.
20439         * common.opt: Add -fplugin= and -fplugin-arg-.
20440         * gcc-plugin.h: New public header file for plugins to include.
20441         * plugin.c: New source file.
20442         * plugin.h: New internal header file.
20443         * passes.c (register_one_dump_file): Make it external.
20444
20445         * c-parser.c (c_parser_declspecs): Call invoke_plugin_callbacks.
20446
20447 2009-04-14  Diego Novillo  <dnovillo@google.com>
20448
20449         * doc/plugins.texi: New.
20450         * doc/gccint.texi: Add reference to Plugins chapter.
20451         * doc/invoke.texi: Document -fplugin and -fplugin-arg
20452         * diagnostic.c (diagnostic_report_diagnostic): Warn about
20453         loaded plugins, if any.
20454         * timevar.def (TV_PLUGIN_INIT): Define.
20455         (TV_PLUGIN_RUN): Define.
20456         * plugin.c: Include timevar.h
20457         (plugins_active_p): New.
20458         (dump_active_plugins): New.
20459         (debug_active_plugins): New.
20460
20461 2009-04-14  Joseph Myers  <joseph@codesourcery.com>
20462
20463         * config/sol2.h (LINK_ARCH32_SPEC_BASE): Use %R with absolute
20464         library paths.
20465         * config/sparc/sol2-bi.h (LINK_ARCH64_SPEC_BASE): Likewise.
20466
20467 2009-04-14  Kazu Hirata  <kazu@codesourcery.com>
20468
20469         * config/arm/arm.c (arm_rtx_costs_1): Treat a minus with a shift
20470         the same as a minus without a shift.
20471
20472 2009-04-14  Nick Clifton  <nickc@redhat.com>
20473
20474         * config/stormy16/stormy16.md (ineqbranch_1): Do not assume that
20475         comparisons with small integers will always produce a short
20476         branch.
20477
20478 2009-04-14  Rafael Avila de Espindola  <espindola@google.com>
20479
20480         Merge:
20481         2008-12-19  Diego Novillo  <dnovillo@google.com>
20482
20483         * cgraph.c (dump_cgraph_node): Show memory address of NODE.
20484
20485 2009-04-14  Richard Guenther  <rguenther@suse.de>
20486
20487         * tree-cfg.c (verify_gimple_assign_unary): Adjust vector code
20488         verification.
20489         (verify_gimple_assign_binary): Likewise.  Handle shifts and
20490         rotates correctly.
20491         (verify_gimple_phi): Print the mismatched argument position.
20492         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer):
20493         Fix types.
20494         (vect_update_init_of_dr): Likewise.
20495         * matrix-reorg.c (transform_access_sites): Do what the
20496         comment suggests.
20497         * omp-low.c (expand_omp_atomic_pipeline): Use the correct types.
20498
20499 2009-04-13  Michael Eager  <eager@eagercon.com>
20500
20501         * config/rs6000/rs6000-c.c: generate defines if rs6000_xilinx_fpu:
20502         _XFPU, _XFPU_SP_LITE, _XFPU_SP_FULL, _XFPU_DP_LITE, _XFPU_DP_FULL
20503         * config/rs6000/xilinx.h: New.  Spec for powerpc-xilinx-eabi
20504         * config.gcc (powerpc-xilinx-eabi): add xilinx.h to tm_file,
20505         remove duplicate config
20506
20507 2009-04-13  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
20508
20509         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Dump
20510         file_name:line_number type locator of the call site.
20511
20512 2009-04-13  Vladimir Makarov  <vmakarov@redhat.com>
20513
20514         * genautomata.c: Put blank after comma.
20515         (automaton_decls): New.
20516         (struct unit_usage): Add comments to member next.
20517         (store_alt_unit_usage): Keep the list ordered.
20518         (unit_present_on_list_p, equal_alternatives_p): New.
20519         (check_regexp_units_distribution): Check units distribution
20520         correctness correctly.
20521         (main): Don't write automata if error is found.  Return correct
20522         exit code.
20523
20524         * config/m68k/cf.md (cfv4_ds): Remove.
20525         (cfv4_pOEP1, cfv4_sOEP1, cfv4_pOEP2,cfv4_sOEP2, cfv4_pOEP3,
20526         cfv4_sOEP3): Assign to cfv4_oep instead of cfv4_ds.
20527
20528         * config/rs6000/power4.md (lsuq_power4, iq_power4, fpq_power4,
20529         power4-load-ext, power4-store, power4-store-update,
20530         power4-fpstore, power4-fpstore-update, power4-two, power4-three,
20531         power4-insert, power4-compare, power4-lmul-cmp, power4-imul-cmp,
20532         power4-lmul, , power4-imul, power4-imul3, power4-sdiv,
20533         power4-sqrt, power4-isync): Modify reservation to make correct
20534         unit distribution to automata.
20535
20536         * config/rs6000/power5.md (iq_power5, fpq_power5, power5-store,
20537         power5-store-update, power5-two, power5-three, power5-lmul,
20538         power5-imul, power5-imul3, power5-sdiv, power5-sqrt): Ditto.
20539
20540 2009-04-13  Adam Nemet  <anemet@caviumnetworks.com>
20541
20542         * except.c (pass_set_nothrow_function_flags): Set name and add
20543         TODO_dump_func.
20544         (set_nothrow_function_flags): Mention in the dump file when
20545         changing a function to nothrow.
20546
20547 2009-04-13  Ozkan Sezer  <sezeroz@gmail.com>
20548
20549         PR/39066
20550         * gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Use __SIZE_TYPE__
20551         instead of unsigned long.
20552
20553 2009-04-13  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
20554
20555         * config/arm/arm.c (return_used_this_function): Remove.
20556         (arm_output_function_prologue): Remove use of
20557         return_used_this_function.
20558         (output_return_instruction): Replace use of
20559         return_used_this_function
20560         by cfun->machine->return_used_this_function.
20561         (arm_output_epilogue): Likewise.
20562         (arm_output_function_epilogue): Likewise.
20563         (thumb_unexpanded_epilogue): Likewise.
20564         * config/arm/arm.h (struct machine_function):
20565         New member return_used_this_function.
20566
20567 2009-04-12  Mark Mitchell  <mark@codesourcery.com>
20568
20569         * doc/install.texi: Correct description of default directory for
20570         --with-gxx-include-dir.
20571
20572 2009-04-12  Eric Botcazou  <ebotcazou@adacore.com>
20573
20574         * fold-const.c (build_range_check): Properly deal with enumeral and
20575         boolean base types.
20576
20577 2009-04-12  Steven Bosscher  <steven@gcc.gnu.org>
20578
20579         * doc/invoke.texi (max_gcse_passes): Remove documentation.
20580         * params.def (PARAM_MAX_GCSE_PASSES): Remove.
20581         * params.h (MAX_GCSE_PASSES): Remove.
20582         * gcse.c (gcse_main): Run CPROP1, PRE or HOIST, and CPROP2
20583         in sequence.  Remove ability to run multiple passes.
20584         (bypass_jumps): Report run as third CPROP pass.
20585
20586 2009-04-12  Adam Nemet  <anemet@caviumnetworks.com>
20587
20588         PR middle-end/39651
20589         * except.c (can_throw_external): Look at each insn in a SEQUENCE
20590         when deciding whether the whole SEQUENCE can throw.
20591
20592 2009-04-12  Uros Bizjak  <ubizjak@gmail.com>
20593
20594         PR target/39740
20595         * config/alpha/predicates.md (local_symbolic_operand): Return 1 for
20596         offseted label references.
20597
20598 2009-04-11  Jan Hubicka  <jh@suse.cz>
20599
20600         * tree-ssa-pre.c (eliminate): Fix call of update_stmt.
20601
20602 2009-04-11  Richard Guenther  <rguenther@suse.de>
20603
20604         PR middle-end/39732
20605         * tree-inline.c (declare_return_variable): Mark DECL_BY_REFERENCE
20606         return variables as TREE_ADDRESSABLE.
20607
20608 2009-04-11  Richard Guenther  <rguenther@suse.de>
20609
20610         PR tree-optimization/39713
20611         * tree-ssa-sccvn.c (vn_get_expr_for): Make sure built
20612         reference trees have SSA_NAME operands.
20613
20614 2009-04-11  Richard Guenther  <rguenther@suse.de>
20615
20616         PR c/39712
20617         * c-gimplify.c (c_gimplify_expr): Adjust check for mismatched
20618         address expressions.
20619
20620 2009-04-11  Dave Korn  <dave.korn.cygwin@gmail.com>
20621
20622         * config/i386/cygwin-stdint.h (INT_LEAST32_TYPE):  Update to
20623         match changes in Cygwin 1.7
20624         (UINT_LEAST32_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE,
20625         UINT_FAST16_TYPE, UINT_FAST32_TYPE):  Likewise.
20626
20627 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
20628
20629         PR tree-optimization/39701
20630         * doc/invoke.texi (Optimization Options): Document change in
20631         meaning and initialization of -fdelete-null-pointer-checks.
20632
20633 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
20634
20635         PR middle-end/39701
20636         * common.opt (-fdelete-null-pointer-checks): Initialize to 1.
20637
20638         * opts.c (decode_options): Don't set flag_delete_null_pointer_checks
20639         here.
20640
20641         * doc/invoke.texi: Update -fdelete-null-pointer-checks.
20642
20643 2009-04-10  Chao-ying Fu  <fu@mips.com>
20644
20645         * doc/tm.texi (Instruction Output): Document
20646         TARGET_ASM_FINAL_POSTSCAN_INSN.
20647         * target.h (final_postscan_insn): New field in asm_out.
20648         * target-def.h (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
20649         (TARGET_ASM_OUT): Add TARGET_ASM_FINAL_POSTSCAN_INSN.
20650         * final.c (final_scan_insn): Call
20651         targetm.asm_out.final_postscan_insn after outputting
20652         an asm macro and a normal instruction.
20653
20654         * config/mips/mips.h (FINAL_PRESCAN_INSN): New define.
20655         * config/mips/mips-protos.h (mips_final_prescan_insn): Declare.
20656         * config/mips/mips.c (mips_at_reg_p): New for_each_rtx callback.
20657         (mips_final_prescan_insn, mips_final_postscan_insn): New functions.
20658         (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
20659
20660 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
20661
20662         PR middle-end/39701
20663         * fold-const.c (tree_single_nonzero_warnv_p): Pass non-static
20664         variables as non-NULL even with -fdelete-null-pointer-checks.
20665
20666 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
20667
20668         * config/rs6000/darwin-vecsave.asm: Remove extra "*/".
20669
20670 2009-04-09  H.J. Lu  <hongjiu.lu@intel.com>
20671
20672         PR target/39678
20673         * config/i386/i386.c (classify_argument): Handle SCmode with
20674         (bit_offset % 64) != 0.
20675
20676 2009-04-09  Sandra Loosemore  <sandra@codesourcery.com>
20677
20678         * doc/invoke.texi (Optimize Options): Add cross-reference to
20679         -Q --help=optimizers examples.
20680
20681 2009-04-10  Ben Elliston  <bje@au.ibm.com>
20682
20683         PR target/36800
20684         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Do not set
20685         regalign for the reg == fpr and TDmode case.
20686
20687 2009-04-09  David Ayers  <ayers@fsfe.org>
20688
20689         PR objc/29200
20690         * objc/objc-act.c (warn_with_method): Remove helper function.
20691         (check_duplicates): Call warning and inform directly.
20692         (really_start_method): Likewise.
20693
20694 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
20695
20696         * expmed.c (expand_divmod): Always use a comparison for a division
20697         by a large unsigned integer.
20698
20699         * fold-const.c (tree_single_nonzero_warnv_p): Always treat decls
20700         for things others than variables or functions as nonzero.
20701
20702 2009-04-09  Nick Clifton  <nickc@redhat.com>
20703
20704         * unwind-compat.c: Change copyright header to refer to version
20705         3 of the GNU General Public License with version 3.1 of the
20706         GCC Runtime Library Exception and to point readers at the
20707         COPYING3 and COPYING3.RUNTIME files and the FSF's license web page.
20708         * config/alpha/crtfastmath.c: Likewise.
20709         * config/alpha/linux-unwind.h: Likewise.
20710         * config/alpha/qrnnd.asm: Likewise.
20711         * config/alpha/vms-crt0-64.c: Likewise.
20712         * config/alpha/vms-crt0.c: Likewise.
20713         * config/alpha/vms-dwarf2.asm: Likewise.
20714         * config/alpha/vms-dwarf2eh.asm: Likewise.
20715         * config/alpha/vms-psxcrt0-64.c: Likewise.
20716         * config/alpha/vms-psxcrt0.c: Likewise.
20717         * config/alpha/vms_tramp.asm: Likewise.
20718         * config/arc/initfini.c: Likewise.
20719         * config/arc/lib1funcs.asm: Likewise.
20720         * config/arm/bpabi-v6m.S: Likewise.
20721         * config/arm/bpabi.S: Likewise.
20722         * config/arm/bpabi.c: Likewise.
20723         * config/arm/crti.asm: Likewise.
20724         * config/arm/crtn.asm: Likewise.
20725         * config/arm/ieee754-df.S: Likewise.
20726         * config/arm/ieee754-sf.S: Likewise.
20727         * config/arm/lib1funcs.asm: Likewise.
20728         * config/arm/libunwind.S: Likewise.
20729         * config/arm/linux-atomic.c: Likewise.
20730         * config/arm/mmintrin.h: Likewise.
20731         * config/arm/pr-support.c: Likewise.
20732         * config/arm/unaligned-funcs.c: Likewise.
20733         * config/arm/unwind-arm.c: Likewise.
20734         * config/arm/unwind-arm.h: Likewise.
20735         * config/avr/libgcc.S: Likewise.
20736         * config/bfin/crti.s: Likewise.
20737         * config/bfin/crtlibid.s: Likewise.
20738         * config/bfin/crtn.s: Likewise.
20739         * config/bfin/lib1funcs.asm: Likewise.
20740         * config/bfin/linux-unwind.h: Likewise.
20741         * config/cris/arit.c: Likewise.
20742         * config/cris/cris_abi_symbol.c: Likewise.
20743         * config/darwin-64.c: Likewise.
20744         * config/darwin-crt2.c: Likewise.
20745         * config/darwin-crt3.c: Likewise.
20746         * config/darwin.h: Likewise.
20747         * config/dbxelf.h: Likewise.
20748         * config/dfp-bit.c: Likewise.
20749         * config/dfp-bit.h: Likewise.
20750         * config/elfos.h: Likewise.
20751         * config/fixed-bit.c: Likewise.
20752         * config/fixed-bit.h: Likewise.
20753         * config/fp-bit.c: Likewise.
20754         * config/fp-bit.h: Likewise.
20755         * config/fr30/crti.asm: Likewise.
20756         * config/fr30/crtn.asm: Likewise.
20757         * config/fr30/lib1funcs.asm: Likewise.
20758         * config/freebsd-spec.h: Likewise.
20759         * config/frv/cmovd.c: Likewise.
20760         * config/frv/cmovh.c: Likewise.
20761         * config/frv/cmovw.c: Likewise.
20762         * config/frv/frvbegin.c: Likewise.
20763         * config/frv/frvend.c: Likewise.
20764         * config/frv/lib1funcs.asm: Likewise.
20765         * config/glibc-stdint.h: Likewise.
20766         * config/h8300/clzhi2.c: Likewise.
20767         * config/h8300/crti.asm: Likewise.
20768         * config/h8300/crtn.asm: Likewise.
20769         * config/h8300/ctzhi2.c: Likewise.
20770         * config/h8300/fixunssfsi.c: Likewise.
20771         * config/h8300/lib1funcs.asm: Likewise.
20772         * config/h8300/parityhi2.c: Likewise.
20773         * config/h8300/popcounthi2.c: Likewise.
20774         * config/i386/ammintrin.h: Likewise.
20775         * config/i386/att.h: Likewise.
20776         * config/i386/avxintrin.h: Likewise.
20777         * config/i386/biarch64.h: Likewise.
20778         * config/i386/bmmintrin.h: Likewise.
20779         * config/i386/cpuid.h: Likewise.
20780         * config/i386/cross-stdarg.h: Likewise.
20781         * config/i386/crtfastmath.c: Likewise.
20782         * config/i386/crtprec.c: Likewise.
20783         * config/i386/cygming-crtbegin.c: Likewise.
20784         * config/i386/cygming-crtend.c: Likewise.
20785         * config/i386/cygwin.asm: Likewise.
20786         * config/i386/emmintrin.h: Likewise.
20787         * config/i386/gmm_malloc.h: Likewise.
20788         * config/i386/gthr-win32.c: Likewise.
20789         * config/i386/i386.h: Likewise.
20790         * config/i386/immintrin.h: Likewise.
20791         * config/i386/linux-unwind.h: Likewise.
20792         * config/i386/linux64.h: Likewise.
20793         * config/i386/mm3dnow.h: Likewise.
20794         * config/i386/mmintrin-common.h: Likewise.
20795         * config/i386/mmintrin.h: Likewise.
20796         * config/i386/nmmintrin.h: Likewise.
20797         * config/i386/pmm_malloc.h: Likewise.
20798         * config/i386/pmmintrin.h: Likewise.
20799         * config/i386/smmintrin.h: Likewise.
20800         * config/i386/sol2-c1.asm: Likewise.
20801         * config/i386/sol2-ci.asm: Likewise.
20802         * config/i386/sol2-cn.asm: Likewise.
20803         * config/i386/sol2-gc1.asm: Likewise.
20804         * config/i386/tmmintrin.h: Likewise.
20805         * config/i386/unix.h: Likewise.
20806         * config/i386/w32-unwind.h: Likewise.
20807         * config/i386/wmmintrin.h: Likewise.
20808         * config/i386/x86-64.h: Likewise.
20809         * config/i386/x86intrin.h: Likewise.
20810         * config/i386/xmmintrin.h: Likewise.
20811         * config/ia64/crtbegin.asm: Likewise.
20812         * config/ia64/crtend.asm: Likewise.
20813         * config/ia64/crtfastmath.c: Likewise.
20814         * config/ia64/crti.asm: Likewise.
20815         * config/ia64/crtn.asm: Likewise.
20816         * config/ia64/fde-glibc.c: Likewise.
20817         * config/ia64/lib1funcs.asm: Likewise.
20818         * config/ia64/linux-unwind.h: Likewise.
20819         * config/ia64/quadlib.c: Likewise.
20820         * config/ia64/unwind-ia64.c: Likewise.
20821         * config/linux.h: Likewise.
20822         * config/m32c/m32c-lib1.S: Likewise.
20823         * config/m32c/m32c-lib2-trapv.c: Likewise.
20824         * config/m32c/m32c-lib2.c: Likewise.
20825         * config/m32r/initfini.c: Likewise.
20826         * config/m68hc11/larith.asm: Likewise.
20827         * config/m68hc11/m68hc11-crt0.S: Likewise.
20828         * config/m68k/cf.md: Likewise.
20829         * config/m68k/crti.s: Likewise.
20830         * config/m68k/crtn.s: Likewise.
20831         * config/m68k/lb1sf68.asm: Likewise.
20832         * config/m68k/linux-unwind.h: Likewise.
20833         * config/mcore/crti.asm: Likewise.
20834         * config/mcore/crtn.asm: Likewise.
20835         * config/mcore/lib1.asm: Likewise.
20836         * config/mips/linux-unwind.h: Likewise.
20837         * config/mips/loongson.h: Likewise.
20838         * config/mips/mips16.S: Likewise.
20839         * config/mmix/crti.asm: Likewise.
20840         * config/mmix/crtn.asm: Likewise.
20841         * config/pa/fptr.c: Likewise.
20842         * config/pa/hpux-unwind.h: Likewise.
20843         * config/pa/lib2funcs.asm: Likewise.
20844         * config/pa/linux-atomic.c: Likewise.
20845         * config/pa/linux-unwind.h: Likewise.
20846         * config/pa/milli64.S: Likewise.
20847         * config/pa/quadlib.c: Likewise.
20848         * config/pa/stublib.c: Likewise.
20849         * config/picochip/libgccExtras/adddi3.asm: Likewise.
20850         * config/picochip/libgccExtras/ashlsi3.asm: Likewise.
20851         * config/picochip/libgccExtras/ashlsi3.c: Likewise.
20852         * config/picochip/libgccExtras/ashrsi3.asm: Likewise.
20853         * config/picochip/libgccExtras/ashrsi3.c: Likewise.
20854         * config/picochip/libgccExtras/cmpsi2.asm: Likewise.
20855         * config/picochip/libgccExtras/divmod15.asm: Likewise.
20856         * config/picochip/libgccExtras/divmodhi4.asm: Likewise.
20857         * config/picochip/libgccExtras/divmodsi4.asm: Likewise.
20858         * config/picochip/libgccExtras/longjmp.asm: Likewise.
20859         * config/picochip/libgccExtras/lshrsi3.asm: Likewise.
20860         * config/picochip/libgccExtras/lshrsi3.c: Likewise.
20861         * config/picochip/libgccExtras/parityhi2.asm: Likewise.
20862         * config/picochip/libgccExtras/popcounthi2.asm: Likewise.
20863         * config/picochip/libgccExtras/setjmp.asm: Likewise.
20864         * config/picochip/libgccExtras/subdi3.asm: Likewise.
20865         * config/picochip/libgccExtras/ucmpsi2.asm: Likewise.
20866         * config/picochip/libgccExtras/udivmodhi4.asm: Likewise.
20867         * config/picochip/libgccExtras/udivmodsi4.asm: Likewise.
20868         * config/rs6000/750cl.h: Likewise.
20869         * config/rs6000/altivec.h: Likewise.
20870         * config/rs6000/biarch64.h: Likewise.
20871         * config/rs6000/crtresfpr.asm: Likewise.
20872         * config/rs6000/crtresgpr.asm: Likewise.
20873         * config/rs6000/crtresxfpr.asm: Likewise.
20874         * config/rs6000/crtresxgpr.asm: Likewise.
20875         * config/rs6000/crtsavfpr.asm: Likewise.
20876         * config/rs6000/crtsavgpr.asm: Likewise.
20877         * config/rs6000/darwin-asm.h: Likewise.
20878         * config/rs6000/darwin-fallback.c: Likewise.
20879         * config/rs6000/darwin-fpsave.asm: Likewise.
20880         * config/rs6000/darwin-ldouble.c: Likewise.
20881         * config/rs6000/darwin-tramp.asm: Likewise.
20882         * config/rs6000/darwin-unwind.h: Likewise.
20883         * config/rs6000/darwin-vecsave.asm: Likewise.
20884         * config/rs6000/darwin-world.asm: Likewise.
20885         * config/rs6000/e500crtres32gpr.asm: Likewise.
20886         * config/rs6000/e500crtres64gpr.asm: Likewise.
20887         * config/rs6000/e500crtres64gprctr.asm: Likewise.
20888         * config/rs6000/e500crtrest32gpr.asm: Likewise.
20889         * config/rs6000/e500crtrest64gpr.asm: Likewise.
20890         * config/rs6000/e500crtresx32gpr.asm: Likewise.
20891         * config/rs6000/e500crtresx64gpr.asm: Likewise.
20892         * config/rs6000/e500crtsav32gpr.asm: Likewise.
20893         * config/rs6000/e500crtsav64gpr.asm: Likewise.
20894         * config/rs6000/e500crtsav64gprctr.asm: Likewise.
20895         * config/rs6000/e500crtsavg32gpr.asm: Likewise.
20896         * config/rs6000/e500crtsavg64gpr.asm: Likewise.
20897         * config/rs6000/e500crtsavg64gprctr.asm: Likewise.
20898         * config/rs6000/eabi-ci.asm: Likewise.
20899         * config/rs6000/eabi-cn.asm: Likewise.
20900         * config/rs6000/eabi.asm: Likewise.
20901         * config/rs6000/linux-unwind.h: Likewise.
20902         * config/rs6000/linux64.h: Likewise.
20903         * config/rs6000/paired.h: Likewise.
20904         * config/rs6000/paired.md: Likewise.
20905         * config/rs6000/ppc64-fp.c: Likewise.
20906         * config/rs6000/ppu_intrinsics.h: Likewise.
20907         * config/rs6000/rs6000.h: Likewise.
20908         * config/rs6000/si2vmx.h: Likewise.
20909         * config/rs6000/sol-ci.asm: Likewise.
20910         * config/rs6000/sol-cn.asm: Likewise.
20911         * config/rs6000/spe.h: Likewise.
20912         * config/rs6000/spu2vmx.h: Likewise.
20913         * config/rs6000/sysv4.h: Likewise.
20914         * config/rs6000/tramp.asm: Likewise.
20915         * config/rs6000/vec_types.h: Likewise.
20916         * config/s390/linux-unwind.h: Likewise.
20917         * config/s390/tpf-unwind.h: Likewise.
20918         * config/score/crti.asm: Likewise.
20919         * config/score/crtn.asm: Likewise.
20920         * config/sh/crt1.asm: Likewise.
20921         * config/sh/crti.asm: Likewise.
20922         * config/sh/crtn.asm: Likewise.
20923         * config/sh/divtab-sh4-300.c: Likewise.
20924         * config/sh/divtab-sh4.c: Likewise.
20925         * config/sh/divtab.c: Likewise.
20926         * config/sh/lib1funcs-4-300.asm: Likewise.
20927         * config/sh/lib1funcs-Os-4-200.asm: Likewise.
20928         * config/sh/lib1funcs.asm: Likewise.
20929         * config/sh/lib1funcs.h: Likewise.
20930         * config/sh/linux-atomic.asm: Likewise.
20931         * config/sh/linux-unwind.h: Likewise.
20932         * config/sh/shmedia.h: Likewise.
20933         * config/sh/sshmedia.h: Likewise.
20934         * config/sh/ushmedia.h: Likewise.
20935         * config/sparc/crtfastmath.c: Likewise.
20936         * config/sparc/linux-unwind.h: Likewise.
20937         * config/sparc/sol2-c1.asm: Likewise.
20938         * config/sparc/sol2-ci.asm: Likewise.
20939         * config/sparc/sol2-cn.asm: Likewise.
20940         * config/spu/divmodti4.c: Likewise.
20941         * config/spu/divv2df3.c: Likewise.
20942         * config/spu/float_disf.c: Likewise.
20943         * config/spu/float_unsdidf.c: Likewise.
20944         * config/spu/float_unsdisf.c: Likewise.
20945         * config/spu/float_unssidf.c: Likewise.
20946         * config/spu/mfc_multi_tag_release.c: Likewise.
20947         * config/spu/mfc_multi_tag_reserve.c: Likewise.
20948         * config/spu/mfc_tag_release.c: Likewise.
20949         * config/spu/mfc_tag_reserve.c: Likewise.
20950         * config/spu/mfc_tag_table.c: Likewise.
20951         * config/spu/multi3.c: Likewise.
20952         * config/spu/spu_internals.h: Likewise.
20953         * config/spu/spu_intrinsics.h: Likewise.
20954         * config/spu/spu_mfcio.h: Likewise.
20955         * config/spu/vec_types.h: Likewise.
20956         * config/spu/vmx2spu.h: Likewise.
20957         * config/stormy16/stormy16-lib2.c: Likewise.
20958         * config/svr4.h: Likewise.
20959         * config/sync.c: Likewise.
20960         * config/v850/lib1funcs.asm: Likewise.
20961         * config/vxlib-tls.c: Likewise.
20962         * config/vxlib.c: Likewise.
20963         * config/vxworks-dummy.h: Likewise.
20964         * config/xtensa/crti.asm: Likewise.
20965         * config/xtensa/crtn.asm: Likewise.
20966         * config/xtensa/ieee754-df.S: Likewise.
20967         * config/xtensa/ieee754-sf.S: Likewise.
20968         * config/xtensa/lib1funcs.asm: Likewise.
20969         * config/xtensa/lib2funcs.S: Likewise.
20970         * config/xtensa/linux-unwind.h: Likewise.
20971         * config/xtensa/unwind-dw2-xtensa.c: Likewise.
20972         * config/xtensa/unwind-dw2-xtensa.h: Likewise.
20973         * coretypes.h: Likewise.
20974         * crtstuff.c: Likewise.
20975         * defaults.h: Likewise.
20976         * dwarf2.h: Likewise.
20977         * emutls.c: Likewise.
20978         * gbl-ctors.h: Likewise.
20979         * gcov-io.h: Likewise.
20980         * ginclude/float.h: Likewise.
20981         * ginclude/iso646.h: Likewise.
20982         * ginclude/stdarg.h: Likewise.
20983         * ginclude/stdbool.h: Likewise.
20984         * ginclude/stddef.h: Likewise.
20985         * ginclude/stdfix.h: Likewise.
20986         * ginclude/stdint-gcc.h: Likewise.
20987         * ginclude/tgmath.h: Likewise.
20988         * gthr-aix.h: Likewise.
20989         * gthr-dce.h: Likewise.
20990         * gthr-gnat.c: Likewise.
20991         * gthr-gnat.h: Likewise.
20992         * gthr-lynx.h: Likewise.
20993         * gthr-mipssde.h: Likewise.
20994         * gthr-nks.h: Likewise.
20995         * gthr-posix.c: Likewise.
20996         * gthr-posix.h: Likewise.
20997         * gthr-posix95.h: Likewise.
20998         * gthr-rtems.h: Likewise.
20999         * gthr-single.h: Likewise.
21000         * gthr-solaris.h: Likewise.
21001         * gthr-tpf.h: Likewise.
21002         * gthr-vxworks.h: Likewise.
21003         * gthr-win32.h: Likewise.
21004         * gthr.h: Likewise.
21005         * libgcc2.c: Likewise.
21006         * libgcc2.h: Likewise.
21007         * libgcov.c: Likewise.
21008         * tsystem.h: Likewise.
21009         * typeclass.h: Likewise.
21010         * unwind-c.c: Likewise.
21011         * unwind-compat.h: Likewise.
21012         * unwind-dw2-fde-compat.c: Likewise.
21013         * unwind-dw2-fde-darwin.c: Likewise.
21014         * unwind-dw2-fde-glibc.c: Likewise.
21015         * unwind-dw2-fde.c: Likewise.
21016         * unwind-dw2-fde.h: Likewise.
21017         * unwind-dw2.c: Likewise.
21018         * unwind-dw2.h: Likewise.
21019         * unwind-generic.h: Likewise.
21020         * unwind-pe.h: Likewise.
21021         * unwind-sjlj.c: Likewise.
21022         * unwind.inc: Likewise.
21023         * config/arm/neon-gen.ml: Change generated copyright header to
21024         refer to version 3 of the GNU General Public License with
21025         version 3.1 of the GCC Runtime Library Exception and to point
21026         readers at the COPYING3 and COPYING3.RUNTIME files and the
21027         FSF's license web page.
21028         * config/arm/arm_neon.h: Regenerate.
21029
21030 2009-04-09  Jakub Jelinek  <jakub@redhat.com>
21031
21032         * config/cris/cris.md: Change copyright header to refer to version
21033         3 of the GNU General Public License.
21034         * doc/install.texi2html: Change copyright header to refer to version
21035         3 of the GNU General Public License and to point readers at the
21036         COPYING3 file and the FSF's license web page.
21037         * config/vax/linux.h: Likewise.
21038
21039 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
21040
21041         * config/i386/i386.md (cmpcc): New.
21042         * config/i386/sync.md (sync_compare_and_swap*): Set FLAGS_REG.
21043         (sync_compare_and_swap_cc*): Delete.
21044
21045         * config/s390/s390.c (s390_compare_emitted): Remove.
21046         (s390_emit_compare): Handle MODE_CC s390_compare_op0 like
21047         s390_compare_emitted used to be handled.  Assert that modes match.
21048         (s390_emit_compare_and_swap): Use s390_emit_compare, do not
21049         refer to sync_compare_and_swap_ccsi.
21050         * config/s390/s390.h (s390_compare_emitted): Remove.
21051         * config/s390/s390.md (seq): Look for MODE_CC s390_compare_op0
21052         instead of s390_compare_emitted.
21053         (stack_protect_test, sync_compare_and_swap_cc): Set s390_compare_op0
21054         instead of s390_compare_emitted.
21055         * config/s390/s390.md (cmpcc): New.
21056         (sync_compare_and_swapqi, sync_compare_and_swaphi): Clobber
21057         CC_REGNUM, do not pretend it's set.
21058         (sync_compare_and_swap_cc*): Delete.
21059         * config/s390/predicates.md (cc_reg_operand): New.
21060
21061         * expr.c (sync_compare_and_swap_cc): Delete.
21062         * optabs.h (sync_compare_and_swap_cc): Delete.
21063         * optabs.c (prepare_cmp_insn): Ignore which specific CCmode
21064         is being used with can_compare_p.
21065         (emit_cmp_and_jump_insn_1): Likewise when looking in the optab.
21066         (find_cc_set): New.
21067         (expand_bool_compare_and_swap): Do not use sync_compare_and_swap_cc,
21068         look for a MODE_CC set instead.  Use emit_store_flag.
21069         (expand_compare_and_swap_loop): Likewise, with some additional
21070         complication to avoid a force_reg when useless.  Use
21071         emit_cmp_and_jump_insns.
21072         * genopinit.c (optabs): Delete sync_compare_and_swap_cc.
21073         * doc/md.texi (sync_compare_and_swap_cc): Merge with
21074         sync_compare_and_swap documentation.
21075
21076 2009-04-09  Jan Hubicka  <jh@suse.cz>
21077
21078         * except.c (find_prev_try): Break out from ....
21079         (duplicate_eh_regions): ... here; properly update prev_try pointers
21080         when duplication part of tree.
21081         (dump_eh_tree): Improve dumping.
21082         (verify_eh_region): New.
21083         (verify_eh_tree): Use it.
21084
21085 2009-04-06  Richard Guenther  <rguenther@suse.de>
21086
21087         * c-gimplify.c (c_gimplify_expr): Fix the invalid GENERIC
21088         &ARRAY addresses by adjusting their types and prepending
21089         a conversion.
21090         * tree-cfg.c (verify_gimple_assign_single): Verify that
21091         addresses are correct.
21092
21093 2009-04-09  Richard Guenther  <rguenther@suse.de>
21094
21095         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Move non-constant
21096         indices into an array reference if possible.
21097         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
21098         Fold POINTER_PLUS_EXPR statements with invariant address.
21099
21100 2009-04-09  Alan Modra  <amodra@bigpond.net.au>
21101
21102         PR target/39634
21103         * config.gcc (powerpc64-*-linux*): Always build biarch.
21104
21105 2009-04-09  Joseph Myers  <joseph@codesourcery.com>
21106
21107         PR c/39613
21108         * c-typeck.c (do_case): If case label is not an INTEGER_CST, fold
21109         it and pedwarn if this results in an INTEGER_CST.
21110
21111 2009-04-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
21112
21113         * doc/install.texi: Update minimum GMP version.  Remove obsolete
21114         text in MPFR section.
21115
21116 2009-04-08  Jakub Jelinek  <jakub@redhat.com>
21117
21118         * dwarf2out.c (class_scope_p): New static inline.
21119         (class_or_namespace_scope_p): Use it.
21120         (gen_variable_die): Use DW_TAG_member tag for static data member
21121         declarations instead of DW_TAG_variable.
21122
21123         PR middle-end/39573
21124         * omp-low.c (expand_omp_taskreg): Finalize taskreg static local_decls
21125         variables.
21126
21127 2009-04-08  Richard Guenther  <rguenther@suse.de>
21128
21129         * tree-ssa-sccvn.c (valueize_refs): Do not continue to
21130         valueize random data.
21131
21132 2009-04-08  David Edelsohn  <edelsohn@gnu.org>
21133
21134         * config.gcc (aix tm_file):  Add aix-stdint.h.
21135         (aix tm clause use_gcc_stdint):  Set to wrap.
21136         * config/rs6000/aix-stdint.h:  New file.
21137
21138 2009-04-08  Richard Guenther  <rguenther@suse.de>
21139
21140         PR middle-end/36291
21141         * tree-dfa.c (add_referenced_var): Do not recurse into
21142         global initializers.
21143         * tree-ssa-ccp.c (get_symbol_constant_value): Add newly
21144         exposed variables.
21145         (fold_const_aggregate_ref): Likewise.
21146
21147 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
21148
21149         * recog.c (ordered_comparison_operator): New.
21150         * gensupport.c (std_preds): Add it.
21151         * doc/md.texi (Machine-Independent Predicates): Document it.
21152
21153 2009-04-08  Jan Hubicka  <jh@suse.cz>
21154
21155         * tree-eh.c (cleanup_eh): When not optimizing, do not try EH merging.
21156         * function.h (rtl_eh): Remove exception_handler_label_map.
21157         * except.c (ehl_hash, ehl_eq, add_ehl_entry,
21158         remove_exception_handler_label, for_each_eh_label_1): Remove.
21159         (rtl_remove_unreachable_regions): Remove.
21160         (convert_from_eh_region_ranges): Do not remove unreachable regions.
21161         (find_exception_handler_labels): Don't build the hashtable.
21162         (maybe_remove_eh_handler): Remove.
21163         (for_each_eh_label): Rewrite to walk the tree.
21164         (rest_of_handle_eh): Do not cleanup cfg prior EH construction.
21165         * except.h (maybe_remove_eh_handler): Remove.
21166         * passes.c (init_optimization_passes): Schedule second EH cleanup
21167         before out-of-ssa.
21168         * cfgrtl.c (rtl_delete_block, rtl_merge_blocks,
21169         cfg_layout_merge_blocks): Do not call maybe_remove_eh_handler.
21170
21171 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
21172
21173         * genoutput.c (validate_optab_operands): New.
21174         (gen_insn, gen_expand): Call it.
21175
21176         * genflags.c (gen_insn): Detect misused iterators.
21177         (main): Pass line_no to gen_insn, exit with status 1 on error.
21178
21179         * genextract.c (line_no): Make global.
21180         (VEC_safe_set_locstr): Change assertion to error message.
21181         (main): Exit with status 1 on error.
21182
21183 2009-04-08  Joseph Myers  <joseph@codesourcery.com>
21184
21185         PR c/39614
21186         PR c/39673
21187         * c-common.h (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
21188         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
21189         EXPR_INT_CONST_OPERANDS): Remove duplicate definitions.
21190         * c-convert.c (convert): Do not call fold on results of conversion
21191         functions when the result is a C_MAYBE_CONST_EXPR.
21192         * c-parser.c (c_parser_postfix_expression): Do not fold condition
21193         of __builtin_choose_expr.
21194         * c-typeck.c (remove_c_maybe_const_expr): New.
21195         (build_unary_op, build_conditional_expr, build_compound_expr,
21196         build_binary_op, c_objc_common_truthvalue_conversion): Call
21197         remove_c_maybe_const_expr on any input C_MAYBE_CONST_EXPR with
21198         integer operands.
21199
21200 2009-04-08  Bingfeng Mei  <bmei@broadcom.com>
21201
21202         * fold-const.c (const_binop): Combine two VECTOR_CST under operation
21203         CODE to produce a new one. Add a prototype to use fold_convert_const
21204
21205 2009-04-08  Danny Smith  <dannysmith@users.sourceforge.net>
21206
21207         PR bootstrap/39660
21208         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Don't
21209         mix declarations and code.
21210
21211 2009-04-08  Ben Elliston  <bje@au.ibm.com>
21212
21213         * gcc.c: Replace `CC' with `GCC' throughout.
21214
21215 2009-04-07  H.J. Lu  <hongjiu.lu@intel.com>
21216
21217         * doc/invoke.texi: Document Atom support.
21218
21219 2009-04-07  Jason Merrill  <jason@redhat.com>
21220
21221         PR c++/25185
21222         * c-common.h, c-common.c: Add flag_pretty_templates.
21223         * c-opts.c (c_common_handle_option): Set it.
21224         * c.opt: Add -fno-pretty-templates.
21225         * doc/invoke.texi (C++ Dialect Options): Likewise.
21226
21227 2009-04-07  Uros Bizjak  <ubizjak@gmail.com>
21228
21229         * config/ia64/ia64.c (ia64_builtins): Add IA64_BUILTIN_HUGE_VALQ.
21230         (ia64_init_builtins): Handle IA64_BUILTIN_HUGE_VALQ.
21231         (ia64_expand_builtin): Likewise.
21232
21233 2009-04-07  Martin Jambor  <mjambor@suse.cz>
21234
21235         * tree-ssa-alias.c (refs_may_alias_p_1): Check for
21236         is_gimple_min_invariant rather than CONSTANT_CLASS_P so that invariant
21237         ADDR_EXPRS are include too.
21238
21239 2009-04-07  Richard Guenther  <rguenther@suse.de>
21240
21241         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Non-aliased
21242         decls are only used if passes as parameters or if they are
21243         local statics and the call is not to a builtin.
21244         (call_may_clobber_ref_p_1): Likewise.
21245
21246 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
21247
21248         * expr.c (do_store_flag): Remove last argument.  Simplify code
21249         to avoid duplication of tests already done by can_compare_p.
21250         (expand_expr_real_1): Adjust caller.
21251
21252 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
21253
21254         * optabs.c (can_compare_p): Test the predicate of a
21255         cbranch and cstore pattern.
21256
21257 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
21258
21259         * expr.c (convert_move): Use emit_store_flag instead of
21260         "emulating" it.
21261
21262 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
21263
21264         * config/i386/i386.c (ix86_compare_emitted): Remove.
21265         (ix86_expand_compare, ix86_expand_branch): Handle MODE_CC
21266         ix86_compare_op0 like ix86_compare_emitted used to be handled.
21267         * config/i386/i386.h (ix86_compare_emitted): Remove.
21268         * config/i386/i386.md (stack_protect_test): Set ix86_compare_op0
21269         instead of ix86_compare_emitted.
21270         * config/i386/sync.md (sync_compare_and_swap_cc): Likewise.
21271
21272 2009-04-07  Andrew Stubbs  <ams@codesourcery.com>
21273
21274         * config.gcc (sh-*-*): Add sysroot-suffix.h to tm_file.
21275         Add t-sysroot-suffix to tmake_file.
21276         * config/print-sysroot-suffix.sh: New file.
21277         * config/t-sysroot-suffix: New file.
21278
21279 2009-04-07  Ben Elliston  <bje@au.ibm.com>
21280
21281         * libgcc2.c (INFINITY): Use __builtin_huge_val, not __builtin_inf,
21282         as the latter produces a warning when the target does not support
21283         infinity.
21284
21285 2009-04-07  Ben Elliston  <bje@au.ibm.com>
21286
21287         * dfp.c: Replace type punning assignments with memcpy throughout.
21288         * Makefile.in (dfp.o-warn): Remove.
21289
21290 2009-04-07  Alan Modra  <amodra@bigpond.net.au>
21291
21292         PR target/39634
21293         * config.gcc: Merge powerpc-*-linux* and powerpc64-*-linux*.
21294         Include soft-fp/t-softfp after rs6000/t-linux64.
21295
21296 2009-04-06  Eric Botcazou  <ebotcazou@adacore.com>
21297
21298         * stor-layout.c (set_sizetype): Use the full precision of their
21299         machine mode for bitsize types.
21300
21301 2009-04-06  H.J. Lu  <hongjiu.lu@intel.com>
21302
21303         * config/i386/i386.md: Revert 2 accidental checkins.
21304
21305 2009-04-06  Joey Ye  <joey.ye@intel.com>
21306             Xuepeng Guo  <xuepeng.guo@intel.com>
21307             H.J. Lu  <hongjiu.lu@intel.com>
21308
21309         Atom pipeline model, tuning and insn selection.
21310         * config.gcc (atom): Add atom config options and target.
21311
21312         * config/i386/atom.md: New.
21313
21314         * config/i386/i386.c (atom_cost): New cost.
21315         (m_ATOM): New macro flag.
21316         (initial_ix86_tune_features): Set m_ATOM.
21317         (x86_accumulate_outgoing_args): Likewise.
21318         (x86_arch_always_fancy_math_387): Likewise.
21319         (processor_target): Add Atom cost.
21320         (cpu_names): Add Atom cpu name.
21321         (override_options): Set Atom ISA.
21322         (ix86_issue_rate): New case PROCESSOR_ATOM.
21323         (ix86_adjust_cost): Likewise.
21324
21325         * config/i386/i386.h (TARGET_ATOM): New target macro.
21326         (ix86_tune_indices): Add X86_TUNE_OPT_AGU.
21327         (TARGET_OPT_AGU): New target option.
21328         (target_cpu_default): Add TARGET_CPU_DEFAULT_atom.
21329         (processor_type): Add PROCESSOR_ATOM.
21330
21331         * config/i386/i386.md (cpu): Add new value "atom".
21332         (use_carry, movu): New attr.
21333         (atom.md): Include atom.md.
21334         (adddi3_carry_rex64): Set attr "use_carry".
21335         (addqi3_carry): Likewise.
21336         (addhi3_carry): Likewise.
21337         (addsi3_carry): Likewise.
21338         (*addsi3_carry_zext): Likewise.
21339         (subdi3_carry_rex64): Likewise.
21340         (subqi3_carry): Likewise.
21341         (subhi3_carry): Likewise.
21342         (subsi3_carry): Likewise.
21343         (x86_movdicc_0_m1_rex64): Likewise.
21344         (*x86_movdicc_0_m1_se): Likewise.
21345         (x86_movsicc_0_m1): Likewise.
21346         (*x86_movsicc_0_m1_se): Likewise.
21347         (*adddi_1_rex64): Emit add insn as much as possible.
21348         (*addsi_1): Likewise.
21349         (return_internal): Set atom_unit.
21350         (return_internal_long): Likewise.
21351         (return_pop_internal): Likewise.
21352         (*rcpsf2_sse): Set atom_sse_attr attr.
21353         (*qrt<mode>2_sse): Likewise.
21354         (*prefetch_sse): Likewise.
21355
21356         * config/i386/i386-c.c (ix86_target_macros_internal): New case
21357         PROCESSOR_ATOM.
21358         (ix86_target_macros_internal): Likewise.
21359
21360         * config/i386/sse.md (cpu): Set attr "atom_sse_attr".
21361         (*prefetch_sse_rex): Likewise.
21362         (sse_rcpv4sf2): Likewise.
21363         (sse_vmrcpv4sf2): Likewise.
21364         (sse_sqrtv4sf2): Likewise.
21365         (<sse>_vmsqrt<mode>2): Likewise.
21366         (sse_ldmxcsr): Likewise.
21367         (sse_stmxcsr): Likewise.
21368         (*sse_sfence): Likewise.
21369         (sse2_clflush): Likewise.
21370         (*sse2_mfence): Likewise.
21371         (*sse2_lfence): Likewise.
21372         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Set attr "movu".
21373         (<sse>_movup<ssemodesuffixf2c>): Likewise.
21374         (avx_movdqu<avxmodesuffix>): Likewise.
21375         (avx_lddqu<avxmodesuffix>): Likewise.
21376         (sse2_movntv2di): Change attr "type" to "ssemov".
21377         (sse2_movntsi): Likewise.
21378         (rsqrtv8sf2): Change attr "type" to "sseadd".
21379         (sse3_addsubv2df3): Set attr "atom_unit".
21380         (sse3_h<plusminus_insn>v4sf3): Likewise.
21381         (*sse2_pmaddwd): Likewise.
21382         (*vec_extractv2di_1_rex64): Likewise.
21383         (*vec_extractv2di_1_avx): Likewise.
21384         (sse2_psadbw): Likewise.
21385         (ssse3_phaddwv8hi3): Likewise.
21386         (ssse3_phaddwv4hi3): Likewise.
21387         (ssse3_phadddv4si3): Likewise.
21388         (ssse3_phadddv2si3): Likewise.
21389         (ssse3_phaddswv8hi3): Likewise.
21390         (ssse3_phaddswv4hi3): Likewise.
21391         (ssse3_phsubwv8hi3): Likewise.
21392         (ssse3_phsubwv4hi3): Likewise.
21393         (ssse3_phsubdv4si3): Likewise.
21394         (ssse3_phsubdv2si3): Likewise.
21395         (ssse3_phsubswv8hi3): Likewise.
21396         (ssse3_phsubswv4hi3): Likewise.
21397         (ssse3_pmaddubsw128): Likewise.
21398         (sse3_pmaddubsw: Likewise.
21399         (ssse3_palignrti): Likewise.
21400         (ssse3_palignrdi): Likewise.
21401
21402 2009-04-06  Gerald Pfeifer  <gerald@pfeifer.com>
21403
21404         * doc/install.texi (Specific): Fix two cross-references to MinGW.
21405
21406 2009-04-06  Richard Guenther  <rguenther@suse.de>
21407
21408         PR tree-optimization/28868
21409         * tree-ssa-pre.c (inserted_phi_names): New bitmap to keep track
21410         of which PHI results we inserted.
21411         (insert_into_preds_of_block): Record inserted PHIs.
21412         (eliminate): Eliminate redundant PHI nodes.
21413         (init_pre): Init inserted_phi_names.
21414
21415 2009-04-06  Richard Guenther  <rguenther@suse.de>
21416
21417         PR tree-optimization/39643
21418         * tree-ssa-ccp.c (ccp_fold): Fold REALPART_EXPRs and
21419         IMAGPART_EXPRs of complex constants.
21420         (execute_fold_all_builtins): If we folded a call queue
21421         TODO_update_address_taken.
21422
21423 2009-04-06  Jan Hubicka  <jh@suse.cz>
21424
21425         PR middle-end/39659
21426         * except.c (remove_unreachable_regions): Propagate may_contain_throw
21427         flag.
21428
21429 2009-04-06  Andrew Stubbs  <ams@codesourcery.com>
21430
21431         * config/sh/lib1funcs.asm (ic_invalidate): Move ICBI out of the
21432         delay slot.
21433         (ic_invalidate_array): Likewise.
21434
21435 2009-04-06  Hariharan Sandanagobalane  <hariharan@picochip.com>
21436
21437         * calls.c (emit_library_call_value_1): Fix a problem with parameter
21438         alignment for library calls.
21439
21440 2009-04-06  Danny Smith  <dannysmith@users.sourceforge.net>
21441
21442         * config.gcc (mingw32 tm_file):  Add mingw-stdint.h.
21443         (mingw32 tm clause use_gcc_stdint):  Set to wrap.
21444         * config/i386/mingw-stdint.h:  New file.
21445
21446 2009-04-05  Richard Guenther  <rguenther@suse.de>
21447
21448         PR tree-optimization/39648
21449         * tree-ssa-sccvn.c (vn_reference_fold_indirect): Work around
21450         our &A vs. &A[0] IL deficiencies.
21451
21452 2009-04-04  Jan Hubicka  <jh@suse.cz>
21453
21454         * except.c (sjlj_find_directly_reachable_regions): Be ready for
21455         removed toplevel regions.
21456         (sjlj_mark_call_sites): Likewise.
21457
21458 2009-04-04  Dave Korn  <dave.korn.cygwin@gmail.com>
21459
21460         * config.gcc (cygwin tm_file):  Add cygwin-stdint.h.
21461         (cygwin tm clause use_gcc_stdint):  Set to wrap.
21462         * config/i386/cygwin-stdint.h:  New file.
21463
21464 2009-04-04  Richard Guenther  <rguenther@suse.de>
21465
21466         * Makefile.in (tree-ssa-copy.o): Add $(CFGLOOP_H) dependency.
21467         * tree-ssa-copy.c (init_copy_prop): Do not propagate through
21468         single-argument PHIs if we are in loop-closed SSA form.
21469         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Pass extra guards
21470         for the pre-condition.
21471         (slpeel_tree_peel_loop_to_edge): Likewise.
21472         (vect_build_loop_niters): Take an optional sequence to append stmts.
21473         (vect_generate_tmps_on_preheader): Likewise.
21474         (vect_do_peeling_for_loop_bound): Take extra guards for the
21475         pre-condition.
21476         (vect_do_peeling_for_alignment): Adjust.  Unconditionally apply
21477         the cost model check.
21478         (vect_loop_versioning): Take stmt and stmt list to put pre-condition
21479         guards if we are going to peel.  Do not apply versioning in that case.
21480         * tree-vectorizer.h (vect_loop_versioning): Adjust declaration.
21481         (vect_do_peeling_for_loop_bound): Likewise.
21482         * tree-vect-loop.c (vect_transform_loop): If we are peeling for
21483         loop bound only record extra pre-conditions, do not apply loop
21484         versioning.
21485
21486 2009-04-04  Richard Guenther  <rguenther@suse.de>
21487
21488         * tree-ssa-operands.c (pop_stmt_changes): Remove automatic
21489         renaming code.
21490
21491 2009-04-04  Jan Hubicka  <jh@suse.cz>
21492
21493         * tree-ssa-uncprop.c (associate_equivalences_with_edges): Use
21494         last_basic_block for size of bb->index indexed array.
21495         * bt-load.c (compute_defs_uses_and_gen, compute_kill,
21496         compute_out, link_btr_uses, build_btr_def_use_webs,
21497         build_btr_def_use_webs, migrate_btr_defs): Likewise.
21498
21499 2009-04-04  Jan Hubicka  <jh@suse.cz>
21500
21501         * except.c (remove_eh_handler_and_replace): Break out from ...
21502         (remove_eh_handler): ... here.
21503         (bring_to_root): New function.
21504         (remove_unreachable_regions): Collect MUST_NOT_THROW, unify runtime
21505         handled ones, bring others to root of tree.
21506
21507 2009-04-04  Jan Hubicka  <jh@suse.cz>
21508
21509         * tree-eh.c (tree_empty_eh_handler_p): Pattern match more curefully.
21510         (all_phis_safe_to_merge): New function.
21511         (update_info): New structure.
21512         (make_eh_edge_and_update_phi, update_eh_edges): New functions.
21513         (cleanup_empty_eh): Update SSA if possible.
21514
21515 2009-04-04  Richard Guenther  <rguenther@suse.de>
21516
21517         * tree-ssa.c (verify_ssa): With -O0 we do not need VOPs.
21518         * tree-ssa-operands.c (append_vdef): Do not append VOPs at -O0.
21519         (append_vuse): Likewise.
21520
21521 2009-04-04  Jakub Jelinek  <jakub@redhat.com>
21522
21523         * unwind-dw2.h (_Unwind_FrameState): Add REG_UNDEFINED enum value.
21524         * unwind-dw2.c (execute_cfa_program): Set how to REG_UNDEFINED
21525         instead of REG_UNSAVED for DW_CFA_undefined.
21526         (uw_update_context_1): Handle REG_UNDEFINED the same as REG_UNSAVED.
21527         (uw_update_context): If RA column is REG_UNDEFINED, mark it as
21528         outermost frame.
21529
21530 2009-04-04  Richard Earnshaw  <rearnsha@arm.com>
21531
21532         PR target/39501
21533         * arm.md (movsfcc): Disable if not TARGET_HARD_FLOAT.
21534
21535 2009-04-04  Richard Guenther  <rguenther@suse.de>
21536
21537         PR tree-optimization/8781
21538         PR tree-optimization/37892
21539         * tree-ssa-sccvn.h (vn_reference_fold_indirect): Declare.
21540         * tree-ssa-sccvn.c (vn_reference_fold_indirect): New function.
21541         (valueize_refs): Call it for *& valueizations.
21542         (shared_reference_ops_from_ref): Rename to ...
21543         (valueize_shared_reference_ops_from_ref): ... this and valueize.
21544         (shared_reference_ops_from_call): Rename to ...
21545         (valueize_shared_reference_ops_from_call): ... this and valueize.
21546         (vn_reference_lookup): Update.
21547         (visit_reference_op_call): Likewise.
21548         * tree-ssa-pre.c (phi_translate_1): Fold *&.
21549         (eliminate): Value-replace the call address in call statements.
21550
21551 2009-04-04  Richard Guenther  <rguenther@suse.de>
21552
21553         PR tree-optimization/39636
21554         * tree-ssa-forwprop.c
21555         (forward_propagate_addr_into_variable_array_index): Check for
21556         GIMPLE_ASSIGN before accessing the rhs code.
21557
21558 2009-04-03  Jason Merrill  <jason@redhat.com>
21559
21560         * stor-layout.c (set_sizetype): Set TYPE_CANONICAL.
21561
21562 2009-04-03  Steve Ellcey  <sje@cup.hp.com>
21563
21564         * config/ia64/ia64.md (extendsfdf2, extendsfxf2, extenddfxf2,
21565         truncdfsf2, truncxfsf2, truncxfdf2, floatdixf2, fix_truncsfdi2,
21566         fix_truncdfdi2, fix_truncxfdi2, fix_truncxfdi2_alts, floatunsdisf2,
21567         floatunsdidf2, floatunsdixf2, fixuns_truncsfdi2, fixuns_truncdfdi2,
21568         fixuns_truncxfdi2, fixuns_truncxfdi2_alts, divsi3_internal,
21569         smuldi3_highpart, umuldi3_highpart, ctzdi2, *getf_exp_xf,
21570         divdi3_internal_lat, divdi3_internal_thr, mulditi3, *mulditi3_internal,
21571         umulditi3, *umulditi3_internal, addsf3, mulsf3, abssf2, negsf2,
21572         *nabssf2, sminsf3, smaxsf3, *maddsf4, *msubsf4, *nmulsf3, *nmaddsf4,
21573         *nmaddsf4_alts, divsf3, *sqrt_approx, sqrtsf2, sqrtsf2_internal_thr,
21574         adddf3, *adddf3_trunc, muldf3, *muldf3_trunc, absdf2, negdf2, *nabsdf2,
21575         smindf3, smaxdf3, *madddf4, *madddf4_trunc, *msubdf4, *msubdf4_trunc,
21576         *nmuldf3, *nmuldf3_trunc, *nmadddf4, *nmadddf4_alts, *nmadddf4_truncsf,
21577         *nmadddf4_truncsf_alts, divdf3, sqrtdf2, sqrtdf2_internal_thr, divxf3,
21578         sqrtxf2, sqrtxf2_internal_thr, *recip_approx):
21579         Use fr_reg_or_fp01_operand instead of fr_register_operand
21580
21581         * config/ia64/div.md (extend<mode>rf2, truncrf<mode>2,
21582         recip_approx_rf, divsf3_internal_thr, divsf3_internal_lat,
21583         divdf3_internal_thr, divdf3_internal_lat divxf3_internal): Ditto.
21584
21585 2009-04-03  Vladimir Makarov  <vmakarov@redhat.com>
21586
21587         PR rtl-optimization/39607
21588         PR rtl-optimization/39631
21589
21590         Revert:
21591
21592         2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
21593         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
21594         instead of DF_LR_OUT.
21595         * ira-lives.c (process_bb_node_lives): Ditto.
21596         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
21597         instead of DF_LR_{OUT,IN}.
21598         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
21599         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
21600
21601 2009-04-03  Steven Bosscher  <steven@gcc.gnu.org>
21602
21603         * omp-low.c (pass_expand_omp): Don't claim to provide PROP_gimple_lomp.
21604         (execute_lower_omp): Always run but take the short way out if -fopenmp
21605         is not given.
21606         (gate_lower_omp): Remove, forcing the pass manager to always run the
21607         pass and always set PROP_gimple_lomp.
21608         (pass_lower_omp): Remove gate function.
21609         * matrix-reorg.c (pass_ipa_matrix_reorg): Don't claim to provide
21610         PROP_trees.  Instead, require it.
21611         * ipa-cp.c (pass_ipa_cp): Likewise.
21612         * ipa-inline.c (pass_early_inline): Don't claim to provide PROP_cfg.
21613         (pass_ipa_early_inline, pass_inline_parameters, pass_ipa_inline): Idem.
21614         * tree-profile.c (pass_tree_profile): Don't claim to provide PROP_cfg
21615         and PROP_gimple_leh.
21616
21617 2009-04-03  Richard Guenther  <rguenther@suse.de>
21618
21619         PR middle-end/13146
21620         PR tree-optimization/23940
21621         PR tree-optimization/33237
21622         PR middle-end/33974
21623         PR middle-end/34093
21624         PR tree-optimization/36201
21625         PR tree-optimization/36230
21626         PR tree-optimization/38049
21627         PR tree-optimization/38207
21628         PR tree-optimization/38230
21629         PR tree-optimization/38301
21630         PR tree-optimization/38585
21631         PR middle-end/38895
21632         PR tree-optimization/38985
21633         PR tree-optimization/39299
21634         * tree-ssa-structalias.h: Remove.
21635         * tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
21636         (NULL_DEF_OPERAND_P): Make of type def_operand_p.
21637         (struct vuse_element_d): Remove.
21638         (struct vuse_vec_d): Likewise.
21639         (VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
21640         VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
21641         SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
21642         VUSE_ELEMENT_VAR): Likewise.
21643         (struct voptype_d): Likewise.
21644         (NUM_VOP_FREE_BUCKETS): Likewise.
21645         (struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
21646         (struct stmt_operands_d): Remove.
21647         (VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
21648         VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
21649         VDEF_NUM, VDEF_VECT): Likewise.
21650         (copy_virtual_operands): Remove.
21651         (operand_build_cmp): Likewise.
21652         (create_ssa_artificial_load_stmt): Likewise.
21653         (enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
21654         (struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
21655         vuse_index and mayuse_index members.  Pack and move done and iter_type
21656         members to the front.
21657         (SSA_OP_VMAYUSE): Remove.
21658         (SSA_OP_VIRTUAL_USES): Adjust.
21659         (FOR_EACH_SSA_VDEF_OPERAND): Remove.
21660         (unlink_stmt_vdef): Declare.
21661         (add_to_addressable_set): Remove.
21662         * tree-vrp.c (stmt_interesting_for_vrp): Adjust.
21663         (vrp_visit_stmt): Likewise.
21664         * doc/tree-ssa.texi (Alias analysis): Update.
21665         * doc/invoke.texi (max-aliased-vops): Remove docs.
21666         (avg-aliased-vops): Likewise.
21667         * tree-into-ssa.c (syms_to_rename): Remove.
21668         (need_to_update_vops_p): Likewise.
21669         (need_to_initialize_update_ssa_p): Rename to ...
21670         (update_ssa_initialized_fn): ... this.  Track function we are
21671         initialized for.
21672         (symbol_marked_for_renaming): Simplify.
21673         (add_new_name_mapping): Do not set need_to_update_vops_p.
21674         (dump_currdefs): Use SYMS_TO_RENAME.
21675         (rewrite_update_stmt): Always walk all uses/defs.
21676         (dump_update_ssa): Adjust.
21677         (init_update_ssa): Take function argument.  Track what we are
21678         initialized for.
21679         (delete_update_ssa): Reset SYMS_TO_RENAME and update_ssa_initialized_fn.
21680         (create_new_def_for): Initialize for cfun, assert we are initialized
21681         for cfun.
21682         (mark_sym_for_renaming): Simplify.
21683         (mark_set_for_renaming): Do not initialize update-ssa.
21684         (need_ssa_update_p): Simplify.  Take function argument.
21685         (name_mappings_registered_p): Assert we ask for the correct function.
21686         (name_registered_for_update_p): Likewise.
21687         (ssa_names_to_replace): Likewise.
21688         (release_ssa_name_after_update_ssa): Likewise.
21689         (update_ssa): Likewise.  Use SYMS_TO_RENAME.
21690         (dump_decl_set): Do not print a newline.
21691         (debug_decl_set): Do it here.
21692         (dump_update_ssa): And here.
21693         * tree-ssa-loop-im.c (move_computations): Adjust.
21694         (movement_possibility): Likewise.
21695         (determine_max_movement): Likewise.
21696         (gather_mem_refs_stmt): Likewise.
21697         * tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
21698         or NAME_MEMORY_TAG.
21699         * tree-complex.c (update_all_vops): Remove.
21700         (expand_complex_move): Adjust.
21701         * tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
21702         Simplify test for memory referencing statement.  Exclude
21703         non-invariant ADDR_EXPRs.
21704         * tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
21705         * tree-loop-distribution.c (generate_memset_zero): Adjust.
21706         (rdg_flag_uses): Likewise.
21707         * tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
21708         related code.
21709         (tree_optimize_tail_calls_1): Also split the
21710         edge from the entry block if we have degenerate PHI nodes in
21711         the first basic block.
21712         * tree.c (init_ttree): Remove memory-tag related code.
21713         (tree_code_size): Likewise.
21714         (tree_node_structure): Likewise.
21715         (build7_stat): Re-write to be build6_stat.
21716         * tree.h (MTAG_P, TREE_MEMORY_TAG_CHECK, TMR_TAG): Remove.
21717         (SSA_VAR_P): Adjust.
21718         (struct tree_memory_tag): Remove.
21719         (struct tree_memory_partition_tag): Likewise.
21720         (union tree_node): Adjust.
21721         (build7): Re-write to be build6.
21722         * tree-pass.h (pass_reset_cc_flags): Remove.
21723         (TODO_update_address_taken): New flag.
21724         (pass_simple_dse): Remove.
21725         * ipa-cp.c (ipcp_update_callgraph): Update SSA form.
21726         * params.h (MAX_ALIASED_VOPS): Remove.
21727         (AVG_ALIASED_VOPS): Likewise.
21728         * omp-low.c (expand_omp_taskreg): Update SSA form.
21729         * tree-ssa-dse.c (dse_optimize_stmt): Properly query if the rhs
21730         aliases the lhs in a copy stmt.
21731         * tree-ssa-dse.c (struct address_walk_data): Remove.
21732         (memory_ssa_name_same): Likewise.
21733         (memory_address_same): Likewise.
21734         (get_kill_of_stmt_lhs): Likewise.
21735         (dse_possible_dead_store_p): Simplify, use the oracle.  Handle
21736         unused stores.  Look through PHI nodes into post-dominated regions.
21737         (dse_optimize_stmt): Simplify.  Properly remove stores.
21738         (tree_ssa_dse): Compute dominators.
21739         (execute_simple_dse): Remove.
21740         (pass_simple_dse): Likewise.
21741         * ipa-reference.c (scan_stmt_for_static_refs): Open-code
21742         gimple_loaded_syms and gimple_stored_syms computation.
21743         * toplev.c (dump_memory_report): Dump alias and pta stats.
21744         * tree-ssa-sccvn.c (vn_reference_compute_hash): Simplify.
21745         (vn_reference_eq): Likewise.
21746         (vuses_to_vec, copy_vuses_from_stmt, vdefs_to_vec,
21747         copy_vdefs_from_stmt, shared_lookup_vops, shared_vuses_from_stmt,
21748         valueize_vuses): Remove.
21749         (get_def_ref_stmt_vuses): Simplify.  Rename to ...
21750         (get_def_ref_stmt_vuse): ... this.
21751         (vn_reference_lookup_2): New function.
21752         (vn_reference_lookup_pieces): Use walk_non_aliased_vuses for
21753         walking equivalent vuses.  Simplify.
21754         (vn_reference_lookup): Likewise.
21755         (vn_reference_insert): Likewise.
21756         (vn_reference_insert_pieces): Likewise.
21757         (visit_reference_op_call): Simplify.
21758         (visit_reference_op_load): Likewise.
21759         (visit_reference_op_store): Likewise.
21760         (init_scc_vn): Remove shared_lookup_vuses initialization.
21761         (free_scc_vn): Remove shared_lookup_vuses freeing.
21762         (sort_vuses, sort_vuses_heap): Remove.
21763         (get_ref_from_reference_ops): Export.
21764         * tree-ssa-sccvn.h (struct vn_reference_s): Replace vuses
21765         vector with single vuse pointer.
21766         (vn_reference_lookup_pieces, vn_reference_lookup,
21767         vn_reference_insert, vn_reference_insert_pieces): Adjust prototypes.
21768         (shared_vuses_from_stmt): Remove.
21769         (get_ref_from_reference_ops): Declare.
21770         * tree-ssa-loop-manip.c (slpeel_can_duplicate_loop_p): Adjust.
21771         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
21772         memory-tag related code.
21773         * tree-ssa-ccp.c (get_symbol_constant_value): Remove memory-tag code.
21774         (likely_value): Add comment, skip static-chain of call statements.
21775         (surely_varying_stmt_p): Adjust.
21776         (gimplify_and_update_call_from_tree): Likewise.
21777         (execute_fold_all_builtins): Do not rebuild alias info.
21778         (gimplify_and_update_call_from_tree): Properly update VOPs.
21779         * tree-ssa-loop-ivopts.c (get_ref_tag): Remove.
21780         (copy_ref_info): Remove memory-tag related code.
21781         * tree-call-cdce.c (tree_call_cdce): Rename the VOP.
21782         * ipa-pure-const.c (check_decl): Remove memory-tag related code.
21783         (check_stmt): Open-code gimple_loaded_syms and gimple_stored_syms
21784         computation.
21785         * tree-ssa-dom.c (gimple_p): Remove typedef.
21786         (eliminate_redundant_computations): Adjust.
21787         (record_equivalences_from_stmt): Likewise.
21788         (avail_expr_hash): Likewise.
21789         (avail_expr_eq): Likewise.
21790         * tree-ssa-propagate.c (update_call_from_tree): Properly update VOPs.
21791         (stmt_makes_single_load): Likewise.
21792         (stmt_makes_single_store): Likewise.
21793         * tree-ssa-alias.c: Rewrite completely.
21794         (debug_memory_partitions, dump_mem_ref_stats, debug_mem_ref_stats,
21795         debug_mem_sym_stats, dump_mem_sym_stats_for_var,
21796         debug_all_mem_sym_stats, debug_mp_info, update_mem_sym_stats_from_stmt,
21797         delete_mem_ref_stats, create_tag_raw, dump_points_to_info,
21798         dump_may_aliases_for, debug_may_aliases_for, new_type_alias):
21799         Remove public functions.
21800         (pass_reset_cc_flags): Remove.
21801         (pass_build_alias): Move ...
21802         * tree-ssa-structalias.c (pass_build_alias): ... here.
21803         * tree-ssa-alias.c (may_be_aliased): Move ...
21804         * tree-flow-inline.h (may_be_aliased): ... here.
21805         tree-ssa-alias.c (struct count_ptr_d, count_ptr_derefs,
21806         count_uses_and_derefs): Move ...
21807         * gimple.c: ... here.
21808         * gimple.h (count_uses_and_derefs): Declare.
21809         * tree-ssa-alias.c (dump_alias_stats, ptr_deref_may_alias_global_p,
21810         ptr_deref_may_alias_decl_p, ptr_derefs_may_alias_p,
21811         same_type_for_tbaa, nonaliasing_component_refs_p, decl_refs_may_alias_p,
21812         indirect_ref_may_alias_decl_p, indirect_refs_may_alias_p,
21813         ref_maybe_used_by_call_p, ref_maybe_used_by_stmt_p,
21814         call_may_clobber_ref_p, stmt_may_clobber_ref_p, maybe_skip_until,
21815         get_continuation_for_phi, walk_non_aliased_vuses, walk_aliased_vdefs):
21816         New functions.
21817         * tree-dfa.c (refs_may_alias_p): Move ...
21818         * tree-ssa-alias.c (refs_may_alias_p): ... here.  Extend.
21819         * tree-ssa-alias.h: New file.
21820         * tree-ssa-sink.c (is_hidden_global_store): Adjust.
21821         (statement_sink_location): Likewise.
21822         * opts.c (decode_options): Do not adjust max-aliased-vops or
21823         avg-aliased-vops values.
21824         * timevar.def (TV_TREE_MAY_ALIAS): Remove.
21825         (TV_CALL_CLOBBER): Likewise.
21826         (TV_FLOW_SENSITIVE): Likewise.
21827         (TV_FLOW_INSENSITIVE): Likewise.
21828         (TV_MEMORY_PARTITIONING): Likewise.
21829         (TV_ALIAS_STMT_WALK): New timevar.
21830         * tree-ssa-loop-ivcanon.c (empty_loop_p): Adjust.
21831         * tree-ssa-address.c (create_mem_ref_raw): Use build6.
21832         (get_address_description): Remove memory-tag related code.
21833         * tree-ssa-ifcombine.c (bb_no_side_effects_p): Adjust.
21834         * treestruct.def (TS_MEMORY_TAG, TS_MEMORY_PARTITION_TAG): Remove.
21835         * tree-eh.c (cleanup_empty_eh): Do not leave stale SSA_NAMEs
21836         and immediate uses in statements.  Document.
21837         * gimple-pretty-print.c (dump_gimple_mem_ops): Adjust.
21838         (dump_symbols): Remove.
21839         (dump_gimple_mem_ops): Do not dump loaded or stored syms.
21840         * alias.c (get_deref_alias_set): New function split out from ...
21841         (get_alias_set): ... here.
21842         * alias.h (get_deref_alias_set): Declare.
21843         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove unused
21844         type parameter.  Remove restrict pointer handling.  Create a
21845         ref-all pointer in case type-based alias sets do not conflict.
21846         (vect_analyze_data_refs): Remove SMT related code.
21847         * tree-vect-stmts.c (vectorizable_store): Re-instantiate TBAA assert.
21848         (vectorizable_load): Likewise.
21849         * tree-data-ref.h (struct dr_alias): Remove symbol_tag field.
21850         (DR_SYMBOL_TAG, DR_VOPS): Remove.
21851         * tree-data-ref.c (dr_may_alias_p): Use the alias-oracle.
21852         Ignore vops and SMTs.
21853         (dr_analyze_alias): Likewise..
21854         (free_data_ref): Likewise.
21855         (create_data_ref): Likewise.
21856         (analyze_all_data_dependences): Likewise.
21857         (get_references_in_stmt): Adjust.
21858         * tree-flow-inline.h (gimple_aliases_computed_p,
21859         gimple_addressable_vars, gimple_call_clobbered_vars,
21860         gimple_call_used_vars, gimple_global_var, may_aliases, memory_partition,
21861         factoring_name_p, mark_call_clobbered, clear_call_clobbered,
21862         compare_ssa_operands_equal, symbol_mem_tag, set_symbol_mem_tag,
21863         gimple_mem_ref_stats): Remove.
21864         (gimple_vop): New function.
21865         (op_iter_next_use): Remove vuses and mayuses cases.
21866         (op_iter_next_def): Remove vdefs case.
21867         (op_iter_next_tree): Remove vuses, mayuses and vdefs cases.
21868         (clear_and_done_ssa_iter): Do not set removed fields.
21869         (op_iter_init): Likewise.  Skip vuse and/or vdef if requested.
21870         Assert we are not iterating over vuses or vdefs if not also
21871         iterating over uses or defs.
21872         (op_iter_init_use): Likewise.
21873         (op_iter_init_def): Likewise.
21874         (op_iter_next_vdef): Remove.
21875         (op_iter_next_mustdef): Likewise.
21876         (op_iter_init_vdef): Likewise.
21877         (compare_ssa_operands_equal): Likewise.
21878         (link_use_stmts_after): Handle vuse operand.
21879         (is_call_used): Use is_call_clobbered.
21880         (is_call_clobbered): Global variables are always call clobbered,
21881         query the call-clobbers bitmap.
21882         (mark_call_clobbered): Ignore global variables.
21883         (clear_call_clobbered): Likewise.
21884         * tree-ssa-coalesce.c (create_outofssa_var_map): Adjust
21885         virtual operands sanity check.
21886         * tree.def (NAME_MEMORY_TAG, SYMBOL_MEMORY_TAG, MEMORY_PARTITION_TAG):
21887         Remove.
21888         (TARGET_MEM_REF): Remove TMR_TAG operand.
21889         * tree-dfa.c (add_referenced_var): Initialize call-clobber state.
21890         Remove call-clobber related code.
21891         (remove_referenced_var): Likewise.  Do not clear mpt or symbol_mem_tag.
21892         (dump_variable): Do not dump SMTs, memory stats, may-aliases or
21893         partitions or escape reason.
21894         (get_single_def_stmt, get_single_def_stmt_from_phi,
21895         get_single_def_stmt_with_phi): Remove.
21896         (dump_referenced_vars): Tidy.
21897         (get_ref_base_and_extent): Allow bare decls.
21898         (collect_dfa_stats): Adjust.
21899         * graphite.c (rename_variables_in_stmt): Adjust.
21900         (graphite_copy_stmts_from_block): Likewise.
21901         (translate_clast): Likewise.
21902         * tree-ssa-pre.c (struct bb_bitmap_sets): Add expr_dies bitmap.
21903         (EXPR_DIES): New.
21904         (translate_vuse_through_block): Use the oracle.
21905         (phi_translate_1): Adjust.
21906         (value_dies_in_block_x): Use the oracle.  Cache the outcome
21907         in EXPR_DIES.
21908         (valid_in_sets): Check if the VUSE for
21909         a REFERENCE is available.
21910         (eliminate): Do not remove stmts during elimination,
21911         instead queue and remove them afterwards.
21912         (do_pre): Do not rebuild alias info.
21913         (pass_pre): Run TODO_rebuild_alias before PRE.
21914         * tree-ssa-live.c (remove_unused_locals): Remove memory-tag code.
21915         * tree-sra.c (sra_walk_function): Use gimple_references_memory_p.
21916         (mark_all_v_defs_stmt): Remove.
21917         (mark_all_v_defs_seq): Adjust.
21918         (sra_replace): Likewise.
21919         (scalarize_use): Likewise.
21920         (scalarize_copy): Likewise.
21921         (scalarize_init): Likewise.
21922         (scalarize_ldst): Likewise.
21923         (todoflags): Remove.
21924         (tree_sra): Do not rebuild alias info.
21925         (tree_sra_early): Adjust.
21926         (pass_sra): Run TODO_update_address_taken before SRA.
21927         * tree-predcom.c (set_alias_info): Remove.
21928         (prepare_initializers_chain): Do not call it.
21929         (mark_virtual_ops_for_renaming): Adjust.
21930         (mark_virtual_ops_for_renaming_list): Remove.
21931         (initialize_root_vars): Adjust.
21932         (initialize_root_vars_lm): Likewise.
21933         (prepare_initializers_chain): Likewise.
21934         * tree-ssa-copy.c (may_propagate_copy): Remove memory-tag related code.
21935         (may_propagate_copy_into_stmt): Likewise.
21936         (merge_alias_info): Do nothing for now.
21937         (propagate_tree_value_into_stmt): Adjust.
21938         (stmt_may_generate_copy): Likewise.
21939         * tree-ssa-forwprop.c (tidy_after_forward_propagate_addr): Do
21940         not mark symbols for renaming.
21941         (forward_propagate_addr_expr): Match up push/pop_stmt_changes
21942         with the same statement, make sure to update the new pointed-to one.
21943         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do not copy
21944         call statements, do not mark symbols for renaming.
21945         (mark_operand_necessary): Dump something.
21946         (ref_may_be_aliased): New function.
21947         (mark_aliased_reaching_defs_necessary_1): New helper function.
21948         (mark_aliased_reaching_defs_necessary): Likewise.
21949         (mark_all_reaching_defs_necessary_1): Likewise.
21950         (mark_all_reaching_defs_necessary): Likewise.
21951         (propagate_necessity): Do not process virtual PHIs.  For
21952         non-aliased loads mark all reaching definitions as necessary.
21953         For aliased loads and stores mark the immediate dominating
21954         aliased clobbers as necessary.
21955         (visited): New global static.
21956         (perform_tree_ssa_dce): Free visited bitmap after propagating
21957         necessity.
21958         (remove_dead_phis): Perform simple dead virtual PHI removal.
21959         (remove_dead_stmt): Properly unlink virtual operands when
21960         removing stores.
21961         (eliminate_unnecessary_stmts): Schedule PHI removal after
21962         stmt removal.
21963         * tree-ssa-ter.c (is_replaceable_p): Adjust.
21964         (process_replaceable): Likewise.
21965         (find_replaceable_in_bb): Likewise.
21966         * tree-ssa.c (verify_ssa_name): Verify all VOPs are
21967         based on the single gimple vop.
21968         (verify_flow_insensitive_alias_info): Remove.
21969         (verify_flow_sensitive_alias_info): Likewise.
21970         (verify_call_clobbering): Likewise.
21971         (verify_memory_partitions): Likewise.
21972         (verify_alias_info): Likewise.
21973         (verify_ssa): Adjust..
21974         (execute_update_addresses_taken): Export.  Update SSA
21975         manually.  Optimize only when optimizing.  Use a local bitmap.
21976         (pass_update_address_taken): Remove TODO_update_ssa, add
21977         TODO_dump_func.
21978         (pass_update_address_taken): Just use TODO_update_address_taken.
21979         (init_tree_ssa): Do not initialize addressable_vars.
21980         (verify_ssa): Verify new VUSE / VDEF properties.
21981         Verify that all stmts definitions have the stmt as SSA_NAME_DEF_STMT.
21982         Do not call verify_alias_info.
21983         (delete_tree_ssa): Clear the VUSE, VDEF operands.
21984         Do not free the loaded and stored syms bitmaps.  Reset the escaped
21985         and callused solutions.  Do not free addressable_vars.
21986         Remove memory-tag related code.
21987         (warn_uninitialized_var): Aliases are always available.
21988         * tree-ssa-loop-prefetch.c (gather_memory_references): Adjust.
21989         * lambda-code.c (can_put_in_inner_loop): Adjust.
21990         (can_put_after_inner_loop): Likewise.
21991         (perfect_nestify): Likewise.
21992         * tree-vect-stmts.c (vect_stmt_relevant_p): Adjust.
21993         (vect_gen_widened_results_half): Remove CALL_EXPR handling.
21994         (vectorizable_conversion): Do not mark symbols for renaming.
21995         * tree-inline.c (remap_gimple_stmt): Clear VUSE/VDEF.
21996         (expand_call_inline): Unlink the calls virtual operands before
21997         replacing it.
21998         (tree_function_versioning): Do not call update_ssa if we are not
21999         updating clones.  Simplify.
22000         * tree-ssa-phiprop.c (phivn_valid_p): Adjust.
22001         (propagate_with_phi): Likewise..
22002         * tree-outof-ssa.c (create_temp): Remove memory tag and call
22003         clobber code.  Assert we are not aliased or global.
22004         * tree-flow.h: Include tree-ssa-alias.h
22005         (enum escape_type): Remove.
22006         (struct mem_sym_stats_d): Likewise.
22007         (struct mem_ref_stats_d): Likewise.
22008         (struct gimple_df): Add vop member.  Remove global_var,
22009         call_clobbered_vars, call_used_vars, addressable_vars,
22010         aliases_compted_p and mem_ref_stats members.  Add syms_to_rename,
22011         escaped and callused members.
22012         (struct ptr_info_def): Remove all members, add points-to solution
22013         member pt.
22014         (struct var_ann_d): Remove in_vuse_list, in_vdef_list,
22015         call_clobbered, escape_mask, mpt and symbol_mem_tag members.
22016         * Makefile.in (TREE_FLOW_H): Add tree-ssa-alias.h.
22017         (tree-ssa-structalias.o): Remove tree-ssa-structalias.h.
22018         (tree-ssa-alias.o): Likewise.
22019         (toplev.o): Add tree-ssa-alias.h
22020         (GTFILES): Remove tree-ssa-structalias.h, add tree-ssa-alias.h.
22021         * gimple.c (gimple_set_bb): Fix off-by-one error.
22022         (is_gimple_reg): Do not handle memory tags.
22023         (gimple_copy): Also copy virtual operands.
22024         Delay updating the statement.  Do not reset loaded and stored syms.
22025         (gimple_set_stored_syms): Remove.
22026         (gimple_set_loaded_syms): Likewise.
22027         (gimple_call_copy_skip_args): Copy the virtual operands
22028         and mark the new statement modified.
22029         * tree-ssa-structalias.c (may_alias_p): Remove.
22030         (set_uids_in_ptset): Take the alias set to prune with as
22031         parameter.  Fold in the alias test of may_alias_p.
22032         (compute_points_to_sets): Compute whether a ptr is dereferenced
22033         in a local sbitmap.
22034         (process_constraint): Deal with &ANYTHING on the lhs, reject all
22035         other ADDRESSOF constraints on the lhs.
22036         (get_constraint_for_component_ref): Assert that we don't get
22037         ADDRESSOF constraints from the base of the reference.
22038         Properly generate UNKNOWN_OFFSET for DEREF if needed.
22039         (struct variable_info): Remove collapsed_to member.
22040         (get_varinfo_fc): Remove.
22041         (new_var_info): Do not set collapsed_to.
22042         (dump_constraint): Do not follow cycles.
22043         (dump_constraint_graph): Likewise.
22044         (build_pred_graph): Likewise.
22045         (build_succ_graph): Likewise.
22046         (rewrite_constraints): Likewise.
22047         (do_simple_structure_copy): Remove.
22048         (do_rhs_deref_structure_copy): Remove.
22049         (do_lhs_deref_structure_copy): Remove.
22050         (collapse_rest_of_var): Remove.
22051         (do_structure_copy): Re-implement.
22052         (pta_stats): New global variable.
22053         (dump_pta_stats): New function.
22054         (struct constraint_expr): Make offset signed.
22055         (UNKNOWN_OFFSET): Define special value.
22056         (dump_constraint): Dump UNKNOWN_OFFSET as UNKNOWN.
22057         (solution_set_expand): New helper function split out from ...
22058         (do_sd_constraint): ... here.
22059         (solution_set_add): Handle UNKNOWN_OFFSET.  Handle negative offsets.
22060         (do_ds_constraint): Likewise.
22061         (do_sd_constraint): Likewise.  Do not special-case ESCAPED = *ESCAPED
22062         and CALLUSED = *CALLUSED.
22063         (set_union_with_increment): Make inc argument signed.
22064         (type_safe): Remove.
22065         (get_constraint_for_ptr_offset): Handle unknown and negative
22066         constant offsets.
22067         (first_vi_for_offset): Handle offsets before start.  Bail
22068         out early for offsets beyond the variable extent.
22069         (first_or_preceding_vi_for_offset): New function.
22070         (init_base_vars): Add ESCAPED = ESCAPED + UNKNOWN_OFFSET constraint.
22071         Together with ESCAPED = *ESCAPED this properly computes reachability.
22072         (find_what_var_points_to): New function.
22073         (find_what_p_points_to): Implement in terms of find_what_var_points_to.
22074         (pt_solution_reset, pt_solution_empty_p, pt_solution_includes_global,
22075         pt_solution_includes_1, pt_solution_includes, pt_solutions_intersect_1,
22076         pt_solutions_intersect): New functions.
22077         (compute_call_used_vars): Remove.
22078         (compute_may_aliases): New main entry into PTA computation.
22079         * gimple.h (gimple_p): New typedef.
22080         (struct gimple_statement_base): Remove references_memory_p.
22081         (struct gimple_statement_with_memory_ops_base): Remove
22082         vdef_ops, vuse_ops, stores and loads members.  Add vdef and vuse
22083         members.
22084         (gimple_vuse_ops, gimple_set_vuse_ops, gimple_vdef_ops,
22085         gimple_set_vdef_ops, gimple_loaded_syms, gimple_stored_syms,
22086         gimple_set_references_memory): Remove.
22087         (gimple_vuse_op, gimple_vdef_op, gimple_vuse, gimple_vdef,
22088         gimple_vuse_ptr, gimple_vdef_ptri, gimple_set_vuse, gimple_set_vdef):
22089         New functions.
22090         * tree-cfg.c (move_block_to_fn): Fix off-by-one error.
22091         (verify_expr): Allow RESULT_DECL.
22092         (gimple_duplicate_bb): Do not copy virtual operands.
22093         (gimple_duplicate_sese_region): Adjust.
22094         (gimple_duplicate_sese_tail): Likewise.
22095         (mark_virtual_ops_in_region): Remove.
22096         (move_sese_region_to_fn): Do not call it.
22097         * passes.c (init_optimization_passes): Remove pass_reset_cc_flags
22098         and pass_simple_dse.
22099         (execute_function_todo): Handle TODO_update_address_taken,
22100         call execute_update_addresses_taken for TODO_rebuild_alias.
22101         (execute_todo): Adjust.
22102         (execute_one_pass): Init dump files early.
22103         * ipa-struct-reorg.c (finalize_var_creation): Do not mark vars
22104         call-clobbered.
22105         (create_general_new_stmt): Clear vops.
22106         * tree-ssa-reassoc.c (get_rank): Adjust.
22107         * tree-vect-slp.c (vect_create_mask_and_perm): Do not mark
22108         symbols for renaming.
22109         * params.def (PARAM_MAX_ALIASED_VOPS): Remove.
22110         (PARAM_AVG_ALIASED_VOPS): Likewise.
22111         * tree-ssanames.c (init_ssanames): Allocate SYMS_TO_RENAME.
22112         (duplicate_ssa_name_ptr_info): No need to copy the shared bitmaps.
22113         * tree-ssa-operands.c: Simplify for new virtual operand representation.
22114         (operand_build_cmp, copy_virtual_operands,
22115         create_ssa_artificial_load_stmt, add_to_addressable_set,
22116         gimple_add_to_addresses_taken): Remove public functions.
22117         (unlink_stmt_vdef): New function.
22118
22119 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
22120
22121         * config.gcc (powerpc-*-linux*): Merge variants.
22122
22123 2009-04-02  Chao-ying Fu  <fu@mips.com>
22124             James Grosbach  <james.grosbach@microchip.com>
22125
22126         * config/mips/mips.c (mips_frame_info): Add acc_mask, num_acc,
22127         num_cop0_regs, acc_save_offset, cop0_save_offset, acc_sp_offset,
22128         cop0_sp_offset.
22129         (machine_function): Add interrupt_handler_p, use_shadow_register_set_p,
22130         keep_interrupts_masked_p, use_debug_exception_return_p.
22131         (mips_attribute_table): Add interrupt, use_shadow_register_set,
22132         keep_interrupts_masked, use_debug_exception_return.
22133         (mips_interrupt_type_p, mips_use_shadow_register_set_p,
22134         mips_keep_interrupts_masked_p, mips_use_debug_exception_return_p):
22135         New functions.
22136         (mips_function_ok_for_sibcall): Return false for interrupt handlers.
22137         (mips_print_operand): Process COP0 registers to print $0 .. $31
22138         correctly for GAS to process.
22139         (mips_interrupt_extra_call_saved_reg_p): New function.
22140         (mips_cfun_call_saved_reg_p): For interrupt handlers, we need to check
22141         extra registers.
22142         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
22143         (mips_compute_frame_info): Add supports for interrupt context that
22144         includes doubleword accumulators and COP0 registers.
22145         (mips_for_each_saved_acc): New function.
22146         (mips_for_each_saved_gpr_and_fpr): Change the function name from
22147         mips_for_each_saved_reg.
22148         (mips_save_reg): Save accumulators.
22149         (mips_kernel_reg_p): A new for_each_rtx callback.
22150         (mips_expand_prologue): Support interrupt handlers.
22151         (mips_restore_reg): Restore accumulators.
22152         (mips_expand_epilogue): Support interrupt handlers.
22153         (mips_can_use_return_insn): Return false for interrupt handlers.
22154         (mips_epilogue_uses): New function.
22155         * config/mips/mips.md (UNSPEC_ERET, UNSPEC_DERET, UNSPEC_DI,
22156         UNSPEC_EHB, UNSPEC_RDPGPR, UNSPEC_COP0): New UNSPEC.
22157         (mips_eret, mips_deret, mips_di, mips_ehb, mips_rdpgpr,
22158         cop0_move): New instructions.
22159         * config/mips/mips-protos.h (mips_epilogue_uses): Declare.
22160         * config/mips/mips.h (K0_REG_NUM, K1_REG_NUM, KERNEL_REG_P): New
22161         defines.
22162         (COP0_STATUS_REG_NUM, COP0_CAUSE_REG_NUM, COP0_EPC_REG_NUM):
22163         New defines.
22164         (CAUSE_IPL, SR_IPL, SR_EXL, SR_IE): New defines.
22165         (MIPS_PROLOGUE_TEMP_REGNUM, MIPS_EPILOGUE_TEMP_REGNUM): For
22166         interrupt handlers, we use K0 as the temporary register.
22167         (EPILOGUE_USES): Change to a function call.
22168         * config/mips/sde.h (MIPS_EPILOGUE_TEMP_REGNUM): For interrupt
22169         handlers, we use K0 as the temporary register.
22170
22171         * doc/extend.texi (Function Attributes): Document interrupt,
22172         use_shadow_register_set, keep_interrupts_masked,
22173         use_debug_exception_return for MIPS attributes.
22174
22175 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
22176
22177         * config.gcc (powerpc64-*-gnu*): Add rs6000/default64.h to tm_file.
22178         Remove a number of t-files from tmake_file.
22179         * config/rs6000/sysv4.opt (mprototype): Name variable target_prototype.
22180         * config/rs6000/sysv4.h (TARGET_PROTOTYPE): Define.
22181         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Set
22182         target_prototype, not TARGET_PROTOTYPE.
22183         (LINK_OS_GNU_SPEC): Define.
22184         * config/rs6000/t-linux64 (LIB2FUNCS_EXTRA): Delete tramp.S
22185         and darwin-ldoubdle.c.
22186
22187 2009-04-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
22188
22189         PR driver/39293
22190         * gcc.c (save_temps_flag): Add support for -save-temps=obj.
22191         (cpp_options): Ditto.
22192         (default_compilers): Ditto.
22193         (display_help): Ditto.
22194         (process_command): Ditto.
22195         (do_spec_1): Ditto.
22196         (set_input): Use lbasename instead of duplicate code.
22197         (save_temps_prefix): New static for -save-temps=obj.
22198         (save_temps_length): Ditto.
22199
22200         * doc/invoke.texi (-save-temps=obj): Document new variant to
22201         -save-temps switch.
22202
22203 2009-04-02  Jeff Law  <law@redhat.com>
22204
22205         * reload1.c (fixup_eh_region_notes): Remove write-only "trap_count"
22206         variable.
22207
22208 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
22209
22210         * configure.ac: Support -Bstatic/-Bdynamic for linker version > 2.
22211         * configure: Regenerated.
22212
22213 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
22214
22215         * c-decl.c (merge_decls): Make sure newdecl and olddecl don't
22216         share the argument list.
22217
22218 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
22219
22220         Merge
22221
22222         2009-02-12  Diego Novillo  <dnovillo@google.com>
22223
22224         * varpool.c (debug_varpool): New.
22225         * cgraph.h (debug_varpool): Declare.
22226
22227 2009-04-02  Jan Hubicka  <jh@suse.cz>
22228
22229         * passes.c (init_optimization_passes): Remove two copies of ehcleanup
22230         pass.
22231
22232 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
22233
22234         * config/i386/i386.c (ix86_abi): Move initialization to ...
22235         (override_options): Here.
22236
22237 2009-04-02  Christian Bruel  <christian.bruel@st.com>
22238
22239         * config/sh/sh.c (sh_dwarf_register_span): New function.
22240         (TARGET_DWARF_REGISTER_SPAN): Define.
22241         * config/sh/sh-protos.h (sh_dwarf_register_span): Declare.
22242
22243 2009-04-02  Ira Rosen  <irar@il.ibm.com>
22244
22245         PR tree-optimization/39595
22246         * tree-vect-slp.c (vect_build_slp_tree): Check that the size of
22247         interleaved loads group is not  greater than the SLP group size.
22248
22249 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
22250
22251         * builtins.c (is_builtin_name): New.
22252         (called_as_built_in): Use is_builtin_name.
22253         * tree.h (is_builtin_name): New.
22254         * varasm.c (incorporeal_function_p): Use is_builtin_name
22255
22256 2009-04-02  Andrew Stubbs  <ams@codesourcery.com>
22257
22258         * config/sh/linux-unwind.h: Disable when inhibit_libc is defined.
22259
22260 2009-04-02  Dodji Seketeli  <dodji@redhat.com>
22261
22262         PR c++/26693
22263         * c-decl.c (clone_underlying_type): Move this ...
22264         * c-common.c (set_underlying_type): ... here.
22265         Also, make sure the function properly sets TYPE_STUB_DECL() on
22266         the newly created typedef variant type.
22267         * c-common.h (is_typedef_decl, set_underlying_type): Declare ...
22268         * c-common.c (is_typedef_decl, set_underlying_type): ... new entry
22269         points.
22270
22271 2009-04-02  Richard Guenther  <rguenther@suse.de>
22272
22273         PR tree-optimization/37221
22274         * tree-flow.h (degenerate_phi_result): Declare.
22275         * tree-ssa-dom.c (degenerate_phi_result): Export.
22276         * tree-scalar-evolution.c (analyze_initial_condition): If
22277         the initial condition is defined by a degenerate PHI node
22278         use the degenerate value.
22279
22280 2009-04-01  Eric Botcazou  <ebotcazou@adacore.com>
22281
22282         PR rtl-optimization/39588
22283         * combine.c (merge_outer_ops): Do not set the constant when this
22284         is not necessary.
22285         (simplify_shift_const_1): Do not modify it either in this case.
22286
22287 2009-04-01  Steven Bosscher  <steven@gcc.gnu.org>
22288
22289         * config/ia64/ia64.c (ia64_handle_option): Inform user that Itanium1
22290         tuning is deprecated if -mtune value is set to an Itanium1 variant.
22291
22292 2009-04-01  Janis Johnson  <janis187@us.ibm.com>
22293
22294         PR c/29027
22295         * c-lex.c (interpret_float): Default (no suffix) is double.
22296
22297 2009-04-1  Xinliang David Li  <davidxl@google.com>
22298
22299         * config/i386/i386.c (legitimate_constant_p): Recognize
22300         all one vector constant.
22301
22302 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
22303
22304         * config/vax/vax.c: Add #includes to silence warnings.
22305         Change #include order to silence two warnings.
22306
22307 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
22308
22309         * config/vax/linux.h (TARGET_DEFAULT): Add the MASK_QMATH flag bit.
22310         (ASM_SPEC): Pass -k to the assembler for PIC code.
22311
22312 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
22313
22314         * config.gcc: Add vax-*-linux* to the switch.
22315         * config/vax/linux.h: New file. (TARGET_VERSION,
22316         TARGET_OS_CPP_BUILTINS, TARGET_DEFAULT, CPP_SPEC, LINK_SPEC): Define.
22317
22318 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
22319
22320         * config/vax/vax.c (vax_output_int_move, adjacent_operands_p):
22321         Use predicate macros instead of GET_CODE() == foo.
22322         * config/vax/vax.md (movsi_2, movstrictqi, and<mode>3, ashrsi3,
22323         ashlsi3, rotrsi3, <unnamed>): Likewise.
22324
22325 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
22326
22327         * config/vax/builtins.md (jbbssiqi, jbbssihi, jbbssisi, jbbcciqi,
22328         jbbccihi, jbbccisi): Remova trailing whitespace.
22329         * config/vax/constraints.md: Likewise.
22330         * config/vax/elf.h: (ASM_PREFERRED_EH_DATA_FORMAT): Likewise.
22331         * config/vax/openbsd1.h (OBSD_OLD_GAS): Likewise.
22332         * config/vax/predicates.md: Likewise.
22333         * config/vax/vax.c (print_operand_address, vax_output_int_move,
22334         vax_expand_addsub_di_operands, adjacent_operands_p): Likewise.
22335         * config/vax/vax.h: Likewise.
22336         * config/vax/vax.md (nonlocal_goto): Likewise.
22337
22338 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
22339
22340         * config/vax/vax.c (vax_float_literal, vax_output_int_move)
22341         (indirectable_address_p, adjacent_operands_p): Add spaces around
22342         braces.
22343         * config/vax/vax-protos.h (adjacent_operands_p): Likewise.
22344
22345 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
22346
22347         * config/vax/vax.c (legitimate_constant_address_p,
22348         legitimate_constant_p, indirectable_address_p, nonindexed_address_p,
22349         index_term_p, reg_plus_index_p, legitimate_address_p,
22350         vax_mode_dependent_address_p): Update comments to match functions
22351         modified by the recent int->bool conversion.
22352
22353 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
22354
22355         * config/vax/builtins.md: Update copyright message.
22356         * config/vax/constraints.md: Likewise.
22357         * config/vax/netbsd-elf.h: Likewise.
22358         * config/vax/predicates.md: Likewise.
22359         * config/vax/vax-protos.h: Likewise.
22360         * config/vax/vax.c: Likewise.
22361         * config/vax/vax.h: Likewise.
22362         * config/vax/vax.md: Likewise.
22363         * config/vax/vax.opt: Likewise.
22364
22365 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
22366
22367         * config/vax/builtins.md (ffssi2, ffssi2_internal,
22368         sync_lock_test_and_set<mode>, sync_lock_release<mode>): Fix indention.
22369         * config/vax/constraints.md (B, R): Likewise.
22370         * config/vax/predicates.md (external_memory_operand,
22371         nonimmediate_addsub_di_operand): Likewise.
22372         * config/vax/vax.c (vax_output_int_add): Likewise.
22373         * config/vax/vax.md (movsi, movsi_2, mov<mode>, call_value,
22374         untyped_call): Likewise.
22375
22376 2009-04-01  Matt Thomas  <matt@3am-software.com>
22377
22378         * config/vax/predicates.md: New file.
22379         (symbolic_operand, local_symbolic_operand, external_symbolic_operand,
22380         external_const_operand, nonsymbolic_operand, external_memory_operand,
22381         indirect_memory_operand, indexed_memory_operand,
22382         illegal_blk_memory_operand, illegal_addsub_di_memory_operand,
22383         nonimmediate_addsub_di_operand, general_addsub_di_operand): New
22384         predicate.
22385         * config/vax/constraints.md: New file.
22386         (Z0, U06,  U08, U16, CN6, S08, S16, I, J, K, L, M, N, O, G, Q, B, R, T):
22387         New constraint.
22388         * config/vax/builtins.md: New file.
22389         (ffssi2, ffssi2_internal, sync_lock_test_and_set<mode>, jbbssiqi,
22390         jbbssihi, jbbssisi, sync_lock_release<mode>, jbbcciqi, jbbccihi,
22391         jbbccisi): Define.
22392         * config/vax/vax.opt (mqmath): Add option.
22393         * config/vax/vax.md (isfx): Extend with DI.
22394         (VAXintQH, VAXintQHSD): Define.
22395         (tst<mode>, cmp<mode>, *bit<mode>, movmemhi1, truncsiqi2, truncsihi2,
22396         mulsidi3, add<mode>3, sub<mode>, mul<mode>3, div<mode>3, and<mode>,
22397         and<mode>_const_int, ior<mode>3, xor<mode>3, neg<mode>2,
22398         one_cmpl<mode>2, ashlsi3, lshrsi3, rotlsi3): Update constraints.
22399         (movdi): Update constraints and use vax_output_int_move().
22400         (movsi, movsi_2, pushlclsymreg, pushextsymreg, movlclsymreg,
22401         movextsymreg, adddi3, adcdi3, subdi3, sbcdi3, pushextsym, movextsym,
22402         pushlclsym, movlclsym, movaddr<mode>, pushaddr<mode>,
22403         nonlocal_goto): New.
22404         (mov<mode>): Extend accepted operand types.
22405         (subdi3_old): Rename from subdi3, change update constraints and use
22406         a new implementation.
22407         * config/vax/vax.h (PCC_BITFIELD_TYPE_MATTERS): Add space.
22408         (FRAME_POINTER_CFA_OFFSET, IRA_COVER_CLASSES, CLASS_MAX_NREGS,
22409         MOVE_RATIO, CLEAR_RATIO): Define.
22410         (REG_CLASS_FROM_LETTER, CONST_OK_FOR_LETTER_P,
22411         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT): Delete.
22412         (PRINT_OPERAND): Redefine using a function instead of inlined code.
22413         * config/vax/vax.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Define.
22414         (split_quadword_operands): Make static and really allow variable
22415         splitting.
22416         (print_operand_address): Update for PIC generation.
22417         (print_operand, vax_builtin_setjmp_frame_value, vax_output_int_subtract,
22418         indexable_address_p, fixup_mathdi_operand,
22419         vax_expand_addsub_di_operands, adjacent_operands_p): New.
22420         (vax_float_literal, legitimate_constant_p,
22421         indirectable_constant_address_p, index_term_p,
22422         reg_plus_index_p): Return bool instead of int.
22423         (vax_rtx_costs): Fix cost for CONST_INT, indent and use HOST_WIDE_INT
22424         where needed.
22425         (vax_output_int_move, vax_output_int_add): Extend to allow PIC
22426         generation.
22427         (vax_output_conditional_branch): Indent.
22428         (legitimate_constant_address_p, indirectable_constant_address_p,
22429         indirectable_address_p, nonindexed_address_p, legitimate_address_p,
22430         vax_mode_dependent_address_p): Return bool instead of int, update for
22431         PIC generation.
22432         * config/vax/vax-protos.h (legitimate_constant_address_p,
22433         legitimate_constant_p, legitimate_address_p,
22434         vax_mode_dependent_address_p): Change declaration to bool.
22435         (legitimate_pic_operand_p, adjacent_operands_p, print_operand,
22436         vax_expand_addsub_di_operands, vax_output_int_subtract,
22437         vax_output_movmemsi): Declare.
22438         (split_quadword_operands, vax_float_literal): Delete declaration.
22439         * config/vax/netbsd-elf.h (CC1_SPEC, CC1PLUS_SPEC) Define.
22440         * config/vax/elf.h (NO_EXTERNAL_INDIRECT_ADDRESS,
22441         VAX_CC1_AND_CC1PLUS_SPEC, ASM_PREFERRED_EH_DATA_FORMAT,
22442         ASM_OUTPUT_DWARF_PCREL): Define.
22443         (ASM_SPEC): Change definition to allow PIC generation.
22444
22445 2009-04-01  Steve Ellcey  <sje@cup.hp.com>
22446
22447         * doc/sourcebuild.texi: Update front-end requirements.
22448
22449 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
22450
22451         PR target/39226
22452         * config/rs6000/rs6000.md (andsi3_internal5_nomc,
22453         anddi3_internal2_nomc, anddi3_internal3_nomc): Removed.
22454         (booldi3_internal3): Use boolean_or_operator instead of
22455         boolean_operator.
22456
22457 2009-04-01  Joseph Myers  <joseph@codesourcery.com>
22458
22459         PR c/39605
22460         * c-decl.c (grokdeclarator): Pedwarn for file-scope array
22461         declarator whose size is not an integer constant expression but
22462         folds to an integer constant, then treat it as a constant
22463         subsequently.
22464
22465 2009-04-01  Richard Guenther  <rguenther@suse.de>
22466
22467         * fold-const.c (fold_plusminus_mult_expr): Do not fold
22468         i * 4 + 2 to (i * 2 + 1) * 2.
22469
22470 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
22471
22472         PR c/37772
22473         * c-parser.c (c_parser_asm_statement): Skip until close paren and
22474         return if c_parser_asm_string_literal returned NULL.
22475
22476 2009-04-01  Nick Clifton  <nickc@redhat.com>
22477
22478         * config/m32c/m32c.h (LIBGCC2_UNITS_PER_WORD): Define if not
22479         already defined.
22480         * config/m32c/t-m32c (LIB2FUNCS_EXTRA): Add m32c-lib2-trapv.c.
22481         * config/m32c/m32c-lib2.c: Remove unused typedefs.  Rename the
22482         other typedefs to avoid conflicts with libgcc2.c.  Define labels
22483         to gain 16-bit bit-manipulation functions from libgcc2.c and then
22484         include it.
22485         * config/m32c/m32c-lib2-trapv.c: New file.  Define labels
22486         to gain 16-bit trapping arithmetic functions from libgcc2.c and
22487         then include it.
22488
22489 2009-04-01  Rafael Avila de Espindola  <espindola@google.com>
22490
22491         * varasm.c (default_function_rodata_section): Declare DOT as
22492         const char*.
22493
22494 2009-04-01  Kai Tietz  <kai.tietz@onevision.com>
22495             Andrey Galkin  <agalkin@hypercom.com>
22496
22497         PR/39492
22498         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address):
22499         Make object_name unique for each process.
22500
22501 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
22502
22503         PR other/39591
22504         * omp-low.c (remove_exit_barrier): Don't optimize if there are any
22505         addressable variables in the parallel that could go out of scope while
22506         running queued tasks.
22507
22508 2009-04-01  Anatoly Sokolov  <aesok@post.ru>
22509
22510         * config/avr/avr.h (avr_case_values_threshold): Remove declaration.
22511         (CASE_VALUES_THRESHOLD): Redefine.
22512         * config/avr/avr.c (avr_override_options): Remove initialization of
22513         avr_case_values_threshold variable.
22514         (avr_case_values_threshold): Remove variable. Add new function.
22515         * config/avr/avr-protos.h (avr_case_values_threshold): Declare.
22516         * config/avr/avr.opt (mno-tablejump): Remove option.
22517         * doc/invoke.texi (AVR Options): Remove -mno-tablejump.
22518
22519 2009-04-01  DJ Delorie  <dj@redhat.com>
22520
22521         * varasm.c (default_function_rodata_section): Don't assume
22522         anything about where the first '.' in the section name is.
22523
22524 2009-04-01  Alan Modra  <amodra@bigpond.net.au>
22525
22526         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Delete redundant
22527         rs6000_emit_stack_tie.
22528
22529 2009-03-31  Ian Lance Taylor  <iant@google.com>
22530
22531         * tree-eh.c (tree_remove_unreachable_handlers): Compare
22532         gimple_code with GIMPLE_RESX, not RESX.
22533
22534 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
22535
22536         * c-common.c (c_get_ident): New.
22537         (c_common_nodes_and_builtins): Call it for type names that may be NULL.
22538
22539 2009-04-01  Ben Elliston  <bje@au.ibm.com>
22540
22541         * config/rs6000/sysv4.opt (msdata): Improve option description.
22542
22543 2009-03-31  Steve Ellcey  <sje@cup.hp.com>
22544
22545         * config/ia64/ia64.md (divsf3_internal_lat): Remove.
22546         (divdf3_internal_lat): Remove.
22547         (divxf3_internal_lat): Remove.
22548         (divxf3_internal_thr): Remove.
22549         (divxf): Use divxf3_internal.
22550         * config/ia64/div.md (divsf3_internal_lat): New.
22551         (divdf3_internal_lat): New.
22552         (divxf3_internal): New.
22553
22554 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
22555
22556         PR c/448
22557         * Makefile.in (USE_GCC_STDINT): Define.
22558         (stmp-int-hdrs): Install stdint.h if applicable.
22559         * c-common.c (CHAR16_TYPE): Define in terms of UINT_LEAST16_TYPE
22560         if known.
22561         (CHAR32_TYPE): Define in terms of UINT_LEAST32_TYPE if known.
22562         (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE, INT64_TYPE,
22563         UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
22564         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
22565         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
22566         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
22567         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
22568         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
22569         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
22570         (c_common_nodes_and_builtins): Initialize
22571         underlying_wchar_type_node.  Do not initialize
22572         signed_wchar_type_node or unsigned_wchar_type_node.  Initialize
22573         nodes for new types.
22574         (c_stddef_cpp_builtins): Define macros for new types.
22575         * c-common.h (CTI_SIGNED_WCHAR_TYPE, CTI_UNSIGNED_WCHAR_TYPE):
22576         Remove.
22577         (CTI_UNDERLYING_WCHAR_TYPE, CTI_SIG_ATOMIC_TYPE, CTI_INT8_TYPE,
22578         CTI_INT16_TYPE, CTI_INT32_TYPE, CTI_INT64_TYPE, CTI_UINT8_TYPE,
22579         CTI_UINT16_TYPE, CTI_UINT32_TYPE, CTI_UINT64_TYPE,
22580         CTI_INT_LEAST8_TYPE, CTI_INT_LEAST16_TYPE, CTI_INT_LEAST32_TYPE,
22581         CTI_INT_LEAST64_TYPE, CTI_UINT_LEAST8_TYPE, CTI_UINT_LEAST16_TYPE,
22582         CTI_UINT_LEAST32_TYPE, CTI_UINT_LEAST64_TYPE, CTI_INT_FAST8_TYPE,
22583         CTI_INT_FAST16_TYPE, CTI_INT_FAST32_TYPE, CTI_INT_FAST64_TYPE,
22584         CTI_UINT_FAST8_TYPE, CTI_UINT_FAST16_TYPE, CTI_UINT_FAST32_TYPE,
22585         CTI_UINT_FAST64_TYPE, CTI_INTPTR_TYPE, CTI_UINTPTR_TYPE): Define.
22586         (signed_wchar_type_node, unsigned_wchar_type_node): Remove.
22587         (underlying_wchar_type_node, sig_atomic_type_node, int8_type_node,
22588         int16_type_node, int32_type_node, int64_type_node,
22589         uint8_type_node, uint16_type_node, c_uint32_type_node,
22590         c_uint64_type_node, int_least8_type_node, int_least16_type_node,
22591         int_least32_type_node, int_least64_type_node,
22592         uint_least8_type_node, uint_least16_type_node,
22593         uint_least32_type_node, uint_least64_type_node,
22594         int_fast8_type_node, int_fast16_type_node, int_fast32_type_node,
22595         int_fast64_type_node, uint_fast8_type_node, uint_fast16_type_node,
22596         uint_fast32_type_node, uint_fast64_type_node, intptr_type_node,
22597         uintptr_type_node): Define.
22598         * c-cppbuiltin.c (builtin_define_constants,
22599         builtin_define_type_minmax): New.
22600         (builtin_define_stdint_macros): Define more macros.
22601         (c_cpp_builtins): Define more limit macros.
22602         (type_suffix): New.
22603         (builtin_define_type_max): Define in terms of
22604         builtin_define_type_minmax.  Remove is_long parameter.  All
22605         callers changed.
22606         * config.gcc (use_gcc_stdint): Define.
22607         (tm_file): Add glibc-stdint.h for targets using glibc or uClibc.
22608         Add newlib-stdint.h for generic targets.
22609         * config/glibc-stdint.h, config/newlib-stdint.h,
22610         ginclude/stdint-gcc.h, ginclude/stdint-wrap.h: New.
22611         * config/m32c/m32c.h (UINTPTR_TYPE): Define.
22612         * config/score/score.h (UINTPTR_TYPE): Define.
22613         * config/sol2.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
22614         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
22615         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
22616         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
22617         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
22618         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
22619         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
22620         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
22621         * config/spu/spu.h (STDINT_LONG32): Define.
22622         * configure.ac (use_gcc_stdint): Substitute.
22623         * configure: Regenerate.
22624         * doc/cpp.texi (__SIG_ATOMIC_TYPE__, __INT8_TYPE__,
22625         __INT16_TYPE__, __INT32_TYPE__, __INT64_TYPE__, __UINT8_TYPE__,
22626         __UINT16_TYPE__, __UINT32_TYPE__, __UINT64_TYPE__,
22627         __INT_LEAST8_TYPE__, __INT_LEAST16_TYPE__, __INT_LEAST32_TYPE__,
22628         __INT_LEAST64_TYPE__, __UINT_LEAST8_TYPE__, __UINT_LEAST16_TYPE__,
22629         __UINT_LEAST32_TYPE_, __UINT_LEAST64_TYPE__, __INT_FAST8_TYPE__,
22630         __INT_FAST16_TYPE__, __INT_FAST32_TYPE__, __INT_FAST64_TYPE__,
22631         __UINT_FAST8_TYPE__, __UINT_FAST16_TYPE__, __UINT_FAST32_TYPE__,
22632         __UINT_FAST64_TYPE__, __INTPTR_TYPE__, __UINTPTR_TYPE__,
22633         __WINT_MAX__, __SIZE_MAX__, __PTRDIFF_MAX__, __UINTMAX_MAX__,
22634         __SIG_ATOMIC_MAX__, __INT8_MAX__, __INT16_MAX__, __INT32_MAX__,
22635         __INT64_MAX__, __UINT8_MAX__, __UINT16_MAX__, __UINT32_MAX__,
22636         __UINT64_MAX__, __INT_LEAST8_MAX__, __INT_LEAST16_MAX__,
22637         __INT_LEAST32_MAX__, __INT_LEAST64_MAX__, __UINT_LEAST8_MAX__,
22638         __UINT_LEAST16_MAX__, __UINT_LEAST32_MAX__, __UINT_LEAST64_MAX__,
22639         __INT_FAST8_MAX__, __INT_FAST16_MAX__, __INT_FAST32_MAX__,
22640         __INT_FAST64_MAX__, __UINT_FAST8_MAX__, __UINT_FAST16_MAX__,
22641         __UINT_FAST32_MAX__, __UINT_FAST64_MAX__, __INTPTR_MAX__,
22642         __UINTPTR_MAX__, __WCHAR_MIN__, __WINT_MIN__, __SIG_ATOMIC_MIN__,
22643         __INT8_C, __INT16_C, __INT32_C, __INT64_C, __UINT8_C, __UINT16_C,
22644         __UINT32_C, __UINT64_C, __INTMAX_C, __UINTMAX_C): Document.
22645         * doc/tm.texi (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE,
22646         INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
22647         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
22648         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
22649         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
22650         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
22651         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
22652         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Document.
22653
22654 2009-03-31  Bernd Schmidt  <bernd.schmidt@analog.com>
22655
22656         * loop-iv.c (suitable_set_for_replacement): Renamed from
22657         simplify_using_assignment; changed to return bool and to accept new
22658         args DEST and SRC.  Return true iff we find a source/destination pair
22659         that can be used to make a replacement, and fill SRC and DEST if so.
22660         Remove arg ALTERED.  Don't deal with altered regs here.  All callers
22661         changed.
22662         (simplify_using_initial_values): Deal with altered regs here and track
22663         more precisely the effect they have on the validity of our expression.
22664
22665         * loop-iv.c (simplify_using_condition): A condition of the form
22666         (EQ REG CONST) can be used to simply make a substitution.
22667         (simplify_using_initial_values): Keep track of conditions we have seen
22668         and keep using them to simplify new expressions, while applying the
22669         same substitutions to them as to the expression.
22670
22671         * simplify-rtx.c (simplify_relational_operation_1): Simplify
22672         (LTU (PLUS a C) C) or (LTU (PLUS a C) a) to (GEU a -C); likewise with
22673         GEU/LTU reversed.
22674
22675         * loop-iv.c (determine_max_iter): New arg OLD_NITER.  All callers
22676         changed.  Use this when trying to improve the upper bound.
22677         Generate the comparison by using simplify_gen_relational.
22678
22679         * loop-iv.c (simple_rhs_p): Allow more kinds of expressions.
22680
22681         * loop-iv.c (replace_single_def_regs, replace_in_expr): New static
22682         functions.
22683         (simplify_using_assignment, simplify_using_initial_values): Call
22684         replace_in_expr to make replacements.  Call replace_single_def_regs
22685         once on the initial version of the expression.
22686
22687 2009-03-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
22688
22689         PR target/27237
22690         * doc/invoke.texi (ARM Options): Update documentation for -mthumb.
22691
22692 2009-03-31  Richard Guenther  <rguenther@suse.de>
22693
22694         PR middle-end/31029
22695         * fold-const.c (fold_binary): Fold X +- Y CMP X to Y CMP 0 for
22696         equality comparisons.  Fold C - X CMP X if C % 2 == 1.
22697
22698 2009-03-31  Richard Guenther  <rguenther@suse.de>
22699
22700         * tree.h (div_if_zero_remainder): Declare.
22701         * fold-const.c (div_if_zero_remainder): Export.
22702         * tree-ssa-forwprop.c
22703         (forward_propagate_addr_into_variable_array_index): Handle
22704         constant array index addition outside of the variable index.
22705
22706 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
22707
22708         PR target/39592
22709         * config/i386/i386.md (*floatunssi<mode>2_1, two unnamed
22710         define_splits, floatunssi<mode>2): Require x87 conversions from
22711         DImode to be permitted.
22712
22713 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
22714
22715         PR preprocessor/15638
22716         * c-common.c (c_cpp_error): Handle CPP_DL_FATAL.
22717
22718 2009-03-31  Richard Guenther  <rguenther@suse.de>
22719
22720         PR middle-end/23401
22721         PR middle-end/27810
22722         * tree.h (DECL_GIMPLE_FORMAL_TEMP_P): Remove.
22723         (struct tree_decl_with_vis): Remove gimple_formal_temp member.
22724         * tree-eh.c (lower_eh_constructs_2): Move LHS assignment to
22725         a separate statement.
22726         * gimplify.c (pop_gimplify_context): Remove formal temp handling.
22727         (lookup_tmp_var): Likewise.
22728         (is_gimple_formal_tmp_or_call_rhs): Remove.
22729         (is_gimple_reg_or_call_rhs): Rename to ...
22730         (is_gimple_reg_rhs_or_call): ... this.
22731         (is_gimple_mem_or_call_rhs): Rename to ...
22732         (is_gimple_mem_rhs_or_call): ... this.
22733         (internal_get_tmp_var): Use is_gimple_reg_rhs_or_call.  Set
22734         DECL_GIMPLE_REG_P only if is_formal is true.
22735         (gimplify_compound_lval): Use is_gimple_reg.  Remove workaround
22736         for non-proper post-modify expression gimplification.
22737         (gimplify_self_mod_expr): For post-modify expressions gimplify
22738         the lvalue to a minimal lvalue.
22739         (rhs_predicate_for): Remove formal temp case.
22740         (gimplify_modify_expr_rhs): Likewise.
22741         (gimplify_addr_expr): Use is_gimple_reg.
22742         (gimplify_expr): Remove formal temp cases.
22743         (gimple_regimplify_operands): Likewise.
22744         * tree-ssa-pre.c (get_or_alloc_expr_for): Treat EXC_PTR_EXPR
22745         and FILTER_EXPR like constants.
22746         * gimple.c (walk_gimple_op): Fix val_only initialization, use
22747         is_gimple_reg.
22748         (is_gimple_formal_tmp_rhs): Remove.
22749         (is_gimple_reg_rhs): Remove special casing.
22750         (is_gimple_mem_rhs): Fix.
22751         (is_gimple_reg): Move DECL_GIMPLE_REG_P handling earlier.
22752         (is_gimple_formal_tmp_var): Remove.
22753         (is_gimple_formal_tmp_reg): Likewise.
22754         (is_gimple_min_lval): Allow invariant component ref parts.
22755         * gimple.h (is_gimple_formal_tmp_rhs, is_gimple_formal_tmp_var,
22756         is_gimple_formal_tmp_reg): Remove declarations.
22757         * tree-cfg.c (verify_expr): Verify that variables with address
22758         taken do not have DECL_GIMPLE_REG_P set.
22759         * tree-mudflap.c (mf_build_check_statement_for): Use
22760         force_gimple_operand instead of gimplify_expr.
22761
22762 2009-03-31  Ayal Zaks  <zaks@il.ibm.com>
22763
22764         * modulo-sched.c (sms_schedule_by_order): Pass the actual
22765         schedulable rows to compute_split_row.
22766
22767 2009-03-31  Ben Elliston  <bje@au.ibm.com>
22768
22769         PR target/31635
22770         * config/rs6000/rs6000.c (rs6000_handle_option): Handle
22771         OPT_mvrsave.
22772
22773 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
22774
22775         * doc/invoke.texi (RS/6000 and PowerPC Options):Document mtls-markers.
22776         * configure.ac (HAVE_AS_TLS_MARKERS): New gas feature check.
22777         * configure: Regenerate.
22778         * config.in: Regenerate.
22779         * config/rs6000/rs6000.opt (mtls-markers): Add.
22780         * config/rs6000/rs6000.h (TARGET_TLS_MARKERS): Define.
22781         * config/rs6000/rs6000.md (tls_gd_aix, tls_gd_sysv): Add splitter.
22782         (tls_ld_aix, tls_ld_sysv): Likewise.
22783         (tls_gd, tls_gd_call_aix, tls_gd_call_sysv): New insns.
22784         (tls_ld, tls_ld_call_aix, tls_ld_call_sysv): Likewise.
22785
22786 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
22787
22788         * config/spu/spu.c (spu_expand_prologue): Delete redundant code.
22789
22790 2009-03-30  Jan Hubicka  <jh@suse.cz>
22791
22792         * tree-eh.c (make_eh_edges): Set probability 100% to first edge
22793         out of RESX.
22794         (tree_remove_unreachable_handlers): Cleanup EH predecestor
22795         detection and label handling.
22796
22797 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
22798
22799         * ira-int.h (ira_allocno): Rename left_conflicts_num to
22800         left_conflicts_size.
22801         (ALLOCNO_LEFT_CONFLICTS_NUM): Rename to
22802         ALLOCNO_LEFT_CONFLICTS_SIZE.
22803
22804         * ira-color.c (allocno_spill_priority, push_allocno_to_stack,
22805         remove_allocno_from_bucket_and_push,
22806         allocno_spill_priority_compare, push_allocnos_to_stack,
22807         setup_allocno_available_regs_num): Use ALLOCNO_LEFT_CONFLICTS_SIZE
22808         instead of ALLOCNO_LEFT_CONFLICTS_NUM.
22809         (setup_allocno_left_conflicts_num): Ditto.  Rename to
22810         setup_allocno_left_conflicts_size.
22811         (put_allocno_into_bucket): Use ALLOCNO_LEFT_CONFLICTS_SIZE
22812         instead of ALLOCNO_LEFT_CONFLICTS_NUM and
22813         setup_allocno_left_conflicts_size instead of
22814         setup_allocno_left_conflicts_num.
22815
22816         * ira-build.c (ira_create_allocno): Use
22817         ALLOCNO_LEFT_CONFLICTS_SIZE instead of
22818         ALLOCNO_LEFT_CONFLICTS_NUM.
22819
22820 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
22821
22822         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
22823         instead of DF_LR_OUT.
22824
22825         * ira-lives.c (process_bb_node_lives): Ditto.
22826
22827         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
22828         instead of DF_LR_{OUT,IN}.
22829
22830         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
22831
22832         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
22833
22834 2009-03-30  Jan Hubicka  <jh@suse.cz>
22835
22836         * except.c (label_to_region_map): Fix thinko.
22837
22838 2009-03-30  Steve Ellcey  <sje@cup.hp.com>
22839
22840         PR middle-end/38237
22841         * tree.h (tree_find_value): New declaration.
22842         * tree.c (tree_find_value): New function.
22843         * varasm.c (assemble_external): Avoid duplicate entries on lists.
22844
22845 2009-03-30  Jakub Jelinek  <jakub@redhat.com>
22846
22847         PR debug/39563
22848         * c-decl.c (struct c_binding): Add locus field.
22849         (bind): Add locus argument, set locus field from it.
22850         (pop_scope): For b->nested VAR_DECL or FUNCTION_DECL,
22851         add a DECL_EXTERNAL copy of b->decl to current BLOCK_VARS.
22852         (push_file_scope, pushtag, pushdecl, pushdecl_top_level,
22853         implicitly_declare, undeclared_variable, lookup_label,
22854         declare_label, c_make_fname_decl, c_builtin_function,
22855         c_builtin_function_ext_scope, store_parm_decls_newstyle): Adjust
22856         bind callers.
22857
22858 2009-03-30  H.J. Lu  <hongjiu.lu@intel.com>
22859
22860         PR target/38781
22861         * config/i386/i386.c (classify_argument): Check total size of
22862         structure.
22863
22864 2009-03-30  Martin Jambor  <mjambor@suse.cz>
22865
22866         * ipa-prop.h (jump_func_type): Rename IPA_UNKNOWN, IPA_CONST,
22867         IPA_CONST_MEMBER_PTR, and IPA_PASS_THROUGH to IPA_JF_UNKNOWN,
22868         IPA_JF_CONST, IPA_JF_CONST_MEMBER_PTR, and IPA_JF_PASS_THROUGH
22869         respectively.
22870
22871         * tree-dfa.c (get_ref_base_and_extent): Return -1 maxsize if
22872         seen_variable_array_ref while also traversing a union.
22873
22874         * tree-inline.c (optimize_inline_calls): Do not call
22875         cgraph_node_remove_callees.
22876         * cgraphbuild.c (remove_cgraph_callee_edges): New function.
22877         (pass_remove_cgraph_callee_edges): New variable.
22878         * passes.c (init_optimization_passes): Add
22879         pass_remove_cgraph_callee_edges after early inlining and before all
22880         late intraprocedural passes.
22881
22882         * omp-low.c (expand_omp_taskreg): Always set current_function_decl.
22883
22884 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
22885
22886         * config/sparc/sparc.md (*nand<V64mode>_vis, *nand<V32mode>_vis):
22887         Fix typos in names.
22888
22889 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
22890
22891         * combine.c (simplify_comparison): Use have_insn_for.
22892         * dojump.c (do_jump): Likewise.
22893
22894 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
22895
22896         * config/sparc/sparc.c (sparc_compare_emitted): Remove.
22897         (gen_compare_reg, emit_v9_brxx_insn): Handle MODE_CC
22898         sparc_compare_op0 like sparc_compare_emitted used to be handled.
22899         (sparc_expand_compare_and_swap_12): Set sparc_compare_op0
22900         instead of sparc_compare_emitted.
22901         * config/sparc/sparc.h (sparc_compare_emitted): Remove.
22902         * config/sparc/sparc.md (stack_protect_test): Set sparc_compare_op0
22903         instead of sparc_compare_emitted.
22904
22905 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
22906
22907         * bb-reorder.c (partition_hot_cold_basic_blocks): Do not
22908         enter/exit cfglayout mode.
22909         (pass_partition_block): Require it.
22910         * combine.c (find_single_use, reg_dead_at_p): Use CFG.
22911         (combine_instructions): Track basic blocks instead of labels.
22912         (update_cfg_for_uncondjump): New.
22913         (try_combine): Use it.  Update jumps after rescanning.
22914         (pass_combine): Require PROP_cfglayout.
22915         * passes.c (pass_outof_cfg_layout_mode): Move after regmove.
22916
22917 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
22918
22919         * cfglayout.c (pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode):
22920         Provide/destroy PROP_cfglayout respectively.
22921         * gcse.c (pass_jump_bypass, pass_gcse): Require it.
22922         * tree-pass.h (PROP_cfglayout): New.
22923
22924 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
22925
22926         * fold-const.c (const_binop, fold_convert_const_real_from_fixed,
22927         fold_convert_const_fixed_from_fixed,
22928         fold_convert_const_fixed_from_int,
22929         fold_convert_const_fixed_from_real, fold_negate_const): Do not
22930         set TREE_CONSTANT_OVERFLOW.
22931         * tree.def: Remove mention of TREE_CONSTANT_OVERFLOW.
22932         * tree.h (TREE_CONSTANT_OVERFLOW): Delete.
22933
22934 2009-03-30  Ira Rosen  <irar@il.ibm.com>
22935
22936         * tree-vect-loop-manip.c: New file.
22937         * tree-vectorizer.c: Update documentation and included files.
22938         (vect_loop_location): Make extern.
22939         (rename_use_op): Move to tree-vect-loop-manip.c
22940         (rename_variables_in_bb, rename_variables_in_loop,
22941         slpeel_update_phis_for_duplicate_loop,
22942         slpeel_update_phi_nodes_for_guard1,
22943         slpeel_update_phi_nodes_for_guard2, slpeel_make_loop_iterate_ntimes,
22944         slpeel_tree_duplicate_loop_to_edge_cfg, slpeel_add_loop_guard,
22945         slpeel_can_duplicate_loop_p, slpeel_verify_cfg_after_peeling,
22946         set_prologue_iterations, slpeel_tree_peel_loop_to_edge,
22947         find_loop_location): Likewise.
22948         (new_stmt_vec_info): Move to tree-vect-stmts.c.
22949         (init_stmt_vec_info_vec, free_stmt_vec_info_vec, free_stmt_vec_info,
22950         get_vectype_for_scalar_type, vect_is_simple_use,
22951         supportable_widening_operation, supportable_narrowing_operation):
22952         Likewise.
22953         (bb_in_loop_p): Move to tree-vect-loop.c.
22954         (new_loop_vec_info, destroy_loop_vec_info,
22955         reduction_code_for_scalar_code, report_vect_op,
22956         vect_is_simple_reduction, vect_is_simple_iv_evolution): Likewise.
22957         (vect_can_force_dr_alignment_p): Move to tree-vect-data-refs.c.
22958         (vect_supportable_dr_alignment): Likewise.
22959         * tree-vectorizer.h (tree-data-ref.h): Include.
22960         (vect_loop_location): Declare.
22961         Reorganize function declarations according to the new file structure.
22962         * tree-vect-loop.c: New file.
22963         * tree-vect-analyze.c: Remove. Move functions to tree-vect-data-refs.c,
22964         tree-vect-stmts.c, tree-vect-slp.c, tree-vect-loop.c.
22965         * tree-vect-data-refs.c: New file.
22966         * tree-vect-patterns.c (timevar.h): Don't include.
22967         * tree-vect-stmts.c: New file.
22968         * tree-vect-transform.c: Remove. Move functions to tree-vect-stmts.c,
22969         tree-vect-slp.c, tree-vect-loop.c.
22970         * Makefile.in (OBJS-common): Remove tree-vect-analyze.o and
22971         tree-vect-transform.o. Add tree-vect-data-refs.o, tree-vect-stmts.o,
22972         tree-vect-loop.o, tree-vect-loop-manip.o, tree-vect-slp.o.
22973         (tree-vect-analyze.o): Remove.
22974         (tree-vect-transform.o): Likewise.
22975         (tree-vect-data-refs.o): Add rule.
22976         (tree-vect-stmts.o, tree-vect-loop.o, tree-vect-loop-manip.o,
22977         tree-vect-slp.o): Likewise.
22978         (tree-vect-patterns.o): Remove redundant dependencies.
22979         (tree-vectorizer.o): Likewise.
22980         * tree-vect-slp.c: New file.
22981
22982 2009-03-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
22983
22984         * optc-gen.awk: Warn if an option flag has multiple different
22985         help strings.
22986
22987 2009-03-30  Sebastian Pop  <sebastian.pop@amd.com>
22988
22989         * doc/invoke.texi (-floop-interchange, -floop-strip-mine,
22990         -floop-block): Document dependences on PPL, CLooG and Graphite.
22991
22992 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
22993
22994         PR rtl-optimization/323
22995         * c-common.c (c_fully_fold, convert_and_check,
22996         c_common_truthvalue_conversion): Handle EXCESS_PRECISION_EXPR.
22997         (c_fully_fold_internal): Disallow EXCESS_PRECISION_EXPR.
22998         * c-common.def (EXCESS_PRECISION_EXPR): New.
22999         * c-cppbuiltin.c (builtin_define_float_constants): Define
23000         constants with enough digits for long double.
23001         * c-lex.c (interpret_float): Interpret constant with excess
23002         precision where appropriate.
23003         * c-opts.c (c_common_post_options): Set
23004         flag_excess_precision_cmdline.  Give an error for
23005         -fexcess-precision=standard for C++ for processors where the
23006         option is significant.
23007         * c-parser.c (c_parser_conditional_expression): Handle excess
23008         precision in condition.
23009         * c-typeck.c (convert_arguments): Handle arguments with excess
23010         precision.
23011         (build_unary_op): Move excess precision outside operation.
23012         (build_conditional_expr): Likewise.
23013         (build_compound_expr): Likewise.
23014         (build_c_cast): Do cast on operand of EXCESS_PRECISION_EXPR.
23015         (build_modify_expr): Handle excess precision in RHS.
23016         (convert_for_assignment): Handle excess precision in converted
23017         value.
23018         (digest_init, output_init_element, process_init_element): Handle
23019         excess precision in initializer.
23020         (c_finish_return): Handle excess precision in return value.
23021         (build_binary_op): Handle excess precision in operands and add
23022         excess precision as needed for operation.
23023         * common.opt (-fexcess-precision=): New option.
23024         * config/i386/i386.h (X87_ENABLE_ARITH, X87_ENABLE_FLOAT): New.
23025         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
23026         For standard excess precision, output explicit conversion to and
23027         truncation from XFmode.
23028         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1,
23029         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp,
23030         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387, two unnamed
23031         define_splits, floatdi<X87MODEF:mode>2_i387_with_xmm, two unnamed
23032         define_splits, *floatunssi<mode>2_1, two unnamed define_splits,
23033         floatunssi<mode>2, add<mode>3, sub<mode>3, mul<mode>3, divdf3,
23034         divsf3, *fop_<mode>_comm_i387, *fop_<mode>_1_i387,
23035         *fop_<MODEF:mode>_2_i387, *fop_<MODEF:mode>_3_i387,
23036         *fop_df_4_i387, *fop_df_5_i387, *fop_df_6_i387, two unnamed
23037         define_splits, sqrt<mode>2): Disable where appropriate for
23038         standard excess precision.
23039         * convert.c (convert_to_real): Do not shorten arithmetic to type
23040         for which excess precision would be used.
23041         * defaults.h (TARGET_FLT_EVAL_METHOD_NON_DEFAULT): Define.
23042         * doc/invoke.texi (-fexcess-precision=): Document option.
23043         (-mfpmath=): Correct index entry.
23044         * flags.h (enum excess_precision, flag_excess_precision_cmdline,
23045         flag_excess_precision): New.
23046         * langhooks.c (lhd_post_options): Set
23047         flag_excess_precision_cmdline.
23048         * opts.c (common_handle_option): Handle -fexcess-precision=.
23049         * toplev.c (flag_excess_precision_cmdline, flag_excess_precision,
23050         init_excess_precision): New.
23051         (lang_dependent_init_target): Call init_excess_precision.
23052         * tree.c (excess_precision_type): New.
23053         * tree.h (excess_precision_type): Declare.
23054
23055 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
23056
23057         PR c/35235
23058         * c-typeck.c (build_component_ref): Do not copy qualifiers from
23059         non-lvalue to component.
23060
23061 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
23062
23063         PR preprocessor/34695
23064         * Makefile.in (c-opts.o): Depend on c-tree.h.
23065         * c-common.c: Move down include of diagnostic.h.
23066         (done_lexing, c_cpp_error): New.
23067         * c-common.h (done_lexing): Declare.
23068         * c-decl.c (c_write_global_declarations): Don't check cpp_errors
23069         (parse_in).
23070         * c-opts.c: Include c-tree.h.
23071         (c_common_init_options): Set preprocessor error callback.
23072         (c_common_handle_option): Do not set preprocessor
23073         inhibit_warnings, warnings_are_errors, warn_system_headers,
23074         pedantic_errors or inhibit_warnings flags.
23075         (c_common_post_options): Do not check cpp_errors (parse_in).
23076         (c_common_finish): Do not output dependencies if there were
23077         errors.  Do not check return value of cpp_finish.
23078         * c-ppoutput.c (pp_file_change): Set input_location.
23079         * c-tree.h (c_cpp_error): Declare.
23080         * diagnostic.c (diagnostic_set_info_translated): Also initialize
23081         override_column.
23082         (diagnostic_build_prefix): Check override_column.
23083         * diagnostic.h (diagnostic_info): Add override_column field.
23084         (diagnostic_override_column): Define.
23085
23086 2009-03-28  Paolo Bonzini  <bonzini@gnu.org>
23087
23088         * c-common.c (c_expand_expr, c_staticp): Remove.
23089         * c-common.def (COMPOUND_LITERAL_EXPR): Delete.
23090         * c-common.h (emit_local_var, c_staticp, COMPOUND_LITERAL_EXPR_DECL,
23091         COMPOUND_LITERAL_EXPR_DECL_EXPR): Remove.
23092         * c-gimplify.c (gimplify_compound_literal_expr,
23093         optimize_compound_literals_in_ctor): Remove.
23094         (c_gimplify_expr): Remove COMPOUND_LITERAL_EXPR handling.
23095         * c-objc-common.h (LANG_HOOKS_STATICP): Remove.
23096         * c-semantics.c (emit_local_var): Remove.
23097
23098         * langhooks-def.h (lhd_expand_expr): Remove.
23099         * langhooks.c (lhd_expand_expr): Remove.
23100         * langhooks.h (LANG_HOOKS_DEF): Remove LANG_HOOKS_EXPAND_EXPR.
23101
23102         * expr.c (expand_expr_real_1): Move COMPOUND_LITERAL_EXPR
23103         handling from c-semantics.c; don't call into langhook.
23104         (expand_expr_addr_expr_1): Check that we don't get non-GENERIC trees.
23105         * gimplify.c (gimplify_compound_literal_expr,
23106         optimize_compound_literals_in_ctor): Move from c-gimplify.c.
23107         (gimplify_init_constructor): Call optimize_compound_literals_in_ctor.
23108         (gimplify_modify_expr_rhs, gimplify_expr): Handle COMPOUND_LITERAL_EXPR
23109         as was done in c-gimplify.c.
23110         * tree.c (staticp): Move COMPOUND_LITERAL_EXPR handling from c_staticp.
23111         * tree.h (COMPOUND_LITERAL_EXPR_DECL, COMPOUND_LITERAL_EXPR_DECL_EXPR):
23112         Move from c-common.h.
23113         * tree.def (COMPOUND_LITERAL_EXPR): Move from c-common.def.
23114
23115         * tree.c (staticp): Do not call langhook.
23116         * langhooks.c (lhd_staticp): Delete.
23117         * langhooks-def.h (lhd_staticp): Delete prototype.
23118         (LANG_HOOKS_STATICP): Delete.
23119         (LANG_HOOKS_INITIALIZER): Delete LANG_HOOKS_STATICP.
23120
23121         * doc/c-tree.texi (Expression nodes): Refer to DECL_EXPRs
23122         instead of DECL_STMTs.
23123
23124 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
23125
23126         PR c/456
23127         PR c/5675
23128         PR c/19976
23129         PR c/29116
23130         PR c/31871
23131         PR c/35198
23132         * builtins.c (fold_builtin_sincos): Build COMPOUND_EXPR in
23133         void_type_node.
23134         (fold_call_expr): Return a NOP_EXPR from folding rather than the
23135         contained expression.
23136         * c-common.c (c_fully_fold, c_fully_fold_internal, c_save_expr): New.
23137         (c_common_truthvalue_conversion): Use c_save_expr.  Do not fold
23138         conditional expressions for C.
23139         (decl_constant_value_for_optimization): Move from
23140         decl_constant_value_for_broken_optimization in c-typeck.c.  Check
23141         whether optimizing and that the expression is a VAR_DECL not of
23142         array type instead of doing such checks in the caller.  Do not
23143         check pedantic.  Call gcc_unreachable for C++.
23144         * c-common.def (C_MAYBE_CONST_EXPR): New.
23145         * c-common.h (c_fully_fold, c_save_expr,
23146         decl_constant_value_for_optimization): New prototypes.
23147         (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
23148         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
23149         EXPR_INT_CONST_OPERANDS): Define.
23150         * c-convert.c (convert): Strip nops from expression.
23151         * c-decl.c (groktypename): Take extra parameters expr and
23152         expr_const_operands.  Update call to grokdeclarator.
23153         (start_decl): Update call to grokdeclarator.  Add statement for
23154         expressions used in type of decl.
23155         (grokparm): Update call to grokdeclarator.
23156         (push_parm_decl): Update call to grokdeclarator.
23157         (build_compound_literal): Add parameter non_const and build a
23158         C_MAYBE_COSNT_EXPR if applicable.
23159         (grokdeclarator): Take extra parameters expr and
23160         expr_const_operands.  Track expressions used in declaration
23161         specifiers and declarators.  Fold array sizes and track whether
23162         they are constant expressions and whether they are integer
23163         constant expressions.
23164         (parser_xref_tag): Set expr and expr_const_operands fields in
23165         return value.
23166         (grokfield): Update call to grokdeclarator.
23167         (start_function): Update call to grokdeclarator.
23168         (build_null_declspecs): Set expr and expr_const_operands fields in
23169         return value.
23170         (declspecs_add_type): Handle expressions in typeof specifiers.
23171         * c-parser.c (c_parser_declspecs): Set expr and
23172         expr_const_operands fields for declaration specifiers.
23173         (c_parser_enum_specifier): Likewise.
23174         (c_parser_struct_or_union_specifier): Likewise.
23175         (c_parser_typeof_specifier): Likewise.  Update call to
23176         groktypename.  Fold expression as needed.  Return expressions with
23177         type instead of adding statements.
23178         (c_parser_attributes): Update calls to c_parser_expr_list.
23179         (c_parser_statement_after_labels): Fold expression before passing
23180         to objc_build_throw_stmt.
23181         (c_parser_condition): Fold expression.
23182         (c_parser_asm_operands): Fold expression.
23183         (c_parser_conditional_expression): Use c_save_expr.  Update call
23184         to build_conditional_expr.
23185         (c_parser_alignof_expression): Update call to groktypename.
23186         (c_parser_postfix_expression): Preserve C_MAYBE_CONST_EXPR as
23187         original_code.  Fold expression argument of va_arg.  Create
23188         C_MAYBE_CONST_EXPR to preserve side effects of expressions in type
23189         argument to va_arg.  Update calls to groktypename.  Fold array
23190         index for offsetof.  Verify that first argument to
23191         __builtin_choose_expr has integer type.
23192         (c_parser_postfix_expression_after_paren_type): Update calls to
23193         groktypename and build_compound_literal.  Handle expressions with
23194         side effects in type name.
23195         (c_parser_postfix_expression_after_primary): Update call to
23196         c_parser_expr_list.  Set original_code for calls to
23197         __builtin_constant_p.
23198         (c_parser_expr_list): Take extra parameter fold_p.  Fold
23199         expressions if requested.
23200         (c_parser_objc_type_name): Update call to groktypename.
23201         (c_parser_objc_synchronized_statement): Fold expression.
23202         (c_parser_objc_receiver): Fold expression.
23203         (c_parser_objc_keywordexpr): Update call to c_parser_expr_list.
23204         (c_parser_omp_clause_num_threads, c_parser_omp_clause_schedule,
23205         c_parser_omp_atomic, c_parser_omp_for_loop): Fold expressions.
23206         * c-tree.h (CONSTRUCTOR_NON_CONST): Define.
23207         (struct c_typespec): Add elements expr and expr_const_operands.
23208         (struct c_declspecs): Add elements expr and expr_const_operands.
23209         (groktypename, build_conditional_expr, build_compound_literal):
23210         Update prototypes.
23211         (in_late_binary_op): Declare.
23212         * c-typeck.c (note_integer_operands): New function.
23213         (in_late_binary_op): New variable.
23214         (decl_constant_value_for_broken_optimization): Move to c-common.c
23215         and rename to decl_constant_value_for_optimization.
23216         (default_function_array_conversion): Do not strip nops.
23217         (default_conversion): Do not call
23218         decl_constant_value_for_broken_optimization.
23219         (build_array_ref): Do not fold result.
23220         (c_expr_sizeof_expr): Fold operand.  Use C_MAYBE_CONST_EXPR for
23221         result when operand is a VLA.
23222         (c_expr_sizeof_type): Update call to groktypename.  Handle
23223         expressions included in type name.  Use C_MAYBE_CONST_EXPR for
23224         result when operand names a VLA type.
23225         (build_function_call): Update call to build_compound_literal.
23226         Only fold result for calls to __builtin_* functions.  Strip
23227         NOP_EXPR from INTEGER_CST returned from such functions.  Fold
23228         the function designator.
23229         (convert_arguments): Fold arguments.  Update call to
23230         convert_for_assignment.
23231         (build_unary_op): Handle increment and decrement of
23232         C_MAYBE_CONST_EXPR.  Move lvalue checks for increment and
23233         decrement earlier.  Fold operand of increment and decrement.
23234         Handle address of C_MAYBE_CONST_EXPR.  Only fold expression being
23235         built for integer operand.  Wrap returns that are INTEGER_CSTs
23236         without being integer constant expressions or that have integer
23237         constant operands without being INTEGER_CSTs.
23238         (lvalue_p): Handle C_MAYBE_CONST_EXPR.
23239         (build_conditional_expr): Add operand ifexp_bcp.  Track whether
23240         result is an integer constant expression or can be used in
23241         unevaluated parts of one and avoid folding and wrap as
23242         appropriate.  Fold operands before possibly doing -Wsign-compare
23243         warnings.
23244         (build_compound_expr): Wrap result for C99 if operands can be used
23245         in integer constant expressions.
23246         (build_c_cast): Update call to digest_init.  Do not ignore
23247         overflow from casting floating-point constants to integers.  Wrap
23248         results that could be confused with integer constant expressions,
23249         null pointer constants or floating-point constants.
23250         (c_cast_expr): Update call to groktypename.  Handle expressions
23251         included in type name.
23252         (build_modify_expr): Handle modifying a C_MAYBE_CONST_EXPR.  Fold
23253         lhs inside possible SAVE_EXPR.  Fold RHS before assignment.
23254         Update calls to convert_for_assignment.
23255         (convert_for_assignment): Take new parameter
23256         null_pointer_constant.  Do not strip nops or call
23257         decl_constant_value_for_broken_optimization.  Set
23258         in_late_binary_op for conversions to boolean.
23259         (store_init_value): Update call to digest_init.
23260         (digest_init): Take new parameter null_pointer_constant.  Do not
23261         call decl_constant_value_for_broken_optimization.  pedwarn for
23262         initializers not constant expressions.  Update calls to
23263         convert_for_assignment.
23264         (constructor_nonconst): New.
23265         (struct constructor_stack): Add nonconst element.
23266         (really_start_incremental_init, push_init_level, pop_init_level):
23267         Handle constructor_nonconst and nonconst element.
23268         (set_init_index): Call constant_expression_warning for array
23269         designators.
23270         (output_init_element): Fold value.  Set constructor_nonconst as
23271         applicable.  pedwarn for initializers not constant expressions.
23272         Update call to digest_init.  Call constant_expression_warning
23273         where constant initializers are required.
23274         (process_init_element): Use c_save_expr.
23275         (c_finish_goto_ptr): Fold expression.
23276         (c_finish_return): Fold return value.  Update call to
23277         convert_for_assignment.
23278         (c_start_case): Fold switch expression.
23279         (c_process_expr_stmt): Fold expression.
23280         (c_finish_stmt_expr): Create C_MAYBE_CONST_EXPR as needed to
23281         ensure statement expression is not evaluated in constant expression.
23282         (build_binary_op): Track whether results are integer constant
23283         expressions or may occur in such, disable folding and wrap results
23284         as applicable.  Fold operands for -Wsign-compare warnings unless
23285         in_late_binary_op.
23286         (c_objc_common_truthvalue_conversion): Handle results folded to
23287         integer constants that are not integer constant expressions.
23288         * doc/extend.texi: Document when typeof operands are evaluated,
23289         that condition of __builtin_choose_expr is an integer constant
23290         expression, and more about use of __builtin_constant_p in
23291         initializers.
23292
23293 2009-03-29  Richard Guenther  <rguenther@suse.de>
23294
23295         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Properly
23296         propagate addresses of array references.
23297
23298 2009-03-29  Steven Bosscher  <steven@gcc.gnu.org>
23299
23300         * regmove.c (perhaps_ends_bb_p): Remove.
23301         (optimize_reg_copy_1): Don't call perhaps_ends_bb_p.  Get basic block
23302         from INSN and check that the main loop stays within that basic block.
23303         (optimize_reg_copy_1, optimize_reg_copy_3, fixup_match_2): Likewise.
23304         (regmove_forward_pass): Split out from regmove_optimize.  Use
23305         FOR_EACH_BB and FOR_BB_INSNS instead of traversing the insns stream.
23306         (regmove_backward_pass): Split out from regmove_optimize.  Use
23307         FOR_EACH_BB_REVERSE and FOR_BB_INSNS_REVERS_SAFE.
23308         (regmove_optimize): Simplify.
23309
23310 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
23311
23312         PR target/39545
23313         * config/i386/i386.c (classify_argument): Ignore flexible array
23314         member in struct and warn ABI change.
23315
23316 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
23317
23318         * config/i386/i386-protos.h (ix86_agi_dependent): New.
23319
23320         * config/i386/i386.c (ix86_agi_dependent): Rewrite.
23321         (ix86_adjust_cost): Updated.
23322
23323 2009-03-29  Jan Hubicka  <jh@suse.cz>
23324
23325         PR middle-end/28850
23326         * tree-pass.h (pass_cleanup_eh): New function.
23327         (remove_unreachable_regions): Break code handling RTL
23328         to rtl_remove_unreachable_regions; remove ERT_MUST_NOT_THROW
23329         that can not be reached by runtime.
23330         (can_be_reached_by_runtime): New function.
23331         (label_to_region_map): New function.
23332         (num_eh_regions): New function.
23333         (rtl_remove_unreachable_regions): New function.
23334         (convert_from_eh_region_ranges): Call rtl_remove_unreachable_regions.
23335         (remove_eh_region): New function.
23336         * except.h: Include sbitmap and vecprim.
23337         (remove_eh_region, remove_unreachable_regions, label_to_region_map,
23338         num_eh_regions): Declare.
23339         * passes.c (init_optimization_passes): Schedule cleanup_eh.
23340         * Makefile.in (EXCEPT_H): New; replace all uses of except.h by it.
23341         * tree-eh.c (tree_remove_unreachable_handlers): New function.
23342         (tree_empty_eh_handler_p): New function.
23343         (cleanup_empty_eh): New function.
23344         (cleanup_eh): New function.
23345         (pass_cleanup_eh): New function.
23346
23347 2009-03-29  Jan Hubicka  <jh@suse.cz>
23348
23349         * except.c (verify_eh_tree): Fix handling of fun!=cfun; be ready
23350         for removed regions.
23351
23352 2009-03-29  Jan Hubicka  <jh@suse.cz>
23353
23354         * except.c (dump_eh_tree): Dump all datastructures.
23355
23356 2009-03-29  Jan Hubicka  <jh@suse.cz>
23357
23358         * except.c (duplicate_eh_regions_0): Handle AKA bitmap.
23359         (duplicate_eh_regions_1): Likewise.
23360         (duplicate_eh_regions): Likewise; cleanup code gorwing the region
23361         vector; call EH verification.
23362         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
23363         Be ready for region being removed.
23364
23365 2009-03-29  Jan Hubicka  <jh@suse.cz>
23366
23367         * bitmap.c (bitmap_last_set_bit): New function.
23368         * bitmap.h (bitmap_last_set_bit): Declare.
23369
23370 2009-03-29  David Ayers  <ayers@fsfe.org>
23371
23372         PR objc/27377
23373         * c-typeck.c (build_conditional_expr): Emit ObjC warnings
23374         by calling objc_compare_types and surpress warnings about
23375         incompatible C pointers that are compatible ObjC pointers.
23376
23377 2009-03-29  Adam Nemet  <anemet@caviumnetworks.com>
23378
23379         * cgraphbuild.c (build_cgraph_edges, rebuild_cgraph_edges): Don't
23380         call initialize_inline_failed.
23381         (initialize_inline_failed): Move it from here ...
23382         * cgraph.c (initialize_inline_failed): ... to here.
23383         (cgraph_create_edge): Call initialize_inline_failed rather than
23384         setting inline_failed directly.
23385
23386 2009-03-29  Ben Elliston  <bje@au.ibm.com>
23387
23388         PR target/32542
23389         * sysv4.opt (msdata): Improve comment.
23390         * linux64.h (ASM_SPEC32): Do not pass -memb when -msdata is given.
23391         * sysv4.h (SVR4_ASM_SPEC): Likewise.
23392
23393 2009-03-29  Ben Elliston  <bje@au.ibm.com>
23394
23395         PR target/30451
23396         * config/rs6000/rs6000.md (*movti_ppc64): Correct the order of
23397         load and store attributes.
23398
23399 2009-03-29  Ben Elliston  <bje@au.ibm.com>
23400
23401         * config/i386/i386.c (enum ix86_builtins): Add IX86_BUILTIN_HUGE_VALQ.
23402         (ix86_init_builtins): Add built-in function __builtin_huge_valq.
23403         (ix86_expand_builtin): Handle IX86_BUILTIN_HUGE_VALQ.
23404         * doc/extend.texi (X86 Built-in Functions): Add index entries for
23405         __builtin_infq and __builtin_huge_valq.
23406
23407 2009-03-28  Anatoly Sokolov  <aesok@post.ru>
23408
23409         * config/avr/avr.c (avr_mcu_t): Add atmega8c1, atmega16c1 and
23410         atmega8m1 devices.
23411         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
23412         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.)
23413
23414 2009-03-28  Xinliang David Li  <davidxl@google.com>
23415
23416         * tree-ssa-ccp.c (ccp_finalize): Add dbg_count support.
23417         (do_dbg_cnt): New function.
23418
23419 2009-03-28  Jan Hubicka  <jh@suse.cz>
23420
23421         Merge from pretty-ipa:
23422
23423         2009-03-27  Jan Hubicka  <jh@suse.cz>
23424
23425         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
23426         * tree-pass.h (function_called_by_processed_nodes_p): Declare.
23427         * passes.c (function_called_by_processed_nodes_p): New.
23428         * ipa-pure-const.c (check_call): Fix handling of operands.
23429         (analyze_function): Dump debug output for skipped bodies.
23430         (local_pure_const): Use function_called_by_processed_nodes_p.
23431         * dwarf2out.c (reference_to_unused): Use output.
23432         * passes.c (do_per_function_toporder): Likewise.
23433
23434         2008-11-12  Jan Hubicka  <jh@suse.cz>
23435
23436         * tree-pass.h (pass_fixup_cfg, pass_local_pure_const): Declare.
23437         * ipa-pure-const.c (funct_state_d): Add can throw field; make
23438         state_set_in_source enum
23439         (check_decl): Ignore memory tags; do not set fake looping flags;
23440         dump diagnostics.
23441         (check_operand, check_tree, check_rhs_var, check_lhs_var,
23442         get_asm_expr_operands, scan_function_op, scan_function_stmt): Remove.
23443         (check_call, analyze_function): Rewrite.
23444         (check_stmt): New.
23445         (add_new_function): Update call of analyze_function.
23446         (generate_summary): Add call of analyze_function.
23447         (propagate): Propagate can_throw; handle state_set_in_source correctly.
23448         (local_pure_const): New function.
23449         (pass_local_pure_const): New pass.
23450         * ipa-inline.c (inline_transform): Set after_inlining.
23451         * tree-eh.c (stmt_can_throw_external): New.
23452         * tree-optimize.c (execute_fixup_cfg): Do not set after_inlining;
23453         work with aliasing built.
23454         * tree-flow.h (stmt_can_throw_external): New.
23455         * passes.c (init_optimization_passes): Schedule fixup_cfg pass early;
23456         and local pure/const pass in early and late optimization queue.
23457
23458 2009-03-28  Martin Jambor  <mjambor@suse.cz>
23459
23460         * fold-const.c (get_pointer_modulus_and_residue): New parameter
23461         allow_func_align.
23462         (fold_binary): Allow function decl aligment consideration is the
23463         second argument is integer constant one.
23464         * tree-ssa-forwprop.c (simplify_bitwise_and): New function.
23465         (tree_ssa_forward_propagate_single_use_vars): Handle assing statements
23466         with BIT_AND_EXPR on the RHS by calling simplify_bitwise_and.
23467
23468 2009-03-28  Jan Hubicka  <jh@suse.cz>
23469
23470         * dwarf2out.c (dwarf2out_begin_prologue): Use crtl->nothrow
23471         * tree-eh.c (stmt_could_throw_p): Remove check for WEAK decls.
23472         * function.h (rtl_data): Add nothrow flag.
23473         * except.c (set_nothrow_function_flags): Use crtl->nothrow;
23474         set DECL_NOTHROW for AVAILABLE functions.
23475
23476 2009-03-28  Jakub Jelinek  <jakub@redhat.com>
23477
23478         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): If macro
23479         following vector keyword has expansion starting with pixel or bool
23480         keyword, expand vector to __vector and pixel or bool to __pixel or
23481         __bool.
23482
23483         PR c++/39554
23484         * opts.c (warning_disallowed_functions, warn_disallowed_functions,
23485         warn_if_disallowed_function_p): Removed.
23486         (common_handle_option): Don't handle OPT_Wdisallowed_function_list_.
23487         * c-parser.c (c_parser_postfix_expression_after_primary): Don't call
23488         warning_if_disallowed_function_p.
23489         * flags.h (warn_if_disallowed_function_p,
23490         warn_disallowed_functions): Removed.
23491         * common.opt (Wdisallowed-function-list=): Removed.
23492         * doc/invoke.texi (-Wdisallowed-function-list=): Removed.
23493
23494 2009-03-28  Richard Guenther  <rguenther@suse.de>
23495
23496         PR tree-optimization/38723
23497         * tree-ssa-pre.c (compute_avail): Add all default definitions to
23498         the entry block.
23499
23500 2009-03-28  Jan Hubicka  <jh@suse.cz>
23501
23502         * tree-ssa-structalias.c (ipa_pta_execute): Fix bogus node->analyzed
23503         test introduced by my previous patch.
23504
23505 2009-03-28  Richard Guenther  <rguenther@suse.de>
23506
23507         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not leave
23508         the PHIs value undefined.
23509
23510 2009-03-28  Jan Hubicka  <jh@suse.cz>
23511
23512         * tree-pass.h (pass_fixup_cfg): New pass.
23513         * ipa-inline.c (inline_transform): Set
23514         always_inline_functions_inlined/after_inlining.
23515         * tree-optimize.c (execute_fixup_cfg): Do not set them here.
23516         (pass_fixup_cfg): New pass.
23517         * passes.c (init_optimization_passes): Add fixup_cfg.
23518
23519 2009-03-28  Richard Guenther  <rguenther@suse.de>
23520
23521         PR tree-optimization/38458
23522         * tree-ssa-copy.c (copy_prop_visit_phi_node): For the first
23523         argument use the arguments copy-of value.
23524
23525 2009-03-28  Richard Guenther  <rguenther@suse.de>
23526
23527         PR tree-optimization/38180
23528         * tree-ssa-ccp.c (get_default_value): Simplify.
23529         (likely_value): Likewise.
23530         (surely_varying_stmt_p): Properly handle VOP case.
23531         (ccp_initialize): Likewise.
23532         (ccp_fold): Handle propagating through *&.
23533         (fold_const_aggregate_ref): Also handle decls.
23534
23535 2009-03-28  Jan Hubicka  <jh@suse.cz>
23536
23537         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
23538         * cgraph.h (cgraph_node): Likewise.
23539         * cgraphunit.c (cgraph_process_new_functions): Set process flag.
23540         (cgraph_reset_node): Use process flag.
23541         (cgraph_mark_functions_to_output): Likewise.
23542         (cgraph_expand_function): Likewise.
23543         (cgraph_expand_all_functions): Likewise.
23544         (cgraph_output_in_order): Likewise.
23545         * dwarf2out.c (reference_to_unused): Likewise.
23546         * passes.c do_per_function_toporder): Likewise.
23547
23548 2009-03-28  Jan Hubicka  <jh@suse.cz>
23549
23550         Bring from lto-branch:
23551
23552         2008-09-03  Doug Kwan  <dougkwan@google.com>
23553
23554         * cgraphbuild.c (initialize_inline_failed): Use cgraph_inline_failed_t
23555         enums instead of reason strings.
23556         * cgraph.c (cgraph_create_edge): Same.
23557         (cgraph_inline_failed_string): New function.
23558         * cgraph.h (cgraph_inline_failed_t): New enum type.
23559         (cgraph_inline_failed_string): New prototype.
23560         (struct cgraph_edge): Change type of INLINED_FAILED from constant
23561         char pointer to cgraph_inline_failed_t.
23562         (cgraph_inline_p): Adjust prototype to use cgraph_inline_failed_t.
23563         (cgraph_default_inline_p): Ditto.
23564         * cgraphunit.c (cgraph_inline_p): Change type of parameter REASON
23565         to cgraph_inline_failed_t pointer.
23566         * cif-code.def: New file.
23567         * ipa-inline.c (cgraph_mark_inline_edge): Use an enum instead of a
23568         reason string.
23569         (cgraph_check_inline_limits): Change type of REASON to pointer to
23570         cgraph_inline_failed_t.  Replace reason strings with enums.
23571         (cgraph_default_inline_p): Ditto.
23572         (cgraph_recursive_inlining_p): Ditto.
23573         (update_caller_keys): Change type of FAILED_REASON to
23574         cgraph_inline_failed_t.
23575         (cgraph_set_inline_failed): Change type of REASON to pointer to
23576         cgraph_inline_failed_t.  Call cgraph_inline_failed_string to
23577         convert enums to strings for text output.
23578         (cgraph_decide_inlining_of_small_function): Change FAILED_REASON
23579         to be of type cgraph_inline_failed_t.  Replace reason strings with
23580         enums.  Call cgraph_inline_failed_string to covert enums
23581         to strings for text output.
23582         (cgraph_decide_inlining): Replace reason strings with enums.
23583         (cgraph_decide_inlining_incrementally): Change type of FAILED_REASON
23584         to cgraph_inline_failed_t type.  Call cgraph_inline_failed_string
23585         for text output.
23586         * tree-inline.c (expand_call_inline): Change type of REASON
23587         to cgraph_inline_failed_t.  Replace reason strings with enums.
23588         Call cgraph_inline_failed_string for text output.
23589         * Makefile.in (CGRAPH_H): Add cif-code.def to dependencies.
23590         (cgraph.o): Ditto.
23591
23592 2009-03-28  Jan Hubicka  <jh@suse.cz>
23593
23594         * cgraph.c (cgraph_node, cgraph_remove_node, dump_cgraph_node,
23595         cgraph_clone_node): Remove master clone handling.
23596         (cgraph_is_master_clone, cgraph_master_clone): Remove.
23597         * cgraph.h (master_clone): Remove.
23598         (cgraph_is_master_clone, cgraph_master_clone): Remove.
23599         * ipa-type-escape.c (type_escape_execute): Remove use of master clone.
23600         (tree-ssa-structalias.c (ipa_pta_execute): Likewise.
23601
23602 2009-03-28  Jan Hubicka  <jh@suse.cz>
23603
23604         * cgraph.c (cgraph_function_body_availability): Functions declared
23605         inline are always safe to assume that it is not going to be replaced.
23606
23607 2009-03-28  Richard Guenther  <rguenther@suse.de>
23608
23609         PR tree-optimization/38513
23610         * tree-ssa-pre.c (eliminate): Remove redundant stores.
23611         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
23612         EXC_PTR_EXPR and FILTER_EXPR.
23613         (get_ref_from_reference_ops): Likewise.
23614
23615 2009-03-28  Richard Guenther  <rguenther@suse.de>
23616
23617         PR tree-optimization/38968
23618         * tree-vect-analyze.c (vect_compute_data_ref_alignment):
23619         Use FLOOR_MOD_EXPR to compute misalignment.
23620
23621 2009-03-28  Richard Guenther  <rguenther@suse.de>
23622
23623         PR tree-optimization/37795
23624         * tree.h (combine_comparisons): Declare.
23625         * fold-const.c (combine_comparisons): Export.
23626         * tree-ssa-ifcombine.c (ifcombine_ifandif): Optimize two successive
23627         comparisons.
23628         (ifcombine_iforif): Use combine_comparisons.
23629
23630 2009-03-28  Jan Hubicka  <jh@suse.cz>
23631
23632         * tree-eh.c (inlinable_call_p): New function.
23633         (make_eh_edges): Use it.
23634         (verify_eh_edges): Use it.
23635         (stmt_can_throw_external, stmt_can_throw_internal): Use it.
23636         * except.c (reachable_next_level): Add inlinable_function argument
23637         (sjlj_find_directly_reachable_regions): Update.
23638         (add_reachable_handler): Do not set saw_any_handlers.
23639         (reachable_next_level): Handle MUST_NOT_THROW more curefully.
23640         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
23641         Add new inlinable call parameter.
23642         (can_throw_internal, can_throw_external): Update.
23643         * except.h (can_throw_internal_1, can_throw_external_1,
23644         foreach_reachable_handler): Update declaration.
23645
23646 2009-03-28  Joseph Myers  <joseph@codesourcery.com>
23647
23648         * config/arm/t-arm-coff, config/h8300/coff.h,
23649         config/i386/i386-aout.h, config/i386/i386-coff.h,
23650         config/libgloss.h, config/m68k/coff.h, config/m68k/m68k-aout.h,
23651         config/pdp11/2bsd.h, config/rs6000/aix41.h,
23652         config/rs6000/aix41.opt, config/rs6000/t-newas, config/sh/coff.h,
23653         fix-header.c, fixproto, gen-protos.c, protoize.c, scan-decls.c,
23654         scan-types.sh, scan.c, scan.h, sort-protos, sys-protos.h,
23655         sys-types.h: Remove.
23656         * Makefile.in: Remove protoize and fixproto support and references
23657         in comments.
23658         (SYSCALLS.c.X-warn, TARGET_GETGROUPS_T, STMP_FIXPROTO,
23659         PROTOIZE_INSTALL_NAME, UNPROTOIZE_INSTALL_NAME, FIXPROTO_DEFINES):
23660         Remove.
23661         (ALL_HOST_OBJS): Remove $(PROTO_OBJS).
23662         (MOSTLYCLEANFILES): Remove protoize$(exeext) and
23663         unprotoize$(exeext).
23664         (rest.encap): Don't depend on $(STMP_FIXPROTO)
23665         (.PHONY): Don't depend on proto.
23666         (libgcc-support): Don't depend on $(STMP_FIXPROTO).
23667         (proto, PROTO_OBJS, protoize$(exeext), unprotoize$(exeext),
23668         protoize.o, unprotoize.o, SYSCALLS.c.X, test-protoize-simple,
23669         deduced.h, GEN_PROTOS_OBJS, build/gen-protos$(build_exeext),
23670         build/gen-protos.o, build/scan.o, xsys-protos.h,
23671         build/fix-header$(build_exeext), build/fix-header.o,
23672         build/scan-decls.o, fixhdr.ready, stmp-fixproto,
23673         stmp-install-fixproto): Remove.
23674         (mostlyclean): Don't remove xsys-protos.hT, SYSCALLS.c.X,
23675         SYSCALLS.c or fixproto files.
23676         (install-common): Don't install protoize.
23677         (install-headers-tar, install-headers-cpio, install-headers-cp):
23678         Don't depend on $(STMP_FIXPROTO).
23679         (install-mkheaders): Don't depend on $(STMP_FIXPROTO).  Don't
23680         install fixproto files or write out fixproto settings.
23681         (uninstall): Don't uninstall protoize.
23682         * config.gcc (use_fixproto): Remove.
23683         (arm-*-coff*, armel-*-coff*, h8300-*-*, i[34567]86-*-aout*,
23684         i[34567]86-*-coff*, m68k-*-aout*, m68k-*-coff*, pdp11-*-bsd,
23685         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*, sh-*-*): Remove.
23686         * config/m32r/t-linux (STMP_FIXPROTO): Remove.
23687         * config/m68k/m68k.c: Remove M68K_TARGET_COFF-conditional code.
23688         * config/mips/t-iris (FIXPROTO_DEFINES): Remove.
23689         * config/pa/t-pa-hpux (FIXPROTO_DEFINES): Remove.
23690         * config/pdp11/pdp11.c: Remove TWO_BSD-conditional code.
23691         * config/t-svr4 (FIXPROTO_DEFINES): Remove.
23692         * config/t-vxworks (STMP_FIXPROTO): Remove.
23693         * configure.ac (AC_TYPE_GETGROUPS, TARGET_GETGROUPS_T,
23694         STMP_FIXPROTO): Remove.
23695         * config.in, configure: Regenerate.
23696         * crtstuff.c (gid_t, uid_t): Don't undefine.
23697         * doc/install.texi: Change m68k-coff to m68k-elf in example.
23698         (arm-*-coff, arm-*-aout: Remove target entries.
23699         (*-ibm-aix*): Mention removal of support for AIX 4.2 and older.
23700         Remove mention of AIX 4.1.
23701         (m68k-*-*): Remove mention of m68k-*-aout and m68k-*-coff*.
23702         * doc/invoke.texi (Running Protoize): Remove.
23703         * doc/trouble.texi (Actual Bugs): Remove mention of fixproto.
23704         (Protoize Caveats): Remove.
23705         * tsystem.h: Update comments on headers assumed to exist.
23706
23707 2009-03-27  Vladimir Makarov  <vmakarov@redhat.com>
23708
23709         * genautomata.c: Add a new year to the copyright.  Add a new
23710         reference.
23711         (struct insn_reserv_decl): Add comments for member bypass_list.
23712         (find_bypass): Remove.
23713         (insert_bypass): New.
23714         (process_decls): Use insert_bypass.
23715         (output_internal_insn_latency_func): Output all bypasses with the
23716         same input insn in one switch case.
23717
23718         * rtl.def (define_bypass): Describe bypass choice.
23719         * doc/md.texi (define_bypass): Ditto.
23720
23721 2009-03-27  Richard Guenther  <rguenther@suse.de>
23722
23723         * gimplify.c (mark_addressable): Export.
23724         * tree-flow.h (mark_addressable): Declare.
23725         * tree-ssa-loop-manip.c (create_iv): Mark the base addressable.
23726         * tree-ssa.c (verify_phi_args): Verify that address taken
23727         variables have TREE_ADDRESSABLE set.
23728
23729 2009-03-27  Richard Guenther  <rguenther@suse.de>
23730
23731         * fold-const.c (build_fold_addr_expr_with_type_1): Rename back to ...
23732         (build_fold_addr_expr_with_type): ... this.  Remove in_fold handling.
23733         Do not mark decls TREE_ADDRESSABLE.
23734         (build_fold_addr_expr): Adjust.
23735         (fold_addr_expr): Remove.
23736         (fold_unary): Use build_fold_addr_expr.
23737         (fold_comparison): Likewise.
23738         (split_address_to_core_and_offset): Likewise.
23739         * coverage.c (tree_coverage_counter_addr): Mark the array decl
23740         TREE_ADDRESSABLE.
23741         * gimplify.c (mark_addressable): Do not exclude RESULT_DECLs.
23742         (gimplify_modify_expr_to_memcpy): Mark source and destination
23743         addressable.
23744         * omp-low.c (create_omp_child_function): Mark the object decl
23745         TREE_ADDRESSABLE.
23746         (lower_rec_input_clauses): Mark the var we take the address of
23747         TREE_ADDRESSABLE.
23748         (lower_omp_taskreg): Mark the sender decl TREE_ADDRESSABLE.
23749
23750 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
23751
23752         PR middle-end/39315
23753         * cfgexpand.c (expand_one_stack_var_at): Change alignment
23754         limit to MAX_SUPPORTED_STACK_ALIGNMENT.
23755
23756 2009-03-27  Richard Guenther  <rguenther@suse.de>
23757
23758         PR tree-optimization/39120
23759         * tree-ssa-structalias.c (handle_rhs_call): Fill out return
23760         constraints.
23761         (handle_lhs_call): Process return constraints.  Add escape
23762         constraints if necessary.
23763         (handle_const_call): Fill out return constraints.  Make nested
23764         case more precise.  Avoid consttmp if possible.
23765         (handle_pure_call): Fill out return constraints.  Avoid
23766         callused if possible.
23767         (find_func_aliases): Simplify call handling.
23768
23769 2009-03-27  Richard Guenther  <rguenther@suse.de>
23770
23771         PR tree-optimization/39120
23772         * tree-ssa-structalias.c (do_sd_constraint): Do not use CALLUSED
23773         as a representative.
23774         (solve_graph): Do propagate CALLUSED.
23775         (handle_pure_call): Use a scalar constraint from CALLUSED for
23776         the return value.
23777         (find_what_p_points_to): CALLUSED shall not appear in poins-to
23778         solutions.
23779
23780 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
23781
23782         PR c/39323
23783         * c-common.c (handle_aligned_attribute): Properly check alignment
23784         overflow.  Use (1U << i) instead of (1 << i).
23785
23786         * emit-rtl.c (get_mem_align_offset): Use "unsigned int" for align.
23787
23788         * expr.h (get_mem_align_offset): Updated.
23789
23790         * tree.h (tree_decl_common): Change align to "unsigned int" and
23791         move it before pointer_alias_set.
23792
23793 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
23794             Jakub Jelinek  <jakub@redhat.com>
23795
23796         PR target/38034
23797         * config/ia64/sync.md (cmpxchg_rel_<mode>): Replace input
23798         gr_register_operand with gr_reg_or_0_operand.
23799         (cmpxchg_rel_di): Likewise.
23800         (sync_lock_test_and_set<mode>): Likewise.
23801
23802 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
23803
23804         * jump.c (rtx_renumbered_equal_p): Use subreg_get_info.
23805         (true_regnum): Likewise.
23806
23807         * rtlanal.c (subreg_info): Moved to ...
23808         * rtl.h (subreg_info): Here.  New.
23809         (subreg_get_info): New.
23810
23811         * rtlanal.c (subreg_get_info): Make it extern.
23812
23813 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
23814
23815         PR target/39472
23816         * config/i386/i386.c (ix86_abi): New.
23817         (override_options): Handle -mabi=.
23818         (ix86_function_arg_regno_p): Replace DEFAULT_ABI with ix86_abi.
23819         (ix86_call_abi_override): Likewise.
23820         (init_cumulative_args): Likewise.
23821         (function_arg_advance): Likewise.
23822         (function_arg_64): Likewise.
23823         (function_arg): Likewise.
23824         (ix86_pass_by_reference): Likewise.
23825         (ix86_function_value_regno_p): Likewise.
23826         (ix86_build_builtin_va_list_abi): Likewise.
23827         (setup_incoming_varargs_64): Likewise.
23828         (is_va_list_char_pointer): Likewise.
23829         (ix86_init_machine_status): Likewise.
23830         (ix86_reg_parm_stack_space): Use enum calling_abi on call_abi.
23831         (ix86_function_type_abi): Return enum calling_abi.  Rewrite
23832         for 64bit.  Replace DEFAULT_ABI with ix86_abi.
23833         (ix86_function_abi): Make it static and return enum calling_abi.
23834         (ix86_cfun_abi): Return enum calling_abi.  Replace DEFAULT_ABI
23835         with ix86_abi.
23836         (ix86_fn_abi_va_list): Updated.
23837
23838         * config/i386/i386.h (ix86_abi): New.
23839         (STACK_BOUNDARY): Replace DEFAULT_ABI with ix86_abi.
23840         (CONDITIONAL_REGISTER_USAGE): Likewise.
23841         (CUMULATIVE_ARGS): Change call_abi type to enum calling_abi.
23842         (machine_function): Likewise.
23843
23844         * config/i386/i386.md (untyped_call): Replace DEFAULT_ABI
23845         with ix86_abi.
23846         * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Likewise.
23847         (STACK_BOUNDARY): Likewise.
23848         * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Likewise.
23849
23850         * config/i386/i386.opt (mabi=): New.
23851
23852         * config/i386/i386-protos.h (ix86_cfun_abi): Changed to
23853         return enum calling_abi.
23854         (ix86_function_type_abi): Likewise.
23855         (ix86_function_abi): Removed.
23856
23857         * doc/invoke.texi: Document -mabi= option for x86.
23858
23859 2009-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
23860
23861         * builtins.c (real_dconstp): Delete.
23862         (fold_builtin_logarithm): Remove inaccurate log(e) special case.
23863
23864 2009-03-27  Dodji Seketeli  <dodji@redhat.com>
23865             Jakub Jelinek  <jakub@redhat.com>
23866
23867         PR debug/37959
23868         * dwarf2out.c (dwarf_attr_name): Handle DW_AT_explicit attribute.
23869         (gen_subprogram_die): When a function is explicit, generate the
23870         DW_AT_explicit attribute.
23871         * langhooks.h (struct lang_hooks_for_decls): Add
23872         function_decl_explicit_p langhook.
23873         * langhooks-def.h (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P): Define.
23874         (LANG_HOOKS_DECLS): Add LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P.
23875
23876 2009-03-27  Jakub Jelinek  <jakub@redhat.com>
23877
23878         * builtins.c (fold_builtin_memory_op): Optimize memmove
23879         into memcpy if we can prove source and destination don't overlap.
23880
23881         * tree-inline.c: Include gt-tree-inline.h.
23882         (clone_fn_id_num): New variable.
23883         (clone_function_name): New function.
23884         (tree_function_versioning): Use it.
23885         * Makefile.in (GTFILES): Add tree-inline.c.
23886
23887 2009-03-27  Mark Mitchell  <mark@codesourcery.com>
23888
23889         * BASE-VER: Change to 4.5.0.
23890
23891 2009-03-27  Xinliang David Li  <davidxl@google.com>
23892
23893         PR tree-optimization/39557
23894         * tree-ssa.c (warn_uninitialized_vars): free postdom info.
23895
23896 2009-03-27  Xinliang David Li  <davidxl@google.com>
23897
23898         PR tree-optimization/39548
23899         * tree-ssa-copy.c (copy_prop_visit_phi_node): Add copy
23900         candidate check.
23901
23902 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
23903
23904         * c-common.c (pointer_int_sum): Use %wd on return from
23905         tree_low_cst.
23906
23907 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
23908
23909         * c-common.c (pointer_int_sum): Use HOST_WIDE_INT_PRINT_DEC
23910         on return from tree_low_cst.
23911
23912 2009-03-27  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23913
23914         PR c++/36799
23915         * ginclude/stdarg.h (va_copy): Define also for
23916         __GXX_EXPERIMENTAL_CXX0X__.
23917
23918 2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23919
23920         PR c++/35652
23921         * builtins.h (c_strlen): Do not warn here.
23922         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
23923         * c-common.c (pointer_int_sum): Take an explicit location.
23924         Warn about offsets out of bounds.
23925         * c-common.h (pointer_int_sum): Adjust declaration.
23926
23927 2009-03-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23928
23929         * doc/invoke.texi (i386 and x86-64 Windows Options): Fix texinfo
23930         markup glitch.
23931
23932 2009-03-26  Jakub Jelinek  <jakub@redhat.com>
23933
23934         PR c++/39554
23935         * opts.c (warn_if_disallowed_function_p): Don't assume
23936         get_callee_fndecl must return non-NULL.
23937
23938 2009-03-26  Vladimir Makarov  <vmakarov@redhat.com>
23939
23940         PR rtl-optimization/39522
23941         * reload1.c (reload_as_needed): Invalidate reg_last_reload_reg too
23942         when reg_reloaded_valid is set.
23943
23944 2009-03-26  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
23945
23946         * config/spu/divv2df3.c: New file.
23947         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add it.
23948         (DPBIT_FUNCS): Filter out _div_df.
23949
23950 2009-03-26  Bernd Schmidt  <bernd.schmidt@analog.com>
23951
23952         * config/bfin/bfin.c (bfin_optimize_loop): If the LSETUP goes before
23953         a jump insn, count that jump in the distance to the loop start.
23954
23955 2009-03-25  Kaz Kojima  <kkojima@gcc.gnu.org>
23956
23957         PR target/39523
23958         * config/sh/sh.c (calc_live_regs): Fix condition for global
23959         registers except PIC_OFFSET_TABLE_REGNUM.
23960
23961 2009-03-25  Kai Tietz  <kai.tietz@onevision.com>
23962
23963         PR/39518
23964         * doc/invoke.texi (-mconsole): New.
23965         (-mcygwin): New.
23966         (-mno-cygwin): New.
23967         (-mdll): New.
23968         (-mnop-fun-dllimport): New.
23969         (-mthread): New.
23970         (-mwin32): New.
23971         (-mwindows): New.
23972         (sub section "i386 and x86-64 Windows Options"): New.
23973
23974 2009-03-25  Ralf Corsépius  <ralf.corsepius@rtems.org>
23975
23976         * config/arm/rtems-elf.h: Remove LINK_GCC_C_SEQUENCE_SPEC.
23977         * config/rs6000/t-rtems: Remove MULTILIB_EXTRA_OPTS.
23978
23979 2009-03-25  Richard Guenther  <rguenther@suse.de>
23980
23981         PR middle-end/39497
23982         * Makefile.in (dfp.o-warn): Use -fno-strict-aliasing instead
23983         of -Wno-error.
23984
23985 2009-03-25  Andrey Belevantsev  <abel@ispras.ru>
23986
23987         * config/ia64/ia64.c (ia64_set_sched_flags): Zero spec_info->mask when
23988         neither of haifa/selective schedulers are working.
23989
23990 2009-03-25  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23991
23992         * doc/invoke.texi (Debugging Options): Fix description of
23993         -fno-merge-debug-strings.
23994
23995 2009-03-24  Hans-Peter Nilsson  <hp@axis.com>
23996
23997         * config/cris/libgcc.ver: New version-script.
23998         * config/cris/t-linux (SHLIB_MAPFILES): Use it.
23999
24000         * configure.ac <GAS features, nop mnemonic>: Add pattern
24001         crisv32-*-* for "nop".
24002         <GAS features, Thread-local storage>: Add item for CRIS and CRIS v32.
24003         * configure: Regenerate.
24004
24005 2009-03-24  Ira Rosen  <irar@il.ibm.com>
24006
24007         PR tree-optimization/39529
24008         * tree-vect-transform.c (vect_create_data_ref_ptr): Call
24009         mark_sym_for_renaming for the tag copied to the new vector
24010         pointer.
24011
24012 2009-03-24  Arthur Loiret  <aloiret@debian.org>
24013
24014         * config.host (alpha*-*-linux*): Use driver-alpha.o and alpha/x-alpha.
24015         * config/alpha/linux.h (host_detect_local_cpu): Declare, add to
24016         EXTRA_SPEC_FUNCTIONS.
24017         (MCPU_MTUNE_NATIVE_SPECS, DRIVER_SELF_SPECS): New macros.
24018         * config/alpha/driver-alpha.c, config/alpha/x-alpha: New.
24019         * doc/invoke.texi (DEC Alpha Options): Document 'native' value for
24020         -march and -mtune options.
24021
24022 2009-03-24  Ralf Corsépius  <ralf.corsepius@rtems.org>
24023
24024         * config/m68k/t-rtems: Add m5329 multilib.
24025
24026 2009-03-24  Dodji Seketeli  <dodji@redhat.com>
24027             Jakub Jelinek  <jakub@redhat.com>
24028
24029         PR debug/39524
24030         * dwarf2out.c (gen_variable_die): Avoid adding duplicate declaration
24031         nodes.
24032
24033 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
24034
24035         PR c/39495
24036         * c-parser.c (c_parser_omp_for_loop): Call c_parser_binary_expression
24037         instead of c_parser_expression_conv, if original_code isn't one of the
24038         4 allowed comparison codes, fail.
24039
24040 2009-03-23  Richard Guenther  <rguenther@suse.de>
24041
24042         * cgraph.h (struct cgraph_node): Reorder fields for 64-bit hosts.
24043         * tree.h (struct tree_type): Likewise.
24044         * reload.h (struct insn_chain): Likewise.
24045         * dwarf2out.c (struct dw_loc_descr_struct): Likewise.
24046         * function.h (struct function): Likewise.
24047         * tree-ssa-structalias.c (struct equiv_class_label): Likewise.
24048
24049 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
24050
24051         PR tree-optimization/39516
24052         * lambda-code.c (perfect_nestify): Fix type of the uboundvar variable.
24053
24054 2009-03-23  Bingfeng Mei  <bmei@broadcom.com>
24055
24056         * config.gcc (need_64bit_hwint): Make clear that need_64bit_hwint
24057         should be set true if BITS_PER_WORD of target is bigger than 32
24058
24059 2009-03-22  Hans-Peter Nilsson  <hp@axis.com>
24060
24061         * config/cris/linux.h (CRIS_LINK_SUBTARGET_SPEC):
24062         Translate -B-options to -rpath-link.  Correct existing
24063         rpath-link and conditionalize on !nostdlib.
24064
24065 2009-03-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
24066
24067         * doc/extend.texi (Function Attributes, Variable Attributes):
24068         Fix typos.
24069         * doc/invoke.texi (Debugging Options, Optimize Options)
24070         (i386 and x86-64 Options, MCore Options): Likewise.
24071
24072 2009-03-20  Jakub Jelinek  <jakub@redhat.com>
24073
24074         PR debug/37890
24075         * dwarf2out.c (gen_namespace_die): Add context_die argument and use
24076         it for block local namespace aliases.
24077         (gen_decl_die): Pass context_die to gen_namespace_die.
24078
24079 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
24080
24081         PR c/39495
24082         * c-omp.c (c_finish_omp_for): Allow NE_EXPR with TREE_TYPE (decl)'s
24083         minimum or maximum value.
24084
24085 2009-03-19  Alexandre Oliva  <aoliva@redhat.com>
24086
24087         * reginfo.c (globalize_reg): Recompute derived reg sets.
24088
24089 2009-03-19  Ozkan Sezer  <sezeroz@gmail.com>
24090
24091         PR target/39063
24092         * libgcc2.c (mprotect): Do not use signed arguments for
24093         VirtualProtect, use DWORD arguments.  Also fix the 'may
24094         be used uninitialized' warning for the np variable.
24095
24096 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
24097
24098         PR target/39496
24099         * config/i386/i386.c (ix86_function_regparm): Don't optimize local
24100         functions using regparm calling conventions when not optimizing.
24101         (ix86_function_sseregparm): Similarly for sseregparm calling
24102         conventions.
24103
24104 2009-03-19  Li Feng  <nemokingdom@gmail.com>
24105
24106         PR middle-end/39500
24107         * tree-data-ref.c (analyze_subscript_affine_affine): There is no
24108         dependence if the first conflict is after niter iterations.
24109
24110 2009-03-19  Hans-Peter Nilsson  <hp@axis.com>
24111
24112         PR middle-end/38609
24113         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Force for all
24114         functions with dynamic stack-pointer adjustments.
24115
24116 2009-03-19  Ben Elliston  <bje@au.ibm.com>
24117
24118         * doc/invoke.texi (RS/6000 and PowerPC Options): Fix -msdata-data
24119         option; change to -msdata=data.
24120
24121 2009-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
24122
24123         * c.opt: Unify help texts for -Wdeprecated, -Wsystem-headers,
24124         and -fopenmp.
24125
24126 2009-03-18  Eric Botcazou  <ebotcazou@adacore.com>
24127
24128         PR target/35180
24129         * config/sparc/sparc.md (do_builtin_setjmp_setup): Prettify asm output.
24130
24131 2009-03-18  Sandra Loosemore  <sandra@codesourcery.com>
24132
24133         * doc/invoke.texi (Code Gen Options): Expand discussion of
24134         -fno-common.
24135
24136 2009-03-18  Jakub Jelinek  <jakub@redhat.com>
24137
24138         * dse.c (struct group_info): Reorder fields for 64-bit hosts.
24139         * matrix-reorg.c (struct matrix_info): Likewise.
24140         * tree-ssa-loop-ivopts.c (struct ivopts_data): Likewise.
24141         * rtl.h (struct mem_attrs): Likewise.
24142         * df.h (struct df): Likewise.
24143         * tree-data-ref.h (struct data_dependence_relation): Likewise.
24144         * ira-int.h (struct ira_allocno): Likewise.
24145         * df-scan.c (struct df_collection_rec): Likewise.
24146         * ira.c (struct equivalence): Likewise.
24147         * function.c (struct temp_slot): Likewise.
24148         * cfgloop.h (struct loop): Likewise.
24149
24150         PR debug/39485
24151         * function.c (use_register_for_decl): When not optimizing, disregard
24152         register keyword for variables with types containing methods.
24153
24154 2009-03-18  Sebastian Pop  <sebastian.pop@amd.com>
24155
24156         PR middle-end/39447
24157         * graphite.c (exclude_component_ref): Renamed contains_component_ref_p.
24158         (is_simple_operand): Call contains_component_ref_p before calling data
24159         reference analysis that would fail on COMPONENT_REFs.
24160
24161         * tree-vrp.c (search_for_addr_array): Fix formatting.
24162
24163 2009-03-18  Richard Guenther  <rguenther@suse.de>
24164
24165         * tree-vect-transform.c (vect_loop_versioning): Fold the
24166         generated comparisons.
24167         * tree-vectorizer.c (set_prologue_iterations): Likewise.
24168         (slpeel_tree_peel_loop_to_edge): Likewise.
24169
24170 2009-03-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
24171
24172         PR middle-end/37805
24173         * opts.c (print_specific_help): In addition to `undocumented',
24174         accept `separate' and `joined' flags if passed alone.  Describe
24175         output by the first matched one of those.
24176         (common_handle_option): Skip over empty strings.
24177         * gcc.c (display_help): Fix help string for `--help='.
24178         * doc/invoke.texi (Option Summary, Overall Options): With
24179         `--help=', classes and qualifiers can both be repeated, but
24180         only the latter can be negated.  One should not pass only
24181         negated qualifiers.  Fix markup and examples.
24182
24183         Revert
24184         2008-10-14  Jakub Jelinek  <jakub@redhat.com>
24185         PR middle-end/37805
24186         * opts.c (common_handle_option): Don't ICE on -fhelp=joined
24187         and -fhelp=separate.
24188
24189 2009-03-17  Jing Yu  <jingyu@google.com>
24190
24191         PR middle-end/39378
24192         * function.h (struct rtl_data): Move is_thunk from here...
24193         (struct function): ...to here.
24194         * cp/method.c (use_thunk): Change is_thunk from crtl to cfun.
24195         * varasm.c (assemble_start_function): Change is_thunk from crtl to
24196         cfun.
24197         * config/alpha/alpha.c (alpha_sa_mask): Change is_thunk from crtl to
24198         cfun.
24199         (alpha_does_function_need_gp, alpha_start_function): Likewise.
24200         (alpha_output_function_end_prologue): Likewise.
24201         (alpha_end_function, alpha_output_mi_thunk_osf): Likewise.
24202         * config/rs6000/rs6000.c (rs6000_ra_ever_killed): Likewise.
24203         (rs6000_output_function_epilogue): Likewise.
24204         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
24205
24206 2009-03-17  Uros Bizjak  <ubizjak@gmail.com>
24207
24208         PR target/39482
24209         * config/i386/i386.md (*truncdfsf_mixed): Avoid combining registers
24210         from different units in a single alternative.
24211         (*truncdfsf_i387): Ditto.
24212         (*truncxfsf2_mixed): Ditto.
24213         (*truncxfdf2_mixed): Ditto.
24214
24215 2009-03-17  Jakub Jelinek  <jakub@redhat.com>
24216
24217         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Allow
24218         non-NAMESPACE_DECL IMPORTED_DECL_ASSOCIATED_DECL.
24219
24220         PR debug/39474
24221         * tree-ssa-live.c (remove_unused_locals): Don't remove local
24222         unused non-artificial variables when not optimizing.
24223
24224         PR debug/39471
24225         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Emit
24226         DW_TAG_imported_module even if decl is IMPORTED_DECL with
24227         NAMESPACE_DECL in its DECL_INITIAL.
24228
24229         PR middle-end/39443
24230         * optabs.c (set_user_assembler_libfunc): New function.
24231         * expr.h (set_user_assembler_libfunc): New prototype.
24232         * c-common.c: Include libfuncs.h.
24233         (set_builtin_user_assembler_name): Call set_user_assembler_libfunc
24234         for memcmp, memset, memcpy, memmove and abort.
24235         * Makefile.in (c-common.o): Depend on libfuncs.h.
24236
24237         PR debug/39412
24238         * dwarf2out.c (gen_inlined_enumeration_type_die,
24239         gen_inlined_structure_type_die, gen_inlined_union_type_die,
24240         gen_tagged_type_instantiation_die): Removed.
24241         (gen_decl_die): For TYPE_DECL_IS_STUB with non-NULL decl_origin
24242         do nothing.
24243
24244 2009-03-17  Janis Johnson  <janis187@us.ibm.com>
24245
24246         PR testsuite/38526
24247         * Makefile.in (site.exp): Rename TEST_GCC_EXEC_PREFIX and comment
24248         its use.
24249         (check-%): Don't set GCC_EXEC_PREFIX when invoking runtest.
24250         (check-parallel-%): Ditto.
24251         (check-consistency): Ditto.
24252
24253 2009-03-17  Kai Tietz  <kai.tietz@onevision.com>
24254
24255         * ipa-struct-reorg.c (create_general_new_stmt): Initialize
24256         local variable rhs by NULL_TREE.
24257
24258 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
24259
24260         PR target/39477
24261         * doc/extend.texi: Correct register behavior for regparm on Intel 386.
24262
24263 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
24264
24265         PR target/39476
24266         * config/i386/i386.c (ix86_function_regparm): Rewrite for 64bit.
24267
24268 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
24269
24270         PR target/39473
24271         * config/i386/i386.c (ix86_expand_call): Check extra clobbers
24272         for ms->sysv ABI calls only in 64bit mode.
24273
24274         * config/i386/i386.md (untyped_call): Support 32bit.
24275
24276 2009-03-16  H.J. Lu  <hongjiu.lu@intel.com>
24277
24278         * doc/extend.texi: Replace x86_65 with x86_64.
24279
24280 2009-03-16  Jakub Jelinek  <jakub@redhat.com>
24281
24282         PR tree-optimization/39455
24283         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Fix types
24284         mismatches for POINTER_TYPE_P (type).
24285         (number_of_iterations_le): Likewise.
24286
24287 2009-03-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
24288
24289         * config/picochip/picochip.c: Removed profiling support.
24290         * config/picochip/picochip.md: Removed profiling instruction.
24291         * config/picochip/picochip.h: Removed profiling builtin.
24292
24293 2009-03-16  Joseph Myers  <joseph@codesourcery.com>
24294
24295         * doc/install.texi (--with-host-libstdcxx): Document.
24296
24297 2009-03-14  Anatoly Sokolov  <aesok@post.ru>
24298
24299         PR target/34299
24300         * config/avr/avr.c (avr_handle_fndecl_attribute): Move code for
24301         generate a warning if the function name does not begin with
24302         "__vector" and the function has either the 'signal' or 'interrupt'
24303         attribute, from here to ...
24304         (avr_declare_function_name): ...here. New function.
24305         * config/avr/avr.h (ASM_DECLARE_FUNCTION_NAME): Redefine.
24306         * config/avr/avr-protos.h (avr_declare_function_name): Declare.
24307
24308 2009-03-14  Jakub Jelinek  <jakub@redhat.com>
24309
24310         PR bootstrap/39454
24311         * cse.c (fold_rtx): Don't modify original const_arg1 when
24312         canonicalizing SHIFT_COUNT_TRUNCATED shift count, do it on a
24313         separate variable instead.
24314         * rtlanal.c (nonzero_bits1) <case ASHIFTRT>: Don't assume anything
24315         from out of range shift counts.
24316         (num_sign_bit_copies1) <case ASHIFTRT, case ASHIFT>: Similarly.
24317
24318 2009-03-13  Catherine Moore  <clm@codesourcery.com>
24319
24320         * config/i386/x-mingw32 (host-mingw32.o): Replace
24321         diagnostic.h with $(DIAGNOSTIC_H).
24322
24323 2009-03-12  Jakub Jelinek  <jakub@redhat.com>
24324
24325         PR target/39431
24326         * config/i386/predicates.md (cmpxchg8b_pic_memory_operand): New
24327         predicate.
24328         * config/i386/sync.md (sync_compare_and_swap<mode>,
24329         sync_compare_and_swap_cc<mode>): For DImode with -m32 -fpic check
24330         if operands[1] is cmpxchg8b_pic_memory_operand, if not force address
24331         into a register.
24332         (sync_double_compare_and_swapdi_pic,
24333         sync_double_compare_and_swap_ccdi_pic): Require operand 1 to be
24334         cmpxchg8b_pic_memory_operand instead of just memory_operand.
24335
24336 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
24337
24338         PR target/39445
24339         * config/i386/i386.c (ix86_expand_push): Don't set memory alignment.
24340
24341 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
24342
24343         PR target/39327
24344         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
24345         (avx_addsubv4df3): Likewise.
24346         (*avx_addsubv4sf3): Likewise.
24347         (sse3_addsubv4sf3): Likewise.
24348
24349 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
24350
24351         PR target/38824
24352         * config/i386/i386.md: Compare REGNO on the new peephole2 patterns.
24353
24354 2009-03-12  Vladimir Makarov  <vmakarov@redhat.com>
24355
24356         PR debug/39432
24357         * ira-int.h (struct allocno): Fix comment for calls_crossed_num.
24358         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
24359         registers for allocnos created from user-defined variables.
24360
24361 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
24362
24363         PR target/39181
24364         * config/spu/spu.c (spu_expand_mov): Handle invalid subregs
24365         of non-integer mode as well.
24366
24367 2009-03-11  Adam Nemet  <anemet@caviumnetworks.com>
24368
24369         * gimplify.c (gimplify_call_expr): Don't set CALL_CANNOT_INLINE_P
24370         for functions for which the parameter types are unknown.
24371
24372 2009-03-11  Jakub Jelinek  <jakub@redhat.com>
24373
24374         PR target/39137
24375         * cfgexpand.c (get_decl_align_unit): Use LOCAL_DECL_ALIGNMENT macro.
24376         * defaults.h (LOCAL_DECL_ALIGNMENT): Define if not yet defined.
24377         * config/i386/i386.h (LOCAL_DECL_ALIGNMENT): Define.
24378         * config/i386/i386.c (ix86_local_alignment): For
24379         -m32 -mpreferred-stack-boundary=2 use 32-bit alignment for
24380         long long variables on the stack to avoid dynamic realignment.
24381         Allow the first argument to be a decl rather than type.
24382         * doc/tm.texi (LOCAL_DECL_ALIGNMENT): Document.
24383
24384 2009-03-11  Nick Clifton  <nickc@redhat.com>
24385
24386         PR target/5362
24387         * config/mcore/mcore.opt: Remove deprecated m4align and m8align
24388         options.
24389         Add description to mno-lsim option.
24390         * config/mcore/mcore.h: Remove comment about deprecated m4align
24391         option.
24392         (TARGET_DEFAULT): Remove deprecated MASK_M8ALIGN.
24393         * doc/invoke.texi: Add description of mno-lsim and
24394         mstack-increment options.
24395
24396         * config/fr30/fr30.opt: Document the -mno-lsim option.
24397         * doc/invoke.texi: Add descriptions of the FR30's -msmall-model
24398         and -mno-lsim options.
24399
24400 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
24401
24402         * fold-const.c (fold_comparison): Only call fold_inf_compare
24403         if the mode supports infinities.
24404
24405 2009-03-11  Jason Merrill  <jason@redhat.com>
24406
24407         PR debug/39086
24408         * tree-nrv.c (tree_nrv): Don't do this optimization if the front
24409         end already did.  Notice GIMPLE_CALL modifications of the result.
24410         Don't copy debug information from an ignored decl or a decl from
24411         another function.
24412
24413 2009-03-10  Richard Guenther  <rguenther@suse.de>
24414             Nathan Froyd  <froydnj@codesourcery.com>
24415
24416         PR middle-end/37850
24417         * libgcc2.c (__mulMODE3): Use explicit assignments to form the result.
24418         (__divMODE3): Likewise.
24419
24420 2009-03-09  Jakub Jelinek  <jakub@redhat.com>
24421
24422         PR tree-optimization/39394
24423         * gimplify.c (gimplify_type_sizes): Gimplify DECL_SIZE and
24424         DECL_SIZE_UNIT of variable length FIELD_DECLs.
24425
24426 2009-03-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
24427
24428         * recog.c (verfiy_changes): Disallow renaming of hard regs in
24429         inline asms for register asm ("") declarations.
24430
24431 2009-03-09  Eric Botcazou  <ebotcazou@adacore.com>
24432
24433         * fold-const.c (fold_unary): Fix comment.
24434
24435 2009-03-07  Jan Hubicka  <jh@suse.cz>
24436
24437         PR target/39361
24438         * tree-inline.c (setup_one_parameter): Do replacement of const
24439         argument by constant in SSA form.
24440
24441 2009-03-07  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
24442
24443         PR middle-end/38028
24444         * function.c (assign_parm_setup_stack): Use STACK_SLOT_ALIGNMENT to
24445         determine alignment passed to assign_stack_local.
24446         (assign_parms_unsplit_complex): Likewise.
24447         * except.c (sjlj_build_landing_pads): Likewise.
24448
24449 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
24450
24451         PR middle-end/39360
24452         * tree-flow.h (add_referenced_var): Return bool instead of void.
24453         * tree-dfa.c (add_referenced_var): Return result of
24454         referenced_var_check_and_insert call.
24455         * tree-inline.c (expand_call_inline): Call add_referenced_var instead
24456         of referenced_var_check_and_insert.
24457
24458         PR debug/39372
24459         * dwarf2out.c (add_abstract_origin_attribute): Return origin_die.
24460         (gen_variable_die): Emit DW_AT_location on abstract static variable's
24461         DIE, don't emit it if abstract origin already has it.
24462         * tree-cfg.c (remove_useless_stmts_bind): GIMPLE_BINDs with any
24463         BLOCK_NONLOCALIZED_VARS in its gimple_bind_block aren't useless.
24464
24465 2009-03-06  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
24466
24467         * genpreds.c (needs_variable): Fix parentheses at variable name
24468         detection.
24469         (write_tm_constrs_h): Indent generated code.
24470
24471 2009-03-06  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
24472
24473         * doc/extend.texi (Function Attributes): Add documentation
24474         for isr attributes.
24475
24476 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
24477
24478         PR debug/39387
24479         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): For IMPORTED_DECL
24480         take locus from its DECL_SOURCE_LOCATION instead of input_location.
24481
24482 2009-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
24483
24484         * config/bfin/bfin.c (bfin_discover_loop): When retrying fails, mark
24485         the loop as bad.
24486
24487 2009-03-05  Jakub Jelinek  <jakub@redhat.com>
24488
24489         PR debug/39379
24490         * tree-cfg.c (remove_useless_stmts_bind): Don't remove GIMPLE_BINDs
24491         with blocks containing IMPORTED_DECLs in BLOCK_VARS.
24492
24493 2009-03-05  Uros Bizjak  <ubizjak@gmail.com>
24494
24495         * config/i386/i386.md (R8_REG, R9_REG): New constants.
24496         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Use named
24497         constants instead of magic numbers.
24498         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
24499         (QI_REG_P): Ditto.
24500         * config/i386/i386.c (x86_64_int_parameter_registers): Ditto.
24501         (x86_64_ms_abi_int_parameter_registers): Ditto.
24502         (x86_64_int_return_registers): Ditto.
24503         (ix86_maybe_switch_abi): Ditto.
24504         (ix86_expand_call): Ditto for clobbered_registers array.
24505         (ix86_hard_regno_mode_ok): Ditto.
24506         (x86_extended_QIreg_mentioned_p): Ditto.
24507
24508 2009-03-05  J"orn Rennecke  <joern.rennecke@arc.com>
24509
24510         PR tree-optimization/39349
24511         * cse.c (cse_insn): Fix loop to stop at VOIDmode.
24512
24513         * combine.c (gen_lowpart_for_combine): Use omode when generating
24514         clobber.
24515
24516 2009-03-04  J"orn Rennecke  <joern.rennecke@arc.com>
24517
24518         PR rtl-optimization/39235
24519         * loop-iv.c (get_simple_loop_desc): Use XCNEW.
24520
24521 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
24522
24523         * graphite.c (nb_reductions_in_loop): Update simple_iv arguments.
24524
24525 2009-03-04  Richard Guenther  <rguenther@suse.de>
24526
24527         PR tree-optimization/39362
24528         * tree-ssa-sccvn.c (visit_use): Stores and copies from SSA_NAMEs
24529         that occur in abnormal PHIs should be varying.
24530
24531 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
24532
24533         * tree-scalar-evolution.c (analyze_scalar_evolution_in_loop):
24534         Extend comments.
24535         (simple_iv):  Take loop as an argument instead of statement.
24536         * tree-scalar-evolution.h (simple_iv): Declaration changed.
24537         * tree-ssa-loop-niter.c (number_of_iterations_exit): Update calls
24538         to simple_iv.
24539         * tree-ssa-loop-ivopts.c (determine_biv_step, find_givs_in_stmt_scev):
24540         Ditto.
24541         * tree-parloops.c (loop_parallel_p, canonicalize_loop_ivs): Ditto.
24542         * matrix-reorg.c (analyze_transpose): Ditto.
24543         * tree-data-ref.c (dr_analyze_innermost): Ditto.
24544         * tree-vect-analyze.c (vect_analyze_data_refs): Ditto.
24545         * tree-predcom.c (ref_at_iteration): Ditto.
24546         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Ditto.
24547
24548 2009-03-04  Richard Guenther  <rguenther@suse.de>
24549
24550         PR tree-optimization/39358
24551         * tree-ssa-structalias.c (do_sd_constraint): Fix check for
24552         escaped_id and callused_id.
24553         (solve_graph): Likewise.
24554
24555 2009-03-04  Richard Guenther  <rguenther@suse.de>
24556
24557         PR tree-optimization/39339
24558         * tree-sra.c (try_instantiate_multiple_fields): Make it
24559         no longer ICE on the above.
24560
24561 2009-03-03  Joseph Myers  <joseph@codesourcery.com>
24562
24563         * emit-rtl.c (adjust_address_1): Reduce offset to a signed value
24564         that fits within Pmode.
24565
24566 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
24567
24568         PR middle-end/10109
24569         * tm.texi (LIBCALL_VALUE): Update description.
24570
24571 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
24572
24573         PR middle-end/34443
24574         * doc/extend.texi (section): Update description.
24575
24576 2009-03-03  H.J. Lu  <hongjiu.lu@intel.com>
24577
24578         PR middle-end/39345
24579         * tree-inline.c (remapped_type): New.
24580         (can_be_nonlocal): Call remapped_type instead of remap_type.
24581
24582 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
24583
24584         PR fortran/39354
24585         * gimplify.c (goa_stabilize_expr): Handle tcc_comparison,
24586         TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR.
24587
24588 2009-03-03  Richard Guenther  <rguenther@suse.de>
24589
24590         PR middle-end/39272
24591         * tree.c (tree_nonartificial_location): New function.
24592         * tree.h (tree_nonartificial_location): Declare.
24593         * builtins.c (expand_builtin_memory_chk): Provide location
24594         of the call location for artificial function pieces.
24595         (maybe_emit_chk_warning): Likewise.
24596         (maybe_emit_sprintf_chk_warning): Likewise.
24597         (maybe_emit_free_warning): Likewise.
24598         * expr.c (expand_expr_real_1): Likewise.
24599
24600 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
24601
24602         PR tree-optimization/39343
24603         * tree-ssa-ccp.c (maybe_fold_offset_to_address): Don't check if
24604         COMPONENT_REF t has ARRAY_TYPE.
24605
24606 2009-03-02  Sebastian Pop  <sebastian.pop@amd.com>
24607
24608         PR middle-end/39335
24609         * tree-parloops.c (canonicalize_loop_ivs): Call fold_convert
24610         when the type precision of the induction variable should be
24611         larger than the type precision of nit.
24612         (gen_parallel_loop): Update use of canonicalize_loop_ivs.
24613         * graphite.c (graphite_loop_normal_form): Same.
24614         * tree-flow.h (canonicalize_loop_ivs): Update declaration.
24615
24616 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
24617
24618         * config/i386/i386.md (ST?_REG, MM?_REG): New constants.
24619         (*call_1_rex64_ms_sysv): Use named constants instead of magic
24620         numbers to describe clobbered registers.
24621         (*call_value_0_rex64_ms_sysv): Ditto.
24622         * config/i386/mmx.md (mmx_emms): Ditto.
24623         (mmx_femms): Ditto.
24624
24625 2009-03-02  Richard Sandiford  <rdsandiford@googlemail.com>
24626
24627         * config/mips/mips.c (mips_mdebug_abi_name): Fix the handling
24628         of ABI_64.
24629
24630 2009-03-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
24631
24632         * config/spu/spu.c (TARGET_SECTION_TYPE_FLAGS): Define.
24633         (spu_section_type_flags): New function.
24634
24635 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
24636
24637         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not copy
24638         reg_class_contents of FLOAT_REGS into a temporary.
24639
24640 2009-03-02  Richard Guenther  <rguenther@suse.de>
24641             Ira Rosen  <irar@il.ibm.com>
24642
24643         PR tree-optimization/39318
24644         * tree-vect-transform.c (vectorizable_call): Transfer the EH region
24645         information to the vectorized statement.
24646
24647 2009-03-01  Uros Bizjak  <ubizjak@gmail.com>
24648
24649         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not shadow "i"
24650         variable.  Use defined names instead of magic constants for REX SSE
24651         registers.
24652
24653 2009-03-01  Richard Guenther  <rguenther@suse.de>
24654
24655         PR tree-optimization/39331
24656         * omp-low.c (lower_send_shared_vars): Do not receive new
24657         values for the reference of DECL_BY_REFERENCE parms or results.
24658
24659 2009-03-01  Jan Hubicka  <jh@suse.cz>
24660
24661         PR debug/39267
24662         * tree.h (BLOCK_NONLOCALIZED_VARS, BLOCK_NUM_NONLOCALIZED_VARS,
24663         BLOCK_NONLOCALIZED_VAR): New macros.
24664         (tree_block): Add nonlocalized_vars.
24665         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die,
24666         gen_decl_die): Add origin argument.  Allow generation of die with
24667         origin at hand only.
24668         (gen_member_die, gen_type_die_with_usage, force_decl_die,
24669         declare_in_namespace, gen_namescpace_die, dwarf2out_decl): Update use
24670         of gen_*.
24671         (gen_block_die): Fix checking for unused blocks.
24672         (process_scope_var): Break out from .... ; work with origins only.
24673         (decls_for_scope) ... here; process nonlocalized list.
24674         (dwarf2out_ignore_block): Look for nonlocalized vars.
24675         * tree-ssa-live.c (remove_unused_scope_block_p): Look for nonlocalized
24676         vars.
24677         (dump_scope_block): Dump them.
24678         * tree-inline.c (remap_decls): Handle nonlocalized vars.
24679         (remap_block): Likewise.
24680         (can_be_nonlocal): New predicate.
24681         (copy_bind_expr, copy_gimple_bind): Update use of remap_block.
24682
24683 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
24684
24685         * configure: Regenerate.
24686
24687 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
24688
24689         * optc-gen.awk: No need to duplicate option flags twice.
24690         Reuse help texts for duplicate options which do not have any.
24691
24692         * gcc.c (display_help): Document --version.
24693
24694         * gcc.c (main): If print_help_list and verbose_flag, ensure
24695         driver output comes before subprocess output.
24696
24697         * optc-gen.awk: Assign all remaining fields to help string,
24698         space-separated, for multi-line help in *.opt.
24699
24700         * doc/invoke.texi (Warning Options): -Wsync-nand is C/C++ only.
24701         -Wno-pedantic-ms-format is for MinGW targets only.
24702
24703         * doc/options.texi (Option file format): Fix bad indentation,
24704         restoring dropped sentence.
24705
24706 2009-02-28  Jan Hubicka  <jh@suse.cz>
24707
24708         * tree-inline.c (tree_function_versioning): Output debug info.
24709
24710 2009-02-28  Jan Hubicka  <jh@suse.cz>
24711
24712         PR debug/39267
24713         * tree-inline.c (setup_one_parameter): Do not copy propagate
24714         arguments when not optimizing.
24715
24716 2009-02-28  H.J. Lu  <hongjiu.lu@intel.com>
24717
24718         PR target/39327
24719         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
24720         (avx_addsubv4df3): Likewise.
24721         (*avx_addsubv4sf3): Likewise.
24722         (sse3_addsubv4sf3): Likewise.
24723         (*avx_addsubv2df3): Likewise.
24724         (sse3_addsubv2df3): Likewise.
24725         (avx_unpckhps256): Correct item selectors.
24726         (avx_unpcklps256): Likewise.
24727         (avx_unpckhpd256): Likewise.
24728         (avx_unpcklpd256): Likewise.
24729
24730 2009-02-28  Jan Hubicka  <jh@suse.cz>
24731
24732         * tree-inline.c (expand_call_inline): Avoid duplicate declarations of
24733         static vars.
24734         (copy_arguments_for_versioning): If var is declared don't declare it.
24735         (tree_function_versioning): First setup substitutions and then copy
24736         args.
24737
24738 2009-02-27  Jan Hubicka  <jh@suse.cz>
24739
24740         PR debug/39267
24741         * cgraph.h (varpool_output_debug_info): Remove.
24742         * cgraphunit.c (varpool_output_debug_info): Remove.
24743         * dwarf2out.c (deferred_locations_struct): New struct
24744         (deferred_locations): New type.
24745         (deferred_locations_list): New static var.
24746         (deffer_location): New function.
24747         (gen_variable_die): Use it.
24748         (decls_for_scope): Output info on local static vars.
24749         (dwarf2out_finish): Process deferred locations.
24750         * varpool.c (varpool_output_debug_info): Remove.
24751
24752 2009-02-27  Jan Hubicka  <jh@suse.cz>
24753
24754         PR debug/39267
24755         * tree.h (TREE_PROTECTED): Fix comment.
24756         (BLOCK_HANDLER_BLOCK): Remove.
24757         (struct tree_block): Remove handler_block add body_block.
24758         (inlined_function_outer_scope_p): New.
24759         (is_body_block): Remove.
24760         * dbxout.c (dbxout_block): Remove BLOCK_HANDLER_BLOCK.
24761         * dwarf2out.c (is_inlined_entry_point): Remove.
24762         (add_high_low_attributes): Use inlined_function_outer_scope_p.
24763         (gen_block_die): Use is_inlined_entry_point check.  Remove body block
24764         code.
24765         * langhooks.h (struct lang_hooks): Remove no_bodu_blocks.
24766         * gimplify.c (gimplify_expr): Gimplify body blocks.
24767         * tree-ssa-live.c (remove_unused_scope_block_p): Allow removing wrapper
24768         block with multiple subblocks.
24769         (dump_scope_block): Prettier output; dump more flags and info.
24770         (dump_scope_blocks): New.
24771         (remove_unused_locals): Use dump_scope_blocks.
24772         * tree-flow.h (dump_scope_blocks): Declare.
24773         * tree-cfg.c (execute_build_cfg): Dump scope blocks.
24774         * stmt.c (is_body_block): Remove.
24775         * tree-inline.c (remap_block): Copy BODY_BLOCK info.
24776         * langhooks-def.h (LANG_HOOKS_NO_BODY_BLOCKS): Remove.
24777
24778 2009-02-27  Sebastian Pop  <sebastian.pop@amd.com>
24779
24780         PR middle-end/39308
24781         * graphite.c (graphite_loop_normal_form): Do not call
24782         number_of_iterations_exit from a gcc_assert.
24783
24784 2009-02-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
24785
24786         * config/s390/s390.c (s390_swap_cmp): Look for conditional
24787         jumps if COND is NULL.
24788         (find_cond_jump): New function.
24789         (s390_z10_optimize_cmp): Handling for reg-reg compares added.
24790         * config/s390/s390.md: Remove z10_cobra attribute value.
24791
24792 2009-02-26  Uros Bizjak  <ubizjak@gmail.com>
24793
24794         * config/alpha/alpha.h (alpha_expand_mov): Return false if
24795         force_const_mem returns NULL_RTX.
24796
24797 2009-02-26  Jan Hubicka  <jh@suse.cz>
24798
24799         PR debug/39267
24800         * cgraph.h (varpool_output_debug_info): Remove.
24801         * cgraphunit.c (varpool_output_debug_info): Remove.
24802         * dwarf2out.c (deferred_locations_struct): New struct
24803         (deferred_locations): New type.
24804         (deferred_locations_list): New static var.
24805         (deffer_location): New function.
24806         (gen_variable_die): Use it.
24807         (decls_for_scope): Output info on local static vars.
24808         (dwarf2out_finish): Process deferred locations.
24809         * varpool.c (varpool_output_debug_info): Remove.
24810
24811 2009-02-25  H.J. Lu  <hongjiu.lu@intel.com>
24812
24813         PR rtl-optimization/39241
24814         * jump.c (rtx_renumbered_equal_p): Remove 2 superfluous calls
24815         to subreg_offset_representable_p.
24816
24817 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
24818
24819         * regmove.c (regmove_optimize): Conform to struct rtl_opt_pass
24820         execute function prototype.  Get f and nregs from max_reg_num
24821         and get_insns.  Remove the first backward pass as it's dead,
24822         guard the forward pass by flag_expensive_optimizations.
24823         (rest_of_handle_regmove): Delete.
24824         (pass_regmove): Replace it with regmove_optimize.
24825
24826 2009-02-25  Martin Jambor  <mjambor@suse.cz>
24827
24828         PR tree-optimization/39259
24829         * tree-inline.c (initialize_cfun): Remove asserts for calls_setjmp and
24830         calls_alloca function flags.
24831         (copy_bb): Set calls_setjmp and alls_alloca function flags if such
24832         calls are detected.
24833
24834 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
24835
24836         * regmove.c (discover_flags_reg, flags_set_1, mark_flags_life_zones,
24837         flags_set_1_rtx, flags_set_1_set): Delete.
24838         (regmove_optimize): Do not call mark_flags_life_zones.
24839
24840 2009-02-24  Julian Brown  <julian@codesourcery.com>
24841
24842         PR target/35965
24843         * config/arm/arm.c (require_pic_register): Only set
24844         cfun->machine->pic_reg once per function.
24845
24846 2009-02-24  Sandra Loosemore  <sandra@codesourcery.com>
24847
24848         * doc/invoke.texi (Link Options): Document an easier way to pass
24849         options that take arguments to the GNU linker using -Xlinker and -Wl.
24850
24851 2009-02-24  Steve Ellcey  <sje@cup.hp.com>
24852
24853         PR target/33785
24854         * doc/tm.texi (TARGET_C99_FUNCTIONS): Fix description.
24855
24856 2009-02-24  Richard Guenther  <rguenther@suse.de>
24857
24858         PR debug/39285
24859         * dwarf2out.c (gen_enumeration_type_die): Handle CONST_DECLs.
24860
24861 2009-02-24  Richard Guenther  <rguenther@suse.de>
24862             Zdenek Dvorak  <ook@ucw.cz>
24863
24864         PR tree-optimization/39233
24865         * tree-ssa-loop-ivopts.c (add_candidate_1): Do not except pointers
24866         from converting them to a generic type.
24867
24868 2009-02-23  Sebastian Pop  <sebastian.pop@amd.com>
24869
24870         PR tree-optimization/39260
24871         * graphite.c (harmful_stmt_in_bb): Stop a SCoP when the basic block
24872         contains a condition with a real type.
24873         (build_scop_conditions_1): Conditions are always last_stmt of a bb.
24874
24875 2009-02-23  Jason Merrill  <jason@redhat.com>
24876
24877         PR c++/38880
24878         * varasm.c (initializer_constant_valid_p) [PLUS_EXPR]: Check
24879         narrowing_initializer_constant_valid_p.
24880         (narrowing_initializer_constant_valid_p): Don't return
24881         null_pointer_node for adding a pointer to itself.
24882
24883 2009-02-23  Jan Hubicka  <jh@suse.cz>
24884
24885         PR c/12245
24886         * ggc.h (htab_create_ggc): Use ggc_free to free hashtable when
24887         resizing.
24888
24889 2009-02-23  Jan Hubicka  <jh@suse.cz>
24890
24891         PR tree-optimization/37709
24892         * tree.c (block_ultimate_origin): Move here from dwarf2out.
24893         * tree.h (block_ultimate_origin): Declare.
24894         * dwarf2out.c (block_ultimate_origin): Move to tree.c
24895         * tree-ssa-live.c (remove_unused_scope_block_p):
24896         Eliminate blocks containig no instructions nor live variables nor
24897         nested blocks.
24898         (dump_scope_block): New function.
24899         (remove_unused_locals): Enable removal of dead blocks by default;
24900         enable dumping at TDF_DETAILS.
24901
24902 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
24903
24904         * config/i386/i386.c (classify_argument): Don't allow COImode
24905         and OImode.
24906         (function_arg_advance_32): Don't allow OImode.
24907         (function_arg_32): Likewise.
24908         (function_value_32): Likewise.
24909         (return_in_memory_32): Likewise.
24910         (function_arg_64): Remove OImode comment.
24911
24912 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
24913
24914         PR target/39261
24915         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
24916         ix86_expand_vector_set for V4DImode in 64bit mode only.
24917         (ix86_expand_vector_init_one_var): Likewise.
24918
24919 2009-02-21  Sebastian Pop  <sebastian.pop@amd.com>
24920
24921         * graphite.c (graphite_trans_loop_block): Adjust tile size to 51.
24922
24923 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
24924
24925         PR bootstrap/39257
24926         * loop-iv.c: Revert last change.
24927         * emit-rtl.c: Likewise.
24928
24929 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
24930
24931         PR target/39256
24932         * config/i386/i386.c (type_natural_mode): Remove an extra
24933         space in the warning message.
24934         (function_value_32): Handle 32-byte vector modes.
24935         (return_in_memory_32): Likewise.
24936
24937 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
24938
24939         * loop-iv.c (truncate_value): New function.
24940         (iv_subreg, get_iv_value, iv_number_of_iterations): Use it instead
24941         of lowpart_subreg.
24942         (lowpart_subreg): Move to...
24943         * emit-rtl.c: ...here.
24944
24945 2009-02-21  Danny Smith  <dannysmith@users.sourceforge.net>
24946
24947         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common): Revert
24948         accidental and undocumented change at revision 140860.
24949
24950 2009-02-21  Joseph Myers  <joseph@codesourcery.com>
24951
24952         * config/arm/arm.c (arm_gimplify_va_arg_expr): Update prototype to
24953         take gimple_seq * arguments.
24954         (arm_mangle_type): Use CONST_CAST_TREE on type argument passed to
24955         types_compatible_p langhook.
24956
24957 2009-02-20  Mark Mitchell  <mark@codesourcery.com>
24958             Joseph Myers  <joseph@codesourcery.com>
24959
24960         * config/arm/arm.c (arm_builtin_va_list): New function.
24961         (arm_expand_builtin_va_start): Likewise.
24962         (arm_gimplify_va_arg_expr): Likewise.
24963         (TARGET_BUILD_BUILTIN_VA_LIST): Define.
24964         (TARGET_BUILD_BUILTIN_VA_START): Likewise.
24965         (TARGET_BUILD_BUILTIN_VA_ARG_EXPR): Likewise.
24966         (va_list_type): New variable.
24967         (arm_mangle_type): Mangle va_list_type appropriately.
24968
24969 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
24970
24971         PR middle-end/39157
24972         * Makefile.in (loop-invariant.o): Depend on $(PARAMS_H).
24973         * params.h (LOOP_INVARIANT_MAX_BBS_IN_LOOP): Define.
24974         * params.def (loop-invariant-max-bbs-in-loop): New parameter.
24975         * opts.c (decode_options): Set loop-invariant-max-bbs-in-loop
24976         parameter to 1000 for -O1 by default.
24977         * doc/invoke.texi (loop-invariant-max-bbs-in-loop): Document new
24978         parameter.
24979         * loop-invariant.c: Include params.h.
24980         (move_loop_invariants): Don't call move_single_loop_invariants on
24981         very large loops.
24982
24983 2009-02-20  Jaka Mocnik  <jaka@xlab.si>
24984
24985         * calls.c (emit_library_call_value_1): Use slot_offset instead of
24986         offset when calculating bounds for indexing stack_usage_map.  Fixes
24987         a buffer overflow with certain target setups.
24988
24989 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
24990
24991         PR target/39240
24992         * calls.c (expand_call): Clear try_tail_call if caller and callee
24993         disagree in promotion of function return value.
24994
24995 2009-02-19  Jakub Jelinek  <jakub@redhat.com>
24996
24997         PR target/39175
24998         * c-common.c (c_determine_visibility): If visibility changed and
24999         DECL_RTL has been already set, call make_decl_rtl to update symbol
25000         flags.
25001
25002 2009-02-19  H.J. Lu  <hongjiu.lu@intel.com>
25003
25004         PR c++/39188
25005         * varasm.c (assemble_variable): Don't check DECL_NAME when
25006         globalizing a variable.
25007
25008 2009-02-19  Joseph Myers  <joseph@codesourcery.com>
25009
25010         PR c/38483
25011         * builtins.c (gimplify_va_arg_expr): Evaluate the va_list
25012         expression before any __builtin_trap call.
25013         * c-typeck.c (build_function_call): Convert and check function
25014         arguments before generating a call to a trap.  Evaluate the
25015         function arguments before the trap.
25016
25017 2009-02-19  Uros Bizjak  <ubizjak@gmail.com>
25018
25019         PR target/39228
25020         * config/i386/i386.md (isinfxf2): Split from isinf<mode>2.
25021         (UNSPEC_FXAM_MEM): New unspec.
25022         (fxam<mode>2_i387_with_temp): New insn and split pattern.
25023         (isinf<mode>2): Use MODEF mode iterator.  Force operand[1] through
25024         memory using fxam<mode>2_i387_with_temp to remove excess precision.
25025
25026 2009-02-19  Richard Guenther  <rguenther@suse.de>
25027
25028         PR tree-optimization/39207
25029         PR tree-optimization/39074
25030         * tree-ssa-structalias.c (storedanything_id, var_storedanything,
25031         storedanything_tree): New.
25032         (do_ds_constraint): Simplify ANYTHING shortcutting.  Update
25033         the STOREDANYTHING solution if the lhs solution contains ANYTHING.
25034         (build_succ_graph): Add edges from STOREDANYTHING to all
25035         non-direct nodes.
25036         (init_base_vars): Initialize STOREDANYTHING.
25037         (compute_points_to_sets): Free substitution info after
25038         building the succ graph.
25039         (ipa_pta_execute): Likewise.
25040
25041         * tree-ssa-structalias.c (struct variable_info): Add may_have_pointers
25042         field.
25043         (do_ds_constraint): Do not add to special var or non-pointer
25044         field solutions.
25045         (type_could_have_pointers): Split out from ...
25046         (could_have_pointers): ... here.  For arrays use the element type.
25047         (create_variable_info_for): Initialize may_have_pointers.
25048         (new_var_info): Likewise.
25049         (handle_lhs_call): Make the HEAP variable unknown-sized.
25050         (intra_create_variable_infos): Use a type with pointers for
25051         PARM_NOALIAS, make it unknown-sized.
25052
25053 2009-02-18  H.J. Lu  <hongjiu.lu@intel.com>
25054
25055         PR target/39224
25056         * config/i386/i386.c (ix86_return_in_memory): Properly check ABI.
25057
25058 2009-02-18  Jason Merrill  <jason@redhat.com>
25059
25060         PR target/39179
25061         * tree-ssa-ccp.c (get_symbol_constant_value): Don't assume zero
25062         value if DECL_EXTERNAL.
25063         * tree-sra.c (sra_walk_gimple_assign): Likewise.
25064         * target.h (gcc_target::binds_local_p): Clarify "module".
25065         * tree.h (TREE_PUBLIC): Clarify "module".
25066
25067 2009-02-17  Xuepeng Guo  <xuepeng.guo@intel.com>
25068
25069         PR target/38891
25070         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move the hunk of
25071         initialization for MS_ABI prior to the hunk of !TARGET_MMX.
25072
25073 2009-02-17  H.J. Lu  <hongjiu.lu@intel.com>
25074
25075         PR target/39082
25076         * c.opt (Wabi): Support C and ObjC.
25077         (Wpsabi): New.
25078
25079         * c-opts.c (c_common_handle_option): Handle OPT_Wabi.
25080
25081         * config/i386/i386.c (classify_argument): Warn once about the ABI
25082         change when passing union with long double.
25083
25084         * doc/invoke.texi: Update -Wabi for warning psABI changes.
25085
25086 2009-02-18  Joseph Myers  <joseph@codesourcery.com>
25087
25088         PR c/35447
25089         * c-parser.c (c_parser_compound_statement): Always enter and leave
25090         a scope.
25091
25092 2009-02-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
25093
25094         PR target/34587
25095         * config/darwin.h (SUPPORTS_INIT_PRIORITY): Define.
25096
25097 2009-02-18  Jakub Jelinek  <jakub@redhat.com>
25098
25099         PR tree-optimization/36922
25100         * tree-data-ref.c (initialize_matrix_A): Handle BIT_NOT_EXPR.
25101         * tree-scalar-evolution.c (interpret_rhs_expr, instantiate_scev_1):
25102         Likewise.
25103
25104 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
25105
25106         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
25107         to 0 for EABI64.
25108
25109 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
25110
25111         * config/mips/mips.md (type): Reclassify lui_movf as "unknown".
25112
25113 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
25114
25115         * config/mips/mips.c (mips_gimplify_va_arg_expr): Fix invalid
25116         tree sharing.
25117
25118 2009-02-17  Ruan Beihong  <ruanbeihong@gmail.com>
25119             Richard Sandiford  <rdsandiford@googlemail.com>
25120
25121         * config/mips/mips.c (CODE_FOR_loongson_biadd): Delete.
25122         * config/mips/loongson.md (reduc_uplus_<mode>): Rename to...
25123         (loongson_biadd): ...this.
25124
25125 2009-02-17  Richard Guenther  <rguenther@suse.de>
25126
25127         PR tree-optimization/39202
25128         * tree-ssa-structalias.c (do_structure_copy): Before collapsing
25129         a var make sure to follow existing collapses.
25130
25131 2009-02-17  Richard Guenther  <rguenther@suse.de>
25132
25133         PR middle-end/39214
25134         * langhooks.c (lhd_print_error_function): Check for NULL block.
25135
25136 2009-02-17  Richard Guenther  <rguenther@suse.de>
25137
25138         PR tree-optimization/39204
25139         * tree-ssa-pre.c (phi_translate_1): Lookup the value-number
25140         of the PHI arg.
25141
25142 2009-02-17  Uros Bizjak  <ubizjak@gmail.com>
25143
25144         * config/soft-fp/double.h: Update from glibc CVS.
25145
25146 2009-02-17  Richard Guenther  <rguenther@suse.de>
25147
25148         PR tree-optimization/39207
25149         * tree-ssa-structalias.c (find_what_p_points_to): Do not emit
25150         strict-aliasing warnings for pointers pointing to NULL.
25151
25152 2009-02-16  Joseph Myers  <joseph@codesourcery.com>
25153
25154         PR c/35446
25155         * c-parser.c (c_parser_braced_init): Call pop_init_level when
25156         skipping until next close brace.
25157
25158 2009-02-16  H.J. Lu  <hongjiu.lu@intel.com>
25159
25160         PR target/37049
25161         * config/i386/i386.c (ix86_expand_push): Set memory alignment
25162         to function argument boundary.
25163
25164 2009-02-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
25165
25166         * config/picochip/picochip.md (lea_add): Allow any nonimmediate
25167         in the lea_add. Reload eventually constraints it properly.
25168         * config/picochip/constraints.md: Remove the target constraint
25169         "b", since it is not needed anymore.
25170
25171 2009-02-16  Jakub Jelinek  <jakub@redhat.com>
25172
25173         * gthr-dce.h: Uglify function parameter and local variable names.
25174         * gthr-gnat.h: Likewise.
25175         * gthr-mipssde.h: Likewise.
25176         * gthr-nks.h: Likewise.
25177         * gthr-posix95.h: Likewise.
25178         * gthr-posix.h: Likewise.
25179         * gthr-rtems.h: Likewise.
25180         * gthr-single.h: Likewise.
25181         * gthr-solaris.h: Likewise.
25182         * gthr-tpf.h: Likewise.
25183         * gthr-vxworks.h: Likewise.
25184         * gthr-win32.h: Likewise.
25185
25186 2009-02-15  H.J. Lu  <hongjiu.lu@intel.com>
25187
25188         PR target/39196
25189         * config/i386/i386.md: Restrict the new peephole2 to move
25190         between MMX/SSE registers.
25191
25192 2009-02-15  Richard Guenther  <rguenther@suse.de>
25193
25194         Revert
25195         2009-02-13  Richard Guenther  <rguenther@suse.de>
25196
25197         * configure.ac: Enable LFS.
25198         * configure: Re-generate.
25199         * config.in: Likewise.
25200
25201 2009-02-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
25202
25203         * config/spu/spu_internals.h (spu_sr, spu_sra, spu_srqw,
25204         spu_srqwbyte, spu_srqwbytebc): Define.
25205         * config/spu/spu-builtins.def (spu_sr, spu_sra, spu_srqw,
25206         spu_srqwbyte, spu_srqwbytebc): New overloaded builtins.
25207         * config/spu/spu.md ("shrqbybi_<mode>", "shrqbi_<mode>",
25208         "shrqby_<mode>"): New insn-and-split patterns.
25209         * config/spu/spu.c (expand_builtin_args): Determine and return
25210         number of operands using spu_builtin_description data.
25211         (spu_expand_builtin_1): Use it.
25212
25213 2009-02-13  Steve Ellcey  <sje@cup.hp.com>
25214
25215         PR target/38056
25216         * config/ia64/ia64.c (ia64_function_ok_for_sibcall): Check
25217         TARGET_CONST_GP.
25218
25219 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
25220
25221         PR target/39149
25222         * config/i386/i386.c (override_options): Correct warning
25223         messages for -malign-loops, -malign-jumps and -malign-functions.
25224
25225 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
25226
25227         PR target/39152
25228         * config/i386/i386.md: Restrict the new peephole2 to move
25229         between the general purpose registers.
25230
25231 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
25232
25233         PR target/39162
25234         * config/i386/i386.c (type_natural_mode): Add a new argument.
25235         Return the original mode and warn ABI change if vector size is 32byte.
25236         (function_arg_advance): Updated.
25237         (function_arg): Likewise.
25238         (ix86_function_value): Likewise.
25239         (ix86_return_in_memory): Likewise.
25240         (ix86_sol10_return_in_memory): Likewise.
25241         (ix86_gimplify_va_arg): Likewise.
25242         (function_arg_32): Don't warn ABX ABI change here.
25243         (function_arg_64): Likewise.
25244
25245 2009-02-13  Bernd Schmidt  <bernd.schmidt@analog.com>
25246
25247         * loop-iv.c (implies_p): In the final case, test that operands 0
25248         of the two comparisons match.
25249
25250         * config/bfin/bfin.c (find_prev_insn_start): New function.
25251         (bfin_optimize_loop): Use it in some cases instead of PREV_INSN.
25252         (find_next_insn_start): Move.
25253
25254 2009-02-13  Richard Guenther  <rguenther@suse.de>
25255
25256         * configure.ac: Enable LFS.
25257         * configure: Re-generate.
25258         * config.in: Likewise.
25259
25260 2009-02-13  Joseph Myers  <joseph@codesourcery.com>
25261
25262         PR c/35444
25263         * c-parser.c (c_parser_parms_list_declarator): Discard pending
25264         sizes on syntax error after some arguments have been parsed.
25265
25266 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
25267
25268         * doc/invoke.texi (-fira): Remove.
25269
25270 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
25271
25272         * caller-save.c: Replace regclass.c with reginfo.c in comments.
25273         * recog.c: Likewise.
25274         * rtl.h: Likewise.
25275
25276 2009-02-12  Uros Bizjak  <ubizjak@gmail.com>
25277
25278         * longlong.h (sub_ddmmss): New for ia64. Ported from GMP 4.2.
25279         (umul_ppmm): Likewise.
25280         (count_leading_zeros): Likewise.
25281         (count_trailing_zeros): Likewise.
25282         (UMUL_TIME): Likewise.
25283
25284 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
25285
25286         * config.gcc (ia64*-*-linux*): Add ia64/t-fprules-softfp and
25287         soft-fp/t-softfp to tmake_file.
25288
25289         * config/ia64/ia64.c (ia64_soft_fp_init_libfuncs): New.
25290         (ia64_expand_compare): Use HPUX library for TFmode only for HPUX.
25291         (ia64_builtins) [IA64_BUILTIN_COPYSIGNQ, IA64_BUILTIN_FABSQ,
25292         IA64_BUILTIN_INFQ]: New.
25293         (ia64_init_builtins): Initialize __builtin_infq,
25294         __builtin_fabsq and __builtin_copysignq if not HPUX.
25295         (ia64_expand_builtin): Handle IA64_BUILTIN_COPYSIGNQ,
25296         IA64_BUILTIN_FABSQ and IA64_BUILTIN_INFQ.
25297
25298         * config/ia64/lib1funcs.asm (__divtf3): Define only if
25299         SHARED is defined.
25300         (__fixtfti): Likewise.
25301         (__fixunstfti): Likewise.
25302         (__floattitf): Likewise.
25303
25304         * config/ia64/libgcc-glibc.ver: New.
25305         * config/ia64/t-fprules-softfp: Likewise.
25306         * config/ia64/sfp-machine.h: Likewise.
25307
25308         * config/ia64/linux.h (LIBGCC2_HAS_TF_MODE): New.
25309         (LIBGCC2_TF_CEXT): Likewise.
25310         (TF_SIZE): Likewise.
25311         (TARGET_INIT_LIBFUNCS): Likewise.
25312
25313         * config/ia64/t-glibc (SHLINB_MAPFILES):
25314         Add $(srcdir)/config/ia64/libgcc-glibc.ver.
25315
25316 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
25317
25318         * config/i386/i386.c (construct_container): Rewrite processing
25319         BLKmode with X86_64_SSE_CLASS.
25320
25321 2009-02-12  Paolo Bonzini  <bonzini@gnu.org>
25322
25323         PR target/39152
25324         * config/i386/i386.md: Replace simplify_replace_rtx with
25325         replace_rtx in the new peephole2.
25326
25327 2009-02-12  Nathan Sidwell  <nathan@codesourcery.com>
25328
25329         * doc/invoke.texi (Optimize Options): Stop claiming inlining and
25330         loop unrolling do not happen at -O2.
25331
25332 2009-02-12  Michael Matz  <matz@suse.de>
25333
25334         * gcc.c (ASM_DEBUG_SPEC): Check for -g0.
25335
25336 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
25337
25338         * dwarf2out.c (dwarf2out_finish): Force output of comp_unit_die
25339         for -g3.
25340
25341 2009-02-12  Ben Elliston  <bje@au.ibm.com>
25342
25343         * config/rs6000/rs6000.md (allocate_stack): Use _stack form of
25344         patterns when updating the back chain.  Missed in the 2009-02-10
25345         change.
25346
25347 2009-02-11  Janis Johnson  <janis187@us.ibm.com>
25348
25349         * doc/extend.texi (Decimal Floating Types): Update identifier of
25350         draft TR and list of missing support.
25351
25352 2009-02-11  Jakub Jelinek  <jakub@redhat.com>
25353
25354         PR middle-end/39154
25355         * gimplify.c (omp_notice_variable): If adding GOVD_SEEN
25356         bit to variable length decl's flags, add it also to its
25357         pointer replacement variable.
25358
25359 2009-02-11  Uros Bizjak  <ubizjak@gmail.com>
25360             Jakub Jelinek  <jakub@redhat.com>
25361
25362         PR target/39118
25363         * config/i386/i386.md (UNSPEC_MEMORY_BLOCKAGE): New constant.
25364         (memory_blockage): New expander.
25365         (*memory_blockage): New insn pattern.
25366         * config/i386/i386.c (ix86_expand_prologue): Use memory_blockage
25367         instead of general blockage at the end of function prologue when
25368         frame pointer is used to access red zone area.  Do not emit blockage
25369         when profiling, it is emitted in generic code.
25370         (ix86_expand_epilogue): Emit memory_blockage at the beginning of
25371         function epilogue when frame pointer is used to access red zone area.
25372
25373 2009-02-11  Paolo Bonzini  <bonzini@gnu.org>
25374
25375         PR target/38824
25376         * config/i386/i386.md: Add two new peephole2 to avoid mov followed
25377         by arithmetic with memory operands.
25378         * config/i386/predicates.md (commutative_operator): New.
25379
25380 2009-02-10  Janis Johnson  <janis187@us.ibm.com>
25381
25382         * doc/extend.texi (Fixed-Point Types): Break long paragraphs into
25383         bulleted lists.
25384
25385 2009-02-10  Eric Botcazou  <ebotcazou@adacore.com>
25386
25387         * alias.h (record_alias_subset): Declare.
25388         * alias.c (record_alias_subset): Make global.
25389
25390 2009-02-10  Nick Clifton  <nickc@redhat.com>
25391
25392         * tree-parloops.c: Change license to GPLv3.
25393         * ipa-struct-reorg.c: Change license to GPLv3.
25394         * ipa-struct-reorg.h: Change license to GPLv3.
25395
25396 2009-02-10  Steve Ellcey  <sje@cup.hp.com>
25397
25398         PR c/39084
25399         * c-decl.c (start_struct): Return NULL on error.
25400
25401 2009-02-10  Jakub Jelinek  <jakub@redhat.com>
25402
25403         PR middle-end/39124
25404         * cfgloopmanip.c (remove_path): Call remove_bbs after
25405         cancel_loop_tree, not before it.
25406
25407         PR target/39139
25408         * function.h (struct function): Add has_local_explicit_reg_vars bit.
25409         * gimplify.c (gimplify_bind_expr): Set it if local DECL_HARD_REGISTER
25410         VAR_DECLs were seen.
25411         * tree-ssa-live.c (remove_unused_locals): Recompute
25412         cfun->has_local_explicit_reg_vars.
25413         * tree-ssa-sink.c (statement_sink_location): Don't sink BLKmode
25414         copies or clearings if cfun->has_local_explicit_reg_vars.
25415
25416 2009-02-10  Uros Bizjak  <ubizjak@gmail.com>
25417
25418         PR target/39118
25419         * config/i386/i386.c (expand_prologue): Emit blockage at the end
25420         of function prologue when frame pointer is used to access
25421         red zone area.
25422
25423 2009-02-10  Richard Guenther  <rguenther@suse.de>
25424
25425         PR middle-end/39127
25426         * gimplify.c (gimple_regimplify_operands): Always look if
25427         we need to create a temporary.
25428
25429 2009-02-10  Richard Guenther  <rguenther@suse.de>
25430
25431         PR tree-optimization/39132
25432         * tree-loop-distribution.c (todo): New global var.
25433         (generate_memset_zero): Trigger TODO_rebuild_alias.
25434         (tree_loop_distribution): Return todo.
25435
25436 2009-02-10  H.J. Lu  <hongjiu.lu@intel.com>
25437
25438         PR target/39119
25439         * config/i386/i386.c (x86_64_reg_class): Remove X86_64_AVX_CLASS.
25440         (x86_64_reg_class_name): Removed.
25441         (classify_argument): Return 0 if bytes > 32.  Return 0 if the
25442         first one isn't X86_64_SSE_CLASS or any other ones aren't
25443         X86_64_SSEUP_CLASS when size > 16bytes.  Don't turn
25444         X86_64_SSEUP_CLASS into X86_64_SSE_CLASS if the preceded one
25445         is X86_64_SSEUP_CLASS.  Set AVX modes to 1 X86_64_SSE_CLASS
25446         and 3 X86_64_SSEUP_CLASS.
25447         (construct_container): Remove X86_64_AVX_CLASS.  Handle 4
25448         registers with 1 X86_64_SSE_CLASS and 3 X86_64_SSEUP_CLASS.
25449
25450 2009-02-10  Ben Elliston  <bje@au.ibm.com>
25451
25452         * config/rs6000/rs6000.md (allocate_stack): Always use an update
25453         form instruction to update the stack back chain word, even if the
25454         user has disabled the generation of update instructions.
25455         (movdi_<mode>_update_stack): New.
25456         (movsi_update_stack): Likewise.
25457         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Likewise,
25458         always use an update form instruction to update the stack back
25459         chain word.
25460
25461 2009-02-09  Sebastian Pop  <sebastian.pop@amd.com>
25462
25463         PR middle-end/38953
25464         * graphite.c (if_region_set_false_region): After moving a region in
25465         the false branch of a condition, remove the empty dummy basic block.
25466         (gloog): Remove wrong fix for PR38953.
25467
25468 2009-02-09  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
25469
25470         * config/spu/spu.c (array_to_constant): Fix (latent) wrong-code
25471         generation due to implicit sign extension.
25472
25473 2009-02-09  Eric Botcazou  <ebotcazou@adacore.com>
25474
25475         PR middle-end/38981
25476         * tree-ssa-coalesce.c (add_coalesce): Cap the costs of coalesce pairs
25477         at MUST_COALESCE_COST-1 instead of MUST_COALESCE_COST.
25478
25479 2009-02-09  Richard Guenther  <rguenther@suse.de>
25480
25481         PR middle-end/35202
25482         * convert.c (convert_to_real): Disable (float)fn((double)x)
25483         to fnf(x) conversion if errno differences may occur and
25484         -fmath-errno is set.
25485
25486 2009-02-07  Anatoly Sokolov  <aesok@post.ru>
25487
25488         * config/avr/avr.c (avr_mcu_t): Add ata6289 device.
25489         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
25490         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
25491
25492 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
25493
25494         PR c/35434
25495         * c-common.c (handle_alias_attribute): Disallow attribute for
25496         anything not a FUNCTION_DECL or VAR_DECL.
25497
25498 2009-02-06  Janis Johnson  <janis187@us.ibm.com>
25499
25500         PR c/39035
25501         * real.c (do_compare): Special-case compare of zero against
25502         decimal float value.
25503
25504 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
25505
25506         PR c/36432
25507         * c-decl.c (grokdeclarator): Don't treat [] declarators in fields
25508         as indicating flexible array members unless the field itself is
25509         being declarared as the incomplete array.
25510
25511 2009-02-06  Jan Hubicka  <jh@suse.cz>
25512
25513         PR tree-optimization/38844
25514         * ipa-inline.c (try_inline): Stop inlining recursion when edge
25515         is already inlined.
25516
25517 2009-02-06  Richard Guenther  <rguenther@suse.de>
25518
25519         PR middle-end/38977
25520         * tree-cfg.c (need_fake_edge_p): Force a fake edge for
25521         fork because we may expand it as __gcov_fork.
25522
25523 2009-02-06  Nick Clifton  <nickc@redhat.com>
25524
25525         * config/m32c/m32c.h (PCC_BITFIELD_TYPE_MATTERS): Define to zero.
25526
25527 2009-02-06  Paolo Bonzini  <bonzini@gnu.org>
25528
25529         PR tree-optimization/35659
25530         * tree-ssa-sccvn.c (vn_constant_eq, vn_reference_eq, vn_nary_op_eq
25531         vn_phi_eq): Shortcut if hashcode does not match.
25532         (vn_reference_op_compute_hash): Do not call iterative_hash_expr for
25533         NULL operands.
25534         * tree-ssa-pre.c (pre_expr_hash): Look at hashcode if available,
25535         and avoid iterative_hash_expr.
25536         (FOR_EACH_VALUE_ID_IN_SET): New.
25537         (value_id_compare): Remove.
25538         (sorted_array_from_bitmap_set): Use FOR_EACH_VALUE_ID_IN_SET to
25539         sort expressions by value id.
25540
25541 2009-02-05  Kaz Kojima  <kkojima@gcc.gnu.org>
25542
25543         PR target/38991
25544         * config/sh/predicates.md (general_movsrc_operand): Don't check
25545         the subreg of system registers here.
25546
25547 2009-02-05  Jakub Jelinek  <jakub@redhat.com>
25548
25549         PR c++/39106
25550         * cgraphunit.c (cgraph_function_versioning): Clear also DECL_VIRTUAL_P
25551         on the copied decl.
25552
25553 2009-02-05  Paolo Bonzini  <bonzini@gnu.org>
25554
25555         PR rtl-optimization/39110
25556         * rtlanal.c (rtx_addr_can_trap_p_1): Shortcut unaligned
25557         addresses, not aligned ones.
25558
25559 2009-02-05  Daniel Berlin  <dberlin@dberlin.org>
25560             Richard Guenther  <rguenther@suse.de>
25561
25562         PR tree-optimization/39100
25563         * tree-ssa-structalias.c (do_ds_constraint): Actually do what the
25564         comment says and add edges.
25565
25566 2009-02-05  Joseph Myers  <joseph@codesourcery.com>
25567
25568         PR c/35435
25569         * c-common.c (handle_tls_model_attribute): Ignore attribute for
25570         non-VAR_DECLs without checking DECL_THREAD_LOCAL_P.
25571
25572 2009-02-04  Tobias Grosser  <grosser@fim.uni-passau.de>
25573
25574         * graphite.c (bb_in_sese_p, sese_build_livein_liveouts_use,
25575         sese_build_livein_liveouts_bb, sese_build_livein_liveouts,
25576         register_bb_in_sese, new_sese, free_sese): Moved.
25577         (dot_scop_1, build_scop_loop_nests, build_loop_iteration_domains,
25578         outermost_loop_in_scop, build_scop_iteration_domain,
25579         expand_scalar_variables_ssa_name, get_vdef_before_scop,
25580         limit_scops): Use bb_in_sese_p instead of bb_in_scop_p.
25581         Use loop_in_sese_p instead of loop_in_scop_p.
25582         (new_graphite_bb, gloog): Do not initialize SCOP_BBS_B.
25583         (new_scop, free_scop): Remove SCOP_LOOP2CLOOG_LOOP and SCOP_BBS_B.
25584         (scopdet_basic_block_info): Fix bug in scop detection.
25585         (new_loop_to_cloog_loop_str, hash_loop_to_cloog_loop,
25586         eq_loop_to_cloog_loop): Remove.
25587         (nb_loops_around_loop_in_scop, nb_loop
25588         ref_nb_loops): Moved here...
25589         * graphite.h (ref_nb_loops): ... from here.
25590         (struct scop): Remove bbs_b bitmap and loop2cloog_loop.
25591         (loop_domain_dim, loop_iteration_vector_dim): Remove.
25592         (SCOP_BBS_B, bb_in_scop_p, loop_in_scop_p): Removed.
25593
25594 2009-02-04  Paolo Bonzini  <bonzini@gnu.org>
25595             Hans-Peter Nilsson  <hp@axis.com>
25596
25597         PR rtl-optimization/37889
25598         * rtlanal.c (rtx_addr_can_trap_p_1): Add offset and size arguments.
25599         Move offset handling from PLUS to before the switch.  Use new
25600         arguments when considering SYMBOL_REFs too.
25601         (rtx_addr_can_trap_p): Pass dummy offset and size.
25602         (enum may_trap_p_flags): Remove.
25603         (may_trap_p_1): Pass size from MEM_SIZE.
25604
25605         PR rtl-optimization/38921
25606         * loop-invariant.c (find_invariant_insn): Use may_trap_or_fault_p.
25607         * rtl.h (may_trap_after_code_motion_p): Delete prototype.
25608         * rtlanal.c (may_trap_after_code_motion_p): Delete.
25609         (may_trap_p, may_trap_or_fault_p): Pass 0/1 as flags.
25610
25611 2009-02-04  H.J. Lu  <hongjiu.lu@intel.com>
25612
25613         AVX Programming Reference (January, 2009)
25614         * config/i386/sse.md (*vpclmulqdq): New.
25615
25616 2009-02-04  Jakub Jelinek  <jakub@redhat.com>
25617
25618         PR tree-optimization/38977
25619         PR gcov-profile/38292
25620         * calls.c (special_function_p): Disregard __builtin_ prefix.
25621
25622 2009-02-04  Hariharan Sandanagobalane  <hariharan@picochip.com>
25623
25624         * config/picochip/picochip.c (GO_IF_LEGITIMATE_ADDRESS): Disallow
25625         non-indexable addresses even before reload.
25626
25627 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
25628
25629         PR c/29129
25630         * c-decl.c (grokdeclarator): Mark [*] arrays in field declarators
25631         as having variable size.  Do not give an error for unnamed
25632         parameters with [*] declarators.  Give a warning for type names
25633         with [*] declarators and mark them as variable size.
25634         * c-parser.c (c_parser_sizeof_expression): Do not give an error
25635         for sizeof applied to [*] type names.
25636
25637 2009-02-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
25638
25639         PR C++/36607
25640         * convert.c (convert_to_integer): Treat OFFSET_TYPE like INTEGER_TYPE.
25641
25642 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
25643
25644         * gcc.c (process_command): Update copyright notice dates.
25645         * gcov.c (print_version): Likewise.
25646         * gcov-dump.c (print_version): Likewise.
25647         * mips-tfile.c (main): Likewise.
25648         * mips-tdump.c (main): Likewise.
25649
25650 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
25651
25652         PR c/35433
25653         * c-typeck.c (composite_type): Set TYPE_SIZE and TYPE_SIZE_UNIT
25654         for composite type involving a zero-length array type.
25655
25656 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
25657
25658         PR target/35318
25659         * function.c (match_asm_constraints_1): Skip over
25660         initial optional % in the constraint.
25661
25662         PR inline-asm/39059
25663         * c-parser.c (c_parser_postfix_expression): If fixed point is not
25664         supported, don't accept FIXED_CSTs.
25665         * c-decl.c (finish_declspecs): Error if fixed point is not supported
25666         and _Sat is used without _Fract/_Accum.  Set specs->type to
25667         integer_type_node for cts_fract/cts_accum if fixed point is not
25668         supported.
25669
25670 2009-02-02  Catherine Moore  <clm@codesourcery.com>
25671
25672         * sde.h (SUBTARGET_ARM_SPEC): Don't assemble -fpic code as -mabicalls.
25673
25674 2009-02-02  Richard Sandiford  <rdsandiford@googlemail.com>
25675
25676         * config/mips/mips.h (FILE_HAS_64BIT_SYMBOLS): New macro.
25677         (ABI_HAS_64BIT_SYMBOLS): Use it.
25678         (DWARF2_ADDR_SIZE): Use it instead of ABI_HAS_64BIT_SYMBOLS.
25679
25680 2009-02-02  Paul Brook  <paul@codesourcery.com>
25681
25682         * config/arm/arm.md (arm_addsi3): Add r/r/k alternative.
25683
25684 2009-02-02  Jakub Jelinek  <jakub@redhat.com>
25685
25686         PR inline-asm/39058
25687         * recog.h (asm_operand_ok): Add constraints argument.
25688         * recog.c (asm_operand_ok): Likewise.  If it is set, for digits
25689         recurse on matching constraint.
25690         (check_asm_operands): Pass constraints as 3rd argument to
25691         asm_operand_ok.  Don't look up matching constraint here.
25692         * stmt.c (expand_asm_operands): Pass NULL as 3rd argument
25693         to asm_operand_ok.
25694
25695 2009-02-02  Ben Elliston  <bje@au.ibm.com>
25696
25697         * doc/tm.texi (Storage Layout): Fix TARGET_ALIGN_ANON_BITFIELD and
25698         TARGET_NARROW_VOLATILE_BITFIELD macro names.
25699
25700 2009-01-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
25701
25702         * doc/install.texi (hppa*-hp-hpux*): Update binutils and linker
25703         information.  Remove some obsolete information.  Reorganize.
25704
25705         * config/pa/fptr.c: Revert license to GPL 2.
25706         * config/pa/milli64.S: Likewise.
25707
25708 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
25709
25710         PR target/38904
25711         * mkmap-flat.awk (END):  Use pe_dll command-line arg to pass
25712         LIBRARY name in, instead of hard-coding it.
25713         * config.gcc (i[34567]86-*-pe | i[34567]86-*-cygwin*):  Add an
25714         extra target make frag to tmake_files according to EH model.
25715         (i[34567]86-*-mingw* | x86_64-*-mingw*):  Likewise.
25716         * config/i386/t-dw2-eh, config/i386/t-sjlj-eh:  Add new target
25717         frags that define makefile variable EH_MODEL appropriately.
25718         * config/i386/cygming.h (DWARF2_UNWIND_INFO):  Add comment.
25719         * config/i386/cygwin.h (LIBGCC_EH_EXTN):  Define to nothing or
25720         to "-sjlj" according to type of EH configured.
25721         (LIBGCC_SONAME):  Concatenate it to shared library base name.
25722         * config/i386/mingw32.h (LIBGCC_EH_EXTN):  Define to "_dw2" or
25723         to "_sjlj" according to type of EH configured.
25724         (LIBGCC_SONAME):  Concatenate it to shared library base name.
25725         * config/i386/t-cygming (SHLIB_SONAME):  Use EH_MODEL.
25726         (SHLIB_LINK):  Add missing semicolon to if-else construct.
25727         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
25728         string value of "pe_dll" command-line option.
25729         * config/i386/t-cygwin (SHLIB_EH_EXTENSION):  New helper.
25730         (SHLIB_SONAME):  Use it when overriding t-cygming default.
25731         (SHLIB_IMPLIB):  Override t-cygming default.
25732         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
25733         string value of "pe_dll" command-line option.
25734
25735 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
25736
25737         PR target/38952
25738         * config/i386/i386.c (ix86_builtin_setjmp_frame_value): New.
25739         (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Override default to point at it.
25740
25741 2009-01-31  Richard Guenther  <rguenther@suse.de>
25742
25743         PR tree-optimization/38937
25744         * tree-ssa-structalias.c (do_sd_constraint): Do not shortcut
25745         computing the transitive closure.
25746
25747 2009-01-30  Richard Guenther  <rguenther@suse.de>
25748
25749         PR tree-optimization/39041
25750         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
25751         Propagate variable indices only if the types match for this stmt.
25752
25753 2009-01-30  Jakub Jelinek  <jakub@redhat.com>
25754
25755         PR target/39013
25756         * c-decl.c (pop_scope): Set DECL_EXTERNAL for functions declared
25757         inline but never defined.
25758
25759 2009-01-30  Wolfgang Gellerich  <gellerich@de.ibm.com>
25760
25761         * config/s390/s390.md (*insv<mode>_reg_extimm): Removed.
25762         (*insv_h_di_reg_extimm): New insn.
25763         (*insv_l<mode>_reg_extimm): New insn.
25764
25765 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
25766
25767         * config/picochip/picochip.c (flag_conserve_stack): set
25768         PARAM_LARGE_STACK_FRAME and PARAM_STACK_FRAME_GROWTH to zero under
25769         fconserve-stack. Reduce call-overhead used by inliner.
25770
25771 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
25772
25773         PR/38157
25774         * common.opt (flag_conserve_stack): Initialised to zero.
25775
25776 2009-01-30  Kai Tietz  <kai.tietz@onevision.com>
25777
25778         PR/39002
25779         * config/i386/i386.c (ix86_can_use_return_insn_p): Check for nsseregs.
25780         (ix86_expand_epilogue): Take nsseregs in account to use proper restore
25781         method.
25782
25783 2009-01-29  H.J. Lu  <hongjiu.lu@intel.com>
25784
25785         * ira-color.c (allocno_reload_assign): Update comments.
25786         * regmove.c (regmove_optimize): Likewise.
25787
25788         * ra.h: Removed.
25789
25790 2009-01-29  Robert Millan  <rmh@aybabtu.com>
25791
25792         * config.gcc: Recognize GNU/kOpenSolaris (*-*-kopensolaris*-gnu).
25793         * config/i386/kopensolaris-gnu.h: New file.  Undefine
25794         `MD_UNWIND_SUPPORT'.
25795         * config/kopensolaris-gnu.h: New file (based on kfreebsd-gnu.h).
25796
25797 2009-01-29  Kazu Hirata  <kazu@codesourcery.com>
25798
25799         PR tree-optimization/39007
25800         * tree-loop-distribution.c (generate_builtin): Use
25801         recompute_dominator to compute the immediate dominator of the
25802         basic block just after the loop.
25803
25804 2009-01-29  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
25805
25806         * config/i386/sol2-10.h [!HAVE_AS_IX86_DIFF_SECT_DELTA]
25807         (ASM_OUTPUT_DWARF_PCREL): Define.
25808
25809 2009-01-29  Vladimir Makarov  <vmakarov@redhat.com>
25810
25811         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Modify description.
25812         * doc/passes.texi: Remove entries about regclass, local-alloc, and
25813         global.  Modify entries about regmove and IRA.
25814
25815         * ra-conflict.c: Remove the file.
25816
25817         * reload.c (push_reload, find_dummy_reload): Remove flag_ira.
25818
25819         * tree-pass.h (pass_local_alloc, pass_global_alloc): Remove.
25820         (pass_regclass_init): Rename to pass_reginfo_init.
25821
25822         * cfgloopanal.c (estimate_reg_pressure_cost): Remove flag_ira.
25823
25824         * toplev.h (flag_ira): Remove.
25825
25826         * caller-save.c (setup_save_areas): Remove flag_ira.
25827
25828         * ira-color.c (ira_reuse_stack_slot, ira_mark_new_stack_slot): Ditto.
25829
25830         * global.c: Remove the file.
25831
25832         * opts.c (decode_options): Remove flag_ira.
25833
25834         * hard-reg-set.h (losing_caller_save_reg_set): Remove.
25835
25836         * regmove.c: Modify file description.
25837         (find_use_as_address, try_auto_increment): Define them only if
25838         AUTO_INC_DEC is defined.
25839         (replacement_quality, replace_in_call_usage, fixup_match_1,
25840         stable_and_no_regs_but_for_p): Remove.
25841         (reg_set_in_bb): Make it static.
25842         (regmove_optimize): Remove flag_ira and code which worked for
25843         !flag_ira.
25844
25845         * local-alloc.c: Remove the file.
25846
25847         * common.opt (fira): Remove.
25848
25849         * ira.c: Include except.h.
25850         (eliminable_regset): Move from global.c.
25851         (mark_elimination): Ditto.  Remove flag_ira.
25852         (reg_renumber, struct equivalence, reg_equiv, equiv_mem,
25853         equiv_mem_modified, validate_equiv_mem_from_store,
25854         validate_equiv_mem, equiv_init_varies_p, equiv_init_movable_p,
25855         contains_replace_regs, memref_referenced_p, memref_used_between_p,
25856         no_equiv, recorded_label_ref): Move from local-alloc.c.
25857         (update_equiv_regs): Ditto.  Make it static.
25858         (print_insn_chain, print_insn_chains): Move it from global.c.
25859         (pseudo_for_reload_consideration_p): Ditto.  Remove flag_ira.
25860         (build_insn_chain): Ditto.  Make it static.
25861         (ra_init_live_subregs): Move from ra-conflict.c.  Make it static.
25862         Rename to init_live_subregs.
25863         (gate_ira): Remove flag_ira.
25864
25865         * regclass.c: Rename reginfo.c.  Change file description.
25866         (FORBIDDEN_INC_DEC_CLASSES): Remove.
25867         (reg_class_superclasses, forbidden_inc_dec_class, in_inc_dec): Remove.
25868         (init_reg_sets_1): Remove code for evaluation of
25869         reg_class_superclasses and losing_caller_save_reg_set.
25870         (init_regs): Remove init_reg_autoinc.
25871         (struct costs, costs, init_cost, ok_for_index_p_nonstrict,
25872         ok_for_base_p_nonstrict): Remove.
25873         (regclass_init): Rename to reginfo_init.  Don't initialize init_cost.
25874         (pass_regclass_init): Rename to pass_reginfo_init.  Modify
25875         corresponding entries.
25876         (dump_regclass, record_operand_costs, scan_one_insn,
25877         init_reg_autoinc, regclass, record_reg_classes, copy_cost,
25878         record_address_regs, auto_inc_dec_reg_p): Remove.
25879         (gt-regclass.h): Rename to gt-reginfo.h.
25880
25881         * rtl.h (dump_global_regs, retry_global_alloc,
25882         build_insn_chain, dump_local_alloc, update_equiv_regs): Remove.
25883
25884         * Makefile.in (RA_H): Remove.
25885         (OBJS-common): Remove global.o, local-alloc.o, and ra-conflict.o.
25886         Rename regclass.o to reginfo.o.
25887         (regclass.o): Rename to reginfo.o.  Rename gt-regclass.h to
25888         gt-reginfo.h.
25889         (global.o, local-alloc.o, ra-conflict.o): Remove entries.
25890         (GTFILES): Rename regclass.c to reginfo.c.
25891
25892         * passes.c (init_optimization_passes): Remove pass_local_alloc and
25893         pass_global_alloc.  Rename pass_regclass_init to pass_reginfo_init.
25894
25895         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
25896         count_spilled_pseudo, find_reg, alter_reg, delete_output_reload):
25897         Remove flag_ira.
25898         (finish_spills): Ditto.  Remove code for !flag_ira.
25899
25900 2009-01-29  Kenneth Zadeck  <zadeck@naturalbridge.com>
25901
25902         PR middle-end/35854
25903         * doc/invoke.texi (rtl debug options): Complete rewrite.
25904         * auto-inc-dec.c (pass_inc_dec): Rename pass from "auto-inc-dec"
25905         to auto_inc_dec".
25906         * mode-switching.c (pass_mode_switching): Rename pass from
25907         "mode-sw" to "mode_sw".
25908         * except.c (pass_convert_to_eh_ranges): Rename pass from
25909         "eh-ranges" to "eh_ranges".
25910         * lower-subreg.c (pass_lower_subreg): Renamed pass from "subreg"
25911         to "subreg1".
25912
25913
25914 2009-01-29  Andrey Belevantsev  <abel@ispras.ru>
25915             Alexander Monakov  <amonakov@ispras.ru>
25916
25917         PR middle-end/38857
25918         * sel-sched.c (count_occurrences_1): Check that *cur_rtx is a hard
25919         register.
25920         (move_exprs_to_boundary): Change return type and pass through
25921         should_move from move_op.  Relax assert.  Update usage ...
25922         (schedule_expr_on_boundary): ... here.  Use should_move instead of
25923         cant_move.
25924         (move_op_orig_expr_found): Indicate that insn was disconnected from
25925         stream.
25926         (code_motion_process_successors): Do not call after_merge_succs
25927         callback if original expression was not found when traversing any of
25928         the branches.
25929         (code_motion_path_driver): Change return type.  Update prototype.
25930         (move_op): Update comment.  Add a new parameter (should_move).  Update
25931         prototype.  Set *should_move based on indication provided by
25932         move_op_orig_expr_found.
25933
25934 2009-01-28  Pat Haugen  <pthaugen@us.ibm.com>
25935
25936         * doc/invoke.texi (avoid-indexed-addresses): Document new option.
25937         * config/rs6000/rs6000-protos.h (avoiding_indexed_address_p): Declare.
25938         * config/rs6000/rs6000.opt (avoid-indexed-addresses): New option.
25939         * config/rs6000/rs6000.c (rs6000_override_options): Default
25940         avoid-indexed-addresses on for Power6, off for everything else.
25941         (avoiding_indexed_address_p): New function.
25942         (rs6000_legitimize_address): Use it.
25943         (rs6000_legitimate_address): Likewise.
25944         * config/rs6000/rs6000.md (movXX_updateX): Likewise
25945
25946 2009-01-28  Kazu Hirata  <kazu@codesourcery.com>
25947
25948         PR tree-optimization/38997
25949         * tree-loop-distribution.c (generate_memset_zero): Use
25950         POINTER_PLUS_EXPR for a pointer addition.
25951
25952 2009-01-28  Andreas Krebbel  <krebbel1@de.ibm.com>
25953
25954         * config/s390/s390.md (bswap<mode>2): New pattern added.
25955
25956 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
25957
25958         * config/s390/s390.md (*tls_load_31): Added type attribute.
25959
25960 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
25961
25962         * config/s390/s390.md: Fix a few comments.
25963
25964 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
25965
25966         * config/s390/s390.md (*tmsi_reg): Fixed z10prop attribute.
25967         (*tm<mode>_full): Fixed z10prop attribute.
25968         (*tst<mode>_extimm): Fixed z10prop attribute.
25969         (*tst<mode>_cconly_extimm): Fixed z10prop attribute.
25970         (*tstqiCCT_cconly): Fixed z10prop attribute.
25971         (*cmpsi_ccu_zerohi_rlsi): Fixed z10prop attribute.
25972         (*movsi_larl): Fixed z10prop attribute.
25973         (*movsi_zarch): Fixed z10prop attribute.
25974         (*movsi_eas): Fixed z10prop attribute.
25975         (*movhi): Fixed z10prop attribute.
25976         (*movqi): Fixed z10prop attribute.
25977         (*movstrictqi): Fixed z10prop attribute.
25978         (*mov<mode>): Fixed z10prop attribute.
25979         (*movcc): Fixed z10prop attribute.
25980         (*sethighpartdi_64): Fixed z10prop attribute.
25981         (*zero_extendhi<mode>2_z10): Fixed z10prop attribute.
25982         (*negdi2_sign_cc): Fixed z10prop attribute.
25983         (*negdi2_sign): Fixed z10prop attribute.
25984         (*absdi2_sign_cc): Fixed z10prop attribute.
25985         (*absdi2_sign): Fixed z10prop attribute.
25986         (*negabsdi2_sign_cc): Fixed z10prop attribute.
25987         (*negabsdi2_sign): Fixed z10prop attribute.
25988         (*cmp_and_trap_signed_int<mode>): Fixed z10prop attribute.
25989         (*cmp_and_trap_unsigned_int<mode>): Fixed z10prop attribute.
25990         (doloop_si64): Fixed z10prop attribute.
25991         (doloop_si31): Fixed z10prop attribute.
25992         (doloop_long): Fixed z10prop attribute.
25993         (indirect_jump): Fixed z10prop attribute.
25994         (nop): Fixed z10prop attribute.
25995         (main_base_64): Fixed z10prop attribute.
25996         (reload_base_64): Fixed z10prop attribute.
25997
25998 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
25999
26000         PR rtl-optimization/38740
26001         * reorg.c (gate_handle_delay_slots): Avoid dbr scheduling
26002         if !optimize.
26003         * config/mips/mips.c (mips_reorg): Likewise.
26004
26005 2009-01-28  Richard Guenther  <rguenther@suse.de>
26006
26007         PR tree-optimization/38926
26008         * tree-ssa-pre.c (add_to_value): Assert we add only expressions
26009         with the correct value id to a value.
26010         (do_regular_insertion): Use the value number of edoubleprime
26011         for the value number of the expr.
26012
26013         Revert
26014         2008-08-21  Richard Guenther  <rguenther@suse.de>
26015
26016         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
26017         a PHI ask VN if it is already available.
26018         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
26019         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
26020
26021 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
26022
26023         PR middle-end/38934
26024         * tree-vrp.c (extract_range_from_assert): For LE_EXPR and LT_EXPR
26025         set to varying whenever max has TREE_OVERFLOW set, similarly
26026         for GE_EXPR and GT_EXPR and TREE_OVERFLOW min.
26027
26028 2009-01-28  Richard Guenther  <rguenther@suse.de>
26029
26030         PR middle-end/38908
26031         * tree-ssa.c (warn_uninitialized_var): Do not warn for seemingly
26032         uninitialized aggregate uses in call arguments.
26033
26034 2009-01-28  Paolo Bonzini  <bonzini@gnu.org>
26035
26036         PR tree-optimization/38984
26037         * tree-ssa-structalias.c (get_constraints_for_1): Do not use
26038         the nothing_id variable if -fno-delete-null-pointer-checks.
26039
26040 2009-01-28  Uros Bizjak  <ubizjak@gmail.com>
26041
26042         PR target/38988
26043         * config/i386/i386.md (set_rip_rex64): Wrap operand 1 in label_ref.
26044         (set_got_offset_rex64): Ditto.
26045
26046 2009-01-27  H.J. Lu  <hongjiu.lu@intel.com>
26047
26048         PR target/38941
26049         * doc/extend.texi: Improve local variable with asm reg.
26050
26051 2009-01-27  Adam Nemet  <anemet@caviumnetworks.com>
26052
26053         * c.opt (Wpacked-bitfield-compat): Change init value to -1.
26054         * c-opts.c (c_common_post_options): If -W*packed-bitfield-compat
26055         was not supplied then set warn_packed_bitfield_compat to the
26056         default value of 1.
26057         * stor-layout.c (place_field): Check warn_packed_bitfield_compat
26058         against 1.
26059
26060 2009-01-27  Richard Guenther  <rguenther@suse.de>
26061
26062         PR tree-optimization/38503
26063         * cfgexpand.c (expand_gimple_basic_block): Ignore
26064         GIMPLE_CHANGE_DYNAMIC_TYPE during expansion.
26065         * tree-ssa-structalias.c (set_uids_in_ptset): Do not prune
26066         variables that cannot have TBAA applied.
26067         (compute_points_to_sets): Do not remove GIMPLE_CHANGE_DYNAMIC_TYPE
26068         statements.
26069
26070 2009-01-27  Uros Bizjak  <ubizjak@gmail.com>
26071
26072         PR middle-end/38969
26073         * calls.c (initialize_argument_information): Do not wrap complex
26074         arguments in SAVE_EXPR.
26075
26076 2009-01-26  Andreas Tobler  <a.tobler@schweiz.org>
26077
26078         * config/t-vxworks (LIBGCC2_INCLUDES): Fix typo.
26079         (INSTALL_LIBGCC): Revert typo commit.
26080
26081 2009-01-26  Richard Guenther  <rguenther@suse.de>
26082
26083         PR tree-optimization/38745
26084         * tree-ssa-alias.c (update_alias_info_1): Exclude RESULT_DECL
26085         from special handling.
26086
26087 2009-01-26  Richard Guenther  <rguenther@suse.de>
26088
26089         PR tree-optimization/38745
26090         * tree-ssa.c (execute_update_addresses_taken): Do not include
26091         variables that cannot possibly be a register in not_reg_needs.
26092         Do not clear TREE_ADDRESSABLE on vars that may not become
26093         registers.
26094         * tree-ssa.c (update_alias_info_1): Include those in the set
26095         of addressable vars.
26096
26097 2009-01-26  Richard Guenther  <rguenther@suse.de>
26098
26099         PR middle-end/38851
26100         * Makefile.in (tree-ssa-dse.o): Add langhooks.h.
26101         * tree-ssa-dse.c: Include langhooks.h
26102         (execute_simple_dse): Remove stores with zero size.
26103
26104 2009-01-24  Jakub Jelinek  <jakub@redhat.com>
26105
26106         PR c/38957
26107         * c-typeck.c (c_finish_return): Handle POINTER_PLUS_EXPR the same way
26108         as PLUS_EXPR.
26109
26110 2009-01-24  Julian Brown  <julian@codesourcery.com>
26111
26112         * config/arm/t-linux-eabi (LIB2FUNCS_STATIC_EXTRA): Add
26113         config/arm/linux-atomic.c.
26114         * config/arm/linux-atomic.c: New.
26115
26116 2009-01-24  Eric Botcazou  <ebotcazou@adacore.com>
26117
26118         * config/sparc/linux.h (DBX_REGISTER_NUMBER): Delete.
26119         * config/sparc/linux64.h (DBX_REGISTER_NUMBER): Likewise.
26120         * config/sparc/sysv4.h (DBX_REGISTER_NUMBER): Likewise.
26121
26122 2009-01-24  H.J. Lu  <hongjiu.lu@intel.com>
26123
26124         PR c/38938
26125         * c-opts.c (c_common_handle_option): Update warn_pointer_sign
26126         properly.
26127
26128 2009-01-24  Sebastian Pop  <sebastian.pop@amd.com>
26129
26130         PR tree-optimization/38953
26131         * graphite.c (graphite_verify): Add a call to verify_loop_closed_ssa.
26132         (scop_adjust_phis_for_liveouts): Initialize false_i to zero.
26133         (gloog): Split the exit of the scop when the scop exit is a loop exit.
26134         (graphite_transform_loops): Only call cleanup_tree_cfg if gloog
26135         changed the CFG.
26136
26137 2009-01-24  Paul Brook  <paul@codesourcery.com>
26138
26139         * config/arm/neon.md (neon_type): Move to arm.md.
26140         (neon_mov<VSTRUCT>): Add neon_type attribute.
26141         * config/arm/arm.md (neon_type): Move to here.
26142         (conds): Add "unconditioal" and use as default for NEON insns.
26143
26144 2009-01-24  Ben Elliston  <bje@au.ibm.com>
26145
26146         * bitmap.h (BITMAP_FREE): Eliminate `implicit conversion from
26147         void *' warning from -Wc++-compat.
26148         * Makefile.in (dominance.o-warn): Remove.
26149
26150 2009-01-23  Paolo Bonzini  <bonzini@gnu.org>
26151
26152         PR tree-optimization/38932
26153         * fold-const.c (fold_unary_ignore_overflow): New.
26154         * tree.h (fold_unary_ignore_overflow): Declare.
26155         * tree-ssa-ccp.c (ccp_fold): Use fold_unary_ignore_overflow.
26156         * tree-ssa-sccvn.c (visit_reference_op_load,
26157         simplify_unary_expression): Likewise.
26158
26159 2009-01-22  Adam Nemet  <anemet@caviumnetworks.com>
26160
26161         * c-decl.c (finish_struct): Move code to set DECL_PACKED after
26162         DECL_BIT_FIELD is alreay known.  Also inherit packed for bitfields
26163         regardless of their type.
26164         * c-common.c (handle_packed_attribute): Don't ignore packed on
26165         bitfields.
26166         * c.opt (Wpacked-bitfield-compat): New warning option.
26167         * stor-layout.c (place_field): Warn if offset of a field changed.
26168         * doc/extend.texi (packed): Mention the ABI change.
26169         * doc/invoke.texi (-Wpacked-bitfield-compat): Document.
26170         (Warning Options): Add it to the list.
26171
26172 2009-01-22  H.J. Lu  <hongjiu.lu@intel.com>
26173
26174         * c-opts.c (c_common_post_options): Fix a typo in comments.
26175
26176 2009-01-22  Steve Ellcey  <sje@cup.hp.com>
26177
26178         PR middle-end/38615
26179         * gimplify.c (gimplify_init_constructor): Fix promotion of const
26180         variables to static.
26181         * doc/invoke.texi (-fmerge-all-constants): Update description.
26182
26183 2009-01-22  Uros Bizjak  <ubizjak@gmail.com>
26184
26185         PR target/38931
26186         * config/i386/i386.md (*movsi_1): Use type "mmx" for alternative 2.
26187         (*movdi_1_rex64): Use type "mmx" for alternative 5.
26188
26189 2009-01-22  Richard Earnshaw  <rearnsha@arm.com>
26190
26191         * arm.h (DATA_ALIGNMENT): Align structures, unions and arrays to
26192         a word boundary.
26193         (LOCAL_ALIGNMENT): Similarly.
26194
26195 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
26196             Joseph Myers  <joseph@codesourcery.com>
26197
26198         * config/arm/arm.c (all_architectures): Add iWMMXt2 entry.
26199         * config/arm/arm-cores.def: New ARM_CORE entry for iWMMXt2.
26200         * config/arm/arm-tune.md: Regenerate.
26201         * doc/invoke.texi (ARM Options): Document -mcpu=iwmmxt2 and
26202         -march=iwmmxt2.
26203
26204 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
26205
26206         * config/arm/bpabi.h (SUBTARGET_EXTRA_ASM_SPEC): Bump EABI
26207         version number to five.
26208
26209 2009-01-22  Dodji Seketeli  <dodji@redhat.com>
26210
26211         PR c++/38930
26212         * c-decl.c (clone_underlying_type): Revert PR c++/26693 changes.
26213         * c-common.c (set_underlying_type): Likewise.
26214         (is_typedef_decl ): Likewise
26215         * tree.h: Likewise
26216         (set_underlying_type): Likewise.
26217         (is_typedef_type): Likewise.
26218
26219 2009-01-21  Vladimir Makarov  <vmakarov@redhat.com>
26220
26221         PR middle-end/38587
26222         * ira-color.c (coalesce_spill_slots): Don't coalesce allocnos
26223         crossing setjmps.
26224
26225 2009-01-21  Dave Korn  <dave.korn.cygwin@gmail.com>
26226
26227         PR bootstrap/37660
26228         * config/i386/cygwin.h (SHARED_LIBGCC_SPEC):  New helper macro.
26229         (LIBGCC_SPEC):  Don't define.
26230         (REAL_LIBGCC_SPEC):  Define instead, using SHARED_LIBGCC_SPEC.
26231
26232 2009-01-21  Uros Bizjak  <ubizjak@gmail.com>
26233
26234         PR rtl-optimization/38879
26235         * alias.c (base_alias_check): Unaligned access via AND address can
26236         alias all surrounding object types except those with sizes equal
26237         or wider than the size of unaligned access.
26238
26239 2009-01-21  Dodji Seketeli  <dodji@redhat.com>
26240
26241         PR c++/26693
26242         * c-decl.c (clone_underlying_type): Move this ...
26243         * c-common.c (set_underlying_type): ... here.
26244         Also, make sure the function properly sets TYPE_STUB_DECL() on
26245         the newly created typedef variant type.
26246         (is_typedef_decl ): New entry point.
26247         * tree.h: Added a new member member_types_needing_access_check to
26248         struct tree_decl_non_common.
26249         (set_underlying_type): New entry point.
26250         (is_typedef_type): Likewise.
26251
26252 2009-01-21  Bingfeng Mei  <bmei@broadcom.com>
26253
26254         * alias.c (walk_mems_1, walk_mems_2, insn_alias_sets_conflict_p):
26255         Check whether two instructions have memory references that
26256         belong to conflicting alias sets.  walk_mems_1 and walk_mems_2
26257         are helper functions for traversing.
26258         * alias.h (insn_alias_sets_confilict_p): New prototypes.
26259         * ddg.c (add_inter_loop_mem_dep): Call insn_alias_sets_conflict_p
26260         not to draw dependency edge for instructions with non-conflicting
26261         alias sets.
26262
26263 2009-01-20  Joseph Myers  <joseph@codesourcery.com>
26264
26265         PR other/38758
26266         * longlong.h: Update copyright years.  Use soft-fp license notice.
26267         Sync __clz_tab declaration with glibc.
26268
26269 2009-01-20  Steve Ellcey  <sje@cup.hp.com>
26270
26271         PR target/30687
26272         * doc/extend.texi (syscall_linkage): New.
26273         (version_id): Modify.
26274
26275 2009-01-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
26276             Richard Guenther  <rguenther@suse.de>
26277
26278         PR tree-optimization/38747
26279         PR tree-optimization/38748
26280         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Disable the VCE
26281         conversion if the base address is an indirect reference and the
26282         aliasing sets could cause issues.
26283
26284 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
26285
26286         * common.opt (fgraphite, fgraphite-identity): Add comment for
26287         explaining why these options are not documented.
26288
26289 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
26290
26291         * graphite.c (stmt_simple_for_scop_p): Also handle cases when
26292         gimple_call_lhs is NULL.
26293
26294 2009-01-20  Paolo Bonzini  <bonzini@gnu.org>
26295
26296         PR target/38868
26297         * emit-rtl.c (adjust_address_1): Make sure memref is never
26298         overwritten.
26299
26300 2009-01-20  Ben Elliston  <bje@au.ibm.com>
26301
26302         * libgcov.c (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
26303         const qualifier from arg parameter. Remove unnecessary cast to char *.
26304         * gcov-io.h (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
26305         const qualifier from arg 2.
26306
26307 2009-01-19  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
26308
26309         * config/darwin.h: Add static-libgfortran to LINK_SPEC.
26310
26311 2009-01-19  Vladimir Makarov  <vmakarov@redhat.com>
26312
26313         PR c/38869
26314         * rtl.h (reinit_regs): New prototype.
26315         * regclass.c: Include ira.h.
26316         (reinit_regs): New.
26317         * Makefile.in (regclass.o): Add ira.h.
26318         * config/i386/i386.c (ix86_maybe_switch_abi): Use reinit_regs.
26319
26320 2009-01-18  H.J. Lu  <hongjiu.lu@intel.com>
26321
26322         PR target/38736
26323         * c-common.c (handle_aligned_attribute): Use
26324         ATTRIBUTE_ALIGNED_VALUE instead of BIGGEST_ALIGNMENT for
26325         default alignment value.
26326
26327         * c-cppbuiltin.c (c_cpp_builtins): Define __BIGGEST_ALIGNMENT__.
26328
26329         * defaults.h (ATTRIBUTE_ALIGNED_VALUE): New.
26330         * config/i386/i386.h (ATTRIBUTE_ALIGNED_VALUE): Likewise.
26331
26332         * doc/extend.texi: Update __attribute__ ((aligned)).  Document
26333         __BIGGEST_ALIGNMENT__.
26334
26335         * doc/tm.texi: Document ATTRIBUTE_ALIGNED_VALUE.
26336
26337 2009-01-18  Richard Guenther  <rguenther@suse.de>
26338
26339         PR tree-optimization/38819
26340         * tree-flow.h (operation_could_trap_helper_p): Declare.
26341         * tree-eh.c (operation_could_trap_helper_p): Export.
26342         * tree-ssa-sccvn.h (vn_nary_may_trap): Declare.
26343         * tree-ssa-sccvn.c (vn_nary_may_trap): New function.
26344         * tree-ssa-pre.c (insert_into_preds_of_block): Check if we
26345         are about to insert a possibly trapping instruction and fail
26346         in this case.
26347
26348 2009-01-18  Andreas Schwab  <schwab@suse.de>
26349
26350         * doc/install.texi (Configuration): Remove obsolete paragraph
26351         about use of --with-gnu-ld with --with-gnu-as.
26352
26353 2009-01-18  Kazu Hirata  <kazu@codesourcery.com>
26354
26355         * doc/extend.texi, doc/gimple.texi, doc/invoke.texi,
26356         doc/md.texi, doc/sourcebuild.texi, doc/tm.texi: Fix typos.
26357         Follow spelling conventions.
26358
26359 2009-01-18  Ben Elliston  <bje@au.ibm.com>
26360
26361         * bitmap.c (bitmap_obstack_alloc_stat): Adjust cast to eliminate
26362         C++ warning about implicit conversion from void * to struct
26363         bitmap_head_def *.
26364         (bitmap_obstack_free): Likewise for bitmap_element *.
26365         * Makefile.in (bitmap.o-warn): Remove.
26366
26367 2009-01-17  Dave Korn  <dave.korn.cygwin@gmail.com>
26368
26369         * Makefile.in (BACKENDLIBS):  Reorder to match dependencies.
26370
26371 2009-01-17  Sebastian Pop  <sebastian.pop@amd.com>
26372             Tobias Grosser  <tobi.grosser@amd.com>
26373
26374         * graphite.c (graphite_trans_scop_block): Do not block single
26375         nested loops.
26376
26377 2009-01-16  Alexandre Oliva  <aoliva@redhat.com>
26378
26379         * ebitmap.h (ebitmap_iter_init): Initialize all fields.
26380         * ipa-struct-reorg.c (gen_struct_type): Replace known-true
26381         test with assertion.
26382
26383 2009-01-16  Richard Guenther  <rguenther@suse.de>
26384
26385         PR tree-optimization/38835
26386         PR middle-end/36227
26387         * fold-const.c (fold_binary): Remove PTR + INT -> (INT)(PTR p+ INT)
26388         and INT + PTR -> (INT)(PTR p+ INT) folding.
26389         * tree-ssa-address.c (create_mem_ref): Properly use POINTER_PLUS_EXPR.
26390
26391 2009-01-16  Adam Nemet  <anemet@caviumnetworks.com>
26392
26393         PR target/38554
26394         * expmed.c (expand_shift): With SHIFT_COUNT_TRUNCATED, don't lift
26395         the subreg from a lowpart subreg if it is also casting the value.
26396
26397 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
26398             Tobias Grosser  <tobi.grosser@amd.com>
26399
26400         * graphite.c (compare_prefix_loops): New.
26401         (build_scop_canonical_schedules): Rewritten.
26402         (graphite_transform_loops): Move build_scop_canonical_schedules
26403         after build_scop_iteration_domain.
26404
26405 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
26406             Tobias Grosser  <tobi.grosser@amd.com>
26407
26408         * graphite.c (add_conditions_to_domain): Add the loops to
26409         the dimension of the iteration domain.  Do copy the domain
26410         only when it exists.
26411         (build_scop_conditions_1): Do not call add_conditions_to_domain.
26412         (add_conditions_to_constraints): New.
26413         (can_generate_code_stmt, can_generate_code): Removed.
26414         (gloog): Do not call can_generate_code.
26415         (graphite_transform_loops): Call add_conditions_to_constraints
26416         after building the iteration domain.
26417
26418 2009-01-16  Jakub Jelinek  <jakub@redhat.com>
26419
26420         PR tree-optimization/38789
26421         * tree-ssa-threadedge.c
26422         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
26423         __builtin_constant_p.
26424
26425 2009-01-16  Kenneth Zadeck  <zadeck@naturalbridge.com>
26426
26427         * dce.c (delete_unmarked_insns): Reversed the order that insns are
26428         examined before deleting them.
26429
26430 2009-01-16  Richard Earnshaw  <rearnsha@arm.com>
26431
26432         * function.c (aggregate_value_p): Correctly extract the function
26433         type from CALL_EXPR_FN lookup.
26434
26435 2009-01-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
26436
26437         * config/picochip/picochip.c (picochip_override_options): Revert
26438         CFI asm flag disable commited previously.
26439
26440 2009-01-15  Sebastian Pop  <sebastian.pop@amd.com>
26441             Tobias Grosser  <tobi.grosser@amd.com>
26442             Jan Sjodin  <jan.sjodin@amd.com>
26443
26444         * graphite.c (scan_tree_for_params): On substractions negate
26445         all the coefficients of the term.
26446         (clast_to_gcc_expression_red): New.  Handle reduction expressions
26447         of more than two operands.
26448         (clast_to_gcc_expression): Call clast_to_gcc_expression_red.
26449         (get_vdef_before_scop): Handle also the case of default definitions.
26450
26451 2009-01-15  Richard Sandiford  <rdsandiford@googlemail.com>
26452
26453         * caller-save.c (add_used_regs_1, add_used_regs): New functions.
26454         (insert_one_insn): Use them instead of REG_DEAD and REG_INC notes.
26455         Also use them when walking CALL_INSN_FUNCTION_USAGE.
26456
26457 2009-01-15  H.J. Lu  <hongjiu.lu@intel.com>
26458             Joey Ye  <joey.ye@intel.com>
26459
26460         PR middle-end/37843
26461         * cfgexpand.c (expand_stack_alignment): Don't update stack
26462         boundary nor check incoming stack boundary here.
26463         (gimple_expand_cfg): Update stack boundary and check incoming
26464         stack boundary here.
26465
26466 2009-01-15  Kenneth Zadeck  <zadeck@naturalbridge.com>
26467
26468         * dce.c (find_call_stack_args, delete_unmarked_insns): Fixed comments.
26469
26470 2009-01-14  Jakub Jelinek  <jakub@redhat.com>
26471
26472         PR rtl-optimization/38245
26473         * calls.c (expand_call): Add stack arguments to
26474         CALL_INSN_FUNCTION_USAGE even for pure calls (when
26475         ACCUMULATE_OUTGOING_ARGS) and even for args partially passed
26476         in regs and partially in memory or BLKmode arguments.
26477         (emit_library_call_value_1): Add stack arguments to
26478         CALL_INSN_FUNCTION_USAGE even for pure calls (when
26479         ACCUMULATE_OUTGOING_ARGS).
26480         * dce.c: Include tm_p.h.
26481         (find_call_stack_args): New function.
26482         (deletable_insn_p): Call it for CALL_P insns.  Add ARG_STORES
26483         argument.
26484         (mark_insn): Call find_call_stack_args for CALL_Ps.
26485         (prescan_insns_for_dce): Walk insns backwards in bb rather than
26486         forwards.  Allocate and free arg_stores bitmap if needed, pass it
26487         down to deletable_insn_p, don't mark stores set in arg_stores
26488         bitmap, clear the bitmap at the beginning of each bb.
26489         * Makefile.in (dce.o): Depend on $(TM_P_H).
26490
26491 2009-01-14  Michael Meissner  <gnu@the-meissners.org>
26492
26493         PR target/22599
26494         * config/i386/i386.c (print_operand): Add tests for 'D', 'C', 'F', 'f'
26495         to make sure the insn is a conditional test (bug 22599).  Reformat a
26496         few long lines.
26497
26498 2009-01-14  Sebastian Pop  <sebastian.pop@amd.com>
26499
26500         PR middle-end/38431
26501         * graphite.c (get_vdef_before_scop, scop_adjust_vphi): New.
26502         (scop_adjust_phis_for_liveouts): Call scop_adjust_vphi.
26503         (gloog): Do not call cleanup_tree_cfg.
26504         (graphite_transform_loops): Call cleanup_tree_cfg after all
26505         scops have been code generated.
26506
26507 2009-01-14  Basile Starynkevitch  <basile@starynkevitch.net>
26508         * doc/gty.texi (Invoking the garbage collector): Added new node
26509         and section documenting ggc_collect.
26510
26511 2009-01-14  Richard Guenther  <rguenther@suse.de>
26512
26513         PR tree-optimization/38826
26514         PR middle-end/38477
26515         * tree-ssa-structalias.c (emit_alias_warning): Emit the pointer
26516         initialization notes only if we actually emitted a warning.
26517         (intra_create_variable_infos): Add constraints for a result decl
26518         that is passed by hidden reference.
26519         (build_pred_graph): Mark all related variables non-direct on
26520         address-taking.
26521
26522 2009-01-14  Nick Clifton  <nickc@redhat.com>
26523
26524         * ira-conflicts.c: Include addresses.h for the definition of
26525         base_reg_class.
26526         (ira_build_conflicts): Use base_reg_class instead of BASE_REG_CLASS.
26527         * Makefile.in: Add a dependency of ira-conflicts.o on addresses.h.
26528
26529 2009-01-13  Vladimir Makarov  <vmakarov@redhat.com>
26530
26531         PR target/38811
26532         * Makefile.in (ira-lives.o): Add except.h.
26533
26534         * ira-lives.c: Include except.h.
26535         (process_bb_node_lives): Process can_throw_internal.
26536
26537 2009-01-13  Jakub Jelinek  <jakub@redhat.com>
26538
26539         PR rtl-optimization/38774
26540         * combine.c (simplify_set): When undoing cc_use change, don't do
26541         PUT_CODE on the newly created comparison, but instead put back the
26542         old comparison.
26543
26544 2009-01-13  Joseph Myers  <joseph@codesourcery.com>
26545
26546         * doc/invoke.texi (ARM Options): Update lists of -mcpu and -march
26547         values.  Remove duplicate arm8 entry.
26548
26549 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
26550
26551         PR tree-optimization/38786
26552         * graphite.c (expand_scalar_variables_ssa_name): New, outlined from
26553         the SSA_NAME case of expand_scalar_variables_expr.
26554         Set the type of an expression to the type of its assign statement.
26555         (expand_scalar_variables_expr): Also gather the scalar computation
26556         used to index the memory access.  Do not pass loop_p.
26557         Fix comment.  Stop recursion on tcc_constant or tcc_declaration.
26558         (expand_scalar_variables_stmt): Pass to expand_scalar_variables_expr
26559         the gimple_stmt_iterator where it inserts new code.
26560         Do not pass loop_p.
26561         (copy_bb_and_scalar_dependences): Do not pass loop_p.
26562         (translate_clast): Update call to copy_bb_and_scalar_dependences.
26563
26564 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
26565
26566         * graphite.h (debug_value): Removed.
26567         * graphite.c (debug_value): Removed.
26568
26569 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
26570
26571         * config/arm/arm.c (output_move_double): Don't synthesize thumb-2
26572         ldrd/strd with two 32-bit instructions.
26573
26574 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
26575
26576         * config/arm/arm.c (struct processors): Pass for speed down into
26577         cost helper functions.
26578         (const_ok_for_op): Handle COMPARE and inequality nodes.
26579         (arm_rtx_costs_1): Rewrite.
26580         (arm_size_rtx_costs): Update prototype.
26581         (arm_rtx_costs): Pass speed down to helper functions.
26582         (arm_slowmul_rtx_costs): Rework cost calculations.
26583         (arm_fastmul_rtx_costs, arm_xscale_rtx_costs): Likewise.
26584         (arm_9e_rtx_costs): Likewise.
26585
26586 2009-01-13  Uros Bizjak  <ubizjak@gmail.com>
26587
26588         * config/alpha/alpha.c (alpha_legitimate_address_p): Explicit
26589         relocations of local symbols wider than UNITS_PER_WORD are not valid.
26590         (alpha_legitimize_address): Do not split local symbols wider than
26591         UNITS_PER_WORD into HIGH/LO_SUM parts.
26592
26593 2009-01-13  Danny Smith  <dannysmith@users.sourceforge.net>
26594
26595         PR bootstrap/38580
26596         * gcc.c (process_command): Replace call to execvp with calls
26597         to pex_one and exit.
26598
26599 2009-01-03  Anatoly Sokolov  <aesok@post.ru>
26600
26601         PR target/29141
26602         * config/avr/t-avr (LIB1ASMFUNCS): Add _tablejump_elpm.
26603         * config/avr/libgcc.S (__do_global_ctors, __do_global_dtors): Add
26604         variant for devices with 3-byte PC.
26605         (__tablejump_elpm__): New.
26606
26607 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
26608
26609         PR c/32041
26610         * c-parser.c (c_parser_postfix_expression): Allow `->' in
26611         offsetof member-designator, handle it as `[0].'.
26612
26613 2009-01-12  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
26614
26615         * pa.c (pa_asm_output_mi_thunk): Use pc-relative branch to thunk
26616         function when not using named sections on targets with named sections
26617         if branch distance is less than 262132.
26618
26619 2009-01-12  Richard Earnshaw  <rearnsha@arm.com>
26620
26621         * combine.c (combine_instructions):  Recompute
26622         optimize_this_for_speed_p  for each BB in the main combine loop.
26623
26624 2009-01-12  Tomas Bily  <tbily@suse.cz>
26625
26626         PR middlend/38385
26627         * tree-loop-distribution.c (prop_phis): New function.
26628         (generate_builtin): Call prop_phis.
26629
26630 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
26631
26632         PR tree-optimization/38807
26633         * tree-ssa-reassoc.c (remove_visited_stmt_chain): Don't look at
26634         gimple_visited_p unless stmt is GIMPLE_ASSIGN.
26635
26636 2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
26637
26638         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
26639         subreg of op0 to the original op0.
26640
26641 2009-01-11  Laurent GUERBY  <laurent@guerby.net>
26642
26643         * doc/sourcebuild.texi (Source Tree): Move up intl and fixinc.
26644
26645 2009-01-11  Markus Schoepflin  <markus.schoepflin@comsoft.de>
26646
26647         PR debug/7055
26648         * mips-tfile.c (parse_def): Fix parsing of def strings
26649         starting with digits.
26650
26651 2009-01-10  Jakub Jelinek  <jakub@redhat.com>
26652
26653         PR target/38695
26654         * config/arm/arm.c (arm_is_long_call_p): Don't call
26655         arm_function_in_section_p if decl isn't a FUNCTION_DECL.
26656
26657 2009-01-09  Steven Bosscher  <steven@gcc.gnu.org>
26658
26659         * regrename.c (regrename_optimize): Fix dumping.
26660         (find_oldest_value_reg): Preserve REG_POINTER.
26661         (copy_hardreg_forward_1): Likewise.
26662
26663 2009-01-09  Diego Novillo  <dnovillo@google.com>
26664
26665         * gimple.h (struct gimple_statement_base) <uid>: Document
26666         the restrictions on its use.
26667         (gimple_uid): Tidy.
26668         (gimple_set_uid): Tidy.
26669
26670 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
26671
26672         * config/i386/i386.c (ix86_expand_movmem, ix86_expand_setmem): Add
26673         zero guard even if align_bytes != 0 and count is smaller than
26674         size_needed.
26675
26676 2009-01-09  Vladimir Makarov  <vmakarov@redhat.com>
26677
26678         PR rtl-optimization/38495
26679         * ira-emit.c (print_move_list, ira_debug_move_list): New functions.
26680         (add_range_and_copies_from_move_list): Print all added ranges.
26681         Add ranges to memory optimized destination.
26682
26683 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
26684
26685         PR target/38686
26686         PR target/38708
26687         * config/i386/i386.c (override_options): Reject
26688         -mstringop-strategy=rep_8byte with -m32.
26689         (ix86_expand_movmem): For size_needed == 1 set epilogue_size_needed
26690         to 1.  Do count comparison against epilogue_size_needed at compile
26691         time even when count_exp was constant forced into register.  For
26692         size_needed don't jump to epilogue, instead just avoid aligning
26693         and invoke the body algorithm.  If need_zero_guard, add zero guard
26694         even if count is non-zero, but smaller than size_needed + number of
26695         bytes that could be stored for alignment.
26696         (ix86_expand_setmem): For size_needed == 1 set epilogue_size_needed
26697         to 1.  If need_zero_guard, add zero guard even if count is non-zero,
26698         but smaller than size_needed + number of bytes that could be stored
26699         for alignment.  Compare size_needed with epilogue_size_needed instead
26700         of desired_align - align, don't adjust size_needed, pass
26701         epilogue_size_needed to the epilogue expanders.
26702
26703         PR c/35742
26704         * c-pretty-print.c (pp_c_expression): Handle GOTO_EXPR like BIND_EXPR.
26705
26706 2009-01-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
26707
26708         * pa.c (last_address): Change to unsigned.
26709         (update_total_code_bytes): Change argument to unsigned.  Don't
26710         check if insn addresses are set.
26711         (pa_output_function_epilogue): Set last_address to UINT_MAX if insn
26712         addresses are not set.
26713         (pa_asm_output_mi_thunk): Handle wrap when updating last_address.
26714
26715 2009-01-09  Nick Clifton  <nickc@redhat.com>
26716
26717         * config/sh/symbian.c: Replace uses of DECL_INLINE with
26718         DECL_DECLARED_INLINE_P.
26719
26720 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
26721
26722         PR middle-end/38347
26723         * dojump.c (do_jump_by_parts_zero_rtx): Use mode instead of
26724         GET_MODE (op0) in operand_subword_force calls.
26725
26726         PR middle-end/38771
26727         * fold-const.c (fold_unary): For COMPOUND_EXPR and COND_EXPR,
26728         fold_convert arg0 operands to TREE_TYPE (op0) first.
26729
26730 2009-01-08  Vladimir Makarov  <vmakarov@redhat.com>
26731
26732         * params.def (ira-max-conflict-table-size): Decrease default value
26733         to 1000.
26734
26735 2009-01-08  Jakub Jelinek  <jakub@redhat.com>
26736
26737         PR tree-optimization/37031
26738         * lambda-code.c (lambda_collect_parameters): Call pointer_set_destroy
26739         on parameter_set.
26740         (build_access_matrix): Reserve correct size for AM_MATRIX vector,
26741         allocate it using gc instead of heap, use VEC_quick_push instead of
26742         VEC_safe_push.
26743         * graphite.c (build_access_matrix): Allocate AM_MATRIX vector using gc
26744         instead of heap, use VEC_quick_push instead of VEC_safe_push.
26745         * tree-data-ref.h (struct access_matrix): Change matrix to gc
26746         allocated vector from heap allocated.
26747         * lambda.h: Add DEF_VEC_ALLOC_P for gc allocated lambda_vector.
26748         * tree-loop-linear.c (linear_transform_loops): Allocate nest
26749         vector only after perfect_loop_nest_depth call.
26750
26751 2009-01-08  Sebastian Pop  <sebastian.pop@amd.com>
26752             Jan Sjodin  <jan.sjodin@amd.com>
26753
26754         PR tree-optimization/38559
26755         * graphite.c (debug_value, copy_constraint,
26756         swap_constraint_variables, scale_constraint_variable, ): New.
26757         (get_lower_bound, get_upper_bound): Removed.
26758         (graphite_trans_bb_strip_mine): Clean up this code that works
26759         only for constant number of iterations.  Fully copy upper and
26760         lower bound constraints, not only the constant part of them.
26761         * graphite.h (debug_value): Declared.
26762
26763 2009-01-08  Ira Rosen  <irar@il.ibm.com>
26764
26765         PR tree-optimization/37194
26766         * tree-vect-transform.c (vect_estimate_min_profitable_iters):
26767         Don't add the cost of cost model guard in prologue to scalar
26768         outside cost in case of known number of iterations.
26769
26770 2009-01-07  Nathan Froyd  <froydnj@codesourcery.com>
26771             Alan Modra  <amodra@bigpond.net.au>
26772
26773         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check for
26774         non-word-aligned REG+CONST addressing.
26775
26776 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
26777
26778         PR target/38706
26779         * config/alpha/alpha.c (alpha_end_function): For TARGET_ABI_OSF, call
26780         free_after_compilation when outputting a thunk.
26781         (alpha_output_mi_thunk_osf): Assert that we are processing a thunk.
26782         Do not call free_after_compilation here.
26783
26784 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
26785
26786         * config/i386/i386.c (ix86_target_string): Use ARRAY_SIZE.
26787         (ix86_valid_target_attribute_inner_p): Ditto.
26788
26789 2009-01-07  Jan Sjodin  <jan.sjodin@amd.com>
26790
26791         PR tree-optimization/38492
26792         PR tree-optimization/38498
26793         * tree-check.c (operator_is_linear, scev_is_linear_expression): New.
26794         * tree-chrec.h (scev_is_linear_expression): Declared.
26795         * graphite.c (graphite_cannot_represent_loop_niter): New.
26796         (scopdet_basic_block_info): Call graphite_cannot_represent_loop_niter.
26797         (graphite_loop_normal_form): Use gcc_assert.
26798         (scan_tree_for_params): Use CASE_CONVERT.
26799         (phi_node_is_iv, bb_contains_non_iv_scalar_phi_nodes): New.
26800         (build_scop_conditions_1): Call bb_contains_non_iv_scalar_phi_nodes.
26801         Use gcc_assert.  Discard scops that contain unhandled cases.
26802         (build_scop_conditions): Return a boolean status for unhandled cases.
26803         (strip_mine_profitable_p): Print the loop number, not its depth.
26804         (is_interchange_valid): Pass the depth of the loop nest, don't
26805         recompute it wrongly.
26806         (graphite_trans_bb_block): Same.
26807         (graphite_trans_bb_block): Print tentative of loop blocking.
26808         (graphite_trans_scop_block): Do not print that the loop has been
26809         blocked.
26810         (graphite_transform_loops): Do not handle scops that contain condition
26811         scalar phi nodes.
26812
26813 2009-01-07  H.J. Lu  <hongjiu.lu@intel.com>
26814
26815         AVX Programming Reference (December, 2008)
26816         * config/i386/avxintrin.h (_mm256_stream_si256): New.
26817         (_mm256_stream_pd): Likewise.
26818         (_mm256_stream_ps): Likewise.
26819
26820         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVNTDQ256,
26821         IX86_BUILTIN_MOVNTPD256 and IX86_BUILTIN_MOVNTPS256.
26822         (ix86_special_builtin_type): Add VOID_FTYPE_PV4DI_V4DI.
26823         (bdesc_special_args): Add __builtin_ia32_movntdq256,
26824         __builtin_ia32_movntpd256 and __builtin_ia32_movntps256.
26825         (ix86_init_mmx_sse_builtins): Handle VOID_FTYPE_PV4DI_V4DI.
26826         (ix86_expand_special_args_builtin): Likewise.
26827
26828         * config/i386/sse.md (AVXMODEDI): New.
26829         (avx_movnt<mode>): Likewise.
26830         (avx_movnt<mode>): Likewise.
26831         (<sse>_movnt<mode>): Remove AVX support.
26832         (sse2_movntv2di): Likewise.
26833
26834 2009-01-07  Richard Guenther  <rguenther@suse.de>
26835
26836         PR middle-end/38751
26837         * fold-const.c (extract_muldiv): Remove obsolete comment.
26838         (fold_plusminus_mult_expr): Undo MINUS_EXPR
26839         to PLUS_EXPR canonicalization for the canonicalization.
26840
26841 2009-01-07  Gerald Pfeifer  <gerald@pfeifer.com>
26842
26843         * doc/install.texi (alpha*-dec-osf*): Remove note on 32-bit
26844         hosted cross-compilers generating less efficient code.
26845
26846 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
26847
26848         * function.h (rtl_data): Add a dbr_scheduled_p field.
26849         * reorg.c (dbr_schedule): Set it.
26850         (gate_handle_delay_slots): Check it.
26851         * config/mips/mips.c (mips_base_delayed_branch): Delete.
26852         (mips_reorg): Check flag_delayed_branch instead of
26853         mips_base_delayed_branch.
26854         (mips_override_options): Don't set mips_base_delayed_branch
26855         or flag_delayed_branch.
26856
26857 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
26858
26859         PR rtl-optimization/38426.
26860         * ira.c (ira): Set current_function_is_leaf earlier.
26861
26862 2009-01-06  Jakub Jelinek  <jakub@redhat.com>
26863
26864         PR rtl-optimization/38722
26865         * combine.c (try_combine): Don't modify PATTERN (i3) and notes
26866         too early, only set a flag and modify after last possible
26867         undo_all point.
26868
26869 2009-01-06  Janis Johnson  <janis187@us.ibm.com>
26870
26871         PR c/34252
26872         * ginclude/float.h: Rename DECnn_DEN to DECnn_SUBNORMAL_MIN.
26873         * real.c (decimal_single_format): Correct values of emin and emax.
26874         (decimal_double_format): Ditto.
26875         (decimal_quad_format): Ditto.
26876         * c-cppbuiltin.c (builtin_define_decimal_float_constants): Adjust
26877         computation of DECnn_MIN and DECnn_MAX for corrected values of
26878         emin and emax.  Define __DECnn_SUBNORMAL_MIN__ instead of
26879         __DECnn_MIN__, and adjust its computation for the corrected value
26880         of emin.
26881
26882 2009-01-06  Jan Hubicka  <jh@suse.cz>
26883
26884         PR target/38744
26885         * config/i386/i386.c (ix86_expand_call): Use ARRAY_SIZE.
26886
26887 2009-01-06  Gerald Pfeifer  <gerald@pfeifer.com>
26888
26889         * doc/contrib.texi (Contributors): Slightly adjust the end note.
26890         Add Robert Clark to the list of testers.
26891
26892 2009-01-06  Jan Hubicka  <jh@suse.cz>
26893             Kai Tietz  <kai.tietz@onevision.com>
26894
26895         * config/i386/i386.md (*msabi_syvabi): Add SSE regs clobbers.
26896         * config/i386/i386.c (ix86_expand_call): Add clobbers.
26897
26898 2009-01-06  Jan Hubicka  <jh@suse.cz>
26899             Kai Tietz  <kai.tietz@onevision.com>
26900
26901         * config/i386/i386.h (CONDITIONAL_CALL_USAGE): SSE regs are not used
26902         for w64 ABI.
26903         * config/i386/i386.c (struct ix86_frame): Add padding0 and nsseregs.
26904         (ix86_nsaved_regs): Count only general purpose regs.
26905         (ix86_nsaved_sseregs): New.
26906         (ix86_compute_frame_layout): Update nsseregs; set preferred alignment
26907         to 16 for w64; compute padding and size of sse reg save area.
26908         (ix86_emit_save_regs, ix86_emit_save_regs_using_mov): Save only
26909         general purpose regs.
26910         (ix86_emit_save_sse_regs_using_mov): New.
26911         (ix86_expand_prologue): Save SSE regs if needed.
26912         (ix86_emit_restore_regs_using_mov): Use only general purpose regs.
26913         (ix86_emit_restore_sse_regs_using_mov): New.
26914         (ix86_expand_epilogue): Save SSE regs if needed.
26915
26916 2009-01-06  Jan Hubicka  <jh@suse.cz>
26917             Kai Tietz  <kai.tietz@onevision.com>
26918
26919         * config/i386/i386.h (ACCUMULATE_OUTGOING_ARGS): Enable for MSABI
26920         * config/i386/i386.c (init_cumulative_args): Disallow calls of MSABI
26921         functions when accumulate outgoing args is off.
26922
26923 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
26924
26925         PR bootstrap/38742
26926         * ira-color.c (ira_reuse_stack_slot): Check ENABLE_IRA_CHECKING
26927         before using pseudos_have_intersected_live_ranges_p.
26928
26929         * ira-int.h (ira_assert): Always define.
26930
26931 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
26932
26933         AVX Programming Reference (December, 2008)
26934         * config/i386/avxintrin.h (_mm_permute2_pd): Removed.
26935         (_mm256_permute2_pd): Likewise.
26936         (_mm_permute2_ps): Likewise.
26937         (_mm256_permute2_ps): Likewise.
26938         * config/i386/i386.md (UNSPEC_VPERMIL2): Likewise.
26939         * config/i386/sse.md (avx_vpermil2<mode>3): Likewise.
26940
26941         * config/i386/i386.c (ix86_builtins): Remove
26942         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
26943         IX86_BUILTIN_VPERMIL2PD256 and IX86_BUILTIN_VPERMIL2PS256.
26944         (ix86_builtin_type): Remove V8SF_FTYPE_V8SF_V8SF_V8SI_INT,
26945         V4DF_FTYPE_V4DF_V4DF_V4DI_INT, V4SF_FTYPE_V4SF_V4SF_V4SI_INT
26946         and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
26947         (bdesc_args): Remove __builtin_ia32_vpermil2pd,
26948         __builtin_ia32_vpermil2ps, __builtin_ia32_vpermil2pd256 and
26949         __builtin_ia32_vpermil2ps256.
26950         (ix86_init_mmx_sse_builtins): Updated.
26951         (ix86_expand_args_builtin): Likewise.
26952
26953 2009-01-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
26954
26955         * pa.c (output_call): Relocate non-jump insns in the delay slot of
26956         long absolute calls when generating PA 2.0 code.
26957
26958 2009-01-05  Vladimir Makarov  <vmakarov@redhat.com>
26959
26960         PR rtl-optimization/38583
26961         * params.h (IRA_MAX_CONFLICT_TABLE_SIZE): New macro.
26962
26963         * params.def (ira-max-conflict-table-size): New.
26964
26965         * doc/invoke.texi (ira-max-conflict-table-size): Decribe.
26966
26967         * ira.h (ira_conflicts_p): New external definition.
26968
26969         * ira-conflicts.c (build_conflict_bit_table): Do not build too big
26970         table.  Report this.  Return result of building.
26971         (ira_build_conflicts): Use ira_conflicts_p.  Check result of
26972         building conflict table.
26973
26974         * ira-color.c (fast_allocation): Use num instead of ira_allocnos_num.
26975         (ira_color): Use ira_conflicts_p.
26976
26977         * global.c: Include ira.h.
26978         (pseudo_for_reload_consideration_p, build_insn_chain): Use
26979         ira_conflicts_p.
26980
26981         * Makefile.in (global.o): Add ira.h.
26982
26983         * ira-build.c (mark_all_loops_for_removal,
26984         propagate_some_info_from_allocno): New.
26985         (remove_unnecessary_allocnos): Call
26986         propagate_some_info_from_allocno.
26987         (remove_low_level_allocnos): New.
26988         (remove_unnecessary_regions): Add parameter.  Call
26989         mark_all_loops_for_removal and remove_low_level_allocnos.  Pass
26990         parameter to remove_unnecessary_regions.
26991         (ira_build): Remove all regions but root if the conflict table was
26992         not built.  Update conflict hard regs for allocnos crossing calls.
26993
26994         * ira.c (ira_conflicts_p): New global.
26995         (ira): Define and use ira_conflicts_p.
26996
26997         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
26998         count_spilled_pseudo, find_reg, alter_reg, finish_spills,
26999         emit_input_reload_insns, delete_output_reload): Use ira_conflicts_p.
27000
27001 2009-01-06  Ben Elliston  <bje@au.ibm.com>
27002
27003         * gengtype-lex.l (YY_NO_INPUT): Define.
27004
27005 2009-01-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
27006
27007         PR c/34911
27008         * c-common.c (handle_vector_size_attribute): Also reject
27009         BOOLEAN_TYPE types.
27010
27011 2009-01-05  Sebastian Pop  <sebastian.pop@amd.com>
27012
27013         PR tree-optimization/38492
27014         * graphite.c (rename_map_elt, debug_rename_elt,
27015         debug_rename_map_1, debug_rename_map, new_rename_map_elt,
27016         rename_map_elt_info, eq_rename_map_elts,
27017         get_new_name_from_old_name, bb_in_sese_p): Moved around.
27018         (sese_find_uses_to_rename_use): Renamed sese_build_livein_liveouts_use.
27019         (sese_find_uses_to_rename_bb): Renamed sese_build_livein_liveouts_bb.
27020         (sese_build_livein_liveouts): New.
27021         (new_sese, free_sese): New.
27022         (new_scop): Call new_sese.
27023         (free_scop): Call free_sese.
27024         (rename_variables_from_edge, rename_phis_end_scop): Removed.
27025         (register_old_new_names): Renamed register_old_and_new_names.
27026         (register_scop_liveout_renames, add_loop_exit_phis,
27027         insert_loop_close_phis, struct igp,
27028         default_liveout_before_guard, add_guard_exit_phis,
27029         insert_guard_phis, copy_renames): New.
27030         (translate_clast): Call insert_loop_close_phis and insert_guard_phis.
27031         (sese_add_exit_phis_edge): Renamed scop_add_exit_phis_edge.
27032         (rewrite_into_sese_closed_ssa): Renamed scop_insert_phis_for_liveouts.
27033         (scop_adjust_phis_for_liveouts): New.
27034         (gloog): Call scop_adjust_phis_for_liveouts.
27035
27036         * graphite.h (struct sese): Documented.  Added fields liveout,
27037         num_ver and livein.
27038         (SESE_LIVEOUT, SESE_LIVEIN, SESE_LIVEIN_VER, SESE_NUM_VER): New.
27039         (new_sese, free_sese, sese_build_livein_liveouts): Declared.
27040         (struct scop): Added field liveout_renames.
27041         (SCOP_LIVEOUT_RENAMES): New.
27042
27043 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
27044
27045         PR tree-optimization/38510
27046         * graphite.c (recompute_all_dominators): Call mark_irreducible_loops.
27047         (translate_clast): Call recompute_all_dominators before
27048         graphite_verify.
27049         (gloog): Call recompute_all_dominators before graphite_verify.
27050
27051 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
27052             Jan Sjodin  <jan.sjodin@amd.com>
27053
27054         PR tree-optimization/38500
27055         * graphite.c (create_sese_edges): Call fix_loop_structure after
27056         splitting blocks.
27057
27058 2009-01-05  Joel Sherrill  <joel.sherrill@oarcorp.com>
27059
27060         * config.gcc: Add m32r*-*-rtems*.
27061         * config/m32r/rtems.h: New file.
27062
27063 2009-01-05  Ben Elliston  <bje@au.ibm.com>
27064
27065         * Makefile.in (.po.gmo): Use mkinstalldirs, not test -d || mkdir.
27066         (.po.pox): Likewise.
27067         (po/gcc.pot): Likewise.
27068
27069 2009-01-04  David S. Miller  <davem@davemloft.net>
27070
27071         * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED_RTX): Delete.
27072         (STARTING_FRAME_OFFSET): Always set to zero.
27073
27074 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
27075
27076         * tree.def (LSHIFT_EXPR, RSHIFT_EXPR): Add commentary.
27077         * tree-cfg.c (verify_gimple_assign_binary): Allow shifts of
27078         fixed-point types, and vectors of the same.
27079
27080 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
27081
27082         * config/mips/sync.md (*mb_barrier): Rename to...
27083         (*memory_barrier): ...this.
27084
27085 2009-01-04  Jonathan Wakely  <jwakely.gcc@gmail.com>
27086
27087         * doc/extend.texi (Function Attributes): Move @cindex after @item
27088         for 'artificial' and 'flatten'. Fix grammar for 'externally_visible'
27089         and put in alphabetical order. Fix 'target' name and put in order.
27090         * doc/invoke.texi (-Wstrict-null-sentinel, -fipa-matrix-reorg): Fix
27091         typos.
27092
27093 2009-01-04  Uros Bizjak  <ubizjak@gmail.com>
27094
27095         * config/s390/s390.md (UNSPEC_MB): Rename from UNSPECV_MB.
27096         (memory_barrier): Expand as unspec instead of unspec_volatile.
27097         Remove mem:BLK from insn operands.  Use Pmode scratch register.
27098         (*memory_barrier): Define as unspec instead of unspec_volatile.
27099         Use (match_dup 0) as input operand.
27100
27101         * config/sparc/sparc.md (UNSPEC_MEMBAR): Rename from UNSPECV_MEMBAR.
27102         * config/sparc/sync.md (memory_barrier): Expand as unspec instead of
27103         unspec_volatile.  Remove mem:BLK from insn operands.  Use Pmode
27104         scratch register.  Remove operand 1.
27105         (*stbar): Define as unspec instead of unspec_volatile.
27106         Use (match_dup 0) as input operand, remove (const_int 8).
27107         (*membar): Define as unspec instead of unspec_volatile.
27108         Use (match_dup 0) as input operand, remove input operand 2.
27109
27110         * config/xtensa/xtensa.md (UNSPEC_MEMW): Rename from UNSPECV_MEMW.
27111         (memory_barrier): Expand as unspec instead of unspec_volatile.
27112         Remove mem:BLK from insn operands.  Use Pmode scratch register.
27113         (*memory_barrier): Define as unspec instead of unspec_volatile.
27114         Use (match_dup 0) as input operand.
27115
27116         * config/ia64/sync.md (memory_barrier): Redefine as expander pattern.
27117         Remove mem:BLK from insn operands.  Use Pmode scratch register.
27118         Set volatile flag on operand 0.
27119         (*memory_barrier): New insn pattern.
27120
27121         * config/rs6000/sync.md (memory_barrier): Remove mem:BLK from
27122         insn operands.
27123         (*memory_barrier): Use (match_dup 0) as input operand.
27124
27125         * config/mips/sync.md (memory_barrier): Redefine as expander pattern.
27126         Remove mem:BLK from insn operands.  Use Pmode scratch register.
27127         Set volatile flag on operand 0.
27128         (*mb_internal): New insn pattern.
27129
27130         * config/alpha/sync.md (*memory_barrier): Rename from *mb_internal.
27131
27132 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
27133
27134         PR middle-end/38586
27135         * function.c (struct temp_slot): Move to the section of the file
27136         that deals with temp slots.  Remove field 'address'.
27137         (temp_slot_address_table): New hash table of address -> temp slot.
27138         (struct temp_slot_address_entry): New struct, items for the table.
27139         (temp_slot_address_compute_hash, temp_slot_address_hash,
27140         temp_slot_address_eq, insert_temp_slot_address): Support functions
27141         for the new table.
27142         (find_temp_slot_from_address): Rewrite to use the new hash table.
27143         (remove_unused_temp_slot_addresses): Remove addresses of temp
27144         slots that have been made available.
27145         (remove_unused_temp_slot_addresses_1): Call-back for htab_traverse,
27146         worker function for remove_unused_temp_slot_addresses.
27147         (assign_stack_temp_for_type): Don't clear the temp slot address list.
27148         Add the temp slot address to the address -> temp slot map.
27149         (update_temp_slot_address): Update via insert_temp_slot_address.
27150         (free_temp_slots): Call remove_unused_temp_slot_addresses.
27151         (pop_temp_slots): Likewise.
27152         (init_temp_slots): Allocate the address -> temp slot map, or empty
27153         the map if it is already allocated.
27154         (prepare_function_start): Initialize temp slot processing.
27155
27156 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
27157
27158         PR middle-end/38584
27159         * cfgexpand.c (estimate_stack_frame_size): Simplify the estimate:
27160         Calculate the size of all stack vars assuming no packing of stack
27161         vars will happen, replacing a quadratic algorithm with a linear one.
27162
27163 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
27164
27165         PR target/38707
27166         * expmed.c (store_bit_field_1): Don't modify op0 if movstrict insn
27167         can't be used.
27168
27169 2009-01-03  Diego Novillo  <dnovillo@google.com>
27170
27171         * doc/contrib.texi: Update contributions.
27172
27173 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
27174
27175         PR c++/38705
27176         * builtins.c (fold_builtin_memory_op): Give up if either operand
27177         is volatile.  Set srctype or desttype to non-qualified version
27178         of the other type.
27179
27180         PR c/38700
27181         * builtins.c (fold_builtin_expect): Only check DECL_WEAK for VAR_DECLs
27182         and FUNCTION_DECLs.
27183
27184 2009-01-02  Kenneth Zadeck  <zadeck@naturalbridge.com>
27185
27186         PR rtl-optimization/35805
27187         * df-problems.c (df_lr_finalize): Add recursive call to resolve lr
27188         problem if fast dce is able to remove any instructions.
27189         * dce.c (dce_process_block): Fix dump message.
27190
27191 2009-01-02  Mark Mitchell  <mark@codesourcery.com>
27192
27193         PR 33649
27194         * tree-ssa-pre.c (compute_antic): Correct loop bounds.
27195
27196 2009-01-02  Jakub Jelinek  <jakub@redhat.com>
27197
27198         PR middle-end/38690
27199         * tree-flow.h (op_code_prio, op_prio): New prototypes.
27200         * tree-pretty-print.c (op_code_prio): New function.
27201         (op_prio): No longer static.  Use op_code_prio.
27202         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs):
27203         Use op_prio and op_code_prio to determine if () should be
27204         printed around operand(s) or not.
27205
27206         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs,
27207         dump_gimple_call, dump_gimple_switch, dump_gimple_cond,
27208         dump_gimple_label, dump_gimple_try, dump_symbols, dump_gimple_phi,
27209         dump_gimple_mem_ops, dump_bb_header, dump_bb_end, pp_cfg_jump): Use
27210         pp_character instead of pp_string for single letter printing.
27211
27212 2009-01-02  Richard Sandiford  <rdsandiford@googlemail.com>
27213
27214         * doc/extend.texi: Fix '#pragma GCC option' typo.
27215
27216 2009-01-02  Richard Guenther  <rguenther@suse.de>
27217
27218         * doc/install.texi (--enable-checking): Mention different
27219         default for stage1.
27220         (--enable-stage1-checking): Document.
27221
27222 2009-01-01  Andrew Pinski  <pinskia@gmail.com>
27223
27224         PR middle-end/30142
27225         * tree-cfg.c (verify_expr): Add INDIRECT_REF case.  Change MODIFY_EXPR
27226         case to be an error.
27227
27228 2009-01-02  Ben Elliston  <bje@au.ibm.com>
27229
27230         * config/fp-bit.h (pack_d): Constify argument.
27231         * config/fp-bit.c (makenan): Constify return type. Remove casts.
27232         (isnan): Constify argument.
27233         (isinf): Likewise.
27234         (iszero): Likewise.
27235         (pack_d): Likewise.
27236         (_fpadd_parts): Constify return type.
27237         (_fpmul_parts): Likewise.
27238         (_fpdiv_parts): Likewise.
27239
27240 2009-01-01  Jakub Jelinek  <jakub@redhat.com>
27241
27242         PR c/36489
27243         * c-typeck.c (add_pending_init): Add IMPLICIT argument.  Only
27244         warn about overwriting initializer with side-effects or
27245         -Woverride-init if !IMPLICIT.
27246         (output_init_element): Likewise.  Pass IMPLICIT down to
27247         add_pending_init.
27248         (process_init_element): Add IMPLICIT argument.  Pass it down
27249         to output_init_element.
27250         (push_init_element, pop_init_level, set_designator): Adjust
27251         process_init_element callers.
27252         (set_nonincremental_init, set_nonincremental_init_from_string):
27253         Adjust add_pending_init callers.
27254         (output_pending_init_elements): Adjust output_init_element callers.
27255         * c-tree.h (process_init_element): Adjust prototype.
27256         * c-parser.c (c_parser_initelt, c_parser_initval): Adjust
27257         process_init_element callers.
27258
27259 \f
27260 Copyright (C) 2009 Free Software Foundation, Inc.
27261
27262 Copying and distribution of this file, with or without modification,
27263 are permitted in any medium without royalty provided the copyright
27264 notice and this notice are preserved.