OSDN Git Service

PR other/40302
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-12-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2
3         PR other/40302
4         * configure.ac (HAVE_mpc): Don't define.
5         * config.in, configure: Regenerate.
6
7         PR other/40302
8         * builtins.c: Remove HAVE_mpc* checks throughout.
9         * fold-const.c: Likewise.
10         * real.h: Likewise.
11         * toplev.c: Likewise.
12
13 2009-12-07  Edmar Wienskoski  <edmar@freescale.com>
14
15         * config.gcc (cpu_is_64bit): Add new core e500mc64.
16         (powerpc*-*-*): Add new core e500mc64.
17         * config/rs6000/e500mc64.md: New file.
18         * config/rs6000/rs6000.c (processor_costs): Add new costs for
19         e500mc64.
20         (rs6000_override_options): Add e500mc64 case to
21         processor_target_table. Altivec and Spe options not allowed with
22         e500mc64. Disable string instructions for e500mc64. Enable branch
23         targets alignment for both e500mc and e500mc64. Initialize
24         rs6000_cost for e500mc64.
25         (rs6000_emit_sISEL): New function.
26         (rs6000_emit_sCOND): Call rs6000_emit_sISEL for isel targets.
27         (rs6000_emit_int_cmove): Fix mode of 64 bit isel pattern
28         generation.
29         (rs6000_issue_rate): Set issue rate for e500mc64.
30         (rs6000_rtx_costs): Set more accurate cost for mfcr instruction
31         on architectures with isel.
32         * config/rs6000/rs6000-protos.h (rs6000_emit_sISEL): Declare.
33         * config/rs6000/rs6000.h (processor_type): Add
34         PROCESSOR_PPCE500MC64.
35         (ASM_CPU_SPEC): Add e500mc64.
36         * config/rs6000/rs6000.md (define_attr "cpu"): Add ppce500mc64.
37         Include e500mc64.md.
38         (abssi2_isel): Expand pattern to handle DImode.
39         (nabs<mode>2_isel): New pattern.
40         (absdi2): Change pattern to handle 64 bit isel targets.
41         (absdi2_internal): Exclude ISEL targets.
42         (nabsdi2): Exclude ISEL targets.
43         * doc/invoke.texi: Add e500mc64 to list of cpus.
44
45 2009-12-07  Uros Bizjak  <ubizjak@gmail.com>
46
47         * config/i386/i386.md (any_or): New code iterator.
48         (any_logic): Rename from plogic code iterator.
49         (logicprefix): Rename from plogicprefix code attribute.
50         (<code><mode>3): Macroize expander from {ior,xor}<mode>3 using
51         any_or code iterator.
52         (*<code><mode>_1): Macroize insn from *{ior,xor}<mode>_1 using
53         any_or code iterator.
54         (*<code><mode>_2): Ditto from *{ior,xor}<mode>_2.
55         (*<code><mode>_3): Ditto from *{ior,xor}<mode>_3.
56         (ior and xor splitters): Ditto.
57         * config/i386/mmx.md: Updated for rename.
58         * config/i386/sse.md: Ditto.
59
60 2009-12-07  Uros Bizjak  <ubizjak@gmail.com>
61
62         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
63         Remove quotes around condition logic code.
64
65 2009-12-06  Richard Henderson  <rth@redhat.com>
66
67         PR debug/42234
68         * tree-ssa-dom.c (degenerate_phi_result): Check for NULL phi
69         argument earlier.
70
71 2009-12-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
72
73         * doc/install.texi: Document MPC is required.
74
75 2009-12-06  Uros Bizjak  <ubizjak@gmail.com>
76
77         * config/i386/i386.md (g): Add HImode and QImode.
78         (general_szext_operand): New mode attribute.
79         (*test<mode>_1): Macroize insn from *test{qi,hi,si}_1 using
80         SWI124 mode iterator.
81         (and<mode>3): Macroize expander from and{qi,hi,si,di}3 using
82         SWIM mode iterator.
83         (*and<mode>_2): Macroize insn from *and{qi,hi,si}_2 using
84         SWI124 mode iterator.
85         (ior<mode>3): Macroize expander from ior{qi,hi,si,di}3 using
86         SWIM mode iterator.
87         (*ior<mode>_1): Macroize insn from *ior{hi,si,di}_1 using
88         SWI248 mode iterator.
89         (*ior<mode>_2): Macroize insn from *ior{qi,hi,si,di}_2 using
90         SWI mode iterator.
91         (*ior<mode>_3): Macroize insn from *ior{qi,hi,si,di}_3 using
92         SWI mode iterator.
93         (xor<mode>3): Macroize expander from xor{qi,hi,si,di}3 using
94         SWIM mode iterator.
95         (*xor<mode>_1): Macroize insn from *xor{hi,si,di}_1 using
96         SWI248 mode iterator.
97         (*xor<mode>_2): Macroize insn from *xor{qi,hi,si,di}_2 using
98         SWI mode iterator.
99         (*xor<mode>_3): Macroize insn from *xor{qi,hi,si,di}_3 using
100         SWI mode iterator.
101
102 2009-12-05  Sebastian Pop  <sebastian.pop@amd.com>
103
104         * config/i386/i386.c (TARGET_DEFAULT_TARGET_FLAGS): Add
105         MASK_FUSED_MADD.
106         * config/i386/i386.h (CC1_CPU_SPEC_1): Remove
107         "'-mfused-madd' was removed".
108         * config/i386/i386.opt (mfused-madd): New.
109         * config/i386/sse.md: Add TARGET_FUSED_MADD to FMA4 insns.
110         * doc/invoke.texi (-mfused-madd, -mno-fused-madd): Document.
111
112 2009-12-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
113
114         * pa64-hpux.h (LIB_SPEC): Handle -rdynamic.
115         * pa-hpux10.h (LIB_SPEC): Likewise.
116         * pa-hpux11.h (LIB_SPEC): Likewise.
117
118         PR ada/41912
119         * pa/linux-unwind.h (pa32_fallback_frame_state): Set fs->signal_frame
120         for signal frames.
121         * pa/hpux-unwind.h (pa32_fallback_frame_state): Likewise.
122
123 2009-12-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
124
125         * configure: Regenerate.
126
127 2009-12-05  Richard Earnshaw  <rearnsha@arm.com>
128
129         * arm/thumb2.md (thumb2_mulsi_short_compare0): Use a low-register
130         for the scratch.
131
132 2009-12-04  David Daney  <ddaney@caviumnetworks.com>
133
134         PR rtl-optimization/42164
135         * combine.c (combine_simplify_rtx): Handle truncation of integer
136         constants.
137
138 2009-12-04  Richard Guenther  <rguenther@suse.de>
139
140         * lto-streamer-out.c (pack_ts_decl_common_value_fields):
141         Revert previous change.
142         (lto_output_ts_decl_common_tree_pointers): Stream DECL_VALUE_EXPR.
143         * lto-streamer-in.c (lto_input_ts_decl_common_tree_pointers):
144         Likewise.
145
146 2009-12-04  Richard Guenther  <rguenther@suse.de>
147
148         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Handle
149         BUILT_IN_MALLOC.
150         (call_may_clobber_ref_p_1): Likewise.
151
152 2009-12-04  Matthias Klose  <doko@ubuntu.com>
153             John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
154
155         PR target/40134
156         * config.gcc (hppa*-*-linux*): Use config/t-slibgcc-libgcc.
157         * config/pa/pa-linux.h (LIB_SPEC): Remove.
158
159 2009-12-03  Sebastian Pop  <sebastian.pop@amd.com>
160             Richard Henderson  <rth@redhat.com>
161
162         * config/i386/i386-protos.h (ix86_fma4_valid_op_p): Remove.
163         * config/i386/i386.c (ix86_fma4_valid_op_p): Remove.
164         * config/i386/i386.md: Do not use ix86_fma4_valid_op_p.
165         * config/i386/sse.md (fma4_*): Remove alternative with operand 1
166         matching a memory access.  Do not use ix86_fma4_valid_op_p.
167         (xop_*): Same.
168         Do not use ix86_fma4_valid_op_p in FMA4 and XOP splitters.
169
170 2009-12-03  Richard Henderson  <rth@redhat.com>
171
172         * config/i386/i386.c (ix86_fixup_binary_operands): For FMA4, force
173         all operands into registers.
174
175 2009-12-03  Sebastian Pop  <sebastian.pop@amd.com>
176
177         * config/i386/i386.c (ix86_expand_fma4_multiple_memory): Remove unused
178         parameter.
179         * config/i386/i386-protos.h (ix86_expand_fma4_multiple_memory): Same.
180         * config/i386/sse.md: Same.
181
182 2009-12-03  Richard Guenther  <rguenther@suse.de>
183
184         * cgraphunit.c (assemble_thunk): Use DECL_ASSEMBLER_NAME
185         instead of DECL_NAME for the entry point.
186
187 2009-12-03  Richard Earnshaw  <rearnsha@arm.com>
188
189         * arm/linux-atomic.c (SYNC_LOCK_RELEASE): Place memory barrier
190         before the lock release.
191
192 2009-12-03  Michael Matz  <matz@suse.de>
193
194         PR middle-end/38474
195         * cfgexpand.c (struct stack_var): Add conflicts member.
196         (stack_vars_conflict, stack_vars_conflict_alloc,
197         n_stack_vars_conflict): Remove.
198         (add_stack_var): Initialize conflicts member.
199         (triangular_index, resize_stack_vars_conflict): Remove.
200         (add_stack_var_conflict, stack_var_conflict_p): Rewrite in
201         terms of new member.
202         (union_stack_vars): Only run over the conflicts.
203         (partition_stack_vars): Remove special case.
204         (expand_used_vars_for_block): Don't call resize_stack_vars_conflict,
205         don't create self-conflicts.
206         (account_used_vars_for_block): Don't create any conflicts.
207         (fini_vars_expansion): Free bitmaps, don't free or clear removed
208         globals.
209
210 2009-12-03  Bernd Schmidt  <bernd.schmidt@analog.com>
211
212         PR middle-end/42202
213         * regrename.c (live_in_chains): New variable.
214         (verify_reg_tracked): New static function.
215         (scan_rtx_reg): Update live_in_chains.
216         (scan_rtx): Only promote sets in COND_EXEC to OP_INOUT if
217         we're already tracking the reg.
218         (build_def_use): Likewise.  Initialize live_in_chains.
219
220 2009-12-03  Ken Werner  <ken.werner@de.ibm.com>
221
222         * config/spu/spu-elf.h (STARTFILE_SPEC): Add support for gprof
223         startup files.
224         * config/spu/spu-protos.h (spu_function_profiler): Add prototype.
225         * config/spu/spu.c (spu_function_profiler): New function.
226         * config/spu/spu.h (FUNCTION_PROFILER): Invoke
227         spu_function_profiler.
228         (NO_PROFILE_COUNTERS): Define.
229         (PROFILE_BEFORE_PROLOGUE): Likewise.
230
231 2009-12-03  Dave Korn  <dave.korn.cygwin@gmail.com>
232
233         * ggc-page.c (struct free_object): Pull definition out ...
234         (struct globals): .. from here.
235
236 2009-12-02  Richard Guenther  <rguenther@suse.de>
237
238         * fold-const.c (div_if_zero_remainder): Honor that sizetypes
239         are sign-extending.  Simplify.
240
241 2009-12-02  Richard Henderson  <rth@redhat.com>
242
243         PR tree-opt/42215
244         * tree-loop-distribution.c (build_size_arg_loc): Tidy.
245         (generate_memset_zero): Convert to sizetype properly.  Tidy.
246
247 2009-12-02  Richard Guenther  <rguenther@suse.de>
248
249         * lto-streamer-out.c (pack_ts_decl_common_value_fields):
250         Do not pretend we have value exprs.
251
252 2009-12-02  Richard Guenther  <rguenther@suse.de>
253
254         PR middle-end/41491
255         * fold-const.c (try_move_mult_to_index): Do not leak
256         domain types into the IL.
257
258 2009-12-02  Richard Guenther  <rguenther@suse.de>
259
260         PR middle-end/42088
261         * tree.c (free_lang_data): Disable if not using LTO.
262
263 2009-12-02  Richard Guenther  <rguenther@suse.de>
264
265         PR middle-end/42229
266         * cfgloopmanip.c (remove_path): Avoid cancelling loops twice.
267
268 2009-12-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
269
270         PR middle-end/42224
271         * tree.h (int_or_pointer_precision): Remove.
272         * tree.c (int_or_pointer_precision): Remove.
273         (integer_pow2p): Use TYPE_PRECISION instead.
274         (tree_log2): Likewise.
275         (tree_floor_log2): Likewise.
276         (signed_or_unsigned_type_for): Likewise.
277         * fold-const.c (fit_double_type): Likewise.
278         * varasm.c (initializer_constant_valid_p): Likewise.
279
280 2009-12-02  Ira Rosen  <irar@il.ibm.com>
281
282         * doc/invoke.texi (-fdump-tree-slp): Document.
283         (-ftree-vectorizer-verbose): Update.
284         (-ftree-slp-vectorize): Document.
285
286 2009-12-02  Nick Clifton  <nickc@redhat.com>
287
288         * config/rx/rx.c (rx_conditional_register_usage): Do not warn if
289         no fixed registers are available for interrupt handlers.  Do not
290         fix normal registers.
291         (MUST_SAVE_ACC_REGISTER): New macro.
292         (rx_get_stack_layout): Create a stack frame for fast interrupt
293         handlers, if necessary.  Push extra registers if needed in order
294         to save the accumulator.
295         (rx_expand_prologue): Create a stack frame for fast interrupt
296         handlers, if necessary.
297         (rx_expand_builtin_mvfc): Handle the case where there is no target.
298
299 2009-12-01  Sebastian Pop  <sebastian.pop@amd.com>
300
301         * config/i386/abmintrin.h (__lzcnt16): New.
302         (__lzcnt): New.
303         (__lzcnt64): New.
304         * config/i386/i386-builtin-types.def (UINT16_FTYPE_UINT16): New.
305         * config/i386/i386.c (IX86_BUILTIN_CLZS): New.
306         (bdesc_special_args): Add __builtin_clzs.
307         (ix86_expand_args_builtin): Handle UINT16_FTYPE_UINT16.
308
309 2009-12-01  Sebastian Pop  <sebastian.pop@amd.com>
310
311         * config/i386/abmintrin.h (_mm_popcnt_u32): New.
312         (_mm_popcnt_u64): New.
313
314 2009-12-01  Sebastian Pop  <sebastian.pop@amd.com>
315
316         * config/i386/abmintrin.h: New.
317         * config/i386/i386-c.c (ix86_target_macros_internal): Defined __ABM__.
318         * config/i386/x86intrin.h: Include abmintrin.h when __ABM__ is defined.
319
320 2009-12-01  Uros Bizjak  <ubizjak@gmail.com>
321
322         * config/i386/i386.md (SWI124): Rename from CRC32MODE.
323         (crc32modesuffix): Remove.
324         (crc32modeconstraint): Ditto.
325         (sse4_2_crc32<mode>): Update for renamed mode iterator.  Use
326         imodesuffix instead of crc32modesuffix and <r>m instead of
327         crc32modeconstraint.
328
329 2009-12-01  Jakub Jelinek  <jakub@redhat.com>
330
331         PR c++/42234
332         * tree-cfgcleanup.c (cleanup_omp_return): Don't ICE if control_bb
333         contains no statements.
334
335 2009-12-01  Grigori Fursin  <grigori.fursin@inria.fr>
336             Joern Rennecke  <amylaar@spamcop.net>
337
338         * cgraphunit.c (plugin.h): Include.
339         (ipa_passes): Invoke PLUGIN_ALL_IPA_PASSES_START /
340         PLUGIN_ALL_IPA_PASSES_END at start / end of processing.
341         * gcc-plugin.h (highlev-plugin-common.h, hashtab.h): Include.
342         (enum plugin_event): Define by including plugin.def.
343         Last enumerator is now called PLUGIN_EVENT_FIRST_DYNAMIC.
344         (plugin_event_name): Change type to const char **.
345         (get_event_last, get_named_event_id, unregister_callback): Declare.
346         (register_callback): Change type of event argument to int.
347         (highlev-plugin-common.h): New file.
348         * Makefile.in (GCC_PLUGIN_H): Add highlev-plugin-common.h and
349         $(HASHTAB_H)
350         (tree-optimize.o passes.o): Depend on $(PLUGIN_H).
351         (PLUGIN_HEADERS): Add opts.h, $(PARAMS_H) and plugin.def.
352         (s-header-vars): New rule.
353         (install-plugin): Depend on s-header-vars.  Install b-header-vars.
354         * params.c (get_num_compiler_params): New function.
355         * params.h (get_num_compiler_params): Declare.
356         * passes.c (plugin.h): Include.
357         (make_pass_instance): Invoke PLUGIN_NEW_PASS.
358         (do_per_function_toporder, pass_init_dump_file): No longer static.
359         (pass_fini_dump_file): Likewise.
360         (execute_one_pass): Likewise.  Invoke PLUGIN_OVERRIDE_GATE and
361         PLUGIN_PASS_EXECUTION.
362         (execute_ipa_pass_list): Invoke PLUGIN_EARLY_GIMPLE_PASSES_START and
363         PLUGIN_EARLY_GIMPLE_PASSES_END.
364         * plugin.c (plugin_event_name_init): New array, defined by
365         including plugin.def.
366         (FMT_FOR_PLUGIN_EVENT): Update.
367         (plugin_event_name): Change type to const char ** and initialize
368         to plugin_event_name_init.
369         (event_tab, event_last, event_horizon): New variable.
370         (get_event_last): New function.
371         (plugin_callbacks_init): New array.
372         (plugin_callbacks: Change type to struct callback_info **.
373         Initialize to plugin_callbacks_init.
374         (htab_event_eq, get_named_event_id, unregister_callback): New function.
375         (invoke_plugin_va_callbacks): Likewise.
376         (register_callback): Change type of event argument to int.
377         Handle new events.  Allow dynamic events.
378         (invoke_plugin_callbacks): Likewise.  Return success status.
379         (plugins_active_p): Allow dynamic callbacks.
380         * plugin.def: New file.
381         * plugin.h (invoke_plugin_callbacks): Update prototype.
382         (invoke_plugin_va_callbacks): Declare.
383         * tree-optimize.c (plugin.h): Include.
384         (tree_rest_of_compilation): Invoke PLUGIN_ALL_PASSES_START and
385         PLUGIN_ALL_PASSES_END.
386         * tree-pass.h (execute_one_pass, pass_init_dump_file): Declare.
387         (pass_fini_dump_file, do_per_function_toporder): Likewise.
388         * doc/plugin.texi: Document new event types.
389
390 2009-12-01  Martin Jambor  <mjambor@suse.cz>
391
392         PR tree-optimization/42237
393         * tree-sra.c (sra_ipa_modify_assign): Split gimple_reg_type assignments
394         in between references into two.
395
396 2009-12-01  Richard Guenther  <rguenther@suse.de>
397
398         * tree-inline.c (copy_tree_body_r): Do not set TREE_BLOCK
399         to the block of the call when remapping a type.
400
401 2009-12-01  Martin Jambor  <mjambor@suse.cz>
402
403         * cgraph.h (struct cgraph_edge): Reorder fields.  Make loop_nest
404         unsigned short int.
405         * ipa-prop.h (struct ipa_param_call_note): Likewise.
406         * ipa-prop.c (ipa_note_param_call): Initialize note->loop_nest.
407
408 2009-12-01  Richard Guenther  <rguenther@suse.de>
409
410         * final.c (rest_of_clean_state): If -fcompare-debug is
411         given dump final insns without UIDs.
412         * tree-ssa-live.c (remove_unused_scope_block_p): Remove
413         after_inlining checks.
414
415 2009-11-30  Chao-ying Fu  <fu@mips.com>
416
417         * config/mips/mips-dsp.md (mips_lhx_<mode>): Use sign_extend.
418
419 2009-11-30  Dave Korn  <dave.korn.cygwin@gmail.com>
420
421         * configure.ac (USE_CYGWIN_LIBSTDCXX_WRAPPERS): Define to reflect
422         status of AC_CHECK_FUNC for Cygwin DLL libstdc++ support wrappers.
423         * configure: Regenerate.
424         * config.in: Regenerate.
425
426         * config/i386/cygwin.h (CXX_WRAP_SPEC_LIST): Define list of --wrap
427         options for Cygwin DLL libstdc++ support wrappers.
428         (CXX_WRAP_SPEC_OPT): Define spec to use wrappers or not by default
429         according to defined value of USE_CYGWIN_LIBSTDCXX_WRAPPERS.
430         (CXX_WRAP_SPEC): Define entire wrapper spec in or out according to
431         whether USE_CYGWIN_LIBSTDCXX_WRAPPERS is even defined or not.
432         (LINK_SPEC): Include CXX_WRAP_SPEC.
433         * gcc/config/i386/winnt.c (wrapper_strcmp): New qsort helper function.
434         (i386_find_on_wrapper_list): Check if a function is found on the list
435         of libstdc++ wrapper options.
436         (i386_pe_file_end): If we are importing a wrapped function, also emit
437         an external declaration for the real version.
438         * config/i386/cygming.opt (muse-libstdc-wrappers): New option for
439         Cygwin targets. Update copyright year.
440
441 2009-11-30  Steve Ellcey  <sje@cup.hp.com>
442             Jakub Jelinek <jakub@redhat.com>
443
444         * function.c (instantiate_virtual_regs_in_insn): Copy to new reg
445         before forcing mode.
446
447 2009-11-30  Anatoly Sokolov  <aesok@post.ru>
448
449         * config/sh/sh.c (sh_promote_prototypes): Make static.
450         (sh_function_value, sh_libcall_value, sh_function_value_regno_p): New
451         functions.
452         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
453         * config/sh/sh.h (FUNCTION_VALUE_REGNO_P): Redefine, use
454         sh_function_value_regno_p.
455         (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
456         * config/sh/sh-protos.h (sh_function_value_regno_p): Declare.
457         (sh_promote_prototypes) : Remove.
458
459 2009-11-30  Julian Brown  <julian@codesourcery.com>
460
461         * config/arm/arm.h (PREFERRED_RELOAD_CLASS): Don't restrict Thumb-2
462         reloads to LO_REGS.
463
464 2009-11-30  Richard Henderson  <rth@redhat.com>
465
466         * config/i386/i386.c (ix86_vec_interleave_v2df_operator_ok): New.
467         (bdesc_special_args): Update insn codes.
468         (avx_vpermilp_parallel): Correct range check.
469         (ix86_rtx_costs): Handle vector permutation rtx codes.
470         (struct expand_vec_perm_d): Move earlier.
471         (get_mode_wider_vector): New.
472         (expand_vec_perm_broadcast_1): New.
473         (ix86_expand_vector_init_duplicate): Use it.  Tidy AVX modes.
474         (expand_vec_perm_broadcast): New.
475         (ix86_expand_vec_perm_builtin_1): Use it.
476         * config/i386/i386-protos.h: Update.
477         * config/i386/predicates.md (avx_vbroadcast_operand): New.
478         * config/i386/sse.md (AVX256MODE24P): New.
479         (ssescalarmodesuffix2s): New.
480         (avxhalfvecmode, avxscalarmode): Fill out to all modes.
481         (avxmodesuffixf2c): Add V8SI, V4DI.
482         (vec_dupv4sf): New expander.
483         (*vec_dupv4sf_avx): Add vbroadcastss alternative.
484         (*vec_set<mode>_0_avx, **vec_set<mode>_0_sse4_1): Macro-ize for
485         V4SF and V4SI.  Move C alternatives to front.  Add insertps and
486         pinsrd alternatives.
487         (*vec_set<mode>_0_sse2): Split out from ...
488         (vec_set<mode>_0): Macro-ize for V4SF and V4SI.
489         (vec_interleave_highv2df, vec_interleave_lowv2df): Require register
490         destination; use ix86_vec_interleave_v2df_operator_ok, instead of
491         ix86_fixup_binary_operands.
492         (*avx_interleave_highv2df, avx_interleave_lowv2df): Add movddup.
493         (*sse3_interleave_highv2df, sse3_interleave_lowv2df): New.
494         (*avx_movddup, *sse3_movddup): Remove.  New splitter from
495         vec_select form to vec_duplicate form.
496         (*sse2_interleave_highv2df, sse2_interleave_lowv2df): Use
497         ix86_vec_interleave_v2df_operator_ok.
498         (avx_movddup256, avx_unpcklpd256): Change to expanders, merge into ...
499         (*avx_unpcklpd256): ... here.
500         (*vec_dupv4si_avx): New.
501         (*vec_dupv2di_avx): Add movddup alternative.
502         (*vec_dupv2di_sse3): New.
503         (vec_dup<AVX256MODE24P>): Replace avx_vbroadcasts<AVXMODEF4P> and
504         avx_vbroadcastss256; represent with vec_duplicate instead of
505         nested vec_concat operations.
506         (avx_vbroadcastf128_<mode>): Rename from
507         avx_vbroadcastf128_p<avxmodesuffixf2c>256.
508         (*avx_vperm_broadcast_v4sf): New.
509         (*avx_vperm_broadcast_<AVX256MODEF2P>): New.
510
511 2009-11-30  Martin Jambor  <mjambor@suse.cz>
512
513         PR middle-end/42196
514         * tree-sra.c (struct access): New field grp_different_types.
515         (dump_access): Dump grp_different_types.
516         (compare_access_positions): Prefer scalars and vectors over other
517         scalar types.
518         (sort_and_splice_var_accesses): Set grp_different_types if appropriate.
519         (sra_modify_expr): Use the original also when dealing with a complex
520          or vector group accessed as multiple types.
521
522 2009-11-30  Richard Henderson  <rth@redhat.com>
523
524         * config/i386/i386.c (avx_vperm2f128_parallel): New.
525         * config/i386/i386-protos.h: Declare it.
526         * config/i386/predicates.md (avx_vperm2f128_v8sf_operand,
527         avx_vperm2f128_v8si_operand, avx_vperm2f128_v4df_operand): New.
528         * config/i386/sse.md (avx_vperm2f128<mode>3): Change to expander.
529         (*avx_vperm2f128<mode>_full): Renamed from avx_vperm2f128<mode>3.
530         (*avx_vperm2f128<mode>_nozero): New.
531
532 2009-11-30  Richard Henderson  <rth@redhat.com>
533
534         * config/i386/i386-builtin-types.def (V4DF_FTYPE_V4DF_V4DF_V4DI): New.
535         (V8SF_FTYPE_V8SF_V8SF_V8SI): New.
536         * config/i386/i386.c (ix86_vectorize_builtin_vec_perm): Support
537         V4DF and V8SF for AVX; relax constraint on V4SF to SSE1 from SSE2.
538         (IX86_BUILTIN_VEC_PERM_V4DF, IX86_BUILTIN_VEC_PERM_V8SF): New.
539         (bdesc_args): Add them.
540         (ix86_expand_builtin): Expand them.
541         (expand_vec_perm_pshufb2): Only operate on 16-byte vectors.
542
543 2009-11-30  Martin Jambor  <mjambor@suse.cz>
544
545         PR middle-end/42206
546         * ipa-prop.c (ipa_write_node_info): Initialize note_count to zero.
547
548 2009-11-30  Jakub Jelinek  <jakub@redhat.com>
549
550         * ipa-reference.c (propagate): Only dump bitmaps if computed.
551
552 2009-11-30  Olga Golovanevsky  <olga@il.ibm.com>
553
554         PR middle-end/39806
555         * ipa-struct-reorg.c (new_var_eq): Use DECL_UID to hash new variables.
556         (new_var_hash): Likewise.
557         (is_in_new_vars_htab): Likewise.
558         (add_to_new_vars_htab): Likewise.
559
560 2009-11-30  Ira Rosen  <irar@il.ibm.com>
561
562         * tree-vect-stmts.c (vectorizable_assignment): Support
563         multiple types.
564
565 2009-11-30  Richard Guenther  <rguenther@suse.de>
566
567         * doc/contrib.texi (Contributors): Add myself.
568
569 2009-11-30  Richard Guenther  <rguenther@suse.de>
570
571         * tree.c (free_lang_data): Do not set debug_info_level to
572         none if terse.
573
574 2009-11-30  Richard Guenther  <rguenther@suse.de>
575
576         PR middle-end/42119
577         PR fortran/38530
578         * expr.c (expand_expr_addr_expr_1): Properly expand the initializer
579         of CONST_DECLs.
580
581 2009-11-30  Richard Guenther  <rguenther@suse.de>
582
583         * tree-into-ssa.c (insert_phi_nodes): Add PHI nodes in
584         variable UID order.
585
586 2009-11-30  Richard Guenther  <rguenther@suse.de>
587
588         * tree-dump.c (dump_option_value_in): Add TDF_NOUID.
589         * tree-pass.h (TDF_NOUID): Likewise.
590         * print-rtl.c: Include tree-pass.h.
591         (print_mem_expr): Pass dump_flags.
592         (print_rtx): Likewise.
593         * print-tree.c: Include tree-pass.h.
594         (print_node_brief): Handle TDF_NOUID.
595         (print_node): Likewise.
596         * tree-pretty-print.c (dump_decl_name): Likewise.
597         (dump_generic_node): Likewise.
598         * Makefile.in (print-rtl.o, print-tree.o): Add $(TREE_PASS_H)
599         dependency.
600
601 2009-11-30  Nick Clifton  <nickc@redhat.com>
602
603         * config/stormy16/stormy16-lib2-count-leading-zeros.c: Delete.
604         * config/stormy16/t-stormy16 (LIB2FUNCS_EXTRA): Remove
605         stormy16-lib2-count-leading-zeros.c.
606         * config/stormy16/stormy16-lib2.c (__clzhi2): Move code from
607         __stormy16_count_leading_zeros() into this function.
608         (__ctzhi2): Use __builtin_clz.
609         (__ffshi2): Likewise.
610
611 2009-11-30  Eric Botcazou  <ebotcazou@adacore.com>
612
613         * config/sparc/sparc.c (DF_MODES): Simplify.
614         (TF_ONLY_MODES, OF_ONLY_MODES): Delete.
615         (TF_MODES, OF_MODES): Adjust for above change.
616         (TF_MODES_NO_S, OF_MODES_NO_S): Likewise.
617         *  config/sparc/sparc.h (REGNO_REG_CLASS): Move around.
618
619 2009-11-30  Paolo Bonzini  <bonzini@gnu.org>
620
621         PR rtl-optimization/41812
622         * fwprop.c (local_md, local_lr): New globals.
623         (process_defs, process_uses): Remove local_md argument.  Never
624         consider dead pseudos to have singleton def-use chains.
625         (single_def_use_enter_block): Perform LR simulation.
626         (build_single_def_use_links): Remove local_md local variable.
627         Add DF_NOTE.  Allocate local_lr.
628         (fwprop_done): Do not remove DF_CHAIN, we do not use it anymore.
629         * df-problems.c (df_md_scratch): New.
630         (df_md_alloc, df_md_free): Allocate/free it.
631         (df_md_local_compute): Only include live registers in init.
632         (df_md_transfer_function): Prune the in-set computed by
633         the confluence function, and the gen-set too.
634
635 2009-11-30  Hans-Peter Nilsson  <hp@axis.com>
636
637         PR rtl-optimization/40086
638         * reorg.c (relax_delay_slots): When looking for redundant insn at
639         the branch target, use next_real_insn, not next_active_insn.
640
641 2009-11-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
642
643         * doc/install.texi: Update minimum MPC version to 0.8.
644
645 2009-09-09  Segher Boessenkool  <segher@kernel.crashing.org>
646
647         * config/rs6000/rs6000.md (fnmaddsf4_powerpc_1): Remove
648         HONOR_SIGNED_ZEROS final condition.
649         (fnmsubsf4_powerpc_1): Same.
650         (fnmadddf4_fpr_1): Same.
651         (fnmsubdf4_fpr_1): Same.
652
653 2009-11-29  Ira Rosen  <irar@il.ibm.com>
654
655         PR tree-optimization/42193
656         * tree-vect-stmts.c (vectorizable_operation): Set vectorization factor
657         to 1 in case of basic block SLP.
658         (vectorizable_load): Likewise.
659
660 2009-11-28  Jan Hubicka  <jh@suse.cz>
661
662         * cgraph.c (same_body_alias_1): Break out of
663         (same_body_alias): ... here; remove comdat check; it is handled
664         in cp already.
665         (cgraph_add_thunk): New.
666         (dump_cgraph_node): Dump aliases and thunks.
667         * cgraph.h (cgraph_thunk_info): New structure.
668         (struct cgraph_node): Add thunk info.
669         (cgraph_add_thunk): New.
670         * cgraphunit.c (cgraph_emit_thunks): Remove.
671         (cgraph_finalize_compilation_unit): Do not call cgraph_emit_thunks.
672         (assemble_thunk): New function.
673         (cgraph_expand_function): Handle thunks.
674         (thunk_adjust): New.
675         (init_lowered_empty_function): New.
676         * cp-objcp-common.h (LANG_HOOKS_CALLGRAPH_EMIT_ASSOCIATED_THUNKS):
677         Remove.
678         * lto-cgraph.c (lto_output_node): Stream thunk info.
679         (input_node): Likewise.
680         * langhooks.h (lang_hooks_for_callgraph): Remove emit_associated_thunks.
681         * langhooks-def.h (LANG_HOOKS_CALLGRAPH_EMIT_ASSOCIATED_THUNKS): Remove.
682         (LANG_HOOKS_CALLGRAPH_INITIALIZER): Update.
683         * i386.c (x86_output_mi_thunk): Make output prettier.
684
685 2009-11-28  Richard Guenther  <rguenther@suse.de>
686
687         PR tree-optimization/42183
688         * tree-nrv.c (tree_nrv): Bail out if the RESULT_DECL has its
689         address taken.  Merge the addressable state of the NRV
690         variable and the result instead of copying it.
691
692 2009-11-28  Jakub Jelinek  <jakub@redhat.com>
693
694         * matrix-reorg.c (analyze_matrix_allocation_site): Remove unused
695         malloc_fname variable.
696         (check_allocation_function): Remove unused gsi and bb_level_0
697         variables.
698         (transform_access_sites): Remove unused d_type_size and d_type_size_k
699         variables.
700         * omega.c (resurrect_subs): Remove unused n variable.
701         (omega_solve_geq): Remove unused neweqns variable.
702         * lto-streamer-in.c (lto_read_tree): Remove unused end_marker variable.
703         * tree-inline.c (declare_return_variable): Remove USE_P argument,
704         return use instead of var.
705         (remap_decl, remap_block): Remove unused fn variable.
706         (expand_call_inline): Remove unused retvar variable, adjust
707         declare_return_variable caller.
708         (optimize_inline_calls): Remove unused prev_fn variable.
709         * tree-vect-slp.c (vect_analyze_slp_instance): Remove unused ncopies
710         variable.
711         (vect_create_mask_and_perm): Remove unused group_size and dr_chain_size
712         variables.
713         * tree-ssa-loop-niter.c (split_to_var_and_offset): Handle MINUS_EXPR
714         properly.
715         * tree-vect-loop.c (vect_analyze_loop_form): Remove unused backedge
716         variable.
717         (vect_create_epilog_for_reduction): Remove unused bytesize variable.
718         * omp-low.c (workshare_safe_to_combine_p): Remove par_entry_bb
719         parameter.  Remove unused par_stmt variable.
720         (determine_parallel_type): Adjust workshare_safe_to_combine_p caller.
721         (expand_omp_sections): Remove unused l1 variable.
722         (lower_omp_for): Remove unused ilist variable.
723         * tree-loop-distribution.c (mark_nodes_having_upstream_mem_writes):
724         Remove unused has_upstream_mem_write_p variable.
725         * recog.c (decode_asm_operands): Remove unused noperands variable.
726         * tree-ssa-alias.c (refs_may_alias_p_1): Remove unused size1 and
727         size2 variable.
728         * libgcov.c (__gcov_merge_delta): Remove unused last variable.
729         * tree-call-cdce.c (gen_conditions_for_pow_int_base): Remove unused
730         base_nm variable.
731         (gen_conditions_for_pow): Remove unused ec variable.
732         * tree-ssa-sccvn.c (vn_reference_lookup_3): Remove unused size
733         variable.
734         * ipa-struct-reorg.c (program_redefines_malloc_p): Remove unused
735         fndecl variable.
736         * tree-ssa-sink.c (statement_sink_location): Remove unused code
737         variable.
738         * regmove.c (copy_src_to_dest): Remove unused insn_uid and move_uid
739         variables.
740         * tree-complex.c (create_one_component_var): Remove unused inner_type
741         variable.
742         * calls.c (emit_call_1): Don't GEN_INT (struct_value_size)
743         unnecessarily when GEN_*CALL omits that argument.
744         * regrename.c (regrename_optimize): Remove unused regs_seen variable.
745         (build_def_use): Remove unused icode variable.
746         * ipa-pure-const.c (check_call): Remove unused callee and avail
747         variables.
748         * tree-dfa.c (add_referenced_var): Remove unused v_ann variable.
749         * tree-vect-patterns.c (vect_recog_pow_pattern): Remove unused type
750         variable.
751         (vect_pattern_recog): Remove unused stmt variable.
752         * sel-sched-ir.c (make_regions_from_the_rest): Remove unused
753         new_regions variable.
754         * postreload.c (reload_cse_simplify_operands): Remove unused mode
755         variable.
756         * tree-parloops.c (create_call_for_reduction_1): Remove unused
757         addr_type variable.
758         (create_parallel_loop): Remove unused res variable.
759         (gen_parallel_loop): Remove unused nloop variable.
760         * tree-vect-loop-manip.c (vect_loop_versioning): Likewise.
761         * value-prof.c (gimple_mod_subtract_transform,
762         gimple_stringops_transform): Remove unused value variable.
763         (gimple_stringops_values_to_profile): Remove unused fcode variable.
764         * tree-vrp.c (register_new_assert_for): Remove unused found variable.
765         (vrp_visit_switch_stmt): Remove unused n variable.
766         * tree-vect-stmts.c (vectorizable_conversion): Remove unused expr
767         variable.
768         (vectorizable_operation): Remove unused shift_p variable.
769         (vectorizable_store): Remove unused first_stmt_vinfo variable.
770         * tree-ssa-operands.c (add_stmt_operand): Remove unused v_ann variable.
771         * tree-vect-data-refs.c (vect_analyze_data_refs): Remove unused bb
772         variable.
773         (vect_permute_store_chain): Remove unused scalar_dest variable.
774         (vect_supportable_dr_alignment): Remove unused invariant_in_outerloop
775         variable.
776         * tree-ssa-threadupdate.c (thread_single_edge): Remove unused
777         local_info variable.
778         * tree-optimize.c (tree_rest_of_compilation): Remove unused node
779         variable.
780         * optabs.c (expand_binop): Remove unused equiv_value variable.
781         (emit_libcall_block): Remove unused prev variable.
782         (init_optabs): Remove unused int_mode variable.
783         * tree-ssa-structalias.c (scc_visit): Remove unused have_ref_node
784         variable.
785         (do_structure_copy): Remove unused lhsbase and rhsbase variables.
786         (find_func_aliases): Remove unused rhstype variable.
787         (ipa_pta_execute): Remove unused varid variable.
788
789 2009-11-28  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
790
791         * config/avr/avr.h (ASM_OUTPUT_EXTERNAL): Add.
792
793 2009-11-28  David Binderman  <dcb314@hotmail.com>
794
795         * ira-color.c (put_allocno_into_bucket): Remove set but not used
796         local variable hard_regs_num.
797         * ira-lives.c (process_single_reg_class_operands): Remove cover_class.
798         * loop-unswitch.c (unswitch_loop): Remove zero_bitmap.
799         * lower-subreg.c (decompose_multiword_subregs): Remove next.
800
801 2009-11-27  Martin Jambor  <mjambor@suse.cz>
802
803         PR middle-end/42006
804         * tree-sra.c (get_replaced_param_substitute): Call create_tmp_var
805         instead of create_tmp_var.  Set DECL_GIMPLE_REG_P to one manually
806         for vector and complex types.
807         (get_adjustment_for_base): Describe return value in the comment.
808
809 2009-11-27  Nick Clifton  <nickc@redhat.com>
810
811         * longlong.h (count_leading_zeros): Define macro for stormy16 target.
812         (COUNT_LEADING_ZEROS_0): Likewise.
813         * config/stormy16/stormy16-lib2.c: Arrange for separate
814         compilation of each function.
815         (__ffshi2): New function.
816         (__stormy16_count_leading_zeros): New function.
817         * config/stormy16/t-stormy16 (LIB2FUNCS_EXTRA): Use stub files to
818         compile each function into its own object file.
819         (stormy16-lib2-ashlsi3.c): New stub file.
820         (stormy16-lib2-ashrsi3.c): New stub file.
821         (stormy16-lib2-clzhi2.c): New stub file.
822         (stormy16-lib2-count-leading-zeros.c): New stub file.
823         (stormy16-lib2-ctzhi2.c): New stub file.
824         (stormy16-lib2-divsi3.c): New stub file.
825         (stormy16-lib2-ffshi2.c): New stub file.
826         (stormy16-lib2-lshrsi3.c): New stub file.
827         (stormy16-lib2-modsi3.c): New stub file.
828         (stormy16-lib2-parityhi2.c): New stub file.
829         (stormy16-lib2-popcounthi2.c): New stub file.
830         (stormy16-lib2-udivmodsi4.c): New stub file.
831         (stormy16-lib2-udivsi3.c): New stub file.
832         (stormy16-lib2-umodsi3.c): New stub file.
833
834 2009-11-27  Richard Henderson  <rth@redhat.com>
835
836         * config/i386/sse.md (vec_interleave_highv16qi,
837         vec_interleave_lowv16qi, vec_interleave_highv8hi,
838         vec_interleave_lowv8hi, vec_interleave_highv4si,
839         vec_interleave_lowv4si, vec_interleave_highv2di,
840         vec_interleave_lowv2di, vec_interleave_highv4sf,
841         vec_interleave_lowv4sf, vec_interleave_highv2df,
842         vec_interleave_lowv2df): Remove expanders.
843         (sse_unpcklps, sse_unpckhps, sse2_unpckhpd_exp, sse2_unpcklpd_exp,
844         sse2_punpckhqdq, sse2_punpcklqdq, sse2_punpckhbw, sse2_punpcklbw,
845         sse2_punpckhwd, sse2_punpcklwd, sse2_punpckhdq, sse2_punpckldq):
846         Rename to their proper vec_interleave equivalent.  Update all users
847         to the new name.
848         * config/i386/i386.c, config/i386/i386.md: Update all users.
849
850 2009-11-27  Michael Matz  <matz@suse.de>
851
852         PR rtl-optimization/42084
853         * cfgexpand.c (maybe_cleanup_end_of_block): Add new parameter,
854         use it to stop walking.
855         (expand_gimple_cond): Adjust call to above.
856
857 2009-11-27  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
858
859         PR target/41810
860         * gthr-solaris.h (__gthread_mutex_destroy): Remove UNUSED.
861         [SUPPORTS_WEAK && GTHREAD_USE_WEAK] (__gthread_active_p): Use
862         __extension__ to allow cast from function pointer to object
863         pointer in C++.
864         * doc/install.texi (--enable-threads): Clarify use of Solaris threads.
865
866 2009-11-27  Steven Bosscher  <steven@gcc.gnu.org>
867
868         * config/ia64/itanium1.md: Remove.
869         * config/ia64/ia64.md: Do not include it.
870         * config/ia64/ia64.c (ia64_handle_option): Remove "itanium",
871         "itanium1", and "merced" from the processor alias table.
872         (clocks, add_cycles): Remove global variables.
873         (ia64_sched_reorder2): Don't set/use them.
874         (ia64_dfa_new_cycle, ia64_h_i_d_extended, ia64_reorg): Likewise.
875         (bundling): Likewise. Remove extra pass for MMMUL/MMSHF.
876
877 2009-11-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
878
879         * config/s390/s390.c (last_scheduled_insn): New variable.
880         (s390_fpload_toreg, s390_z10_prevent_earlyload_conflicts): New
881         functions.
882         (s390_sched_reorder, s390_sched_variable_issue): New functions.
883         (TARGET_SCHED_VARIABLE_ISSUE, TARGET_SCHED_REORDER): Target hooks
884         defined.
885
886 2009-11-27  Michael Matz  <matz@suse.de>
887
888         PR c++/41906
889         * tree-eh.c (lower_catch): Stop after expanding a catch-all.
890
891 2009-11-27  Richard Guenther  <rguenther@suse.de>
892
893         * timevar.def (TV_LOOP_MOVE_INVARIANTS, TV_LOOP_UNSWITCH,
894         TV_LOOP_UNROLL, TV_LOOP_DOLOOP): New timevars.
895         * loop-init.c (pass_rtl_move_loop_invariants): Use
896         TV_LOOP_MOVE_INVARIANTS.
897         (pass_rtl_unswitch): Use TV_LOOP_UNSWITCH.
898         (pass_rtl_unroll_and_peel): Use TV_LOOP_UNROLL.
899         (pass_rtl_doloop): Use TV_LOOP_DOLOOP.
900
901 2009-11-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
902
903         * emit-rtl.c (next_active_insn, prev_active_insn): Correct comment.
904
905 2009-11-27  Jakub Jelinek  <jakub@redhat.com>
906
907         * config/i386/i386.c (ix86_emit_restore_sse_regs_using_mov): Remove
908         unused insn variable.
909         * genemit.c (output_peephole2_scratches): Only declare and initialize
910         _regs_allocated if it will be ever used.
911         * cfgloopmanip.c (create_empty_if_region_on_edge): Remove unused
912         succ_bb variable.
913         (create_empty_loop_on_edge): Remove unused freq and cnt variables.
914         * unwind-c.c (PERSONALITY_FUNCTION): Remove unused action_record
915         variable.
916
917         * opts.c (decode_options): If optimize is bigger than 255,
918         set it to 255.
919
920 2009-11-26  Richard Henderson  <rth@redhat.com>
921
922         * config/i386/sse.md (mulv16qi3): Change back from an expander
923         to an insn-and-split.
924         (mulv4si): Mention AVX not XOP for AVX exception.
925         (*sse2_mulv4si3): Likewise.
926         (mulv2di3): Use vmulld not vpmacsdd for XOP expansion.  Tidy.
927
928 2009-11-26  Bernd Schmidt  <bernd.schmidt@analog.com>
929
930         * cfgexpand (n_stack_vars_conflict): New static variable.
931         (triangular_index): Reduce likelyhood of overflow by performing
932         the division before the multiplication.
933         (resize_stack_vars_conflict): Call fatal_error if overflow
934         occurred in triangular_index.  Update n_stack_vars_conflict.
935
936         PR rtl-opt/38582
937         * regrename.c (struct du_chain): Remove member earlyclobber.
938         (scan_rtx_reg): Don't set it.  Remove argument earlyclobber,
939         all callers changed.
940         (scan_rtx): Remove argument earlyclobber, all callers changed.
941         (hide_operands, restore_operands, record_out_operands): New functions,
942         broken out of build_def_use.
943         (build_def_use): Call them as necessary.
944
945         * regrename.c (struct du_head): New members id, conflicts,
946         hard_conflicts and cannot_rename.
947         (enum scan_actions): Remove terminate_all_read and
948         terminate_overlapping_read; add mark_all_read.
949         (scan_actions_name): Likewise.
950         (du_head_p): New typedef.  Define a vector type for it.
951         (id_to_chain): New static variable.
952         (note_sets, clear_dead_regs): Delete functions.
953         (free_chain_data): New function.
954         (merge_overlapping_regs): Simply walk the conflicts bitmap.
955         Remove argument B, all callers changed.
956         (regrename_optimize): Allocate id_to_chain.  Ignore chains that have
957         the cannot_rename bit set.  Update regno and nregs of a renamed chain.
958         Call free_chain_data when done.
959         (do_replace): Remove death notes when the renamed reg is set in the
960         last insn; add them if not.
961         (mark_conflict, note_sets_clobbers): New static function.
962         (fail_current_block, current_id, open_chains_set, live_hard_regs): New
963         static variables.
964         (scan_rtx_reg): Keep track of conflicts between chains, and between
965         chains and hard regs.  Don't terminate chains when we find a read we
966         can't handle, mark it unrenameable instead.  For terminate_write,
967         terminate chains that are written with an exact match or a superset
968         of registers.  Set fail_current_block if multi-word lifetimes are too
969         complex to handle.
970         (scan_rtx_address): Use mark_all_read instead of terminate_all_read.
971         (build_def_use): Initialize current_id, live_chains and live_hard_regs;
972         free memory for them when done.
973         Rearrange the steps so that earlyclobbers are noted before reads
974         are processed.  Add new steps to keep track of hard register lifetimes
975         outside insn operands.
976
977 2009-11-26  Richard Guenther  <rguenther@suse.de>
978
979         * tree-ssa-dce.c (nr_walks): New variable.
980         (mark_aliased_reaching_defs_necessary): Adjust oracle cut-off.
981         (perform_tree_ssa_dce): Init nr_walks.
982
983 2009-11-26  Michael Matz  <matz@suse.de>
984
985         PR tree-optimization/41905
986         * tree-eh.c (lower_eh_constructs_2): Don't add assignments
987         below statements that can't fall thru.
988
989 2009-11-26  Michael Matz  <matz@suse.de>
990
991         * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
992         expand_builtin_sprintf): Remove.
993         (expand_builtin): Don't call them.
994
995 2009-11-26  Richard Guenther  <rguenther@suse.de>
996
997         * tree-ssa-dce.c (perform_tree_ssa_dce): Allocate visited bitmap.
998
999 2009-11-26  Nick Clifton  <nickc@redhat.com>
1000
1001         * config/rx/rx.c (rx_expand_epilogue): Add checks for sibcalls
1002         being used incorrectly.
1003         (rx_function_ok_for_sibcall): New function.  Do not allow indirect
1004         sibcalls, or sibcalls from interrupt functions.
1005         (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
1006         * config/rx/rx.md (sibcall): Convert to a define_expand.  Check
1007         for a MEM inside a MEM.
1008         (sibcall_value): Likewise.
1009         (sibcall_internal): New pattern containing old sibcall pattern.
1010         (sibcall_value_internal): Likewise.
1011
1012 2009-11-25  Richard Henderson  <rth@redhat.com>
1013
1014         * config/i386/i386-builtin-types.awk (DEF_VECTOR_TYPE): Allow an
1015         optional 3rd argument to define the mode.
1016         * config/i386/i386-builtin-types.def (UQI, UHI, USI, UDI): New.
1017         (V2UDI, V4USI, V8UHI, V16UQI): New.
1018         (V4SF_FTYPE_V4SF_V4SF_V4SI, V2UDI_FTYPE_V2UDI_V2UDI_V2UDI,
1019         V4USI_FTYPE_V4USI_V4USI_V4USI, V8UHI_FTYPE_V8UHI_V8UHI_V8UHI,
1020         V16UQI_FTYPE_V16UQI_V16UQI_V16UQI): New.
1021         * config/i386/i386-modes.def: Rearrange for double-wide AVX.
1022         * config/i386/i386-protos.h (ix86_expand_vec_extract_even_odd): New.
1023         * config/i386/i386.c (IX86_BUILTIN_VEC_PERM_*): New.
1024         (bdesc_args): Add the builtin definitions to match.
1025         (ix86_expand_builtin): Expand them.
1026         (ix86_builtin_vectorization_cost): Rename from
1027         x86_builtin_vectorization_cost.
1028         (ix86_vectorize_builtin_vec_perm, struct expand_vec_perm_d,
1029         doublesize_vector_mode, expand_vselect, expand_vselect_vconcat,
1030         expand_vec_perm_blend, expand_vec_perm_vpermil,
1031         expand_vec_perm_pshufb, expand_vec_perm_1,
1032         expand_vec_perm_pshuflw_pshufhw, expand_vec_perm_palignr,
1033         expand_vec_perm_interleave2, expand_vec_perm_pshufb2,
1034         expand_vec_perm_even_odd_1, expand_vec_perm_even_odd,
1035         ix86_expand_vec_perm_builtin_1, extract_vec_perm_cst,
1036         ix86_expand_vec_perm_builtin, ix86_vectorize_builtin_vec_perm_ok,
1037         ix86_expand_vec_extract_even_odd, TARGET_VECTORIZE_BUILTIN_VEC_PERM,
1038         TARGET_VECTORIZE_BUILTIN_VEC_PERM_OK): New.
1039         * sse.md (SSEMODE_EO): New.
1040         (vec_extract_even<mode>): Use SSEMODE_EO and
1041         ix86_expand_vec_extract_even_odd.
1042         (vec_extract_odd<mode>): Likewise.
1043         (mulv16qi3, vec_pack_trunc_v8hi, vec_pack_trunc_v4si,
1044         vec_pack_trunc_v2di): Use ix86_expand_vec_extract_even_odd.
1045
1046 2009-11-25  Richard Henderson  <rth@redhat.com>
1047
1048         * target.h (targetm.vectorize.builtin_vec_perm_ok): New.
1049         * target-def.h (TARGET_VECTORIZE_BUILTIN_VEC_PERM_OK): New.
1050         * hooks.h, hooks.c (hook_bool_tree_tree_true): New.
1051         * tree-vect-slp.c (vect_create_mask_and_perm): Don't create
1052         the vector constant here...
1053         (vect_transform_slp_perm_load): ... do it here instead.  Validate
1054         that the permutation vector is implementable by the target.
1055
1056 2009-11-25  Jakub Jelinek  <jakub@redhat.com>
1057
1058         * config/rs6000/sysv4.opt (mregnames): Change Var to rs6000_regnames.
1059         * config/rs6000/sysv4.h (TARGET_REGNAMES): Define.
1060
1061         * print-rtl.c (print_rtx): When printing newline, append
1062         print_rtx_head and indentation after the newline.
1063
1064         PR target/42165
1065         * config/i386/i386.c (print_operand): For 32-byte memory use
1066         YMMWORD in -masm=intel mode.  Use TBYTE instead of XWORD.
1067         * config/i386/i386.md (crc32modesuffix): Expand to nothing
1068         in -masm=intel mode.
1069         (sse4_2_crc32di): Print just crc32 instead of crc32q in
1070         -masm=intel mode.
1071         * config/i386/mmx.md (*mmx_pinsrw): Print correct size of
1072         memory operand in -masm=intel mode.
1073         * config/i386/sse.md (*avx_pinsr<ssevecsize>, *sse4_1_pinsrb,
1074         *sse2_pinsrw): Likewise.
1075         (sse_cvtss2siq, sse_cvtss2siq_2, sse_cvttss2siq): Don't print
1076         q suffix in -masm=intel mode.
1077
1078 2009-11-25  Eric Botcazou  <ebotcazou@adacore.com>
1079
1080         PR target/10127
1081         PR ada/20548
1082         PR middle-end/42004
1083         * dwarf2out.c (dwarf2out_args_size_adjust): Rename to...
1084         (dwarf2out_stack_adjust): ...this.  Do not adjust the arg size for
1085         ACCUMULATE_OUTGOING_ARGS targets.  Rename former version to...
1086         (dwarf2out_notice_stack_adjust): ...this.  Adjust for above renaming.
1087         (dwarf2out_frame_debug_expr): Revert previous change and adjust for
1088         above renaming.
1089         (dwarf2out_frame_debug): Add ??? comment.  Adjust for above renaming.
1090
1091 2009-11-25  Uros Bizjak  <ubizjak@gmail.com>
1092
1093         * config/i386/predicates.md (emms_operation): New predicate.
1094         (vzeroupper_operation): Ditto.
1095         (vzeroall_operation): Improve pattern recognition.
1096         * config/i386/sse.md (avx_vzeroupper_rex64): Remove insn pattern.
1097         (avx_vzeroupper): Change insn pattern to expander.
1098         (*avx_vzeroupper): New insn pattern.  Use vzeroupper_operation
1099         predicate.
1100         (*avx_vzeroall): Remove operands 1 and 2.
1101         * config/i386/mmx.md (mmx_emms): Change insn pattern to expander.
1102         (mmx_femms): Ditto.
1103         (*mmx_emms): New insn pattern.  Use emms_operation predicate.
1104         (*mmx_femms): Ditto.
1105         * config/i386/i386.c (enum ix86_builtins)
1106         <IX86_BUILTIN_VZEROUPPER_REX64>: Remove.
1107         (struct builtin_description) <CODE_FOR_avx_vzeroupper_rex64>:
1108         Remove initailization.
1109         <CODE_FOR_avx_vzeroupper>: Unconditionally initialize here.
1110
1111 2009-11-25  Paul Brook  <paul@codesourcery.com>
1112
1113         * config/arm/arm.md (consttable_4): Handle (high ...).
1114
1115 2009-11-25  Robert Nelson  <robert.nelson@digikey.com>
1116             Richard Earnshaw  <rearnsha@arm.com>
1117
1118         * arm.h (enum vfp_reg_type): Add VFP_NONE.
1119         * arm.c (all_fpus): Use it for floating point units that aren't based
1120         on the VFP architecture.
1121         (aapcs_vfp_is_call_or_return_candidate): Make base_mode a pointer to
1122         enum machine_mode.
1123
1124 2009-11-25  H.J. Lu  <hongjiu.lu@intel.com>
1125
1126         * alias.c: Remove trailing white spaces.
1127         * alloc-pool.c: Likewise.
1128         * alloc-pool.h: Likewise.
1129         * attribs.c: Likewise.
1130         * auto-inc-dec.c: Likewise.
1131         * basic-block.h: Likewise.
1132         * bb-reorder.c: Likewise.
1133         * bt-load.c: Likewise.
1134         * builtins.c: Likewise.
1135         * builtins.def: Likewise.
1136         * c-common.c: Likewise.
1137         * c-common.h: Likewise.
1138         * c-cppbuiltin.c: Likewise.
1139         * c-decl.c: Likewise.
1140         * c-format.c: Likewise.
1141         * c-lex.c: Likewise.
1142         * c-omp.c: Likewise.
1143         * c-opts.c: Likewise.
1144         * c-parser.c: Likewise.
1145         * c-pretty-print.c: Likewise.
1146         * c-tree.h: Likewise.
1147         * c-typeck.c: Likewise.
1148         * caller-save.c: Likewise.
1149         * calls.c: Likewise.
1150         * cfg.c: Likewise.
1151         * cfganal.c: Likewise.
1152         * cfgexpand.c: Likewise.
1153         * cfghooks.c: Likewise.
1154         * cfghooks.h: Likewise.
1155         * cfglayout.c: Likewise.
1156         * cfgloop.c: Likewise.
1157         * cfgloop.h: Likewise.
1158         * cfgloopmanip.c: Likewise.
1159         * cfgrtl.c: Likewise.
1160         * cgraph.c: Likewise.
1161         * cgraph.h: Likewise.
1162         * cgraphbuild.c: Likewise.
1163         * cgraphunit.c: Likewise.
1164         * cif-code.def: Likewise.
1165         * collect2.c: Likewise.
1166         * combine.c: Likewise.
1167         * convert.c: Likewise.
1168         * coverage.c: Likewise.
1169         * crtstuff.c: Likewise.
1170         * cse.c: Likewise.
1171         * cselib.c: Likewise.
1172         * dbgcnt.c: Likewise.
1173         * dbgcnt.def: Likewise.
1174         * dbgcnt.h: Likewise.
1175         * dbxout.c: Likewise.
1176         * dce.c: Likewise.
1177         * ddg.c: Likewise.
1178         * ddg.h: Likewise.
1179         * defaults.h: Likewise.
1180         * df-byte-scan.c: Likewise.
1181         * df-core.c: Likewise.
1182         * df-problems.c: Likewise.
1183         * df-scan.c: Likewise.
1184         * df.h: Likewise.
1185         * dfp.c: Likewise.
1186         * diagnostic.c: Likewise.
1187         * diagnostic.h: Likewise.
1188         * dominance.c: Likewise.
1189         * domwalk.c: Likewise.
1190         * double-int.c: Likewise.
1191         * double-int.h: Likewise.
1192         * dse.c: Likewise.
1193         * dwarf2asm.c: Likewise.
1194         * dwarf2asm.h: Likewise.
1195         * dwarf2out.c: Likewise.
1196         * ebitmap.c: Likewise.
1197         * ebitmap.h: Likewise.
1198         * emit-rtl.c: Likewise.
1199         * et-forest.c: Likewise.
1200         * except.c: Likewise.
1201         * except.h: Likewise.
1202         * expmed.c: Likewise.
1203         * expr.c: Likewise.
1204         * expr.h: Likewise.
1205         * final.c: Likewise.
1206         * flags.h: Likewise.
1207         * fold-const.c: Likewise.
1208         * function.c: Likewise.
1209         * function.h: Likewise.
1210         * fwprop.c: Likewise.
1211         * gcc.c: Likewise.
1212         * gcov-dump.c: Likewise.
1213         * gcov-io.c: Likewise.
1214         * gcov-io.h: Likewise.
1215         * gcov.c: Likewise.
1216         * gcse.c: Likewise.
1217         * genattr.c: Likewise.
1218         * genattrtab.c: Likewise.
1219         * genautomata.c: Likewise.
1220         * genchecksum.c: Likewise.
1221         * genconfig.c: Likewise.
1222         * genflags.c: Likewise.
1223         * gengtype-parse.c: Likewise.
1224         * gengtype.c: Likewise.
1225         * gengtype.h: Likewise.
1226         * genmddeps.c: Likewise.
1227         * genmodes.c: Likewise.
1228         * genopinit.c: Likewise.
1229         * genpreds.c: Likewise.
1230         * gensupport.c: Likewise.
1231         * ggc-common.c: Likewise.
1232         * ggc-page.c: Likewise.
1233         * ggc-zone.c: Likewise.
1234         * ggc.h: Likewise.
1235         * gimple-iterator.c: Likewise.
1236         * gimple-low.c: Likewise.
1237         * gimple-pretty-print.c: Likewise.
1238         * gimple.c: Likewise.
1239         * gimple.def: Likewise.
1240         * gimple.h: Likewise.
1241         * gimplify.c: Likewise.
1242         * graphds.c: Likewise.
1243         * graphite-clast-to-gimple.c: Likewise.
1244         * gthr-nks.h: Likewise.
1245         * gthr-posix.c: Likewise.
1246         * gthr-posix.h: Likewise.
1247         * gthr-posix95.h: Likewise.
1248         * gthr-single.h: Likewise.
1249         * gthr-tpf.h: Likewise.
1250         * gthr-vxworks.h: Likewise.
1251         * gthr.h: Likewise.
1252         * haifa-sched.c: Likewise.
1253         * hard-reg-set.h: Likewise.
1254         * hooks.c: Likewise.
1255         * hooks.h: Likewise.
1256         * hosthooks.h: Likewise.
1257         * hwint.h: Likewise.
1258         * ifcvt.c: Likewise.
1259         * incpath.c: Likewise.
1260         * init-regs.c: Likewise.
1261         * integrate.c: Likewise.
1262         * ipa-cp.c: Likewise.
1263         * ipa-inline.c: Likewise.
1264         * ipa-prop.c: Likewise.
1265         * ipa-pure-const.c: Likewise.
1266         * ipa-reference.c: Likewise.
1267         * ipa-struct-reorg.c: Likewise.
1268         * ipa-struct-reorg.h: Likewise.
1269         * ipa-type-escape.c: Likewise.
1270         * ipa-type-escape.h: Likewise.
1271         * ipa-utils.c: Likewise.
1272         * ipa-utils.h: Likewise.
1273         * ipa.c: Likewise.
1274         * ira-build.c: Likewise.
1275         * ira-color.c: Likewise.
1276         * ira-conflicts.c: Likewise.
1277         * ira-costs.c: Likewise.
1278         * ira-emit.c: Likewise.
1279         * ira-int.h: Likewise.
1280         * ira-lives.c: Likewise.
1281         * ira.c: Likewise.
1282         * jump.c: Likewise.
1283         * lambda-code.c: Likewise.
1284         * lambda-mat.c: Likewise.
1285         * lambda-trans.c: Likewise.
1286         * lambda.h: Likewise.
1287         * langhooks.c: Likewise.
1288         * lcm.c: Likewise.
1289         * libgcov.c: Likewise.
1290         * lists.c: Likewise.
1291         * loop-doloop.c: Likewise.
1292         * loop-init.c: Likewise.
1293         * loop-invariant.c: Likewise.
1294         * loop-iv.c: Likewise.
1295         * loop-unroll.c: Likewise.
1296         * lower-subreg.c: Likewise.
1297         * lto-cgraph.c: Likewise.
1298         * lto-compress.c: Likewise.
1299         * lto-opts.c: Likewise.
1300         * lto-section-in.c: Likewise.
1301         * lto-section-out.c: Likewise.
1302         * lto-streamer-in.c: Likewise.
1303         * lto-streamer-out.c: Likewise.
1304         * lto-streamer.c: Likewise.
1305         * lto-streamer.h: Likewise.
1306         * lto-symtab.c: Likewise.
1307         * lto-wpa-fixup.c: Likewise.
1308         * matrix-reorg.c: Likewise.
1309         * mcf.c: Likewise.
1310         * mode-switching.c: Likewise.
1311         * modulo-sched.c: Likewise.
1312         * omega.c: Likewise.
1313         * omega.h: Likewise.
1314         * omp-low.c: Likewise.
1315         * optabs.c: Likewise.
1316         * optabs.h: Likewise.
1317         * opts-common.c: Likewise.
1318         * opts.c: Likewise.
1319         * params.def: Likewise.
1320         * params.h: Likewise.
1321         * passes.c: Likewise.
1322         * plugin.c: Likewise.
1323         * postreload-gcse.c: Likewise.
1324         * postreload.c: Likewise.
1325         * predict.c: Likewise.
1326         * predict.def: Likewise.
1327         * pretty-print.c: Likewise.
1328         * pretty-print.h: Likewise.
1329         * print-rtl.c: Likewise.
1330         * print-tree.c: Likewise.
1331         * profile.c: Likewise.
1332         * read-rtl.c: Likewise.
1333         * real.c: Likewise.
1334         * recog.c: Likewise.
1335         * reg-stack.c: Likewise.
1336         * regcprop.c: Likewise.
1337         * reginfo.c: Likewise.
1338         * regmove.c: Likewise.
1339         * regrename.c: Likewise.
1340         * regs.h: Likewise.
1341         * regstat.c: Likewise.
1342         * reload.c: Likewise.
1343         * reload1.c: Likewise.
1344         * resource.c: Likewise.
1345         * rtl.c: Likewise.
1346         * rtl.def: Likewise.
1347         * rtl.h: Likewise.
1348         * rtlanal.c: Likewise.
1349         * sbitmap.c: Likewise.
1350         * sched-deps.c: Likewise.
1351         * sched-ebb.c: Likewise.
1352         * sched-int.h: Likewise.
1353         * sched-rgn.c: Likewise.
1354         * sched-vis.c: Likewise.
1355         * sdbout.c: Likewise.
1356         * sel-sched-dump.c: Likewise.
1357         * sel-sched-dump.h: Likewise.
1358         * sel-sched-ir.c: Likewise.
1359         * sel-sched-ir.h: Likewise.
1360         * sel-sched.c: Likewise.
1361         * sel-sched.h: Likewise.
1362         * sese.c: Likewise.
1363         * sese.h: Likewise.
1364         * simplify-rtx.c: Likewise.
1365         * stack-ptr-mod.c: Likewise.
1366         * stmt.c: Likewise.
1367         * stor-layout.c: Likewise.
1368         * store-motion.c: Likewise.
1369         * stringpool.c: Likewise.
1370         * stub-objc.c: Likewise.
1371         * sync-builtins.def: Likewise.
1372         * target-def.h: Likewise.
1373         * target.h: Likewise.
1374         * targhooks.c: Likewise.
1375         * targhooks.h: Likewise.
1376         * timevar.c: Likewise.
1377         * tlink.c: Likewise.
1378         * toplev.c: Likewise.
1379         * toplev.h: Likewise.
1380         * tracer.c: Likewise.
1381         * tree-affine.c: Likewise.
1382         * tree-affine.h: Likewise.
1383         * tree-browser.def: Likewise.
1384         * tree-call-cdce.c: Likewise.
1385         * tree-cfg.c: Likewise.
1386         * tree-cfgcleanup.c: Likewise.
1387         * tree-chrec.c: Likewise.
1388         * tree-chrec.h: Likewise.
1389         * tree-complex.c: Likewise.
1390         * tree-data-ref.c: Likewise.
1391         * tree-data-ref.h: Likewise.
1392         * tree-dfa.c: Likewise.
1393         * tree-dump.c: Likewise.
1394         * tree-dump.h: Likewise.
1395         * tree-eh.c: Likewise.
1396         * tree-flow-inline.h: Likewise.
1397         * tree-flow.h: Likewise.
1398         * tree-if-conv.c: Likewise.
1399         * tree-inline.c: Likewise.
1400         * tree-into-ssa.c: Likewise.
1401         * tree-loop-distribution.c: Likewise.
1402         * tree-loop-linear.c: Likewise.
1403         * tree-mudflap.c: Likewise.
1404         * tree-nested.c: Likewise.
1405         * tree-nomudflap.c: Likewise.
1406         * tree-nrv.c: Likewise.
1407         * tree-object-size.c: Likewise.
1408         * tree-optimize.c: Likewise.
1409         * tree-outof-ssa.c: Likewise.
1410         * tree-parloops.c: Likewise.
1411         * tree-pass.h: Likewise.
1412         * tree-phinodes.c: Likewise.
1413         * tree-predcom.c: Likewise.
1414         * tree-pretty-print.c: Likewise.
1415         * tree-profile.c: Likewise.
1416         * tree-scalar-evolution.c: Likewise.
1417         * tree-ssa-address.c: Likewise.
1418         * tree-ssa-alias.c: Likewise.
1419         * tree-ssa-ccp.c: Likewise.
1420         * tree-ssa-coalesce.c: Likewise.
1421         * tree-ssa-copy.c: Likewise.
1422         * tree-ssa-copyrename.c: Likewise.
1423         * tree-ssa-dce.c: Likewise.
1424         * tree-ssa-dom.c: Likewise.
1425         * tree-ssa-dse.c: Likewise.
1426         * tree-ssa-forwprop.c: Likewise.
1427         * tree-ssa-ifcombine.c: Likewise.
1428         * tree-ssa-live.c: Likewise.
1429         * tree-ssa-live.h: Likewise.
1430         * tree-ssa-loop-ch.c: Likewise.
1431         * tree-ssa-loop-im.c: Likewise.
1432         * tree-ssa-loop-ivcanon.c: Likewise.
1433         * tree-ssa-loop-ivopts.c: Likewise.
1434         * tree-ssa-loop-manip.c: Likewise.
1435         * tree-ssa-loop-niter.c: Likewise.
1436         * tree-ssa-loop-prefetch.c: Likewise.
1437         * tree-ssa-loop-unswitch.c: Likewise.
1438         * tree-ssa-loop.c: Likewise.
1439         * tree-ssa-math-opts.c: Likewise.
1440         * tree-ssa-operands.c: Likewise.
1441         * tree-ssa-operands.h: Likewise.
1442         * tree-ssa-phiopt.c: Likewise.
1443         * tree-ssa-phiprop.c: Likewise.
1444         * tree-ssa-pre.c: Likewise.
1445         * tree-ssa-propagate.c: Likewise.
1446         * tree-ssa-reassoc.c: Likewise.
1447         * tree-ssa-sccvn.c: Likewise.
1448         * tree-ssa-sink.c: Likewise.
1449         * tree-ssa-structalias.c: Likewise.
1450         * tree-ssa-ter.c: Likewise.
1451         * tree-ssa-threadedge.c: Likewise.
1452         * tree-ssa-threadupdate.c: Likewise.
1453         * tree-ssa-uncprop.c: Likewise.
1454         * tree-ssa.c: Likewise.
1455         * tree-ssanames.c: Likewise.
1456         * tree-switch-conversion.c: Likewise.
1457         * tree-tailcall.c: Likewise.
1458         * tree-vect-data-refs.c: Likewise.
1459         * tree-vect-generic.c: Likewise.
1460         * tree-vect-loop-manip.c: Likewise.
1461         * tree-vect-loop.c: Likewise.
1462         * tree-vect-patterns.c: Likewise.
1463         * tree-vect-slp.c: Likewise.
1464         * tree-vect-stmts.c: Likewise.
1465         * tree-vectorizer.c: Likewise.
1466         * tree-vectorizer.h: Likewise.
1467         * tree-vrp.c: Likewise.
1468         * tree.c: Likewise.
1469         * tree.def: Likewise.
1470         * tree.h: Likewise.
1471         * treestruct.def: Likewise.
1472         * unwind-compat.c: Likewise.
1473         * unwind-dw2-fde-glibc.c: Likewise.
1474         * unwind-dw2.c: Likewise.
1475         * value-prof.c: Likewise.
1476         * value-prof.h: Likewise.
1477         * var-tracking.c: Likewise.
1478         * varasm.c: Likewise.
1479         * varpool.c: Likewise.
1480         * vec.c: Likewise.
1481         * vec.h: Likewise.
1482         * vmsdbgout.c: Likewise.
1483         * web.c: Likewise.
1484         * xcoffout.c: Likewise.
1485
1486 2009-11-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1487
1488         * pa.c (output_call): Only use sr4 for long interspace calls if
1489         call binds local and generating non PIC code.
1490         (attr_length_call): Adjust length calculation for above.
1491
1492 2009-11-25  Uros Bizjak  <ubizjak@gmail.com>
1493
1494         * config/i386/i386.md (plusminus_carry_mnemonic): New code attribute.
1495         (add<mode>3_carry): Change operand order of plus RTX.
1496         (*add<mode>3_carry): Ditto.
1497         (*addsi3_carry_zext): Ditto.
1498         (*add<dwi>3_doubleword): Update for changed operand order.
1499         (*negti2_1 splitter): Ditto.
1500         (*negdi2_1 splitter): Ditto.
1501         (<plusminus_insn><mode>3_carry): Macroize expander from
1502         {add,sub}<mode>3_carry patterns using plusminus code iterator.
1503         (*<plusminus_insn><mode>3_carry): Macroize insn from
1504         *{add,sub}<mode>3_carry patetrns using plusminus code iterator.
1505         (neg<mode>2): Macroize expander from neg{qi,hi,si,di,ti}2
1506         patterns using SDWIM mode iterator.
1507         (*neg<dwi>2_doubleword): New insn_and_split pattern.  Macroize
1508         pattern from *neg{di,ti}2_1 patterns and corresponding splitters
1509         using DWIH mode iterator.
1510         (*neg<mode>2_1): Macroize insn from neg{qi,hi,si,di}2_1 patterns
1511         using SWI mode iterator.
1512         (*neg<mode>2_cmpz): Ditto from neg{qi,hi,si,di}2_cmpz patterns.
1513         (one_cmpl<mode>2): Macroize expander from one_cmpl{qi,hi,si,di}2
1514         patterns using SWIM mode iterator.
1515         (*one_cmpl<mode>2_1): Macroize insn from one_cmpl{hi,si,di}2_1
1516         patterns using SWI248 mode iterator.
1517         (*one_cmpl<mode>2_2): Macroize insn from one_cmpl{qi,hi,si,di}2_2
1518         patterns using SWI mode iterator.
1519         (*one_cmpl<mode>2_2 splitter): Macroize splitter from
1520         one_cmpl{qi,hi,si,di}2_2 splitter patterns using SWI mode iterator.
1521
1522 2009-11-24  Michael Matz  <matz@suse.de>
1523
1524         * expr.c (set_storage_via_libcall): Fix build_call_expr call.
1525
1526 2009-11-24  David Binderman  <dcb314@hotmail.com>
1527
1528         * expr.c (store_field): Remove set but not used local variable
1529         width_mask.
1530         (expand_expr_real_2): Remove treeop2.
1531         * gcse.c (update_ld_motion_stores): Remove new_rtx.
1532         * haifa-sched.c (max_issue): Remove points.
1533         (sched_create_recovery_edges): Remove e.
1534         * ira-costs.c (setup_allocno_cover_class_and_costs): Remove mode.
1535
1536 2009-11-24  Nick Clifton  <nickc@redhat.com>
1537
1538         * config/v850/v850.c (function_arg): Fix handling of zero-length
1539         function arguments.
1540
1541 2009-11-24  Michael Matz  <matz@suse.de>
1542
1543         * tree.h (union tree_ann_d): Don't declare.
1544         (tree_base): Remove ann field.
1545         (struct var_ann_d): Declare forward.
1546         (tree_result_decl, tree_parm_decl, tree_var_decl): Add ann field.
1547         (DECL_VAR_ANN_PTR): New macro.
1548         * tree-dfa.c (create_var_ann): Rewrite in terms of above macro,
1549         accept only VAR, PARM or RESULT decls.
1550         (create_tree_common_ann): Remove.
1551         (remove_referenced_var): Use DECL_VAR_ANN_PTR.
1552         * tree-eh.c (lookup_expr_eh_lp): Remove.
1553         * tree-flow-inline.h (var_ann, get_var_ann): Rewrite in terms of
1554         DECL_VAR_ANN_PTR.
1555         (ann_type, tree_common_ann, get_tree_common_ann): Remove.
1556         * tree-flow.h (enum tree_ann_type): Remove.
1557         (struct tree_ann_common_d): Remove.
1558         (struct var_ann_d): Remove common field.
1559         (union tree_ann_d): Remove.
1560         (tree_ann_t, tree_ann_common_t): Remove typedefs.
1561         (tree_common_ann, get_tree_common_ann, ann_type,
1562         create_tree_common_ann, lookup_expr_eh_lp): Don't declare.
1563         * tree-ssa.c (delete_tree_ssa): Use DECL_VAR_ANN_PTR.
1564         * tree.c (copy_node_stat): Use DECL_VAR_ANN_PTR.
1565         * builtins.c (expand_builtin_memcpy): Use
1566         currently_expanding_gimple_stmt instead of tree annotation.
1567         (expand_builtin_memset_args): Ditto.
1568         * cfgexpand.c (currently_expanding_gimple_stmt): Add global variable.
1569         (expand_call_stmt): Don't set tree annotation.
1570         (expand_gimple_basic_block): Set currently_expanding_gimple_stmt.
1571         * expr.c (expand_expr_real): Don't call lookup_expr_eh_lp.
1572         * gimple.h (currently_expanding_gimple_stmt): Declare.
1573
1574 2009-11-24  Paolo Carlini  <paolo.carlini@oracle.com>
1575
1576         * dwarf2out.c (add_location_or_const_value_attribute): Remove
1577         useless NOTE_VAR_LOCATION_STATUS call.
1578         * cfgrtl.c (commit_one_edge_insertion): Remove useless loop, tidy.
1579
1580 2009-11-24  Rafael Avila de Espindola  <espindola@google.com>
1581
1582         * lto-wrapper.c (lto_wrapper_exit): Don't try to delete files if
1583         being called recursively.
1584
1585 2009-11-24  Basile Starynkevitch  <basile@starynkevitch.net>
1586
1587         * Makefile.in (PLUGIN_HEADERS): Added files: cppdefault.h flags.h
1588         $(MD5_H) params.def params.h prefix.h tree-inline.h.
1589
1590 2009-11-24  Paul Brook  <paul@codesourcery.com>
1591
1592         * gcc/config/arm/arm.c (arm_compute_save_reg0_reg12_mask): Fix comment
1593         typo.
1594
1595 2009-11-24  Julian Brown  <julian@codesourcery.com>
1596             Paul Brook  <paul@codesourcery.com>
1597
1598         * config/arm/arm.c (TARGET_DWARF_REGISTER_SPAN): Define.
1599         (arm_dwarf_register_span): New function.
1600         (arm_dbx_register_number): Add VFPv3 dwarf numbering.
1601
1602 2009-11-24  David Binderman  <dcb314@hotmail.com>
1603
1604         * cfgrtl.c (commit_one_edge_insertion): Remove set but not used
1605         local variable bb_note.
1606         * dominance.c (get_dominated_by): Likewise local var n.
1607         (output_file_names): Likewise local var idx.
1608         (add_location_or_const_value_attribute): Likewise local var status.
1609         * dwarf2out.c (gen_variable_die): Likewise local var field.
1610         * emit-rtl.c (no_line_numbers): Remove.
1611         (init_emit_once): Remove line_numbers parameter.
1612         * rtl.h (init_emit_once): Adjust prototype.
1613         * toplev.c (backend_init): Adjust init_emit_once call.
1614
1615 2009-11-24  Richard Guenther  <rguenther@suse.de>
1616
1617         PR tree-optimization/42142
1618         * tree-ssa-dce.c (mark_aliased_reaching_defs_necessary_1):
1619         Handle iv-dependent (non-)kills properly.
1620         (mark_aliased_reaching_defs_necessary): Pass the basic-block
1621         of the reference statement to mark_aliased_reaching_defs_necessary_1.
1622
1623 2009-11-24  Martin Jambor  <mjambor@suse.cz>
1624
1625         PR tree-optimization/42154
1626         * tree-sra.c (struct access): Added comments.
1627         (sra_modify_expr): Build references to the old aggregate with
1628         build_ref_for_offset instead of reusing access->expr.
1629         (load_assign_lhs_subreplacements): Likewise.
1630
1631 2009-11-24  Uros Bizjak  <ubizjak@gmail.com>
1632
1633         * config/i386/i386.md (add<mode>3_carry): Change insn pattern
1634         to expander.
1635         (sub<mode>3_carry): Ditto.
1636         (x86_mov<mode>cc_0_m1): Ditto.
1637         (*add<mode>3_carry): New insn pattern.  Use VOIDmode match_operator
1638         for ix86_carry_flag_operator operator predicate.
1639         (*sub<mode>3_carry): Ditto.
1640         (*x86_mov<mode>cc_0_m1): Ditto.
1641         (*addsi3_carry_zext): Use VOIDmode match_operator for
1642         ix86_carry_flag_operator operator predicate.
1643         (*subsi3_carry_zext): Ditto.
1644         (*x86_mov<mode>cc_0_m1_s): Ditto.
1645         (*x86_mov<mode>cc_0_m1_neg): Ditto.
1646         * config/i386/predocates.md (ix86_carry_flag_operator): Do not
1647         check operator sub-expressions for FLAGS_REG and const0_rtx.
1648         * config/i386/i386.c (*ix86_gen_sub3_carry): Update prototype.
1649         (ix86_expand_int_movcc): Update calls to gen_x86_mov{si,di}cc_0_m1.
1650         (ix86_expand_int_addcc): Update calls to
1651         gen_{add,sub}{qi,hi,si,di}3_carry.  Do not set mode of compare_op.
1652         (ix86_expand_strlensi_unroll_1): Update calls to ix86_gen_sub3_carry.
1653         Do not set mode of compare operation.
1654
1655 2009-11-23  Jan Hubicka  <jh@suse.cz>
1656
1657         PR middle-end/42151
1658         * ipa-inline.c (inline_transform): Avoid ICE when transform is called
1659         twice.
1660
1661 2009-11-23  Jan Hubicka  <jh@suse.cz>
1662
1663         * ipa-cp.c (ipcp_compute_node_scale): Work around completely
1664         wrong profile updates.
1665         * predict.c (counts_to_freqs): Be expected for ENTRY/EXIT block
1666         having largest frequency.
1667         * ira-live.c (ira_implicitly_set_insn_hard_regs): Silecne
1668         used uninitalized warning.
1669         * tree-optimize.c (execute_fixup_cfg): Rescale entry and exit block
1670         frequencies.
1671
1672 2009-11-23  Uros Bizjak  <ubizjak@gmail.com>
1673
1674         * config/alpha/alpha.md (*cmp_sadd_sidi): Use gen_lowpart instead
1675         of gen_rtx_REG to generate operand 5.
1676         (*cmp_ssub_sidi): Ditto.
1677
1678 2009-11-23  Richard Henderson  <rth@redhat.com>
1679
1680         * config/i386/i386.c (avx_vpermilp_parallel): Fix sign compare
1681         mismatch.
1682
1683 2009-11-23  Paul Brook  <paul@codesourcery.com>
1684
1685         * config/arm/arm.c (arm_compute_save_reg0_reg12_mask): Add special
1686         case for noreturn functions.
1687         (arm_compute_save_reg_mask): Remove special noreturn handling.
1688
1689 2009-11-23  Richard Guenther  <rguenther@suse.de>
1690
1691         * tree-dfa.c (get_ref_base_and_extent): Adjust maximum access
1692         size for DECL bases.
1693
1694 2009-11-22  Richard Henderson  <rth@redhat.com>
1695
1696         * i386.c (avx_vpermilp_parallel): New function.
1697         * i386-protos.h: Declare it.
1698         * predicates.md (avx_vpermilp_v8sf_operand, avx_vpermilp_v4df_operand,
1699         avx_vpermilp_v4sf_operand, avx_vpermilp_v2df_operand): New.
1700         * sse.md (AVXMODEFDP, AVXMODEFSP): New iterators.
1701         (ssescalarnum, ssedoublesizemode): Add AVX modes.
1702         (vpermilbits): Remove.
1703         (avx_vpermil<mode>): Change insns to expanders.
1704         (*avx_vpermil<mode>): New.  Use vec_select.
1705
1706 2009-11-22  Richard Earnshaw  <rearnsha@arm.com>
1707
1708         * opts.c (decode_options): Don't enable flag_schedule_insns
1709         when optimizing for size.
1710         * doc/invoke.texi: Document change.
1711
1712 2009-11-22  Uros Bizjak  <ubizjak@gmail.com>
1713
1714         PR target/42113
1715         * config/alpha/alpha.md (*cmp_sadd_si): Change mode
1716         of scratch register to SImode.
1717         (*cmp_sadd_sidi): Ditto.
1718         (*cmp_ssub_si): Ditto.
1719         (*cmp_ssub_sidi): Ditto.
1720
1721 2009-11-21  Ian Lance Taylor  <iant@google.com>
1722
1723         * Makefile.in (HOST_LIBS): Move higher in file.
1724         (LINKER, LINKER_FLAGS): If ENABLE_BUILD_WITH_CXX, but $(HOST_LIBS)
1725         is not empty, set to $(CC) and $(CFLAGS).
1726
1727 2009-11-22  Martin Jambor  <mjambor@suse.cz>
1728
1729         * tree-cfg.c (verify_types_in_gimple_reference): Error out on
1730         V_C_E of an SSA_NAME or an invariant if lvalue is required.
1731         (verify_gimple_call): Verify LHS also with with
1732         verify_types_in_gimple_reference.
1733
1734 2009-11-21  Martin Jambor  <mjambor@suse.cz>
1735
1736         PR middle-end/42025
1737         * tree-sra.c (access_precludes_ipa_sra_p): New function.
1738         (splice_param_accesses): Check all accesses by calling
1739         access_precludes_ipa_sra_p.
1740         (sra_ipa_modify_expr): Rename argument erite to dont_convert and do
1741         not convert types if it is true.
1742         (sra_ipa_modify_assign): Convert types in case of mismatch.
1743
1744 2009-11-21  Kaushik Phatak  <kaushik.phatak@kpitcummins.com>
1745
1746         * config/sh/sh.md (cmpeqsi_t-1): Use logical_operand predicate
1747         for operand 1.
1748
1749 2009-11-21  Adam Nemet  <adambnemet@gmail.com>
1750
1751         * config/mips/mips-protos.h (mulsidi3_gen_fn): New typedef.
1752         (mips_mulsidi3_gen_fn): Declare new function.
1753         * config/mips/mips.c (mips_mulsidi3_gen_fn): New function.
1754         * config/mips/mips.md (<u>mulsidi3): Change condition to use
1755         mips_mulsidi3_gen_fn.  Use mips_mulsidi3_gen_fn to generate the insn.
1756         (<u>mulsidi3_64bit): Don't match for ISA_HAS_DMUL3.
1757         (mulsidi3_64bit_dmul): New define_insn.
1758
1759 2009-11-21  Ben Elliston  <bje@au.ibm.com>
1760
1761         * gengtype-lex.l: Enable noinput flex option.
1762         (YY_NO_INPUT): Remove define.
1763
1764 2009-11-21  Alexandre Oliva  <aoliva@redhat.com>
1765
1766         * tree-ssa.c (find_released_ssa_name): Handle NULL wi.
1767         (insert_debug_temp_for_var_def): Handle degenerate PHI nodes.
1768         (insert_debug_temps_for_defs): Handle PHI nodes.
1769         * tree-ssa-dom.c (degenerate_phi_result): Don't crash on released
1770         SSA names.
1771
1772 2009-11-21  Alexandre Oliva  <aoliva@redhat.com>
1773
1774         * tree-ssa-pre.c (remove_dead_inserted_code): Don't release_defs
1775         after remove_phi_node.
1776
1777 2009-11-21  Alexandre Oliva  <aoliva@redhat.com>
1778
1779         PR tree-optimization/42078
1780         * gimple.h (gimple_replace_lhs): New declaration.
1781         * gimple.c (gimple_replace_lhs): New function.
1782         * tree-ssa-math-opts.c (execute_cse_reciprocals): Call it before
1783         modifying the call.
1784
1785 2009-11-20  Sebastian Pop  <sebastian.pop@amd.com>
1786
1787         * config/i386/sse.md (*xop_pmacsdql_mem): Don't call reg_mentioned_p.
1788         (xop_mulv2div2di3_low): Same.
1789         (*xop_pmacsdqh_mem): Same.
1790
1791 2009-11-20  Richard Henderson  <rth@redhat.com>
1792
1793         * config/i386/i386-builtin-types.awk: New file.
1794         * config/i386/i386-builtin-types.def: New file.
1795         * config/i386/t-i386: Use them to build i386-builtin-types.inc.
1796         * config/i386/i386.c: Include it.
1797         (ix86_builtin_type_tab, ix86_get_builtin_type): New.
1798         (ix86_builtin_func_type_tab, ix86_get_builtin_func_type): New.
1799         (struct builtin_isa): Remove GTY marker.  Replace tree type with
1800         ix86_builtin_func_type; add set_and_not_built_p.
1801         (def_builtin): Change type parameter to tcode; use
1802         ix86_get_builtin_func_type; update all callers.  Accept zero mask
1803         to mean the builtin is unconditionally available.
1804         (ix86_add_new_builtins): Use set_and_not_built_p instead of type
1805         being set to NULL.
1806         (enum ix86_special_builtin_type, enum ix86_builtin_type): Remove.
1807         Update some users to rationalized enumeration codes from new include.
1808         (enum multi_arg_type): Remove.  Replace all enumeration values
1809         with defines to new ix86_builtin_func_type.
1810         (ix86_init_mmx_sse_builtins): Don't build any types here.  Defer
1811         all type resolution to def_builtin.
1812         (ix86_init_builtin_types): Split out from ...
1813         (ix86_init_builtins): ... here.  Use ix86_get_builtin_func_type.
1814
1815 2009-11-20  Michael Meissner  <meissner@linux.vnet.ibm.com>
1816
1817         PR target/41787
1818         * config/rs6000/rs6000.c (struct machine_function): Revert
1819         2009-10-23 change to set VRSAVE to non-0 if we use VSX.
1820         (rs6000_expand_to_rtl_hook): Ditto.
1821         (rs6000_check_vector_mode): Ditto.
1822         (compute_vrsave_mask): Ditto.
1823
1824 2009-11-20  Paul Brook  <paul@codesourcery.com>
1825
1826         * doc/invoke.texi: Document ARM -mcpu=cortex-a5.
1827         * config/arm/arm-cores.def: Add cortex-a5.
1828         * config/arm/bpabi.h (BE8_LINK_SPEC): Add mcpu=cortex-a5.
1829         * config/arm/arm-tune.md: Regenerate.
1830
1831 2009-11-20 Olga Golovanevsky <olga@il.ibm.com>
1832
1833         PR middle-end/39960
1834         * ipa-struct-reorg.c (find_pos_in_stmt): New parameter.
1835         (ref_pos): New field in structure.
1836         (insert_new_var_in_stmt): New function.
1837
1838
1839 2009-11-20  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1840
1841         * config.gcc (alpha*-dec-osf[45]*): Set use_gcc_stdint.
1842         * config/alpha/osf.h (SIG_ATOMIC_TYPE): Define.
1843         (INT8_TYPE, INT16_TYPE, INT32_TYPE, INT64_TYPE): Define.
1844         (UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE): Define.
1845         (INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
1846         INT_LEAST64_TYPE): Define.
1847         (UINT_LEAST8_TYPE, UINT_LEAST16_TYPE, UINT_LEAST32_TYPE,
1848         UINT_LEAST64_TYPE): Define.
1849         (INT_FAST8_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE,
1850         INT_FAST64_TYPE): Define.
1851         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
1852         UINT_FAST64_TYPE): Define.
1853         (INTPTR_TYPE, UINTPTR_TYPE): Define.
1854
1855 2009-11-20  Julian Brown  <julian@codesourcery.com>
1856
1857         * config/arm/arm.h (ASM_OUTPUT_REG_PUSH): Handle STATIC_CHAIN_REGNUM
1858         specially for Thumb-1.
1859         (ASM_OUTPUT_REG_POP): Likewise.
1860
1861 2009-11-19  Jason Merrill  <jason@redhat.com>
1862
1863         * dwarf2out.c (get_context_die): Take TYPE_MAIN_VARIANT.
1864
1865 2009-11-19  Basile Starynkevitch  <basile@starynkevitch.net>
1866             Rafael Avila de Espindola  <espindola@google.com>
1867
1868         * doc/plugins.texi (Plugin initialization): Added advices for
1869         retrieving the version of GCC at plugin compilation and loading times.
1870
1871 2009-11-19  Basile Starynkevitch  <basile@starynkevitch.net>
1872
1873         * plugin.c (FMT_FOR_PLUGIN_EVENT): added definition.
1874         (dump_active_plugins): output to file everything. Use
1875         internationalized dump & FMT_FOR_PLUGIN_EVENT.
1876
1877 2009-11-19  Richard Guenther  <rguenther@suse.de>
1878
1879         * gimple.c (canonicalize_cond_expr_cond): Strip conversions
1880         around truth-valued expressions.
1881         * tree.c (free_lang_data): Untangle check for LTO frontend.
1882
1883 2009-11-19  Jakub Jelinek  <jakub@redhat.com>
1884
1885         * tree.c (need_assembler_name_p): Use cgraph_get_node instead
1886         of cgraph_node_for_decl.
1887         * cgraph.h (cgraph_node_for_decl): Remove prototype.
1888         * cgraph.c (cgraph_node_for_decl): Remove.
1889         (cgraph_get_node): Just return NULL if !cgraph_hash.
1890
1891 2009-11-19  Paul Brook  <paul@codesourcery.com>
1892
1893         * config.gcc: Add new ARM --with-fpu options.
1894         * doc/invoke.texi: Docuent ARM -mfpu=fpv4-sp-d16.
1895         * config/arm/arm.c (all_fpus): Add fpv4-sp-d16.
1896
1897 2009-11-18  Richard Guenther  <rguenther@suse.de>
1898
1899         * gimple.h (union gimple_statement_d): Add gsmembase member.
1900         (gimple_vuse_op): Use gsmembase for access.
1901         (gimple_vdef_op): Likewise.
1902         (gimple_vuse): Likewise.
1903         (gimple_vdef): Likewise.
1904         (gimple_vuse_ptr): Likewise.
1905         (gimple_vdef_ptr): Likewise.
1906         (gimple_set_vuse): Likewise.
1907         (gimple_set_vdef): Likewise.
1908         * gsstruct.def (GSS_WITH_MEM_OPS_BASE): Add.
1909
1910 2009-11-18  Daniel Jacobowitz  <dan@codesourcery.com>
1911
1912         * doc/arm-neon-intrinsics.texi: Regenerated.
1913
1914 2009-11-18  Daniel Jacobowitz  <dan@codesourcery.com>
1915
1916         * config/arm/neon-docgen.ml (analyze_shape_elt): Handle alternatives.
1917
1918 2009-11-18  Paul Brook  <paul@codesourcery.com>
1919             Daniel Jacobowitz  <dan@codesourcery.com>
1920
1921         * config/arm/arm.c (FL_ARCH7EM, FL_FOR_ARCH7EM): Define.
1922         (arm_arch7em): New variable.
1923         (all_architectures): Add armv7e-m.
1924         (arm_override_options): Set arm_arch7em.
1925         * config/arm/arm.h (TARGET_DSP_MULTIPLY, TARGET_INT_SIMD):
1926         Include arm_arch7em.
1927         (arm_arch7em): Declare.
1928
1929 2009-11-18  Richard Guenther  <rguenther@suse.de>
1930
1931         * lto-streamer-in.c (input_gimple_stmt): Assert that we find
1932         a valid field decl if checking is enabled.
1933
1934 2009-11-18  Martin Jambor  <mjambor@suse.cz>
1935
1936         * ipa-prop.h (struct ipa_param_call_note): New field lto_stmt_uid.
1937         (lto_ipa_fixup_call_notes): Declare.
1938         * ipa-prop.c (ipa_note_param_call): Store gimple uid.
1939         (update_call_notes_after_inlining): Copy call stmt uid to the new
1940         edge.
1941         (ipa_write_param_call_note): New function.
1942         (ipa_read_param_call_note): New function
1943         (ipa_write_node_info): Write also param call notes.  Removed a bogus
1944         comment, reformatted to fit 80 columns.
1945         (ipa_read_node_info): Read also param call notes. Removed a bogus
1946         comment.  Remove ipa_edge_args_vector growth.
1947         (lto_ipa_fixup_call_notes): New function.
1948         * ipa-cp.c (pass_ipa_cp): Add stmt_fixup hook.
1949         * ipa-inline.c (cgraph_mark_inline_edge): Perform indirect
1950         inlining regardless of flag_wpa.
1951         (cgraph_decide_inlining_of_small_functions): Likewise.
1952         (cgraph_decide_inlining): Likewise.
1953         (inline_read_summary): Likewise.
1954
1955 2009-11-18  Jan Hubicka  <jh@suse.cz>
1956
1957         * predict.c (compute_function_frequency): Export.
1958         * predict.h (compute_function_frequency): Declare.
1959         * tree-optimize.c (execute_fixup_cfg): Rescale frequencies.
1960
1961 2009-11-18  Martin Jambor  <mjambor@suse.cz>
1962
1963         * passes.c (ipa_write_summaries): Call renumber_gimple_stmt_uids
1964         on all nodes we write summaries for.
1965
1966 2009-11-18  Shujing Zhao  <pearly.zhao@oracle.com>
1967
1968         PR middle-end/22201
1969         * params.def (PARAM_INLINE_UNIT_GROWTH, PARAM_IPCP_UNIT_GROWTH)
1970         (PARAM_EARLY_INLINING_INSNS, PARAM_IRA_MAX_LOOPS_NUM)
1971         (PARAM_IRA_MAX_CONFLICT_TABLE_SIZE)
1972         (PARAM_LOOP_INVARIANT_MAX_BBS_IN_LOOP)
1973         (PARAM_MIN_INSN_TO_PREFETCH_RATIO)
1974         (PARAM_PREFETCH_MIN_INSN_TO_MEM_RATIO)
1975         (PARAM_IPA_SRA_PTR_GROWTH_FACTOR): Uppercase the first letter of the
1976         description string.
1977
1978 2009-11-18  Jakub Jelinek  <jakub@redhat.com>
1979
1980         * dwarf2out.c (loc_list_from_tree): Don't call rtl_for_decl_location
1981         unnecessarily.
1982         (rtl_for_decl_location): Try harder to get a rtl for TREE_STATIC vars.
1983
1984         PR c++/3187
1985         * cgraph.h (struct cgraph_node): Add same_body and same_body_alias
1986         fields.
1987         (cgraph_same_body_alias, cgraph_remove_same_body_alias): New
1988         prototypes.
1989         * cgraphunit.c (cgraph_expand_function, cgraph_emit_thunks,
1990         cgraph_materialize_all_clones): Handle same_body aliases.
1991         * cgraph.c (cgraph_allocate_node): New function.
1992         (cgraph_create_node): Use it.
1993         (cgraph_node_for_decl, cgraph_node, cgraph_get_node,
1994         cgraph_node_for_asm, cgraph_remove_node): Handle same_body aliases.
1995         (cgraph_same_body_alias, cgraph_remove_same_body_alias): New
1996         functions.
1997         * lto-cgraph.c (lto_output_node): Stream out same_body aliases.
1998         (input_node): Stream in same_body aliases.
1999         * lto-symtab.c (lto_cgraph_replace_node): Clear node pointers
2000         for same_body aliases.
2001         (lto_symtab_merge_cgraph_nodes_1): Handle same_body aliases.
2002
2003 2009-11-18  Iain Sandoe <iain.sandoe@sandoe-acoustics.co.uk>
2004
2005         PR other/39888
2006         * config/darwin.h: Use the extension stub libraries to access
2007         current libgcc_s features.
2008
2009 2009-11-18  Alexandre Oliva  <aoliva@redhat.com>
2010
2011         PR debug/41926
2012         * tree-vect-loop.c (vect_loop_kill_debug_uses): New.
2013         (vect_transform_loop): Call it.
2014
2015 2009-11-18  Alexandre Oliva  <aoliva@redhat.com>
2016
2017         * tree-ssa.c (insert_debug_temp_for_var_def): Fix handling of
2018         released SSA names.
2019
2020 2009-11-18  Alexandre Oliva  <aoliva@redhat.com>
2021
2022         PR debug/41888
2023         PR debug/41886
2024         * graphite-scop-detection.c (stmt_simple_for_scop_p): Debug stmts
2025         are ok.
2026         * graphite-sese-to-poly.c (graphite_stmt_p): Likewise.
2027         (try_generate_gimple_bb): Skip debug stmts when finding data refs.
2028         * sese.c (sese_build_liveouts_bb): Skip debug stmts.
2029         (sese_bad_liveouts_use): New.
2030         (sese_reset_debug_liveouts_bb): New.
2031         (sese_build_liveouts): Use it.
2032         (rename_variables_in_stmt): Reset debug stmts rather than creating
2033         new vars for them.
2034         (expand_scalar_variable_stmt): Likewise.
2035
2036 2009-11-18  Alexandre Oliva  <aoliva@redhat.com>
2037
2038         * df-scan.c (df_ref_create): Don't mark BB as dirty on debug insns.
2039         (df_ref_remove): Likewise.
2040
2041 2009-11-17  Jan Hubicka  <jh@suse.cz>
2042
2043         * ipa-struct-reorg.c (update_cgraph_with_malloc_call): Fix profile
2044         info.
2045
2046 2009-11-17  Eric Botcazou  <ebotcazou@adacore.com>
2047
2048         * toplev.c (process_options): Remove dead code.
2049         * doc/invoke.texi (-frename-registers): Mention -fpeel-loops.
2050
2051 2009-11-17  Rafael Avila de Espindola  <espindola@google.com>
2052
2053         * lto-symtab.c (lto_symtab_resolve_symbols): Always initialize the
2054         nodes.
2055
2056 2009-11-17  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2057
2058         PR tree-optimization/41857
2059         * tree-ssa-address.c (move_hint_to_base): Use void pointer to
2060         TYPE's address space instead of pointer to TYPE.
2061
2062 2009-11-17  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2063
2064         * reload.c (find_reloads_address): Fix typo.
2065
2066 2009-11-17  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2067
2068         * config/spu/spu.c (get_pic_reg): Use LAST_ARG_REGNUM as PIC
2069         registers in leaf functions if possible.
2070
2071 2009-11-17  Maxim Kuvyrkov  <maxim@codesourcery.com>
2072
2073         * config/m68k/m68k-devices.def: Add MCF5441x family.
2074
2075 2009-11-17  Jan Hubicka  <jh@suse.cz>
2076
2077         * cgraph.c (cgraph_update_edges_for_call_stmt_node): Do not access
2078         removed node.
2079         * cgraphunit.c (verify_cgraph_node): Verify frequencies for match.
2080
2081 2009-11-17  Uros Bizjak  <ubizjak@gmail.com>
2082
2083         * config/i386/predicates.md (x86_64_szext_general_operand): Do not
2084         nest ior expressions.
2085         (x86_64_szext_nonmemory_operand): Ditto.
2086         (call_insn_operand): Ditto.
2087
2088 2009-11-16  Alexandre Oliva  <aoliva@redhat.com>
2089
2090         * stmt.c (expand_asm_stmt): Get locus from stmt.
2091
2092 2009-11-16  Alexandre Oliva  <aoliva@redhat.com>
2093
2094         * tree-cfg.c (gimple_redirect_edge_and_branch) <case GIMPLE_ASM>:
2095         Create the decl label for the new dest block on demand.  Require
2096         a fallthrough edge if no asm labels were redirected.
2097
2098 2009-11-16  Uros Bizjak  <ubizjak@gmail.com>
2099
2100         * config/i386/i386.md (cbranchsi4): Use nonimmediate_operand for
2101         operand 1 predicate.
2102         (cstoresi4): Ditto for operand 2.
2103         (cbranch<mode>4): Macroize expander from cbranch{qi,hi,si,di,ti}4
2104         patterns using SDWIM mode iterator.
2105         (cstore<mode>4): Macroize expander from cstore{qi,hi,si,di}4 patterns
2106         using SWIM mode iterator.
2107         (cmpdi_1): Rename from cmpdi_1_rex64.
2108         (cmp<mode>_1): Macroize expander from cmp{si,di}_1 patterns using
2109         SWI48 mode iterator.
2110         (*cmp<mode>_1): Macroize insn from *cmp{qi,hi,si,di}_1_insn patterns
2111         using SWI mode iterator.
2112         (*cmp<mode>_ccno_1): Ditto from *cmp{qi,hi,si,di}_ccno_1.
2113         (*cmp<mode>_minus_1): Ditto from *cmp{qi,hi,si,di}_minus_1.
2114         (*cmpqi_ext_3_insn): Make private.
2115         (*cmpqi_ext_3_insn_rex64): Make private.
2116         (cmpstrnsi): Update for renamed cmpdi_1_rex64.
2117         * config/i386/predicates.md (cmpsi_operand): Remove.
2118
2119 2009-11-16  Paul Brook  <paul@codesourcery.com>
2120
2121         * doc/invoke.texi: Document ARM VFPv4 based FPUs.
2122         * config/arm/arm.c (all_fpus): Add VFPv4 entries.
2123
2124 2009-11-14  Jan Hubicka  <jh@suse.cz>
2125
2126         * cgraphbuild.c (compute_call_stmt_bb_frequency): Use proper
2127         ENTRY_BLOCK_PTR.
2128         * cgraph.c (cgraph_clone_edge): Avoid freq_scale 0 to completely
2129         zero out all callees.
2130         * cgraphunit.c (verify_cgraph_node): Verify cgraph nodes for
2131         frequency and count match.
2132         * ipa-inline.c (update_noncloned_frequencies): New function.
2133         (cgraph_clone_inlined_nodes): Use it.
2134         * tree-inline.c (copy_bb): Fix frequency scaling; output
2135         diagnostic on frequency mismatches to dump file.
2136         (initialize_cfun): Do not scale frequency; fix count scaling;
2137         initialize entry and exit block frequencies; copy profile info.
2138         (copy_cfg_body): Use frequency_scale as argument; fix count scaling.
2139         (copy_body): Use frequency_scale as argument.
2140         (expand_call_inline): Compute frequency scale and output diagnostic
2141         to dump file.
2142         (delete_unreachable_blocks_update_callgrah): Remove checking that
2143         has to be done after edge redirection.
2144         (tree_function_versioning): Update initialize_cfun and copy_body call.
2145
2146 2009-11-14  Jan Hubicka  <jh@suse.cz>
2147
2148         * cgraph.c (cgraph_release_function_body): Update use of
2149         ipa_transforms_to_apply.
2150         (cgraph_remove_node): Remove ipa_transforms_to_apply.
2151         * cgraph.h (struct cgraph_node): Add ipa_transforms_to_apply.
2152         * cgraphunit.c (save_inline_function_body): Clear ipa_transforms for
2153         copied body.
2154         (cgraph_materialize_clone): Remove original if dead.
2155         * lto-streamer-in.c (lto_read_body): Remove FIXME and
2156         ipa_transforms_to_apply hack.
2157         * function.h (struct function): Add ipa_transforms_to_apply.
2158         * ipa.c (cgraph_remove_unreachable_nodes): Handle dead clone originals.
2159         * tree-inline.c (copy_bb): Update sanity check.
2160         (initialize_cfun): Do not copy ipa_transforms_to_apply.
2161         (expand_call_inline): remove dead clone originals.
2162         (tree_function_versioning): Merge transformation queues.
2163         * passes.c (add_ipa_transform_pass): Remove.
2164         (execute_one_ipa_transform_pass): Update ipa_transforms_to_apply
2165         tracking.
2166         (execute_all_ipa_transforms): Update.
2167         (execute_one_pass): Update.
2168
2169 2009-11-14  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
2170
2171         PR target/21078, 21080
2172         * config/avr/avr.c (avr_return_addr_rtx): New function for
2173         builtin_return_address.
2174         (expand_prologue): Calculate stack usage.
2175         (avr_asm_function_end_prologue): Output stack size and offset label.
2176         * config/avr/avr.h (RETURN_ADDR_RTX): Replace.
2177         (machine_function): Add stack_usage.
2178         * config/avr/avr-protos.h (avr_return_addr_rtx): New function.
2179
2180 2009-11-14  Anatoly Sokolov  <aesok@post.ru>
2181
2182         * config/iq2000/iq2000.c (iq2000_function_value): Make static, add
2183         new 'outgoing' argument.
2184         (iq2000_libcall_value, iq2000_function_value_regno_p): New functions.
2185         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
2186         * config/iq2000/iq2000.h (FUNCTION_VALUE_REGNO_P): Redefine, use
2187         iq2000_function_value_regno_p.
2188         (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
2189         * config/iq2000/iq2000-protos.h (iq2000_function_value_regno_p):
2190         Declare.
2191
2192 2009-11-14  Richard Earnshaw  <rearnsha@arm.com>
2193
2194         PR target/42031
2195         * arm.md (adddi_sesidi_di): Place tied contraint first.
2196         (adddi_zesidi_di, subdi_di_zesidi, subdi_di_sesidi): Likewise
2197         (subdi_zesidi_di, subdi_sesidi_di): Likewise.
2198         (mulsi3_compare0, mulsi_compare0_scratch): Likewise.
2199         (mulsi3addsi, mulsi3addsi_compare0): Likewise.
2200         (mulsi3addsi_compare0_scratch, smulsi3_highpart_nov6): Likewise.
2201         (umulsi3_highpart_nov6, anddi_zesidi_di, anddi_sesdi_di): Likewise.
2202         (anddi_notdi_di, iordi_sesidi_di, xordi_sesidi_di): Likewise.
2203         (andsi_iorsi3_notsi, arm_ashldi3_1bit, arm_ashrdi3_1_bit): Likewise.
2204         (arm_lshrdi3_1bit, one_cmpldi2): Likewise.
2205
2206 2009-11-14  Uros Bizjak  <ubizjak@gmail.com>
2207
2208         * config/i386/predicates.md (call_register_no_elim_operand):
2209         New predicate.  Reject stack register as valid call operand
2210         for 32bit targets.
2211         (call_insn_operand): Use call_register_no_elim_operand.
2212
2213 2009-11-13  Richard Henderson  <rth@redhat.com>
2214
2215         * function.c (stack_protect_prologue): Don't bypass expand_expr
2216         for stack_protect_guard and guard_decl.
2217         (stack_protect_epilogue): Likewise.
2218
2219 2009-11-13  Jan Hubicka  <jh@suse.cz>
2220
2221         * ipa.c (function_and_variable_visibility): Clear COMDAT on functions
2222         when to PUBLIC is set.
2223
2224 2009-11-13  Jakub Jelinek  <jakub@redhat.com>
2225
2226         PR middle-end/42029
2227         * gimplify.c (gimplify_omp_atomic): Set DECL_GIMPLE_REG_P on
2228         tmp_load if needed.
2229
2230 2009-11-13  Uros Bizjak  <ubizjak@gmail.com>
2231
2232         PR target/41900
2233         * config/i386/i386.md (*call_pop_1, *call_1, *call_value_pop_1,
2234         *call_value_1): Use "lsm" as operand 1 constraint.
2235         * config/i386/predicates.md (call_insn_operand): Depend on
2236         index_register_operand to avoid %esp register.
2237
2238 2009-11-13  Uros Bizjak  <ubizjak@gmail.com>
2239
2240         Revert:
2241         2009-11-03  Uros Bizjak  <ubizjak@gmail.com>
2242
2243         PR target/41900
2244         * config/i386/i386.h (ix86_arch_indices) <X86_ARCH_CALL_ESP>: New.
2245         (TARGET_CALL_ESP): New define.
2246         * config/i386/i386.c (initial_ix86_tune_features): Initialize
2247         X86_ARCH_CALL_ESP.
2248         * config/i386/i386.md (*call_pop_1_esp, *call_1_esp,
2249         *call_value_pop_1_esp, *call_value_1_esp): Rename from *call_pop_1,
2250         *call_1, *call_value_pop_1 and *call_value_1.  Depend on
2251         TARGET_CALL_ESP.
2252         (*call_pop_1, *call_1, *call_value_pop_1, *call_value_1):
2253         New patterns, use "lsm" as operand 1 constraint.
2254         * config/i386/predicates.md (call_insn_operand): Depend on
2255         index_register_operand for !TARGET_CALL_ESP to avoid %esp register.
2256
2257 2009-11-13  Jason Merrill  <jason@redhat.com>
2258
2259         PR debug/26965
2260         * dwarf2out.c (gen_variable_die): Don't worry about DECL_COMDAT.
2261         Don't emit a second declaration at any scope.
2262
2263 2009-11-13  Andrey Belevantsev  <abel@ispras.ru>
2264
2265         PR rtl-optimization/41697
2266         * sel-sched-ir.c (fallthru_bb_of_jump): Bail out when a block with
2267         a conditional jump has a single successor.
2268
2269 2009-11-13  Andrey Belevantsev  <abel@ispras.ru>
2270
2271         * sched-deps.c (init_deps): New parameter lazy_reg_last.  Don't
2272         allocate reg_last when in case lazy_reg_last is true.
2273         (init_deps_reg_last): New.
2274         (free_deps): When max_reg is 0, this context is already freed.
2275         * sched-int.h (init_deps_reg_last): Export.
2276         (init_deps): Update prototype.
2277         * sched-ebb.c (schedule_ebb): Update the call to init_deps.
2278         * sched-rgn.c (sched_rgn_compute_dependencies): Likewise.
2279         * ddg.c (build_intra_loop_deps): Likewise.
2280         * sel-sched-ir.c (copy_deps_context, create_deps_context,
2281         reset_deps_context, deps_init_id): Likewise.
2282         (init_first_time_insn_data): Lazy allocate INSN_DEPS_CONTEXT.
2283         (free_data_for_scheduled_insn): New, break down from ...
2284         (free_first_time_insn_data): ... here.
2285         (has_dependence_p): Allocate reg_last now, when it is needed.
2286         (extend_insn_data): When maximal LUID is big enough, allocate
2287         per-insn data in smaller chunks.
2288         * sel-sched-ir.h (free_data_for_scheduled_insn): Export.
2289         * sel-sched.c (update_seqnos_and_stage): Free INSN_DEPS_CONTEXT
2290         in scheduled insn.
2291
2292 2009-11-13  Uros Bizjak  <ubizjak@gmail.com>
2293
2294         * config/i386/i386.md (call_value): Fix comment.
2295         (sibcall_value): Ditto.
2296
2297 2009-11-13  Eric Botcazou  <ebotcazou@adacore.com>
2298
2299         * config/i386/linux-unwind.h (x86_frob_update_context): New function.
2300         (MD_FROB_UPDATE_CONTEXT): Define.
2301
2302 2009-11-12  Eric Botcazou  <ebotcazou@adacore.com>
2303             Laurent GUERBY  <laurent@guerby.net>
2304
2305         * config/sparc/linux-unwind.h (sparc64_fallback_frame_state): Tidy.
2306         Do not schedule an %sp restore.  Compensate for RETURN_ADDR_OFFSET.
2307         (sparc_fallback_frame_state): Tidy.  Compensate for RETURN_ADDR_OFFSET.
2308
2309 2009-11-12  Jan Hubicka  <jh@suse.cz>
2310
2311         * ipa.c (function_and_variable_visibility): Fix my accidentail commit
2312         and clear DECL_COMMON on localized declarations.
2313
2314 2009-11-12  Bernd Schmidt  <bernd.schmidt@analog.com>
2315
2316         PR rtl-opt/38582
2317         * regrename.c (struct du_head): New structure; some elements moved
2318         from...
2319         (struct du_chain): ... this one.
2320         (open_chains, closed_chains): Now of type struct du_head *.
2321         (do_replace): Accept du_head argument, not du_chain.  All callers
2322         changed.  Modified code to match new data structures.
2323         (build_def_use): Return a list of du_head structures.  Modified code
2324         to match new data structures.
2325         (dump_def_use_chain): Accept du_head argument, not du_chain.  All
2326         callers changed.  Modified code to match new data structures.
2327         (merge_overlapping_regs): Accept du_head argument, not du_chain.  All
2328         callers changed.  Modified code to match new data structures.
2329         (scan_rtx_reg): Change type of this_regno and this_nregs to unsigned.
2330         Allocate a du_head structure as well as a du_chain when creating a
2331         new chain.  Modified other code to match new data structures.
2332
2333 2009-11-12  Jan Hubicka  <jh@suse.cz>
2334
2335         * cgraph.h (varpool_node_name): Declare.
2336         * cgraphunit.c (process_function_and_variable_attributes): Set
2337         force_output flag on used variables.
2338         * ipa.c (function_and_variable_visibility): Dump externally visible
2339         and needed variables.
2340         * varpool.c (varpool_node_name): Export.
2341         (decide_is_variable_needed): Check COMDAT for externally visible vars;
2342         ignore needed flag.
2343
2344 2009-11-12  Uros Bizjak  <ubizjak@gmail.com>
2345
2346         PR middle-end/41930
2347         * simplify-rtx.c (simplify_replace_fn_rtx) <case 'e'>: Skip
2348         processing if XEXP (x, i) is NULL.
2349
2350 2009-11-12  Jan Hubicka  <jh@suse.cz>
2351
2352         * ipa.c (function_and_variable_visibility): Verify that WEAK || COMMON
2353         imply PUBLIC || EXTERNAL.
2354
2355 2009-11-11  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
2356
2357         PR middle-end/41440
2358         * cfgexpand.c (expand_gimple_basic_block): Append NOP to a fallthru,
2359         single successor block, ending with jump created by RTL expander.
2360
2361 2009-11-11  Jan Hubicka  <jh@suse.cz>
2362
2363         PR middle-end/41729
2364         * ipa.c (function_and_variable_visibility): Do not privatize COMDAT
2365         and WEAK variables at -fwhole-program.
2366
2367         PR middle-end/41735
2368         * ipa.c (whole_program_function_and_variable_visility): COMDAT
2369         functions/variables are not needed even if they are externally visible.
2370
2371 2009-11-11  Jan Hubicka  <jh@suse.cz>
2372
2373         (patch by Richard Guenther)
2374         * lto-streamer-out.c (output_function): Output head of argument list
2375         earlier.
2376         * lto-streamer-in.c (input_function): Re-map arguments into merged
2377         declaration.
2378
2379 2009-11-11  Jan Hubicka  <jh@suse.cz>
2380
2381         * lto-cgraph.c: Include gcov-io.h
2382         (output_profile_summary): New function.
2383         (output_cgraph): Use it.
2384         (input_profile_summary): New function.
2385         (input_cgraph): Use it.
2386         * coverage.c (build_ctr_info_value): Use varpool; initalize
2387         DECL_ASSEMBLER_NAME.
2388         (create_coverage): Likewise.
2389         * tree-profile.c (tree_init_ic_make_global_vars): Likewise.
2390         (tree_init_edge_profiler): Likewise.
2391         * Makefile.in (lto-cgraph.o): Add dependency on gcov-io.h.
2392
2393 2009-11-11  Kai Tietz  <kai.tietz@onevision.com>
2394
2395         * config/i386/cygming.h (HANDLE_PRAGMA_PUSH_POP_MACRO): Removed.
2396         * c-pragma.c (def_pragma_macro_value): Likewise.
2397         (def_pragma_macro): Likewise.
2398         (pushed_macro_table): Likewise.
2399         (HANDLE_PRAGMA_PUSH_POP_MACRO): Remove guarded code.
2400         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): Removed.
2401
2402 2009-11-11  Basile Starynkevitch  <basile@starynkevitch.net>
2403
2404         * doc/plugins.texi (Registering custom attributes): section
2405         renamed as (Registering custom attributes or pragmas).
2406         Mentions custom attributes & pragmas, and c_register_pragma, with
2407         a small example.
2408         * doc/cpp.texi (Pragmas): Mentions that plugins can provide their
2409         pragmas.
2410         * doc/extend.texi (Function Attributes): Mentions that plugin can
2411         provide their attributes.
2412
2413 2009-11-11  Jon Beniston  <jon@beniston.com>
2414
2415         * config.gcc: Add lm32 elf and uclinux targets.
2416         * config/lm32: New directory.
2417         * config/lm32/lm32.c: New file.
2418         * config/lm32/lm32.h: New file.
2419         * config/lm32/lm32.md: New file.
2420         * config/lm32/lm32.opt: New file.
2421         * config/lm32/lm32-protos.h: New file.
2422         * config/lm32/constraints.md: New file.
2423         * config/lm32/predicates.md: New file.
2424         * config/lm32/sfp-machine.h: New file.
2425         * config/lm32/t-fprules-softfp: New file.
2426         * config/lm32/uclinux-elf.h: New file.
2427         * doc/invoke.texi: Document lm32 options.
2428         * doc/contrib.texi: Document lm32 porter.
2429         * doc/install.texi: Document lm32 targets.
2430
2431 2009-11-11  Martin Jambor  <mjambor@suse.cz>
2432
2433         PR lto/41932
2434         * ipa-prop.c (ipa_update_after_lto_read): Call
2435         ipa_check_create_node_params and ipa_check_create_edge_args.  Also
2436         call ipa_initialize_node_params instead of ipa_populate_param_decls.
2437
2438 2009-11-11  Daniel Jacobowitz  <dan@codesourcery.com>
2439
2440         * config/arm/arm.c (neon_vdup_constant, neon_make_constant): New.
2441         (neon_expand_vector_init): Use them.  Also handle non-constant
2442         vectors with identical elements and vectors with only one
2443         non-constant element.
2444         (arm_print_operand): Handle 'y' modifier.
2445         * config/arm/arm-protos.h (neon_make_constant): Declare.
2446         * config/arm/neon.md (neon_vdup_n<mode>): Split into two
2447         patterns.  Use VX instead of VDQW for the first one.  Allow
2448         a VFP alternative and V32 modes for the second one.
2449         * config/arm/neon.ml (shape_elt): Add Alternatives.
2450         (ops): Use Alternatives for vdup lane instructions.
2451         * config/arm/neon-testgen.ml (analyze_shape): Handle Alternatives.
2452         * config/arm/vec-common.md (mov<mode>): Use neon_make_constant.
2453
2454 2009-11-11  Daniel Jacobowitz  <dan@codesourcery.com>
2455
2456         * config/arm/neon.md (*neon_mov<mode>): Reject two non-register
2457         operands.
2458         (movti, mov<mode>): Call force_reg on one operand if required.
2459         * config/arm/vec-common.md (mov<mode>): Likewise.
2460
2461 2009-11-11  Daniel Jacobowitz  <dan@codesourcery.com>
2462
2463         * config/arm/arm.c (arm_override_options): Enable scheduling for
2464         Thumb-2.
2465
2466 2009-11-10  Eric Botcazou  <ebotcazou@adacore.com>
2467
2468         PR target/10127
2469         PR ada/20548
2470         * expr.h (anti_adjust_stack_and_probe): Declare.
2471         * explow.c (anti_adjust_stack_and_probe): Make global, add ADJUST_BACK
2472         parameter and rewrite head comment.
2473         (allocate_dynamic_stack_space): Adjust call to above function.
2474         * function.c (expand_function_end): Handle STACK_CHECK_MOVING_SP.
2475
2476         * tree.h (dwarf2out_args_size): Delete.
2477         * dwarf2out.c (dwarf2out_args_size): Make static and move around.
2478         (dwarf2out_args_size_adjust): Delete prototype and move around.
2479         (dwarf2out_frame_debug_expr): Do not record arg size adjustments for
2480         ACCUMULATE_OUTGOING_ARGS targets.
2481
2482 2009-11-10  Eric Botcazou  <ebotcazou@adacore.com>
2483
2484         * config/sparc/sparc.c (print_operand) <')'>: Test for a non-null
2485         DECL_SIZE of DECL_RESULT before evaluating it.
2486
2487 2009-11-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2488
2489         PR tree-optimization/41987
2490         * fold-const.c (const_binop): Avoid using fold_buildN().
2491
2492 2009-11-10  Martin Jambor  <mjambor@suse.cz>
2493
2494         * tree-pass.h (struct ipa_opt_pass_d): Added stmt_fixup field.
2495         (execute_all_ipa_stmt_fixups): Declare.
2496         * ipa-cp.c (pass_ipa_cp): Added stmt_fixup value.
2497         * ipa-inline.c (pass_ipa_inline): Likewise.
2498         * ipa-pure-const.c (pass_ipa_pure_cons): Likewise.
2499         * ipa-reference.c (pass_ipa_reference): Likewise.
2500         * ipa.c (pass_ipa_whole_program_visibility): Likewise.
2501         * lto-streamer-out.c (pass_ipa_lto_gimple_out): Likewise.
2502         (pass_ipa_lto_finish_out): Likewise.
2503         * lto-wpa-fixup.c (pass_ipa_lto_wpa_fixup): Likewise.
2504         * passes.c (execute_ipa_stmt_fixups): New function.
2505         (execute_all_ipa_stmt_fixups): New function.
2506         * lto-streamer-in.c (input_function): Call execute_all_ipa_stmt_fixups.
2507
2508 2009-11-10  Eric Botcazou  <ebotcazou@adacore.com>
2509
2510         PR ada/20548
2511         * explow.c (probe_stack_range): Fix typo.
2512         * config/sparc/sparc.md (probe_stack): New expander.
2513
2514 2009-11-09  Dave Korn  <dave.korn.cygwin@gmail.com>
2515
2516         * config/i386/cygwin.h (LINK_SPEC): Add -tsaware flag if !mno-cygwin.
2517
2518 2009-11-09  Jason Merrill  <jason@redhat.com>
2519
2520         * gdbinit.in (pgq): New function for printing gimple sequence.
2521
2522 2009-11-09  Paul Brook  <paul@codesourcery.com>
2523             Daniel Jacobowitz  <dan@codesourcery.com>
2524             Sandra Loosemore  <sandra@codesourcery.com>
2525
2526         * doc/extend.texi (Half-Precision): Update wording to reflect
2527         that there are now multiple -mfpu options that enable fp16
2528         hardware support.
2529         * doc/invoke.texi: Update list of ARM -mfpu= options.
2530         * config.gcc: Update ARM --with-fpu option list.
2531         * config/arm/arm.c (all_fpus): Add vfpv3-fp16, vfpv3-d16-fp16,
2532         vfpv3xd and vfpv3xd-fp16.
2533         (use_vfp_abi): New function.
2534         (aapcs_vfp_is_call_or_return_candidate): Avoid double precision regs
2535         when undesirable.
2536         (aapcs_vfp_is_return_candidate, aapcs_vfp_is_call_candidate,
2537         aapcs_vfp_allocate_return_reg): Use use_vfp_abi.
2538         (arm_rtx_costs_1, arm_size_rtx_costs, arm_fastmul_rtx_costs,
2539         arm_9e_rtx_costs): Only expect double-precision operations if the FPU
2540         provides them.
2541         (coproc_secondary_reload_class): Reload HFmode via GENERAL_REGS if no
2542         NEON.
2543         (arm_print_operand): Handle 'p' modifier.
2544         (arm_hard_regno_mode_ok): : Allow HFmode in VFP registers if
2545         TARGET_FP16.
2546         * config/arm/arm.h (TARGET_VFP_SINGLE, TARGET_VFP_DOUBLE): Define.
2547         (TARGET_FP16): Define.
2548         * config/arm/vfp.md: Disable double-precision patterns if the FPU
2549         does not provide them.
2550         (arm_movdi_vfp, thumb2_movdi_vfp): Use fcpys to move
2551         double-precision values on a single-precision FPU.
2552         (movdf_vfp, thumb2_movdf_vfp): Likewise.  Use "Dy" for
2553         double-precision constants.
2554         (movhf_vfp_neon): New pattern (was movhf_vfp).
2555         (movhf_vfp): Remove NEON instructions.
2556         * config/arm/constraints.md: Add new "Dy" constraint for
2557         double-precision constants.  Update description of "Dv".
2558         * config/arm/arm.md: Disable double-precision patterns if the FPU
2559         does not provide them
2560
2561 2009-11-09  Jakub Jelinek  <jakub@redhat.com>
2562
2563         * config/i386/i386.c (print_operand) <case 'D'>: Fix formatting.
2564         (print_operand) <case 'Y'>: Likewise.  Fix a pasto in operand lossage
2565         diagnostics.
2566
2567 2009-11-08  H.J. Lu  <hongjiu.lu@intel.com>
2568
2569         * collect2.c (main): Search PLUGIN_LD for plugin linker.
2570
2571         * configure.ac (--with-plugin-ld): New.  Default to ld.
2572         * configure: Regenerated.
2573         * config.in: Likewise.
2574
2575         * exec-tool.in (ORIGINAL_PLUGIN_LD_FOR_TARGET): New.
2576         (collect-ld): Use ORIGINAL_PLUGIN_LD_FOR_TARGET for -plugin.
2577
2578 2009-11-08  Jonathan Gray  <jsg@openbsd.org>
2579
2580         * config/openbsd-stdint.h: Change to reflect what
2581         c_common_nodes_and_builtins expects.
2582
2583 2009-11-08  Paolo Carlini  <paolo.carlini@oracle.com>
2584
2585         * builtins.c (apply_args_reg_offset): Remove commented out delaration.
2586
2587 2009-11-08  Jakub Jelinek  <jakub@redhat.com>
2588
2589         PR target/41985
2590         * config/i386/i386.c (get_some_local_dynamic_name): Don't assert
2591         function contains at least one local dynamic name.
2592         (print_operand) <case '&'>: Instead output operand lossage diagnostics
2593         here if that happens.
2594
2595 2009-11-08  Zbigniew Chamski  <zbigniew.chamski@gmail.com>
2596             Joern Rennecke  <amylaar@spamcop.net>
2597
2598         * cfgrtl.c (pass_free_cfg): Add pass name.
2599         * cgraphbuild.c (pass_build_cgraph_edges): Likewise.
2600         (pass_rebuild_cgraph_edges, pass_remove_cgraph_callee_edges): Likewise.
2601         * dce.c (pass_ud_rtl_dce, pass_fast_rtl_dce): Change pass name.
2602         * df-core.c (pass_df_initialize_no_opt): Likewise.
2603         * except.c (pass_rtl_eh): Likewise.
2604         * function.c (pass_init_function, pass_leaf_regs): Likewise.
2605         * gcse.c (pass_rtl_pre): Change pass name.
2606         * passes.c (pass_postreload): Add pass name.
2607         (make_pass_instance): Don't use duplicate-tracking logic for
2608         names starting with '*'.
2609         (next_pass_1): Assert that pass has a name.
2610         (register_one_dump_file): If there is an space in the name,
2611         skip past it.
2612         * predict.c (pass_strip_predict_hints): Add pass name.
2613         * reg-stack.c (pass_stack_regs): Likewise.
2614         * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
2615         * tree-cfg.c (pass_warn_function_return,
2616         pass_warn_function_noreturn): Add pass name.
2617         * tree-dfa.c (pass_referenced_vars): Likewise.
2618         * tree-optimize.c (pass_cleanup_cfg_post_optimizing):
2619         Fix whitespace before comment.
2620         (pass_fixup_cfg): Add pass name, fix whitespace before comment.
2621         (pass_init_datastructures): Add pass name.
2622         * tree-ssa-loop.c (pass_record_bounds): Likewise.
2623         * tree-ssa.c (pass_early_warn_uninitialized,
2624         pass_late_warn_uninitialized): Likewise.
2625         * tree.c (pass_ipa_free_lang_data): Likewise.
2626         * doc/passes.texi (pass manager): Document how to disambiguate
2627         pass names.
2628
2629 2009-11-08  Paolo Bonzini  <bonzini@gnu.org>
2630
2631         * df-problems.c: Fix documentation for forward simulation of LR.
2632         (df_simulate_one_insn_forwards): Use df_simulate_find_defs.
2633         (df_simulate_finalize_forwards): Remove.
2634         * df.h (df_simulate_finalize_forwards): Remove.
2635
2636 2009-11-08  Richard Guenther  <rguenther@suse.de>
2637
2638         * tree-ssa-structalias.c (build_succ_graph): Properly make
2639         variables escape if they are stored to anything.
2640
2641 2009-11-08  Richard Guenther  <rguenther@suse.de>
2642
2643         PR rtl-optimization/41928
2644         * loop-invariant.c (free_loop_data): If we didn't allocate
2645         loop data do not try to free it.
2646
2647 2009-11-07  Jason Merrill  <jason@redhat.com>
2648
2649         * tree.c (reconstruct_complex_type): Preserve attributes.
2650
2651 2009-11-07  Richard Guenther  <rguenther@suse.de>
2652
2653         * tree-ssa-structalias.c (build_succ_graph): Feed stores
2654         to anything only to variables that can take pointers.
2655         (get_constraint_for_ssa_var): Properly exclude full
2656         variables from expanding.
2657         (first_vi_for_offset): Avoid overflow in arithmetic.
2658         (first_or_preceding_vi_for_offset): Likewise.
2659         (count_num_arguments): Fix implementation.
2660         (gate_ipa_pta): Do not run when not optimizing.
2661
2662 2009-11-07  David Binderman <dcb314@hotmail.com>
2663
2664         * builtins.c (apply_args_size, expand_builtin_mathfn, expand_powi,
2665         expand_builtin_expect, maybe_emit_sprintf_chk_warning): Remove some
2666         set but not used variables.
2667         (apply_args_reg_offset): Comment out as unused.
2668         * calls.c (flags_from_decl_or_type): Likewise.
2669         * genautomata.c (check_regexp_units_distribution): Likewise.
2670
2671 2009-11-07  Uros Bizjak  <ubizjak@gmail.com>
2672
2673         * config/i386/sse.md (xop_pmacsww, xop_pmacssww, xop_pmacsdd,
2674         xop_pmacssdd, xop_pmacssdql, xop_pmacssdqh, xop_pmacsdql,
2675         *xop_pmacsdql_mem, xop_pmacsdqh, *xop_pmacsdqh_mem, xop_pmacsswd,
2676         xop_pmacswd, xop_pmadcsswd, xop_pmadcswd, xop_pcmov_<mode>,
2677         xop_pcmov_<mode>256, xop_pperm, xop_pperm_pack_v2di_v4si,
2678         xop_pperm_pack_v4si_v8hi, xop_pperm_pack_v8hi_v16qi): Compress
2679         operand alternatives.
2680
2681 2009-11-06  Michael Matz  <matz@suse.de>
2682
2683         PR middle-end/41963
2684         * tree-ssa-math-opts.c (execute_cse_reciprocals): Check all uses
2685         of a potential reciprocal to really be reciprocals.
2686
2687 2009-11-06  Jakub Jelinek  <jakub@redhat.com>
2688
2689         * config/i386/x86intrin.h: Include fma4intrin.h, xopintrin.h and
2690         lwpintrin.h after immintrin.h.
2691         * config/i386/fma4intrin.h (__v8sf, __v4df, __m256, __m256d): Remove
2692         typedefs.
2693
2694         PR middle-end/41935
2695         * c-common.c (fold_offsetof_1) <case ARRAY_REF>: Don't crash for VLAs
2696         or non-constant index, allow index one past the last element and
2697         allow exceeding array bound in arrays that might be used as flexible
2698         array members.
2699
2700 2009-11-05  Richard Henderson  <rth@redhat.com>
2701
2702         * config/i386/ia32intrin.h: Protect CRC32 builtins with __SSE4_2__.
2703
2704 2009-11-05  Paul Brook  <paul@codesourcery.com>
2705
2706         * config/arm/arm.c (arm_fp_model, arm_fpu_arch, arm_fpu_tune): Remove.
2707         (arm_fpu_desc): New.
2708         (all_fpus): Add FPU details.
2709         (fp_model_for_fpu): Remove.
2710         (arm_override_options): Set and use arm_fpu_desc and arm_fpu_attr.
2711         (arm_output_epilogue, arm_save_coproc_regs): Use TARGET_FPA_EMU2.
2712         (arm_file_start): Use arm_fpu_desc.
2713         * config/arm/arm.h (TARGET_FPA, TARGET_MAVERICK, TARGET_VFP,
2714         TARGET_VFPD32, TARGET_VFP3, TARGET_NEON_FP16, TARGET_NEON): Use
2715         arm_fpu_desc.
2716         (TARGET_FPA_EMU2): Define.
2717         (arm_fp_model, fputype, arm_fpu_tune): Remove.
2718         (vfp_reg_type, arm_fpu_desc): New.
2719         * config/arm/arm.md (attr fpu): Simplify.
2720         * config/arm/fpa.md (movxf_fpa): Use TARGET_FPA_EMU2.
2721         * config/arm/linux-elf.h (FPUTYPE_DEFAULT): Use string value.
2722         * config/arm/bpabi.h (FPUTYPE_DEFAULT): Use string value.
2723         * config/arm/netbsd-elf.h (FPUTYPE_DEFAULT): Use string value.
2724         * config/arm/vxworks.h (FPUTYPE_DEFAULT): Use string value.
2725
2726 2009-11-05  Michael Matz  <matz@suse.de>
2727
2728         * config/i386/i386.c (ix86_builtin_reciprocal): Remove dependency
2729         on TARGET_RECIP.
2730         * doc/invoke.texi (-mrecip): Clarify that we don't need -mrecip
2731         for 1/sqrtf.
2732
2733 2009-11-04  Jason Merrill  <jason@redhat.com>
2734
2735         PR c++/36912
2736         * varasm.c (initializer_constant_valid_p): A PLUS_EXPR
2737         or MINUS_EXPR of REAL_TYPE is not a valid constant initializer.
2738         (output_constant): Avoid crash after error.
2739
2740 2009-11-05  Martin Jambor  <mjambor@suse.cz>
2741
2742         * tree-sra.c (struct access): Changed comment of next_sibling field.
2743         (analyze_modified_params): Loop over accesses of a group rather than
2744         over all with the ame base, pass a common bitmap to
2745         walk_aliased_vdefs.
2746         (unmodified_by_ref_scalar_representative): Build link lists of
2747         accesses of a group.
2748         (splice_param_accesses): Likewise.
2749
2750 2009-11-04  Kenneth Zadeck  <zadeck@naturalbridge.com>
2751
2752         * df-scan.c (df-uses-record): Add case zero_extract of mem.
2753
2754 2009-11-04  Eric Botcazou  <ebotcazou@adacore.com>
2755
2756         PR target/10127
2757         PR ada/20548
2758         * config/i386/i386.md (probe_stack): New expander.
2759         (logical operation peepholes): Do not split stack checking probes.
2760
2761 2009-11-04  Harsha Jagasia  <harsha.jagasia@amd.com>
2762             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
2763
2764         * doc/invoke.texi (-mlwp): Add documentation.
2765         * doc/extend.texi (x86 intrinsics): Add LWP intrinsics.
2766         * config.gcc (i[34567]86-*-*): Include lwpintrin.h.
2767         (x86_64-*-*): Ditto.
2768         * config/i386/lwpintrin.h: New file, provide x86 compiler
2769         intrinisics for LWP.
2770         * config/i386/cpuid.h (bit_LWP): Define LWP bit.
2771         * config/i386/x86intrin.h: Add LWP check and lwpintrin.h.
2772         * config/i386/i386-c.c (ix86_target_macros_internal): Check
2773         ISA_FLAG for LWP.
2774         * config/i386/i386.h (TARGET_LWP): New macro for LWP.
2775         * config/i386/i386.opt (-mlwp): New switch for LWP support.
2776         * config/i386/i386.c (OPTION_MASK_ISA_LWP_SET): New.
2777         (OPTION_MASK_ISA_LWP_UNSET): New.
2778         (ix86_handle_option): Handle -mlwp.
2779         (isa_opts): Handle -mlwp.
2780         (enum pta_flags): Add PTA_LWP.
2781         (override_options): Add LWP support.
2782         (IX86_BUILTIN_LLWPCB16): New for LWP intrinsic.
2783         (IX86_BUILTIN_LLWPCB32): Ditto.
2784         (IX86_BUILTIN_LLWPCB64): Ditto.
2785         (IX86_BUILTIN_SLWPCB16): Ditto.
2786         (IX86_BUILTIN_SLWPCB32): Ditto.
2787         (IX86_BUILTIN_SLWPCB64): Ditto.
2788         (IX86_BUILTIN_LWPVAL16): Ditto.
2789         (IX86_BUILTIN_LWPVAL32): Ditto.
2790         (IX86_BUILTIN_LWPVAL64): Ditto.
2791         (IX86_BUILTIN_LWPINS16): Ditto.
2792         (IX86_BUILTIN_LWPINS32): Ditto.
2793         (IX86_BUILTIN_LWPINS64): Ditto.
2794         (enum  ix86_special_builtin_type): Add LWP intrinsic support.
2795         (builtin_description): Ditto.
2796         (ix86_init_mmx_sse_builtins): Ditto.
2797         (ix86_expand_special_args_builtin): Ditto.
2798         * config/i386/i386.md (UNSPEC_LLWP_INTRINSIC): Add new UNSPEC for
2799         LWP support.
2800         (UNSPEC_SLWP_INTRINSIC): Ditto.
2801         (UNSPECV_LWPVAL_INTRINSIC): Ditto.
2802         (UNSPECV_LWPINS_INTRINSIC): Ditto.
2803         (lwp_llwpcbhi1): New lwp pattern.
2804         (lwp_llwpcbsi1): Ditto.
2805         (lwp_llwpcbdi1): Ditto.
2806         (lwp_slwpcbhi1): Ditto.
2807         (lwp_slwpcbsi1): Ditto.
2808         (lwp_slwpcbdi1): Ditto.
2809         (lwp_lwpvalhi3): Ditto.
2810         (lwp_lwpvalsi3): Ditto.
2811         (lwp_lwpvaldi3): Ditto.
2812         (lwp_lwpinshi3): Ditto.
2813         (lwp_lwpinssi3): Ditto.
2814         (lwp_lwpinsdi3): Ditto.
2815
2816 2009-11-04  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2817             Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
2818
2819         PR rtl-opt/41833
2820         * simplify-rtx.c (simplify_binary_operation_1): Simplify vec_select of
2821         a vec_duplicate.
2822
2823 2009-11-04  Richard Guenther  <rguenther@suse.de>
2824             Rafael Avila de Espindola  <espindola@google.com>
2825
2826         * gcc.c (process_command): Handle arguments name@offset.
2827
2828 2009-11-04  Harsha Jagasia  <harsha.jagasia@amd.com>
2829             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
2830
2831         * config.gcc (i[34567]86-*-*): Include xopintrin.h.
2832         (x86_64-*-*): Ditto.
2833         * config/i386/xopintrin.h: New file, provide common x86 compiler
2834         intrinisics for XOP.
2835         * config/i386/cpuid.h (bit_XOP): Define XOP bit.
2836         * config/i386/x86intrin.h: Add XOP check and xopintrin.h.
2837         * config/i386/i386-c.c(ix86_target_macros_internal): Check
2838         ISA_FLAG for XOP.
2839         * config/i386/i386.h(TARGET_XOP): New macro for XOP.
2840         * config/i386/i386.opt (-mxop): New switch for XOP support.
2841         * config/i386/i386.md (UNSPEC_XOP_UNSIGNED_CMP)
2842         (UNSPEC_XOP_TRUEFALSE)
2843         (UNSPEC_XOP_PERMUTE)
2844         (UNSPEC_FRCZ): Add new UNSPEC for XOP support.
2845         (PPERM_*): New constants for vpperm instruction.
2846         (xop_pcmov_<mode>): Add XOP conditional mov instructions.
2847         * config/i386/i386.c (OPTION_MASK_ISA_XOP_SET): New.
2848         (OPTION_MASK_ISA_XOP_UNSET): New.
2849         (OPTION_MASK_ISA_XOP_UNSET): Change definition to depend on XOP.
2850         (ix86_handle_option): Handle -mxop.
2851         (isa_opts): Handle -mxop.
2852         (enum pta_flags): Add PTA_XOP.
2853         (override_options): Add XOP support.
2854         (print_operand): Add code for XOP compare instructions.
2855         (ix86_expand_sse_movcc): Extend for XOP conditional move instruction.
2856         (ix86_expand_int_vcond): Extend for XOP compare instruction.
2857
2858         (IX86_BUILTIN_VPCMOV): New for XOP intrinsic.
2859         (IX86_BUILTIN_VPCMOV_V2DI): Ditto.
2860         (IX86_BUILTIN_VPCMOV_V4SI): Ditto.
2861         (IX86_BUILTIN_VPCMOV_V8HI): Ditto.
2862         (IX86_BUILTIN_VPCMOV_V16QI): Ditto.
2863         (IX86_BUILTIN_VPCMOV_V4SF): Ditto.
2864         (IX86_BUILTIN_VPCMOV_V2DF): Ditto.
2865
2866         (IX86_BUILTIN_VPCMOV256): Ditto.
2867         (IX86_BUILTIN_VPCMOV_V4DI256): Ditto.
2868         (IX86_BUILTIN_VPCMOV_V8SI256): Ditto.
2869         (IX86_BUILTIN_VPCMOV_V16HI256): Ditto.
2870         (IX86_BUILTIN_VPCMOV_V32QI256): Ditto.
2871         (IX86_BUILTIN_VPCMOV_V8SF256): Ditto.
2872         (IX86_BUILTIN_VPCMOV_V4DF256): Ditto.
2873
2874         (IX86_BUILTIN_VPPERM): Ditto.
2875
2876         (IX86_BUILTIN_VPMACSSWW): Ditto.
2877         (IX86_BUILTIN_VPMACSWW): Ditto.
2878         (IX86_BUILTIN_VPMACSSWD): Ditto.
2879         (IX86_BUILTIN_VPMACSWD): Ditto.
2880         (IX86_BUILTIN_VPMACSSDD): Ditto.
2881         (IX86_BUILTIN_VPMACSDD): Ditto.
2882         (IX86_BUILTIN_VPMACSSDQL): Ditto.
2883         (IX86_BUILTIN_VPMACSSDQH): Ditto.
2884         (IX86_BUILTIN_VPMACSDQL): Ditto.
2885         (IX86_BUILTIN_VPMACSDQH): Ditto.
2886         (IX86_BUILTIN_VPMADCSSWD): Ditto.
2887         (IX86_BUILTIN_VPMADCSWD): Ditto.
2888
2889         (IX86_BUILTIN_VPHADDBW): Ditto.
2890         (IX86_BUILTIN_VPHADDBD): Ditto.
2891         (IX86_BUILTIN_VPHADDBQ): Ditto.
2892         (IX86_BUILTIN_VPHADDWD): Ditto.
2893         (IX86_BUILTIN_VPHADDWQ): Ditto.
2894         (IX86_BUILTIN_VPHADDDQ): Ditto.
2895         (IX86_BUILTIN_VPHADDUBW): Ditto.
2896         (IX86_BUILTIN_VPHADDUBD): Ditto.
2897         (IX86_BUILTIN_VPHADDUBQ): Ditto.
2898         (IX86_BUILTIN_VPHADDUWD): Ditto.
2899         (IX86_BUILTIN_VPHADDUWQ): Ditto.
2900         (IX86_BUILTIN_VPHADDUDQ): Ditto.
2901         (IX86_BUILTIN_VPHSUBBW): Ditto.
2902         (IX86_BUILTIN_VPHSUBWD): Ditto.
2903         (IX86_BUILTIN_VPHSUBDQ): Ditto.
2904
2905         (IX86_BUILTIN_VPROTB): Ditto.
2906         (IX86_BUILTIN_VPROTW): Ditto.
2907         (IX86_BUILTIN_VPROTD): Ditto.
2908         (IX86_BUILTIN_VPROTQ): Ditto.
2909         (IX86_BUILTIN_VPROTB_IMM): Ditto.
2910         (IX86_BUILTIN_VPROTW_IMM): Ditto.
2911         (IX86_BUILTIN_VPROTD_IMM): Ditto.
2912         (IX86_BUILTIN_VPROTQ_IMM): Ditto.
2913
2914         (IX86_BUILTIN_VPSHLB): Ditto.
2915         (IX86_BUILTIN_VPSHLW): Ditto.
2916         (IX86_BUILTIN_VPSHLD): Ditto.
2917         (IX86_BUILTIN_VPSHLQ): Ditto.
2918         (IX86_BUILTIN_VPSHAB): Ditto.
2919         (IX86_BUILTIN_VPSHAW): Ditto.
2920         (IX86_BUILTIN_VPSHAD): Ditto.
2921         (IX86_BUILTIN_VPSHAQ): Ditto.
2922
2923         (IX86_BUILTIN_VFRCZSS): Ditto.
2924         (IX86_BUILTIN_VFRCZSD): Ditto.
2925         (IX86_BUILTIN_VFRCZPS): Ditto.
2926         (IX86_BUILTIN_VFRCZPD): Ditto.
2927         (IX86_BUILTIN_VFRCZPS256): Ditto.
2928         (IX86_BUILTIN_VFRCZPD256): Ditto.
2929
2930         (IX86_BUILTIN_VPCOMEQUB): Ditto.
2931         (IX86_BUILTIN_VPCOMNEUB): Ditto.
2932         (IX86_BUILTIN_VPCOMLTUB): Ditto.
2933         (IX86_BUILTIN_VPCOMLEUB): Ditto.
2934         (IX86_BUILTIN_VPCOMGTUB): Ditto.
2935         (IX86_BUILTIN_VPCOMGEUB): Ditto.
2936         (IX86_BUILTIN_VPCOMFALSEUB): Ditto.
2937         (IX86_BUILTIN_VPCOMTRUEUB): Ditto.
2938
2939         (IX86_BUILTIN_VPCOMEQUW): Ditto.
2940         (IX86_BUILTIN_VPCOMNEUW): Ditto.
2941         (IX86_BUILTIN_VPCOMLTUW): Ditto.
2942         (IX86_BUILTIN_VPCOMLEUW): Ditto.
2943         (IX86_BUILTIN_VPCOMGTUW): Ditto.
2944         (IX86_BUILTIN_VPCOMGEUW): Ditto.
2945         (IX86_BUILTIN_VPCOMFALSEUW): Ditto.
2946         (IX86_BUILTIN_VPCOMTRUEUW): Ditto.
2947
2948         (IX86_BUILTIN_VPCOMEQUD): Ditto.
2949         (IX86_BUILTIN_VPCOMNEUD): Ditto.
2950         (IX86_BUILTIN_VPCOMLTUD): Ditto.
2951         (IX86_BUILTIN_VPCOMLEUD): Ditto.
2952         (IX86_BUILTIN_VPCOMGTUD): Ditto.
2953         (IX86_BUILTIN_VPCOMGEUD): Ditto.
2954         (IX86_BUILTIN_VPCOMFALSEUD): Ditto.
2955         (IX86_BUILTIN_VPCOMTRUEUD): Ditto.
2956
2957         (IX86_BUILTIN_VPCOMEQUQ): Ditto.
2958         (IX86_BUILTIN_VPCOMNEUQ): Ditto.
2959         (IX86_BUILTIN_VPCOMLTUQ): Ditto.
2960         (IX86_BUILTIN_VPCOMLEUQ): Ditto.
2961         (IX86_BUILTIN_VPCOMGTUQ): Ditto.
2962         (IX86_BUILTIN_VPCOMGEUQ): Ditto.
2963         (IX86_BUILTIN_VPCOMFALSEUQ): Ditto.
2964         (IX86_BUILTIN_VPCOMTRUEUQ): Ditto.
2965
2966         (IX86_BUILTIN_VPCOMEQB): Ditto.
2967         (IX86_BUILTIN_VPCOMNEB): Ditto.
2968         (IX86_BUILTIN_VPCOMLTB): Ditto.
2969         (IX86_BUILTIN_VPCOMLEB): Ditto.
2970         (IX86_BUILTIN_VPCOMGTB): Ditto.
2971         (IX86_BUILTIN_VPCOMGEB): Ditto.
2972         (IX86_BUILTIN_VPCOMFALSEB): Ditto.
2973         (IX86_BUILTIN_VPCOMTRUEB): Ditto.
2974
2975         (IX86_BUILTIN_VPCOMEQW): Ditto.
2976         (IX86_BUILTIN_VPCOMNEW): Ditto.
2977         (IX86_BUILTIN_VPCOMLTW): Ditto.
2978         (IX86_BUILTIN_VPCOMLEW): Ditto.
2979         (IX86_BUILTIN_VPCOMGTW): Ditto.
2980         (IX86_BUILTIN_VPCOMGEW): Ditto.
2981         (IX86_BUILTIN_VPCOMFALSEW): Ditto.
2982         (IX86_BUILTIN_VPCOMTRUEW): Ditto.
2983
2984         (IX86_BUILTIN_VPCOMEQD): Ditto.
2985         (IX86_BUILTIN_VPCOMNED): Ditto.
2986         (IX86_BUILTIN_VPCOMLTD): Ditto.
2987         (IX86_BUILTIN_VPCOMLED): Ditto.
2988         (IX86_BUILTIN_VPCOMGTD): Ditto.
2989         (IX86_BUILTIN_VPCOMGED): Ditto.
2990         (IX86_BUILTIN_VPCOMFALSED): Ditto.
2991         (IX86_BUILTIN_VPCOMTRUED): Ditto.
2992
2993         (IX86_BUILTIN_VPCOMEQQ): Ditto.
2994         (IX86_BUILTIN_VPCOMNEQ): Ditto.
2995         (IX86_BUILTIN_VPCOMLTQ): Ditto.
2996         (IX86_BUILTIN_VPCOMLEQ): Ditto.
2997         (IX86_BUILTIN_VPCOMGTQ): Ditto.
2998         (IX86_BUILTIN_VPCOMGEQ): Ditto.
2999         (IX86_BUILTIN_VPCOMFALSEQ): Ditto.
3000         (IX86_BUILTIN_VPCOMTRUEQ): Ditto.
3001
3002         (enum multi_arg_type): New enum for describing the various XOP
3003         intrinsic argument types.
3004         (bdesc_multi_arg): New table for XOP intrinsics.
3005         (ix86_init_mmx_sse_builtins): Add XOP intrinsic support.
3006         (ix86_expand_multi_arg_builtin): New function for creating XOP
3007         intrinsics.
3008
3009         * config/i386/sse.md (sserotatemax): New mode attribute for XOP.
3010         (xop_pmacsww): Ditto.
3011         (xop_pmacssww): Ditto.
3012         (xop_pmacsdd): Ditto.
3013         (xop_pmacssdd): Ditto.
3014         (xop_pmacssdql): Ditto.
3015         (xop_pmacssdqh): Ditto.
3016         (xop_pmacsdql): Ditto.
3017         (xop_pmacsdql_mem): Ditto.
3018         (xop_mulv2div2di3_low): Ditto.
3019         (xop_pmacsdqh): Ditto.
3020         (xop_pmacsdqh_mem): Ditto.
3021         (xop_mulv2div2di3_high): Ditto.
3022         (xop_pmacsswd): Ditto.
3023         (xop_pmacswd): Ditto.
3024         (xop_pmadcsswd): Ditto.
3025         (xop_pmadcswd): Ditto.
3026         (xop_pcmov_<mode>): Ditto.
3027         (xop_pcmov_<mode>256): Ditto.
3028         (xop_phaddbw): Ditto.
3029         (xop_phaddbd): Ditto.
3030         (xop_phaddbq): Ditto.
3031         (xop_phaddwd): Ditto.
3032         (xop_phaddwq): Ditto.
3033         (xop_phadddq): Ditto.
3034         (xop_phaddubw): Ditto.
3035         (xop_phaddubd): Ditto.
3036         (xop_phaddubq): Ditto.
3037         (xop_phadduwd): Ditto.
3038         (xop_phadduwq): Ditto.
3039         (xop_phaddudq): Ditto.
3040         (xop_phsubbw): Ditto.
3041         (xop_phsubwd): Ditto.
3042         (xop_phsubdq): Ditto.
3043         (xop_pperm): Ditto.
3044         (rotl<mode>3): Ditto.
3045         (rotr<mode>3): Ditto.
3046         (xop_rotl<mode>3): Ditto.
3047         (xop_rotr<mode>3): Ditto.
3048         (vrotr<mode>3): Ditto.
3049         (vrotl<mode>3): Ditto.
3050         (xop_vrotl<mode>3): Ditto.
3051         (vlshr<mode>3): Ditto.
3052         (vashr<mode>3): Ditto.
3053         (vashl<mode>3
3054         (xop_ashl<mode>3): Ditto.
3055         (xop_lshl<mode>3): Ditto.
3056         (ashlv16qi3): Ditto.
3057         (lshlv16qi3): Ditto.
3058         (ashrv16qi3): Ditto.
3059         (ashrv2di3): Ditto.
3060         (xop_frcz<mode>2): Ditto.
3061         (xop_vmfrcz<mode>2): Ditto.
3062         (xop_frcz<mode>2256): Ditto.
3063         (xop_maskcmp<mode>3): Ditto.
3064         (xop_maskcmp_uns<mode>3): Ditto.
3065         (xop_maskcmp_uns2<mode>3): Ditto.
3066         (xop_pcom_tf<mode>3): Ditto.
3067
3068         * doc/invoke.texi (-mxop): Add documentation.
3069         * doc/extend.texi (x86 intrinsics): Add XOP intrinsics.
3070
3071 2009-11-03  Mark Mitchell  <mark@codesourcery.com>
3072
3073         PR driver/11810
3074         * gcc.c (SWITCHES_NEED_SPACES): Define to "o".
3075         * config/alpha/osf.h (SWITCHES_NEED_SPACES): Remove here.
3076         * config/mips/iris.h (SWITCHES_NEED_SPACES): Remove here.
3077
3078 2009-11-04  Richard Earnshaw  <rearnsha@arm.com>
3079
3080         PR target/40835
3081         * arm.md (peephole2 patterns for move and compare): New.
3082
3083 2009-11-04  Nick Clifton  <nickc@redhat.com>
3084
3085         * defaults.h (CONSTANT_ADDRESS_P): Provide a default definition.
3086         Make sure that it does not allow CONST_DOUBLEs.
3087         * doc/tm.texi (CONSTANT_ADDRESS_P): Update description.
3088         * config/avr/avr.h (CONSTANT_ADDRESS_P): Delete.
3089         * config/bfin/bfin.h (CONSTANT_ADDRESS_P): Delete.
3090         * config/cris/cris.h (CONSTANT_ADDRESS_P): Delete.
3091         * config/fr30/fr30.h (CONSTANT_ADDRESS_P): Delete.
3092         * config/frv/frv.h (CONSTANT_ADDRESS_P): Delete.
3093         * config/m32c/m32c.h (CONSTANT_ADDRESS_P): Delete.
3094         * config/m68hc11/m68hc11.h (CONSTANT_ADDRESS_P): Delete.
3095         * config/mep/mep.h (CONSTANT_ADDRESS_P): Delete.
3096         * config/mn10300/mn10300.h (CONSTANT_ADDRESS_P): Delete.
3097         * config/moxie/moxie.h (CONSTANT_ADDRESS_P): Delete.
3098         * config/pdp11/pdp11.h (CONSTANT_ADDRESS_P): Delete.
3099         * config/picochip/picochip.h (CONSTANT_ADDRESS_P): Delete.
3100         * config/score/score.h (CONSTANT_ADDRESS_P): Delete.
3101         * config/stormy16/stormy16.h (CONSTANT_ADDRESS_P): Delete.
3102
3103 2009-11-04  Richard Guenther  <rguenther@suse.de>
3104
3105         PR tree-optimization/41919
3106         * tree-vrp.c (test_for_singularity): Properly compare values.
3107
3108 2009-11-04  Revital Eres  <eres@il.ibm.com>
3109
3110         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
3111         Consider peeling for alignment only for stores and remove
3112         redundant assignment.
3113
3114 2009-11-04  Maxim Kuvyrkov  <maxim@codesourcery.com>
3115
3116         PR target/41302
3117         * config/m68k/m68k.c (m68k_reg_present_p): New static function.
3118         (m68k_ok_for_sibcall_p): Handle different result return locations.
3119
3120 2009-11-04  Richard Guenther  <rguenther@suse.de>
3121
3122         * c-opts.c (c_common_post_options): Move LTO option processing
3123         code ...
3124         * opts.c (decode_options): ... here.
3125
3126 2009-11-04  Jakub Jelinek  <jakub@redhat.com>
3127
3128         * c-common.c (fold_offsetof_1): Use %wd instead of
3129         HOST_WIDE_INT_PRINT_DEC.
3130
3131 2009-11-04  Maciej W. Rozycki  <macro@linux-mips.org>
3132
3133         * config/vax/linux.h (TARGET_OS_CPP_BUILTINS): Don't define
3134         __pic__ or __PIC__.
3135
3136 2009-11-04  Maciej W. Rozycki  <macro@linux-mips.org>
3137
3138         * config.gcc (vax-*-linux*): Keep the original contents of
3139         tmake_file while adding vax/t-linux.
3140
3141 2009-11-03  Eric Botcazou  <ebotcazou@adacore.com>
3142
3143         PR target/10127
3144         PR ada/20548
3145         * expr.h (STACK_CHECK_PROBE_INTERVAL): Delete.
3146         (STACK_CHECK_PROBE_INTERVAL_EXP): New macro.
3147         (STACK_CHECK_MOVING_SP): Likewise.
3148         * system.h (STACK_CHECK_PROBE_INTERVAL): Poison it.
3149         * doc/tm.texi (Stack Checking): Delete STACK_CHECK_PROBE_INTERVAL.
3150         Document STACK_CHECK_PROBE_INTERVAL_EXP and STACK_CHECK_MOVING_SP.
3151         * doc/md.texi (Standard Pattern Names): Tweak entry of CHECK_STACK.
3152         Document PROBE_STACK.
3153         * explow.c (anti_adjust_stack_and_probe): New function.
3154         (allocate_dynamic_stack_space): Do not directly allocate space if
3155         STACK_CHECK_MOVING_SP, instead invoke above function.
3156         (emit_stack_probe): Handle probe_stack insn.
3157         (PROBE_INTERVAL): New macro.
3158         (STACK_GROW_OPTAB): Likewise.
3159         (STACK_GROW_OFF): Likewise.
3160         (probe_stack_range): Use Pmode and memory_address consistently.  Fix
3161         loop condition in the small constant case.  Rewrite in the general
3162         case to be immune to wraparounds.  Make sure the address of probes
3163         is valid.  Try to use [base + disp] addressing mode if possible.
3164         * ira.c (setup_eliminable_regset): Set frame_pointer_needed if stack
3165         checking is enabled and STACK_CHECK_MOVING_SP.
3166         * rtlanal.c (may_trap_p_1) <MEM>: If stack checking is enabled,
3167         return 1 for volatile references to the stack pointer.
3168         * tree.c (build_common_builtin_nodes): Do not set ECF_NOTHROW on
3169         __builtin_alloca if stack checking is enabled.
3170         * unwind-dw2.c (uw_identify_context): Take into account whether the
3171         context is that of a signal frame or not.
3172         * config/i386/linux.h (STACK_CHECK_MOVING_SP): Define to 1.
3173         * config/i386/linux64.h (STACK_CHECK_MOVING_SP): Likewise.
3174
3175 2009-11-03  Jakub Jelinek  <jakub@redhat.com>
3176
3177         PR rtl-optimization/41917
3178         * rtlanal.c (num_sign_bit_copies1) <case UMOD>: If sign bit of second
3179         operand isn't known to be 0, return 1.
3180
3181 2009-11-03  Richard Sandiford  <rdsandiford@googlemail.com>
3182
3183         * config/mips/mips.md: Fix typos.
3184
3185 2009-11-03  Richard Sandiford  <rdsandiford@googlemail.com>
3186
3187         * doc/invoke.texi: Fix typo.
3188
3189 2009-11-03  Paul Brook  <paul@codesourcery.com>
3190
3191         * config/arm/neon.ml (vectype): Add T_floatSF.
3192         (string_of_vectype): Ditto.
3193         * config/arm/neon-gen.ml (signed_ctype): Add T_floatSF.
3194         (deftypes): Use float for float32_t.
3195         * config/arm/arm_neon.h: Regenerate.
3196
3197 2009-11-03  Nick Clifton  <nickc@redhat.com>
3198             Kevin Buettner  <kevinb@redhat.com>
3199
3200         * config/rx/predicates.md (rx_store_multiple_vector): Reverse
3201         order of expected registers.
3202         (rx_load_multiple_vector): Likewise.
3203         (rx_rtsd_vector): Likewise.
3204         * config/rx/rx.c (rx_cpu_type): New variable.
3205         (rx_print_operand): Fix bug printing 64-bit constant values.
3206         (rx_emit_stack_pushm): Reverse order of pushed registers.
3207         (gen_rx_store_vector): Likewise.
3208         (is_fast_interrupt_func): Only accept "fast_interrupt" as the
3209         attribute name.
3210         (is_exception_func): Rename to is_interrupt_func and only accept
3211         "interrupt" as the attribute name.
3212         (rx_get_stack_layout): Use new function name.
3213         (rx_func_attr_inlinable): Likewise.
3214         (rx_attribute_table): Remove "exception".
3215         (rx_expand_prologue): If necessary push the accumulator register
3216         in the prologue of interrupt functions.
3217         (rx_expand_epilogue): If necessary pop the accumulator.
3218         (rx_builtins): Add RX_BUILTIN_MVTIPL.
3219         (rx_expand_builtin_stz): Remove.
3220         (rx_expand_builtin_mvtipl): New function.
3221         (rx_init_builtins): Handle RX_BUILTIN_MVTIPL.
3222         (rx_expand_builtin): Likewise.
3223         (rx_enable_fpu): New variable.
3224         (rx_handle_option): Handle -fpu, -nofpu, -mcpu and -patch.
3225         * config/rx/rx.h (TARGET_CPU_CPP_BUILTINS): Assert machine based
3226         on rx_cpu_type.  Define __RX_FPU_INSNS__ if FPU insns are allowed.
3227         (enum rx_cpu_types): Define.
3228         (ASM_SPEC): Pass -m32bit-doubles on to assembler.
3229         (INCOMING_FRAME_SP_OFFSET): Define.
3230         (ARG_POINTER_CFA_OFFSET): Define.
3231         (FRAME_POINTER_CFA_OFFSET): Define.
3232         (OVERRIDE_OPTIONS): Enable fast math if RX FPU insns are enabled.
3233         (ALLOW_RX_FPU_INSNS): Define.
3234         * config/rx/rx.md: Test ALLOW_RX_FPU_INSNS instead of
3235         fast_math_flags_set_p.
3236         (UNSPEC_BUILTIN_MVTIPL): Define.
3237         (revl): Rename to bswapsi2.
3238         (bswaphi2): New pattern.
3239         (mvtachi): Mark as volatile because it uses a register unknown to GCC.
3240         (mvtaclo): Likewise.
3241         (racw): Likewise.
3242         (mvtc): Remove clobber of cc0.
3243         (mvtcp): Delete.
3244         (opecp): Delete.
3245         * config/rx/rx.opt (mieee): Remove.
3246         (fpu): Add.
3247         (nofpu): Add.
3248         (mcpu=): Add.
3249         (patch=): Add.
3250         (msave-acc-in-interrupts): Add.
3251         * config/rx/t-rx (MULTILIB_OPTIONS): Change default to 64bit doubles.
3252         (MULTILIB_DIRS): Likewise.
3253         (MULTILIB_MATCHES): Treat -fpu as an alias for -m32bit-doubles.
3254         * doc/extend.texi: Remove description of "exception" function
3255         attribute.
3256         * doc/invoke.texi: Document -fpu, -nofpu, -mcpu=, -patch= and
3257         -msave-acc-in-interrupts options.
3258
3259 2009-11-03  Richard Guenther  <rguenther@suse.de>
3260
3261         * c-common.c (fold_offsetof_1): Use HOST_WIDE_INT_PRINT_DEC.
3262
3263 2009-11-03  Dodji Seketeli  <dodji@redhat.com>
3264
3265         PR c++/38699
3266         * c-common.c (fold_offsetof_1): Issue errors when the member
3267         designator of the offsetof expression is not legitimate.
3268
3269 2009-11-03  Uros Bizjak  <ubizjak@gmail.com>
3270
3271         * config/i386/i386.md (*call_value_1_rex64_ms_sysv): Use register
3272         names instead of numerical constants.
3273         (sse_prologue_save): Ditto.
3274         (*sse_prologue_save_insn): Ditto.
3275
3276 2009-11-03  Uros Bizjak  <ubizjak@gmail.com>
3277
3278         PR target/41900
3279         * config/i386/i386.h (ix86_arch_indices) <X86_ARCH_CALL_ESP>: New.
3280         (TARGET_CALL_ESP): New define.
3281         * config/i386/i386.c (initial_ix86_tune_features): Initialize
3282         X86_ARCH_CALL_ESP.
3283         * config/i386/i386.md (*call_pop_1_esp, *call_1_esp,
3284         *call_value_pop_1_esp, *call_value_1_esp): Rename from *call_pop_1,
3285         *call_1, *call_value_pop_1 and *call_value_1.  Depend on
3286         TARGET_CALL_ESP.
3287         (*call_pop_1, *call_1, *call_value_pop_1, *call_value_1):
3288         New patterns, use "lsm" as operand 1 constraint.
3289         * config/i386/predicates.md (call_insn_operand): Depend on
3290         index_register_operand for !TARGET_CALL_ESP to avoid %esp register.
3291
3292 2009-11-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
3293
3294         PR tree-optimization/41857
3295         * tree-flow.h (rewrite_use_address): Add BASE_HINT argument.
3296         * tree-ssa-loop-ivopts.c (rewrite_use_address): Pass base hint
3297         to create_mem_ref.
3298         * tree-ssa-address.c (move_hint_to_base): New function.
3299         (most_expensive_mult_to_index): Add TYPE argument.  Use mode and
3300         address space associated with TYPE.
3301         (addr_to_parts): Add TYPE and BASE_HINT arguments.  Pass TYPE to
3302         most_expensive_mult_to_index.  Call move_hint_to_base.
3303         (create_mem_ref): Add BASE_HINT argument.  Pass BASE_HINT and
3304         TYPE to addr_to_parts.
3305
3306 2009-11-02  Martin Jambor  <mjambor@suse.cz>
3307
3308         PR tree-optimization/41750
3309         * tree-sra.c (analyze_modified_params): Loop over all
3310         representatives of components of a parameter.
3311
3312 2009-11-02  Jakub Jelinek  <jakub@redhat.com>
3313
3314         PR tree-optimization/41841
3315         * ipa-struct-reorg.c (build_data_structure): Don't attempt to look at
3316         local variables of not yet materialized clones.
3317
3318         PR debug/41893
3319         * cfgexpand.c (expand_debug_expr): Don't attempt to create DECL_RTL
3320         for a VOIDmode variable.
3321
3322         PR c++/41774
3323         * c-pragma.c (visstack): Change into vector of ints rather than
3324         enum symbol_visibility.
3325         (push_visibility): Add kind argument, push default_visibility together
3326         with kind.
3327         (pop_visibility): Add kind argument, return true if successful, fail
3328         if visibility stack is empty or if stack top is of different kind.
3329         (handle_pragma_visibility): Don't check length of visstack, instead
3330         call pop_visibility and issue diagnostics if it failed.  Pass 0
3331         as last argument to push_visibility and pop_visibility.
3332         * c-pragma.h (push_visibility): Add kind argument.
3333         (pop_visibility): Likewise.  Return bool instead of void.
3334
3335 2009-11-01  Eric Botcazou  <ebotcazou@adacore.com>
3336
3337         * tree.def (TARGET_MEM_REF): Update comment.
3338         * alias.c (get_alias_set): Retrieve the original memory reference for
3339         a TARGET_MEM_REF before proceeding.
3340
3341 2009-10-31  Anatoly Sokolov  <aesok@post.ru>
3342
3343         * config/frv/frv.c (frv_function_value, frv_libcall_value,
3344         frv_function_value_regno_p): New functions.
3345         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
3346         * config/frv/frv.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
3347         (FUNCTION_VALUE_REGNO_P): Redefine, use frv_function_value_regno_p.
3348         * config/frv/frv-protos.h (frv_function_value_regno_p): Declare.
3349
3350 2009-10-31  Anatoly Sokolov  <aesok@post.ru>
3351
3352         * config/mn10300/mn10300.c (mn10300_function_value): Make static, add
3353         new 'outgoing' argument.
3354         (mn10300_libcall_value, mn10300_function_value_regno_p): New functions.
3355         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
3356         * config/mn10300/mn10300.h (FUNCTION_VALUE, FUNCTION_OUTGOING_VALUE,
3357         LIBCALL_VALUE): Remove.
3358         (FUNCTION_VALUE_REGNO_P): Redefine, use mn10300_function_value_regno_p.
3359         * config/mn10300/mn10300-protos.h (mn10300_function_value): Remove.
3360         (mh10300_function_value_regno_p): Declare.
3361
3362 2009-10-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
3363
3364         * config/arm/cortex-a9.md: New - integer pipeline description.
3365
3366 2009-10-31  Eric Botcazou  <ebotcazou@adacore.com>
3367
3368         * tree-ssa-sccvn.c (vn_reference_lookup_3): Bail out instead of
3369         aborting if the sizes of the two references don't match.
3370
3371 2009-10-31  Toon Moene  <toon@moene.org>
3372
3373         * ipa-inline.c (cgraph_decide_inlining):
3374         Include reason for not inlining called-once functions in dump file.
3375
3376 2009-10-30  Daniel Gutson  <dgutson@codesourcery.com>
3377
3378         * config/arm/linux-eabi.h (LINK_SPEC): BE8_LINK_SPEC added.
3379         * config/arm/bpapi.h (BE8_LINK_SPEC): New define.
3380         (LINK_SPEC): BE_LINK_SPEC added.
3381
3382 2009-10-30  Richard Guenther  <rguenther@suse.de>
3383
3384         PR lto/41858
3385         * lto-streamer.h (struct lto_file_decl_data): Remove fd member.
3386
3387 2009-10-30  Nathan Sidwell  <nathan@codesourcery.com>
3388
3389         * target-def.h (TARGET_ASM_TTYPE): Correct typo of TARGET_ARM_TTYPE.
3390         * config/arm/unwind-arm.c (__gnu_Unwind_Backtrace): Remove unused
3391         label.
3392
3393 2009-10-30  Martin Jambor  <mjambor@suse.cz>
3394
3395         * tree-sra.c (build_ref_for_offset_1): Remove a comment.
3396
3397 2009-10-30  H.J. Lu  <hongjiu.lu@intel.com>
3398
3399         PR target/40838
3400         * cfgexpand.c (expand_stack_alignment): Call update_stack_boundary
3401         first.  Move assert on stack_alignment_estimated just before
3402         setting stack_realign_needed.
3403         (gimple_expand_cfg): Initialize stack_alignment_estimated to 0.
3404         Don't call update_stack_boundary.
3405
3406         * config/i386/i386.c (ix86_minimum_incoming_stack_boundary): New.
3407         (verride_options): Don't check ix86_force_align_arg_pointer here.
3408         (ix86_function_ok_for_sibcall): Use it.
3409         (ix86_update_stack_boundary): Likewise.
3410
3411         * config/i386/i386.h (STACK_REALIGN_DEFAULT): Update comments.
3412
3413 2009-10-30  Richard Earnshaw  <rearnsha@arm.com>
3414
3415         * arm.md (QHSI): New mode iterator.
3416         (movqi): If generating for thumb, then truncate any immediate to
3417         8 bits.
3418         * thumb2.md (thumb2_movsi_shortim and peephole2 generator): Replace
3419         with...
3420         (thumb2_mov<mode>_shortim and peephole2 generator): ... iterator based
3421         version.
3422
3423 2009-10-29  Cary Coutant  <ccoutant@google.com>
3424
3425         PR debug/41700
3426         * dwarf2out.c (dwarf2_debug_hooks): Add entries for new hook (two
3427         locations in the source).
3428         (store_vcall_insn): New function.
3429         (lookup_vcall_insn): New function.
3430         (dwarf2out_virtual_call_token): Use store_vcall_insn.
3431         (dwarf2out_copy_call_info): New function.
3432         (dwarf2out_virtual_call): Use lookup_vcall_insn.
3433         * emit-rtl.c (try_split): Call copy_call_info debug hook.
3434         * debug.h (struct gcc_debug_hooks): Add copy_call_info hook.
3435         * debug.c (do_nothing_debug_hooks): Add dummy entry for new hook.
3436         (debug_nothing_rtx_rtx): New dummy hook.
3437         * dbxout.c (dbx_debug_hooks): Add dummy entry for new hook.
3438         (xcoff_debug_hooks): Likewise.
3439         * sdbout.c (sdb_debug_hooks): Likewise.
3440         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
3441
3442 2009-10-29  David Daney  <ddaney@caviumnetworks.com>
3443
3444         * doc/invoke.texi (mmcount-ra-address): Document new command line
3445         option.
3446         * config/mips/mips.opt (mmcount-ra-address): New option.
3447         * config/mips/mips-protos.h (mips_function_profiler): Declare new
3448         function.
3449         * config/mips/mips.c (struct mips_frame_info): Add ra_fp_offset
3450         member.
3451         (mips_for_each_saved_gpr_and_fpr): Set ra_fp_offset.
3452         (mips_function_profiler): Moved from FUNCTION_PROFILER, and
3453         rewritten.
3454         * config/mips/mips.h (FUNCTION_PROFILER): Body of macro moved to
3455         mips_function_profiler.
3456
3457 2009-10-29  Steve Ellcey  <sje@cup.hp.com>
3458
3459         PR middle-end/37565
3460         PR target/38018
3461         * doc/tm.texi (OVERRIDE_OPTIONS): Update.
3462         (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
3463         * optc-gen.awk (cl_target_option_restore): Include call to
3464         targetm.override_options_after_change.
3465         * target-def.h (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
3466         * target.h (override_options_after_change): New.
3467         * c-common.c (parse_optimize_options): Call
3468         targetm.override_options_after_change.
3469         * config/ia64/ia64.c (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
3470         (ia64_override_options_after_change): New.
3471         (ia64_override_options) Add call to above.
3472
3473 2009-10-29  Michael Matz  <matz@suse.de>
3474
3475         * tree-ssa-math-opts.c (execute_convert_to_rsqrt): Remove.
3476         (gate_convert_to_rsqrt): Ditto.
3477         (pass_convert_to_rsqrt): Ditto.
3478         * tree-pass.h (pass_convert_to_rsqrt): Don't declare.
3479         * passes.c (init_optimization_passes): Don't add pass_convert_to_rsqrt
3480         to pass list.
3481
3482         * config/i386/i386.c (ix86_emit_swdivsf): Change evaluation order.
3483
3484 2009-10-29  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
3485
3486         * config/arm/arm.c (find_best_start): Fix type of remainder to be
3487         unsigned.
3488
3489 2009-10-29  Martin Jambor  <mjambor@suse.cz>
3490
3491         PR tree-optimization/41775
3492         * tree-sra.c (build_ref_for_offset): Unshare *expr if not NULL.
3493         (generate_subtree_copies): Do not unshare agg.
3494         (load_assign_lhs_subreplacements): Do not unshare rhs.
3495         (sra_modify_assign): Do not unshare exprs.
3496         (propagate_subacesses_accross_link): Renamed to
3497         propagate_subaccesses_across_link.
3498
3499 2009-10-29  Richard Earnshaw  <rearnsha@arm.com>
3500
3501         * arm.c (count_insns_for_constant): Rework to support counting for
3502         thumb2 immediates as well.
3503         (find_best_start): Split out from arm_gen_constant.
3504         (arm_gen_constant): Rework to support XOR with immediate.
3505
3506 2009-10-29  Chao-ying Fu  <fu@mips.com>
3507
3508         * config/mips/mips.c (mips_emit_unary, mips_force_unary): New
3509         functions.
3510         (mips_expand_synci_loop):  Use the length rtx to control the
3511         synci loop from the begin rtx that points to the first byte of
3512         the cache line.
3513
3514 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
3515
3516         * doc/invoke.texi: Rename -use-linker-plugin -fuse-linker-plugin.
3517
3518 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
3519
3520         * dbxout.c (dbxout_common_check): Accept non public trees.
3521         * dwarf2out.c (fortran_common): Accept non public trees.
3522
3523 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
3524
3525         * common.opt (fuse-linker-plugin): New option.
3526         * gcc.c (LINK_COMMAND_SPEC, main): Rename use-linker-plugin to
3527         fuse-linker-plugin.
3528         * opts.c (common_handle_option): Ignore OPT_fuse_linker_plugin.
3529
3530 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
3531
3532         PR rtl-optimization/39715
3533         * config/arm/arm.md (cstoresi4): Use gen_cstoresi_ltu_thumb1.
3534         (gen_cstoresi_ltu_thumb1): New splitter.
3535
3536 2009-10-28  Richard Guenther  <rguenther@suse.de>
3537
3538         PR lto/41808
3539         PR lto/41839
3540         * tree-ssa.c (useless_type_conversion_p): Do not treat
3541         conversions to pointers to incomplete types as useless.
3542         * gimple.c (gimple_types_compatible_p): Compare struct tags,
3543         not typedef names.
3544
3545 2009-10-28  Jakub Jelinek  <jakub@redhat.com>
3546
3547         * var-tracking.c (emit_note_insn_var_location): Don't call the second
3548         vt_expand_loc unnecessarily when location is not a register nor
3549         memory.
3550
3551         PR middle-end/41837
3552         * ipa-struct-reorg.c (find_field_in_struct_1): Return NULL if
3553         fields don't have DECL_NAME.
3554
3555         PR debug/41801
3556         * builtins.c (get_builtin_sync_mem): Expand loc in ptr_mode,
3557         call convert_memory_address on addr.
3558
3559         PR target/41762
3560         * config/i386/i386.c (ix86_pic_register_p): Don't call
3561         rtx_equal_for_cselib_p for VALUEs discarded as useless.
3562
3563 2009-10-28  Richard Sandiford  <rdsandiford@googlemail.com>
3564
3565         * var-tracking.c (emit_note_insn_var_location): Get the mode of
3566         a variable part from its REG, MEM or VALUE.
3567
3568 2009-10-28  Richard Guenther  <rguenther@suse.de>
3569
3570         * gimple.c (gimple_get_alias_set): Fix comment typo.
3571
3572 2009-10-28  Richard Guenther  <rguenther@suse.de>
3573
3574         * tree.c (free_lang_data_in_type): Do not call get_alias_set.
3575         (free_lang_data): Unconditionally compute alias sets for all
3576         standard integer types.  Bail out if gate bailed out previously.
3577         Do not reset the types_compatible_p langhook.
3578         (gate_free_lang_data): Remove.
3579         (struct pass_ipa_free_lang_data): Enable unconditionally.
3580         * gimple.c (gimple_get_alias_set): Use the same alias-set for
3581         all pointer types.
3582
3583 2009-10-28  Richard Guenther  <rguenther@suse.de>
3584
3585         PR middle-end/41855
3586         * tree-ssa-alias.c (refs_may_alias_p_1): Deal with CONST_DECLs
3587         (ref_maybe_used_by_call_p_1): Fix bcopy handling.
3588         (call_may_clobber_ref_p_1): Likewise.
3589         * tree-ssa-structalias.c (find_func_aliases): Likewise.
3590         * alias.c (nonoverlapping_memrefs_p): Deal with CONST_DECLs.
3591
3592 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
3593
3594         PR rtl-optimization/41812
3595
3596         Revert:
3597         2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
3598
3599         * df-problems.c (df_md_scratch): New.
3600         (df_md_alloc, df_md_free): Allocate/free it.
3601         (df_md_local_compute): Only include live registers in init.
3602         (df_md_transfer_function): Prune the in-set computed by
3603         the confluence function, and the gen-set too.
3604
3605 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
3606
3607         PR rtl-optimization/39715
3608         * combine.c (simplify_comparison): Use extensions to
3609         widen comparisons.  Try an ANDing first.
3610
3611 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
3612
3613         PR rtl-optimization/40741
3614         * config/arm/arm.c (thumb1_rtx_costs): IOR or XOR with
3615         a small constant is cheap.
3616         * config/arm/arm.md (andsi3, iorsi3): Try to place the result of
3617         force_reg on the LHS.
3618         (xorsi3): Likewise, and split the XOR if the constant is complex
3619         and not in Thumb mode.
3620
3621 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
3622
3623         * expmed.c (emit_store_flag): Check costs before
3624         transforming to the opposite representation.
3625
3626 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
3627
3628         * config/sh/sh.md (cbranchfp4_media): Remove hack extending
3629         cstore result to DImode.
3630
3631 2009-10-28  Kaz Kojima  <kkojima@gcc.gnu.org>
3632
3633         * config/sh/sh.md (stuff_delay_slot): Move const_int pattern
3634         inside the unspec vector.
3635
3636 2009-10-27  Richard Henderson  <rth@redhat.com>
3637
3638         * cgraphunit.c (cgraph_optimize): Maintain timevar stack properly.
3639
3640 2009-10-27  Richard Henderson  <rth@redhat.com>
3641
3642         PR c++/41819
3643         * tree-eh.c (eh_region_may_contain_throw_map): Rename from
3644         eh_region_may_contain_throw; update users.
3645         (eh_region_may_contain_throw): New function.
3646         (lower_catch): Check flag_exceptions before creating exception region.
3647         (lower_eh_filter, lower_eh_must_not_throw): Likewise.
3648         (lower_cleanup): Tidy existing flag_exceptions check to match.
3649
3650 2009-10-27  Kai Tietz <kai.tietz@onevision.com>
3651
3652         PR/41799
3653         * config/i386/mingw32.h (CHECK_EXECUTE_STACK_ENABLED): New macro.
3654         * config/i386/mingw.opt: Add fset-stack-executable.
3655         * config/i386/i386.c (ix86_trampoline_init): Make call to
3656         emit_library_call conditional, if CHECK_EXECUTE_STACK_ENABLED is
3657         defined and its value is not zero.
3658         * doc/invoke.texi
3659
3660 2009-10-27  Richard Guenther  <rguenther@suse.de>
3661
3662         * tree-ssa-structalias.c (find_func_aliases): In IPA mode
3663         handle calls to externally visible functions like in regular mode.
3664         (create_variable_info_for): Do not create function infos here.
3665         (have_alias_info): Remove write-only variable.
3666         (solve_constraints): New function split out from common code
3667         in compute_points_to_sets and ipa_pta_execute.
3668         (compute_points_to_sets): Adjust.
3669         (ipa_pta_execute): Likewise.  Handle clones and externally visible
3670         functions like in non-IPA mode.
3671
3672 2009-10-27  Jakub Jelinek  <jakub@redhat.com>
3673
3674         PR c/41842
3675         * c-typeck.c (convert_arguments): Return -1 if any of the arguments is
3676         error_mark_node.
3677
3678 2009-10-27  Richard Guenther  <rguenther@suse.de>
3679
3680         * tree-complex.c (expand_complex_div_wide): Check for
3681         INTEGER_CST, not TREE_CONSTANT on comparison folding result.
3682
3683 2009-10-27  Revital Eres  <eres@il.ibm.com>
3684
3685         PR tree-optimization/40648
3686         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
3687         Change decision of when to peel for alignment.
3688
3689 2009-10-27  Richard Guenther  <rguenther@suse.de>
3690
3691         PR lto/41821
3692         * gimple.c (gimple_types_compatible_p): Handle OFFSET_TYPE.
3693
3694 2009-10-27  Aldy Hernandez  <aldyh@redhat.com>
3695
3696         PR bootstrap/41451
3697         * fold-const.c (fold_binary_loc): Do not call
3698         protected_set_expr_location.
3699
3700 2009-10-27  Wei Guozhi  <carrot@google.com>
3701
3702         PR target/41705
3703         * target.h (have_conditional_execution): Add a new target hook
3704         function.
3705         * target-def.h (TARGET_HAVE_CONDITIONAL_EXECUTION): Likewise.
3706         * targhooks.h (default_have_conditional_execution): Likewise.
3707         * targhooks.c (default_have_conditional_execution): Likewise.
3708         * doc/tm.texi (TARGET_HAVE_CONDITIONAL_EXECUTION): Document it.
3709         * config/arm/arm.c (TARGET_HAVE_CONDITIONAL_EXECUTION): Define it.
3710         (arm_have_conditional_execution): New function.
3711         * ifcvt.c (noce_process_if_block, find_if_header,
3712         cond_exec_find_if_block, dead_or_predicable): Change the usage of
3713         macro HAVE_conditional_execution to a target hook call.
3714         * recog.c (peephole2_optimize): Likewise.
3715         * sched-rgn.c (add_branch_dependences): Likewise.
3716         * final.c (asm_insn_count, final_scan_insn): Likewise.
3717         * bb-reorder.c (HAVE_conditional_execution): Remove it.
3718
3719 2009-10-26  Ben Elliston  <bje@au.ibm.com>
3720             Michael Meissner  <meissner@linux.vnet.ibm.com>
3721             Ulrich Weigand  <uweigand@de.ibm.com>
3722
3723         * config.gcc (spu-*-elf*): Add spu_cache.h to extra_headers.
3724         * config/spu/spu_cache.h: New file.
3725
3726         * config/spu/cachemgr.c: New file.
3727         * config/spu/cache.S: New file.
3728
3729         * config/spu/spu.h (ASM_OUTPUT_SYMBOL_REF): Define.
3730         (ADDR_SPACE_EA): Define.
3731         (TARGET_ADDR_SPACE_KEYWORDS): Define.
3732         * config/spu/spu.c (EAmode): New macro.
3733         (TARGET_ADDR_SPACE_POINTER_MODE): Define.
3734         (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
3735         (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Likewise.
3736         (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Likewise.
3737         (TARGET_ADDR_SPACE_SUBSET_P): Likewise.
3738         (TARGET_ADDR_SPACE_CONVERT): Likewise.
3739         (TARGET_ASM_SELECT_SECTION): Likewise.
3740         (TARGET_ASM_UNIQUE_SECTION): Likewise.
3741         (TARGET_ASM_UNALIGNED_SI_OP): Likewise.
3742         (TARGET_ASM_ALIGNED_DI_OP): Likewise.
3743         (ea_symbol_ref): New function.
3744         (spu_legitimate_constant_p): Handle __ea qualified addresses.
3745         (spu_addr_space_legitimate_address_p): New function.
3746         (spu_addr_space_legitimize_address): Likewise.
3747         (cache_fetch): New global.
3748         (cache_fetch_dirty): Likewise.
3749         (ea_alias_set): Likewise.
3750         (ea_load_store): New function.
3751         (ea_load_store_inline): Likewise.
3752         (expand_ea_mem): Likewise.
3753         (spu_expand_mov): Handle __ea qualified memory references.
3754         (spu_addr_space_pointer_mode): New function.
3755         (spu_addr_space_address_mode): Likewise.
3756         (spu_addr_space_subset_p): Likewise.
3757         (spu_addr_space_convert): Likewise.
3758         (spu_section_type_flags): Handle "._ea" section.
3759         (spu_select_section): New function.
3760         (spu_unique_section): Likewise.
3761         * config/spu/spu-c.c (spu_cpu_cpp_builtins): Support __EA32__
3762         and __EA64__ predefined macros.
3763         * config/spu/spu-elf.h (LIB_SPEC): Handle -mcache-size= and
3764         -matomic-updates switches.
3765
3766         * config/spu/t-spu-elf (MULTILIB_OPTIONS): Define.
3767         (EXTRA_MULTILIB_PARTS): Add libgcc_cachemgr.a,
3768         libgcc_cachemgr_nonatomic.a, libgcc_cache8k.a, libgcc_cache16k.a,
3769         libgcc_cache32k.a, libgcc_cache64k.a, libgcc_cache128k.a.
3770         ($(T)cachemgr.o, $(T)cachemgr_nonatomic.o): New target.
3771         ($(T)cache8k.o, $(T)cache16k.o, $(T)cache32k.o, $(T)cache64k.o,
3772         $(T)cache128k.o): Likewise.
3773         ($(T)libgcc_%.a): Likewise.
3774
3775         * config/spu/spu.h (TARGET_DEFAULT): Add MASK_ADDRESS_SPACE_CONVERSION.
3776         * config/spu/spu.opt (-mea32/-mea64): Add switches.
3777         (-maddress-space-conversion): Likewise.
3778         (-mcache-size=): Likewise.
3779         (-matomic-updates): Likewise.
3780         * doc/invoke.texi (-mea32/-mea64): Document.
3781         (-maddress-space-conversion): Likewise.
3782         (-mcache-size=): Likewise.
3783         (-matomic-updates): Likewise.
3784
3785 2009-10-26  Ben Elliston  <bje@au.ibm.com>
3786             Michael Meissner  <meissner@linux.vnet.ibm.com>
3787             Ulrich Weigand  <uweigand@de.ibm.com>
3788
3789         * doc/tm.texi (TARGET_ADDR_SPACE_KEYWORDS): Document.
3790
3791         * c-common.c (c_common_reswords): If TARGET_ADDR_SPACE_KEYWORDS is
3792         defined, add the named address space keywords.
3793         (c_addr_space_name): New function.
3794         (complete_array_type): Preserve named address space.
3795         (handle_mode_attribute): Use targetm.addr_space.valid_pointer_mode
3796         instead of targetm.valid_pointer_mode.
3797
3798         * c-common.h (enum rid): Add RID_ADDR_SPACE_0 .. RID_ADDR_SPACE_15,
3799         RID_FIRST_ADDR_SPACE and RID_LAST_ADDR_SPACE.
3800         (ADDR_SPACE_KEYWORD): New macro.
3801         (c_addr_space_name): Add prototype.
3802
3803         * c-tree.h (struct c_declspecs): Add address_space member.
3804         (declspecs_add_addrspace): Add prototype.
3805
3806         * c-pretty-print.c (pp_c_type_qualifier_list): Handle address spaces.
3807
3808         * c-parser.c (c_parse_init): Add assertion.
3809         (typedef enum c_id_kind): Add C_ID_ADDRSPACE.
3810         (c_lex_one_token): Handle address space keywords.
3811         (c_token_starts_typename): Likewise.
3812         (c_token_starts_declspecs): Likewise.
3813         (c_parser_declspecs): Likewise.
3814         (c_parser_postfix_expression_after_paren_type): Diagnose compound
3815         literal within function qualified with named address space.
3816
3817         * c-decl.c (diagnose_mismatched_decls): Diagnose conflicting named
3818         address space qualifiers.
3819         (shadow_tag_warned): Warn about useless address space qualifiers.
3820         (quals_from_declspecs): Handle address space qualifiers.
3821         (grokdeclarator): Likewise.
3822         (build_null_declspecs): Likewise.
3823         (declspecs_add_addrspace): New function.
3824
3825         * c-typeck.c (addr_space_superset): New function.
3826         (qualify_type): Handle named address spaces.
3827         (composite_type): Likewise.
3828         (common_pointer_type): Likewise.
3829         (comp_target_types): Likewise.
3830         (build_conditional_expr): Likewise.
3831         (handle_warn_cast_qual): Likewise.
3832         (build_c_cast): Likewise.
3833         (convert_for_assignment): Likewise.
3834         (build_binary_op): Likewise.
3835         (pointer_diff): Handle named address spaces.  Use intermediate
3836         integer type of sufficient size if required.
3837
3838 2009-10-26  Ben Elliston  <bje@au.ibm.com>
3839             Michael Meissner  <meissner@linux.vnet.ibm.com>
3840             Ulrich Weigand  <uweigand@de.ibm.com>
3841
3842         * doc/tm.texi (TARGET_ADDR_SPACE_POINTER_MODE): Document.
3843         (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
3844         (TARGET_ADDR_SPACE_VALID_POINTER_MODE): Likewise.
3845
3846         * target.h (struct target_def): Add pointer_mode, address_mode,
3847         and valid_pointer_mode to addr_space substructure.
3848         * target-def.h (TARGET_ADDR_SPACE_POINTER_MODE): Define.
3849         (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
3850         (TARGET_ADDR_SPACE_VALID_POINTER_MODE): Likewise.
3851         (TARGET_ADDR_SPACE_HOOKS): Add them.
3852         * targhooks.c (target_default_pointer_address_modes_p): New function.
3853         * target.h (target_default_pointer_address_modes_p): Add prototype.
3854         * targhooks.c (default_addr_space_pointer_mode): New function.
3855         (default_addr_space_address_mode): Likewise.
3856         (default_addr_space_valid_pointer_mode): Likewise.
3857         * targhooks.h (default_addr_space_pointer_mode): Add prototype.
3858         (default_addr_space_address_mode): Likewise.
3859         (default_addr_space_valid_pointer_mode): Likewise.
3860         * output.h (default_valid_pointer_mode): Move to ...
3861         * targhooks.h (default_valid_pointer_mode): ... here.
3862         * varasm.c (default_valid_pointer_mode): Move to ...
3863         * targhooks.c (default_valid_pointer_mode): ... here.
3864
3865         * varasm.c (output_constant): Use targetm.addr_space.valid_pointer_mode
3866         instead of targetm.valid_pointer_mode.
3867
3868         * fold-const.c (fit_double_type): Use int_or_pointer_precision.
3869         * tree.c (integer_pow2p): Likewise.
3870         (tree_log2): Likewise.
3871         (tree_floor_log2): Likewise.
3872         (signed_or_unsigned_type_for): Support pointer type of different size.
3873         (int_or_pointer_precision): New function.
3874         * tree.h (int_or_pointer_precision): Add prototype.
3875         * stor-layout.c (layout_type): Set TYPE_PRECISION for offset types.
3876         * varasm.c (initializer_constant_valid_p): Use TYPE_PRECISION of
3877         incoming pointer type instead of POINTER_SIZE.
3878
3879         * tree.c (build_pointer_type): Use appropriate pointer mode
3880         instead of ptr_mode.
3881         (build_reference_type): Likewise.
3882         * expr.c (store_expr): Likewise.
3883         (expand_expr_addr_expr): Likewise.
3884         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Likewise.
3885         * cfgexpand.c (expand_debug_expr): Likewise.
3886
3887         * auto-inc-dec.c: Include "target.h".
3888         (try_merge): Use appropriate address mode instead of Pmode.
3889         (find_inc): Likewise.
3890         * combine.c (find_split_point): Likewise.
3891         * cselib.c (cselib_record_sets): Likewise.
3892         * dse.c (replace_inc_dec): Likewise.
3893         (canon_address): Likewise.
3894         * var-tracking.c (replace_expr_with_values): Likewise.
3895         (count_uses): Likewise.
3896         (add_uses): Likewise.
3897         (add_stores): Likewise.
3898         * emit-rtl.c: Include "target.h".
3899         (adjust_address_1): Use appropriate address mode instead of Pmode.
3900         (offset_address): Likewise.
3901         * explow.c (break_out_memory_refs): Likewise.
3902         (memory_address_addr_space): Likewise.
3903         (promote_mode): Likewise.
3904         * expr.c (move_by_pieces): Likewise.
3905         (emit_block_move_via_loop): Likewise.
3906         (store_by_pieces): Likewise.
3907         (store_by_pieces_1): Likewise.
3908         (expand_assignment): Likewise.
3909         (store_constructor): Likewise.
3910         (expand_expr_addr_expr): Likewise.
3911         (expand_expr_real_1): Likewise.
3912         * cfgexpand.c (expand_debug_expr): Likewise.
3913         * ifcvt.c (noce_try_cmove_arith): Likewise.
3914         * regcprop.c (kill_autoinc_value): Likewise.
3915         * regmove.c (try_auto_increment): Likewise.
3916         * reload.c (find_reloads): Likewise.
3917         (find_reloads_address): Likewise.
3918         (find_reloads_address_1): Likewise.
3919         * sched-deps.c: Include "target.h".
3920         (sched_analyze_1): Use appropriate address mode instead of Pmode.
3921         (sched_analyze_2): Likewise.
3922         * sel-sched-dump.c: Include "target.h".
3923         (debug_mem_addr_value): Use appropriate address mode instead of Pmode.
3924         * stor-layout.c (layout_type): Likewise.
3925         * tree-ssa-loop-ivopts.c (produce_memory_decl_rtl): Likewise.
3926         (multiplier_allowed_in_address_p): Likewise.
3927         (get_address_cost): Likewise.
3928         * varasm.c (make_decl_rtl): Likewise.
3929
3930         * expr.c (expand_assignment): Always convert offsets to appropriate
3931         address mode.
3932         (store_expr): Likewise.
3933         (store_constructor): Likewise.
3934         (expand_expr_real_1): Likewise.
3935
3936         * reload.h (form_sum): Add MODE argument.
3937         * reload.c (form_sum): Add MODE argument, use it instead of Pmode.
3938         Update recursive calls.
3939         (subst_indexed_address): Update calls to form_sum.
3940
3941         * tree-flow.h (addr_for_mem_ref): Add ADDRSPACE argument.
3942         * tree-ssa-address.c: Include "target.h".
3943         (templates): Replace by ...
3944         (mem_addr_template_list): ... this new vector.
3945         (TEMPL_IDX): Handle address space numbers.
3946         (gen_addr_rtx): Add address mode argument, use it instead of Pmode.
3947         (addr_for_mem_ref): Add ADDRSPACE argument.  Use per-address-space
3948         instead of global cache.  Update call to gen_addr_rtx.
3949         (valid_mem_ref_p): Update call to addr_for_mem_ref.
3950         * expr.c (expand_expr_real_1): Update call to addr_for_mem_ref.
3951
3952         * rtl.h (convert_memory_address_addr_space): Add prototype.
3953         (convert_memory_address): Define as macro.
3954         * explow.c (convert_memory_address): Rename to ...
3955         (convert_memory_address_addr_space): ... this.  Add ADDRSPACE argument.
3956         Use appropriate pointer and address modes instead of ptr_mode / Pmode.
3957         Update recursive calls.
3958         (memory_address_addr_space): Call convert_memory_address_addr_space.
3959         * expmed.c (make_tree): Likewise.
3960         * expr.c (expand_assignment): Likewise.
3961         (expand_expr_addr_expr_1): Likewise.  Also, add ADDRSPACE argument.
3962         (expand_expr_addr_expr): Likewise.  Also, update call.
3963
3964         * alias.c (find_base_value): Guard pointer size optimizations.
3965         (find_base_term): Likewise.
3966         * rtlanal.c (nonzero_bits1): Likewise.
3967         (num_sign_bit_copies1): Likewise.
3968         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
3969
3970         * Makefile.in (tree-ssa-address.o): Add $(TARGET_H) dependency.
3971         (emit-rtl.o): Likewise.
3972         (auto-inc-dec.o): Likewise.
3973         (sched-deps.o): Likewise.
3974
3975 2009-10-26  Ben Elliston  <bje@au.ibm.com>
3976             Michael Meissner  <meissner@linux.vnet.ibm.com>
3977             Ulrich Weigand  <uweigand@de.ibm.com>
3978
3979         * doc/extend.texi (Named Address Spaces): New section.
3980         * coretypes.h (addr_space_t): New type.
3981         (ADDR_SPACE_GENERIC): New define.
3982         (ADDR_SPACE_GENERIC_P): New macro.
3983
3984         * doc/tm.texi (Named Address Spaces): New section.
3985         (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Document.
3986         (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Document.
3987         (TARGET_ADDR_SPACE_SUBSET_P): Document.
3988         (TARGET_ADDR_SPACE_CONVERT): Document.
3989         * target.h (struct gcc_target): Add addr_space substructure.
3990         * target-def.h (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Define.
3991         (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Likewise.
3992         (TARGET_ADDR_SPACE_SUBSET_P): Likewise.
3993         (TARGET_ADDR_SPACE_CONVERT): Likewise.
3994         (TARGET_ADDR_SPACE_HOOKS): Likewise.
3995         (TARGET_INITIALIZER): Initialize addr_space hooks.
3996         * targhooks.c (default_addr_space_legitimate_address_p): New function.
3997         (default_addr_space_legitimize_address): Likewise.
3998         (default_addr_space_subset_p): Likewise.
3999         (default_addr_space_convert): Likewise.
4000         * targhooks.h (default_addr_space_legitimate_address_p): Add prototype.
4001         (default_addr_space_legitimize_address): Likewise.
4002         (default_addr_space_subset_p): Likewise.
4003         (default_addr_space_convert): Likewise.
4004
4005         * doc/rtl.texi (MEM_ADDR_SPACE): Document.
4006         * rtl.h (mem_attrs): Add ADDRSPACE memory attribute.
4007         (MEM_ADDR_SPACE): New macro.
4008         * emit-rtl.c (get_mem_attrs): Add ADDRSPACE argument and set
4009         address space memory attribute.
4010         (mem_attrs_htab_hash): Handle address space memory attribute.
4011         (mem_attrs_htab_eq): Likewise.
4012         (set_mem_attributes_minus_bitpos): Likewise.
4013         (set_mem_alias_set): Likewise.
4014         (set_mem_align): Likewise.
4015         (set_mem_expr): Likewise.
4016         (set_mem_offset): Likewise.
4017         (set_mem_size): Likewise.
4018         (adjust_address_1): Likewise.
4019         (offset_address): Likewise.
4020         (widen_memoy_address): Likewise.
4021         (get_spill_slot_decl): Likewise.
4022         (set_mem_attrs_for_spill): Likewise.
4023         (set_mem_addr_space): New function.
4024         * emit-rtl.h (set_mem_addr_space): Add prototype.
4025         * print-rtl.c (print_rtx): Print address space memory attribute.
4026         * expr.c (expand_assignment): Set address space memory attribute
4027         of generated MEM RTXes as appropriate.
4028         (expand_expr_real_1): Likewise.
4029         * cfgexpand.c (expand_debug_expr): Likewise.
4030         * tree-ssa-loop-ivopts.c (produce_memory_decl_rtl): Likewise.
4031
4032         * tree.h (struct tree_base): Add address_space bitfield.  Reduce
4033         size of "spare" bitfield.
4034         (TYPE_ADDR_SPACE): New macro.
4035         (ENCODE_QUAL_ADDR_SPACE): Likewise.
4036         (DECODE_QUAL_ADDR_SPACE): Likewise.
4037         (CLEAR_QUAL_ADDR_SPACE): Likewise.
4038         (KEEP_QUAL_ADDR_SPACE): Likewise.
4039         (TYPE_QUALS): Encode type address space.
4040         (TYPE_QUALS_NO_ADDR_SPACE): New macro.
4041         * tree.c (set_type_quals): Set type address space.
4042         (build_array_type): Inherit array address space from element type.
4043         * print-tree.c (print_node_brief): Print type address space.
4044         (print_node): Likewise.
4045         * tree-pretty-print.c (dump_generic_node): Likewise.
4046
4047         * explow.c (memory_address): Rename to ...
4048         (memory_address_addr_space): ... this.  Add ADDRSPACE argument.
4049         Use address-space aware variants of memory address routines.
4050         * recog.c (memory_address_p): Rename to ...
4051         (memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
4052         Use address-space aware variants of memory address routines.
4053         (offsettable_address_p): Rename to ...
4054         (offsettable_address_addr_space_p): ... this.  Add ADDRSPACE argument.
4055         Use address-space aware variants of memory address routines.
4056         * reload.c (strict_memory_address_p): Rename to ...
4057         (strict_memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
4058         Use address-space aware variants of memory address routines.
4059         (maybe_memory_address_p): Rename to ...
4060         (maybe_memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
4061         Use address-space aware variants of memory address routines.
4062         * expr.h (memory_address_addr_space): Add prototype.
4063         (memory_address): Define as macro.
4064         * recog.h (memory_address_addr_space_p): Add prototype.
4065         (memory_address_p): Define as macro.
4066         (offsettable_address_addr_space_p): Add prototype.
4067         (offsettable_address_p): Define as macro.
4068         (strict_memory_address_addr_space_p): Add prototype.
4069         (strict_memory_address_p): Define as macro.
4070
4071         * combine.c (find_split_point): Use address-space aware variants
4072         of memory address routines.
4073         * emit-rtl.c (operand_subword): Likewise.
4074         (change_address_1): Likewise.
4075         (adjust_address_1): Likewise.
4076         (offset_address): Likewise.
4077         * expr.c (emit_move_insn): Likewise.
4078         (expand_assignment): Likewise.
4079         (expand_expr_real_1): Likewise.
4080         * recog.c (verify_changes): Likewise.
4081         (general_operand): Likewise.
4082         (offsettable_memref_p): Likewise.
4083         (offsettable_nonstrict_memref_p): Likewise.
4084         (constrain_operands): Likewise.
4085         * reload.c (get_secondary_mem): Likewise.
4086         (find_reloads_toplev): Likewise.
4087         (find_reloads_address): Likewise.
4088         (find_reloads_subreg_address): Likewise.
4089         * reload1.c (reload): Likewise.
4090         * rtlhooks.c (gen_lowpart_if_possible): Likewise.
4091         * rtl.h (address_cost): Add ADDRSPACE argument.
4092         * rtlanal.c (address_cost): Add ADDRSPACE argument.  Use address-space
4093         aware variant of memory address routines.
4094         * loop-invariant.c (create_new_invariant): Update address_cost call.
4095         * tree-ssa-loop-ivopts.c (computation_cost): Likewise.
4096         * fwprop.c (should_replace_address): Add ADDRSPACE argument.
4097         Use address-space aware variant of memory address routines.
4098         (propagate_rtx_1): Update call to should_replace_address.
4099         * tree-flow.h (multiplier_allowed_in_address_p): Add ADDRSPACE
4100         argument.
4101         * tree-ssa-loop-ivopts.c (multiplier_allowed_in_address_p): Add
4102         ADDRSPACE argument.  Use per-address-space instead of global cache.
4103         Use address-space aware variant of memory address routines.
4104         (get_address_cost): Likewise.
4105         (get_computation_cost_at): Update calls.
4106         * tree-ssa-address.c (valid_mem_ref_p): Add ADDRSPACE argument.
4107         Use address-space aware variant of memory address routines.
4108         (create_mem_ref_raw): Update call to valid_mem_ref_p.
4109         (most_expensive_mult_to_index): Update call to
4110         multiplier_allowed_in_address_p.
4111
4112         * dwarf2out.c (modified_type_die): Output DW_AT_address_class
4113         attribute to indicate named address spaces.
4114
4115         * varasm.c (get_variable_section): DECLs in named address spaces
4116         cannot be "common".
4117
4118         * reload.c (find_reloads_address): Do not use LEGITIMIZE_RELOAD_ADDRESS
4119         for addresses in a non-generic address space.
4120
4121         * expr.c (emit_block_move_hints): Do not use libcalls for
4122         memory in non-generic address spaces.
4123         (clear_storage_hints): Likewise.
4124         (expand_assignment): Likewise.
4125
4126         * fold-const.c (operand_equal_p): Expressions refering to different
4127         address spaces are not equivalent.
4128
4129         * rtl.c (rtx_equal_p_cb): MEMs refering to different address
4130         spaces are not equivalent.
4131         (rtx_equal_p): Likewise.
4132         * cse.c (exp_equiv_p): Likewise.
4133         * jump.c (rtx_renumbered_equal_p): Likewise.
4134         * reload.c (operands_match_p): Likewise.
4135
4136         * alias.c (nonoverlapping_memrefs_p): MEMs refering to different
4137         address spaces may alias.
4138         (true_dependence): Likewise.
4139         (canon_true_dependence): Likewise.
4140         (write_dependence_p): Likewise.
4141
4142         * dse.c (canon_address): Handle named address spaces.
4143         * ifcvt.c (noce_try_cmove_arith): Likewise.
4144
4145         * tree.def (ADDR_SPACE_CONVERT_EXPR): New tree code.
4146         * expr.c (expand_expr_real_2): Expand ADDR_SPACE_CONVERT_EXPR.
4147         * convert.c (convert_to_pointer): Generate ADDR_SPACE_CONVERT_EXPR
4148         to handle conversions between different address spaces.
4149         * fold-const.c (fold_convert_loc): Likewise.
4150         (fold_unary_loc): Handle ADDR_SPACE_CONVERT_EXPR.
4151         * tree-pretty-print.c (dump_generic_node): Likewise.
4152         * gimple-pretty-print.c (dump_unary_rhs): Likewise.
4153         * tree-cfg.c (verify_gimple_assign_unary): Likewise.
4154         * tree-inline.c (estimate_operator_cost): Likewise.
4155         * tree-ssa.c (useless_type_conversion_p): Conversions between pointers
4156         to different address spaces are not useless.
4157
4158 2009-10-26  Jakub Jelinek  <jakub@redhat.com>
4159
4160         PR bootstrap/41345
4161         * cfgcleanup.c (trivially_empty_bb_p): New function.
4162         (try_optimize_bb): Use it instead of checking BB_HEAD == BB_END.
4163
4164         PR debug/41828
4165         * dwarf2out.c (add_pubname, add_pubtype, generic_parameter_die,
4166         add_name_and_src_coords_attributes, gen_namespace_die,
4167         dwarf2out_set_name): Handle dwarf2_name returning NULL.
4168
4169 2009-10-26  Nick Clifton  <nickc@redhat.com>
4170
4171         * config.gcc: Add support for RX target.
4172         * config/rx: New directory.
4173         * config/rx/constraints.md: New file.
4174         * config/rx/predicates.md: New file.
4175         * config/rx/rx.c: New file.
4176         * config/rx/rx.h: New file.
4177         * config/rx/rx.md: New file.
4178         * config/rx/rx.opt: New file.
4179         * config/rx/rx-protos.h: New file.
4180         * config/rx/t-rx: New file.
4181         * doc/extend.texi: Document RX function attributes.
4182         * doc/invoke.texi: Document RX specific command line options.
4183         * doc/contrib.texi: Document RX contribution.
4184         * doc/md.texi: Document RX constraints.
4185         * doc/install.texi: Document RX support.
4186
4187 2009-10-26  Michael Matz  <matz@suse.de>
4188
4189         PR tree-optimization/41783
4190         * tree-ssa-alias.c (get_continuation_for_phi): Export, add a special
4191         case for simple diamonds.
4192         * tree-ssa-alias.h (get_continuation_for_phi): Declare.
4193         * tree-ssa-pre.c (translate_vuse_through_block): Add same_valid
4194         argument, use alias oracle to skip some vdefs.
4195         (phi_translate_1): Change call to above, don't allocate new
4196         value ids if they can stay the same.
4197         (compute_avail): Allow vuse walking when looking up references.
4198
4199 2009-10-26  Richard Guenther  <rguenther@suse.de>
4200
4201         PR tree-optimization/41826
4202         * tree-ssa-structalias.c (get_constraint_for_ptr_offset): Avoid
4203         access to re-allocated vector fields.
4204
4205 2009-10-26  Richard Guenther  <rguenther@suse.de>
4206
4207         * graphite-sese-to-poly.c (check_poly_representation): Fix
4208         compile without checking.
4209
4210 2009-10-26  Janus Weil  <janus@gcc.gnu.org>
4211
4212         PR fortran/41714
4213         * gimple.h (tree_annotate_all_with_location): Remove prototype.
4214         * gimplify.c (tree_should_carry_location_p,
4215         tree_annotate_one_with_location,tree_annotate_all_with_location):
4216         Remove obsolete functions.
4217
4218 2009-10-25  Kaz Kojima  <kkojima@gcc.gnu.org>
4219
4220         PR target/41813
4221         * config/sh/sh.md (stuff_delay_slot): Don't set T_REG in pattern.
4222
4223 2009-10-25  Richard Guenther  <rguenther@suse.de>
4224
4225         * lto-streamer-in.c (unpack_ts_decl_common_value_fields):
4226         Stream DECL_RESTRICTED_P.
4227         * lto-streamer-out.c (pack_ts_decl_common_value_fields): Likewise.
4228
4229 2009-10-25  Richard Sandiford  <rdsandiford@googlemail.com>
4230
4231         * config/mips/mips.c (mips_restore_gp_from_cprestore_slot): Emit
4232         a note when expanding to nothing.
4233
4234 2009-10-25  Richard Guenther  <rguenther@suse.de>
4235
4236         PR middle-end/41814
4237         * tree.c (find_decls_types_r): Deal with Java overloading
4238         BINFO_VIRTUALS for its own purpose.
4239
4240 2009-10-24  Adam Nemet  <anemet@caviumnetworks.com>
4241
4242         * config/mips/predicates.md (hilo_operand): New predicate.
4243         * config/mips/mips.md (<u>mulsidi3_64bit): Change it to a
4244         define_insn.  Correct !ISA_HAS_EXT_INS length from 24 to 28.  Move
4245         splitter part from here ...:
4246         (<u>mulsidi3_64bit splitter for !ISA_HAS_EXT_INS): ... to here.  Swap
4247         op0 and op4 to match the DINS case.
4248         (<u>mulsidi3_64bit splitter for ISA_HAS_EXT_INS): New splitter.
4249
4250 2009-10-24  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
4251
4252         PR middle-end/19154
4253         * avr.md (QIDI): Add new mode iterator.
4254         (sbrx_branch<mode>): Create new zero extract bit, test and jump
4255         patterns for all QI thru DI modes combinations.
4256         (sbrx_and_branch<mode>): Create new and based bit test and jump
4257         patterns for QI thru SI modes.
4258         avr.c (avr_out_sbxx_branch): Use only bit number.
4259
4260 2009-10-24  Jan Hubicka  <jh@suse.cz>
4261
4262         * ipa-reference.c (check_call): Noreturn notrhow calls do not write
4263         to memory.
4264         (analyze_function): When analyzing noreturn nothrow call, do not
4265         compute written stats; free bitmaps of vars early if possible.
4266         (generate_summary): Only update bitmaps if computed.
4267         (propagate): Only dump bitmaps if computed.
4268         (ipa_reference_read_summary): Fix pasto.
4269
4270 2009-10-24  Eric Botcazou  <ebotcazou@adacore.com>
4271
4272         * tree-ssa-alias.c (nonaliasing_component_refs_p): Rename into...
4273         (aliasing_component_refs_p): ...this.  Return true if there is no
4274         common base and the base access types have the same alias set.
4275         (indirect_ref_may_alias_decl_p): Adjust for above renaming.
4276         (indirect_refs_may_alias_p): Likewise.
4277
4278 2009-10-23  Joseph Myers  <joseph@codesourcery.com>
4279
4280         PR c/40033
4281         * c-typeck.c (c_finish_stmt_expr): Do not wrap error_mark_node in
4282         a C_MAYBE_CONST_EXPR.
4283
4284 2009-10-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
4285
4286         PR target/41787
4287         * config/rs6000/rs6000.c (struct machine_function): Add
4288         vsx_or_altivec_used_p to record if vector types are used.
4289         (rs6000_expand_to_rtl_hook): Rename from
4290         rs6000_alloc_sdmode_stack_slot.  If VSX, check to see if there are
4291         any vector operations, so if there are, we can set VRSAVE to
4292         non-zero when only floating point vector registers are used.
4293         (TARGET_EXPAND_TO_RTL_HOOK): Use rs6000_expand_to_rtl_hook.
4294         (rs6000_check_vector_mode): Inner function to check if vector
4295         types are used in the code.
4296         (compute_vrsave_mask): If VSX, make sure VRSAVE is non-zero if
4297         vector instructions are used.
4298
4299         * config/rs6000/rs6000.h (HARD_REGNO_CALL_PART_CLOBBERED):
4300         Indicate that VSX registers which overlap floating point
4301         registers, can't be used across a call, since the ABI only states
4302         the scalar part of the register will be saved and restored.
4303
4304 2009-10-23  Joseph Myers  <joseph@codesourcery.com>
4305
4306         PR c/41673
4307         * alias.c (get_alias_set): Call langhook before returning 0 for
4308         types with structural equality.
4309         * c-common.c (c_common_get_alias_set): Use alias set of element
4310         type for arrays with structural comparison.
4311
4312 2009-10-23  Richard Guenther  <rguenther@suse.de>
4313
4314         PR middle-end/41805
4315         * cfgexpand.c (expand_call_stmt): Use gimple_has_side_effects and
4316         gimple_call_nothrow_p.
4317
4318 2009-10-23  Richard Guenther  <rguenther@suse.de>
4319
4320         PR tree-optimization/41778
4321         * tree-ssa-pre.c (do_regular_insertion): Only insert if a
4322         redundancy along a path in the CFG we want to optimize for speed
4323         is going to be removed.
4324         (execute_pre): Do partial-PRE only if the function is to be
4325         optimized for speed.
4326         (gate_pre): Do not turn off all of PRE when not optimizing a
4327         function for speed.
4328
4329 2009-10-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4330
4331         * builtins.c (fold_builtin_cabs): Use validate_arg().
4332         (fold_builtin_cexp): Fix if-logic.
4333         (fold_builtin_1): Check subtype for BUILT_IN_CIMAG.
4334
4335 2009-10-22  Jeff Law  <law@redhat.com>
4336
4337         * ira-lives.c (process_single_reg_class_operands): Update the
4338         hard reg costs for all the hard registers desired by the
4339         single reg class operand.
4340
4341 2009-10-22  Richard Sandiford  <rdsandiford@googlemail.com>
4342
4343         * simplify-rtx.c (simplify_replace_fn_rtx): Add a fallback case
4344         for rtxes that aren't handled specially.
4345
4346 2009-10-22  Richard Sandiford  <rdsandiford@googlemail.com>
4347
4348         * rtl.h (shallow_copy_rtvec): Declare.
4349         * rtl.c (shallow_copy_rtvec): New function.
4350         * cselib.c (cselib_subst_to_values): Use it.  Only modify an
4351         rtx field if the subrtx has changed.
4352
4353 2009-10-22  Anatoly Sokolov  <aesok@post.ru>
4354
4355         * config/m32c/m32c.c (m32c_function_value_regno_p): New function.
4356         (m32c_function_value): Make static, add new 'outgoing' argument.
4357         (m32c_libcall_value): Make static, add new 'fun' argument.
4358         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
4359         * config/m32c/m32c.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
4360         (FUNCTION_VALUE_REGNO_P): Redefine, use m32c_function_value_regno_p.
4361         * config/m32c/m32c-protos.h (m32c_function_value_regno_p): Declare.
4362         (m32c_function_value, m32c_libcall_value): Delete declaration.
4363
4364 2009-10-22  Diego Novillo  <dnovillo@google.com>
4365
4366         * Makefile.in (PLUGIN_HEADERS): Add output.h and IPA_UTILS_H.
4367
4368 2009-10-22  Razya Ladelsky  <razya@il.ibm.com>
4369
4370         * tree-cfg.c (gimple_duplicate_sese_tail): Fix typos/indentation/white
4371         space.
4372
4373 2009-10-22  Richard Guenther  <rguenther@suse.de>
4374
4375         * lto-streamer.h (lto_symtab_merge_cgraph_nodes): Declare.
4376         * lto-symtab.c (struct lto_symtab_entry_def): Add node member.
4377         (lto_symtab_merge): Do not merge cgraph nodes here.
4378         (lto_symtab_resolve_can_prevail_p): Simplify.
4379         (lto_symtab_resolve_symbols): Store cgraph node.
4380         (lto_symtab_merge_decls_1): Simplify.  Do not drop non-prevailing
4381         functions from the symtab.
4382         (lto_symtab_merge_cgraph_nodes_1): New function.
4383         (lto_symtab_merge_cgraph_nodes): Likewise.
4384
4385 2009-10-22  Richard Guenther  <rguenther@suse.de>
4386
4387         PR lto/41791
4388         * lto-streamer-out.c (lto_output_location): Stream the
4389         system header flag.
4390         * lto-streamer-in.c (lto_input_location): Likewise.
4391
4392 2009-10-22  Razya Ladelsky  <razya@il.ibm.com>
4393
4394         * cfgloopmanip.c (duplicate_subloops): Export.
4395         * tree-parloops.c (loop_parallel_p): Dump if loop is innermost.
4396         (transform_to_exit_first_loop): Duplicate bbs starting from
4397         header up to loop->latch instead of exit->src.
4398         Initialize control variable to the correct number of iterations.
4399         (gather_scalar_reductions): Do not register double reductions.
4400         (parallelize_loops): Dump which loop is tested.
4401         Indicate whether the parallelized loop is inner or not.
4402         Remove the innermost-loop requirement.
4403         * cfgloop.h (duplicate_subloops): Export.
4404         * tree-cfg.c (add_phi_args_after_redirect): New function.
4405         (gimple_duplicate_sese_tail): Remove the no-subloops constraint.
4406         Call duplicate_subloops.
4407         Update number of iterations at the exit condition.
4408         Don't redirect nexits always to the loop exit.
4409         Redirect copied edges from latch to the loop exit.
4410
4411 2009-10-22  Jan Hubicka  <jh@suse.cz>
4412
4413         * ipa-cp.c (ipcp_read_summary): Remove now invalid FIXME and
4414         flag_ltrans check.
4415         * ipa-inline.c (cgraph_mark_inline_edge,
4416         cgraph_decide_inlining_of_small_function,
4417         cgraph_decide_inlining, inline_read_summary): Disable indirect
4418         inlining for WPA for time being.
4419
4420         PR tree-optimize/40556
4421         * ipa-inline.c (cgraph_early_inlining): Fix iterations condition.
4422
4423 2009-10-22  Richard Guenther  <rguenther@suse.de>
4424
4425         * lto-streamer.h (lto_symtab_clear_resolution): Remove.
4426         * lto-symtab.c (lto_symtab_clear_resolution): Likewise.
4427
4428 2009-10-22  Jan Hubicka  <jh@suse.cz>
4429
4430         PR lto/41730
4431         * ipa-reference.c (has_proper_scope_for_analysis): Add fixme about
4432         global vars.
4433         (check_call): Handle only indirect calls.
4434         (propagate_bits): Update comment.
4435         (write_node_summary_p): Turn bogus check to assert.
4436         (ipa_reference_write_summary): Stream calls_read_all properly.
4437         (ipa_reference_read_summary): Stream in calls_read_all properly.
4438         (read_write_all_from_decl): New function.
4439         (propagate): Handle OVERWRITABLE nodes and external calls here.
4440         * ipa-pre-const.c (check_call): In IPA mode handle indirect
4441         calls only.
4442         (analyze_function): Do not check visibility here.
4443         (add_new_function): We summary OVERWRITABLE too.
4444         (generate_summary): Stream OVERWRITABLE nodes too.
4445         (propagate): Handle external calls and OVERWRITABLE nodes here.
4446         (local_pure_const): Check visibility here.
4447
4448 2009-10-22  Jan Hubicka  <jh@suse.cz>
4449
4450         * ipa-cp.c (ipcp_write_summary, ipcp_read_summary): New functions.
4451         (pass_ipa_cp): Register them.
4452         (ipcp_init_stage): Analyze all functions for whopr/lto.
4453         (ipcp_propagate_stage): Skip external calls.
4454         (ipcp_iterate_stage): Call ipa_update_after_lto_read if needed.
4455         * ipa-reference.c (write_node_summary_p): Fix thinko about
4456         availability.
4457         * cgraphunit.c (ipa_passes): When in lto, ne er produce new summaries;
4458         when in ltrans, skip executing of ipa passes since everything
4459         should've been done.
4460         * ipa-inline.c (cgraph_decide_inlining): Remove FIXMEs.
4461         (inline_generate_summary): Likewise.
4462         (inline_read_summary): New function.
4463         (inline_write_summary): New function.
4464         (pass_ipa_inline): Register new hooks.
4465         * ipa-prop.c: Inlcude lto-streamer.h
4466         (ipa_edge_args_vector): Update declaration.
4467         (ipa_count_arguments, ipa_compute_jump_functions,
4468         ipa_free_edge_args_substructures): Move ipa_edge_args_vector into ggc.
4469         (ipa_write_jump_function, ipa_read_jump_function, ipa_write_node_info,
4470         ipa_read_node_info): New static functions.
4471         (ipa_prop_write_jump_functions, ipa_prop_read_jump_functions): Update.
4472         (duplicate_array): Use xmalloc.
4473         (duplicate_ggc_array): New.
4474         (ipa_edge_duplication_hook): Use it.
4475         (ipa_update_after_lto_read): New function.
4476         * ipa-prop.h (ipa_prop_write_jump_functions,
4477         ipa_prop_read_jump_functions): Declare.
4478         (ipa_pass_through_data, ipa_ancestor_jf_data, ipa_member_ptr_cst,
4479         jump_func_value, ipa_member_ptr_cst, ipa_edge_args): Add GTY markers.
4480         (ipa_edge_args_vector): Move into GGC.
4481         (ipa_check_create_edge_args): Update.
4482         (ipa_update_after_lto_read): New.
4483         * passes.c (ipa_write_summaries_1): When in wpa, do not write
4484         summaries.
4485         (ipa_read_summaries): When in ltrans, so not read summaries.
4486         * lto-streamer.c (lto_get_section_name): Add
4487         LTO_section_jump_functions.
4488         * lto-streamer.h (LTO_section_jump_functions): New section.
4489         (produce_asm): Declare.
4490         * lto-cgraph.c (output_cgraph): Output edges in reverse order.
4491         * lto-streamer-out.c (produce_asm): Export.
4492         * lto-streamer-in.c: Include tree-pass.h
4493         (input_function): Free dominance info when done.
4494         (lto_read_body): Push ipa_inline in ltrans stage.
4495         * gengtype.c (open_base_files): Add ipa-prop.h into includes.
4496         * Makefile.in (GTFILES): Add ipa-prop.h
4497
4498 2009-10-22  Matthias Klose  <doko@ubuntu.com>
4499
4500         * doc/install.texi: Document --enable-browser-plugin.
4501
4502 2009-10-21  Vladimir Makarov  <vmakarov@redhat.com>
4503
4504         * doc/invoke.texi (fira-loop-pressure): Update default value.
4505         * opts.c (decode_options): Remove default value setting for
4506         flag_ira_loop_pressure.
4507         * config/ia64/ia64.c (ia64_override_options): Set
4508         flag_ira_loop_pressure up for -O3.
4509         * config/rs6000/rs6000.c (rs6000_override_options): Ditto.
4510
4511 2009-10-21  Sebastian Pop  <sebastian.pop@amd.com>
4512
4513         PR tree-optimization/41497
4514         * tree-scalar-evolution.c (analyze_evolution_in_loop): Return
4515         chrec_dont_know if the evolution function returned by follow_ssa_edge
4516         is constant in the analyzed loop and is not compatible with the
4517         initial value before the loop.
4518         * tree-chrec.h (no_evolution_in_loop_p): Call STRIP_NOPS.
4519
4520 2009-10-21  Joseph Myers  <joseph@codesourcery.com>
4521
4522         * config/sh/sh.c (nonpic_symbol_mentioned_p): Allow UNSPEC_TPOFF.
4523
4524 2009-10-21  Jakub Jelinek  <jakub@redhat.com>
4525
4526         PR other/25507
4527         * doc/invoke.texi: Document -print-multi-os-directory.
4528
4529 2009-10-21  Jack Howarth  <howarth@bromo.med.uc.edu>
4530
4531         PR c++/41313
4532         * gcc/config/darwin10.h: Use default_emit_unwind_label.
4533         * gcc/config/darwin.c: Disable -freorder-blocks-and-partition
4534         when darwin_emit_unwind_label is used.
4535
4536 2009-10-21  Eric Botcazou  <ebotcazou@adacore.com>
4537
4538         * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Tweak
4539         order of checks.
4540
4541 2009-10-20  Richard Henderson  <rth@redhat.com>
4542
4543         * tree-eh.c (lower_try_finally_copy): Do lower_eh_constructs_1
4544         before emit_post_landing_pad.
4545
4546 2009-10-20  Adam Nemet  <anemet@caviumnetworks.com>
4547
4548         * config/mips/mips.c (mips_binary_cost): Add new argument speed.
4549         Use when calling rtx_costs.
4550         (mips_rtx_costs): Fix formatting.  Use argument speed rather than the
4551         global optimize_size.  Pass speed to mips_binary_cost.
4552
4553 2009-10-20  Jakub Jelinek  <jakub@redhat.com>
4554
4555         * config/rs6000/rs6000.c (def_builtin): Set TREE_READONLY instead
4556         of TREE_CONSTANT.
4557
4558 2009-10-20  Richard Sandiford  <rdsandiford@googlemail.com>
4559
4560         * rtl.h (simplify_replace_fn_rtx): Declare.
4561         (wrap_constant, unwrap_constant): Delete.
4562         * cfgexpand.c (unwrap_constant, wrap_constant): Delete.
4563         (expand_debug_expr): Don't call wrap_constant.
4564         * combine.c (rtx_subst_pair): Only define for AUTO_INC_DEC.
4565         (auto_adjust_pair): Fold into...
4566         (propagate_for_debug_subst): ...here.  Only define for AUTO_INC_DEC.
4567         Just return a new value.
4568         (propagate_for_debug): Use simplify_replace_fn_rtx for AUTO_INC_DEC,
4569         otherwise use simplify_replace_rtx.
4570         * cselib.c (wrap_constant): Reinstate old definition.
4571         (cselib_expand_value_rtx_1): Don't wrap constants.
4572         * gcse.c (try_replace_reg): Don't use copy_rtx in the call to
4573         simplify_replace_rtx.
4574         (bypass_block): Fix formatting in calls to simplify_replace_rtx.
4575         * reload1.c (reload): Skip all uses for an insn before adjusting it.
4576         Use simplify_replace_rtx.
4577         * simplify-rtx.c (simplify_replace_fn_rtx): New function,
4578         adapted from...
4579         (simplify_replace_rtx): ...here.  Turn into a wrapper for
4580         simplify_replace_fn_rtx.
4581         (simplify_unary_operation): Don't unwrap CONSTs.
4582         * var-tracking.c (check_wrap_constant): Delete.
4583         (vt_expand_loc_callback): Don't call it.
4584         (vt_expand_loc): Likewise.
4585
4586 2009-10-20  Pascal Obry  <obry@adacore.com>
4587             Eric Botcazou  <ebotcazou@adacore.com>
4588
4589         * config/i386/cygming.h (DWARF_FRAME_REGNUM): Add enclosing parens.
4590
4591 2009-10-20  Michael Matz  <matz@suse.de>
4592
4593         * loop-invariant.c (create_new_invariant): Use different magic number.
4594
4595 2009-10-20  Richard Earnshaw  <rearnsha@arm.com>
4596
4597         PR target/39247
4598         * arm.c (arm_override_options): Forcibly disable hot/cold block
4599         partitioning.
4600
4601 2009-10-20  Alexandre Oliva  <aoliva@redhat.com>
4602
4603         PR debug/41739
4604         * haifa-sched.c (try_ready): Skip debug deps updating speculation
4605         status.
4606
4607 2009-10-20  Richard Guenther  <rguenther@suse.de>
4608
4609         * ggc-page.c: Include cfgloop.h.
4610         (struct max_alignment): Drop long double, add void *.
4611         (extra_order_size_table): Add low non-power-of-two multiples
4612         of MAX_ALIGNMENT.  Drop small type-based entries, add
4613         tree_type, cgraph_node and loop.
4614         * alloc-pool.c (struct allocation_object_def): Drop long double
4615         aligning element.
4616
4617 2009-10-20  Jakub Jelinek  <jakub@redhat.com>
4618
4619         PR debug/41340
4620         * loop-invariant.c (calculate_loop_reg_pressure): Don't count regs
4621         referenced just in DEBUG_INSNs.
4622
4623 2009-10-20  Richard Guenther  <rguenther@suse.de>
4624
4625         PR lto/41761
4626         * gimple.c (gimple_register_type): Make sure we register
4627         the types main variant first.
4628
4629 2009-10-20  Richard Guenther  <rguenther@suse.de>
4630
4631         * gimple.c (gimple_types_compatible_p): Simplify.  Move
4632         cheap checks before hashtable queries.  Add checks for
4633         TYPE_NONALIASED_COMPONENT and DECL_NONADDRESSABLE_P.
4634
4635 2009-10-20  Eric Botcazou  <ebotcazou@adacore.com>
4636
4637         * tree-sra.c (build_ref_for_offset_1) <RECORD_TYPE>: Skip fields
4638         without size or with size that can't be represented as a host integer.
4639
4640 2009-10-20  Alexandre Oliva  <aoliva@redhat.com>
4641
4642         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Don't regard
4643         the removal of a debug stmt as a significant change.
4644
4645 2009-10-20  Wolfgang Gellerich  <gellerich@de.ibm.com>
4646
4647         * config/s390/s390.md: Added agen condition to operand
4648         forwarding bypasses.  Added bypass for early address generation
4649         use of int results.  Updated comments.
4650
4651 2009-10-20  Stefan Dösinger  <stefan@codeweavers.com>
4652
4653         * config/i386/i386.c: Remove signal.h #include.
4654
4655 2009-10-20  Jie Zhang  <jie.zhang@analog.com>
4656
4657         * simplify-rtx.c (simplify_const_unary_operation): Handle SS_ABS.
4658         * doc/rtl.texi: Document ss_abs.
4659
4660 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
4661
4662         * c-common.c (c_parse_error): Handle CPP_UTF8STRING.
4663         * c-lex.c (c_lex_with_flags): Likewise.  Test C_LEX_STRING_NO_JOIN
4664         instead of C_LEX_RAW_STRINGS.
4665         (lex_string): Handle CPP_UTF8STRING.
4666         * c-parser.c (c_parser_postfix_expression): Likewise.
4667         * c-pragma.h (C_LEX_RAW_STRINGS): Rename to ...
4668         (C_LEX_STRING_NO_JOIN): ... this.
4669
4670 2009-10-19  Anatoly Sokolov  <aesok@post.ru>
4671
4672         * config/cris/cris.c (cris_function_value, cris_libcall_value,
4673         cris_function_value_regno_p): New functions.
4674         (cris_promote_function_mode): Update comment.
4675         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
4676         * config/cris/cris.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
4677         (FUNCTION_VALUE_REGNO_P): Redefine, use cris_function_value_regno_p.
4678         * config/cris/cris-protos.h (cris_function_value_regno_p): Declare.
4679
4680 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
4681
4682         * unwind-dw2.c (execute_stack_op): Fix operand order for
4683         DW_OP_le, DW_OP_ge, DW_OP_lt and DW_OP_gt.
4684
4685 2009-10-19  Eric Botcazou  <ebotcazou@adacore.com>
4686
4687         * gimple-low.c (struct lower_data): Add cannot_fallthru field.
4688         (lower_stmt) <GIMPLE_BIND>: Add comment.
4689         <GIMPLE_COND, GIMPLE_GOTO, GIMPLE_SWITCH>: Set cannot_fallthru to true
4690         and return.
4691         <GIMPLE_RETURN>: Remove the statement if cannot_fallthru is set.
4692         Otherwise lower it and set cannot_fallthru to true.
4693         <GIMPLE_TRY>: Update cannot_fallthru for GIMPLE_TRY_FINALLY and return.
4694         <GIMPLE_CATCH, GIMPLE_EH_FILTER>: Set cannot_fallthru to false.
4695         <GIMPLE_CALL>: Set cannot_fallthru to false for BUILT_IN_SETJMP and
4696         to true for a noreturn call.  Do not remove statements.
4697         <GIMPLE_OMP_PARALLEL, GIMPLE_OMP_TASK>: Set cannot_fallthru to false.
4698         Set cannot_fallthru to false on function exit.
4699         (gimple_stmt_may_fallthru) <GIMPLE_SWITCH>: Really return false.
4700         <GIMPLE_ASSIGN>: Remove.
4701
4702 2009-10-19  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
4703
4704         * config/s390/s390.c (s390_z10_optimize_cmp): Don't touch FP compares.
4705
4706 2009-10-19  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
4707
4708         * config/s390/s390.c (s390_z10_optimize_cmp): Use
4709         next/prev_active_insn to skip DEBUG_INSNs as well.
4710
4711 2009-10-19  Joseph Myers  <joseph@codesourcery.com>
4712
4713         * config/arm/arm.c (output_move_neon): Use DImode in call to
4714         adjust_address.
4715
4716 2009-10-19  Matthias Klose  <doko@ubuntu.com>
4717
4718         PR target/40134
4719         * config.gcc (arm*-*-linux-*eabi): Use config/t-slibgcc-libgcc.
4720
4721 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
4722
4723         * cfgexpand.c (expand_debug_expr): Fail if bitpos < 0 for non-MEM op0.
4724
4725 2009-10-17  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
4726
4727         PR middle-end/41738
4728         * optabs.c (expand_binop): Make mode of shift count expression mode
4729         of shift count not target.
4730         Remove indent nit.
4731
4732 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
4733
4734         * tree-nested.c (convert_nonlocal_reference_stmt) <GIMPLE_COND>: New
4735         case.  Force using values to replace references within the statement.
4736         (convert_local_reference_stmt): Likewise.
4737
4738 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
4739
4740         * gimple-low.c (lower_stmt) <GIMPLE_CALL>: If the call is noreturn,
4741         remove a subsequent GOTO or RETURN statement.
4742
4743 2009-10-17  Andy Hutchinson  <hutchinsonandy@aim.com>
4744
4745         * config/avr.md (*movqi): Add zero as equally preferable constraint
4746         as general register.
4747         (*movhi): Ditto.
4748
4749 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
4750
4751         * print-tree.c (print_node): Fix string for DECL_STRUCT_FUNCTION.
4752
4753 2009-10-17  Richard Guenther  <rguenther@suse.de>
4754
4755         * lto-streamer-in.c (lto_input_location): Try to reuse previous maps.
4756
4757 2009-10-17  Richard Guenther  <rguenther@suse.de>
4758
4759         * lto-streamer-in.c (input_gimple_stmt): Fixup FIELD_DECL
4760         operands in COMPONENT_REFs.
4761
4762 2009-10-17  Anatoly Sokolov  <aesok@post.ru>
4763
4764         * targhooks.c (default_libcall_value): Don't use LIBCALL_VALUE macro
4765         if not defined. Change type of second argument to const_rtx.
4766         (default_function_value): Call gcc_unreachable if FUNCTION_VALUE
4767         macro not defined.
4768         * targhooks.h (default_libcall_value): Update prototype.
4769         * target.h (struct gcc_target): Change type of second argument of
4770         libcall_value to const_rtx.
4771         * config/arm/arm.c (arm_libcall_value): Change type of second argument
4772         to const_rtx.
4773         (arm_libcall_uses_aapcs_base): Change type of argument to const_rtx.
4774         * doc/tm.texi (TARGET_LIBCALL_VALUE):  Revise documentation.
4775
4776 2009-10-17  Jakub Jelinek  <jakub@redhat.com>
4777
4778         PR debug/40521
4779         * debug.h (struct gcc_debug_hooks): Add assembly_start hook.
4780         * cgraphunit.c (cgraph_optimize): Call it.
4781         * dwarf2out.c (dwarf2out_init): Move .cfi_sections printing into...
4782         (dwarf2out_assembly_start): ... here.  New hook.
4783         (dwarf2out_debug_hooks): Add dwarf2out_assembly_start.
4784         * debug.c (do_nothing_debug_hooks): Do nothing for assembly_start
4785         hook.
4786         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Likewise.
4787         * sdbout.c (sdb_debug_hooks): Likewise.
4788         * vmsdbgout.c (vmsdbg_debug_hooks): Add vmsdbgout_assembly_start.
4789         (vmsdbgout_assembly_start): New hook.
4790
4791 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
4792
4793         * rtl.h (RTL_LOCATION): Fix typo.
4794
4795 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
4796
4797         * print-rtl.c (print_rtx): Print locators in asm_operands
4798         and asm_input.
4799
4800 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
4801
4802         PR debug/41535
4803         * sched-deps.c (depl_on_debug_p): New.
4804         (attach_dep_link): Reject debug deps before nondebug deps.
4805         (add_to_deps_list): Insert debug deps after nondebug deps.
4806         (sd_lists_empty_p): Stop at first nonempty list.  Disregard debug
4807         deps.
4808         (sd_add_dep): Do not reject debug deps.
4809         (add_insn_mem_dependence): Don't count debug deps.
4810         (remove_from_deps): Likewise.
4811         (sched_analyze_2): Set up mem deps on debug insns.
4812         (sched_analyze_insn): Record reg uses for deps on debug insns.
4813         * haifa-sched.c (schedule_insn): Reset deferred debug insn.  Don't
4814         try_ready nondebug insn after debug insn.
4815         * ddg.c (create_ddg_dep_from_intra_loop_link,
4816         create_ddg_dep_no_link): Don't reject debug deps.
4817
4818 2009-10-16  Richard Guenther  <rguenther@suse.de>
4819
4820         * lto-symtab.c (merge_incomplete_and_complete_type): Remove.
4821         (maybe_merge_incomplete_and_complete_type): Likewise.
4822         (lto_symtab_merge): Do not call them.  Do not warn for
4823         complete vs. incomplete compatible types.
4824         (lto_symtab_merge_decls_2): Simplify.
4825         * gimple.c (gimple_force_type_merge): Remove.
4826         (gimple_types_compatible_p): Make it static.
4827         * gimple.h (gimple_force_type_merge): Remove.
4828         (gimple_types_compatible_p): Likewise.
4829
4830 2009-10-16  Jakub Jelinek  <jakub@redhat.com>
4831
4832         * dwarf2out.c (mem_loc_descriptor) <case ZERO_EXTRACT>: Cast
4833         DWARF2_ADDR_SIZE to int to avoid signed vs. unsigned warnings.
4834
4835 2009-10-16  Richard Guenther  <rguenther@suse.de>
4836
4837         PR tree-optimization/41728
4838         * tree-ssa-dom.c (optimize_stmt): Mark the stmt modified
4839         if fold_stmt did anything.
4840
4841 2009-10-16  Richard Guenther  <rguenther@suse.de>
4842
4843         PR lto/41715
4844         * lto-streamer-in.c (lto_input_tree_ref): Revert last change.
4845         (maybe_fixup_handled_component): New function.
4846         (input_gimple_stmt): Fixup mismatched decl replacements.
4847
4848 2009-10-16  Richard Guenther  <rguenther@suse.de>
4849
4850         PR lto/41713
4851         * lto-streamer-out.c (lto_output_tree_ref): Handle DEBUG_EXPR_DECL
4852         the same as VAR_DECL.
4853
4854 2009-10-16  Richard Guenther  <rguenther@suse.de>
4855
4856         * gimple.c (iterative_hash_gimple_type): For integer types
4857         also hash their minimum and maximum values and the string flag.
4858         For array types hash their domain and the string flag.
4859
4860 2009-10-16  Richard Guenther  <rguenther@suse.de>
4861
4862         * gimple.c (gimple_types_compatible_p): Restrict completing
4863         types to record or unions.  Simplify completion.
4864         Do not merge records or unions with different
4865         TYPE_STRUCTURAL_EQUALITY_P tag.
4866         (iterative_hash_gimple_type): Restrict non-recursing into
4867         pointer targets for records and unions.
4868
4869 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
4870
4871         PR debug/41717
4872         * cfgexpand.c (expand_debug_expr): Handle CONJ_EXPR.
4873         * dwarf2out.c (mem_loc_descriptor): Don't handle
4874         POST_INT/POST_DEC/POST_MODIFY like SUBREG.  For SUBREG
4875         punt if it is not lowpart subreg or if inner mode isn't
4876         MODE_INT.
4877
4878 2009-10-16  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
4879
4880         * config/s390/s390.c (s390_z10_optimize_cmp): Skip notes when
4881         investigating previous or next insns.
4882
4883 2009-10-16  Eric Botcazou  <ebotcazou@adacore.com>
4884
4885         * tree-sra.c (build_ref_for_offset_1): Update comment.
4886
4887 2009-10-16  Wolfgang Gellerich  <gellerich@de.ibm.com>
4888
4889         * config/s390/s390.md (atype): Added missing values.
4890
4891 2009-10-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4892
4893         PR target/41702
4894         * pa.md (casesi): Use sign extended index in call to gen_casesi64p.
4895         (casesi64p): Update pattern to reflect above.
4896
4897 2009-10-15  Steve Ellcey  <sje@cup.hp.com>
4898
4899         PR rtl-optimization/41697
4900         * sel-sched-ir.h (_eligible_successor_edge_p): Check successor count.
4901
4902 2009-10-15  Michael Meissner  <meissner@linux.vnet.ibm.com>
4903
4904         PR target/23983
4905         * config/rs6000/predicates.md: Update copyright year.
4906         * config/rs6000/altivec.md: Ditto.
4907
4908         * config/rs6000/t-rs6000 (TM_H): Add rs6000-builtin.def.
4909         (MD_INCLUDES): Add a2.md.
4910
4911         * config/rs6000/rs6000.c (rs6000_builtin_decls): Change
4912         RS6000_BUILTIN_COUNT to MAX_RS6000_BUILTINS.
4913         (builtin_classify): New static vector to classify various builtins
4914         to get the tree attributes correct.
4915         (def_builtin): Set the attributes of builtins based on what the
4916         builtin does (i.e. memory operation, floating point, saturation
4917         need special attributes, others are pure functions).
4918
4919         * config/rs6000/rs6000.h (enum rs6000_btc): New enum to classify
4920         the builtins.
4921         (enum rs6000_builtins): Include rs6000-builtin.def to define the
4922         builtins.  Change the end marker to MAX_RS6000_BUILTINS from
4923         RS6000_BUILTIN_COUNT.
4924         (rs6000_builtin_decls): Change RS6000_BUILTIN_COUNT to
4925         MAX_RS6000_BUILTINS.
4926
4927         * config/rs6000/rs6000-builtin.def: New file that combines the
4928         builtin enumeration name and attributes.
4929
4930 2009-10-15  H.J. Lu  <hongjiu.lu@intel.com>
4931
4932         * config/i386/linux.h (ASM_SPEC): Add --32.
4933
4934 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
4935
4936         * dwarf2out.c (dwarf_tag_name): Handle DW_TAG_rvalue_reference_type
4937         and DW_TAG_template_alias.
4938         (dwarf_attr_name): Handle DW_AT_main_subprogram,
4939         DW_AT_data_bit_offset, DW_AT_const_expr, DW_AT_enum_class,
4940         DW_AT_linkage_name, DW_AT_GNU_guarded_by, DW_AT_GNU_pt_guarded_by,
4941         DW_AT_GNU_guarded, DW_AT_GNU_pt_guarded, DW_AT_GNU_locks_excluded,
4942         DW_AT_GNU_exclusive_locks_required, DW_AT_GNU_shared_locks_required
4943         and DW_AT_GNU_odr_signature.
4944         (dwarf_form_name): Handle DW_FORM_sec_offset, DW_FORM_exprloc,
4945         DW_FORM_flag_present and DW_FORM_ref_sig8.
4946         (output_signature): Only print name on the first byte.
4947         (output_die): Likewise for dw_val_class_data8.
4948
4949 2009-10-15  Alexander Monakov  <amonakov@ispras.ru>
4950
4951         * doc/invoke.texi: Clarify that most optimizations are not enabled
4952         without -O.
4953
4954 2009-10-15  Richard Guenther  <rguenther@suse.de>
4955
4956         PR lto/41668
4957         * gimple.c (compare_type_names_p): Handle anonymous names
4958         differently based on new mode argument.
4959         (gimple_types_compatible_p): For structs also compare the tags.
4960         (iterative_hash_type_name): Rename to ...
4961         (iterative_hash_name): ... this.  Hash all names.
4962         (iterative_hash_gimple_type): Fix hashing the struct tag of
4963         pointer targets.  Hash field decl names.
4964
4965 2009-10-15  Richard Guenther  <rguenther@suse.de>
4966
4967         PR lto/41669
4968         * gimple.c (gimple_get_alias_set): Avoid recursing on
4969         invalid type topology.
4970
4971 2009-10-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4972
4973         * config/spu/spu.c (get_branch_target): Use extract_asm_operands.
4974
4975 2009-10-15  Richard Guenther  <rguenther@suse.de>
4976
4977         * tree.c (free_lang_data_in_decl): Free DECL_FCONTEXT.
4978
4979 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
4980
4981         * config/rs6000/option-defaults.h (OPTION_DEFAULT_SPECS): Don't
4982         add --with-tune{,-32,-64} configured default for -mtune if explicit
4983         -mcpu is used.
4984
4985 2009-10-14  Daniel Gutson  <dgutson@codesourcery.com>
4986
4987         * config/arm/neon.md (neon_vshll_n<mode>): Checking Bounds fixed.
4988
4989 2009-10-14  DJ Delorie  <dj@redhat.com>
4990
4991         * config/h8300/h8300.c (F): New.
4992         (Fpa): New.
4993         (h8300_emit_stack_adjustment): Call them.
4994         (push): Likewise.
4995         (h8300_push_pop): Likewise.
4996         (h8300_expand_prologue): Likewise.
4997         * config/h8300/h8300.h (DWARF2_DEBUGGING_INFO): Define.
4998         (MUST_USE_SJLJ_EXCEPTIONS): Define.
4999         (INCOMING_RETURN_ADDR_RTX): Define.
5000         (INCOMING_FRAME_SP_OFFSET): Define.
5001         (DWARF_CIE_DATA_ALIGNMENT): Define.
5002
5003 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
5004
5005         * stor-layout.c (place_field): Don't emit -Wpadded warnings for
5006         fields in builtin structs.
5007         (finalize_record_size): Likewise.
5008
5009 2009-10-14  Richard Guenther  <rguenther@suse.de>
5010
5011         * gimple.c (gtc_ob): New global.
5012         (struct type_pair_d): Replace pointers with type UIDs.
5013         (type_pair_hash): Adjust.
5014         (type_pair_eq): Likewise.
5015         (lookup_type_pair): Likewise.  Allocate from an obstack.
5016         (gimple_force_type_merge): Adjust.
5017         (gimple_types_compatible_p): Likewise.
5018         (free_gimple_type_tables): Free the obstack.
5019
5020 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
5021
5022         * tree-parloops.c (separate_decls_in_region_debug_bind): Drop debug
5023         stmts setting DEBUG_EXPR_DECLs.
5024
5025         * cfgexpand.c (expand_debug_expr): Ignore zero-length bitfields.
5026         Don't crash if mode1 is VOIDmode.
5027
5028 2009-09-26  Vladimir Makarov  <vmakarov@redhat.com>
5029
5030         * params.def (PARAM_IRA_LOOP_RESERVED_REGS): New.
5031         * params.h (IRA_LOOP_RESERVED_REGS): New.
5032         * tree-pass.h (pass_subregs_of_mode_init,
5033         pass_subregs_of_mode_finish): Remove.
5034         * passes.c (pass_subregs_of_mode_init,
5035         pass_subregs_of_mode_finish): Remove.
5036         (pass_reginfo_init): Move before loop optimizations.
5037         * config/i386/i386.h (STACK_REG_COVER_CLASS): Define.
5038         * common.opt (fira-loop-pressure): New.
5039         * toplev.h (flag_ira_loop_pressure): New.
5040         * rtl.h (init_subregs_of_mode, finish_subregs_of_mode): New externals.
5041         * reginfo.c (init_subregs_of_mode, finish_subregs_of_mode):
5042         Make external and void type functions.
5043         (gate_subregs_of_mode_init, pass_subregs_of_mode_init,
5044         pass_subregs_of_mode_finish): Remove.
5045         * ira-costs.c (init_costs): Call init_subregs_of_mode.
5046         * regmove.c: Include ira.h.
5047         (regmove_optimize): Call ira_set_pseudo_classes after IRA based
5048         register pressure calculation in loops.
5049         * loop-invariant.c: Include REGS_H and ira.h.
5050         (struct loop_data): New members max_reg_pressure, regs_ref, and
5051         regs_live.
5052         (struct invariant): New member orig_regno.
5053         (curr_loop): New variable.
5054         (find_exits): Initialize regs_ref and regs_live.
5055         (create_new_invariant): Initialize orig_regno.
5056         (get_cover_class_and_nregs): New.
5057         (get_inv_cost): Make aregs_needed an array.  Use regs_needed as an
5058         array.  Add code for flag_ira_loop_pressure.
5059         (gain_for_invariant): Make new_regs an array.  Add code for
5060         flag_ira_loop_pressure.
5061         (best_gain_for_invariant): Ditto.
5062         (set_move_mark): New parameter gain.  Use it for debugging output.
5063         (find_invariants_to_move): Make regs_needed and new_regs an array.
5064         Add code for flag_ira_loop_pressure.
5065         (move_invariant_reg): Set up orig_regno.
5066         (move_invariants): Set up reg classes for pseudos for
5067         flag_ira_loop_pressure.
5068         (free_loop_data): Clear regs_ref and regs_live.
5069         (curr_regs_live, curr_reg_pressure, regs_set, n_regs_set,
5070         get_regno_cover_class, change_pressure, mark_regno_live,
5071         mark_regno_death, mark_reg_store, mark_reg_clobber,
5072         mark_reg_death, mark_ref_regs, calculate_loop_reg_pressure): New.
5073         (move_loop_invariants): Calculate pressure.  Initialize curr_loop.
5074         * ira.c (ira): Call ira_set_pseudo_classes after IRA based
5075         register pressure calculation in loops if new regs were added.
5076         Call finish_subregs_of_mode.
5077         * opts.c (decode_options): Set up flag_ira_loop_pressure.
5078         * Makefile.in (loop-invariant.o): Add ira.h.
5079         (regmove.o): Ditto.
5080         * doc/invoke.texi (-fira-loop-pressure, ira-loop-reserved-regs):
5081         Describe.
5082         * doc/tm.texi (STACK_REG_COVER_CLASS): Describe.
5083
5084 2009-10-14  Richard Guenther  <rguenther@suse.de>
5085
5086         * lto-symtab.c (lto_symtab_compatible): Fold in ...
5087         (lto_symtab_merge): ... here.  Rewrite both to take the
5088         prevailing and a to-be-merged entry and to queue diagnostics properly.
5089         (lto_symtab_resolve_replaceable_p): New predicate for
5090         symbol resolution.
5091         (lto_symtab_resolve_can_prevail_p): Likewise.
5092         (lto_symtab_resolve_symbols): Rewrite.  Fold in code that
5093         handles merging commons by choosing the largest decl.  Fold
5094         in code that gives ODR errors.
5095         (lto_symtab_merge_decls_2): Simplify a lot.  Emit queued
5096         diagnostics here.
5097         (lto_symtab_merge_decls_1): Re-structure.  Deal with the
5098         case of no prevailing decl here.  Diagnose mismatches
5099         in object types here.  Drop all but the prevailing decls.
5100         (lto_symtab_prevailing_decl): Return the single prevailing decl.
5101         * lto-streamer-in.c (lto_input_tree_ref): Deal with
5102         VIEW_CONVERT_EXPRs in decl slots.  Unshare the tree in this case.
5103
5104 2009-10-14  Richard Guenther  <rguenther@suse.de>
5105
5106         PR lto/41521
5107         * lto-streamer-in.c (input_bb): Replace debug stmts with
5108         nops instead of dropping them.
5109
5110 2009-10-14  Nick Clifton  <nickc@redhat.com>
5111
5112         * gcc/doc/extended.texi: Replace the dash character with @minus{}
5113         in situations where it is being used as a minus symbol.
5114         * gcc/doc/tm.texi: Likewise.
5115         * gcc/doc/md.texi: Likewise.
5116
5117 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
5118
5119         PR preprocessor/41543
5120         * input.h (BUILTINS_LOCATION): Change to 1 from 2.
5121         Assert BUILTINS_LOCATION < RESERVED_LOCATION_COUNT.
5122         * tree.c: Include intl.h.
5123         (expand_location): Handle BUILTINS_LOCATION.
5124         * Makefile.in (tree.o): Depend on intl.h.
5125
5126         PR debug/41695
5127         * dwarf2out.c (dwarf2out_var_location): Always clear
5128         last_postcall_label when changing last_label.
5129
5130 2009-10-14  Pascal Obry  <obry@adacore.com>
5131
5132         * gcc.c (DEFAULT_SWITCH_CURTAILS_COMPILATION): Add -E.
5133         (process_command): Handle -E as done with -c and -S.  Do not add
5134         the target executable suffix to the output file when -E is used.
5135         (main): Adjust error message accordingly.
5136
5137 2009-10-14  Alexandre Oliva  <aoliva@redhat.com>
5138
5139         PR debug/41343
5140         PR debug/41447
5141         PR debug/41264
5142         PR debug/41338
5143         * tree.c (tree_node_structure_for_code): DEBUG_EXPR_DECL uses
5144         decl with rtl.
5145         (tree_code_size): Likewise.
5146
5147 2009-10-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5148
5149         * builtins.c (fold_builtin_1): Support complex "arc" functions.
5150         * real.h (HAVE_mpc_arc): Define.
5151
5152 2009-10-14  Kaz Kojima  <kkojima@gcc.gnu.org>
5153
5154         * config/sh/sh.c (TARGET_BUILTIN_DECL): Define.
5155         (struct builtin_description): Add fndecl field.
5156         (bdesc): Remove const qualifier.  Update initializer.
5157         (sh_media_init_builtins): Remove const qualifier for d.  Record
5158         the result of add_builtin_function to the fndecl field.
5159         (sh_builtin_decl): New.
5160         (sh_media_builtin_decl): New.
5161
5162 2009-10-14  Hans-Peter Nilsson  <hp@axis.com>
5163
5164         PR target/38948
5165         * config/cris/cris.h (SECONDARY_RELOAD_CLASS): Handle reload
5166         requests between special registers.
5167
5168 2009-10-13  Eric Botcazou  <ebotcazou@adacore.com>
5169
5170         * dwarf2out.c (mem_loc_descriptor): Accept UNGT as well.
5171
5172 2009-10-13  Richard Henderson  <rth@redhat.com>
5173
5174         PR tree-optimization/41377
5175         * tree-eh.c (unsplit_eh): Propagate degenerate PHIs.
5176         (cleanup_empty_eh_merge_phis): New change_region parameter;
5177         pass it on to redirect_eh_edge_1.  Update callers.
5178         (cleanup_empty_eh_unsplit): Don't require an existing EH label
5179         at the destination block.
5180
5181 2009-10-13  Basile Starynkevitch  <basile@starynkevitch.net>
5182
5183         * passes.c (register_pass): Replaced gcc_unreachable by
5184         fatal_error on failure. Mentions plugins in comments & messages.
5185
5186 2009-10-13  Jakub Jelinek  <jakub@redhat.com>
5187
5188         PR target/41693
5189         * rtl.h (DEBUG_EXPR_TREE_DECL): Define.
5190         * sched-vis.c (print_value): Use it.
5191         * cselib.c (cselib_hash_rtx): Likewise.
5192         * print-rtl.c (print_rtx): Likewise.
5193         * cfgexpand.c (expand_debug_rtx): Likewise.
5194         * var-tracking.c (vt_expand_loc_callback): Likewise.
5195
5196 2009-10-13  Richard Guenther  <rguenther@suse.de>
5197
5198         PR lto/41565
5199         * opts.c (handle_option): Split out code to handle setting
5200         the options flag var ...
5201         (set_option): ... here.
5202         * opts.h (set_option): Declare.
5203         * lto-opts.c (register_user_option_p): Include -fexceptions
5204         and all position independent code variants.
5205         (handle_common_option): Remove.
5206         (lto_reissue_options): Use set_option.
5207
5208 2009-10-13  Martin Jambor  <mjambor@suse.cz>
5209
5210         PR tree-optimization/41661
5211         * ipa-prop.c (compute_complex_pass_through): Allow only operations
5212         that are tcc_comparisons or do not change the type in any
5213         un-usleless way.
5214         * ipa-cp.c (ipcp_lattice_from_jfunc): Request boolean type when
5215         folding tcc_comparison operations.
5216
5217 2009-10-13  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
5218
5219         * config/s390/s390.c (s390_encode_section_info): Handle BLKmode
5220         properly.
5221
5222 2009-10-12  Alexandre Oliva  <aoliva@redhat.com>
5223
5224         PR debug/41343
5225         PR debug/41447
5226         PR debug/41264
5227         PR debug/41338
5228         * tree.def (DEBUG_EXPR_DECL): New.
5229         * rtl.def (DEBUG_EXPR): New.
5230         * gengtype.c (adjust_field_rtx_def): Handle it.
5231         * tree-ssa.c (propagate_var_def_into_debug_stmts): Rename to...
5232         (insert_debug_temp_for_var_def): ... this.  Drop support for
5233         moving.  Take iterator for def stmt; insert debug stmt before it.
5234         Scan early for use count and kind in debug stmts.
5235         (propagate_defs_into_debug_stmts): Rename to...
5236         (insert_debug_temps_for_defs): ... this.  Likewise.
5237         * tree.h (DEBUG_TEMP_UID): New.
5238         * tree.c (next_debug_decl_uid): New.
5239         (make_node_stat): Count debug decls separately.
5240         (copy_node_stat): Likewise.
5241         * cfgexpand.c (expand_debug_expr): Handle DEBUG_EXPR_DECL.
5242         * var-tracking.c (dv_is_decl_p): Recognize it.
5243         (VALUE_RECURSED_INTO): Apply to DEBUG_EXPRs too.
5244         (track_expr_p): Track expanded DEBUG_EXPR_DECLs.
5245         (vt_expand_loc_callback): Expand DEBUG_EXPRs.
5246         (emit_note_insn_var_location): Don't emit notes for DEBUG_EXPR_DECLs.
5247         * cselib.c (rtx_equal_for_cselib_p): Handle DEBUG_EXPR.
5248         (cselib_hash_rtx): Likewise.
5249         (cselib_expand_value_rtx_1): Use callback for DEBUG_EXPR.
5250         * tree-ssa-operands.c (get_expr_operands): Skip DEBUG_EXPR_DECLs in
5251         debug bind stmts.
5252         * emit-rtl.c (verify_rtx_sharing): Handle DEBUG_EXPR and VALUE.
5253         (copy_rtx_if_shared_1, reset_used_flags, set_used_flags): Likewise.
5254         * rtl.c (copy_rtx): Likewise.
5255         (rtx_equal_p_cb, rtx_equal_p): Handle DEBUG_EXPR.
5256         * print-rtl.c (print_rtx): Likewise.
5257         * sched-vis.c (print_value): Likewise.
5258         (print_insn): Handle DEBUG_EXPR_DECL.
5259         * tree-dump.c (dequeue_and_dump): Likewise.
5260         * tree-pretty-print.c (dump_decl_name, dump_generic_node): Likewise.
5261         * gimple-iterator (gsi_replace): Check for same lhs.
5262         (gsi_remove): Insert debug temps.
5263         * tree-ssa-loop-im.c (rewrite_reciprocal): Replace with same lhs.
5264         (move_computations_stmt): Drop explicit propagation into debug stmts.
5265         (rewrite_bittest): Likewise.  Use gsi_remove for propagation.
5266         * tree-ssa-reassoc.c (rewrite_expr_tree, linearize_expr): Likewise.
5267         * tree-ssa-sink.c (statement_sink_location): Likewise.
5268         * tree-ssa-forwprop (forward_propagate_addr_expr): Likewise.
5269         * tree-ssanames.c (release_ssa_name): Adjust for rename.
5270         * tree-flow.h: Likewise.
5271         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Don't mark
5272         debug temps without values.
5273         (eliminate_unnecessary_stmts): Don't discard just-inserted
5274         debug stmts.
5275
5276 2009-10-12  Hans-Peter Nilsson  <hp@axis.com>
5277
5278         PR target/26515
5279         * config/cris/cris.md (andu): Check that operand 1 is one of the
5280         general registers.  Fix typo in head comment.
5281
5282 2009-10-12  Stefan Dösinger  <stefan@codeweavers.com>
5283
5284         * config/i386/i386.md (vswapmov): New.
5285         * config/i386/i386.c (ix86_handle_fndecl_attribute): New.
5286         (ix86_function_ms_hook_prologue): New.
5287         (ix86_expand_prologue): Handle ms_hook_prologue attribute.
5288         * configure.ac: Test for swap suffix support in as.
5289         * configure: Rebuild.
5290
5291 2009-10-12  Jakub Jelinek  <jakub@redhat.com>
5292
5293         PR target/41680
5294         * config/i386/i386.md (split after *testqi_ext_3_rex64): Only narrow
5295         paradoxical subregs to prevent partial register stalls if the inner
5296         mode is integer mode.
5297
5298 2009-10-12  Uros Bizjak  <ubizjak@gmail.com>
5299
5300         * config/i386/i386.md (*setcc_<mode>_2): Remove insn pattern.
5301
5302 2009-10-12  Dodji Seketeli  <dodji@redhat.com>
5303
5304         PR c++/41570
5305         * gcc/dwarf2out.c (template_parameter_pack_die,
5306         gen_formal_parameter_pack_die): Use add_name_and_src_coords_attributes.
5307
5308 2009-10-12  Alexandre Oliva  <aoliva@redhat.com>
5309
5310         PR debug/41616
5311         * tree-into-ssa.c (insert_phi_nodes_for): Build debug bind stmts
5312         on updates too.
5313         (maybe_register_def): Likewise.  Take stmt iterator.
5314         (rewrite_update_stmt): Take stmt iterator and pass it on.
5315         (rewrite_update_enter_block): Pass stmt iterator.
5316
5317 2009-10-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5318
5319         * config/spu/spu.c (TARGET_BUILTIN_DECL): Define.
5320         (spu_builtin_decl): New function.
5321
5322 2009-10-12  Uros Bizjak  <ubizjak@gmail.com>
5323
5324         * config/i386/i386.md (SWIM): New mode iterator.
5325         (mov<mode>cc): Macroize expander from mov{qi,hi,si,di}cc patterns
5326         using SWIM mode iterator.
5327         (x86_mov<mode>cc_0_m1): Macroize insn from x86_mov{si,di}cc_0_m1
5328         patterns using SWI48 mode iterator.
5329         (*x86_mov<mode>cc_0_m1_se):  Macroize insn from
5330         *x86_mov{si,di}cc_0_m1_se patterns using SWI48 mode iterator.
5331         (*x86_mov<mode>cc_0_m1_neg): New insn pattern.
5332         (*mov<mode>cc_noc): Macroize insn from *mov{hi,si,di}cc_noc
5333         patterns using SWI248 mode iterator.
5334         * config/i386/i386.c (ix86_expand_int_movcc): Update the call to
5335         gen_x86_movdicc_0_m1_rex64 for renamed function
5336
5337 2009-10-11  Jose Ruiz  <ruiz@adacore.com>
5338             Eric Botcazou  <ebotcazou@adacore.com>
5339
5340         PR target/33743
5341         * config/sparc/sol2.h (MD_UNWIND_SUPPORT): Define.
5342         * config/sparc/sol2-unwind.h: New file.
5343
5344 2009-10-11  Olivier Hainque  <hainque@adacore.com>
5345             Eric Botcazou  <ebotcazou@adacore.com>
5346
5347         PR target/33743
5348         * config/i386/sol2.h (MD_UNWIND_SUPPORT): Define.
5349         * config/i386/sol2-unwind.h: New file.
5350
5351 2009-10-11  H.J. Lu  <hongjiu.lu@intel.com>
5352
5353         PR target/41665
5354         * config/i386/i386.md (addsi_1_zext): Get the proper second
5355         operand for lea.
5356
5357 2009-10-11  Richard Sandiford  <rdsandiford@googlemail.com>
5358
5359         * simplify-rtx.c (simplify_replace_rtx): Use rtx_equal_p for
5360         all OLD_RTXes, not just REGs.  Use copy_rtx to create the
5361         replacement value.
5362
5363 2009-10-11  Richard Guenther  <rguenther@suse.de>
5364
5365         * gimple.c (iterative_hash_type_name): Do not handle special
5366         anonymous names.
5367
5368 2009-10-11  Uros Bizjak  <ubizjak@gmail.com>
5369
5370         * config/i386/i386.md (*setcc_di_1): New insn_and_split pattern.
5371         (*setcc_si_1_and): Ditto.
5372         (*setcc_si_1_movzbl): Ditto.
5373         (*setcc_<mode>_2): Ditto.
5374         (*setcc_qi): Rename from *setcc_1.
5375         (*setcc_qi_slp): Rename from *setcc_2.
5376
5377         (*zero_extendqihi2_movzbw_and splitter): Use ix86_expand_clear.
5378         (*zero_extendqisi2_movzbw_and splitter): Ditto.
5379
5380         * config/i386/i386.c (ix86_expand_clear): Remove reload_completed from
5381         "if" condition, there is already assert with reload_completed present.
5382
5383 2009-10-11  Gerald Pfeifer  <gerald@pfeifer.com>
5384
5385         * plugin.c (try_init_one_plugin): Improve constness of variable err.
5386
5387 2009-10-10  Gerald Pfeifer  <gerald@pfeifer.com>
5388
5389         * doc/install.texi (Final install): Refer to
5390         http://gcc.gnu.org/bugs/ for bug reporting.
5391
5392 2009-10-10  Peter Bergner  <bergner@vnet.ibm.com>
5393
5394         * configure.ac: Add test for dci instruction.
5395         * configure: Regenerate.
5396         * config.in: Likewise.
5397         * config.gcc: Handle --with-cpu=476 and --with-cpu=476fp.
5398         * doc/invoke.texi: Add cpu_type 476 and 476fp.
5399         (-mmulhw): Add 476 to description.
5400         (-mdlmzb): Likewise.
5401         * config/rs6000/t-fprules (MULTILIB_MATCHES_FLOAT): Include -mcpu=476.
5402         * config/rs6000/rs6000.c (processor_costs): Add ppc476_cost.
5403         (processor_target_table): Add 476 and 476fp entries.
5404         (rs6000_override_options): Use ppc476_cost for PROCESSOR_PPC476.
5405         (rs6000_issue_rate): Add CPU_PPC476.
5406         * config/rs6000/rs6000.h (ASM_CPU_476_SPEC): Define.
5407         (ASM_CPU_SPEC): Pass %(asm_cpu_476) for -mcpu=476 and -mcpu=476fp.
5408         (processor_type): Add PROCESSOR_PPC476.
5409         (EXTRA_SPECS): Add asm_cpu_476 string.
5410         * config/rs6000/rs6000.md (define_attr "type"): Add isel attribute.
5411         (define_attr "cpu"): Add ppc476.
5412         Include 476.md.
5413         Update comments for 476.
5414         (isel_signed, isel_unsigned): Change to use "isel" type attribute.
5415         * config/rs6000/vxworks.h (CPP_SPEC): Handle 464 and 476.
5416         Update copyright year.
5417         * config/rs6000/476.md: New file.
5418         * config/rs6000/40x.md: Add description for "isel" attribute.
5419         Update copyright year.
5420         * config/rs6000/440.md: Likewise.
5421         * config/rs6000/603.md: Likewise.
5422         * config/rs6000/6xx.md: Likewise.
5423         * config/rs6000/7450.md: Likewise.
5424         * config/rs6000/7xx.md: Likewise.
5425         * config/rs6000/8540.md: Likewise.
5426         * config/rs6000/cell.md: Likewise.
5427         * config/rs6000/e300c2c3.md: Likewise.
5428         * config/rs6000/e500mc.md: Likewise.
5429         * config/rs6000/mpc.md: Likewise.
5430         * config/rs6000/power4.md: Likewise.
5431         * config/rs6000/power5.md: Likewise.
5432         * config/rs6000/power6.md: Likewise.
5433         * config/rs6000/power7.md: Likewise.
5434         * config/rs6000/rios1.md: Likewise.
5435         * config/rs6000/rios2.md: Likewise.
5436         * config/rs6000/rs64.md: Likewise.
5437
5438 2009-10-10  Richard Guenther  <rguenther@suse.de>
5439
5440         PR tree-optimization/41654
5441         * tree-ssa-ifcombine.c (ifcombine_ifandif): Properly canonicalize
5442         a cond expr before calling gimple_cond_set_condition_from_tree.
5443         (ifcombine_iforif): Likewise.
5444
5445 2009-10-09  Ian Lance Taylor  <iant@google.com>
5446
5447         * configure.ac: Use AC_SEARCH_LIBS to find dlopen.
5448         * configure: Rebuild.
5449
5450 2009-10-09  Neil Vachharajani <nvachhar@google.com>
5451
5452         * doc/cpp.texi (Other Directives): Do not list #ident and #sccs as
5453         deprecated.
5454
5455 2009-10-09  Richard Guenther  <rguenther@suse.de>
5456
5457         PR lto/41638
5458         * target-def.h (TARGET_BUILTIN_DECL): Define.
5459         (TARGET_INITIALIZER): Add TARGET_BUILTIN_DECL.
5460         * target.h (struct gcc_target): Add builtin_decl target hook.
5461         * doc/tm.texi (TARGET_BUILTIN_DECL): Document.
5462         * lto-streamer-in.c (lto_get_builtin_tree): Fix handling of
5463         target builtins.
5464         * lto-streamer-out.c (lto_output_tree_pointers): Use sorry,
5465         not gcc_unreachable.
5466         (lto_output_builtin_tree): Sorry if the target does not support
5467         streaming target builtins.
5468         * config/rs6000/rs6000.c (TARGET_BUILTIN_DECL): Define.
5469         (rs6000_builtin_decl): New function.
5470         * config/i386/i386.c (TARGET_BUILTIN_DECL): Define.
5471         (ix86_builtin_decl): New function.
5472
5473 2009-10-09  Jakub Jelinek  <jakub@redhat.com>
5474
5475         PR preprocessor/41445
5476         * c-ppoutput.c (do_line_change): New function.
5477         (cb_line_change): Use it.
5478         (scan_translation_unit): Call do_line_change if
5479         avoid_paste or PREV_WHITE and token location is on a different line
5480         than print.src_line.
5481
5482         PR debug/40521
5483         * dwarf2out.c (dwarf2out_init): Test whether
5484         HAVE_GAS_CFI_SECTIONS_DIRECTIVE is non-zero instead of checking
5485         it is defined.
5486
5487         PR rtl-optimization/41646
5488         * calls.c (expand_call): For BLKmode types returned in registers
5489         avoid likely spilled hard regs in copy_blkmode_from_reg generated
5490         insns.
5491
5492 2009-10-09  Richard Guenther  <rguenther@suse.de>
5493
5494         PR tree-optimization/41634
5495         * tree-ssa-dom.c (remove_local_expressions_from_table): Assert
5496         we remove the correct elements.
5497         (optimize_stmt): Make sure to update stmt operands before
5498         optimizing redundancies.
5499
5500 2009-10-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
5501
5502         * config/s390/s390.md ("prefetch"): Remove stcmh for prefetching.
5503
5504 2009-10-09  Richard Guenther  <rguenther@suse.de>
5505
5506         PR driver/41637
5507         * lto-wrapper.c (ltrans_output_file, flto_out, args_name): New
5508         globals.
5509         (lto_wrapper_exit): New function.
5510         (fatal): Use it.
5511         (fatal_perror): Likewise.
5512         (fork_execute): Use global args_name, do not free it.
5513         (run_gcc): Use global ltrans_output_file, flto_out, do not free them.
5514         * lto-streamer.h: Remove duplicate prototypes.
5515
5516 2009-10-09  Richard Guenther  <rguenther@suse.de>
5517
5518         * cgraph.c (cgraph_create_edge): Check for NULL call_stmt
5519         before calling stmt_can_throw_external.
5520
5521 2009-10-09  Eric Botcazou  <ebotcazou@adacore.com>
5522
5523         PR tree-optimization/40071
5524         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Build a ref-all
5525         pointer if the original data reference doesn't conflict with the
5526         created vector data reference.  Fix long line.
5527
5528 2009-10-09  Uros Bizjak  <ubizjak@gmail.com>
5529
5530         * config/i386/i386.md (any_div): New code iterator.
5531         (u): Handle div and udiv.
5532         (sgnprefix): Ditto.
5533         (<u>divqi3): Macroize insn from {,u}divqi3  using any_div
5534         code iterator.
5535         (lfloor<MODEF:mode><SWI48:mode>2): Macroize insn from
5536         lfloor<mode>{si,di}2 patterns using SWI48 mode iterator.
5537         (lceil<MODEF:mode><SWI48:mode>2): Macroize insn from
5538         lceil<mode>{si,di}2 patterns using SWI48 mode iterator.
5539
5540 2009-10-08  Joseph Myers  <joseph@codesourcery.com>
5541
5542         * gcc.c (main): Remove trailing "." from diagnostics.
5543
5544 2009-10-08  Cary Coutant  <ccoutant@google.com>
5545
5546         Add support for debugging with ICF (Identical Code Folding).
5547         * calls.c (debug.h): New #include.
5548         (emit_call_1): Call virtual_call_token debug hook.
5549         * common.opt (-fenable-icf-debug): New option.
5550         * dwarf2out.c (dwarf2_debug_hooks): Add entries for new hooks (two
5551         locations in the source).
5552         (poc_label_num): New variable.
5553         (dcall_entry, vcall_entry): New typedefs.
5554         (dcall_table, vcall_table): New variables.
5555         (struct vcall_insn): New type.
5556         (vcall_insn_table): New variable.
5557         (DEBUG_DCALL_SECTION, DEBUG_VCALL_SECTION): New macros.
5558         (size_of_dcall_table): New function.
5559         (output_dcall_table): New function.
5560         (size_of_vcall_table): New function.
5561         (output_vcall_table): New function.
5562         (dwarf2out_direct_call): New function.
5563         (vcall_insn_table_hash): New function.
5564         (vcall_insn_table_eq): New function.
5565         (dwarf2out_virtual_call_token): New function.
5566         (dwarf2out_virtual_call): New function.
5567         (dwarf2out_init): Allocate new tables and sections.
5568         (prune_unused_types): Mark DIEs referenced from direct call table.
5569         (dwarf2out_finish): Output direct and virtual call tables.
5570         * final.c (final_scan_insn): Call direct_call and virtual_call
5571         debug hooks.
5572         * debug.h (struct gcc_debug_hooks): Add direct_call,
5573         virtual_call_token, virtual_call hooks.
5574         (debug_nothing_uid): New function.
5575         * debug.c (do_nothing_debug_hooks): Add dummy entries for new hooks.
5576         (debug_nothing_uid): New function.
5577         * dbxout.c (dbx_debug_hooks): Add dummy entries for new hooks.
5578         (xcoff_debug_hooks): Likewise.
5579         * sdbout.c (sdb_debug_hooks): Likewise.
5580         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
5581         * doc/invoke.texi (-fenable-icf-debug): New option.
5582
5583 2009-10-08  Alexandre Oliva  <aoliva@redhat.com>
5584
5585         PR debug/41353
5586         * regmove.c (regmove_backward_pass): Replace src with dst in the
5587         debug insn, and check for dst before rather than after.
5588
5589 2009-10-08  Janis Johnson <janis187@us.ibm.com>
5590
5591         * config/rs6000/rs6000.c (rs6000_delegitimize_address): Remove.
5592         (TARGET_DELEGITIMIZE_ADDRESS): Likewise.
5593
5594 2009-10-08  Jan Hubicka  <jh@suse.cz>
5595
5596         PR middle-end/41626
5597         * cgraphbuild.c (record_reference): When parameter DATA is NULL,
5598         do not mark cgraph nodes as needed.
5599         (record_references_in_initializer): Add new only_vars parameter.
5600         * cgraph.h (record_references_in_initializer): New parameter.
5601         * varasm.c (assemble_variable): Update call.
5602         * varpool.c (varpool_analyze_pending_decls): Always look for
5603         referenced vars.
5604
5605 2009-10-08  Anatoly Sokolov  <aesok@post.ru>
5606
5607         * config/avr/avr.c (last_insn_address) Remove variable.
5608         (expand_prologue): Don't initialise last_insn_address variable.
5609         (final_prescan_insn): Don't output insn size.
5610         * config/avr/avr.opt (msize): Remove switch.
5611         * doc/invoke.texi (AVR Options): Remove documentation of -msize
5612         switch.
5613
5614 2009-10-08  Adam Nemet  <anemet@caviumnetworks.com>
5615
5616         * combine.c (label_tick_ebb_start): Fix comment.
5617         (combine_instructions): Set label_tick and label_tick_ebb_start before
5618         calling setup_incoming_promotions.  Start them from 1.  Increment
5619         label_tick instead of deriving it from the BB index.  Rather than
5620         comparing ticks use the block from the previous iteration to decide
5621         whether to start a new EBB.  Remove empty lines before function.
5622
5623 2009-10-08  Michael Matz  <matz@suse.de>
5624
5625         PR middle-end/41573
5626         * builtins.c (fold_builtin_isascii): Use fold_build2.
5627         (fold_builtin_isdigit): Ditto.
5628         * except.c (duplicate_eh_regions_1): Tolerate NULL labels.
5629         * tree-cfg.c (struct rus_data, remove_useless_stmts_warn_notreached,
5630         remove_useless_stmts_cond, remove_useless_stmts_tf,
5631         remove_useless_stmts_tc, remove_useless_stmts_bind,
5632         remove_useless_stmts_goto, remove_useless_stmts_label,
5633         remove_useless_stmts_1, remove_useless_stmts,
5634         pass_remove_useless_stmts): Remove.
5635         * tree-pass.h (pass_remove_useless_stmts): Don't declare.
5636         * passes.c (init_optimization_passes): Don't add
5637         pass_remove_useless_stmts.
5638         * tree-eh.c (lower_eh_constructs_2): Handle empty cleanups.
5639         * tree.c (free_lang_data_in_decl): Don't clear DECL_INITIAL of
5640         static constants.
5641         * lto-symtab.c (lto_symtab_register_decl): Accepts DECL_INITIAL
5642         for static constants.
5643         * lto-streamer-out.c (output_gimple_stmt): Handle GIMPLE_NOP.
5644         * lto-streamer-in.c (input_gimple_stmt): Handle GIMPLE_NOP.
5645
5646 2009-10-08  Richard Guenther  <rguenther@suse.de>
5647
5648         * gimple.c (free_gimple_type_tables): New function.
5649         * gimple.h (free_gimple_type_tables): Declare.
5650
5651 2009-10-07  Mark Heffernan  <meheff@google.com>
5652
5653         * ipa-prop.c (ipa_print_node_params) Only print
5654         names of named arguments.
5655
5656 2009-10-08  Rafael Avila de Espindola  <espindola@google.com>
5657
5658         * gcc.c (LINK_COMMAND_SPEC): Pass libc with -pass-through if it is
5659         being statically linked.
5660
5661 2009-10-08  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
5662
5663         * collect2.c (add_lto_object): Only define if OBJECT_FORMAT_NONE.
5664
5665 2009-10-08  Jan Hubicka  <jh@suse.cz>
5666
5667         PR bootstrap/41620
5668         * ipa.c (cgraph_externally_visible_p,
5669         function_and_variable_visibility,
5670         whole_program_function_and_variable_visibility): Skip non-finalized
5671         nodes.
5672
5673 2009-10-08  Nick Clifton  <nickc@redhat.com>
5674
5675         * config/mn10300/mn10300.h (CONSTANT_ADDRESS_P): Do not allow
5676         CONST_DOUBLEs.
5677
5678 2009-10-08  Andreas Tobler  <a.tobler@schweiz.org>
5679
5680         PR bootstrap/37739
5681         * config.host: Use config/x-cflags-O1 for powerpc FreeBSD.
5682
5683 2009-10-07  Joseph Myers  <joseph@codesourcery.com>
5684
5685         PR c/41182
5686         * c-common.c (c_fully_fold_internal): Strip nops from the result
5687         of recursive calls to c_fully_fold_internal.
5688         (c_wrap_maybe_const): New.
5689         (c_save_expr): Use c_wrap_maybe_const.
5690         * c-common.h (c_wrap_maybe_const): Declare.
5691         * c-typeck.c (build_conditional_expr, c_finish_stmt_expr,
5692         build_binary_op): Use c_wrap_maybe_const.
5693
5694 2009-10-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5695
5696         * real.c: Fix comment to reflect actual exponent size.
5697
5698 2009-10-08  Ben Elliston  <bje@au.ibm.com>
5699
5700         * config/rs6000/a2.md: Add FSF comment header.
5701
5702 2009-10-07  Uros Bizjak  <ubizjak@gmail.com>
5703
5704         * config/i386/i386.md (any_extend): New code iterator.
5705         (u, s): New code attributes.
5706         (sgnprefix): Ditto.
5707         (DWIH): Rewrite as code iterator for SI and DI modes.
5708         (DWI): Rewrite as mode attribute.
5709         (dwi): New mode attribute.
5710         (di): Depend on SI mode and DI mode.
5711         (doubleint_general_operand): Remove mode attribute.
5712
5713         (*lea_1): Macroize insn from *lea_1_rex64 and *lea_1 patterns using
5714         DWIH mode iterator.
5715
5716         (*add<mode>3_doubleword): Use DWIH as the base mode iterator.
5717         (*sub<mode>3_doubleword): Ditto.
5718
5719         (mul<mode>3): Macroize expander from mul{hi,si,di}3 patterns
5720         using SWIM248 mode iterator.
5721         (*mul<mode>3_1): Macroize insn from mul{si,di}3_1 patterns
5722         using SWI48 mode iterator.
5723         (<u>mul<mode><dwi>3): Macroize expander from {,u}mul{sidi,diti}3
5724         patterns using DWIH mode iterator and any_extend code iterator.
5725         (<u>mulqihi3): Macroize expander from {,u}mulqihi3 patterns
5726         using any_extend code iterator.
5727         (*<u>mul<mode><dwi>3_1): Macroize insn from {,u}mul{sidi,diti}3_1
5728         patterns using DWIH mode iterator and any_extend code iterator.
5729         (*<u>mulqihi3_1): Macroize insn from {,u}mulqihi3_1 patterns
5730         using any_extend code iterator.
5731         (<s>mul<mode>3_highpart): Macroize expander from
5732         {s,u}mul{si,di}3_highpart patterns using DWIH mode iterator
5733         and any_extend code iterator.
5734         (*<s>muldi3_highpart_1): Macroize insn from
5735         *{s,u}muldi3_highpart_rex64 patterns using any_extend code iterator.
5736         (*<s>mulsi3_highpart_1): Macroize insn from *{s,u}mulsi3_highpart_1
5737         patterns using any_extend code iterator.
5738         (*<s>mulsi3_highpart_zext): Macroize insn from
5739         *{s,u}mulsi3_highpart_zext patterns using any_extend code iterator.
5740
5741 2009-10-07  Jakub Jelinek  <jakub@redhat.com>
5742
5743         * dwarf2out.c (tree_add_const_value_attribute_for_decl): Don't add
5744         DW_AT_const_value if VAR_DIE already has DW_AT_abstract_origin
5745         refering to a DIE with DW_AT_const_value.
5746
5747 2009-10-07  Vladimir Makarov  <vmakarov@redhat.com>
5748
5749         PR middle-end/22072
5750         * ira-lives.c (check_and_make_def_conflict): Process all operands.
5751
5752 2009-10-06  Jan Hubicka  <jh@suse.cz>
5753
5754         * cgraph.c (cgraph_node_can_be_local): Handle externally visible nodes
5755         correctly.
5756
5757 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
5758
5759         * config/i386/i386.md (*lea_1_rex64, *lea_1, *lea_1_zext,
5760         *lea_2_rex64): Move before *add<mode>_1 pattern.
5761
5762 2009-10-07  Jan Hubicka  <jh@suse.cz>
5763
5764         * collect2.c (main): Add -fno-whole-program.
5765         * gcc.c (set_collect_gcc_options): Do not remove whole program here.
5766
5767 2009-10-07  Jan Hubicka  <jh@suse.cz>
5768
5769         * lto-symtab.c (lto_cgraph_replace_node): Assert that inline clones
5770         has no address taken.
5771         * cgraph.c (cgraph_mark_needed_node): Assert that inline clones are
5772         never needed.
5773         (cgraph_clone_node): Clear externally_visible flag for clones.
5774         * cgraph.h (cgraph_only_called_directly_p,
5775         cgraph_can_remove_if_no_direct_calls_p): New predicates.
5776         * tree-pass.h (pass_ipa_whole_program_visibility): Declare.
5777         * ipa-cp.c (ipcp_cloning_candidate_p): Use new predicate.
5778         (ipcp_initialize_node_lattices, ipcp_estimate_growth,
5779         ipcp_insert_stage): Likwise.
5780         * cgraphunit.c (cgraph_decide_is_function_needed): Do not compute
5781         externally_visible flag.
5782         (verify_cgraph_node): Verify that inline clones look right.
5783         (process_function_and_variable_attributes): Do not set
5784         externally_visible flags.
5785         (ipa_passes): Avoid executing small_ipa_passes at LTO stage; they've
5786         been already run.
5787         * lto-cgraph.c (lto_output_node): Assert that inline clones are not
5788         boundaries.
5789         * ipa-inline.c (cgraph_clone_inlined_nodes): Use new predicates;
5790         clear externally_visible when turning into inline clones
5791         (cgraph_mark_inline_edge): Use new predicates.
5792         (cgraph_estimate_growth): Likewise.
5793         (cgraph_decide_inlining): Likewise.
5794         * ipa.c (cgraph_postorder): Likewise.
5795         (cgraph_remove_unreachable_nodes): Likewise; sanity check
5796         that inline clones are not needed.
5797         (cgraph_externally_visible_p): New predicate.
5798         (function_and_variable_visibility): Add whole_program parameter;
5799         always set externally_visible flag; handle COMDAT function
5800         privatization.
5801         (local_function_and_variable_visibility): New function.
5802         (gate_whole_program_function_and_variable_visibility): New function.
5803         (whole_program_function_and_variable_visibility): New function.
5804         (pass_ipa_whole_program_visibility): New function.
5805         * passes.c  (init_optimization_passes): Add whole program visibility
5806         pass.
5807         (do_per_function_toporder, function_called_by_processed_nodes_p): Do
5808         not care about needed/reachable flags.
5809         * varpool.c: Include flags.h
5810         (decide_is_variable_needed): When doing LTO assume whole-program mode.
5811         (varpool_finalize_decl): When we are in LTO read-back, all variables
5812         are analyzed.
5813         (varpool_analyze_pending_decls): Skip analyzis of analyzed vars.
5814
5815 2009-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
5816
5817         * config/s390/tpf.h (TARGET_DEFAULT): Remove MASK_HARD_FLOAT and
5818         add MASK_HARD_DFP.
5819
5820 2009-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
5821
5822         * config.gcc: Don't include the makefile fragments intended for
5823         libgcc.
5824         * config/s390/fixdfdi.h: File removed.
5825         * config/s390/libgcc-glibc.ver: File removed.
5826         * config/s390/s390.h: Remove the fixdfdi.h hack.
5827         * config/s390/t-crtstuff: File moved to libgcc dir.
5828         * config/s390/t-linux: Likewise.
5829         * config/s390/t-tpf: libgcc specific parts removed.
5830         * config/s390/t-linux64: Likewise.
5831
5832 2009-10-06  Jerry Quinn  <jlquinn@optonline.net>
5833
5834         * Makefile.in (lto-wrapper): Use COMPILER and ALL_COMPILERFLAGS.
5835         (lto-compress.o): Likewise.
5836
5837 2009-10-07  Danny Smith  <dannysmith@users.sourceforge.net>
5838
5839         PR target/41512
5840         * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't propagate
5841         dllexport to class members here.
5842         (i386_pe_determine_dllimport_p): Only check static class data for
5843         definition.
5844         (i386_pe_encode_section_info): Don't recheck DECL_DLLIMPORT_P.
5845         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Only check
5846         functions for vague linkage.
5847         (i386_pe_type_dllexport_p): Fix formatting.
5848         (maybe_add_dllexport) New function.
5849         (i386_pe_adjust_class_at_definition): Use it to propagate dllexport
5850         to class members.
5851
5852 2009-10-07  Ben Elliston  <bje@au.ibm.com>
5853
5854         * config/rs6000/a2.md: Remove duplicated lines.
5855
5856 2009-10-07  Ben Elliston  <bje@au.ibm.com>
5857
5858         * config.gcc (powerpc*-*-*): Handle a2.
5859         * config/rs6000/rs6000.md (cpu): Add ppca2.  Include "a2.md".
5860         * config/rs6000/a2.md: New file.
5861         * config/rs6000/rs6000.opt (mno-update): New.
5862         (mupdate): Return to using a mask, not a var.
5863         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add support for a2.
5864         (enum processor_type): Add PROCESSOR_PPCA2.
5865         * config/rs6000/rs6000.c (ppca2_cost): New costs.
5866         (rs6000_override_options): Add "a2" to processor_target_table.
5867         Update rs6000_always_hint logic.  Correctly set rs6000_cost for a2.
5868         * doc/invoke.texi (RS/6000 and PowerPC Options): Document -mcpu=a2.
5869
5870 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
5871
5872         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
5873         Use explicit gen_truncxfsf2 and gen_truncxfdf2 references to avoid
5874         reference to nonexistent gen_truncxfxf2 function.
5875
5876 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
5877
5878         * config/i386/i386.md (SWI48, SDWIM, DWI): New mode iterators.
5879         (DWIH, g, di, doubleint_general_operand): New mode attributes.
5880         (general_operand): Handle TI mode.
5881         (add<mode>3): Macroize expander from add{qi,hi,si,di,ti}3 patterns
5882         using SDWIM mode iterator.
5883         (*add<mode>3_doubleword): New insn_and_split pattern.  Macroize
5884         pattern from *add{di,ti}3_1 patterns and corresponding splitters
5885         using DWI mode iterator.
5886         (add<mode>3_carry): Macroize insn from add{qi,hi,si,di}3_carry
5887         patterns using SWI mode iterator.
5888         (*add<mode>3_cc): Macroize insn from add{si,di}3_cc patterns
5889         using SWI48 mode iterator.
5890         (*add<mode>_1): Ditto from add{si,di}_1 patterns.
5891         (*add<mode>_2): Ditto from add{si,di}_2 patterns.
5892         (*add<mode>_3): Ditto from add{si,di}_3 patterns.
5893         (*add<mode>_5): Ditto from add{si,di}_5 patterns.
5894         (sub<mode>3): Macroize expander from sub{qi,hi,si,di,ti}3 patterns
5895         using SDWIM mode iterator.
5896         (*sub<mode>3_doubleword): New insn_and_split pattern.  Macroize
5897         pattern from *sub{di,ti}3_1 patterns and corresponding splitters
5898         using DWI mode iterator.
5899         (sub<mode>3_carry): Macroize insn from sub{qi,hi,si,di}3_carry
5900         patterns using SWI mode iterator.
5901         (*sub<mode>_1): Ditto from from sub{qi,hi,si,di}_1 patterns.
5902         (*sub<mode>_2): Ditto from sub{qi,hi,si,di}_2 patterns.
5903         (*sub<mode>_3): Ditto from sub{qi,hi,si,di}_3 patterns.
5904         (<plusminus_insn>xf3): Macroize expander from addxf3 and subxf3
5905         patterns using plusminus code iterator.
5906         (<plusminus_insn><mode>3): Macroize expander from add<mode>3 and
5907         sub<mode>3 patterns using plusminus code iterator.
5908         * config/i386/i386.c (override_options): Update the call to
5909         gen_subdi_carry_rex64 for renamed function.
5910         (ix86_expand_int_addcc): Update calls to gen_subdi3_carry_rex64
5911         and gen_adddi3_carry_rex64 for renamed functions.  Use indirect
5912         calls to instruction expanders.
5913
5914 2009-10-06  Martin Jambor  <mjambor@suse.cz>
5915
5916         PR bootstrap/41395
5917         * opts.c (decode_options): Run IPA-SRA at -O2.
5918
5919 2009-10-06  Richard Guenther  <rguenther@suse.de>
5920
5921         * lto-symtab.c (lto_symtab_entry_hash): Hash strings, not pointers.
5922
5923 2009-10-06  Tobias Burnus  <burnus@net-b.de>
5924
5925         PR lto/41591
5926         * doc/invoke.texi (-flto,-fwhole-program): Make clear that the
5927         -flto and -fwhole-program flags can be combined.
5928
5929 2009-10-06  Ryan Mansfield  <rmansfield@qnx.com>
5930
5931         PR driver/41217
5932         * gcc.c (process_command): Check that -o argument was specified.
5933
5934 2009-10-06  Jerry Quinn  <jlquinn@optonline.net>
5935
5936         * gimple.c (gimple_type_hash): Use CONST_CAST_TREE to fix compilation.
5937
5938 2009-10-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5939
5940         * c.opt (Wjump-misses-init): Fix typo to enable for ObjC.
5941         * doc/invoke.texi (Warning Options): Annotate allowed languages
5942         for -Wunsuffixed-float-constants.
5943
5944 2009-10-05  Jakub Jelinek  <jakub@redhat.com>
5945
5946         * dwarf2out.c (modified_type_die): Don't add DW_AT_name to
5947         DW_TAG_{const,volatile}_type if its DW_AT_type already has the
5948         same name and isn't the main variant.
5949
5950         PR debug/41558
5951         * dwarf2out.c (loc_by_reference): Removed.
5952         (dw_loc_list_1): New function.
5953         (dw_loc_list): Remove toplev argument, add want_address argument.
5954         Don't look at decl_by_reference_p at all.  Use dw_loc_list_1.
5955         (loc_list_from_tree) <case VAR_DECL>: Pass want_address rather than
5956         want_address == 2 to dw_loc_list.  For successful dw_loc_list
5957         set have_address to 1 only if want_address is not 0.
5958
5959 2009-10-05  Richard Sandiford  <rdsandiford@googlemail.com>
5960
5961         * config/mips/mips-protos.h (mips_trampoline_code_size): Declare.
5962         * config/mips/mips.h (TRAMPOLINE_SIZE): Redefine as the size of
5963         a code block followed by two pointers.
5964         (TRAMPOLINE_ALIGNMENT): Define to 64 for 32-bit targets too.
5965         * config/mips/mips.c (MIPS_LOAD_PTR): New macro.
5966         (MIPS_MOVE): Likewise.
5967         (MIPS_LUI): Likewise.
5968         (MIPS_JR): Likewise.
5969         (MIPS_BAL): Likewise.
5970         (MIPS_NOP): Likewise.
5971         (mips_asm_trampoline_template): Delete.
5972         (mips_trampoline_code_size): New function.
5973         (mips_trampoline_init): Add shorter sequences for all cases
5974         except Pmode == DImoe && !TARGET_USE_PIC_FN_ADDR_REG.
5975         Calculate the opcodes directly, rather than copying from a template.
5976         Only flush the code part of the trampoline.
5977         (TARGET_ASM_TRAMPOLINE_TEMPLATE): Delete.
5978
5979 2009-10-05  Richard Sandiford  <rdsandiford@googlemail.com>
5980
5981         * config/mips/mips.h (DWARF_FRAME_RETURN_COLUMN): Replace
5982         GP_REG_FIRST + 31 with RETURN_ADDR_REGNUM.
5983         (INCOMING_RETURN_ADDR_RTX): Likewise.
5984         (FUNCTION_PROFILER): Likewise.  Replace GP_REG_FIRST + 1
5985         with AT_REGNUM.
5986         * config/mips/sdemtk.h (FUNCTION_PROFILER): Replace GP_REG_FIRST + 31
5987         with RETURN_ADDR_REGNUM.
5988         (MIPS_SAVE_REG_FOR_PROFILING_P): Likewise.
5989         * config/mips/mips.c (mips16_build_call_stub): Replace
5990         GP_REG_FIRST + 31 with RETURN_ADDR_REGNUM, GP_REG_FIRST + 1
5991         with AT_REGNUM and 31 with RETURN_ADDR_REGNUM.
5992         (mips_print_operand_punctuation): Likewise.
5993         (mips_frame_set): Likewise.
5994         (mips16e_output_save_restore): Likewise.
5995         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
5996         (mips_save_reg_p): Likewise.
5997         (mips_return_addr): Likewise.
5998         (mips_set_return_address): Likewise.
5999         (mips_direct_save_slot_move_p): Likewise.
6000         (mips_output_function_prologue): Likewise.
6001         (mips_restore_reg): Likewise.
6002         (mips_expand_epilogue): Likewise.
6003         (mips_epilogue_uses): Likewise.
6004         * config/mips/mips.md (RETURN_ADD_REGNUM): Define.
6005         (*mov<mode>_ra): Use it instead of a hard-coded 31.
6006         (clear_hazard_<mode>): Likewise.
6007         (call_internal): Likewise.
6008         (call_internal_direct): Likewise.
6009         (call_direct_split): Likewise.
6010         (call_value_internal): Likewise.
6011         (call_value_split): Likewise.
6012         (call_value_internal_direct): Likewise.
6013         (call_value_direct_split): Likewise.
6014         (call_value_multiple_internal): Likewise.
6015         (call_value_multiple_split): Likewise.
6016
6017 2009-10-05  Eric Botcazou  <ebotcazou@adacore.com>
6018             Jakub Jelinek  <jakub@redhat.com>
6019
6020         PR rtl-optimization/41511
6021         * combine.c (record_value_for_reg): Pass explicit values as argument
6022         to get_last_value_validate.
6023         (get_last_value_validate): Document INSN parameter.
6024         For non-readonly MEMs, assume they might have been modified if INSN
6025         was in another basic block.
6026         (get_last_value): Minor reformatting.
6027
6028 2009-10-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6029
6030         PR tree-opt/40992
6031         * final.c (asm_str_count): Split out from asm_insn_count.
6032         * rtl.h (asm_str_count): New prototype.
6033         * tree-inline (estimate_num_insns) <case GIMPLE_ASM>: Call
6034         asm_str_count.
6035
6036 2009-10-05  Sriraman Tallam  <tmsriram@google.com>
6037
6038         * doc/plugins.texi: Change plugin_pass to register_pass_info.
6039
6040 2009-10-05  Basile Starynkevitch  <basile@starynkevitch.net>
6041             Rafael Espindola  <espindola@google.com>
6042
6043         * gengtype.c (write_types): Moved call to write_func_for_structure
6044         into seperate loops.
6045
6046 2009-10-05  Richard Guenther  <rguenther@suse.de>
6047
6048         PR lto/41281
6049         * lto-cgraph.c (output_cgraph): Output toplevel asms.
6050         (input_cgraph_1): Input toplevel asms.
6051
6052 2009-10-05  Richard Guenther  <rguenther@suse.de>
6053
6054         PR lto/40902
6055         * lto-symtab.c (lto_compatible_attributes_p): Remove.
6056         (external_aggregate_decl_p): Likewise.
6057         (lto_symtab_compatible): Re-structure.  Remove dead code.
6058         For variables ignore toplevel qualifiers when comparing types.
6059         Issue warnings, not errors for mismatched user-alignment.
6060
6061 2009-10-05  Richard Guenther  <rguenther@suse.de>
6062
6063         PR lto/41552
6064         PR lto/41487
6065         * lto-symtab.c (struct lto_symtab_base_def): Remove.
6066         (struct lto_symtab_identifier_def): Likewise.
6067         (struct lto_symtab_decl_def): Likewise.
6068         (struct lto_symtab_entry_def): New.
6069         (lto_symtab_identifier_t): Rename to ...
6070         (lto_symtab_entry_t): ... this.
6071         (lto_symtab_decls): Remove.
6072         (lto_symtab_base_hash): Rename to ...
6073         (lto_symtab_entry_hash): ... this.
6074         (lto_symtab_base_eq): Rename to ...
6075         (lto_symtab_entry_eq): ... this.
6076         (lto_symtab_base_marked_p): Rename to ...
6077         (lto_symtab_entry_marked_p): ... this.
6078         (lto_symtab_identifier_marked_p): Remove.
6079         (lto_symtab_decl_marked_p): Likewise.
6080         (lto_symtab_maybe_init_hash_tables): Rename to ...
6081         (lto_symtab_maybe_init_hash_table): ... this.
6082         (lto_symtab_set_resolution_and_file_data): Remove.
6083         (lto_symtab_register_decl): New function.
6084         (lto_symtab_get_identifier): Remove.
6085         (lto_symtab_get): New function.
6086         (lto_symtab_get_resolution): Adjust.
6087         (lto_symtab_get_identifier_decl): Remove.
6088         (lto_symtab_set_identifier_decl): Likewise.
6089         (lto_symtab_merge_decl): Rename to ...
6090         (lto_symtab_merge): ... this.  Rewrite.
6091         (lto_symtab_merge_var): Remove.
6092         (lto_symtab_merge_fn): Likewise.
6093         (lto_symtab_prevailing_decl): Adjust.
6094         (lto_cgraph_replace_node): New function.
6095         (lto_symtab_merge_decls_2): Likewise.
6096         (lto_symtab_merge_decls_1): Likewise.
6097         (lto_symtab_fixup_var_decls): Likewise.
6098         (lto_symtab_resolve_symbols): Likewise.
6099         (lto_symtab_merge_decls): Likewise.
6100         (lto_symtab_prevailing_decl): Adjust.
6101         (lto_symtab_get_symtab_def): Remove.
6102         (lto_symtab_get_file_data): Likewise.
6103         (lto_symtab_clear_resolution): Adjust.
6104         (lto_symtab_clear_resolution): Likewise.
6105         * lto-cgraph.c (input_edge): Do not merge cgraph nodes here.
6106         (input_cgraph_1): Likewise.
6107         * lto-streamer-in.c (get_resolution): Do not provide fake
6108         symbol resolutions here.
6109         (deferred_global_decls): Remove.
6110         (lto_register_deferred_decls_in_symtab): Likewise.
6111         (lto_register_var_decl_in_symtab): Change signature, register
6112         variable via lto_symtab_register_decl.
6113         (lto_register_function_decl_in_symtab): Likewise.
6114         (lto_read_tree): Adjust.
6115         * lto-streamer.h (lto_register_deferred_decls_in_symtab): Remove.
6116         (lto_symtab_merge_var): Likewise.
6117         (lto_symtab_merge_fn): Likewise.
6118         (lto_symtab_register_decl): Declare.
6119         (lto_symtab_merge_decls): Likewise.
6120
6121 2009-10-05  Richard Guenther  <rguenther@suse.de>
6122
6123         PR tree-optimization/23821
6124         * tree-vrp.c (vrp_finalize): Do not perform copy propagation.
6125         * tree-ssa-dom.c (cprop_operand): Do not propagate copies into
6126         simple IV increments.
6127
6128 2009-10-05  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
6129
6130         * config/arm/arm.c (arm_override_options): Really initialize
6131         flag_dwarf2_cfi_asm to 0.
6132
6133 2009-10-05  Doug Kwan  <dougkwan@google.com>
6134
6135         PR rtl-optimization/41574
6136         * combine.c (distribute_and_simplify_rtx): Quit if RTX mode is
6137         floating point and we are not doing unsafe math optimizations.
6138
6139 2009-10-03  Simon Baldwin  <simonb@google.com>
6140             Cary Coutant  <ccoutant@google.com>
6141             Rafael Espindola  <espindola@google.com>
6142             Richard Guenther  <rguenther@suse.de>
6143             Jan Hubicka  <jh@suse.cz>
6144             Doug Kwan <dougkwan@google.com>
6145             H.J. Lu  <hongjiu.lu@intel.com>
6146             Bill Maddox  <maddox@google.com>
6147             Ryan Mansfield  <rmansfield@qnx.com>
6148             Diego Novillo  <dnovillo@google.com>
6149             Ollie Wild  <aaw@google.com>
6150             Kenneth Zadeck <zadeck@naturalbridge.com>
6151
6152         * lto-cgraph.c: New file.
6153         * lto-compress.c: New file.
6154         * lto-compress.h: New file.
6155         * lto-opts.c: New file.
6156         * lto-section-in.c: New file.
6157         * lto-section-out.c: New file.
6158         * lto-streamer-in.c: New file.
6159         * lto-streamer-out.c: New file.
6160         * lto-streamer.c: New file.
6161         * lto-streamer.h: New file.
6162         * lto-symtab.c: New file.
6163         * lto-wpa-fixup.c: New file.
6164         * lto-wrapper.c: New file.
6165
6166 2009-10-03  Simon Baldwin  <baldwin@google.com>
6167             Ben Elliston  <bje@au.ibm.com>
6168             Rafael Espindola  <espindola@google.com>
6169             Nathan Froyd  <froydnj@codesourcery.com>
6170             Jan Hubicka  <jh@suse.cz>
6171             Doug Kwan  <dougkwan@google.com>
6172             Diego Novillo  <dnovillo@google.com>
6173             Kenneth Zadeck  <zadeck@naturalbridge.com>
6174
6175         * Makefile.in (enable_lto): New.
6176         (site.exp): If @enable_lto@ is set to 'yes' define ENABLE_LTO.
6177         (LINKER_PLUGIN_API_H): Define.
6178         (LTO_SYMTAB_H): Define.
6179         (LTO_STREAMER_H): Define.
6180         (TREE_VECTORIZER_H): Define.
6181         (INCLUDES): Add LIBELFINC.
6182         (OBJS-common): Add lto-cgraph.o, lto-streamer-in.o,
6183         lto-streamer-out.o, lto-section-in.o, lto-section-out.o, lto-symtab.o,
6184         lto-opts.o, lto-streamer.o, lto-wpa-fixup.o, lto-compress.o.
6185         (MOSTLYCLEANFILES): Add lto-wrapper$(exeext)
6186         (native): Add lto-wrapper$(exeext)
6187         (lto-compress.o, lto-cgraph.o, lto-streamer-in.o,
6188         lto-streamer-out.o, lto-section-in.o, lto-section-out.o,
6189         lto-symtab.o, lto-opts.o, lto-streamer.o, lto-wpa-fixup.o): New rules.
6190         (gimple.o): Add dependency on LTO_HEADER_H and LTO_SECTION_OUT_H.
6191         (varasm.o): Add dependency on tree-iterator.h.
6192         (cgraph.o): Add dependency on cif-code.def.
6193         (ipa-reference.o): Add dependency on LTO_STREAMER_H.
6194         (ipa-pure-const.o): Likewise.
6195         (GTFILES): Add lto-symtab.c.
6196         (install-lto-wrapper): New.
6197         * configure.ac: If 'lto' is in enable_languages, define ENABLE_LTO
6198         and enable_lto.  If LIBELFLIBS is set, define HAVE_libelf.
6199         * config.in: Regenerate.
6200
6201 2009-10-03  Rafael Espindola  <espindola@google.com>
6202             Diego Novillo  <dnovillo@google.com>
6203
6204         * cgraphunit.c (ipa_passes): Prevent lto1 from calling
6205         ipa_write_summaries.
6206         Call execute_ipa_summary_passes for all_regular_ipa_passes and
6207         all_lto_gen_passes.
6208         (cgraph_optimize): Make extern.
6209
6210 2009-10-03  Nathan Froyd  <froydnj@codesourcery.com>
6211             Kenneth Zadeck <zadeck@naturalbridge.com>
6212
6213         * toplev.c (in_lto_p): Declare.
6214         * collect2.c (scan_prog_file): Read all the output when reading
6215         information for LTO.
6216         (enum lto_mode_d): Declare.
6217
6218 2009-10-03  Richard Guenther  <rguenther@suse.de>
6219             Diego Novillo  <dnovillo@google.com>
6220
6221         * gimple.c: Include target.h and alias.h.
6222         (gimple_types): Declare.
6223         (type_hash_cache): Declare.
6224         (gimple_alloc_stat): Make extern.
6225         (gimple_build_eh_must_not_throw): Call
6226         gimple_eh_must_not_throw_set_fndecl.
6227         (struct type_pair_d): Declare.
6228         (type_pair_t): Declare.
6229         (type_pair_hash): New.
6230         (type_pair_eq): New.
6231         (lookup_type_pair): New.
6232         (gimple_force_type_merge): New.
6233         (compare_type_names_p): New.
6234         (compare_field_offset): New.
6235         (gimple_types_compatible_p): New.
6236         (struct sccs): Declare.
6237         (next_dfs_num): Declare.
6238         (iterative_hash_gimple_type): New.
6239         (visit): New.
6240         (iterative_hash_type_name): New.
6241         (iterative_hash_gimple_type): New.
6242         (gimple_type_hash): New.
6243         (gimple_type_eq): New.
6244         (gimple_register_type): New.
6245         (print_gimple_types_stats): New.
6246         (gimple_signed_or_unsigned_type): New.
6247         (gimple_unsigned_type): New.
6248         (gimple_signed_type): New.
6249         (gimple_get_alias_set): New.
6250         (gimple_decl_printable_name): Do not use DMGL_TYPES.
6251         * gimple.h (gimple_alloc, gimple_alloc_stat): Declare.
6252         (gimple_force_type_merge): Declare.
6253         (gimple_types_compatible_p): Declare.
6254         (gimple_register_type): Declare.
6255         (print_gimple_types_stats): Declare.
6256         (gimple_unsigned_type): Declare.
6257         (gimple_signed_type): Declare.
6258         (gimple_get_alias_set): Declare.
6259         (gimple_eh_must_not_throw_set_fndecl): New.
6260
6261 2009-10-03  Jan Hubicka  <jh@suse.cz>
6262             Kenneth Zadeck <zadeck@naturalbridge.com>
6263
6264         * ipa-pure-const.c: Include lto-streamer.h.
6265         (register_hooks): Factor out of ...
6266         (generate_summary): ... here.
6267         (pure_const_write_summary): New.
6268         (pure_const_read_summary): New.
6269         (pass_ipa_pure_const): Add pure_const_write_summary and
6270         pure_const_read_summary.
6271         * ipa-reference.c: Include lto-streamer.h.
6272         (add_new_function): New.
6273         (remove_node_data): New.
6274         (duplicate_node_data): New.
6275         (ipa_init): Guard against multiple calls.
6276         Move hook setup from analyze_function.
6277         (write_node_summary_p): New.
6278         (ipa_reference_write_summary): New.
6279         (ipa_reference_read_summary): New.
6280         (pass_ipa_reference): Add ipa_reference_write_summary and
6281         ipa_reference_read_summary.
6282         * cgraph.h (cgraph_local_info): Add field lto_file_data.
6283         (struct cgraph_edge): Add fields lto_stmt_uid and
6284         call_stmt_cannot_inline_p.
6285         (cgraph_optimize): Declare.
6286         (cgraph_decide_is_function_needed): Declare.
6287         (reset_inline_failed): Declare.
6288         (enum LTO_cgraph_tags): Declare.
6289         (LTO_cgraph_tag_names): Declare.
6290         (LCC_NOT_FOUND): Define.
6291
6292 2009-10-03  Doug Kwan  <dougkwan@google.com>
6293             Rafael Espindola  <espindola@google.com>
6294             Jan Hubicka  <jh@suse.cz>
6295             Diego Novillo  <dnovillo@google.com>
6296             Kenneth Zadeck  <zadeck@naturalbridge.com>
6297
6298         * passes.c (all_regular_ipa_passes): New.
6299         (all_ipa_passes): Rename to all_small_ipa_passes.
6300         (init_optimization_passes): Init all_regular_ipa_passes.
6301         * tree-pass.h (all_regular_ipa_passes): New.
6302         (all_ipa_passes): Rename to all_small_ipa_passes.
6303         * passes.c (all_lto_gen_passes): New.
6304         (init_optimization_passes): Initialize all_lto_gen_passes.
6305         (execute_ipa_summary_passes): Make non-static.
6306         (ipa_write_summaries_1): New.
6307         (ipa_write_summaries_2): New.
6308         (ipa_write_summaries): New.
6309         (ipa_write_summaries_of_cgraph_node_set): New.
6310         (ipa_read_summaries_1): New.
6311         (ipa_read_summaries): New.
6312         (execute_ipa_pass_list): Call cgraph_process_new_functions.
6313         (execute_regular_ipa_pass_list): Remove.
6314         (init_optimization_passes): Schedule
6315         pass_rebuild_cgraph_edges and pass_early_inline outside
6316         of pass_all_early_optimizations.  Document reason.
6317         (pass_ipa_lto_gimple_out, pass_ipa_lto_wpa_fixup,
6318         pass_ipa_lto_finish_out): New pass.
6319         (pass_ipa_summary_passes): Start and stop timers if the pass has them.
6320         (execute_all_ipa_transforms): New.
6321         (execute_one_pass): Don't call execute_one_ipa_transform_pass.
6322         (dump_properties, debug_properties): New.
6323         * tree-optimize.c (gate_all_early_local_passes): Return
6324         false if we are in lto1.
6325         (tree_rest_of_compilation): Call execute_all_ipa_transforms.
6326         * tree-pass.h (execute_all_ipa_transforms): Declare.
6327         (pass_ipa_function_and_variable_visibility): Declare.
6328         (pass_ipa_early_inline): Declare.
6329         (pass_ipa_lto_gimple_out): Declare.
6330         (pass_ipa_lto_wpa_fixup): Declare.
6331         (pass_ipa_lto_finish_out): Declare.
6332         (all_small_ipa_passes, all_regular_ipa_passes,
6333         all_lto_gen_passes): Declare.
6334         (execute_ipa_summary_passes): Declare.
6335         (execute_all_ipa_transforms): Declare.
6336         (ipa_write_summaries): Declare
6337         (ipa_write_summaries_of_cgraph_node_set): Declare.
6338         (ipa_read_summaries): Declare.
6339
6340 2009-10-03  Doug Kwan  <dougkwan@google.com>
6341             Ollie Wild  <aaw@google.com>
6342
6343         * ipa-prop.c (ipa_propagate_indirect_call_infos): Do nothing in WPA.
6344
6345         * collect2.c (LTO_MODE_NONE, LTO_MODE_LTO, LTO_MODE_WPA): New enums.
6346         (lto_mode): New variable.
6347         (maybe_run_lto_and_relink): Handle the -fwpa option.
6348         (main): Handle the -fwpa option.
6349         (maybe_unlink_list): New function.
6350         * gcc.c (link_lto_options): Replace -flto with -fwpa.
6351         * common.opt (flto): New flag.
6352         * toplev.c (flag_generate_lto): Declare.
6353
6354 2009-10-03  Simon Baldwin  <simonb@google.com>
6355
6356         * common.opt (flto-compression-level): New flag.
6357
6358         * opts.c: Include lto-opts.h.
6359         (handle_option): Call lto_register_user_option for each
6360         valid option handled.
6361         (decode_options): Clear registered options before the options
6362         handling loop.
6363
6364 2009-10-03  Cary Coutant  <ccoutant@google.com>
6365
6366         * collect2.c (is_elf): New function.
6367         (scan_prog_file): Require LTO object to be in ELF format.
6368
6369 2009-10-03  Rafael Espindola  <espindola@google.com>
6370
6371         * gcc.c (LINK_COMMAND_SPEC): Use the -pass-through option to pass
6372         libgcc to the linker.
6373
6374         * ipa-cp.c (cgraph_gate_cp): Return false if LTRANS is running.
6375
6376         * collect2.c (maybe_run_lto_and_relink): Execute lto-wrapper.
6377         (collect_execute): Add flags argument. Pass flags to pex_run. Update
6378         all callers.
6379         * collect2.h (collect_execute): Add flags argument.
6380         * tlink.c (tlink_execute): Update call to collect_execute.
6381         * gcc.c (main): Set the COLLECT_LTO_WRAPPER environment variable.
6382         (use_linker_plugin): New.
6383         (use_linker_plugin_spec_function): New.
6384         (LINK_COMMAND_SPEC): Pass plugin options to the linker.
6385         (linker_plugin_file_spec): New.
6386         (lto_wrapper_spec): New.
6387         (lto_gcc_spec): New.
6388         (static_specs): Add linker_plugin_file, lto_wrapper and lto_gcc.
6389         (static_spec_functions): Add use-linker-plugin.
6390         (process_command): Handle -use-linker-plugin.
6391         (main): Use lto_wrapper_spec instead of lto_wrapper. Set
6392         linker_plugin_file_spec and lto_gcc_spec.
6393         (use_linker_plugin_spec_function): New.
6394
6395 2009-10-03  Richard Guenther  <rguenther@suse.de>
6396
6397         PR lto/41547
6398         PR lto/41548
6399         * tree.h (is_lang_specific): Include LANG_TYPE.
6400         * tree.c (find_decls_types_r): Manually add interesting parts
6401         of TYPE_FIELDS.  Walk BINFO_VIRTUALS.  Do not walk TYPE_METHODS.
6402
6403         * gimple.c (type_pair_hash): Make symmetric.
6404         (type_pair_eq): Likewise.
6405         (lookup_type_pair): Increase initial hashtable size.
6406         (gimple_force_type_merge): Rely on type-pair symmetry.
6407         (visit): Remove excessive checking code.
6408         (iterative_hash_type_name): Do not hash TYPE_NAME of anonymous unions.
6409         (gimple_register_type): Remove getenv calls, shrink initial
6410         hashtable size.
6411
6412         PR middle-end/41502
6413         * cgraphunit.c (ipa_passes): Do not remove bodies of extern
6414         inline functions if not generating lto output.
6415
6416         PR lto/41379
6417         * toplev.c (finalize): In WPA mode remove the asm file.
6418
6419 2009-10-03  Doug Kwan  <dougkwan@google.com>
6420
6421         * ipa-inline.c (cgraph_mark_inline): Check
6422         edge->call_stmt_cannot_inline_p instead of calling
6423         gimple_call_cannot_inline_p.
6424         (cgraph_decide_inlining): Do nothing in WPA and LTRANS.
6425         (cgraph_gate_ipa_early_inlining): Return false if in_lto_p is set.
6426         (inline_generate_summary): Do nothing in LTRANS.
6427         * cgraph.c (initialize_inline_failed): Make sure e->call_stmt
6428         exists before calling gimple_call_cannot_inline_p.
6429         (cgraph_create_edge): Set edge->call_stmt_cannot_inline_p.
6430         (cgraph_clone_edge): Add argument STMT_UID.  Modify all callers.
6431         Update new_edge->lto_stmt_uid.
6432         * cgraphbuild.c (reset_inline_failed): New.
6433
6434         * common.opt (fwpa): New flag.
6435         (fltrans): New option.
6436         * gcc.c (gcc_lto_option_t): New type.
6437         (current_lto_option): New variable.
6438         (lto_single_spec_function): Remove and is replaced by ..
6439         (lto_option_spec_function): New function.
6440         (LINK_COMMAND_SPEC): Use link_lto_option spec instead of just
6441         passing the -flto flag.
6442         (cc1_options): Separate non-LTO related parts into ..
6443         (cc1_non_lto_options): Non-LTO related options shared by all FEs.
6444         (lto1_options): New spec for lto FE.
6445         (link_lto_options): New spec for handling LTO flags in linker.
6446         (invoke_lto_single): Re-format to fit in 80 column.  Replace
6447         lto-single with lto-option.
6448         (static_specs): Add cc1_non_lto_options, lto1_options and
6449         link_lto_options.
6450         (static_spec_function): Replace lto-single with lto-option.
6451         (process_command): Handle -flto, -fwpa and -fltran by setting
6452         current_lto_option and not passing it to subprocess unconditionally.
6453
6454 2009-10-03  Bill Maddox  <maddox@google.com>
6455
6456         Add `gcc' driver support for link-time code generation (LTO).
6457
6458         * collect2.c (enum pass): Add new literal PASS_LTOINFO.
6459         (lto_flag, lto_objects, lto_o_file): New variables.
6460         (struct lto_object, struct lto_object_list): New structures.
6461         (collect_exit, handler): Remove LTO temporary output file on exit.
6462         (add_lto_object): New function.
6463         (maybe_run_lto_and_relink): New function. Perform link time code
6464         generation and relinking for object files containing LTO information.
6465         (main): Invoke maybe_run_lto_and_relink().
6466         (dump_argv): New function.  For debugging, currently disabled.
6467         (scan_prog_file): Add LTO information pass.
6468         * gcc.c (LINK_COMMAND_SPEC): Pass `-flto' switch to linker, i.e.,
6469         collect2.
6470         * toplev.c (compile_file): Emit assembler directive to create
6471         the `gnu_lto_v1' marker symbol when compiling with `-flto'.
6472
6473 2009-10-03  Diego Novillo  <dnovillo@google.com>
6474
6475         * c.opt: Add LTO to warn_abi and warn_psabi.
6476
6477         * tree.c (fld_worklist_push): Rename from PUSH.  Convert to static
6478         inline function.  Ignore language-specific nodes.  Update all users.
6479         (find_decls_types_r): Do not traverse the subtrees of
6480         language-specific nodes.  Do not traverse DECL_INITIAL for TYPE_DECLs.
6481         * tree.h (is_lang_specific): New.
6482         * langhooks.h (struct lang_hooks_for_decls): Remove
6483         may_need_assembler_name_p.  Update all users.
6484
6485         * c-common.c (set_builtin_user_assembler_name): Move ...
6486         * builtins.c (set_builtin_user_assembler_name): ... here.
6487         (is_builtin_name): Add comment
6488         (is_builtin_fn): New.
6489         * except.c (output_ttype): Only call
6490         lookup_type_for_runtime if TYPE is not a runtime type.
6491
6492         * passes.c (register_pass): Call position_pass on
6493         all_small_ipa_passes, all_regular_ipa_passes and all_lto_gen_passes.
6494         * timevar.def (TV_IPA_LTO_GIMPLE_IO): Define.
6495         (TV_IPA_LTO_DECL_IO): Define.
6496         (TV_IPA_LTO_CGRAPH_IO): Define.
6497         (TV_LTO): Define.
6498         (TV_WHOPR_WPA): Define.
6499         (TV_WHOPR_WPA_IO): Define.
6500         (TV_WHOPR_LTRANS): Define.
6501         (TV_WHOPR_WPA_FIXUP): Define.
6502         (TV_WHOPR_WPA_LTRANS_EXEC): Define.
6503         * tree-cfg.c (tree_node_can_be_shared): Make extern.
6504         * tree-flow.h (tree_node_can_be_shared): Declare.
6505         * tree-inline.c (tree_can_inline_p): Check that E has a
6506         statement associated with it.
6507         * tree.c (free_lang_data_in_binf): Factor out of ...
6508         (free_lang_data_in_type): ... here.
6509         Call RECORD_OR_UNION_TYPE_P.
6510         (need_assembler_name_p): Ignore DECL if it does not have TREE_PUBLIC
6511         set.  Call lang_hooks.decls.may_need_assembler_name_p if set.
6512         (free_lang_data_in_decl): Do not clear DECL_CONTEXT for CONST_DECLs.
6513         (free_lang_data): Set debug_info_level to DINFO_LEVEL_NONE.  Set
6514         write_symbols to NO_DEBUG.  Set debug_hooks to do_nothing_debug_hooks.
6515         (gate_free_lang_data): Return true if flag_generate_lto is set.
6516         (walk_tree_1): Call RECORD_OR_UNION_TYPE_P.
6517         * c-common.h (set_builtin_user_assembler_name): Move ...
6518         * tree.h (set_builtin_user_assembler_name): ... here.
6519
6520         * common.opt (flto-report): New flag.
6521         * opts.c (complain_wrong_lang): Do not complain if running lto1.
6522         * collect2.c (scan_prog_file): Send the error output of
6523         'nm' to HOST_BIT_BUCKET.
6524
6525 2009-10-03  Ollie Wild  <aaw@google.com>
6526
6527         * langhooks-def.h (lhd_begin_section): New function declaration.
6528         (lhd_write_section): New function declaration.
6529         (lhd_end_section): New function declaration.
6530         (LANG_HOOKS_BEGIN_SECTION): New macro.
6531         (LANG_HOOKS_WRITE_SECTION_DATA): New macro.
6532         (LANG_HOOKS_END_SECTION): New macro.
6533         (LANG_HOOKS_LTO): New macro.
6534         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_LTO.
6535         * langhooks.c (output.h): Add include.
6536         (saved_section): New static variable.
6537         (lhd_begin_section): New function.
6538         (lhd_write_section_data): New function.
6539         (lhd_end_section): New function.
6540         * langhooks.h (struct lang_hooks_for_lto): New structure.
6541         (struct lang_hooks): Add member lto.
6542         * Makefile.in (langhooks.o): Add dependency on output.h.
6543
6544         * c-opts.c (c_common_post_options): Handle -flto and -fwhopr.
6545
6546 2009-10-03  Richard Guenther  <rguenther@suse.de>
6547
6548         * config/rs6000/rs6000.c (rs6000_output_function_epilogue):
6549         Handle LTO.
6550
6551 2009-10-03  Simon Baldwin  <simonb@google.com>
6552             Richard Guenther  <rguenther@suse.de>
6553             Janis Johnson  <janis187@us.ibm.com>
6554             Doug Kwan  <dougkwan@google.com>
6555             Diego Novillo  <dnovillo@google.com>
6556             Ramana Radhakrishnan  <ramana.r@gmail.com>
6557             Ollie Wild  <aaw@google.com>
6558
6559         * doc/install.texi: Add documentation for libelf and --enable-lto.
6560         * doc/invoke.texi: Document -fwpa, -flto, -fwhopr, -fltrans,
6561         -flto-report, -flto-compression-level and -use-linker-plugin.
6562         * doc/sourcebuild.texi: Document use of zlib.  Document lto-plugin.
6563         Add section for LTO Testing.
6564
6565 2009-10-02  Cary Coutant  <ccoutant@google.com>
6566
6567         Add support for comdat type sections for DWARF v4.
6568         Merge from dwarf4 branch.
6569
6570         * dwarf2out.c (DWARF_TYPE_SIGNATURE_SIZE): New constant.
6571         (dw_die_ref): Define vector type.
6572         (enum dw_val_class): Add dw_val_class_data8.
6573         (struct dw_val_struct): Add v.val_data8.
6574         (comdat_type_node_ref): New type.
6575         (struct die_struct): Move die_symbol into a union; add new field
6576         die_type_node.  Change all uses.
6577         (comdat_type_node): New type.
6578         (skeleton_chain_node): New type.
6579         (DWARF_COMDAT_TYPE_UNIT_HEADER_SIZE): New constant.
6580         (comdat_type_list): New variable.
6581         (dwarf_tag_name): Add DW_TAG_type_unit.
6582         (dwarf_attr_name): Add DW_AT_signature.
6583         (add_AT_data8): New function.
6584         (replace_child): New function.
6585         (move_all_children): New function.
6586         (print_signature): New function.
6587         (print_die): Print signature information; add dw_val_class_data8.
6588         (attr_checksum): Support dw_val_class_data8.
6589         (CHECKSUM_STRING): Redefine for DWARF-4 to include trailing NULL byte.
6590         (CHECKSUM_SLEB128, CHECKSUM_ULEB128): New macros.
6591         (checksum_sleb128, checksum_uleb128): New functions.
6592         (checksum_die_context): New function.
6593         (loc_checksum_ordered): New function.
6594         (attr_checksum_ordered): New function.
6595         (struct checksum_attributes): New structure.
6596         (collect_checksum_attributes): New function.
6597         (die_checksum_ordered): New function.
6598         (generate_type_signature): New function.
6599         (same_dw_val_p): Add dw_val_class_data8.
6600         (is_symbol_die): Use new is_declaration_die function.
6601         (is_declaration_die): New function.
6602         (should_move_die_to_comdat): New function.
6603         (clone_die): New function.
6604         (clone_tree): New function.
6605         (clone_as_declaration): New function.
6606         (copy_declaration_context): New function.
6607         (generate_skeleton_ancestor_tree): New function.
6608         (generate_skeleton_bottom_up): New function.
6609         (generate_skeleton): New function.
6610         (remove_child_or_replace_with_skeleton): New function.
6611         (break_out_comdat_types): New function.
6612         (struct decl_table_entry): New type.
6613         (htab_decl_hash): New function.
6614         (htab_decl_eq): New function.
6615         (htab_decl_del): New function.
6616         (copy_ancestor_tree): New function.
6617         (copy_decls_walk): New function.
6618         (copy_decls_for_unworthy_types): New function.
6619         (build_abbrev_table): Don't assert on missing die_symbol when doing
6620         comdat type sections.
6621         (size_of_die): Use DW_FORM_sig8 for external references.  Add
6622         dw_val_class_data8.
6623         (unmark_dies): Don't assert for unmarked dies when doing comdat
6624         type sections.
6625         (value_format): Support DW_FORM_sig8 and dw_val_class_data8.
6626         (output_signature): New function.
6627         (output_die): Likewise.
6628         (output_compilation_unit_header): Mark output as DWARF version 3
6629         even if generating DWARF 4.
6630         (output_comdat_type_unit): New function.
6631         (output_line_info): Mark output as DWARF version 3 even if generating
6632         DWARF 4.
6633         (dwarf2out_start_source_file): Don't do eliminate_dwarf2_dups with
6634         DWARF-4.
6635         (dwarf2out_end_source_file): Likewise.
6636         (prune_unused_types_walk_attribs): Don't follow references into
6637         comdat type sections.
6638         (prune_unused_types_mark): When generating type units, do not mark
6639         children of non-defining declarations of types; do mark children of
6640         type entries.
6641         (prune_unused_types): Process comdat type sections.
6642         (htab_ct_hash): New function.
6643         (htab_ct_eq): New function.
6644         (dwarf2out_finish): Move types to comdat sections when using DWARF-4.
6645         Add a pointer to the line table from type unit entries so
6646         DW_AT_decl_file has meaning.
6647         * varasm.c (default_elf_asm_named_section): Use identifier name as
6648         comdat key instead of lang hook.
6649
6650 2009-10-02  Neil Vachharajani  <nvachhar@google.com>
6651
6652         * gcov-io.c (gcov_open): Open files read-only when MODE < 0.
6653
6654 2009-10-02  Uros Bizjak  <ubizjak@gmail.com>
6655
6656         * config/i386/i386.md (SWIM248): New mode iterator.
6657         (divmod<mode>4) Macroize expander from divmoddi4, divmodsi4 and
6658         divmodhi4 patterns using SWIM248 macro.
6659         (*divmod<mode>4): Macroize insn_and_split pattern from
6660         *divmoddi4_cltd_rex64, *divmodsi4_cltd and divmodhi4 insn patterns
6661         and their corresponding splitters usign SWIM248 macro.  Split SImode
6662         insn to generate cltd and DImode insn to generate cqto instead of
6663         move+shift when optimizing for size or TARGET_USE_CLTD is in effect.
6664         (*divmoddi4_nocltd_rex64, *divmodsi4_nocltd): Remove insn patterns.
6665         (*divmod<mode>4_noext): Macroize insn from *divmoddi_noext_rex64 and
6666         *divmodsi_noext patterns using SWIM248 macro.
6667         (udivmod<mode>4): Macroize expander from udivmoddi4, udivmodsi4 and
6668         udivmodhi4 patterns using SWIM248 macro.
6669         (*udivmod<mode>4): Macroize insn_and_split pattern from
6670         *udivmoddi4, udivmodsi4 and udivmodhi4 patterns and their
6671         corresponding splitters using SWIM248 macro.
6672         (*udivmod<mode>4_noext): Macroize insn from *udivmoddi4_noext,
6673         *udivmodsi4_noext and *udivmodhi_noext patterns using SWIM248 macro.
6674
6675 2009-10-02  Eric Botcazou  <ebotcazou@adacore.com>
6676
6677         * stor-layout.c (layout_type) <ARRAY_TYPE>: Make sure that an array
6678         of zero-sized element is zero-sized regardless of its extent.
6679
6680 2009-10-02  Jakub Jelinek  <jakub@redhat.com>
6681
6682         PR debug/40521
6683         * configure.ac (HAVE_GAS_CFI_SECTIONS_DIRECTIVE): New test.
6684         * configure: Regenerated.
6685         * config.in: Regenerated.
6686         * dwarf2out.c (dwarf2out_do_cfi_asm): Return false if
6687         !HAVE_GAS_CFI_SECTIONS_DIRECTIVE and not emitting .eh_frame.
6688         (dwarf2out_init): If HAVE_GAS_CFI_SECTIONS_DIRECTIVE and
6689         not emitting .eh_frame, emit .cfi_sections .debug_frame
6690         directive.
6691
6692         PR debug/41404
6693         PR debug/41353
6694         * cfgexpand.c (expand_debug_expr) <case STRING_CST>: Don't create
6695         CONST_STRING if STRING_CST contains embedded '\0's or doesn't end
6696         with '\0'.
6697         (expand_debug_expr) <case VAR_DECL>: For TREE_STATIC !DECL_EXTERNAL
6698         vars use DECL_RTL with resetting it back to NULL afterwards.
6699         * dwarf2out.c (same_dw_val_p): For dw_val_class_addr compare with
6700         rtx_equal_p instead of asserting it is a SYMBOL_REF.
6701         (value_format): For dw_val_class_addr only use DW_FORM_addr if
6702         the attribute type allows it, otherwise use DW_FORM_dataN.
6703         (mem_loc_descriptor): Handle CONST_STRING.
6704         (add_const_value_attribute): Handle CONST_STRING using add_AT_addr.
6705         Handle MEM with CONST_STRING address using add_AT_string.
6706         (rtl_for_decl_init): Return MEM with CONST_STRING address instead of
6707         CONST_STRING for const arrays initialized with a string literal.
6708         (resolve_one_addr, resolve_addr_in_expr, resolve_addr): New functions.
6709         (dwarf2out_finish): Call resolve_addr.
6710
6711 2009-10-02  Andreas Schwab  <schwab@linux-m68k.org>
6712             Maxim Kuvyrkov  <maxim@codesourcery.com>
6713
6714         * config/m68k/lb1sf68.asm (PICCALL): Use variable sized branch.
6715
6716 2009-10-02  Nick Clifton  <nickc@redhat.com>
6717
6718         * config/mn10300/mn10300.h (USER_LABEL_PREFIX): Define.
6719         (ASM_OUTPUT_LABELREF): Use asm_fprintf and %U.
6720
6721 2009-10-01  Jan Hubicka  <jh@suse.cz>
6722
6723         * cgraph.c (cgraph_clone_node): Add redirect_callers parameter.
6724         (cgraph_create_virtual_clone): Just pass redirect_callers
6725         around.
6726         * cgraph.h (cgraph_clone_node): Update prototype.
6727         * ipa-pure-const.c (self_recursive_p): New function.
6728         (propagate): Use it.
6729         * ipa-inline.c (cgraph_clone_inlined_nodes,
6730         cgraph_decide_recursive_inlining): Update.
6731
6732 2009-10-01  David Daney  <ddaney@caviumnetworks.com>
6733
6734         * gcc/config/mips/mips.c (mips_process_sync_loop) Emit syncw
6735         instructions for TARGET_OCTEON.
6736
6737 2009-10-01  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
6738
6739         * config/arm/arm.c (arm_override_options): Turn off
6740         flag_dwarf2_cfi_asm for AAPCS variants.
6741
6742 2009-10-01  Martin Jambor  <mjambor@suse.cz>
6743
6744         PR middle-end/12392
6745         * tree-sra.c (convert_callers): Do not call
6746         compute_inline_parameters on one caller more than once.
6747
6748 2009-10-01  Nick Clifton  <nickc@redhat.com>
6749
6750         * config/vax/netbsd-elf.h (NETBSD_CC1_AND_CC1PLUS_SPEC): Define as
6751         an empty string if not already defined.
6752
6753 2009-10-01  Martin Jambor  <mjambor@suse.cz>
6754
6755         PR bootstrap/41395
6756         * tree-sra.c (is_va_list_type): New function.
6757         (find_var_candidates): Call is_va_list_type.
6758         (find_param_candidates): Check that the type or the type pointed
6759         to are not va_list types.
6760
6761 2009-10-01  Martin Jambor  <mjambor@suse.cz>
6762
6763         PR c++/41503
6764         * cp/pt.c (function_parameter_expanded_from_pack_p): Return false if
6765         DECL_ARTIFICIAL (param_decl) is true.
6766
6767 2009-09-30  Gabriel Dos Reis  <gdr@cs.tamu.edu>
6768
6769         * tree.h (tree_decl_common::lang_flag_8): New.
6770         * c-common.c (c_common_reswords): Include "constexpr" as C++0x
6771         keyword.
6772         * c-common.h (RID_CONSTEXPR): New.
6773
6774 2009-09-30  Uros Bizjak  <ubizjak@gmail.com>
6775
6776         * config/alpha/alpha.c (alpha_gimplify_va_arg_1):
6777         Use ref-all pointers.
6778         (alpha_gimplify_va_arg): Ditto.
6779
6780 2009-09-30  Jakub Jelinek  <jakub@redhat.com>
6781
6782         PR target/41279
6783         * cfgloopanal.c (num_loop_insns): Don't increment ninsns for each bb
6784         before insn counting loop now that BB_END (bb) is counted.  Ensure
6785         the return value isn't zero.
6786
6787 2009-09-30  Nick Clifton  <nickc@redhat.com>
6788
6789         * config.gcc (sh-symbianelf): Replace definition of extra_objs
6790         with separate definitions of c_target_objs and cxx_target_objs.
6791         * config/sh/t-sh: Add rules to build symbian-cxx.o, symbian-c.o
6792         and symbian-base.o.
6793         * config/sh/sh.c (TARGET_CXX_INPUT_EXPORT_CLASS): Use
6794         sh_symbian_import_export_class.
6795         * config/sh/sh-protos.h: Fix names of exported symbian functions.
6796         * config/sh/symbian.c: Delete, moving code into...
6797         * config/sh/symbian-base.c: ... here
6798         * config/sh/symbian-c.c: ... and here
6799         * config/sh/symbian-cxx.c: ... and here.
6800
6801 2009-09-30  Uros Bizjak  <ubizjak@gmail.com>
6802
6803         PR target/22093
6804         * config/alpha/alpha.md (unaligned_storehi_be): Force operand
6805         of plus RTX into register.
6806
6807 2009-09-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
6808
6809         * doc/install.texi: Linguistic and markup fixes.
6810         (Configuration) <--disable-cpp>: Remove description.
6811         <--enable-maintainer-mode>: Autotools files are affected, too.
6812         <--with-sysroot>: Improve description.
6813         (Building): Bump required GNU make version.
6814
6815 2009-09-29  Harsha Jagasia  <harsha.jagasia@amd.com>
6816
6817         * config.gcc (i[34567]86-*-*): Include fma4intrin.h.
6818         (x86_64-*-*): Ditto.
6819
6820         * config/i386/fma4intrin.h: New file, provide common x86 compiler
6821         intrinisics for FMA4.
6822         * config/i386/cpuid.h (bit_FMA4): Define FMA4 bit.
6823         * config/i386/x86intrin.h: Fix typo to SSE4A instead of SSE4a.
6824         Add FMA4 check and fma4intrin.h.
6825         * config/i386/i386-c.c(ix86_target_macros_internal): Check
6826         ISA_FLAG for FMA4.
6827         * config/i386/i386.h(TARGET_FMA4): New macro for FMA4.
6828         * config/i386/i386.md (UNSPEC_FMA4_INTRINSIC): Add new UNSPEC
6829         constant for FMA4 support.
6830         (UNSPEC_FMA4_FMADDSUB): Ditto.
6831         (UNSPEC_FMA4_FMSUBADD): Ditto.
6832         * config/i386/i386.opt (-mfma4): New switch for FMA4 support.
6833         * config/i386/i386-protos.h (ix86_fma4_valid_op_p): Add declaration.
6834         (ix86_expand_fma4_multiple_memory): Ditto.
6835         * config/i386/i386.c (OPTION_MASK_ISA_FMA4_SET): New.
6836         (OPTION_MASK_ISA_FMA4_UNSET): New.
6837         (OPTION_MASK_ISA_SSE4A_UNSET): Change definition to depend on FMA4.
6838         (OPTION_MASK_ISA_AVX_UNSET): Change definition to depend on FMA4.
6839         (ix86_handle_option): Handle -mfma4.
6840         (isa_opts): Handle -mfma4.
6841         (enum pta_flags): Add PTA_FMA4.
6842         (override_options): Add FMA4 support.
6843         (IX86_BUILTIN_VFMADDSS): New for FMA4 intrinsic.
6844         (IX86_BUILTIN_VFMADDSD): Ditto.
6845         (IX86_BUILTIN_VFMADDPS): Ditto.
6846         (IX86_BUILTIN_VFMADDPD): Ditto.
6847         (IX86_BUILTIN_VFMSUBSS): Ditto.
6848         (IX86_BUILTIN_VFMSUBSD): Ditto.
6849         (IX86_BUILTIN_VFMSUBPS): Ditto.
6850         (IX86_BUILTIN_VFMSUBPD): Ditto.
6851         (IX86_BUILTIN_VFMADDSUBPS): Ditto.
6852         (IX86_BUILTIN_VFMADDSUBPD): Ditto.
6853         (IX86_BUILTIN_VFMSUBADDPS): Ditto.
6854         (IX86_BUILTIN_VFMSUBADDPD): Ditto.
6855         (IX86_BUILTIN_VFNMADDSS): Ditto.
6856         (IX86_BUILTIN_VFNMADDSD): Ditto.
6857         (IX86_BUILTIN_VFNMADDPS): Ditto.
6858         (IX86_BUILTIN_VFNMADDPD): Ditto.
6859         (IX86_BUILTIN_VFNMSUBSS): Ditto.
6860         (IX86_BUILTIN_VFNMSUBSD): Ditto.
6861         (IX86_BUILTIN_VFNMSUBPS): Ditto.
6862         (IX86_BUILTIN_VFNMSUBPD): Ditto.
6863         (IX86_BUILTIN_VFMADDPS256): Ditto.
6864         (IX86_BUILTIN_VFMADDPD256): Ditto.
6865         (IX86_BUILTIN_VFMSUBPS256): Ditto.
6866         (IX86_BUILTIN_VFMSUBPD256): Ditto.
6867         (IX86_BUILTIN_VFMADDSUBPS256): Ditto.
6868         (IX86_BUILTIN_VFMADDSUBPD256): Ditto.
6869         (IX86_BUILTIN_VFMSUBADDPS256): Ditto.
6870         (IX86_BUILTIN_VFMSUBADDPD256): Ditto.
6871         (IX86_BUILTIN_VFNMADDPS256): Ditto.
6872         (IX86_BUILTIN_VFNMADDPD256): Ditto.
6873         (IX86_BUILTIN_VFNMSUBPS256): Ditto.
6874         (IX86_BUILTIN_VFNMSUBPD256): Ditto.
6875         (enum multi_arg_type): New enum for describing the various FMA4
6876         intrinsic argument types.
6877         (bdesc_multi_arg): New table for FMA4 intrinsics.
6878         (ix86_init_mmx_sse_builtins): Add FMA4 intrinsic support.
6879         (ix86_expand_multi_arg_builtin): New function for creating FMA4
6880         intrinsics.
6881         (ix86_expand_builtin): Add FMA4 intrinsic support.
6882         (ix86_fma4_valid_op_p): New function to validate FMA4 3 and 4
6883         operand instructions.
6884         (ix86_expand_fma4_multiple_memory): New function to split the
6885         second memory reference from FMA4 instructions.
6886         * config/i386/sse.md (ssemodesuffixf4): New mode attribute for FMA4.
6887         (ssemodesuffixf2s): Ditto.
6888         (fma4_fmadd<mode>4): Add FMA4 floating point multiply/add
6889         instructions.
6890         (fma4_fmsub<mode>4): Ditto.
6891         (fma4_fnmadd<mode>4): Ditto.
6892         (fma4_fnmsub<mode>4): Ditto.
6893         (fma4_vmfmadd<mode>4): Ditto.
6894         (fma4_vmfmsub<mode>4): Ditto.
6895         (fma4_vmfnmadd<mode>4): Ditto.
6896         (fma4_vmfnmsub<mode>4): Ditto.
6897         (fma4_fmadd<mode>4256): Ditto.
6898         (fma4_fmsub<mode>4256): Ditto.
6899         (fma4_fnmadd<mode>4256): Ditto.
6900         (fma4_fnmsub<mode>4256): Ditto.
6901         (fma4_fmaddsubv8sf4): Ditto.
6902         (fma4_fmaddsubv4sf4): Ditto.
6903         (fma4_fmaddsubv4df4): Ditto.
6904         (fma4_fmaddsubv2df4): Ditto.
6905         (fma4_fmsubaddv8sf4): Ditto.
6906         (fma4_fmsubaddv4sf4): Ditto.
6907         (fma4_fmsubaddv4df4): Ditto.
6908         (fma4_fmsubaddv2df4): Ditto.
6909         (fma4i_fmadd<mode>4): Add FMA4 floating point multiply/add
6910         instructions for intrinsics.
6911         (fma4i_fmsub<mode>4): Ditto.
6912         (fma4i_fnmadd<mode>4): Ditto.
6913         (fma4i_fnmsub<mode>4): Ditto.
6914         (fma4i_vmfmadd<mode>4): Ditto.
6915         (fma4i_vmfmsub<mode>4): Ditto.
6916         (fma4i_vmfnmadd<mode>4): Ditto.
6917         (fma4i_vmfnmsub<mode>4): Ditto.
6918         (fma4i_fmadd<mode>4256): Ditto.
6919         (fma4i_fmsub<mode>4256): Ditto.
6920         (fma4i_fnmadd<mode>4256): Ditto.
6921         (fma4i_fnmsub<mode>4256): Ditto.
6922         (fma4i_fmaddsubv8sf4): Ditto.
6923         (fma4i_fmaddsubv4sf4): Ditto.
6924         (fma4i_fmaddsubv4df4): Ditto.
6925         (fma4i_fmaddsubv2df4): Ditto.
6926         (fma4i_fmsubaddv8sf4): Ditto.
6927         (fma4i_fmsubaddv4sf4): Ditto.
6928         (fma4i_fmsubaddv4df4): Ditto.
6929         (fma4i_fmsubaddv2df4): Ditto.
6930
6931         * doc/invoke.texi (-mfma4): Add documentation.
6932         * doc/extend.texi (x86 intrinsics): Add FMA4 intrinsics.
6933
6934 2009-09-29  Richard Henderson  <rth@redhat.com>
6935
6936         * tree-eh.c (unsplit_eh): Do not unsplit if there's already
6937         an edge to the new destination block.
6938
6939 2009-09-29  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6940
6941         PR target/41393
6942         * pa.c (hppa_profile_hook): Use
6943         make_reg_eh_region_note_nothrow_nononlocal to add REG_EH_REGION note.
6944
6945 2009-09-29  Steve Ellcey  <sje@cup.hp.com>
6946             Alexander Monakov  <amonakov@ispras.ru>
6947
6948         PR target/41365
6949         * config/ia64/predicates.md (not_postinc_destination_operand): New.
6950         (not_postinc_memory_operand): New.
6951         (not_postinc_move_operand): New.
6952         * config/ia64/ia64.md (*cmovdi_internal): Disallow autoincrement.
6953         (*cmovsi_internal): Ditto.
6954
6955 2009-09-29  Pat Haugen  <pthaugen@us.ibm.com>
6956
6957         * config/rs6000/rs6000.c (rs6000_issue_rate): Don't artificially
6958         restrict issue_rate in first pass when scheduling for register
6959         pressure.
6960
6961 2009-09-29  Basile Starynkevitch  <basile@starynkevitch.net>
6962             Rafael Avila de Espindola  <espindola@google.com>
6963
6964         * gengtype.c (plugin_output): New.
6965         (get_output_file_with_visibility): Return plugin_output for plugins.
6966         (main): Parse and use the -P option.
6967         * gty.texi: Update the command line format.
6968
6969 2009-09-29  Jakub Jelinek  <jakub@redhat.com>
6970
6971         PR debug/41438
6972         * dwarf2out.c (const_ok_for_output_1, const_ok_for_output): New
6973         functions.
6974         (mem_loc_descriptor, loc_descriptor, add_const_value_attribute): Bail
6975         out if !const_ok_for_output.
6976
6977         PR debug/41474
6978         * dwarf2out.c (mem_loc_descriptor) <case CONCAT, case CONCATN,
6979         case VAR_LOCATION>: Remove gcc_unreachable ().
6980
6981 2009-09-29  Harsha Jagasia  <harsha.jagasia@amd.com>
6982
6983         * config.gcc (i[34567]86-*-*): Remove mmintrin-common.h.
6984         (x86_64-*-*): Ditto.
6985         * config/i386/smmintrin.h: Move instructions in mmintrin-common.h
6986         back to smmintrin.h.
6987         * config/i386/cpuid.h (bit_SSE5): Remove SSE5 bit.
6988         * config/i386/x86intrin.h: Remove SSE5.
6989         * config/i386/mmintrin-common.h: Delete file.
6990         * doc/extend.texi (x86 intrinsics): Remove SSE5 flags and builtins.
6991
6992 2009-09-29  Richard Guenther  <rguenther@suse.de>
6993
6994         * alias.c (ao_ref_from_mem): Properly deal with off decl accesses
6995         resulting from stack temporaries on STRICT_ALIGNMENT targets.
6996
6997 2009-09-29  Nick Clifton  <nickc@redhat.com>
6998
6999         * function.c (current_function_name): If there is no current
7000         function just return "<none>".
7001
7002 2009-09-28  Sriraman Tallam  <tmsriram@google.com>
7003
7004         * tree-pass.h (register_pass_info): New structure.
7005         (pass_positioning_ops): Move enum from gcc-plugin.h.
7006         (register_pass): New function.
7007         * gcc-plugin.h (plugin_pass): Delete structure.
7008         (pass_positioning_ops): Delete enum.
7009         * plugin.c (regsiter_pass): Delete function.
7010         (position_pass): Delete function.
7011         (added_pass_nodes): Delete variable.
7012         (prev_added_pass_nodes): Delete variable.
7013         (pass_list_node): Delete structure.
7014         * passes.c (make_pass_instance): New function.
7015         (next_pass_1): Change to call make_pass_instance.
7016         (pass_list_node): Move structure from gcc-plugin.h.
7017         (added_pass_nodes): Move variable from plugin.c.
7018         (prev_added_pass_nodes): Move variable from plugin.c.
7019         (position_pass): New function.
7020         (register_pass): New function.
7021
7022 2009-09-28  Easwaran Raman  <eraman@google.com>
7023
7024         * ifcvt.c (noce_try_abs): Recognize pattern and call
7025         expand_one_cmpl_abs_nojump.
7026         * optabs.c (expand_one_cmpl_abs_nojump): New function.
7027         * optabs.h (expand_one_cmpl_abs_nojump): Declare.
7028
7029 2009-09-28  Ian Lance Taylor  <iant@google.com>
7030
7031         PR middle-end/40500
7032         * c-opts.c (c_common_handle_option): Don't set
7033         warn_jump_misses_init for -Wall.
7034         * doc/invoke.texi (Warning Options): Update documentation.
7035
7036 2009-09-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
7037
7038         * Makefile.in ($(out_object_file)): Depend on
7039         gt-$(basename $(notdir $(out_file))).h.
7040
7041 2009-09-28  Richard Henderson  <rth@redhat.com>
7042
7043         * except.h (struct eh_region_d): Add use_cxa_end_cleanup.
7044         * except.c (gen_eh_region): Set it.
7045         (duplicate_eh_regions_1): Copy it.
7046         * tree-eh.c (lower_resx): Use it to determine which function
7047         to call to resume.
7048
7049         * langhooks.h (struct lang_hooks): Add eh_use_cxa_end_cleanup.
7050         * langhooks-def.h (LANG_HOOKS_EH_USE_CXA_END_CLEANUP): New.
7051         * builtins.def (BUILT_IN_CXA_END_CLEANUP): New.
7052         * tree.c (build_common_builtin_nodes): Remove parameter.  Build
7053         BUILT_IN_CXA_END_CLEANUP if necessary.
7054
7055         * c-common.c (c_define_builtins): Update call to
7056         build_common_builtin_nodes.
7057
7058 2009-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7059
7060         * spu.c (get_branch_target): Return NULL for ASM_OPERANDS patterns.
7061
7062 2009-09-28  Michael Matz  <matz@suse.de>
7063
7064         * builtins.c (interclass_mathfn_icode): New helper.
7065         (expand_builtin_interclass_mathfn): Use it here, and split folding
7066         into ...
7067         (fold_builtin_interclass_mathfn): ... this new folder.
7068         (build_call_nofold_loc): New static helper.
7069         (build_call_nofold): New wrapper macro for above.
7070         (expand_builtin_int_roundingfn): Use it instead of build_call_expr.
7071         (expand_builtin_pow): Ditto.
7072         (expand_builtin_memset_args): Ditto.
7073         (expand_builtin_printf): Ditto.
7074         (expand_builtin_fprintf): Ditto.
7075         (expand_builtin_sprintf): Ditto.
7076         (expand_builtin_memory_chk): Ditto.
7077         (expand_builtin_mempcpy_args): Ditto and don't call folders.
7078         (expand_builtin_stpcpy): Ditto.
7079         (expand_builtin_strcmp): Ditto.
7080         (expand_builtin_strncmp): Ditto.
7081         (expand_builtin_strcpy): Remove FNDECL and MODE arguments.
7082         (expand_builtin_strcpy_args): Don't call folders.
7083         (expand_builtin_memcmp): Ditto.
7084         (expand_builtin_strncpy): Ditto, and use target.
7085         (expand_builtin_memcpy): Ditto.
7086         (expand_builtin_strstr, expand_builtin_strchr, expand_builtin_strrchr,
7087         expand_builtin_strpbrk, expand_builtin_memmove,
7088         expand_builtin_memmove_args, expand_builtin_bcopy,
7089         expand_builtin_memchr, expand_builtin_strcat, expand_builtin_strncat,
7090         expand_builtin_strspn, expand_builtin_strcspn,
7091         expand_builtin_fputs): Remove these.
7092         (expand_builtin): Don't call the above, change calls to other
7093         expanders that changed prototype.
7094         (fold_builtin_stpcpy): New folder split out from expand_builtin_stpcpy.
7095         (fold_builtin_1 <ISFINITE, ISINF, ISNORMAL>): Call
7096         fold_builtin_interclass_mathfn.
7097         (fold_builtin_2 <STPCPY>): Call fold_builtin_stpcpy.
7098         (fold_builtin_strcat): Add folding split from expand_builtin_strcat.
7099
7100         * fold-const.c (fold_binary_loc <NE_EXPR>): Add !exp != 0 -> !exp.
7101         * passes.c (init_optimization_passes): Move pass_fold_builtins
7102         after last phiopt pass.
7103         * tree-inline.c (fold_marked_statements): When folding builtins
7104         iterate over all instruction potentially generated.
7105         * tree-ssa-ccp.c (gimplify_and_update_call_from_tree): Declare
7106         earlier.
7107         (fold_gimple_call): Use it to always fold calls (into potentially
7108         multiple instructions).
7109         * tree-ssa-dom.c (optimize_stmt): Resolve __builtin_constant_p
7110         calls into zero at this time.
7111         * tree-ssa-propagate.c (substitute_and_fold): Ignore multiple
7112         statements generated by builtin folding.
7113
7114 2009-09-28  Nick Clifton  <nickc@redhat.com>
7115
7116         * config/m32r/m32r.c (m32r_is_insn): Return false for debugging insns.
7117
7118 2009-09-28  Duncan Sands  <baldrick@free.fr>
7119
7120         * gcc-plugin.h (PLUGIN_REGISTER_GGC_CACHES): New event.
7121         * plugin.c (plugin_event_name): Add PLUGIN_REGISTER_GGC_CACHES.
7122         (register_callback): Dispatch it.
7123         (invoke_plugin_callbacks): Incorporate in sanity check.
7124         * ggc.h (ggc_register_cache_tab): Add declaration.
7125         * ggc-common.c (ggc_register_root_tab): Simplify.
7126         (const_ggc_cache_tab_t): New typedef.
7127         (extra_cache_vec): New vector of dynamically added cache tables.
7128         (ggc_register_cache_tab): New function.
7129         (ggc_scan_cache_tab): New function.
7130         (ggc_mark_roots): Simplify dynamic roots.  Handle dynamic caches.
7131         * doc/plugins.texi: Document PLUGIN_REGISTER_GGC_CACHES.
7132
7133 2009-09-27  Richard Henderson  <rth@redhat.com>
7134
7135         * tree-ssa-ccp.c (optimize_stack_restore): Relax the conditions under
7136         which we remove __builtin_stack_restore.
7137
7138 2009-09-27  Bernd Schmidt  <bernd.schmidt@analog.com>
7139
7140         * loop-iv.c (iv_analyze_op): Use function_invariant_p, not CONSTANT_P,
7141         to test for GRD_INVARIANT.
7142         (simple_rhs_p): Anything that's function_invariant_p is fine.
7143
7144 2009-09-27  Rafael Avila de Espindola  <espindola@google.com>
7145
7146         * gengtype.c (main): Use plunge_files instead of plugin_output.
7147
7148 2009-09-27  Basile Starynkevitch  <basile@starynkevitch.net>
7149             Rafael Avila de Espindola  <espindola@google.com>
7150
7151         * gengtype.c (write_root, write_roots): Add a emit_pch argument.
7152         Don't print pch related info if it is false.
7153         (main): Don't print pch info in plugin mode.
7154
7155 2009-09-27  Eric Botcazou  <ebotcazou@adacore.com>
7156
7157         * dwarf2out.c (enum dw_val_class): Replace dw_val_class_long_long
7158         with dw_val_class_const_double.
7159         (struct dw_val_struct): Replace val_long_long with val_double and
7160         adjust for above change.
7161         (output_loc_operands): Likewise.
7162         (add_AT_long_long): Rename into...
7163         (add_AT_double): ...this.
7164         (print_die): Replace dw_val_class_long_long with
7165         dw_val_class_const_double and adjust.
7166         (attr_checksum): Likewise.
7167         (same_dw_val_p): Likewise.
7168         (size_of_die): Likewise.
7169         (value_format): Likewise.
7170         (output_die): Likewise.
7171         (loc_descriptor) <CONST_DOUBLE>: Likewise.
7172         (add_const_value_attribute) <CONST_DOUBLE>: Call add_AT_double
7173         instead of add_AT_long_long.
7174         (add_bound_info) <INTEGER_CST>: Generate the bound as an unsigned
7175         value with the precision of its type.
7176
7177 2009-09-27  Andreas Schwab  <schwab@linux-m68k.org>
7178
7179         PR c/41476
7180         * c-typeck.c (build_conditional_expr): Use the readonly and
7181         volatile flags of the operand types, not of the operands itself.
7182
7183 2009-09-27  Peter O'Gorman  <pogma@thewrittenword.com>
7184
7185         * collect2.c (main): Look for -brtl before adding libraries.
7186
7187 2009-09-27  Jonathan Gray  <jsg@openbsd.org>
7188
7189         * config.gcc: Update OpenBSD targets.
7190         * config/openbsd-stdint.h: New file.
7191         * config/openbsd-libpthread.h: New file.
7192         * config/openbsd.h: Update and break out LIB_SPEC definition.
7193         * config/alpha/openbsd.h: Overhaul to reflect ELF migration.
7194         * config/i386/openbsdelf.h: Correct types.
7195         * config/m68k/openbsd.h: Likewise.
7196         * config/mips/openbsd.h: Likewise.
7197         * config/vax/openbsd.h: Likewise.
7198
7199 2009-09-27  Eric Botcazou  <ebotcazou@adacore.com>
7200
7201         * fold-const.c (maybe_lvalue_p): Return false for M(IN|AX)_EXPR.
7202         (extract_muldiv_1) <MINUS_EXPR>: Swap operands if necessary.
7203         * stor-layout.c (layout_type) <ARRAY_TYPE>: Do not take the maximum
7204         of the length and zero.
7205
7206 2009-09-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
7207
7208         * Makefile.in (TOPLEV_H): Use $(INPUT_H) not input.h.
7209         (FLAGS_H): Add options.h $(REAL_H).
7210         (SEL_SCHED_IR_H): Add $(BITMAP_H) vecprim.h $(CFGLOOP_H).
7211         (TREE_VECTORIZER_H): New.
7212         (EBITMAP_H): Renamed from EBIMAP_H.
7213         (c-decl.o, c-objc-common.o, c-pretty-print.o, attribs.o, c-omp.o)
7214         (gtype-desc.o, ggc-common.o, ggc-page.o, ggc-zone.o, langhooks.o)
7215         (tree.o, tree-ssa-structalias.o, tree-ssa-ter.o, tree-ssanames.o)
7216         (tree-phinodes.o, tree-ssa-loop.o, tree-ssa-math-opts.o)
7217         (gimple-low.o, omp-low.o, sese.o, graphite-blocking.o)
7218         (graphite-clast-to-gimple.o, graphite-dependences.o)
7219         (graphite-interchange.o, graphite-poly.o, graphite-scop-detection.o)
7220         (graphite-sese-to-poly.o, tree-vect-loop.o, tree-vect-loop-manip.o)
7221         (tree-vect-patterns.o, tree-vect-slp.o, tree-vect-stmts.o)
7222         (tree-vect-data-refs.o, tree-vectorizer.o, gimple.o, tree-mudflap.o)
7223         (targhooks.o, stmt.o, emit-rtl.o, ipa.o, matrix-reorg.o, ipa-inline.o)
7224         (gcse.o, tree-ssa-ccp.o, df-byte-scan.o, vec.o, caller-save.o)
7225         (ira-build.o, ira-costs.o, ira-color.o, ira-emit.o, ira.o)
7226         (haifa-sched.o, sched-rgn.o, sel-sched.o, sel-sched-dump.o)
7227         (sel-sched-ir.o, final.o, $(out_object_file)): Dependencies
7228         updated and fixed as per above changes and per
7229         check_makefile_deps.sh output.
7230
7231         PR bootstrap/40928
7232         * configure.ac: Use $LIBS for '-ldl', not $LDFLAGS.
7233         * configure: Regenerate.
7234
7235 2009-09-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7236
7237         * doc/install.texi: Update minimum MPC version to 0.7.
7238
7239 2009-09-26  Gerald Pfeifer  <gerald@pfeifer.com>
7240
7241         * doc/install.texi (Binaries): Remove reference to the binary
7242         distribution CD-ROM from the FSF.
7243
7244 2009-09-26  Michael Matz  <matz@suse.de>
7245
7246         PR lto/40758
7247         PR middle-end/41470
7248         * tree-ssa-coalesce.c (coalesce_ssa_name): Add only SSA names
7249         that are mentioned in the body.
7250
7251 2009-09-26  Michael Matz  <matz@suse.de>
7252
7253         PR tree-optimization/41454
7254         * tree-ssa-dom (stmts_to_rescan): Remove variable.
7255         (tree_ssa_dominator_optimize): Don't allocate and free it.
7256         (dom_opt_leave_block): Don't iterate over it.
7257         (eliminate_redundant_computations): Don't return a value.
7258         (cprop_operand, cprop_into_stmt): Ditto.
7259         (optimize_stmt): Don't defer updating stmts.
7260
7261 2009-09-25  Dodji Seketeli  <dodji@redhat.com>
7262
7263         * dwarf2out.c (dwarf_tag_name, gen_generic_params_dies,
7264         generic_parameter_die, template_parameter_pack_die,
7265         gen_formal_parameter_die, gen_subprogram_die): Adjust after
7266         renaming DW_TAG_formal_parameter_pack and
7267         DW_TAG_template_parameter_pack into DW_TAG_GNU_formal_parameter_pack
7268         and DW_TAG_GNU_template_parameter_pack.
7269
7270 2009-09-25  Anatoly Sokolov  <aesok@post.ru>
7271
7272         * config/v850/v850.h (FUNCTION_VALUE): Remove.
7273         * config/v850/v850.c (v850_function_value): New function.
7274         (TARGET_FUNCTION_VALUE): Define.
7275
7276 2009-09-25  Jakub Jelinek  <jakub@redhat.com>
7277
7278         * tree-vect-stmts.c (vectorizable_call): Call
7279         mark_symbols_for_renaming after vect_finish_stmt_generation.
7280
7281         * dwarf2out.c (tls_mem_loc_descriptor): Pass 1 instead of 2
7282         to loc_descriptor_from_tree.
7283         (add_location_or_const_value_attribute): Pass 0 instead of 2
7284         for decl_by_reference_p decls.
7285
7286 2009-09-25  Richard Guenther  <rguenther@suse.de>
7287
7288         PR middle-end/41463
7289         * tree-dfa.c (get_ref_base_and_extent): Fix issue with trailing
7290         arrays again.
7291
7292 2009-09-25  Ben Elliston  <bje@au.ibm.com>
7293
7294         * doc/invoke.texi (RS/6000 and PowerPC Options): Add missing comma
7295         after `power7'.
7296
7297 2009-09-25  Alan Modra  <amodra@bigpond.net.au>
7298
7299         * config/rs6000/rs6000.md (load_toc_v4_PIC_3c): Correct POWER
7300         form of instruction.
7301
7302 2009-09-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7303
7304         PR middle-end/41435
7305         * fold-const.c (const_binop): Handle complex int division.
7306         * tree-complex.c (expand_complex_div_straight,
7307         expand_complex_div_wide): Update comments.
7308
7309 2009-09-24  DJ Delorie  <dj@redhat.com>
7310
7311         PR target/41456
7312         * config/m32c/m32c.h (REG_CLASS_CONTENTS): Add R13.
7313         (reg_class): Likewise.
7314         (REG_CLASS_NAMES): Likewise.
7315         * config/m32c/m32c.c (m32c_reg_class_from_constraint): Likewise.
7316         (m32c_override_options): Disable -fivopts for M32C.
7317
7318 2009-09-24  Michael Meissner  <meissner@linux.vnet.ibm.com>
7319
7320         * config/rs6000/predicates.md (indexed_or_indirect_operand):
7321         Delete VSX load/store with update support.
7322         * config/rs6000/rs6000.c (rs6000_legitimate_address_p): Ditto.
7323         * config/rs6000/vsx.md (vsx_mov<mode>): Ditto.
7324         (vsx_movti): Ditto.
7325         (VSX_U): Delete.
7326         (VSbit): Ditto.
7327         (VStype_load_update): Ditto.
7328         (VStype_store_update): Ditto.
7329         (vsx_load<VSX_U:mode>_update_<P:mptrsize>): Ditto.
7330         (vsx_store<VSX_U:mode>_update_<P:mptrsize>): Ditto.
7331
7332         * config/rs6000/rs6000.h (enum rs6000_builtins): Delete VSX
7333         load/store with update builtins.
7334
7335 2009-09-24  Kai Tietz  <kai.tietz@onevision.com>
7336
7337         * libgcc2.c (L_trampoline): Prototype for getpagesize
7338         and mprotect in WINNT case.
7339
7340 2009-09-24  Anatoly Sokolov  <aesok@post.ru>
7341
7342         * config/rs6000/rs6000.h (FUNCTION_VALUE): Remove macro.
7343         * config/rs6000/rs6000-protos.h (rs6000_function_value): Remove.
7344         * config/rs6000/rs6000.c (rs6000_function_value): Make static, add
7345         'outgoing' argument.
7346         (TARGET_FUNCTION_VALUE): Define.
7347
7348 2009-09-24  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
7349
7350         * config/darwin.h (DWARF2_DEBUGGING_INFO): Define as 1.
7351
7352 2009-09-24  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
7353
7354         PR bootstrap/41405
7355         * common.opt: Initialize dwarf_strict to -1.
7356         * toplev.c (process_options): Catch unset dwarf_strict
7357         and set to 0 for all targets not overriding.
7358         * config/darwin.c (darwin_override_options): Catch unset
7359         dwarf_strict and override to 1.
7360
7361 2009-09-24  Jeff Law  <law@redhat.com>
7362
7363         * tree-into-ssa.c (rewrite_into_ssa): Free interesting_blocks.
7364
7365 2009-09-24  Richard Guenther  <rguenther@suse.de>
7366
7367         PR tree-optimization/36143
7368         PR tree-optimization/38747
7369         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Only
7370         create VIEW_CONVERT_EXPRs for TBAA compatible accesses.
7371
7372 2009-09-24  Jakub Jelinek  <jakub@redhat.com>
7373
7374         PR bootstrap/41457
7375         * dwarf2out.c (add_const_value_attribute): For HIGH and CONST_FIXED,
7376         return false instead of gcc_unreachable ().  For CONST return the
7377         value returned by recursive call instead of always returning true.
7378         (tree_add_const_value_attribute): Return the value returned by
7379         add_const_value_attribute instead of always returning true if rtl
7380         is non-NULL.
7381
7382 2009-09-23  Justin Seyster  <jrseys@gmail.com>
7383
7384         * Makefile.in (PLUGIN_HEADERS): Include real.h.
7385
7386 2009-09-24  Jakub Jelinek  <jakub@redhat.com>
7387
7388         * cgraphunit.c (cgraph_lower_function): Revert last change.
7389         * targhooks.c (default_static_chain): Use !DECL_STATIC_CHAIN
7390         instead of DECL_NO_STATIC_CHAIN.
7391         * tree-cfg.c (verify_gimple_call): Likewise.
7392         * tree-nested.c (get_chain_decl, get_chain_field,
7393         convert_tramp_reference_op, convert_gimple_call): Likewise.
7394         (convert_all_function_calls): Likewise.  Always set or clear
7395         DECL_STATIC_CHAIN initially, for !n->outer clear it.
7396         (lower_nested_functions): Remove DECL_NO_STATIC_CHAIN checking code.
7397         * c-parser.c (c_parser_declaration_or_fndef): Set DECL_STATIC_CHAIN
7398         if nested.
7399         * print-tree.c (print_node): Handle DECL_STATIC_CHAIN instead of
7400         DECL_NO_STATIC_CHAIN.
7401         * config/i386/i386.c (ix86_static_chain): Use !DECL_STATIC_CHAIN
7402         instead of DECL_NO_STATIC_CHAIN.
7403         (ix86_function_regparm, find_drap_reg): Likewise.  Don't test
7404         decl_function_context.
7405         * varasm.c (initializer_constant_valid_p): Likewise.
7406         * tree.h (DECL_NO_STATIC_CHAIN): Renamed to ...
7407         (DECL_STATIC_CHAIN): ... this.
7408         * config/moxie/moxie.c (moxie_static_chain): Use !DECL_STATIC_CHAIN
7409         instead of DECL_NO_STATIC_CHAIN.
7410
7411 2009-09-23  Basile Starynkevitch  <basile@starynkevitch.net>
7412             Rafael Avila de Espindola  <espindola@google.com>
7413
7414         * gengtype.c (nb_plugin_files): Make it unsigned to match
7415         num_gt_files. Adjust other variables to avoid warnings.
7416         (main): Allocate an all zero lang_bitmap before each plugin file name
7417         to match regular file names.
7418
7419 2009-09-23  Richard Henderson  <rth@redhat.com>
7420
7421         * doc/tm.texi (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Remove.
7422         (TARGET_STATIC_CHAIN): Mention that this hook must be used for
7423         static chain passed in memory.
7424         * system.h (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Poison.
7425         * targhooks.c (default_static_chain): Don't handle STATIC_CHAIN,
7426         STATIC_CHAIN_INCOMING.  Issue a sorry if there's no
7427         STATIC_CHAIN_REGNUM defined.
7428
7429         * config/picochip/picochip-protos.h: s/class/klass/.
7430         * config/picochip/picochip.c (TARGET_STATIC_CHAIN): New.
7431         (picochip_static_chain): New.
7432         * config/picochip/picochip.h (STATIC_CHAIN): Remove.
7433         (STATIC_CHAIN_INCOMING): Remove.
7434
7435         * config/xtensa/xtensa.c (TARGET_STATIC_CHAIN): New.
7436         (xtensa_static_chain): New.
7437         * config/xtensa/xtensa.h (STATIC_CHAIN): Remove.
7438         (STATIC_CHAIN_INCOMING): Remove.
7439
7440 2009-09-23  Anatoly Sokolov  <aesok@post.ru>
7441
7442         * config/pa/pa.h (FUNCTION_VALUE): Remove macro.
7443         * config/pa/pa-protos.h (function_value): Remove.
7444         * config/pa/pa.c (pa_function_value): Rename from function_value.
7445         Make static, add 'outgoing' argument.
7446         (TARGET_FUNCTION_VALUE): Define.
7447
7448 2009-09-23  Anatoly Sokolov  <aesok@post.ru>
7449
7450         * config/avr/avr.c (avr_regs_to_save): Use current_function_is_leaf
7451         instead of cfun->machine->is_leaf.
7452         * config/avr/avr.h (machine_function): Remove is_leaf field.
7453
7454 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
7455
7456         PR debug/41439
7457         * dwarf2out.c (address_of_int_loc_descriptor): Don't emit
7458         DW_OP_piece after DW_OP_stack_value, adjust size calculations
7459         for it, when DW_OP_stack_value and DW_OP_implicit_value has
7460         the same size, prefer DW_OP_stack_value.
7461         (loc_descriptor, loc_list_for_address_of_addr_expr_of_indirect_ref,
7462         loc_list_from_tree): Don't emit DW_OP_piece after DW_OP_stack_value.
7463
7464 2009-09-23  Alexandre Oliva  <aoliva@redhat.com>
7465
7466         PR debug/41353
7467         * var-tracking.c (add_with_sets): Sort MO_VAL_LOC last among uses.
7468
7469 2009-09-23  Alexandre Oliva  <aoliva@redhat.com>
7470
7471         PR debug/41248
7472         * cfgexpand.c (convert_debug_memory_address): New.
7473         (expand_debug_expr): Convert base address and offset to the same
7474         mode.  Use it to convert addresses to other modes.  Accept
7475         ptr_mode addresses.
7476
7477 2009-09-23  Dodji Seketeli <dodji@redhat.com>
7478
7479         PR debug/41065
7480         * function.h (types_used_by_vars_hash): Declare new hash table.
7481         (types_used_by_vars_eq, types_used_by_var_decl_insert): Declare
7482         equality and hash function for the hash table.
7483         (types_used_by_cur_var_decl): Declare a new global chained list.
7484         (types_used_by_var_decl_insert): Declare new function.
7485         * function.c (types_used_by_vars_hash): Define the hashtable ...
7486         (types_used_by_vars_eq, types_used_by_vars_do_hash): ... as well as
7487         its equality and hash functions.
7488         (hash_types_used_by_vars_entry): New hash helper.
7489         (types_used_by_cur_var_decl): Define the global chained list.
7490         (used_types_insert): Update the list of types used by the global
7491         variable being parsed.
7492         (types_used_by_var_decl_insert): Define new function.
7493         * c-common.h (record_types_used_by_current_var_decl): Declare ...
7494         * c-common.c (record_types_used_by_current_var_decl): ... new
7495         function.
7496         * c-decl.c (finish_decl): Record the types used by the global
7497         variable declaration we've just parsed.
7498         * dwarf2out.c (premark_used_types): Insert a new line between
7499         comment and function.
7500         (premark_used_types_helper): Fix comment.
7501         (premark_types_used_by_global_vars_helper,
7502         premark_types_used_by_global_vars): New functions.
7503         (prune_unused_types): Do not prune types used by global variables.
7504
7505 2009-09-23  Richard Guenther  <rguenther@suse.de>
7506
7507         * alias.c (ao_ref_from_mem): Correct for negative MEM_OFFSET
7508         produced for bigendian targets with promoted subregs.
7509
7510 2009-09-23  Richard Guenther  <rguenther@suse.de>
7511
7512         * value-prof.c (gimple_ic): Purge old EH edges only after building
7513         the new ones.
7514
7515 2009-09-23  Nick Clifton  <nickc@redhat.com>
7516
7517         * config/arc/arc.c (arc_trampoline_init): Fix typo.
7518
7519 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
7520
7521         PR bootstrap/41405
7522         * doc/invoke.texi: Document -gstrict-dwarf and -gno-strict-dwarf.
7523
7524         PR bootstrap/41436
7525         * cgraphunit.c (cgraph_lower_function): Set DECL_NO_STATIC_CHAIN
7526         on non-nested functions.
7527
7528 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
7529             Jan Hubicka  <jh@suse.cz>
7530
7531         * dwarf2out.c (loc_list_plus_const): Only define if
7532         DWARF2_DEBUGGING_INFO.
7533         (address_of_int_loc_descriptor): Likewise.
7534
7535         PR debug/41411
7536         * dwarf2out.c (mem_loc_descriptor): Handle HIGH.
7537
7538 2009-09-23  Uros Bizjak  <ubizjak@gmail.com>
7539
7540         PR c/39779
7541         * c-typeck.c (build_binary_op) <short_shift>: Check that integer
7542         constant is more than zero.
7543
7544 2009-09-23  Alan Modra  <amodra@bigpond.net.au>
7545
7546         PR target/40473
7547         * config/rs6000/rs6000.c (rs6000_output_function_prologue): Don't
7548         call final to emit non-scheduled prologue, instead insert at entry.
7549
7550 2009-09-22  Loren J. Rittle  <ljrittle@acm.org>
7551             Joseph S. Myers  <joseph@codesourcery.com>
7552
7553         * doc/install.texi (*-*-freebsd*): Add proper format codes.
7554
7555 2009-09-22  Basile Starynkevitch  <basile@starynkevitch.net>
7556             Rafael Avila de Espindola  <espindola@google.com>
7557
7558         * gengtype.c (is_file_equal): New function.
7559         (close_output_files): Use is_file_equal. Free of->buf.
7560
7561 2009-09-22  Basile Starynkevitch  <basile@starynkevitch.net>
7562             Rafael Avila de Espindola  <espindola@google.com>
7563
7564         * gengtype.c (write_types, write_local): Add the output_header
7565         argument. Update all callers.
7566
7567 2009-09-22  Dodji Seketeli  <dodji@redhat.com>
7568
7569         * dwarf2out.c (template_parameter_pack_die,
7570         gen_formal_parameter_pack_die ): New functions.
7571         (make_ith_pack_parameter_name): Remove this function.
7572         (dwarf_tag_name): Support printing DW_TAG_template_parameter_pack and
7573         DW_TAG_formal_parameter_pack.
7574         (gen_generic_params_dies): Represent each template parameter pack
7575         by a DW_TAG_template_parameter_pack DIE. Argument pack elements are
7576         represented by usual DW_TAG_template_*_parameter DIEs that are
7577         children of the DW_TAG_template_parameter_pack element DIE.
7578         (generic_parameter_die): This doesn't deal with parameter pack
7579         names anymore. Don't generate DW_AT_name for some DIEs, e.g. children
7580         of parameter pack DIEs.
7581         (gen_formal_parameter_die): Add a flag to not emit DW_AT_name
7582         in certain cases, e.g. for pack elements.
7583         (gen_formal_types_die, gen_decl_die): Adjust usage of
7584         gen_formal_parameter_die.
7585         (gen_subprogram_die): Represent each function parameter pack by a
7586         DW_TAG_formal_parameter_pack DIE. Arguments of of the pack are
7587         represented by usual DW_TAG_formal_parameter DIEs that are children
7588         of the DW_TAG_formal_parameter_pack DIE. Remove references to
7589         ____builtin_va_alist decls as no part of the compiler uses those
7590         anymore.
7591         * langhooks.h (struct lang_hooks_for_decls): Add
7592         function_parm_expanded_from_pack_p, get_generic_function_decl
7593         and function_parameter_pack_p hooks.  Fix comment for
7594         get_innermost_generic_parms hook.
7595         * langhooks-def.h (LANG_HOOKS_FUNCTION_PARAMETER_PACK_P,
7596         LANG_HOOKS_FUNCTION_PARM_EXPANDED_FROM_PACK_P ): Declare new hook
7597         macros and use them to initialize lang_hook.
7598
7599 2009-09-22  Richard Henderson  <rth@redhat.com>
7600
7601         * system.h (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE): Poison.
7602         (TRAMPOLINE_ADJUST_ADDRESS): Poison.
7603         * target-def.h (TARGET_ASM_TRAMPOLINE_TEMPLATE): Don't conditionalize
7604         on TRAMPOLINE_TEMPLATE.
7605         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): Don't conditionalize on
7606         TRAMPOLINE_ADJUST_ADDRESS.
7607         * targhooks.c (default_asm_trampoline_template): Remove.
7608         (default_trampoline_adjust_address): Remove.
7609         (default_trampoline_init): Don't handle INITIALIZE_TRAMPOLINE.
7610         * targhooks.h: Update decls.
7611
7612 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
7613
7614         * config/i386/cygming.h (TARGET_USE_JCR_SECTION): Enable.
7615         * config/i386/cygwin.h (LIBGCJ_SONAME): Define.
7616         * config/i386/mingw32.h (LIBGCJ_SONAME): Likewise.
7617
7618 2009-09-22  Alexandre Oliva  <aoliva@redhat.com>
7619
7620         PR debug/41295
7621         * reload1.c (reload): Reset debug insns with pseudos without
7622         equivalences.
7623
7624 2009-09-22  Janis Johnson  <janis187@us.ibm.com>
7625
7626         * config/i386/i386.c (ix86_scalar_mode_supported_p): Don't return
7627         unconditional true for decimal float modes.
7628         * config/rs6000/rs6000.c (rs6000_scalar_mode_supported_p): Ditto.
7629         * config/s390/s390.c (s390_scalar_mode_supported_p): Ditto.
7630
7631 2009-09-22  Loren J. Rittle  <ljrittle@acm.org>
7632
7633         * unwind-dw2-fde-glibc.c: Define and use USE_PT_GNU_EH_FRAME.
7634         Enable a new case for __FreeBSD__ >= 7.
7635         * crtstuff.c:  Define USE_PT_GNU_EH_FRAME for __FreeBSD__ >= 7.
7636         * config/t-freebsd: Define LIB2ADDEH and LIB2ADDEHDEP.
7637         * config/freebsd-spec.h: Conditionally define LINK_EH_SPEC
7638         and USE_LD_AS_NEEDED.
7639
7640         * doc/install.texi (*-*-freebsd*): Update target information.
7641
7642 2009-09-22  Richard Guenther  <rguenther@suse.de>
7643
7644         PR middle-end/41395
7645         * tree-dfa.c (get_ref_base_and_extent): Handle trailing
7646         arrays really properly.
7647
7648 2009-09-22  Richard Henderson  <rth@redhat.com>
7649
7650         PR target/41246
7651         * target.h (struct gcc_target): Add asm_out.trampoline_template,
7652         calls.static_chain, calls.trampoline_init,
7653         calls.trampoline_adjust_address.
7654         * target-def.h (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
7655         (TARGET_STATIC_CHAIN, TARGET_TRAMPOLINE_INIT): New.
7656         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
7657         * builtins.c (expand_builtin_setjmp_receiver): Use
7658         targetm.calls.static_chain; only clobber registers.
7659         (expand_builtin_init_trampoline): Use targetm.calls.trampoline_init;
7660         set up memory attributes properly for the trampoline block.
7661         (expand_builtin_adjust_trampoline): Use
7662         targetm.calls.trampoline_adjust_address.
7663         * calls.c (prepare_call_address): Add fndecl argument.  Use
7664         targetm.calls.static_chain.
7665         * df-scan.c (df_need_static_chain_reg): Remove.
7666         (df_get_entry_block_def_set): Use targetm.calls.static_chain;
7667         consolodate static chain handling.
7668         * doc/tm.texi: Document new hooks.
7669         * emit-rtl.c (static_chain_rtx, static_chain_incoming_rtx): Remove.
7670         (init_emit_regs): Don't initialize them.
7671         * expr.h (prepare_call_address): Update decl.
7672         * final.c (profile_function): Use targetm.calls.static_chain.
7673         * function.c (expand_function_start): Likewise.
7674         * rtl.h (static_chain_rtx, static_chain_incoming_rtx): Remove.
7675         * stmt.c (expand_nl_goto_receiver): Use targetm.calls.static_chain;
7676         only clobber registers.
7677         * targhooks.c (default_static_chain): New.
7678         (default_asm_trampoline_template, default_trampoline_init): New.
7679         (default_trampoline_adjust_address): New.
7680         * targhooks.h: Declare them.
7681         * varasm.c (assemble_trampoline_template): Use
7682         targetm.asm_out.trampoline_template.  Make the memory block const
7683         and set its size.
7684
7685         * config/alpha/alpha.c (alpha_trampoline_init): Rename from
7686         alpha_initialize_trampoline.  Make static.  Merge VMS parameter
7687         differences into the TARGET_ABI_OPEN_VMS code block.
7688         (TARGET_TRAMPOLINE_INIT): New.
7689         * config/alpha/alpha.h (TRAMPOLINE_TEMPLATE): Remove.
7690         (TRAMPOLINE_SECTION, INITIALIZE_TRAMPOLINE): Remove.
7691         * config/alpha/vms.h (TRAMPOLINE_SIZE, TRAMPOLINE_ALIGNMENT): Remove.
7692         (INITIALIZE_TRAMPOLINE): Remove.
7693
7694         * config/arc/arc.h (TRAMPOLINE_ALIGNMENT): New.
7695         (TRAMPOLINE_TEMPLATE): Merge with ...
7696         (INITIALIZE_TRAMPOLINE): ... this and move ...
7697         * config/arc/arc.c (arc_trampoline_init): ... here.
7698         (TARGET_TRAMPOLINE_INIT): New.
7699
7700         * config/arm/arm.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
7701         (TARGET_TRAMPOLINE_INIT, TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
7702         (arm_asm_trampoline_template): New.
7703         (arm_trampoline_init, arm_trampoline_adjust_address): New.
7704         * config/arm/arm.h (TRAMPOLINE_TEMPLATE, ARM_TRAMPOLINE_TEMPLATE,
7705         THUMB2_TRAMPOLINE_TEMPLATE, THUMB1_TRAMPOLINE_TEMPLATE): Move all
7706         code to arm_asm_trampoline_template.
7707         (TRAMPOLINE_ADJUST_ADDRESS): Move code to
7708         arm_trampoline_adjust_address.
7709         (INITIALIZE_TRAMPOLINE): Move code to arm_trampoline_init;
7710         adjust for target hook parameters.
7711
7712         * config/avr/avr.h (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE):
7713         Remove.
7714
7715         * config/bfin/bfin-protos.h (initialize_trampoline): Remove.
7716         * config/bfin/bfin.c (bfin_asm_trampoline_template): New.
7717         (bfin_trampoline_init): Rename from initialize_trampoline;
7718         make static; update for target hook parameters.
7719         (TARGET_ASM_TRAMPOLINE_TEMPLATE, TARGET_TRAMPOLINE_INIT): New.
7720         * config/bfin/bfin.h (TRAMPOLINE_TEMPLATE): Move code to
7721         bfin_asm_trampoline_template.
7722         (INITIALIZE_TRAMPOLINE): Remove.
7723
7724         * config/cris/cris.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
7725         TARGET_TRAMPOLINE_INIT, cris_asm_trampoline_template,
7726         cris_trampoline_init): New.
7727         * config/cris/cris.h (TRAMPOLINE_TEMPLATE): Move code to
7728         cris_asm_trampoline_template.
7729         (INITIALIZE_TRAMPOLINE): Move code to cris_trampoline_init;
7730         adjust for target hook parameters.
7731
7732         * config/crx/crx.h (INITIALIZE_TRAMPOLINE): Remove.
7733
7734         * config/fr30/fr30.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
7735         TARGET_TRAMPOLINE_INIT, fr30_asm_trampoline_template,
7736         fr30_trampoline_init): New.
7737         * config/fr30/fr30.h (TRAMPOLINE_TEMPLATE): Move code to
7738         fr30_asm_trampoline_template.
7739         (INITIALIZE_TRAMPOLINE): Move code to fr30_trampoline_init;
7740         adjust for target hook parameters.
7741
7742         * config/frv/frv.c (TARGET_TRAMPOLINE_INIT): New.
7743         (frv_trampoline_init): Rename from frv_initialize_trampoline;
7744         make static, adjust arguments for TARGET_TRAMPOLINE_INIT hook.
7745         * config/frv/frv.h (INITIALIZE_TRAMPOLINE): Remove.
7746         * config/frv/frv-protos.h (frv_initialize_trampoline): Remove.
7747
7748         * config/h8300/h8300.c (h8300_trampoline_init): New.
7749         (TARGET_TRAMPOLINE_INIT): New.
7750         * config/h8300/h8300.h (INITIALIZE_TRAMPOLINE): Move code
7751         to h8300_trampoline_init and adjust for hook parameters.
7752
7753         * config/ia64/ia64-protos.h (ia64_initialize_trampoline): Remove.
7754         * config/ia64/ia64.c (TARGET_TRAMPOLINE_INIT): New.
7755         (ia64_trampoline_init): Rename from ia64_initialize_trampoline;
7756         make static; adjust for hook parameters.
7757         * config/ia64/ia64.h (INITIALIZE_TRAMPOLINE): Remove.
7758
7759         * config/iq2000/iq2000.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
7760         (TARGET_TRAMPOLINE_INIT): New.
7761         (iq2000_asm_trampoline_template, iq2000_trampoline_init): New.
7762         * config/iq2000/iq2000.h (TRAMPOLINE_TEMPLATE): Move code to
7763         iq2000_asm_trampoline_template.
7764         (INITIALIZE_TRAMPOLINE): Move code to iq2000_trampoline_init.
7765         (TRAMPOLINE_CODE_SIZE): New.
7766         (TRAMPOLINE_SIZE): Use it.
7767         (TRAMPOLINE_ALIGNMENT): Follow Pmode.
7768
7769         * config/m32c/m32c-protos.h (m32c_initialize_trampoline): Remove.
7770         * config/m32c/m32c.c (TARGET_TRAMPOLINE_INIT): New.
7771         (m32c_trampoline_init): Rename from m32c_initialize_trampoline;
7772         adjust for hook parameters.
7773         * config/m32c/m32c.h (INITIALIZE_TRAMPOLINE): Remove.
7774
7775         * config/m32r/m32r.c (TARGET_TRAMPOLINE_INIT): New.
7776         (m32r_trampoline_init): New.
7777         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Move code to
7778         m32r_trampoline_init.
7779
7780         * config/m68hc11/m68hc11.c (TARGET_TRAMPOLINE_INIT): New.
7781         (m68hc11_trampoline_init): Rename from m68hc11_initialize_trampoline;
7782         make static; update for hook parameters.
7783         * config/m68hc11/m68hc11-protos.h: Update.
7784         * config/m68hc11/m68hc11.h (INITIALIZE_TRAMPOLINE): Remove.
7785
7786         * config/mcore/mcore.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
7787         (TARGET_TRAMPOLINE_INIT): New.
7788         (mcore_function_value): Fix typo.
7789         (mcore_asm_trampoline_template, mcore_trampoline_init): New.
7790         * config/mcore/mcore.h (TRAMPOLINE_TEMPLATE): Move code
7791         to mcore_asm_trampoline_template.
7792         (INITIALIZE_TRAMPOLINE): Move code to mcore_trampoline_init.
7793
7794         * config/mep/mep.h (INITIALIZE_TRAMPOLINE): Remove.
7795         * config/mep/mep.c (TARGET_TRAMPOLINE_INIT): New.
7796         (mep_trampoline_init): Rename from mep_init_trampoline; make static;
7797         update for hook parameters.
7798         * config/mep/mep-protos.h (mep_init_trampoline): Remove.
7799
7800         * config/mips/mips.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
7801         mips_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
7802         mips_trampoline_init): New.
7803         * config/mips/mips.h (TRAMPOLINE_TEMPLATE): Move code to
7804         mips_asm_trampoline_template.
7805         (INITIALIZE_TRAMPOLINE): Move code to mips_trampoline_init;
7806         update for hook parameters.
7807
7808         * gcc/config/mmix/mmix.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
7809         (TARGET_TRAMPOLINE_INIT): New.
7810         (mmix_trampoline_size): Remove.
7811         (mmix_asm_trampoline_template): Rename from mmix_trampoline_template;
7812         make static.  Remove out-of-date tetra vs octa comment.
7813         (mmix_trampoline_init): Rename from mmix_initialize_trampoline;
7814         make static; update for hook parameters.
7815         * config/mmix/mmix.h (TRAMPOLINE_TEMPLATE): Remove.
7816         (INITIALIZE_TRAMPOLINE): Remove.
7817         (TRAMPOLINE_SIZE): Use a constant instead of mmix_trampoline_size.
7818         (TRAMPOLINE_ALIGNMENT): New.
7819         * gcc/config/mmix/mmix-protos.h: Update.
7820
7821         * config/mn10300/mn10300.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
7822         mn10300_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
7823         mn10300_trampoline_init): New.
7824         * config/mn10300/mn10300.h (TRAMPOLINE_TEMPLATE): Move code to
7825         mn10300_asm_trampoline_template.
7826         (INITIALIZE_TRAMPOLINE): Move code to mn10300_trampoline_init.
7827
7828         * config/moxie/moxie.c (moxie_static_chain,
7829         moxie_asm_trampoline_template, moxie_trampoline_init,
7830         TARGET_STATIC_CHAIN, TARGET_ASM_TRAMPOLINE_TEMPLATE,
7831         TARGET_TRAMPOLINE_INIT): New.
7832         * config/moxie/moxie.h (INITIALIZE_TRAMPOLINE): Move code to
7833         moxie_trampoline_init.
7834         (TRAMPOLINE_TEMPLATE): Move code to moxie_asm_trampoline_template.
7835         (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Remove.
7836
7837         * gcc/config/pa/pa.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
7838         pa_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
7839         pa_trampoline_init, TARGET_TRAMPOLINE_ADJUST_ADDRESS,
7840         pa_trampoline_adjust_address): New.
7841         * config/pa/pa.h (TRAMPOLINE_TEMPLATE): Move code to
7842         pa_asm_trampoline_template.
7843         (TRAMPOLINE_ALIGNMENT): New.
7844         (TRAMPOLINE_CODE_SIZE): Move to pa.c.
7845         (INITIALIZE_TRAMPOLINE): Move code to pa_trampoline_init;
7846         adjust for hook parameters.
7847         (TRAMPOLINE_ADJUST_ADDRESS): Move code to pa_trampoline_adjust_address.
7848
7849         * config/pdp11/pdp11.c (pdp11_trampoline_init): New.
7850         (TARGET_TRAMPOLINE_INIT): New.
7851         * config/pdp11/pdp11.h (TRAMPOLINE_TEMPLATE): Remove.
7852         (INITIALIZE_TRAMPOLINE): Move code to pdp11_trampoline_init.
7853
7854         * config/picochip/picochip.h (INITIALIZE_TRAMPOLINE): Remove.
7855
7856         * config/rs6000/rs6000-protos.h (rs6000_initialize_trampoline): Remove.
7857         * config/rs6000/rs6000.c (TARGET_TRAMPOLINE_INIT): New.
7858         (rs6000_trampoline_init): Rename from rs6000_initialize_trampoline;
7859         make static; adjust parameters for the hook.
7860         * config/rs6000/rs6000.h (INITIALIZE_TRAMPOLINE): Remove.
7861
7862         * config/s390/s390.c (s390_asm_trampoline_template): Rename from
7863         s390_trampoline_template; make static.
7864         (s390_trampoline_init): Rename from s390_initialize_trampoline;
7865         make static; adjust for target hook.
7866         (TARGET_ASM_TRAMPOLINE_TEMPLATE, TARGET_TRAMPOLINE_INIT): New.
7867         * config/s390/s390-protos.h: Remove trampoline decls.
7868         * config/s390/s390.h (INITIALIZE_TRAMPOLINE): Remove.
7869         (TRAMPOLINE_TEMPLATE): Remove.
7870         (TRAMPOLINE_ALIGNMENT): New.
7871
7872         * config/score/score-protos.h (score_initialize_trampoline): Remove.
7873         * config/score/score.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
7874         (TARGET_TRAMPOLINE_INIT): New.
7875         (score_asm_trampoline_template): New.
7876         (score_trampoline_init): Rename from score_initialize_trampoline;
7877         make static; adjust for hook parameters.
7878         * config/score/score.h (TRAMPOLINE_TEMPLATE): Move code to
7879         score[37]_asm_trampoline_template.
7880         (INITIALIZE_TRAMPOLINE): Remove.
7881         * config/score/score3.c (score3_asm_trampoline_template): New.
7882         (score3_trampoline_init): Rename from score3_initialize_trampoline;
7883         adjust for target hook.
7884         * config/score/score7.c (score7_asm_trampoline_template): New.
7885         (score7_trampoline_init): Rename from score7_initialize_trampoline;
7886         adjust for target hook.
7887         * config/score/score3.h, config/score/score7.h: Update.
7888
7889         * config/sh/sh-protos.h (sh_initialize_trampoline): Remove.
7890         * config/sh/sh.c (TARGET_TRAMPOLINE_INIT): New.
7891         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
7892         (sh_trampoline_init): Rename from sh_initialize_trampoline;
7893         make static; adjust for target hook parameters.
7894         (sh_trampoline_adjust_address): New.
7895         * config/sh/sh.h (INITIALIZE_TRAMPOLINE): New.
7896         (TRAMPOLINE_ADJUST_ADDRESS): Move code to sh_trampoline_adjust_address.
7897
7898         * config/sparc/sparc.c (TARGET_TRAMPOLINE_INIT): New.
7899         (sparc32_initialize_trampoline): Rename from
7900         sparc_initialize_trampoline; make static; replace tramp parameter
7901         with m_tramp and update memory accesses.
7902         (sparc64_initialize_trampoline): Similarly.
7903         (sparc_trampoline_init): New.
7904         * config/sparc/sparc-protos.h: Remove trampoline decls.
7905         * config/sparc/sparc.h (INITIALIZE_TRAMPOLINE): Remove.
7906         * config/sparc/sparc.md (nonlocal_goto): Don't use static_chain_rtx.
7907
7908         * config/spu/spu.c (TARGET_TRAMPOLINE_INIT): New.
7909         (array_to_constant): Make ARR parameter const.
7910         (spu_trampoline_init): Rename from spu_initialize_trampoline;
7911         make static; update for hook parameters.
7912         * config/spu/spu-protos.h: Update decls.
7913         * config/spu/spu.h (INITIALIZE_TRAMPOLINE): Remove.
7914
7915         * config/stormy16/stormy16.c (xstormy16_trampoline_init): Rename
7916         from xstormy16_initialize_trampoline; make static; update for
7917         hook parameters.
7918         (TARGET_TRAMPOLINE_INIT): New.
7919         * config/stormy16/stormy16.h (INITIALIZE_TRAMPOLINE): Remove.
7920
7921         * config/v850/v850.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
7922         (TARGET_TRAMPOLINE_INIT): New.
7923         (v850_can_eliminate): Make static.
7924         (v850_asm_trampoline_template, v850_trampoline_init): New.
7925         * config/v850/v850.h (TRAMPOLINE_TEMPLATE): Move code to
7926         v850_asm_trampoline_template.
7927         (INITIALIZE_TRAMPOLINE): Move code to v850_trampoline_init
7928         and adjust for target hook parameters.
7929
7930         * config/vax/vax.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
7931         (TARGET_TRAMPOLINE_INIT): New.
7932         (vax_asm_trampoline_template, vax_trampoline_init): New.
7933         * config/vax/vax.h (TRAMPOLINE_TEMPLATE): Move code to
7934         vax_asm_trampoline_template.
7935         (INITIALIZE_TRAMPOLINE): Move code to vax_trampoline_init.
7936
7937         * config/xtensa/xtensa.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
7938         (TARGET_TRAMPOLINE_INIT): New.
7939         (xtensa_asm_trampoline_template): Rename from
7940         xtensa_trampoline_template; make static.
7941         (xtensa_trampoline_init): Rename from xtensa_initialize_trampoline;
7942         make static; update for hook parameters.
7943         * config/xtensa/xtensa-protos.h: Remove trampoline decls.
7944         * config/xtensa/xtensa.h (TRAMPOLINE_TEMPLATE): Remove.
7945         (INITIALIZE_TRAMPOLINE): Remove.
7946
7947         * config/i386/i386.c (ix86_function_regparm): Do not issue an
7948         error for nested functions with regparm=3.
7949         (ix86_compute_frame_layout): Adjust frame pointer offset for
7950         ix86_static_chain_on_stack.
7951         (ix86_expand_prologue): Handle ix86_static_chain_on_stack.
7952         (ix86_emit_restore_reg_using_pop): Increment ix86_cfa_state->offset,
7953         don't reset to UNITS_PER_WORD.
7954         (ix86_emit_leave): Adjust ix86_cfa_state.
7955         (ix86_expand_epilogue): Handle ix86_static_chain_on_stack.
7956         (ix86_static_chain): New.
7957         (ix86_trampoline_init): Rename from x86_initialize_trampoline;
7958         make static; update for target hook parameters; use ix86_static_chain.
7959         (TARGET_STATIC_CHAIN, TARGET_TRAMPOLINE_INIT): New.
7960         * config/i386/i386.h (STATIC_CHAIN_REGNUM): Remove.
7961         (INITIALIZE_TRAMPOLINE): Remove.
7962         (TRAMPOLINE_SIZE): Use 24 for 64-bit.
7963         (struct machine_function): Use BOOL_BITFIELD; rearrange bitfields
7964         to the end.  Add static_chain_on_stack.
7965         (ix86_static_chain_on_stack): New.
7966
7967         * config/m68k/m68k.c (TARGET_TRAMPOLINE_INIT): New.
7968         (m68k_output_mi_thunk): Don't use static_chain_rtx.
7969         (m68k_trampoline_init): New.
7970         * config/m68k/m68k.h (INITIALIZE_TRAMPOLINE): Move code to
7971         m68k_trampoline_init and adjust for hook parameters.
7972         * config/m68k/netbsd-elf.h (TRAMPOLINE_TEMPLATE): Remove.
7973         (TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE): Remove.
7974
7975 2009-09-22  Jakub Jelinek  <jakub@redhat.com>
7976
7977         * config/rs6000/rs6000.c (bdesc_2arg): Fix CODE_FOR_vector_gt* codes
7978         for __builtin_altivec_vcmpgt{sb,uh,sh,uw}.
7979
7980         * reload1.c (reload): Call wrap_constant when substituting
7981         reg for equiv inside of DEBUG_INSNs.
7982
7983         PR bootstrap/41405
7984         * dwarf2out.c (base_type_die, record_type_tag, gen_subprogram_die,
7985         add_call_src_coords_attributes, add_high_low_attributes,
7986         gen_compile_unit_die, gen_type_die_with_usage force_decl_die,
7987         gen_decl_die, dwarf2out_imported_module_or_decl_1, dwarf2out_finish,
7988         dwarf2out_imported_module_or_decl): Avoid using DWARF3 additions
7989         when -gdwarf-2 -gstrict-dwarf.
7990         (loc_list_from_tree): Likewise.  Avoid using DWARF4 additions when
7991         -gdwarf-[23] -gstrict-dwarf.
7992         (address_of_int_loc_descriptor, loc_descriptor,
7993         loc_list_for_address_of_addr_expr_of_indirect_ref): Avoid using
7994         DWARF4 additions when -gdwarf-[23] -gstrict-dwarf.
7995         * common.opt (gno-strict-dwarf, gstrict-dwarf): New options.
7996
7997 2009-09-22  Richard Guenther  <rguenther@suse.de>
7998
7999         PR tree-optimization/41428
8000         * tree-ssa-ccp.c (ccp_fold_stmt): New function.
8001         (ccp_finalize): Pass it to substitute_and_fold.
8002
8003 2009-09-22  Richard Guenther  <rguenther@suse.de>
8004
8005         * tree-ssa-propagate.h (ssa_prop_fold_stmt_fn): Declare.
8006         (substitute_and_fold): Adjust prototype.
8007         * tree-vrp.c (vrp_evaluate_conditional): Make static.
8008         (simplify_stmt_using_ranges): Likewise.
8009         (fold_predicate_in): Move here from tree-ssa-propagate.c.
8010         (vrp_fold_stmt): New function.
8011         (vrp_finalize): Pass it to substitute_and_fold.
8012         * tree-flow.h (vrp_evaluate_conditional): Remove.
8013         (simplify_stmt_using_ranges): Likewise.
8014         * tree-ssa-ccp.c (ccp_finalize): Adjust call to substitute_and_fold.
8015         * tree-ssa-copy.c (fini_copy_prop): Likewise.
8016         * tree-ssa-propagate.c (struct prop_stats_d): Rename num_pred_folded
8017         member.
8018         (fold_predicate_in): Move to tree-vrp.c.
8019         (substitute_and_fold): Use the callback instead of calling into
8020         tree-vrp.c functions directly.
8021
8022 2009-09-22  Jakub Jelinek  <jakub@redhat.com>
8023
8024         * dwarf2out.c (address_of_int_loc_descriptor): Avoid signed/unsigned
8025         comparison warning on rs6000.
8026
8027         PR middle-end/41429
8028         * tree-cfg.c (remove_useless_stmts_tc): Call gsi_next (gsi) even for
8029         GIMPLE_EH_MUST_NOT_THROW cleanup.
8030         (verify_types_in_gimple_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.
8031
8032 2009-09-22  Jack Howarth  <howarth@bromo.med.uc.edu>
8033
8034         PR middle-end/41260
8035         * gcc/config.gcc: Use darwin9.h and darwin10.h on darwin10 and later.
8036         * gcc/config/darwin10.h: Add file to pass -no_compact_unwind on
8037         LIB_SPEC for darwin10 and later since it always uses the unwinder in
8038         libSystem which is derived from the gcc 4.2.1 unwinder.
8039
8040 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
8041
8042         PR middle-end/41357
8043         * varasm.c (default_encode_section_info): Copy TLS model into
8044         sym_ref flags regardless of backend support for TLS, for all
8045         model types except TLS_MODEL_EMULATED.
8046
8047 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
8048
8049         PR bootstrap/41404
8050         * dwarf2out.c (mem_loc_descriptor): Punt on CONST_STRING until
8051         we can handle it correctly.
8052
8053 2009-09-21  Gerald Pfeifer  <gerald@pfeifer.com>
8054
8055         * doc/install.texi (os2): Remove section.
8056
8057 2009-09-21  Gerald Pfeifer  <gerald@pfeifer.com>
8058
8059         * doc/standards.texi (Objective-C): Adjust two URLs.
8060
8061 2009-09-21  Giuseppe Scrivano <gscrivano@gnu.org>
8062
8063         * tree-tailcall.c (process_assignment): Don't check if a
8064         multiplication or an addition are already present.
8065         (find_tail_calls): Combine multiple additions and multiplications.
8066         (adjust_accumulator_values): Emit accumulators.
8067
8068 2009-09-21  Kai Tietz  <kai.tietz@onevision.com>
8069
8070         * config/i386/i386.c (ix86_expand_epilogue): Adjust offset for
8071         xmm register restore.
8072
8073 2009-09-21  Jan Hubicka  <jh@suse.cz>
8074
8075         * dwarf2out.c (decl_loc_table_eq): Allow decl_loc_table to be NULL.
8076         (dwarf2out_abstract_function): NULLify decl_loc_table at begginig and
8077         restore at the end.
8078
8079 2009-09-21  Eric Botcazou  <ebotcazou@adacore.com>
8080
8081         * stor-layout.c (layout_type): Remove obsolete code.
8082
8083 2009-09-20  H.J. Lu  <hongjiu.lu@intel.com>
8084
8085         PR middle-end/41395
8086         * opts.c (decode_options): Don't turn on flag_ipa_sra for opt2.
8087
8088 2009-09-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8089
8090         PR middle-end/30789
8091         * builtins.c (do_mpc_arg2): Accept DO_NONFINITE parameter.
8092         (do_mpc_ckconv): Accept FORCE_CONVERT parameter.
8093         (fold_builtin_2, do_mpc_arg1): Update accordingly.
8094         * fold-const.c (const_binop): Likewise.
8095         * real.h (do_mpc_arg2): Update prototype.
8096
8097 2009-09-20  Jan Hubicka  <jh@suse.cz>
8098
8099         * dwarf2out.c (add_const_value_attribute): Return true if successful.
8100         (add_location_or_const_value_attribute): Rewrite using
8101         loc_list_from_tree.
8102         (tree_add_const_value_attribute): Return true if successful.
8103         (tree_add_const_value_attribute_for_decl): Likewise.
8104
8105         * dwarf2out.c (address_of_int_loc_descriptor): Break out from ...
8106         (loc_descriptor): ... here;
8107         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
8108         (cst_pool_loc_descr): Break out from ...; do not reffer constant
8109         pool items that was not marked for output.
8110         (loc_list_from_tree): ... here; handle special cases of ADDR_EXPR;
8111         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
8112         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
8113         handle ALIGN_INDIRECT_REF, MISALIGNED_INDIRECT_REF, REALPART_EXPR,
8114         IMAGPART_EXPR; handle address of INTEGER_CST; improve handling of
8115         CONSTRUCTOR; handle REAL_CST, STRING_CST, COMPLEX_CST; use
8116         DW_OP_stack_value to get address of items that are not available
8117         as addresses.
8118         (dw_loc_list): Handle single element lists correctly.
8119
8120 2009-09-20  Kai Tietz  <kai.tietz@onevision.com>
8121             Pascal Obry  <obry@adacore.com>
8122
8123         * unwind-dw2-fde.c (classify_object_over_fdes):
8124         Cast the constant 1 to _Unwind_Ptr.
8125         (add_fdes): Likewise.
8126         (linear_search_fdes): Likewise.
8127
8128 2009-09-20  Eric Botcazou  <ebotcazou@adacore.com>
8129
8130         * stor-layout.c (set_sizetype): Avoid useless type copy.
8131
8132 2009-09-20  Richard Sandiford  <rdsandiford@googlemail.com>
8133
8134         * configure.ac (gcc_cv_ld_mips_personality_relaxation): New
8135         feature check.
8136         (HAVE_LD_PERSONALITY_RELAXATION): New macro definition.
8137         * configure, config.in: Regenerate.
8138         * dwarf2asm.c (eh_data_format_name): Handle DW_EH_PE_indirect |
8139         DW_EH_PE_absptr.
8140         * config/mips/mips.h (TARGET_WRITABLE_EH_FRAME): New macro.
8141         (ASM_PREFERRED_EH_DATA_FORMAT): Define.  Use MIPS_EH_INDIRECT
8142         for global data if the output could be used in a shared library.
8143         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
8144         to 0 if TARGET_WRITABLE_EH_FRAME.
8145
8146 2009-09-20  Paolo Bonzini <bonzini@gnu.org>
8147
8148         PR rtl-optimization/39886
8149         * combine.c (update_cfg_for_uncondjump): Set EDGE_FALLTHRU
8150         just when insn is equal to BB_END (bb).
8151
8152 2009-09-19  Adam Nemet  <anemet@caviumnetworks.com>
8153
8154         * config/mips/mips.opt (mrelax-pic-calls): New option.
8155         * config/mips/mips.c (mips_strip_unspec_address): Move it up in
8156         the file.
8157         (mips_unspec_call): Change "unspec_call" expander into this.
8158         (mips_strip_unspec_call): New function.
8159         (mips_got_load): Call mips_unspec_call instead of
8160         gen_unspec_call<mode>.
8161         (mips16_build_call_stub): Fix comment for fp_code.  Adjust call to
8162         MIPS_CALL.
8163         (mips_cfg_in_reorg): New function.
8164         (mips16_lay_out_constants): Use it to decide whether to call
8165         CFG-aware insn splitting.
8166         (r10k_insert_cache_barriers): Move CFG set-up code from here to
8167         mips_reorg.  Move DF set-up code from here ...
8168         (mips_df_reorg): ... to here.  Call r10k_insert_cache_barriers
8169         from here.
8170         (mips_reorg): Call mips_df_reorg instead of
8171         r10k_insert_cache_barriers.  Move CFG set-up code here from
8172         r10k_insert_cache_barriers.
8173         (mips_call_expr_from_insn): New function.
8174         (mips_pic_call_symbol_from_set): Likewise.
8175         (mips_find_pic_call_symbol): Likewise.
8176         (mips_annotate_pic_call_expr): Likewise.
8177         (mips_get_pic_call_symbol): Likewise.
8178         (mips_annotate_pic_calls): Likewise.
8179         (mips_override_options): Disable -mrelax-pic-calls unless PIC
8180         calls are used.
8181         (mips_set_mips16_mode): Disable -mrelax-pic-calls for MIPS16.
8182         * config/mips/mips-protos.h (mips_get_pic_call_symbol): Declare it.
8183         * config/mips/mips.h (MIPS_CALL): Use it to print the .reloc
8184         directive.
8185         * config/mips/mips.md (UNSPEC_CALL_ATTR): New unspec.
8186         (unspec_call<mode>): Remove it.
8187         (sibcall_internal, sibcall_value_internal,
8188         sibcall_value_multiple_internal, call_internal, call_split,
8189         call_value_internal, call_value_split,
8190         call_value_multiple_internal, call_value_multiple_split): Pass
8191         SIZE_OPNO to MIPS_CALL.
8192         (call_internal_direct, call_direct_split,
8193         call_value_internal_direct, call_value_direct_split): Pass -1 as
8194         SIZE_OPNO to MIPS_CALL.
8195         * configure.ac <mips*-*-*>: Add test for .reloc R_MIPS_JALR.
8196         * configure: Regenerate.
8197         * doc/invoke.texi (Option Summary): Add -mrelax-pic-calls
8198         and -mno-relax-pic-calls.
8199         (MIPS Options): Document -mrelax-pic-calls and -mno-relax-pic-calls.
8200
8201 2009-09-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
8202
8203         PR bootstrap/35619
8204         * Makefile.in (stmp-fixinc): Ensure `include-fixed' is created
8205         in the directory this rule is called from, rather than the
8206         toplevel 'gcc' directory, to fix in-tree build.
8207
8208 2009-09-19  Chris Demetriou  <cgd@google.com>
8209
8210         PR preprocessor/28435:
8211         * c-opts.c (c_common_handle_option): For -MD and -MMD, indicate
8212         to cpplib that the preprocessor output is needed.
8213
8214 2009-09-19  Jakub Jelinek  <jakub@redhat.com>
8215
8216         * config/rs6000/rs6000.md (*save_gpregs_<mode>, *save_fpregs_<mode>,
8217         *restore_gpregs_<mode>, *return_and_restore_gpregs_<mode>,
8218         *return_and_restore_fpregs_<mode>,
8219         *return_and_restore_fpregs_aix_<mode>): Remove 'z' operand modifier.
8220
8221         PR bootstrap/41397
8222         * dwarf2out.c (mem_loc_descriptor) <case SUBREG>: Recurse
8223         instead of assuming it has always a REG inside of it.
8224
8225 2009-09-18  Gerald Pfeifer  <gerald@pfeifer.com>
8226
8227         * config/freebsd.h: Update comment on types.
8228         (WINT_TYPE): Define.
8229
8230 2009-09-18  Jason Merrill  <jason@redhat.com>
8231
8232         * c.opt: Add -fno-deduce-init-list.
8233
8234 2009-09-18  Neil Vachharajani  <nvachhar@google.com>
8235
8236         * value-prof.c (interesting_stringop_to_profile_p): Added output
8237         argument to indicate which parameter is the size parameter.
8238         * value-prof.c (gimple_stringop_fixed_value): Use
8239         INTERESTING_STRINGOP_TO_PROFILE_P to find size argument.
8240         * value-prof.c (gimple_stringops_transform): Update call sites to
8241         INTERESTING_STRINGOP_TO_PROFILE_P to reflect parameter change.
8242
8243 2009-09-18  Uros Bizjak  <ubizjak@gmail.com>
8244
8245         PR target/38288
8246         From David Binderman <dcb314@hotmail.com>:
8247         * gcc/config/i386/i386.c (ix86_function_regparm): Remove useless
8248         local variable f.  Remove stale comments.
8249         (ix86_compute_frame_layout): Remove useless local variable total_size.
8250         Remove #if 0'd code.
8251         (legitimate_address_p): Remove useless local variables
8252         reason_rtx and reason.
8253         (ix86_split_copysign_const): Remove useless local variable op1.
8254         (scale_counter): Remove useless local variable piece_size_mask.
8255
8256 2009-09-18  Jakub Jelinek  <jakub@redhat.com>
8257
8258         * stmt.c (expand_asm_operands): Set REG_ATTRS on the temporary from
8259         output decl.
8260
8261 2009-09-17  Michael Haubenwallner  <michael.haubenwallner@salomon.at>
8262
8263         PR target/40913
8264         * config/pa/t-hpux-shlib: Set soname in libgcc_s.sl.
8265
8266 2009-09-17  Jakub Jelinek  <jakub@redhat.com>
8267
8268         * c-decl.c (finish_struct): Adjust DECL_SOURCE_LOCATION of
8269         TYPE_STUB_DECL.
8270
8271 2009-09-17  Alexandre Oliva  <aoliva@redhat.com>
8272
8273         * dwarf2out.c (loc_descriptor): Emit DW_OP_stack_value and
8274         DW_OP_implicit_value even without dwarf_version 4.
8275
8276 2009-09-17  Jan Hubicka  <jh@suse.cz>
8277
8278         * dwarf2out.c: Include tree-pass.h and gimple.h.
8279         (loc_list_plus_const): New function.
8280         (loc_descriptor_from_tree_1): Rename to ...
8281         (loc_descriptor_from_tree): ... remove original.
8282         (loc_list_from_tree): New function.
8283         (add_AT_location_description): Accept location list.
8284         (tls_mem_loc_descriptor): Update call of loc_descriptor_from_tree.
8285         (concatn_mem_loc_descriptor): Remove.
8286         (mem_loc_descriptor): Handle CONCAT/CONCATN and VAR_LOCATION by
8287         returning NULL.
8288         (secname_for_decl): Move up.
8289         (hidden_reference_p): New function; break out from ...
8290         (loc_by_refernece): ... here; move up.
8291         (dw_loc_list): New function.
8292         (single_element_loc_list): New function.
8293         (single_element_loc_list_p): New function.
8294         (add_loc_descr_to_each): New function.
8295         (add_loc_list): New function.
8296         (loc_descr_from_tree): Make wraper of loc_list_from_tree.
8297         (loc_list_from_tree): Reroganized from loc_descr_from_tree;
8298         add diagnostics why expansion failed.
8299         (add_location_or_const_value_attribute): Support location lists.
8300         (add_bound_info): Likewise.
8301         (descr_info_loc): Update call of loc_descriptor_from_tree.
8302         (gen_variable_die): Work on location lists.
8303         * final.c (pass_final): Add dump file.
8304         * Makefile.in (dwarf2out.o): Add new dependencies.
8305
8306 2009-09-17  Janis Johnson  <janis187@us.ibm.com>
8307
8308         PR c/41049
8309         * real.c decimal_from_integer, decimal_integer_string): New.
8310         (real_from_integer): Use them as special case for decimal float.
8311         * config/dfp-bit.c (_si_to_sd, _usi_to_sd): Use default rounding.
8312         (_di_to_sd, _di_to_dd, _di_to_td, _udi_to_sd, _udi_to_dd, _udi_to_td):
8313         Do not append zero after the decimal point in string to convert.
8314
8315 2009-09-17  Alexander Monakov  <amonakov@ispras.ru>
8316
8317         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Add bounds only
8318         for ARRAY_REFs.  Use array_ref_{low,up}_bound to determine bounds.
8319
8320 2009-09-17  Martin Jambor  <mjambor@suse.cz>
8321
8322         * common.opt (fipa-sra): New switch.
8323         * opts.c (decode_options): Turn flag_ipa_sra on for opt2.
8324         * timevar.def (TV_IPA_SRA): New timevar.
8325         * params.def (ipa-sra-ptr-growth-factor): New parameter.
8326         * doc/invoke.texi: Document -fipa-sra and ipa-sra-ptr-growth-factor.
8327         * tree-sra.c: Include cgraph.c.
8328         (enum sra_mode): Added SRA_MODE_EARLY_IPA.
8329         (struct access): Added fields stmt, grp_maybe_modified, grp_scalar_ptr
8330         and grp_not_necessarilly_dereferenced.
8331         (func_param_count): New variable.
8332         (encountered_apply_args): New variable.
8333         (bb_dereferences): New variable.
8334         (final_bbs): New variable.
8335         (no_accesses_representant): New variable.
8336         (no_accesses_p): New function.
8337         (dump_access): Dump the new fields.
8338         (sra_initialize): Set encountered_apply_args to false.
8339         (get_ssa_base_param): New function.
8340         (mark_parm_dereference): New function.
8341         (create_access): Caring for INIDRECT_REFs and different handling of
8342         varialble length accesses in early IPA SRA.  Store the stmt - a new
8343         parameter - to the new access.
8344         (build_access_from_expr_1): New parameter stmt, passed to
8345         create_access.  Handle INDIRECT_REFs.
8346         (build_access_from_expr): Pass the current statement to
8347         build_access_from_expr_1.
8348         (disqualify_ops_if_throwing_stmt): Trigger only in intraprocedural
8349         passes.
8350         (build_accesses_from_assign): Pass the current statement to
8351         build_access_from_expr_1.  Do not create assign links in IPA-SRA.
8352         (scan_function): Call handle_ssa_defs on phi nodes.  Set bits in
8353         final_bbs when necessary.  Check for calls to __builtin_apply_args.
8354         Fixup EH info if anythng was changed.
8355         (is_unused_scalar_param): New function.
8356         (ptr_parm_has_direct_uses): New function.
8357         (find_param_candidates): New function.
8358         (mark_maybe_modified): New function.
8359         (analyze_modified_params): New function.
8360         (propagate_dereference_distances): New function.
8361         (dump_dereferences_table): New function.
8362         (analyze_caller_dereference_legality): New function.
8363         (unmodified_by_ref_scalar_representative): New function.
8364         (splice_param_accesses): New function.
8365         (decide_one_param_reduction): New function.
8366         (enum ipa_splicing_result): New type.
8367         (splice_all_param_accesses): New function.
8368         (get_param_index): New function.
8369         (turn_representatives_into_adjustments): New function.
8370         (analyze_all_param_acesses): New function.
8371         (get_replaced_param_substitute): New function.
8372         (get_adjustment_for_base): New function.
8373         (replace_removed_params_ssa_names): New function.
8374         (sra_ipa_reset_debug_stmts): New function.
8375         (sra_ipa_modify_expr): New function.
8376         (sra_ipa_modify_assign): New function.
8377         (convert_callers): New function.
8378         (modify_function): New function.
8379         (ipa_sra_preliminary_function_checks): New function.
8380         (ipa_early_sra): New function.
8381         (ipa_early_sra_gate): New function.
8382         (pass_early_ipa_sra): New variable.
8383         * Makefile.in (tree-sra.o): Add cgraph.h to dependencies.
8384
8385 2009-09-17  Michael Matz  <matz@suse.de>
8386
8387         PR middle-end/41347
8388         * tree.c (build_type_attribute_qual_variant): Export.
8389         * tree.h (build_type_attribute_qual_variant): Declare.
8390         * tree-inline.c (remap_type_1): Use it to build variants with
8391         the original qualifiers and attributes.
8392
8393 2009-09-17  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
8394
8395         * cfglayout.c (fixup_reorder_chain): Accept conditional jumps
8396         without a fallthrough edge.
8397
8398 2009-09-16  DJ Delorie  <dj@redhat.com>
8399
8400         * config/m32c/m32c.c (m32c_emit_epilogue): Check for R8C or M16C
8401         chip and ignore the "fast_interrupt" attribute if so.
8402
8403 2009-09-16  Richard Henderson  <rth@redhat.com>
8404
8405         PR middle-end/41360
8406         * cfgbuild.c (find_bb_boundaries): Really re-instate 2009-09-02
8407         barrier fix.
8408
8409 2009-09-16  Richard Henderson  <rth@redhat.com>
8410
8411         PR target/41246
8412         * tree-cfg.c (verify_gimple_call): Validate that gimple_call_chain
8413         is set only if DECL_NO_STATIC_CHAIN is unset.
8414         * tree-nested.c (iter_nestinfo_start, iter_nestinfo_next): New.
8415         (FOR_EACH_NEST_INFO): New.
8416         (walk_all_functions): Use it.
8417         (finalize_nesting_tree): Likewise.
8418         (unnest_nesting_tree): Likewise.
8419         (free_nesting_tree): Use iter_nestinfo_start, iter_nestinfo_next.
8420         (get_chain_decl, get_chain_field): Reset DECL_NO_STATIC_CHAIN.
8421         (convert_gimple_call): Early out if gimple_call_chain already set.
8422         (convert_all_function_calls): Iterate until no new functions
8423         require a static chain.
8424         (finalize_nesting_tree_1): Assert DECL_NO_STATIC_CHAIN is unset
8425         when building a trampoline.  Use dump_function_to_file instead
8426         of dump_function.
8427         (lower_nested_functions): Open dump_file.  Validate that decls
8428         that have DECL_NO_STATIC_CHAIN from the front end don't have that
8429         bit reset by this pass.
8430
8431 2009-09-16  Michael Matz  <matz@suse.de>
8432
8433         PR fortran/41212
8434         * tree.h (struct tree_decl_common): Add decl_restricted_flag,
8435         shorten decl_common_unused.
8436         (DECL_RESTRICTED_P): New accessor.
8437         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Use it
8438         to disambiguate marked decls and restrict pointers.
8439
8440 2009-09-16  Richard Henderson  <rth@redhat.com>
8441
8442         PR middle-end/41360
8443         * cfgbuild.c (find_bb_boundaries): Re-instate 2009-09-02 barrier fix.
8444
8445 2009-09-16  Jakub Jelinek  <jakub@redhat.com>
8446
8447         * integrate.c (set_block_abstract_flags): Call
8448         set_decl_abstract_flags also on BLOCK_NONLOCALIZED_VARs.
8449
8450 2009-09-16  Richard Guenther  <rguenther@suse.de>
8451
8452         PR middle-end/34011
8453         * tree-flow-inline.h (may_be_aliased): Compute readonly variables
8454         as non-aliased.
8455
8456 2009-09-16  DJ Delorie  <dj@redhat.com>
8457             Kaz Kojima  <kkojima@gcc.gnu.org>
8458
8459         * config/sh/sh.c (output_stack_adjust): Add new argument frame_p.
8460         (sh_expand_prologue): Update calls to output_stack_adjust.
8461         (sh_expand_epilogue): Likewise.
8462
8463 2009-09-15  Adam Nemet  <anemet@caviumnetworks.com>
8464
8465         PR bootstrap/41349
8466         * reorg.c (redundant_insn): Don't count notes or DEBUG_INSNs when
8467         trying to limit the extent of searches in the insn stream.
8468
8469 2009-09-15  Nathan Froyd  <froydnj@codesourcery.com>
8470             Jakub Jelinek  <jakub@redhat.com>
8471
8472         PR target/41175
8473         PR target/40677
8474         * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence
8475         problem.
8476         (SAVRES_NOINLINE_GPRS_SAVES_LR, SAVRES_NOINLINE_FPRS_SAVES_LR,
8477         SAVRES_NOINLINE_FPRS_DOESNT_RESTORE_LR): New strategy bits.
8478         (rs6000_savres_strategy): Always save FP registers inline if the
8479         target doesn't support hardware double-precision.  Set the above
8480         bits in return value when needed.
8481         (rs6000_savres_routine_sym): Fix computation for cache selector.
8482         Mark the generated symbol as a function.  Rename exitp argument to
8483         lr.  Move code for determining the name of the symbol...
8484         (rs6000_savres_routine_name): ...here.  New function.  Add cases for
8485         getting the names right on AIX and 64-bit Linux.
8486         (savres_routine_name): New variable.
8487         (rs6000_make_savres_rtx): Rename exitp argument to lr.  Don't assert
8488         lr isn't set when savep.  Use r12 resp. r1 instead of r11 depending
8489         on what the target routine uses as a base register.  If savep && lr
8490         describe saving of r0 into memory slot.
8491         (rs6000_emit_prologue): Correct use of call_used_regs.  Fix out of
8492         line calls for AIX ABI.
8493         (rs6000_output_function_prologue): Use rs6000_savres_routine_name to
8494         determine FP save/restore functions.
8495         (rs6000_emit_stack_reset): Handle savres if sp_offset != 0 and
8496         frame_reg_rtx != sp_reg_rtx.  Use gen_add3_insn instead of
8497         gen_addsi3.
8498         (rs6000_emit_epilogue): Adjust computation of restore_lr.
8499         Duplicate restoration of LR and execute the appropriate one
8500         depending on whether GPRs are being restored inline.  Set r11 from
8501         offsetted frame_reg_rtx instead of sp_reg_rtx; if frame_reg_rtx is
8502         r11, adjust sp_offset.  Use gen_add3_insn instead of gen_addsi3.
8503         Fix out of line calls for AIX ABI.
8504         * config/rs6000/rs6000.md (*return_and_restore_fpregs_aix_<mode>):
8505         New insn.
8506         * config/rs6000/spe.md (*save_gpregs_spe): Use explicit match for
8507         register 11.
8508         (*restore_gpregs_spe): Likewise.
8509         (*return_and_restore_gpregs_spe): Likewise.
8510         * config/rs6000/linux64.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
8511         Define to empty string unconditionally.
8512         * config/rs6000/sysv4.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
8513         Define to empty string unconditionally.
8514         (GP_SAVE_INLINE, FP_SAVE_INLINE): Handle TARGET_64BIT the same as
8515         !TARGET_64BIT.
8516
8517 2009-09-15  Jan Hubicka  <jh@suse.cz>
8518
8519         * doc/invoke.texi (inline-insns-auto): Drop from 60 to 50.
8520         * params.def (inline-insns-auto): Likewise.
8521
8522 2009-09-15  Martin Jambor  <mjambor@suse.cz>
8523
8524         * ipa-inline.c (estimate_function_body_sizes): Dump info about
8525         individual statements only at TDF_DETAILS dump level.  Format
8526         source for 80 characters per line.
8527
8528 2009-09-15  Christian Bruel  <christian.bruel@st.com>
8529
8530         * regrename.c (do_replace): Update REG_DEAD notes.
8531
8532 2009-09-15  Revital Eres  <eres@il.ibm.com>
8533
8534         * doc/tm.texi (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Document.
8535         * targhooks.c (default_builtin_support_vector_misalignment):
8536         New builtin function.
8537         * targhooks.h (default_builtin_support_vector_misalignment):
8538         Declare.
8539         * target.h (builtin_support_vector_misalignment):
8540         New field in struct gcc_target.
8541         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Call
8542         new builtin function.
8543         * target-def.h (TARGET_SUPPORT_VECTOR_MISALIGNMENT):
8544         Define.
8545         * config/rs6000/rs6000.c
8546         (rs6000_builtin_support_vector_misalignment): New function.
8547         (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Define.
8548
8549 2009-09-15  Jie Zhang  <jie.zhang@analog.com>
8550
8551         * config/bfin/bfin.c (length_for_loop): Use NONDEBUG_INSN_P
8552         instead of INSN_P.
8553         (bfin_optimize_loop): Likewise.
8554         (bfin_gen_bundles): Likewise.
8555         (workaround_speculation): Likewise.
8556         (find_load): Return NULL_RTX for debug_insn.
8557
8558 2009-09-15  Uros Bizjak  <ubizjak@gmail.com>
8559
8560         * config/alpha/alpha.md (smaxsf3): Disable for IEEE mode.
8561         (sminsf3): Ditto.
8562
8563 2009-09-14  DJ Delorie  <dj@redhat.com>
8564
8565         * config/mep/mep.h (JUMP_TABLES_IN_TEXT_SECTION): Define.
8566         * config/mep/mep.c (mep_emit_cbranch): Don't use BEQZ/BNEI in
8567         VLIW mode.
8568
8569 2009-09-14  Richard Henderson  <rth@redhat.com>
8570             Jakub Jelinek  <jakub@redhat.com>
8571
8572         * builtins.c (expand_builtin_synchronize): Use gimple_build_asm_vec.
8573         * cfgbuild.c (make_edges): Handle asm goto.
8574         * cfglayout.c (fixup_reorder_chain): Likewise.
8575         * cfgrtl.c (patch_jump_insn): Likewise.
8576         * gimple-pretty-print.c (dump_gimple_asm): Likewise.
8577         * gimple.c (gimple_build_asm_1): Add and use nlabels parameter.
8578         (gimple_build_asm_vec): Add and use labels parameter.
8579         (gimple_build_asm): Remove.
8580         (walk_gimple_asm): Walk labels too.
8581         * gimple.def (GIMPLE_ASM): Update docs.
8582         * gimple.h: Update decls.
8583         (struct gimple_statement_asm): Change nc to use unsigned char;
8584         add nl member.
8585         (gimple_asm_nlabels): New.
8586         (gimple_asm_label_op, gimple_asm_set_label_op): New.
8587         * gimplify.c (gimplify_asm_expr): Copy labels from ASM_EXPR
8588         into gimple_build_asm_vec.
8589         * jump.c (mark_jump_label_asm): New.
8590         (mark_jump_label): Use it.
8591         (redirect_jump_1): Handle asm goto.
8592         (invert_jump_1): Soft fail if X is null.
8593         * recog.c (extract_asm_operands): New.
8594         (asm_noperands): Use it; handle asm labels.
8595         (decode_asm_operands): Use extract_asm_operands.
8596         (asm_operand_ok): Properly handle empty string.
8597         * reg-stack.c (get_asm_operands_in_out): Rename from
8598         get_asm_operand_n_inputs; use extract_asm_operands; return both
8599         inputs and outputs by reference; update all callers.
8600         * rtl.def (ASM_OPERANDS): Add label vector as operand 6.
8601         * rtl.h (ASM_OPERANDS_LABEL_VEC): New.
8602         (ASM_OPERANDS_LABEL_LENGTH, ASM_OPERANDS_LABEL): New.
8603         (ASM_OPERANDS_SOURCE_LOCATION): Renumber.
8604         (extract_asm_operands): Declare.
8605         * stmt.c (expand_asm_operands): Add and use labels parameter.
8606         (check_unique_operand_names): Likewise.
8607         (resolve_asm_operand_names, resolve_operand_name_1): Likewise.
8608         (expand_asm_stmt): Handle asm labels.
8609         * tree-cfg.c (make_gimple_asm_edges): New.
8610         (make_edges): Use it.
8611         (cleanup_dead_labels): Handle asm labels.
8612         (is_ctrl_altering_stmt): Likewise.
8613         (gimple_redirect_edge_and_branch): Likewise.
8614         * tree.def (ASM_EXPR): Add 5th operand.
8615         * tree.h (ASM_LABELS): New.
8616         (resolve_asm_operand_names): Update decl.
8617
8618         * c-parser.c (c_parser_asm_statement): Parse asm goto.
8619         (c_parser_asm_goto_operands): New.
8620         * c-tree.h (build_asm_expr): Update decl.
8621         * c-typeck.c (build_asm_expr): Add and use labels parameter.
8622         * doc/extend.texi: Document asm goto.
8623
8624 2009-09-14  Richard Henderson  <rth@redhat.com>
8625
8626         * except.h: Update declarations.
8627         (struct pointer_map_t): Forward declare.
8628         (ERT_UNKNOWN, ERT_THROW, ERT_CATCH): Remove.
8629         (struct eh_landing_pad_d, eh_landing_pad): New.
8630         (struct eh_catch_d, eh_catch): New.
8631         (struct eh_region_d): Remove next_region_sharing_label, aka,
8632         label, tree_label, landing_pad, post_landing_pad, resume,
8633         may_contain_throw.  Rename region_number to index.  Remove
8634         u.eh_catch, u.eh_throw.  Rename u.eh_try.eh_catch to first_catch.
8635         Add u.must_not_throw, landing_pads, exc_ptr_reg, filter_reg.
8636         (VEC(eh_landing_pad,gc)): New.
8637         (struct eh_status): Remove last_region_number.  Add lp_array,
8638         throw_stmt_table, ttype_data, ehspec_data.
8639         (ehr_next, FOR_ALL_EH_REGION_AT): New.
8640         (FOR_ALL_EH_REGION_FN, FOR_ALL_EH_REGION): New.
8641         * except.c (lang_protect_cleanup_actions): Return tree.
8642         (struct ehl_map_entry): Remove.
8643         (init_eh_for_function): Push zero entries for region and lp_array.
8644         (gen_eh_region): Add to region_array immediately.
8645         (gen_eh_region_catch): Operate on eh_catch objects.
8646         (gen_eh_landing_pad): New.
8647         (get_eh_region_may_contain_throw, get_eh_region_tree_label): Remove.
8648         (get_eh_region_no_tree_label, set_eh_region_tree_label): Remove.
8649         (get_eh_region_from_number, get_eh_region_from_number_fn): New.
8650         (get_eh_landing_pad_from_number_fn): New.
8651         (get_eh_landing_pad_from_number): New.
8652         (get_eh_region_from_lp_number_fn): New.
8653         (get_eh_region_from_lp_number): New.
8654         (expand_resx_stmt, note_eh_region_may_contain_throw): Remove.
8655         (get_exception_pointer, get_exception_filter): Remove.
8656         (collect_eh_region_array, can_be_reached_by_runtime): Remove.
8657         (current_function_has_exception_handlers): Simplify.
8658         (bring_to_root, eh_region_replaceable_by_p): Remove.
8659         (replace_region, hash_type_list, hash_eh_region): Remove.
8660         (eh_regions_equal_p, merge_peers, remove_unreachable_regions): Remove.
8661         (label_to_region_map, num_eh_regions): Remove.
8662         (get_next_region_sharing_label, must_not_throw_labels): Remove.
8663         (find_exception_handler_labels): Remove.
8664         (duplicate_eh_regions_0, find_prev_try): Remove.
8665         (struct duplicate_eh_regions_data): New.
8666         (duplicate_eh_regions_1): Rewrite.
8667         (duplicate_eh_regions): Return a pointer map instead of an
8668         integer offset.
8669         (copy_eh_region_1, copy_eh_region, push_reachable_handler): Remove.
8670         (redirect_eh_edge_to_label): Remove.
8671         (eh_region_outermost): Rewrite using eh_region pointers
8672         instead of integers.
8673         (add_ttypes_entry): Update for ttype_data move to eh_status.
8674         (add_ehspec_entry): Rewrite with VEC instead of varray.
8675         (assign_filter_values): Likewise.  Export.
8676         (build_post_landing_pads, connect_post_landing_pads): Remove.
8677         (dw2_build_landing_pads): Rewrite to use lp_array.
8678         (struct sjlj_lp_info, sjlj_find_directly_reachable_regions): Remove.
8679         (sjlj_assign_call_site_values): Rewrite to use lp_array.
8680         (sjlj_emit_dispatch_table, sjlj_build_landing_pads): Likewise.
8681         (sjlj_mark_call_sites): Update for landing pad numbers.
8682         (finish_eh_generation): Rewrite.
8683         (gate_handle_eh): Do nothing for no eh tree.
8684         (pass_rtl_eh): Move up near finish_eh_generation.
8685         (remove_eh_landing_pad): New.
8686         (remove_eh_handler): Export.
8687         (remove_eh_region, remove_eh_handler_and_replace): Remove.
8688         (for_each_eh_label): Rewrite to use lp_array.
8689         (make_reg_eh_region_note): New.
8690         (make_reg_eh_region_note_nothrow_nononlocal): New.
8691         (insn_could_throw_p): New.
8692         (copy_reg_eh_region_note_forward): New.
8693         (copy_reg_eh_region_note_backward): New.
8694         (check_handled, add_reachable_handler): Remove.
8695         (reachable_next_level, foreach_reachable_handler): Remove.
8696         (arh_to_landing_pad, arh_to_label, reachable_handlers): Remove.
8697         (get_eh_region_and_lp_from_rtx): New.
8698         (get_eh_region_from_rtx): New.
8699         (can_throw_internal_1, can_throw_external_1): Remove.
8700         (can_throw_internal): Use get_eh_region_from_rtx.
8701         (can_throw_external): Use get_eh_region_and_lp_from_rtx.
8702         (insn_nothrow_p, can_nonlocal_goto): New.
8703         (expand_builtin_eh_common, expand_builtin_eh_pointer): New.
8704         (expand_builtin_eh_filter, expand_builtin_eh_copy_values): New.
8705         (add_action_record): Use VEC not varray.
8706         (collect_one_action_chain): Update for eh_region changes.
8707         (convert_to_eh_region_ranges): Make static.  Use VEC not varray.
8708         Use get_eh_region_and_lp_from_rtx.
8709         (gate_convert_to_eh_region_ranges): New.
8710         (pass_convert_to_eh_region_ranges): Use it.
8711         (push_uleb128, push_sleb128): Use VEC not varray.
8712         (output_one_function_exception_table): Likewise.
8713         (dump_eh_tree): Update for eh_region changes.
8714         (verify_eh_tree): Likewise.
8715         (verify_eh_region, default_init_unwind_resume_libfunc): Remove.
8716         * tree-eh.c: Include target.h.
8717         (add_stmt_to_eh_lp_fn): Rename from add_stmt_to_eh_region_fn.
8718         Don't disallow GIMPLE_RESX; adjust argument check.
8719         (add_stmt_to_eh_lp): Rename from add_stmt_to_eh_region.
8720         (record_stmt_eh_region): Update for landing pad numbers;
8721         generate a landing pad if necessary.
8722         (remove_stmt_from_eh_lp): Rename from remove_stmt_from_eh_region.
8723         (remove_stmt_from_eh_lp_fn): Similarly.
8724         (lookup_stmt_eh_lp_fn): Rename from lookup_stmt_eh_region_fn.
8725         Update for lp numbers; don't special case missing throw_stmt_table.
8726         (lookup_expr_eh_lp): Similarly.
8727         (lookup_stmt_eh_lp): Rename from lookup_stmt_eh_region.
8728         (eh_seq, eh_region_may_contain_throw): New.
8729         (struct leh_state): Add ehp_region.
8730         (struct leh_tf_state): Remove eh_label.
8731         (emit_post_landing_pad): New.
8732         (emit_resx, emit_eh_dispatch): New.
8733         (note_eh_region_may_contain_throw): New.
8734         (frob_into_branch_around): Take eh_region not eh label;
8735         emit eh code into eh_seq.
8736         (honor_protect_cleanup_actions): Early exit for no actions.  Don't
8737         handle EXC_PTR_EXPR, FILTER_EXPR.  Use gimple_build_eh_must_not_throw,
8738         lower_eh_must_not_throw.  Emit code to eh_seq.
8739         (lower_try_finally_nofallthru): Emit eh code to eh_seq.
8740         (lower_try_finally_onedest): Likewise.
8741         (lower_try_finally_copy): Likewise.
8742         (lower_try_finally_switch): Likewise.
8743         (lower_try_finally): Initialize ehp_region.
8744         (lower_catch): Update for eh_catch objects.
8745         (lower_eh_filter): Don't handle must_not_throw.
8746         (lower_eh_must_not_throw): New.
8747         (lower_cleanup): Don't set eh_label.
8748         (lower_eh_constructs_2): Resolve eh builtins.
8749         Handle GIMPLE_EH_MUST_NOT_THROW.
8750         (lower_eh_constructs): Initialize eh_region_may_contain_throw.
8751         Add eh_seq to the end of the function body.
8752         (make_eh_dispatch_edges): New.
8753         (make_eh_edge): Remove.
8754         (make_eh_edges): Simplify for landing pads.
8755         (redirect_eh_edge_1): New.
8756         (redirect_eh_edge): Use it.
8757         (redirect_eh_dispatch_edge): New.
8758         (stmt_could_throw_p): Use a switch.  Allow RESX.
8759         (stmt_can_throw_external): Use lookup_stmt_eh_lp.
8760         (stmt_can_throw_internal): Likewise.
8761         (maybe_clean_eh_stmt_fn, maybe_clean_eh_stmt): New.
8762         (maybe_clean_or_replace_eh_stmt): Update for landing pads.
8763         (maybe_duplicate_eh_stmt_fn, maybe_duplicate_eh_stmt): New.
8764         (gate_refactor_eh): New.
8765         (pass_refactor_eh): Use it.
8766         (lower_resx, execute_lower_resx, pass_lower_resx): New.
8767         (lower_eh_dispatch, execute_lower_eh_dispatch): New.
8768         (gate_lower_ehcontrol, pass_lower_eh_dispatch): New.
8769         (remove_unreachable_handlers): Rename from
8770         tree_remove_unreachable_handlers; rewrite for landing pads;
8771         call remove_eh_handler directly.
8772         (remove_unreachable_handlers_no_lp): New.
8773         (unsplit_eh, unsplit_all_eh): New.
8774         (tree_empty_eh_handler_p, all_phis_safe_to_merge): Remove.
8775         (cleanup_empty_eh_merge_phis, cleanup_empty_eh_move_lp): New.
8776         (cleanup_empty_eh_unsplit): New.
8777         (cleanup_empty_eh): Rewrite.
8778         (cleanup_all_empty_eh): New.
8779         (execute_cleanup_eh): Rename from cleanup_eh.  Remove unreachable
8780         handlers first.  Use unsplit_all_eh, cleanup_all_empty_eh.
8781         (gate_cleanup_eh): New.
8782         (pass_cleanup_eh): Use it.
8783         (verify_eh_edges): Move later in file.  Expect one EH edge.
8784         (verify_eh_dispatch_edge): New.
8785
8786         * Makefile.in (FUNCTION_H): Use vecprim.h, not varray.h.
8787         (gtype-desc.o): Add TARGET_H.
8788         (tree.o): Use EXCEPT_H, not except.h.
8789         (cfgbuild.o): Add EXPR_H.
8790         (GTFILES): Add vecprim.h.
8791         * builtins.c (expand_builtin): Handle BUILT_IN_EH_POINTER,
8792         BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES.
8793         * builtins.def (BUILT_IN_UNWIND_RESUME, BUILT_IN_EH_POINTER,
8794         BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES): New.
8795         * calls.c (emit_call_1): Use make_reg_eh_region_note.
8796         * cfgbuild.c (control_flow_insn_p): Use can_nonlocal_goto; tidy
8797         calls to can_throw_internal.
8798         (rtl_make_eh_edge): Use get_eh_landing_pad_from_rtx.
8799         (make_edges): Don't handle RESX; use can_nonlocal_goto.
8800         * cfgexpand.c (expand_gimple_stmt_1): Don't handle RESX.
8801         (expand_gimple_stmt): Use make_reg_eh_region_note.
8802         (expand_debug_expr): Don't handle EXC_PTR_EXPR and FILTER_EXPR.
8803         (gimple_expand_cfg): Don't call convert_from_eh_region_ranges,
8804         or find_exception_handler_labels.
8805         * cfgrtl.c (rtl_verify_flow_info_1): Don't handle RESX.  Assert
8806         there is exacly one EH edge.  Use can_nonlocal_goto and
8807         can_throw_internal.
8808         * cgraphunit.c (update_call_expr): Use maybe_clean_eh_stmt_fn.
8809         (cgraph_materialize_all_clones): Use maybe_clean_or_replace_eh_stmt.
8810         * combine.c (can_combine_p, try_combine): Use insn_nothrow_p.
8811         * cse.c (count_reg_usage, insn_live_p): Use insn_could_throw_p.
8812         * dce.c (deletable_insn_p_1): Don't test may_trap_p.
8813         (deletable_insn_p): Use insn_nothrow_p; reorder nonjump insn test.
8814         * dse.c (scan_insn): Use insn_could_throw_p.
8815         * emit-rtl.c (try_split): Use copy_reg_eh_region_note_backward.
8816         * expr.c (expand_expr_real): Use make_reg_eh_region_note.
8817         (expand_expr_real_1): Don't handle RESX, EXC_PTR, or FILTER_EXPR.
8818         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't handle
8819         EXC_PTR_EXPR or FILTER_EXPR.
8820         (tree_expr_nonzero_warnv_p): Likewise.
8821         * function.h: Include vecprim.h, not varray.h
8822         (struct rtl_eh): Remove filter, exc_ptr, built_landing_pad members;
8823         move ttype_data and ehspec_data members to struct eh_status; change
8824         action_record_data member to a VEC.
8825         * gcse.c (hash_scan_set): Use can_throw_internal.
8826         * gengtype.c (open_base_files): Add target.h to gtype-desc.c.
8827         * gimple-iterator.c (gsi_replace): Use maybe_clean_or_replace_eh_stmt.
8828         * gimple-low.c (lower_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.
8829         (block_may_fallthru): Don't handle RESX_EXPR.
8830         * gimple-pretty-print.c (dump_gimple_label): Dump EH_LANDING_PAD_NR.
8831         (dump_gimple_eh_must_not_throw, dump_gimple_eh_dispatch): New.
8832         (dump_gimple_stmt): Dump landing pad information with TDF_EH;
8833         handle GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH.
8834         * gimple.c (gss_for_code): Handle GIMPLE_EH_MUST_NOT_THROW,
8835         GIMPLE_EH_DISPATCH, GIMPLE_RESX.
8836         (gimple_size): Likewise.
8837         (gimple_build_eh_dispatch, gimple_build_eh_must_not_throw): New.
8838         (gimple_build_resx): Use gimple_build_with_ops.
8839         (DEFTREECODE): Don't handle EXC_PTR_EXPR, FILTER_EXPR.
8840         (is_gimple_val): Likewise.
8841         (is_gimple_stmt): Remove RESX_EXPR.
8842         * gimple.def (GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH): New.
8843         (GIMPLE_RESX): Reorder with other EH constructs.
8844         * gimple.h (struct gimple_statement_eh_mnt): New.
8845         (struct gimple_statement_eh_ctrl): Rename from gimple_statement_resx.
8846         (gimple_eh_filter_must_not_throw): Remove.
8847         (gimple_eh_filter_set_must_not_throw): Remove.
8848         (gimple_eh_must_not_throw_fndecl): New.
8849         (gimple_eh_dispatch_region, gimple_eh_dispatch_set_region): New.
8850         (is_gimple_resx): New.
8851         * gimplify.c (gimplify_expr): Don't handle EXC_PTR_EXPR, RESX_EXPR.
8852         Don't copy EH_FILTER_MUST_NOT_THROW.
8853         * gsstruct.def (GSS_EH_MNT, GSS_EHCONTROL): New.
8854         * ipa-inline.c (estimate_function_body_sizes): Don't try to
8855         handle must_not_throw_labels specially.
8856         * ipa-pure-const.c (check_call): Update debug statement for LP.
8857         * ipa-type-escape.c (check_operand): Don't handle EXC_PTR or FILTER.
8858         * ipa-utils.c (get_base_var): Likewise.
8859         * libfunc.h (LTI_unwind_resume, unwind_resume_libfunc): Remove.
8860         * lower-subreg.c (move_eh_region_note): Remove.
8861         (resolve_simple_move): Use copy_reg_eh_region_note_forward.
8862         * omp-low.c (new_omp_context): Update for eh_lp_nr.
8863         (create_task_copyfn): Likewise.
8864         (maybe_catch_exception): Use gimple_build_eh_filter.
8865         * optabs.c (emit_libcall_block): Update test for no-nonlocal-goto
8866         REG_EH_REGION.  Use make_reg_eh_region_note_nothrow_nononlocal.
8867         * passes.c (init_optimization_passes): Add pass_lower_eh_dispatch
8868         and pass_lower_resx.
8869         * print-tree.c (print_node): Dump EH_LANDING_PAD_NR.
8870         * recog.c (peephole2_optimize): Use copy_reg_eh_region_note_backward,
8871         can_throw_internal, can_nonlocal_goto.
8872         * reload1.c (fixup_eh_region_note): Use insn_could_throw_p,
8873         copy_reg_eh_region_note_forward.
8874         (emit_input_reload_insns): Use copy_reg_eh_region_note_forward.
8875         (emit_output_reload_insns): Likewise.
8876         (copy_eh_notes): Remove.
8877         * rtl.def (RESX): Remove.
8878         * rtl.h: Update declarations.
8879         * sese.c (graphite_copy_stmts_from_block): Use maybe_duplicate_eh_stmt.
8880         * tree-cfg.c (make_edges): Handle GIMPLE_EH_DISPATCH.
8881         (update_eh_label): Remove.
8882         (cleanup_dead_labels_eh): New.
8883         (cleanup_deal_labels): Use it instead of update_eh_label.
8884         (gimple_merge_blocks): Update landing pad data structure when
8885         removing a landing pad label.
8886         (remove_useless_stmts_tc): Remove gimple_eh_filter_must_not_throw
8887         test; handle GIMPLE_EH_MUST_NOT_THROW.
8888         (is_ctrl_altering_stmt): Handle GIMPLE_EH_DISPATCH.
8889         (verify_gimple_assign_single): Don't handle EXC_PTR or FILTER_EXPR.
8890         (verify_types_in_gimple_stmt): Handle GIMPLE_EH_DISPATCH.
8891         (verify_stmt): Likewise.  Verify landing pads.
8892         (gimple_redirect_edge_and_branch): Handle GIMPLE_EH_DISPATCH.
8893         (gimple_duplicate_bb): Use maybe_duplicate_eh_stmt.
8894         (struct move_stmt_d): Add eh_map.
8895         (move_stmt_eh_region_nr, move_stmt_eh_region_tree_nr): New.
8896         (move_stmt_r): Remap eh region numbers in builtin calls,
8897         resx and eh_dispatch.
8898         (move_block_to_fn): Remove eh_offset parameter.  Use
8899         maybe_duplicate_eh_stmt_fn.
8900         (find_outermost_region_in_block): Operate on eh_region pointers
8901         instead of region numbers.
8902         (move_sese_region_to_fn): Expect eh_map instead of eh_offset from
8903         duplicate_eh_regions.
8904         * tree-cfgcleanup.c (tree_forwarder_block_p): Move entry block edge
8905         test earlier.  Disallow EH landing pads.
8906         * tree-cfa.c (create_tree_common_ann): Don't set ann->rn.
8907         * tree-flow.h: Update declarations.
8908         (struct tree_ann_common_d): Replace rn with lp_nr.
8909         * tree-inline.c (copy_tree_body_r): Don't handle RESX_EXPR.
8910         (remap_eh_region_nr, remap_eh_region_tree_nr): New.
8911         (remap_gimple_stmt): Remap eh region numbers in builtin calls,
8912         resx and eh_dispatch.
8913         (copy_bb): Use maybe_duplicate_eh_stmt_fn.
8914         (copy_edges_for_bb): Use make_eh_dispatch_edges.
8915         (copy_cfg_body): Expect eh_map instead of eh_region_offset
8916         from duplicate_eh_regions.
8917         (estimate_num_insns): Don't handle EXC_PTR_EXPR or FILTER_EXPR;
8918         update RESX; handle EH_DISPATCH.
8919         (expand_call_inline): Set eh_lp_nr, not eh_region.
8920         (maybe_inline_call_in_expr): Likewise.
8921         * tree-inline.h (struct copy_body_data): Replace eh_region with
8922         eh_lp_nr, eh_region_offset with eh_map.
8923         * tree-optimize.c (execute_fixup_cfg): Use maybe_clean_eh_stmt.
8924         * tree-pass.h (pass_lower_eh_dispatch, pass_lower_resx): New.
8925         * tree-pretty-print.c (dump_generic_node): Don't handle
8926         EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR.
8927         * tree-sra.c (scan_function): Use maybe_clean_eh_stmt.
8928         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Don't handle
8929         EXC_PTR_EXPR, FILTER_EXPR.
8930         * tree-ssa-operands.c (get_expr_operands): Likewise.
8931         * tree-ssa-propagate.c (valid_gimple_rhs_p): Likewise.
8932         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
8933         (ao_ref_init_from_vn_reference): Likewise.
8934         * tree-ssa-sink.c (statement_sink_location): Likewise.
8935         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
8936         (mark_virtual_phi_result_for_renaming): Export.  Tidy.
8937         * tree-ssa-pre.c (get_or_alloc_expr_for): Don't handle
8938         EXC_PTR_EXPR, FILTER_EXPR.
8939         (is_exception_related): Remove.
8940         (compute_avail): Don't call it.
8941         * tree-ssa-structalias.c: Remove VEC definitions for int and unsigned.
8942         * tree.c (find_decls_types_in_eh_region): Update for eh_region changes.
8943         (find_decls_types_in_node): Use FOR_ALL_EH_REGION_FN.
8944         (build_common_builtin_nodes): Add enable_cxa_end_cleanup parameter.
8945         Build EH builtins.
8946         (build_resx): Remove.
8947         * tree.def (EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR): Remove.
8948         * tree.h: Update declarations.
8949         (EH_FILTER_MUST_NOT_THROW): Remove.
8950         (struct tree_label_decl): Add eh_landing_pad_nr.
8951         (EH_LANDING_PAD_NR): New.
8952         * value-prof.c (gimple_ic): Tidy variable names.  Update for
8953         landing pad numbers.
8954         (gimple_stringop_fixed_value): Tidy variable names.  Assert
8955         that neither call stmt can throw.
8956         * vecprim.h (uchar): New.
8957         (VEC(uchar,heap), VEC(uchar,gc)): New.
8958
8959         * c-common.c (c_define_builtins): Update call to
8960         build_common_builtin_nodes.
8961         * c-parser.c (c_parse_file): Don't call
8962         default_init_unwind_resume_libfunc.
8963
8964 2009-09-14  Richard Sandiford  <rdsandiford@googlemail.com>
8965
8966         * config/mips/mips-protos.h (mips_cfun_has_cprestore_slot_p): Declare.
8967         (mips_cprestore_address_p): Likewise.
8968         (mips_save_gp_to_cprestore_slot): Likewise.
8969         (mips_restore_gp): Rename to...
8970         (mips_restore_gp_from_cprestore_slot): ...this.
8971         (mips_must_initialize_gp_p): Declare.
8972         (mips_emit_save_slot_move): Likewise.
8973         (mips_output_load_label): Return nothing.
8974         (mips_eh_uses): Declare.
8975         * config/mips/mips.h (TARGET_SPLIT_CALLS): Require epilogue_completed.
8976         (TARGET_CPRESTORE_DIRECTIVE): New macro.
8977         (TARGET_ABSOLUTE_JUMPS): Likewise.
8978         (EH_USES): Likewise.
8979         (FIRST_PSEUDO_REGISTER): Update comment.
8980         (MIPS_ABSOLUTE_JUMP): New macro, extracted from...
8981         (MIPS_CALL): ...here.
8982         (REGISTER_NAMES): Add $cprestore.
8983         * config/mips/mips.c (machine_function): Remove has_gp_insn_p.
8984         Add load_label_length, has_inflexible_gp_insn_p,
8985         has_flexible_gp_insn_p, must_initialize_gp_p and
8986         must_restore_gp_when_clobbered_p.
8987         (mips_expand_call): Don't generate split instructions here.
8988         (mips_split_call): Update the call to mips_restore_gp after
8989         the above name change.
8990         (mips16_cfun_returns_in_fpr_p): Move earlier in file.
8991         (mips_find_gp_ref): New function.
8992         (mips_insn_has_inflexible_gp_ref_p): Likewise.
8993         (mips_cfun_has_inflexible_gp_ref_p): Likewise.
8994         (mips_insn_has_flexible_gp_ref_p): Likewise.
8995         (mips_cfun_has_flexible_gp_ref_p): Likewise.
8996         (mips_function_has_gp_insn): Delete.
8997         (mips_global_pointer): Drop the df_regs_ever_live_p check.
8998         Use the new functions above.  Only return INVALID_REGNUM
8999         for TARGET_ABSOLUTE_JUMPS.
9000         (mips_must_initialize_gp_p): New function.
9001         (mips_get_cprestore_base_and_offset): New function, extracted from...
9002         (mips_cprestore_slot): ...here.  Take a bool parameter.
9003         (mips_cfun_has_cprestore_slot_p): New function.
9004         (mips_cprestore_address_p): Likewise.
9005         (mips_save_gp_to_cprestore_slot): Likewise.
9006         (mips_restore_gp): Rename to...
9007         (mips_restore_gp_from_cprestore_slot): ...this.  Assert
9008         epilogue_completed.  Update the call to mips_cprestore_slot.
9009         Test cfun->machine->must_restore_gp_when_clobbered_p.
9010         (mips_direct_save_slot_move_p): New function.
9011         (mips_emit_save_slot_move): Likewise.
9012         (mips_output_cplocal): Test mips_must_initialize_gp_p () instead
9013         of cfun->machine->global_pointer.
9014         (mips_output_function_prologue): Check mips_must_initialize_gp_p ().
9015         (mips_save_reg): Use mips_emit_save_slot_move.
9016         (mips_expand_prologue): Set must_initialize_gp_p.
9017         Use mips_cfun_has_cprestore_slot_p.  Use gen_potential_cprestore
9018         for all cprestore saves.  Emit a use_cprestore instruction after
9019         setting up the cprestore slot.
9020         (mips_restore_reg): Use mips_emit_save_slot_move.
9021         (mips_process_load_label): New function.
9022         (mips_load_label_length): Likewise.
9023         (mips_output_load_label): Don't return asm: output it here instead.
9024         Use mips_process_load_label.
9025         (mips_adjust_insn_length): Adjust the length of branch instructions
9026         that have length MAX_PIC_BRANCH_LENGTH.
9027         (mips_output_conditional_branch): Update the call to
9028         mips_output_load_label.  Assume the branch target is OPERANDS[0]
9029         rather than OPERANDS[1].  Use MIPS_ABSOLUTE_JUMP for absolute jumps.
9030         (mips_output_order_conditional_branch): Swap the meaning of
9031         OPERANDS[0] and OPERANDS[1].
9032         (mips_variable_issue): Don't count ghost instructions.
9033         (mips_expand_ghost_gp_insns): New function.
9034         (mips_reorg): Rerun mips_reorg_process_insns if it returns true.
9035         (mips_output_mi_thunk): Set must_initialize_gp_p.
9036         (mips_eh_uses): New function.
9037         * config/mips/predicates.md (cprestore_save_slot_operand)
9038         (cprestore_load_slot_operand): New predicates.
9039         * config/mips/mips.md (UNSPEC_POTENTIAL_CPRESTORE): New unspec.
9040         (UNSPEC_MOVE_GP): Likewise.
9041         (UNSPEC_CPRESTORE, UNSPEC_RESTORE_GP, UNSPEC_EH_RETURN)
9042         (UNSPEC_CONSTTABLE_INT, UNSPEC_CONSTTABLE_FLOAT): Bump to make room.
9043         (CPRESTORE_SLOT_REGNUM): New register.
9044         (MAX_PIC_BRANCH_LENGTH): New constant.
9045         (jal_macro): Use MIPS_ABSOLUTE_JUMPS.
9046         (length): Use MAX_PIC_BRANCH_LENGTH as a placeholder for PIC long
9047         branches.  Fix commentary.
9048         (loadgp_newabi_<mode>): Change from unspec_volatile to unspec.
9049         Only split if mips_must_initialize_gp_p; expand to nothing otherwise.
9050         Change type to "ghost".
9051         (loadgp_absolute_<mode>): Likewise.
9052         (loadgp_rtp_<mode>): Likewise.
9053         (copygp_mips16): Likewise.
9054         (loadgp_blockage): Remove redundant mode attribute.
9055         (potential_cprestore): New instruction.
9056         (cprestore): Turn into an unspec set.
9057         (use_cprestore): New instruction.
9058         (*branch_fp): Swap operands 0 and 1.  Remove redundant mode attribute.
9059         (*branch_fp_inverted): Likewise.
9060         (*branch_order<mode>): Likewise.
9061         (*branch_order<mode>_inverted): Likewise.
9062         (*branch_equality<mode>): Likewise.
9063         (*branch_equality<mode>_inverted): Likewise.
9064         (*branch_bit<bbv><mode>): Likewise.
9065         (*branch_bit<bbv><mode>_inverted): Likewise.
9066         (*branch_equality<mode>_mips16): Remove redundant mode.
9067         (jump): Turn into a define_expand.
9068         (*jump_absolute): New instruction.
9069         (*jump_pic): Likewise.
9070         (*jump_mips16): Rename previously-unnamed pattern.  Remove
9071         redundant mode attribute.
9072         (restore_gp): Split on epilogue_completed rather than
9073         reload_completed.  Change type to "ghost".
9074         (move_gp<mode>): New instruction.
9075         * config/mips/mips-dsp.md (mips_bposge): Swap operands 0 and 1.
9076         Remove redundant mode attribute.
9077         * config/mips/mips-ps-3d.md (bc1any4t): Likewise.
9078         (bc1any4f, bc1any2t, bc1any2f): Likewise.
9079         (*branch_upper_lower, *branch_upper_lower_inverted): Likewise.
9080
9081 2009-09-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
9082
9083         PR target/41210
9084         * config/rs6000/rs6000.c (rs6000_function_value): V2DF and V2DI
9085         are returned in the same register (vs34 or v2) that Altivec vector
9086         types are returned in.
9087         (rs6000_libcall_value): Ditto.
9088
9089         PR target/41331
9090         * config/rs6000/rs6000.c (rs6000_emit_move): Use gen_add3_insn
9091         instead of explicit addsi3/adddi3 calls.
9092         (rs6000_split_multireg_move): Ditto.
9093         (rs6000_emit_allocate_stack): Ditto.
9094         (rs6000_emit_prologue): Ditto.
9095         (rs6000_output_mi_thunk): Ditto.
9096
9097         * config/rs6000/rs6000.md (bswapdi*): Don't assume the pointer
9098         size is 64 bits if we can use 64-bit registers.
9099
9100 2009-09-14  Bernd Schmidt  <bernd.schmidt@analog.com>
9101
9102         * config/bfin/bfin.c (bfin_longcall_p): Don't use short calls for weak
9103         symbols.
9104
9105         From Jie Zhang <jie.zhang@analog.com>:
9106         * config/bfin/bfin.c (bfin_expand_prologue): Ask do_link to
9107         save FP and RETS with saveall attribute.
9108         (bfin_expand_epilogue): Ask do_unlink to restore FP and RETS
9109         with saveall attribute.
9110
9111         * config/bfin/bfin.c (bfin_expand_builtin,
9112         case BFIN_BUILTIN_MULT_1X32X32): Force constants to registers for the
9113         operands.
9114
9115         From Jie Zhang <jie.zhang@analog.com>:
9116         * config/bfin/bfin.c (bfin_expand_builtin): Initialize icodes
9117         before use in two places.
9118         * config/bfin/bfin.md (AREG): Define mode iterator.
9119         (reload_in, reload_out): Use mode iterator AREG.
9120
9121 2009-09-14  Richard Guenther  <rguenther@suse.de>
9122
9123         PR middle-end/41350
9124         * dwarf2out.c (dwarf2out_begin_prologue): Adjust non-CFI asm
9125         EH personality path.
9126
9127 2009-09-13  Richard Guenther  <rguenther@suse.de>
9128             Rafael Avila de Espindola  <espindola@google.com>
9129
9130         * langhooks-def.h (LANG_HOOKS_EH_RUNTIME_TYPE): Define.
9131         (LANG_HOOKS_EH_PERSONALITY): Likewise.
9132         (LANG_HOOKS_INITIALIZER): Adjust.
9133         (lhd_pass_through_t): Declare.
9134         * langhooks.h (struct lang_hooks): Add eh_runtime_type and
9135         eh_personality.
9136         * langhooks.c (lhd_pass_through_t): New function.
9137         * dwarf2out.c (output_call_frame_info, dwarf2out_do_cfi_startproc,
9138         dwarf2out_begin_prologue): Use personality from current_function_decl.
9139         * expr.h (get_personality_function): Declare.
9140         * expr.c (get_personality_function): New function.
9141         (build_personality_function): Likewise.
9142         * libfuncs.h (libfunc_index): Remove LTI_eh_personality.
9143         (eh_personality_libfunc): Remove.
9144         * optabs.c (build_libfunc_function): New function split out from ...
9145         (init_one_libfunc): ... here.
9146         * tree.h (DECL_FUNCTION_PERSONALITY): New.
9147         (tree_function_decl): Add personality.
9148         (lhd_gcc_personality): Declare.
9149         (build_personality_function): Likewise.
9150         * tree.c (gcc_eh_personality_decl): New.
9151         (lhd_gcc_personality): New function.
9152         * except.h (lang_eh_runtime_type): Remove.
9153         (enum eh_personality_kind): New.
9154         (build_personality_function): Declare.
9155         (function_needs_eh_personality): Declare.
9156         * except.c (lang_eh_runtime_type): Remove.
9157         (function_needs_eh_personality): New function.
9158         (add_type_for_runtime): Call lang_hooks.type_for_runtime instead.
9159         (sjlj_emit_function_enter, output_function_exception_table):
9160         Use personality from current_function_decl.
9161         * tree-eh.c (lower_eh_constructs): Set DECL_FUNCTION_PERSONALITY.
9162         * tree-inline.c (tree_can_inline_p): Do not inline across different
9163         EH personalities.
9164         (expand_call_inline): Likewise.  Adjust the callers EH personality.
9165         (tree_function_versioning): Copy DECL_FUNCTION_PERSONALITY.
9166         * cgraph.c (cgraph_add_new_function): Set DECL_FUNCTION_PERSONALITY.
9167         * Makefile.in (cgraph.o): Add $(EXCEPT_H) dependency.
9168         (c-parser.o): Likewise
9169         * c-tree.h (c_eh_initialized_p): Remove.
9170         (c_maybe_initialize_eh): Likewise.
9171         * c-decl.c (finish_decl): Don't call c_maybe_initialize_eh.
9172         (finish_decl): Don't call c_maybe_initialize_eh.
9173         (c_eh_initialized_p): Remove.
9174         (c_maybe_initialize_eh): Likewise.
9175         * c-parser.c (c_parser_omp_construct): Likewise.
9176         (c_parse_file): Initialize exception handling.
9177
9178 2009-09-13  Kai Tietz  <kai.tietz@onevision.com>
9179
9180         * config.gcc (tm_file): Remove i386/biarch32.h
9181         for i?86-w64-mingw* case.
9182         (i?86-*-mingw* andx86_64-*-mingw*): Add multilib
9183         support.
9184         * config.host: Set for x64 mingw the option
9185         use_long_long_for_widest_fast_int to yes.
9186
9187 2009-09-13  Eric Botcazou  <ebotcazou@adacore.com>
9188
9189         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
9190         * dbxout.c (dbxout_function_end): Do not test DECL_IGNORED_P.
9191         (dbxout_begin_function): Likewise.
9192         * final.c (dwarf2_debug_info_emitted_p): New predicate.
9193         (final_start_function): Do not emit debug info if DECL_IGNORED_P is
9194         set on the function.
9195         (final_end_function): Likewise.
9196         (final_scan_insn): Likewise.
9197         (rest_of_handle_final): Likewise.
9198         * varasm.c (assemble_start_function): Likewise.
9199         * config/rs6000/xcoff.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
9200
9201 2009-09-12  Jason Merrill  <jason@redhat.com>
9202
9203         * dbgcnt.c (dbg_cnt_process_single_pair): constify.
9204         * opts.c (common_handle_option): constify.
9205
9206 2009-09-12  Gerald Pfeifer  <gerald@pfeifer.com>
9207
9208         * doc/install.texi (avr): Remove obsolete reference site.
9209
9210 2009-09-12  Gerald Pfeifer  <gerald@pfeifer.com>
9211
9212         * doc/install.texi (Binaries): Adjust AIX link.
9213
9214 2009-09-12  Akim Demaille  <demaille@gostai.com>
9215
9216         * doc/invoke.texi (-fstrict-aliasing): Correct two examples.
9217         Use an imperative sentence.
9218
9219 2009-09-11  Richard Henderson  <rth@redhat.com>
9220
9221         * gsstruct.def (DEFGSSTRUCT): Remove printable-name argument; add
9222         structure-name and has-tree-operands arguments; update all entries.
9223         * gimple.def (DEFGSCODE): Replace 3rd argument with GSS_symbol;
9224         update all entries.
9225         * gimple.c (gimple_ops_offset_): Use HAS_TREE_OP argument.
9226         (gsstruct_code_size): New.
9227         (gss_for_code_): New.
9228         (gss_for_code): Remove.
9229         (gimple_size): Rewrite using gsstruct_code_size.
9230         (gimple_statement_structure): Move to gimple.h.
9231         * gimple.h (gimple_ops_offset_, gss_for_code_): Declare.
9232         (gss_for_code, gimple_statement_structure): New.
9233         (gimple_ops): Use new arrays; tidy.
9234
9235 2009-09-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
9236
9237         * config/pa/predicates.md (symbolic_operand): Require a CONST symbolic
9238         operand to be a PLUS expression.
9239         * config/pa/pa.c (pa_secondary_reload): Likewise.
9240
9241 2009-09-11  Jakub Jelinek  <jakub@redhat.com>
9242
9243         * combine.c (propagate_for_debug_subst): Call wrap_constant on top.
9244
9245         * print-rtl.c (print_rtx): Use JUMP_LABEL (in_rtx) instead of
9246         XEXP (in_rtx, 8).
9247
9248 2009-09-11  Bernd Schmidt  <bernd.schmidt@analog.com>
9249
9250         From Jie Zhang <jie.zhang@analog.com>:
9251         * doc/extend.texi (node Function Attributes): Document l2
9252         function attribute.
9253         (node Blackfin Variable Attributes): Document l2 variable attributes.
9254
9255 2009-09-11  Loren J. Rittle  <ljrittle@acm.org>
9256
9257         * config.gcc (*-*-freebsd*): Enable default_use_cxa_atexit
9258         to match the system compiler's configuration at inflection point.
9259         Add comment to remark a remaining difference with system compiler.
9260
9261         * configure.ac (*-*-freebsd*): Enable check for __stack_chk_fail.
9262         * configure: Regenerate.
9263
9264 2009-09-11  Bernd Schmidt  <bernd.schmidt@analog.com>
9265
9266         From Jie Zhang <jie.zhang@analog.com>:
9267         * config/bfin/bfin.c (bfin_expand_call): Handle L2 functions.
9268         (bfin_handle_l2_attribute): New.
9269         (bfin_attribute_table): Add l2 attribute.
9270
9271 2009-09-11  Michael Matz  <matz@suse.de>
9272
9273         PR middle-end/41275
9274         * tree-inline.c (remap_decls): Don't put DECL_EXTERNAL decls
9275         on the local_decls list.
9276
9277 2009-09-11  Alexandre Oliva  <aoliva@redhat.com>
9278
9279         PR debug/41276
9280         PR debug/41307
9281         * cselib.c (cselib_expand_value_rtx_cb): Document callback
9282         interface.
9283         (cselib_expand_value_rtx_1): Use callback for SUBREGs.  Adjust
9284         for VALUEs, to implement the documented interface.
9285         * var-tracking.c (vt_expand_loc_callback): Handle SUBREGs.
9286         Adjust for VALUEs and anything else, to implement the
9287         documented interface.
9288
9289 2009-09-10  Nathan Froyd  <froydnj@codesourcery.com>
9290
9291         * config/rs6000/rs6000.h (DATA_ALIGNMENT): Check that we are dealing
9292         with actual SPE/paired vector modes before using 64-bit alignment.
9293         Check that TYPE is a REAL_TYPE for TARGET_E500_DOUBLE.
9294
9295 2009-09-10  DJ Delorie  <dj@redhat.com>
9296
9297         * config/mep/mep.md (eh_epilogue): Defer until after epilogue is
9298         emitted.
9299
9300         * config/mep/mep.h (LEGITIMATE_CONSTANT_P): New.
9301         * config/mep/mep.c (mep_legitimate_constant_p): New.
9302         * config/mep/mep-protos.h: Prototype it.
9303
9304 2009-09-10  Richard Henderson  <rth@redhat.com>
9305
9306         * print-rtl.c (print_rtx): Fix JUMP_LABEL index.
9307
9308 2009-09-10  Jason Merrill  <jason@redhat.com>
9309
9310         * tree.c (chain_index): New fn.
9311         * tree.h: Declare it.
9312
9313 2009-09-10  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
9314
9315         * config/sol2-c.c (cmn_err_length_specs): Initialize
9316         scalar_identity_flag.
9317
9318 2009-09-10  Richard Henderson  <rth@redhat.com>
9319
9320         * tree.h (struct tree_decl_common): Move align member earlier;
9321         move label_decl_uid member ...
9322         (struct tree_label_decl): ... here.
9323         (LABEL_DECL_UID): Update to match.
9324
9325         * tree-cfg.c (dump_function_to_file): Dump eh tree with TDF_EH,
9326         not TDF_DETAILS.
9327
9328         * tree-cfg.c (gimple_redirect_edge_and_branch): Do
9329         gimple_try_redirect_by_replacing_jump test after no-op and EH tests.
9330
9331         * tree-cfg.c (split_edge_bb_loc): Don't disallow placement at
9332         dest_prev if the edge is complex.
9333
9334         * tree-cfg.c (is_ctrl_stmt): Use a switch.
9335
9336         * tree-cfg.c (gimple_can_merge_blocks_p): Move label and
9337         loop latch tests earlier.
9338
9339         * gimple-iterator.c (gimple_find_edge_insert_loc): Insert
9340         before GIMPLE_RETURN, not after its predecessor; insert
9341         before GIMPLE_RESX.
9342
9343         * gimple-iterator.c (gimple_find_edge_insert_loc): Use
9344         gimple_seq_empty_p to test for no PHI nodes.
9345         * tree-cfg.c (split_critical_edges): Likewise.
9346
9347         * c-common.h (c_dialect_cxx, c_dialect_objc): Boolify.
9348
9349 2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
9350
9351         * final.c (shorten_branches) : Ignore DEBUG_INSN_P instructions
9352         introduced by the VTA branch merge.
9353
9354 2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
9355
9356         * ira-conflicts.c: Use fputs or putc instead of fprintf
9357         where appropriate.
9358         * cfg.c: Ditto.
9359         * toplev.c: Ditto.
9360         * tree-switch-conversion.c: Ditto.
9361
9362 2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
9363
9364         * config/picochip/picochip.c : Ignore DEBUG_INSN_P instructions
9365         introduced by the VTA branch merge.
9366
9367 2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
9368
9369         Revert:
9370         2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
9371
9372         PR rtl-optimization/39779
9373         * expr.c (convert_modes): Return when mode == oldmode after
9374         CONST_INTs are processed.
9375
9376 2009-09-10  Nick Clifton  <nickc@redhat.com>
9377
9378         * config/mep/mep.c (mep_encode_section_info): Copy weakness
9379         attribute and referring decl when creating renamed symbol.
9380
9381 2009-09-10  Richard Guenther  <rguenther@suse.de>
9382
9383         PR middle-end/41257
9384         * cgraphunit.c (cgraph_emit_thunks): Emit thunks only for
9385         reachable nodes.
9386         (cgraph_finalize_compilation_unit): Compute reachability
9387         before emitting thunks.  Properly process aliases before
9388         possibly removing unreachable nodes.
9389
9390 2009-09-10  Richard Guenther  <rguenther@suse.de>
9391
9392         PR middle-end/41254
9393         * tree.c (struct free_lang_data_d): Add worklist member.
9394         (find_decls_types_r): Push onto the worklist instead of recursing.
9395         Handle TREE_BINFOs properly.
9396         (find_decls_types): New function wrapped around find_decls_types_r
9397         to process the worklist.
9398         (find_decls_types_in_eh_region): Use it.
9399         (find_decls_types_in_node): Likewise.
9400         (find_decls_types_in_var): Likewise.
9401         (free_lang_data_in_cgraph): Likewise.  Free the worklist.
9402         * tree.h (RECORD_OR_UNION_TYPE_P): New.
9403         (AGGREGATE_TYPE_P): Adjust.
9404
9405 2009-09-09  Jason Merrill  <jason@redhat.com>
9406
9407         * configure.ac: Check glibc version even if we have an in-tree
9408         assembler.
9409
9410 2009-09-09  Anthony Green  <green@moxielogic.com>
9411
9412         * config/moxie/moxie.md (*movsi, *movhi, *movqi): Use xor to load
9413         the constant 0 when appropriate.
9414         * config/moxie/constraints.md: Add constraint O.
9415
9416         * config/moxie/moxie.c (moxie_setup_incoming_varargs): Adjust
9417         to pass up to 6 32-bit argument values in registers.
9418         (moxie_function_arg): Ditto.
9419         (moxie_arg_partial_bytes): Ditto.
9420         * config/moxie/moxie.h (FUNCTION_ARG_ADVANCE): Ditto.
9421         (REG_PARM_STACK_SPACE): Ditto.
9422         (FUNCTION_ARG_REGNO_P): Ditto.
9423
9424         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
9425         instruction to allocate stack space.
9426
9427 2009-09-09  Segher Boessenkool  <segher@kernel.crashing.org>
9428
9429         * config/rs6000/rs6000.md (bswapdi2_64bit): Fix
9430         unnecessarily stringent constraints.  Fix address
9431         calculation in the splitters.
9432
9433 2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
9434
9435         PR rtl-optimization/39779
9436         * expr.c (convert_modes): Return when mode == oldmode after
9437         CONST_INTs are processed.
9438
9439 2009-09-09  Kai Tietz  <kai.tietz@onevision.com>
9440
9441         PR/41315
9442         * config/i386.c (ix86_can_use_return_insn_p): Check for padding0, too.
9443         (ix86_expand_prologue): Take frame.padding0 into logic of
9444         to_allocate checks.
9445         (ix86_expand_epilogue): Likewise.
9446
9447 2009-09-09  Jakub Jelinek  <jakub@redhat.com>
9448
9449         * config/t-slibgcc-elf-ver (SHLIB_MAKE_SOLINK, SHLIB_INSTALL_SOLINK):
9450         New variables.
9451         (SHLIB_LINK, SHLIB_INSTALL): Use them.
9452         * config/t-slibgcc-libgcc: New file.
9453         * config.gcc (powerpc*-*-linux*, powerpc*-*-gnu*): Use it.
9454
9455 2009-09-09  Martin Jambor  <mjambor@suse.cz>
9456
9457         PR tree-optimization/41089
9458         * tree-sra.c (find_var_candidates): Do not consider va_lists in
9459         early SRA.
9460
9461 2009-09-09  Richard Henderson  <rth@redhat.com>
9462
9463         * gimple.h (CASE_GIMPLE_OMP): New.
9464         (is_gimple_omp): Use it.
9465         * tree-cfg.c (is_ctrl_altering_stmt): Likewise.
9466         (verify_gimple_debug): Likewise.
9467
9468 2009-09-09  Richard Guenther  <rguenther@suse.de>
9469
9470         PR tree-optimization/41101
9471         * tree-ssa-pre.c (maximal_set): Remove.
9472         (compute_antic_aux): Treat the maximal set as implicitly all ones.
9473         Defer all blocks we didn't visit at least one successor.
9474         (add_to_exp_gen): Do not add to the maximal set.
9475         (make_values_for_phi): Likewise.
9476         (compute_avail): Likewise.
9477         (init_pre): Do not allocate the maximal set.
9478         (execute_pre): Do not dump it.
9479
9480 2009-09-09  Martin Jambor  <mjambor@suse.cz>
9481
9482         * tree-cfg.c (verify_gimple_phi): Check that gimple_phi_result is
9483         an SSA_NAME rather than a is_gimple_variable.
9484
9485 2009-09-09  Richard Guenther  <rguenther@suse.de>
9486
9487         PR middle-end/41317
9488         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Remove
9489         code dealing with plain pointer bases.
9490         (maybe_fold_offset_to_reference): Likewise.
9491         (maybe_fold_stmt_addition): Adjust.
9492
9493 2009-09-09  Richard Guenther  <rguenther@suse.de>
9494
9495         * tree.c (free_lang_data_in_type): Do not free the type variant
9496         chains.
9497         (free_lang_data): Merge char_type_node with its properly signed
9498         variant.
9499         (pass_ipa_free): Collect after freeing language specific data.
9500
9501 2009-09-09  Michael Matz  <matz@suse.de>
9502
9503         PR middle-end/41268
9504         * cfgexpand.c (expand_gimple_stmt_1): Use an int for storing
9505         SUBREG_PROMOTED_UNSIGNED_P, instead of a bool.
9506         * rtl.h (struct rtx, SUBREG_PROMOTED_UNSIGNED_P): Update comments
9507         to reflect reality.
9508
9509 2009-09-08  DJ Delorie  <dj@redhat.com>
9510
9511         * config/mep/mep.c (conversions[]): Add "ml" pattern.
9512
9513 2009-09-04  Jason Merrill  <jason@redhat.com>
9514
9515         * tree.c (tree_find_value): Remove.
9516         * tree.h: Remove prototype.
9517         * varasm.c (assemble_external): Use value_member instead.
9518
9519 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
9520
9521         * toplev.c (process_options): Choose default debugging type when
9522         gtoggle enables debug info and type is unset.
9523
9524 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
9525
9526         PR debug/41276
9527         PR debug/41307
9528         * cselib.c (cselib_expand_value_rtx_1): Don't return copy of
9529         invalid subreg.
9530
9531 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
9532
9533         * configure: Rebuilt with modified libtool.m4.
9534
9535 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
9536
9537         PR debug/41229
9538         PR debug/41291
9539         PR debug/41300
9540         * tree-ssa.c (execute_update_addresses_taken): Update debug insns.
9541
9542 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
9543
9544         * tree-ssa-loop-ivopts.c (get_phi_with_result): Remove.
9545         (remove_statement): Likewise.
9546         (rewrite_use_nonlinear_expr): Adjust.
9547         (remove_unused_ivs): Collect SSA NAMEs to remove and call...
9548         * tree-ssa.c (release_defs_bitset): ... this.  New.
9549         * tree-flow.h (release_defs_bitset): Declare.
9550
9551 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
9552
9553         PR debug/41232
9554         * tree-ssa-phiopt.c (minmax_replacement): Skip debug stmts
9555         in the middle block.
9556
9557 2009-09-08  Kai Tietz  <kai.tietz@onevision.com>
9558
9559         * tree-ssa-reassoc.c (find_operand_rank): Cast pointer
9560         via intptr_t to long type.
9561         (insert_operand_rank): Cast long type via intptr_t to
9562         pointer type.
9563         * genattrtab.c (RTL_HASH): Use intptr_t to cast from
9564         pointer to scalar.
9565         * c-pretty-print.c (pp_c_tree_decl_identifier): Cast
9566         from pointer to unsigned via uintptr_t.
9567
9568         * configure.ac (GCC_STDINT_TYPES): Initialize intptr_t,
9569         uintptr_t, HAVE_INTTYPES_H, HAVE_STDINT_H, HAVE_UINTPTR_T,
9570         and HAVE_INTPTR_T.
9571         * configure: Regenerated.
9572         * config.in: Regenerated
9573         * system.h (stdint.h): Add include.
9574         (inttypes.h): Likewise.
9575         * Makefile.in (aclocal): Add config/stdint.m4.
9576         * aclocal.m4: Regenerated.
9577
9578 2009-09-08  Bernd Schmidt  <bernd.schmidt@analog.com>
9579
9580         * config/bfin/bfin.c (np_check_regno, np_after_branch): New static
9581         variables.
9582         (note_np_check_stores): New function.
9583         (harmless_null_pointer_p): New function.
9584         (trapping_loads_p): New args NP_REG and AFTER_NP_BRANCH.  Callers
9585         changed.  Take into account whether we're in the shadow of a condjump
9586         that tested NP_REG for NULL.
9587         Lose all code that tested for SEQUENCEs.
9588         (workaround_speculation): Avoid inserting NOPs for loads that are
9589         either always executed or a NULL pointer.
9590
9591 2009-09-08  Jan Hubicka  <jh@suse.cz>
9592
9593         * doc/invoke.texi (early-inlining-insns): Reduce from 12 to 8.
9594         * params.def (early-inlining-insns): Likewise.
9595
9596 2009-09-08  Jakub Jelinek  <jakub@redhat.com>
9597
9598         PR rtl-optimization/41239
9599         * sched-int.h (struct deps): Add last_function_call_may_noreturn field.
9600         * sched-rgn.c (deps_join): Join also last_function_call_may_noreturn
9601         lists.
9602         * sched-deps.c (sched_analyze_insn): Prevent moving trapping insns
9603         across calls, as the calls might not always return normally.
9604         (call_may_noreturn_p): New function.
9605         (deps_analyze_insn): Update last_function_call_may_noreturn list.
9606         (init_deps): Initialize it.
9607         (remove_from_deps): Also remove calls from
9608         last_function_call_may_noreturn list.
9609
9610 2009-09-07  Richard Henderson  <rth@redhat.com>
9611
9612         * tree-ssa-sccvn.c (vn_reference_lookup_3): Don't assume there are
9613         more VR->OPERANDS than LHS operands.  Free LHS before returning.
9614
9615 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
9616
9617         * config/bfin/bfin.md (UNSPEC_VOLATILE_STALL): New constant.
9618         (attr "addrtype"): New member "spreg".
9619         Use it if mem_spfp_address_operand is true for the address.
9620         (attr "type"): New entry "stall".
9621         (cpu_unit "load"): New.
9622         (insn_reservations "load32", "loadp", "loadi"): Add reservation of
9623         "load".
9624         (insn_reservation "loadsp"): New.
9625         (insn_reservation "load_stall1"): New.
9626         (insn_reservation "load_stall3"): New.
9627         (stall): New insn.
9628         * config/bfin/predicates.md (const1_operand, const3_operand): New.
9629         (mem_p_address_operand): Exclude stack and frame pointer based
9630         addresses.
9631         (mem_spfp_address_operand): New; match them here.
9632         * config/bfin/bfin.c (add_sched_insns_for_speculation): New function.
9633         (bfin_reorg): Call it if scheduling insns.
9634         (bfin_gen_bundles): Remove dummy insns created by
9635         add_sched_insns_for_speculation.
9636
9637         From Jie Zhang <jie.zhang@analog.com>:
9638         * config/bfin/bfin-protos.h (enum bfin_cpu_type, bfin_cpu_type,
9639         bfin_si_revision, bfin_workarounds): Move these ...
9640         * config/bfin/bfin.h: ... here.
9641
9642         From Mike Frysinger  <michael.frysinger@analog.com>
9643         * config/bfin/bfin-protos.h (bfin_cpu_type): Add BFIN_CPU_BF542M,
9644         BFIN_CPU_BF544M, BFIN_CPU_BF547M, BFIN_CPU_BF548M, and BFIN_CPU_BF549M.
9645         * config/bfin/bfin.c (bfin_cpus[]): Add 0.3 for bf542m, bf544m,
9646         bf547m, bf548m, and bf549m.
9647         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF542M__
9648         for BFIN_CPU_BF542M, __ADSPBF544M__ for BFIN_CPU_BF544M,
9649         __ADSPBF547M__ for BFIN_CPU_BF547M, __ADSPBF548M__ for
9650         BFIN_CPU_BF548M, and __ADSPBF549M__ for BFIN_CPU_BF549M.
9651         * config/bfin/t-bfin-elf (MULTILIB_MATCHES): Select bf532-none for
9652         bf542m-none, bf544m-none, bf547m-none, bf548m-none, and bf549m-none.
9653         * config/bfin/t-bfin-linux (MULTILIB_MATCHES): Likewise.
9654         * config/bfin/t-bfin-uclinux (MULTILIB_MATCHES): Likewise.
9655         * doc/invoke.texi (Blackfin Options): Document that -mcpu now accepts
9656         bf542m, bf544m, bf547m, bf548m, and bf549m.
9657
9658         From Jie Zhang <jie.zhang@analog.com>:
9659         * config/bfin/predicates.md (p_register_operand): New predicate.
9660         (dp_register_operand): New predicate.
9661         * config/bfin/bfin-protos.h (WA_05000074): Define.
9662         (ENABLE_WA_05000074): Define.
9663         * config/bfin/bfin.c (bfin_cpus[]): Add WA_05000074 for all cpus.
9664         (bfin_gen_bundles): Put dsp32shiftimm instruction in slot[0].
9665         * config/bfin/bfin.md (define_attr type): Add dsp32shiftimm.
9666         (define_attr addrtype): Allow load/store register to be P register.
9667         (define_attr storereg): New.
9668         (define_cpu_unit anomaly_05000074): New.
9669         (define_insn_reservation dsp32shiftimm): New.
9670         (define_insn_reservation dsp32shiftimm_anomaly_05000074): New.
9671         (define_insn_reservation loadp): Cannot use slot2.
9672         (define_insn_reservation loadsp): Cannot use slot2.
9673         (define_insn_reservation storep): Cannot use slot2. Does not
9674         apply when working around 05000074.
9675         (define_insn_reservation storep_anomaly_05000074): New.
9676         (define_insn_reservation storei): Does not apply when working
9677         around 05000074.
9678         (define_insn_reservation storei_anomaly_05000074): New.
9679         (define_attr length): Add dsp32shiftimm case.
9680         (define_insn movsi_insn32, movsi_insv, ashlsi3_insn, ashrsi3,
9681         ror_one, rol_one, lshrsi3, lshrpdi3, ashrpdi3, movhiv2hi_low,
9682         movhiv2hi_high, composev2hi, packv2hi, movv2hi_hi,
9683         ssashiftv2hi3, ssashifthi3, ssashiftsi3, lshiftv2hi3, lshifthi3):
9684         Set type as dsp32shiftimm for dsp32shiftimm alternatives.
9685
9686 2009-09-07  Martin Jambor  <mjambor@suse.cz>
9687
9688         PR middle-end/41282
9689         * tree-sra.c (create_artificial_child_access): Return NULL if
9690         build_ref_for_offset fails.
9691         (propagate_subacesses_accross_link): Allow build_ref_for_offset
9692         and create_artificial_child_access to fail.
9693
9694 2009-09-06  Dmitry Gorbachev  <d.g.gorbachev@gmail.com>
9695
9696         PR c++/41214
9697         * unwind-dw2.c (uw_init_context_1): Mark noinline.
9698         * config/ia64/unwind-ia64.c (uw_init_context_1): Likewise.
9699         * config/xtensa/unwind-dw2-xtensa.c (uw_init_context_1): Likewise.
9700
9701 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
9702
9703         * config/bfin/bfin.c (bfin_optimize_loop): When creating a new basic
9704         block, ensure it has an exit edge.  Emit a barrier after a jump.
9705
9706 2009-09-07  Nick Clifton  <nickc@redhat.com>
9707
9708         * gcc.c (this_is_linker_script): New variable.  Like
9709         this_is_library_file but for the %T constructor.
9710         (end_going_arg): If this_is_linker_script is set then locate the
9711         script and insert a --script switch before it
9712         (do_spec_2): Initialise this_is_linker_script.
9713         (do_spec_1): Likewise.  Handle %T construct.
9714         (eval_spec_function): Preserve this_is_linker_script.
9715         * doc/invoke.texi: Document %T construct in spec files.
9716         * config/m32c/m32c.h (LIB_SPEC): Use it.
9717
9718 2009-09-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
9719
9720         * rtl.h (PREFETCH_SCHEDULE_BARRIER_P): New macro.
9721         * sched-deps.c (sched_analyze_2): Make prefetches a hard barrier
9722         when volatile flag is set.
9723         * doc/rtl.texi (PREFETCH_SCHEDULE_BARRIER_P): Add documentation pieces.
9724
9725 2009-09-06  Eric Botcazou  <ebotcazou@adacore.com>
9726
9727         PR bootstrap/41241
9728         * combine-stack-adj.c (try_apply_stack_adjustment): Handle stores.
9729         (combine_stack_adjustments_for_block): Allow insns between stack
9730         adjustments and stores with corresponding pre-(dec|inc)rement or
9731         pre-modify operation.
9732
9733 2009-09-06  Jakub Jelinek  <jakub@redhat.com>
9734
9735         PR bootstrap/41241
9736         * combine-stack-adj.c (struct csa_memlist): Rename to...
9737         (struct csa_reflist): ... this.  Rename mem field to ref.
9738         (free_csa_memlist): Rename to...
9739         (free_csa_reflist): ... this.
9740         (record_one_stack_memref): Rename to...
9741         (record_one_stack_ref): ... this.  Handle also REG_P.
9742         (try_apply_stack_adjustment): Handle also REG_P.
9743         (struct record_stack_memrefs_data): Rename to...
9744         (struct record_stack_refs_data): ... this.  Rename memlist field to
9745         reflist.
9746         (record_stack_memrefs): Rename to...
9747         (record_stack_refs): ... this.  For DEBUG_INSNs keep traversing
9748         subexpressions instead of failing when a MEM contains SP references.
9749         For SP itself in DEBUG_INSNs queue it also onto reflist chain.
9750         (combine_stack_adjustments_for_block): Adjust for mem to ref renaming.
9751
9752 2009-09-06  Richard Guenther  <rguenther@suse.de>
9753
9754         PR middle-end/41144
9755         * tree.c (build_array_type): Do not record types marked
9756         with structural equality in the canonical type hashtable.
9757
9758 2009-09-06  Richard Guenther  <rguenther@suse.de>
9759
9760         PR middle-end/41261
9761         * tree-ssa-alias.c (refs_may_alias_p_1): Bail out for function decls.
9762
9763 2009-09-05  Richard Guenther  <rguenther@suse.de>
9764
9765         PR middle-end/41181
9766         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Use the correct type.
9767
9768 2009-09-05  Richard Guenther  <rguenther@suse.de>
9769
9770         PR debug/41273
9771         * tree-ssa-operands.c (get_tmr_operands): Pass through opf_no_vops.
9772
9773 2009-09-05  Richard Guenther  <rguenther@suse.de>
9774
9775         PR middle-end/41271
9776         * tree-ssa.c (useless_type_conversion_p): Drop qualifiers
9777         before comparing function argument types.
9778
9779 2009-09-05  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
9780
9781         PR target/41024
9782         * config/i386/mingw-w64.h (ASM_SPEC): Pass -v instead of -V to
9783         the assembler.
9784
9785 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
9786
9787         Revert:
9788         2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
9789
9790         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
9791         locators before emit_insn is called.
9792
9793 2009-09-04  Vladimir Makarov  <vmakarov@redhat.com>
9794
9795         PR bootstrap/41241
9796         * ira.c (update_equiv_reg): Revert my previous patch for the PR.
9797         * reginfo.c (resize_reg_info): Call allocate_reg_info if necessary.
9798         (reginfo_init): Don't call allocate_reg_info.
9799
9800 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
9801
9802         PR target/41262
9803         * config/alpha/alpha.c (alpha_does_function_need_gp): Use
9804         NONDEBUG_INSN_P instead of INSN_P.
9805
9806 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
9807
9808         PR debug/41225
9809         * tree-vect-stmts.c (vect_stmt_relevant_p): Skip debug uses.
9810
9811 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
9812
9813         PR target/41252
9814         * config/arm/vfp.md (*cmpdf_split_vfp): Fix src mode in the second
9815         pattern of the split.
9816
9817 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
9818
9819         * toplev.c (process_options): Move setter of flag_var_tracking
9820         before other tests that depend on it.  Move down setter of
9821         flag_rename_registers.  Don't enable var-tracking-assignments
9822         by default if selective scheduling is enabled.  Warn if both
9823         are enabled.
9824
9825 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
9826
9827         * var-tracking.c (dv_is_decl_p): Adjust NULL behavior to match
9828         comment.  Use switch statement to catch overlaps between rtx
9829         and tree codes.  Accept FUNCTION_DECLs in addition to those in...
9830         (IS_DECL_CODE): ... here. Remove.
9831         (check_value_is_not_decl): Remove.
9832         (dv_from_decl, dv_from_value): Check after conversion.
9833
9834 2009-09-04  Richard Guenther  <rguenther@suse.de>
9835
9836         PR middle-end/41257
9837         * (cgraph_finalize_compilation_unit): Move finalizing aliases
9838         after emitting tunks.  Move emitting thunks and ctors from ...
9839         (cgraph_optimize): ... here.  Remove redundant
9840         cgraph_analyze_functions.
9841         * varasm.c (find_decl_and_mark_needed): Remove no longer
9842         necessary check.
9843         (finish_aliases_1): Adjust check for thunk aliases.
9844
9845 2009-09-04  Daniel Gutson  <dgutson@codesourcery.com>
9846
9847         * config/arm/arm.md (ctzsi2): Added braces
9848         to avoid warning that broke booststrap.
9849
9850 2009-09-04  Martin Jambor  <mjambor@suse.cz>
9851
9852         PR tree-optimization/41112
9853         * tree-sra.c (build_ref_for_offset_1): Signal that we cannot
9854         handle variable-bounded arrays.
9855         (expr_with_var_bounded_array_refs_p): New function.
9856         (analyze_access_subtree): Call expr_with_var_bounded_array_refs_p.
9857
9858 2009-09-04  Wolfgang Gellerich  <gellerich@de.ibm.com>
9859
9860         * config/s390/2097.md: Removed two incorrect bypasses.
9861         (z10_fsimpdf): Fixed latency.
9862         (z10_fhex): New insn_reservation.
9863         (z10_floaddf): Fixed latency.
9864         (z10_floadsf): Fixed latency.
9865         (z10_ftrunctf): Fixed latency.
9866         (z10_ftruncdf): Fixed latency.
9867         * config/s390/s390.c (z10_cost): Fixed values.
9868         (s390_adjust_priority): Added z10 path.
9869         * config/s390/s390.md (type): Added fhex.
9870         (*mov<mode>_64dfp): Updated type attribute.
9871         (*mov<mode>_64): Updated type attribute.
9872         (*mov<mode>_31): Updated type attribute.
9873         (*mov<mode>"): Likewise.
9874         * config/s390/2084.md (x_fsimpdf): Updated condition.
9875
9876 2009-09-04  Andreas Krebbel  <krebbel1@de.ibm.com>
9877
9878         * config/s390/s390.md ("*fmadd<mode>", "*fmsub<mode>"): Enable mem
9879         RTXs in the predicate for operand 1.
9880
9881 2009-09-03  Daniel Gutson  <dgutson@codesourcery.com>
9882
9883         * config/arm/arm.md (UNSPEC_RBIT): New constant.
9884         (rbitsi2): New insn.
9885         (ctzsi2): New expand.
9886         * config/arm/arm.h (CTZ_DEFINED_VALUE_AT_ZERO): New macro.
9887
9888 2009-09-03  Martin Jambor  <mjambor@suse.cz>
9889
9890         * tree-sra.c (duplicate_expr_for_different_base): Removed.
9891         (create_artificial_child_access): Use build_ref_for_offset instead
9892         of duplicate_expr_for_different_base.
9893         (propagate_subacesses_accross_link): Likewise.
9894
9895 2009-09-03  Richard Sandiford  <rdsandiford@googlemail.com>
9896
9897         * config/mips/mips.c (USEFUL_INSN_P): Use NONDEBUG_INSN_P instead
9898         of INSN_P.
9899         (mips16e_collect_argument_saves): Skip debug instructions.
9900         (mips_74k_agen_init): Use CALL_P || JUMP_P instead of !NONJUMP_INSN_P.
9901         (mips16_lay_out_constants): Use USEFUL_INSN_P instead of INSN_P.
9902         (r10k_insert_cache_barriers): Likewise.
9903         (mips_reorg_process_insns): Likewise.
9904
9905 2009-09-03  Vladimir Makarov  <vmakarov@redhat.com>
9906
9907         PR bootstrap/41241
9908         * ira.c (update_equiv_reg): Remove check on class likely spill.
9909
9910 2009-09-03  Jakub Jelinek  <jakub@redhat.com>
9911
9912         PR debug/41236
9913         * dwarf2out.c (loc_descriptor): Don't use SUBREG_REG macro on
9914         SIGN_EXTEND or ZERO_EXTEND.  Don't assume there is a REG inside of
9915         it or SUBREG.
9916
9917         PR debug/41238
9918         * function.c (assign_parm_find_stack_rtl): Don't set mem attributes on
9919         the stack slot if it is passed by invisible reference.
9920         * var-tracking.c (vt_add_function_parameters): Handle arguments passed
9921         by invisible reference.
9922
9923 2009-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
9924
9925         * config/bfin/linux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
9926         * config/bfin/uclinux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
9927         * config/bfin/bfin.h (TARGET_SUPPORTS_SYNC_CALLS): Provide default of
9928         0.
9929         * config/bfin/sync.md: New file.
9930         * config/bfin/bfin.md: Include it.
9931         (UNSPEC_ATOMIC): New.
9932         (UNSPEC_ONES): Provide a unique number.
9933
9934         From Jie Zhang <jie.zhang@analog.com>:
9935         * config/bfin/bfin.c (ret_regs): New.
9936         (must_save_fp_p): Don't return true because of frame_pointer_needed.
9937         (must_save_rets_p): New.
9938         (n_regs_saved_by_prologue): Use must_save_rets_p instead of
9939         current_function_is_leaf.
9940         (do_link): Likewise.
9941         (do_unlink): Likewise.
9942         (expand_interrupt_handler_prologue): Use ret_regs array.
9943         (expand_interrupt_handler_epilogue): Use ret_regs array and
9944         pass return register to gen_return_internal.
9945         (bfin_expand_epilogue): Pass return register to
9946         gen_return_internal.
9947         (bfin_expand_call): Explicitly clobber RETS.
9948         * config/bfin/bfin.h (FUNCTION_RETURN_REGISTERS): Define.
9949         * config/bfin/bfin.md (call_symbol_fdpic, call_value_symbol_fdpic,
9950         call_insn_fdpic, call_value_insn_fdpic, call_symbol,
9951         call_value_symbol, call_insn, call_value_insn): Explicitly clobber
9952         RETS.
9953         (return_internal): Take a reg rtx rather than the register number.
9954
9955 2009-09-03  H.J. Lu  <hongjiu.lu@intel.com>
9956
9957         * tree-parloops.c (parallelize_loops): Cast to HOST_WIDE_INT
9958         when comparing against estimated_loop_iterations_int return.
9959
9960 2009-09-03  Richard Guenther  <rguenther@suse.de>
9961
9962         * dwarf2out.c (dwarf2out_do_cfi_asm): Remove check of
9963         eh_personality_libfunc.
9964
9965 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
9966
9967         * tree-parloops.c (separate_decls_in_region): Add space.
9968
9969 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
9970
9971         * tree-parloops.c (separate_decls_in_region): Change the condition
9972         checking if there are reductions in the loop.
9973
9974 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
9975
9976         PR tree-optimization/38275
9977         * tree-parloops.c (parallelize_loops): Replace profitability condition
9978         for expected number of iterations.
9979
9980 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
9981
9982         * doc/invoke.texi (BUILD_CONFIG): Document --with-build-config.
9983         (bootstrap-debug): Explain conditions in which it becomes default.
9984         (bootstrap-debug-big): Rather than duplicate bootstrap-debug,
9985         make it add to it.
9986
9987 2009-09-03  Namhyung Kim  <namhyung@gmail.com>
9988
9989         * doc/invoke.texi (Optimize Options): Move
9990         -finline-small-functions to the -O2 list.
9991
9992 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
9993
9994         * toplev.c (process_options): Enable var-tracking-assignments
9995         by default if var-tracking is enabled.
9996
9997 2009-09-02  David Daney  <ddaney@caviumnetworks.com>
9998
9999         * cfgbuild.c (find_bb_boundaries): Split blocks containing a
10000         barrier.
10001         * emit-rtl.c (prev_nonnote_insn_bb): New function.
10002         * rtl.h (prev_nonnote_insn_bb): Declare it.
10003
10004 2009-09-03  Diego Novillo  <dnovillo@google.com>
10005
10006         * cgraph.c (cgraph_node_for_decl): New.
10007         * cgraph.h (cgraph_node_for_decl): Declare.
10008         * tree.c (host_integerp): Return 0 if T is NULL.
10009
10010 2009-09-03  Diego Novillo  <dnovillo@google.com>
10011
10012         * tree.h (struct alias_pair): Move from varasm.c.
10013         (alias_pairs): Likewise.
10014         (TYPE_MAXVAL): Define.
10015         (TYPE_MINVAL): Define.
10016         (iterative_hash_host_wide_int): Declare.
10017         (remove_unreachable_alias_pairs): Declare.
10018         * tree-pass.h (pass_ipa_free_lang_data): Declare.
10019         * diagnostic.c (default_diagnostic_starter): Make extern.
10020         (default_diagnostic_finalizer): Make extern.
10021         * diagnostic.h (default_diagnostic_starter): Declare.
10022         (default_diagnostic_finalizer): Declare.
10023         (default_tree_printer): Declare.
10024         * toplev.c (default_tree_printer): Make extern.
10025
10026 2009-09-03  Richard Guenther  <rguenther@suse.de>
10027             Diego Novillo  <dnovillo@google.com>
10028
10029         * cgraph.c (cgraph_add_new_function): Remove gimplification.
10030         * cgraphunit.c (cgraph_expand_function): Do not emit
10031         associated thunks from here.
10032         (cgraph_emit_thunks): New.
10033         (cgraph_optimize): Call it.
10034         Return if any IPA pass finds an error.
10035         * varasm.c (finish_aliases_1): Ignore errorneous aliases used
10036         by thunks.
10037
10038 2009-09-03  Simon Baldwin  <simonb@google.com>
10039             Rafael Espindola  <espindola@google.com>
10040             Richard Guenther  <rguenther@suse.de>
10041             Doug Kwan  <dougkwan@google.com>
10042             Diego Novillo  <dnovillo@google.com>
10043
10044         * tree.c: Include tree-pass.h, langhooks-def.h,
10045         diagnostic.h, cgraph.h, timevar.h, except.h and debug.h.
10046         (free_lang_data_in_type): New.
10047         (need_assembler_name_p): New.
10048         (free_lang_data_in_block): New.
10049         (free_lang_data_in_decl): New.
10050         (struct free_lang_data_d): New.
10051         (add_tree_to_fld_list): New.
10052         (find_decls_types_r): New.
10053         (get_eh_types_for_runtime): New.
10054         (find_decls_types_in_eh_region): New.
10055         (find_decls_types_in_node): New.
10056         (find_decls_types_in_var): New.
10057         (free_lang_data_in_cgraph): New.
10058         (free_lang_data): New.
10059         (gate_free_lang_data): New.
10060         (pass_ipa_free_lang_data): New.
10061
10062 2009-09-03  Diego Novillo  <dnovillo@google.com>
10063
10064         * timevar.def (TV_IPA_FREE_LANG_DATA): Define.
10065         * langhooks.h (struct lang_hooks): Add field free_lang_data.
10066         (lang_hooks): Remove const qualifier.
10067         * ipa.c (cgraph_remove_unreachable_nodes): Call
10068         remove_unreachable_alias_pairs.
10069         * except.c (add_type_for_runtime): Check if TYPE has
10070         already been converted.
10071         (lookup_type_for_runtime): Likewise.
10072         (check_handled): Handle converted types.
10073         * varasm.c (remove_unreachable_alias_pairs): New.
10074         * gimple.c: Include demangle.h.
10075         (gimple_decl_printable_name): New.
10076         (gimple_fold_obj_type_ref): New.
10077         * gimple.h (gimple_decl_printable_name): Declare.
10078         (gimple_fold_obj_type_ref): Declare.
10079         * passes.c (init_optimization_passes): Add pass
10080         pass_ipa_free_lang_data.
10081         * langhooks-def.h (LANG_HOOKS_FREE_LANG_DATA): Define.
10082         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_FREE_LANG_DATA.
10083
10084 2009-09-03  Diego Novillo  <dnovillo@google.com>
10085
10086         * c-lang.c (lang_hooks): Remove const qualifier.
10087
10088 2009-09-02  Loren James Rittle  <ljrittle@acm.org>
10089
10090         * doc/install.texi (*-*-freebsd*): Update target information.
10091
10092 2009-09-02  Anatoly Sokolov  <aesok@post.ru>
10093
10094         * hard-reg-set.h (call_fixed_regs): Remove.
10095         * reginfo.c (call_fixed_regs): Remove.
10096         (init_reg_sets_1): Remove initialization of call_fixed_regs.
10097         (globalize_reg): Don't use call_fixed_regs.
10098         * caller-save.c (init_caller_save): Use call_fixed_reg_set instead of
10099         call_fixed_regs.
10100
10101 2009-09-01  Michael Matz  <matz@suse.de>
10102
10103         * expr.h (emit_storent_insn, expand_expr_real_1,
10104         expand_expr_real_2): Declare.
10105         * expr.c (emit_storent_insn, expand_expr_real_1,
10106         expand_expr_real_2): Export.
10107         (store_expr): Setting and evaluating dont_return_target is useless.
10108         (expand_expr_real_1, <case GOTO_EXPR, RETURN_EXPR, SWITCH_EXPR,
10109         LABEL_EXPR and ASM_EXPR>): Move to gcc_unreachable.
10110         * except.c (expand_resx_expr): Rename to ...
10111         (expand_resx_stmt): ... this.  Rewrite to take gimple statement.
10112         * except.h (expand_resx_stmt): Declare.
10113         * stmt.c: Add include gimple.h
10114         (expand_asm_expr): Rename to ...
10115         (expand_asm_stmt): ... this. Rewrite to take gimple statement.
10116         (expand_case): Rewrite to take gimple statement.
10117         * tree.h (expand_asm_stmt): Declare.
10118         (expand_case): Change prototype.
10119         * Makefile.in (stmt.o): Depend on gimple.h.
10120         * builtins.c (expand_builtin_synchronize): Build gimple asm
10121         statement, not an ASM_EXPR.
10122         * cfgexpand.c (gimple_cond_pred_to_tree, set_expr_location_r,
10123         gimple_to_tree, release_stmt_tree): Remove.
10124         (expand_gimple_cond): Don't call gimple_cond_pred_to_tree or
10125         ggc_free, but hold comparison code and operands separately.
10126         Call jumpif_1 and jumpifnot_1 instead of jumpif and jumpifnot.
10127         (expand_call_stmt, expand_gimple_stmt_1,
10128         expand_gimple_stmt): New helpers.
10129         (expand_gimple_tailcall): Don't call gimple_to_tree, expand_expr_stmt,
10130         release_stmt_tree.  Call expand_gimple_stmt instead.
10131         (expand_gimple_basic_block): Ditto.
10132
10133         * calls.c (emit_call_1): Don't look at EH regions here, make
10134         fntree parameter useless.
10135         (expand_call): New local rettype for TREE_TYPE(exp), use it
10136         throughout.  Remove local p, use addr instead.
10137         Don't look at EH regions here.
10138
10139 2009-09-02  Vladimir Makarov  <vmakarov@redhat.com>
10140
10141         * doc/invoke.texi (-fsched-pressure): Document it.
10142         (-fsched-reg-pressure-heuristic): Remove it.
10143
10144         * reload.c (ira.h): Include.
10145         (find_reloads): Add choosing reload on number of small spilled
10146         classes.
10147
10148         * haifa-sched.c (ira.h): Include.
10149         (sched_pressure_p, sched_regno_cover_class, curr_reg_pressure,
10150         saved_reg_pressure, curr_reg_live, saved_reg_live,
10151         region_ref_regs): New variables.
10152         (sched_init_region_reg_pressure_info, mark_regno_birth_or_death,
10153         initiate_reg_pressure_info, setup_ref_regs,
10154         initiate_bb_reg_pressure_info, save_reg_pressure,
10155         restore_reg_pressure, dying_use_p, print_curr_reg_pressure): New
10156         functions.
10157         (setup_insn_reg_pressure_info): New function.
10158         (rank_for_schedule): Add pressure checking and insn issue time.
10159         Remove comparison of insn reg weights.
10160         (ready_sort): Set insn reg pressure info.
10161         (update_register_pressure, setup_insn_max_reg_pressure,
10162         update_reg_and_insn_max_reg_pressure,
10163         sched_setup_bb_reg_pressure_info): New functions.
10164         (schedule_insn): Add code for printing and updating reg pressure info.
10165         (find_set_reg_weight, find_insn_reg_weight): Remove.
10166         (ok_for_early_queue_removal): Do nothing if pressure_only_p.
10167         (debug_ready_list): Print reg pressure info.
10168         (schedule_block): Ditto.  Check insn issue time.
10169         (sched_init): Set up sched_pressure_p.  Allocate and set up some
10170         reg pressure related info.
10171         (sched_finish): Free some reg pressure related info.
10172         (fix_tick_ready): Make insn always ready if pressure_p.
10173         (init_h_i_d): Don't call find_insn_reg_weight.
10174         (haifa_finish_h_i_d): Free insn reg pressure info.
10175
10176         * ira-int.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
10177         ira_memory_move_cost, ira_class_hard_regs,
10178         ira_class_hard_regs_num, ira_no_alloc_regs,
10179         ira_available_class_regs, ira_reg_class_cover_size,
10180         ira_reg_class_cover, ira_class_translate): Move to ira.h.
10181
10182         * ira-lives.c (single_reg_class): Check mode to find how many
10183         registers are necessary for operand.
10184         (ira_implicitly_set_insn_hard_regs): New.
10185
10186         * common.opt (fsched-pressure): New options.
10187         (fsched-reg-pressure-heuristic): Remove.
10188
10189         * ira.c (setup_eliminable_regset): Rename to
10190         ira_setup_eliminable_regset.  Make it external.
10191         (expand_reg_info): Pass cover class to setup_reg_classes.
10192         (ira): Call resize_reg_info instead of allocate_reg_info.
10193
10194         * sched-deps.c: Include ira.h.
10195         (implicit_reg_pending_clobbers, implicit_reg_pending_uses): New.
10196         (create_insn_reg_use, create_insn_reg_set, setup_insn_reg_uses,
10197         reg_pressure_info, insn_use_p, mark_insn_pseudo_birth,
10198         mark_insn_hard_regno_birth, mark_insn_reg_birth,
10199         mark_pseudo_death, mark_hard_regno_death, mark_reg_death,
10200         mark_insn_reg_store, mark_insn_reg_clobber,
10201         setup_insn_reg_pressure_info): New.
10202         (sched_analyze_1): Update implicit_reg_pending_uses.
10203         (sched_analyze_insn): Find implicit sets, uses, clobbers of regs.
10204         Use them to create dependencies.  Set insn reg uses and pressure
10205         info.  Process reg_pending_uses in one place.
10206         (free_deps): Free implicit sets.
10207         (remove_from_deps): Remove implicit sets if necessary.  Check
10208         implicit sets when clearing reg_last_in_use.
10209         (init_deps_global): Clear implicit_reg_pending_clobbers and
10210         implicit_reg_pending_uses.
10211
10212         * ira.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
10213         ira_memory_move_cost, ira_class_hard_regs,
10214         ira_class_hard_regs_num, ira_no_alloc_regs,
10215         ira_available_class_regs, ira_reg_class_cover_size,
10216         ira_reg_class_cover, ira_class_translate): Move from ira-int.h.
10217         (ira_setup_eliminable_regset, ira_set_pseudo_classes,
10218         ira_implicitly_set_insn_hard_regs): New prototypes.
10219
10220         * ira-costs.c (pseudo_classes_defined_p, allocno_p,
10221         cost_elements_num): New variables.
10222         (allocno_costs, total_costs): Rename to costs and
10223         total_allocno_costs.
10224         (COSTS_OF_ALLOCNO): Rename to COSTS.
10225         (allocno_pref): Rename to pref.
10226         (allocno_pref_buffer): Rename to pref_buffer.
10227         (common_classes): Rename to regno_cover_class.
10228         (COST_INDEX): New.
10229         (record_reg_classes): Set allocno attributes only if allocno_p.
10230         (record_address_regs): Ditto.  Use COST_INDEX instead of ALLOCNO_NUM.
10231         (scan_one_insn): Use COST_INDEX and COSTS instead of ALLOCNO_NUM
10232         and COSTS_OF_ALLOCNO.
10233         (print_costs): Rename to print_allocno_costs.
10234         (print_pseudo_costs): New.
10235         (process_bb_node_for_costs): Split into 2 functions with new
10236         function process_bb_for_costs.  Pass BB to process_bb_for_costs.
10237         (find_allocno_class_costs): Rename to find_costs_and_classes.  Add
10238         new parameter dump_file.  Use cost_elements_num instead of
10239         ira_allocnos_num.  Make one iteration if preferred classes were
10240         already calculated for scheduler.  Make 2 versions of code
10241         depending on allocno_p.
10242         (setup_allocno_cover_class_and_costs): Check allocno_p.  Use
10243         regno_cover_class and COSTS instead of common_classes and
10244         COSTS_OF_ALLOCNO.
10245         (init_costs, finish_costs): New.
10246         (ira_costs): Set up allocno_p and cost_elements_num.  Call
10247         init_costs and finish_costs.
10248         (ira_set_pseudo_classes): New.
10249
10250         * rtl.h (allocate_reg_info): Remove.
10251         (resize_reg_info): Change return type.
10252         (reg_cover_class): New.
10253         (setup_reg_classes): Add new parameter.
10254
10255         * sched-int.h (struct deps_reg): New member implicit_sets.
10256         (sched_pressure_p, sched_regno_cover_class): New external definitions.
10257         (INCREASE_BITS): New macro.
10258         (struct reg_pressure_data, struct reg_use_data): New.
10259         (struct _haifa_insn_data): Remove reg_weight.  Add members
10260         reg_pressure, reg_use_list, reg_set_list, and
10261         reg_pressure_excess_cost_change.
10262         (struct deps): New member implicit_sets.
10263         (pressure_p): New variable.
10264         (COVER_CLASS_BITS, INCREASE_BITS): New macros.
10265         (struct reg_pressure_data, struct reg_use_data): New.
10266         (INSN_REG_WEIGHT): Remove.
10267         (INSN_REG_PRESSURE, INSN_MAX_REG_PRESSURE, INSN_REG_USE_LIST,
10268         INSN_REG_SET_LIST, INSN_REG_PRESSURE_EXCESS_COST_CHANGE): New macros.
10269         (sched_init_region_reg_pressure_info,
10270         sched_setup_bb_reg_pressure_info): New prototypes.
10271
10272         * reginfo.c (struct reg_pref): New member coverclass.
10273         (reg_cover_class): New function.
10274         (reginfo_init, pass_reginfo_init): Move after free_reg_info.
10275         (reg_info_size): New variable.
10276         (allocate_reg_info): Make static.  Setup reg_info_size.
10277         (resize_reg_info): Use reg_info_size.  Return flag of resizing.
10278         (setup_reg_classes): Add a new parameter.  Setup cover class too.
10279
10280         * Makefile.in (reload.o, haifa-sched.o, sched-deps.o): Add ira.h to
10281         the dependencies.
10282
10283         * sched-rgn.c (deps_join): Set up implicit_sets.
10284         (schedule_region): Set up region and basic blocks pressure
10285         relative info.
10286
10287         * passes.c (init_optimization_passes): Move
10288         pass_subregs_of_mode_init before pass_sched.
10289
10290 2009-09-02  Martin Jambor  <mjambor@suse.cz>
10291
10292         * tree-sra.c (struct access): New field grp_hint.
10293         (dump_access): Dump grp_hint.
10294         (sort_and_splice_var_accesses): Set grp_hint if a group is read
10295         multiple times.
10296         (analyze_access_subtree): Only scalarize accesses with grp_hint set or
10297         those which have been specifically read and somehow written to.
10298         (propagate_subacesses_accross_link): Set grp_hint of right child and
10299         also possibly of the left child.
10300
10301 2009-09-02  Jakub Jelinek  <jakub@redhat.com>
10302
10303         * tree-object-size.c (addr_object_size): Always use object_size_type
10304         0 or 2 when determining the pointer pointed object size.
10305
10306 2009-09-02  Richard Guenther  <rguenther@suse.de>
10307
10308         Revert
10309         2009-08-31  Richard Guenther  <rguenther@suse.de>
10310
10311         * builtins.c (fold_builtin_memory_op): Use the alias oracle
10312         to query if the memory regions for memmove overlap.
10313         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
10314         asserts on pointers, instead deal with odd trees.
10315         (ptr_derefs_may_alias_p): Likewise.
10316         (refs_may_alias_p_1): Constructor bases also never alias.
10317
10318 2009-08-01  Christian Bruel  <christian.bruel@st.com>
10319
10320         Revert:
10321         2009-07-31  Christian Bruel  <christian.bruel@st.com>
10322         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
10323
10324 2009-09-01  Alexandre Oliva  <aoliva@redhat.com>
10325
10326         * doc/invoke.texi (-fvar-tracking-assignments): New.
10327         (-fvar-tracking-assignments-toggle): New.
10328         (-fdump-final-insns=file): Mark filename as optional.
10329         (--param min-nondebug-insn-uid): New.
10330         (-gdwarf-@{version}): Mention version 4.
10331         * opts.c (common_handle_option): Accept it.
10332         * tree-vrp.c (find_assert_locations_1): Skip debug stmts.
10333         * regrename.c (regrename_optimize): Drop last.  Don't count debug
10334         insns as uses.  Don't reject change because of debug insn.
10335         (do_replace): Reject DEBUG_INSN as chain starter.  Take base_regno
10336         from the chain starter, and check for inexact matches in DEBUG_INSNS.
10337         (scan_rtx_reg): Accept inexact matches in DEBUG_INSNs.
10338         (build_def_use): Simplify and fix the marking of DEBUG_INSNs.
10339         * sched-ebb.c (schedule_ebbs): Skip boundary debug insns.
10340         * fwprop.c (forward_propagate_and_simplify): ...into debug insns.
10341         * doc/gimple.texi (is_gimple_debug): New.
10342         (gimple_debug_bind_p): New.
10343         (is_gimple_call, gimple_assign_cast_p): End sentence with period.
10344         * doc/install.texi (bootstrap-debug): More details.
10345         (bootstrap-debug-big, bootstrap-debug-lean): Document.
10346         (bootstrap-debug-lib): More details.
10347         (bootstrap-debug-ckovw): Update.
10348         (bootstrap-time): New.
10349         * tree-into-ssa.c (mark_def_sites): Skip debug stmts.
10350         (insert_phi_nodes_for): Insert debug stmts.
10351         (rewrite_stmt): Take iterator.  Insert debug stmts.
10352         (rewrite_enter_block): Adjust.
10353         (maybe_replace_use_in_debug_stmt): New.
10354         (rewrite_update_stmt): Use it.
10355         (mark_use_interesting): Return early for debug stmts.
10356         * tree-ssa-loop-im.c (rewrite_bittest): Propagate DEFs into debug
10357         stmts before replacing stmt.
10358         (move_computations_stmt): Likewise.
10359         * ira-conflicts.c (add_copies): Skip debug insns.
10360         * regstat.c (regstat_init_n_sets_and_refs): Discount debug insns.
10361         (regstat_bb_compute_ri): Skip debug insns.
10362         * tree-ssa-threadupdate.c (redirection_block_p): Skip debug stmts.
10363         * tree-ssa-loop-manip.c (find_uses_to_rename_stmt,
10364         check_loop_closed_ssa_stmt): Skip debug stmts.
10365         * tree-tailcall.c (find_tail_calls): Likewise.
10366         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Likewise.
10367         * tree.h (MAY_HAVE_DEBUG_STMTS): New.
10368         (build_var_debug_value_stat): Declare.
10369         (build_var_debug_value): Define.
10370         (target_for_debug_bind): Declare.
10371         * reload.c (find_equiv_reg): Skip debug insns.
10372         * rtlanal.c (reg_used_between_p): Skip debug insns.
10373         (side_effects_p): Likewise.
10374         (canonicalize_condition): Likewise.
10375         * ddg.c (create_ddg_dep_from_intra_loop_link): Check that non-debug
10376         insns never depend on debug insns.
10377         (create_ddg_dep_no_link): Likewise.
10378         (add_cross_iteration_register_deps): Use ANTI_DEP for debug insns.
10379         Don't add inter-loop dependencies for debug insns.
10380         (build_intra_loop_deps): Likewise.
10381         (create_ddg): Count debug insns.
10382         * ddg.h (struct ddg::num_debug): New.
10383         (num_backargs): Pair up with previous int field.
10384         * diagnostic.c (diagnostic_report_diagnostic): Skip notes on
10385         -fcompare-debug-second.
10386         * final.c (get_attr_length_1): Skip debug insns.
10387         (rest_of_clean-state): Don't dump CFA_RESTORE_STATE.
10388         * gcc.c (invoke_as): Call compare-debug-dump-opt.
10389         (driver_self_specs): Map -fdump-final-insns to
10390         -fdump-final-insns=..
10391         (get_local_tick): New.
10392         (compare_debug_dump_opt_spec_function): Test for . argument and
10393         compute output name.  Compute temp output spec without flag name.
10394         Compute -frandom-seed.
10395         (OPT): Undef after use.
10396         * cfgloopanal.c (num_loop_insns): Skip debug insns.
10397         (average_num_loop_insns): Likewise.
10398         * params.h (MIN_NONDEBUG_INSN_UID): New.
10399         * gimple.def (GIMPLE_DEBUG): New.
10400         * ipa-reference.c (scan_stmt_for_static_refs): Skip debug stmts.
10401         * auto-inc-dec.c (merge_in_block): Skip debug insns.
10402         (merge_in_block): Fix whitespace.
10403         * toplev.c (flag_var_tracking): Update comment.
10404         (flag_var_tracking_assignments): New.
10405         (flag_var_tracking_assignments_toggle): New.
10406         (process_options): Don't open final insns dump file if we're not
10407         going to write to it.  Compute defaults for var_tracking.
10408         * df-scan.c (df_insn_rescan_debug_internal): New.
10409         (df_uses_record): Handle debug insns.
10410         * haifa-sched.c (ready): Initialize n_debug.
10411         (contributes_to_priority): Skip debug insns.
10412         (dep_list_size): New.
10413         (priority): Use it.
10414         (rank_for_schedule): Likewise.  Schedule debug insns as soon as
10415         they're ready.  Disregard previous debug insns to make decisions.
10416         (queue_insn): Never queue debug insns.
10417         (ready_add, ready_remove_first, ready_remove): Count debug insns.
10418         (schedule_insn): Don't reject debug insns because of issue rate.
10419         (get_ebb_head_tail, no_real_insns_p): Skip boundary debug insns.
10420         (queue_to_ready): Skip and discount debug insns.
10421         (choose_ready): Let debug insns through.
10422         (schedule_block): Check boundary debug insns.  Discount debug
10423         insns, schedule them early.  Adjust whitespace.
10424         (set_priorities): Check for boundary debug insns.
10425         (add_jump_dependencies): Use dep_list_size.
10426         (prev_non_location_insn): New.
10427         (check_cfg): Use it.
10428         * tree-ssa-loop-ivopts.c (find-interesting_users): Skip debug
10429         stmts.
10430         (remove_unused_ivs): Reset debug stmts.
10431         * modulo-sched.c (const_iteration_count): Skip debug insns.
10432         (res_MII): Discount debug insns.
10433         (loop_single_full_bb_p): Skip debug insns.
10434         (sms_schedule): Likewise.
10435         (sms_schedule_by_order): Likewise.
10436         (ps_has_conflicts): Likewise.
10437         * caller-save.c (refmarker_fn): New.
10438         (save_call_clobbered_regs): Replace regs with saved mem in
10439         debug insns.
10440         (mark_referenced_regs): Take pointer, mark and arg.  Adjust.
10441         Call refmarker_fn mark for hardregnos.
10442         (mark_reg_as_referenced): New.
10443         (replace_reg_with_saved_mem): New.
10444         * ipa-pure-const.c (check_stmt): Skip debug stmts.
10445         * cse.c (cse_insn): Canonicalize debug insns.  Skip them when
10446         searching back.
10447         (cse_extended_basic_block): Skip debug insns.
10448         (count_reg_usage): Likewise.
10449         (is_dead_reg): New, split out of...
10450         (set_live_p): ... here.
10451         (insn_live_p): Use it for debug insns.
10452         * tree-stdarg.c (check_all_va_list_escapes): Skip debug stmts.
10453         (execute_optimize_stdarg): Likewise.
10454         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
10455         * tree-ssa-propagate.c (substitute_and_fold): Don't regard
10456         changes in debug stmts as changes.
10457         * sel-sched.c (moving_insn_creates_bookkeeping_block_p): New.
10458         (moveup_expr): Don't move across debug insns.  Don't move
10459         debug insn if it would create a bookkeeping block.
10460         (moveup_expr_cached): Don't use cache for debug insns that
10461         are heads of blocks.
10462         (compute_av_set_inside_bb): Skip debug insns.
10463         (sel_rank_for_schedule): Schedule debug insns first.  Remove
10464         dead code.
10465         (block_valid_for_bookkeeping_p); Support lax searches.
10466         (create_block_for_bookkeeping): Adjust block numbers when
10467         encountering debug-only blocks.
10468         (find_place_for_bookkeeping): Deal with debug-only blocks.
10469         (generate_bookkeeping_insn): Accept no place to insert.
10470         (remove_temp_moveop_nops): New argument full_tidying.
10471         (prepare_place_to_insert): Deal with debug insns.
10472         (advance_state_on_fence): Debug insns don't start cycles.
10473         (update_boundaries): Take fence as argument.  Deal with
10474         debug insns.
10475         (schedule_expr_on_boundary): No full_tidying on debug insns.
10476         (fill_insns): Deal with debug insns.
10477         (track_scheduled_insns_and_blocks): Don't count debug insns.
10478         (need_nop_to_preserve_insn_bb): New, split out of...
10479         (remove_insn_from_stream): ... this.
10480         (fur_orig_expr_not_found): Skip debug insns.
10481         * rtl.def (VALUE): Move up.
10482         (DEBUG_INSN): New.
10483         * tree-ssa-sink.c (all_immediate_uses_same_place): Skip debug stmts.
10484         (nearest_common_dominator_of_uses): Take debug_stmts argument.
10485         Set it if debug stmts are found.
10486         (statement_sink_location): Skip debug stmts.  Propagate
10487         moving defs into debug stmts.
10488         * ifcvt.c (first_active_insn): Skip debug insns.
10489         (last_active_insns): Likewise.
10490         (cond_exec_process_insns): Likewise.
10491         (noce_process_if_block): Likewise.
10492         (check_cond_move_block): Likewise.
10493         (cond_move_convert_if_block): Likewise.
10494         (block_jumps_and_fallthru_p): Likewise.
10495         (dead_or_predicable): Likewise.
10496         * dwarf2out.c (debug_str_hash_forced): New.
10497         (find_AT_string): Add comment.
10498         (gen_label_for_indirect_string): New.
10499         (get_debug_string_label): New.
10500         (AT_string_form): Use it.
10501         (mem_loc_descriptor): Handle non-TLS symbols.  Handle MINUS , DIV,
10502         MOD, AND, IOR, XOR, NOT, ABS, NEG, and CONST_STRING.  Accept but
10503         discard COMPARE, IF_THEN_ELSE, ROTATE, ROTATERT, TRUNCATE and
10504         several operations that cannot be represented with DWARF opcodes.
10505         (loc_descriptor): Ignore SIGN_EXTEND and ZERO_EXTEND.  Require
10506         dwarf_version 4 for DW_OP_implicit_value and DW_OP_stack_value.
10507         (dwarf2out_var_location): Take during-call mark into account.
10508         (output_indirect_string): Update comment.  Output if there are
10509         label and references.
10510         (prune_indirect_string): New.
10511         (prune_unused_types): Call it if debug_str_hash_forced.
10512         More in dwarf2out.c, from Jakub Jelinek <jakub@redhat.com>:
10513         (dw_long_long_const): Remove.
10514         (struct dw_val_struct): Change val_long_long type to rtx.
10515         (print_die, attr_checksum, same_dw_val_p, loc_descriptor): Adjust for
10516         val_long_long change to CONST_DOUBLE rtx from a long hi/lo pair.
10517         (output_die): Likewise.  Use HOST_BITS_PER_WIDE_INT size of each
10518         component instead of HOST_BITS_PER_LONG.
10519         (output_loc_operands): Likewise.  For const8* assert
10520         HOST_BITS_PER_WIDE_INT rather than HOST_BITS_PER_LONG is >= 64.
10521         (output_loc_operands_raw): For const8* assert HOST_BITS_PER_WIDE_INT
10522         rather than HOST_BITS_PER_LONG is >= 64.
10523         (add_AT_long_long): Remove val_hi and val_lo arguments, add
10524         val_const_double.
10525         (size_of_die): Use HOST_BITS_PER_WIDE_INT size multiplier instead of
10526         HOST_BITS_PER_LONG for dw_val_class_long_long.
10527         (add_const_value_attribute): Adjust add_AT_long_long caller.  Don't
10528         handle TLS SYMBOL_REFs.  If CONST wraps a constant, tail recurse.
10529         (dwarf_stack_op_name): Handle DW_OP_implicit_value and
10530         DW_OP_stack_value.
10531         (size_of_loc_descr, output_loc_operands, output_loc_operands_raw):
10532         Handle DW_OP_implicit_value.
10533         (extract_int): Move prototype earlier.
10534         (mem_loc_descriptor): For SUBREG punt if inner
10535         mode size is wider than DWARF2_ADDR_SIZE.  Handle SIGN_EXTEND
10536         and ZERO_EXTEND by DW_OP_shl and DW_OP_shr{a,}.  Handle
10537         EQ, NE, GT, GE, LT, LE, GTU, GEU, LTU, LEU, SMIN, SMAX, UMIN,
10538         UMAX, SIGN_EXTRACT, ZERO_EXTRACT.
10539         (loc_descriptor): Compare mode size with DWARF2_ADDR_SIZE
10540         instead of Pmode size.
10541         (loc_descriptor): Add MODE argument.  Handle CONST_INT, CONST_DOUBLE,
10542         CONST_VECTOR, CONST, LABEL_REF and SYMBOL_REF if mode != VOIDmode,
10543         attempt to handle other expressions.  Don't handle TLS SYMBOL_REFs.
10544         (concat_loc_descriptor, concatn_loc_descriptor,
10545         loc_descriptor_from_tree_1): Adjust loc_descriptor callers.
10546         (add_location_or_const_value_attribute): Likewise.  For single
10547         location loc_lists attempt to use add_const_value_attribute
10548         for constant decls.  Add DW_AT_const_value even if
10549         NOTE_VAR_LOCATION is VAR_LOCATION with CONSTANT_P or CONST_STRING
10550         in its expression.
10551         * cfgbuild.c (inside_basic_block_p): Handle debug insns.
10552         (control_flow_insn_p): Likewise.
10553         * tree-parloops.c (eliminate_local_variables_stmt): Handle debug stmt.
10554         (separate_decls_in_region_debug_bind): New.
10555         (separate_decls_in_region): Process debug bind stmts afterwards.
10556         * recog.c (verify_changes): Handle debug insns.
10557         (extract_insn): Likewise.
10558         (peephole2_optimize): Skip debug insns.
10559         * dse.c (scan_insn): Skip debug insns.
10560         * sel-sched-ir.c (return_nop_to_pool): Take full_tidying argument.
10561         Pass it on.
10562         (setup_id_for_insn): Handle debug insns.
10563         (maybe_tidy_empty_bb): Adjust whitespace.
10564         (tidy_control_flow): Skip debug insns.
10565         (sel_remove_insn): Adjust for debug insns.
10566         (sel_estimate_number_of_insns): Skip debug insns.
10567         (create_insn_rtx_from_pattern): Handle debug insns.
10568         (create_copy_of_insn_rtx): Likewise.
10569         * sel-sched-.h (sel_bb_end): Declare.
10570         (sel_bb_empty_or_nop_p): New.
10571         (get_all_loop_exits): Use it.
10572         (_eligible_successor_edge_p): Likewise.
10573         (return_nop_to_pool): Adjust.
10574         * tree-eh.c (tre_empty_eh_handler_p): Skip debug stmts.
10575         * ira-lives.c (process_bb_node_lives): Skip debug insns.
10576         * gimple-pretty-print.c (dump_gimple_debug): New.
10577         (dump_gimple_stmt): Use it.
10578         (dump_bb_header): Skip gimple debug stmts.
10579         * regmove.c (optimize_reg_copy_1): Discount debug insns.
10580         (fixup_match_2): Likewise.
10581         (regmove_backward_pass): Likewise.  Simplify combined
10582         replacement.  Handle debug insns.
10583         * function.c (instantiate_virtual_regs): Handle debug insns.
10584         * function.h (struct emit_status): Add x_cur_debug_insn_uid.
10585         * print-rtl.h: Include cselib.h.
10586         (print_rtx): Print VALUEs.  Split out and recurse for VAR_LOCATIONs.
10587         * df.h (df_inns_rescan_debug_internal): Declare.
10588         * gcse.c (alloc_hash_table): Estimate n_insns.
10589         (cprop_insn): Don't regard debug insns as changes.
10590         (bypass_conditional_jumps): Skip debug insns.
10591         (one_pre_gcse_pass): Adjust.
10592         (one_code_hoisting_pass): Likewise.
10593         (compute_ld_motion_mems): Skip debug insns.
10594         (one_cprop_pass): Adjust.
10595         * tree-if-conv.c (tree_if_convert_stmt): Reset debug stmts.
10596         (if_convertible_stmt_p): Handle debug stmts.
10597         * init-regs.c (initialize_uninitialized_regs): Skip debug insns.
10598         * tree-vect-loop.c (vect_is_simple_reduction): Skip debug stmts.
10599         * ira-build.c (create_bb_allocnos): Skip debug insns.
10600         * tree-flow-inline.h (has_zero_uses): Discount debug stmts.
10601         (has_single_use): Likewise.
10602         (single_imm_use): Likewise.
10603         (num_imm_uses): Likewise.
10604         * tree-ssa-phiopt.c (empty_block_p): Skip debug stmts.
10605         * tree-ssa-coalesce.c (build_ssa_conflict_graph): Skip debug stmts.
10606         (create_outofssa_var_map): Likewise.
10607         * lower-subreg.c (adjust_decomposed_uses): New.
10608         (resolve_debug): New.
10609         (decompose_multiword_subregs): Use it.
10610         * tree-dfa.c (find_referenced_vars): Skip debug stmts.
10611         * emit-rtl.c: Include params.h.
10612         (cur_debug_insn_uid): Define.
10613         (set_new_first_and_last_insn): Set cur_debug_insn_uid too.
10614         (copy_rtx_if_shared_1): Handle debug insns.
10615         (reset_used_flags): Likewise.
10616         (set_used_flags): LIkewise.
10617         (get_max_insn_count): New.
10618         (next_nondebug_insn): New.
10619         (prev_nondebug_insn): New.
10620         (make_debug_insn_raw): New.
10621         (emit_insn_before_noloc): Handle debug insns.
10622         (emit_jump_insn_before_noloc): Likewise.
10623         (emit_call_insn_before_noloc): Likewise.
10624         (emit_debug_insn_before_noloc): New.
10625         (emit_insn_after_noloc): Handle debug insns.
10626         (emit_jump_insn_after_noloc): Likewise.
10627         (emit_call_insn_after_noloc): Likewise.
10628         (emit_debug_insn_after_noloc): Likewise.
10629         (emit_insn_after): Take loc from earlier non-debug insn.
10630         (emit_jump_insn_after): Likewise.
10631         (emit_call_insn_after): Likewise.
10632         (emit_debug_insn_after_setloc): New.
10633         (emit_debug_insn_after): New.
10634         (emit_insn_before): Take loc from later non-debug insn.
10635         (emit_jump_insn_before): Likewise.
10636         (emit_call_insn_before): Likewise.
10637         (emit_debug_insn_before_setloc): New.
10638         (emit_debug_insn_before): New.
10639         (emit_insn): Handle debug insns.
10640         (emit_debug_insn): New.
10641         (emit_jump_insn): Handle debug insns.
10642         (emit_call_insn): Likewise.
10643         (emit): Likewise.
10644         (init_emit): Take min-nondebug-insn-uid into account.
10645         Initialize cur_debug_insn_uid.
10646         (emit_copy_of_insn_after): Handle debug insns.
10647         * cfgexpand.c (gimple_assign_rhs_to_tree): Do not overwrite
10648         location of single rhs in place.
10649         (maybe_dump_rtl_for_gimple_stmt): Dump lineno.
10650         (floor_sdiv_adjust): New.
10651         (cell_sdiv_adjust): New.
10652         (cell_udiv_adjust): New.
10653         (round_sdiv_adjust): New.
10654         (round_udiv_adjust): New.
10655         (wrap_constant): Moved from cselib.
10656         (unwrap_constant): New.
10657         (expand_debug_expr): New.
10658         (expand_debug_locations): New.
10659         (expand_gimple_basic_block): Drop hiding redeclaration.  Expand
10660         debug bind stmts.
10661         (gimple_expand_cfg): Expand debug locations.
10662         * cselib.c: Include tree-pass.h.
10663         (struct expand_value_data): New.
10664         (cselib_record_sets_hook): New.
10665         (PRESERVED_VALUE_P, LONG_TERM_PRESERVED_VALUE_P): New.
10666         (cselib_clear_table): Move, and implemnet in terms of...
10667         (cselib_reset_table_with_next_value): ... this.
10668         (cselib_get_next_unknown_value): New.
10669         (discard_useless_locs): Don't discard preserved values.
10670         (cselib_preserve_value): New.
10671         (cselib_preserved_value_p): New.
10672         (cselib_preserve_definitely): New.
10673         (cselib_clear_preserve): New.
10674         (cselib_preserve_only_values): New.
10675         (new_cselib_val): Take rtx argument.  Dump it in details.
10676         (cselib_lookup_mem): Adjust.
10677         (expand_loc): Take regs_active in struct.  Adjust.  Silence
10678         dumps unless details are requested.
10679         (cselib_expand_value_rtx_cb): New.
10680         (cselib_expand_value_rtx): Rename and reimplment in terms of...
10681         (cselib_expand_value_rtx_1): ... this.  Adjust.  Silence dumps
10682         without details.  Copy more subregs.  Try to resolve values
10683         using a callback.  Wrap constants.
10684         (cselib_subst_to_values): Adjust.
10685         (cselib_log_lookup): New.
10686         (cselib_lookup): Call it.
10687         (cselib_invalidate_regno): Don't count preserved values as useless.
10688         (cselib_invalidate_mem): Likewise.
10689         (cselib_record_set): Likewise.
10690         (struct set): Renamed to cselib_set, moved to cselib.h.
10691         (cselib_record_sets): Adjust.  Call hook.
10692         (cselib_process_insn): Reset table when it would be cleared.
10693         (dump_cselib_val): New.
10694         (dump_cselib_table): New.
10695         * tree-cfgcleanup.c (tree_forwarded_block_p): Skip debug stmts.
10696         (remove_forwarder_block): Support moving debug stmts.
10697         * cselib.h (cselib_record_sets_hook): Declare.
10698         (cselib_expand_callback): New type.
10699         (cselib_expand_value_rtx_cb): Declare.
10700         (cselib_reset_table_with_next_value): Declare.
10701         (cselib_get_next_unknown_value): Declare.
10702         (cselib_preserve_value): Declare.
10703         (cselib_preserved_value_p): Declare.
10704         (cselib_preserve_only_values): Declare.
10705         (dump_cselib_table): Declare.
10706         * cfgcleanup.c (flow_find_cross_jump): Skip debug insns.
10707         (try_crossjump_to_edge): Likewise.
10708         (delete_unreachable_blocks): Remove dominant GIMPLE blocks after
10709         dominated blocks when debug stmts are present.
10710         * simplify-rtx.c (delegitimize_mem_from_attrs): New.
10711         * tree-ssa-live.c (remove_unused_locals): Skip debug stmts.
10712         (set_var_live_on_entry): Likewise.
10713         * loop-invariant.c (find_invariants_bb): Skip debug insns.
10714         * cfglayout.c (curr_location, last_location): Make static.
10715         (set_curr_insn_source_location): Don't avoid bouncing.
10716         (get_curr_insn_source_location): New.
10717         (get_curr_insn_block): New.
10718         (duplicate_insn_chain): Handle debug insns.
10719         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Propagate
10720         into debug stmts.
10721         * common.opt (fcompare-debug): Move to sort order.
10722         (fdump-unnumbered-links): Likewise.
10723         (fvar-tracking-assignments): New.
10724         (fvar-tracking-assignments-toggle): New.
10725         * tree-ssa-dce.c (mark_stmt_necessary): Don't mark blocks
10726         because of debug stmts.
10727         (mark_stmt_if_obviously_necessary): Mark debug stmts.
10728         (eliminate_unnecessary_stmts): Walk dominated blocks before
10729         dominators.
10730         * tree-ssa-ter.c (find_replaceable_in_bb): Skip debug stmts.
10731         * ira.c (memref_used_between_p): Skip debug insns.
10732         (update_equiv_regs): Likewise.
10733         * sched-deps.c (sd_lists_size): Accept empty list.
10734         (sd_init_insn): Mark debug insns.
10735         (sd_finish_insn): Unmark them.
10736         (sd_add_dep): Reject non-debug deps on debug insns.
10737         (fixup_sched_groups): Give debug insns group treatment.
10738         Skip debug insns.
10739         (sched_analyze_reg): Don't mark debug insns for sched before call.
10740         (sched_analyze_2): Handle debug insns.
10741         (sched_analyze_insn): Compute next non-debug insn.  Handle debug
10742         insns.
10743         (deps_analyze_insn): Handle debug insns.
10744         (deps_start_bb): Skip debug insns.
10745         (init_deps): Initialize last_debug_insn.
10746         * tree-ssa.c (target_for_debug_bind): New.
10747         (find_released_ssa_name): New.
10748         (propagate_var_def_into_debug_stmts): New.
10749         (propagate_defs_into_debug_stmts): New.
10750         (verify_ssa): Skip debug bind stmts without values.
10751         (warn_uninialized_vars): Skip debug stmts.
10752         * target-def.h (TARGET_DELEGITIMIZE_ADDRESS): Set default.
10753         * rtl.c (rtx_equal_p_cb): Handle VALUEs.
10754         (rtx_equal_p): Likewise.
10755         * ira-costs.c (scan_one_insn): Skip debug insns.
10756         (process_bb_node_for_hard_reg_moves): Likewise.
10757         * rtl.h (DEBUG_INSN_P): New.
10758         (NONDEBUG_INSN_P): New.
10759         (MAY_HAVE_DEBUG_INSNS): New.
10760         (INSN_P): Accept debug insns.
10761         (RTX_FRAME_RELATED_P): Likewise.
10762         (INSN_DELETED_P): Likewise
10763         (PAT_VAR_LOCATION_DECL): New.
10764         (PAT_VAR_LOCATION_LOC): New.
10765         (PAT_VAR_OCATION_STATUS): New.
10766         (NOTE_VAR_LOCATION_DECL): Reimplement.
10767         (NOTE_VAR_LOCATION_LOC): Likewise.
10768         (NOTE_VAR_LOCATION_STATUS): Likewise.
10769         (INSN_VAR_LOCATION): New.
10770         (INSN_VAR_LOCATION_DECL): New.
10771         (INSN_VAR_LOCATION_LOC): New.
10772         (INSN_VAR_LOCATION_STATUS): New.
10773         (gen_rtx_UNKNOWN_VAR_LOC): New.
10774         (VAR_LOC_UNKNOWN_P): New.
10775         (NOTE_DURING_CALL_P): New.
10776         (SCHED_GROUP_P): Accept debug insns.
10777         (emit_debug_insn_before): Declare.
10778         (emit_debug_insn_before_noloc): Declare.
10779         (emit_debug_insn_beore_setloc): Declare.
10780         (emit_debug_insn_after): Declare.
10781         (emit_debug_insn_after_noloc): Declare.
10782         (emit_debug_insn_after_setloc): Declare.
10783         (emit_debug_insn): Declare.
10784         (make_debug_insn_raw): Declare.
10785         (prev_nondebug_insn): Declare.
10786         (next_nondebug_insn): Declare.
10787         (delegitimize_mem_from_attrs): Declare.
10788         (get_max_insn_count): Declare.
10789         (wrap_constant): Declare.
10790         (unwrap_constant): Declare.
10791         (get_curr_insn_source_location): Declare.
10792         (get_curr_insn_block): Declare.
10793         * tree-inline.c (insert_debug_decl_map): New.
10794         (processing_debug_stmt): New.
10795         (remap_decl): Don't create new mappings in debug stmts.
10796         (remap_gimple_op_r): Don't add references in debug stmts.
10797         (copy_tree_body_r): Likewise.
10798         (remap_gimple_stmt): Handle debug bind stmts.
10799         (copy_bb): Skip debug stmts.
10800         (copy_edges_for_bb): Likewise.
10801         (copy_debug_stmt): New.
10802         (copy_debug_stmts): New.
10803         (copy_body): Copy debug stmts at the end.
10804         (insert_init_debug_bind): New.
10805         (insert_init_stmt): Take id.  Skip and emit debug stmts.
10806         (setup_one_parameter): Remap variable earlier, register debug mapping.
10807         (estimate_num_insns): Skip debug stmts.
10808         (expand_call_inline): Preserve debug_map.
10809         (optimize_inline_calls): Check for no debug_stmts left-overs.
10810         (unsave_expr_now): Preserve debug_map.
10811         (copy_gimple_seq_and_replace_locals): Likewise.
10812         (tree_function_versioning): Check for no debug_stmts left-overs.
10813         Init and destroy debug_map as needed.  Split edges unconditionally.
10814         (build_duplicate_type): Init and destroy debug_map as needed.
10815         * tree-inline.h: Include gimple.h instead of pointer-set.h.
10816         (struct copy_body_data): Add debug_stmts and debug_map.
10817         * sched-int.h (struct ready_list): Add n_debug.
10818         (struct deps): Add last_debug_insn.
10819         (DEBUG_INSN_SCHED_P): New.
10820         (BOUNDARY_DEBUG_INSN_P): New.
10821         (SCHEDULE_DEBUG_INSN_P): New.
10822         (sd_iterator_cond): Accept empty list.
10823         * combine.c (create_log_links): Skip debug insns.
10824         (combine_instructions): Likewise.
10825         (cleanup_auto_inc_dec): New.  From Jakub Jelinek: Make sure the
10826         return value is always unshared.
10827         (struct rtx_subst_pair): New.
10828         (auto_adjust_pair): New.
10829         (propagate_for_debug_subst): New.
10830         (propagate_for_debug): New.
10831         (try_combine): Skip debug insns.  Propagate removed defs into
10832         debug insns.
10833         (next_nonnote_nondebug_insn): New.
10834         (distribute_notes): Use it.  Skip debug insns.
10835         (distribute_links): Skip debug insns.
10836         * tree-outof-ssa.c (set_location_for_edge): Likewise.
10837         * resource.c (mark_target_live_regs): Likewise.
10838         * var-tracking.c: Include cselib.h and target.h.
10839         (enum micro_operation_type): Add MO_VAL_USE, MO_VAL_LOC, and
10840         MO_VAL_SET.
10841         (micro_operation_type_name): New.
10842         (enum emit_note_where): Add EMIT_NOTE_AFTER_CALL_INSN.
10843         (struct micro_operation_def): Update comments.
10844         (decl_or_value): New type.  Use instead of decls.
10845         (struct emit_note_data_def): Add vars.
10846         (struct attrs_def): Use decl_or_value.
10847         (struct variable_tracking_info_def): Add permp, flooded.
10848         (struct location_chain_def): Update comment.
10849         (struct variable_part_def): Use decl_or_value.
10850         (struct variable_def): Make var_part a variable length array.
10851         (valvar_pool): New.
10852         (scratch_regs): New.
10853         (cselib_hook_called): New.
10854         (dv_is_decl_p): New.
10855         (dv_is_value_p): New.
10856         (dv_as_decl): New.
10857         (dv_as_value): New.
10858         (dv_as_opaque): New.
10859         (dv_onepart_p): New.
10860         (dv_pool): New.
10861         (IS_DECL_CODE): New.
10862         (check_value_is_not_decl): New.
10863         (dv_from_decl): New.
10864         (dv_from_value): New.
10865         (dv_htab_hash): New.
10866         (variable_htab_hash): Use it.
10867         (variable_htab_eq): Support values.
10868         (variable_htab_free): Free from the right pool.
10869         (attrs_list_member, attrs_list_insert): Use decl_or_value.
10870         (attrs_list_union): Adjust.
10871         (attrs_list_mpdv_union): New.
10872         (tie_break_pointers): New.
10873         (canon_value_cmp): New.
10874         (unshare_variable): Return possibly-modified slot.
10875         (vars_copy_1): Adjust.
10876         (var_reg_decl_set): Adjust.  Split out of...
10877         (var_reg_set): ... this.
10878         (get_init_value): Adjust.
10879         (var_reg_delete_and_set): Adjust.
10880         (var_reg_delete): Adjust.
10881         (var_regno_delete): Adjust.
10882         (var_mem_decl_set): Split out of...
10883         (var_mem_set): ... this.
10884         (var_mem_delete_and_set): Adjust.
10885         (var_mem_delete): Adjust.
10886         (val_store): New.
10887         (val_reset): New.
10888         (val_resolve): New.
10889         (variable_union): Adjust.  Speed up merge of 1-part vars.
10890         (variable_canonicalize): Use unshared slot.
10891         (VALUED_RECURSED_INTO): New.
10892         (find_loc_in_1pdv): New.
10893         (struct dfset_merge): New.
10894         (insert_into_intersection): New.
10895         (intersect_loc_chains): New.
10896         (loc_cmp): New.
10897         (canonicalize_loc_order_check): New.
10898         (canonicalize_values_mark): New.
10899         (canonicalize_values_star): New.
10900         (variable_merge_over_cur): New.
10901         (variable_merge_over_src): New.
10902         (dataflow_set_merge): New.
10903         (dataflow_set_equiv_regs): New.
10904         (remove_duplicate_values): New.
10905         (struct dfset_post_merge): New.
10906         (variable_post_merge_new_vals): New.
10907         (variable_post_merge_perm_vals): New.
10908         (dataflow_post_merge_adjust): New.
10909         (find_mem_expr_in_1pdv): New.
10910         (dataflow_set_preserve_mem_locs): New.
10911         (dataflow_set_remove_mem_locs): New.
10912         (dataflow_set_clear_at_call): New.
10913         (onepart_variable_different_p): New.
10914         (variable_different_p): Use it.
10915         (dataflow_set_different_1): Adjust.  Make detailed dump more verbose.
10916         (track_expr_p): Add need_rtl parameter.  Don't generate rtl
10917         if not needed.
10918         (track_loc_p): Pass it true.
10919         (struct count_use_info): New.
10920         (find_use_val): New.
10921         (replace_expr_with_values): New.
10922         (log_op_type): New.
10923         (use_type): New, partially split out of...
10924         (count_uses): ... this.  Count new micro-ops.
10925         (count_uses_1): Adjust.
10926         (count_stores): Adjust.
10927         (count_with_sets): New.
10928         (VAL_NEEDS_RESOLUTION): New.
10929         (VAL_HOLDS_TRACK_EXPR): New.
10930         (VAL_EXPR_IS_COPIED): New.
10931         (VAL_EXPR_IS_CLOBBERED): New.
10932         (add_uses): Adjust.  Generate new micro-ops.
10933         (add_uses_1): Adjust.
10934         (add_stores): Generate new micro-ops.
10935         (add_with_sets): New.
10936         (find_src_status): Adjust.
10937         (find_src_set_src): Adjust.
10938         (compute_bb_dataflow): Use dataflow_set_clear_at_call.
10939         Handle new micro-ops.  Canonicalize value equivalances.
10940         (vt_find_locations): Compute total size of hash tables for
10941         dumping.  Perform merge for var-tracking-assignments.  Don't
10942         disregard single-block loops.
10943         (dump_attrs_list): Handle decl_or_value.
10944         (dump_variable): Take variable.  Deal with decl_or_value.
10945         (dump_variable_slot): New.
10946         (dump_vars): Use it.
10947         (dump_dataflow_sets): Adjust.
10948         (set_slot_part): New, extended to support one-part variables
10949         after splitting out of...
10950         (set_variable_part): ... this.
10951         (clobber_slot_part): New, split out of...
10952         (clobber_variable_part): ... this.
10953         (delete_slot_part): New, split out of...
10954         (delete_variable_part): .... this.
10955         (check_wrap_constant): New.
10956         (vt_expand_loc_callback): New.
10957         (vt_expand_loc): New.
10958         (emit_note_insn_var_location): Adjust.  Handle values.  Handle
10959         EMIT_NOTE_AFTER_CALL_INSN.
10960         (emit_notes_for_differences_1): Adjust.  Handle values.
10961         (emit_notes_for_differences_2): Likewise.
10962         (emit_notes_for_differences): Adjust.
10963         (emit_notes_in_bb): Take pointer to set.  Emit AFTER_CALL_INSN notes.
10964         Adjust.  Handle new micro-ops.
10965         (vt_add_function_parameters): Adjust.  Create and bind values.
10966         (vt_initialize): Adjust.  Initialize scratch_regs and
10967         valvar_pool, flooded and perm..  Initialize and use cselib.  Log
10968         operations.  Move some code to count_with_sets and add_with_sets.
10969         (delete_debug_insns): New.
10970         (vt_debug_insns_local): New.
10971         (vt_finalize): Release permp, valvar_pool, scratch_regs.  Finish
10972         cselib.
10973         (var_tracking_main): If var-tracking-assignments is enabled
10974         but var-tracking isn't, delete debug insns and leave.  Likewise
10975         if we exceed limits or fail the stack adjustments tests, and
10976         after all var-tracking processing.
10977         More in var-tracking, from Jakub Jelinek <jakub@redhat.com>:
10978         (dataflow_set): Add traversed_vars.
10979         (value_chain, const_value_chain): New typedefs.
10980         (value_chain_pool, value_chains): New variables.
10981         (value_chain_htab_hash, value_chain_htab_eq, add_value_chain,
10982         add_value_chains, add_cselib_value_chains, remove_value_chain,
10983         remove_value_chains, remove_cselib_value_chains): New functions.
10984         (shared_hash_find_slot_unshare_1, shared_hash_find_slot_1,
10985         shared_hash_find_slot_noinsert_1, shared_hash_find_1): New
10986         static inlines.
10987         (shared_hash_find_slot_unshare, shared_hash_find_slot,
10988         shared_hash_find_slot_noinsert, shared_hash_find): Update.
10989         (dst_can_be_shared): New variable.
10990         (unshare_variable): Unshare set->vars if shared, use shared_hash_*.
10991         Clear dst_can_be_shared.  If set->traversed_vars is non-NULL and
10992         different from set->vars, look up slot again instead of using the
10993         passed in slot.
10994         (dataflow_set_init): Initialize traversed_vars.
10995         (variable_union): Use shared_hash_*.  Use initially NO_INSERT
10996         lookup if set->vars is shared.  Don't keep slot cleared before
10997         calling unshare_variable.  Unshare set->vars if needed.  Adjust
10998         unshare_variable callers.  Clear dst_can_be_shared if needed.
10999         Even ->refcount == 1 vars must be unshared if set->vars is shared
11000         and var needs to be modified.
11001         (dataflow_set_union): Set traversed_vars during canonicalization.
11002         (VALUE_CHANGED, DECL_CHANGED): Define.
11003         (set_dv_changed, dv_changed_p): New static inlines.
11004         (track_expr_p): Clear DECL_CHANGED.
11005         (dump_dataflow_sets): Set it.
11006         (variable_was_changed): Call set_dv_changed.
11007         (emit_note_insn_var_location): Likewise.
11008         (changed_variables_stack): New variable.
11009         (check_changed_vars_1, check_changed_vars_2): New functions.
11010         (emit_notes_for_changes): Do nothing if changed_variables is
11011         empty.  Traverse changed_variables with check_changed_vars_1,
11012         call check_changed_vars_2 on each changed_variables_stack entry.
11013         (emit_notes_in_bb): Add SET argument.  Just clear it at the
11014         beginning, use it instead of local &set, don't destroy it at the end.
11015         (vt_emit_notes): Call dataflow_set_clear early on all
11016         VTI(bb)->out sets, never use them, instead use emit_notes_in_bb
11017         computed set, dataflow_set_clear also VTI(bb)->in when we are
11018         done with the basic block.  Initialize changed_variables_stack,
11019         free it afterwards.  If ENABLE_CHECKING verify that after noting
11020         differences to an empty set value_chains hash table is empty.
11021         (vt_initialize): Initialize value_chains and value_chain_pool.
11022         (vt_finalize): Delete value_chains htab, free value_chain_pool.
11023         (variable_tracking_main): Call dump_dataflow_sets before calling
11024         vt_emit_notes, not after it.
11025         * tree-flow.h (propagate_defs_into_debug_stmts): Declare.
11026         (propagate_var_def_into_debug_stmts): Declare.
11027         * df-problems.c (df_lr_bb_local_compute): Skip debug insns.
11028         (df_set_note): Reject debug insns.
11029         (df_whole_mw_reg_dead_p): Take added_notes_p argument.  Don't
11030         add notes to debug insns.
11031         (df_note_bb_compute): Adjust.  Likewise.
11032         (df_simulate_uses): Skip debug insns.
11033         (df_simulate_initialize_backwards): Likewise.
11034         * reg-stack.c (subst_stack_regs_in_debug_insn): New.
11035         (subst_stack_regs_pat): Reject debug insns.
11036         (convert_regs_1): Handle debug insns.
11037         * Makefile.in (TREE_INLINE_H): Take pointer-set.h from GIMPLE_H.
11038         (print-rtl.o): Depend on cselib.h.
11039         (cselib.o): Depend on TREE_PASS_H.
11040         (var-tracking.o): Depend on cselib.h and TARGET_H.
11041         * sched-rgn.c (rgn_estimate_number_of_insns): Discount debug insns.
11042         (init_ready_list): Skip boundary debug insns.
11043         (add_branch_dependences): Skip debug insns.
11044         (free_block_dependencies): Check for blocks with only debug insns.
11045         (compute_priorities): Likewise.
11046         * gimple.c (gss_for_code): Handle GIMPLE_DEBUG.
11047         (gimple_build_with_ops_stat): Take subcode as unsigned.  Adjust
11048         all callers.
11049         (gimple_build_debug_bind_stat): New.
11050         (empty_body_p): Skip debug stmts.
11051         (gimple_has_side_effects): Likewise.
11052         (gimple_rhs_has_side_effects): Likewise.
11053         * gimple.h (enum gimple_debug_subcode, GIMPLE_DEBUG_BIND): New.
11054         (gimple_build_debug_bind_stat): Declare.
11055         (gimple_build_debug_bind): Define.
11056         (is_gimple_debug): New.
11057         (gimple_debug_bind_p): New.
11058         (gimple_debug_bind_get_var): New.
11059         (gimple_debug_bind_get_value): New.
11060         (gimple_debug_bind_get_value_ptr): New.
11061         (gimple_debug_bind_set_var): New.
11062         (gimple_debug_bind_set_value): New.
11063         (GIMPLE_DEBUG_BIND_NOVALUE): New internal temporary macro.
11064         (gimple_debug_bind_reset_value): New.
11065         (gimple_debug_bind_has_value_p): New.
11066         (gsi_next_nondebug): New.
11067         (gsi_prev_nondebug): New.
11068         (gsi_start_nondebug_bb): New.
11069         (gsi_last_nondebug_bb): New.
11070         * sched-vis.c (print_pattern): Handle VAR_LOCATION.
11071         (print_insn): Handle DEBUG_INSN.
11072         * tree-cfg.c (remove_bb): Walk stmts backwards.  Let loc
11073         of first insn prevail.
11074         (first_stmt): Skip debug stmts.
11075         (first_non_label_stmt): Likewise.
11076         (last_stmt): Likewise.
11077         (has_zero_uses_1): New.
11078         (single_imm_use_1): New.
11079         (verify_gimple_debug): New.
11080         (verify_types_in_gimple_stmt): Handle debug stmts.
11081         (verify_stmt): Likewise.
11082         (debug_loop_num): Skip debug stmts.
11083         (remove_edge_and_dominated_blocks): Remove dominators last.
11084         * tree-ssa-reasssoc.c (rewrite_expr_tree): Propagate into debug stmts.
11085         (linearize_expr): Likewise.
11086         * config/i386/i386.c (ix86_delegitimize_address): Call
11087         default implementation.
11088         * config/ia64/ia64.c (ia64_safe_itanium_class): Handle debug insns.
11089         (group_barrier_needed): Skip debug insns.
11090         (emit_insn_group_barriers): Likewise.
11091         (emit_all_insn_group_barriers): Likewise.
11092         (ia64_variable_issue): Handle debug insns.
11093         (ia64_dfa_new_cycle): Likewise.
11094         (final_emit_insn_group_barriers): Skip debug insns.
11095         (ia64_dwarf2out_def_steady_cfa): Take frame argument.  Don't
11096         def cfa without frame.
11097         (process_set): Likewise.
11098         (process_for_unwind_directive): Pass frame on.
11099         * config/rs6000/rs6000.c (TARGET_DELEGITIMIZE_ADDRESS): Define.
11100         (rs6000_delegitimize_address): New.
11101         (rs6000_debug_adjust_cost): Handle debug insns.
11102         (is_microcoded_insn): Likewise.
11103         (is_cracked_insn): Likewise.
11104         (is_nonpipeline_insn): Likewise.
11105         (insn_must_be_first_in_group): Likewise.
11106         (insn_must_be_last_in_group): Likewise.
11107         (force_new_group): Likewise.
11108         * cfgrtl.c (rtl_split_block): Emit INSN_DELETED note if block
11109         contains only debug insns.
11110         (rtl_merge_blocks): Skip debug insns.
11111         (purge_dead_edges): Likewise.
11112         (rtl_block_ends_with_call_p): Skip debug insns.
11113         * dce.c (deletable_insn_p): Handle VAR_LOCATION.
11114         (mark_reg_dependencies): Skip debug insns.
11115         * params.def (PARAM_MIN_NONDEBUG_INSN_UID): New.
11116         * tree-ssanames.c (release_ssa_name): Propagate def into debug stmts.
11117         * tree-ssa-threadedge.c
11118         (record_temporary_equivalences_from_stmts): Skip debug stmts.
11119         * regcprop.c (replace_oldest_value_addr): Skip debug insns.
11120         (replace_oldest_value_mem): Use ALL_REGS for debug insns.
11121         (copyprop_hardreg_forward_1): Handle debug insns.
11122         * reload1.c (reload): Skip debug insns.  Replace unassigned
11123         pseudos in debug insns with their equivalences.
11124         (eliminate_regs_in_insn): Skip debug insns.
11125         (emit_input_reload_insns): Skip debug insns at first, adjust
11126         them later.
11127         * tree-ssa-operands.c (add_virtual_operand): Reject debug stmts.
11128         (get_indirect_ref_operands): Pass opf_no_vops on.
11129         (get_expr_operands): Likewise.  Skip debug stmts.
11130         (parse_ssa_operands): Scan debug insns with opf_no_vops.
11131
11132 2009-09-01  Richard Henderson  <rth@redhat.com>
11133
11134         * tree-ssa-ccp.c (ccp_initialize): Make sure to simulate
11135         stmt_ends_pp_p statements at least once.
11136         * tree-vrp.c (vrp_initialize): Likewise.
11137         (vrp_visit_stmt): Be prepared for non-interesting stmts.
11138
11139 2009-09-01  Dodji Seketeli  <dodji@redhat.com>
11140
11141         PR bootstrap/41205
11142         Fix AIX bootstrap after PR debug/30161
11143         * dwarf2out.c (make_ith_pack_parameter_name): Don't used strnlen
11144         that is a GNU extension.
11145         (tmpl_value_parm_die_table): Move the definition of this global
11146         outside #ifdef DWARF2_DEBUGGING_INFO region.
11147
11148 2009-09-01  Richard Guenther  <rguenther@suse.de>
11149
11150         * tree.c (tree_expr_size): New function.
11151         * tree.h (tree_expr_size): Declare.
11152         * rtlanal.c (rtx_addr_can_trap_p_1): Adjust comment.
11153         * builtins.c (fold_builtin_memory_op): Use tree_expr_size.
11154         * langhooks.c (lhd_expr_size): Remove.
11155         * langhooks.h (struct lang_hooks): Remove expr_size.
11156         * explow.c (expr_size): Use tree_expr_size.
11157         (int_expr_size): Likewise.
11158         * langhooks-def.h (lhd_expr_size): Remove.
11159         (LANG_HOOKS_EXPR_SIZE): Likewise.
11160         (LANG_HOOKS_INITIALIZER): Adjust.
11161
11162 2009-09-01  Richard Guenther  <rguenther@suse.de>
11163
11164         * tree-flow.h (mark_addressable): Move declaration ...
11165         * tree.h (mark_addressable): ... here.
11166         * stmt.c (expand_asm_operands): Use mark_addressable, not
11167         lang_hooks.mark_addressable.
11168         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
11169         LANG_HOOKS_MARK_ADDRESSABLE.
11170         * langhooks.h (struct lang_hooks): Remove mark_addressable langhook.
11171         * c-objc-common.h (LANG_HOOKS_MARK_ADDRESSABLE): Remove.
11172
11173 2009-08-31  Chris Demetriou  <cgd@google.com>
11174
11175         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Never
11176         vectorize if not TARGET_SSE2.
11177
11178 2009-08-31  DJ Delorie  <dj@redhat.com>
11179
11180         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Exclude coprocessor
11181         registers if no coprocessor is enabled.
11182
11183 2009-08-31  Dodji Seketeli  <dodji@redhat.com>
11184
11185         PR debug/30161
11186         * cgraph.h (cgraph_get_node): Declare ...
11187         * cgraph.c (cgraph_get_node): ... new function.
11188         * dwarf2out.c (gen_generic_params_dies,
11189         generic_parameter_die, tree_add_const_value_attribute_for_decl,
11190         make_ith_pack_parameter_name,
11191         append_entry_to_tmpl_value_parm_die_table,
11192         gen_remaining_tmpl_value_param_die_attribute): New functions.
11193         (gen_subprogram_die): Generate debug info for template parameters
11194         if debug info level is higher than DINFO_LEVEL_TERSE.
11195         Use tree_add_const_value_attribute_for_decl instead of
11196         tree_add_const_value_attribute.
11197         (gen_const_die): Use tree_add_const_value_attribute_for_decl
11198         instead of tree_add_const_value_attribute.
11199         (gen_struct_or_union_type_die): Generate debug
11200         info for template parameters if debug info level is higher than
11201         DINFO_LEVEL_TERSE.
11202         (tree_add_const_value_attribute): Handle integral and pointer
11203         constants. Update comment.
11204         (dwarf_tag_name): Support DW_TAG_GNU_template_template_param.
11205         (dwarf_attr_name): Support DW_AT_GNU_template_name.
11206         (reference_to_unused): Fix thinko. Remove redundant predicates from
11207         tests.
11208         (tree_add_const_value_attribute): Make this work for constant
11209         expressions only.
11210         tree_add_const_value_attribute_for_decl is to be used for variable
11211         DECLs now.
11212         (add_location_or_const_value_attribute): Use
11213         tree_add_const_value_attribute_for_decl now.
11214         (dwarf2out_finish): Emit the DW_AT_const_value attribute of
11215         DW_TAG_template_value_param DIEs after function DIEs have been
11216         emitted.
11217         * langhooks.h (lang_hooks_for_types): Add
11218         get_argument_pack_elems.
11219         (lang_hooks_for_decls): Add generic_generic_parameter_decl_p.
11220         (lang_hooks): Added get_innermost_generic_parms,
11221         get_innermost_generic_args.
11222         * langhooks-def.h (LANG_HOOKS_GET_INNERMOST_GENERIC_PARMS,
11223         LANG_HOOKS_GET_INNERMOST_GENERIC_ARGS,
11224         LANG_HOOKS_GET_ARGUMENT_PACK_ELEMS,
11225         LANG_HOOKS_GENERIC_GENERIC_PARAMETER_DECL_P): New language hooks.
11226
11227 2009-08-31  DJ Delorie  <dj@redhat.com>
11228
11229         * config/mep/mep.c (machine_function): Add frame_locked flag.  Set
11230         it once we start generating the prologue or epilogue.
11231         (mep_call_saves_register): If the frame is locked, re-use
11232         cached values.
11233         (mep_assign_save_slots): New, broken out from mep_expand_prologue.
11234         (mep_expand_prologue): Call it.
11235         (mep_expand_epilogue): Likewise.
11236         (mep_start_function): Use the same logic as mep_expand_prologue.
11237         (mep_pass_by_reference): Make logic more readable.
11238         (mep_return_in_memory): Zero-sized objects are passed in memory.
11239         (mep_reorg_noframe): Make sure we have accurate REG_DEAD notes.
11240
11241 2009-08-31  Richard Guenther  <rguenther@suse.de>
11242
11243         * builtins.c (fold_builtin_memory_op): Use the alias oracle
11244         to query if the memory regions for memmove overlap.
11245         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
11246         asserts on pointers, instead deal with odd trees.
11247         (ptr_derefs_may_alias_p): Likewise.
11248         (refs_may_alias_p_1): Constructor bases also never alias.
11249
11250 2009-08-31  Gerald Pfeifer  <gerald@pfeifer.com>
11251
11252         * doc/install.texi (Final install): Adjust reference on where to
11253         order printed manuals.
11254
11255 2009-08-30  Olivier Hainque  <hainque@adacore.com>
11256
11257         * dwarf2out.c (switch_to_frame_table_section): Move
11258         definition prior to first use.
11259
11260 2009-08-30  Richard Guenther  <rguenther@suse.de>
11261
11262         PR tree-optimization/41186
11263         * tree-ssa-alias.c (ptr_deref_may_alias_ref_p): Remove.
11264         (ao_ref_init_from_ptr_and_size): New function.
11265         (ref_maybe_used_by_call_p_1): Be more precise tracking
11266         used ranges for builtin functions.
11267         (ref_maybe_used_by_call_p): Adjust.
11268         (call_may_clobber_ref_p_1): Be more precise tracking clobbered
11269         ranges for builtin functions.
11270         * tree-ssa-alias.h (ao_ref_init_from_ptr_and_size): Declare.
11271
11272 2009-08-30  Alan Modra  <amodra@bigpond.net.au>
11273
11274         PR target/41081
11275         * fwprop.c (get_reg_use_in): Delete.
11276         (free_load_extend): New function.
11277         (forward_propagate_subreg): Use it.
11278
11279 2009-08-29  Kaz Kojima  <kkojima@gcc.gnu.org>
11280
11281         * config.gcc (sh*-*-elf): Add superh stuff only for sh*-superh-elf.
11282
11283 2009-08-29  Kai Tietz<kai.tietz@onevision.com>
11284
11285         PR/41184
11286         * config/i386.c (ix86_expand_epilogue): Correct stack adjustment for
11287         padding.
11288
11289 2009-08-29  Douglas B Rupp  <rupp@gnat.com>
11290
11291         * crtstuff.c (__do_global_dtors_aux): Use atexit if no
11292         fini or fini_array section.
11293
11294 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
11295
11296         * graphite-dependences.c (graphite_legal_transform_bb): Call
11297         pbb_remove_duplicate_pdrs.
11298         * graphite-poly.c (can_collapse_pdr): Removed.
11299         (pdr_find_duplicate): Removed.
11300         (can_collapse_pdrs): New.
11301         (pbb_remove_duplicate_pdrs): New.
11302         (new_poly_dr): Do not look for duplicates.
11303         * graphite-poly.h (struct poly_bb): New field pdr_duplicates_removed.
11304         (PBB_PDR_DUPLICATES_REMOVED): New.
11305         (pbb_remove_duplicate_pdrs): Declared.
11306
11307 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
11308
11309         * graphite-interchange.c (pbb_interchange_profitable_p): Adjust
11310         the strides by multiplying by PDR_NB_REFS.
11311         * graphite-poly.c (can_collapse_pdr): New.
11312         (pdr_find_duplicate): New.
11313         (new_poly_dr): Call pdr_find_duplicate.  Collapse duplicate PDRs.
11314         Initialize PDR_NB_REFS.
11315         * graphite-poly.h (struct poly_dr): Add field nb_refs.
11316         (PDR_NB_REFS): New.
11317         (new_poly_dr): Number of subscripts is a graphite_dim_t.
11318
11319 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
11320
11321         PR middle-end/40965
11322         * graphite-poly.c (apply_poly_transforms): Remove legality test before
11323         any transform.
11324
11325 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
11326
11327         * graphite-dependences.c (pddr_original_scattering): Return NULL
11328         for read-read dependence relations.
11329         * graphite-poly.h (enum poly_dr_type): Fix comment.
11330         (pdr_read_p): New.
11331         (pdr_write_p): New.
11332         (pdr_may_write_p): New.
11333
11334 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
11335
11336         * graphite-poly.h (enum POLY_DR_TYPE): Renamed poly_dr_type.
11337         (struct poly_dr): Same.
11338         (new_poly_dr): Same.
11339         * graphite-poly.c (new_poly_dr): Same.
11340         * graphite-dependences.c (dot_deps): Disable call to system.
11341
11342 2009-08-28  Cary Coutant  <ccoutant@google.com>
11343
11344         PR debug/41063
11345         * dwarf2out.c (gen_type_die_with_usage): Use proper context for
11346         struct/union/enum types local to a function.
11347
11348 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
11349             Sebastian Pop  <sebastian.pop@amd.com>
11350
11351         * graphite-blocking.c (pbb_strip_mine_loop_depth): Renamed
11352         pbb_strip_mine_time_depth.  Changed the implementation so that
11353         transformation is expressed as a transformation on
11354         time (scatttering) dimensions.  Also, ensures that the 2d+1
11355         scheduling format is preserved.
11356         (pbb_strip_mine_profitable_p): Profitability is based on the
11357         iteration number of a given time (scattering) dimension,
11358         and not on a original loop depth dimension.
11359         (pbb_strip_mine): Call pbb_number_of_iterations_at_time.
11360         (pbb_do_strip_mine): Call psct_dynamic_dim.
11361         * graphite-poly.c (pbb_number_of_iterations_at_time): New.
11362         * graphite-poly.h (pbb_number_of_iterations_at_time): Declared.
11363         (pbb_nb_dynamic_scattering_transform): New.
11364         (psct_dynamic_dim): New.
11365
11366 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
11367
11368         * graphite-ppl.c (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
11369         * graphite-ppl.h (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
11370         * graphite-poly.c (pbb_number_of_iterations): Rename ppl_max_for_le.
11371         * graphite-interchange.c (build_linearized_memory_access): Same.
11372         (memory_stride_in_loop): Same.
11373
11374 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
11375
11376         * graphite-dependences.c (pddr_original_scattering): New.
11377         (graphite_legal_transform_dr): Call pddr_original_scattering.
11378         (dot_deps_1): New.
11379         (dot_deps): New.
11380         * graphite-dependences.h (dot_deps): Declared.
11381         * graphite-poly.c (new_poly_dr): Initialize PDR_ID.
11382         (print_pdr): Print PDR_ID.
11383         * graphite-poly.h (struct poly_dr): Add field id.
11384         (PDR_ID): New.
11385         (pbb_index): New.
11386         * graphite-scop-detection.c (dot_all_scops_1): Cleanup comment.
11387
11388 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
11389
11390         * graphite-dependences.c (graphite_carried_dependence_level_k): Do
11391         not delete the original dependence relation.
11392
11393 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
11394
11395         * graphite-dependences.c (new_poly_dr_pair): Renamed new_poly_ddr.
11396         (eq_poly_dr_pair_p): Renamed eq_poly_ddr_p.
11397         (hash_poly_dr_pair_p): Renamed hash_poly_ddr_p.
11398         (free_poly_ddr): New.
11399         (pddr_is_empty): New.
11400         (dependence_polyhedron_1): Now returns a poly_ddr_p.
11401         (dependence_polyhedron): Same.  Remove useless gcc_assert.
11402         Remove fprintfs.
11403         (graphite_legal_transform_dr): Call pddr_is_empty and free_poly_ddr.
11404         (graphite_carried_dependence_level_k): Call pddr_is_empty.
11405         * graphite-dependences.h (enum poly_dependence_kind): New.
11406         (poly_dr_pair): Renamed poly_ddr.  Added a field kind.
11407         (PDRP_SOURCE): Renamed PDDR_SOURCE.
11408         (PDRP_SINK): Renamed PDDR_SINK.
11409         (PDRP_DDP): Renamed PDDR_DDP.
11410         (PDDR_KIND): New.
11411         (free_poly_ddr): Declared.
11412         * graphite-poly.c (new_scop): Use the new hash function names.
11413         * graphite-poly.h (struct scop): Renamed field original_pdr_pairs
11414         into original_pddrs.
11415         (SCOP_ORIGINAL_PDR_PAIRS): Renamed SCOP_ORIGINAL_PDDRS.
11416
11417 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
11418
11419         * cfgloopmanip.c (create_empty_loop_on_edge): Generate upper
11420         bounds with LT_EXPR to make niter analysis more precise on code
11421         generated by Graphite.
11422
11423 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
11424
11425         * graphite-dependences.c (graphite_legal_transform_dr): Fix formatting.
11426         (graphite_legal_transform_bb): Same.
11427         (poly_drs_may_alias_p): Same.
11428
11429 2009-08-28  Richard Guenther  <rguenther@suse.de>
11430
11431         * tree.def: Remove note about obsolete TYPE_NONCOPIED_PARTS.
11432
11433 2009-08-28  Jan Beulich  <jbeulich@novell.com>
11434
11435         * config/i386/netware.c: Include langhooks.h.
11436         (i386_nlm_encode_section_info): Simplify.
11437         (netware_override_options): Delete.
11438         * config/i386/netware.h (netware_override_options): Delete
11439         declaration.
11440         (OVERRIDE_OPTIONS): Delete definition.
11441         (SUBTARGET_OVERRIDE_OPTIONS): Define.
11442         (ASM_COMMENT_START): Define.
11443         * config/i386/nwld.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Define.
11444
11445 2009-08-28  Jan Beulich  <jbeulich@novell.com>
11446
11447         * configure.ac: For in-tree ld, do a plain version check to
11448         determine whether comdat groups are supported.
11449         * configure: Regenerate.
11450
11451 2009-08-28  Olivier Hainque  <hainque@adacore.com>
11452
11453         * collect2.c (DO_COLLECT_EXPORT_LIST): New internal macro,
11454         always defined.  Reflect definition or absence of such for
11455         COLLECT_EXPORT_LIST.  Readability helper.
11456         (scanfilter): New enum, to help control what symbols
11457         are to be considered or ignored by scan_prog_file.
11458         (enum pass): Rename as "scanpass", moved together with scanfilter
11459         prior to scan_prog_file's prototype.
11460         (scan_prog_file): Accept and honor scanpass and scanfilter arguments.
11461         Group prototype with the scanpass/scanfilter definitions, factorize
11462         head comments for the several implementations at the prototype.
11463         (main): Reorganize the first pass link control to let AIX
11464         drag only the needed frame tables in executables.  Prevent
11465         frame tables collection during the scan aimed at static ctors.
11466         Pre-link and scan for frame tables later to compensate.
11467         * doc/tm.texi (ASM_OUTPUT_DWARF_TABLE_REF): New macro.
11468         A C statement to issue assembly directives that create a reference
11469         to the given DWARF table identifier label from the current function
11470         section.
11471         * dwarf2out.c (switch_to_eh_frame_section): Add a BACK argument
11472         to differentiate first time section entry.  Only emit a .data
11473         tables start identifier label the first time around.
11474         (switch_to_frame_table_section): New function.  Helper for
11475         output_call_frame_info to switch possibly BACK into the eh_frame
11476         or the debug_frame section depending on FOR_EH.
11477         (output_call_frame_info): Use helper to first enter the proper
11478         frame section.
11479         (output_fde): Use ASM_OUTPUT_DWARF_TABLE_REF when defined to
11480         emit a link to the frame table start label from each function
11481         section.
11482         * config/rs6000/rs6000.c (rs6000_aix_asm_output_dwarf_table_ref):
11483         New function.  Implementation of ASM_OUTPUT_DWARF_TABLE_REF.
11484         * config/rs6000/rs6000-protos.h: Declare it.
11485         * config/rs6000/aix.h (ASM_OUTPUT_DWARF_TABLE_REF): Define.
11486
11487 2009-08-27  Kaz Kojima  <kkojima@gcc.gnu.org>
11488
11489         * config/sh/sh.c (split_branches): Check the result of
11490         next_active_insn.
11491
11492 2009-08-27  Steve Ellcey  <sje@cup.hp.com>
11493
11494         * config/ia64/hpux.h (LIB_SPEC): Add -lrt for when
11495         using -pthread -fopenmp
11496
11497 2009-08-27  Gerald Pfeifer  <gerald@pfeifer.com>
11498
11499         * doc/service.texi (service directory): Update URL.
11500
11501 2009-08-27  Uros Bizjak  <ubizjak@gmail.com>
11502
11503         PR rtl-optimization/40861
11504         * simplify-rtx.c (simplify_subreg): Do not call simplify_gen_subreg to
11505         extract word from a multi-word subreg for negative byte positions.
11506
11507 2009-08-27  Tristan Gingold  <gingold@adacore.com>
11508             Douglas B Rupp  <rupp@gnat.com>
11509
11510         * config/ia64/ia64.c (ia64_attribute_table): Add "common_object" entry.
11511         (SECTION_VMS_OVERLAY): Define.
11512         (ia64_vms_common_object_attribute): Added.  Handle the "common_object"
11513         attribute.
11514         (ia64_vms_elf_asm_named_section): Added.  Generate .section pseudo-op
11515         for common_object.
11516         (ia64_vms_output_aligned_decl_common): Added.  Generate pseudo-op for
11517         common_object declarations.
11518         (ia64_section_type_flags): Set section flag for common_object.
11519         * config/ia64/ia64-protos.h
11520         (ia64_vms_output_aligned_decl_common): Declare.
11521         (ia64_vms_elf_asm_named_section): Declare.
11522
11523 2009-08-27  Michael Matz  <matz@suse.de>
11524
11525         * expr.c (expand_expr_real_2): New function taking exploded
11526         unary or binary expression, split out from ...
11527         (expand_expr_real_1): ... here.  Move over all unary/binary
11528         switch parts to above function, in particular these codes:
11529         PAREN_EXPR, NOP_EXPR, CONVERT_EXPR, POINTER_PLUS_EXPR, PLUS_EXPR,
11530         MINUS_EXPR, MULT_EXPR, TRUNC_DIV_EXPR, FLOOR_DIV_EXPR, CEIL_DIV_EXPR,
11531         ROUND_DIV_EXPR, EXACT_DIV_EXPR, RDIV_EXPR, TRUNC_MOD_EXPR,
11532         FLOOR_MOD_EXPR, CEIL_MOD_EXPR, ROUND_MOD_EXPR, FIXED_CONVERT_EXPR,
11533         FIX_TRUNC_EXPR, FLOAT_EXPR, NEGATE_EXPR, ABS_EXPR, MAX_EXPR, MIN_EXPR,
11534         BIT_NOT_EXPR, TRUTH_AND_EXPR, BIT_AND_EXPR, TRUTH_OR_EXPR,
11535         BIT_IOR_EXPR, TRUTH_XOR_EXPR, BIT_XOR_EXPR, LROTATE_EXPR, RROTATE_EXPR,
11536         LSHIFT_EXPR, RSHIFT_EXPR, LT_EXPR, LE_EXPR, GT_EXPR, GE_EXPR, EQ_EXPR,
11537         NE_EXPR, UNORDERED_EXPR, ORDERED_EXPR, UNLT_EXPR, UNLE_EXPR, UNGT_EXPR,
11538         UNGE_EXPR, UNEQ_EXPR, LTGT_EXPR, TRUTH_NOT_EXPR, COMPLEX_EXPR,
11539         WIDEN_SUM_EXPR, REDUC_MAX_EXPR, REDUC_MIN_EXPR, REDUC_PLUS_EXPR,
11540         VEC_EXTRACT_EVEN_EXPR, VEC_EXTRACT_ODD_EXPR, VEC_INTERLEAVE_HIGH_EXPR,
11541         VEC_INTERLEAVE_LOW_EXPR, VEC_LSHIFT_EXPR, VEC_RSHIFT_EXPR,
11542         VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR, VEC_UNPACK_FLOAT_HI_EXPR,
11543         VEC_UNPACK_FLOAT_LO_EXPR, VEC_WIDEN_MULT_HI_EXPR,
11544         VEC_WIDEN_MULT_LO_EXPR, VEC_PACK_TRUNC_EXPR, VEC_PACK_SAT_EXPR,
11545         VEC_PACK_FIX_TRUNC_EXPR.
11546         (<case PAREN_EXPR>): Call set_mem_attributes() with type, not the
11547         full expression.
11548
11549 2009-08-27  Richard Guenther  <rguenther@suse.de>
11550
11551         * gengtype.c (main): Handle uint64_t.
11552         * ipa-utils.c (get_base_var): Indent properly.
11553         * tree-ssa-live.c (debug_scope_block): New function.
11554         * tree-flow.h (debug_scope_block): Declare.
11555         * tree-ssa-copy.c (replace_exp_1): Add vertical space.
11556         * basic-block.h (enum profile_status): Rename to
11557         enum profile_status_d.
11558         (x_profile_status): Adjust type.
11559
11560 2009-08-27  Dodji Seketeli  <dodji@redhat.com>
11561
11562         PR debug/41170
11563         * dwarf2out.c (get_context_die): Declare this static function.
11564         (gen_type_die_with_usage): Make sure a DIE is a generated for
11565         the context of a typedef.
11566
11567 2009-08-26  Anatoly Sokolov  <aesok@post.ru>
11568
11569         * doc/invoke.texi (AVR Options): Remove documentation of -minit-stack
11570         switch.
11571
11572 2009-08-26  Richard Sandiford  <rdsandiford@googlemail.com>
11573
11574         * config/mips/mips-protos.h (mips_output_sync): Declare.
11575         (mips_sync_loop_insns): Likewise.
11576         (mips_output_sync_loop): Replace first two parameters with an rtx.
11577         * config/mips/mips.c (mips_multi_member): New structure.
11578         (mips_multi_members): New variable.
11579         (mips_multi_start): New function.
11580         (mips_multi_add): Likewise.
11581         (mips_multi_add_insn): Likewise.
11582         (mips_multi_add_label): Likewise.
11583         (mips_multi_last_index): Likewise.
11584         (mips_multi_copy_insn): Likewise.
11585         (mips_multi_set_operand): Likewise.
11586         (mips_multi_write): Likewise.
11587         (mips_print_operand_punctuation): Remove '%|' and '%-'.
11588         (mips_init_print_operand_punct): Update accordingly.
11589         (mips_start_ll_sc_sync_block): New function.
11590         (mips_end_ll_sc_sync_block): Likewise.
11591         (mips_output_sync): Likewise.
11592         (mips_sync_insn1_template): Likewise.
11593         (mips_sync_insn2_template): Likewise.
11594         (mips_get_sync_operand): Likewise.
11595         (mips_process_sync_loop): Likewise.
11596         (mips_output_sync_loop): Use mips_process_sync_loop.
11597         (mips_sync_loop_insns): New function.
11598         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Delete.
11599         (MIPS_COMPARE_AND_SWAP_12): Likewise.
11600         (MIPS_COMPARE_AND_SWAP_12_ZERO_OP): Likewise.
11601         (MIPS_COMPARE_AND_SWAP_12_NONZERO_OP): Likewise.
11602         (MIPS_SYNC_OP, MIPS_SYNC_OP_12): Likewise.
11603         (MIPS_SYNC_OP_12_AND, MIPS_SYNC_OP_12_XOR): Likewise.
11604         (MIPS_SYNC_OLD_OP_12): Likewise.
11605         (MIPS_SYNC_OLD_OP_12_AND, MIPS_SYNC_OLD_OP_12_XOR): Likewise.
11606         (MIPS_SYNC_NEW_OP_12): Likewise.
11607         (MIPS_SYNC_NEW_OP_12_AND, MIPS_SYNC_NEW_OP_12_XOR): Likewise.
11608         (MIPS_SYNC_OLD_OP, MIPS_SYNC_NEW_OP): Likewise.
11609         (MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND, MIPS_SYNC_NEW_NAND): Likewise.
11610         (MIPS_SYNC_EXCHANGE, MIPS_SYNC_EXCHANGE_12): Likewise.
11611         (MIPS_SYNC_EXCHANGE_12_ZERO_OP): Likewise.
11612         (MIPS_SYNC_EXCHANGE_12_NONZER_OP): Likewise.
11613         * config/mips/mips.md (sync_mem): New attribute.
11614         (sync_oldval, sync_newval, sync_inclusive_mask): Likewise.
11615         (sync_exclusive_mask, sync_required_oldval): Likewise.
11616         (sync_insn1_op2, sync_insn1, sync_insn2): Likewise.
11617         (sync_release_barrier): Likewise.
11618         (length): Handle sync loops.
11619         (sync): Use mips_output_sync.
11620         * config/mips/sync.md (*memory_barrier): Use mips_output_sync.
11621         (sync_compare_and_swap<mode>): Set the new sync_* attributes
11622         and use mips_output_sync_loop.
11623         (compare_and_swap_12, sync_add<mode>, sync_<optab>_12): Likewise.
11624         (sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12): Likewise.
11625         (sync_old_nand_12, sync_new_nand_12, sync_sub<mode>): Likewise.
11626         (sync_old_add<mode>, sync_old_sub<mode>): Likewise.
11627         (sync_new_add<mode>, sync_new_sub<mode>): Likewise.
11628         (sync_<optab><mode>, sync_old_<optab><mode>): Likewise.
11629         (sync_new_<optab><mode>, sync_nand<mode>): Likewise.
11630         (sync_old_nand<mode>, sync_new_nand<mode>): Likewise.
11631         (sync_lock_test_and_set<mode>, test_and_set_12): Likewise.
11632
11633 2009-08-26  Richard Guenther  <rguenther@suse.de>
11634
11635         PR middle-end/41163
11636         * gimplify.c (gimplify_addr_expr): Canonicalize ADDR_EXPRs if
11637         the types to not match.
11638         * tree-cfg.c (verify_gimple_assign_single): Adjust ADDR_EXPR
11639         verification.
11640         * tree-ssa.c (useless_type_conversion_p): Conversions to
11641         pointers to unprototyped functions are useless.
11642
11643 2009-08-26  Richard Guenther  <rguenther@suse.de>
11644
11645         * tree-ssa-structalias.c (create_variable_info_for): Remove strange
11646         whole-program condition, prepare to be called for non-globals.
11647         (intra_create_variable_infos): For restrict qualified DECL_BY_REFERENCE
11648         params build a representative with known type and track its fields.
11649
11650 2009-08-26  Uros Bizjak  <ubizjak@gmail.com>
11651
11652         * config/alpha/sync.md: Update comment about unpredictable LL/SC lock
11653         clearing by a taken branch.
11654         (sync_<fetchop_name><mode>): Split when epilogue_completed is set,
11655         effectively after bbro pass.
11656         (sync_nand<mode>): Ditto.
11657         (sync_old_<fetchop_name><mode>): Ditto.
11658         (sync_old_nand<mode>): Ditto.
11659         (sync_new_<fetchop_name><mode>): Dito.
11660         (sync_new_nand<mode>): Ditto.
11661         (sync_compare_and_swap<mode>_1): Ditto.
11662         (*sync_compare_and_swap<mode>): Ditto.
11663         (sync_lock_test_and_set<mode>_1): Ditto.
11664         ("sync_lock_test_and_set<mode>): Ditto.
11665
11666 2009-08-25  Douglas B Rupp  <rupp@gnat.com>
11667
11668         * hwint.h (HOST_LONG_FORMAT): New macro
11669         * bitmap.c, c-decl.c, mips-tfile.c, print-rtl.c, print-tree.c:
11670         Use HOST_PTR_PRINTF.
11671         * system.h (HOST_PTR_PRINTF): Resurrect old macro
11672         * doc/hostconfig.texi (HOST_LONG_FORMAT): Document.
11673         (HOST_PTR_PRINTF): Document.
11674
11675 2009-08-25 Jan Hubicka  <jh@suse.cz>
11676
11677         * config/i386/bmmintrin.h: Replace by #error.
11678
11679         Revert:
11680         Michael Meissner  <michael.meissner@amd.com>
11681         Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
11682         Tony Linthicum  <tony.linthicum@amd.com>
11683
11684         * config/i386/i386.h (TARGET_SSE5): New macro for SSE5.
11685         (TARGET_ROUND): New macro for the round/ptest instructions which
11686         are shared between SSE4.1 and SSE5.
11687         (OPTION_MASK_ISA_ROUND): Ditto.
11688         (OPTION_ISA_ROUND): Ditto.
11689         (TARGET_FUSED_MADD): New macro for -mfused-madd swtich.
11690         (TARGET_CPU_CPP_BUILTINS): Add SSE5 support.
11691
11692         * config/i386/i386.opt (-msse5): New switch for SSE5 support.
11693         (-mfused-madd): New switch to give users control over whether the
11694         compiler optimizes to use the multiply/add SSE5 instructions.
11695
11696         * config/i386/i386.c (enum pta_flags): Add PTA_SSE5.
11697         (ix86_handle_option): Turn off 3dnow if -msse5.
11698         (override_options): Add SSE5 support.
11699         (print_operand): %Y prints comparison codes for SSE5 com/pcom
11700         instructions.
11701         (ix86_expand_sse_movcc): Add SSE5 support.
11702         (ix86_expand_sse5_unpack): New function to use pperm to unpack a
11703         vector type to the next largest size.
11704         (ix86_expand_sse5_pack): New function to use pperm to pack a
11705         vector type to the next smallest size.
11706         (IX86_BUILTIN_FMADDSS): New for SSE5 intrinsic.
11707         (IX86_BUILTIN_FMADDSD): Ditto.
11708         (IX86_BUILTIN_FMADDPS): Ditto.
11709         (IX86_BUILTIN_FMADDPD): Ditto.
11710         (IX86_BUILTIN_FMSUBSS): Ditto.
11711         (IX86_BUILTIN_FMSUBSD): Ditto.
11712         (IX86_BUILTIN_FMSUBPS): Ditto.
11713         (IX86_BUILTIN_FMSUBPD): Ditto.
11714         (IX86_BUILTIN_FNMADDSS): Ditto.
11715         (IX86_BUILTIN_FNMADDSD): Ditto.
11716         (IX86_BUILTIN_FNMADDPS): Ditto.
11717         (IX86_BUILTIN_FNMADDPD): Ditto.
11718         (IX86_BUILTIN_FNMSUBSS): Ditto.
11719         (IX86_BUILTIN_FNMSUBSD): Ditto.
11720         (IX86_BUILTIN_FNMSUBPS): Ditto.
11721         (IX86_BUILTIN_FNMSUBPD): Ditto.
11722         (IX86_BUILTIN_PCMOV_V2DI): Ditto.
11723         (IX86_BUILTIN_PCMOV_V4SI): Ditto.
11724         (IX86_BUILTIN_PCMOV_V8HI): Ditto.
11725         (IX86_BUILTIN_PCMOV_V16QI): Ditto.
11726         (IX86_BUILTIN_PCMOV_V4SF): Ditto.
11727         (IX86_BUILTIN_PCMOV_V2DF): Ditto.
11728         (IX86_BUILTIN_PPERM): Ditto.
11729         (IX86_BUILTIN_PERMPS): Ditto.
11730         (IX86_BUILTIN_PERMPD): Ditto.
11731         (IX86_BUILTIN_PMACSSWW): Ditto.
11732         (IX86_BUILTIN_PMACSWW): Ditto.
11733         (IX86_BUILTIN_PMACSSWD): Ditto.
11734         (IX86_BUILTIN_PMACSWD): Ditto.
11735         (IX86_BUILTIN_PMACSSDD): Ditto.
11736         (IX86_BUILTIN_PMACSDD): Ditto.
11737         (IX86_BUILTIN_PMACSSDQL): Ditto.
11738         (IX86_BUILTIN_PMACSSDQH): Ditto.
11739         (IX86_BUILTIN_PMACSDQL): Ditto.
11740         (IX86_BUILTIN_PMACSDQH): Ditto.
11741         (IX86_BUILTIN_PMADCSSWD): Ditto.
11742         (IX86_BUILTIN_PMADCSWD): Ditto.
11743         (IX86_BUILTIN_PHADDBW): Ditto.
11744         (IX86_BUILTIN_PHADDBD): Ditto.
11745         (IX86_BUILTIN_PHADDBQ): Ditto.
11746         (IX86_BUILTIN_PHADDWD): Ditto.
11747         (IX86_BUILTIN_PHADDWQ): Ditto.
11748         (IX86_BUILTIN_PHADDDQ): Ditto.
11749         (IX86_BUILTIN_PHADDUBW): Ditto.
11750         (IX86_BUILTIN_PHADDUBD): Ditto.
11751         (IX86_BUILTIN_PHADDUBQ): Ditto.
11752         (IX86_BUILTIN_PHADDUWD): Ditto.
11753         (IX86_BUILTIN_PHADDUWQ): Ditto.
11754         (IX86_BUILTIN_PHADDUDQ): Ditto.
11755         (IX86_BUILTIN_PHSUBBW): Ditto.
11756         (IX86_BUILTIN_PHSUBWD): Ditto.
11757         (IX86_BUILTIN_PHSUBDQ): Ditto.
11758         (IX86_BUILTIN_PROTB): Ditto.
11759         (IX86_BUILTIN_PROTW): Ditto.
11760         (IX86_BUILTIN_PROTD): Ditto.
11761         (IX86_BUILTIN_PROTQ): Ditto.
11762         (IX86_BUILTIN_PROTB_IMM): Ditto.
11763         (IX86_BUILTIN_PROTW_IMM): Ditto.
11764         (IX86_BUILTIN_PROTD_IMM): Ditto.
11765         (IX86_BUILTIN_PROTQ_IMM): Ditto.
11766         (IX86_BUILTIN_PSHLB): Ditto.
11767         (IX86_BUILTIN_PSHLW): Ditto.
11768         (IX86_BUILTIN_PSHLD): Ditto.
11769         (IX86_BUILTIN_PSHLQ): Ditto.
11770         (IX86_BUILTIN_PSHAB): Ditto.
11771         (IX86_BUILTIN_PSHAW): Ditto.
11772         (IX86_BUILTIN_PSHAD): Ditto.
11773         (IX86_BUILTIN_PSHAQ): Ditto.
11774         (IX86_BUILTIN_FRCZSS): Ditto.
11775         (IX86_BUILTIN_FRCZSD): Ditto.
11776         (IX86_BUILTIN_FRCZPS): Ditto.
11777         (IX86_BUILTIN_FRCZPD): Ditto.
11778         (IX86_BUILTIN_CVTPH2PS): Ditto.
11779         (IX86_BUILTIN_CVTPS2PH): Ditto.
11780         (IX86_BUILTIN_COMEQSS): Ditto.
11781         (IX86_BUILTIN_COMNESS): Ditto.
11782         (IX86_BUILTIN_COMLTSS): Ditto.
11783         (IX86_BUILTIN_COMLESS): Ditto.
11784         (IX86_BUILTIN_COMGTSS): Ditto.
11785         (IX86_BUILTIN_COMGESS): Ditto.
11786         (IX86_BUILTIN_COMUEQSS): Ditto.
11787         (IX86_BUILTIN_COMUNESS): Ditto.
11788         (IX86_BUILTIN_COMULTSS): Ditto.
11789         (IX86_BUILTIN_COMULESS): Ditto.
11790         (IX86_BUILTIN_COMUGTSS): Ditto.
11791         (IX86_BUILTIN_COMUGESS): Ditto.
11792         (IX86_BUILTIN_COMORDSS): Ditto.
11793         (IX86_BUILTIN_COMUNORDSS): Ditto.
11794         (IX86_BUILTIN_COMFALSESS): Ditto.
11795         (IX86_BUILTIN_COMTRUESS): Ditto.
11796         (IX86_BUILTIN_COMEQSD): Ditto.
11797         (IX86_BUILTIN_COMNESD): Ditto.
11798         (IX86_BUILTIN_COMLTSD): Ditto.
11799         (IX86_BUILTIN_COMLESD): Ditto.
11800         (IX86_BUILTIN_COMGTSD): Ditto.
11801         (IX86_BUILTIN_COMGESD): Ditto.
11802         (IX86_BUILTIN_COMUEQSD): Ditto.
11803         (IX86_BUILTIN_COMUNESD): Ditto.
11804         (IX86_BUILTIN_COMULTSD): Ditto.
11805         (IX86_BUILTIN_COMULESD): Ditto.
11806         (IX86_BUILTIN_COMUGTSD): Ditto.
11807         (IX86_BUILTIN_COMUGESD): Ditto.
11808         (IX86_BUILTIN_COMORDSD): Ditto.
11809         (IX86_BUILTIN_COMUNORDSD): Ditto.
11810         (IX86_BUILTIN_COMFALSESD): Ditto.
11811         (IX86_BUILTIN_COMTRUESD): Ditto.
11812         (IX86_BUILTIN_COMEQPS): Ditto.
11813         (IX86_BUILTIN_COMNEPS): Ditto.
11814         (IX86_BUILTIN_COMLTPS): Ditto.
11815         (IX86_BUILTIN_COMLEPS): Ditto.
11816         (IX86_BUILTIN_COMGTPS): Ditto.
11817         (IX86_BUILTIN_COMGEPS): Ditto.
11818         (IX86_BUILTIN_COMUEQPS): Ditto.
11819         (IX86_BUILTIN_COMUNEPS): Ditto.
11820         (IX86_BUILTIN_COMULTPS): Ditto.
11821         (IX86_BUILTIN_COMULEPS): Ditto.
11822         (IX86_BUILTIN_COMUGTPS): Ditto.
11823         (IX86_BUILTIN_COMUGEPS): Ditto.
11824         (IX86_BUILTIN_COMORDPS): Ditto.
11825         (IX86_BUILTIN_COMUNORDPS): Ditto.
11826         (IX86_BUILTIN_COMFALSEPS): Ditto.
11827         (IX86_BUILTIN_COMTRUEPS): Ditto.
11828         (IX86_BUILTIN_COMEQPD): Ditto.
11829         (IX86_BUILTIN_COMNEPD): Ditto.
11830         (IX86_BUILTIN_COMLTPD): Ditto.
11831         (IX86_BUILTIN_COMLEPD): Ditto.
11832         (IX86_BUILTIN_COMGTPD): Ditto.
11833         (IX86_BUILTIN_COMGEPD): Ditto.
11834         (IX86_BUILTIN_COMUEQPD): Ditto.
11835         (IX86_BUILTIN_COMUNEPD): Ditto.
11836         (IX86_BUILTIN_COMULTPD): Ditto.
11837         (IX86_BUILTIN_COMULEPD): Ditto.
11838         (IX86_BUILTIN_COMUGTPD): Ditto.
11839         (IX86_BUILTIN_COMUGEPD): Ditto.
11840         (IX86_BUILTIN_COMORDPD): Ditto.
11841         (IX86_BUILTIN_COMUNORDPD): Ditto.
11842         (IX86_BUILTIN_COMFALSEPD): Ditto.
11843         (IX86_BUILTIN_COMTRUEPD): Ditto.
11844         (IX86_BUILTIN_PCOMEQUB): Ditto.
11845         (IX86_BUILTIN_PCOMNEUB): Ditto.
11846         (IX86_BUILTIN_PCOMLTUB): Ditto.
11847         (IX86_BUILTIN_PCOMLEUB): Ditto.
11848         (IX86_BUILTIN_PCOMGTUB): Ditto.
11849         (IX86_BUILTIN_PCOMGEUB): Ditto.
11850         (IX86_BUILTIN_PCOMFALSEUB): Ditto.
11851         (IX86_BUILTIN_PCOMTRUEUB): Ditto.
11852         (IX86_BUILTIN_PCOMEQUW): Ditto.
11853         (IX86_BUILTIN_PCOMNEUW): Ditto.
11854         (IX86_BUILTIN_PCOMLTUW): Ditto.
11855         (IX86_BUILTIN_PCOMLEUW): Ditto.
11856         (IX86_BUILTIN_PCOMGTUW): Ditto.
11857         (IX86_BUILTIN_PCOMGEUW): Ditto.
11858         (IX86_BUILTIN_PCOMFALSEUW): Ditto.
11859         (IX86_BUILTIN_PCOMTRUEUW): Ditto.
11860         (IX86_BUILTIN_PCOMEQUD): Ditto.
11861         (IX86_BUILTIN_PCOMNEUD): Ditto.
11862         (IX86_BUILTIN_PCOMLTUD): Ditto.
11863         (IX86_BUILTIN_PCOMLEUD): Ditto.
11864         (IX86_BUILTIN_PCOMGTUD): Ditto.
11865         (IX86_BUILTIN_PCOMGEUD): Ditto.
11866         (IX86_BUILTIN_PCOMFALSEUD): Ditto.
11867         (IX86_BUILTIN_PCOMTRUEUD): Ditto.
11868         (IX86_BUILTIN_PCOMEQUQ): Ditto.
11869         (IX86_BUILTIN_PCOMNEUQ): Ditto.
11870         (IX86_BUILTIN_PCOMLTUQ): Ditto.
11871         (IX86_BUILTIN_PCOMLEUQ): Ditto.
11872         (IX86_BUILTIN_PCOMGTUQ): Ditto.
11873         (IX86_BUILTIN_PCOMGEUQ): Ditto.
11874         (IX86_BUILTIN_PCOMFALSEUQ): Ditto.
11875         (IX86_BUILTIN_PCOMTRUEUQ): Ditto.
11876         (IX86_BUILTIN_PCOMEQB): Ditto.
11877         (IX86_BUILTIN_PCOMNEB): Ditto.
11878         (IX86_BUILTIN_PCOMLTB): Ditto.
11879         (IX86_BUILTIN_PCOMLEB): Ditto.
11880         (IX86_BUILTIN_PCOMGTB): Ditto.
11881         (IX86_BUILTIN_PCOMGEB): Ditto.
11882         (IX86_BUILTIN_PCOMFALSEB): Ditto.
11883         (IX86_BUILTIN_PCOMTRUEB): Ditto.
11884         (IX86_BUILTIN_PCOMEQW): Ditto.
11885         (IX86_BUILTIN_PCOMNEW): Ditto.
11886         (IX86_BUILTIN_PCOMLTW): Ditto.
11887         (IX86_BUILTIN_PCOMLEW): Ditto.
11888         (IX86_BUILTIN_PCOMGTW): Ditto.
11889         (IX86_BUILTIN_PCOMGEW): Ditto.
11890         (IX86_BUILTIN_PCOMFALSEW): Ditto.
11891         (IX86_BUILTIN_PCOMTRUEW): Ditto.
11892         (IX86_BUILTIN_PCOMEQD): Ditto.
11893         (IX86_BUILTIN_PCOMNED): Ditto.
11894         (IX86_BUILTIN_PCOMLTD): Ditto.
11895         (IX86_BUILTIN_PCOMLED): Ditto.
11896         (IX86_BUILTIN_PCOMGTD): Ditto.
11897         (IX86_BUILTIN_PCOMGED): Ditto.
11898         (IX86_BUILTIN_PCOMFALSED): Ditto.
11899         (IX86_BUILTIN_PCOMTRUED): Ditto.
11900         (IX86_BUILTIN_PCOMEQQ): Ditto.
11901         (IX86_BUILTIN_PCOMNEQ): Ditto.
11902         (IX86_BUILTIN_PCOMLTQ): Ditto.
11903         (IX86_BUILTIN_PCOMLEQ): Ditto.
11904         (IX86_BUILTIN_PCOMGTQ): Ditto.
11905         (IX86_BUILTIN_PCOMGEQ): Ditto.
11906         (IX86_BUILTIN_PCOMFALSEQ): Ditto.
11907         (IX86_BUILTIN_PCOMTRUEQ): Ditto.
11908         (enum multi_arg_type): New enum for describing the various SSE5
11909         intrinsic argument types.
11910         (bdesc_multi_arg): New table for SSE5 intrinsics.
11911         (ix86_init_mmx_sse_builtins): Add SSE5 intrinsic support.
11912         (ix86_expand_multi_arg_builtin): New function for creating SSE5
11913         intrinsics.
11914         (ix86_expand_builtin): Add SSE5 intrinsic support.
11915         (ix86_sse5_valid_op_p): New function to validate SSE5 3 and 4
11916         operand instructions.
11917         (ix86_expand_sse5_multiple_memory): New function to split the
11918         second memory reference from SSE5 instructions.
11919         (type_has_variadic_args_p): Delete in favor of stdarg_p.
11920         (ix86_return_pops_args): Use stdarg_p to determine if the function
11921         has variable arguments.
11922         (ix86_setup_incoming_varargs): Ditto.
11923         (x86_this_parameter): Ditto.
11924
11925         * config/i386/i386-protos.h (ix86_expand_sse5_unpack): Add
11926         declaration.
11927         (ix86_expand_sse5_pack): Ditto.
11928         (ix86_sse5_valid_op_p): Ditto.
11929         (ix86_expand_sse5_multiple_memory): Ditto.
11930
11931         * config/i386/i386.md (UNSPEC_SSE5_INTRINSIC): Add new UNSPEC
11932         constant for SSE5 support.
11933         (UNSPEC_SSE5_UNSIGNED_CMP): Ditto.
11934         (UNSPEC_SSE5_TRUEFALSE): Ditto.
11935         (UNSPEC_SSE5_PERMUTE): Ditto.
11936         (UNSPEC_SSE5_ASHIFT): Ditto.
11937         (UNSPEC_SSE5_LSHIFT): Ditto.
11938         (UNSPEC_FRCZ): Ditto.
11939         (UNSPEC_CVTPH2PS): Ditto.
11940         (UNSPEC_CVTPS2PH): Ditto.
11941         (PCOM_FALSE): Add new constant for true/false SSE5 comparisons.
11942         (PCOM_TRUE): Ditto.
11943         (COM_FALSE_S): Ditto.
11944         (COM_FALSE_P): Ditto.
11945         (COM_TRUE_S): Ditto.
11946         (COM_TRUE_P): Ditto.
11947         (type attribute): Add ssemuladd, sseiadd1, ssecvt1, sse4arg types.
11948         (unit attribute): Add support for ssemuladd, ssecvt1, sseiadd1 sse4arg
11949         types.
11950         (memory attribute): Ditto.
11951         (sse4_1_round<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
11952         Use SSE4_1_ROUND_* constants instead of hard coded numbers.
11953         (rint<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
11954         (floor<mode>2): Ditto.
11955         (ceil<mode>2): Ditto.
11956         (btrunc<mode>2): Ditto.
11957         (nearbyintdf2): Ditto.
11958         (nearbyintsf2): Ditto.
11959         (sse_setccsf): Disable if SSE5.
11960         (sse_setccdf): Ditto.
11961         (sse5_setcc<mode>): New support for SSE5 conditional move.
11962         (sse5_pcmov_<mode>): Ditto.
11963
11964         * config/i386/sse.md (SSEMODE1248): New mode iterator for SSE5.
11965         (SSEMODEF4): Ditto.
11966         (SSEMODEF2P): Ditto.
11967         (ssemodesuffixf4): New mode attribute for SSE5.
11968         (ssemodesuffixf2s): Ditto.
11969         (ssemodesuffixf2c): Ditto.
11970         (sserotatemax): Ditto.
11971         (ssescalarmode): Ditto.
11972         (sse_maskcmpv4sf3): Disable if SSE5.
11973         (sse_maskcmpv2df3): Ditto.
11974         (sse_vmmaskcmpv4sf3): Ditto.
11975         (sse5_fmadd<mode>4): Add SSE5 floating point multiply/add instructions.
11976         (sse5_vmfmadd<mode>4): Ditto.
11977         (sse5_fmsub<mode>4): Ditto.
11978         (sse5_vmfmsub<mode>4): Ditto.
11979         (sse5_fnmadd<mode>4): Ditto.
11980         (sse5_vmfnmadd<mode>4): Ditto.
11981         (sse5_fnmsub<mode>4): Ditto.
11982         (sse5_vmfnmsub<mode>4): Ditto.
11983         (sse5i_fmadd<mode>4): Ditto.
11984         (sse5i_fmsub<mode>4): Ditto.
11985         (sse5i_fnmadd<mode>4): Ditto.
11986         (sse5i_fnmsub<mode>4): Ditto.
11987         (sse5i_vmfmadd<mode>4): Ditto.
11988         (sse5i_vmfmsub<mode>4): Ditto.
11989         (sse5i_vmfnmadd<mode>4): Ditto.
11990         (sse5i_vmfnmsub<mode>4): Ditto.
11991         (mulv16qi3): Add SSE5 support.
11992         (mulv4si3): Ditto.
11993         (sse5_mulv4si3): New insn for 32-bit multiply support on SSE5.
11994         (sse2_mulv4si3): Disable if SSE5.
11995         (sse4_1_roundpd): Use TARGET_ROUND instead of TARGET_SSE4_1.
11996         (sse4_1_roundps): Ditto.
11997         (sse4_1_roundsd): Ditto.
11998         (sse4_1_roundss): Ditto.
11999         (sse_maskcmpv4sf3): Disable if SSE5 so the SSE5 instruction will
12000         be generated.
12001         (sse_maskcmpsf3): Ditto.
12002         (sse_vmmaskcmpv4sf3): Ditto.
12003         (sse2_maskcmpv2df3): Ditto.
12004         (sse2_maskcmpdf3): Ditto.
12005         (sse2_vmmaskcmpv2df3): Ditto.
12006         (sse2_eq<mode>3): Ditto.
12007         (sse2_gt<mode>3): Ditto.
12008         (sse5_pcmov_<mode>): Add SSE5 support.
12009         (vec_unpacku_hi_v16qi): Ditto.
12010         (vec_unpacks_hi_v16qi): Ditto.
12011         (vec_unpacku_lo_v16qi): Ditto.
12012         (vec_unpacks_lo_v16qi): Ditto.
12013         (vec_unpacku_hi_v8hi): Ditto.
12014         (vec_unpacks_hi_v8hi): Ditto.
12015         (vec_unpacku_lo_v8hi): Ditto.
12016         (vec_unpacks_lo_v8hi): Ditto.
12017         (vec_unpacku_hi_v4si): Ditto.
12018         (vec_unpacks_hi_v4si): Ditto.
12019         (vec_unpacku_lo_v4si): Ditto.
12020         (vec_unpacks_lo_v4si): Ditto.
12021         (sse5_pmacsww): New SSE5 intrinsic insn.
12022         (sse5_pmacssww): Ditto.
12023         (sse5_pmacsdd): Ditto.
12024         (sse5_pmacssdd): Ditto.
12025         (sse5_pmacssdql): Ditto.
12026         (sse5_pmacssdqh): Ditto.
12027         (sse5_pmacsdqh): Ditto.
12028         (sse5_pmacsswd): Ditto.
12029         (sse5_pmacswd): Ditto.
12030         (sse5_pmadcsswd): Ditto.
12031         (sse5_pmadcswd): Ditto.
12032         (sse5_pcmov_<move>): Conditional move support on SSE5.
12033         (sse5_phaddbw): New SSE5 intrinsic insn.
12034         (sse5_phaddbd): Ditto.
12035         (sse5_phaddbq): Ditto.
12036         (sse5_phaddwd): Ditto.
12037         (sse5_phaddwq): Ditto.
12038         (sse5_phadddq): Ditto.
12039         (sse5_phaddubw): Ditto.
12040         (sse5_phaddubd): Ditto.
12041         (sse5_phaddubq): Ditto.
12042         (sse5_phadduwd): Ditto.
12043         (sse5_phadduwq): Ditto.
12044         (sse5_phaddudq): Ditto.
12045         (sse5_phsubbw): Ditto.
12046         (sse5_phsubwd): Ditto.
12047         (sse5_phsubdq): Ditto.
12048         (sse5_pperm): Ditto.
12049         (sse5_pperm_sign_v16qi_v8hi): New insns for pack/unpack with SSE5.
12050         (sse5_pperm_zero_v16qi_v8hi): Ditto.
12051         (sse5_pperm_sign_v8hi_v4si): Ditto.
12052         (sse5_pperm_zero_v8hi_v4si): Ditto.
12053         (sse5_pperm_sign_v4si_v2di): Ditto.
12054         (sse5_pperm_sign_v4si_v2di): Ditto.
12055         (sse5_pperm_pack_v2di_v4si): Ditto.
12056         (sse5_pperm_pack_v4si_v8hi): Ditto.
12057         (sse5_pperm_pack_v8hi_v16qi): Ditto.
12058         (sse5_perm<mode>): New SSE5 intrinsic insn.
12059         (rotl<mode>3): Ditto.
12060         (sse5_rotl<mode>3): Ditto.
12061         (sse5_ashl<mode>3): Ditto.
12062         (sse5_lshl<mode>3): Ditto.
12063         (sse5_frcz<mode>2): Ditto.
12064         (sse5s_frcz<mode>2): Ditto.
12065         (sse5_cvtph2ps): Ditto.
12066         (sse5_cvtps2ph): Ditto.
12067         (sse5_vmmaskcmp<mode>3): Ditto.
12068         (sse5_com_tf<mode>3): Ditto.
12069         (sse5_maskcmp<mode>3): Ditto.
12070         (sse5_maskcmp_uns<mode>3): Ditto.
12071         (sse5_maskcmp_uns2<mode>3): Ditto.
12072         (sse5_pcom_tf<mode>3): Ditto.
12073
12074         * config/i386/predicates.md (sse5_comparison_float_operator):
12075         New predicate to match the comparison operators supported by
12076         the SSE5 com instruction.
12077         (ix86_comparison_int_operator): New predicate to match just the
12078         signed int comparisons.
12079         (ix86_comparison_uns_operator): New predicate to match just the
12080         unsigned int comparisons.
12081
12082         * doc/invoke.texi (-msse5): Add documentation.
12083         (-mfused-madd): Ditto.
12084
12085         * doc/extend.texi (x86 intrinsics): Document new SSE5 intrinsics.
12086
12087         * config.gcc (i[34567]86-*-*): Include bmmintrin.h and
12088         mmintrin-common.h.
12089         (x86_64-*-*): Ditto.
12090
12091         * config/i386/cpuid.h (bit_SSE5): Define SSE5 bit.
12092
12093         * config/i386/bmmintrin.h: New file, provide common x86 compiler
12094         intrinisics for SSE5.
12095
12096         * config/i386/smmintrin.h: Move instructions shared with SSE5 to
12097         mmintrin-common.h.
12098
12099         * config/i386/mmintrin-common.h: New file, to contain common
12100         instructions between SSE4.1 and SSE5.
12101
12102         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration): Use
12103         FOREACH_FUNCTION_ARGS to iterate over the argument list.
12104         (gen_regparm_prefix): Ditto.
12105
12106         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix): Use
12107         FOREACH_FUNCTION_ARGS to iterate over the argument list.  Use
12108         prototype_p to determine if a function is prototyped.
12109
12110 2009-08-25 Ville Voutilainen <ville.voutilainen@gmail.com>
12111
12112         * c-common.c (c_common_reswords) add the alignof keyword,
12113         with same RID as __alignof and __alignof__
12114
12115 2009-08-25  Anatoly Sokolov  <aesok@post.ru>
12116
12117         * hooks.h (hook_bool_const_int_const_int_true): Declare.
12118         * hooks.c (hook_bool_const_int_const_int_true): New function.
12119         * target.h (struct gcc_target): Add can_eliminate field.
12120         * target-def.h (TARGET_CAN_ELIMINATE): Define.
12121         (TARGET_INITIALIZER): Use TARGET_CAN_ELIMINATE.
12122         * ira.c (setup_eliminable_regset): Use can_eliminate target hook.
12123         * reload1.c (update_eliminables, init_elim_table): (Ditto.).
12124         (elim_table): Revise comment.
12125         * system.h (CAN_ELIMINATE): Poison.
12126         * defaults.h (CAN_ELIMINATE): Remove.
12127         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
12128
12129         * config/alpha/vms.h (CAN_ELIMINATE): Remove macro.
12130         * config/alpha/alpha.c (TARGET_CAN_ELIMINATE) [TARGET_ABI_OPEN_VMS]:
12131         Define macro.
12132         (alpha_vms_can_eliminate): Declare as static, change return type to
12133         bool.
12134         * config/alpha/alpha-protos.h (alpha_vms_can_eliminate): Remove.
12135
12136         * config/arm/arm.h (CAN_ELIMINATE): Remove macro.
12137         * config/arm/arm.c (TARGET_CAN_ELIMINATE): Define macro.
12138         (arm_can_eliminate): New function.
12139
12140         * config/avr/avr.h (CAN_ELIMINATE): Remove macro.
12141         * config/avr/avr.c (TARGET_CAN_ELIMINATE): Define macro.
12142         (avr_can_eliminate): Declare as static.
12143         * config/avr/avr-protos.h (avr_can_eliminate): Remove.
12144
12145         * config/bfin/bfin.h (CAN_ELIMINATE): Remove macro.
12146         * config/bfin/bfin.c (TARGET_CAN_ELIMINATE): Define macro.
12147         (bfin_can_eliminate): New function.
12148
12149         * config/crx/crx.h (CAN_ELIMINATE): Remove macro.
12150         * config/crx/crx.c (TARGET_CAN_ELIMINATE): Define macro.
12151         (crx_can_eliminate): New function.
12152
12153         * config/fr30/fr30.h (CAN_ELIMINATE): Remove macro.
12154         * config/fr30/fr30.c (TARGET_CAN_ELIMINATE): Define macro.
12155         (fr30_can_eliminate): New function.
12156
12157         * config/frv/frv.h (CAN_ELIMINATE): Remove macro.
12158         * config/frv/frv.c (TARGET_CAN_ELIMINATE): Define macro.
12159         (frv_can_eliminate): New function.
12160
12161         * config/h8300/h8300.h (CAN_ELIMINATE): Remove macro.
12162         * config/h8300/h8300.c (TARGET_CAN_ELIMINATE): Define macro.
12163         (h8300_can_eliminate): New function.
12164
12165         * config/i386/i386.h (CAN_ELIMINATE): Remove macro.
12166         * config/i386/i386.c (TARGET_CAN_ELIMINATE): Define macro.
12167         (i386_can_eliminate): Declare as static, change return type to bool.
12168         * config/i386/i386-protos.h (i386_can_eliminate): Remove.
12169
12170         * config/ia64/ia64.h (CAN_ELIMINATE): Remove macro.
12171         * config/ia64/ia64.c (TARGET_CAN_ELIMINATE): Define macro.
12172         (ia64_can_eliminate): New function.
12173
12174         * config/iq2000/iq2000.h (CAN_ELIMINATE): Remove macro.
12175         * config/iq2000/iq2000.c (TARGET_CAN_ELIMINATE): Define macro.
12176         (iq2000_can_eliminate): New function.
12177
12178         * config/m32r/m32r.h (CAN_ELIMINATE): Remove macro.
12179         * config/m32r/m32r.c (TARGET_CAN_ELIMINATE): Define macro.
12180         (m32r_can_eliminate): New function.
12181
12182         * config/m68hc11/m68hc11.h (CAN_ELIMINATE): Remove macro.
12183         * config/m68hc11/m68hc11.c (TARGET_CAN_ELIMINATE): Define macro.
12184         (m68hc11_can_eliminate): New function.
12185
12186         * config/m68k/m68k.h (CAN_ELIMINATE): Remove macro.
12187         * config/m68k/m68k.c (TARGET_CAN_ELIMINATE): Define macro.
12188         (m68k_can_eliminate): New function.
12189
12190         * config/mep/mep.h (CAN_ELIMINATE): Remove macro.
12191         * config/mep/mep.c (TARGET_CAN_ELIMINATE): Define macro.
12192         (mep_can_eliminate): New function.
12193
12194         * config/mips/mips.h (CAN_ELIMINATE): Remove macro.
12195         * config/mips/mips.c (TARGET_CAN_ELIMINATE): Define macro.
12196         (mips_can_eliminate): New function.
12197
12198         * config/rs6000/rs6000.h (CAN_ELIMINATE): Remove macro.
12199         * config/rs6000/rs6000.c (TARGET_CAN_ELIMINATE): Define macro.
12200         (rs6000_can_eliminate): New function.
12201
12202         * config/s390/s390.h (CAN_ELIMINATE): Remove macro.
12203         * config/s390/s390.c (TARGET_CAN_ELIMINATE): Define macro.
12204         (s390_can_eliminate): Declare as static.
12205         * config/s390/s390-protos.h (sparc_can_eliminate): Remove.
12206
12207         * config/score/score.h (CAN_ELIMINATE): Remove macro.
12208         * config/score/score.c (TARGET_CAN_ELIMINATE): Define macro.
12209         (score_can_eliminate): New function.
12210
12211         * config/sparc/sparc.h (CAN_ELIMINATE): Remove macro.
12212         * config/sparc/sparc.c (TARGET_CAN_ELIMINATE): Define macro.
12213         (sparc_can_eliminate): Declare as static.
12214         * config/sparc/sparc-protos.h (sparc_can_eliminate): Remove.
12215
12216         * config/stormy16/stormy16.h (CAN_ELIMINATE): Remove macro.
12217         * config/stormy16/stormy16.c (TARGET_CAN_ELIMINATE): Define macro.
12218         (xstormy16_can_eliminate): New function.
12219
12220         * config/v850/v850.h (CAN_ELIMINATE): Remove macro.
12221         * config/v850/v850.c (TARGET_CAN_ELIMINATE): Define macro.
12222         (v850_can_eliminate): New function.
12223
12224 2009-08-25  Uros Bizjak  <ubizjak@gmail.com>
12225
12226         * config/alpha/alpha.md (*cmpdf_ieee_ext[123]): Remove.
12227         (*cmpdf_internal): Enable for all ALPHA_FPTM levels.
12228         (*movdfcc_ext[1234]): Disable for IEEE mode.
12229
12230 2009-08-25  Eric Botcazou  <ebotcazou@adacore.com>
12231
12232         * gimplify.c (prepare_gimple_addressable): New static function.
12233         (gimplify_modify_expr_to_memcpy): Invoke it on the RHS before marking
12234         it addressable.
12235         (gimplify_addr_expr): Invoke it similarly on the operand instead of
12236         manually fiddling with it.
12237
12238 2009-08-25  Michael Matz  <matz@suse.de>
12239
12240         * expr.h (jumpifnot_1, jumpif_1, do_jump_1): Declare.
12241         * dojump.c (do_jump_by_parts_greater): Take two operands instead of
12242         full expression.
12243         (do_jump_by_parts_equality, do_compare_and_jump): Ditto.
12244         (jumpifnot_1, jumpif_1): New wrappers for do_jump_1.
12245         (do_jump): Split out code for simple binary comparisons into ...
12246         (do_jump_1): ... this, taking the individual operands and code.
12247         Change callers to helper function above accordingly.
12248         * expr.c (expand_expr_real_1): Use jumpifnot_1 for simple binary
12249         comparisons.
12250
12251 2009-08-25  Michael Matz  <matz@suse.de>
12252
12253         * expr.h (struct separate_ops, sepops): New type for passing
12254         around an exploded simple expression.
12255         * optabs.c (expand_widen_pattern_expr, expand_vec_shift_expr):
12256         Use this structure instead of expression tree.
12257         (get_vcond_icode, expand_vec_cond_expr_p): Don't take whole
12258         expression, only its type.
12259         (expand_vec_cond_expr): Take type and individual operands instead
12260         of full expression.
12261         * optabs.h (expand_widen_pattern_expr, expand_vec_cond_expr,
12262         expand_vec_shift_expr): Change prototype accordingly.
12263         * tree-vect-stmts.c (vectorizable_condition): Change call of
12264         expand_vec_cond_expr_p to pass only type.
12265         * expr.c (do_store_flags): Change prototype and implementation
12266         to take an exploded expression.
12267         (expand_expr_real_1): New local ops initialized with details
12268         of the full expression.  Use it instead of full
12269         expression in calls to do_store_flags, expand_vec_cond_expr,
12270         expand_widen_pattern_expr and expand_vec_shift_expr.
12271
12272 2009-08-25  Michael Matz  <matz@suse.de>
12273
12274         * expr.c (expand_expr_real_1): New local treeop0, treeop1,
12275         treeop2 initialized with first three operands of the full expression.
12276         Substitute all TREE_OPERAND (exp, [012]) calls with them.
12277
12278 2009-08-25  Kai Tietz  <kai.tietz@onevision.com>
12279
12280         * gcc/gthr-win32.h (__UNUSED_PARAM): Define, if not already present.
12281         (__gthread_objc_condition_allocate): Mark arguments as unused.
12282         (__gthread_objc_condition_deallocate): Likewise.
12283         (__gthread_objc_condition_wait): Likewise.
12284         (__gthread_objc_condition_broadcast): Likewise.
12285         (__gthread_objc_condition_signal): Likewise.
12286         (__gthread_objc_thread_detach): Cast via INT_PTR to pointer.
12287         (__gthread_objc_thread_id): Likewise.
12288
12289 2009-08-25  Janus Weil  <janus@gcc.gnu.org>
12290
12291         PR middle-end/41149
12292         * tree-pretty-print.c (print_call_name): Print the correct call name
12293         for procedure pointer components.
12294
12295 2009-08-24  Steve Ellcey  <sje@cup.hp.com>
12296
12297         * config/ia64/ia64.c (ia64_promote_function_mode): Call
12298         default_promote_function_mode when not VMS.
12299
12300 2009-08-24  Olivier Hainque  <hainque@adacore.com>
12301
12302         * convert.c (convert_to_integer): Don't assume an input pointer is
12303         POINTER_SIZE wide.  Fetch from the type instead.
12304
12305 2009-08-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12306
12307         * configure.ac (AC_PREREQ): Bump to 2.64.
12308
12309 2009-08-24  Rafael Avila de Espindola  <espindola@google.com>
12310
12311         * gcc.c (standard_exec_prefix_1,standard_exec_prefix_2): Remove.
12312         (process_command): Don't search standard_exec_prefix_1 and
12313         standard_exec_prefix_2.
12314
12315 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
12316
12317         * config/arm/arm.c (output_return_instruction): Handle for
12318         unified syntax.
12319
12320 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
12321
12322         * config/arm/arm.c (arm_select_cc_mode): Handle subreg.
12323
12324 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
12325
12326         * config/arm/vfp.md (*arm_movdi_vfp): Mark as predicable.
12327         (*arm_movdf_vfp): Likewise.
12328
12329 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
12330
12331         * config/arm/neon.md (vashl<mode>3): Rename from ashl<mode>3.
12332         (vashr<mode>3): Rename from ashr<mode>3.
12333         (vlshr<mode>3): Rename from lshr<mode>3.
12334
12335 2009-08-24  Kai Tietz  <kai.tietz@onevision.com>
12336
12337         PR/40786
12338         * c-format.c (format_wanted_type): Add new member scalar_identity_flag.
12339         (check_format_info_main): Use scalar_identify_flag.
12340         (check_format_types): Check for scalar size identity if
12341         scalar_identify_flag is set.
12342         (printf_length_specs): Extend by new field.
12343         (asm_fprintf_length_specs): Likewise.
12344         (gcc_diag_length_specs): Likewise.
12345         (scanf_length_specs): Likewise.
12346         (strfmon_length_specs): Likewise.
12347         (gcc_gfc_length_specs): Likewise.
12348         * config/i386/msformat-c.c (ms_printf_length_specs): Likewise.
12349         (ms_printf_flag_specs): Likewise.
12350         * c-format.h (format_length_info): Add new member scalar_identity_flag.
12351
12352 2009-08-23  Uros Bizjak  <ubizjak@gmail.com>
12353
12354         PR target/40718
12355         * config/i386/i386.c (*call_pop_1): Disable for sibling calls.
12356         (*call_value_pop_1): Ditto.
12357         (*sibcall_pop_1): New insn pattern.
12358         (*sibcall_value_pop_1): Ditto.
12359
12360 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
12361
12362         PR target/41081
12363         * config/rs6000/rs6000.md (rotlsi3_64, ashlsi3_64, lshrsi3_64,
12364         ashrsi3_64): New.
12365
12366 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
12367
12368         PR target/41081
12369         * fwprop.c (try_fwprop_subst): Allow multiple sets.
12370         (get_reg_use_in): New function.
12371         (forward_propagate_subreg): Propagate through subreg of zero_extend
12372         or sign_extend.
12373
12374 2009-08-22  Kaz Kojima  <kkojima@gcc.gnu.org>
12375
12376         * config/sh/t-sh (TARGET_LIBGCC2_CFLAGS): Define.
12377         * config/sh/t-netbsd (TARGET_LIBGCC2_CFLAGS): Add -mieee.
12378
12379 2009-08-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12380
12381         * configure.ac: Remove --with-datarootdir, --with-docdir,
12382         --with-htmldir switches.  No need to call AC_SUBST for
12383         datarootdir, docdir, htmldir any more.
12384         * configure: Regenerate.
12385         * doc/install.texi (Configuration): Document --datarootdir,
12386         --docdir, --htmldir, --pdfdir; update documentation for
12387         --infodir, --mandir.
12388         (Prerequisites): Bump Autoconf version to 2.64, Automake to 1.11,
12389         M4 to 1.4.6.
12390
12391         * aclocal.m4: Regenerate.
12392         * config.in: Regenerate.
12393         * configure: Regenerate.
12394
12395 2009-08-21  Douglas B Rupp  <rupp@gnat.com>
12396             Olivier Hainque  <hainque@adacore.com>
12397
12398         * config/ia64/ia64.c: Include libfuncs.h.
12399         (TARGET_PROMOTE_FUNCITON_MODE): Define target macro.
12400         (ia64_expand_call): Use reg 25 on VMS.
12401         (ia64_initialize_trampoline): Fix for VMS ABI.
12402         (ia64_function_arg_offset): Always returns 0 when TARGET_ABI_OPEN_VMS.
12403         (ia64_function_arg): Initialize reg 25 on VMS.
12404         Fix OpenVMS ABI issues for varargs.
12405         For OpenVMS, emit the Argument Information register set in the
12406         incoming/sibcall case as well.
12407         (ia64_arg_type): New function.
12408         (ia64_function_arg_advance): Keep track of cum->words.
12409         Fix OpenVMS ABI issues for varargs.
12410         (ia64_function_value): On VMS, promote mode of non-aggregate types.
12411         (ia64_override_options): Set flag_no_common on VMS.
12412         (ia64_init_builtins): Disable FWRITE builtin.
12413         (ia64_asm_output_external): Call DO_CRTL_NAMES.
12414         (ia64_vms_init_libfuncs): Add decc$ routines.
12415         (ia64_vms_valid_pointer_mode): New function.
12416         (ia64_struct_value_rtx): Allways NULL_RTX on VMS.
12417         (ia64_promote_function_mode): New function
12418         * config/ia64/ia64.h (TARGET_ABI_OPEN_VMS): Define as 0 for default.
12419         (LONG_DOUBLE_TYPE_SIZE): Force to 64 on VMS.
12420         (LIBCGC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
12421         (INIT_CUMULATIVE_ARGS): Add atypes for VMS.
12422         (INIT_CUMULATIVE_INCOMING_ARGS): Likewise.
12423         (ASM_OUTPUT_DEF): Use ISDIGIT instead of isdigit.
12424         Suppress trailing '#' if VALUE is numeric.
12425         * config/ia64/vms.h (PROMOTE_FUNCTION_MODE): Remove, code moved to
12426         ia64_promote_function_mode.
12427         (TARGET_VALID_POINTER_MODE): Define.
12428
12429 2009-08-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
12430
12431         PR target/40671
12432         * config/rs6000/rs6000.c (rs6000_override_options): Use
12433         TARGET_64BIT instead of TARGET_POWERPC64 to set the size of pointers.
12434
12435         PR target/41145
12436         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Fix
12437         reporting of vector + decimal/boolean/complex error.
12438
12439 2009-08-21  Jakub Jelinek  <jakub@redhat.com>
12440
12441         * config/rs6000/rs6000.c (rs6000_init_builtins): Fix type of
12442         __vector double TYPE_DECL.
12443
12444 2009-08-21  Richard Earnshaw  <rearnsha@arm.com>
12445
12446         * arm.h (MACHMODE): New define.  Include insn-modes.h if available.
12447         (CUMULATIVE_ARGS): Use MACHMODE for declaration of aapcs_vfp_mode.
12448         * arm.c (aapcs_vfp_is_call_or_return_candidate): Change base_mode
12449         to pointer to enum machine_mode.  Update all callers as needed.
12450
12451 2009-08-21  Uros Bizjak  <ubizjak@gmail.com>
12452
12453         * config/alpha/alpha.md (exception_receiver): Emit alternative
12454         GP load sequence if flag_reorder_blocks_and_partition is set.
12455         (*exception_receiver_2): Also enable when
12456         flag_reorder_blocks_and_partition is set.
12457
12458 2009-08-20  Matt Rice  <ratmice@gmail.com>
12459             Diego Novillo  <dnovillo@google.com>
12460
12461         * Makefile.in (PLUGIN_HEADERS): Include incpath.h and
12462         tree-ssa-sccvn.h.
12463
12464 2009-08-20  Richard Guenther  <rguenther@suse.de>
12465
12466         * c-objc-common.h (LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): Do not define.
12467         * c-tree.h (c_dup_lang_specific_decl): Remove.
12468         (struct lang_decl, struct lang_type): Move definitions ...
12469         * c-lang.h: ... here.  New file.
12470         * c-decl.c: Include c-lang.h.
12471         (c_dup_lang_specific_decl): Remove.
12472         * c-typeck.c: Include c-lang.h.
12473         * Makefile.in (c-decl.o): Add c-lang.h dependency.
12474         (c-typeck.o): Likewise.
12475         * c-config-lang.in (gtfiles): Add c-lang.h.
12476         * gengtype.c (get_output_file_with_visibility): Handle c-lang.h
12477         like c-tree.h.
12478
12479 2009-08-20  Uros Bizjak  <ubizjak@gmail.com>
12480
12481         * config/alpha/alpha.c (alpha_end_function): Do not clear
12482         crtl->emit structure and free insn locators if cfun->is_thunk is true,
12483         this is now handled in generic code.
12484
12485 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
12486
12487         * config/s390/s390.c (Z10_PREDICT_DISTANCE): New macro.
12488         (s390_z10_fix_long_loop_prediction): New function.
12489         (s390_z10_optimize_cmp): INSN walk moved to callee - s390_reorg.
12490         (s390_reorg): Walk over the INSNs and invoke
12491         s390_z10_fix_long_loop_prediction and s390_z10_optimize_cmp.
12492
12493 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
12494
12495         * config/s390/s390.md ("*brx_stage1_<GPR:mode>", "*brxg_64bit",
12496         "*brx_64bit", "*brx_31bit"): New patterns.
12497         * config/s390/s390.c ('E'): New output modifier.
12498
12499 2009-08-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
12500             Richard Earnshaw  <richard.earnshaw@arm.com>
12501
12502         * config/arm/arm.c (arm_emit_movpair): Handle CONST_INT.
12503         * config/arm/arm.md (*arm_movtas_ze): New pattern for movt.
12504
12505 2009-08-19  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12506
12507         * pa.md (reload_inhi, reload_outhi, reload_inqi, reload_outqi): New
12508         patterns.
12509         * pa.c (emit_move_sequence): Check if address of operand1 is valid
12510         for mode mode of operand0 when doing secondary reload for SAR.
12511
12512 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
12513
12514         PR middle-end/41123
12515         * expr.c (expand_expr_real_1) <normal_inner_ref>: Handle all kinds
12516         of CONCAT, not just bitpos 0 bitsize size of the whole CONCAT.
12517
12518 2009-08-19  Jason Merrill  <jason@redhat.com>
12519
12520         * doc/invoke.texi (C++ Dialect Options): Note change of minimum
12521         supported template depth in C++0x.
12522
12523 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
12524
12525         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Don't call
12526         free_after_compilation.
12527         * config/score/score7.c (score7_output_mi_thunk): Likewise.
12528         * config/score/score3.c (score3_output_mi_thunk): Likewise.
12529         * config/ia64/ia64.c (ia64_output_mi_thunk): Likewise.
12530         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
12531         * config/sh/sh.c (sh_output_mi_thunk): Likewise.
12532         * config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
12533         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
12534
12535 2009-08-19  Ian Lance Taylor  <iant@google.com>
12536
12537         * doc/md.texi (Insn Canonicalizations): Correct canonicalization
12538         of (plus (mult (neg B) C) A).
12539
12540 2009-08-18  Michael Matz  <matz@suse.de>
12541
12542         * omp-low.c (optimize_omp_library_calls): Use types_compatible_p
12543         instead of comparing TYPE_MAIN_VARIANT for equality.
12544         * tree-vect-patterns.c (vect_recog_dot_prod_pattern,
12545         vect_recog_widen_mult_pattern, vect_recog_widen_sum_pattern): Ditto.
12546         * tree-vect-loop.c (vect_is_simple_reduction): Ditto.
12547         * gimplify.c (goa_lhs_expr_p): Ditto and use
12548         STRIP_USELESS_TYPE_CONVERSION.
12549
12550 2009-08-18  Michael Matz  <matz@suse.de>
12551
12552         * tree-ssa-structalias.c (create_variable_info_for): Also mark
12553         first field in a struct.
12554         (intra_create_variable_infos): Don't deal with flag_argument_noalias.
12555
12556 2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
12557
12558         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
12559         locators before emit_insn is called.  Remove assert that
12560         cfun->is_thunk.
12561         (alpha_end_function): Clear crtl->emit structure and free insn
12562         locators if cfun->is_thunk is true.
12563
12564 2009-08-18  Jason Merrill  <jason@redhat.com>
12565
12566         * config/elfos.h (ASM_DECLARE_OBJECT_NAME): Use gnu_unique_object
12567         type if available.
12568         * configure.ac: Test for it.
12569         * configure, config.in: Regenerate.
12570         * doc/install.texi: Document --enable-gnu-unique-object.
12571
12572 2009-08-18  Richard Guenther  <rguenther@suse.de>
12573
12574         PR middle-end/41094
12575         * builtins.c (fold_builtin_pow): Fold pow(pow(x,y),z) to
12576         pow(x,y*z) only if x is nonnegative.
12577
12578 2009-08-18  Jakub Jelinek  <jakub@redhat.com>
12579
12580         * bb-reorder.c (fix_up_fall_thru_edges): Only call invert_jump
12581         on jumps.
12582
12583         PR target/40971
12584         * config/rs6000/rs6000.c (rs6000_legitimize_address): For
12585         [DT][FDI]mode ensure the offset isn't 4/8/12 bytes below 0x8000.
12586
12587 2009-08-17  DJ Delorie  <dj@redhat.com>
12588
12589         * config/m32c/m32c.md (UNS_FSETB, UNS_FREIT): New.
12590         * config/m32c/prologue.md (epilogue_freit): New.
12591         (fset_b): New.
12592         * config/m32c/m32c.c (m32c_function_needs_enter): Add prototype.
12593         (bank_switch_p): Likewise.
12594         (fast_interrupt_p): Likewise.
12595         (interrupt_p): Likewise.
12596         (m32c_conditional_register_usage): Round memregs size up.
12597         (need_to_save): We only need to save $a0 when we use ENTER.
12598         (interrupt_p): Check for fast_interrupt too.
12599         (bank_switch_p): New.
12600         (fast_interrupt_p): New.
12601         (m32c_attribute_table): Add bank_switch and fast_interrupt.
12602         (m32c_emit_prolog): Support bank switching and fast interrupts.
12603         * doc/extend.texi (Function Attributes): Add bank_switch and
12604         fast_interrupt.
12605
12606 2009-08-17  Douglas B Rupp  <rupp@gnat.com>
12607
12608         * config/alpha/alpha.c (vms_valid_pointer_mode): New function.
12609         * config/alpha/vms.h (TARGET_VALID_POINTER_MODE): Define.
12610
12611 2009-08-16  Douglas B Rupp  <rupp@gnat.com>
12612
12613         * doc/invoke.texi (Target options): Add new option list for IA-64/VMS.
12614         (menu): Add IA-64/VMS Options.
12615         (IA-64/VMS Options): Likewise.
12616
12617 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
12618
12619         PR target/38599
12620         * config/mips/mips.md (*lwxs): Use :P for pointer values.
12621
12622 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
12623
12624         * config/mips/mips-protos.h (mips_push_asm_switch): New function.
12625         (mips_pop_asm_switch): Likewise.
12626         * config/mips/mips.c (set_noreorder, set_nomacro, set_noat): Replace
12627         with...
12628         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
12629         (mips_push_asm_switch_1, mips_pop_asm_switch_1): New functions.
12630         (mips_push_asm_switch, mips_pop_asm_switch): Likewise.
12631         (mips_print_operand_punctuation): Use them.  Check mips_noreorder
12632         instead of set_noreorder.
12633         (mips_output_function_prologue): Use the new functions.
12634         (mips_output_function_epilogue): Likewise.
12635         (mips_need_noat_wrapper_p): New function, split out from...
12636         (mips_final_prescan_insn, mips_final_postscan_insn): ...here.
12637         Use mips_push_asm_switch and mips_pop_asm_switch.
12638         * config/mips/mips.h (FUNCTION_PROFILER): Use mips_push_asm_switch
12639         and mips_pop_asm_switch.
12640         (ASM_OUTPUT_REG_POP): Likewise.
12641         (DBR_OUTPUT_SEQEND): Remove boilerplate comment.
12642         Use mips_pop_asm_switch.
12643         (mips_asm_switch): New structure.
12644         (set_noreorder, set_nomacro): Replace with...
12645         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
12646         * config/mips/mips.md (fix_truncdfsi2_macro): Use mips_nomacro
12647         instead of set_nomacro.
12648         (fix_truncsfsi2_macro): Likewise.
12649         (cprestore): Likewise.
12650         (hazard): Use mips_noreorder instead of set_noreorder.
12651         * config/mips/sdemtk.h (FUNCTION_PROFILER): As for mips.h.
12652
12653 2009-08-16  Uros Bizjak  <ubizjak@gmail.com>
12654
12655         * config/alpha/alpha.c (alpha_end_function): Handle NULL_RTX returned
12656         from prev_active_insn.
12657
12658 2009-08-16  Anatoly Sokolov  <aesok@post.ru>
12659
12660         * config/avr/avr.h (AVR_HAVE_8BIT_SP): New macros.
12661         * config/avr/avr.c (avr_override_options): Initialize
12662         avr_current_arch variable.
12663         (avr_cpu_cpp_builtins): Define __AVR_HAVE_8BIT_SP__ or
12664         __AVR_HAVE_16BIT_SP__ according to the device type.
12665         (expand_prologue, output_movhi): Use AVR_HAVE_8BIT_SP instead of
12666         TARGET_TINY_STACK.
12667         (expand_epilogue): Use correct QI mode frame pointer for tiny stack.
12668         Use AVR_HAVE_8BIT_SP instead of TARGET_TINY_STACK.
12669
12670 2009-08-16  Dodji Seketeli  <dodji@redhat.com>
12671
12672         PR debug/37801
12673         * gcc/dwarf2out.c (gen_inlined_subroutine_die): Concentrate on
12674         generating inlined subroutine die only. We shouldn't be
12675         called for anything else.
12676         (gen_block_die): Don't generate inline subroutine debug info for
12677         abstract blocks.
12678
12679 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
12680
12681         * graphite-poly.c (print_pbb): Print PBB index.
12682
12683 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
12684
12685         PR middle-end/40981
12686         * graphite-interchange.c (ppl_max_for_le): Moved...
12687         * graphite-poly.c (pbb_number_of_iterations): Call ppl_max_for_le.
12688         * graphite-ppl.c (ppl_max_for_le): ... here.  Correct the use of
12689         ppl_Pointset_Powerset_C_Polyhedron_maximize.
12690         * graphite-ppl.h (ppl_max_for_le): Declared.
12691
12692 2009-08-14  Olatunji Ruwase <tjruwase@google.com>
12693
12694         * doc/extend.texi (Symbol-Renaming Pragmas): redefine_extname is
12695         supported on all platforms.
12696         * target.h (struct gcc_target): Remove handle_pragma_redefine_extname.
12697         * c-cppbuiltin.c: Remove use of targetm.handle_pragma_redefine_extname.
12698         * c-pragma.c: Likewise.
12699         * target-def.h (TARGET_INITIALIZER): Remove
12700         TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
12701         * config/sol2.h: Remove use of TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
12702
12703 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
12704
12705         * config/ia64/fde-vms.c: New file.
12706         * config/ia64/fde-glibc.c (_Unwind_FindTableEntry): Add dummy arg.
12707         * config/ia64/unwind-ia64.c (UNW_ accessors): Move to unwind-ia64.h
12708         (MD_UNW_COMPATIBLE_PERSONALITY_P): Provide default.
12709         (uw_frame_state_for): Only register a personality routine if it is
12710         known to be compatible with our expectations.
12711         (_Unwind_FindEnclosingFunction, uw_frame_state_for):
12712         Declare unw_table_entry stack variable and
12713         mod all calls to _Unwind_FindTableEntry to add arg.
12714         * config/ia64/unwind-ia64.h (UNW_ accessors): Move here.
12715         (_Unwind_FindTableEntry): Add arg to prototype.
12716
12717 2009-08-14  Eric Botcazou  <ebotcazou@adacore.com>
12718
12719         * config/ia64/unwind-ia64.c (struct _Unwind_Context): Add new
12720         field 'signal_pfs_loc'.
12721         (uw_frame_state_for): Remove duplicate code dealing with leaf
12722         procedures without unwind info.
12723         If in the frame after unwinding through a signal handler, restore
12724         the AR.PFS register instead of the CFM if AR.PFS has not been saved.
12725         * config/ia64/linux-unwind.h (ia64_fallback_frame_state): Do not set
12726         'pfs_loc' to the AR.PFS location in the signal context; instead
12727         set 'signal_pfs_loc'.
12728         Manually generate the unwind info for the AR.PFS register.
12729         (ABI_MARKER_OLD_LINUX_SIGTRAMP, ABI_MARKER_OLD_LINUX_INTERRUPT,
12730         ABI_MARKER_LINUX_SIGTRAMP, ABI_MARKER_LINUX_INTERRUPT): Define.
12731         (ia64_handle_unwabi): Test 'fs->unwabi' against them.
12732         Do not set 'pfs_loc' to the AR.PFS location in the signal context;
12733         instead set 'signal_pfs_loc'.
12734         Remove code preventing the AR.PFS register from being restored
12735         from the signal context.
12736
12737 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
12738             Tristan Gingold  <gingold@adacore.com>
12739
12740         * config.gcc (ia64-hp-*vms*): Insert ia64/t-ia64 in tmake_file.
12741         * config/ia64/t-vms: New file.
12742         * config/ia64/vms64.h: New file.
12743         * config/ia64/vms.h: New file.
12744         * config/ia64/vms-crtinit.asm: New file.
12745         * config/ia64/vms_symvec_libgcc_s.opt: New file.
12746         * config/ia64/vms-unwind.h: New file.
12747
12748 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
12749
12750         * config/alpha/alpha.c (alpha_emit_conditional_move): Handle
12751         TFmode compares.
12752
12753 2009-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12754
12755         PR middle-end/30789
12756         * builtins.c (do_mpc_arg2): Make extern, define for any MPC version.
12757         Move declaration...
12758         * real.h (do_mpc_arg2): ... here.
12759         * fold-const.c (const_binop): Use MPC for complex MULT_EXPR
12760         and RDIV_EXPR.
12761
12762 2009-08-14  Rafael Avila de Espindola  <espindola@google.com>
12763
12764         * final.c (add_debug_prefix_map): Don't use GC memory for
12765         old_prefix and new_prefix.
12766
12767 2009-08-14  Richard Guenther  <rguenther@suse.de>
12768
12769         * ipa-prop.c (compute_complex_pass_through): If we cannot
12770         compute a non-varying offset for IPA_JF_ANCESTOR punt.
12771
12772 2009-08-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
12773
12774         * c-lex.c (c_lex_with_flags): Increase size of local variable
12775         to avoid memory clobber.
12776
12777 2009-08-14  Paolo Bonzini  <bonzini@gnu.org>
12778
12779         PR target/40934
12780         * config/i386/i386.c (ix86_fp_comparison_strategy):
12781         Only enable/disable sahf at function granularity.
12782
12783 2009-08-14  Hans-Peter Nilsson  <hp@axis.com>
12784
12785         PR rtl-optimization/41064
12786         * reload1.c (reload_as_needed): Don't call extract_insn
12787         for known invalid replacements after calling
12788         validate_replace_rtx_group and verify_changes.
12789
12790 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
12791
12792         PR target/41019
12793         * config/i386/sse.md (SSEMODE124C8): New mode iterator.
12794         (vcond<SSEMODEF2P:mode>): Assert that operation is supported by
12795         ix86_expand_fp_vcond.
12796         (vcond<SSEMODE124C8:mode>): Use SSEMODE124C8 instead of SSEMODE124.
12797         Assert that operation is supported by ix86_expand_int_vcond.
12798         (vcondu<SSEMODE124C8:mode>): Ditto.
12799
12800 2009-08-13  DJ Delorie  <dj@redhat.com>
12801
12802         * config/i386/djgpp-stdint.h: New.
12803         * config.gcc (djgpp): Use it.
12804
12805 2009-08-13  Kaz Kojima  <kkojima@gcc.gnu.org>
12806
12807         * config/sh/sh.c (sh_override_options): When flag_exceptions or
12808         flag_unwind_tables is on, turn flag_reorder_blocks_and_partition off.
12809
12810 2009-08-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
12811
12812         * tree-ssa-loop-prefetch.c
12813         (prune_ref_by_group_reuse): Enhance probabilistic analysis
12814         for long-stride pruning.
12815         (compute_miss_rate): New function to compute the probability
12816         that two memory references access different cache lines.
12817
12818 2009-08-13  Dave Korn  <dave.korn.cygwin@gmail.com>
12819
12820         * gcc/config/i386/cygwin.h (LINK_SPEC): Add --enable-auto-image-base.
12821
12822 2009-08-13  Richard Guenther  <rguenther@suse.de>
12823
12824         PR middle-end/41047
12825         * tree-ssa-ccp.c (ccp_fold): When folding pointer additions
12826         use the constant pointer type.
12827         * gimplify.c (canonicalize_addr_expr): Canonicalize independent
12828         of CV qualifiers on the target pointer type.
12829         * tree-ssa.c (useless_type_conversion_p): Move incomplete pointer
12830         conversion check before restrict check.
12831
12832 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
12833
12834         PR target/41029
12835         * config/sh/sh.md (reload_outdf__RnFRm+4): Fix thinko.
12836
12837 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
12838
12839         * config/sh/sh.c (sh_promote_function_mode): Add ATTRIBUTE_UNUSED.
12840
12841 2009-08-12  Richard Guenther  <rguenther@suse.de>
12842
12843         PR tree-optimization/41011
12844         * ipa-cp.c (ipcp_lattice_from_jfunc): Deal with failing fold
12845         and reference constructing.
12846
12847 2009-08-12  Xinliang David Li  <davidxl@google.com>
12848
12849         PR tree-optimization/41012
12850         * tree-flow.h : New external interface.
12851         * gimple-low.c (check_call_arg): Change to public function.
12852         Remove argument mismatch check in lowering.
12853         * tree-inline.h (tree_can_inline_p): Interface change.
12854         * tree-inline.c (tree_can_inline_p): Fold argument mismatch check
12855         into this function.
12856         * ipa-inline.c (cgraph_decide_inlining_of_small_functions):
12857         Call change to tree_can_inline_p function.
12858         (cgraph_decide_inlining_incrementally): Ditto.
12859
12860 2009-08-12  Richard Sandiford  <rdsandiford@googlemail.com>
12861
12862         PR tree-optimization/41031
12863         * tree-outof-ssa.c (insert_value_copy_on_edge): Use promote_decl_mode
12864         on the partition variable rather than promote_mode on the source
12865         type.  Assert that the partition variable's type has the same
12866         mode as the source value's.
12867
12868 2009-08-12  Paolo Bonzini  <bonzini@gnu.org>
12869
12870         * doc/tm.texi (TARGET_PROMOTE_FUNCTION_MODE): Add documentation
12871         for for_return == 2.
12872         * function.c (assign_parm_setup_reg): Use for_return == 2, improve
12873         comments.
12874         * calls.c (expand_call): Fix typo.
12875         * explow.c (promote_decl_mode): Use for_return == 2 for RESULT_DECL
12876         and PARM_DECL.
12877         * stmt.c (expand_value_return): Use promote_function_mode to copy out
12878         of pseudo.
12879         * targhooks.c (default_promote_function_mode): Handle for_return == 2.
12880         * config/cris/cris.c (cris_promote_function_mode): Likewise.
12881         * config/mmix/mmix.c (mmix_promote_function_mode): Likewise.
12882         * config/pa/pa.c (pa_promote_function_mode): Likewise.
12883
12884 2009-08-12  Andrew Haley  <aph@redhat.com>
12885
12886         * config/arm/arm.c (arm_init_libfuncs): Add __sync_synchronize.
12887
12888 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12889
12890         PR bootstrap/40103
12891         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
12892
12893 2009-08-12  Richard Guenther  <rguenther@suse.de>
12894
12895         * alias.c (get_alias_set): Honor TYPE_STRUCTURAL_EQUALITY_P.
12896         * gimplify.c (gimplify_modify_expr): Do not use
12897         lang_hooks.types_compatible_p.
12898         * tree-ssa.c (useless_type_conversion_p): For aggregates
12899         just return false if the canonical types differ.
12900
12901 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12902
12903         PR middle-end/40980
12904         * sese.c (convert_for_phi_arg): New.
12905         (add_guard_exit_phis): Use convert_for_phi_arg.
12906
12907 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12908
12909         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Dont add
12910         unknown subscript upper bounds.
12911
12912 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12913             Pranav Garg  <pranav.garg2107@gmail.com>
12914
12915         * graphite-interchange.c (gather_access_strides): Removed.
12916         (ppl_max_for_le): New.
12917         (build_linearized_memory_access): New.
12918         (memory_stride_in_loop): New.
12919         (pbb_interchange_profitable_p): Reimplemented.
12920         * graphite-ppl.h (ppl_new_id_map): New.
12921         (ppl_interchange): New.
12922
12923 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12924
12925         * graphite-interchange.c (compute_subscript): Removed.
12926         (compute_array_size_cstr): Removed.
12927         (compute_array_size_poly): Removed.
12928         (compute_array_size): Removed.
12929         (gather_access_strides_poly): Removed.
12930         (gather_access_strides): Empty.
12931
12932 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12933
12934         * graphite-dependences.c (dependence_polyhedron_1): Replace
12935         pdr_nb_subscripts with PDR_NB_SUBSCRIPTS.
12936         (graphite_legal_transform_dr): Same.
12937         (graphite_carried_dependence_level_k): Same.
12938         * graphite-poly.c (new_poly_dr): Add a parameter nb_subscripts.
12939         Initialize PDR_NB_SUBSCRIPTS.
12940         (print_pdr_access_layout): Replace pdr_nb_subscripts with
12941         PDR_NB_SUBSCRIPTS.
12942         * graphite-poly.h (struct poly_dr): Add nb_subscripts field.
12943         (PDR_NB_SUBSCRIPTS): New.
12944         (pdr_nb_subscripts): Removed.
12945         (pdr_dim): Simplified.
12946         * graphite-sese-to-poly.c (build_poly_dr): Replace pdr_nb_subscripts
12947         with PDR_NB_SUBSCRIPTS.
12948
12949 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12950
12951         * graphite-interchange.c (compute_array_size): Remove use of
12952         PDR_DATA_CONTAINER.
12953         * graphite-poly.c (new_poly_dr): Remove argument data_container.
12954         Do not initialize PDR_DATA_CONTAINER.
12955         (print_pdr): Do not print PDR_DATA_CONTAINER.
12956         * graphite-poly.h (struct poly_dr): Remove data_container field.
12957         (PDR_DATA_CONTAINER): Removed.
12958         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Remove use of
12959         PDR_DATA_CONTAINER.
12960         (build_poly_dr): Same.
12961
12962 2009-08-12  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
12963             Sebastian Pop  <sebastian.pop@amd.com>
12964
12965         * graphite-dependences.c (graphite_legal_transform_dr): Work on a
12966         copy of the dependence polyhedron.  Free the temporary objects.
12967         (graphite_carried_dependence_level_k): Free unused objects before
12968         returning.
12969
12970 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12971
12972         * graphite-blocking.c (scop_do_strip_mine): Call store_scattering.
12973         Early return without analyzing the data dependences if no
12974         transform has been done.  Call restore_scattering if the transform
12975         is not legal.
12976         (graphite-interchange.c): Same.
12977         * graphite-poly.c (print_scattering_function): Test for
12978         PBB_TRANSFORMED.
12979         (graphite_read_transforms): Initialize PBB_TRANSFORMED.
12980         (apply_poly_transforms): Do not gcc_assert that
12981         the transform is legal.
12982         (new_poly_bb): Initialize PBB_TRANSFORMED, PBB_SAVED and PBB_ORIGINAL.
12983         Do not initialize PBB_NB_SCATTERING_TRANSFORM, PBB_NB_LOCAL_VARIABLES,
12984         PBB_TRANSFORMED_SCATTERING, and PBB_ORIGINAL_SCATTERING.
12985         (free_poly_dr): Free PBB_TRANSFORMED, PBB_SAVED, and PBB_ORIGINAL.
12986         * graphite-poly.h (struct poly_scattering): New.
12987         (struct poly_bb): Add original, transformed, and saved fields.
12988         Remove transformed_scattering, original_scattering,
12989         nb_local_variables and nb_scattering_transform fields.
12990         (PBB_ORIGINAL, PBB_TRANSFORMED, PBB_SAVED): New.
12991         (poly_scattering_new): New.
12992         (poly_scattering_free): New.
12993         (poly_scattering_copy): New.
12994         (store_scattering_pbb): New.
12995         (store_scattering): New.
12996         (restore_scattering_pbb): New.
12997         (restore_scattering): New.
12998         * graphite-sese-to-poly.c (build_pbb_scattering_polyhedrons):
12999         Initialize PBB_TRANSFORMED and PBB_ORIGINAL.
13000
13001 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
13002
13003         * graphite-poly.c (print_pbb): Add parentheses in the pretty print.
13004         (print_scop): Same.
13005
13006 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
13007
13008         * Makefile.in (graphite.o): Depends on PREDICT_H.
13009         * graphite.c: Include predict.h.
13010         (graphite_finalize): Call tree_estimate_probability.
13011         * predict.c (predict_loops): Do not call scev_initialize and
13012         scev_finalize.
13013         (tree_estimate_probability_bb): New.
13014         (tree_estimate_probability): Do not initialize loops: move that
13015         code to the driver.  Call tree_estimate_probability_bb.
13016         (tree_estimate_probability_driver): New.
13017         (pass_profile): Use tree_estimate_probability_driver.
13018         * predict.h (tree_estimate_probability): Declared.
13019
13020 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
13021
13022         * graphite-clast-to-gimple.c (gloog): Add time to TV_GRAPHITE_CODE_GEN.
13023         * graphite-dependences.c (graphite_legal_transform): Add time to
13024         TV_GRAPHITE_DATA_DEPS.
13025         (dependency_between_pbbs_p): Same.
13026         * timevar.def (TV_GRAPHITE_DATA_DEPS, TV_GRAPHITE_CODE_GEN): New.
13027
13028 2009-08-12  Andrey Belevantsev  <abel@ispras.ru>
13029
13030         PR rtl-optimization/41033
13031         * alias.c (nonoverlapping_component_refs_p): Punt when strict
13032         aliasing is disabled.
13033
13034 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
13035
13036         * config/mips/predicates.md (qi_mask_operand, hi_mask_operand,
13037         si_mask_operand, and_load_operand, low_bitmask_operand,
13038         and_reg_operand, and_operand): New predicates.
13039         * config/mips/constraints.md (Yb, Yh, Yw, Yz): New constraints.
13040         * config/mips/mips.c (and_operands_ok): New function.
13041         * config/mips/mips-protos.h (and_operands_ok): Declare it.
13042         * config/mips/mips.md (move_type): Add ext_ins and logical.
13043         (type): Handle them.
13044         (and<mode>3): Use and_reg_operand as the second operand's predicate.
13045         (*and<mode>3): Add alternatives for lbu, lhu, lwu, <d>ext and
13046         shift_shift.  Remove commutative constraint modifier.
13047         (*and<mode>3_mips16): Add alternatives for lbu, lhu, lwu and
13048         shift_shift.
13049         (*clear_upper32_dext): Remove define_insn_and_split.
13050         (*clear_upper32): Turn this define_insn_and_split ...
13051         (splitter for ANDing register with 0xffff_ffff): .. into this.
13052
13053 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
13054
13055         * combine.c (try_widen_shift_mode): Factor out code to check if an
13056         integer constant is a low-order bitmask from here ...
13057         * rtlanal.c (low_bitmask_len): ... to here.
13058         * rtl.h (low_bitmask_len): Declare.
13059
13060 2009-08-11  Uros Bizjak  <ubizjak@gmail.com>
13061
13062         PR target/8603
13063         * config/alpha/alpha.md (addsi3): Remove expander.
13064         (addsi3): Rename from *addsi3_internal insn pattern.
13065         (subsi3): Remove expander.
13066         (subsi3): Rename from *subsi3_internal insn pattern.
13067
13068 2009-08-11  Douglas B Rupp  <rupp@gnat.com>
13069
13070         * config/alpha/alpha.c (alpha_init_builtins): Nullify FWRITE and
13071         FWRITE_UNLOCKED.
13072
13073 2009-08-11  Vasiliy Fofanov  <fofanov@adacore.com>
13074             Eric Botcazou  <botcazou@adacore.com>
13075             Douglas B Rupp  <rupp@gnat.com>
13076
13077         * config/alpha/alpha.c (alpha_return_in_memory): On VMS, ensure
13078         that records that fit in 64 bits are returned by immediate value,
13079         as required by OpenVMS Calling Standard.
13080         (function_value): Adjust for above modification.
13081         (alpha_va_start) <TARGET_ABI_OPEN_VMS>: Use
13082         virtual_incoming_args_rtx as base object, not next_arg.
13083         * config/alpha/vms.h (DEFAULT_PCC_STRUCT_RETURN): Define as 0.
13084
13085 2009-08-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
13086
13087         * reload.c (find_reloads_subreg_address): Check the original
13088         req_equiv_mem address to detect the case where an address is
13089         not valid in the outer mode.
13090
13091 2009-08-11  Richard Guenther  <rguenther@suse.de>
13092
13093         PR bootstrap/40788
13094         * builtins.c (gimplify_va_arg_expr): Do not call SET_EXPR_LOCATION.
13095
13096 2009-08-10  Douglas B Rupp  <rupp@gnat.com>
13097
13098         * config/alpha/vms.h (OPTIMIZATION_OPTIONS): Remove
13099         (OVERRIDE_OPTIONS): Incorporate removed OPTIMIZATION_OPTIONS.
13100
13101 2009-08-10  Olivier Hainque  <hainqueu@adacore.com>
13102             Douglas B Rupp  <rupp@gnat.com>
13103
13104         * config/alpha/alpha.c (alpha_sa_size): Force procedure type to
13105         PT_STACK when frame_pointer_needed on OpenVMS.
13106         (alpha_pv_save_size, alpha_using_fp): Remove.
13107         (alpha_vms_can_eliminate): New function. Support for CAN_ELIMINATE
13108         with proper processing for PT_NULL.
13109         (alpha_vms_initial_elimination_offset): New function. Support for
13110         INITIAL_ELIMINATION_OFFSET with proper processing for PT_NULL.
13111         (alpha_sa_size): Force procedure type to PT_STACK when
13112         frame_pointer_needed on OpenVMS.
13113         * config/alpha/alpha-protos.h (alpha_pv_save_size): Remove prototype.
13114         (alpha_using_fp): Likewise.
13115         (alpha_vms_can_eliminate): Add prototype.
13116         (alpha_vms_initial_elimination_offset): Likewise.
13117         * config/alpha/vms.h (CAN_ELIMINATE, INITIAL_ELIMINATION_OFFSET):
13118         Call alpha_vms_can_eliminate and alpha_vms_initial_elimination_offset.
13119
13120 2009-08-10  Eric Botcazou  <botcazou@adacore.com>
13121             Douglas B Rupp  <rupp@gnat.com>
13122
13123         * config/alpha/alpha.c (common_object_handler): New function.
13124         (vms_attribute_table): Declare a single attribute "common_object".
13125         (vms_output_aligned_decl_common): New global function.
13126         (SECTION_VMS_OVERLAY): Delete.
13127         (SECTION_VMS_GLOBAL): Likewise.
13128         (SECTION_VMS_INITIALIZE): Likewise.
13129         (vms_asm_named_section): Remove support for above flags.
13130         (vms_section_type_flags): Delete.
13131         (TARGET_SECTION_TYPE_FLAGS): Likewise.
13132         * config/alpha/alpha-protos.h (vms_output_aligned_decl_common): New.
13133         * config/alpha/vms.h (ASM_OUTPUT_ALIGNED_COMMON): Delete.
13134         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New macro.
13135
13136 2009-08-10  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
13137
13138         PR target/41015
13139         * longlong.h [__sh__] (udiv_qrnnd): Add T register to clobber list.
13140         (sub_ddmmss): Likewise.
13141
13142 2009-08-10  Andreas Tobler  <a.tobler@schweiz.org>
13143
13144         PR bootstrap/41018
13145         * config/rs6000/freebsd.h: Define SVR4_ASM_SPEC. Adjust copyright
13146         year.
13147
13148 2009-08-10  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
13149
13150         PR target/37053
13151         * reload1.c (reload_as_needed): Use cancel_changes to completely
13152         undo a failed replacement attempt.
13153
13154 2009-08-10  Richard Guenther  <rguenther@suse.de>
13155
13156         PR middle-end/41006
13157         * tree-ssa.c (useless_type_conversion_p_1): Fold into ...
13158         (useless_type_conversion_p): ... here.  Require pointer targets
13159         to be compatible.
13160
13161 2009-08-10  Dodji Seketeli  <dodji@redhat.com>
13162
13163         PR c++/40866
13164         * tree-inline.c (copy_statement_list): The resulting copy shouldn't
13165         loose the original type of the statement list.
13166
13167 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
13168
13169         * config/alpha/alpha.c: Include libfuncs.h
13170         (avms_asm_output_extern): New function.
13171         (alpha_init_libfuncs): Init some decc libfuncs.
13172         * config/alpha/alpha-protos.h (avms_asm_output_external): Declare.
13173         * config/alpha/vms.h (ASM_OUTPUT_EXTERNAL): Define.
13174         (DO_CRTL_NAMES): Define.
13175         (LIB_SPEC): Remove.
13176         * config/alpha/vms64.h (POINTERS_EXTEND_UNSIGNED): Remove undef.
13177         (LONG_TYPE_SIZE): Define.
13178         (TARGET_OS_CPP_BUILTINS): Define with __LONG_POINTERS=1
13179         (SUBTARGET_SWITCHES): Define malloc64 switch.
13180         (TARGET_DEFAULT): Default MASK_MALLOC64 set.
13181         (MASK_RETURN_ADDR): Define.
13182         doc/invoke.texi (mmalloc64): Document switch.
13183
13184 2009-08-09  Olivier Hainque  <hainque@adacore.com>
13185             Douglas B Rupp  <rupp@gnat.com>
13186
13187         * config/alpha/alpha.c (struct machine_function): New flag for VMS,
13188         uses_condition_handler.
13189         (alpha_expand_builtin_establish_vms_condition_handler): New expander.
13190         (alpha_expand_builtin_revert_vms_condition_handler): New expander.
13191         (enum alpha_builtin): New ALPHA_BUILTIN_REVERT_VMS_CONDITION_HANDLER
13192         and ALPHA_BUILTIN_ESTABLISH_VMS_CONDITION_HANDLER values.
13193         (code_for_builtin): New insn codes for the new alpha_builtins.
13194         (alpha_init_builtins): Register the new functions as BUILT_IN_MD.
13195         (alpha_sa_size): Account for uses_condition_handler.
13196         (alpha_expand_prologue): Likewise.
13197         (alpha_start_function): Likewise.
13198         (alpha_expand_epilogue): Likewise.
13199         * config/alpha/alpha-protos.h: Prototype the new alpha.c builtin
13200         establish/revert expanders.
13201         * config/alpha/alpha.h (DWARF_FRAME_REGNUM): Define.
13202         * config/alpha/alpha.md (builtin_establish_vms_condition_handler):
13203         New expander, resorting to the alpha.c associated function.
13204         (builtin_revert_vms_condition_handler): Likewise.
13205         * config/alpha/vms-gcc_shell_handler.c: New file. Implements
13206         __gcc_shell_handler, the static VMS condition handler used as
13207         an indirection wrapper to the current dynamically established
13208         handler.
13209         * config/alpha/vms-unwind.h: Complete rewrite.
13210         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Add vms-gcc_shell_handler.c
13211         * config/alpha/vms.h (MD_UNWIND_SUPPORT):
13212
13213 2009-08-09  Eric Botcazou  <botcazou@adacore.com>
13214             Douglas B Rupp  <rupp@gnat.com>
13215
13216         * config/alpha/alpha.c (alpha_links): Add 'target' field.
13217         (alpha_need_linkage): Handle aliases.  Return function symbol.
13218         (alpha_use_linkage): Rename 'linkage' argument to 'func'.
13219         Use ultimate alias target for the linkage name.
13220         * config/alpha/alpha.md (movmemdi): Use the symbol returned
13221         by alpha_need_linkage for the function symbol.
13222         (setmemdi): Likewise.
13223
13224 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
13225
13226         * config/alpha/alpha.c (TARGET_ASM_UNALIGNED_*_OP): Define if on VMS.
13227         * config/alpha/vms.h (OBJECT_FORMAT_ELF): Define.
13228         (ASM_WEAKEN_LABEL): Define.
13229         (CRT_CALL_STATIC_FUNCTION): Define.
13230         (STARTFILE_SPEC): Add crtbegin.o crtbeginS.o.
13231         (ENDFILE_SPEC): Define.
13232         (INIT_SECTION_ASM_OP): Define.
13233         * config/alpha/vms-dwarf2eh.asm (__EH_FRAME_BEGIN__): Remove.
13234         * config/alpha/t-vms (EXTRA_PARTS): Add crtbegin.o crtbeginS.o
13235         crtend.o crtendS.o.
13236         (MULTILIB_OSDIRNAMES): Define.
13237         (shlib_version): Define.
13238         (SHLIB_EXT): Define.
13239         (SHLIB_OBJS): Define.
13240         (SHLIB_NAME): Define.
13241         (SHLIB_MULTILIB): Define.
13242         (SHLIB_INSTALL): Define.
13243         (SHLIB_SYMVEC): Define.
13244         (SHLIB_SYMVECX2): Define.
13245         (SHLIB_LINK): Define.
13246
13247 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
13248
13249         * config/alpha/alpha.c (alpha_initialize_trampoline):
13250         Initialize VMS trampoline IAW ABI for bounded procedure calls.
13251         (alpha_start_function): Emit transfer address on nested functions
13252         for VMS trampoline call.
13253         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Remove vms_tramp.asm
13254         since no longer used.
13255         * config/alpha/vms-tramp.asm: Remove.
13256         * config/alpha/vms.h (TRAMPOLINE_TEMPLATE): Leave undefined
13257         since now only data initialized at runtime.
13258
13259 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
13260
13261         * config/alpha/vms.h (HANDLE_SYSV_PRAGMA): Define.
13262         (LINK_GCC_C_SEQUENCE_SPEC): Define.
13263         (MD_EXEC_PREFIX): Remove, no longer used.
13264         (MD_STARTFILE_PREFIX): Likewise.
13265         (INCLUDE_DEFAULTS): Likewise.
13266         * config/alpha/t-vms:
13267         (vms-dwarf2.o, vms-dwarf2eh.o): Use GCC_FOR_TARGET to compile.
13268
13269 2009-08-09  Richard Guenther  <rguenther@suse.de>
13270
13271         PR tree-optimization/41016
13272         * tree-ssa-ifcombine.c (get_name_for_bit_test): Fix tuplification bug.
13273         (operand_precision): Remove.
13274         (integral_operand_p): Likewise.
13275         (recognize_single_bit_test): Adjust.
13276
13277 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
13278
13279         * c-common.c (c_fully_fold_internal): Issue a warning if a binary
13280         operation overflows.  Likewise non-cast unary arithmetic.
13281         If one arm of a conditional expression is always taken,
13282         inhibit evaluation warnings for the other arm.  Likewise inhibit
13283         evaluation warnings for the second && or || operand if the first
13284         operand is enough to determine the result.
13285         * c-typeck.c (build_conditional_expr): Apply the same inhibition
13286         rules here.
13287         (build_binary_op): Prevent duplicate evaluation warnings.
13288
13289 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
13290
13291         * tree-out-of-ssa.c (insert_value_copy_on_edge): If the source
13292         and destination have different modes, Use promote_mode to
13293         determine the signedness of the conversion.  Assert that the
13294         promoted source mode matches the destination mode.  Don't pass
13295         the destination and destination mode to expand_expr if the source
13296         mode is different.  Simplify conversion logic.
13297
13298 2009-08-09  Ira Rosen  <irar@il.ibm.com>
13299
13300         PR tree-optimization/41008
13301         * tree-vect-loop.c (vect_is_simple_reduction): Get operands
13302         from condition only in case it's a comparison. Adjust checks.
13303
13304 2009-08-09  Bernd Schmidt  <bernd.schmidt@analog.com>
13305
13306         * tree-dfa.c (renumber_gimple_stmt_uids_in_blocks): New function.
13307         * tree-flow.h (renumber_gimple_stmt_uids_in_blocks): Declare it.
13308         * tree-ssa-loop-ivopts.c (comp_cost): Make COST an integer.
13309         (enum iv_position): Add IP_AFTER_USE and IP_BEFORE_USE.
13310         (dump_cand): Handle them.
13311         (struct iv_cand): New members COST_STEP and AINC_USE.
13312         (stmt_after_increment): Likewise.
13313         (stmt_after_inc_pos): Renamed from stmt_after_ip_original_pos.  All
13314         callers changed.  Use gimple_uid comparison instead of scanning.
13315         (add_candidate_1): When looking for identical candidates, take
13316         AINC_USE into account.  Set it for new candidates.
13317         (force_expr_to_var_cost): Cast target_spill_cost to int.
13318         (get_address_cost): New arguments STMT_AFTER_INC and MAY_AUTOINC.
13319         All callers changed.  Check for availability of autoinc addressing
13320         modes, both in general for a given mode, and in the specific use case.
13321         (get_computation_cost_at): New argument CAN_AUTOINC.  All callers
13322         changed.
13323         (get_computation_cost): Likewise.
13324         (autoinc_possible_for_pair, set_autoinc_for_original_candidates,
13325         add_autoinc_candidates): New static functions.
13326         (add_candidate): Call add_autoinc_candidates for candidates based on
13327         a USE_ADDRESS use.
13328         (find_iv_candidates): Call set_autoinc_for_original_candidates.
13329         (determine_use_iv_cost_address): If we have an autoinc candidate at
13330         the matching use, verify autoinc is possible and subtract the cost
13331         of the candidate's step from the cost.
13332         (determine_iv_cost): Record the cost of the increment in the COST_STEP
13333         member of the candidate.
13334         (tree_ssa_iv_optimize_loop): Swap the calls to determine_iv_costs and
13335         determine_use_iv_costs.  Call renumber_gimple_stmt_uids_in_blocks.
13336
13337 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
13338
13339         * config.build (ia64-hp-*vms*): New target.
13340         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
13341         with ia64-hp-*vms*.
13342         * config.gcc (ia64-hp-*vms*): New target.
13343         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
13344         with ia64-hp-*vms*.
13345         * config.host (ia64-hp-*vms*): New target.
13346         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
13347         with ia64-hp-*vms*.
13348
13349 2009-08-08  Richard Guenther  <rguenther@suse.de>
13350
13351         PR tree-optimization/40991
13352         * tree-ssa-pre.c (eliminate): Delay purging EH edges.
13353
13354 2009-08-08  Richard Sandiford  <rdsandiford@googlemail.com>
13355
13356         * combine.c (gen_lowpart_or_truncate): Exclude CONST_INTs from
13357         mode check.  Do truncations in an integer mode.
13358         (force_to_mode): Handle subregs for all mode types.  Only do
13359         arithmetic simplifications on integer modes.
13360
13361 2009-08-07  Richard Guenther  <rguenther@suse.de>
13362
13363         PR tree-optimization/40999
13364         * tree-ssa-ccp.c (get_symbol_constant_value): Handle CONST_DECLs.
13365         (maybe_fold_reference): Lookup constant initializers.
13366         (fold_gimple_assign): Likewise.
13367
13368 2009-08-07  Richard Guenther  <rguenther@suse.de>
13369
13370         * tree-ssa.c (useless_type_conversion_p_1): Only for types
13371         that require structural equality defer to the langhook.
13372
13373 2009-08-07  Martin Jambor  <mjambor@suse.cz>
13374
13375         * ipa-prop.h (enum jump_func_type): New value IPA_JF_ANCESTOR, changed
13376         comments.
13377         (struct ipa_pass_through_data): New type.
13378         (struct ipa_ancestor_jf_data): New type.
13379         (union jump_func_value): Removed field formal_id, added fields
13380         pass_through and ancestor.
13381         (struct ipa_param_call_note): Changed type of formal_id to int from
13382         unsigned.
13383         * ipa-prop.c (ipa_print_node_jump_functions): Print pass through with
13384         operations jump functions and ancestor jump functions.
13385         (compute_complex_pass_through): New function.
13386         (compute_scalar_jump_functions): Call compute_complex_pass_through,
13387         reflect changes in the jump function strucutre.
13388         (update_jump_functions_after_inlining): Ignore complex pass-through
13389         and ancestor jump functions.
13390         * ipa-cp.c (ipcp_lattice_from_jfunc): Added support for ancestor and
13391         polynomial pass-through with operation jump functions.
13392
13393 2009-08-07  Jakub Jelinek  <jakub@redhat.com>
13394
13395         * dwarf2out.c (output_fde): When doing hot/cold partitioning, use
13396         fde->dw_fde_begin as begin label instead of hot/cold label.
13397         Use LLSDAC label instead of LLSDA for second section lsda.
13398         (dwarf2out_do_cfi_startproc): Add SECOND argument.  Use LLSDAC
13399         label instead of LLSDA if it is true.
13400         (dwarf2out_begin_prologue, dwarf2out_switch_text_section): Adjust
13401         callers.
13402         * except.c (add_call_site, dw2_size_of_call_site_table): Add
13403         SECTION argument.  Use it as index into crtl->eh.call_site_record
13404         array.
13405         (dw2_output_call_site_table): Likewise.  Add CS_FORMAT argument,
13406         use it to determine how to print table entries instead of using
13407         #ifdef HAVE_AS_LEB128.  For SECTION > 0 use hot resp. cold
13408         label instead of normal begin label as base.
13409         (sjlj_assign_call_site_values): Adjust add_call_site caller.
13410         (convert_to_eh_region_ranges): When doing hot/cold partitioning,
13411         ensure no EH range spans between sections and that landing pads
13412         are always in the corresponding section.
13413         (sjlj_size_of_call_site_table, sjlj_output_call_site_table): Adjust
13414         for crtl->eh.call_site_record being an array rather than scalar.
13415         (output_one_function_exception_table): New function, copied
13416         from output_function_exception_table.  Adjust
13417         dw2_size_of_call_site_table, dw2_output_call_site_table
13418         callers.  For SECOND section use *C suffixed labels.
13419         (output_function_exception_table): Call
13420         output_one_function_exception_table and, when doing hot/cold
13421         partitioning, also another time for the second section.
13422         * opts.c: Include except.h.
13423         (decode_options): Allow -freorder-blocks-and-partition with
13424         exceptions, unless SJLJ or TARGET_UNWIND_INFO.
13425         * Makefile.in (opts.o): Depend on $(EXCEPT_H).
13426         * function.h (struct rtl_eh): Change call_site_record from
13427         scalar into array of 2 elements.
13428
13429 2009-08-07  Martin Jambor  <mjambor@suse.cz>
13430
13431         * ipa-prop.c (count_formal_params_1): New function.
13432         (ipa_get_vector_of_formal_parms): New function.
13433         (get_vector_of_formal_parm_types): New function.
13434         (ipa_modify_formal_parameters): New function.
13435         (ipa_modify_call_arguments): New function.
13436         (index_in_adjustments_multiple_times_p): New function.
13437         (ipa_combine_adjustments): New function.
13438         (ipa_dump_param_adjustments): New function.
13439         * ipa-prop.h (struct ipa_parm_adjustment): New type.
13440         (ipa_get_vector_of_formal_parms): Declare.
13441         (ipa_modify_formal_parameters): Declare.
13442         (ipa_modify_call_arguments): Declare.
13443         (ipa_combine_adjustments): Declare.
13444         (ipa_dump_param_adjustments): Declare.
13445         (build_ref_for_offset): Declare.
13446         * Makefile.in (tree-sra.o): Add ipa-prop.h to dependencies.
13447         * tree-sra.c: Include ipa-prop.c.
13448         (build_ref_for_offset): Make public.
13449
13450 2009-08-06  Neil Vachharajani  <nvachhar@gmail.com>
13451
13452         * value-prof.c (init_pid_map): Replace xmalloc with XCNEWVEC.
13453
13454 2009-08-06  Thomas Schwinge  <tschwinge@gnu.org>
13455
13456         * gcc/doc/extend.texi (__builtin_extract_return_address)
13457         (__builtin_frob_return_address): Document.
13458
13459 2009-08-06  Paul Brook  <paul@codesourcery.com>
13460
13461         * config/arm/lib1funcs.asm (ARM_DIV_BODY): Add Thumb-2 implementation.
13462         (udivsi3, aeabi_uidivmod, divsi3, aeabi_idivmod): Only use Thumb-1
13463         implementation on ARMv6-M.
13464
13465 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
13466
13467         * doc/extend.texi (pcs): Document new attribute for ARM.
13468
13469 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
13470
13471         * arm.c (pcs_attribute_args): Comment out unsupported attribute
13472         variants.
13473
13474 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
13475
13476         * arm.c (arm_handle_pcs_attribute): Pass the entire name object to
13477         warning ().
13478
13479 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
13480
13481         * arm.c (arm_handle_pcs_attribute): Use %qE in warning.
13482
13483 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
13484
13485         Merge ARM/hard_vfp_branch to trunk.
13486
13487         2009-08-04  Richard Earnshaw  <rearnsha@arm.com>
13488
13489         * arm.c (libcall_eq): New function.
13490         (libcall_hash): New function.
13491         (add_libcall): New function.
13492         (arm_libcall_uses_aapcs_base): New function.
13493         (arm_libcall_value): Use arm_libcall_uses_aapcs_base to check for
13494         libcalls using the base PCS.
13495         (arm_init_cumulative_args): Likewise.
13496
13497         2009-07-20  Joseph Myers  <joseph@codesourcery.com>
13498
13499         * config/arm/arm.c (arm_libcall_value, arm_init_cumulative_args):
13500         Use base ABI for conversion libfuncs between HFmode and SFmode.
13501
13502         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
13503
13504         * config/arm/arm.c (aapcs_vfp_sub_candidate): Use V2SImode and
13505         V4SImode as representatives of all 64-bit and 128-bit vector
13506         types.  Allow vector types without vector modes.
13507         (aapcs_vfp_is_call_or_return_candidate): Handle vector types
13508         without vector modes like BLKmode.
13509         (aapcs_vfp_allocate): Handle TImode for non-TARGET_NEON like
13510         BLKmode.  Avoid unsupported vector modes or TImode moves for
13511         non-TARGET_NEON.
13512         (aapcs_vfp_allocate_return_reg): Likewise.
13513         (arm_vector_mode_supported_p): Only support V2SImode, V4HImode and
13514         V8QImode if TARGET_NEON || TARGET_IWMMXT.
13515
13516         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
13517
13518         * config/arm/arm.c (arm_handle_pcs_attribute): New.
13519         (arm_get_pcs_model): Pass attribute arguments to
13520         arm_pcs_from_attribute.
13521         (arm_init_cumulative_args): Use base AAPCS for conversions from
13522         floating-point types to DImode.
13523         (arm_attribute_table): Add pcs attribute.
13524         (arm_handle_pcs_attribute): New.
13525         * config/arm/bpabi.h (DECLARE_LIBRARY_RENAMES): When renaming
13526         conversions from floating-point types to DImode, also declare them
13527         to use base AAPCS and declare functions they call to use base
13528         AAPCS and their RTABI names.
13529
13530         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
13531
13532         * doc/invoke.texi (-mfloat-abi=@var{name}): Remove statement about
13533         -mfloat-abi=hard not being supported for VFP.
13534
13535         2009-05-11  Kazu Hirata  <kazu@codesourcery.com>
13536
13537         * config/sparc/sparc.c (sparc_emit_float_lib_cmp): Pass a libcall
13538         SYMBOL_REF to hard_libcall_value.
13539
13540         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
13541             Richard Earnshaw  <rearnsha@arm.com>
13542
13543         * config/arm/arm.c (aapcs_layout_arg): Once a co-processor argument
13544         has been put on the stack, all remaining co-processory arguments for
13545         that co-processor also go on the stack.
13546
13547         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
13548
13549         * config/arm/arm.c (arm_return_in_memory): Handle returning
13550         vectors of suitable size in registers also for AAPCS case.
13551
13552         2009-01-13  Richard Earnshaw <rearnsha@arm.com>
13553
13554         * doc/tm.texi (TARGET_LIBCALL_VALUE): Add missing end statement.
13555
13556         2008-12-09  Richard Earnshaw <rearnsha@arm.com>
13557
13558         ARM Hard-VFP calling convention
13559         * target-def.h (TARGET_LIBCALL_VALUE): New hook.
13560         * target.h (gcc_target): Add libcall_value to table of call hooks.
13561         * targhooks.h (default_libcall_value): Default implementation.
13562         * targhooks.c (default_libcall_value): Likewise.
13563         * doc/tm.texi (TARGET_LIBCALL_VALUE): Document it.
13564         * optabs.c (expand_unop): Use it.
13565         * expr.h (hard_libcall_value): Pass the function RTX through.
13566         * calls.c (emit_library_call_value_1): Update call to
13567         hard_libcall_value.
13568         * explow.c (hard_libcall_value): Use new target hook.
13569         * config/arm/arm.c: Include cgraph.h
13570         (TARGET_FUNCTION_VALUE): Override default hook.
13571         (arm_pcs_default): New variable.
13572         (arm_override_options): Don't fault hard calling convention with VFP.
13573         Add support for AAPCS variants.
13574         (arm_function_value): Make static.  Handle AAPCS variants.
13575         (arm_libcall_value): New function.
13576         (arm_apply_result_size): Handle VFP registers in results.
13577         (arm_return_in_memory): Rework all AAPCS variants; handle hard-vfp
13578         conventions.
13579         (pcs_attribute_args): New variable.
13580         (arm_pcs_from_attribute): New function.
13581         (arm_get_pcs_model): New function.
13582         (aapcs_vfp_cum_init): New function.
13583         (aapcs_vfp_sub_candidate): New function.
13584         (aapcs_vfp_is_return_candidate): New function.
13585         (aapcs_vfp_is_call_candidate): New function.
13586         (aapcs_vfp_allocate): New function.
13587         (aapcs_vfp_allocate_return_reg): New function.
13588         (aapcs_vfp_advance): New function.
13589         (aapcs_cp_arg_layout): New variable.
13590         (aapcs_select_call_coproc): New function.
13591         (aapcs_select_return_coproc): New function.
13592         (aapcs_allocate_return_reg): New function.
13593         (aapcs_libcall_value): New function.
13594         (aapcs_layout_arg): New function.
13595         (arm_init_cumulative_args): Initialize AAPCS args data.
13596         (arm_function_arg): Handle AAPCS variants using new interface.
13597         (arm_arg_parital_bytes): Likewise.
13598         (arm_function_arg_advance): New function.
13599         (arm_function_ok_for_sibcall): Ensure that sibling calls agree on
13600         calling conventions.
13601         (arm_setup_incoming_varargs): Handle new AAPCS args data.
13602         * arm.h (NUM_VFP_ARG_REGS): Define.
13603         (LIBCALL_VALUE): Update.
13604         (FUNCTION_VALUE): Delete.
13605         (FUNCTION_VALUE_REGNO_P): Add VFP regs.
13606         (arm_pcs): New enum.
13607         (CUMULATIVE_ARGS): New data to support AAPCS argument marshalling.
13608         (FUNCTION_ARG_ADVANCE): Call arm_function_arg_advance.
13609         (FUNCTION_ARG_REGNO_P): Add VFP regs.
13610         * arm-protos.h (arm_function_arg_advance): Add.
13611         (aapcs_libcall_value): Add.
13612         (arm_function_value): Delete.
13613
13614 2009-08-06  Uros Bizjak  <ubizjak@gmail.com>
13615             H.J. Lu  <hongjiu.lu@intel.com>
13616
13617         PR target/40957
13618         * config/i386/i386.c (standard_sse_mode_p): Remove.
13619         (standard_sse_constant_p): Return 2 for integer mode
13620         vector_all_ones_operand when SSE2 is enabled.
13621         (standard_sse_constant_opcode)<case 2>: Always return [v]pcmpeqd.
13622         (ix86_expand_vector_move): Do not check for negative values from
13623         standard_sse_constant_p.
13624
13625 2009-08-06  Richard Guenther  <rguenther@suse.de>
13626
13627         * tree-ssa.c (useless_type_conversion_p_1): Make function and
13628         array type comparisons frontend independent.
13629         * Makefile.in (tree-ssa.o): Add $(TARGET_H) dependency.
13630         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Always fill
13631         out array reference lower bound and element size operands.
13632         (ao_ref_init_from_vn_reference): Properly compute the offset
13633         for ARRAY_RANGE_REF.
13634         (vn_reference_fold_indirect): Fill out array reference lower
13635         bound and element size operands.
13636         * tree-ssa-pre.c (phi_translate_1): Fail if we have to translate
13637         a non gimple valued reference operand which can happen for
13638         array reference lower bound or element size.
13639         (create_component_ref_by_pieces_1): Properly generate the
13640         element size operand for array references.
13641
13642 2009-08-06  Richard Guenther  <rguenther@suse.de>
13643
13644         PR tree-optimization/40964
13645         * tree.c (iterative_hash_host_wide_int): Export.
13646         * tree.h (iterative_hash_host_wide_int): Declare.
13647         * tree-ssa-structalias.c (heapvar_map): New struct.
13648         (heapvar_map_eq): New function.
13649         (heapvar_map_hash): Likewise.
13650         (heapvar_lookup): Adjust.
13651         (heapvar_insert): Likewise.
13652         (make_constraint_from_heapvar): Allow multiple heap variables
13653         per decl at different offsets.
13654         (init_alias_heapvars): Adjust.
13655
13656 2009-08-04  David Daney  <ddaney@caviumnetworks.com>
13657
13658         * config/mips/mips.h (TARGET_SYNC_AFTER_SC): New macro.
13659         * mips_output_sync_loop (mips_output_sync_loop): Only emit
13660         trailing sync if TARGET_SYNC_AFTER_SC.
13661
13662 2009-08-05  David Daney  <ddaney@caviumnetworks.com>
13663
13664         * gcc/config/mips/sync.md (sync_compare_and_swap<mode>,
13665         compare_and_swap_12, sync_add<mode>, sync_<optab>_12,
13666         sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12,
13667         sync_old_nand_12, sync_new_nand_12, sync_sub<mode>,
13668         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
13669         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
13670         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
13671         sync_new_nand<mode>, sync_lock_test_and_set<mode>,
13672         test_and_set_12): Rewrite calls to mips_output_sync_loop.
13673         * gcc/config/mips/mips-protos.h (mips_output_sync_loop): Make
13674         the prototype declaration match the definition.
13675         * gcc/config/mips/mips.c (mips_output_sync_loop):  Emit sync
13676         instructions explicitly.  Add barrier_before and operands
13677         parameters.
13678         * gcc/config/mips/mips.h (MIPS_COMPARE_AND_SWAP,
13679         MIPS_COMPARE_AND_SWAP_12, MIPS_SYNC_OP, MIPS_SYNC_OP_12,
13680         MIPS_SYNC_OLD_OP_12, MIPS_SYNC_NEW_OP_12, MIPS_SYNC_OLD_OP,
13681         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
13682         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE,
13683         MIPS_SYNC_EXCHANGE_12): Remove sync instructions.
13684
13685 2009-08-05  Andrew Pinski  <pinskia@gmail.com>
13686
13687         * tree-ssa-alias.c: Fix intervals to use [) syntax.
13688
13689 2009-08-05  Uros Bizjak  <ubizjak@gmail.com>
13690             Mikulas Patocka  <mikulas@artax.karlin.mff.cuni.cz>
13691
13692         PR target/40906
13693         * config/i386/i386.c (ix86_split_long_move): Fix push of multi-part
13694         source operand.
13695
13696 2009-08-05  Jakub Jelinek  <jakub@redhat.com>
13697
13698         PR rtl-optimization/40924
13699         * dse.c (canon_address): Before calling cselib_expand_value_rtx
13700         make sure canon_rtx (mem_address) isn't simpler than
13701         canon_rtx (expanded_mem_address).
13702
13703 2009-08-05  Li Feng  <nemokingdom@gmail.com>
13704
13705         * graphite-sese-to-poly.c (build_pbb_drs): Remove build alias set
13706         for each poly_bb_p.
13707         (build_scop_drs): Build alias set for each SCoP.
13708
13709 2009-08-04  Sandra Loosemore  <sandra@codesourcery.com>
13710
13711         * doc/invoke.texi (MIPS Options): Document new 1004K -march options.
13712         * config/mips/mips.c (mips_cpu_info_table): Add 1004K cores.
13713         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Add pattern for 1004K.
13714         (MIPS_ARCH_FLOAT_SPEC): Likewise.
13715         (BASE_DRIVER_SELF_SPECS): Likewise.
13716
13717 2009-08-04  Andrew Pinski  <pinskia@gmail.com>
13718
13719         * tree-ssa-alias.c: Fix some comment typos.
13720
13721 2009-08-04  Kaz Kojima  <kkojima@gcc.gnu.org>
13722
13723         * config/sh/linux-atomic.asm (ATOMIC_BOOL_COMPARE_AND_SWAP,
13724         ATOMIC_OP_AND_FETCH, ATOMIC_COMBOP_AND_FETCH): Define.
13725
13726 2009-08-03  Janis Johnson  <janis187@us.ibm.com>
13727
13728         PR c/39902
13729         * simplify-rtx.c (simplify_binary_operation_1): Disable
13730         simplifications for decimal float operations.
13731
13732 2009-08-03  Jakub Jelinek  <jakub@redhat.com>
13733
13734         PR middle-end/40943
13735         * tree-ssa.c (warn_uninitialized_var): Even on LHS warn for
13736         operand of INDIRECT_REF.
13737
13738 2009-08-03  Uros Bizjak  <ubizjak@gmail.com>
13739
13740         * config/alpha/alpha.c (alpha_legitimate_constant_p): Reject CONST
13741         constants referencing TLS symbols.
13742
13743 2009-08-03  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
13744
13745         * config/sh/linux-atomic.asm (ATOMIC_COMPARE_AND_SWAP): Rename
13746         __sync_compare_and_swap_* to __sync_val_compare_and_swap_*.
13747
13748 2009-08-03  Richard Guenther  <rguenther@suse.de>
13749
13750         * tree.c (make_vector_type): Build a main variant first,
13751         get the canonical one and then build the variant.
13752         * tree-ssa.c (useless_type_conversion_p_1): Handle
13753         fixed-point types.
13754         (useless_type_conversion_p): Conversions to pointers to
13755         incomplete record types are useless.
13756
13757 2009-08-03  Richard Guenther  <rguenther@suse.de>
13758
13759         * tree-cfg.c (pass_warn_unused_result): Mark name that no dump
13760         file will be created.
13761         * omp-low.c (pass_diagnose_omp_blocks): Likewise.
13762         * toplev.c (compile_file): Adjust comment.
13763
13764 2009-08-03  Kaz Kojima  <kkojima@gcc.gnu.org>
13765
13766         * config/sh/sh-protos.h (sh_promote_function_mode): Remove.
13767         * config/sh/sh.c (sh_promote_function_mode): Wrap long lines.
13768         (TARGET_PROMOTE_FUNCTION_MODE): Define.
13769         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
13770         (sh_promote_function_mode): Fix typo.
13771
13772 2009-08-03  Andreas Krebbel  <krebbel1@de.ibm.com>
13773
13774         * explow.c (promote_mode): Mark TYPE and PUNSIGNEDP as possibly unused.
13775
13776 2009-08-02  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13777
13778         * pa.c (pa_promote_function_mode): Remove ATTRIBUTE_UNUSED from
13779         declaration arguments.
13780
13781 2009-08-02  Uros Bizjak  <ubizjak@gmail.com>
13782
13783         * config/i386/i386.c (ix86_expand_fp_compare): Use const0_rtx instead
13784         of GEN_INT (0x00) and const1_rtx instead of GEN_INT (0x01).
13785         (ix86_split_ashl): Ditto.
13786         (ix86_expand_vector_init_one_nonzero): Ditto.
13787         (ix86_expand_vector_set): Ditto.
13788         (ix86_expand_reduc_v4sf): Ditto.
13789
13790 2009-08-02  Paolo Bonzini  <bonzini@gnu.org>
13791
13792         * explow.c (promote_function_mode): Remove assert.
13793         * config/sh/sh.c (sh_promote_function_mode): Declare.
13794
13795 2009-08-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13796
13797         * config/pa/pa.c (pa_promote_function_mode): Declare.
13798         Change to static.  Fix promote_mode call.
13799
13800         * gthr-dce.h (CONST_CAST2): Define if not defined.
13801         (__gthread_setspecific): Use CONST_CAST2 to fix warning.
13802
13803         * config.gcc (hppa[12]*-*-hpux10*): Add stdint support.
13804
13805 2009-08-01  Paolo Bonzini  <bonzini@gnu.org>
13806
13807         * expr.c (store_constructor): Use promote_decl_mode.  Remove
13808         now write-only variable unsignedp.
13809         (expand_expr_real_1): Use promote_decl_mode.
13810         * expr.h (promote_function_mode, promote_decl_mode): New.
13811         (promote_mode): Remove last argument.
13812         * function.c (assign_temp): Drop last argument of promote_mode.
13813         (assign_parm_find_data_types): Use promote_function_mode.
13814         (assign_parm_setup_reg): Likewise.
13815         (expand_function_end): Use promote_function_mode.
13816         * calls.c (initialize_argument_information): Use promote_function_mode.
13817         (precompute_arguments): Use promote_mode instead of checking if
13818         only PROMOTE_FUNCTION_MODE is defined.
13819         (expand_call): When making sibcall decisions, use promote_function_mode.
13820         Below, remove an if for targetm.calls.promote_function_return and
13821         and use promote_function_mode.
13822         (emit_library_call_value_1): Use promote_function_mode, fix bug
13823         where promote_mode was passed FOR_CALL == 0 for a return value in an
13824         assertion.
13825         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
13826         * explow.c (promote_function_mode, promote_decl_mode): New.
13827         (promote_mode): Keep only the FOR_CALL == 0 case.
13828         * combine.c (setup_incoming_promotion): Remove test of
13829         promote_function_args.  Use promote_function_mode.
13830         * stmt.c (expand_value_return): Use promote_decl_mode.
13831         (expand_decl): Use promote_decl_mode.
13832
13833         * expr.c (store_constructor): Use promote_decl_mode.  Remove
13834         now write-only variable unsignedp.
13835         (expand_expr_real_1): Use promote_decl_mode.
13836         * expr.h (promote_function_mode, promote_decl_mode): New.
13837         (promote_mode): Remove last argument.
13838         * function.c (assign_temp): Drop last argument of promote_mode.
13839         (assign_parm_find_data_types): Use promote_function_mode.
13840         (assign_parm_setup_reg): Likewise.
13841         (expand_function_end): Use promote_function_mode.
13842         * calls.c (initialize_argument_information): Use promote_function_mode.
13843         (precompute_arguments): Use promote_mode instead of checking if
13844         only PROMOTE_FUNCTION_MODE is defined.
13845         (expand_call): When making sibcall decisions, use promote_function_mode.
13846         Below, remove an if for targetm.calls.promote_function_return and
13847         and use promote_function_mode.
13848         (emit_library_call_value_1): Use promote_function_mode, fix bug
13849         where promote_mode was passed FOR_CALL == 0 for a return value in an
13850         assertion.
13851         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
13852         * explow.c (promote_function_mode, promote_decl_mode): New.
13853         (promote_mode): Keep only the FOR_CALL == 0 case.
13854         * combine.c (setup_incoming_promotion): Remove test of
13855         promote_function_args.  Use promote_function_mode.
13856         * stmt.c (expand_value_return): Use promote_decl_mode.
13857         (expand_decl): Use promote_decl_mode.
13858
13859         * explow.c (promote_function_mode): Just call the target hook.
13860         * targhooks.c (default_promote_function_mode,
13861         default_promote_function_mode_always_promote): New.
13862         * targhooks.h (default_promote_function_mode,
13863         default_promote_function_mode_always_promote): Declare.
13864         * target.h (promote_function_args, promote_function_return): Remove.
13865         (promote_function_mode): New.
13866         * target-def.h (TARGET_PROMOTE_FUNCTION_ARGS,
13867         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
13868         (TARGET_PROMOTE_FUNCTION_MODE): New.
13869         (TARGET_CALLS): Adjust.
13870         * system.h (TARGET_PROMOTE_FUNCTION_ARGS,
13871         TARGET_PROMOTE_FUNCTION_RETURN, PROMOTE_FUNCTION_MODE): Poison.
13872
13873         * config/s390/s390.h (PROMOTE_FUNCTION_MODE): Move...
13874         * config/s390/s390.c (s390_promote_function_mode): ... here,
13875         with pointer handling.
13876         (TARGET_PROMOTE_FUNCTION_MODE): Define.
13877         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
13878
13879         * config/sparc/sparc.h (PROMOTE_FUNCTION_MODE): Move...
13880         * config/sparc/sparc.c (sparc_promote_function_mode): ... here,
13881         with pointer handling.
13882         (TARGET_PROMOTE_FUNCTION_MODE): Define.
13883         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
13884
13885         * config/sh/sh-protos.h (sh_promote_function_mode): New.
13886         * config/sh/sh.c (sh_promote_function_mode): New.
13887         (TARGET_PROMOTE_FUNCTION_MODE): Define.
13888         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
13889
13890         * config/cris/cris.h (PROMOTE_FUNCTION_MODE): Move...
13891         * config/cris/cris.c (cris_promote_function_mode): ... here.
13892         (TARGET_PROMOTE_FUNCTION_MODE): Define.
13893         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
13894
13895         * config/mmix/mmix.h (PROMOTE_FUNCTION_MODE): Move...
13896         * config/mmix/mmix.c (mmix_promote_function_mode): ... here.
13897         (TARGET_PROMOTE_FUNCTION_MODE): Define.
13898         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
13899
13900         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Move...
13901         * config/arm/arm.c (arm_promote_function_mode): ... here, without
13902         complex type handling.
13903         (TARGET_PROMOTE_FUNCTION_MODE): Define.
13904         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
13905
13906         * config/pa/pa.c (pa_promote_function_mode): New.
13907         (TARGET_PROMOTE_FUNCTION_MODE): Define.
13908         (TARGET_PROMOTE_FUNCTION_RETURN): Remove.
13909
13910         * config/alpha/alpha.c (TARGET_PROMOTE_FUNCTION_ARGS,
13911         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
13912         (TARGET_PROMOTE_FUNCTION_MODE): Define equivalently.
13913         * config/xtensa/xtensa.c: Likewise.
13914         * config/stormy16/stormy16.c: Likewise.
13915         * config/iq2000/iq2000.c: Likewise.
13916         * config/rs6000/rs6000.c: Likewise.
13917         * config/picochip/picochip.c: Likewise.
13918         * config/arc/arc.c: Likewise.
13919         * config/mcore/mcore.c: Likewise.
13920         * config/score/score.c: Likewise.
13921         * config/mips/mips.c: Likewise.
13922         * config/bfin/bfin.c: Likewise.
13923         * config/ia64/ia64.c: Likewise (disabled though).
13924
13925         * config/frv/frv.h: Remove pointless remark.
13926
13927         * doc/tm.texi (PROMOTE_FUNCTION_MODE,
13928         TARGET_PROMOTE_FUNCTION_ARGS,
13929         TARGET_PROMOTE_FUNCTION_RETURN): Consolidate into...
13930         (TARGET_PROMOTE_FUNCTION_MODE): ... this.
13931
13932 2009-08-01  Sebastian Pop  <sebastian.pop@amd.com>
13933
13934         * doc/invoke.texi (-fgraphite-force-parallel): Renamed
13935         -floop-parallelize-all.
13936         * toplev.c (process_options): Rename flag_graphite_force_parallel to
13937         flag_loop_parallelize_all.
13938         * tree-ssa-loop.c (gate_graphite_transforms): Same.
13939         * graphite.c (graphite_transform_loops): Same.
13940         * common.opt: Same.
13941         * graphite-poly.c (apply_poly_transforms): Same.
13942
13943 2009-07-31  Richard Earnshaw  <rearnsha@arm.com>
13944
13945         PR tree-optimization/40914
13946         * ipa-prop.c (ipa_get_ptr_load_param): New argument use_delta,
13947         if set, then check the delta field of the PMF record.
13948         (ipa_get_stmt_member_ptr_load_param): Propagate new param use_delta.
13949         (ipa_analyze_call_uses): Handle machines where the vbit for a PMF
13950         call is stored in the delta.
13951
13952 2009-07-31  Adam Nemet  <anemet@caviumnetworks.com>
13953
13954         * config/mips/mips.md (*clear_upper32_dext): New pattern.
13955
13956 2009-07-31  Uros Bizjak  <ubizjak@gmail.com>
13957
13958         * config/i386/bsd.h (ASM_BYTE): New define.
13959         * config/i386/darwin.h (ASM_BYTE): Rename from ASM_BYTE_OP.
13960         * config/i386/att.h (ASM_BYTE): New define. Use ASM_BYTE instead of
13961         .byte.  Use fputs or putc instead of fprintf where appropriate.
13962         * config/i386/i386-interix.h: Use ASM_BYTE instead of .byte.  Use
13963         fputs or putc instead of fprintf where appropriate.
13964         * config/i386/i386elf.h: Ditto.
13965         * config/i386/sysv4.h: Ditto.
13966
13967         * config/i386/i386.c (TARGET_ASM_BYTE_OP): New define.
13968         * config/i386/i386.md (x86_sahf_1): Use ASM_BYTE instead of .byte.
13969         (*tls_global_dynamic_64): Ditto.
13970
13971 2009-07-31  Christian Bruel  <christian.bruel@st.com>
13972
13973         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
13974
13975 2009-07-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
13976
13977         * config/arm/arm.c (arm_arm_address_cost): Fix typo.
13978         Remove dead code for MINUS.
13979
13980 2009-07-31  Anthony Green  <green@moxielogic.com>
13981
13982         * config/moxie/moxie.c (moxie_expand_prologue): Use $r5 instead of
13983         $r12 in prologue.
13984         (moxie_expand_epilogue): Ditto for epilogue.
13985         (moxie_setup_incoming_varargs): ABI change.  Use 5 registers for
13986         incoming arguments.
13987         (moxie_function_arg): Ditto.
13988         (moxie_pass_by_reference): Ditto.
13989         (moxie_arg_partial_bytes): Ditto.
13990         * config/moxie/moxie.h (CALL_USED_REGISTERS): Ditto.
13991         (FUNCTION_ARG_ADVANCE) Ditto.
13992         (REG_PARM_STACK_SPACE) Ditto.
13993         (FUNCTION_ARG_REGNO_P) Dito.
13994
13995         * config.gcc: Add moxie linux config support.
13996         * gcc/config/moxie/uclinux.h: New file.
13997
13998 2009-07-31  DJ Delorie  <dj@redhat.com>
13999
14000         * config/sh/sh.md (UNSPECV_SP_SWITCH_B): New.
14001         (UNSPECV_SP_SWITCH_E): New.
14002         (sp_switch_1): Change to an unspec.
14003         (sp_switch_2): Change to an unspec.  Don't use post-inc when we
14004         replace $r15.
14005         * config/sh/sh.c (sh_expand_prologue): Use the constant pool to
14006         reference the new stack's address
14007
14008 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
14009
14010         * Makefile.in (OBJS-common): Added dependence on graphite-blocking.o,
14011         graphite-clast-to-gimple.o, graphite-dependences.o,
14012         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
14013         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o.
14014         (graphite-blocking.o,
14015         graphite-clast-to-gimple.o, graphite-dependences.o,
14016         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
14017         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o): New.
14018         * cfgloop.c (alloc_loop): Set loop->can_be_parallel to false.
14019         * cfgloop.h (struct loop): Add can_be_parallel field.
14020         * common.opt (fgraphite-identity): Moved up.
14021         (fgraphite-force-parallel): New flag.
14022         * graphite.c: Rewrite.
14023         * graphite.h: Rewrite.
14024         * passes.c (init_optimization_passes): Schedule a pass of DCE and LIM
14025         after Graphite.
14026         * toplev.c (graphite_out_file): New file descriptor.
14027         (graphite_in_file): New.
14028         (process_options): flag_graphite_force_parallel cannot be used without
14029         Graphite.
14030         * tree-ssa-loop.c: Include toplev.h.
14031         (gate_graphite_transforms): Enable flag_graphite for
14032         flag_graphite_force_parallel.
14033
14034 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
14035
14036         * ChangeLog.graphite: New.
14037         * graphite-blocking.c: New.
14038         * graphite-clast-to-gimple.c: New.
14039         * graphite-clast-to-gimple.h: New.
14040         * graphite-dependences.c: New.
14041         * graphite-dependences.h: New.
14042         * graphite-interchange.c: New.
14043         * graphite-poly.c: New.
14044         * graphite-poly.h: New.
14045         * graphite-ppl.c: New.
14046         * graphite-ppl.h: New.
14047         * graphite-scop-detection.c: New.
14048         * graphite-scop-detection.h: New.
14049         * graphite-sese-to-poly.c: New.
14050         * graphite-sese-to-poly.h: New.
14051         * sese.c: New.
14052         * sese.h: New.
14053
14054 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
14055
14056         * tree-chrec.c (evolution_function_right_is_integer_cst): New.
14057         * tree-chrec.h (evolution_function_right_is_integer_cst): Declared.
14058
14059 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
14060
14061         * tree-chrec.c (operator_is_linear): Handle BIT_NOT_EXPR.
14062         (scev_is_linear_expression): Return false if the evolution is not
14063         affine multivariate.
14064
14065 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
14066
14067         * tree-data-ref.c (graphite_find_data_references_in_stmt): New.
14068         * tree-data-ref.h (graphite_find_data_references_in_stmt): Declared.
14069
14070 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
14071
14072         * tree-data-ref.c (debug_data_references): New.
14073         (debug_data_reference): New.
14074         * tree-data-ref.h (debug_data_references): Declared.
14075         (debug_data_reference): Declared.
14076
14077 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
14078
14079         * tree-data-ref.c (stmt_simple_memref_p: Removed.
14080         * tree-data-ref.h (scop_p): Removed.
14081         (struct data_reference): Remove field scop.
14082         (DR_SCOP): Removed.
14083         (stmt_simple_memref_p): Removed.
14084
14085 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
14086
14087         * cfgloop.h (create_empty_loop_on_edge): Pass an extra argument.
14088         * cfgloopmanip.c (create_empty_loop_on_edge): Leave the loop_latch
14089         basic block empty.
14090
14091 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
14092
14093         * doc/invoke.texi (-fgraphite-force-parallel): Documented.
14094
14095 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
14096
14097         * doc/invoke.texi (-fgraphite-identity): Documented.
14098
14099 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
14100
14101         * tree-scalar-evolution.c: Fix comment.
14102         (instantiate_scev_1): Return unknow from scev instantiation if the
14103         result is not above instantiate_below.
14104
14105 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
14106
14107         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop): Not
14108         static anymore.  Instantiate the symbols that may have been introduced
14109         by chrec_apply.
14110         * tree-scalar-evolution.h (compute_overall_effect_of_inner_loop):
14111         Declared.
14112
14113 2009-07-30  DJ Delorie  <dj@redhat.com>
14114
14115         * config/mep/mep.c (mep_asm_init_sections): Add section flags and
14116         .vliw directive to VLIW sections.
14117
14118 2009-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
14119
14120         * Makefile.in (AUTOCONF, ACLOCAL, ACLOCAL_AMFLAGS, aclocal_deps):
14121         New variables.
14122         ($(srcdir)/configure, $(srcdir)/aclocal.m4): New rules.
14123         (AUTOHEADER): New variable.
14124         ($(srcdir)/cstamp-h.in): Use it.
14125
14126 2009-07-30  Michael Meissner  <meissner@linux.vnet.ibm.com>
14127             Pat Haugen  <pthaugen@us.ibm.com>
14128             Revital Eres <ERES@il.ibm.com>
14129
14130         * config/rs6000/vector.md (VEC_F): Add VSX support.
14131         (VEC_A): Ditto.
14132         (VEC_N): Ditto.
14133         (mov<mode>): Ditto.
14134         (vector_load_<mode>): Ditto.
14135         (vector_store_<mode>): Ditto.
14136         (vector GPR move split): Ditto.
14137         (vec_reload_and_plus_<mptrsize>): Ditto.
14138         (vec_reload_and_reg_<mptrsize>): Ditto.
14139         (add<mode>3): Ditto.
14140         (sub<mode>3): Ditto.
14141         (mul<mode>3): Ditto.
14142         (neg<mode>2): Ditto.
14143         (abs<mode>2): Ditto.
14144         (smin<mode>3): Ditto.
14145         (smax<mode>3): Ditto.
14146         (vector_eq<mode>): Ditto.
14147         (vector_gt<mode>): Ditto.
14148         (vector_ge<mode>): Ditto.
14149         (vector_gtu<mode>): Ditto.
14150         (vector_select_<mode>_uns): Ditto.
14151         (vector_eq_<mode>_p): Ditto.
14152         (vector_gt_<mode>_p): Ditto.
14153         (vector_ge_<mode>_p): Ditto.
14154         (vector_gtu_<mode>_p): Ditto.
14155         (cr6_test_for_zero): Ditto.
14156         (cr6_test_for_zero_reverse): Ditto.
14157         (cr6_test_for_lt): Ditto.
14158         (cr6_test_for_lt_reverse): Ditto.
14159         (xor<mode>3): Ditto.
14160         (ior<mode>3): Ditto.
14161         (and<mode>3): Ditto.
14162         (one_cmpl<mode>2): Ditto.
14163         (nor<mode>2): Ditto.
14164         (andc<mode>2): Ditto.
14165         (float<VEC_int<mode>2): Ditto.
14166         (unsigned_float<VEC_int><mode>2): Ditto.
14167         (fix_trunc<mode><VEC_int>2): Ditto.
14168         (fixuns_trunc<mode><VEC_int>2): Ditto.
14169         (vec_init<mode>):
14170         (vec_set<mode>): Ditto.
14171         (vec_extract<mode>): Ditto.
14172         (vec_interleave_highv4sf): Ditto.
14173         (vec_interleave_lowv4sf): Ditto.
14174         (vec_realign_load_<mode>): Ditto.
14175         (vec_shl_<mode>): Ditto.
14176         (vec_shr_<mode>): Ditto.
14177         (div<mode>3): New patterns for VSX.
14178         (vec_interleave_highv2df): Ditto.
14179         (vec_interleave_lowv2df): Ditto.
14180         (vec_pack_trunc_v2df): Ditto.
14181         (vec_pack_sfix_trunc_v2df): Ditto.
14182         (vec_pack_ufix_trunc_v2df): Ditto.
14183         (vec_unpacks_hi_v4sf): Ditto.
14184         (vec_unpacks_lo_v4sf): Ditto.
14185         (vec_unpacks_float_hi_v4si): Ditto.
14186         (vec_unpacks_float_lo_v4si): Ditto.
14187         (vec_unpacku_float_hi_v4si): Ditto.
14188         (vec_unpacku_float_lo_v4si): Ditto.
14189         (movmisalign<mode>): Ditto.
14190         (vector_ceil<mode>2): New patterns for vectorizing math library.
14191         (vector_floor<mode>2): Ditto.
14192         (vector_btrunc<mode>2): Ditto.
14193         (vector_copysign<mode>3): Ditto.
14194
14195         * config/rs6000/predicates.md (easy_vector_constant_msb): New
14196         predicate for setting the high bit in each word, used for copysign.
14197
14198         * config/rs6000/ppc-asm.h (f19): Whitespace.
14199         (f32-f63): Define if VSX.
14200         (v0-v31): Define if Altivec.
14201         (vs0-vs63): Define if VSX.
14202
14203         * config/rs6000/t-rs6000 (MD_INCLUDES): Add power7.md and vsx.md.
14204
14205         * config/rs6000/power7.md: New file, provide tuning parameters for
14206         -mcpu=power7.
14207
14208         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Add VSX support.
14209         (rs6000_cpu_cpp_builtins): Ditto.
14210         (altivec_overloaded_builtins): Ditto.
14211         (altivec_resolve_overloaded_builtin): Ditto.
14212
14213         * config/rs6000/rs6000.opt (-mno-vectorize-builtins): Add new
14214         debug switch to disable vectorizing simple math builtin
14215         functions.
14216
14217         * config/rs6000/rs6000.c (rs6000_builtin_vectorized_function):
14218         Vectorize simple math builtin functions.
14219         (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define target
14220         hook to vectorize math builtins.
14221         (rs6000_override_options): Enable -mvsx on -mcpu=power7.
14222         (rs6000_builtin_conversion): Add VSX/power7 support.
14223         (rs6000_builtin_vec_perm): Ditto.
14224         (vsplits_constant): Add support for loading up a vector constant
14225         with just the high bit set in each part.
14226         (rs6000_expand_vector_init): Add VSX/power7 support.
14227         (rs6000_expand_vector_set): Ditto.
14228         (rs6000_expand_vector_extract): Ditto.
14229         (rs6000_emit_move): Ditto.
14230         (bdesc_3arg): Ditto.
14231         (bdesc_2arg): Ditto.
14232         (bdesc_1arg): Ditto.
14233         (rs6000_expand_ternop_builtin): Ditto.
14234         (altivec_expand_builtin): Ditto.
14235         (rs6000_expand_unop_builtin): Ditto.
14236         (rs6000_init_builtins): Ditto.
14237         (altivec_init_builtins): Ditto.
14238         (builtin_function_type): Ditto.
14239         (rs6000_common_init_builtins): Ditto.
14240         (rs6000_handle_altivec_attribute); Ditto.
14241         (rs6000_mangle_type): Ditto.
14242         (rs6000_vector_mode_supported_p): Ditto.
14243         (rs6000_mode_dependent_address): Altivec addresses with AND -16
14244         are mode dependent.
14245
14246         * config/rs6000/vsx.md: New file for VSX support.
14247
14248         * config/rs6000/rs6000.h (EASY_VECTOR_MSB): New macro for
14249         identifing values with just the most significant bit set.
14250         (enum rs6000_builtins): Add builtins for VSX.  Add simple math
14251         vectorized builtins.
14252
14253         * config/rs6000/altivec.md (UNSPEC_VRFIP): Delete.
14254         (UNSPEC_VRFIM): Delete.
14255         (splitter for loading up vector with most significant bit): New
14256         splitter for vectorizing copysign.
14257         (altivec_vrfiz): Rename from altivec_fturncv4sf2.  Add support for
14258         vectorizing simple math functions.
14259         (altivec_vrfip): Add support for vectorizing simple math functions.
14260         (altivec_vrfim): Ditto.
14261         (altivec_copysign_v4sf3): New insn for Altivec copysign support.
14262
14263         * config/rs6000/rs6000.md (UNSPEC_BPERM): New constant.
14264         (power7.md, vsx.md): Include for power7 support.
14265         (copysigndf3): Use VSX instructions if -mvsx.
14266         (negdf2_fpr): Ditto.
14267         (absdf2_fpr): Ditto.
14268         (nabsdf2_fpr): Ditto.
14269         (adddf3_fpr): Ditto.
14270         (subdf3_fpr): Ditto.
14271         (muldf3_fpr): Ditto.
14272         (divdf3_fpr): Ditto.
14273         (fix_truncdfdi2_fpr): Ditto.
14274         (cmpdf_internal1): Ditto.
14275         (fred, fred_fpr): Convert into expander/insn to add VSX support.
14276         (btruncdf2, btruncdf2_fpr): Ditto.
14277         (ceildf2, ceildf2_fpr): Ditto.
14278         (floordf2, floordf2_fpr): Ditto.
14279         (floatdidf2, floatdidf2_fpr): Ditto.
14280         (fmadddf4_fpr): Name insn.  Use VSX instructions if -mvsx.
14281         (fmsubdf4_fpr): Ditto.
14282         (fnmadddf4_fpr_1): Ditto.
14283         (fnmadddf4_fpr_2): Ditto.
14284         (fnmsubdf4_fpr_1): Ditto.
14285         (fnmsubdf4_fpr_2): Ditto.
14286         (fixuns_truncdfdi2): Add expander for VSX support.
14287         (fix_truncdfdi2): Ditto.
14288         (fix_truncdfsi2): Ditto.
14289         (ftruncdf2): Ditto.
14290         (btruncsf2): Whitespace.
14291         (movdf_hardfloat32): Add support for VSX registers.
14292         (movdf_softfloat32): Ditto.
14293         (movdf_hardfloat64): Ditto.
14294         (movdf_hardfloat64_mfpgpr): Ditto.
14295         (movdf_softfloat64): Ditto.
14296         (movti splitters): Add check for vector registers supporting
14297         TImode in the future.
14298         (bpermd): Add power7 bpermd instruction.
14299
14300         * config/rs6000/altivec.h (vec_div): Define if VSX.
14301         (vec_mul): Ditto.
14302         (vec_msub): Ditto.
14303         (vec_nmadd): Ditto.
14304         (vec_nearbyint): Ditto.
14305         (vec_rint): Ditto.
14306         (vec_sqrt): Ditto.
14307         (all predicates): Use the generic builtin function, and not the V4SF
14308         specific function so that the predicates will work with VSX's V2DF.
14309         (vec_all_*): Ditto.
14310         (vec_any_*): Ditto.
14311
14312         * doc/extend.texi (PowerPC Altivec/VSX Built-in Functions):
14313         Document new VSX functions and types.
14314
14315         * doc/invoke.texi (PowerPc options): Document -mpopcntd, -mvsx
14316         switches.
14317
14318         * doc/md.texi (PowerPC constraints): Document "wd", "wf", "ws",
14319         "wa", and "j" constraints.  Modify "v" to talk about Altivec
14320         instead of just vector.
14321
14322 2009-07-30  Andrew MacLeod  <amacleod@redhat.com>
14323
14324         PR debug/26475
14325         * tree-into-ssa.c (insert_phi_nodes_for, rewrite_add_phi_arguments): Set
14326         location for phi arguments.
14327         (rewrite_update_phi_arguments): Find locations for reaching defs.
14328         * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis):
14329         Add location to add_phi_arg calls.
14330         * tree-loop-districbution.c (update_phis_for_loop_copy): Add locations.
14331         * tree-ssa-loop-manip.c (create_iv, add_exit_phis_edge,
14332         split_loop_exit_edge, tree_transform_and_unroll_loop): Add locations.
14333         * tree-tailcall.c (add_successor_phi_arg, eliminate_tail_call,
14334         create_tailcall_accumulator, tree_optimize_tail_calls_1): Add locations.
14335         * tree.h (struct phi_arg_d): Add location_t to PHI arguments.
14336         * tree-phinodes.c (make_phi_node): Initialize location.
14337         (resize_phi_node): Initialize location to UNKNOWN_LOCATION.
14338         (add_phi_arg): Add location parameter.
14339         (remove_phi_arg_num): Move location when moving phi argument.
14340         * omp-low.c (expand_parallel_call, expand_omp_for_static_chunk): Set
14341         location.
14342         * tree-vect-loop-manip.c (slpeel_update_phis_for_duplicate_loop,
14343         slpeel_update_phi_nodes_for_guard1,
14344         slpeel_update_phi_nodes_for_guard2,
14345         slpeel_tree_duplicate_loop_to_edge_cfg, set_prologue_iterations,
14346         vect_loop_versioning): Set locations.
14347         * tree-parloops.c (create_phi_for_local_result,
14348         transform_to_exit_first_loop, create_parallel_loop): Add locations.
14349         * gimple-pretty-print.c (dump_gimple_phi): Dump lineno's if present.
14350         * tree-vect-loop.c (get_initial_def_for_induction,
14351         vect_create_epilog_for_reduction, vect_finalize_reduction): Add
14352         locations.
14353         * tree-flow-inline.h (gimple_phi_arg_location): New.  Return locus.
14354         (gimple_phi_arg_location_from_edge): New.  Return locus from an edge.
14355         (gimple_phi_arg_set_location): New.  Set locus.
14356         (gimple_phi_arg_has_location): New.  Check for locus.
14357         (redirect_edge_var_map_location): New.  Return locus from var_map.
14358         * tree-vect-data-refs.c (vect_setup_realignment): Set location.
14359         * tree-ssa-phiopt.c (conditional_replacement): Set locus when
14360         combining PHI arguments.
14361         (cond_store_replacement): Set location.
14362         * cfgexpand.c (gimple_assign_rhs_to_tree): Transfer locus if possible.
14363         * grpahite.c (add_loop_exit_phis, add_guard_exit_phis,
14364         scop_add_exit_phis_edge): Add locations.
14365         * tree-cfgcleanup.c (remove_forwarder_block,
14366         remove_forwarder_block_with_phi): Add locations.
14367         * tree-ssa-pre.c (insert_into_preds_of_block): Add locations.
14368         * tree-predcom.c (initialize_root_vars, initialize_root_vars_lm): Add
14369         locations.
14370         * tree-ssa-dce.c (forward_edge_to_pdom): Add locations.
14371         * tree-ssa.c (redirect_edge_var_map_add, ssa_redirect_edge,
14372         flush_pending_stmts): Add source location.
14373         * lambda-code.c (perfect_nestify): Maintain location stack with argument
14374         stack to preserve locations.
14375         * tree-vect-stmts.c (vectorizable_load): Add location.
14376         * tree-inline.c (copy_phis_for_bb): Copy locus.
14377         (setup_one_parameter): Add call locus to inlined parameter stmts.
14378         (initialize_inlined_parameters): Pass in call location as parameter
14379         assignment locus.
14380         (tree_function_versioning): Pass location to setup_one_parameter.
14381         * tree-ssa-phiprop.c (phiprop_insert_phi): Set locations.
14382         * tree-outof-ssa.c (struct _elim_graph): Add source_location vecs for
14383         copy and edge lists.
14384         (insert_partition_copy_on_edge, insert_value_copy_on_edge,
14385         insert_rtx_to_part_on_edge, insert_part_to_rtx_on_edge): Provide a
14386         locus parameter and override the stmt default if provided.
14387         (new_elim_graph, clear_elim_graph, delete_elim_graph,
14388         elim_graph_add_edge, elim_graph_remove_succ_edge,
14389         FOR_EACH_ELIM_GRAPH_SUCC, FOR_EACH_ELIM_GRAPH_PRED, eliminate_build,
14390         elim_forward, elim_unvisited_predecessor, elim_backward, elim_create,
14391         eliminate_phi):  Add locus info in elimination graph for each edge and
14392         value copy.
14393         (insert_backedge_copies): Copy locus if present.
14394         * tree-flow.h (struct _edge_var_map): Add locus field.
14395         * tree-switch_conversions.c (fix_phi_nodes): Add locations.
14396         * tree-cfg.c (reinstall_phi_args, gimple_make_forwarder_block,
14397         add_phi_args_after_copy_edge, gimple_lv_adjust_loop_header_phi): Add
14398         locations.
14399         * ipa-struct-reorg.c (make_edge_and_fix_phis_of_dest): Add locations.
14400
14401 2009-07-30  Martin Jambor  <mjambor@suse.cz>
14402
14403         PR tree-optimization/40570
14404         * ipa-inline.c (cgraph_decide_inlining): Watch out for dead single
14405         use inlining loops.
14406
14407 2009-07-30  Razya Ladelsky <razya@il.ibm.com>
14408
14409         * ssa-loop-manip.c: Include langhooks.h.
14410         (rewrite_phi_with_iv): New.
14411         (rewrite_all_phi_nodes_with_iv): New.
14412         (canonicalize_loop_ivs): Move here from tree-parloops.c.
14413         Remove reduction_list argument. Use rewrite_all_phi_nodes_with_iv.
14414         * tree-parloops.c (loop_parallel_p): Move out all conditions
14415         except dependency check.
14416         (canonicalize_loop_ivs): Move to tree-ssa-loop-manip.c.
14417         (gen_parallel_loop): Call canonicalize_loop_ivs without
14418         reduction_list argument.
14419         (build_new_reduction): New.
14420         (gather_scalar_reductions): New.
14421         (try_get_loop_niter): New.
14422         (try_create_reduction_list): New.
14423         (parallleize_loops): Change the parallel conditions check.
14424         * tree-flow.h (canonicalize_loop_ivs): Remove one argument.
14425         * Makefile.in (tree-ssa-loop-manip.o): Add langhooks.h dependency.
14426
14427 2009-07-30  Dave Korn  <dave.korn.cygwin@gmail.com>
14428
14429         * opt-functions.awk (opt_args): Allow argument to be enclosed in
14430         curly braces.
14431         * doc/options.texi (Option properties):  Mention new quoting syntax.
14432
14433 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
14434
14435         * config/alpha/alpha.c (alpha_start_function):
14436         Handle VMS_DEBUG_MAIN_POINTER
14437         * config/alpha/vms.h (VMS_DEBUG_MAIN_POINTER): Define new macro.
14438         * doc/invoke.texi: Document -mdebug-main switch.
14439
14440 2009-07-29  Richard Henderson  <rth@redhat.com>
14441
14442         * cgraph.c (cgraph_set_call_stmt_including_clones): Tidy.
14443         (cgraph_create_edge_including_clones): Likewise.
14444         * tree-inline.c (copy_bb): Operate on the correct edges
14445         when updating the callgraph.
14446
14447 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
14448
14449         * config/alpha/vms-cc.c: Deleted.
14450         * config/alpha/vms-ld.c: Deleted.
14451         * config/alpha/t-vms64: Moved to config/vms
14452         * config/alpha/vms-crt0-64.c: Moved to config/vms
14453         * config/alpha/vms-crt0.c: Moved to config/vms
14454         * config/alpha/vms-psxcrt0-64.c: Moved to config/vms
14455         * config/alpha/vms-psxcrt0.c: Moved to config/vms
14456         * config/alpha/xm-vms.h: Moved to config/vms
14457         * config/alpha/x-vms: Moved to config/vms
14458         * config/alpha/t-vms (vcrt0.o, pcrt0.o): Move rules to new file
14459         config/vms/t-vms.
14460         * config/vms/t-vms: Moved here from config/alpha. Alpha specific
14461         parts removed. (STMP_FIXPROTO, STMP_FIXINC, LIMITS_H_TEST): Set.
14462         (version): Set.
14463         * config/vms/t-vms64: Moved here from config/alpha
14464         * config/vms/vms-crt0-64.c: Moved here from config/alpha.
14465         (argc,argv,envp): Enforce 32bit malloc'ing.
14466         * config/vms/vms-psxcrt0-64.c: Likewise.
14467         * config/vms/vms-crt0.c: Moved here from config/alpha.
14468         * config/vms/vms-psxcrt0.c: Likewise.
14469         * config/vms/vms-crtl-64.h: New file.
14470         * config/vms/vms-crtl.h: New file.
14471         * config/vms/vms.opt: New file.
14472         * config/vms/xm-vms64.h: New file.
14473         * config/vms/xm-vms.h: Moved here from config/alpha.
14474         (STANARD_EXEC_PREFIX, STANDARD_STARTFILE_PREFIX, STANDARD_INCLUDE_DIR):
14475         Set.
14476         * config/vms/x-vms: Moved here from config/alpha.
14477         (version, VMS_EXTRA_PARTS): Moved to t-vms.
14478         (vms-ld.o, vms-cc.o): Removed.
14479         (LN, LN_S, USE_COLLECT2, POD2MAN): Set.
14480
14481 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
14482
14483         * dwarf2out.c (add_name_and_src_coords_attributes): Push on the
14484         correct stack (obvious VMS fix).
14485
14486 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
14487
14488         * dwarf2out.c (output_file_names): Output VMS style file name, size,
14489         date, version info if VMS_DEBUGGING_INFO defined.
14490         * vmsdgbout.c (vms_file_stats_name): New functon. VMS style file name,
14491         size, date calculating code moved here.
14492
14493 2009-07-29  Paul Brook  <paul@codesourcery.com>
14494
14495         * config/arm/lib1funcs.asm (clear_cache): Use ARM_FUNC_START and
14496         do_push/do_pop.
14497
14498 2009-07-29  Uros Bizjak  <ubizjak@gmail.com>
14499
14500         PR target/40577
14501         * config/alpha/alpha.c (alpha_expand_unaligned_store): Convert src
14502         to DImode when generating insq_le insn.
14503
14504 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
14505
14506         * dwarf2out.c (DWARF2_INDIRECT_STRING_SUPPORT_MISSING_ON_TARGET):
14507         New macro set for VMS_DEBUGGGING_INFO.
14508         (AT_string_form): Use it.
14509
14510 2009-07-28  DJ Delorie  <dj@redhat.com>
14511
14512         * config/mep/mep.c (vtext_section): New.
14513         (vftext_section): New.
14514         (ftext_section): New.
14515         (mep_select_section): Add support for functions.
14516         (mep_unique_section): Likewise.
14517         (mep_asm_init_sections): Likewise.
14518         (mep_encode_section_info): Remove it from here.
14519
14520         * config/mep/mep.h (USE_SELECT_SECTION_FOR_FUNCTIONS): Define.
14521
14522 2009-07-28  Paolo Bonzini  <bonzinI@gnu.org>
14523
14524         * tree.h (TREE_DEPRECATED): Document it is used for types too.
14525         (TYPE_VECTOR_OPAQUE): Use default_def_flag
14526
14527 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
14528
14529         * dwarf2out.c (output_file_names): Test new macro
14530         DWARF2_DIR_SHOULD_END_WITH_SEPARATOR.
14531         (add_comp_dir_attribute): Likewise.
14532
14533 2009-07-28  Kai Tietz  <kai.tietz@onevision.com>
14534
14535         * config/i386/mingw-w64.h (LINK_SPEC): Add
14536         separating space between commands.
14537
14538 2009-07-28  Jan Hubicka  <jh@suse.cz>
14539
14540         PR tree-optimization/40759
14541         * tree-ssa-dce.c (mark_virtual_phi_result_for_renaming): Mark all uses
14542         for renaming.
14543
14544 2009-07-27  DJ Delorie  <dj@redhat.com>
14545
14546         * config/mep/mep.c (mep_expand_builtin_saveregs): Make sure 64-bit
14547         types are dword-aligned.
14548         (mep_expand_va_start): Likewise.
14549
14550 2009-07-27  Olivier Hainque  <hainque@adacore.com>
14551             Douglas B Rupp  <rupp@gnat.com>
14552
14553         * convert.c (convert_to_pointer): Don't assume the target
14554         pointer type is POINTER_SIZE long. Fetch its precision instead.
14555
14556 2009-07-27  Douglas B Rupp  <rupp@gnat.com>
14557
14558         * system.h (fopen): Undefine if macro.
14559
14560 2009-07-27  Jakub Jelinek  <jakub@redhat.com>
14561
14562         * dwarf2out.c (output_cfi_p): Removed.
14563         (output_cfis): New function.
14564         (output_fde): New function, split from output_call_frame_info.
14565         (output_call_frame_info): Use it.
14566         (dwarf2out_switch_text_section): Use output_cfis.
14567
14568 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
14569
14570         * config/i386/cygming.h (DWARF2_UNWIND_INFO): Error build when
14571         TARGET_BI_ARCH is specified without enabling SJLJ.
14572         * config/i386/mingw32.h (MD_UNWIND_SUPPORT): Define MD_UNWIND_SUPPORT,
14573         if TARGET_64BIT and TARGET_BI_ARCH aren't defined.
14574
14575 2009-07-26  Mikael Pettersson <mikpe@it.uu.se>
14576
14577         * arm.md (negdi2): Use DImode if forcing a value into a register.
14578
14579 2009-07-26  Ira Rosen  <irar@il.ibm.com>
14580
14581         PR tree-optimization/40801
14582         * tree-vect-stmts.c (vectorizable_call): Get previous copy
14583         of vector operand from the previous copy of vector statement.
14584         Pass the correct definition type value to
14585         vect_get_vec_def_for_stmt_copy().
14586
14587 2009-07-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14588
14589         * collect2.c (scan_libraries): Use CONST_CAST2 to perform char ** to
14590         const char ** conversion.
14591
14592 2009-07-25 David Daney <ddaney@caviumnetworks.com>
14593
14594         * system.h (gcc_assert): Invoke __builtin_unreachable() instead of
14595         fancy_abort() if !ENABLE_ASSERT_CHECKING.
14596         (gcc_unreachable): Invoke __builtin_unreachable() if
14597         !ENABLE_ASSERT_CHECKING.
14598
14599 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
14600
14601         PR rtl-optimization/40445
14602         * emit-rtl.c (next_nonnote_insn_bb): New function.
14603         * rtl.h (next_nonnote_insn_bb): Declare new function.
14604         * cfgcleanup.c (try_optimize_cfg): Don't remove an empty block
14605         with no successors that is the successor of the ENTRY_BLOCK.
14606         Continue from the top after removing an empty fallthrough block.
14607         * cfgrtl.c (get_last_bb_insn): Call next_nonnote_insn_bb instead
14608         of next_nonnote_insn.
14609
14610 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
14611
14612         * cfgcleanup.c (old_insns_match_p): Handle the case of empty blocks.
14613
14614 2009-07-25  Martin Jambor  <mjambor@suse.cz>
14615
14616         * c-common.c (c_common_attribute_table): New element for noclone.
14617         (handle_noclone_attribute): New function. Forward-declare.
14618         * tree-inline.c (tree_versionable_function_p): Check for noclone
14619         attribute.
14620         * doc/extend.texi (Labels as Values): Document need for noclone.
14621         (Function Attributes): Document noclone attribute.
14622
14623 2009-07-25  Jakub Jelinek  <jakub@redhat.com>
14624
14625         PR rtl-optimization/34999
14626         * dwarf2out.c (struct dw_fde_struct): Add dw_fde_switch_cfi
14627         and dw_fde_switched_cold_to_hot fields.
14628         (output_cfi_p): New function.
14629         (output_call_frame_info): If fde->dw_fde_switched_sections,
14630         output 2 FDEs instead of one with corrupted header.
14631         (dwarf2out_do_cfi_startproc): New function.
14632         (dwarf2out_begin_prologue): Use it.  Initialize fde->dw_fde_switch_cfi
14633         and fde->dw_fde_switched_cold_to_hot.
14634         (dwarf2out_switch_text_section): Compute
14635         fde->dw_fde_switched_cold_to_hot.  Switch to new text section here.
14636         If dwarf2out_do_cfi_asm, emit .cfi_endproc before it and call
14637         dwarf2out_do_cfi_startproc plus emit again currently active CFI insns.
14638         Otherwise, compute fde->dw_fde_switch_cfi.
14639
14640 2009-07-24  Cary Coutant  <ccoutant@google.com>
14641
14642         * tree-cfg.c (assign_discriminator): Add explicit parentheses.
14643
14644 2009-07-24  Cary Coutant  <ccoutant@google.com>
14645
14646         * cfghooks.c (split_block): Copy discriminator to new block.
14647         * tree-cfg.c (assign_discriminator): Check location of last
14648         instruction in block as well as first.
14649
14650 2009-07-24  Uros Bizjak  <ubizjak@gmail.com>
14651
14652         * config/i386/linux.c: Use fputs or putc instead of fprintf
14653         where appropriate.
14654         * config/i386/gas.h: Ditto.
14655         * config/i386/x86-64.h: Ditto.
14656         * config/i386/att.h: Ditto.
14657
14658 2009-07-24  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
14659
14660         * expmed.c (emit_store_flag): Use a recursive call to optimize the
14661         xor case.
14662
14663 2009-07-24  Martin Jambor  <mjambor@suse.cz>
14664
14665         * ipa-prop.h (struct ipa_node_params): New flag node_enqued.
14666         (ipa_push_func_to_list_1): Declare.
14667         (ipa_push_func_to_list): New function.
14668
14669         * ipa-prop.c (ipa_push_func_to_list_1): New function.
14670         (ipa_init_func_list): Call ipa_push_func_to_list_1.
14671         (ipa_push_func_to_list): Removed.
14672         (ipa_pop_func_from_list): Clear node_enqueued flag.
14673
14674 2009-07-24  Andreas Krebbel  <krebbel1@de.ibm.com>
14675
14676         * config/s390/s390.c (override_options): Default
14677         max-unrolled-insns to 100 for z10 tuning.
14678
14679 2009-07-24  Tobias Grosser  <grosser@fim.uni-passau.de>
14680
14681         * Makefile.in (TREE_DATA_REF_H, tree-vrp.o, tree-cfg.o, tree-if-conv.o
14682         tree-ssa-loop.o, tree-ssa-loop-niter.o, tree-ssa-loop-ivcanon.o,
14683         tree-ssa-loop-prefetch.o, tree-predcom.o, tree-affine.o,
14684         tree-scalar-evolution.o, tree-data-ref.o, tree-vect-loop.o,
14685         tree-vect-data-refs.o, tree-loop-linear.o, tree-loop-distribution.o
14686         tree-parloops.o, tree-pretty-printer.o, fold-const.o, tree-ssa-dce.o,
14687         lambda-code.o, params.o): Cleanup use of SCEV_H and TREE_DATA_REF_H.
14688
14689 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
14690
14691         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR): Remove and
14692         use default set in mingw32.h header.
14693         * config/i386/mingw32.h (STANDARD_INCLUDE_DIR): Use for 32-bit and
14694         64-bit /mingw/include path.
14695         (STANDARD_STARTFILE_PREFIX_1): Use for 32-bit and 64-bit /mingw/lib
14696         path.
14697
14698 2009-07-23  Neil Vachharajani  <nvachhar@google.com>
14699
14700         PR rtl-optimization/40209
14701         * loop-iv.c (iv_analysis_loop_init): Call df_note_add_problem.
14702
14703 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
14704
14705         * config/i386/i386.c: Use ASM_LONG instead of .long.  Concatenate
14706         ASM_LONG, LPREFIX, MCOUNT_NAME and PROFILE_COUNT_REGISTER strings
14707         with the rest of string where appropriate.  Use fputs or putc
14708         instead of fprintf where appropriate.
14709
14710 2009-07-22  Michael Meissner  <meissner@linux.vnet.ibm.com>
14711             Pat Haugen  <pthaugen@us.ibm.com>
14712             Revital Eres <ERES@il.ibm.com>
14713
14714         * config/rs6000/vector.md: New file.  Move most of the vector
14715         expander support here from altivec.md to allow for the VSX vector
14716         unit in the future.  Add support for secondary_reload patterns.
14717         Rewrite the patterns for vector comparison, and vector comparison
14718         predicate instructions so that the RTL expresses the desired
14719         behavior, instead of using unspec.
14720
14721         * config/rs6000/constraints.md ("f" constraint): Use
14722         rs6000_constraints to hold the precalculated register class.
14723         ("d" constraint): Ditto.
14724         ("wd" constraint): New constraint for VSX.
14725         ("wf" constraint): Ditto.
14726         ("ws" constraint): Ditto.
14727         ("wa" constraint): Ditto.
14728         ("wZ" constraint): Ditto.
14729         ("j" constraint): Ditto.
14730
14731         * config/rs6000/predicates.md (vsx_register_operand): New
14732         predicate for VSX.
14733         (vfloat_operand): New predicate for vector.md.
14734         (vint_operand): Ditto.
14735         (vlogical_operand): Ditto.
14736         (easy_fp_constant): If VSX, 0.0 is an easy constant.
14737         (easy_vector_constant): Add VSX support.
14738         (altivec_indexed_or_indirect_operand): New predicate for
14739         recognizing Altivec style memory references with AND -16.
14740
14741         * config/rs6000/rs6000.c (rs6000_vector_reload): New static global
14742         for vector secondary reload support.
14743         (rs6000_vector_reg_class): Delete, replacing it with
14744         rs6000_constraints.
14745         (rs6000_vsx_reg_class): Ditto.
14746         (rs6000_constraints): New array to hold the register classes of
14747         each of the register constraints that can vary at runtime.
14748         (builtin_mode_to_type): New static array for builtin function type
14749         creation.
14750         (builtin_hash_table): New static hash table for builtin function
14751         type creation.
14752         (TARGET_SECONDARY_RELOAD): Define target hook.
14753         (TARGET_IRA_COVER_CLASSES): Ditto.
14754         (rs6000_hard_regno_nregs_internal): If -mvsx, floating point
14755         registers are 128 bits if VSX memory reference instructions are used.
14756         (rs6000_hard_regno_mode_ok): For VSX, only check if the VSX memory
14757         unit is being used.
14758         (rs6000_debug_vector_unit): Move into rs6000_debug_reg_global.
14759         (rs6000_debug_reg_global): Move -mdebug=reg statements here.
14760         Print several of the scheduling related parameters.
14761         (rs6000_init_hard_regno_mode_ok): Switch to putting constraints in
14762         rs6000_constraints instead of rs6000_vector_reg_class.  Move
14763         -mdebug=reg code to rs6000_debug_reg_global.  Add support for
14764         -mvsx-align-128 debug switch.  Drop testing float_p if VSX or
14765         Altivec.  Add VSX support.  Setup for secondary reload support on
14766         Altivec/VSX registers.
14767         (rs6000_override_options): Make power7 set the scheduling groups
14768         like the power5.  Add support for new debug switches to override
14769         the scheduling defaults.  Temporarily disable -mcpu=power7 from
14770         setting -mvsx.  Add support for debug switches -malways-hint,
14771         -msched-groups, and -malign-branch-targets.
14772         (rs6000_buitlin_conversion): Add support for returning unsigned
14773         vector conversion functions to fix regressions due to stricter
14774         type checking.
14775         (rs6000_builtin_mul_widen_even): Ditto.
14776         (rs6000_builtin_mul_widen_odd): Ditto.
14777         (rs6000_builtin_vec_perm): Ditto.
14778         (rs6000_vec_const_move): On VSX, use xxlxor to clear register.
14779         (rs6000_expand_vector_init): Initial VSX support for using xxlxor
14780         to zero a register.
14781         (rs6000_emit_move): Fixup invalid const symbol_ref+reg that is
14782         generated upstream.
14783         (bdesc_3arg): Add builtins for unsigned types.  Add builtins for
14784         VSX types for bit operations.  Changes to accomidate vector.md.
14785         (bdesc_2arg): Ditto.
14786         (bdesc_1arg): Ditto.
14787         (struct builtin_description_predicates): Rewrite predicate
14788         handling so that RTL describes the operation, instead of passing
14789         the instruction to be used as a string argument.
14790         (bdesc_altivec_preds): Ditto.
14791         (altivec_expand_predicate_builtin): Ditto.
14792         (altivec_expand_builtin): Ditto.
14793         (rs6000_expand_ternop_builtin): Use a switch instead of an if
14794         statement for vsldoi support.
14795         (altivec_expand_ld_builtin): Change to use new names from vector.md.
14796         (altivec_expand_st_builtin): Ditto.
14797         (paired_expand_builtin): Whitespace changes.
14798         (rs6000_init_builtins): Add V2DF/V2DI types.  Initialize the
14799         builtin_mode_to_type table for secondary reload.  Call
14800         builtin_function_type to build random builtin functions.
14801         (altivec_init_builtins): Change to use builtin_function_type to
14802         create builtin function types dynamically as we need them.
14803         (builtin_hash_function): New support for hashing the tree types
14804         for builtin function as we need it, rather than trying to build
14805         all of the trees that we need.  Add initial preliminary VSX support.
14806         (builtin_function_type): Ditto.
14807         (builtin_function_eq): Ditto.
14808         (builtin_hash_struct): Ditto.
14809         (rs6000_init_builtins): Ditto.
14810         (rs6000_common_init_builtins): Ditto.
14811         (altivec_init_builtins): Ditto.
14812         (rs6000_common_init_builtins): Ditto.
14813         (enum reload_reg_type): New enum for simplifing reg classes.
14814         (rs6000_reload_register_type): Simplify register classes into GPR,
14815         Vector, and other registers.  Altivec and VSX addresses in reload.
14816         (rs6000_secondary_reload_inner): Ditto.
14817         (rs6000_ira_cover_classes): New target hook, that returns the
14818         appropriate cover classes, based on -mvsx being used or not.
14819         (rs6000_secondary_reload_class): Add VSX support.
14820         (get_vec_cmp_insn): Delete, rewrite vector conditionals.
14821         (get_vsel_insn): Ditto.
14822         (rs6000_emit_vector_compare): Rewrite vector conditional support
14823         so that where we can, we use RTL operators, instead of blindly use
14824         UNSPEC.
14825         (rs6000_emit_vector_select): Ditto.
14826         (rs6000_emit_vector_cond_expr): Ditto.
14827         (rs6000_emit_minmax): Directly generate min/max under altivec, vsx.
14828         (create_TOC_reference): Add -mdebug=addr support.
14829         (emit_frame_save): VSX loads/stores need register indexed addressing.
14830
14831         * config/rs6000/rs6000.md: Include vector.md.
14832
14833         * config/rs6000/t-rs6000 (MD_INCLUDES): Add vector.md.
14834
14835         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
14836         support for V2DI, V2DF in logical, permute, select operations.
14837
14838         * config/rs6000/rs6000.opt (-mvsx-scalar-double): Add new debug
14839         switch for vsx/power7.
14840         (-mvsx-scalar-memory): Ditto.
14841         (-mvsx-align-128): Ditto.
14842         (-mallow-movmisalign): Ditto.
14843         (-mallow-df-permute): Ditto.
14844         (-msched-groups): Ditto.
14845         (-malways-hint): Ditto.
14846         (-malign-branch-targets): Ditto.
14847
14848         * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Delete, use target
14849         hook instead.
14850         (IRA_COVER_CLASSES_PRE_VSX): Cover classes if not -mvsx.
14851         (IRA_COVER_CLASSES_VSX): Cover classes if -mvsx.
14852         (rs6000_vector_reg_class): Delete.
14853         (rs6000_vsx_reg_class): Ditto.
14854         (enum rs6000_reg_class_enum): New enum for the constraints that
14855         vary based on target switches.
14856         (rs6000_constraints): New array to hold the register class for all
14857         of the register constraints that vary based on the switches used.
14858         (ALTIVEC_BUILTIN_*_UNS): Add unsigned builtin functions.
14859         (enum rs6000_builtins): Add unsigned varients for the builtin
14860         declarations returned by target hooks for expanding multiplies,
14861         select, and permute operations.  Add VSX builtins.
14862         (enum rs6000_builtin_type_index): Add entries for VSX.
14863         (V2DI_type_node): Ditto.
14864         (V2DF_type_node): Ditto.
14865         (unsigned_V2DI_type_node): Ditto.
14866         (bool_long_type_node): Ditto.
14867         (intDI_type_internal_node): Ditto.
14868         (uintDI_type_internal_node): Ditto.
14869         (double_type_internal_node): Ditto.
14870
14871         * config/rs6000/altivec.md (whole file): Move all expanders to
14872         vector.md from altivec.md.  Rename insn matching functions to be
14873         altivec_foo.
14874         (UNSPEC_VCMP*): Delete, rewrite vector comparisons.
14875         (altivec_vcmp*): Ditto.
14876         (UNSPEC_VPERM_UNS): New, add for unsigned types using vperm.
14877         (VM): New iterator for moves that includes the VSX types.
14878         (altivec_vperm_<mode>): Add VSX types.  Add unsigned types.
14879         (altivec_vperm_<mode>_uns): New, for unsigned types.
14880         (altivec_vsel_*): Rewrite vector comparisons and predicate builtins.
14881         (altivec_eq<mode>): Ditto.
14882         (altivec_gt<mode>): Ditto.
14883         (altivec_gtu<mode>): Ditto.
14884         (altivec_eqv4sf): Ditto.
14885         (altivec_gev4sf): Ditto.
14886         (altivec_gtv4sf): Ditto.
14887         (altivec_vcmpbfp_p): Ditto.
14888
14889 2009-07-23  Richard Earnshaw  <rearnsha@arm.com>
14890
14891         * arm.md (split for ior/xor with shift and zero-extend): Cast op3 to
14892         unsigned HWI.
14893
14894 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
14895
14896         PR target/40832
14897         * config/i386/i386.c (output_387_ffreep): Rewrite to use
14898         ASM_SHORT instead of .word.
14899         * config/i386/i386.md (*tls_global_dynamic_64): Use ASM_SHORT
14900         instead of .word in asm template.
14901
14902 2009-07-22  Vladimir Makarov  <vmakarov@redhat.com>
14903
14904         PR target/37488
14905         * ira-lives.c (bb_has_abnormal_call_pred): New function.
14906         (process_bb_node_lives): Use it.
14907
14908         * ira.c (setup_cover_and_important_classes): Don't setup
14909         ira_important_class_nums.  Add cover classes to the end of
14910         important classes.
14911         (cover_class_order, comp_reg_classes_func, reorder_important_classes):
14912         New.
14913         (find_reg_class_closure): Use reorder_important_classes.
14914
14915         * config/i386/i386.h (IRA_COVER_CLASSES): Remove.
14916
14917         * config/i386/i386.c (i386_ira_cover_classes): New function.
14918         (TARGET_IRA_COVER_CLASSES): Redefine.
14919
14920         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Add a comment about
14921         importance of order of cover classes in the array.
14922
14923 2009-07-22  Diego Novillo  <dnovillo@google.com>
14924
14925         * tree-pass.h (TDF_EH): Define.
14926         * gimple-pretty-print.c (dump_gimple_stmt): If FLAGS
14927         contains TDF_EH, print the EH region number holding GS.
14928         * tree-dump.c (dump_options): Add "eh".
14929         * doc/invoke.texi: Document it.
14930
14931 2009-07-22  Doug Kwan  <dougkwan@google.com>
14932
14933         * config/arm/arm.md (subdi3) Copy non-reg values to DImode registers.
14934
14935 2009-07-22  Michael Matz  <matz@suse.de>
14936
14937         PR tree-optimization/35229
14938         PR tree-optimization/39300
14939
14940         * tree-ssa-pre.c (includes): Include tree-scalar-evolution.h.
14941         (inhibit_phi_insertion): New function.
14942         (insert_into_preds_of_block): Call it for REFERENCEs.
14943         (init_pre): Initialize and finalize scalar evolutions.
14944         * Makefile.in (tree-ssa-pre.o): Depend on tree-scalar-evolution.h .
14945
14946 2009-07-22  Uros Bizjak  <ubizjak@gmail.com>
14947
14948         * config/i386/predicates.md (zero_extended_scalar_load_operand):
14949         Use CONST_VECTOR_NUNITS to determine number of elements.
14950
14951 2009-07-22  Andreas Krebbel  <krebbel1@de.ibm.com>
14952
14953         * config/s390/constraints.md (ZQ, ZR, ZS, ZT): New constraints.
14954         (U, W): Constraints are now deprecated and will be removed if we
14955         run out of letters.
14956         * config/s390/s390.md (U, W): Replaced with ZQZR, ZSZT throughout
14957         the file.
14958         ("prefetch"): Add the stcmh instruction for prefetching.
14959         * config/s390/s390.c (s390_symref_operand_p): Function moved. No
14960         changes.
14961         (s390_short_displacement): Return always true if compiling for
14962         machines not providing the long displacement facility.
14963         (s390_mem_constraint): Support the new constraint letter Z.
14964         (s390_check_qrst_address): New function.
14965
14966 2009-07-21  DJ Delorie  <dj@redhat.com>
14967
14968         * config/mep/mep.c (mep_legitimize_arg): Leave control registers
14969         alone too.
14970
14971 2009-07-21  Jason Merrill  <jason@redhat.com>
14972
14973         * c-common.c (max_tinst_depth): Increase default to 1024.
14974
14975 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
14976
14977         * config/i386/sse.md (vec_unpacku_float_hi_v4si): New expander.
14978         (vec_unpacku_float_lo_v4si): Ditto.
14979
14980 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
14981
14982         PR target/40811
14983         * config/i386/sse.md (sse2_cvtudq2ps): New expander.
14984         (enum ix86_builtins): Add IX86_BUILTIN_CVTUDQ2PS.
14985         (builtin_description): Add __builtin_ia32_cvtudq2ps.
14986         (ix86_vectorize_builtin_conversion): Handle IX86_BUILTIN_CVTUDQ2PS.
14987
14988 2009-07-21  Jakub Jelinek  <jakub@redhat.com>
14989
14990         PR tree-optimization/40813
14991         * tree-inline.c (copy_bb): Regimplify RHS after last stmt, not before
14992         it.
14993
14994 2009-07-21  Kaz Kojima  <kkojima@gcc.gnu.org>
14995
14996         * config/sh/sh.c (sh_gimplify_va_arg_expr): Wrap the result
14997         with a NOP_EXPR if needed.
14998
14999 2009-07-21  Paul Brook <paul@codesourcery.com>
15000
15001         * tree-vectorizer.c (increase_alignment): Handle nested arrays.
15002         Terminate debug dump with newline.
15003
15004 2009-07-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
15005
15006         * pa.c (compute_zdepwi_operands): Limit deposit length to 32 - lsb.
15007         Cast "1" to unsigned HOST_WIDE_INT.
15008         (compute_zdepdi_operands): Limit maximum length to 64 bits.  Limit
15009         deposit length to the maximum length - lsb.  Extend length if
15010         HOST_BITS_PER_WIDE_INT is 32.
15011
15012 2009-07-20  Olatunji Ruwase <tjruwase@google.com>
15013
15014         * cgraph.h (constant_pool_htab): New function.
15015         (constant_descriptor_tree): Move from varasm.c.
15016         * varasm.c (constant_pool_htab): New function.
15017         (constant_descriptor_tree): Move to cgraph.h.
15018
15019 2009-07-20  Olatunji Ruwase  <tjruwase@google.com>
15020
15021         * toplev.c: Invoke FINISH_UNIT callbacks before call to finalize().
15022
15023 2009-07-20  Shujing Zhao  <pearly.zhao@oracle.com>
15024
15025         * Makefile.in (TREE_INLINE_H, tree-inline.o, cgraph.o): Remove
15026         $(VARRAY_H).
15027
15028 2009-07-20  Xinliang David Li  <davidxl@google.com>
15029
15030         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add length check.
15031
15032 2009-07-20  Adam Nemet  <anemet@caviumnetworks.com>
15033
15034         * config/mips/mips.md (move_type): Add arith.
15035         (type): Handle arith.
15036         (zero_extendsidi2): Rename this into ...
15037         (*zero_extendsidi2): ... this.  Don't match if ISA_HAS_EXT_INS.
15038         (zero_extendsidi2): New expander.
15039         (*zero_extendsidi2_dext): New pattern.
15040
15041 2009-07-20  Nick Clifton  <nickc@redhat.com>
15042
15043         * config.gcc (mips64-*-*): Add definition of tm_defines in order
15044         to set MIPS_ABI_DEFAULT.
15045         * config/mips/vr.h (MIPS_ABI_DEFAULT): Remove definition.
15046
15047 2009-07-20  Jakub Jelinek  <jakub@redhat.com>
15048
15049         * tree-object-size.c (addr_object_size): Handle unions with
15050         array in it as last field of structs in __bos (, 1) as __bos (, 0).
15051
15052         PR tree-optimization/40792
15053         * tree.c (build_function_type_skip_args): Remove bogus assert.
15054
15055 2009-07-20  Jan Hubicka  <jh@suse.cz>
15056             Martin Jambor  <mjambor@suse.cz>
15057
15058         * cgraph.h (combined_args_to_skip): New field.
15059         * cgraph.c (cgraph_create_virtual_clone): Properly handle
15060         combined_args_to_skip and args_to_skip.
15061         * tree-inline.c (update_clone_info): New function.
15062         (tree_function_versioning): Call update_clone_info.
15063         * cgraphunit.c (cgraph_materialize_clone): Dump materialized
15064         functions.
15065         (cgraph_materialize_all_clones): More extensive dumping, working
15066         with combined_args_to_skip rather than args_to_skip.
15067
15068 2009-07-20  Ira Rosen  <irar@il.ibm.com>
15069
15070         * tree-vectorizer.h (vectorizable_condition): Add parameters.
15071         * tree-vect-loop.c (vect_is_simple_reduction): Support COND_EXPR.
15072         (get_initial_def_for_reduction): Likewise.
15073         (vectorizable_reduction): Skip the check of first operand in case
15074         of COND_EXPR. Add check that it is outer loop vectorization if
15075         nested cycle was detected. Call vectorizable_condition() for
15076         COND_EXPR. If reduction epilogue cannot be created do not fail for
15077         nested cycles (if it is not double reduction). Assert that there
15078         is only one type in the loop in case of COND_EXPR. Call
15079         vectorizable_condition() to vectorize COND_EXPR.
15080         * tree-vect-stmts.c (vectorizable_condition): Update comment.
15081         Add parameters. Allow nested cycles if called from
15082         vectorizable_reduction(). Use reduction vector variable if provided.
15083         (vect_analyze_stmt): Call vectorizable_reduction() before
15084         vectorizable_condition().
15085         (vect_transform_stmt): Update call to vectorizable_condition().
15086
15087 2009-07-20  Christian Bruel  <christian.bruel@st.com>
15088
15089         * config/sh/sh.opt (-mfmovd): Resurrect and document.
15090         * doc/invoke.texi (-mfmovd): Likewise.
15091         * config/sh/sh.h (TARGET_FMOVD, MASK_FMOVD): Remove default setting.
15092
15093 2009-07-20  Jan Hubicka  <jh@suse.cz>
15094
15095         * tree-ssa-dce.c (remove_dead_phis): Only look for abnormal PHIs
15096         when handling SSA name.
15097
15098 2009-07-19  Jan Hubicka  <jh@suse.cz>
15099
15100         PR tree-optimization/40676
15101         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do renaming on all
15102         virtual PHIs in empty BBs.
15103
15104 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
15105
15106         * combine.c (make_compound_operation) <SUBREG>: If force_to_mode
15107         re-expanded the compound use gen_lowpart instead to convert to the
15108         desired mode.
15109
15110 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
15111
15112         * combine.c (try_widen_shift_mode): Add COUNT, OUTER_CODE and
15113         OUTER_CONST arguments.
15114         <LSHIFTRT>: Use them to allow widening if the bits shifted in from
15115         the new wider mode will be masked off.
15116         (simplify_shift_const_1): Adjust calls to try_widen_shift_mode.
15117
15118 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
15119
15120         * combine.c (try_widen_shift_mode) <LSHIFTRT>: Allow widening if the
15121         high-order bits are zero.
15122
15123 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
15124
15125         * combine.c (simplify_shift_const_1): Split code to determine
15126         shift_mode into ...
15127         (try_widen_shift_mode): ... here.  Allow widening for ASHIFTRT if the
15128         new bits shifted in are identical to the old sign bit.
15129
15130 2009-07-18  Richard Guenther  <rguenther@suse.de>
15131
15132         PR c/40787
15133         * gimplify.c (gimplify_call_expr): Reject code using results from
15134         functions returning void.
15135
15136 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
15137
15138         * doc/md.texi: Document the new PowerPC "es" constraint.
15139         Document that "m" can include automodified addresses on this target,
15140         and explain how %U must be used.  Extend the "Q" and "Z" documentation
15141         to suggest "es" as well as "m".
15142         * config/rs6000/constraints.md (es): New memory constraint.
15143         (Q, Z): Update strings to match new documentation.
15144
15145 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
15146
15147         * config/rs6000/rs6000.c (rs6000_mode_dependent_address): Allow any
15148         offset from virtual_stack_vars_rtx and arg_pointer_rtx.
15149         * config/rs6000/predicates.md (volatile_mem_operand): Use
15150         offsettable_nonstrict_memref_p.
15151         * config/rs6000/rs6000.md (*floatsidf2_internal): Remove split check.
15152         (*floatunssidf2_internal): Likewise.
15153         (*fix_truncdfsi2_internal): Likewise.
15154         (*fix_trunctfsi2_internal): Likewise.
15155
15156 2009-07-17  Anatoly Sokolov  <aesok@post.ru>
15157
15158         * config/avr/avr-devices.c (avr_mcu_t): Add atmega8u2, atmega16u2 and
15159         atmega32u2 devices.
15160         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
15161
15162 2009-07-17  Richard Guenther  <rguenther@suse.de>
15163
15164         PR c/40401
15165         * tree-pass.h (pass_diagnose_omp_blocks): Declare.
15166         (pass_warn_unused_result): Likewise.
15167         (TODO_set_props): Remove.
15168         * omp-low.c (diagnose_omp_structured_block_errors): Change to
15169         run as a pass.
15170         (pass_diagnose_omp_blocks): Define.
15171         * c-decl.c (pop_file_scope): Do not finalize the CU here.
15172         (c_gimple_diagnostics_recursively): Remove.
15173         (finish_function): Do not call it.
15174         (c_write_global_declarations): Continue after errors.
15175         Finalize the CU here.
15176         * c-gimplify.c (c_genericize): Do not gimplify here.
15177         * c-common.c (c_warn_unused_result): Move ...
15178         * tree-cfg.c (do_warn_unused_result): ... here.
15179         (run_warn_unused_result): New function.
15180         (gate_warn_unused_result): New function.
15181         (pass_warn_unused_result): New pass.
15182         * c-common.h (c_warn_unused_result): Remove.
15183         * flags.h (flag_warn_unused_result): Declare.
15184         * c-opts.c (c_common_init_options): Enable flag_warn_unused_result.
15185         * opts.c (flag_warn_unused_result): Initialize to false.
15186         * toplev.c (compile_file): Add comment.
15187         * omp-low.c (create_omp_child_function): Do not register
15188         the function with the frontend.
15189         (diagnose_omp_structured_block_errors): Prepare to be
15190         called as optimization pass.
15191         (gate_diagnose_omp_blocks): New function.
15192         (pass_diagnose_omp_blocks): New pass.
15193         * cgraph.h (cgraph_optimize): Remove.
15194         (cgraph_analyze_function): Likewise.
15195         * cgraph.c (cgraph_add_new_function): Gimplify C++ thunks.
15196         * cgraphunit.c (cgraph_lower_function): Lower nested functions
15197         before their parents here.
15198         (cgraph_finalize_function): Not here.
15199         (cgraph_analyze_function): Gimplify functions here.
15200         (cgraph_finalize_compilation_unit): Continue after errors.
15201         Optimize the callgraph from here.
15202         (cgraph_optimize): Make static.
15203         * langhooks.c (write_global_declarations): Finalize the CU.
15204         * gimplify.c (gimplify_asm_expr): Do not emit ASMs with errors.
15205         (gimplify_function_tree): Assert we gimplify only once.
15206         Set PROP_gimple_any property.
15207         * tree-nested.c (gimplify_all_functions): New function.
15208         (lower_nested_functions): Gimplify all nested functions.
15209         * gimple.h (diagnose_omp_structured_block_errors): Remove.
15210         * passes.c (init_optimization_passes): Add pass_warn_unused_result
15211         and pass_diagnose_omp_blocks after gimplification.  Do not
15212         set TODO_set_props on all_lowering_passes.
15213         (execute_one_pass): Do not handle TODO_set_props.
15214         * Makefile.in (cgraphunit.o): Add $(TREE_DUMP_H) dependency.
15215         (gimplify.o): Add tree-pass.h dependency.
15216         * tree-inline.c (copy_statement_list): Properly copy STATEMENT_LIST.
15217         (copy_tree_body_r): Properly handle TARGET_EXPR like SAVE_EXPR.
15218         (unsave_r): Likewise.
15219         * c-omp.c (c_finish_omp_atomic): Set DECL_CONTEXT on the
15220         temporary variable.
15221
15222 2009-07-17  Sandra Loosemore  <sandra@codesourcery.com>
15223
15224         * doc/service.texi (Service): Restore previously removed link,
15225         which isn't broken after all.
15226
15227 2009-07-17  Richard Guenther  <rguenther@suse.de>
15228
15229         PR tree-optimization/40321
15230         * tree-ssa-pre.c (add_to_exp_gen): Also add names defined by
15231         PHI nodes to the maximal set.
15232         (make_values_for_phi): Add PHI arguments to the maximal set.
15233         (execute_pre): Dump PHI_GEN and the maximal set.
15234
15235 2009-07-17  Jakub Jelinek  <jakub@redhat.com>
15236
15237         PR c++/40780
15238         * gimplify.c (gimplify_conversion): Don't change non-conversions into
15239         VIEW_CONVERT_EXPR.
15240
15241 2009-07-16  Sandra Loosemore  <sandra@codesourcery.com>
15242
15243         * doc/extend.texi (Nested Functions): Replace broken link with
15244         textual reference.
15245         * doc/service.texi (Service): Remove broken link.
15246
15247 2009-07-16  H.J. Lu  <hongjiu.lu@intel.com>
15248
15249         PR bootstrap/40781
15250         * builtins.c (expand_builtin_memcmp): Use loc instead of
15251         EXPR_LOCATION (exp).
15252         (expand_builtin_strncmp): Likewise.
15253
15254 2009-07-17  Aldy Hernandez  <aldyh@redhat.com>
15255             Manuel López-Ibáñez  <manu@gcc.gnu.org>
15256
15257         PR 40435
15258         * tree-complex.c, tree-loop-distribution.c, tree.c, tree.h,
15259         builtins.c, fold-const.c, omp-low.c, cgraphunit.c, tree-ssa-ccp.c,
15260         tree-ssa-dom.c, gimple-low.c, expr.c, tree-ssa-ifcombine.c,
15261         c-decl.c, stor-layout.c, tree-if-conv.c, c-typeck.c, gimplify.c,
15262         calls.c, tree-sra.c, tree-mudflap.c, tree-ssa-copy.c,
15263         tree-ssa-forwprop.c, c-convert.c, c-omp.c, varasm.c,
15264         tree-inline.c, c-common.c, c-common.h, gimple.c,
15265         tree-switch-conversion.c, gimple.h, tree-cfg.c, c-parser.c,
15266         convert.c: Add location argument to fold_{unary,binary,ternary},
15267         fold_build[123], build_call_expr, build_size_arg,
15268         build_fold_addr_expr, build_call_array, non_lvalue, size_diffop,
15269         fold_build1_initializer, fold_build2_initializer,
15270         fold_build3_initializer, fold_build_call_array,
15271         fold_build_call_array_initializer, fold_single_bit_test,
15272         omit_one_operand, omit_two_operands, invert_truthvalue,
15273         fold_truth_not_expr, build_fold_indirect_ref, fold_indirect_ref,
15274         combine_comparisons, fold_builtin_*, fold_call_expr,
15275         build_range_check, maybe_fold_offset_to_address, round_up,
15276         round_down.
15277
15278 2009-07-16  Jason Merrill  <jason@redhat.com>
15279
15280         PR libstdc++/37907
15281         * c-common.c (c_common_reswords): Add __is_standard_layout
15282         and __is_trivial.
15283         * c-common.h (enum rid): Add RID_IS_STD_LAYOUT and RID_IS_TRIVIAL.
15284         * doc/implement-cxx.texi: New.
15285         * doc/gcc.texi: Include it.
15286
15287 2009-07-16  DJ Delorie  <dj@redhat.com>
15288
15289         * config/m32c/m32c.c (m32c_compare_redundant): Avoid removing
15290         compares that may be indirectly affected by previous instructions.
15291
15292 2009-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15293
15294         * builtins.c (do_mpc_arg2): New.
15295         (fold_builtin_2): Fold builtin cpow.
15296         * real.h (HAVE_mpc_pow): New.
15297
15298 2009-07-16  Bingfeng Mei  <bmei@broadcom.com>
15299
15300         * modulo-sched.c (sms_schedule): stage_count <= 1 as correct
15301         comparison to skip unprofitable schedule
15302
15303 2009-07-16  Simon Baldwin  <simonb@google.com>
15304
15305         * gcc.c (option_map): New flag -no-canonical-prefixes.
15306         * (display_help): Print help text for new flag.
15307         * (process_command): Move options translation and language specifics
15308         and handle new flag early.  Use it to set a function pointer to a
15309         prefix builder.  Replace make_relative_prefix calls with calls to
15310         the function pointed to.  Ignore new flag in regular options handling.
15311         * doc/invoke.texi (Overall Options): Documented -no-canonical-prefixes.
15312
15313 2009-07-15  DJ Delorie  <dj@redhat.com>
15314
15315         * config/mep/mep.md (sibcall_internal): Change register to avoid
15316         argument registers.
15317         (sibcall_value_internal): Likewise.
15318
15319 2009-07-15  Eric Botcazou  <ebotcazou@adacore.com>
15320
15321         PR rtl-optimization/40710
15322         * resource.c (mark_target_live_regs): Reset DF problem to LR.
15323
15324 2009-07-15  Adam Nemet  <anemet@caviumnetworks.com>
15325
15326         * config/mips/mips.md (*extenddi_truncate<mode>,
15327         *extendsi_truncate<mode>): Change type attribute to move_type
15328         with shift_shift.  Split out code handling exts from here ...
15329         (*extend<GPR:mode>_truncate<SHORT:mode>_exts): ... to this new
15330         pattern.
15331         (*extendhi_truncateqi): Change type attribute to move_type with
15332         shift_shift.  Split out code handling exts from here ...
15333         (*extendhi_truncateqi_exts): ... to this new pattern.
15334
15335 2009-07-15  Uros Bizjak  <ubizjak@gmail.com>
15336
15337         * config/i386/sse.md (copysign<mode>3): Use "and-not" SSE instruction
15338         instead of "and" with inverted sign bit mask value.  Use
15339         "nonimmediate_operand" for operand 1 and operand 2 predicate.
15340         Allocate registers only for operand 4 and operand 5.
15341
15342 2009-07-15  Jakub Jelinek  <jakub@redhat.com>
15343
15344         PR middle-end/40747
15345         * fold-const.c (fold_cond_expr_with_comparison): When folding
15346         < and <= to MIN, make sure the MIN uses the same type as the
15347         comparison's operands.
15348
15349 2009-07-15  Richard Earnshaw  <rearnsha@arm.com>
15350
15351         * arm.md (ior_xor): New code iterator.
15352         (split for ior/xor with shift and zero-extend): New split pattern.
15353         * arm/predicates.md (subreg_lowpart_operator): New special predicate.
15354
15355 2009-07-15  Richard Guenther  <rguenther@suse.de>
15356
15357         * tree-ssa-structalias.c (make_constraint_from_heapvar): Initialize
15358         offset member.
15359
15360 2009-07-15  Richard Guenther  <rguenther@suse.de>
15361
15362         PR middle-end/40753
15363         * alias.c (ao_ref_from_mem): Reject FUNCTION_DECL and LABEL_DECL bases.
15364
15365 2009-07-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
15366
15367         * config/m68k/linux-unwind.h (m68k_fallback_frame_state): Update to
15368         handle 2.6.30 kernel.
15369
15370 2009-07-15  DJ Delorie  <dj@redhat.com>
15371
15372         * config/mep/mep.md (sibcall_internal): Change register to allow
15373         for 24-bit addresses.
15374         (sibcall_value_internal): Likewise.
15375
15376 2009-07-14  Ghassan Shobaki  <ghassan.shobaki@amd.com>
15377
15378         * doc/invoke.texi: Added descriptions of the  scheduling heuristics
15379         that are enabled/disabled by the flags introduced by a previous patch.
15380
15381 2009-07-14  DJ Delorie  <dj@redhat.com>
15382
15383         * config/mep/mep.md (sibcall_internal): Include non-toggling
15384         non-jmp case.
15385         (sibcall_value_internal): Likewise.
15386
15387 2009-07-14  Taras Glek  <tglek@mozilla.com>
15388             Rafael Espindola  <espindola@google.com>
15389
15390         * doc/sourcebuild.texi: Document install-plugin target.
15391         * configure.ac: Added install-plugin target to language makefiles.
15392         * configure: Regenerate.
15393         * Makefile.in (install-plugin): Install more headers,
15394         depend on lang.install-plugin.
15395
15396 2009-07-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
15397
15398         * tree-vrp.c (vrp_evaluate_conditional): Mark strings for
15399         translation.
15400
15401 2009-07-14  DJ Delorie  <dj@redhat.com>
15402
15403         * config/mep/mep.c (mep_vliw_jmp_match): New function.
15404         * config/mep/mep-protos.h (mep_vliw_jmp_match): Prototype it.
15405         * config/mep/mep.md (sibcall_internal): Change test from
15406         mep_vliw_mode_match to mep_vliw_jmp_match.
15407         (sibcall_value_internal): Likewise.
15408
15409 2009-07-14  Uros Bizjak  <ubizjak@gmail.com>
15410
15411         * config/i386/sse.md (copysign<mode>3): New expander.
15412         * config/i386/i386-protos.h (ix86_build_signbit_mask): New prototype.
15413         * config/i386/i386.c (ix86_build_signbit_mask): Make public.
15414         Use ix86_build_const_vector.
15415         (enum ix86_builtins): Add IX86_BUILTIN_CPYSGNPS and
15416         IX86_BUILTIN_CPYSGNPD.
15417         (builtin_description): Add __builtin_ia32_copysignps and
15418         __builtin_ia32_copysignpd.
15419         (ix86_builtin_vectorized_function): Handle BUILT_IN_COPYSIGN
15420         and BUILT_IN_COPYSIGNF.
15421
15422 2009-07-13  Jason Merrill  <jason@redhat.com>
15423
15424         * builtins.c (can_trust_pointer_alignment): New fn.
15425         (get_pointer_alignment): Factor it out from here.
15426         * tree.h: Declare it.
15427
15428 2009-07-14  David Edelsohn  <edelsohn@gnu.org>
15429
15430         * config/rs6000/predicates.md (offsettable_mem_operand): Test
15431         RTX_AUTOINC class.
15432
15433 2009-07-14  Dodji Seketeli  <dodji@redhat.com>
15434
15435         PR debug/40705
15436         PR c++/403057
15437         * dwarf2.out.c (gen_type_die_with_usage): Added comment.
15438
15439 2009-07-14  Richard Guenther  <rguenther@suse.de>
15440             Andrey Belevantsev <abel@ispras.ru>
15441
15442         PR middle-end/40745
15443         * cfgexpand.c (partition_stack_vars): Do not bother to update
15444         alias information when not optimizing.
15445
15446 2009-07-14  Richard Guenther  <rguenther@suse.de>
15447             Andrey Belevantsev <abel@ispras.ru>
15448
15449         * tree-ssa-alias.h (refs_may_alias_p_1): Declare.
15450         (pt_solution_set): Likewise.
15451         * tree-ssa-alias.c (refs_may_alias_p_1): Export.
15452         * tree-ssa-structalias.c (pt_solution_set): New function.
15453         * final.c (rest_of_clean_state): Free SSA data structures.
15454         * print-rtl.c (print_decl_name): Remove.
15455         (print_mem_expr): Implement in terms of print_generic_expr.
15456         * alias.c (ao_ref_from_mem): New function.
15457         (rtx_refs_may_alias_p): Likewise.
15458         (true_dependence): Query alias-export info.
15459         (canon_true_dependence): Likewise.
15460         (write_dependence_p): Likewise.
15461         * tree-dfa.c (get_ref_base_and_extent): For void types leave
15462         size unknown.
15463         * emit-rtl.c (component_ref_for_mem_expr): Remove.
15464         (mem_expr_equal_p): Use operand_equal_p.
15465         (set_mem_attributes_minus_bitpos): Do not use
15466         component_ref_for_mem_expr.
15467         * cfgexpand.c (add_partitioned_vars_to_ptset): New function.
15468         (update_alias_info_with_stack_vars): Likewise.
15469         (partition_stack_vars): Call update_alias_info_with_stack_vars.
15470         * tree-ssa.c (delete_tree_ssa): Do not release SSA names
15471         explicitly nor clear stmt operands.
15472         Free the decl-to-pointer map.
15473         * tree-optimize.c (execute_free_datastructures): Do not free
15474         SSA data structures here.
15475         * tree-flow.h (struct gimple_df): Add decls_to_pointers member.
15476         * Makefile.in (emit-rtl.o): Add pointer-set.h dependency.
15477         (alias.o): Add tree-ssa-alias.h, pointer-set.h and $(TREE_FLOW_H)
15478         dependencies.
15479         (print-rtl.o): Add $(DIAGNOSTIC_H) dependency.
15480
15481 2009-07-13  DJ Delorie  <dj@redhat.com>
15482
15483         * config/mep/mep.h (CC1_SPEC): Tweak parameters to trigger
15484         unrolling at the right iteration count.
15485
15486         * config/mep/mep.c (mep_expand_prologue): Fix frame pointer
15487         calculations.
15488
15489 2009-07-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
15490
15491         * haifa-sched.c (rank_for_schedule): Introduced flags to
15492         enable/disable individual scheduling heuristics.
15493         * common.opt: Introduced flags to enable/disable individual
15494         heuristics in the scheduler.
15495         * doc/invoke.texi: Introduced flags to enable/disable individual
15496         heuristics in the scheduler.
15497
15498 2009-07-13  Kai Tietz  <kai.tietz@onevision.com>
15499
15500         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Remove file
15501         config/i386/mingw-tls.c.
15502         * config/i386/mingw-tls.c: Removed.
15503
15504 2009-07-13  Ira Rosen  <irar@il.ibm.com>
15505
15506         * tree-vect-loop.c (get_initial_def_for_reduction): Ensure that the
15507         checks access only relevant statements.
15508         (vectorizable_reduction): Likewise.
15509
15510 2009-07-12  Kai Tietz  <kai.tietz@onevision.com>
15511
15512         * config/i386/cygming.h (TARGET_OS_CPP_BUILTINS): Define _X86_
15513         just for 32-bit case.
15514
15515 2009-07-12  Jan Hubicka  <jh@suse.cz>
15516
15517         PR tree-optimization/40585
15518         * except.c (expand_resx_expr): When there already is resume
15519         instruction, produce linked list.
15520         (build_post_landing_pads): Assert that resume is empty.
15521         (connect_post_landing_pads): Handle resume lists.
15522         (dump_eh_tree): Dump resume list.
15523
15524 2009-07-12  Ira Rosen  <irar@il.ibm.com>
15525
15526         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
15527         with additional argument.
15528         * tree-vectorizer.h (enum vect_def_type): Add
15529         vect_double_reduction_def.
15530         (vect_is_simple_reduction): Add argument.
15531         * tree-vect-loop.c (vect_determine_vectorization_factor): Fix
15532         indentation.
15533         (vect_analyze_scalar_cycles_1): Detect double reduction. Call
15534         vect_is_simple_reduction with additional argument.
15535         (vect_analyze_loop_operations): Handle exit phi nodes in case of
15536         double reduction.
15537         (reduction_code_for_scalar_code): Handle additional codes by
15538         returning ERROR_MARK for them. Fix comment and indentation.
15539         (vect_is_simple_reduction): Fix comment, add argument to specify
15540         double reduction. Detect double reduction.
15541         (get_initial_def_for_induction): Fix indentation.
15542         (get_initial_def_for_reduction): Fix comment and indentation.
15543         Handle double reduction. Create initial definitions that do not
15544         require adjustment if ADJUSTMENT_DEF is NULL. Handle additional cases.
15545         (vect_create_epilog_for_reduction): Fix comment, add argument to
15546         handle double reduction. Use PLUS_EXPR in case of MINUS_EXPR in
15547         epilogue result extraction. Create double reduction phi node and
15548         replace relevant uses.
15549         (vectorizable_reduction): Call vect_is_simple_reduction with
15550         additional argument. Fix indentation. Update epilogue code treatment
15551         according to the changes in reduction_code_for_scalar_code. Check
15552         for double reduction. Call vect_create_epilog_for_reduction with
15553         additional argument.
15554         * tree-vect-stmts.c (process_use): Handle double reduction, update
15555         documentation.
15556         (vect_mark_stmts_to_be_vectorized): Handle double reduction.
15557         (vect_get_vec_def_for_operand): Likewise.
15558
15559 2009-07-12  Danny Smith  <dansmister@gmail.com>
15560
15561         * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't
15562         dllexport if !TREE_PUBLIC.
15563         (i386_pe_maybe_record_exported_symbol): Assert TREE_PUBLIC.
15564
15565 2009-07-11  Anatoly Sokolov  <aesok@post.ru>
15566
15567         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Redefine.
15568         (avr_extra_arch_macro) Remove declatation.
15569         * config/avr/avr.c (avr_cpu_cpp_builtins): New function.
15570         (avr_extra_arch_macro) Declare as static.
15571         * config/avr/avr-protos.h (avr_cpu_cpp_builtins): Dclare.
15572
15573 2009-07-11  Jan Hubicka  <jh@suse.cz>
15574
15575         PR middle-end/48388
15576         * except.c (can_be_reached_by_runtime): Test for NULL aka bitmap.
15577
15578 2009-07-11  Jakub Jelinek  <jakub@redhat.com>
15579
15580         PR debug/40713
15581         * dwarf2out.c (dw_fde_struct): Add in_std_section and
15582         cold_in_std_section bits.
15583         (dwarf2out_begin_prologue): Initialize them.
15584         (dwarf2out_finish): Don't emit FDE range into .debug_ranges
15585         if already covered by text_section or cold_text_section range.
15586
15587         PR rtl-optimization/40667
15588         * defaults.h (MINIMUM_ALIGNMENT): Define if not defined.
15589         * doc/tm.texi (MINIMUM_ALIGNMENT): Document it.
15590         * config/i386/i386.h (MINIMUM_ALIGNMENT): Define.
15591         * config/i386/i386.c (ix86_minimum_alignment): New function.
15592         * config/i386/i386-protos.h (ix86_minimum_alignment): New prototype.
15593         * cfgexpand.c (expand_one_var): Use MINIMIM_ALIGNMENT.
15594         * emit-rtl.c (gen_reg_rtx): Likewise.
15595         * function.c (assign_parms): Likewise.  If nominal_type needs
15596         bigger alignment than FUNCTION_ARG_BOUNDARY, use its alignment
15597         rather than passed_type's alignment.
15598
15599         PR target/40668
15600         * function.c (assign_parm_setup_stack): Adjust
15601         MEM_OFFSET (data->stack_parm) if promoted_mode is different
15602         from nominal_mode on big endian.
15603
15604 2009-07-11  Paolo Bonzini  <bonzini@gnu.org>
15605
15606         * expmed.c (emit_store_flag_1): Fix choice of zero vs. sign extension.
15607
15608 2009-07-10  DJ Delorie  <dj@redhat.com>
15609
15610         * config/mep/mep.c (mep_can_inline_p): Correct logic, and simplify.
15611
15612 2009-07-10  Mark Mitchell  <mark@codesourcery.com>
15613
15614         * config/arm/thumb2.md (thumb2_cbz): Correct computation of length
15615         attribute.
15616         (thumb2_cbnz): Likewise.
15617
15618 2009-07-10  David Daney  <ddaney@caviumnetworks.com>
15619
15620         PR target/39079
15621         * config.gcc (supported_defaults): Add synci.
15622         (with_synci): Add validation.
15623         (all_defaults): Add synci.
15624         * config/mips/mips.md (clear_cache): Use TARGET_SYNCI instead of
15625         ISA_HAS_SYNCI.
15626         (synci): Same.
15627         * config/mips/mips.opt (msynci): New option.
15628         * config/mips/mips.c (mips_override_options): Warn on use of
15629         -msynci for targets that do now support it.
15630         * gcc/config/mips/mips.h (OPTION_DEFAULT_SPECS): Add a default for
15631         msynci.
15632         * gcc/doc/invoke.texi (-msynci): Document the new option.
15633         * doc/install.texi (--with-synci): Document the new option.
15634
15635 2009-07-10  Richard Guenther  <rguenther@suse.de>
15636
15637         PR tree-optimization/40496
15638         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Create
15639         the PHI result with a compatible type.
15640
15641 2009-07-10  Manuel López-Ibáñez  <manu@gcc.gnu.org>
15642
15643         PR 25509
15644         PR 40614
15645         * c.opt (Wunused-result): New.
15646         * doc/invoke.texi: Document it.
15647         * c-common.c (c_warn_unused_result): Use it.
15648
15649 2009-07-09  DJ Delorie  <dj@redhat.com>
15650
15651         * targhooks.c (default_target_can_inline_p): Rename from
15652         default_target_option_can_inline_p.
15653         * targhooks.h (default_target_can_inline_p): Likewise.
15654         * target-def.h (TARGET_CAN_INLINE_P): Rename from
15655         TARGET_OPTION_CAN_INLINE_P.
15656         * config/i386/i386.c (TARGET_CAN_INLINE_P): Likewise.
15657         * config/mep/mep.c (TARGET_CAN_INLINE_P): Likewise.
15658         (mep_target_can_inline_p): Rename from
15659         mep_target_option_can_inline_p.
15660
15661         PR target/40626
15662         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Add coprocessor
15663         registers used to pass vectors.
15664
15665         * config/mep/mep.c (mep_option_can_inline_p): Remove error call.
15666
15667 2009-07-09  Tom Tromey  <tromey@redhat.com>
15668
15669         * unwind-dw2-fde-darwin.c: Include dwarf2.h.
15670         * config/mmix/mmix.c: Include dwarf2.h.
15671         * config/rs6000/darwin-fallback.c: Include dwarf2.h.
15672         * config/xtensa/unwind-dw2-xtensa.c: Include dwarf2.h.
15673         * config/sh/sh.c: Include dwarf2.h.
15674         * config/i386/i386.c: Include dwarf2.h.
15675         * Makefile.in (DWARF2_H): Remove 'elf'.
15676         * except.c: Include dwarf2.h.
15677         * unwind-dw2.c: Include dwarf2.h.
15678         * dwarf2out.c: Include dwarf2.h.
15679         * unwind-dw2-fde-glibc.c: Include dwarf2.h.
15680         * unwind-dw2-fde.c: Include dwarf2.h.
15681         * dwarf2asm.c: Include dwarf2.h.
15682
15683 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
15684
15685         * haifa-sched.c (insn_finishes_cycle_p): New static function.
15686         (max_issue): Use it.
15687         * sched-int.h (struct sched_info: insn_finishes_block_p): New
15688         scheduler hook.
15689         * sched-rgn.c (rgn_insn_finishes_block_p): Implement it.
15690         (region_sched_info): Update.
15691         * sched-ebb.c (ebb_sched_info): Update.
15692         * modulo-sched.c (sms_sched_info): Update.
15693         * sel-sched-ir.c (sched_sel_haifa_sched_info): Update.
15694
15695 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
15696
15697         * varasm.c (build_constant_desc): Don't share RTL in pool entries.
15698
15699 2009-07-09  Basile Starynkevitch  <basile@starynkevitch.net>
15700
15701         * plugin.c (try_init_one_plugin): passes RTLD_GLOBAL to dlopen.
15702
15703 2009-07-09  Jakub Jelinek  <jakub@redhat.com>
15704
15705         PR middle-end/40692
15706         * fold-const.c (fold_cond_expr_with_comparison): Don't replace
15707         arg1 with arg01 if arg1 is already INTEGER_CST.
15708
15709 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
15710
15711         * simplify-rtx.c (simplify_binary_operation_1) <AND>:
15712         Transform (and (truncate)) into (truncate (and)).
15713
15714 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
15715
15716         * combine.c (make_extraction): Check TRULY_NOOP_TRUNCATION before
15717         creating LHS paradoxical subregs.  Fix surrounding returns to
15718         use NULL_RTX rather than 0.
15719
15720 2009-07-08  DJ Delorie  <dj@redhat.com>
15721
15722         * config/mep/mep.c (mep_option_can_inline_p): New.
15723         (TARGET_OPTION_CAN_INLINE_P): Define.
15724
15725 2009-07-08  Mark Wielaard  <mjw@redhat.com>
15726
15727         PR debug/40659
15728         * dwarf2out.c (add_data_member_location_attribute): When we have
15729         only a constant offset don't emit a new location description using
15730         DW_OP_plus_uconst, but just add the constant with add_AT_int, when
15731         dwarf_version > 2.
15732
15733 2009-07-08  Richard Henderson  <rth@redhat.com>
15734
15735         PR target/38900
15736         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move to i386.c.
15737         (enum reg_class): Add CLOBBERED_REGS.
15738         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Likewise.
15739         * config/i386/i386.c (ix86_conditional_register_usage): Moved
15740         from CONDITIONAL_REGISTER_USAGE; build CLOBBERED_REGS for 64-bit.
15741         (ix86_function_ok_for_sibcall): Tidy.  Disallow MS->SYSV sibcalls.
15742         (ix86_expand_call): Use sibcall_insn_operand when needed.  Don't
15743         force 64-bit sibcalls into R11.
15744         * config/i386/constraints.md (U): New constraint.
15745         * config/i386/i386.md (sibcall_1, sibcall_value_1): Use it.
15746         (sibcall_1_rex64, sibcall_value_1_rex64): Likewise.
15747         (sibcall_1_rex64_v, sibcall_value_1_rex64_v): Remove.
15748
15749 2009-07-08  Shujing Zhao  <pearly.zhao@oracle.com>
15750
15751         * basic-block.h (dump_regset, debug_regset): Remove duplicate
15752         prototypes.
15753         * c-objc-common.h (c_initialize_diagnostics): Ditto.
15754         * ebitmap.h (dump_ebitmap): Ditto.
15755         * optabs.h (optab_libfunc): Ditto.
15756         * tree.h (tree_expr_nonzero_warnv_p): Ditto.
15757         * tree-flow.h (vect_can_force_dr_alignment_p,
15758         get_vectype_for_scalar_type): Ditto.
15759         (vectorize_loops): Move prototype to ...
15760         * tree-vectorizer.h: ... here. Also, adjust comment.
15761         (vect_set_verbosity_level): Remove duplicate prototype.
15762         * tree-ssa-loop.c: Include tree-vectorizer.h.
15763         * Makefile.in (tree-ssa-loop.o): Depend on tree-vectorizer.h.
15764
15765 2009-07-08  Nick Clifton  <nickc@redhat.com>
15766
15767         * config/i386/unix.h (ASM_COMMENT_START): Add a space after the
15768         forward slash.
15769
15770 2009-07-08  DJ Delorie  <dj@redhat.com>
15771
15772         * config/mep/mep-ivc2.cpu (cpmovtocsar0_C3, cpmovtocsar1_C3,
15773         cpmovtocc_C3, cpmovtocsar0_P0S_P1, cpmovtocsar1_P0S_P1,
15774         cpmovtocc_P0S_P1): Mark volatile.  Note which registers are
15775         written to.
15776         * config/mep/intrinsics.md: Regenerated.
15777         * config/mep/mep.c (mep_interrupt_saved_reg): Save IVC2 control
15778         registers when asm() or calls are detected.
15779
15780 2009-07-08  Manuel López-Ibáñez  <manu@gcc.gnu.org>
15781
15782         PR c++/31246
15783         * gimplify.c (gimplify_expr): Propagate no_warning flag when
15784         gimplifying.
15785         * gimple (gimple_build_call_from_tree): Likewise.
15786         * tree-cfg.c (remove_useless_stmts_warn_notreached): Check
15787         no_warning flag before warning.
15788
15789 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
15790
15791         * tree.c (set_expr_locus): Remove.
15792         * tree.h (EXPR_LOCUS,SET_EXPR_LOCUS,set_expr_locus): Remove.
15793         * c-typeck.c (c_finish_stmt_expr):  Replace EXPR_LOCUS by
15794         EXPR_LOCATION.
15795         * gimplify.c (internal_get_tmp_var): Likewise.
15796         (gimplify_call_expr): Likewise.
15797         (gimplify_one_sizepos): Likewise.
15798
15799 2009-07-07  Eric Botcazou  <ebotcazou@adacore.com>
15800
15801         PR debug/40666
15802         * dbxout.c (dbxout_symbol) <PARM_DECL>: Deal with parameters pointing
15803         to variables for debugging purposes.
15804
15805 2009-06-23  Mark Loeser  <mark@halcy0n.com>
15806
15807         PR build/40010
15808         * Makefile.in (gcc.pod): Depend on gcc-vers.texi.
15809
15810 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
15811
15812         * pretty-print.c (pp_base_format): Remove %J.
15813         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
15814         gcc_cxxdiag_char_table): Likewise.
15815         (init_dynamic_diag_info): Likewise.
15816
15817 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
15818
15819         * pretty-print.c (pp_base_format): Remove %H.
15820         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
15821         gcc_cxxdiag_char_table): Likewise.
15822         (init_dynamic_diag_info): Likewise.
15823         * config/mep/mep.c (mep_select_section): Likewise.
15824
15825 2009-07-07  Duncan Sands  <baldrick@free.fr>
15826
15827         * final.c (pass_clean_state): Give the pass a name.
15828         * passes.c (pass_rest_of_compilation): Likewise.
15829         * tree-optimize.c (pass_all_optimizations): Likewise.
15830
15831 2009-07-07  H.J. Lu  <hongjiu.lu@intel.com>
15832
15833         * config/ia64/ia64.c (ia64_handle_model_attribute): Remove
15834         an extra 'decl' for error_at.
15835
15836 2009-07-07  Jakub Jelinek  <jakub@redhat.com>
15837
15838         PR middle-end/40669
15839         * tree-tailcall.c (adjust_return_value_with_ops,
15840         create_tailcall_accumulator): Set DECL_GIMPLE_REG_P on the temporary
15841         if it has complex or vector type.
15842
15843 2009-07-07  Olivier Hainque  <hainque@adacore.com>
15844
15845         * config/alpha/t-osf4 (SHLIB_LINK): Do not hide the dummy weak
15846         pthread symbols.
15847
15848 2009-07-07  Basile Starynkevitch  <basile@starynkevitch.net>
15849
15850         * Makefile.in: added more lists of includes to PLUGIN_HEADERS.
15851
15852 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
15853
15854         * cgraphunit.c: Replace %J by an explicit location.  Update all calls.
15855         * c-decl.c: Likewise.
15856         * function.c: Likewise.
15857         * varasm.c: Likewise.
15858         * tree-ssa.c: Likewise.
15859         * c-common.c: Likewise.
15860         * tree-cfg.c: Likewise.
15861         * config/spu/spu.c: Likewise.
15862         * config/ia64/ia64.c: Likewise.
15863         * config/v850/v850.c: Likewise.
15864
15865 2009-07-06  DJ Delorie  <dj@redhat.com>
15866
15867         * config/mep/mep-core.cpu (fsft, ssarb): Mark as VOLATILE.
15868         * config/mep/mep-ivc2.cpu (many): Add VOLATILE to more insns that make
15869         unspecified accesses to control registers.
15870         * config/mep/intrinsics.md: Regenerate.
15871         * config/mep/intrinsics.h: Regenerate.
15872         * config/mep/mep-intrin.h: Regenerate.
15873
15874 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
15875
15876         * c-lex.c: Replace %H by an explicit location. Update all calls.
15877         * c-common.c: Likewise.
15878         * c-decl.c: Likewise.
15879         * c-typeck.c: Likewise.
15880         * fold-const.c: Likewise.
15881         * gimplify.c: Likewise.
15882         * stmt.c: Likewise.
15883         * tree-cfg.c: Likewise.
15884         * tree-ssa-loop-niter.c: Likewise.
15885         * tree-vrp.c: Likewise.
15886         * value-prof.c: Likewise.
15887
15888 2009-07-06  Diego Novillo  <dnovillo@google.com>
15889
15890         * tree-dfa.c (dump_variable): Write DECL_INITIAL for VAR
15891         if it has one.  Handle cases where VAR does not have an
15892         annotation or cfun is NULL.
15893
15894 2009-07-06  Diego Novillo  <dnovillo@google.com>
15895
15896         * tree.c: Include debug.h.
15897         (initialize_tree_contains_struct): New.
15898         (init_ttree): Call it.
15899         (tree_node_structure_for_code): Factor out of ...
15900         (tree_node_structure): ... here.
15901         * treestruct.def (TS_PHI_NODE): Remove.
15902         (TS_GIMPLE_STATEMENT): Remove.
15903
15904 2009-07-06  Diego Novillo  <dnovillo@google.com>
15905
15906         * tree-pretty-print.c (dump_generic_node): Protect against NULL op0.
15907         (debug_tree_chain): Handle cycles.
15908
15909 2009-07-06  Nick Clifton  <nickc@redhat.com>
15910             DJ Delorie  <dj@redhat.com>
15911
15912         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
15913         __FMOVD_ENABLED__ is defined.
15914         * config/sh/sh.h
15915         (TARGET_FMOVD): Provide a default definition.
15916         (MASK_FMOVD): Likewise.
15917         (TARGET_CPU_CPP_BUILTINS): Define
15918         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
15919         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
15920         two fmov instructions depending upon whether TARGET_FMOVD is enabled.
15921         (split for DF load from memory into register): Also handle
15922         MEMs which consist of REG+DISP addressing.
15923         (split for DF store from register to memory): Likewise.
15924         (movsf_ie): Always use single fp_mode.
15925         * config/sh/sh.c (sh_override_options): Do not automatically
15926         enable TARGET_MOVD for the SH2A when supporting doubles - leave
15927         that to the -mfmovd command line switch.
15928         (broken_move): Do not restrict fldi test to only the SH4 and SH4A.
15929         (fldi_ok): Always allow.
15930         * config/sh/sh.opt (mfmovd): Remove this switch.
15931         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
15932
15933 2009-07-06  J"orn Rennecke  <joern.rennecke@arc.com>
15934             Kaz Kojima  <kkojima@gcc.gnu.org>
15935
15936         PR rtl-optimization/30807
15937         * postreload.c (reload_combine): For every new use of REG_SUM,
15938         record the use of BASE.
15939
15940 2009-07-06  Jan Hubicka  <jh@suse.cz>
15941
15942         * params.def: Revert my accidental commit at 2009-06-30.
15943
15944 2009-07-04  Ian Lance Taylor  <iant@google.com>
15945
15946         PR target/40636
15947         * config/i386/msformat-c.c (mingw_format_attributes): Declare as
15948         EXPORTED_CONST.
15949         (mingw_format_attribute_overrides): Likewise.
15950
15951 2009-07-04  Jakub Jelinek  <jakub@redhat.com>
15952
15953         PR debug/40596
15954         * dwarf2out.c (based_loc_descr): For crtl->stack_realign_tried
15955         don't check cfa.reg.  Instead of cfa.indirect use
15956         fde && fde->drap_reg != INVALID_REGNUM test.
15957
15958 2009-07-04  Eric Botcazou  <ebotcazou@adacore.com>
15959
15960         * postreload.c (reload_combine): Replace CONST_REG with INDEX_REG.
15961
15962 2009-07-03  Vladimir Makarov  <vmakarov@redhat.com>
15963
15964         PR target/40587
15965         * ira.c (build_insn_chain): Use DF_LR_OUT instead of df_get_live_out.
15966
15967 2009-07-03  Richard Guenther  <rguenther@suse.de>
15968
15969         PR tree-optimization/40640
15970         * tree-switch-conversion.c (build_arrays): Perform arithmetic
15971         in original type.
15972
15973 2009-07-03  Jan Hubicka  <jh@suse.cz>
15974
15975         * ipa-inline.c (cgraph_decide_inlining_incrementally): When optimizing
15976         for size, reduce amount of inlining.
15977
15978 2009-07-03  Richard Guenther  <rguenther@suse.de>
15979
15980         PR middle-end/34163
15981         * tree-chrec.c (chrec_convert_1): Fold (T2)(t +- x) to (T2)t +- (T2)x
15982         if t +- x is known to not overflow and the conversion widens the
15983         operation.
15984         * Makefile.in (tree-chrec.o): Add $(FLAGS_H) dependency.
15985
15986 2009-07-03  Jan Hubicka  <jh@suse.cz>
15987
15988         * ipa-pure-const.c (analyze): Update loop optimizer init.
15989         * tree-ssa-loop-iv-canon.c (empty_loop_p, remove_empty_loop,
15990         try_remove_empty_loop, remove_empty_loops): Remove.
15991         * tree-ssa-loop.c (tree_ssa_empty_loop, pass_empty_loop): Remove.
15992         * tree-ssa-dce.c (find_obviously_necessary_stmts): Use finiteness info
15993         to mark regular loops as neccesary.
15994         (degenerate_phi_p): New function.
15995         (propagate_necessity, remove_dead_phis): Use it.
15996         (forward_edge_to_pdom): Likewise.
15997         (eliminate_unnecessary_stmts): Take care to remove uses of results of
15998         virtual PHI nodes that became unreachable.
15999         (perform_tree_ssa_dce): Initialize/deinitialize loop optimizer.
16000         * tree-flow.h (remove_empty_loops): Remove.
16001         * passes.c (init_optimization_passes): Remove.
16002
16003 2009-07-03  Uros Bizjak  <ubizjak@gmail.com>
16004
16005         * config/i386/i386.md (fix_trunc<mode>_fisttp_i387_1): Use
16006         can_create_pseudo_p.
16007         (*fix_trunc<mode>_i387_1): Ditto.
16008         (*floathi<mode>2_1): Ditto.
16009         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): Ditto.
16010         (*fistdi2_1): Ditto.
16011         (*fist<mode>2_1): Ditto.
16012         (frndintxf2_floor): Ditto.
16013         (*fist<mode>2_floor_1): Ditto.
16014         (frndintxf2_ceil): Ditto.
16015         (*fist<mode>2_ceil_1): Ditto.
16016         (frndintxf2_trunc): Ditto.
16017         (frndintxf2_mask_pm): Ditto.
16018         (fxam<mode>2_i387_with_temp): Ditto.
16019         * config/i386/sse.md (mulv16qi3): Ditto.
16020         (*sse2_mulv4si3): Ditto.
16021         (mulv2di3): Ditto.
16022         (sse4_2_pcmpestr): Ditto.
16023         (sse4_2_pcmpistr): Ditto.
16024
16025 2009-07-03  Jan Hubicka  <jh@suse.cz>
16026
16027         * tree-ssa-dce.c (bb_contains_live_stmts): New bitmap.
16028         (mark_stmt_necessary): Set it.
16029         (mark_operand_necessary): Set it.
16030         (mark_control_dependent_edges_necessary): Set it.
16031         (mark_virtual_phi_result_for_renaming): New function.
16032         (get_live_post_dom): New function.
16033         (forward_edge_to_pdom): New function.
16034         (remove_dead_stmt): Fix handling of control dependences.
16035         (tree_dce_init): Init new bitmap.
16036         (tree_dce_done): Free it.
16037
16038 2009-07-02  Richard Guenther  <rguenther@suse.de>
16039
16040         PR bootstrap/40617
16041         * tree-ssa-structalias.c (new_var_info): Initialize
16042         is_restrict_var.
16043
16044 2009-07-02  Jan Hubicka  <jh@suse.cz>
16045
16046         * ipa-pure-const.c (check_op): Use PTA info to see if indirect_ref is
16047         local.
16048
16049 2009-07-02  Paolo Bonzini  <bonzini@gnu.org>
16050
16051         * expmed.c (emit_cstore, emit_store_flag_1): Accept target_mode
16052         instead of recomputing it.  Adjust calls.
16053         (emit_store_flag): Adjust recursive calls.
16054
16055 2009-07-02  Richard Guenther  <rguenther@suse.de>
16056
16057         * tree-ssa-live.c (remove_unused_locals): Do not remove
16058         heap variables.
16059         * tree-ssa-structalias.c (handle_lhs_call): Delay setting
16060         of DECL_EXTERNAL for HEAP variables.
16061         (compute_points_to_sets): Set DECL_EXTERNAL for escaped
16062         HEAP variables.  Do not adjust RESTRICT vars.
16063         (find_what_var_points_to): Nobody cares if something
16064         points to READONLY.
16065
16066 2009-07-02  Ben Elliston  <bje@au.ibm.com>
16067
16068         * unwind-dw2-fde-glibc.c (_Unwind_IteratePhdrCallback): Move
16069         pc_low and pc_high declarations to the top of the function.
16070
16071 2009-07-01  DJ Delorie  <dj@redhat.com>
16072
16073         * config/mep/mep.c (mep_handle_option): Leave IVC2 control
16074         registers as fixed.
16075         (mep_interrupt_saved_reg): Save appropriate IVC2 control registers.
16076         * config/mep/mep-ivc2.cpu: Add VOLATILE to insns that make
16077         unspecified accesses to control registers.
16078         * config/mep/intrinsics.md: Regenerate.
16079         * config/mep/intrinsics.h: Regenerate.
16080         * config/mep/mep-intrin.h: Regenerate.
16081
16082 2009-07-01  Anthony Green  <green@moxielogic.com>
16083
16084         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
16085         instruction when possible.
16086         (moxie_expand_prologue): Ditto.  Also, save an instruction and
16087         some complexity by popping off of $r12 instead of $sp.
16088         * config/moxie/moxie.md (movsi_pop): Don't assume $sp.  Take two
16089         operands.
16090
16091 2009-07-01  Richard Henderson  <rth@redhat.com>
16092
16093         PR bootstrap/40347
16094         * function.c (reposition_prologue_and_epilogue_notes): If epilogue
16095         contained no insns, reposition note before last insn.
16096
16097 2009-07-01  Richard Henderson  <rth@redhat.com>
16098
16099         PR debug/40431
16100         * dwarf2out.c (def_cfa_1): Revert 2009-06-11 change for
16101         DW_CFA_def_cfa_offset and DW_CFA_def_cfa.
16102
16103 2009-07-01  Michael Meissner  <meissner@linux.vnet.ibm.com>
16104
16105         PR bootstrap/40558
16106         * config/rs6000/rs6000.c (print_operand): Undo change that breaks
16107         darwin9 for printing reg addresses with %y.
16108
16109 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
16110
16111         * combine.c (force_to_mode): Handle TRUNCATE.  Factor out
16112         truncation from operands in binary operations.
16113
16114 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
16115
16116         Revert:
16117         2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
16118         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
16119         subreg of op0 to the original op0.
16120
16121         * expmed.c (store_bit_field_1): Use a temporary as the destination
16122         instead of a paradoxical subreg when we need to truncate the result.
16123
16124 2009-07-01  DJ Delorie  <dj@redhat.com>
16125
16126         * config/mep/mep-ivc2.cpu (cmov, cmovc, cmovh): Add intrinsic
16127         names to VLIW variants.
16128         (ivc2rm, ivc2crn): Make data type consistent with non-VLIW variants.
16129         * config/mep/intrinsics.md: Regenerate.
16130         * config/mep/intrinsics.h: Regenerate.
16131         * config/mep/mep-intrin.h: Regenerate.
16132
16133 2009-07-01  Jakub Jelinek  <jakub@redhat.com>
16134
16135         PR debug/40462
16136         * jump.c (returnjump_p): Revert last patch.
16137         * dwarf2out.c (dwarf2out_begin_epilogue): Handle SEQUENCEs.
16138
16139 2009-07-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
16140
16141         PR target/40575
16142         * pa.md (casesi32p): Use jump table label to determine the offset
16143         of the jump table.
16144         (casesi64p): Likewise.
16145
16146         * pa.c (forward_branch_p): Return bool type.  Use instruction
16147         addresses when available.  Assert that INSN has a jump label.
16148         (pa_adjust_insn_length): Don't call forward_branch_p if INSN doesn't
16149         have a jump label.
16150
16151 2009-07-01  Richard Guenther  <rguenther@suse.de>
16152
16153         PR tree-optimization/19831
16154         * tree-ssa-dce.c (propagate_necessity): Calls to functions
16155         that only act as barriers do not make any previous stores necessary.
16156         * tree-ssa-structalias.c (handle_lhs_call): Delay making
16157         HEAP variables global, do not add a constraint from nonlocal.
16158         (find_func_aliases): Handle escapes through return statements.
16159         (compute_points_to_sets): Make escaped HEAP variables global.
16160
16161 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
16162
16163         PR bootstrap/40597
16164         * expmed.c (emit_store_flag): Perform a conversion if necessary,
16165         after reducing a DImode cstore to SImode.
16166
16167 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
16168
16169         * expr.c (expand_expr_real_1): Reinstate fallthrough to
16170         TRUTH_ANDIF_EXPR if do_store_flag returns NULL.
16171
16172 2009-07-01  Maciej W. Rozycki  <macro@linux-mips.org>
16173
16174         * config/vax/vax.h (TARGET_BSD_DIVMOD): New macro.  Set to 1.
16175         * config/vax/linux.h (TARGET_BSD_DIVMOD): New macro.  Redefine the
16176         to 0.
16177         * config/vax/vax.c (vax_init_libfuncs): Only redefine udiv_optab
16178         and umod_optab if TARGET_BSD_DIVMOD.
16179         * config/vax/lib1funcs.asm: New file.
16180         * config/vax/t-linux: New file.
16181         * config.gcc (vax-*-linux*): Set tmake_file to vax/t-linux.
16182
16183 2009-06-30  Jakub Jelinek  <jakub@redhat.com>
16184
16185         PR c++/40566
16186         * convert.c (convert_to_integer) <case COND_EXPR>: Don't convert
16187         to type arguments that have void type.
16188
16189         PR debug/40573
16190         * dwarf2out.c (gen_formal_parameter_die): Call
16191         equate_decl_number_to_die if node is different from origin.
16192
16193 2009-06-30  Anthony Green  <green@moxielogic.com>
16194
16195         Clean up moxie port for --enable-build-with-cxx.
16196         * config/moxie/moxie.c (moxie_function_value): First two
16197         parameters are const_tree, not tree.
16198         * config/moxie/moxie.h (enum reg_class): Rename CC_REG to CC_REGS.
16199         (REG_CLASS_NAMES): Ditto.
16200         (REGNO_REG_CLASS): Ditto.
16201         * config/moxie/moxie-protos.h (moxie_override_options): Declare.
16202         (moxie_function_value): Fix constyness of arguments.
16203
16204 2009-06-30  Eric Botcazou  <ebotcazou@adacore.com>
16205
16206         * cgraphunit.c (cgraph_finalize_compilation_unit): Call
16207         finalize_size_functions before further processing.
16208         * stor-layout.c: Include cgraph.h, tree-inline.h and tree-dump.h.
16209         (variable_size): Call self_referential_size on size expressions
16210         that contain a PLACEHOLDER_EXPR.
16211         (size_functions): New static variable.
16212         (copy_self_referential_tree_r): New static function.
16213         (self_referential_size): Likewise.
16214         (finalize_size_functions): New global function.
16215         * tree.c: Include tree-inline.h.
16216         (push_without_duplicates): New static function.
16217         (find_placeholder_in_expr): New global function.
16218         (substitute_in_expr) <tcc_declaration>: Return the replacement object
16219         on equality.
16220         <tcc_expression>: Likewise.
16221         <tcc_vl_exp>: If the replacement object is a constant, try to inline
16222         the call in the expression.
16223         * tree.h (finalize_size_functions): Declare.
16224         (find_placeholder_in_expr): Likewise.
16225         (FIND_PLACEHOLDER_IN_EXPR): New macro.
16226         (substitute_placeholder_in_expr): Update comment.
16227         * tree-inline.c (remap_decl): Do not unshare trees if do_not_unshare
16228         is true.
16229         (copy_tree_body_r): Likewise.
16230         (copy_tree_body): New static function.
16231         (maybe_inline_call_in_expr): New global function.
16232         * tree-inline.h (struct copy_body_data): Add do_not_unshare field.
16233         (maybe_inline_call_in_expr): Declare.
16234         * Makefile.in (tree.o): Depend on TREE_INLINE_H.
16235         (stor-layout.o): Depend on CGRAPH_H, TREE_INLINE_H, TREE_DUMP_H and
16236         GIMPLE_H.
16237
16238 2009-06-30  Richard Guenther  <rguenther@suse.de>
16239
16240         * tree-ssa-dce.c (mark_all_reaching_defs_necessary_1): Always
16241         continue walking.
16242         (propagate_necessity): Do not mark reaching defs of stores
16243         as necessary.
16244
16245 2009-06-30  Jan Hubicka  <jh@suse.cz>
16246
16247         * cfgloopanal.c (check_irred): Move into ...
16248         (mark_irreducible_loops): ... here; return true if ireducible
16249         loops was found.
16250         * ipa-pure-const.c: Include cfgloop.h and tree-scalar-evolution.h
16251         (analyze_function): Try to prove loop finiteness.
16252         * cfgloop.h (mark_irreducible_loops): Update prototype.
16253         * Makefile.in (ipa-pure-const.o): Add dependency on SCEV and CFGLOOP.
16254
16255 2009-06-30  Basile Starynkevitch  <basile@starynkevitch.net>
16256
16257         * Makefile.in (PLUGIN_HEADERS): added ggc, tree-dump, pretty-print.
16258
16259 2009-06-30  Ira Rosen  <irar@il.ibm.com>
16260
16261         PR tree-optimization/40542
16262         * tree-vect-stmts.c (vect_analyze_stmt): Don't vectorize volatile
16263         types.
16264
16265 2009-06-30  Martin Jambor  <mjambor@suse.cz>
16266
16267         PR tree-optimization/40582
16268         * tree-sra.c (build_ref_for_offset_1): Use types_compatible_p rather
16269         than useless_type_conversion_p.
16270         (generate_subtree_copies): Increment sra_stats.subtree_copies at a
16271         proper place.
16272
16273 2009-06-30  Martin Jambor  <mjambor@suse.cz>
16274
16275         PR middle-end/40554
16276         * tree-sra.c (sra_modify_expr): Add access->offset to start_offset.
16277
16278 2009-06-30  Richard Guenther  <rguenther@suse.de>
16279
16280         * tree-ssa-alias.c (walk_aliased_vdefs_1): Change interface to
16281         use ao_ref references.
16282         (walk_aliased_vdefs): Likewise.
16283         * tree-ssa-alias.h (walk_aliased_vdefs): Adjust prototype.
16284         * tree-ssa-dce.c (struct ref_data): Remove.
16285         (mark_aliased_reaching_defs_necessary_1): Use the ao_ref argument.
16286         (mark_aliased_reaching_defs_necessary): Adjust.
16287         (mark_all_reaching_defs_necessary_1): Likewise.
16288
16289 2009-06-30  Paolo Bonzini  <bonzini@gnu.org>
16290
16291         PR boostrap/40597
16292         * expmed.c (emit_cstore): New name of emit_store_flag_1.
16293         (emit_store_flag_1): Extract from emit_store_flag, adjust
16294         calls to (what now is) emit_cstore.
16295         (emit_store_flag): Call emit_store_flag_1 and also use it
16296         for what used to be recursive calls.
16297
16298 2009-06-30  Wei Guozhi  <carrot@google.com>
16299
16300         PR/40416
16301         * tree-ssa-sink.c (statement_sink_location): Stop sinking expression
16302         if the target bb post dominates from bb.
16303         * config/i386/i386.c (memory_address_length): Check existence of base
16304         register before using it.
16305
16306 2009-06-30  Nick Clifton  <nickc@redhat.com>
16307             DJ Delorie  <dj@redhat.com>
16308
16309         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
16310         __FMOVD_ENABLED__ is defined.
16311         * config/sh/sh.h
16312         (TARGET_FMOVD): Provide a default definition.
16313         (MASK_FMOVD): Likewise.
16314         (TARGET_CPU_CPP_BUILTINS): Define
16315         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
16316         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
16317         two fmov instructions depending upon whether TARGET_FMOVD is
16318         enabled.
16319         (split for DF load from memory into register): Also handle
16320         MEMs which consist of REG+DISP addressing.
16321         (split for DF store from register to memory): Likewise.
16322         * config/sh/sh.opt (mfmovd): Remove this switch.
16323         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
16324         * config/sh/sh.c (sh_override_options): Do not automatically
16325         enable TARGET_MOVD for the SH2A when supporting doubles - leave
16326         that to the -mfmovd command line switch.
16327
16328         * config/sh/sh.c (broken_move): Do not restrict fldi test to only
16329         the SH4 and SH4A.
16330         (fldi_ok): Always allow.
16331         * config/sh/sh.md (movsf_ie): Always use single fp_mode.
16332
16333 2009-06-29  DJ Delorie  <dj@redhat.com>
16334
16335         * doc/install.texi (mep-x-elf): Correct chip's full name.
16336
16337 2009-06-29  H.J. Lu  <hongjiu.lu@intel.com>
16338
16339         * doc/extend.texi: Fix typo.
16340
16341 2009-06-29  Tom Tromey  <tromey@redhat.com>
16342
16343         * dwarf2.h: Remove.
16344         * Makefile.in (DWARF2_H): New variable.
16345         (except.o): Use it.
16346         (dwarf2out.o): Likewise.
16347         (dwarf2asm.o): Likewise.
16348         * config/i386/t-i386: Use DWARF2_H.
16349         * except.c: Include elf/dwarf2.h.
16350         * unwind-dw2.c: Include elf/dwarf2.h.
16351         * dwarf2out.c: Include elf/dwarf2.h.
16352         (dw_loc_descr_struct) <dw_loc_opc>: Now a bitfield.
16353         <dtprel>: New field.
16354         (dwarf_stack_op_name): Don't handle INTERNAL_DW_OP_tls_addr.
16355         (size_of_loc_descr): Likewise.
16356         (output_loc_operands_raw): Likewise.
16357         (output_loc_operands): Handle new dtprel field.
16358         (loc_checksum): Update.
16359         (loc_descriptor_from_tree_1) <VAR_DDECL>: Set dtprel field.
16360         * unwind-dw2-fde-glibc.c: Include elf/dwarf2.h.
16361         * unwind-dw2-fde.c: Include elf/dwarf2.h.
16362         * dwarf2asm.c: Include elf/dwarf2.h.
16363         * unwind-dw2-fde-darwin.c: Include elf/dwarf2.h.
16364         * config/mmix/mmix.c: Include elf/dwarf2.h.
16365         * config/rs6000/darwin-fallback.c: Include elf/dwarf2.h.
16366         * config/xtensa/unwind-dw2-xtensa.c: Include elf/dwarf2.h.
16367         * config/sh/sh.c: Include elf/dwarf2.h.
16368         * config/i386/i386.c: Include elf/dwarf2.h.
16369
16370 2009-06-29  DJ Delorie  <dj@redhat.com>
16371
16372         * config/mep/mep.h (CPP_SPEC): Remove __cop macro.
16373
16374         * doc/extend.texi: Add MeP attributes and pragmas.
16375         * doc/invoke.text: Add MeP Options.
16376         * doc/contrib.texi: Add MeP contribution.
16377         * doc/md.texi: Add MeP constraints.
16378         * doc/install.texi: Add MeP target.
16379
16380 2009-06-30  Anatoly Sokolov  <aesok@post.ru>
16381
16382         * target.h (struct gcc_target): Add frame_pointer_required field.
16383         * target-def.h (TARGET_FRAME_POINTER_REQUIRED): New.
16384         (TARGET_INITIALIZER): Use TARGET_FRAME_POINTER_REQUIRED.
16385         * ira.c (setup_eliminable_regset): Use frame_pointer_required target
16386         hook.
16387         * reload1.c (update_eliminables): (Ditto.).
16388         * gcc/system.h (FRAME_POINTER_REQUIRED): Poison.
16389         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
16390         (INITIAL_FRAME_POINTER_OFFSET): (Ditto.).
16391
16392         * config/arc/arc.h (FRAME_POINTER_REQUIRED): Remove macro.
16393
16394         * config/arm/arm.h (FRAME_POINTER_REQUIRED): Remove macro.
16395         * config/arm/arm.c (TARGET_FRAME_POINTER_REQUIRED): Define.
16396         (arm_frame_pointer_required): New function.
16397
16398         * config/avr/avr.h (FRAME_POINTER_REQUIRED): Remove macro.
16399         * config/avr/avr.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
16400         (avr_frame_pointer_required_p): Declare as static.
16401         * config/avr/avr-protos.h (avr_frame_pointer_required_p): Remove.
16402
16403         * config/bfin/bfin.h (FRAME_POINTER_REQUIRED): Remove macro.
16404         * config/bfin/bfin.c (TARGET_FRAME_POINTER_REQUIRED): Define.
16405         (bfin_frame_pointer_required): Make as static, change return type
16406         to bool.
16407         * config/bfin/bfin-protos.h (bfin_frame_pointer_required): Remove.
16408
16409         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Remove macro.
16410         * config/cris/cris.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
16411         (cris_frame_pointer_required): New function.
16412
16413         * config/crx/crx.h (FRAME_POINTER_REQUIRED): Remove macro.
16414
16415         * config/fr30/fr30.h (FRAME_POINTER_REQUIRED): Remove macro.
16416         * config/fr30/fr30.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
16417         (fr30_frame_pointer_required): New function.
16418
16419         * config/frv/frv.h (FRAME_POINTER_REQUIRED): Remove macro.
16420         * config/frv/frv.c (TARGET_FRAME_POINTER_REQUIRED): Define.
16421         (frv_frame_pointer_required): Make as static, change return type
16422         to bool.
16423         * config/bfin/bfin-protos.h (frv_frame_pointer_required): Remove.
16424
16425         * config/i386/i386.h (FRAME_POINTER_REQUIRED): Remove macro.
16426         * config/i386/i386.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
16427         (ix86_frame_pointer_required): Make as static, change return type to
16428         bool.
16429         * config/i386/i386-protos.h (ix86_frame_pointer_required): Remove.
16430
16431         * config/m32c/m32c.h (FRAME_POINTER_REQUIRED): Remove macro.
16432         * config/m32c/m32c.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
16433
16434         * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Remove macro.
16435
16436         * config/mcore/mcore.h (CAN_ELIMINATE): Remove macro.
16437
16438         * config/mep/mep.h (FRAME_POINTER_REQUIRED): Remove macro.
16439
16440         * config/mips/mips.h (FRAME_POINTER_REQUIRED): Remove macro.
16441         * config/mips/mips.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
16442         (mips_frame_pointer_required): Make as static.
16443         * config/mips/mips-protos.h (mips_frame_pointer_required): Remove.
16444
16445         * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Remove macro.
16446         * config/mmix/mmix.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
16447         (mmix_frame_pointer_required): Mew function.
16448
16449         * config/moxie/moxie.h (FRAME_POINTER_REQUIRED): Remove macro.
16450         * config/moxie/moxie.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
16451
16452         * config/pa/pa.h (FRAME_POINTER_REQUIRED): Remove macro.
16453
16454         * config/score/score.h (FRAME_POINTER_REQUIRED): Remove macro.
16455
16456         * config/sh/sh.h (CAN_ELIMINATE): Remove macro.
16457
16458         * config/sparc/sparc.h (FRAME_POINTER_REQUIRED): Remove macro.
16459         (CAN_ELIMINATE): Redefine.
16460         * config/sparc/sparc.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
16461         (sparc_frame_pointer_required): New function.
16462         (sparc_can_eliminate): New function.
16463         * config/sparc/sparc-protos.h (sparc_can_eliminate): Declare.
16464
16465         * config/vax/vax.h (FRAME_POINTER_REQUIRED): Remove macro.
16466         * config/vax/vax.c (TARGET_FRAME_POINTER_REQUIRED): Define.
16467
16468         * config/xtensa/xtensa.h (FRAME_POINTER_REQUIRED): Remove macro.
16469         * config/xtensa/xtensa.c (TARGET_FRAME_POINTER_REQUIRED): Define.
16470         (xtensa_frame_pointer_required): Make as static, change return type
16471         to bool.
16472         * config/xtensa/xtensa-protos.h (xtensa_frame_pointer_required):
16473         Remove.
16474
16475 2009-06-29  Olatunji Ruwase  <tjruwase@google.com>
16476
16477         * doc/plugins.texi: Document PLUGIN_START_UNIT.
16478         * toplev.c (compile_file): Call PLUGIN_START_UNIT.
16479         * gcc-plugin.h (PLUGIN_START_UNIT): Added new event.
16480         * plugin.c (plugin_event_name): Added PLUGIN_START_UNIT.
16481         (register_callback): Handle PLUGIN_START_UNIT.
16482         (invoke_plugin_callbacks): Handle PLUGIN_START_UNIT.
16483
16484 2009-06-29  Eric Botcazou  <ebotcazou@adacore.com>
16485
16486         * tree.c (process_call_operands): Propagate TREE_READONLY from the
16487         operands.
16488         (PROCESS_ARG): Do not clear TREE_READONLY if CONSTANT_CLASS_P.
16489         (build3_stat): Propagate TREE_READONLY for COND_EXPR.
16490
16491 2009-06-29  Daniel Jacobowitz  <dan@codesourcery.com>
16492
16493         * config/arm/arm.h (REGISTER_MOVE_COST): Increase VFP register
16494         move cost.
16495
16496 2009-06-29  Uros Bizjak  <ubizjak@gmail.com>
16497
16498         * doc/extend.texi (Additional Floating Types): __float128 is also
16499         supported on i386 targets.
16500
16501 2009-06-29  Richard Guenther  <rguenther@suse.de>
16502
16503         PR middle-end/14187
16504         * tree-ssa-alias.h (struct pt_solution): Add vars_contains_restrict
16505         flag.
16506         (pt_solutions_same_restrict_base): Declare.
16507         * tree-ssa-structalias.c (struct variable_info): Add is_restrict_var
16508         flag.
16509         (new_var_info): Initialize is_global_var properly for SSA_NAMEs.
16510         (make_constraint_from, make_copy_constraint): Move earlier.
16511         (make_constraint_from_heapvar): New function.
16512         (make_constraint_from_restrict): Likewise.
16513         (handle_lhs_call): Use it.
16514         (find_func_aliases): Use it to track conversions to restrict
16515         qualified pointers.
16516         (struct fieldoff): Add only_restrict_pointers flag.
16517         (push_fields_onto_fieldstack): Initialize it.
16518         (create_variable_info_for): Track global restrict qualified pointers.
16519         (intra_create_variable_infos): Use make_constraint_from_heapvar.
16520         Track restrict qualified pointer arguments.
16521         (set_uids_in_ptset): Use varinfo is_global_var flag.
16522         (find_what_var_points_to): Set the vars_contains_restrict flag.
16523         Always create the points-to solution for sets including restrict tags.
16524         (pt_solutions_same_restrict_base): New function.
16525         * tree-ssa-alias.c (ptr_derefs_may_alias_p): For two restrict
16526         qualified pointers use pt_solutions_same_restrict_base as
16527         additional source for disambiguation.
16528
16529 2009-06-29  Richard Guenther  <rguenther@suse.de>
16530
16531         PR middle-end/38212
16532         * alias.c (find_base_decl): Remove.
16533         (get_deref_alias_set_1): Remove restrict handling.
16534         * c-common.c (c_apply_type_quals_to_decl): Do not set
16535         DECL_POINTER_ALIAS_SET.
16536         * gimplify.c (find_single_pointer_decl_1): Remove.
16537         (find_single_pointer_decl): Likewise.
16538         (internal_get_tmp_var): Remove restrict handling.
16539         (gimple_regimplify_operands): Likewise.
16540         * omp-low.c (expand_omp_atomic_pipeline): Do not set
16541         DECL_POINTER_ALIAS_SET. Use ref-all pointers.
16542         * print-tree.c (print_node): Do not print DECL_POINTER_ALIAS_SET.
16543         * tree.c (restrict_base_for_decl): Remove.
16544         (init_ttree): Do not allocate it.
16545         (make_node_stat): Do not set DECL_POINTER_ALIAS_SET.  Set
16546         LABEL_DECL_UID for label decls.
16547         (copy_node_stat): Do not copy restrict information.
16548         (decl_restrict_base_lookup): Remove.
16549         (decl_restrict_base_insert): Likewise.
16550         (print_restrict_base_statistics): Likewise.
16551         (dump_tree_statistics): Do not call print_restrict_base_statistics.
16552         * tree.h (DECL_POINTER_ALIAS_SET): Remove.
16553         (DECL_POINTER_ALIAS_SET_KNOWN_P): Likewise.
16554         (struct tree_decl_common): Rename pointer_alias_set to label_decl_uid.
16555         (LABEL_DECL_UID): Adjust.
16556         (DECL_BASED_ON_RESTRICT_P): Remove.
16557         (DECL_GET_RESTRICT_BASE): Likewise.
16558         (SET_DECL_RESTRICT_BASE): Likewise.
16559         (struct tree_decl_with_vis): Remove based_on_restrict_p flag.
16560
16561         * config/i386/i386.c (ix86_gimplify_va_arg): Use ref-all pointers
16562         instead of DECL_POINTER_ALIAS_SET.
16563         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
16564         * config/s390/s390.c (s390_gimplify_va_arg): Likewise.
16565         * config/spu/spu.c (spu_gimplify_va_arg_expr): Likewise.
16566
16567 2009-06-29  Richard Guenther  <rguenther@suse.de>
16568
16569         PR tree-optimization/40579
16570         * tree-vrp.c (vrp_evaluate_conditional): Bail out early if
16571         the IL to simplify has constants that overflowed.
16572
16573 2009-06-28  Uros Bizjak  <ubizjak@gmail.com>
16574
16575         PR tree-optimization/40550
16576         * tree-vect-generic.c (expand_vector_operations_1): Compute in
16577         vector_compute_type only when the size of vector_compute_type is
16578         less than the size of type.
16579
16580 2009-06-28  Eric Botcazou  <ebotcazou@adacore.com>
16581
16582         * fold-const.c (contains_label_1): Fix comments.
16583         (contains_label_p): Do not walk trees multiple time.
16584
16585 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
16586
16587         * config/i386/i386.h (enum ix86_fpcmp_strategy): New.
16588         * config/i386/i386.md (cbranchxf4, cstorexf4, cbranch<MODEF>4,
16589         cstore<MODEF>4, mov<X87MODEF>cc): Change predicate to
16590         ix86_fp_comparison_operator.
16591         (*fp_jcc_1_mixed, *fp_jcc_1_sse, *fp_jcc_1_387, *fp_jcc_2_mixed,
16592         *fp_jcc_2_sse, *fp_jcc_2_387): Delete
16593         (*fp_jcc_3_387, *fp_jcc_4_387, *fp_jcc_5_387, *fp_jcc_6_387,
16594         *fp_jcc_7_387, *fp_jcc_8<MODEF>_387): Eliminate call to
16595         !ix86_use_fcomi_compare, change ix86_fp_jump_nontrivial_p call
16596         to !TARGET_CMOVE, change predicate to ix86_fp_comparison_operator.
16597         (related splits): Change predicate to ix86_fp_comparison_operator.
16598         * config/i386/predicates.md: Use ix86_trivial_fp_comparison_operator
16599         instead of ix86_fp_comparison_codes.
16600         (ix86_trivial_fp_comparison_operator,
16601         ix86_fp_comparison_operator): New.
16602         * config/i386/i386-protos.h (ix86_fp_comparison_strategy): New.
16603         (ix86_expand_compare): Eliminate last two parameters.
16604         (ix86_fp_jump_nontrivial_p): Kill.
16605         * config/i386/i386.c (put_condition_code): Eliminate call to
16606         ix86_fp_comparison_codes and subsequent assertion.
16607         (ix86_fp_comparison_codes): Eliminate.
16608         (ix86_fp_swap_condition): New.
16609         (ix86_fp_comparison_arithmetics_cost, ix86_fp_comparison_fcomi_cost,
16610         ix86_fp_comparison_sahf_cost, ix86_use_fcomi_compare): Consolidate
16611         into ix86_fp_comparison_cost and ix86_fp_comparison_strategy.
16612         (ix86_prepare_fp_compare_args): Use ix86_fp_comparison_strategy
16613         and ix86_fp_swap_condition.
16614         (ix86_expand_fp_compare): Eliminate code for second jump/bypass jump.
16615         Use ix86_fp_comparison_strategy.
16616         (ix86_expand_compare): Likewise.  Eliminate last two arguments.
16617         (ix86_fp_jump_nontrivial_p): Eliminate.
16618         (ix86_expand_branch): Treat SFmode/DFmode/XFmode as simple.  Adjust
16619         call to ix86_expand_compare.
16620         (ix86_split_fp_branch, ix86_expand_setcc,
16621         ix86_expand_carry_flag_compare, ix86_expand_int_movcc,
16622         ix86_expand_fp_movcc): Eliminate code for second jump/bypass jump.
16623
16624 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
16625
16626         * config/arm/arm.c (arm_final_prescan_ins): Eliminate code
16627         related to jump_clobbers.
16628         * config/arm/arm.md (conds): Remove jump_clob case.
16629         (addsi3_cbranch, addsi3_cbranch_scratch, subsi3_cbranch, two
16630         splits): Change comparison_operator to arm_comparison_operator.
16631         (*arm_buneq, *arm_bltgt, *arm_buneq_reversed, *arm_bltgt_reversed):
16632         Eliminate.
16633
16634 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
16635
16636         * dojump.c (do_compare_rtx_and_jump): Try swapping the
16637         condition for floating point modes.
16638         * expmed.c (emit_store_flag_1): Move here a bigger part
16639         of emit_store_flag.
16640         (emit_store_flag): Try swapping the condition for floating point
16641         modes.
16642         * optabs.c (emit_cmp_and_jump_insns): Cope with constant op0 better.
16643
16644 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
16645
16646         * expr.c (expand_expr_real_1): Just use do_store_flag.
16647         (do_store_flag): Drop support for TRUTH_NOT_EXPR.  Use
16648         emit_store_flag_force.
16649         * expmed.c (emit_store_flag_force): Copy here trick
16650         previously in expand_expr_real_1.  Try reversing the comparison.
16651         (emit_store_flag_1): Work if target is NULL.
16652         (emit_store_flag): Work if target is NULL, using the result mode
16653         from the comparison.  Use split_comparison, restructure final part
16654         to simplify conditionals.
16655
16656 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
16657
16658         * builtins.c (expand_errno_check): Use do_compare_rtx_and_jump.
16659         * dojump.c (do_jump): Change handling of floating-point
16660         ops to use just do_compare_and_jump.
16661         (split_comparison): New.
16662         (do_compare_rtx_and_jump): Add here logic coming previously
16663         in do_jump, using split_comparison.
16664
16665 2009-06-27  H.J. Lu  <hongjiu.lu@intel.com>
16666
16667         PR target/40489
16668         * config/ia64/ia64.c (ia64_reorg): Check NULL insn.
16669
16670 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
16671
16672         * tree-ssa-alias.c: Fix unintentional commit.
16673
16674 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
16675
16676         * passes.c (execute_one_pass): Fix unintentional commit.
16677
16678 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
16679
16680         * df-problems.c (df_set_seen, df_unset_seen): Delete.
16681         (df_rd_local_compute, df_md_local_compute): Inline them.
16682
16683         (df_md_scratch): New.
16684         (df_md_alloc, df_md_free): Allocate/free it.
16685         (df_md_local_compute): Only include live registers in init.
16686         (df_md_transfer_function): Prune the in-set computed by
16687         the confluence function, and the gen-set too.
16688
16689 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
16690
16691         PR rtl-optimization/26854
16692         * timevar.def: Remove TV_DF_RU, add TV_DF_MD.
16693         * df-problems.c (df_rd_add_problem): Fix comment.
16694         (df_md_set_bb_info, df_md_free_bb_info, df_md_alloc,
16695         df_md_simulate_artificial_defs_at_top,
16696         df_md_simulate_one_insn, df_md_bb_local_compute_process_def,
16697         df_md_bb_local_compute, df_md_local_compute, df_md_reset,
16698         df_md_transfer_function, df_md_init, df_md_confluence_0,
16699         df_md_confluence_n, df_md_free, df_md_top_dump, df_md_bottom_dump,
16700         problem_MD, df_md_add_problem): New.
16701         * df.h (DF_MD, DF_MD_BB_INFO, struct df_md_bb_info, df_md,
16702         df_md_get_bb_info): New.
16703         (DF_LAST_PROBLEM_PLUS1): Adjust.
16704
16705         * Makefile.in (fwprop.o): Include domwalk.h.
16706         * fwprop.c: Include domwalk.h.
16707         (reg_defs, reg_defs_stack): New.
16708         (bitmap_only_bit_between): Remove.
16709         (process_defs): New.
16710         (process_uses): Use reg_defs and local_md instead of
16711         bitmap_only_bit_between and local_rd.
16712         (single_def_use_enter_block): New, from build_single_def_use_links.
16713         (single_def_use_leave_block): New.
16714         (build_single_def_use_links): Remove code moved to
16715         single_def_use_enter_block, invoke domwalk.
16716         (use_killed_between): Adjust comment.
16717
16718 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
16719
16720         * bitmap.h (bitmap_ior_and_into): New.
16721         * bitmap.c (bitmap_ior_and_into): New.
16722
16723 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
16724
16725         * domwalk.h (struct dom_walk_data): Remove all callbacks except
16726         before_dom_children_before_stmts and after_dom_children_after_stmts.
16727         Rename the two remaining callbacks to just before_dom_children and
16728         after_dom_children. Remove other GIMPLE statement walking bits.
16729         * domwalk.c (walk_dominator_tree): Remove now unsupported features.
16730         * graphite.c: Do not include domwalk.h.
16731         * tree-into-ssa.c (interesting_blocks): New global.
16732         (struct mark_def_sites_global_data): Remove it and names_to_rename.
16733         (mark_def_sites, rewrite_stmt, rewrite_add_phi_arguments,
16734         rewrite_update_stmt, rewrite_update_phi_arguments): Simplify
16735         now that they're not domwalk callbacks.
16736         (rewrite_initialize_block): Rename to...
16737         (rewrite_enter_block): ... this, place after called functions.  Test
16738         interesting_blocks, call rewrite_stmt and rewrite_add_phi_arguments.
16739         (rewrite_finalize_block): Rename to...
16740         (rewrite_leave_block): ... this, place after called functions.
16741         (rewrite_update_init_block): Rename to...
16742         (rewrite_update_enter_block): ... this, place after called functions.
16743         Test interesting_blocks, call rewrite_update_stmt and
16744         rewrite_update_phi_arguments.
16745         (rewrite_update_fini_block): Rename to...
16746         (rewrite_leave_block): ... this, place after called functions.
16747         (rewrite_blocks): Remove last argument, simplify initialization of
16748         walk_data.
16749         (mark_def_sites_initialize_block): Rename to...
16750         (mark_def_sites_block): ... this, call mark_def_sites.
16751         (mark_def_sites_blocks): Remove argument, simplify initialization of
16752         walk_data.
16753         (rewrite_into_ssa): Adjust for interesting_blocks_being a global.
16754         (update_ssa): Likewise.
16755         * tree-ssa-dom.c (optimize_stmt): Simplify now that it's not a domwalk
16756         callback.
16757         (tree_ssa_dominator_optimize): Simplify initialization of walk_data.
16758         (dom_opt_initialize_block): Rename to...
16759         (dom_opt_enter_block): ... this, place after called functions.  Walk
16760         statements here, inline propagate_to_outgoing_edges.
16761         (dom_opt_finalize_block): Rename to...
16762         (dom_opt_leave_block): ... this, place after called functions.
16763         * tree-ssa-dse.c (dse_optimize_stmt): Simplify now that it's not a
16764         domwalk callback.
16765         (dse_enter_block, dse_record_phi): New.
16766         (dse_record_phis): Delete.
16767         (dse_finalize_block): Rename to...
16768         (dse_leave_block): ... this.
16769         (tree_ssa_dse): Simplify initialization of walk_data.
16770         * tree-ssa-loop-im.c (determine_invariantness, move_computations):
16771         Adjust initialization of walk_data.
16772         * tree-ssa-loop-unswitch.c: Do not include domwalk.h.
16773         * tree-ssa-loop-phiopt.c (get_non_trapping):
16774         Adjust initialization of walk_data.
16775         * tree-ssa-loop-threadedge.c: Do not include domwalk.h.
16776         * tree-ssa-uncprop.c (uncprop_into_successor_phis): Simplify now that
16777         it's not a domwalk callback.
16778         (uncprop_initialize_block): Rename to...
16779         (dse_enter_block): ... this, call uncprop_into_successor_phis.
16780         (dse_finalize_block): Rename to...
16781         (dse_leave_block): ... this.
16782         (tree_ssa_uncprop): Simplify initialization of walk_data.
16783         * Makefile.in: Adjust dependencies.
16784
16785 2009-06-27  Richard Earnshaw  <rearnsha@arm.com>
16786
16787         * arm.md (casesi): Fix test for Thumb1.
16788         (thumb1_casesi_internal_pic): Likewise.
16789         (thumb1_casesi_dispatch): Likewise.
16790
16791 2009-06-26  Daniel Gutson  <dgutson@codesourcery.com>
16792
16793         * config/arm/arm-cores.def: Added core cortex-m0.
16794         * config/arm/arm-tune.md: Regenerated.
16795         * doc/invoke.texi: Added entry for cpu ARM Cortex-M0.
16796
16797 2009-06-26  DJ Delorie  <dj@redhat.com>
16798
16799         * config/mep/mep.opt (mfar): Remove -mfar as it doesn't do anything.
16800
16801         * config/mep/mep.c (mep_bundle_insns): Account for the fact that
16802         the scheduler doesn't tag jump insns.
16803
16804 2009-06-26  H.J. Lu  <hongjiu.lu@intel.com>
16805
16806         * c-decl.c (merge_decls): Re-indent.
16807
16808 2009-06-26  Janis Johnson  <janis187@us.ibm.com>
16809
16810         PR c/39902
16811         * tree.c (real_zerop, real_onep, real_twop, real_minus_onep):
16812         Special-case decimal float constants.
16813
16814 2009-06-26  Richard Henderson  <rth@redhat.com>
16815
16816         * function.h (struct function): Add cannot_be_copied_reason,
16817         and cannot_be_copied_set.
16818         * tree-inline.c (has_label_address_in_static_1): Rename from
16819         inline_forbidden_p_2; don't set inline_forbidden_reason here.
16820         (cannot_copy_type_1): Rename from inline_forbidden_p_op; likewise
16821         don't set inline_forbidden_reason.
16822         (copy_forbidden): New function, split out of inline_forbidden_p.
16823         (inline_forbidden_p_stmt): Don't check for nonlocal labels here.
16824         (inline_forbidden_p): Use copy_forbidden.
16825         (tree_versionable_function_p): Likewise.
16826         (inlinable_function_p): Merge into tree_inlinable_function_p.
16827         (tree_function_versioning): Remap cfun->nonlocal_goto_save_area.
16828         * ipa-cp.c (ipcp_versionable_function_p): New function.
16829         (ipcp_cloning_candidate_p): Use it.
16830         (ipcp_node_modifiable_p): Likewise.
16831
16832 2009-06-26  Olatunji Ruwase  <tjruwase@google.com>
16833
16834         * builtins.c (expand_builtin_alloca): Handle builtin alloca
16835         that is marked not to be inlined. Remove flag_mudflap use.
16836         * tree-mudflap.c: Rename mf_xform_derefs to mf_xfrom_statements.
16837         (mf_xform_statements): Mark builtin alloca calls as un-inlineable.
16838
16839 2009-06-26  Steve Ellcey  <sje@cup.hp.com>
16840
16841         PR bootstrap/40338
16842         * config/pa/t-pa-hpux10 (TARGET_LIBGCC2_CFLAGS): Add -frandom-seed.
16843         * config/pa/t-pa-hpux11 (TARGET_LIBGCC2_CFLAGS): Ditto.
16844
16845 2009-06-26  Kai Tietz  <kai.tietz@onevision.com>
16846
16847         * config/i386/mingw-tls.c (__mingwthr_key_dtor): Remove for none
16848         shared libgcc.
16849         (__mingwthr_remove_key_dtor): Likewise.
16850
16851 2009-06-26  Richard Guenther  <rguenther@suse.de>
16852
16853         * tree-ssa-structalias.c (do_ds_constraint): Simplify escape handling.
16854
16855 2009-06-26  Steven Bosscher  <steven@gcc.gnu.org>
16856
16857         PR middle-end/40525
16858         * ifcvt.c (dead_or_predicable): If predicating MERGE_BB fails,
16859         try the non-cond_exec path also.
16860
16861 2009-06-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
16862
16863         PR target/40468
16864         * pa.c (branch_to_delay_slot_p, branch_needs_nop_p): New functions.
16865         (output_cbranch): Use new functions.
16866         (output_lbranch, output_bb, output_bvb, output_dbra, output_movb):
16867         Likewise.
16868
16869 2009-06-25  Michael Meissner  <meissner@linux.vnet.ibm.com>
16870             Pat Haugen  <pthaugen@us.ibm.com>
16871             Revital Eres <ERES@il.ibm.com>
16872
16873         * config/rs6000/rs6000.c (print_operand): Correct lossage message
16874         for %c error.  Add %x support to print VSX registers as a unified
16875         register set, instead of separate float and altivec registers.
16876         Switch to use VECTOR_MEM_ALTIVEC_P instead of TARGET_ALTIVEC for
16877         %y case, and add support for VSX pre-modify addresses.
16878         (output_toc): Add assert for CONST containing an integer constant
16879         in the PLUS case.
16880         (rs6000_adjust_cost): Add POWER7 support.
16881         (insn_must_be_first_in_group): Ditto.
16882         (insn_must_be_last_in_group): Ditto.
16883         (rs6000_emit_popcount): Ditto.
16884         (rs6000_vector_mode_supported_p): Ditto.
16885
16886         * config/rs6000/rs6000-protos.h (rs6000_secondary_reload_class):
16887         Change some of the functions called by macros to being called
16888         through a pointer, so debug functions can be inserted if
16889         -mdebug=addr or -mdebug=cost.
16890         (rs6000_preferred_reload_class_ptr): Ditto.
16891         (rs6000_secondary_reload_class_ptr): Ditto.
16892         (rs6000_secondary_memory_needed_ptr): Ditto.
16893         (rs6000_cannot_change_mode_class_ptr): Ditto.
16894         (rs6000_secondary_reload_inner): Ditto.
16895         (rs6000_legitimize_reload_address): Ditto.
16896         (rs6000_legitimize_reload_address_ptr): Ditto.
16897         (rs6000_mode_dependent_address): Ditto.
16898         (rs6000_mode_dependent_address_ptr): Ditto.
16899
16900         * config/rs6000/rs6000.c (reg_offset_addressing_ok_p): New
16901         function to return true if the mode allows reg + integer
16902         addresses.
16903         (virtual_stack_registers_memory_p): New function to return true if
16904         the address refers to a virtual stack register.
16905         (rs6000_legitimate_offset_address_p): Move code to say whether a
16906         mode supports reg+int addressing to reg_offset_addressing_ok_p and
16907         call it.
16908         (rs6000_legitimate_address_p): Add checks for modes that only can
16909         do reg+reg addressing.  Start adding VSX support.
16910         (rs6000_legitimize_reload_address): Ditto.
16911         (rs6000_legitimize_address): Ditto.
16912         (rs6000_debug_legitimate_address_p): New debug functions for
16913         -mdebug=addr and -mdebug=cost.
16914         (rs6000_debug_rtx_costs): Ditto.
16915         (rs6000_debug_address_costs): Ditto.
16916         (rs6000_debug_adjust_cost): Ditto.
16917         (rs6000_debug_legitimize_address): Ditto.
16918         (rs6000_legitimize_reload_address_ptr): Point to call normal
16919         function or debug function.  Make functions called via pointer
16920         static.
16921         (rs6000_mode_dependent_address_ptr): Ditto.
16922         (rs6000_secondary_reload_class_ptr): Ditto.
16923         (rs6000_hard_regno_mode_ok): Add preliminary VSX support.
16924         (rs6000_emit_move): Add -mdebug=addr support.  Change an abort
16925         into a friendlier error.
16926         (rs6000_init_builtins): Add initial VSX support.
16927         (rs6000_adjust_cost): Fix some spacing issues.
16928
16929         * config/rs6000/rs6000.h (enum reg_class): Add VSX_REGS.
16930         (REG_CLASS_NAMES): Ditto.
16931         (REG_CLASS_CONTENTS): Ditto.
16932         (PREFERRED_RELOAD_CLASS): Move from a macro to calling through a
16933         pointer, to add -mdebug=addr support.
16934         (CANNOT_CHANGE_MODE_CLASS): Ditto.
16935         (SECONDARY_RELOAD_CLASS): Call through a pointer to add
16936         -mdebug=addr support.
16937         (LEGITIMIZE_RELOAD_ADDRESS): Ditto.
16938         (GO_IF_MODE_DEPENDENT_ADDRESS): Ditto.
16939         (enum rs6000_builtins): Add RS6000_BUILTIN_BSWAP_HI.
16940
16941         * config/rs6000/rs6000.md (bswaphi*): Add support for swapping
16942         16-bit values.
16943         (bswapsi*): Set attribute types for load/store.  Add combiner
16944         patterns to eliminate zero extend on 64-bit.
16945         (bswapdi*): Add support for swapping 64-bit values.  Use ldbrx and
16946         stdbrx if the hardware supports those instructions.
16947
16948 2009-06-25  Ian Lance Taylor  <iant@google.com>
16949
16950         * doc/invoke.texi (Option Summary): Mention -static-libstdc++.
16951         (Link Options): Document -static-libstdc++.
16952
16953 2009-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16954
16955         PR target/38731
16956         * config/rs6000/rs6000.c (LOCAL_ALIGNMENT): Redefine to just use
16957         DATA_ALIGNMENT instead.
16958
16959 2009-06-25  Richard Guenther  <rguenther@suse.de>
16960
16961         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Disambiguate
16962         indirect references against the callused/escaped solutions.
16963         (call_may_clobber_ref_p_1): Likewise.
16964
16965 2009-06-25  Martin Jambor  <mjambor@suse.cz>
16966
16967         PR tree-optimization/40493
16968         * tree-sra.c (sra_modify_expr): Correct BIT_FIELD_REF argument numbers.
16969         (enum unscalarized_data_handling): New type.
16970         (handle_unscalarized_data_in_subtree): Return what has been done.
16971         (load_assign_lhs_subreplacements): Handle left flushes differently.
16972         (sra_modify_assign): Use unscalarized_data_handling, simplified
16973         condition determining whether to remove the statement.
16974
16975 2009-06-25  Basile Starynkevitch  <basile@starynkevitch.net>
16976
16977         * doc/plugins.texi (Building GCC plugins): Correct typo in Makefile
16978         excerpt - @ should be doubled for texinfo.
16979
16980 2009-06-24  Ian Lance Taylor  <iant@google.com>
16981
16982         * config/arc/arc.c: Include "df.h".
16983         (arc_attribute_table): Make static.  Move higher in file.
16984         (arc_address_cost): Call SMALL_INT on INTVAL, not rtx.
16985         (output_shift): Initialize n later to avoid warning.
16986         * config/arm/arm.c (arm_attribute_table): Make static.  Move
16987         higher in file.
16988         * config/avr/avr.c (avr_attribute_table): Make static.  Move
16989         higher in file.
16990         (reg_class_tab): Change array type from int to enum reg_class.
16991         (avr_jump_mode): Change GET_MODE to GET_CODE when checking for
16992         LABEL_REF.
16993         (out_tsthi, ashlhi3_out): Don't use AS2 with "or" or "and".
16994         (lshrhi3_out): Likewise.
16995         (class_likely_spilled_p): Change return type to bool.
16996         (avr_rtx_costs): Use local code variable with enum type.
16997         * config/avr/avr.md (movmemhi): Use add_reg_note.
16998         (andhi3, andsi3): Don't use AS2 with "and".
16999         (iorhi3, iorsi3): Don't use AS2 with "or".
17000         * config/avr/avr-protos.h (class_likely_spilled_p): Update declaration.
17001         * config/crx/crx.c: Include "df.h".
17002         (crx_attribute_table): Make static.
17003         * config/m32r/m32r.c: Include "df.h".
17004         (m32r_attribute_table): Make static.  Move higher in file.
17005         (pop): Use add_reg_note.
17006         (block_move_call): Change 0 to LCT_NORMAL in function call.
17007         * config/m32r/m32r.md (movsi_insn): Remove unused local value.
17008         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Likewise.
17009         * config/m32r/m32r-protos.h (m32r_compute_function_type): Always
17010         declare, not just when TREE_CODE is defined.
17011         * config/m68hc11/m68hc11.c: Include "expr.h".
17012         (m68hc11_attribute_table): Make static.  Move higher in file.
17013         (m68hc11_small_indexed_indirect_p): Change 0 to VOIDmode in
17014         function call.
17015         (m68hc11_register_indirect_p): Likewise.
17016         (m68hc11_function_arg_padding): Change return type to enum
17017         direction.
17018         (emit_move_after_reload): Use add_reg_note.
17019         (m68hc11_emit_logical): Change code parameter to enum rtx_code.
17020         (m68hc11_split_logical): Likewise.
17021         (m68hc11_rtx_costs): Add local code_and outer_code variables with
17022         enum type.
17023         * config/m68hc11/predicates.md (reg_or_some_mem_operand): Change 0
17024         to VOIDmode in function call.
17025         * config/m68hc11/m68hc11-protos.h: Don't check TREE_CODE to see if
17026         tree is defined.
17027         (m68hc11_split_logical): Update declaration.
17028         (m68hc11_function_arg_padding): Update declaration.
17029         * config/mcore/mcore.c (regno_reg_class): Change form array of int
17030         to array of enum reg_class.
17031         (mcore_attribute_table): Make static.  Move higher in file.
17032         (mcore_rtx_costs): Add cast to enum type.
17033         * config/mcore/mcore.h (regno_reg_class): Update declaration.
17034         (GO_IF_LEGITIMATE_INDEX): Add cast to avoid warning.
17035         * config/sh/sh.c (sh_attribute_table): Make static.  Move higher
17036         in file.
17037         * config/sh/predicates.md (trapping_target_operand): Rename and to
17038         and_expr.
17039         * config/sparc/sparc.c (sparc_attribute_table): Make static.  Move
17040         higher in file.
17041         * config/spu/spu.c (spu_attribute_table): Make static.  Move
17042         higher in file.
17043         * config/v850/v850.c (v850_attribute_table): Make static.  Move
17044         higher in file.
17045         (v850_rtx_costs): Use local code with enum type.
17046         (expand_epilogue): Add cast.
17047         * config/v850/v850-c.c (ghs_pragma_section): Initialize repeat.
17048
17049 2009-06-23  Takashi YOSHII  <yoshii.takashi@renesas.com>
17050
17051         PR target/40515
17052         * doc/invoke.texi (SH Options): Document -m2a, -m2a-single,
17053         -m2a-single-only and -m2a-nofpu.
17054         * config/sh/sh.opt: Document m2a generates FPU code.
17055
17056 2009-06-24  Anatoly Sokolov  <aesok@post.ru>
17057
17058         * defaults.h (CAN_ELIMINATE): Provide default.
17059         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
17060         * config/alpha/alpha.h (CAN_ELIMINATE): Delete.
17061         * config/m32c/m32c.h (CAN_ELIMINATE): Delete.
17062         * config/spu/spu.h (CAN_ELIMINATE): Delete.
17063         * config/xtensa/xtensa.h (CAN_ELIMINATE): Delete.
17064         * config/moxie/moxie.h (CAN_ELIMINATE): Delete.
17065         * config/cris/cris.h (CAN_ELIMINATE): Delete.
17066         * config/mn10300/mn10300.h (CAN_ELIMINATE): Delete.
17067         * config/pa/pa64-linux.h (CAN_ELIMINATE): Delete.
17068         * config/mmix/mmix.h (CAN_ELIMINATE): Delete.
17069
17070 2009-06-24  DJ Delorie  <dj@redhat.com>
17071
17072         * mep-ext-cop.cpu: Fix copyright notice.
17073         * mep-default: Fix copyright notice.
17074         * mep-core: Fix copyright notice.
17075         * mep: Fix copyright notice.
17076         * mep-ivc2: Fix copyright notice.
17077         * mep-c5: Fix copyright notice.
17078
17079 2009-06-24  Denis Chertykov  <chertykov@gmail.com>
17080
17081         * doc/contrib.texi (Contributors):
17082
17083 2009-06-24  Andreas Krebbel  <krebbel1@de.ibm.com>
17084
17085         PR middle-end/40501
17086         * tree-ssa-math-opts.c (execute_optimize_bswap): Convert the bswap
17087         src and dst operands if necessary.
17088
17089 2009-06-23  DJ Delorie  <dj@redhat.com>
17090
17091         Add MeP port.
17092         * config.gcc: Add mep support.
17093         * recog.c: Resurrect validate_replace_rtx_subexp().
17094         * recog.h: Likewise.
17095         * config/mep/: Add new port:
17096         * config/mep/constraints.md: New file.
17097         * config/mep/default.h: New file.
17098         * config/mep/intrinsics.h: New file.
17099         * config/mep/intrinsics.md: New file.
17100         * config/mep/ivc2-template.h: New file.
17101         * config/mep/mep-c5.cpu: New file.
17102         * config/mep/mep-core.cpu: New file.
17103         * config/mep/mep-default.cpu: New file.
17104         * config/mep/mep-ext-cop.cpu: New file.
17105         * config/mep/mep-intrin.h: New file.
17106         * config/mep/mep-ivc2.cpu: New file.
17107         * config/mep/mep-lib1.asm: New file.
17108         * config/mep/mep-lib2.c: New file.
17109         * config/mep/mep-pragma.c: New file.
17110         * config/mep/mep-protos.h: New file.
17111         * config/mep/mep-tramp.c: New file.
17112         * config/mep/mep.c: New file.
17113         * config/mep/mep.cpu: New file.
17114         * config/mep/mep.h: New file.
17115         * config/mep/mep.md: New file.
17116         * config/mep/mep.opt: New file.
17117         * config/mep/predicates.md: New file.
17118         * config/mep/t-mep: New file.
17119
17120 2009-06-23  Ian Lance Taylor  <iant@google.com>
17121
17122         * configure.ac: Invoke AC_PROG_CXX.  Separate C specific warnings
17123         from loose_warn into c_loose_warn and from strict_warn into
17124         c_strict_warn.  Set and substitute warn_cxxflags.  Check for
17125         --enable-build-with-cxx.  Set and substitute
17126         ENABLE_BUILD_WITH_CXX.  Set and substitute HOST_LIBS.
17127         * Makefile.in (CXXFLAGS): New variable.
17128         (C_LOOSE_WARN, C_STRICT_WARN): New variables.
17129         (GCC_WARN_CFLAGS): Add $(C_LOOSE_WARN).  Add $(C_STRICT_WARN) if
17130         the default is the same as $(STRICT_WARN).
17131         (GCC_WARN_CXXFLAGS, WARN_CXXFLAGS): New variables.
17132         (CXX): New variable.
17133         (COMPILER): New value if ENABLE_BUILD_WITH_CXX.
17134         (COMPILER_FLAGS, LINKER, LINKER_FLAGS): Likewise.
17135         (ALL_COMPILERFLAGS, ALL_LINKERFLAGS): Likewise.
17136         (HOST_LIBS): New variable.
17137         (GCC_CFLAGS): Add $(C_LOOSE_WARN).
17138         (ALL_CXXFLAGS): New variable.
17139         (LIBS, BACKENDLIBS): Add $(HOST_LIBS).
17140         * doc/install.texi (Configuration): Document
17141         --enable-build-with-cxx, --with-stage1-ldflags,
17142         --with-stage1-libs, --with-boot-ldflags, --with-boot-libs.
17143         * configure: Rebuild.
17144
17145 2009-06-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
17146
17147         * config/arm/arm.c (arm_override_options): Fix braces and formatting
17148         from previous commit.
17149
17150 2009-06-23  Ian Lance Taylor  <iant@google.com>
17151
17152         * Makefile.in ($(out_object_file)): Depend upon $(DF_H).
17153
17154 2009-06-23  Ian Lance Taylor  <iant@google.com>
17155
17156         * reload.c (alternative_allows_const_pool_ref): Mark mem parameter
17157         with ATTRIBUTE_UNUSED.
17158
17159 2009-06-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
17160             Pat Haugen  <pthaugen@us.ibm.com>
17161             Revital Eres  <eres@il.ibm.com>
17162
17163         * config.in (HAVE_AS_POPCNTD): Add default definition.
17164         (HAVE_AS_LWSYNC): Ditto.
17165
17166         * configure.ac (gcc_cv_as_powerpc_mfpgpr): Provide real binutils
17167         release number.
17168         (gcc_cv_as_powerpc_cmpb): Ditto.
17169         (gcc_cv_as_powerpc_dfp): Ditto.
17170         (gcc_cv_as_powerpc_vsx): Ditto.
17171         (gcc_cv_as_powerpc_popcntd): Add feature test for assembler
17172         supporting the popcntd/lwsync instructions.
17173         (gcc_cv_as_powerpc_lwsync): Ditto.
17174         * configure: Regenerate.
17175
17176         * config/rs6000/aix53.h (ASM_CPU_SPEC): Add support for
17177         -mcpu=native and -mcpu=power7.
17178         * config/rs6000/aix61.h (ASM_CPU_SPEC): Ditto.
17179
17180         * config/rs6000/linux64.opt (-mprofile-kernel): Move switch to be
17181         a variable instead of a mask to reduce the number of mask bits.
17182         * config/rs6000/sysv4.opt (-mbit-align): Ditto.
17183         (-mbit-word): Ditto.
17184         (-mregnames): Ditto.
17185         * config/rs6000/rs6000.opt (-mupdate): Ditto.
17186         (-mfused-madd): Ditto.
17187
17188         * config/rs6000/rs6000.opt (-mpopcntd): New switch for non-VSX ISA
17189         2.06 instructions.
17190         (-mvsx): New switch for VSX instructions.
17191         (-misel): Move from a variable to a mask to allow it to be set by
17192         -mcpu=.
17193
17194         * config/rs6000/rs6000-protos.h (rs6000_hard_regno_nregs): Change
17195         function declaration to an array declaration.
17196         (rs6000_hard_regno_nregs): New external array declaration.
17197
17198         * config/rs6000/t-rs6000 (MD_INCLUDES): Define, add all of the .md
17199         files included by rs6000.md.
17200
17201         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Use
17202         SET_PROFILE_KERNEL macro to reset the -mprofile-kernel switch.
17203
17204         * config/rs6000/rs6000.c (rs6000_isel): Delete, -misel moved to be
17205         a target mask.
17206         (rs6000_debug_reg): New -mdebug= variables.
17207         (rs6000_debug_addr): Ditto.
17208         (rs6000_debug_cost): Ditto.
17209         (rs6000_pmode): New variable to hold Pmode.
17210         (rs6000_pointer_size): New variable to hold POINTER_SIZE.
17211         (rs6000_class_max_nregs): New array to hold CLASS_MAX_NREGS
17212         calculated at compiler start.
17213         (rs6000_hard_regno_nregs): Change function to an array which holds
17214         HARD_REGNO_NREGS calculated at compiler start.
17215         (rs6000_explicit_options): Delete isel field.
17216         (rs6000_vector_unit): New array to hold which vector unit
17217         supports arithmetic options for a given type.
17218         (rs6000_vector_mem): New array to hold which vector unit supports
17219         memory reference operations for a given type.
17220         (rs6000_vector_align): New array to given the alignment of each
17221         vector type.
17222         (power7_cost): New basic costs for power7.
17223         (SET_PROFILE_KERNEL): New macro for resetting -mprofile-kernel.
17224         (rs6000_hard_regno_nregs_internal): New function, moved from
17225         HARD_REGNO_NREGS, to calculate the number of registers each hard
17226         register takes for each type.
17227         (rs6000_debug_reg_print): New function for -mdebug=reg support.
17228         (rs6000_debug_vector_unit): New array, map rs6000_vector to string.
17229         (+rs6000_init_hard_regno_mode_ok): New function, move calculation
17230         of HARD_REGNO_NREGS, CLASS_MAX_NREGS, REGNO_REG_CLASS, and vector
17231         unit information here so it is calculated once at compiler startup
17232         time.
17233         (rs6000_override_options): Make -misel a target mask.  Add more
17234         power7 target masks.  Setup Pmode and POINTER_SIZE.  Add initial
17235         VSX support.  Add support for -mdebug=reg, -mdebug=addr, and
17236         -mdebug=cost.
17237         (POWERPC_MASKS): Add MASK_POPCNTD, MASK_VSX, and MASK_ISEL.
17238         (rs6000_handle_option): Move -misel from variable to target mask.
17239         (rs6000_builtin_mask_for_load): Add VSX support.
17240         (rs6000_conditional_register_usage): Ditto.
17241         (USE_ALTIVEC_FOR_ARG_P): Ditto.
17242         (function_arg_boundary): Ditto.
17243         (rs6000_expand_builtin): Ditto.
17244         (def_builtin): Make abort message a little friendlier.
17245         (rs6000_emit_int_cmove): Add support for 64-bit isel.
17246
17247         * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Depend on the
17248         assembler support the popcntd instruction instead of a vsx
17249         instruction to enable power7 support.
17250         (ASM_CPU_SPEC): Add support for -mcpu=native and -mcpu=power7.
17251         (EXTRA_SPECS): Add ASM_CPU_NATIVE_SPEC to allow passing the right
17252         option to the assembler if -mcpu=native.
17253         (ASM_CPU_NATIVE_SPEC): Ditto.
17254         (TARGET_POPCNTD): If assembler doesn't support popcntd, turn off
17255         ISA 2.06 features.
17256         (TARGET_LWSYNC_INSTRUCTION): Define whether it is safe to issue
17257         the lwsync instruction.
17258         (enum processor_type): Add PROCESSOR_POWER7.
17259         (rs6000_debug_reg): New -mdebug= options.
17260         (rs6000_debug_addr): Ditto.
17261         (rs6000_debug_cost): Ditto.
17262         (rs6000_isel): Delete.
17263         (enum rs6000_vector): New enum to say what vector unit we have.
17264         (VECTOR_UNIT_*): New macros to say which vector unit has
17265         arithmetic operations for a given type.
17266         (VECTOR_MEM_*): New macros to say which vector unit has memory
17267         operations for a given type.
17268         (TARGET_LDBRX): Whether the machine supports the ldbrx
17269         instruction.
17270         (TARGET_ISEL): Delete, -misel moved to be a mask.
17271         (TARGET_ISEL64): New macro for 64-bit isel support.
17272         (UNITS_PER_VSX_WORD): New macro.
17273         (POINTER_SIZE): Move to be an external variable, rather than
17274         calculating whether we are generating 32 ot 64-bit code.
17275         (Pmode): Ditto.
17276         (STACK_BOUNDARY): Add VSX support.
17277         (LOCAL_ALIGNMENT): Ditto.
17278         (SLOW_UNALIGNED_ACCESS): Ditto.
17279         (VSX_REGNO_P): New macro for VSX support.
17280         (VFLOAT_REGNO_P): Ditto.
17281         (VINT_REGNO_P): Ditto.
17282         (VLOGICAL_REGNO_P): Ditto.
17283         (VSX_VECTOR_MODE): Ditto.
17284         (VSX_SCALAR_MODE): Ditto.
17285         (VSX_MODE): Ditto.
17286         (VSX_MOVE_MODE): Ditto.
17287         (VSX_REG_CLASS_P): Ditto.
17288         (HARD_REGNO_NREGS): Instead of calling a function, use an array
17289         lookup.
17290         (UNITS_PER_SIMD_WORD): Add VSX support.
17291         (MODES_TIEABLE_P): Ditto.
17292         (STARTING_FRAME_OFFSET): Ditto.
17293         (STACK_DYNAMIC_OFFSET): Ditto.
17294         (EPILOGUE_USES): Ditto.
17295         (REGNO_REG_CLASS): Move to array lookup.
17296         (CLASS_MAX_NREGS): Ditto.
17297         (rs6000_vector_reg_class): Add declaration.
17298         (ADDITIONAL_REGISTER_NAMES): Add VSX names for the registers that
17299         overlap with the floating point and Altivec registers.
17300
17301         * config/rs6000/e500.h (CHECK_E500_OPTIONS): Disallow -mvsx.
17302
17303         * config/rs6000/driver-rs6000.c (asm_names): New static array to
17304         give the appropriate asm switches if -mcpu=native.
17305         (host_detect_local_cpu): Add support for "asm".
17306         (host_detect_local_cpu): Follow GNU code guidelines for name.
17307
17308         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Move
17309         -mbit-word to a variable instead of being a target mask.
17310
17311         * config/rs6000/sync.md (lwsync): If the assembler supports it,
17312         emit the lwsync instruction instead of emitting the instruction as
17313         an integer constant.
17314
17315         * config/rs6000/spe.md (spe_fixuns_truncdfsi2): Rename from
17316         fixuns_trundfsi2, move expander into rs6000.md.
17317
17318         * config/rs6000/rs6000.md (cpu): Add power7.
17319         (sel, *ptrsize): New mode attributes for 32/64-bit isel.
17320         (logical predicate patterns): Change the single instruction
17321         primitives that set CR0 to be fast_compare instead of compare.
17322         (norsi*): Ditto.
17323         (popcntwsi2): Add support for ISA 2.06 popcount instructions.
17324         (popcntddi2): Ditto.
17325         (popcount<mode>): Ditto.
17326         (floating multiply/add insns): Name the floating point
17327         multiply/add insns.
17328         (isel_signed_<mode>): Add support for -misel on 64-bit systems.
17329         (isel_unsigned_<mode>): Ditto.
17330         (fixuns_trundfsi2): Move expander here from spe.md.
17331         (smindi3): Define if we have -misel on 64-bit systems.
17332         (smaxdi3): Ditto.
17333         (umindi3): Ditto.
17334         (umaxdi3): Ditto.
17335
17336 2009-06-23  Anatoly Sokolov  <aesok@post.ru>
17337
17338         * config.gcc (avr-*-rtems*, avr-*-*): Set extra_gcc_objs and
17339         extra_objs.
17340         * config/avr/avr.c (avr_current_device): New variable.
17341         (avr_arch_types, avr_mcu_types): Move to avr-deveces.c.
17342         (avr_arch, mcu_type_s): Move to avr.h.
17343         * config/avr/avr.h (base_arch_s). Add reserved2, arch_name and
17344         default_data_section_start fields.
17345         (avr_arch): Moved from avr.c.
17346         (mcu_type_s): Moved from avr.c. Add short_sp, data_section_start and
17347         library_name fields.
17348         (avr_current_device, avr_mcu_types, avr_arch_types,
17349         avr_device_to_arch, avr_device_to_data_start,
17350         avr_device_to_startfiles, avr_device_to_devicelib): Declare.
17351         (EXTRA_SPEC_FUNCTIONS): Define.
17352         (LINK_SPEC): Remove device name to '-m ...' and '-Tdata ...' linker
17353         options mapping. Use device_to_arch and device_to_data_start insted.
17354         (STARTFILE_SPEC): Use device_to_startfile instead of crt_binutils.
17355         (CRT_BINUTILS_SPECS, EXTRA_SPECS): Remove.
17356         * config/avr/t-avr (driver-avr.o, avr-devices.o): New rules.
17357         * config/avr/driver-avr.c: New file.
17358         * config/avr/avr-devices.c: New file.
17359
17360 2009-06-23  Jakub Jelinek  <jakub@redhat.com>
17361
17362         * var-tracking.c (unshare_variable): Force initialized to
17363         be VAR_INIT_STATUS_INITIALIZED unless flag_var_tracking_uninit.
17364         (set_variable_part): Likewise.
17365         (struct variable_union_info): Remove pos_src field.
17366         (vui_vec, vui_allocated): New variables.
17367         (variable_union): Pass VAR_INIT_STATUS_UNKNOWN to unshare_variable
17368         unconditionally.  Avoid XCVECNEW/free for every sorting, for dst_l
17369         == 1 use a simpler sorting algorithm.  Compute pos field right
17370         away, don't fill in pos_src.  For dst_l == 2 avoid qsort.
17371         Avoid quadratic comparison if !flag_var_tracking_uninit.
17372         (variable_canonicalize): Pass VAR_INIT_STATUS_UNKNOWN to
17373         unshare_variable unconditionally.
17374         (dataflow_set_different_2): Removed.
17375         (dataflow_set_different): Don't traverse second hash table.
17376         (compute_bb_dataflow): Pass VAR_INIT_STATUS_UNINITIALIZED
17377         unconditionally to var_reg_set or var_mem_set.
17378         (emit_notes_in_bb): Likewise.
17379         (delete_variable_part): Pass VAR_INIT_STATUS_UNKNOWN to
17380         unshare_variable.
17381         (emit_note_insn_var_location): Don't set initialized to
17382         VAR_INIT_STATUS_INITIALIZED early.
17383         (vt_finalize): Free vui_vec if needed, clear vui_vec and
17384         vui_allocated.
17385         * rtl.c (rtx_equal_p): Don't implement on top of rtx_equal_p_cb.
17386
17387         * tree-object-size.c (addr_object_size): Instead of checking
17388         for non-NULL TREE_CHAIN of the FIELD_DECL check that there
17389         are no FIELD_DECLs following it.
17390
17391 2009-06-23  Andreas Krebbel  <krebbel1@de.ibm.com>
17392
17393         * tree-ssa-math-opts.c (find_bswap): Increase the search depth in
17394         order to match bswaps with signed source operands.
17395
17396 2009-06-23  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
17397
17398         * sdbout.c (sdbout_one_type): Fix braces in switch.
17399
17400 2009-06-23  Richard Guenther  <rguenther@suse.de>
17401
17402         * tree-ssa-structalias.c (struct variable_info): Add is_global_var
17403         member.
17404         (var_anything, anything_tree, var_nothing, nothing_tree, var_readonly,
17405         readonly_tree, var_escaped, escaped_tree, var_nonlocal, nonlocal_tree,
17406         var_callused, callused_tree, var_storedanything, storedanything_tree,
17407         var_integer, integer_tree): Remove global variables.
17408         (new_var_info): Do not pass new id, append the new var to the
17409         global variable vector.
17410         (do_ds_constraint): Use is_global_var member of the variable-info.
17411         (new_scalar_tmp_constraint_exp): Adjust.
17412         (create_function_info_for): Likewise.
17413         (create_variable_info_for): Likewise.
17414         (find_what_var_points_to): Remove dead code.
17415         (init_base_vars): Simplify.
17416         (compute_points_to_sets): Adjust.
17417
17418 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
17419
17420         * combine.c (try_combine): Dump information about the insns we're
17421         combining.
17422
17423 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
17424
17425         * combine.c (combine_simplify_rtx): Remove TRULY_NOOP_TRUNCATION
17426         check when calling force_to_mode on TRUNCATE's operand.
17427
17428 2009-06-22  Ian Lance Taylor  <iant@google.com>
17429
17430         * config/rs6000/rs6000.opt: Move msched-epilog before msched-prolog.
17431
17432 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
17433
17434         * config/arm/arm.md (prologue_use): Set length of fake insn to 0.
17435
17436 2009-06-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
17437
17438         * doc/invoke.texi (Link Options): -nodefaultlibs and -nostdlib
17439         override library linkage flags such as -static-libgcc or
17440         -shared-libgcc.
17441
17442 2009-06-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
17443
17444         * config/m68k/m68k-devices.def: Add line for MCF5221x.
17445
17446 2009-06-22  Ian Lance Taylor  <iant@google.com>
17447
17448         * config/linux.opt: Put mglibc ahead of muclibc.
17449
17450         * c-decl.c (diagnose_mismatched_decls): Add -Wc++-compat warning
17451         for duplicate decls.
17452
17453 2009-06-22  Matthias Klose  <doko@ubuntu.com>
17454
17455         * Makefile.in (install-plugin): Remove extra `/' after $(DESTDIR).
17456
17457 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
17458
17459         PR objc/28050
17460         * c-parser.c (c_parser_objc_message_args): Return error_mark_node
17461         instead of NULL if a parser error occurs.
17462
17463 2009-06-22  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
17464
17465         * dwarf2out.c (dwarf2_debug_hooks): Initialize
17466         non-DWARF2_DEBUGGING_INFO version.
17467
17468 2009-06-22  Kai Tietz  <kai.tietz@onevision.com>
17469
17470         * config.gcc (i[34567]86-*-mingw*, x86_64-*-mingw*): Add
17471         i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file.
17472
17473         * config/i386/mingw32.h (LIBGCC2_HAS_TF_MODE): Define.
17474         (LIBGCC2_TF_CEXT): Define.
17475         (TF_SIZE): Define.
17476
17477 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
17478
17479         PR target/40463
17480         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Fix definition.
17481
17482 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
17483
17484         * config/arm/arm.c (arm_override_options): Disable
17485         -mcaller-super-interworking and -mcallee-super-interworking.
17486         * doc/invoke.texi (ARM Options): Document this.
17487
17488 2009-06-22  Nathan Sidwell  <nathan@codesourcery.com>
17489
17490         * config/arm/arm.c (arm_print_operand): Deal with HIGH.
17491         * config/arm/constraints.md (j): New constraint for movw operands.
17492         (N): Remove thumb2 meaning.
17493         * config/arm/arm.md (*arm_movw): Delete.
17494         (*arm_movsi_insn): Use j constraint for movw instead of N constraint.
17495         * config/arm/vfp.md (*arm_movsi_vfp, *thumb2_movsi_vfp): Likewise.
17496         * config/arm/thumb2.md (*thumb2_movsi_insn): Likewise.
17497
17498 2009-06-22  Martin Jambor  <mjambor@suse.cz>
17499
17500         PR tree-optimization/40492
17501         * tree-sra.c (sra_modify_assign): Pass zero offsets to
17502         build_ref_for_offset.
17503
17504 2009-06-22  Shujing Zhao  <pearly.zhao@oracle.com>
17505
17506         * alias.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P, CALL_P, NOTE_P and
17507         JUMP_TABLE_DATA_P predicates where applicable.
17508         * auto-inc-dec.c: Ditto.
17509         * builtins.c: Ditto.
17510         * caller-save.c: Ditto.
17511         * calls.c: Ditto.
17512         * cfgcleanup.c: Ditto.
17513         * cfglayout.c: Ditto.
17514         * cfgrtl.c: Ditto.
17515         * combine.c: Ditto.
17516         * combine-stack-adj.c: Ditto.
17517         * cse.c: Ditto.
17518         * cselib.c: Ditto.
17519         * dbxout.c: Ditto.
17520         * df-scan.c: Ditto.
17521         * dse.c: Ditto.
17522         * dwarf2asm.c: Ditto.
17523         * dwarf2out.c: Ditto.
17524         * emit-rtl.c: Ditto.
17525         * except.c: Ditto.
17526         * explow.c: Ditto.
17527         * expmed.c: Ditto.
17528         * expr.c: Ditto.
17529         * final.c: Ditto.
17530         * function.c: Ditto.
17531         * fwprop.c: Ditto.
17532         * gcse.c: Ditto.
17533         * genpreds.c: Ditto.
17534         * genrecog.c: Ditto.
17535         * ifcvt.c: Ditto.
17536         * ira-costs.c: Ditto.
17537         * ira-lives.c: Ditto.
17538         * jump.c: Ditto.
17539         * loop-iv.c: Ditto.
17540         * lower-subreg.c: Ditto.
17541         * modulo-sched.c: Ditto.
17542         * optabs.c: Ditto.
17543         * postreload.c: Ditto.
17544         * print-rtl.c: Ditto.
17545         * recog.c: Ditto.
17546         * reginfo.c: Ditto.
17547         * regmove.c: Ditto.
17548         * reload1.c: Ditto.
17549         * reload.c: Ditto.
17550         * reorg.c: Ditto.
17551         * rtlanal.c: Ditto.
17552         * rtl.c: Ditto.
17553         * sched-vis.c: Ditto.
17554         * sdbout.c: Ditto.
17555         * sel-sched-ir.c: Ditto.
17556         * simplify-rtx.c: Ditto.
17557         * targhooks.c: Ditto.
17558         * var-tracking.c: Ditto.
17559         * vmsdbgout.c: Ditto.
17560
17561 2009-06-22  Matthias Klose  <doko@ubuntu.com>
17562
17563         * Makefile.in (install-plugin): Always use DESTDIR.
17564
17565 2009-06-22  Olivier Hainque  <hainque@adacore.com>
17566
17567         * config/pa/pa.c (output_call): Don't optimize post call jumps
17568         into return address adjustments if the call may throw.
17569
17570 2009-06-21  Richard Earnshaw  <rearnsha@arm.com>
17571
17572         * arm.c (thumb1_output_casesi): New function.
17573         * arm.h (CASE_VECTOR_PC_RELATIVE): Thumb-1 code is also relative if
17574         optimizing for size or PIC.
17575         (CASE_VECTOR_SHORTEN_MODE): Handle thumb-1.
17576         * arm.md (UNSPEC_THUMB1_CASESI): New constant.
17577         (casesi): Handle Thumb-1 when optimizing for size or PIC.
17578         (thumb1_casesi_internal_pic): New expand rule.
17579         (thumb1_casesi_dispatch): New pattern.
17580         * aout.h (ASM_OUTPUT_ADDR_DIFF_ELT): Use shortened vectors for
17581         thumb-1 mode.
17582         * coff.h (JUMP_TABLES_IN_TEXT_SECTION): Thumb-1 jump tables are now
17583         in the text seciton when PIC or optimizing for size.
17584         * elf.h (JUMP_TABLES_IN_TEXT_SECTION): Likewise.
17585         * lib1funcs.asm ([__ARM_EABI__]): Add an attribute describing stack
17586         preservation properties of code.
17587         (__gnu_thumb1_case_sqi, __gnu_thumb1_case_uqi): New functions.
17588         (__gnu_thumb1_case_shi, __gnu_thumb1_case_uhi): New functions.
17589         (__gnu_thumb1_case_si): New function.
17590         * t-arm (LIB1ASMSRC): Define here.
17591         (LIB1ASMFUNCS): Add some common functions.
17592         * t-arm-elf (LIB1ASMSRC): Delete.
17593         (LIB1ASMFUNCS): Append to existing set.
17594         * t-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
17595         * t-strongarm-elf (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
17596         * t-symbian (LIB1ASMFUNCS): Likewise.
17597         * t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
17598         * t-wince-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
17599
17600 2009-06-21  Richard Guenther  <rguenther@suse.de>
17601
17602         PR tree-optimization/38729
17603         * tree-ssa-loop-niter.c (find_loop_niter_by_eval): Restrict
17604         to loops with a single exit if -fno-expensive-optimizations.
17605
17606 2009-06-21  Jakub Jelinek  <jakub@redhat.com>
17607
17608         * var-tracking.c (struct shared_hash_def, shared_hash): New types.
17609         (dataflow_set): Change vars type from htab_t to shared_hash.
17610         (shared_hash_pool, empty_shared_hash): New variables.
17611         (vars_clear): Removed.
17612         (shared_hash_shared, shared_hash_htab, shared_hash_copy,
17613         shared_hash_find_slot_unshare, shared_hash_find_slot,
17614         shared_hash_find_slot_noinsert, shared_hash_find): New
17615         static inlines.
17616         (shared_hash_unshare, shared_hash_destroy): New functions.
17617         (unshare_variable): Unshare set->vars if shared, use
17618         shared_hash_htab.
17619         (vars_copy): Use htab_traverse_noresize instead of htab_traverse.
17620         (get_init_value, find_src_set_src, dump_dataflow_set,
17621         clobber_variable_part, emit_notes_for_differences): Use
17622         shared_hash_htab.
17623         (dataflow_set_init): Remove second argument, set vars to
17624         empty_shared_hash instead of creating a new htab.
17625         (dataflow_set_clear): Call shared_hash_destroy and set vars
17626         to empty_shared_hash instead of calling vars_clear.
17627         (dataflow_set_copy): Don't call vars_copy, instead just share
17628         the src htab with dst.
17629         (variable_union): Use shared_hash_*, use initially NO_INSERT
17630         lookup if set->vars is shared.  Don't keep slot cleared before
17631         calling unshare_variable.  Unshare set->vars if needed.
17632         Even ->refcount == 1 vars must be unshared if set->vars is shared
17633         and var needs to be modified.
17634         (variable_canonicalize): New function.
17635         (dataflow_set_union): If dst->vars is empty, just share src->vars
17636         with dst->vars and traverse with variable_canonicalize to canonicalize
17637         and unshare what is needed.
17638         (dataflow_set_different): If old_set and new_set use the same shared
17639         htab, they aren't different.  If number of htab elements is different,
17640         htabs are different.  Use shared_hash_*.
17641         (dataflow_set_destroy): Call shared_hash_destroy instead of
17642         htab_delete.
17643         (compute_bb_dataflow, emit_notes_in_bb, vt_emit_notes): Don't pass
17644         second argument to dataflow_set_init.
17645         (vt_initialize): Likewise.  Initialize shared_hash_pool and
17646         empty_shared_hash, move bb in/out initialization afterwards.
17647         Use variable_htab_free instead of NULL as changed_variables del hook.
17648         (variable_was_changed): Change type of second argument to pointer to
17649         dataflow_set.  When inserting var into changed_variables, bump
17650         refcount.  Unshare set->vars if set is shared htab and slot needs to
17651         be cleared.
17652         (set_variable_part): Use shared_hash_*, use initially NO_INSERT
17653         lookup if set->vars is shared.  Unshare set->vars if needed.
17654         Even ->refcount == 1 vars must be unshared if set->vars is shared
17655         and var needs to be modified.  Adjust variable_was_changed caller.
17656         (delete_variable_part): Use shared_hash_*.  Even ->refcount == 1
17657         vars must be unshared if set->vars is shared and var needs to be
17658         modified.  Adjust variable_was_changed caller.
17659         (emit_note_insn_var_location): Don't pool_free var.
17660         (emit_notes_for_differences_1): Initialize empty_var->refcount to 0
17661         instead of 1.
17662         (vt_finalize): Call htab_delete on empty_shared_hash->htab and
17663         free_alloc_pool on shared_hash_pool.
17664
17665 2009-06-20  Anthony Green  <green@moxielogic.com>
17666
17667         * config/moxie/sfp-machine.h (__gcc_CMPtype, CMPtype): Define.
17668         * config/moxie/moxie.h (LOAD_EXTEND_OP): Define.
17669
17670 2009-06-20  Richard Guenther  <rguenther@suse.de>
17671
17672         * tree-ssa-structalias.c (find_func_aliases): For memset use
17673         a constraint from NULL if we memset to zero.
17674         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Add builtins
17675         we explicitly handle that do not read from memory.
17676         (call_may_clobber_ref_p_1): Properly handle builtins that may
17677         set errno.
17678
17679 2009-06-20  Richard Guenther  <rguenther@suse.de>
17680
17681         PR tree-optimization/40495
17682         * tree-ssa-structalias.c (get_constraint_exp_for_temp): Remove.
17683         (new_scalar_tmp_constraint_exp): New function.
17684         (process_constraint): Do not create temporary decls.
17685         (process_all_all_constraints): Likewise.
17686         (handle_const_call): Likewise.
17687         (create_function_info_for): Do not set decl.
17688
17689 2009-06-19  Ian Lance Taylor  <iant@google.com>
17690
17691         * config/rs6000/rs6000.c (rs6000_explicit_options): Make static.
17692         (rs6000_attribute_table): Make static; move before use.
17693
17694 2009-06-19  Eric Botcazou  <ebotcazou@adacore.com>
17695
17696         * tree.c (substitute_in_expr) <COMPONENT_REF>: Tweak and reformat.
17697         <tcc_vl_exp>: Call process_call_operands on the new CALL_EXPR.
17698         Propagate the TREE_READONLY flag without overwriting it.
17699         (substitute_placeholder_in_expr) <tcc_vl_exp>: Likewise.
17700         Propagate the TREE_READONLY flag onto the result.
17701         (process_call_operands): Move around.  Use correct constant value.
17702
17703 2009-06-19  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
17704
17705         PR target/40482
17706         * config/arm/arm.c (thumb_shiftable_const): Truncate val to 32 bits.
17707         * config/arm/arm.md: Likewise.
17708
17709 2009-06-19  Ian Lance Taylor  <iant@google.com>
17710
17711         * tree-cfg.c (gimple_redirect_edge_and_branch): Change ERROR_MARK
17712         to GIMPLE_ERROR_MARK.
17713
17714         * c-typeck.c (build_conditional_expr): Add op1_original_type and
17715         op2_original_type parameters.  Warn about using different enum types.
17716         * c-parser.c (c_parser_conditional_expression): Pass original
17717         types to build_conditional_expr.
17718         * c-tree.h (build_conditional_expr): Update declaration.
17719
17720 2009-06-19  Ian Lance Taylor  <iant@google.com>
17721
17722         * config/i386/i386.c (ix86_function_specific_save): Test that
17723         fields match values, rather than testing the values are in a
17724         certain range.
17725
17726 2009-06-19  Richard Guenther  <rguenther@suse.de>
17727
17728         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Handle
17729         ADDR_EXPR pointers.
17730         (ptr_derefs_may_alias_p): Likewise.
17731         (ptr_deref_may_alias_ref_p_1): New function.
17732         (ptr_deref_may_alias_ref_p): Likewise.
17733         (ref_maybe_used_by_call_p_1): Handle builtins that are not
17734         covered by looking at the ESCAPED solution.
17735         (call_may_clobber_ref_p_1): Likewise.
17736         * tree-ssa-structalias.c (get_constraint_for_ptr_offset):
17737         Handle NULL_TREE offset.  Do not produce redundant constraints.
17738         (process_all_all_constraints): New helper function.
17739         (do_structure_copy): Use it.
17740         (handle_lhs_call): Likewise.
17741         (find_func_aliases): Handle some builtins with pointer arguments
17742         and/or return values explicitly.
17743
17744 2009-06-19  Ian Lance Taylor  <iant@google.com>
17745
17746         * varasm.c (const_rtx_hash_1): Remove const qualifier from shift.
17747
17748 2009-06-19  Ian Lance Taylor  <iant@google.com>
17749
17750         * rtl.h (SUBREG_PROMOTED_UNSIGNED_P): Add cast to int.
17751
17752 2009-06-19  Ian Lance Taylor  <iant@google.com>
17753
17754         * ggc-page.c (ggc_pch_write_object): Initialize emptyBytes.
17755         * sdbout.c (sdb_debug_hooks): Initialize non-SDB_DEBUGGING_INFO
17756         version.
17757
17758         * c-decl.c (finish_decl): If -Wc++-compat, warn about
17759         uninitialized const.
17760
17761 2009-06-19  Ian Lance Taylor  <iant@google.com>
17762
17763         * dse.c (struct store_info): Rename bitmap field to bmap.  Change
17764         all uses.
17765
17766         * c-decl.c (in_struct, struct_types): Remove.
17767         (struct c_binding): Add in_struct field.
17768         (c_binding_ptr): Define type, along with VEC.
17769         (struct c_struct_parse_info): Define.
17770         (struct_parse_info): New static variable.
17771         (bind): Initialize in_struct field.
17772         (start_struct): Remove enclosing_in_struct and
17773         enclosing_struct_types parameters.  Add
17774         enclosing_struct_parse_info parameter.  Change all callers.  Set
17775         struct_parse_info rather than in_struct and struct_types.
17776         (grokfield): If -Wc++-compat and there is a symbol binding for the
17777         field name, set the in_struct flag and push it on the
17778         struct_parse_info->fields vector.
17779         (warn_cxx_compat_finish_struct): New static function.
17780         (finish_struct): Remove enclosing_in_struct and
17781         enclosing_struct_types parameters.  Add
17782         enclosing_struct_parse_info parameter.  Change all callers.  Don't
17783         set C_TYPE_DEFINED_IN_STRUCT here.  Call
17784         warn_cxx_compat_finish_struct.  Free struct_parse_info and set to
17785         parameter.  Only push on struct_types if warn_cxx_compat.
17786         (finish_enum): Only push on struct_types if warn_cxx_compat.
17787         (declspecs_add_type): Add loc parameter.  Change all callers.
17788         Change all error calls to error_at.  Pass loc, not input_location,
17789         to pedwarn calls.  Warn if -Wc++-compat and a typedef name is
17790         defined in a struct.  If -Wc++-compat and parsing a struct, record
17791         that a typedef name was used.
17792         * c-parser.c (c_parser_declspecs): Get location to pass to
17793         declspecs_add_type.
17794         (c_parser_struct_or_union_specifier): Update calls to start_struct
17795         and finish_struct.
17796         * c-tree.h (struct c_struct_parse_info): Declare.
17797         (finish_struct, start_struct): Update declarations.
17798         (declspecs_add_type): Update declaration.
17799
17800 2009-06-19  Ian Lance Taylor  <iant@google.com>
17801
17802         * c-decl.c (grokdeclarator): If -Wc++-compat, warn about a global
17803         variable with an anonymous type.
17804
17805 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
17806
17807         * see.c: Remove for real.
17808
17809 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
17810
17811         * optabs.h (enum optab_index): Add new OTI_significand.
17812         (significand_optab): Define corresponding macro.
17813         * optabs.c (init_optabs): Initialize significand_optab.
17814         * genopinit.c (optabs): Implement significand_optab using
17815         significand?f2 patterns.
17816         * builtins.c (expand_builtin_mathfn): Handle
17817         BUILT_IN_SIGNIFICAND{,F,L}.
17818         (expand_builtin): Expand BUILT_IN_SIGNIFICAND{,F,L} using
17819         expand_builtin_mathfn if flag_unsafe_math_optimizations is set.
17820
17821         * config/i386/i386.md (significandxf2, significand<mode>2): New
17822         expanders to implement significandf, significand and significandl
17823         built-ins as inline x87 intrinsics.
17824
17825 2009-06-18  Anatoly Sokolov  <aesok@post.ru>
17826
17827         * config/avr/avr.c (avr_override_options): Remove setting value of
17828         PARAM_INLINE_CALL_COST.
17829
17830 2009-06-18  Richard Henderson  <rth@redhat.com>
17831
17832         PR 40488
17833         * tree-pass.h (TDF_ASMNAME): New.
17834         * tree-dump.c (dump_options): Add asmname.
17835         * doc/invoke.texi: Document it.
17836
17837         * tree-pretty-print.c (maybe_dump_asm_name): Merge into...
17838         (dump_decl_name): ...here.
17839         (dump_function_name): New flags arg; mind TDF_ASMNAME.
17840         (dump_generic_node): Update dump_function_name calls.
17841         (print_call_name): New flags arg; update all dump calls.
17842         * diagnostic.h (print_call_name): Update.
17843         * gimple-pretty-print.c (dump_gimple_call): Update.
17844
17845 2009-06-18  H.J. Lu  <hongjiu.lu@intel.com>
17846
17847         PR target/40470
17848         * config/i386/i386.h (CLASS_LIKELY_SPILLED_P): Add SSE_FIRST_REG.
17849
17850 2009-06-18  Diego Novillo  <dnovillo@google.com>
17851
17852         * doc/plugins.texi: Document plugin_is_GPL_compatible.
17853         * plugin.c (str_license): Declare.
17854         (try_init_one_plugin): Assert that the symbol
17855         'plugin_is_GPL_compatible' exists.
17856
17857 2009-06-18  Sergei Dyshel  <sergeid@il.ibm.com>
17858
17859         * see.c: Remove.
17860         * Makefile.in (OBJS-common): Remove see.o.
17861         (see.o): Remove.
17862         * common.opt (fsee): Mark as preserved for backward compatibility.
17863         * opts.c (common_handle_option): Add OPT_fsee to the backward
17864         compatibility section.
17865         * passes.c (init_optimization_passes, pass_see): Remove pass.
17866         * timevar.def (TV_SEE): Remove.
17867         * tree-pass.h (pass_see): Remove declaration.
17868         * doc/invoke.texi (-fsee): Remove documentation.
17869
17870 2009-06-18  Martin Jambor  <mjambor@suse.cz>
17871
17872         * tree-sra.c: Include statistics.h
17873         (sra_stats): New variable.
17874         (sra_initialize): Clear sra_stats.
17875         (create_access_replacement): Increment sra_stats.replacements.
17876         (get_access_replacement): Do not return twice.
17877         (analyze_all_variable_accesses): Increment statistics counter by the
17878         number of scalarized aggregates.
17879         (generate_subtree_copies): Increment sra_stats.subtree_copies.
17880         (sra_modify_expr): Increment sra_stats.exprs.
17881         (load_assign_lhs_subreplacements): Increment sra_stats.subreplacements.
17882         (sra_modify_assign): Increment sra_stats.exprs,
17883         sra_stats.separate_lhs_rhs_handling and sra_stats.deleted.
17884         (perform_intra_sra): Update statistics counters.
17885         * Makefile.in (tree-sra.o): Add statistics.h to dependencies.
17886
17887 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
17888
17889         * config/arm/arm.c (TARGET_SCALAR_MODE_SUPPORTED_P): Redefine.
17890         (arm_scalar_mode_supported_p): New function.
17891
17892 2009-06-18  Paul Brook  <paul@codesourcery.com>
17893             Sandra Loosemore  <sandra@codesourcery.com>
17894
17895         * config/arm/sfp-machine.h (_FP_NANFRAC_H, _FP_NANSIGN_H): Define.
17896         (__extendhfsf2, __truncsfhf2): Define.
17897         * config/arm/fp16.c: New file.
17898         * config/arm/t-bpabi (LIB2FUNCS_STATIC_EXTRA): Add fp16.c.
17899         * config/arm/t-symbian (LIB2FUNCS_STATIC_EXTRA):  Add fp16.c.
17900
17901 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
17902
17903         * doc/extend.texi (Half-Precision): New section.
17904         * doc/invoke.texi (Option Summary): List -mfp16-format.
17905         (ARM Options): List neon-fp16 as -mfpu value.  Document -mfp16-format.
17906         * config/arm/arm.opt (mfp16-format=): New.
17907         * config/arm/arm.c: Include intl.h.
17908         (TARGET_INVALID_PARAMETER_TYPE): Redefine.
17909         (TARGET_INVALID_RETURN_TYPE): Redefine.
17910         (TARGET_PROMOTED_TYPE): Redefine.
17911         (TARGET_CONVERT_TO_TYPE): Redefine.
17912         (arm_fp16_format): Define.
17913         (all_fpus): Add entry for neon-fp16.
17914         (fp_model_for_fpu): Likewise.
17915         (struct fp16_format): Declare.
17916         (all_fp16_formats): Define.
17917         (arm_init_libfuncs): Add entries for HFmode conversions and arithmetic
17918         functions.
17919         (arm_override_options): Set arm_fp16_format. Call sorry for fp16
17920         and no ldrh.
17921         (arm_legitimate_index_p): Treat HFmode like HImode.
17922         (thumb1_legitimate_address_p): Make it recognize HFmode constants.
17923         (coproc_secondary_reload_class): Special-case HFmode.
17924         (arm_print_operand): Add 'z' specifier for vld1.16/vst1.16.
17925         (arm_hard_regno_mode_ok): Allow HFmode values in VFP registers.
17926         (arm_init_fp16_builtins): New.
17927         (arm_init_builtins): Call it.
17928         (arm_invalid_parameter_type): New.
17929         (arm_invalid_return_type): New.
17930         (arm_promoted_type): New.
17931         (arm_convert_to_type).
17932         (arm_file_start): Deal with neon-fp16 as fpu_name.  Emit tag for fp16
17933         format.
17934         (arm_emit_fp16_const): New function.
17935         (arm_mangle_type): Mangle __fp16 as "Dh".
17936         * config/arm/arm.h (TARGET_VFPD32): Make it know about
17937         FPUTYPE_NEON_FP16.
17938         (TARGET_NEON_FP16): New.
17939         (TARGET_NEON): Make it know about FPUTYPE_NEON_FP16.
17940         (enum fputype): Add FPUTYPE_NEON_FP16.
17941         (enum arm_fp16_format_type): Declare.
17942         (arm_fp16_format): Declare.
17943         (LARGEST_EXPONENT_IS_NORMAL): Define.
17944         * config/arm/arm-protos.h (arm_emit_fp16_const): Declare.
17945         * config/arm/arm-modes.def (HFmode): Define.
17946         * config/arm/vfp.md (*movhf_vfp): New.
17947         (extendhfsf2): New.
17948         (truncsfhf2): New.
17949         * config/arm/arm.md (fpu): Add neon_fp16.
17950         (floatsihf2, floatdihf2): New.
17951         (fix_trunchfsi2, fix_trunchfdi2): New.
17952         (truncdfhf2): New.
17953         (extendhfdf2): New.
17954         (movhf): New.
17955         (*arm32_movhf): New.
17956         (*thumb1_movhf): New.
17957         (consttable_2): Add check for HFmode constants.
17958         (consttable_4): Handle HFmode constants.
17959
17960 2009-06-18  Uros Bizjak  <ubizjak@gmail.com>
17961
17962         * convert.c (convert_to_integer): Convert (int)logb() into ilogb().
17963
17964 2009-06-17  Olivier Hainque  <hainque@adacore.com>
17965
17966         * collect2.c (main): Use CONST_CAST2 to perform char ** to
17967         const char ** conversion in AIX specific section.
17968
17969 2009-06-17  H.J. Lu  <hongjiu.lu@intel.com>
17970
17971         * config/i386/i386.c (ix86_special_builtin_type): Remove
17972         UINT64_FTYPE_PINT.  Add UINT64_FTYPE_PUNSIGNED.
17973         (bdesc_special_args): Updated.
17974         (ix86_init_mmx_sse_builtins): Likewise.
17975         (ix86_expand_special_args_builtin): Likewise.
17976
17977 2009-06-17  Richard Henderson  <rth@redhat.com>
17978
17979         * tree-pretty-print.c (maybe_dump_asm_name): New.
17980         (dump_decl_name): Use it.
17981         (PRINT_FUNCTION_NAME): Merge into...
17982         (dump_function_name): ... here.  Use maybe_dump_asm_name.
17983
17984 2009-06-17  Cary Coutant  <ccoutant@google.com>
17985
17986         * dbxout.c (dbxout_source_line): Add is_stmt parameter.
17987         Change caller.
17988         * debug.c (struct gcc_debug_hooks): Change placeholder for
17989         source_line hook.
17990         (debug_nothing_int_charstar_int): Replaced by...
17991         (debug_nothing_int_charstar_int_bool): ...this.
17992         * debug.h (struct gcc_debug_hooks): Add is_stmt parameter to
17993         source_line prototype.
17994         (debug_nothing_int_charstar_int): Replaced by...
17995         (debug_nothing_int_charstar_int_bool): ...this.
17996         * defaults.h (SUPPORTS_DISCRIMINATOR): New constant.
17997         * dwarf2out.c (dwarf2out_source_line): Add is_stmt parameter.
17998         Output is_stmt operand when necessary.
17999         * final.c (final_scan_insn): Pass is_stmt to source_line debug hook.
18000         (notice_source_line): Add is_stmt parameter.
18001         * sdbout.c (sdbout_source_line): Add is_stmt parameter.
18002         * vmsdbgout.c (vmsdbgout_source_line): Add is_stmt parameter.
18003         Change callers.
18004         * xcoffout.c (xcoffout_source_line): Add is_stmt parameter.
18005         * xcoffout.h (xcoffout_source_line): Add is_stmt parameter.
18006
18007 2009-06-17  Ian Lance Taylor  <iant@google.com>
18008
18009         * expr.c (struct move_by_pieces_d): Rename from move_by_pieces.
18010         Change all uses.
18011         (struct store_by_pieces_d): Rename from store_by_pieces.  Change
18012         call uses.
18013
18014 2009-06-17  Adam Nemet  <anemet@caviumnetworks.com>
18015
18016         * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS,
18017         STRIP_USELESS_TYPE_CONVERSION): Use tree_strip_nop_conversions,
18018         tree_strip_sign_nop_conversions and
18019         tree_ssa_strip_useless_type_conversions rather than stripping
18020         the operations here.
18021         (tree_strip_nop_conversions, tree_strip_sign_nop_conversions):
18022         Declare them.
18023         * gimple.h (tree_ssa_strip_useless_type_conversions): Declare it.
18024         * tree-ssa.c (tree_ssa_strip_useless_type_conversions): New function.
18025         * tree.c (tree_nop_conversion, tree_sign_nop_conversion,
18026         tree_strip_nop_conversions, tree_strip_sign_nop_conversions): New
18027         functions.
18028
18029 2009-06-17  Michael Eager  <eager@eagercon.com>
18030
18031         * config/rs6000/constraints.md (register_constraint "d"): New.
18032         * config/rs6000/dfp.md (movsd_store, extendsddd2, extendsdtd2,
18033         truncddsd2, *negdd2_fpr, *absdd2_fpr, *nabsdd2_fpr,
18034         *movdd_hardfloat32, *movdd_hardfloat64_mfpgpr, *movdd_hardfloat64,
18035         *negtd2_fp, *abstd2_fpr, *nabstd2_fpr, *movtd_internal, extendddtd2,
18036         trunctddd2, adddd3, addtd3, subdd3, subtd3, muldd3, multd3, divdd3,
18037         divtd3, *cmpdd_internal1, *cmptd_internal1, floatditd2, ftruncdd2,
18038         fixdddi2, ftrunctd2, fixtddi2): replace 'f' constraint with 'd'
18039         * config/rs6000/ppu_intrinsics.h (__mffs, __mtfsf, __mtfsfi, __fabs,
18040         __fnabs, __fmadd, __fmsub, __fnmadd, __fnmsub, __fsel, __frsqrte,
18041         __fsqrt, __fmul, __fmuls, __frsp, __fcfid, __fctid, __fctidz, __fctiw,
18042         __fctiwz): Same.
18043         * config/rs6000/rs6000.md (*extendsfdf2_fpr, *truncdfsf2_fpr,
18044         *fseldfsf4, *negdf2_fpr, *absdf2_fpr, *nabsdf2_fpr, *adddf3_fpr,
18045         *subdf3_fpr, *muldf3_fpr, *divdf3_fpr, recipdf3, fred, sqrtdf2,
18046         *fseldfdf4, *fselsfdf4, *floatsidf2_internal, *floatunssidf2_internal,
18047         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
18048         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2, rounddf2,
18049         stfiwx, floatdidf2, fix_truncdfdi2, floatdisf2_internal1,
18050         *movdf_hardfloat32, *movdf_hardfloat64_mfpgpr, *movdf_hardfloat64,
18051         *movtf_internal, *extenddftf2_internal, trunctfdf2_internal1,
18052         trunctfdf2_internal2, trunctfsf2_fprs, fix_trunc_helper,
18053         *fix_trunctfsi2_internal, negtf2_internal, *movdi_internal32,
18054         *movdi_mfpgpr, *movdi_internal64, *movdf_update1, *movdf_update2,
18055         *cmpdf_internal1, *cmptf_internal1, *cmptf_internal2): Same.
18056         * doc/md.texi: Describe PowerPC 'd' constraint, update 'f' constraint.
18057
18058 2009-06-16  Ian Lance Taylor  <iant@google.com>
18059
18060         * profile.c (total_num_never_executed): Don't define.
18061         (compute_branch_probabilities): Don't count or print
18062         num_never_executed.
18063         (init_branch_prob): Don't set total_num_never_executed.
18064         (end_branch_prob): Don't print total_num_never_executed.
18065
18066 2009-06-17  David Daney  <ddaney@caviumnetworks.com>
18067
18068         * jump.c (cleanup_barriers): Handle case of no insns before a barrier.
18069
18070 2009-06-17  David Edelsohn  <edelsohn@gnu.org>
18071
18072         * config/rs6000/dfp.md (nabsdd2_fpr): Correct mode.
18073         (nabstd2_fpr): Same.
18074
18075 2009-06-17  Steve Ellcey  <sje@cup.hp.com>
18076
18077         * expr.c (expand_assignment): Change complex type check.
18078
18079 2009-06-17  Basile Starynkevitch  <basile@starynkevitch.net>
18080
18081         * doc/plugins.texi (Building GCC plugins): Added new section.
18082
18083 2009-06-17  Ian Lance Taylor  <iant@google.com>
18084
18085         * c-pch.c (get_ident): Don't set size of templ array.
18086         (pch_init): Don't set size of partial_pch array.
18087
18088         * c-typeck.c (digest_init): If -Wc++-compat, warn about using a
18089         string constant to intialize an array whose size is the length of
18090         the string.
18091
18092 2009-06-17  Richard Guenther  <rguenther@suse.de>
18093
18094         PR tree-optimization/40389
18095         * tree-ssa-structalias.c (handle_rhs_call): Restrict NRV case
18096         to addressable types.
18097         * gimple.c (walk_stmt_load_store_addr_ops): Likewise.
18098
18099 2009-06-17  Richard Guenther  <rguenther@suse.de>
18100
18101         PR middle-end/40460
18102         * tree-chrec.h (build_polynomial_chrec): If we cannot determine
18103         if there is no evolution of left in the loop bail out.
18104         * tree-chrec.c (chrec_fold_multiply_poly_poly): CSE one
18105         chrec_fold_multiply.
18106
18107 2009-06-16  J"orn Rennecke  <joern.rennecke@arc.com>
18108             Janis Johnson  <janis187@us.ibm.com>
18109
18110         PR target/39254
18111         * config/rs6000/rs6000.c (rs6000_emit_move): Don't emit a USE
18112         for the symbol ref of a constant that is the source of a move
18113         - nor for any other not-obvious-label-ref constants.
18114
18115 2009-06-16  Olatunji Ruwase  <tjruwase@google.com>
18116
18117         * plugin.c (position_pass): Skip newly inserted pass during list
18118         traversal to avoid repeated insertion.
18119
18120 2009-06-16  Ian Lance Taylor  <iant@google.com>
18121
18122         * vec.h (VEC_stack_alloc): Define different version if
18123         GATHER_STATISTICS is defined, to accept and ignore MEM_STAT.
18124         (DEF_VEC_ALLOC_FUNC_P_STACK): Remove MEM_STAT_DECL.
18125         (DEF_VEC_ALLOC_FUNC_O_STACK): Likewise.
18126         (DEF_VEC_ALLOC_FUNC_I_STACK): Likewise.
18127
18128 2009-06-16  H.J. Lu  <hongjiu.lu@intel.com>
18129
18130         * config.gcc (extra_headers): Add ia32intrin.h for x86.
18131
18132         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_BSRSI,
18133         IX86_BUILTIN_BSRDI.  IX86_BUILTIN_RDPMC, IX86_BUILTIN_RDTSC.
18134         IX86_BUILTIN_RDTSCP.  IX86_BUILTIN_ROLQI, IX86_BUILTIN_ROLHI,
18135         IX86_BUILTIN_RORQI and IX86_BUILTIN_RORHI.
18136         (ix86_special_builtin_type): Add UINT64_FTYPE_VOID,
18137         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
18138         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
18139         (bdesc_special_args): Add __builtin_ia32_rdtsc and
18140         __builtin_ia32_rdtscp.
18141         (bdesc_args): Add __builtin_ia32_bsrsi, __builtin_ia32_bsrdi,
18142         __builtin_ia32_rolqi, __builtin_ia32_rolhi, __builtin_ia32_rorqi
18143         and __builtin_ia32_rorhi.
18144         (ix86_init_mmx_sse_builtins): Handle UINT64_FTYPE_VOID,
18145         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
18146         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
18147         (ix86_expand_args_builtin): Likewise.
18148         (ix86_expand_special_args_builtin): Likewise.
18149
18150         * config/i386/i386.md (UNSPECV_RDTSCP): New.
18151         (UNSPECV_RDTSC): Likewise.
18152         (UNSPECV_RDPMC): Likewise.
18153         (*bsr): Renamed to ...
18154         (bsr): This
18155         (*bsr_rex64): Renamed to ...
18156         (bsr_rex64): This.
18157         (rdpmc): New.
18158         (*rdpmc): Likewise.
18159         (*rdpmc_rex64): Likewise.
18160         (rdtsc): Likewise.
18161         (*rdtsc): Likewise.
18162         (*rdtsc_rex64): Likewise.
18163         (rdtscp): Likewise.
18164         (*rdtscp): Likewise.
18165         (*rdtscp_rex64): Likewise.
18166
18167         * config/i386/ia32intrin.h: New.
18168
18169         * config/i386/x86intrin.h: Include <ia32intrin.h>.
18170
18171 2009-06-16  Ian Lance Taylor  <iant@google.com>
18172
18173         * ira-build.c (copy_info_to_removed_store_destinations):
18174         Initialize parent_a.
18175
18176 2009-06-16  Ian Lance Taylor  <iant@google.com>
18177
18178         * c-decl.c (grokdeclarator): Change size_varies to bool.
18179
18180 2009-06-16  Ian Lance Taylor  <iant@google.com>
18181
18182         * sel-sched.c: Make forward declarations of move_op_hooks and
18183         fur_hooks explicitly extern.
18184
18185 2009-06-16  Ian Lance Taylor  <iant@google.com>
18186
18187         * df-problems.c (df_byte_lr_alloc): Don't set problem_data to itself.
18188         * vec.c (vec_gc_o_reserve_1): Don't set alloc to itself.
18189
18190 2009-06-16  Ian Lance Taylor  <iant@google.com>
18191
18192         * resource.c (mark_referenced_resources): Change
18193         include_delayed_effects parameter to bool.  Change all callers.
18194         (mark_end_of_function_resources): Likewise.
18195         * reorg.c (insn_references_resource_p): Likewise.
18196         (insn_sets_resource_p): Likewise.
18197         * resource.h (mark_referenced_resources): Update declaration.
18198         (mark_end_of_function_resources): Update declaration.
18199
18200 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
18201
18202         * config/rs6000/aix.h (LIBSTDCXX_STATIC): Remove -lstdc++.
18203
18204 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
18205
18206         * doc/install.texi (*-*-aix): Update explanation of XLC bootstrap.
18207         GCC can bootstrap on AIX with GNU Binutils 2.20.
18208
18209 2009-06-16  Ian Lance Taylor  <iant@google.com>
18210
18211         * Makefile.in (tree-vect-stmts.o): Depend upon $(TOPLEV_H).
18212
18213 2009-06-16  Ian Lance Taylor  <iant@google.com>
18214
18215         * toplev.h (floor_log2): If GCC_VERSION >= 3004, declare as static
18216         inline, not extern inline.
18217         (exact_log2): Likewise.
18218         * toplev.c (floor_log2): Only define if GCC_VERSION < 3004. Don't
18219         test CLZ_HWI.
18220         (exact_log2): Likewise, but don't test CTZ_HWI.
18221
18222 2009-06-16  Ian Lance Taylor  <iant@google.com>
18223
18224         * bitmap.c (bitmap_clear): Don't declare as inline.
18225         * gimple.c (gimplify_assign): Likewise.
18226         * tree-ssa-sccvn.c (vn_nary_op_compute_hash): Likewise.
18227         * haifa-sched.c (insn_cost): Don't declare with HAIFA_INLINE.
18228         (sched_scan_info): Remove duplicate definition.
18229
18230 2009-06-16  Ian Lance Taylor  <iant@google.com>
18231
18232         * c-common.c (skip_evaluation): Don't define.
18233         (c_inhibit_evaluation_warnings): Define global variable.
18234         (overflow_warning): Check c_inhibit_evaluation_warnings rather
18235         than skip_evaluation.
18236         (convert_and_check, warn_for_div_by_zero): Likewise.
18237         * c-common.h (skip_evaluation): Don't declare.
18238         (c_inhibit_evaluation_warnings): Declare.
18239         * c-parser.c (c_parser_typeof_specifier): Set
18240         c_inhibit_evaluation_warnings rather than skip_evaluation.
18241         (c_parser_conditional_expression): Likewise.
18242         (c_parser_binary_expression): Likewise.
18243         (c_parser_sizeof_expression): Likewise.
18244         (c_parser_alignof_expression): Likewise.
18245         * c-typeck.c (build_indirect_ref): Check
18246         c_inhibit_evaluation_warnings rather than skip_evaluation.
18247         (build_conditional_expr, build_binary_op): Likewise.
18248
18249 2009-06-16  Richard Guenther  <rguenther@suse.de>
18250
18251         * tree-ssa-alias.c (is_escape_site): Remove.
18252         * tree-ssa-alias.h (enum escape_type): Remove.
18253         (is_escape_site): Likewise.
18254         * tree-ssa-structalias.c (find_func_aliases): Handle escapes
18255         via casts and asms without deferring to is_escape_site.
18256
18257 2009-06-16  Jakub Jelinek  <jakub@redhat.com>
18258
18259         PR middle-end/40446
18260         * expr.c (expand_expr_real_1) <case VIEW_CONVERT_EXPR>: Don't
18261         use gen_lowpart if op0 has complex mode.
18262
18263 2009-06-16  Richard Guenther  <rguenther@suse.de>
18264
18265         * tree-ssa-structalias.c (do_ds_constraint): Stores in global
18266         variables add them to ESCAPED.
18267         (find_func_aliases): Do not make all indirectly stored values escaped.
18268
18269 2009-06-16  Rafael Avila de Espindola  <espindola@google.com>
18270
18271         * config/i386/winnt.c (i386_pe_encode_section_info): Update call to
18272         make_decl_one_only.
18273
18274 2009-06-16  Martin Jambor  <mjambor@suse.cz>
18275
18276         PR tree-optimization/40432
18277         * tree-sra.c (sra_modify_assign): When creating VIEW_CONVERT_EXPR,
18278         check whether we need to force gimple register operand.
18279
18280 2009-06-16  Martin Jambor  <mjambor@suse.cz>
18281
18282         PR tree-optimization/40413
18283         * tree-sra.c (load_assign_lhs_subreplacements): Pass offset to
18284         build_ref_for_offset.
18285         (propagate_subacesses_accross_link): Fix a typo in a comment.
18286
18287 2009-06-16  Ira Rosen  <irar@il.ibm.com>
18288
18289         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
18290         with additional parameter.
18291         * tree-vectorizer.h (enum vect_def_type): Add new value
18292         vect_nested_cycle.
18293         (enum vect_relevant): Add comments.
18294         (vect_is_simple_reduction): Add new argument.
18295         * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Add comments.
18296         Detect nested cycles.
18297         (vect_is_simple_reduction): Update documentation, add an argument to
18298         distinguish inner-loop reduction from nested cycle, detect nested
18299         cycles, fix printings and indentation, don't swap operands in case
18300         of nested cycle.
18301         (get_initial_def_for_reduction): Handle subtraction.
18302         (vect_create_epilog_for_reduction): Add new argument to specify
18303         reduction variable.
18304         (vect_finalize_reduction): Handle subtraction, fix comments.
18305         (vectorizable_reduction): Handle nested cycles. In case of nested
18306         cycle keep track of the reduction variable position. Call
18307         vect_is_simple_reduction with additional parameter. Use original
18308         statement code in reduction epilogue for nested cycle. Call
18309         vect_create_epilog_for_reduction with additional parameter.
18310         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Assert
18311         inner-loop vectorization.
18312         (vect_recog_widen_sum_pattern): Likewise.
18313         * tree-vect-stmts.c (process_use): Distinguish between nested cycles
18314         and reductions.
18315         (vect_mark_stmts_to_be_vectorized): Likewise.
18316         (vect_get_vec_def_for_operand): Handle nested cycles.
18317
18318 2009-06-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
18319
18320         * doc/invoke.texi (Debugging Options): Fix option index entries
18321         for -fdump-statistics, -frandom-seed add entries for
18322         -fdump-tree-original, -fdump-tree-optimized, -frandom-seed.
18323         (FRV Options): Fix entries for -mTLS, -mtls.
18324         (HPPA Options): Fix entries for -mgnu-ld, -mhp-ld.
18325         (i386 and x86-64 Options): Fix entry for -mno-red-zone.
18326         (M68hc1x Options): Fix @itemx for -mnominmax.
18327         (MCore Options): Fix entry for -mno-lsim.
18328         (MMIX Options): Fix entry for -mabi=mmixware.
18329         (PDP-11 Options): Fix entry for -mbcopy-builtin.
18330
18331 2009-06-16  Basile Starynkevitch  <basile@starynkevitch.net>
18332
18333         * doc/plugins.texi (Interacting with the GCC Garbage Collector):
18334         Mention the plugin mode of gengtype.
18335         * doc/gty.texi (Source Files Containing Type Information): Likewise.
18336         * gengtype.c: Updated copyright.
18337         (plugin_files, nb_plugin_files) Added new static variables.
18338         (measure_input_list) Care about plugin_files.
18339         (write_rtx_next): Added early return in plugin mode.
18340         (create_file): Updated copyright year in generated file. Added
18341         asserts.
18342         (oprintf): Added early return if NULL outf.
18343         (get_output_file_with_visibility): Care of plugin_files.
18344         (get_output_file_name): May return null.
18345         (write_local): Added early return.
18346         (put_mangled_filename): Ditto.
18347         (finish_root_table): Added check for base_files.
18348         (write_roots): Care about null when plugins.
18349         (main): Added plugin mode.
18350
18351 2009-06-15  Ian Lance Taylor  <iant@google.com>
18352
18353         * df-problems.c (df_simulate_one_insn_forwards): Fix braces in switch.
18354         * gcov.c (read_count_file): Add braces around variables declared
18355         before label.
18356
18357         * c.opt (Wjump-misses-init): New warning.
18358         * c-opts.c (c_common_handle_option): Set warn_jump_misses_init for
18359         -Wall and -Wc++-compat if not already set.
18360         (c_common_post_options): Clear warn_jump_misses_init if it was not
18361         set.
18362         * c-decl.c (struct c_binding): Change type field to a union with
18363         new label field.  Make it the first field in the struct.  Update
18364         references to type to use u.type instead.
18365         (struct c_spot_bindings): Define.
18366         (struct c_goto_bindings): Define.
18367         (c_goto_bindings_p): Define, along with VECs.
18368         (struct c_label_vars): Define.
18369         (struct c_scope): Add has_label_bindings field.
18370         (bind_label, set_spot_bindings): New static functions.
18371         (decl_jump_unsafe, update_spot_bindings): New static functions.
18372         (update_label_decls): New static function.
18373         (pop_scope): Call update_label_decls.  Don't call c_end_vm_scope.
18374         Update binding u.label field to shadowed field.
18375         (c_binding_start_stmt_expr): New function.
18376         (c_binding_end_stmt_expr): New function.
18377         (pushdecl): Don't call c_begin_vm_scope.
18378         (make_label): Add defining and p_label_vars parameters.  Change
18379         all callers.
18380         (lookup_label): Correct test for whether a label has not yet been
18381         defined.  Call bind_label rather than bind.
18382         (warn_about_goto): New static function.
18383         (lookup_label_for_goto): New function.
18384         (declare_label): Call bind_label rather than bind.
18385         (check_earlier_gotos): New static function.
18386         (define_label): Don't give errors about jumping into statement
18387         expressions or scopes of variably modified types.  Call
18388         set_spot_bindings and check_earlier_gotos.  Call bind_label
18389         instead of bind.  Don't set label_context_stack_se or
18390         label_context_stack_vm.
18391         (c_get_switch_bindings): New function.
18392         (c_release_switch_bindings): New function.
18393         (c_check_switch_jump_warnings): New function.
18394         (start_function): Don't set label_context_stack_se or
18395         label_context_stack_vm.
18396         (finish_function): Likewise.
18397         * c-typeck.c (label_context_stack_se): Don't define.
18398         (label_context_stack_vm): Don't define.
18399         (c_finish_goto_label): Call lookup_label_for_goto rather than
18400         lookup_label.  Don't give errors about jumping into a statement
18401         expression or the scope of a variably modified type.  Don't set
18402         label_context_stack_se or label_context_stack_vm.
18403         (struct c_switch): Remove blocked_stmt_expr and blocked_vm
18404         fields.  Add bindings field.
18405         (c_start_case): Don't set deleted fields.  Set bindings field.
18406         (do_case): Rework order of tests.  Don't check blocked_stmt_expr
18407         or blocked_vm.  Call c_check_switch_jump_warnings.
18408         (c_finish_case): Don't test blocked_stmt_expr field.  Call
18409         c_release_switch_bindings.
18410         (c_begin_stmt_expr): Don't increment blocked_stmt_expr in
18411         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
18412         set label_context_stack_se.  Call c_bindings_start_stmt_expr.
18413         (c_finish_stmt_expr): Don't decrement blocked_stmt_expr in
18414         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
18415         set label_context_stack_se.  Call c_bindings_end_stmt_expr.
18416         (c_begin_vm_scope, c_end_vm_scope): Don't define.
18417         * c-tree.h (C_DECL_UNJUMPABLE_STMT_EXPR): Don't define.
18418         (C_DECL_UNDEFINABLE_STMT_EXPR): Don't define.
18419         (C_DECL_UNJUMPABLE_VM): Don't define.
18420         (C_DECL_UNDEFINABLE_VM): Don't define.
18421         (struct c_label_list): Don't define.
18422         (struct c_label_context_se): Don't define.
18423         (struct c_label_context_vm): Don't define.
18424         (struct c_spot_bindings): Declare.
18425         (c_bindings_start_stmt_expr): Declare.
18426         (c_bindings_end_stmt_expr): Declare.
18427         (lookup_label_for_goto): Declare.
18428         (c_get_switch_bindings, c_release_switch_bindings): Declare.
18429         (c_check_switch_jump_warnings): Declare.
18430         (label_context_stack_se, label_context_stack_vm): Don't declare.
18431         (c_finish_goto_label): Update declaration.
18432         (c_begin_vm_scope, c_end_vm_scope): Don't declare.
18433         * doc/invoke.texi (Option Summary): Mention -Wjump-misses-init.
18434         (Warning Options): Document -Wjump-misses-init.
18435
18436 2009-06-15  Jakub Jelinek  <jakub@redhat.com>
18437
18438         * tree-object-size.c (addr_object_size): Fix a pasto in the last
18439         change.
18440
18441 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
18442
18443         * cgraph.c (cgraph_make_node_local): Use DECL_COMDAT_GROUP.
18444
18445 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
18446
18447         * except.c (init_eh): Use BUILTINS_LOCATION when calling build_decl.
18448
18449 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
18450
18451         * tree-eh.c (lower_try_finally_switch): Initialize tf_loc.
18452
18453 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
18454
18455         * cgraphunit.c (cgraph_function_versioning,save_inline_function_body):
18456         Use DECL_COMDAT_GROUP instead of DECL_ONE_ONLY.
18457         * cgraph.c (cgraph_create_virtual_clone): Use DECL_COMDAT_GROUP.
18458         * config/i386/i386.c (ix86_file_end): Compute DECL_COMDAT_GROUP.
18459         * dwarf2asm.c (dw2_force_const_mem): Update call to
18460         make_decl_one_only.
18461         * langhooks-def.h (lhd_comdat_group, LANG_HOOKS_COMDAT_GROUP): Remove.
18462         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_COMDAT_GROUP.
18463         * langhooks.c (lhd_comdat_group): Remove.
18464         * langhooks.h (lang_hooks_for_decls): Remove comdat_group.
18465         * tree.h (DECL_COMDAT_GROUP): New.
18466         (DECL_ONE_ONLY): Use DECL_COMDAT_GROUP.
18467         (tree_decl_with_vis): Add comdat_group. Remove one_only.
18468         (make_decl_one_only): Change signature.
18469         * varasm.c (get_emutls_init_templ_addr, emutls_decl): Update call to
18470         make_decl_one_only.
18471         (make_decl_one_only): Change signature.
18472         (default_elf_asm_named_section): Use DECL_COMDAT_GROUP.
18473
18474 2009-06-15  Richard Guenther  <rguenther@suse.de>
18475
18476         PR middle-end/40439
18477         * tree.c (widest_int_cst_value): Fix bootstrap on 32bit HWI hosts.
18478
18479 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
18480
18481         * tree-ssa-math-opts.c: Remove extra divide.
18482
18483 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
18484
18485         * config/s390/s390.md ("bswap<mode>2"): Only available on z900.
18486
18487 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
18488
18489         * passes.c: Add bswap pass.
18490         * tree-pass.h: Add pass_optimize_bswap declaration.
18491         * tree-ssa-math-opts.c: Include diagnostics.h for print_gimple_stmt.
18492         Include rtl.h, expr.h and optabs.h for optab_handler check.
18493         (struct symbolic_number, pass_optimize_bswap): New definition.
18494         (do_shift_rotate, verify_symbolic_number_p): New functions.
18495         (find_bswap_1, find_bswap, execute_optimize_bswap): New functions.
18496         (gate_optimize_bswap): New function.
18497         * tree.c (widest_int_cst_value): New function.
18498         * tree.h (widest_int_cst_value): Prototype added.
18499
18500 2009-06-14  Steven Bosscher  <steven@gcc.gnu.org>
18501
18502         * cfgcleanup.c (old_insns_match_p): Remove code to substitute
18503         REG_EQUAL/REG_EQUIV notes.
18504
18505 2009-06-14  Richard Guenther  <rguenther@suse.de>
18506
18507         PR middle-end/40389
18508         * gimple.c (walk_stmt_load_store_addr_ops): The LHS of a call
18509         has its address taken if NRV was applied and it is addressable.
18510         * tree-ssa-structalias.c (get_constraint_for_address_of): New
18511         function split out from ...
18512         (get_constraint_for_1): ... here.
18513         (handle_rhs_call): Use it to mark the return slot escaped if
18514         it is addressable and NRV was applied.
18515
18516 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
18517
18518         * config/rs6000/rs6000-protos.h (altivec_resolve_overloaded_builtin):
18519         Change first argument type to location_t.
18520         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Same.
18521         Do not set input_location.
18522         Use loc instead of input_location throughout.
18523
18524 2009-06-13  Richard Guenther  <rguenther@suse.de>
18525
18526         PR tree-optimization/40421
18527         * tree-predcom.c (should_unroll_loop_p): Remove.
18528         (tree_predictive_commoning_loop): Use can_unroll_loop_p.
18529
18530 2009-06-13  Michael Meissner  <meissner@linux.vnet.ibm.com>
18531
18532         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
18533         Add location argument.
18534
18535 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
18536
18537         * config/alpha/alpha.c (alpha_build_builtin_va_list): Pass location to
18538         build_decl.
18539         * config/s390/s390.c (s390_build_builtin_va_list): Same.
18540         (s390_gimplify_va_arg): Pass location to create_artificial_label.
18541         * config/spu/spu-protos.h: Add location to
18542         spu_resolve_overloaded_builtin.
18543         * config/spu/spu.c (spu_build_builtin_va_list): Pass location to
18544         spu_build_builtin_va_list.
18545         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Add location
18546         argument.  Pass location to build_function_call_vec.
18547         * config/sh/sh.c (sh_build_builtin_va_list): Pass location to
18548         build_decl.
18549         (emit_fpu_switch): Same.
18550         (sh_gimplify_va_arg_expr): Pass location to create_artificial_label.
18551         * config/xtensa/xtensa.c (xtensa_build_builtin_va_list): Pass location
18552         to build_decl and create_artificial_label.
18553         (xtensa_gimplify_va_arg_expr): Same.
18554         * config/stormy16/stormy16.c (xstormy16_build_builtin_va_list): Same.
18555         (xstormy16_gimplify_va_arg_expr): Same.
18556         * config/iq2000/iq2000.c (iq2000_expand_prologue): Same.
18557         * config/arm/arm.c (arm_build_builtin_va_list): Same.
18558         * config/mips/mips.c (mips_build_builtin_va_list): Same.
18559         (mips16_build_function_stub): Same.
18560         (mips16_build_call_stub): Same.
18561
18562 2009-06-13  Richard Earnshaw  <rearnsha@arm.com>
18563
18564         PR target/40327
18565         * arm/constraints.md (Pa, Pb): New constraints.
18566         * arm/arm.md (thumb1_addsi3): Support more complex additions.  Add a
18567         split pattern to deal with them.
18568
18569 2009-06-13  Joerg Sonnenberger  <joerg@britannica.bec.de>
18570
18571         * doc/invoke.texi: Add missing option -Wp,OPTION in list,
18572         fix index entry for -Xpreprocessor.
18573
18574 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
18575
18576         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
18577         Add location argument to build_decl call.
18578         * config/rs6000/rs6000.c (rs6000_build_builtin_va_list): Same.
18579         (rs6000_init_builtins): Same.
18580         (spe_init_builtins): Same.
18581         (rs6000_gimplify_va_arg): Add location argument to
18582         create_artificial_label call.
18583
18584 2009-06-12  Steven Bosscher  <steven@gcc.gnu.org>
18585
18586         * timevar.def (TV_COMBINE_STACK_ADJUST): New timevar.
18587         * combine-stack-adj.c (pass_stack_adjustments): Use it.
18588         * Makefile.in: Fix GGC dependency for gcse.o.
18589
18590 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
18591
18592         * tree-pretty-print.c (dump_generic_node): Dump column numbers.
18593         * gimple-pretty-print.c (dump_gimple_stmt): Same.
18594         * gimplify.c (gimplify_modify_expr): Set location for GIMPLE_ASSIGNs
18595         created.
18596         * c-parser.c (c_parser_binary_expression): Use current column while
18597         building binary operations.
18598         * common.opt (fshow-column): Enable by default.
18599         * tree-vrp.c (check_array_ref): Use warning_at.
18600         (check_array_bounds): Use location from call back if expr has no
18601         location.
18602         * tree.h: Add location argument to maybe_fold_*.
18603         * tree-ssa-ccp.c (ccp_fold): Pass location to maybe_fold_*.
18604         (maybe_fold_offset_to_array_ref): Add location argument and use it.
18605         (maybe_fold_offset_to_component_ref): Same.
18606         (maybe_fold_offset_to_reference): Same.
18607         (maybe_fold_offset_to_address): Same.
18608         (maybe_fold_stmt_indirect): Same.
18609         (maybe_fold_stmt_addition): Same.
18610         (fold_stmt_r): Pass location to maybe_fold_*.
18611         (fold_gimple_assign): Same.
18612         * c-tree.h: Add location argument to finish_decl,
18613         default_function_array_conversion, store_init_value.
18614         * c-decl.c (define_label): Use error_at.
18615         (c_make_fname_decl): Pass location to finish_decl.
18616         (finish_decl): New location argument.
18617         (build_compound_literal): Pass location to store_init_value.
18618         (grokdeclarator): Pass location to finish_decl.
18619         (grokfield): Same.
18620         * c-typeck.c (array_to_pointer_conversion): New location argument.
18621         (function_to_pointer_conversion): Same.
18622         (default_function_array_conversion): Same.
18623         (parser_build_unary_op): Pass location to overflow_warning.
18624         (parser_build_binary_op): Same.  Use warning_at.
18625         (build_unary_op): Pass location to array_to_pointer_conversion.
18626         (build_c_cast): Pass location to digest_init.
18627         (build_modify_expr): New location argument.
18628         (convert_for_assignment): Same.
18629         (store_init_value): Same.
18630         (digest_init): Same.
18631         (output_init_element): Pass location to digest_init and
18632         array_to_pointer_conversion.
18633         (c_finish_return): Pass location to convert_for_assignment.
18634         * gimplify.c (gimplify_conversion): Pass location to
18635         maybe_fold_offset_to_address.
18636         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Pass location
18637         to maybe_fold_stmt_addition.
18638         * c-omp.c (c_finish_omp_atomic): Pass new location to
18639         build_modify_expr.
18640         (c_finish_omp_for): Same.
18641         * c-common.c (overflow_warning): New argument.
18642         * c-common.h: New argument to build_modify_expr, overflow_warning.
18643         * c-parser.c (c_parser_declaration_or_fndef): Pass location to
18644         finish_decl.
18645         (c_parser_initializer): Pass location to
18646         default_function_array_conversion.
18647         (c_parser_initelt): Same.
18648         (c_parser_initval): Same.
18649         (c_parser_asm_operands): Same.
18650         (c_parser_expr_no_commas): Same.  Pass location to build_modify_expr.
18651         (c_parser_conditional_expression): Same.
18652         (c_parser_binary_expression): Add location info to stack.  Use it.
18653         (c_parser_unary_expression): Pass location to
18654         default_function_array_conversion, parser_build_unary_op,
18655         build_indirect_ref, c_parser_postfix_expression_after_primary.
18656         (c_parser_postfix_expression_after_primary): New location argument.
18657         Use it.
18658         (c_parser_expression_conv): Pass location to
18659         default_function_array_conversion.
18660         (c_parser_expr_list): Same.
18661         (c_parser_omp_atomic): Same.
18662         (c_parser_omp_for_loop): Same.
18663         * c-tree.h (struct c_declarator): Add comment to id_loc.
18664         (build_array_declarator): New argument.
18665         * c-decl.c (build_array_declarator): Add location argument.
18666         (grokdeclarator): Set id_loc for cdk_array.
18667         * c-parser.c (c_parser_direct_declarator_inner): Pass location to
18668         build_array_declarator.
18669         * tree.c (build_omp_clause): Add location argument.
18670         * tree.h (OMP_CLAUSE_HAS_LOCATION): New macro.
18671         (OMP_CLAUSE_LOCATION): New macro.
18672         (struct tree_omp_clause): Add location field.
18673         (build_omp_clause): Add argument.
18674         * cp/pt.c (tsubst_omp_for_iterator): Pass location to
18675         build_omp_clause.
18676         * cp/parser.c (cp_parser_omp_var_list_no_open): Same.
18677         (cp_parser_omp_clause_collapse): Same.
18678         (cp_parser_omp_clause_default): Same.
18679         (cp_parser_omp_clause_if): Same.
18680         (cp_parser_omp_clause_nowait): Same.
18681         (cp_parser_omp_clause_num_threads): Same.
18682         (cp_parser_omp_clause_ordered): Same.
18683         (cp_parser_omp_clause_schedule): Same.
18684         (cp_parser_omp_clause_untied): Same.
18685         (cp_parser_omp_for_loop): Same.
18686         (cp_parser_omp_parallel): Pass location to c_split_parallel_clauses.
18687         * c-tree.h (c_start_case): Add location argument.
18688         (c_process_expr_stmt): Same.
18689         (c_finish_goto_*): Same.
18690         * tree-parloops.c (initialize_reductions): Pass location to
18691         build_omp_clause.
18692         (create_parallel_loop): Same.
18693         * fortran/trans-openmp.c (gfc_trans_omp_variable_list): Same.
18694         (gfc_trans_omp_reduction_list): Same.
18695         (gfc_trans_omp_clauses): Same.
18696         (gfc_trans_omp_do): Same.
18697         * c-typeck.c (c_finish_goto_label): Same.
18698         (c_finish_goto_ptr): New location argument.
18699         (c_start_case): Same.
18700         (emit_side_effect_warnings): Same.
18701         (c_process_expr_stmt): Same.
18702         (c_finish_stmt_expr): Same.
18703         (c_finish_omp_clauses): Use error_at instead of error.
18704         * gimplify.c (gimplify_adjust_omp_clauses_1): Pass location to
18705         build_omp_clause.
18706         * c-omp.c (c_split_parallel_clauses): New location argument.
18707         * tree-nested.c (convert_nonlocal_reference_stmt): Pass location
18708         to build_omp_clause.
18709         (convert_local_reference_stmt): Same.
18710         (convert_gimple_call): Same.
18711         * c-common.h (c_split_parallel_clauses): New argument.
18712         * c-parser.c (c_parser_statement_after_labels): Pass location to
18713         c_finish_goto_label.
18714         (c_parser_switch_statement): Pass location to c_start_case.
18715         (c_parser_for_statement): Pass location to c_finish_expr_stmt,
18716         and c_process_expr_stmt.
18717         (c_parser_omp_variable_list): Add location argument.
18718         (c_parser_omp_clause_collapse): Pass location to build_omp_clause.
18719         (c_parser_omp_clause_default): Same.
18720         (c_parser_omp_clause_if): Same.
18721         (c_parser_omp_clause_num_threads): Same.
18722         (-c_parser_omp_clause_ordered): Same.
18723         (c_parser_omp_clause_reduction): Pass location to
18724         c_parser_omp_variable_list.
18725         (c_parser_omp_clause_schedule): Pass location to build_omp_clause.
18726         (c_parser_omp_clause_untied): Same.
18727         (c_parser_omp_for_loop): Pass location to c_process_expr_stmt.
18728         (c_parser_omp_parallel): Pass location to c_split_parallel_clauses.
18729
18730         * c-tree.h (check_for_loop_decls, undeclared_variable,
18731         build_component_ref, build_array_ref, build_external_ref,
18732         c_expr_sizeof_expr, c_expr_sizeof_type, parser_build_unary_op,
18733         build_conditional_expr, build_compound_expr, c_cast_expr,
18734         build_c_cast, build_asm_expr, c_end_compound_stmt, c_finish_stmt_expr,
18735         c_finish_return, c_finish_omp_parallel, c_finish_omp_task): New
18736         argument.
18737         * c-semantics.c (build_stmt): Same.
18738         (build_case_label): Same.
18739         * c-decl.c (c_finish_incomplete_decl): Pass location on down.
18740         (undeclared_variable): New argument.
18741         (make_label): Same.
18742         (lookup_label): Pass location on down.
18743         (define_label): Same.
18744         (finish_decl): Same.
18745         (build_compound_literal): Same.
18746         (finish_struct): Same.
18747         (finish_function): Do not set location here.
18748         (check_for_loop_decls): New argument.
18749         * tree.c (save_expr): Set location.
18750         (build_empty_stmt): New argument.
18751         * tree.h (build_empty_stmt): New argument to build_empty_stmt.
18752         (CAN_HAVE_LOCATION_P): Make sure we have a non empty node.
18753         * builtins.c (gimplify_va_arg_expr): Use locations.
18754         (expand_builtin_sync_operation): Same.
18755         * c-typeck.c (build_component_ref): New argument.
18756         (build_array_ref): Same.
18757         (build_external_ref): Same.
18758         (c_expr_sizeof_expr): Same.
18759         (c_expr_sizeof_type): Same.
18760         (parser_build_unary_op): Same.
18761         (build_conditional_expr): Same.
18762         (build_compound_expr): Pass location on down.
18763         (build_compound_expr): New argument.
18764         (build_c_cast): Same.
18765         (c_cast_expr): Same.
18766         (build_asm_expr): Same.
18767         (c_finish_return): Same.
18768         (c_process_expr_stmt): Pass location on down.
18769         (c_finish_stmt_expr): New argument.
18770         (push_clenaup): Same.
18771         (c_finish_omp_parallel): Same.
18772         (c_finish_omp_task): Same.
18773         * gimplify.c (gimplify_call_expr): Pass location on down.
18774         * c-omp.c (c_finish_omp_master): New argument.
18775         (c_finish_omp_critical): Same.
18776         (c_finish_omp_ordered): Same.
18777         (c_finish_omp_barrier): Same.
18778         (-c_finish_omp_taskwait): Same.
18779         (c_finish_omp_atomic): Same.
18780         (c_finish_omp_flush): Same.
18781         * tree-inline.c (copy_tree_body_r): Pass location on down.
18782         (inline_forbidden_p): Remove use of input_location.
18783         * c-gimplify.c (c_build_bind_expr): New argument.
18784         * c-common.c (c_common_truthvalue_conversion): Pass location on down.
18785         (c_sizeof_or_alignof_type): New argument.
18786         (c_alignof_expr): Same.
18787         (build_va_arg): Same.
18788         (c_add_case_label): Same.
18789         * c-common.h (c_sizeof_or_alignof_type, c_alignof_expr,
18790         c_sizeof, c_alignof, build_va_arg, build_stmt, build_case_label,
18791         c_build_bind_expr, objc_build_selector_expr, objc_build_throw_stmt,
18792         c_finish_omp_master, c_finish_omp_critical, c_finish_omp_ordered,
18793         c_finish_omp_barrier, c_finish_omp_atomic, c_finish_omp_flush,
18794         c_finish_omp_taskwait, c_finish_omp_for, c_split_parallel_clauses):
18795         New argument.
18796         * stub-objc.c (objc_build_selector_expr): Same.
18797         (objc_build_throw_stmt): Same.
18798         * c-parser.c (c_parser_declaration_or_fndef): Pass location on down.
18799         (c_parser_initelt): Same.
18800         (c_parser_compound_statement): Same.
18801         (c_parser_compound_statement_nostart): Same.
18802         (c_parser_label): Same.
18803         (c_parser_statement_after_labels): Same.
18804         (c_parser_if_body): Same.
18805         (c_parser_else_body): Same.
18806         (c_parser_if_statement): Same.
18807         (c_parser_switch_statement): Same.
18808         (c_parser_while_statement): Same.
18809         (c_parser_do_statement): Same.
18810         (c_parser_for_statement): Same.
18811         (c_parser_asm_statement): Same.
18812         (c_parser_conditional_expression): Same.
18813         (c_parser_binary_expression): Same.
18814         (c_parser_cast_expression): Same.
18815         (c_parser_unary_expression): Same.
18816         (c_parser_sizeof_expression): Same.
18817         (c_parser_alignof_expression): Same.
18818         (c_parser_postfix_expression): Same.
18819         (c_parser_expression): Same.
18820         (c_parser_objc_receiver): Same.
18821         (c_parser_omp_variable_list): Same.
18822         (c_parser_omp_structured_block): Same.
18823         (c_parser_omp_atomic): New argument.
18824         (c_parser_omp_barrier): Same.
18825         (c_parser_omp_critical): Same.
18826         (c_parser_omp_flush): Pass location on down.
18827         (c_parser_omp_for_loop): New argument.
18828         (c_parser_omp_for): Same.
18829         (c_parser_omp_master): Same.
18830         (c_parser_omp_ordered): Same.
18831         (c_parser_omp_sections_scope): Same.
18832         (c_parser_omp_sections): Same.
18833         (c_parser_omp_parallel): Same.
18834         (c_parser_omp_single): Same.
18835         (c_parser_omp_task): Same.
18836         (c_parser_omp_taskwait): Pass location on down.
18837         (c_parser_omp_construct): Same.
18838         (c_parser_omp_threadprivate): Same.
18839         * dwarf2asm.c, targhooks.c, optabs.c, tree.c, tree.h, target.h,
18840         builtins.c, omp-low.c, cgraphunit.c, tree-call-cdce.c,
18841         tree-ssa-alias.c, gimple-low.c, c-tree.h, expr.c, tree-parloops.c,
18842         c-decl.c, tree-eh.c, langhooks.c, function.c, stor-layout.c,
18843         c-typeck.c, gimplify.c, c-pragma.c, expmed.c, except.c, coverage.c,
18844         emit-rtl.c, cfgexpand.c, tree-mudflap.c, varasm.c, tree-nested.c,
18845         rtl.h, tree-inline.c, tree-profile.c, c-common.c, c-common.h,
18846         tree-switch-conversion.c, tree-cfg.c, ipa-struct-reorg.c, c-parser.c,
18847         config/i386/i386.c, stmt.c:
18848         Add location argument to the following function definitions and/or
18849         function calls: build_decl, objcp_start_struct, objcp_finish_struct,
18850         start_struct, finish_struct, PUSH_FIELD, create_artificial_label,
18851         cp_make_fname_decl, pushtag, implicitly_declare, c_make_fname_decl,
18852         build_compound_literal, parser_xref_tag, resolve_overloaded_builtin,
18853         do_case, c_finish_bc_stmt, build_compound_literal,
18854         build_function_call.
18855         * c-decl.c (build_compound_literal): Add location argument.
18856         Make all diagnostic calls use location.
18857         (start_struct): Same.
18858         (finish_struct): Same.
18859         (start_enum): Same.
18860         (build_enumerator): Same.
18861         (start_function): Same.
18862         (grokdeclarator): Make all diagnostic calls use location.
18863         (store_parm_decls_oldstyle): Same.
18864         * c-typeck.c (build_function_call): Add location argument.
18865         Make all diagnostic calls use location.
18866         (do_case): Same.
18867         (c_finish_bc_stmt): Same.
18868         * tree-nested.c (get_trampoline_type): Add argument.
18869         Pass location to build_decl.
18870         (lookup_tramp_for_decl): Pass location to get_trampoline_type.
18871         * rtl.h (RTL_LOCATION): New.
18872         * c-common.c (c_add_case_label): Add location argument.
18873         Make all diagnostic calls use location.
18874         * c-common.h: Add location argument to make_fname_decl, do_case,
18875         c_add_case_label, build_function_call, resolve_overloaded_builtin.
18876         * c-parser.c (c_parser_enum_specifier): Rename ident_loc to enum_loc.
18877         Set it appropriately for every case.  Pass enum_loc to start_enum
18878         call.  Pass value_loc first to build_enumerator.  Pass enum_loc to
18879         parser_xref_tag.
18880         (c_parser_struct_or_union_specifier): Save location.  Use it for
18881         start_struct, finish_struct, and parser_xref_tag.
18882
18883 2009-06-12  Ian Lance Taylor  <iant@google.com>
18884
18885         * fold-const.c (fold_unary): Rename local variable and to and_expr.
18886
18887         * c-opts.c (c_common_handle_option): For -Wc++-compat set
18888         cpp_opts->warn_cxx_operator_names.
18889
18890 2009-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18891
18892         PR tree-opt/38865
18893         * tree-ssa-sccvn.c (visit_reference_op_load): If vn_reference_lookup
18894         is returns NULL and OP is a VCE, look through the VCE.
18895
18896 2009-06-12  Ian Lance Taylor  <iant@google.com>
18897
18898         PR bootstrap/40430
18899         * collect2.c (main): Use CONST_CAST2 in code inside #if
18900         LINK_ELIMINATE_DUPLICATE_LDIRECTORIES.
18901
18902 2009-06-12  Joey Ye  <joey.ye@intel.com>
18903
18904         PR middle-end/39146
18905         * cfgexpand.c (get_decl_align_unit): Update
18906         max_used_stack_slot_alignment with align instead of
18907         stack_alignment_needed.
18908
18909         * function.c (assign_stack_local_1): Update
18910         max_used_stack_slot_alignment with alignment_in_bits instead
18911         of stack_alignment_needed.
18912         (locate_and_pad_parm): Don't update max_used_stack_slot_alignment
18913         here.
18914
18915 2009-06-12  Jakub Jelinek  <jakub@redhat.com>
18916
18917         * dwarf2out.c (last_var_location_insn): New variable.
18918         (dwarf2out_end_epilogue): Clear last_var_location_insn.
18919         (dwarf2out_var_location): Don't record anything after last real
18920         insn.  Only change labels if there were any real instructions
18921         in between last note and this one, or if changed sections.
18922
18923 2009-06-11  Richard Henderson  <rth@redhat.com>
18924
18925         * alpha.c (alpha_expand_prologue): Add a REF_CFA_REGISTER
18926         note when storing the frame pointer in a register.
18927         (FRP): Don't redefine to nothing for epilogue.
18928         (alpha_expand_epilogue): Mark register and sp restores.
18929         (unicosmk_gen_dsib): Don't mark weird frame pointer adjust.
18930
18931         * config/alpha/alpha.c (alpha_emit_setcc): Fix test for
18932         when gen_lowpart is needed.
18933
18934 2009-06-11  Richard Henderson  <rth@redhat.com>
18935
18936         * dwarf2out.c (def_cfa_1): Likewise for DW_CFA_cfa_offset.
18937
18938         * dwarf2out.c (need_data_align_sf_opcode): New.
18939         (div_data_align): Move earlier.
18940         (def_cfa_1, reg_save): Use it.
18941
18942 2009-06-11  H.J. Lu  <hongjiu.lu@intel.com>
18943
18944         * config/i386/i386.c (OPTION_MASK_ISA_CRC32_SET): New.
18945         (OPTION_MASK_ISA_CRC32_UNSET): Likewise.
18946         (ix86_handle_option): Handle OPT_mcrc32.
18947         (ix86_target_string): Add -mcrc32.
18948         (bdesc_args): Enable crc32 builtins with OPTION_MASK_ISA_CRC32.
18949
18950         * config/i386/i386.h (TARGET_CRC32): New.
18951
18952         * config/i386/i386.md (sse4_2_crc32<mode>): Also check TARGET_CRC32.
18953         (sse4_2_crc32di): Likewise.
18954
18955         * config/i386/i386.opt (mcrc32): New.
18956
18957         * doc/invoke.texi: Document -mcrc32.
18958
18959 2009-06-11  Richard Henderson  <rth@redhat.com>
18960
18961         * common.opt (gdwarf-): Accept a version number.
18962         * doc/invoke.texi (gdwarf-): Update docs.
18963         * opth-gen.awk: Special case -gdwarf+ to OPT_gdwarfplus.
18964         * opts.c (common_handle_option) [OPT_gdwarf_]: Verify dwarf
18965         version level, and record it.
18966
18967         * dwarf2.h (DW_CIE_VERSION): Remove.
18968         * dwarf2out.c (DWARF_VERSION): Remove.
18969         (add_fde_cfi): Skip DW_CFA_set_loc addition for dwarf3.
18970         (output_call_frame_info): Use CIE version 3 for dwarf3,
18971         or if the return register column is out of range for version 1.
18972         (dwarf_stack_op_name): Add all dwarf3 values.
18973         (DEBUG_PUBTYPES_SECTION): New.
18974         (size_of_die) [dw_val_class_die_ref]: Handle DW_FORM_ref_addr
18975         encoding change for dwarf3.
18976         (output_die) [dw_val_class_die_ref]: Likewise.
18977         (output_compilation_unit_header): Emit correct version for dwarf3.
18978         (output_line_info): Likewise.
18979         (output_pubnames): Update for DWARF_VERSION removal.
18980         (output_aranges): Likewise.
18981         (gen_subprogram_die): Emit DW_OP_call_frame_cfa if emitting dwarf3.
18982         (dwarf2out_init): Don't ifdef DEBUG_PUBTYPES_SECTION.
18983         (dwarf2out_finish): Likewise.
18984
18985 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
18986
18987         * system.h (gcc_assert, gcc_unreachable): Revert accidental commit
18988         in r148403.
18989
18990 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
18991
18992         PR c/39252
18993         * doc/extend.texi ( __builtin_unreachable): Document new builtin.
18994         * builtins.c (expand_builtin_unreachable): New function.
18995         (expand_builtin): Handle BUILT_IN_UNREACHABLE case.
18996         * builtins.def (BUILT_IN_UNREACHABLE): Add new builtin.
18997         * cfgcleanup.c (try_optimize_cfg): Delete empty blocks with no
18998         successors.
18999         * cfgrtl.c (rtl_verify_flow_info): Handle empty blocks when
19000         searching for missing barriers.
19001
19002 2009-06-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
19003
19004         * config/darwin.h (LINK_COMMAND_SPEC): Adjust spec to link libcov
19005         when -fprofile-generate* was passed.
19006         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
19007
19008 2009-06-11  Anthony Green  <green@moxielogic.com>
19009
19010         * config/moxie/moxie.md: Define length attribute for all instructions.
19011         (rCC): Define.
19012         (*b<cond:code>): Support limited branch ranges for new PC-relative
19013         branch instructions.
19014         * config/moxie/moxie.h (HAS_LONG_UNCOND_BRANCH): Define.
19015
19016 2009-06-11  Jakub Jelinek  <jakub@redhat.com>
19017
19018         * config/i386/i386.c (min_insn_size): Use get_attr_length
19019         for normal insns other than TYPE_MULTI, TYPE_OTHER and TYPE_FCMP.
19020         For __asm return 0.
19021
19022         * config/i386/i386.c (ix86_pad_returns): Use emit_jump_insn_before
19023         instead of emit_insn_before.
19024
19025 2009-06-10  Ian Lance Taylor  <iant@google.com>
19026
19027         PR bootstrap/40408
19028         * graphite.c (add_conditions_to_domain): Change SWITCH_EXPR to
19029         GIMPLE_SWITCH.
19030
19031 2009-06-10  Revital Eres  <eres@il.ibm.com>
19032
19033         * passes.c (init_optimization_passes): Reschedule
19034         predictive-commoning pass before complete unroll pass.
19035
19036 2009-06-10  Martin Jambor  <mjambor@suse.cz>
19037
19038         * cgraph.c (cgraph_node_can_be_local_p): New function.
19039         (cgraph_make_node_local): New function.
19040         * cgraph.h (cgraph_node_can_be_local_p): Declare.
19041         (cgraph_make_node_local): Declare.
19042
19043 2009-06-10  Nathan Froyd  <froydnj@codesourcery.com>
19044
19045         * tree.h (tree_base): Add packed_flag and user_align fields.
19046         Decrease size of spare field.
19047         (TYPE_USER_ALIGN): Use user_align from tree_base.
19048         (DECL_USER_ALIGN): Likewise.
19049         (TYPE_PACKED): Use packed_flag from tree_base.
19050         (DECL_PACKED): Likewise.
19051         (tree_type): Delete packed_flag and user_align fields.  Widen
19052         precision field.  Widen mode field and shuffle fields to align
19053         mode on an 8-bit boundary.
19054         (tree_decl_common): Delete decl_flag_1 and user_align fields.
19055         Renumber decl_flag_* fields.  Fix comments.  Widen
19056         decl_common_unused field.
19057         (DECL_HAS_VALUE_EXPR_P): Adjust for renumbering of decl_flag_* fields.
19058         (DECL_EXTERNAL): Likewise.
19059         (DECL_BIT_FIELD): Likewise.
19060         (DECL_NONADDRESSABLE_P): Likewise.
19061         (TYPE_DECL_SUPRESS_DEBUG): Likewise.
19062         * config/arm/arm-modes.def (XImode): Make it an INT_MODE.
19063
19064 2009-06-10  Ian Lance Taylor  <iant@google.com>
19065
19066         * vec.h (DEF_VEC_ALLOC_I): Use DEF_VEC_NONALLOC_FUNCS_I.
19067         (DEF_VEC_ALLOC_P): Use DEF_VEC_NONALLOC_FUNCS_P.
19068         (DEF_VEC_ALLOC_O): Use DEF_VEC_NONALLOC_FUNCS_O.
19069         (DEF_VEC_ALLOC_FUNC_P): Only define VEC_OP (T,A,alloc).
19070         (DEF_VEC_NONALLOC_FUNCS_P): New macro, broken out of old
19071         DEF_VEC_ALLOC_FUNC_P.
19072         (DEF_VEC_ALLOC_FUNC_O): Only define VEC_OP (T,A,alloc).
19073         (DEF_VEC_NONALLOC_FUNCS_O): New macro, broken out of old
19074         DEF_VEC_ALLOC_FUNC_O.
19075         (DEF_VEC_ALLOC_FUNC_I): Only define VEC_OP (T,A,alloc).
19076         (DEF_VEC_NONALLOC_FUNCS_I): New macro, broken out of old
19077         DEF_VEC_ALLOC_FUNC_I.
19078         (vec_stack_p_reserve, vec_stack_p_reserve_exact): Declare.
19079         (vec_stack_p_reserve_exact_1): Declare.
19080         (vec_stack_o_reserve, vec_stack_o_reserve_exact): Declare.
19081         (vec_stack_free): Declare.
19082         (VEC_stack_alloc): Define.
19083         (DEF_VEC_ALLOC_P_STACK, DEF_VEC_ALLOC_FUNC_P_STACK): Define.
19084         (DEF_VEC_ALLOC_O_STACK, DEF_VEC_ALLOC_FUNC_O_STACK): Define.
19085         (DEF_VEC_ALLOC_I_STACK, DEF_VEC_ALLOC_FUNC_I_STACK): Define.
19086         * vec.c (void_p): New type.  Call DEF_VEC_P and DEF_VEC_ALLOC_P
19087         for void_p.
19088         (stack_vecs): New static variable.
19089         (vec_stack_p_reserve_exact_1): New function.
19090         (vec_stack_o_reserve_1): New static function.
19091         (vec_stack_p_reserve, vec_stack_p_reserve_exact): New functions.
19092         (vec_stack_o_reserve, vec_stack_o_reserve_exact): New functions.
19093         (vec_stack_free): New function.
19094         * df-scan.c (df_ref): Use DEF_VEC_P and DEF_VEC_ALLOC_P_STACK.
19095         (VEC_df_ref_stack_alloc): Define.
19096         (df_mw_hardreg_ptr): New type.  Use DEF_VEC_P and
19097         DEF_VEC_ALLOC_P_STACK.
19098         (VEC_df_mw_hardreg_ptr_stack_alloc): Define.
19099         (struct df_collection_rec): Change _vec fields to VEC.  Remove
19100         _use fields.
19101         (df_free_collection_rec): Adjust for new fields.
19102         (df_insn_rescan): Use new df_collection_rec fields.
19103         (df_notes_rescan, df_canonize_collection_rec): Likewise.
19104         (df_ref_create_structure, df_ref_record): Likewise.
19105         (df_get_conditional_uses, df_get_call_refs): Likewise.
19106         (df_insn_refs_collect, df_bb_refs_collect): Likewise.
19107         (df_bb_refs_record, df_record_entry_block_defs): Likewise.
19108         (df_record_exit_block_uses, df_bb_verify): Likewise.
19109         (df_swap_refs): Change ref_vec parameter to VEC.  Change all callers.
19110         (df_sort_and_compress_refs): Change ref_vec parameter to VEC.
19111         Remove count parameter.  Change return type to void.  Change all
19112         callers.
19113         (df_sort_and_compress_mws): Change mw_vec parameter to VEC.
19114         Remove count parameter.  Change return type to void.  Change all
19115         callers.
19116         (df_install_refs): Change old_vec parameter to VEC.  Remove count
19117         parameter.  Change all callers.
19118         (df_install_mws): Change old_vec parameter to VEC.  Remove count
19119         parameter.  Change all callers.
19120         (df_refs_verify): Change new_rec parameter to VEC.  Change call
19121         callers.
19122         (df_mws_verify): Likewise.
19123
19124 2009-06-10  Alexandre Oliva  <aoliva@redhat.com>
19125
19126         * gcc.c (compare_files): Cast munmap argumento to caddr_t.
19127
19128 2009-06-10  H.J. Lu  <hongjiu.lu@intel.com>
19129
19130         * doc/extend.texi: Add description for __builtin_ia32_crc32di.
19131
19132 2009-06-10  Anthony Green  <green@moxielogic.com>
19133
19134         * config/moxie/crti.asm: New file.
19135         * config/moxie/crtn.asm: New file.
19136         * config/moxie/moxie.c: New file.
19137         * config/moxie/moxie.h: New file.
19138         * config/moxie/sfp-machine.h: New file.
19139         * config/moxie/moxie-protos.h: New file.
19140         * config/moxie/t-moxie: Created.
19141         * config/moxie/t-moxie-softfp: Created.
19142         * config/moxie/moxie.md: Created.
19143         * config/moxie/constraints.md: Created.
19144         * config.gcc: Add moxie support.
19145         * doc/md.texi (Machine Constraints): Add moxie constraints.
19146         * doc/contrib.texi (Contributors): Mention moxie port.
19147         * doc/install.texi (Specific): Mention the moxie port.
19148
19149 2009-06-09  Ian Lance Taylor  <iant@google.com>
19150
19151         * system.h (HAVE_DESIGNATED_INITIALIZERS): Don't define if
19152         compiling with C++.
19153         * optabs.c (optab_table): Only use designated initializers if
19154         HAVE_DESIGNATED_INITIALIZERS is defined.
19155         (convert_optab_table): Likewise.
19156         (init_optabs): Always call init_insn_codes if
19157         HAVE_DESIGNATED_INITIALIZERS is not defined.
19158
19159 2009-06-09  Ian Lance Taylor  <iant@google.com>
19160
19161         * targhooks.c (default_builtin_vectorized_function): Change fn
19162         parameter to unsigned int.
19163         (default_builtin_vectorized_conversion): Change code parameter to
19164         unsigned int.
19165         (default_builtin_reciprocal): Change fn parameter to unsigned int.
19166         * targhooks.h: Update declarations.
19167         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Change code
19168         parameter to unsigned int.
19169
19170         * c-typeck.c (comptypes_check_enum_int): New static function.
19171         (comptypes_internal): Add enum_and_int_p parameter.  Change all
19172         callers.
19173         (comp_target_types): Add location parameter.  Change all callers.
19174         (tagged_types_tu_compatible_p): Add enum_and_int_p parameter.
19175         Change all callers.
19176         (function_types_compatible_p, type_lists_compatible_p): Likewise.
19177         (build_conditional_expr): Add colon_loc parameter.  Change all
19178         callers.
19179         (convert_for_assignment): Add location parameter.  Change all callers.
19180         * c-parser.c (c_parser_conditional_expression): Pass location of
19181         colon to build_conditional_expr.
19182         * c-tree.h (build_conditional_expr): Update declaration.
19183
19184 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
19185
19186         * graphite.c: Revert previous patch.
19187
19188 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
19189
19190         PR bootstrap/40103
19191         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
19192
19193 2009-06-09  Ghassan Shobaki  <ghassan.shobaki@amd.com>
19194
19195         * tree-ssa-loop-prefetch.c
19196         (loop_prefetch_arrays): Fixed a portability problem in printf format
19197         string.
19198
19199 2009-06-09  Martin Jambor  <mjambor@suse.cz>
19200
19201         PR tree-optimization/40351
19202         * tree-sra.c (propagate_subacesses_accross_link): Check that a
19203         refrence to a potential artifical subaccess can be constructed.
19204
19205 2009-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
19206
19207         * config/sh/sh-protos.h (sh_optimization_options): Declare.
19208         (sh_override_options): Likewise.
19209         * config/sh/sh.c: Include params.h.
19210         (sh_optimization_options): New.
19211         (sh_override_options): Likewise.
19212         * config/sh/sh.c (OPTIMIZATION_OPTIONS): Use sh_optimization_options.
19213         (OVERRIDE_OPTIONS): Use sh_override_options.
19214
19215 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
19216
19217         * dwarf2out.c (emit_cfa_remember): New variable.
19218         (add_fde_cfi): If emit_cfa_remember, recurse to add
19219         DW_CFA_remember_state first.
19220         (dwarf2out_begin_epilogue): Don't add_fde_cfi DW_CFA_remember_state,
19221         instead just set emit_cfa_remember.
19222
19223 2009-06-08  Jan Hubicka  <jh@suse.cz>
19224
19225         PR debug/40126
19226         * dwarf2out.c (dwarf2out_abstract_function): Free decl_loc_table.
19227
19228 2009-06-08  Jan Hubicka  <jh@suse.cz>
19229
19230         PR middle-end/39834
19231         * cgraphunit.c (save_inline_function_body): Do not copy transform
19232         hooks for saved inline bodies.
19233         * ipa-passes.c (do_per_function): Do not add the hoks multiple times
19234         for given function.
19235
19236 2009-06-08  Adam Nemet  <anemet@caviumnetworks.com>
19237
19238         * jump.c (returnjump_p): Handle delayed branches.  Add missing
19239         function comment.
19240
19241 2009-06-08  Jan Hubicka  <jh@suse.cz>
19242
19243         PR middle-end/40102
19244         * cgraph.c (cgraph_create_edge_including_clones): Also asume that the
19245         original node might've been modified.
19246         * tree-inline.c (copy_bb): Do not assume that all clones are the same.
19247
19248 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
19249
19250         * tree-object-size.c (addr_object_size): Add OSI argument.
19251         Handle also INDIRECT_REF with SSA_NAME inside of it as base address.
19252         (compute_builtin_object_size, expr_object_size): Adjust callers.
19253         (plus_stmt_object_size): Call addr_object_size instead of
19254         compute_builtin_object_size.
19255
19256 2009-06-08  Ghassan Shobaki  <ghassan.shobaki@amd.com>
19257             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
19258
19259         * tree-ssa-loop-prefetch.c
19260         (gather_memory_references): Introduced a counter for the number of
19261         memory references.
19262         (anything_to_prefetch_p): Introduced a counter for the number of
19263         prefetches.
19264         (is_loop_prefetching_profitable): New function with a cost model
19265         for prefetching.
19266         (loop_prefetch_arrays): Use the new cost model to determine if
19267         prefetching is profitable.
19268         * params.def (MIN_INSN_TO_PREFETCH_RATIO,
19269         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
19270         * params.h (MIN_INSN_TO_PREFETCH_RATIO,
19271         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
19272         * doc/invoke.texi (MIN_INSN_TO_PREFETCT_RATIO,
19273         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
19274
19275 2009-06-08  Michael Matz  <matz@suse.de>
19276
19277         PR debug/40012
19278         * cfgexpand.c (set_rtl): Store place also in DECL_RTL, if all
19279         partitions use the same.
19280         (expand_one_var): Deal with DECL_RTL sometimes begin set also
19281         for basevars of SSA_NAMEs.
19282         (expand_used_vars): Reset TREE_USED for basevars of SSA_NAMEs,
19283         to not expand them twice.
19284         (gimple_expand_cfg): Clear DECL_RTL for those decls that have
19285         multiple places.
19286
19287 2009-06-08  Alexandre Oliva  <aoliva@redhat.com>
19288
19289         * common.opt (fcompare-debug=, fcompare-debug-second): New.
19290         (fdump-final-insns=, gtoggle): New.
19291         * doc/invoke.texi: Document them.
19292         * final.c (rest_of_clean_state): Dump final insn stream.
19293         * gcc.c (invoke_as): Hook in -fcompare-debug.
19294         (static_spec_functions): Add compare-debug-dump-opt,
19295         compare-debug-self-opt and compare-debug-auxbase-opt.
19296         (compare_debug, compare_debug_second, compare_debug_opt): New.
19297         (switches_debug_check, n_switches_debug_check): New.
19298         (debug_auxbase_opt, debug_check_temp_file): New.
19299         (process_command): Handle -fno-compare-debug, -fcompare-debug and
19300         -fcompare-debug=*.
19301         (do_self_spec): Handle arguments after switches.
19302         (do_spec_1): Add .gk extension to temp file basenames for compare.
19303         (check_live_switch): Take SWITCH_IGNORE into account, and earlier.
19304         (cc1_options): Use it instead of normal auxbase computation for
19305         the second compare-debug compilation.
19306         (compare_files): New.
19307         (main): Set up and implement compare debug mode.
19308         (compare_debug_dump_opt_spec_function): New.
19309         (compare_debug_self_opt_spec_function): New.
19310         (compare_debug_auxbase_opt_spec_function): New.
19311         * toplev.c (process_options): Handle flag_gtoggle,
19312         flag_dump_final_insns.
19313         * coverage.c (coverage_begin_output): Don't overwrite .gcno file
19314         during -fcompare-debug-second compilation.
19315
19316 2009-06-07  Ian Lance Taylor  <iant@google.com>
19317
19318         * dwarf2.h (enum dwarf_location_atom): Add INTERNAL_DW_OP_tls_addr.
19319         * dwarf2out.c (INTERNAL_DW_OP_tls_addr): Don't #define.
19320
19321         * c-common.c (c_do_switch_warnings): Don't exit early for -Wswitch
19322         with no default node.  Change warning with %H to warning_at.
19323         Don't clear warn_switch around case checking.
19324         * doc/invoke.texi (Warning Options): Clarify distinction between
19325         -Wswitch and -Wswitch-enum.
19326
19327 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
19328
19329         * tree-pass.h (TODO_update_ssa_any): Document internal use only.
19330
19331 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
19332
19333         * gbl-ctors.h: Add header guard.
19334
19335 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
19336
19337         * tree-flow.h (make_value_handle, set_value_handle, sort_vuses,
19338         sort_vuses_heap, vn_lookup_or_add, vn_lookup_or_add_with_stmt,
19339         vn_lookup_or_add_with_vuses, vn_add, vn_add_with_vuses,
19340         vn_lookup_with_stmt, vn_lookup, vn_lookup_with_vuses): Remove
19341         prototypes for removed functions.
19342         (expressions_equal_p): Move to ...
19343         * tree-ssa-sccvn.h: ... here and ...
19344         * matrix-reorg.c: ... adjust includes.
19345
19346 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
19347
19348         * ipa-struct-reorg.c (do_reorg_1): Fix whitespace in dump output.
19349
19350 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
19351
19352         * c-decl.c (finish_decl): Use bool for variable was_incomplete.
19353         (finish_function): Remove erroneous whitespace.
19354
19355 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
19356
19357         * tree-cfg.c (gimple_merge_blocks): Commentary typo fix.
19358         (verify_stmts): Print statement who's gimple_bb is set to a wrong BB
19359
19360 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
19361
19362         * errors.c (internal_error): Commentary typo fix.
19363         * gimple-iterator.c (gsi_insert_seq_on_edge): Ditto.
19364         * tree-ssa-pre.c: Ditto.
19365
19366 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
19367
19368         * basic-block.h (ENTRY_BLOCK, EXIT_BLOCK): Document that neither of
19369         them is supposed to hold actual statements.
19370
19371 2009-06-06  Ian Lance Taylor  <iant@google.com>
19372
19373         * doc/extend.texi (Attribute Syntax): Document that C++ labels on
19374         empty statements can now have attributes.
19375
19376 2009-06-05  Shujing Zhao  <pearly.zhao@oracle.com>
19377
19378         * config/mips/mips.c: Use REG_P and CONST_INT_P where applicable.
19379         * config/mips/mips.md: Ditto.
19380
19381 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
19382
19383         * config/rs6000/eabi.asm (__eabi_convert): Don't define if
19384         _RELOCATABLE.
19385         (__eabi_uconvert): Likewise.
19386
19387 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
19388
19389         * config/rs6000/ppc-asm.h: Protect auto-host.h inclusion and
19390         CFI_* definitions with IN_GCC.
19391
19392 2009-06-05  David Edelsohn  <edelsohn@gnu.org>
19393
19394         * xcoffout.h (xcoffout_source_line): Update prototype.
19395
19396 2009-06-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19397
19398         * builtins.c (do_mpc_ckconv, do_mpc_arg1): Use
19399         mpc_realref/mpc_imagref instead of MPC_RE/MPC_IM.
19400
19401 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
19402
19403         PR middle-end/40340
19404         * tree-ssa-live.c (remove_unused_scope_block_p): Don't prune
19405         inlined_function_outer_scope_p blocks for artificial inlines
19406         even at -g0/-g1.
19407         * tree.c (tree_nonartificial_location): Rewrite using
19408         block_nonartificial_location.
19409
19410 2009-06-05  Revital Eres  <eres@il.ibm.com>
19411             Leehod Baruch  <leehod@il.ibm.com>
19412
19413         * expr.c (expand_assignment): Expand MISALIGNED_INDIRECT_REF.
19414         (expand_expr_real_1): Remove comment.
19415         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
19416         Vectorize misaligned access when the target supports it.
19417         (vect_supportable_dr_alignment): Check for unaligned access support.
19418         * tree-vect-stmts.c (vectorizable_store): Generate misaligned store
19419         and remove asset.
19420
19421 2009-06-05  Julian Brown  <julian@codesourcery.com>
19422
19423         * config/arm/ieee754-df.S (cmpdf2): Avoid writing below SP.
19424         * config/arm/ieee754-sf.S (cmpsf2): Likewise.
19425
19426 2009-06-05  Richard Guenther  <rguenther@suse.de>
19427
19428         PR bootstrap/40350
19429         * dwarf2out.c (dwarf2out_begin_function): Mark discriminator
19430         as possibly unused.
19431
19432 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
19433
19434         * config/s390/s390.c (global_not_special_regno_p): New static inline.
19435         (save_gprs): Don't tell unwinder when a global register is saved.
19436         (s390_emit_epilogue): Emit needed epilogue unwind info.
19437
19438 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
19439
19440         * dwarf2out.c (deferred_asm_name): New.
19441         (add_name_and_src_coords_attributes): Defer creation of
19442         DW_AT_MIPS_linkage_name attribute if DECL_ASSEMBLER_NAME was not
19443         computed yet.
19444         (move_linkage_attr): New.
19445         (dwarf2out_finish): Revisit deferrals and emit attributes at the
19446         right place.
19447
19448 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
19449
19450         * tree-nested.c (finalize_nesting_tree_1): Declare the
19451         frame_decl in the binding tree.
19452
19453 2009-06-04  Cary Coutant  <ccoutant@google.com>
19454
19455         * basic-block.h (struct basic_block_def): Add discriminator field.
19456         * dbxout.c (dbxout_source_line): Add new parameter.  Change all
19457         callers.
19458         * debug.c (do_nothing_debug_hooks): Add additional entry.
19459         (debug_nothing_int_charstar_int): New function.
19460         * debug.h (struct gcc_debug_hooks): Add parameter to source_line hook.
19461         (debug_nothing_int_charstar_int): New declaration.
19462         * dwarf2out.c (dwarf2out_source_line): Add new parameter.  Write
19463         discriminator value in .loc directive.
19464         * final.c (last_discriminator): New variable.
19465         (discriminator): New variable.
19466         (final_start_function): Initialize above variables, pass current
19467         discriminator to debug hook.
19468         (notice_source_line): Check for discriminator change.
19469         * gimple-pretty-print.c (dump_bb_header): Print discriminator value.
19470         * sdbout.c (sdbout_source_line): New parameter.
19471         * tree-cfg.c (struct locus_discrim_map): New structure type.
19472         (discriminator_per_locus): New hash table.
19473         (build_gimple_cfg): Allocate and free discriminator hash table.
19474         (make_edges): Call assign_discriminator.
19475         (locus_map_hash): New function.
19476         (locus_map_eq): New function.
19477         (next_discriminator_for_locus): New function.
19478         (same_line_p): New function.
19479         (assign_discriminator): New function.
19480         (make_cond_expr_edges): Call assign_discriminator.
19481         (make_gimple_switch_edges): Likewise.
19482         (first_non_label_stmt): New function.
19483         * vmsdbgout.c (vmsdbgout_source_line): Add new parameter.  Change
19484         all callers.
19485         * xcoffout.c (xcoffout_source_line): Add new parameter.
19486
19487         * configure.ac (gcc_cv_as_discriminator): New configury check for
19488         gas support for discriminator.
19489         * configure: Regenerate.
19490         * config.in: Regenerate.
19491
19492 2009-06-04  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
19493
19494         * config/arm/arm.c (thumb2_legitimate_index_p): Initialize
19495         val after checking for integers.
19496
19497 2009-06-04  Uros Bizjak  <ubizjak@gmail.com>
19498
19499         * config/i386/i386.h (X86_64_MS_REGPARM_MAX): Rename from
19500         X64_REGPARM_MAX.
19501         (REGPARM_MAX): Use X86_64_MS_REGPARM_MAX.
19502         (X86_64_MS_SSE_REGPARM_MAX): Rename from X64_SSE_REGPARM_MAX.
19503         (SSE_REGPARM_MAX): Use X86_64_MS_SSE_REGPARM_MAX.
19504         * config/i386/i386.c: Use X86_64_MS_REGPARM_MAX instead of
19505         X64_REGPARM_MAX.  Use X86_64_MS_SSE_REGPARM_MAX instead of
19506         X64_SSE_REGPARM_MAX.
19507         * config/i386/i386.md: Use X86_64_MS_SSE_REGPARM_MAX instead of
19508         X64_SSE_REGPARM_MAX.
19509
19510 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
19511
19512         * gcc.c (report_times_to_file): New.
19513         (execute): Implement it.
19514         (process_command): Support -time=.
19515         * doc/invoke.texi: Document it.
19516
19517 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
19518
19519         * tree-ssa-live.c (remove_unused_scope_block_p): Keep variables
19520         that have value exprs.
19521
19522 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
19523
19524         * dwarf2asm.c (dw2_force_const_mem): Defer creation of
19525         declarations for constants until...
19526         (dw2_output_indirect_constant_1): ... this point.
19527
19528 2009-06-04  Richard Earnshaw  <rearnsha@arm.com>
19529
19530         PR target/10242
19531         * arm.md (arm_addsi3): Don't try to split an add with an
19532         eliminable register until after reload has completed.
19533
19534 2009-06-03  Ian Lance Taylor  <iant@google.com>
19535
19536         * dummy-checksum.c (executable_checksum): Use EXPORTED_CONST.
19537         * genattrtab.c (write_length_unit_log): Likewise.
19538         * genchecksum.c (dosum): Likewise.
19539         * gengtype.c (write_rtx_next): Likewise.
19540         (finish_root_table, write_roots): Likewise.
19541         * gimple.c (gimple_ops_offset_): Likewise.
19542         * tree-nomudflap.c (gt_ggc_r_gt_tree_mudflap_h): Likewise.
19543         * config/arc/arc.c (arc_attribute_table): Likewise.
19544         * config/arm/arm.c (arm_attribute_table): Likewise.
19545         * config/avr/avr.c (avr_attribute_table): Likewise.
19546         * config/crx/crx.c (crx_attribute_table): Likewise.
19547         * config/m32r/m32r.c (m32r_attribute_table): Likewise.
19548         * config/m68hc11/m68hc11.c (m68hc11_attribute_table): Likewise.
19549         * config/mcore/mcore.c (mcore_attribute_table): Likewise.
19550         * config/rs6000/rs6000.c (rs6000_attribute_table): Likewise.
19551         * config/sh/sh.c (sh_attribute_table): Likewise.
19552         * config/sparc/sparc.c (sparc_attribute_table): Likewise.
19553         * config/spu/spu.c (spu_attribute_table): Likewise.
19554         * config/v850/v850.c (v850_attribute_table): Likewise.
19555
19556         * config/alpha/alpha.c (vms_attribute_table): Make static.
19557         * config/bfin/bfin.c (bfin_attribute_table): Likewise.
19558         * config/h8300/h8300.c (h8300_attribute_table): Likewise.
19559         * config/mips/mips.c (mips_attribute_table): Likewise.
19560
19561         * Makefile.in (dummy-checksum.o): Depend upon $(CONFIG_H) and
19562         $(SYSTEM_H).
19563         (cc1-checksum.o): Likewise.
19564
19565 2009-06-03  Steve Ellcey  <sje@cup.hp.com>
19566
19567         * config/ia64/vect.md (*movv2sf_internal): Handle big endian case.
19568
19569 2009-06-03  Jakub Jelinek  <jakub@redhat.com>
19570
19571         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Return generated
19572         insn if it is changing sp.  Use gen_add3_insn instead of
19573         conditionally gen_addsi3 and gen_adddi3.
19574         (offset_below_red_zone_p): New static inline function.
19575         (rs6000_emit_epilogue): Emit needed epilogue unwind info.
19576         Use gen_add3_insn instead of conditionally gen_addsi3 and gen_adddi3.
19577         * config/rs6000/ppc-asm.h: Include auto-host.h.
19578         (CFI_STARTPROC, CFI_ENDPROC, CFI_DEF_CFA_REGISTER, CFI_OFFSET,
19579         CFI_RESTORE): Define.
19580         * config/rs6000/crtresxgpr.asm: Add unwind info.
19581         * config/rs6000/crtresxfpr.asm: Likewise.
19582         * config/rs6000/crtresgpr.asm: Likewise.
19583         * config/rs6000/crtresfpr.asm: Likewise.
19584         * config/rs6000/crtsavgpr.asm: Likewise.
19585         * config/rs6000/crtsavfpr.asm: Likewise.
19586
19587         * dwarf2out.c (output_cfi_directive): Pass 1 instead of 0 to second
19588         argument of DWARF2_FRAME_REG_OUT macros.
19589
19590 2009-06-03  Julian Brown  <julian@codesourcery.com>
19591
19592         * config/arm/arm.c (arm_hard_regno_mode_ok): Permit values of four
19593         words or less (including TImode) in core registers.
19594
19595 2009-06-03  Richard Guenther  <rguenther@suse.de>
19596
19597         PR middle-end/40328
19598         * fold-const.c (fold_convert): Fold the build COMPLEX_EXPR.
19599
19600 2009-06-03  Andrey Belevantsev  <abel@ispras.ru>
19601
19602         * statistics.c (statistics_counter_event): Do not record event
19603         in pass dump if its number == -1.
19604         (curr_statistics_hash): Add assert that we never get passes
19605         with static number == -1.
19606
19607 2009-06-03  Richard Guenther  <rguenther@suse.de>
19608             Andrey Belevantsev  <abel@ispras.ru>
19609
19610         * cfgexpand.c (discover_nonconstant_array_refs_r): Make only
19611         non-BLKmode arrays addressable.
19612
19613 2009-06-03  Maxim Kuvyrkov  <maxim@codesourcery.com>
19614
19615         * config/m68k/linux.h (HAVE_GAS_BALIGN_AND_P2ALIGN): Move to ...
19616         * config/m68k/m68k.h: ... here.
19617
19618 2009-06-03  Martin Jambor  <mjambor@suse.cz>
19619
19620         PR tree-optimization/40323
19621         * ipa-prop.c (get_ssa_def_if_simple_copy): Break if not single
19622         assignment.
19623
19624 2009-06-03  Richard Guenther  <rguenther@suse.de>
19625
19626         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
19627         consistently.
19628
19629 2009-06-03  Shujing Zhao  <pearly.zhao@oracle.com>
19630
19631         * config/sh/predicates.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
19632         JUMP_P, CALL_P, NONJUMP_INSN_P, NOTE_P, BARRIER_P and
19633         JUMP_TABLE_DATA_P where applicable.
19634         * config/sh/sh.c: Ditto.
19635         * config/sh/sh.h: Ditto.
19636         * config/sh/sh.md: Ditto.
19637         * config/sh/symbian.c: Ditto.
19638
19639 2009-06-03  Uros Bizjak  <ubizjak@gmail.com>
19640
19641         * config/i386/driver-i386.c (describe_cache): Optimize
19642         concatenation of strings.  Use snprintf instead of sprintf.
19643         (host_detect_local_cpu): Ditto.  Ignore -march and -mtune for native
19644         target when not compiling with GCC.
19645
19646 2009-06-02  Kaz Kojima  <kkojima@gcc.gnu.org>
19647
19648         * config/sh/sh.c: Revert last change.
19649         (sh_expand_epilogue): Emit a blockage insn before the frame
19650         pointer adjustment unconditionally.
19651
19652 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
19653
19654         * config/pa/pa-hpux.h (LINK_SPEC): Remove "%<fwhole-program".
19655         * config/pa/pa-hpux10.h (LINK_SPEC): Likewise.
19656         * config/pa/pa-hpux11.h (LINK_SPEC): Likewise.
19657         * gcc.c (set_collect_gcc_options): Don't add -fwhole-program
19658         to COLLECT_GCC_OPTIONS.
19659
19660 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
19661
19662         * collect2.c (target_system_root): New variable.
19663         (main): Handle --sysroot=.
19664         (ignore_library): Strip the sysroot from the library path.
19665
19666 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
19667
19668         * Makefile.in (COLLECT2_OBJS): Add collect2-aix.o.
19669         (collect2.o): Depend on collect2-aix.h.
19670         (collect2-aix.o): New rule.
19671         * collect2-aix.h: New file.
19672         * collect2-aix.c: Likewise.
19673         * collect2.c: Include collect2-aix.h.  Don't undefine
19674         OBJECT_FORMAT_COFF if CROSS_AIX_SUPPORT is defined.
19675         Guard native includes with #ifndef CROSS_DIRECTORY_STRUCTURE.
19676         Use TARGET_AIX_VERSION instead of _AIX51.
19677         * config/rs6000/aix43.h (TARGET_AIX_VERSION): Define.
19678         * config/rs6000/aix51.h (TARGET_AIX_VERSION): Likewise.
19679         * config/rs6000/aix52.h (TARGET_AIX_VERSION): Likewise.
19680         * config/rs6000/aix53.h (TARGET_AIX_VERSION): Likewise.
19681         * config/rs6000/aix61.h (TARGET_AIX_VERSION): Likewise.
19682
19683 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
19684
19685         * collect2.c (ignore_library): Avoid premature post-increment
19686         and null deference.
19687
19688 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
19689
19690         * Makefile.in (libgcc.mvars): Add TARGET_SYSTEM_ROOT.
19691         * config/rs6000/aix.h (LINK_SYSCALLS_SPEC): Add %R to the
19692         !CROSS_DIRECTORY_STRUCTURE alternative and use it for
19693         CROSS_DIRECTORY_STRUCTURE too.
19694         (LINK_LIBG_SPEC): Likewise.
19695         (LIB_SPEC): Add %R to sysroot paths.
19696         * config/rs6000/aix43.h (CPP_SPEC): Add %R to sysroot paths.
19697         (CPLUSPLUS_CPP_SPEC, LIB_SPEC): Likewise.
19698         * config/rs6000/aix51.h: As for aix43.h.
19699         * config/rs6000/aix52.h: Likewise.
19700         * config/rs6000/aix53.h: Likewise.
19701         * config/rs6000/aix61.h: Likewise.
19702         * config/rs6000/t-aix52 (SHLIB_LINK): Add $(TARGET_SYSTEM_ROOT)
19703         to the beginning of sysroot paths.
19704
19705 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
19706
19707         * print_rtl (print_rtx): Don't print modes in EXPR_LISTs and
19708         INSN_LISTs that are out of the REG_NOTE range.
19709
19710 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
19711
19712         * loop-unroll.c (struct iv_to_split): Add pointer to next.
19713         (struct var_to_expand): Likewise.
19714         (struct opt_info): Add head and tail for linked lists of the above.
19715         (analyze_insn_to_expand_var): Initialize next.
19716         (analyze_iv_to_split_insn): Likewise.
19717         (analyze_insns_in_loop): Create linked lists.
19718         (allocate_basic_variable): Simplify for use without hash table.
19719         (insert_var_expansion_initialization): Likewise, make it type-safer.
19720         (combine_var_copies_in_loop_exit): Likewise.
19721         (apply_opt_in_copies): Walk lists rather than hash tables.
19722         (release_var_copies): Simplified and inlined by hand into...
19723         (free_opt_info): ... this function.
19724
19725 2009-06-02  Richard Guenther  <rguenther@suse.de>
19726
19727         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
19728         for field decls.
19729
19730 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
19731
19732         * cfgexpand.c (gimple_expand_cfg): Discard the source location
19733         only for builtins that are not overridden.
19734
19735 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
19736
19737         * gengtype.c (adjust_field_rtx_def): Add NOTE_INSN_DELETED_LABEL's
19738         label string.
19739
19740 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
19741
19742         * df-core.c (df_ref_debug): Honor -fdump-noaddr.
19743
19744 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
19745
19746         * combine.c (move_deaths): Compare LUIDs within the same BB only.
19747
19748 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
19749
19750         * common.opt (fdump-unnumbered-links): New.
19751         * doc/invoke.texi (-fdump-unnumbered-links): Document it.
19752         * print-rtl.c (flag_dump_unnumbered_links): New.
19753         (print_rtx): Test it.
19754
19755 2009-06-02  Richard Earnshaw  <rearnsha@arm.com>
19756
19757         * arm.c (arm_get_frame_offsets): Prefer using r3 for padding a
19758         push/pop multiple to 8-byte alignment.
19759
19760 2009-06-01  Jakub Jelinek  <jakub@redhat.com>
19761
19762         * config/i386/i386.c (queued_cfa_restores): New static variable.
19763         (ix86_add_cfa_restore_note, ix86_add_queued_cfa_restore_notes): New
19764         functions.
19765         (pro_epilogue_adjust_stack): Call ix86_add_queued_cfa_restore_notes.
19766         (ix86_emit_restore_reg_using_pop): Add RED_OFFSET argument.
19767         Set RTX_FRAME_RELATED_P immediately after adding a REG_CFA_* note.
19768         Call ix86_add_cfa_restore_note instead of adding REG_CFA_OFFSET
19769         note unconditionally.
19770         (ix86_emit_restore_regs_using_mov): Likewise.
19771         (ix86_emit_restore_sse_regs_using_mov): Likewise.
19772         (ix86_emit_restore_regs_using_pop): Add RED_OFFSET argument, pass
19773         it through to ix86_emit_restore_reg_using_pop.
19774         (ix86_emit_leave): Add RED_OFFSET argument.  Call
19775         ix86_add_queued_cfa_restore_notes.  Call ix86_add_cfa_restore_note
19776         instead of adding REG_CFA_OFFSET note unconditionally.
19777         (ix86_expand_epilogue): Compute RED_OFFSET, pass it down to
19778         the above functions.  Call ix86_add_queued_cfa_restore_notes when
19779         needed.
19780
19781         * dwarf2out.c (dwarf2out_cfi_label): Add FORCE argument, if true,
19782         force output of the label even for dwarf2out_do_cfi_asm.
19783         (add_fde_cfi): If -g2 and above and cfi might change CFA,
19784         force creation of CFI label and chain DW_CFA_set_loc jumping to it
19785         for convert_cfa_to_fb_loc_list.  Adjust other dwarf2out_cfi_label
19786         caller.
19787         (dwarf2out_stack_adjust, dwarf2out_frame_debug,
19788         dwarf2out_begin_epilogue, dwarf2out_frame_debug_restore_state): Adjust
19789         dwarf2out_cfi_label callers.
19790         * tree.h (dwarf2out_cfi_label): Adjust prototype.
19791         * config/arm/arm.c (thumb_pushpop, thumb1_output_function_prologue):
19792         Adjust dwarf2out_cfi_label callers.
19793         * config/vax/vax.c (vax_output_function_prologue): Likewise.
19794
19795         * config/i386/i386.h (struct machine_cfa_state,
19796         struct machine_function): Guard with ifndef USED_FOR_TARGET
19797         instead of not IN_LIBGCC2 and not in IN_TARGET_LIBS.
19798
19799         PR other/40024
19800         * emutls.c (__emutls_get_address): Change arr->size to mean number
19801         of allocated arr->data entries instead of # of slots + 1.
19802
19803         PR middle-end/40316
19804         * recog.c (peep2_reinit_state): New function.
19805         (peephole2_init_state): Use it at the end of a basic block and also
19806         when seeing a RTX_FRAME_RELATED_P insn.
19807
19808 2009-06-01  Steve Ellcey  <sje@cup.hp.com>
19809
19810         * ia64.md (floatdirf2, fix_truncrfdi, floatunsdirf,
19811         fixuns_truncrfdi2): New.
19812         (fix_truncxfdi2_alts, fixuns_truncxfdi2_alts,
19813         *nmaddsf4_alts, *nmadddf4_alts, *nmadddf4_truncsf_alts,
19814         *mulxf3_alts, *mulxf3_truncsf_alts, *mulxf3_truncdf_alts,
19815         *maddxf4_alts, *maddxf4_alts_truncsf, *maddxf4_alts_truncdf,
19816         *nmaddxf4_alts, *nmaddxf4_truncsf_alts, *nmaddxf4_truncdf_alts,
19817         *recip_approx): Remove.
19818         (divsi3 modsi3, udivsi3, umodsi3, divsi3_internal, divdi3,
19819         moddi3, udivdi3, umoddi3, divdi3_internal_lat, divdi3_internal_thr,
19820         divsf3, sqrtsf2, divdf3, sqrtdf2, divxf3, sqrtxf2): Modify and
19821         move to div.md.
19822         * div.md (fix_truncrfdi2_alts, fixuns_truncrfdi2_alt,
19823         setf_exp_rf): New.
19824
19825 2009-06-01  Ian Lance Taylor  <iant@google.com>
19826
19827         * attribs.c (register_attribute): Use CONST_CAST.
19828         * collect2.c (main): Use CONST_CAST2.
19829         (scan_prog_file): Likewise.
19830         * gcc.c (process_command, main): Likewise.
19831         * toplev.c (toplev_main): Likewise.
19832
19833         * c-typeck.c (handle_warn_cast_qual): New static function,
19834         partially broken out of build_c_cast.
19835         (build_c_cast): Call handle_warn_cast_qual.
19836         * doc/invoke.texi (Warning Options): Document new effect of
19837         -Wcast-qual.
19838
19839 2009-06-01  Aldy Hernandez  <aldyh@redhat.com>
19840
19841         * diagnostic.c (diagnostic_build_prefix): Always print columns.
19842         (diagnostic_report_current_module): Print columns.
19843         * common.opt (flag_show_column): Enable by default.
19844
19845 2009-06-01  Luis Machado  <luisgpm@br.ibm.com>
19846
19847         * alias.c (find_base_term): Check for NULL term before returning.
19848
19849 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
19850
19851         Revert due to PR40320:
19852         2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
19853         * calls.c (emit_library_call_value_1): Don't force_operand for move
19854         and push insns.
19855
19856 2009-06-01  Olivier Hainque  <hainque@adacore.com>
19857             Eric Botcazou  <ebotcazou@adacore.com>
19858
19859         * tree.h (CONSTRUCTOR_BITFIELD_P): True if NODE, a FIELD_DECL, is
19860         to be processed as a bitfield for constructor output purposes.
19861         * output.h (initializer_constant_valid_for_bitfield_p): Declare
19862         new function.
19863         * varasm.c (oc_local_state): New type, output_constructor
19864         local state to support communication with helpers.
19865         (oc_outer_state): New type, output_constructor outer state of
19866         relevance in recursive calls.
19867         (output_constructor_array_range): New output_constructor helper,
19868         extracted code for an array range element.
19869         (output_constructor_regular_field): New output_constructor helper,
19870         extracted code for an element that is not a bitfield.
19871         (output_constructor_bitfield): New output_constructor helper,
19872         extracted code for a bitfield element.  Accept an OUTER state
19873         argument for recursive processing.  Recurse on record or array
19874         CONSTRUCTOR values, possibly past noop conversions.
19875         (initializer_constant_valid_for_bitfield_p): New predicate.  Whether
19876         VALUE is a valid constant-valued expression for use in a static
19877         bit-field initializer.
19878         (output_constructor): Rework to use helpers.  Accept and honor an
19879         OUTER state argument for recursive calls.  Return total size.  Be
19880         prepared for nested constructors initializing bitfields.
19881         (output_constant): Feed OUTER in calls to output_constructor.
19882
19883 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
19884
19885         * calls.c (emit_library_call_value_1): Don't force_operand for move
19886         and push insns.
19887
19888 2009-06-01  Nick Clifton  <nickc@redhat.com>
19889
19890         * doc/invoke.texi (IA-64 Options): Fix typo.
19891
19892 2009-06-01  Ira Rosen  <irar@il.ibm.com>
19893
19894         PR tree-optimization/39129
19895         * tree-vect-loop-manip.c (conservative_cost_threshold): Change the
19896         printed message.
19897         (vect_do_peeling_for_loop_bound): Use
19898         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
19899         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
19900         (vect_loop_versioning): Likewise.
19901         (vect_create_cond_for_alias_checks): Fix indentation.
19902         * tree-vectorizer.h (struct _loop_vec_info): Fix indentation of the
19903         macros.
19904         (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT): Define.
19905         (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Likewise.
19906         * tree-vect-loop.c (vect_analyze_loop_form): Change "too many BBs" to
19907         "control flow in loop".
19908         (vect_estimate_min_profitable_iters): Use
19909         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
19910         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
19911         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
19912         (vect_create_data_ref_ptr): Don't mention array dimension in printing.
19913         * tree-vect-stmts.c (vectorizable_store): Replace the check that the
19914         statement belongs to a group of strided accesses with the exact code
19915         check.
19916         (vectorizable_load): Likewise.
19917         * tree-vect-slp.c (vect_analyze_slp_instance): Spell out "basic block".
19918         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
19919
19920 2009-06-01  Gerald Pfeifer  <gerald@pfeifer.com>
19921
19922         * config/freebsd-stdint.h: New file.
19923         * config.gcc (*-*-freebsd): Set use_gcc_stdint=wrap.
19924         Add freebsd-stdint.h to tm_file.
19925
19926 2009-06-01  Richard Earnshaw  <rearnsha@arm.com>
19927
19928         * arm/thumb2.md (thumb2_zero_extendhidi2): New insn and split.
19929         (thumb2_extendhidi2): Likewise.
19930
19931 2009-05-31  Ian Lance Taylor  <iant@google.com>
19932
19933         * regstat.c (regstat_n_sets_and_refs): Remove duplicate definition.
19934
19935 2009-05-31  Ian Lance Taylor  <iant@google.com>
19936
19937         * Makefile.in (except.o): Depend upon gt-except.h, not gt-$(EXCEPT_H).
19938         (ipa-cp.o): Depend upon $(FIBHEAP_H) and $(PARAMS_H).
19939         (ipa-reference.o): Depend upon gt-ipa-reference.h.
19940
19941 2009-05-31  Jason Merrill  <jason@redhat.com>
19942
19943         * tree-pretty-print.c (print_call_name): Take the callee, not the
19944         call itself.  Make non-static.  Use dump_function_name for functions.
19945         (dump_generic_node): Adjust.
19946         * diagnostic.h: Declare print_call_name.
19947         * gimple-pretty-print.c (dump_gimple_call): Use it.
19948
19949 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
19950
19951         * config/sh/sh.md (ashldi3_std): New define_expand.
19952         (ashldi3): Use it.
19953
19954 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
19955
19956         PR target/40313
19957         * config/sh/sh.c: Include debug.h.
19958         (sh_expand_epilogue): Emit a blockage insn before the frame
19959         pointer adjustment also when dwarf2out_do_frame returns true.
19960
19961 2009-05-31  Richard Earnshaw  <rearnsha@arm.com>
19962
19963         * arm/thumb2.md (thumb2_extendsidi2): Add a split sub-pattern.
19964         (thumb2_extendqidi2): New pattern.
19965
19966 2009-05-31  Ira Rosen  <irar@il.ibm.com>
19967
19968         * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1): Don't
19969         mark phis for renaming.
19970         * tree-vectorizer.c (vect_memsyms_to_rename): Remove.
19971         (vectorize_loops): Don't allocate and free vect_memsyms_to_rename.
19972         Call mark_sym_for_renaming.
19973         * tree-vectorizer.h (vect_memsyms_to_rename): Remove.
19974         * tree-vect-loop.c (vect_transform_loop): Remove
19975         vect_memsyms_to_rename initialization and a call to
19976         mark_set_for_renaming.
19977
19978 2009-05-31  Jakub Jelinek  <jakub@redhat.com>
19979
19980         PR middle-end/40304
19981         * config/i386/i386.c (pro_epilogue_adjust_stack): Mark insns
19982         frame related even if !set_cfa && style < 0.
19983
19984 2009-05-30  Kai Tietz  <kai.tietz@onevision.com>
19985
19986         * config/i386/mingw-tls.c: New file.
19987         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Add mingw-tls.c file.
19988         * gthr-win32.h (MINGW32_SUPPORTS_MT_EH): Define it for targets
19989         defining _WIN32 but not __CYGWIN__.
19990
19991 2009-05-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19992
19993         * configure.ac: Add MPC support.
19994
19995         * config.in, configure: Regenerate.
19996
19997 2009-05-29  Richard Henderson  <rth@redhat.com>
19998
19999         * cfgcleanup.c (try_crossjump_to_edge): Only skip past
20000         NOTE_INSN_BASIC_BLOCK.
20001         * cfglayout.c (duplicate_insn_chain): Copy epilogue insn marks.
20002         Duplicate NOTE_INSN_EPILOGUE_BEG notes.
20003         * cfgrtl.c (can_delete_note_p): Allow NOTE_INSN_EPILOGUE_BEG
20004         to be deleted.
20005         * dwarf2out.c (struct cfa_loc): Change indirect field to bitfield,
20006         add in_use field.
20007         (add_cfi): Disable check redefining cfa away from drap.
20008         (lookup_cfa_1): Add remember argument; handle remember/restore.
20009         (lookup_cfa): Pass remember argument.
20010         (cfa_remember): New.
20011         (compute_barrier_args_size_1): Remove sibcall check.
20012         (dwarf2out_frame_debug_def_cfa): New.
20013         (dwarf2out_frame_debug_adjust_cfa): New.
20014         (dwarf2out_frame_debug_cfa_offset): New.
20015         (dwarf2out_frame_debug_cfa_register): New.
20016         (dwarf2out_frame_debug_cfa_restore): New.
20017         (dwarf2out_frame_debug): Handle REG_CFA_* notes.
20018         (dwarf2out_begin_epilogue): New.
20019         (dwarf2out_frame_debug_restore_state): New.
20020         (dw_cfi_oprnd1_desc): Handle DW_CFA_remember_state,
20021         DW_CFA_restore_state.
20022         (output_cfi_directive): Likewise.
20023         (convert_cfa_to_fb_loc_list): Likewise.
20024         (dw_cfi_oprnd1_desc): Handle DW_CFA_restore.
20025         * dwarf2out.h: Update.
20026         * emit-rtl.c (try_split): Don't split RTX_FRAME_RELATED_P.
20027         (copy_insn_1): Early out for null.
20028         * final.c (final_scan_insn): Call dwarf2out_begin_epilogue
20029         and dwarf2out_frame_debug_restore_state.
20030         * function.c (prologue, epilogue, sibcall_epilogue): Remove.
20031         (prologue_insn_hash, epilogue_insn_hash): New.
20032         (free_after_compilation): Adjust freeing accordingly.
20033         (record_insns): Create hash table if needed; push insns into
20034         hash instead of array.
20035         (maybe_copy_epilogue_insn): New.
20036         (contains): Search hash table instead of array.
20037         (sibcall_epilogue_contains): Remove.
20038         (thread_prologue_and_epilogue_insns): Split eh_return insns
20039         and mark them as epilogues.
20040         (reposition_prologue_and_epilogue_notes): Rewrite epilogue
20041         scanning in terms of basic blocks.
20042         * insn-notes.def (CFA_RESTORE_STATE): New.
20043         * jump.c (returnjump_p_1): Accept EH_RETURN.
20044         (eh_returnjump_p_1, eh_returnjump_p): New.
20045         * reg-notes.def (CFA_DEF_CFA, CFA_ADJUST_CFA, CFA_OFFSET,
20046         CFA_REGISTER, CFA_RESTORE): New.
20047         * rtl.def (EH_RETURN): New.
20048         * rtl.h (eh_returnjump_p, maybe_copy_epilogue_insn): Declare.
20049
20050         * config/bfin/bfin.md (UNSPEC_VOLATILE_EH_RETURN): Remove.
20051         (eh_return_internal): Use eh_return rtx; split w/ epilogue.
20052
20053         * config/i386/i386.c (gen_push): Update cfa state.
20054         (pro_epilogue_adjust_stack): Add set_cfa argument.  When true,
20055         add a CFA_ADJUST_CFA note.
20056         (ix86_dwarf_handle_frame_unspec): Remove.
20057         (ix86_expand_prologue): Update cfa state.
20058         (ix86_emit_restore_reg_using_pop): New.
20059         (ix86_emit_restore_regs_using_pop): New.
20060         (ix86_emit_leave): New.
20061         (ix86_emit_restore_regs_using_mov): Add CFA_RESTORE notes.
20062         (ix86_expand_epilogue): Add notes for unwinding the epilogue.
20063         * config/i386/i386.h (struct machine_cfa_state): New.
20064         (ix86_cfa_state): New.
20065         * config/i386/i386.md (UNSPEC_EH_RETURN): Remove.
20066         (eh_return_internal): Merge from eh_return_<mode>,
20067         use eh_return rtx, split w/ epilogue.
20068
20069 2009-05-29  Ian Lance Taylor  <iant@google.com>
20070
20071         * builtins.c (validate_gimple_arglist): Don't use va_arg with
20072         enum type.
20073         * calls.c (emit_library_call_value_1): Likewise.
20074
20075         * c-typeck.c (c_build_va_arg): New function.
20076         * c-tree.h (c_build_va_arg): Declare.
20077         * c-parser.c (c_parser_postfix_expression): Call c_build_va_arg
20078         instead of build_va_arg.
20079
20080 2009-05-29  Eric Botcazou  <ebotcazou@adacore.com>
20081
20082         * tree-ssa-loop-ivopts.c (strip_offset_1) <MULT_EXPR>: New case.
20083         (force_expr_to_var_cost) <NEGATE_EXPR>: Likewise.
20084         (ptr_difference_cost): Use affine combinations to compute it.
20085         (difference_cost): Likewise.
20086         (get_computation_cost_at): Compute more accurate cost for addresses
20087         if the ratio is a multiplier allowed in addresses.
20088         For non-addresses, consider that an additional offset or symbol is
20089         added only once.
20090
20091 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
20092
20093         * config/i386/i386.c (ix86_decompose_address): Avoid useless
20094         0 displacement.  Add 0 displacement if base is %[er]bp or %r13.
20095
20096         * config/i386/i386.md (prefix_data16, prefix_rep): Set to 0 for
20097         TYPE_SSE{MULADD,4ARG,IADD1,CVT1} by default.
20098         (prefix_rex): For UNIT_MMX don't imply the prefix by default
20099         if MODE_DI.
20100         (prefix_extra): Default to 2 for TYPE_SSE{MULADD,4ARG} and
20101         to 1 for TYPE_SSE{IADD1,CVT1}.
20102         (prefix_vex_imm8): Removed.
20103         (length_vex): Only pass 1 as second argument to
20104         ix86_attr_length_vex_default if prefix_extra is 0.
20105         (modrm): For TYPE_INCDEC only set to 0 if not TARGET_64BIT.
20106         (length): For prefix vex computation use length_immediate
20107         attribute instead of prefix_vex_imm8.
20108         (cmpqi_ext_3_insn, cmpqi_ext_3_insn_rex64,
20109         addqi_ext_1, addqi_ext_1_rex64, *testqi_ext_0, andqi_ext_0,
20110         *andqi_ext_0_cc, *iorqi_ext_0, *xorqi_ext_0, *xorqi_cc_ext_1,
20111         *xorqi_cc_ext_1_rex64): Override modrm attribute to 1.
20112         (extendsidi2_rex64, extendhidi2, extendqidi2, extendhisi2,
20113         *extendhisi2_zext, extendqihi2, extendqisi2, *extendqisi2_zext): Emit
20114         a space in between the operands.
20115         (*anddi_1_rex64, *andsi_1): Likewise.  Override prefix_rex to 1
20116         if one operand is 0xff and the other one si, di, bp or sp.
20117         (*andhi_1): Override prefix_rex to 1 if one operand is 0xff and the
20118         other one si, di, bp or sp.
20119         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Add mode attribute.
20120         (*ffssi_1, *ffsdi_1, ctzsi2, ctzdi2): Add
20121         type and mode attributes.
20122         (*bsr, *bsr_rex64, *bsrhi): Add type attribute.
20123         (*cmpfp_i_mixed, *cmpfp_iu_mixed): For TYPE_SSECOMI, clear
20124         prefix_rep attribute and set prefix_data16 attribute iff MODE_DF.
20125         (*cmpfp_i_sse, *cmpfp_iu_sse): Clear prefix_rep attribute and set
20126         prefix_data16 attribute iff MODE_DF.
20127         (*movsi_1): For TYPE_SSEMOV MODE_SI set prefix_data16 attribute.
20128         (fix_trunc<mode>di_sse): Set prefix_rex attribute.
20129         (*adddi_4_rex64, *addsi_4): Use const128_operand instead of
20130         constm128_operand in length_immediate computation.
20131         (*addhi_4): Likewise.  Fix mode attribute to MODE_HI.
20132         (anddi_1_rex64): Use movzbl/movzwl instead of movzbq/movzwq.
20133         (*avx_ashlti3, sse2_ashlti3, *avx_lshrti3, sse2_lshrti3): Set
20134         length_immediate attribute to 1.
20135         (x86_fnstsw_1, x86_fnstcw_1, x86_fldcw_1): Fix length attribute.
20136         (*movdi_1_rex64): Override prefix_rex or prefix_data16 attributes
20137         for certain alternatives.
20138         (*movdf_nointeger, *movdf_integer_rex64, *movdf_integer): Override
20139         prefix_data16 attribute if MODE_V1DF.
20140         (*avx_setcc<mode>, *sse_setcc<mode>, *sse5_setcc<mode>): Set
20141         length_immediate to 1.
20142         (set_got_rex64, set_rip_rex64): Remove length attribute, set
20143         length_address to 4, set mode attribute to MODE_DI.
20144         (set_got_offset_rex64): Likewise.  Set length_immediate to 0.
20145         (fxam<mode>2_i387): Set length attribute to 4.
20146         (*prefetch_sse, *prefetch_sse_rex, *prefetch_3dnow,
20147         *prefetch_3dnow_rex): Override length_address attribute.
20148         (sse4_2_crc32<mode>): Override prefix_data16 and prefix_rex
20149         attributes.
20150         * config/i386/predicates.md (ext_QIreg_nomode_operand): New predicate.
20151         (constm128_operand): Removed.
20152         * config/i386/i386.c (memory_address_length): For
20153         disp && !index && !base in 64-bit mode account for SIB byte if
20154         print_operand_address can't optimize disp32 into disp32(%rip)
20155         and UNSPEC doesn't imply (%rip) addressing.  Add 1 to length
20156         for fs: or gs: segment.
20157         (ix86_attr_length_immediate_default): When checking if shortform
20158         is possible, truncate immediate to the length of the non-shortened
20159         immediate.
20160         (ix86_attr_length_address_default): Ignore MEM_P operands
20161         with X constraint.
20162         (ix86_attr_length_vex_default): Only check for DImode on
20163         GENERAL_REG_P operands.
20164         * config/i386/sse.md (<sse>_comi, <sse>_ucomi): Clear
20165         prefix_rep attribute, set prefix_data16 attribute iff MODE_DF.
20166         (sse_cvttps2pi): Clear prefix_rep attribute.
20167         (sse2_cvttps2dq, *sse2_cvtpd2dq, sse2_cvtps2pd): Clear prefix_data16
20168         attribute.
20169         (*sse2_cvttpd2dq): Don't clear prefix_rep attribute.
20170         (*avx_ashr<mode>3, ashr<mode>3, *avx_lshr<mode>3, lshr<mode>3,
20171         *avx_ashl<mode>3, ashl<mode>3): Set length_immediate attribute to 1
20172         iff operand 2 is const_int_operand.
20173         (*vec_dupv4si, avx_shufpd256_1, *avx_shufpd_<mode>,
20174         sse2_shufpd_<mode>): Set length_immediate attribute to 1.
20175         (sse2_pshufd_1): Likewise.  Set prefix attribute to maybe_vex
20176         instead of vex.
20177         (sse2_pshuflw_1, sse2_pshufhw_1): Set length_immediate to 1 and clear
20178         prefix_data16.
20179         (sse2_unpckhpd, sse2_unpcklpd, sse2_storehpd, *vec_concatv2df): Set
20180         prefix_data16 attribute for movlpd and movhpd instructions.
20181         (sse2_loadhpd, sse2_loadlpd, sse2_movsd): Likewise.  Override
20182         length_immediate for shufpd instruction.
20183         (sse2_movntsi, sse3_lddqu): Clear prefix_data16 attribute.
20184         (avx_cmpp<avxmodesuffixf2c><mode>3,
20185         avx_cmps<ssemodesuffixf2c><mode>3, *avx_maskcmp<mode>3,
20186         <sse>_maskcmp<mode>3, <sse>_vmmaskcmp<mode>3,
20187         avx_shufps256_1, *avx_shufps_<mode>, sse_shufps_<mode>,
20188         *vec_dupv4sf_avx, *vec_dupv4sf): Set length_immediate attribute to 1.
20189         (*avx_cvtsi2ssq, *avx_cvtsi2sdq): Set length_vex attribute to 4.
20190         (sse_cvtsi2ssq, sse2_cvtsi2sdq): Set prefix_rex attribute to 1.
20191         (sse2_cvtpi2pd, sse_loadlps, sse2_storelpd): Override
20192         prefix_data16 attribute for the first alternative to 1.
20193         (*avx_loadlps): Override length_immediate for the first alternative.
20194         (*vec_concatv2sf_avx): Override length_immediate and prefix_extra
20195         attributes for second alternative.
20196         (*vec_concatv2sf_sse4_1): Override length_immediate and
20197         prefix_data16 attributes for second alternative.
20198         (*vec_setv4sf_avx, *avx_insertps, vec_extract_lo_<mode>,
20199         vec_extract_hi_<mode>, vec_extract_lo_v16hi,
20200         vec_extract_hi_v16hi, vec_extract_lo_v32qi,
20201         vec_extract_hi_v32qi): Set prefix_extra and length_immediate to 1.
20202         (*vec_setv4sf_sse4_1, sse4_1_insertps, *sse4_1_extractps): Set
20203         prefix_data16 and length_immediate to 1.
20204         (*avx_mulv2siv2di3, *avx_mulv4si3, sse4_2_gtv2di3): Set prefix_extra
20205         to 1.
20206         (*avx_<code><mode>3, *avx_eq<mode>3, *avx_gt<mode>3): Set
20207         prefix_extra attribute for variants that don't have 0f prefix alone.
20208         (*avx_pinsr<ssevecsize>): Likewise.  Set length_immediate to 1.
20209         (*sse4_1_pinsrb, *sse2_pinsrw, *sse4_1_pinsrd, *sse4_1_pextrb,
20210         *sse4_1_pextrb_memory, *sse2_pextrw, *sse4_1_pextrw_memory,
20211         *sse4_1_pextrd): Set length_immediate to 1.
20212         (*sse4_1_pinsrd): Likewise.  Set prefix_extra to 1.
20213         (*sse4_1_pinsrq, *sse4_1_pextrq): Set prefix_rex and length_immediate
20214         to 1.
20215         (*vec_extractv2di_1_rex64_avx, *vec_extractv2di_1_rex64,
20216         *vec_extractv2di_1_avx, *vec_extractv2di_1_sse2): Override
20217         length_immediate to 1 for second alternative.
20218         (*vec_concatv2si_avx, *vec_concatv2di_rex64_avx): Override
20219         prefix_extra and length_immediate attributes for the first
20220         alternative.
20221         (vec_concatv2si_sse4_1): Override length_immediate to 1 for the
20222         first alternative.
20223         (*vec_concatv2di_rex64_sse4_1): Likewise.  Override prefix_rex
20224         to 1 for the first and third alternative.
20225         (*vec_concatv2di_rex64_sse): Override prefix_rex to 1 for the second
20226         alternative.
20227         (*sse2_maskmovdqu, *sse2_maskmovdqu_rex64): Override length_vex
20228         attribute.
20229         (*sse_sfence, sse2_mfence, sse2_lfence): Override length_address
20230         attribute to 0.
20231         (*avx_phaddwv8hi3, *avx_phadddv4si3, *avx_phaddswv8hi3,
20232         *avx_phsubwv8hi3, *avx_phsubdv4si3, *avx_phsubswv8hi,
20233         *avx_pmaddubsw128, *avx_pmulhrswv8hi3, *avx_pshufbv16qi3,
20234         *avx_psign<mode>3): Set prefix_extra attribute to 1.
20235         (ssse3_phaddwv4hi3, ssse3_phadddv2si3, ssse3_phaddswv4hi3,
20236         ssse3_phsubwv4hi3, ssse3_phsubdv2si3, ssse3_phsubswv4hi3,
20237         ssse3_pmaddubsw, *ssse3_pmulhrswv4hi, ssse3_pshufbv8qi3,
20238         ssse3_psign<mode>3): Override prefix_rex attribute.
20239         (*avx_palignrti): Override prefix_extra and length_immediate to 1.
20240         (ssse3_palignrti): Override length_immediate to 1.
20241         (ssse3_palignrdi): Override length_immediate to 1, override
20242         prefix_rex attribute.
20243         (abs<mode>2): Override prefix_rep to 0, override prefix_rex attribute.
20244         (sse4a_extrqi): Override length_immediate to 2.
20245         (sse4a_insertqi): Likewise.  Override prefix_data16 to 0.
20246         (sse4a_insertq): Override prefix_data16 to 0.
20247         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>,
20248         avx_blendvp<avxmodesuffixf2c><avxmodesuffix>,
20249         avx_dpp<avxmodesuffixf2c><avxmodesuffix>, *avx_mpsadbw,
20250         *avx_pblendvb, *avx_pblendw, avx_roundp<avxmodesuffixf2c>256,
20251         avx_rounds<avxmodesuffixf2c>256): Override prefix_extra
20252         and length_immediate to 1.
20253         (sse4_1_blendp<ssemodesuffixf2c>, sse4_1_dpp<ssemodesuffixf2c>,
20254         sse4_2_pcmpestr, sse4_2_pcmpestri, sse4_2_pcmpestrm,
20255         sse4_2_pcmpestr_cconly, sse4_2_pcmpistr, sse4_2_pcmpistri,
20256         sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): Override prefix_data16
20257         and length_immediate to 1.
20258         (sse4_1_blendvp<ssemodesuffixf2c>): Override prefix_data16 to 1.
20259         (sse4_1_mpsadbw, sse4_1_pblendw): Override length_immediate to 1.
20260         (*avx_packusdw, avx_vtestp<avxmodesuffixf2c><avxmodesuffix>,
20261         avx_ptest256): Override prefix_extra to 1.
20262         (sse4_1_roundp<ssemodesuffixf2c>, sse4_1_rounds<ssemodesuffixf2c>):
20263         Override prefix_data16 and length_immediate to 1.
20264         (sse5_pperm_zero_v16qi_v8hi, sse5_pperm_sign_v16qi_v8hi,
20265         sse5_pperm_zero_v8hi_v4si, sse5_pperm_sign_v8hi_v4si,
20266         sse5_pperm_zero_v4si_v2di, sse5_pperm_sign_v4si_v2di,
20267         sse5_vrotl<mode>3, sse5_ashl<mode>3, sse5_lshl<mode>3): Override
20268         prefix_data16 to 0 and prefix_extra to 2.
20269         (sse5_rotl<mode>3, sse5_rotr<mode>3): Override length_immediate to 1.
20270         (sse5_frcz<mode>2, sse5_vmfrcz<mode>2): Don't override prefix_extra
20271         attribute.
20272         (*sse5_vmmaskcmp<mode>3, sse5_com_tf<mode>3,
20273         sse5_maskcmp<mode>3, sse5_maskcmp<mode>3, sse5_maskcmp_uns<mode>3):
20274         Override prefix_data16 and prefix_rep to 0, length_immediate to 1
20275         and prefix_extra to 2.
20276         (sse5_maskcmp_uns2<mode>3, sse5_pcom_tf<mode>3): Override
20277         prefix_data16 to 0, length_immediate to 1 and prefix_extra to 2.
20278         (*avx_aesenc, *avx_aesenclast, *avx_aesdec, *avx_aesdeclast,
20279         avx_vpermilvar<mode>3,
20280         avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>,
20281         avx_vbroadcastss256, avx_vbroadcastf128_p<avxmodesuffixf2c>256,
20282         avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>,
20283         avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>):
20284         Override prefix_extra to 1.
20285         (aeskeygenassist, pclmulqdq): Override length_immediate to 1.
20286         (*vpclmulqdq, avx_vpermil<mode>, avx_vperm2f128<mode>3,
20287         vec_set_lo_<mode>, vec_set_hi_<mode>, vec_set_lo_v16hi,
20288         vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Override
20289         prefix_extra and length_immediate to 1.
20290         (*avx_vzeroall, avx_vzeroupper, avx_vzeroupper_rex64): Override
20291         modrm to 0.
20292         (*vec_concat<mode>_avx): Override prefix_extra and length_immediate
20293         to 1 for the first alternative.
20294         * config/i386/mmx.md (*mov<mode>_internal_rex64): Override
20295         prefix_rep, prefix_data16 and/or prefix_rex attributes in certain
20296         cases.
20297         (*mov<mode>_internal_avx, *movv2sf_internal_rex64,
20298         *movv2sf_internal_avx, *movv2sf_internal): Override
20299         prefix_rep attribute for certain alternatives.
20300         (*mov<mode>_internal): Override prefix_rep or prefix_data16
20301         attributes for certain alternatives.
20302         (*movv2sf_internal_rex64_avx): Override prefix_rep and length_vex
20303         attributes for certain alternatives.
20304         (*mmx_addv2sf3, *mmx_subv2sf3, *mmx_mulv2sf3,
20305         *mmx_<code>v2sf3_finite, *mmx_<code>v2sf3, mmx_rcpv2sf2,
20306         mmx_rcpit1v2sf3, mmx_rcpit2v2sf3, mmx_rsqrtv2sf2, mmx_rsqit1v2sf3,
20307         mmx_haddv2sf3, mmx_hsubv2sf3, mmx_addsubv2sf3,
20308         *mmx_eqv2sf3, mmx_gtv2sf3, mmx_gev2sf3, mmx_pf2id, mmx_pf2iw,
20309         mmx_pi2fw, mmx_floatv2si2, mmx_pswapdv2sf2, *mmx_pmulhrwv4hi3,
20310         mmx_pswapdv2si2): Set prefix_extra attribute to 1.
20311         (mmx_ashr<mode>3, mmx_lshr<mode>3, mmx_ashl<mode>3): Set
20312         length_immediate to 1 if operand 2 is const_int_operand.
20313         (*mmx_pinsrw, mmx_pextrw, mmx_pshufw_1, *vec_dupv4hi,
20314         *vec_extractv2si_1): Set length_immediate attribute to 1.
20315         (*mmx_uavgv8qi3): Override prefix_extra attribute to 1 if
20316         using old 3DNOW insn rather than SSE/3DNOW_A.
20317         (mmx_emms, mmx_femms): Clear modrm attribute.
20318
20319 2009-05-29  Martin Jambor  <mjambor@suse.cz>
20320
20321         * tree-sra.c:  New implementation of SRA.
20322
20323         * params.def (PARAM_SRA_MAX_STRUCTURE_SIZE): Removed.
20324         (PARAM_SRA_MAX_STRUCTURE_COUNT): Removed.
20325         (PARAM_SRA_FIELD_STRUCTURE_RATIO): Removed.
20326         * params.h (SRA_MAX_STRUCTURE_SIZE): Removed.
20327         (SRA_MAX_STRUCTURE_COUNT): Removed.
20328         (SRA_FIELD_STRUCTURE_RATIO): Removed.
20329         * doc/invoke.texi (sra-max-structure-size): Removed.
20330         (sra-field-structure-ratio): Removed.
20331
20332 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
20333
20334         PR middle-end/40291
20335         * builtins.c (expand_builtin_memcmp): Convert len to sizetype
20336         before expansion.
20337
20338 2009-05-29  Andrey Belevantsev  <abel@ispras.ru>
20339
20340         PR rtl-optimization/40101
20341         * sel-sched-ir.c (get_seqno_by_preds): Allow returning negative
20342         seqno.  Adjust comment.
20343         * sel-sched.c (find_seqno_for_bookkeeping): Assert that when
20344         inserting bookkeeping before a jump, the jump is not scheduled.
20345         When no positive seqno found, provide a value.  Add comment.
20346
20347 2009-05-29  Richard Guenther  <rguenther@suse.de>
20348
20349         * tree-ssa-alias.c (nonaliasing_component_refs_p): Remove
20350         short-cutting on the first component.
20351
20352 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
20353
20354         PR middle-end/39958
20355         * omp-low.c (scan_omp_1_op): Call remap_type on TREE_TYPE
20356         for trees other than decls/types.
20357
20358 2009-05-29  Richard Guenther  <rguenther@suse.de>
20359
20360         * tree-ssa-operands.c (get_expr_operands): Do not handle
20361         INDIRECT_REFs in the handled-component case.  Remove
20362         unused get_ref_base_and_extent case.
20363         * tree-dfa.c (get_ref_base_and_extent): Avoid calling
20364         tree_low_cst and host_integerp where possible.
20365         * tree-ssa-structalias.c (equiv_class_label_eq): Check hash
20366         codes for equivalence.
20367         * dce.c (find_call_stack_args): Avoid redundant bitmap queries.
20368
20369 2009-05-29  David Billinghurst <billingd@gcc.gnu.org>
20370
20371         * config.gcc: Add i386/t-fprules-softfp and soft-fp/t-softfp
20372         to tmake_file for i[34567]86-*-cygwin*.
20373
20374 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
20375
20376         PR target/40017
20377         * config/rs6000/rs6000-c.c (_Bool_keyword): New variable.
20378         (altivec_categorize_keyword, init_vector_keywords,
20379         rs6000_cpu_cpp_builtins): Define _Bool as conditional macro
20380         similar to bool.
20381
20382 2009-05-29  Kai Tietz  <kai.tietz@onevision.com>
20383
20384         * tree.c (handle_dll_attribute): Check if node is
20385         of kind FUNCTION_DECL for DECL_DECLARED_INLINE_P check.
20386
20387 2009-05-29  Richard Earnshaw  <rearnsha@arm.com>
20388
20389         * config/arm/thumb2.md (thumb2_zero_extendsidi2): Add a split
20390         component.
20391         (thumb2_zero_extendqidi2): Likewise.
20392
20393 2009-05-28  Kaz Kojima  <kkojima@gcc.gnu.org>
20394
20395         * config/sh/sh.c (sh_expand_t_scc): Use gen_xorsi3_movrt
20396         instead of gen_movrt.
20397         * config/sh/sh.md (movrt): Remove.
20398
20399 2009-05-28  Steve Ellcey  <sje@cup.hp.com>
20400
20401         * doc/invoke.texi (IA-64 Options):
20402         Add -msdata, -mfused-madd, -mno-inline-float-divide,
20403         -mno-inline-int-divide, -mno-inline-sqrt, -msched-spec-ldc,
20404         -msched-spec-control-ldc, -msched-prefer-non-data-spec-insns,
20405         -msched-prefer-non-control-spec-insns,
20406         -msched-stop-bits-after-every-cycle,
20407         -msched-count-spec-in-critical-path,
20408         -msel-sched-dont-check-control-spec, -msched-fp-mem-deps-zero-cost
20409         -msched-max-memory-insns-hard-limit, -msched-max-memory-insns.
20410         Remove -mt, -pthread, -msched-ldc, -mno-sched-control-ldc,
20411         and -msched-spec-verbose.
20412
20413 2009-05-28  Joseph Myers  <joseph@codesourcery.com>
20414
20415         * config/arm/lib1funcs.asm (__clear_cache): Define if L_clear_cache.
20416         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define to give an
20417         error if used.
20418         * config/arm/t-linux-eabi (LIB1ASMFUNCS): Add _clear_cache.
20419
20420 2009-05-28  Richard Guenther  <rguenther@suse.de>
20421
20422         * tree-ssa-alias.c (ao_ref_init): New function.
20423         (ao_ref_base): Likewise.
20424         (ao_ref_base_alias_set): Likewise.
20425         (ao_ref_alias_set): Likewise.
20426         (refs_may_alias_p_1): Change signature.
20427         (refs_may_alias_p): Adjust.
20428         (refs_anti_dependent_p): Likewise.
20429         (refs_output_dependent_p): Likewise.
20430         (call_may_clobber_ref_p_1): Change signature.
20431         (call_may_clobber_ref_p): Adjust.
20432         (stmt_may_clobber_ref_p_1): New function split out from ...
20433         (stmt_may_clobber_ref_p): ... here.
20434         (maybe_skip_until): Adjust signature.
20435         (get_continuation_for_phi): Likewise.
20436         (walk_non_aliased_vuses): Likewise.
20437         * tree-ssa-alias.h (struct ao_ref_s): New structure type.
20438         (ao_ref_init): Declare.
20439         (ao_ref_base): Likewise.
20440         (ao_ref_alias_set): Likewise.
20441         (stmt_may_clobber_ref_p_1): Likewise.
20442         (walk_non_aliased_vuses): Adjust.
20443         * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): New function.
20444         (get_ref_from_reference_ops): remove.
20445         (vn_reference_lookup_2): Adjust signature.
20446         (vn_reference_lookup_3): Do not re-build trees.  Handle unions.
20447         (vn_reference_lookup_pieces): Adjust signature, do not re-build trees.
20448         (vn_reference_lookup): Adjust.
20449         (vn_reference_insert): Likewise.
20450         (vn_reference_insert_pieces): Adjust signature.
20451         (visit_reference_op_call): Adjust.
20452         * tree-ssa-pre.c (get_expr_type): Simplify.
20453         (phi_translate_1): Adjust.
20454         (compute_avail): Likewise.
20455         (translate_vuse_through_block): Do not re-build trees.
20456         (value_dies_in_block_x): Likewise.
20457         * tree-ssa-sccvn.h (struct vn_reference_s): Add type and alias-set
20458         fields.
20459         (vn_reference_lookup_pieces): Adjust declaration.
20460         (vn_reference_insert_pieces): Likewise.
20461
20462 2009-05-28  Benjamin Kosnik  <bkoz@redhat.com>
20463
20464         * tree-ssa-copy.c (replace_exp_1): Move op for warning-free use
20465         with checking disabled.
20466
20467 2009-05-28  Dave Korn  <dave.korn.cygwin@gmail.com>
20468
20469         PR target/37216
20470
20471         * configure.ac (HAVE_GAS_ALIGNED_COMM):  Add autoconf test and
20472         macro definition for support of three-operand format aligned
20473         .comm directive in assembler on cygwin/pe/mingw target OS.
20474         * configure:  Regenerate.
20475         * config.h:  Regenerate.
20476
20477         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common):  Use
20478         aligned form of .comm directive if -mpe-aligned-commons is in effect.
20479         * config/i386/cygming.opt (-mpe-aligned-commons):  Add new option.
20480
20481         * doc/invoke.texi (-mpe-aligned-commons):  Document new target option.
20482         * doc/tm.texi (ASM_OUTPUT_COMMON):  Document zero size commons.
20483
20484 2009-05-28  Ira Rosen  <irar@il.ibm.com>
20485
20486         PR tree-optimization/40254
20487         * tree-data-ref.c (dr_analyze_innermost): Take POFFSET into account
20488         in analysis of basic blocks.
20489
20490 2009-05-28  Adam Nemet  <anemet@caviumnetworks.com>
20491
20492         PR middle-end/33699
20493         * target.h (struct gcc_target): Fix indentation.  Add const_anchor.
20494         * target-def.h (TARGET_CONST_ANCHOR): New macro.
20495         (TARGET_INITIALIZER): Use it.
20496         * cse.c (CHEAPER): Move it up to the other macros.
20497         (insert): Rename this ...
20498         (insert_with_costs): ... to this.  Add cost parameters.  Update
20499         function comment.
20500         (insert): New function.  Call insert_with_costs.
20501         (compute_const_anchors, insert_const_anchor, insert_const_anchors,
20502         find_reg_offset_for_const, try_const_anchors): New functions.
20503         (cse_insn): Call try_const_anchors.  Adjust cost of src_related
20504         when using a const-anchor.  Call insert_const_anchors.
20505         * config/mips/mips.c (mips_set_mips16_mode): Set targetm.const_anchor.
20506         * doc/tm.texi (Misc): Document TARGET_CONST_ANCHOR.
20507
20508 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
20509
20510         * tree-inline.c (remap_decls): Enable nonlocalized variables
20511         when not optimizing.
20512
20513 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
20514
20515         * tree-ssa-live.c (remove_unused_locals): Skip when not optimizing.
20516         Simplify other tests involving optimize.
20517
20518 2009-05-27  Tom Tromey  <tromey@redhat.com>
20519
20520         * unwind-dw2.c (_Unwind_DebugHook): New function.
20521         (uw_install_context): Call _Unwind_DebugHook.
20522
20523 2009-05-27  Tom Tromey  <tromey@redhat.com>
20524
20525         * system.h (CONST_CAST2): Use C++ const_cast when compiled as C++
20526
20527 2009-05-27  Ian Lance Taylor  <iant@google.com>
20528
20529         * Makefile.in (LINKER, LINKER_FLAGS): Define.
20530         (LINKER_FOR_BUILD, BUILD_LINKERFLAGS): Define.
20531         (ALL_LINKERFLAGS): Define.
20532         (xgcc$(exeext)): Change $(COMPILER) to $(LINKER).
20533         (cpp$(exeext), cc1-dummy$(exeext), cc1$(exeext)): Likewise.
20534         (collect2$(exeext), mips-tfile, mips-tdump): Likewise.
20535         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
20536         (build/gen%$(build_exeext)): Change $(COMPILER_FOR_BUILD) to
20537         $(LINKER_FOR_BUILD).
20538         (build/gcov-iov$(build_exeext)): Likewise.
20539
20540 2009-05-27  Julian Brown  <julian@codesourcery.com>
20541
20542         * gcse.c (target.h): Include.
20543         (can_assign_to_reg_without_clobbers_p): Check that the target allows
20544         copy of argument to a pseudo register.
20545
20546 2009-05-27  Diego Novillo  <dnovillo@google.com>
20547
20548         * tree-ssa-live.c (dump_scope_block): Document arguments.
20549         (dump_scope_blocks): Document.
20550         (debug_scope_blocks): New.
20551         * tree-flow.h (debug_scope_blocks): Declare.
20552
20553 2009-05-21  Denis Chertykov  <denisc@overta.ru>
20554
20555         * doc/contrib.texi (Contributors): Add myself to the list.
20556
20557 2009-05-27  Olivier Hainque  <hainque@adacore.com>
20558
20559         * expr.c (target_align): New function.  Alignment the TARGET of an
20560         assignment may be assume to have.
20561         (highest_pow2_factor_for_target): Use it instead of relying on
20562         immediate tree attributes of TARGET, not necessarily honored when
20563         intermediate bitfields are involved.
20564
20565 2009-05-27  H.J. Lu  <hongjiu.lu@intel.com>
20566
20567         PR target/40266
20568         * config/i386/driver-i386.c (host_detect_local_cpu): Support
20569         AVX, SSE4, AES, PCLMUL and POPCNT.
20570
20571 2009-05-27  Diego Novillo  <dnovillo@google.com>
20572
20573         * tree-pretty-print.c (dump_location): New.
20574         (dump_generic_node): Call it.
20575         Factor code to handle BLOCK nodes ...
20576         (dump_block_node): ... here.
20577
20578 2009-05-27  Rafael Avila de Espindola  <espindola@google.com>
20579
20580         * Makefile.in (GCC_PLUGIN_H): New. Replace all uses of gcc-plugin.h
20581         with it.
20582         * doc/plugins.texi: Document that gcc-plugin.h must be the first to be
20583         included.
20584         * gcc-plugin.h: Include config.h and system.h.
20585         (IN_GCC): Define if not defined.
20586
20587 2009-05-27  Hans-Peter Nilsson  <hp@axis.com>
20588
20589         PR middle-end/40249
20590         * Makefile.in (CRTSTUFF_CFLAGS): Replace -fno-inline-functions
20591         with -fno-inline.
20592
20593 2009-05-27  Shujing Zhao  <pearly.zhao@oracle.com>
20594
20595         * config/m32r/m32r.c: Use REG_P, MEM_P and CONST_INT_P where
20596         applicable.
20597         * config/m32r/m32r.h: Ditto.
20598         * config/m32r/m32r.md: Ditto.
20599         * config/m32r/predicates.md: Ditto.
20600
20601 2009-05-27  Alexandre Oliva  <aoliva@redhat.com>
20602
20603         * cgraph.c (dump_cgraph_node): Honor -fdump-noaddr.
20604
20605 2009-05-26  Basile Starynkevitch  <basile@starynkevitch.net>
20606
20607         * doc/plugins.texi
20608         (Loading plugins): typo.
20609         (Plugin callbacks): Documented PLUGIN_INFO, PLUGIN_GGC_START,
20610         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
20611         (Interacting with the GCC Garbage Collector): Added new section.
20612         (Giving information about a plugin): Added new section for
20613         PLUGIN_INFO.
20614         * ggc.h (ggc_register_root_tab): Added declaration.
20615         * gcc-plugin.h (PLUGIN_GGC_START, PLUGIN_GGC_MARKING)
20616         (PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS): Added new events.
20617         (register_callback): Improved comment in declaration.
20618         * ggc-common.c (const_ggc_root_tab_t) Added new typedef for vectors.
20619         (extra_root_vec) Added static variable for dynamic roots registration.
20620         (ggc_register_root_tab) Added new routine.
20621         (ggc_mark_roots) Added iteration inside extra_root_vec, and invoke
20622         PLUGIN_GGC_MARKING event.
20623         * ggc-zone.c: Include plugin.h.
20624         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
20625         * ggc-page.c: Include plugin.h.
20626         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
20627         * plugin.c (plugin_event_name): added names of PLUGIN_GGC_START,
20628         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS
20629         (register_callback): check lack of callbacks for
20630         pseudo-events. Added handling of PLUGIN_REGISTER_GGC_ROOTS,
20631         PLUGIN_GGC_START, PLUGIN_GGC_MARKING, PLUGIN_GGC_END.
20632         (invoke_plugin_callbacks): Handle PLUGIN_GGC_START,
20633         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
20634         * Makefile.in (ggc-common.o, ggc-zone.o, ggc-page.o): Added
20635         dependency on plugin.h.
20636         (plugin.o): Added dependency on ggc.h...
20637
20638 2009-05-26  Richard Guenther  <rguenther@suse.de>
20639
20640         PR middle-end/40248
20641         Revert
20642         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
20643         with mismatched comparison modes.
20644
20645         * expr.c (expand_expr_real_1): Expand the operand of a
20646         VIEW_CONVERT_EXPR in its natural mode.
20647
20648 2009-05-26  Ian Lance Taylor  <iant@google.com>
20649
20650         * Makefile.in (COMPILER, COMPILER_FLAGS): Define.
20651         (COMPILER_FOR_BUILD, BUILD_COMPILERFLAGS): Define.
20652         (ALL_COMPILERFLAGS): Define.
20653         (.c.o, xgcc$(exeext), cpp$(exeext)): Use $(COMPILER).
20654         (cc1-dummy$(exeext), cc1$(exeext)): Likewise.
20655         (collect2$(exeext), collect2.o): Likewise.
20656         (c-opts.o, c-cppbuiltin.o, c-pch.o, gcc.o, gccspec.o): Likewise.
20657         (gcc-options.o, version.o, prefix.o, toplev.o): Likewise.
20658         ($(out_object_file), mips-tfile, mips-tdump): Likewise.
20659         (libbackend.o, intl.o, cppdefault.o): Likewise.
20660         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
20661         (build/%.o): Use $(COMPILER_FOR_BUILD).
20662         (build/gen%$(build_exeext)): Likewise.
20663         (build/gcov-iov$(build_exeext)): LIkewise.
20664         * config/t-darwin (darwin.o): Use $(COMPILER).
20665         (darwin-c.o, darwin-f.o, darwin-driver.o): Likewise.
20666         * config/t-sol2 (sol2-c.o): Likewise.
20667         (sol2.o): Likewise.
20668         * config/t-vxworks (vxworks.o): Likewise.
20669         * config/x-darwin (host-darwin.o): Likewise.
20670         * config/x-hpux (host-hpux.o): Likewise.
20671         * config/x-linux (host-linux.o): Likewise.
20672         * config/x-solaris (host-solaris.o): Likewise.
20673         * config/alpha/x-alpha (driver-alpha.o): Likewise.
20674         * config/arm/t-arm (arm-c.o): Likewise.
20675         * config/arm/t-pe (pe.o): Likewise.
20676         * config/arm/t-wince-pe (pe.o): Likewise.
20677         * config/i386/t-cygming (winnt.o): Likewise.
20678         (winnt-cxx.o, winnt-stubs.o, msformat-c.o): Likewise.
20679         * config/i386/t-cygwin (cygwin1.o): Likewise.
20680         (cygwin2.o): Likewise.
20681         * config/i386/t-i386 (i386-c.o): Likewise.
20682         * config/i386/t-interix (winnt.o): Likewise.
20683         * config/i386/t-netware (netware.o): Likewise.
20684         * config/i386/t-nwld (nwld.o): Likewise.
20685         * config/i386/x-darwin (host-i386-darwin.o): Likewise.
20686         * config/i386/x-i386 (driver-i386.o): Likewise.
20687         * config/i386/x-cygwin (host-cygwin.o): Likewise.
20688         * config/i386/x-mingw32 (host-mingw32.o): Likewise.
20689         * config/ia64/t-ia64 (ia64-c.o): Likewise.
20690         * config/m32c/t-m32c (m32c-pragma.o): Likewise.
20691         * config/mips/x-native (driver-native.o): Likewise.
20692         * config/rs6000/t-rs6000 (rs6000-c.o): Likewise.
20693         * config/rs6000/x-darwin (host-ppc-darwin.o): Likewise.
20694         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Likewise.
20695         * config/rs6000/x-rs6000 (driver-rs6000.o): Likewise.
20696         * config/score/t-score-elf (score7.o): Likewise.
20697         (score3.o): Likewise.
20698         * config/sh/t-sh (sh-c.o): Likewise.
20699         * config/sh/t-symbian (sh-c.o): Likewise.
20700         (symbian.o): Likewise.
20701         * config/spu/t-spu-elf (spu-c.o): Likewise.
20702         * config/v850/t-v850 (v850-c.o): Likewise.
20703         * config/v850/t-v850e (v850-c.o): Likewise.
20704
20705 2009-05-26  Richard Guenther  <rguenther@suse.de>
20706
20707         PR tree-optimization/40122
20708         * tree-ssa-ccp.c (ccp_fold): Fold vector CONSTRUCTORs to
20709         VECTOR_CSTs if possible.
20710         (fold_gimple_assign): Likewise.
20711
20712 2009-05-26  Richard Guenther  <rguenther@suse.de>
20713
20714         PR middle-end/40252
20715         * fold-const.c (fold_binary): Use the correct types for building
20716         rotates.
20717
20718 2009-05-26  Richard Guenther  <rguenther@suse.de>
20719
20720         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove
20721         redundant calls to merge_alias_info.
20722         (bump_vector_ptr): Likewise.
20723         * tree-ssa-copy.c (merge_alias_info): Remove.
20724         (replace_exp_1): Remove call to merge_alias_info.
20725         (propagate_tree_value): Likewise.
20726         (fini_copy_prop): Propagate points-to info.
20727         * tree-flow.h (merge_alias_info): Remove.
20728
20729 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
20730
20731         * config/picochip/picochip.C (PARAM_INLINE_CALL_COST): Remove.
20732
20733 2009-05-25  Jan Hubicka  <jh@suse.cz>
20734
20735         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
20736         * cgraph.h (struct inline_summary): New filed self_wize,
20737         size_inlining_benefit, self_time and time_inlining_benefit.
20738         (struct cgraph_global_info): Replace insns by time ans size fields.
20739         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
20740         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
20741         (ipcp_update_callgraph): Do not touch function bodies.
20742         * ipa-inline.c: Include except.h
20743         (MAX_TIME): New constant.
20744         (overall_insns): Remove.
20745         (leaf_node_p): New.
20746         (overall_size, max_benefit): New static variables.
20747         (cgraph_estimate_time_after_inlining): New function.
20748         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
20749         (cgraph_clone_inlined_nodes): Update size.
20750         (cgraph_mark_inline_edge): Update size.
20751         (cgraph_estimate_growth): Use size info.
20752         (cgraph_check_inline_limits): Check size.
20753         (cgraph_default_inline_p): Likewise.
20754         (cgraph_edge_badness): Compute badness based on benefit and size cost.
20755         (cgraph_decide_recursive_inlining): Check size.
20756         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
20757         and times.
20758         (cgraph_decide_inlining): Likewise.
20759         (cgraph_decide_inlining_incrementally): Likewise; honor
20760         PARAM_EARLY_INLINING_INSNS.
20761         (likely_eliminated_by_inlining_p): New predicate.
20762         (estimate_function_body_sizes): New function.
20763         (compute_inline_parameters): Use it.
20764         * except.c (must_not_throw_labels): New function.
20765         * except.h (must_not_throw_labels): Declare.
20766         * tree-inline.c (init_inline_once): Kill inlining_weigths
20767         * tree-ssa-structalias.c: Avoid uninitialized warning.
20768         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
20769         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
20770         (PARAM_INLINE_CALL_COST): Remove.
20771         (PARAM_EARLY_INLINING_INSNS): New.
20772
20773 2009-05-25  Richard Guenther  <rguenther@suse.de>
20774
20775         PR tree-optimization/36327
20776         * tree-ssa-alias.c (walk_non_aliased_vuses): Add second walker
20777         callback for reference translation or lookup at the point of may-defs.
20778         * tree-ssa-alias.h (walk_non_aliased_vuses): Adjust prototype.
20779         * tree-ssa-sccvn.c (get_ref_from_reference_ops): Bail out
20780         for union COMPONENT_REFs.
20781         (vn_reference_lookup_3): New callback.  Lookup from memset
20782         and CONSTRUCTOR assignment, translate through struct copies.
20783         (vn_reference_lookup_pieces): Make sure to not free the
20784         passed operands array.  Adjust walk_non_aliased_vuses call.
20785         (vn_reference_lookup): Adjust walk_non_aliased_vuses call,
20786         make sure we do not leak memory.
20787
20788 2009-05-25  Richard Guenther  <rguenther@suse.de>
20789
20790         * tree-ssa-alias.h (dump_points_to_solution): Declare.
20791         * tree-inline.c (expand_call_inline): Reset the escaped and
20792         callused solutions.
20793         * tree-ssa-structalias.c (pass_build_ealias): New.
20794         * tree-pass.h (pass_build_ealias): Declare.
20795         * passes.c (init_optimization_passes): Add PTA during
20796         early optimizations.
20797         * tree-ssa-alias.c (dump_alias_info): Dump the ESCAPED
20798         and CALLUSED solutions.
20799         (dump_points_to_solution): New function, split out from ...
20800         (dump_points_to_info_for): ... here.
20801         * tree-parloops.c (parallelize_loops): Reset the escaped and
20802         callused solutions.
20803
20804 2009-05-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
20805
20806         PR bootstrap/40027
20807         * config/i386/i386.c (USE_HIDDEN_LINKONCE): Only define if missing.
20808         * config/i386/sol2.h [!TARGET_GNU_LD] (USE_HIDDEN_LINKONCE): Define.
20809
20810 2009-05-25  Ira Rosen  <irar@il.ibm.com>
20811
20812         PR tree-optimization/40238
20813         * tree-vect-stmts.c (vect_init_vector): Insert initialization
20814         statements after basic block's labels.
20815         * tree-vect-slp.c (vect_slp_transform_bb): Call destroy_bb_vec_info()
20816         to free the allocated memory.
20817
20818 2009-05-24  Kaz Kojima  <kkojima@gcc.gnu.org>
20819
20820         * gcc/config/sh/sh.c (sh_set_return_address): Mark store of
20821         return address with a USE.
20822
20823 2009-05-24  Richard Guenther  <rguenther@suse.de>
20824
20825         PR middle-end/40233
20826         * tree.c (make_vector_type): Build the TYPE_DEBUG_REPRESENTATION_TYPEs
20827         array type from the main variant of the inner type.
20828
20829 2009-05-24  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
20830
20831         * config/vax/vax-protos.h (legitimate_constant_address_p): Change
20832         definition to bool (from int) to un-break build.
20833         (legitimate_constant_p, vax_mode_dependent_address_p): Likewise.
20834
20835 2009-05-24  Paolo Bonzini  <bonzini@gnu.org>
20836
20837         * tree-ssa-operands.h (push_stmt_changes, pop_stmt_changes,
20838         discard_stmt_changes): Delete.
20839         * tree-ssa-operands.c (scb_stack): Delete.
20840         (init_ssa_operands): Do not initialize it.
20841         (fini_ssa_operands): Do not free it.
20842         (push_stmt_changes, pop_stmt_changes, discard_stmt_changes): Delete.
20843
20844         * tree-cfg.c (replace_uses_by): Replace pop_stmt_changes with
20845         update_stmt, remove the others.  Fix comments.
20846         * tree-dfa.c (optimize_stack_restore): Likewise.
20847         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Likewise.
20848         * tree-ssa-loop-ivopts.c (rewrite_use): Likewise.
20849         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
20850         * tree-ssa-ccp.c (optimize_stack_restore, execute_fold_all_builtins):
20851         Likewise.
20852         * tree-ssa-propagate.c (substitute_and_fold): Likewise.
20853         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
20854         (dom_opt_finalize_block): Likewise, adjusting access to
20855         stmts_to_rescan.
20856         (optimize_stmt): Likewise, adjusting access to stmts_to_rescan.
20857         (stmts_to_rescan): Change item type to gimple.
20858         (tree_ssa_dominator_optimize): Change type of stmts_to_rescan.
20859
20860 2009-05-24  Ira Rosen  <irar@il.ibm.com>
20861
20862         * doc/passes.texi (Tree-SSA passes): Document SLP pass.
20863         * tree-pass.h (pass_slp_vectorize): New pass.
20864         * params.h (SLP_MAX_INSNS_IN_BB): Define.
20865         * timevar.def (TV_TREE_SLP_VECTORIZATION): Define.
20866         * tree-vectorizer.c (timevar.h): Include.
20867         (user_vect_verbosity_level): Declare.
20868         (vect_location): Fix comment.
20869         (vect_set_verbosity_level): Update user_vect_verbosity_level
20870         instead of vect_verbosity_level.
20871         (vect_set_dump_settings): Add an argument. Ignore user defined
20872         verbosity if dump flags require higher level of verbosity. Print to
20873         stderr only for loop vectorization.
20874         (vectorize_loops): Update call to vect_set_dump_settings.
20875         (execute_vect_slp): New function.
20876         (gate_vect_slp): Likewise.
20877         (struct gimple_opt_pass pass_slp_vectorize): New.
20878         * tree-vectorizer.h (struct _bb_vec_info): Define along macros to
20879         access its members.
20880         (vec_info_for_bb): New function.
20881         (struct _stmt_vec_info): Add bb_vinfo and a macro for its access.
20882         (VECTORIZATION_ENABLED): New macro.
20883         (SLP_ENABLED, SLP_DISABLED): Likewise.
20884         (vect_is_simple_use): Add bb_vec_info argument.
20885         (new_stmt_vec_info, vect_analyze_data_ref_dependences,
20886         vect_analyze_data_refs_alignment, vect_verify_datarefs_alignment,
20887         vect_analyze_data_ref_accesses, vect_analyze_data_refs,
20888         vect_schedule_slp, vect_analyze_slp): Likewise.
20889         (vect_analyze_stmt): Add slp_tree argument.
20890         (find_bb_location): Declare.
20891         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
20892         * tree-vect-loop.c (new_loop_vec_info): Adjust function calls.
20893         (vect_analyze_loop_operations, vect_analyze_loop,
20894         get_initial_def_for_induction, vect_create_epilog_for_reduction,
20895         vect_finalize_reduction, vectorizable_reduction,
20896         vectorizable_live_operation, vect_transform_loop): Likewise.
20897         * tree-data-ref.c (dr_analyze_innermost): Update comment,
20898         skip evolution analysis if analyzing a basic block.
20899         (dr_analyze_indices): Likewise.
20900         (initialize_data_dependence_relation): Skip the test whether the
20901         object is invariant for basic blocks.
20902         (compute_all_dependences): Skip dependence analysis for data
20903         references in basic blocks.
20904         (find_data_references_in_stmt): Don't fail in case of invariant
20905         access in basic block.
20906         (find_data_references_in_bb): New function.
20907         (find_data_references_in_loop): Move code to
20908         find_data_references_in_bb and add a call to it.
20909         (compute_data_dependences_for_bb): New function.
20910         * tree-data-ref.h (compute_data_dependences_for_bb): Declare.
20911         * tree-vect-data-refs.c (vect_check_interleaving): Adjust to the case
20912         that STEP is 0.
20913         (vect_analyze_data_ref_dependence): Check for interleaving in case of
20914         unknown dependence in basic block and fail in case of dependence in
20915         basic block.
20916         (vect_analyze_data_ref_dependences): Add bb_vinfo argument, get data
20917         dependence instances from either loop or basic block vectorization
20918         info.
20919         (vect_compute_data_ref_alignment): Check if it is loop vectorization
20920         before calling nested_in_vect_loop_p.
20921         (vect_compute_data_refs_alignment): Add bb_vinfo argument, get data
20922         dependence instances from either loop or basic block vectorization
20923         info.
20924         (vect_verify_datarefs_alignment): Likewise.
20925         (vect_enhance_data_refs_alignment): Adjust function calls.
20926         (vect_analyze_data_refs_alignment): Likewise.
20927         (vect_analyze_group_access): Fix printing. Skip different checks if
20928         DR_STEP is 0. Keep strided stores either in loop or basic block
20929         vectorization data structure. Fix indentation.
20930         (vect_analyze_data_ref_access): Fix comments, allow zero step in
20931         basic blocks.
20932         (vect_analyze_data_ref_accesses): Add bb_vinfo argument, get data
20933         dependence instances from either loop or basic block vectorization
20934         info.
20935         (vect_analyze_data_refs): Update comment. Call
20936         compute_data_dependences_for_bb to analyze basic blocks.
20937         (vect_create_addr_base_for_vector_ref): Check for outer loop only in
20938         case of loop vectorization. In case of basic block vectorization use
20939         data-ref itself as a base.
20940         (vect_create_data_ref_ptr): In case of basic block vectorization:
20941         don't advance the pointer, add new statements before the current
20942         statement.  Adjust function calls.
20943         (vect_supportable_dr_alignment): Support only aligned accesses in
20944         basic block vectorization.
20945         * common.opt (ftree-slp-vectorize): New flag.
20946         * tree-vect-patterns.c (widened_name_p): Adjust function calls.
20947         (vect_pattern_recog_1): Likewise.
20948         * tree-vect-stmts.c (process_use): Likewise.
20949         (vect_init_vector): Add new statements in the beginning of the basic
20950         block in case of basic block SLP.
20951         (vect_get_vec_def_for_operand): Adjust function calls.
20952         (vect_finish_stmt_generation): Likewise.
20953         (vectorizable_call): Add assert that it is loop vectorization, adjust
20954         function calls.
20955         (vectorizable_conversion, vectorizable_assignment): Likewise.
20956         (vectorizable_operation): In case of basic block SLP, take
20957         vectorization factor from statement's type and skip the relevance
20958         check. Adjust function calls.
20959         (vectorizable_type_demotion): Add assert that it is loop
20960         vectorization, adjust function calls.
20961         (vectorizable_type_promotion): Likewise.
20962         (vectorizable_store): Check for outer loop only in case of loop
20963         vectorization. Adjust function calls. For basic blocks, skip the
20964         relevance check and don't advance pointers.
20965         (vectorizable_load): Likewise.
20966         (vectorizable_condition): Add assert that it is loop vectorization,
20967         adjust function calls.
20968         (vect_analyze_stmt): Add argument. In case of basic block SLP, check
20969         that it is not reduction, get vector type, call only supported
20970         functions, skip loop specific parts.
20971         (vect_transform_stmt): Check for outer loop only in case of loop
20972         vectorization.
20973         (new_stmt_vec_info): Add new argument and initialize bb_vinfo.
20974         (vect_is_simple_use): Fix comment, add new argument, fix conditions
20975         for external definition.
20976         * passes.c (pass_slp_vectorize): New pass.
20977         * tree-vect-slp.c (find_bb_location): New function.
20978         (vect_get_and_check_slp_defs): Add argument, adjust function calls,
20979         check for patterns only in loops.
20980         (vect_build_slp_tree): Add argument, adjust function calls, fail in
20981         case of multiple types in basic block SLP.
20982         (vect_mark_slp_stmts_relevant): New function.
20983         (vect_supported_load_permutation_p): Fix comment.
20984         (vect_analyze_slp_instance): Add argument. In case of basic block
20985         SLP, take vectorization factor from statement's type, check that
20986         unrolling factor is 1. Adjust function call. Save SLP instance in
20987         either loop or basic block vectorization structure. Return FALSE,
20988         if SLP failed.
20989         (vect_analyze_slp): Add argument. Get strided stores groups from
20990         either loop or basic block vectorization structure. Return FALSE
20991         if basic block SLP failed.
20992         (new_bb_vec_info): New function.
20993         (destroy_bb_vec_info, vect_slp_analyze_node_operations,
20994         vect_slp_analyze_operations, vect_slp_analyze_bb): Likewise.
20995         (vect_schedule_slp): Add argument. Get SLP instances from either
20996         loop or basic block vectorization structure. Set vectorization factor
20997         to be 1 for basic block SLP.
20998         (vect_slp_transform_bb): New function.
20999         * params.def (PARAM_SLP_MAX_INSNS_IN_BB): Define.
21000
21001 2009-05-23  Mark Mitchell  <mark@codesourcery.com>
21002
21003         * final.c (shorten_branches): Do not align labels for jump tables.
21004         (final_scan_insn): Use JUMP_TABLE_DATA_P.
21005
21006 2009-05-23  Eric Botcazou  <ebotcazou@adacore.com>
21007
21008         * doc/passes.texi: Standardize spelling of RTL, Tree and Tree SSA.
21009         Remove outdated reference to flow.c and fix nits.
21010         * doc/gccint.texi: Tweak RTL description.
21011         * doc/rtl.texi: Likewise.
21012
21013 2009-05-23  Denis Chertykov  <chertykov@gmail.com>
21014
21015         * config/avr/avr.c: Change my email address.
21016         * config/avr/avr.h: Likewise.
21017         * config/avr/avr.md: Likewise.
21018         * config/avr/avr-protos.h: Likewise.
21019         * config/avr/libgcc.S: Likewise.
21020
21021 2009-05-22  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
21022
21023         * config/spu/spu-protos.h (aligned_mem_p, spu_valid_mov): Remove.
21024         (spu_split_load, spu_split_store): Change return type to int.
21025         (spu_split_convert): Declare.
21026         * config/spu/predicates.md (spu_mem_operand): Remove.
21027         (spu_mov_operand): Update.
21028         (spu_dest_operand, shiftrt_operator, extend_operator): Define.
21029         * config/spu/spu.c (regno_aligned_for_load): Remove.
21030         (reg_aligned_for_addr, spu_expand_load): Define.
21031         (spu_expand_extv): Reimplement and handle MEM.
21032         (spu_expand_insv): Handle MEM.
21033         (spu_sched_reorder): Handle insn's with length 0.
21034         (spu_legitimate_address_p): Reimplement.
21035         (store_with_one_insn_p): Return TRUE for any mode with size
21036         larger than 16 bytes.
21037         (address_needs_split): Define.
21038         (spu_expand_mov): Call spu_split_load and spu_split_store for MEM
21039         operands.
21040         (spu_convert_move): Define.
21041         (spu_split_load): Use spu_expand_load and change all MEM's to TImode.
21042         (spu_split_store): Change all MEM's to TImode.
21043         (spu_init_expanders): Preallocate registers that correspond to
21044         LAST_VIRTUAL_REG+1 and LAST_VIRTUAL_REG+2 and set them with
21045         mark_reg_pointer.
21046         (spu_split_convert): Define.
21047         * config/spu/spu.md (QHSI, QHSDI): New mode iterators.
21048         (_move<mode>, _movdi, _movti): Update predicate and condition.
21049         (load, store): Change to define_split.
21050         (extendqiti2, extendhiti2, extendsiti2, extendditi2): Simplify to
21051         extend<mode>ti2.
21052         (zero_extendqiti2, zero_extendhiti2, <v>lshr<mode>3_imm): Define.
21053         (lshr<mode>3, lshr<mode>3_imm, lshr<mode>3_re): Simplify to one
21054         define_insn_and_split of lshr<mode>3.
21055         (shrqbybi_<mode>, shrqby_<mode>): Simplify to define_expand.
21056         (<v>ashr<mode>3_imm): Define.
21057         (extv, extzv, insv): Allow MEM operands.
21058         (trunc_shr_ti<mode>, trunc_shr_tidi, shl_ext_<mode>ti,
21059         shl_ext_diti, sext_trunc_lshr_tiqisi, zext_trunc_lshr_tiqisi,
21060         sext_trunc_lshr_tihisi, zext_trunc_lshr_tihisi): Define for combine.
21061         (_spu_convert2): Change to define_insn_and_split and remove the
21062         corresponding define_peephole2.
21063         (stack_protect_set, stack_protect_test, stack_protect_test_si):
21064         Change predicates to memory_operand.
21065
21066 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
21067
21068         * config/arm/thumb2.md: Add 16-bit multiply instructions.
21069
21070 2009-05-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
21071
21072         PR tree-optimization/40219
21073         * tree.c (iterative_hash_expr): Make sure the builtin function is
21074         a normal builtin function and not a front end or back end builtin
21075         before indexing into the built_in_decls array.
21076
21077 2009-05-22  Richard Guenther  <rguenther@suse.de>
21078
21079         PR middle-end/38964
21080         * alias.c (write_dependence_p): Do not use TBAA for answering
21081         anti-dependence or output-dependence.
21082         * tree-ssa-structalias.c (set_uids_in_ptset): Remove TBAA pruning code.
21083         (emit_pointer_definition): Remove.
21084         (emit_alias_warning): Likewise.
21085         (find_what_var_points_to): Remove TBAA pruning code.
21086         (find_what_p_points_to): Likewise.  Do not warn about strict-aliasing
21087         violations.
21088         (compute_points_to_sets): Remove code computing the set of
21089         dereferenced pointers.
21090         * tree-data-ref.c (dr_may_alias_p): Properly use the split
21091         oracle for querying anti and output dependencies.
21092         * tree-ssa-alias.c (refs_may_alias_p_1): Add argument specifying
21093         if TBAA may be applied.
21094         (refs_anti_dependent_p): New function.
21095         (refs_output_dependent_p): Likewise.
21096         * tree-ssa-alias.h (refs_anti_dependent_p): Declare.
21097         (refs_output_dependent_p): Likewise.
21098         * doc/tree-ssa.texi (Memory model): New section.
21099         * doc/c-tree.texi (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
21100         * doc/gimple.texi (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
21101         * cfgexpand.c (expand_gimple_basic_block): Do not handle
21102         GIMPLE_CHANGE_DYNAMIC_TYPE or CHANGE_DYNAMIC_TYPE_EXPR.
21103         * expr.c (expand_expr_real_1): Likewise.
21104         * gimple-low.c (lower_stmt): Likewise.
21105         * gimple-pretty-print.c (dump_gimple_stmt): Likewise.
21106         (dump_gimple_cdt): Remove.
21107         * gimple.c (gss_for_code): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
21108         (gimple_size): Likewise.
21109         (walk_gimple_op): Likewise.
21110         (is_gimple_stmt): Likewise.
21111         (walk_stmt_load_store_addr_ops): Likewise.
21112         (gimple_build_cdt): Remove.
21113         * gimple.def (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
21114         * gimple.h (gimple_cdt_new_type): Remove.
21115         (gimple_cdt_new_type_ptr): Likewise.
21116         (gimple_cdt_set_new_type): Likewise.
21117         (gimple_cdt_location): Likewise.
21118         (gimple_cdt_location_ptr): Likewise.
21119         (gimple_cdt_set_location): Likewise.
21120         * gimplify.c (gimplify_expr): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
21121         * tree-cfg.c (remove_useless_stmts_1): Do not handle
21122         GIMPLE_CHANGE_DYNAMIC_TYPE.
21123         (verify_types_in_gimple_stmt): Likewise.
21124         * tree-inline.c (estimate_num_insns): Likewise.
21125         (expand_call_inline): Do not copy DECL_NO_TBAA_P.
21126         (copy_decl_to_var): Likewise.
21127         (copy_result_decl_to_var): Likewise.
21128         * tree-pretty-print.c (dump_generic_node): Do not handle
21129         CHANGE_DYNAMIC_TYPE_EXPR.
21130         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
21131         * tree-ssa-operands.c (get_expr_operands): Likewise.
21132         * tree-ssa-structalias.c (struct variable_info): Remove
21133         no_tbaa_pruning member.
21134         (new_var_info): Do not set it based on DECL_NO_TBAA_P.
21135         (unify_nodes): Do not copy it.
21136         (find_func_aliases): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
21137         (dump_solution_for_var): Do not dump no_tbaa_pruning state.
21138         (set_uids_in_ptset): Do not check it.
21139         (find_what_var_points_to): Likewise.
21140         (compute_tbaa_pruning): Remove.
21141         (compute_points_to_sets): Do not call it.
21142         * tree.c (walk_tree_1): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
21143         * tree.def (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
21144         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Remove.
21145         (CHANGE_DYNAMIC_TYPE_LOCATION): Likewise.
21146         (DECL_NO_TBAA_P): Likewise.
21147         (struct tree_decl_common): Move no_tbaa_flag to unused flags section.
21148         * omp-low.c (copy_var_decl): Do not copy DECL_NO_TBAA_P.
21149         (expand_omp_atomic_pipeline): Do not set it.
21150         * print-tree.c (print_node): Do not dump it.
21151         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
21152         redundant check.
21153
21154 2009-05-22 Vladimir Makarov <vmakarov@redhat.com>
21155
21156         PR target/39856
21157         * reg-stack.c (subst_stack_regs_pat): Remove gcc_assert for note
21158         for clobber.
21159
21160 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
21161
21162         * tree.c (handle_dll_attribute): Mark dllexport'd inlines as
21163         non-external.
21164
21165 2009-05-22  Ben Elliston  <bje@au.ibm.com>
21166
21167         * Makefile.in (bversion.h, s-bversion): New targets.
21168         (TOPLEV_H): Add bversion.h.
21169         * toplev.h: Include "bversion.h".
21170         (ATTRIBUTE_GCC_DIAG): When building with checking disabled, use
21171         the __format__ attribute only if compiling with the same version
21172         of GCC as the sources (the "build version").
21173
21174 2009-05-22  Ben Elliston  <bje@au.ibm.com>
21175
21176         * c-format.c (handle_format_attribute): Fix comment typo.
21177
21178 2009-05-21  Steve Ellcey  <sje@cup.hp.com>
21179
21180         PR target/37846
21181         * config/ia64/ia64.opt (mfused-madd): New.
21182         * config/ia64/ia64.h (TARGET_DEFAULT): Set MASK_FUSED_MADD.
21183         * config/ia64/hpux.h (TARGET_DEFAULT): Ditto.
21184         * config/ia64/ia64.md (maddsf4, msubsf4, nmaddsf4,
21185         madddf4, madddf4_trunc, msubdf4, msubdf4_trunc, nmadddf4,
21186         nmadddf4_truncsf, maddxf4, maddxf4_truncsf, maddxf4_truncdf,
21187         msubxf4, msubxf4_truncsf msubxf4_truncdf, nmaddxf4,
21188         nmaddxf4_truncsf, nmaddxf4_truncdf): Check TARGET_FUSED_MADD.
21189         * config/ia64/vect.md (addv2sf3, subv2sf3): Force fpma/fpms
21190         instruction if !TARGET_FUSED_MADD.
21191         (fpma, fpms): Remove colon from name.
21192
21193 2009-05-22  Richard Guenther  <rguenther@suse.de>
21194
21195         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Record
21196         TMR_ORIGINAL.  Always either record TMR_SYMBOL or TMR_BASE.
21197         * tree-ssa-pre.c (create_component_ref_by_pieces_1): Handle
21198         TARGET_MEM_REF.
21199         (create_expression_by_pieces): Only convert if necessary.
21200         * gimplify.c (gimplify_expr): Handle TARGET_MEM_REF.
21201         * tree-ssa-loop-im.c (gen_lsm_tmp_name): Handle INTEGER_CST.
21202
21203 2009-05-21  Adam Nemet  <anemet@caviumnetworks.com>
21204
21205         * config/mips/mips.md (*extzv_trunc<mode>_exts): Turn into a
21206         regular pattern from a template and rename it ...
21207         (*extzv_truncsi_exts): ... to this.
21208
21209 2009-05-21  Richard Guenther  <rguenther@suse.de>
21210
21211         * cgraph.h (struct cgraph_node): Remove inline_decl member.
21212         * ipa-inline.c (cgraph_mark_inline_edge): Do not check it.
21213         (cgraph_default_inline_p): Likewise.
21214         (cgraph_decide_inlining_incrementally): Likewise.
21215
21216 2009-05-21  H.J. Lu  <hongjiu.lu@intel.com>
21217             Uros Bizjak  <ubizjak@gmail.com>
21218
21219         * config/i386/cpuid.h (bit_MOVBE): New.
21220
21221         * config/i386/driver-i386.c (host_detect_local_cpu): Check movbe.
21222
21223         * config/i386/i386.c (OPTION_MASK_ISA_MOVBE_SET): New.
21224         (OPTION_MASK_ISA_MOVBE_UNSET): Likewise.
21225         (ix86_handle_option): Handle OPT_mmovbe.
21226         (ix86_target_string): Add -mmovbe.
21227         (pta_flags): Add PTA_MOVBE.
21228         (processor_alias_table): Add PTA_MOVBE to "atom".
21229         (override_options): Handle PTA_MOVBE.
21230
21231         * config/i386/i386.h (TARGET_MOVBE): New.
21232
21233         * config/i386/i386.md (bswapsi2): Check TARGET_MOVBE.
21234         (*bswapsi_movbe): New.
21235         (*bswapdi_movbe): Likewise.
21236         (bswapdi2): Renamed to ...
21237         (*bswapdi_1): This.
21238         (bswapdi2): New expander.
21239
21240         * config/i386/i386.opt (mmovbe): New.
21241
21242         * doc/invoke.texi: Document -mmovbe.
21243
21244 2009-05-21  Taras Glek  <tglek@mozilla.com>
21245
21246         * plugin.c (try_init_one_plugin): Updated to new plugin_init API.
21247         * gcc-plugin.h (plugin_init): Updated signature.
21248         * gcc-plugin.h (plugin_name_args): Moved to this header.
21249         * doc/plugins.texi (plugin_init): Updated documention to reflect
21250         API change.
21251         * doc/plugins.texi (plugin_name_args): Added to documention.
21252
21253 2009-05-21  Mark Mitchell  <mark@codesourcery.com>
21254
21255         * config/arm/neon.md (*mul<mode>3add<mode>_neon): New pattern.
21256         (*mul<mode>3neg<mode>add<mode>_neon): Likewise.
21257
21258 2009-05-21  Shujing Zhao  <pearly.zhao@oracle.com>
21259
21260         * config/i386/i386.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P and
21261         JUMP_TABLE_DATA_P predicates where applicable.
21262         * config/i386/predicates.md: Ditto.
21263         * config/i386/sse.md: Ditto.
21264
21265 2009-05-21  Jakub Jelinek  <jakub@redhat.com>
21266
21267         * config/i386/i386.md (adddi_4_rex64, addsi_4, addhi_4): For
21268         operand2 -128 override length_immediate attribute to 1.
21269         * config/i386/predicates.md (constm128_operand): New predicate.
21270
21271         * config/i386/i386.c (memory_address_length): Handle %r12
21272         the same as %rsp and %r13 the same as %rbp.  For %rsp and %rbp
21273         also check REGNO.
21274         (ix86_attr_length_address_default): For MODE_SI lea in 64-bit
21275         mode look through optional ZERO_EXTEND and SUBREG.
21276         * config/i386/i386.md (R12_REG): New define_constant.
21277         (prefix_data16): For sse unit set also for MODE_TI insns.
21278         (prefix_rex): For -m32 always return 0.  For TYPE_IMOVX
21279         insns set if operand 1 is ext_QIreg_operand.
21280         (modrm): For TYPE_IMOV clear only if not MODE_DI.  For
21281         TYPE_{ALU{,1},ICMP,TEST} insn clear if there is non-shortened
21282         immediate.
21283         (*movdi_extzv_1, zero_extendhidi2, zero_extendqidi2): Change
21284         mode from MODE_DI to MODE_SI.
21285         (movdi_1_rex64): Override modrm and length_immediate attributes
21286         only for movabs (TYPE_IMOV, alternative 2).
21287         (zero_extendsidi2_rex64): Clear prefix_0f attribute if TYPE_IMOVX.
21288         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit,
21289         *float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit,
21290         *float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit,
21291         *float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Set
21292         prefix_rex attribute if DImode.
21293         (*adddi_1_rex64, *adddi_2_rex64, *adddi_3_rex64, *adddi_5_rex64,
21294         *addsi_1, *addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
21295         *addsi_3_zext, *addsi_5, *addhi_1_lea, *addhi_1, *addhi_2, *addhi_3,
21296         *addhi_5, *addqi_1_lea, *addqi_1): Override length_immediate
21297         attribute to 1 if TYPE_ALU and operand 2 is const128_operand.
21298         (pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64):
21299         Likewise.  For TYPE_IMOV clear length_immediate attribute.
21300         (*ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashldi3_cconly_rex64,
21301         *ashlsi3_1, *ashlsi3_1_zext, *ashlsi3_cmp, **ashlsi3_cconly,
21302         *ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1, *ashlhi3_cmp,
21303         *ashlhi3_cconly, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
21304         *ashlqi3_cconly): Override length_immediate attribute to 0 if TYPE_ALU
21305         or one operand TYPE_ISHIFT.
21306         (*ashrdi3_1_one_bit_rex64, *ashrdi3_one_bit_cmp_rex64,
21307         *ashrdi3_one_bit_cconly_rex64, *ashrsi3_1_one_bit,
21308         *ashrsi3_1_one_bit_zext, *ashrsi3_one_bit_cmp,
21309         *ashrsi3_one_bit_cconly, *ashrsi3_one_bit_cmp_zext,
21310         *ashrhi3_1_one_bit, *ashrhi3_one_bit_cmp, *ashrhi3_one_bit_cconly,
21311         *ashrqi3_1_one_bit, *ashrqi3_1_one_bit_slp, *ashrqi3_one_bit_cmp,
21312         *ashrqi3_one_bit_cconly, *lshrdi3_1_one_bit_rex64,
21313         *lshrdi3_cmp_one_bit_rex64, *lshrdi3_cconly_one_bit_rex64,
21314         *lshrsi3_1_one_bit, *lshrsi3_1_one_bit_zext, *lshrsi3_one_bit_cmp,
21315         *lshrsi3_one_bit_cconly, *lshrsi3_cmp_one_bit_zext,
21316         *lshrhi3_1_one_bit, *lshrhi3_one_bit_cmp, *lshrhi3_one_bit_cconly,
21317         *lshrqi3_1_one_bit, *lshrqi3_1_one_bit_slp, *lshrqi2_one_bit_cmp,
21318         *lshrqi2_one_bit_cconly, *rotlsi3_1_one_bit_rex64, *rotlsi3_1_one_bit,
21319         *rotlsi3_1_one_bit_zext, *rotlhi3_1_one_bit, *rotlqi3_1_one_bit_slp,
21320         *rotlqi3_1_one_bit, *rotrdi3_1_one_bit_rex64, *rotrsi3_1_one_bit,
21321         *rotrsi3_1_one_bit_zext, *rotrhi3_one_bit, *rotrqi3_1_one_bit,
21322         *rotrqi3_1_one_bit_slp): Override length_immediate attribute to 0,
21323         set mode attribute, don't override length attribute.
21324         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Set prefix_0f attribute
21325         to 1.
21326         (return_internal_long): Set length attribute to 2 instead of 1.
21327         (*strmovqi_rex_1, *strsetqi_rex_1, *rep_stosqi_rex64,
21328         *cmpstrnqi_nz_rex_1, *cmpstrnqi_rex_1, *strlenqi_rex_1): Clear
21329         prefix_rex attribute.
21330         * config/i386/predicates.md (ext_QIreg_operand, const128_operand):
21331         New predicates.
21332         (memory_displacement_only_operand): Always return 0 for TARGET_64BIT.
21333
21334 2009-05-21  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
21335
21336         * config/arm/thumb2.md (orsi_notsi_si): Fix typo in pattern.
21337
21338 2009-05-20  Ian Lance Taylor  <iant@google.com>
21339
21340         * tree.c (build_tree_list_vec_stat): New function.
21341         (ctor_to_vec): New function.
21342         (build_nt_call_vec): New function.
21343         (build_call_array): Change args to be a const pointer.
21344         (build_call_vec): New function.
21345         * tree.h (build_nt_call_vec): Declare.
21346         (build_tree_list_vec_stat): Declare.
21347         (build_tree_list_vec): Define.
21348         (build_call_array): Update declaration.
21349         (build_call_vec): Declare.
21350         (ctor_to_vec): Declare.
21351         * c-common.c (tree_vector_cache): New static variable.
21352         (make_tree_vector): New function.
21353         (release_tree_vector): New function.
21354         (make_tree_vector_single): New function.
21355         (make_tree_vector_copy): New function.
21356         * c-common.h (tree_vector_cache, make_tree_vector): Declare.
21357         (make_tree_vector_single, make_tree_vector_copy): Declare.
21358         * c-parser.c (cached_expr_list_1, cached_expr_list_2): Remove.
21359         (c_parser_expr_list): Don't manage cache here, instead call
21360         make_tree_vector.
21361         (c_parser_release_expr_list): Remove static function.
21362         (c_parser_vec_to_tree_list): Remove static function.
21363         (c_parser_attributes): Call build_tree_list_vec instead of
21364         c_parser_vec_to_tree_list.  Call release_tree_vector instead of
21365         c_parser_release_expr_list.
21366         (c_parser_postfix_expression_after_primary): Likewise.
21367         (c_parser_objc_keywordexpr): Likewise.
21368
21369 2009-05-20  Sandra Loosemore  <sandra@codesourcery.com>
21370
21371         * doc/tm.texi (Misc): Document TARGET_INVALID_PARAMETER_TYPE,
21372         TARGET_INVALID_RETURN_TYPE, TARGET_PROMOTED_TYPE, and
21373         TARGET_CONVERT_TO_TYPE.
21374         * hooks.c (hook_tree_const_tree_null): Define.
21375         * hooks.h (hook_tree_const_tree_null): Declare.
21376         * target.h (struct gcc_target):  Add invalid_parameter_type,
21377         invalid_return_type, promoted_type, and convert_to_type fields.
21378         * target-def.h (TARGET_INVALID_PARAMETER_TYPE): Define.
21379         (TARGET_INVALID_RETURN_TYPE): Define.
21380         (TARGET_PROMOTED_TYPE): Define.
21381         (TARGET_CONVERT_TO_TYPE): Define.
21382         (TARGET_INITIALIZER): Update for new fields.
21383         * c-decl.c (grokdeclarator): Check targetm.invalid_return_type.
21384         (grokparms): Check targetm.invalid_parameter_type.
21385         * c-typeck.c (default_conversion): Check targetm.promoted_type.
21386         * c-convert.c (convert): Check targetm.convert_to_type.
21387
21388 2009-05-20  Adam Nemet  <anemet@caviumnetworks.com>
21389
21390         * config/mips/mips.md (*extenddi_truncate<mode>,
21391         *extendsi_truncate<mode>): Emit exts if supported.  Add attribute
21392         defintions.
21393         (*extendhi_truncateqi): New define_insn_and_sptit.
21394
21395 2009-05-20  Jakub Jelinek  <jakub@redhat.com>
21396
21397         PR middle-end/40204
21398         * fold-const.c (fold_binary) <case BIT_AND_EXPR>: Avoid infinite
21399         recursion if build_int_cst_type returns the same INTEGER_CST as arg1.
21400
21401 2009-05-20  Eric Botcazou  <ebotcazou@adacore.com>
21402
21403         * fold-const.c (build_fold_addr_expr_with_type): Take the address of
21404         the operand of VIEW_CONVERT_EXPR.
21405
21406 2009-05-20  H.J. Lu  <hongjiu.lu@intel.com>
21407
21408         * config/i386/driver-i386.c (host_detect_local_cpu): Check
21409         extended family and model for Intel processors.  Support Intel Atom.
21410
21411 2009-05-20  Olivier Hainque  <hainque@adacore.com>
21412
21413         * gstab.h (stab_code_type): Define, to be used instead of the
21414         __stab_debug_code enum, made anonymous.  Add 2009 to the copyright
21415         notice.
21416         * dbxout.c (STAB_CODE_TYPE): Remove #define and replace use
21417         occurrences by stab_code_type.
21418         * mips-tfile.c (STAB_CODE_TYPE): Remove #define, unused.
21419
21420 2009-05-20  Martin Jambor  <mjambor@suse.cz>
21421
21422         * tree-flow.h (insert_edge_copies_seq): Undeclare.
21423         (sra_insert_before): Likewise.
21424         (sra_insert_after): Likewise.
21425         (sra_init_cache): Likewise.
21426         (sra_type_can_be_decomposed_p): Likewise.
21427         * tree-mudflap.c (insert_edge_copies_seq): Copied here from tree-sra.c
21428         * tree-sra.c (sra_type_can_be_decomposed_p): Made static.
21429         (sra_insert_before): Likewise.
21430         (sra_insert_after): Likewise.
21431         (sra_init_cache): Likewise.
21432         (insert_edge_copies_seq): Made static and moved upwards.
21433
21434         * tree-complex.c (extract_component): Added VIEW_CONVERT_EXPR switch
21435         case.
21436
21437         * tree-flow-inline.h (contains_view_convert_expr_p): New function.
21438
21439         * ipa-prop.c (get_ssa_def_if_simple_copy): New function.
21440         (determine_cst_member_ptr): Call get_ssa_def_if_simple_copy to skip
21441         simple copies.
21442
21443 2009-05-20  Richard Guenther  <rguenther@suse.de>
21444
21445         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
21446         with mismatched comparison modes.
21447
21448 2009-05-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
21449
21450         * config/arm/arm.md (*arm_iorsi3): Refactored for only ARM.
21451         (peephole ior (reg, int) -> mov, ior): Refactored for only ARM.
21452         * config/arm/thumb2.md (*thumb_andsi_not_shiftsi_si): Allow bic
21453         with shifts for Thumb2.
21454         (orsi_notsi): New for orn.
21455         (*thumb_orsi_notshiftsi_si): Allow orn with shifts.
21456         (*thumb2_iorsi3): Rewrite support for iorsi for Thumb2.
21457         * config/arm/arm.c (const_ok_for_op): Split case for IOR for Thumb2.
21458         (arm_gen_constant): Set can_invert for IOR and Thumb2, Add comments.
21459         Don't invert remainder for IOR.
21460
21461 2009-05-19  Zdenek Dvorak  <ook@ucw.cz>
21462
21463         PR tree-optimization/40087
21464         * tree-ssa-loop-niter.c (number_of_iterations_ne_max,
21465         number_of_iterations_ne): Rename never_infinite argument.
21466         (number_of_iterations_lt_to_ne, number_of_iterations_lt,
21467         number_of_iterations_le): Handle pointer-type ivs when
21468         exit_must_be_taken is false.
21469         (number_of_iterations_cond):  Do not always assume that
21470         exit_must_be_taken if the control variable is a pointer.
21471
21472 2009-05-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21473
21474         * c-typeck.c (build_binary_op): Allow % on integal vectors.
21475         * doc/extend.texi (Vector Extension): Document that % is allowed too.
21476
21477 2009-05-19  H.J. Lu  <hongjiu.lu@intel.com>
21478
21479         * config/i386/i386.c (ix86_avoid_jump_mispredicts): Check
21480         ASM_OUTPUT_MAX_SKIP_PAD instead of ASM_OUTPUT_MAX_SKIP_ALIGN.
21481
21482 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
21483
21484         PR c/40172
21485         * c.opt (Wlogical-op): Disabled by default.
21486         * c-opt (c_common_post_options): Do not enable Wlogical-op with
21487         Wextra.
21488         * doc/invoke.texi (Wlogical-op): Likewise.
21489
21490 2009-05-19  Eric Botcazou  <ebotcazou@adacore.com>
21491
21492         * tree-scalar-evolution.c (follow_ssa_edge_expr) <NOP_EXPR>: Turn
21493         into CASE_CONVERT.
21494         <PLUS_EXPR>: Strip useless type conversions instead of type nops.
21495         Propagate the type of the first operand.
21496         <ASSERT_EXPR>: Simplify.
21497         (follow_ssa_edge_in_rhs): Use gimple_expr_type to get the type.
21498         Rewrite using the RHS code as discriminant.
21499         <NOP_EXPR>: Turn into CASE_CONVERT.
21500         <PLUS_EXPR>: Propagate the type of the first operand.
21501
21502 2009-05-19  Steve Ellcey  <sje@cup.hp.com>
21503
21504         * config/ia64/ia64-protos.h (ia64_dconst_0_5): New.
21505         (ia64_dconst_0_375): New.
21506         * config/ia64/ia64.c (ia64_override_options): Remove
21507         -minline-sqrt-min-latency warning.
21508         (ia64_dconst_0_5_rtx, ia64_dconst_0_5): New.
21509         (ia64_dconst_0_375_rtx, ia64_dconst_0_375): New
21510         * config/ia64/ia64.md (*sqrt_approx): Remove.
21511         (sqrtsf2): Remove #if 0.
21512         (sqrtsf2_internal_thr): Rewrite and move to div.md.
21513         (sqrtdf): Remove assert.
21514         (sqrtdf2_internal_thr): Rewrite and move to div.md.
21515         (sqrtxf2): Remove #if 0.
21516         (sqrtxf2_internal_thr): Rewrite and move to div.md.
21517         * div.md (sqrt_approx_rf): New.
21518         (sqrtsf2_internal_thr): New implementation.
21519         (sqrtsf2_internal_lat): New.
21520         (sqrtdf2_internal_thr: New implementation.
21521         (sqrtxf2_internal): New implementation.
21522
21523 2009-05-19  Francois-Xavier Coudert  <fxcoudert@gmail.com>
21524             Hans-Peter Nilsson  <hp@axis.com>
21525
21526         * defaults.h (UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE)
21527         (WCHAR_TYPE, MODIFIED_WCHAR_TYPE, PTRDIFF_TYPE, WINT_TYPE)
21528         (INTMAX_TYPE, UINTMAX_TYPE, SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE)
21529         (INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE)
21530         (UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE)
21531         (INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE)
21532         (UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE)
21533         (INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE)
21534         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE)
21535         (SIZE_TYPE, PID_TYPE, CHAR16_TYPE, CHAR32_TYPE): Move defaults here...
21536         * c-common.c: ...from here.
21537
21538 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
21539
21540         * c-common.c (warn_logical_operator): Remove unnecessary conditionals.
21541
21542 2009-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
21543
21544         * builtins.c (do_mpc_arg1): Separate MPFR/MPC C rounding types.
21545
21546 2009-05-19  Ben Elliston  <bje@au.ibm.com>
21547
21548         * unwind-dw2-fde.c (fde_unencoded_compare): Replace type punning
21549         assignments with memcpy calls.
21550         (add_fdes): Likewise.
21551         (binary_search_unencoded_fdes): Likewise.
21552         (linear_search_fdes): Eliminate type puns.
21553
21554 2009-05-19  Richard Guenther  <rguenther@suse.de>
21555
21556         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do
21557         not falsely claim to have propagated into all uses.
21558
21559 2009-05-19  Ben Elliston  <bje@au.ibm.com>
21560
21561         * doc/invoke.texi (C Dialect Options): Update OpenMP specification
21562         version to v3.0.
21563
21564 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
21565
21566         * config/sh/sh-protos.h (sh_legitimate_address_p): Remove.
21567         * config/sh/sh.c (sh_legitimate_address_p): Make static.
21568         (TARGET_LEGITIMATE_ADDRESS_P): New.
21569         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21570         * config/sh/sh.md: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
21571
21572 2009-05-18  Dodji Seketeli  <dodji@redhat.com>
21573
21574         PR debug/40109
21575         * dwarf2out.c (gen_type_die_with_usage): Generate the DIE as a
21576         child of the containing namespace's DIE.
21577
21578 2009-05-18  Adam Nemet  <anemet@caviumnetworks.com>
21579
21580         * config/mips/mips.md (*zero_extend<GPR:mode>_trunc<SHORT:mode>,
21581         *zero_extendhi_truncqi):  Move after the zero_extend patterns.
21582         (*extenddi_truncate<mode>, *extendsi_truncate<mode>): Move after the
21583         extend patterns.
21584
21585 2009-05-18  H.J. Lu  <hongjiu.lu@intel.com>
21586
21587         PR target/39942
21588         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Replace
21589         gen_align with gen_pad.
21590         (ix86_reorg): Check ASM_OUTPUT_MAX_SKIP_PAD instead of
21591         #ifdef ASM_OUTPUT_MAX_SKIP_ALIGN.
21592
21593         * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): New.
21594         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
21595
21596         * config/i386/i386.md (align): Renamed to ...
21597         (pad): This.  Replace ASM_OUTPUT_MAX_SKIP_ALIGN with
21598         ASM_OUTPUT_MAX_SKIP_PAD.
21599
21600 2009-05-18  Andreas Schwab  <schwab@linux-m68k.org>
21601
21602         * config.gcc: Fix variable syntax.
21603
21604         PR target/39531
21605         * config/m68k/m68k.c (output_andsi3): Mask off sign bit copies
21606         before calling exact_log2.
21607         (output_iorsi3): Likewise.
21608         (output_xorsi3): Likewise.
21609
21610 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
21611
21612         * config/sh/sh.c (expand_cbranchdi4): Use a scratch register
21613         for the none zero constant operand except for EQ and NE
21614         comprisons even when the first operand is R0.
21615
21616 2009-05-18  Andreas Krebbel  <krebbel1@de.ibm.com>
21617
21618         * config/s390/2064.md: Remove trailing whitespaces.
21619         * config/s390/2084.md: Likewise.
21620         * config/s390/constraints.md: Likewise.
21621         * config/s390/fixdfdi.h: Likewise.
21622         * config/s390/libgcc-glibc.ver: Likewise.
21623         * config/s390/s390-modes.def: Likewise.
21624         * config/s390/s390-protos.h: Likewise.
21625         * config/s390/s390.c: Likewise.
21626         * config/s390/s390.h: Likewise.
21627         * config/s390/s390.md: Likewise.
21628         * config/s390/tpf-unwind.h: Likewise.
21629
21630 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
21631
21632         * config/m68k/m68k.c (m68k_legitimize_address): Fix typo in signature.
21633
21634 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
21635
21636         M68K TLS support.
21637         * configure.ac (m68k-*-*): Check if binutils support TLS.
21638         * configure: Regenerate.
21639         * config/m68k/predicates.md (symbolic_operand): Extend comment.
21640         * config/m68k/constraints.md (Cu): New constraint.
21641         * config/m68k/m68k.md (UNSPEC_GOTOFF): Remove.
21642         (UNSPEC_RELOC16, UNSPEC_RELOC32): New constants.
21643         (movsi): Handle TLS symbols.
21644         (addsi3_5200): Handle XTLS symbols, indent.
21645         * config/m68k/m68k-protos.h (m68k_legitimize_tls_address): Declare.
21646         (m68k_tls_reference_p): Declare.
21647         (m68k_legitimize_address): Declare.
21648         (m68k_unwrap_symbol): Declare.
21649         * config/m68k/m68k.opt (mxtls): New option.
21650         * config/m68k/m68k.c (ggc.h): Include.
21651         (m68k_output_dwarf_dtprel): Implement hook.
21652         (TARGET_HAVE_TLS, TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
21653         (m68k_expand_prologue): Load GOT pointer when function needs it.
21654         (m68k_illegitimate_symbolic_constant_p): Handle TLS symbols.
21655         (m68k_legitimate_constant_address_p): Same.
21656         (m68k_decompose_address): Handle TLS references.
21657         (m68k_get_gp): New static function.
21658         (enum m68k_reloc): New contants.
21659         (TLS_RELOC_P): New macro.
21660         (m68k_wrap_symbol): New static function.
21661         (m68k_unwrap_symbol): New function.
21662         (m68k_final_prescan_insn_1): New static function.
21663         (m68k_final_prescan_insn): New function.
21664         (m68k_move_to_reg, m68k_wrap_symbol_into_got_ref): New static
21665         functions.
21666         (legitimize_pic_address): Handle TLS references..
21667         (m68k_tls_get_addr, m68k_get_tls_get_addr)
21668         (m68k_libcall_value_in_a0_p)
21669         (m68k_call_tls_get_addr, m68k_read_tp, m68k_get_m68k_read_tp)
21670         (m68k_call_m68k_read_tp): Helper variables and functions for ...
21671         (m68k_legitimize_tls_address): Handle TLS references.
21672         (m68k_tls_symbol_p, m68k_tls_reference_p_1, m68k_tls_reference_p):
21673         New functions.
21674         (m68k_legitimize_address): Handle TLS symbols.
21675         (m68k_get_reloc_decoration): New static function.
21676         (m68k_output_addr_const_extra): Handle UNSPEC_RELOC16 and
21677         UNSPEC_RELOC32.
21678         (m68k_output_dwarf_dtprel): Implement hook.
21679         (print_operand_address): Handle UNSPEC_RELOC16 adn UNSPEC_RELOC32.
21680         (m68k_libcall_value): Return result in A0 instead of D0 when asked by
21681         m68k_call_* routines.
21682         (sched_attr_op_type): Handle TLS symbols.
21683         (gt-m68k.h): Include.
21684         * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
21685         (LEGITIMATE_PIC_OPERAND_P): Support TLS.
21686
21687 2009-05-18  Martin Jambor  <mjambor@suse.cz>
21688
21689         * ipa-prop.c (ipa_check_stmt_modifications): Removed.
21690         (visit_store_addr_for_mod_analysis): New function.
21691         (ipa_detect_param_modifications): Use walk_stmt_load_store_addr_ops.
21692         (determine_cst_member_ptr): Use gimple_assign_single_p.
21693         (ipa_get_stmt_member_ptr_load_param): Use gimple_assign_single_p.
21694         (ipa_analyze_call_uses): Use !gimple_assign_rhs2 rather than number of
21695         operands.  Don't check number of operands of a NOP_EXPR.
21696
21697 2009-05-18  Eric Fisher  <joefoxreal@gmail.com>
21698
21699         * doc/tree-ssa.texi (SSA Operands): Fix a mistake.
21700
21701 2009-05-17  Manuel López-Ibáñez  <manu@gcc.gnu.org>
21702
21703         PR c/40172
21704         * c-common.c (warn_logical_operator): Don't warn if one of
21705         expression isn't always true or false.
21706
21707 2009-05-17  Kai Tietz  <kai.tietz@onevision.com>
21708
21709         * config/i386/biarch32.h: New file.
21710         * config.gcc: Add for target i386-w64-* the biarch32.h to tm_file.
21711
21712 2009-05-17  Adam Nemet  <anemet@caviumnetworks.com>
21713
21714         * config/mips/mips.md (*zero_extend<mode>_trunchi,
21715         *zero_extend<mode>_truncqi): Merge these into ...
21716         (*zero_extend<GPR:mode>_trunc<SHORT:mode>): ... this new pattern.
21717         Name the pattern following this as *zero_extendhi_truncqi.
21718
21719 2009-05-16  Brad Lucier  <lucier@math.purdue.edu>
21720
21721         PR middle-end/39301
21722         * hwint.h: Add macro HOST_WIDEST_INT_PRINT.
21723         * bitmap.c (bitmap_descriptor): Make fields HOST_WIDEST_INT.
21724         (output_info): Make field HOST_WIDEST_INT.
21725         (print_statistics): Use HOST_WIDEST_INT_PRINT.
21726         (dump_bitmat_statistics): Same.
21727
21728 2009-05-16  Francois-Xavier Coudert  <fxcoudert@gmail.com>
21729
21730         * config.gcc (use_gcc_stdint):  Set to wrap.
21731         * config/darwin.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
21732         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
21733         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
21734         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
21735         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
21736         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
21737         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
21738         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
21739
21740 2009-05-16  Joseph Myers  <joseph@codesourcery.com>
21741
21742         * config.gcc (mips*-*-*): Support arch_32, arch_64, tune_32 and
21743         tune_64.
21744         * config/mips/mips.h (MIPS_ABI_DEFAULT, MULTILIB_ABI_DEFAULT):
21745         Move definitions earlier.
21746         (OPT_ARCH64, OPT_ARCH32): Define.
21747         (OPTION_DEFAULT_SPECS): Add entries for arch_32, arch_64, tune_32
21748         and tune_64.
21749
21750 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
21751
21752         PR target/40153
21753         * arm.md (cstoresi_nltu_thumb1): Use a neg of ltu as the pattern name
21754         implies.
21755
21756 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
21757
21758         * arm.md (movdi2): Copy non-reg values to DImode registers.
21759
21760 2009-05-16  Jakub Jelinek  <jakub@redhat.com>
21761
21762         PR target/39942
21763         * final.c (label_to_max_skip): New function.
21764         (label_to_alignment): Only use LABEL_TO_ALIGNMENT if
21765         CODE_LABEL_NUMBER <= max_labelno.
21766         * output.h (label_to_max_skip): New prototype.
21767         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Renamed to...
21768         (ix86_avoid_jump_mispredicts): ... this.  Don't define if
21769         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.  Update comment.
21770         Handle CODE_LABELs with >= 16 byte alignment or with
21771         max_skip == (1 << align) - 1.
21772         (ix86_reorg): Don't call ix86_avoid_jump_mispredicts if
21773         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.
21774
21775         PR target/39942
21776         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Don't emit second
21777         .p2align 3 if MAX_SKIP is smaller than 7.
21778         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
21779
21780 2009-05-15  Ian Lance Taylor  <iant@google.com>
21781
21782         * alias.c (struct alias_set_entry_d): Rename from struct
21783         alias_set_entry.  Change all uses.
21784         * except.c (struct call_site_record_d): Rename from struct
21785         call_site_record.  Change all uses.
21786         * except.h (struct eh_region_d): Rename from struct eh_region.
21787         Change all uses.
21788         * gcse.c (struct hash_table_d): Rename from struct hash_table.
21789         Change all uses.
21790         * graphite.c (struct ivtype_map_elt_d): Rename fromstruct
21791         ivtype_map_elt.  Change all uses.
21792         (struct rename_map_elt_d): Rename fromstruct rename_map_elt.
21793         Change all uses.
21794         (struct ifsese_d): Rename fromstruct ifsese.  Change all uses.
21795         * graphite.h (struct name_tree_d): Rename from struct name_tree.
21796         Change all uses.
21797         (struct sese_d): Rename from struct sese.  Change all uses.
21798         * omega.h (struct eqn_d): Rename from struct eqn.  Change all uses.
21799         (struct omega_pb_d): Rename from struct omega_pb.  Change all uses.
21800         * optabs.h (struct optab_d): Rename from struct optab.  Change all
21801         uses.
21802         (struct convert_optab_d): Rename from struct convert_optab.
21803         Change all uses.
21804         * tree-pass.h (struct ipa_opt_pass_d): Rename fromstruct
21805         ipa_opt_pass.  Change all uses.
21806         * tree-predcom.c (struct dref_d): Rename from struct dref.  Change
21807         all uses.
21808
21809         * c-decl.c (pushtag): If -Wc++-compat, warn if the tag is already
21810         defined as a typedef.
21811         (grokdeclarator): If -Wc++-compat, warn if a typedef is already
21812         defined as a tag.
21813
21814 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
21815
21816         PR 16302
21817         * fold-const.c (make_range,build_range_check,merge_ranges): Move
21818         declaration to...
21819         (merge_ranges): Returns bool.
21820         * tree.h (make_range): .. to here.
21821         (build_range_check): Likewise.
21822         (merge_ranges): Likewise. Renamed from merge_ranges.
21823         * c-typeck.c (parser_build_binary_op): Update calls to
21824         warn_logical_operator.
21825         * c-common.c (warn_logical_operator): Add new warning.
21826         * c-common.h (warn_logical_operator): Update declaration.
21827
21828 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
21829
21830         * ira-conflicts.c (add_insn_allocno_copies): Fix wrong conditional.
21831
21832 2009-05-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
21833
21834         * doc/install.texi: Document MPC requirements, flags etc.
21835
21836         * builtins.c (do_mpc_arg1, fold_builtin_ccos): New.
21837         (fold_builtin_cexp): Ensure we get a complex REAL_TYPE.
21838         Evaluate constant arguments.
21839         (fold_builtin_carg): Ensure we get a complex REAL_TYPE.
21840         (fold_builtin_1): Likewise, also evaluate constant arguments.
21841         Remove superfluous break.
21842         (do_mpc_ckconv): New.
21843         * real.h: Include mpc.h.
21844         * toplev.c (print_version): Output MPC version info if available.
21845
21846 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
21847
21848         * fold-const.c (fold_convert_const_real_from_real): Check for overflow.
21849
21850 2009-05-15  H.J. Lu  <hongjiu.lu@intel.com>
21851
21852         * config/i386/i386.c (ix86_reorg): Call optimize_function_for_speed_p
21853         only once.
21854
21855 2009-05-15  Jan Hubicka  <jh@suse.cz>
21856
21857         * doc/invoke.texi (max-early-inliner-iterations): New flag.
21858         * ipa-inline.c (enum inlining_mode): New INLINE_SIZE_NORECURSIVE.
21859         (try_inline): Fix return value.
21860         (cgraph_decide_inlining_incrementally): Honor new value.
21861         (cgraph_early_inlining): Handle indirect inlining.
21862         * params.def (PARAM_EARLY_INLINER_MAX_ITERATIONS): New.
21863
21864 2009-05-15  Jan Hubicka  <jh@suse.cz>
21865
21866         * cgraph.h (struct cgraph_node): Add finalized_by_frotnend flag.
21867         * cgraphunit.c (cgraph_finalize_function): Set it.
21868         (cgraph_expand_function): Use it.
21869
21870 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
21871
21872         * real.c (encode_ieee_half): Define.
21873         (decode_ieee_half): Define.
21874         (ieee_half_format): Define.
21875         (arm_half_format): Define.
21876         * real.h (ieee_half_format): Declare.
21877         (arm_half_format): Declare.
21878
21879 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
21880
21881         * optabs.c (prepare_float_lib_cmp):  Test that the comparison,
21882         swapped, and reversed optabs exist before trying to use them.
21883
21884 2009-05-15  Paul Brook  <paul@codesourcery.com>
21885             Sandra Loosemore  <sandra@codesourcery.com>
21886
21887         * config/arm/arm.c (neon_vector_mem_operand): Handle element/structure
21888         loads.  Allow PRE_DEC.
21889         (output_move_neon): Handle PRE_DEC.
21890         (arm_print_operand): Add 'A' for neon structure loads.
21891         * config/arm/arm-protos.h (neon_vector_mem_operand): Update prototype.
21892         * config/arm/neon.md (neon_mov): Update comment.
21893         * config/arm/constraints.md (Un, Us): Update neon_vector_mem_operand
21894         calls.
21895         (Um): New constraint.
21896
21897 2009-05-15  Jan Hubicka  <jh@suse.cz>
21898
21899         Revert the following patch until testsuite fallout is fixed:
21900         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
21901         * cgraph.h (struct inline_summary): New filed self_wize,
21902         size_inlining_benefit, self_time and time_inlining_benefit.
21903         (struct cgraph_global_info): Replace insns by time ans size fields.
21904         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
21905         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
21906         (ipcp_update_callgraph): Do not touch function bodies.
21907         * ipa-inline.c: Include except.h
21908         (MAX_TIME): New constant.
21909         (overall_insns): Remove
21910         (overall_size, max_benefit): New static variables.
21911         (cgraph_estimate_time_after_inlining): New function.
21912         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
21913         (cgraph_clone_inlined_nodes): Update size.
21914         (cgraph_mark_inline_edge): Update size.
21915         (cgraph_estimate_growth): Use size info.
21916         (cgraph_check_inline_limits): Check size.
21917         (cgraph_default_inline_p): Likewise.
21918         (cgraph_edge_badness): Compute badness based on benefit and size cost.
21919         (cgraph_decide_recursive_inlining): Check size.
21920         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
21921         and times.
21922         (cgraph_decide_inlining): Likewise.
21923         (cgraph_decide_inlining_incrementally): Likewise; honor
21924         PARAM_EARLY_INLINING_INSNS.
21925         (likely_eliminated_by_inlining_p): New predicate.
21926         (estimate_function_body_sizes): New function.
21927         (compute_inline_parameters): Use it.
21928         * except.c (must_not_throw_labels): New function.
21929         * except.h (must_not_throw_labels): Declare.
21930         * tree-inline.c (init_inline_once): Kill inlining_weigths
21931         * tree-ssa-structalias.c: Avoid uninitialized warning.
21932         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
21933         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
21934         (PARAM_INLINE_CALL_COST): Remove.
21935         (PARAM_EARLY_INLINING_INSNS): New.
21936
21937 2009-05-15  Richard Guenther  <rguenther@suse.de>
21938
21939         * tree-ssa-pre.c (eliminate): Use TODO_update_ssa_only_virtuals,
21940         not TODO_update_ssa.
21941
21942 2009-05-15  Richard Guenther  <rguenther@suse.de>
21943
21944         PR tree-optimization/39999
21945         * gimple.h (gimple_expr_type): Use the expression type looking
21946         through useless conversions.
21947         * tree-ssa-sccvn.c (vn_nary_op_lookup_stmt): Use gimple_expr_type.
21948         (vn_nary_op_insert_stmt): Likewise.
21949         (simplify_binary_expression): Likewise.
21950
21951 2009-05-15  Richard Guenther  <rguenther@suse.de>
21952
21953         * common.opt (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
21954         New options, enabled by default.
21955         * doc/invoke.texi (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
21956         Document.
21957         * tree-ssa-forwprop.c (gate_forwprop): Use flag_tree_forwprop.
21958         * tree-ssa-phiprop.c (gate_phiprop): Use flag_tree_phiprop.
21959         * tree-ssa-structalias.c (gate_tree_pta): New function.
21960         (pass_build_alias): Use it.
21961
21962 2009-05-15  Joseph Myers  <joseph@codesourcery.com>
21963
21964         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also
21965         recurse on an invariant address if a conversion from a pointer
21966         type to a wider integer type is involved.
21967
21968 2009-05-15  Jan Hubicka  <jh@suse.cz>
21969
21970         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
21971         * cgraph.h (struct inline_summary): New filed self_wize,
21972         size_inlining_benefit, self_time and time_inlining_benefit.
21973         (struct cgraph_global_info): Replace insns by time ans size fields.
21974         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
21975         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
21976         (ipcp_update_callgraph): Do not touch function bodies.
21977         * ipa-inline.c: Include except.h
21978         (MAX_TIME): New constant.
21979         (overall_insns): Remove
21980         (overall_size, max_benefit): New static variables.
21981         (cgraph_estimate_time_after_inlining): New function.
21982         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
21983         (cgraph_clone_inlined_nodes): Update size.
21984         (cgraph_mark_inline_edge): Update size.
21985         (cgraph_estimate_growth): Use size info.
21986         (cgraph_check_inline_limits): Check size.
21987         (cgraph_default_inline_p): Likewise.
21988         (cgraph_edge_badness): Compute badness based on benefit and size cost.
21989         (cgraph_decide_recursive_inlining): Check size.
21990         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
21991         and times.
21992         (cgraph_decide_inlining): Likewise.
21993         (cgraph_decide_inlining_incrementally): Likewise; honor
21994         PARAM_EARLY_INLINING_INSNS.
21995         (likely_eliminated_by_inlining_p): New predicate.
21996         (estimate_function_body_sizes): New function.
21997         (compute_inline_parameters): Use it.
21998         * except.c (must_not_throw_labels): New function.
21999         * except.h (must_not_throw_labels): Declare.
22000         * tree-inline.c (init_inline_once): Kill inlining_weigths
22001         * tree-ssa-structalias.c: Avoid uninitialized warning.
22002         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
22003         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
22004         (PARAM_INLINE_CALL_COST): Remove.
22005         (PARAM_EARLY_INLINING_INSNS): New.
22006         doc/invoke.texi (max-inline-insns-auto, early-inlining-insns): Update.
22007         (inline-call-cost): Remove.
22008         (early-inlining-insns): New.
22009
22010 2009-05-15  Eric Botcazou  <ebotcazou@adacore.com>
22011
22012         * dbxout.c (dbxout_range_type): Add LOW and HIGH parameters.  Use them
22013         for bounds.
22014         (print_int_cst_bounds_in_octal_p): Likewise.
22015         (dbxout_type): Adjust calls to above functions.  Be prepared to deal
22016         with subtypes.
22017         * dwarf2out.c (base_type_die): Likewise.
22018         (is_subrange_type): Delete.
22019         (subrange_type_die): Add LOW and HIGH parameters.  Use them for bounds.
22020         (modified_type_die): Call subrange_type_for_debug_p on subtypes.
22021         * fold-const.c (fold_truth_not_expr) <CONVERT_EXPR>: Do not strip it
22022         if the destination type is boolean.
22023         (build_range_check): Do not special-case subtypes.
22024         (fold_sign_changed_comparison): Likewise.
22025         (fold_unary): Likewise.
22026         * langhooks-def.h (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define.
22027         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_GET_SUBRANGE_BOUNDS.
22028         * langhooks.h (lang_hooks_for_types): Add get_subrange_bounds.
22029         * tree.c (subrange_type_for_debug_p): New predicate based on the
22030         former is_subrange_type.
22031         * tree.h (subrange_type_for_debug_p): Declare.
22032         * tree-chrec.c (avoid_arithmetics_in_type_p): Delete.
22033         (convert_affine_scev): Remove call to above function.
22034         (chrec_convert_aggressive): Likewise.
22035         * tree-ssa.c (useless_type_conversion_p_1): Do not specifically return
22036         false for conversions involving subtypes.
22037         * tree-vrp.c (vrp_val_max): Do not special-case subtypes.
22038         (vrp_val_min): Likewise.
22039         (needs_overflow_infinity): Likewise.
22040         (extract_range_from_unary_expr): Likewise.
22041
22042 2009-05-15  Paolo Bonzini  <bonzini@gnu.org>
22043
22044         * config/frv/frv.h: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
22045         * config/frv/frv.c: Likewise.
22046         * config/s390/s390.c: Likewise.
22047         * config/sparc/sparc.h: Likewise.
22048         * config/i386/i386.h: Likewise.
22049         * config/i386/i386.c: Likewise.
22050         * config/crx/crx.c: Likewise.
22051         * config/m68hc11/m68hc11.h: Likewise.
22052         * config/iq2000/iq2000.c: Likewise.
22053         * config/mn10300/mn10300.h: Likewise.
22054         * config/mn10300/mn10300.c: Likewise.
22055         * config/m68k/m68k.c: Likewise.
22056         * config/rs6000/rs6000.c: Likewise.
22057         * config/rs6000/xcoff.h: Likewise.
22058         * config/rs6000/linux64.h: Likewise.
22059         * config/rs6000/sysv4.h: Likewise.
22060         * config/score/score3.c: Likewise.
22061         * config/score/score7.c: Likewise.
22062         * config/score/score.c: Likewise.
22063         * config/arm/arm.md: Likewise.
22064         * config/mips/mips.c: Likewise.
22065         * config/mips/mips.md: Likewise.
22066         * config/bfin/bfin.h: Likewise.
22067         * config/pa/pa.c: Likewise.
22068         * config/pa/constraints.md: Likewise.
22069
22070         * config/pdp11/pdp11-protos.h (legitimate_address_p): Delete.
22071         * config/pdp11/pdp11.c (legitimate_address_p): Delete.
22072         * config/pdp11/pdp11.h: Use memory_address_p instead.
22073
22074 2009-05-14  Ian Lance Taylor  <iant@google.com>
22075
22076         * passes.c (finish_optimization_passes): Change i to int.
22077         * plugin.c (plugins_active_p): Change event to int.
22078         (dump_active_plugins): Likewise.
22079         * reginfo.c (invalid_mode_change_p): Change to to unsigned int.
22080         Add cast.
22081         * tree.c (tree_range_check_failed): Change c to unsigned int.
22082         (omp_clause_range_check_failed): Likewise.
22083         (build_common_builtin_nodes): Change mode to int.  Add cast.
22084         * config/ia64/ia64.c (is_emitted): Change r to unsigned int.
22085         (ia64_hard_regno_rename_ok, ia64_eh_uses): Likewise.
22086
22087         * c-typeck.c (build_unary_op): If -Wc++-compat, warn about using
22088         ++ or -- with a variable of enum type.
22089
22090 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
22091
22092         PR driver/40144
22093         * opts.c (common_handle_option): Add OPT_fcse_skip_blocks as a no-op.
22094
22095 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
22096
22097         * store-motion.c: Do not include params.h
22098         * Makefile.in: Fix dependencies for various files.
22099
22100 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
22101
22102         * auto-inc-dec.c: Fix pass description, remove apparent
22103         accidental duplication.
22104
22105 2009-05-14  H.J. Lu  <hongjiu.lu@intel.com>
22106
22107         PR middle-end/40147
22108         * ipa-utils.h (memory_identifier_string): Moved to ...
22109         * tree.h (memory_identifier_string): Here.  Add GTY(()).
22110
22111 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
22112
22113         * doc/tm.texi (TARGET_LEGITIMATE_ADDRESS_P): Refer mainly to this
22114         in the former documentation of...
22115         (GO_IF_LEGITIMATE_ADDRESS): ... this.
22116         * ira-conflicts.c (get_dup_num): Use address_operand.
22117         * targhooks.c (default_legitimate_address_p): New.
22118         * targhooks.h (default_legitimate_address_p): New.
22119         * reload.c (strict_memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]:
22120         Call hook.
22121         * recog.c (memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]: Call hook.
22122         * target.h (struct target): Add legitimate_address_p.
22123         * target-def.h (TARGET_LEGITIMATE_ADDRESS_P): New.
22124         (TARGET_INITIALIZER): Include it.
22125
22126         * config/alpha/alpha.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22127         * config/alpha/alpha-protos.h (alpha_legitimate_address_p): Remove.
22128         * config/alpha/alpha.c (alpha_legitimate_address_p): Make static.
22129         (TARGET_LEGITIMATE_ADDRESS_P): New.
22130
22131         * config/frv/frv.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22132         (REG_OK_STRICT_P): Delete.
22133         * config/frv/frv-protos.h (frv_legitimate_address_p): Rename to...
22134         (frv_legitimate_address_p_1): ... this.
22135         * config/frv/frv.c (frv_legitimate_address_p): Forward to...
22136         (frv_legitimate_address_p_1): ... the renamed old
22137         frv_legitimate_address_p.
22138         * config/frv/predicates.md: Adjust calls to frv_legitimate_address_p.
22139         (TARGET_LEGITIMATE_ADDRESS_P): New.
22140
22141         * config/s390/s390.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22142         * config/s390/s390-protos.h (legitimate_address_p): Remove.
22143         * config/s390/s390.c (legitimate_address_p): Rename to...
22144         (s390_legitimate_address_p): ... this, make static.
22145         (legitimize_address): Adjust call.
22146         (TARGET_LEGITIMATE_ADDRESS_P): New.
22147         * config/s390/constraints.md ("e"): Call strict_memory_address_p.
22148
22149         * config/m32c/m32c.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22150         * config/m32c/m32c-protos.h (m32c_legitimate_address_p): Remove.
22151         * config/m32c/m32c.c (m32c_legitimate_address_p): Make static.
22152         (TARGET_LEGITIMATE_ADDRESS_P): New.
22153
22154         * config/spu/spu.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22155         * config/spu/spu-protos.h (spu_legitimate_address): Remove.
22156         * config/spu/spu.c (spu_legitimate_address): Rename to...
22157         (spu_legitimate_address_p): ... this, make static.
22158         (TARGET_LEGITIMATE_ADDRESS_P): New.
22159
22160         * config/sparc/sparc.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22161         * config/sparc/sparc-protos.h (legitimate_address_p): Remove.
22162         * config/sparc/sparc.c (legitimate_address_p): Rename to...
22163         (sparc_legitimate_address_p): ... this, make static and return bool.
22164         (legitimize_address): Adjust call.
22165         (TARGET_LEGITIMATE_ADDRESS_P): New.
22166
22167         * config/i386/i386.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22168         * config/i386/i386-protos.h (legitimate_address_p): Remove.
22169         * config/i386/i386.c (legitimate_address_p): Rename to...
22170         (ix86_legitimate_address_p): ... this, make static.
22171         (constant_address_p): Move after it, adjust call.
22172         (TARGET_LEGITIMATE_ADDRESS_P): New.
22173
22174         * config/avr/avr.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22175         * config/avr/avr-protos.h (legitimate_address_p): Remove.
22176         * config/avr/avr.c (legitimate_address_p): Rename to...
22177         (avr_legitimate_address_p): ... this, make static.
22178         (legitimize_address): Adjust call.
22179         (TARGET_LEGITIMATE_ADDRESS_P): New.
22180
22181         * config/crx/crx.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22182         * config/crx/crx-protos.h (crx_legitimate_address_p): Remove.
22183         * config/crx/crx.c (crx_legitimate_address_p): Make static.
22184         (TARGET_LEGITIMATE_ADDRESS_P): New.
22185
22186         * config/xtensa/xtensa.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22187         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): Remove.
22188         * config/xtensa/xtensa.c (xtensa_legitimate_address_p): Make static.
22189         (TARGET_LEGITIMATE_ADDRESS_P): New.
22190
22191         * config/stormy16/stormy16.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22192         * config/stormy16/stormy16-protos.h (xstormy16_legitimate_address_p):
22193         Remove.
22194         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p):
22195         Make static.
22196         (TARGET_LEGITIMATE_ADDRESS_P): New.
22197
22198         * config/m68hc11/m68hc11.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22199         * config/m68hc11/m68hc11-protos.h (m68hc11_go_if_legitimate_address):
22200         Remove.
22201         * config/m68hc11/m68hc11.c (m68hc11_go_if_legitimate_address):
22202         Rename to...
22203         (m68hc11_legitimate_address_p): ... this, make static.
22204         (go_if_legitimate_address_internal): Rename to...
22205         (m68hc11_legitimate_address_p_1): ... this.
22206         (legitimize_address): Adjust call.
22207         (TARGET_LEGITIMATE_ADDRESS_P): New.
22208
22209         * config/iq2000/iq2000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22210         * config/iq2000/iq2000-protos.h (iq2000_legitimate_address_p): Remove.
22211         * config/iq2000/iq2000.c (iq2000_legitimate_address_p): Make static.
22212         (TARGET_LEGITIMATE_ADDRESS_P): New.
22213
22214         * config/mn10300/mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22215         * config/mn10300/mn10300-protos.h (legitimate_address_p): Remove.
22216         * config/mn10300/mn10300.c (legitimate_address_p): Rename to...
22217         (mn10300_legitimate_address_p): ... this, make static.
22218         (TARGET_LEGITIMATE_ADDRESS_P): New.
22219
22220         * config/m68k/m68k.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22221         * config/m68k/m68k-protos.h (m68k_legitimate_address_p): Remove.
22222         * config/m68k/m68k.c (m68k_legitimate_address_p): Make static.
22223         (TARGET_LEGITIMATE_ADDRESS_P): New.
22224
22225         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22226         (REG_OK_STRICT_FLAG, REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P): Delete.
22227         (INT_REG_OK_FOR_BASE_P, INT_REG_OK_FOR_INDEX_P): Move above.
22228         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22229         * config/rs6000/rs6000-protos.h (rs6000_legitimate_address): Remove.
22230         * config/rs6000/rs6000.c (rs6000_legitimate_address): Rename to...
22231         (rs6000_legitimate_address_p): ... this, make static.
22232         (TARGET_LEGITIMATE_ADDRESS_P): New.
22233         (REG_MODE_OK_FOR_BASE_P): Delete.
22234         (rs6000_legitimize_reload_address): Use INT_REG_OK_FOR_BASE_P.
22235
22236         * config/picochip/picochip.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22237         * config/picochip/picochip-protos.h (picochip_legitimate_address_p):
22238         Delete.
22239         * config/picochip/picochip.c (picochip_legitimate_address_p): Make
22240         static, adjust types.
22241         (TARGET_LEGITIMATE_ADDRESS_P): New.
22242
22243         * config/score/score.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22244         * config/score/score.c (score_address_p): Rename to...
22245         (score_legitimate_address_p): ... this.
22246         (TARGET_LEGITIMATE_ADDRESS_P): New.
22247         * config/score/score3.c (score3_address_p): Rename to...
22248         (score3_legitimate_address_p): ... this.
22249         * config/score/score7.c (score7_address_p): Rename to...
22250         (score7_legitimate_address_p): ... this.
22251
22252         * config/arm/arm.h (ARM_GO_IF_LEGITIMATE_ADDRESS,
22253         THUMB2_GO_IF_LEGITIMATE_ADDRESS, THUMB1_GO_IF_LEGITIMATE_ADDRESS,
22254         GO_IF_LEGITIMATE_ADDRESS): Delete.
22255         * config/arm/arm-protos.h (thumb1_legitimate_address_p,
22256         thumb2_legitimate_address_p): Delete.
22257         (arm_legitimate_address_p): Rename to...
22258         (arm_legitimate_address_outer_p): ... this.
22259         * config/arm/constraints.md ("Uq"): Adjust call.
22260         * config/arm/predicates.md (arm_extendqisi_mem_op): Likewise.
22261         * config/arm/arm.c (arm_legitimate_address_p): New, rename old one
22262         to...
22263         (arm_legitimate_address_outer_p): ... this.
22264         (thumb1_legitimate_address_p, thumb2_legitimate_address_p): Make
22265         static.
22266         (TARGET_LEGITIMATE_ADDRESS_P): New.
22267
22268         * config/mips/mips.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22269         * config/mips/mips-protos.h (mips_legitimate_address_p): Remove.
22270         * config/mips/mips.c (mips_legitimate_address_p): ... Make static.
22271         (TARGET_LEGITIMATE_ADDRESS_P): New.
22272
22273         * config/vax/vax.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22274         * config/vax/vax-protos.h (legitimate_address_p): Remove.
22275         * config/vax/vax.c (legitimate_address_p): Rename to...
22276         (vax_legitimate_address_p): ... this, make static.
22277         (TARGET_LEGITIMATE_ADDRESS_P): New.
22278
22279         * config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22280         * config/h8300/h8300-protos.h (h8300_legitimate_address_p): Remove.
22281         * config/h8300/h8300.c (h8300_legitimate_address_p): ... Make static.
22282         (TARGET_LEGITIMATE_ADDRESS_P): New.
22283
22284         * config/mmix/mmix.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22285         * config/mmix/mmix-protos.h (mmix_legitimize_address): Remove.
22286         * config/mmix/mmix.c (mmix_legitimate_address): Rename to...
22287         (mmix_legitimate_address_p): ... this, make static.
22288         (TARGET_LEGITIMATE_ADDRESS_P): New.
22289
22290         * config/bfin/bfin.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22291         * config/bfin/bfin-protos.h (bfin_legitimate_address_p): Remove.
22292         * config/bfin/bfin.c (bfin_legitimate_address_p): ... Make static.
22293         (TARGET_LEGITIMATE_ADDRESS_P): New.
22294
22295 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
22296
22297         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Remove handling
22298         of MODE_COMPLEX_INT.
22299
22300 2009-05-14  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
22301
22302         * config/alpha/alpha.c (alpha_initialize_trampoline): Change 0 to
22303         LCT_NORMAL in function call.
22304         * mips-tdump.c (print_file_desc): Add cast to enum type.
22305         * mips-tfile.c (add_ext_symbol): Add casts to enum types.
22306         (mark_stabs): Add casts to enum types.
22307         (parse_stabs_common): Add casts to enum types.
22308
22309 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
22310
22311         * config/mips/mips.c (mips_print_operand) <REG, MEM, default>:
22312         Check for invalid values of LETTER.
22313
22314 2009-05-13  Taras Glek  <tglek@mozilla.com>
22315
22316         * attribs.c (register_attribute): moved out attribute registration
22317         into register_attribute.
22318         * doc/plugins.texi: Documented register_attribute and
22319         PLUGIN_ATTRIBUTES.
22320         * gcc-plugin.h: Added forward decl for register_attribute.
22321         * gcc-plugin.h (plugins_event): Added PLUGIN_ATTRIBUTES.
22322         * plugin.c (register_callback, invoke_plugin_callbacks): Added
22323         PLUGIN_ATTRIBUTES boilerplate.
22324
22325 2009-05-14  Dave Korn  <dave.korn.cygwin@gmail.com>
22326
22327         * config/i386/msformat-c.c (ms_printf_length_specs):  Use enumeration
22328         values even in sentinel and empty entries.
22329         (ms_printf_flag_specs):  Likewise.
22330         (ms_scanf_flag_specs):  Likewise.
22331         (ms_strftime_flag_specs):  Likewise.
22332         (ms_print_char_table):  Likewise.
22333         (ms_scan_char_table):  Likewise.
22334         (ms_time_char_table):  Likewise.
22335
22336 2009-05-13  Doug Kwan  <dougkwan@google.com>
22337
22338         * tree-ssa-sccvn.c (compare_ops): Stabilize qsort.
22339
22340 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
22341
22342         * config/mips/mips.md (store): Add attributes for QI and HI.
22343         Update comment.
22344         (truncdisi2, truncdihi2, truncdiqi2): Merge these into ...
22345         (truncdi<mode>2): ... this new pattern.
22346
22347 2009-05-13  Brad Hards  <bradh@kde.org>
22348
22349         * Makefile.in (TEXI_GCCINT_FILES): Add plugins.texi.
22350
22351 2009-05-14  Jakub Jelinek  <jakub@redhat.com>
22352             Ben Elliston <bje@au.ibm.com>
22353
22354         PR middle-end/40035
22355         * dse.c (check_mem_read_rtx): Guard against width == -1.
22356
22357 2009-05-13  Michael Matz  <matz@suse.de>
22358
22359         PR middle-end/39976
22360         * tree-outof-ssa.c (maybe_renumber_stmts_bb): New function.
22361         (trivially_conflicts_p): New function.
22362         (insert_backedge_copies): Use it.
22363
22364 2009-05-13  Janis Johnson  <janis187@us.ibm.com>
22365
22366         * c-pragma.c (enum pragma_switch_t): Prefix constants with PRAGMA_.
22367         (handle_stdc_pragma): Use new enum constant names.
22368         (handle_pragma_float_const_decimal64): Ditto.
22369
22370 2009-05-13  Ian Lance Taylor  <iant@google.com>
22371
22372         * Makefile.in (build/gencheck.o): Depend upon all-tree.def, not
22373         tree.def.
22374
22375 2009-05-13  Nathan Sidwell  <nathan@codesourcery.com>
22376
22377         * config/m68k/t-uclinux (M68K_MLIB_CPU): Check for FL_UCLINUX.
22378         * config/m68k/m68k-devices.def: Add FL_UCLINUX to 68020 and 54455
22379         multilibs.
22380         * config/m68k/m68k.h (FL_UCLINUX): Define.
22381
22382 2009-05-13  Jan Hubicka  <jh@suse.cz>
22383
22384         * options.c (gfc_post_options): -fwhole-program imply -fwhole-file.
22385
22386 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
22387
22388         * config/sh/sh.h (OVERRIDE_OPTIONS): Clear flag_schedule_insns
22389         unless -fschedule-insns is specified.
22390
22391 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
22392
22393         PR target/39561
22394         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Don't set
22395         TARGET_EXPAND_CBRANCHDI4.
22396         * config/sh/sh.md (cbranchdi4): Don't check TARGET_EXPAND_CBRANCHDI4.
22397         * config/sh/sh.opt (mexpand-cbranchdi): Remove.
22398         (cmpeqdi): Fix comment.
22399
22400 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
22401
22402         * config/sh/sh-protos.h (sh_legitimate_index_p): Declare.
22403         (sh_legitimate_address_p): Likewise.
22404         * config/sh/sh.c (sh_legitimate_index_p): New.
22405         (sh_legitimate_address_p): Likewise.
22406         * config/sh/sh.h (REG_OK_FOR_BASE_P): Add STRICT parameter.
22407         (REG_OK_FOR_INDEX_P, SUBREG_OK_FOR_INDEX_P): Likewise.
22408         (MODE_DISP_OK_4, MODE_DISP_OK_8): Remove.
22409         (MAYBE_BASE_REGISTER_RTX_P): New macro.
22410         (MAYBE_INDEX_REGISTER_RTX_P): Likewise.
22411         (BASE_REGISTER_RTX_P): Use MAYBE_BASE_REGISTER_RTX_P.
22412         (INDEX_REGISTER_RTX_P): Use MAYBE_INDEX_REGISTER_RTX_P.
22413         (GO_IF_LEGITIMATE_INDEX): Use sh_legitimate_index_p.
22414         (GO_IF_LEGITIMATE_ADDRESS): Use sh_legitimate_address_p.
22415
22416 2009-05-12  Jan Hubicka  <jh@suse.cz>
22417
22418         * tree-inline.c (estimate_operator_cost): Add operands;
22419         when division happens by constant, it is cheap.
22420         (estimate_num_insns): Loads and stores are not having cost of 0;
22421         EH magic stuff is cheap; when computing runtime cost of switch,
22422         use log2 base of amount of its cases; builtin_expect has cost of 0;
22423         compute cost for moving return value of call.
22424         (init_inline_once): Initialize time_based flags.
22425         * tree-inline.h (eni_weights_d): Add time_based flag.
22426
22427 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
22428
22429         * df-core.c: Update head documentation.
22430
22431 2009-05-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
22432
22433         PR bootstrap/40118
22434         * rs6000.c (rs6000_generate_compare): Use op1b instead of
22435         shadowing exisiting variable op1.
22436
22437 2009-05-12  Uros Bizjak  <ubizjak@gmail.com>
22438
22439         PR target/37179
22440         * config/i386/driver-i386.c (processor_signatures): New enum.
22441         (SIG_GEODE): Move from vendor_signatures to processor_signatures.
22442         (host_detect_local_cpu): For SIG_AMD vendor, check for SIG_GEODE
22443         processor signature to detect geode processor.
22444
22445 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
22446
22447         Revert:
22448
22449         2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
22450
22451         * optabs.c (prepare_cmp_insn): Temporarily disable test that
22452         causes spurious differences between trunk and cond-optab branch.
22453
22454 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
22455
22456         * dojump.c (compare_from_rtx): Delete.
22457         * expmed.c (emit_store_flag): Only try cstore_optab.  Canonicalize
22458         any MODE_CC mode to the cstorecc4 pattern.  Use prepare_operand, fail
22459         if the comparison does not satisfy the predicate; test predicates for
22460         operands 2 and 3 of a cstore pattern.  Don't try cstore optab
22461         further if one existing pattern fails.
22462         * expr.h (compare_from_rtx): Delete.
22463         (prepare_operand): Declare it.
22464         * optabs.c: Change "lib call" to "libcall" throughout.
22465         (bcc_gen_fctn, setcc_gen_code, trap_rtx,
22466         HAVE_conditional_trap, emit_cmp_insn): Delete.
22467         (can_compare_p): Delete cmp_optab case.
22468         (prepare_float_lib_cmp): Return an rtx and a machine mode.
22469         Accept other parameters by value.
22470         (prepare_operand): Make non-static.
22471         (prepare_cmp_insn): Return an rtx and a machine mode.  Accept
22472         other parameters by value.  Try to widen operands here based on
22473         an optab_methods argument and looking at cbranch_optab.
22474         (emit_cmp_and_jump_insn_1): Accept test and mode, remove widening
22475         loop.  Use cbranch_optab directly.
22476         (emit_cmp_and_jump_insns): Fix comment.  Adjust call to
22477         prepare_cmp_insn and emit_cmp_and_jump_insn_1, remove obsolete
22478         assertion.
22479         (emit_conditional_move, emit_conditional_add): Inline what's needed
22480         of compare_from_rtx, using new prepare_cmp_insn for the rest.
22481         (init_optabs): Init cmp_optab with UNKNOWN, cbranch_optab
22482         with COMPARE.  Move cmov_optab and cstore_optab above
22483         with cbranch_optab, move cmp_optab down with ucmp_optab,
22484         remove tst_otpab.  Do not initialize trap_rtx.
22485         (gen_cond_trap): Do it here.  Use ctrap_optab.  Test predicate
22486         for trap code.  Do not check HAVE_conditional_trap.  Use
22487         prepare_cmp_insn.  Accept no predicate for operand 3.
22488         * optabs.h (OTI_cmp): Mark as used only for libcalls.
22489         (OTI_ctrap, ctrap_optab): New.
22490         (tst_optab): Delete.
22491         (bcc_gen_fctn, setcc_gen_code, emit_cmp_insn): Delete.
22492         * ifcvt.c (find_if_header): Replace HAVE_conditional_trap
22493         with lookup of ctrap_optab.
22494         * genopinit.c (cmp_optab, tst_optab, bcc_gen_fctn, setcc_gen_code):
22495         Delete.
22496         (ctrap_optab): New.
22497
22498         * combine.c (combine_simplify_rtx, simplify_set): Do not
22499         special case comparing against zero for cc0 machines.
22500         * simplify-rtx.c (simplify_binary_operation_1): Never remove
22501         COMPARE on cc0 machines.
22502         (simplify_relational_operation): Return a new expression when
22503         a COMPARE could be removed.
22504         * final.c (final_scan_insn): Compare cc_status values
22505         against LHS of a (compare FOO (const_int 0)) cc0 source.
22506         Also check if cc_status.value is the full compare.
22507
22508         * doc/md.texi (bCC, sCC, tstMM, cmpMM): Delete.
22509         (cstoreMM4): Document.
22510         (conditional_trap): Document ctrapMM4 instead.
22511         (sync_compare_and_swapMM): Refer to cbranchcc4.
22512         (Dependent Patterns): Eliminate obsolete information referring to
22513         the old jump optimization phase.
22514         (Canonicalization): Include cbranchcc4 case, omit canonicalization
22515         of compares with 0 on cc0 machines.
22516         (Jump Patterns): Refer to MODE_CC jump patterns preferably,
22517         avoiding references to cc0.  Remove text about storing operands
22518         in cmpMM.
22519         * doc/tm.texi (Condition Codes): Include blurb on different
22520         condition code representations, separate into subsections for
22521         CC0, MODE_CC and conditional execution.
22522
22523         * config/alpha/alpha-protos.h (alpha_emit_conditional_branch,
22524         alpha_emit_setcc): Accept operands and a machine mode.
22525         * config/alpha/alpha.c (alpha_emit_conditional_branch):
22526         Get code/op0/op1 from operands, use machine mode argument
22527         instead of alpha_compare.fp_p.  Emit the branch here.
22528         (alpha_emit_setcc): Likewise, and return boolean.
22529         (alpha_emit_conditional_move): Likewise.  Assert that
22530         cmp_op_mode == cmp_mode, and simplify accordingly.
22531         * config/alpha/alpha.h (struct alpha_compare, alpha_compare): Delete.
22532         * config/alpha/alpha.md (cmpdf, cmptf, cmpdi, bCC, sCC): Delete.
22533         (cbranchdf4, cbranchtf4, cbranchdi4, cstoredf4, cstoretf4,cstoredi4):
22534         Delete.
22535         (stack probe test): Use cbranchdi4.
22536         * config/alpha/predicates.md (alpha_cbranch_operator): New.
22537
22538         * config/arc/arc.c (gen_compare_reg): Do not emit cmp.
22539         * config/arc/arc.h (movsicc, movsfcc): Use it.
22540         (movdicc, *movdicc_insn, movdfcc, *movdfcc_insn): Remove.
22541         (cbranchsi4, cstoresi4): New.
22542         (cmpsi, bCC and sCC expanders): Remove.
22543
22544         * config/arm/arm.c (arm_compare_op0, arm_compare_op1): Delete.
22545         * config/arm/arm.h (arm_compare_op0, arm_compare_op1): Delete.
22546         * config/arm/predicates.md (arm_comparison_operator): Only include
22547         floating-point operators if there is a hardware floating-point unit.
22548         * config/arm/arm.md (cbranchsi4, cstoresi4): Enable for TARGET_32BIT,
22549         deferring to cbranch_cc and cstore_cc respectively.
22550         (cbranchsf4, cbranchdf4, cbranchdi4, cstoresf4, cstoredf4, cstoredi4,
22551         cbranch_cc, cstore_cc): New.
22552         (movsicc, movsfcc, movdfcc): Do not use arm_compare_op0 and
22553         arm_compare_op1.
22554         (bCC, sCC, cmpsi, cmpsf, cmpdf, cmpdi): Delete.
22555
22556         * config/avr/avr-protos.h (out_tstsi, out_tsthi): Adjust prototype.
22557         * config/avr/avr.c (out_tstsi, out_tsthi): Get the tested operand
22558         as an argument.
22559         (adjust_insn_length): Adjust calls.
22560         (avr_reorg): Handle (compare (foo) (const_int 0)).
22561         * config/avr/avr.md (tstqi, tsthi, tstsi): Remove.
22562         (*negated_tstqi, *negated_tsthi, *negated_tstsi): Unmacroize.
22563         (*reversed_tsthi, *reversed_tstsi): Add a scratch for simplicity.
22564         (cmpqi, cmphi, cmpsi): Prepend asterisk, fuse tst[qhs]i here.
22565         (bCC): Remove.
22566         (cbranchqi4, cbranchhi4, cbranchsi4): New.
22567         (tst -> sbrc/sbrs peephole2, cpse peephole): Wrap RHS with COMPARE.
22568
22569         * config/bfin/bfin.md (cmpbi, cmpsi, bCC, sCC): Delete.
22570         (cbranchsi4, cstorebi4, cstoresi4): New.
22571         (movbisi): This insn is duplicate, split it to zero_extend.
22572         * config/bfin/bfin.c (bfin_compare_op0, bfin_compare_op1): Delete
22573         (bfin_gen_compare): Do not use them.  Emit VOIDmode SET, not BImode.
22574         (bfin_optimize_loop): Use cbranch expander.
22575         * config/bfin/bfin.h (bfin_compare_op0, bfin_compare_op1): Delete.
22576         * config/bfin/predicates.md (bfin_cbranch_operator): Rename to...
22577         (bfin_bimode_comparison_operator): ... this.
22578         (bfin_direct_comparison_operator): New.
22579
22580         * config/cris/cris.c (cris_normal_notice_update_cc): Look
22581         inside (compare FOO (const_int 0)).
22582         (cris_rtx_costs): Handle ZERO_EXTRACT.
22583         * config/cris/cris.md (tstdi, tst<mode>, cmpdi): Delete.
22584         (*tstdi_non_v32): Fold in *cmpdi_non_v32.
22585         (*tstdi_v32): Delete.
22586         (*cmpdi_non_v32): Add M alternative for operand 1.
22587         (cmpsi, cmp<mode>): Make private.
22588         (*tstsi, *tst<mode>_cmp, *tst<mode>_non_cmp, *btst): Wrap LHS
22589         with COMPARE.
22590         (cbranch<mode>4, cbranchdi4, cstore<mode>4): New.
22591
22592         * config/crx/crx.md (cstore<mode>4, cbranchcc4): New.
22593         (cmp<mode>, bCOND_internal, b<code>, s<code>): Delete.
22594         (cbranch<mode>4, sCOND_internal): Use ordered_comparison_operator.
22595         (cc_reg_operand): New.
22596         (any_cond): Delete.
22597         * config/crx/crx.c (crx_compare_op0, crx_compare_op1,
22598         crx_expand_compare, crx_expand_branch, crx_expand_scond): Delete.
22599         * config/crx/crx.h (crx_compare_op0, crx_compare_op1): Delete.
22600         * config/crx/crx-protos.h (crx_expand_compare, crx_expand_branch,
22601         crx_expand_scond): Delete.
22602
22603         * config/fr30/fr30.md (cmp<mode>, bCC): Delete.
22604         (cbranchsi4): New.
22605         * config/fr30/fr30.c (fr30_compare_op0, fr30_compare_op1): Delete
22606         * config/fr30/fr30.h (fr30_compare_op0, fr30_compare_op1): Delete.
22607
22608         * config/frv/frv.md (cbranchsi4, cbranchsf4, cbranchdf4,
22609         cstoresi4, cstoresf4, cstoredf4): New.
22610         (cmpdi, cmpsi, cmpsf, cmpdf, bCC, sCC): Remove.
22611         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
22612         Receive the entire operands array.
22613         * config/frv/frv.h (frv_compare_op0, frv_compare_op1): Delete.
22614         * config/frv/frv.c (frv_compare_op0, frv_compare_op1): Delete.
22615         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
22616         Get test/op0/op1 from the operands array.
22617         (frv_emit_cond_move): Get test/op0/op1 from the test_rtx.
22618
22619         * config/h8300/h8300-protos.h (h8300_expand_branch): Accept operands.
22620         (h8300_expand_store): New.
22621         * config/h8300/h8300.c (h8300_rtx_costs): Handle (compare FOO
22622         (const_int 0)).
22623         (h8300_expand_branch): Emit compare here.  Adjust for new arguments.
22624         (h8300_expand_store): New.
22625         * config/h8300/h8300.md (btst combine patterns): Wrap with COMPARE
22626         or do not try to produce (set (cc0) REG).
22627         (peepholes): Wrap arguments with COMPARE.  Add a peephole to
22628         change a compare into a move to a scratch register.  Disable some
22629         peepholes when comparing with zero.
22630         (tstsi, tsthi, tstsi, cmpqi): Make private.
22631         (cmphi): Delete.
22632         (bCC, sCC): Delete.
22633         (cbranchqi4, cbranchhi4, cbranchsi4, cstoreqi4, cstorehi4,
22634         cstoresi4): New.
22635
22636         * config/i386/i386.c (ix86_expand_int_movcc, ix86_expand_int_addcc,
22637         ix86_expand_fp_movcc): Set ix86_compare_op0 and ix86_compare_op1.
22638         (ix86_emit_i387_log1p): Use gen_cbranchxf4.
22639         (ix86_emit_i387_log1p): Use cbranchxf2.
22640         (ix86_expand_setcc): Return void.
22641         * config/i386/i386-protos.h (ix86_expand_setcc): Return void.
22642         * config/i386/i386.md (cmpti, cmpdi, cmpsi, cmphi, cmpqi, cmpxf,
22643         cmp<MODEF>, cmpcc): Remove.
22644         (cbranchti4, cbranchdi4, cbranchsi4, cbranchhi4, cbranchqi4,
22645         cbranchxf4, cbranch<MODEF>4, cbranchcc4, cstoredi4, cstoresi4,
22646         cstorehi4, cstoreqi4, cstorexf4, cstore<MODEF>4, cstorecc): New.
22647         (sCC and bCC expanders): Remove.
22648         (stack_protect_test): Use cbranchcc4.
22649
22650         * config/ia64/ia64-protos.h (ia64_compare_op0, ia64_compare_op1):
22651         Delete.
22652         (ia64_expand_compare): Accept three rtx by reference and return void.
22653         * config/ia64/ia64.c (ia64_compare_op0, ia64_compare_op1): Delete.
22654         (ia64_expand_compare): Replace op0/op1 with *op0/*op1.  Get code
22655         from *expr.  Update *expr with the BImode comparison to do.
22656         * config/ia64/ia64.md (cmpbi, cmpsi, cmpdi, cmpsf, cmpdf, cmpxf,
22657         cmptf, bCC, sCC, conditional_trap): Delete.
22658         (cbranchbi4, cbranchsi4, cbranchdi4, cbranchsf4, cbranchdf4,
22659         cbranchxf4, cbranchtf4, cstorebi4, cstoresi4, cstoredi4, cstoresf4,
22660         cstoredf4, cstorexf4, cstoretf4, ctrapbi4, ctrapsi4, ctrapdi4,
22661         ctrapsf4, ctrapdf4, ctrapxf4, ctraptf4): New.
22662         * config/ia64/predicates.md (ia64_cbranch_operator): New.
22663
22664         * config/iq2000/iq2000-protos.h (gen_conditional_branch): Change
22665         type of last argument.
22666         * config/iq2000/iq2000.c (branch_cmp, branch_type): Remove.
22667         (gen_conditional_branch): Get code/cmp0/cmp1 from operands,
22668         use machine mode argument instead of branch_type.  Remove dead
22669         code for floating-point comparisons.
22670         * config/iq2000/iq2000.h (branch_cmp, branch_type): Remove.
22671         * config/iq2000/iq2000.md (cmpsi, cmpdi, cmpsf, cmpdf, tstsi, bCC):
22672         Remove.
22673         (cbranchsi4, cstoresi4): New.
22674         * config/iq2000/predicates.md (reg_or_const_operand): New.
22675
22676         * config/m32c/m32c.md (cbranch splitter): Use match_op_dup.
22677         * config/m32c/m32c.md (any_cond, gl_cond): Delete.
22678         (b<code>_op): Rewrite to...
22679         (bcc_op): ... this, using match_operator.
22680         (s<code>_op): Rewrite to...
22681         (scc_op): ... this, using match_operator.
22682         (s<code>_24_op): Rewrite to...
22683         (scc_op_24): ... this, using match_operator.
22684         (s<code>_<mode>): Rewrite to...
22685         (cstore<mode>4): ... this, using match_operator.
22686         (s<code>_<mode>_24): Rewrite to...
22687         (cstore<mode>4_24): ... this, using match_operator.
22688         * config/m32c/m32c-protos.h (m32c_cmp_flg_0, m32c_pend_compare,
22689         m32c_unpend_compare, m32c_expand_scc): Delete.
22690         * config/m32c/m32c.c (compare_op0, compare_op1, m32c_cmp_flg_0,
22691         m32c_pend_compare, m32c_unpend_compare, m32c_expand_scc): Delete.
22692         (m32c_expand_movcc): Change NE to EQ if necessary.
22693         (m32c_init_libfuncs): Modify cstore optab instead of setcc_gen_code.
22694
22695         * config/m32r/m32r-protos.h (gen_cond_store): New.
22696         * config/m32r/m32r.c (m32r_compare_op0, m32r_compare_op1): Delete.
22697         (gen_cond_store): New, from sCC patterns.
22698         (m32r_expand_block_move): Use cbranchsi4.
22699         * config/m32r/m32r.h (m32r_compare_op0, m32r_compare_op1): Delete.
22700         * config/m32r/m32r.md (cmpsi, bCC, sCC): Delete.
22701         (cbranchsi4, cstoresi4): New.
22702
22703         * config/m68hc11/m68hc11.c (m68hc11_compare_op0, m68hc11_compare_op1):
22704         Delete.
22705         (m68hc11_rtx_costs_1, m68hc11_rtx_costs): Handle ZERO_EXTRACT.
22706         (m68hc11_notice_update_cc): Look into a compare with 0.
22707         * config/m68hc11/m68hc11.h (m68hc11_compare_op0, m68hc11_compare_op1):
22708         Delete.
22709         * config/m68hc11/m68hc11.md (tstsi, tsthi, tstqi, cmpsi,
22710         cmphi, cmpqi, bCC): Delete.
22711         (cbranchsi4, cbranchhi4, cbranchqi4): New.
22712         (tstqi_1, tstqi_z_used, tstqi_1, bitcmpqi, bitcmpqi_z_used,
22713         bitcmpqi_12, bitcmphi, various splits and peephole2s): Wrap cc0<-reg
22714         sets with COMPARE.
22715
22716         * config/m68k/predicates.md (m68k_cstore_comparison_operator,
22717         const0_operand, const1_operand, m68k_subword_comparison_operand): New.
22718         * config/m68k/constraints.md (H): New.
22719         * config/m68k/m68k.md (tstdi): Remove define_expand, use name for
22720         the define_insn below.
22721         (tstsi, tsthi, tst<FP:mode>, cmphi, cmpqi, cmp<FP:mode>): Delete.
22722         (*tstsi_internal_68020_cf, *tstsi_internal, *tsthi_internal,
22723         *tstqi_internal, tst<mode>_6881, tst<mode>_cf, many unnamed
22724         patterns): Wrap RHS with COMPARE.
22725         (tst<FP>_68881, tst<FP>_cf): Use const0_operand.
22726         (*cmpdi_internal): Name this pattern.
22727         (cmpdi): Change to define_insn.
22728         (cbranchdi4, cstoredi4, cbranchsi4, cstoresi4, cbranchhi4, cstorehi4,
22729         cbranchqi4, cstoreqi4, cbranch<FP:mode>4, cstore<FP:mode>4): New.
22730         (scc0_di, scc0_di_5200, scc_di): Use the ordered_comparison_operator
22731         predicate.
22732         (seq, sne, sgt, sgtu, slt, sltu, sge, sgeu, sle, sleu, sordered,
22733         sunordered, suneq, sunge, sungt, sunle, sunlt, sltgt): Delete
22734         (conditional_trap): Change to...
22735         (ctrapdi4, ctrapsi4, ctraphi4, ctrapqi4): ... these.
22736         (*conditional_trap): Use the ordered_comparison_operator and
22737         const1_operand predicates.
22738         * config/m68k/m68k.c (m68k_last_compare_had_fp_operands): Delete.
22739         (m68k_expand_prologue): Use ctrapsi4 instead of cmpsi+conditional_trap.
22740         (m68k_rtx_costs): Look for ZERO_EXTRACT in a COMPARE.
22741         * config/m68k/m68k.h (m68k_last_compare_had_fp_operands): Delete.
22742
22743         * config/mcore/mcore-protos.h (arch_compare_op0, arch_compare_op1,
22744         mcore_modify_comparison, mcore_gen_compare_reg): Remove.
22745         (mcore_gen_compare): New.
22746         * config/mcore/mcore.c (arch_compare_op0, arch_compare_op1): Delete.
22747         (mcore_modify_comparison, mcore_gen_compare_reg): Fold into...
22748         (mcore_gen_compare): ... this.
22749         * config/mcore/mcore.md (cmpsi, bCC, sCC): Remove.
22750         (cbranchsi4, cstoresi4): New, using mcore_gen_compare.
22751         (stack probe pattern): Use cbranchsi4.
22752
22753         * config/mips/predicates.md (mips_cstore_operator): New.
22754         * config/mips/mips-ps-3d.md (movv2sfcc): Do not use cmp_operands.
22755         * config/mips/mips.md (any_cond): Delete.
22756         (conditional_trap): Rename to ctrap<GPR:mode>4.  Adjust predicates,
22757         always succeed.
22758         (fixuns_truncdfsi2, fixuns_truncdfdi2, fixuns_truncsfsi2,
22759         fixuns_truncsfdi2): Use cbranch patterns.
22760         (cmp<GPR:mode>, cmp<SCALARF:mode>): Delete.
22761         (b<code>): Change to cbranch<GPR:mode>4 and cbranch<SCALARF:mode>4.
22762         Adjust call to mips_expand_conditional_branch.
22763         (seq, sne, slt<u>, sle<u>, sgt<u>, sge<u>): Change to
22764         cstore<GPR:mode>4.
22765         * config/mips/mips-protos.h (mips_expand_conditional_branch,
22766         mips_expand_scc, mips_expand_conditional_trap): Adjust prototypes.
22767         * config/mips/mips.c (cmp_operands): Delete.
22768         (mips_emit_compare): Get comparison operands from *op0/*op1.
22769         (mips_expand_scc): Get code/op0/op1/target from operands.  Assert
22770         that it succeeds.  Use op0/op1 instead of cmp_operands.
22771         (mips_expand_conditional_branch, mips_expand_conditional_move,
22772         mips_expand_conditional_trap): Likewise.
22773         (mips_block_move_loop): Use cbranch patterns.
22774         * config/mips/mips.h (cmp_operands): Delete.
22775
22776         * config/mmix/mmix.c (mmix_valid_comparison): Delete.
22777         (mmix_gen_compare_reg): Just return a register in the right CC mode.
22778         * config/mmix/mmix.h (mmix_compare_op0, mmix_compare_op1): New.
22779         * config/mmix/mmix.md (cmpdi, cmpdf): Remove.
22780         (*cmpcc_folded): Rename to...
22781         (*cmpdi_folded): this.
22782         (*cmpcc): Rename to...
22783         (*cmps): ... this.
22784         (movdfcc, movdicc): Adjust for new semantics of mmix_gen_compare_reg.
22785         (bCC): Remove.
22786         (cbranchdi4): New.
22787         (cbranchdf4): New.  Handle invalid comparisons here.
22788         * config/mmix/predicates.md (float_comparison_operator): New.
22789
22790         * config/mn10300/mn10300.c (mn10300_rtx_costs): Consider 0 and
22791         zero_extract to be cheap in (compare (zero_extract) (const_int 0).
22792         * config/mn10300/mn10300.md (tst): Delete.
22793         (*tst_extqisi_am33, *tst_extqisi, *tst_exthisi_am33, *tst_exthisi):
22794         Name these patterns and wrap RHS in a compare.
22795         (*cmpsi): Make this pattern private.  Include tst.
22796         (*cmpsf): Make this pattern private.
22797         (and and zero_extract cc0 set): Wrap RHS in a COMPARE.
22798         (compare with zero peepholes): Likewise.
22799         (bCC): Remove.
22800         (cbranchsi4, cbranchsf4): New.
22801         (casesi): Use cbranchsi4.
22802
22803         * config/pa/pa.c (hppa_compare_op0, hppa_compare_op1,
22804         hppa_branch_type): Delete.
22805         (return_addr_rtx): Use cbranchsi4.
22806         (emit_bcond_fp): Accept all operands.  Replace CODE with NE.
22807         Emit CCFPmode comparison here.
22808         (gen_cmp_fp): Delete, now part of emit_bcond_fp.
22809         * config/pa/pa.h (enum cmp_type, hppa_compare_op0, hppa_compare_op1,
22810         hppa_branch_type): Delete.
22811         * config/pa/pa.md (cmpdi, cmpsi, cmpsf, cmpdf, sCC, bCC): Delete.
22812         (movsicc, movdicc): Remove references to hppa_compare_op0,
22813         hppa_compare_op1 and compare_from_rtx.
22814         (cbranchdi4, cbranchsi4, cbranchsf4, cbranchdf4, cstoresi4): New.
22815         (casesi): Use cbranchsi4.
22816
22817         * config/pdp11/pdp11-protos.h (output_jump): Change prototype.
22818         * config/pdp11/pdp11.c (output_jump): Embed opcodes here.
22819         * config/pdp11/pdp11.md (register_or_const0_operand): New.
22820         (cmpdf, cmphi, cmpqi): Make private.  Add tst alternatives.
22821         (cmpsi, tstsi, tstdf, tsthi, tstqi): Delete.
22822         (bCC): Delete.
22823         (cbranchdf4, cbranchhi4, cbranchqi4): New.
22824         (*branch, *branch_inverted): New.
22825
22826         * config/picochip/picochip.md (cbranchhi4): Use
22827         ordered_comparison_operator.
22828         (cmphi, bCC): Remove.
22829
22830         * config/rs6000/predicates.md (rs6000_cbranch_operator): New.
22831         (trap_comparison_operator): Delete.
22832         * config/rs6000/rs6000-protos.h (rs6000_emit_sCOND,
22833         rs6000_emit_cbranch): Accept mode and operands.
22834         * config/rs6000/rs6000.c (rs6000_compare_op0, rs6000_compare_op1,
22835         rs6000_compare_fp_p): Delete.
22836         (rs6000_generate_compare): Accept mode and comparison.  Extract code
22837         and op0/op1 from there.  Replace references to rs6000_compare_op0
22838         and rs6000_compare_op1.
22839         (rs6000_emit_sCOND): Adjust call to rs6000_generate_compare and
22840         extract result from passed operands.
22841         (rs6000_emit_cbranch): Adjust call to rs6000_generate_compare and
22842         extract loc from passed operands.
22843         (rs6000_emit_cmove): Likewise.
22844         * config/rs6000/rs6000.h (rs6000_compare_op0, rs6000_compare_op1,
22845         rs6000_compare_fp_p): Delete.
22846         * config/rs6000/rs6000.md (cmp<GPR>, cmp<FP>, bCC, sCC): Delete.
22847         (cbranch<GPR>4, cbranch<FP>4): New.
22848         (cstore<mode>4): New.  Consolidate here all choices about when to use
22849         portable or specialized sCC sequences.
22850         (stack_protect_test): Use cbranchsi4.
22851         (conditional_trap): Replace with ctrap<GPR>4.
22852         (conditional trap insn): Replace trap_comparison_operator with
22853         ordered_comparison_operator.
22854
22855         * config/s390/s390.c (s390_compare_op0, s390_compare_op1): Delete.
22856         (s390_emit_prologue): Use ctrap.
22857         * config/s390/s390.h (s390_compare_op0, s390_compare_op1): Delete.
22858         * config/s390/predicates.md (s390_eqne_operator, s390_scond_operator):
22859         New predicates replacing...
22860         * config/s390/s390.md (COMPARE, SCOND): ... these iterators.
22861         (cmp<GPR>, cmp<FP>, cmpcc): Delete.
22862         (trunc patterns): Use emit_cmp_and_jump_insns instead of cmp/branch.
22863         (add<mode>cc): Do not use s390_compare_op0/op1.
22864         (s<code>): Change to...
22865         (cstore<mode>4): ... this. Do not use s390_compare_op0/op1.
22866         (seq): Change to...
22867         (cstorecc4): ... this.  Handle EQ or NE equally.
22868         (*sne): Un-privatize for use in cstorecc4.
22869         (b<code>): Change to...
22870         (cbranch<GPR>4, cbranch<FP>4, cbranchcc4): ... these.
22871         (conditional_trap): Replace with...
22872         (ctrap<GPR>4, ctrap<FP>4): ... these.
22873         (stack_protect): Use cbranchcc4.
22874
22875         * config/score/score-conv.h (cmp_op0, cmp_op1): Delete.
22876         * config/score/score-protos.h (score_gen_cmp): Delete.
22877         * config/score/score.c (cmp_op0, cmp_op1, score_gen_cmp): Delete.
22878         (score_block_move-loop): Use cbranchsi4.
22879         * config/score/score.md (cbranchsi4): New.
22880         (cmpsi, bCC): Delete.
22881         * config/score/score3.c (cmp_op0, cmp_op1, score3_gen_cmp): Delete.
22882         (score3_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
22883         * config/score/score7.c (cmp_op0, cmp_op1, score7_gen_cmp): Delete.
22884         (score7_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
22885         * config/score/score3.h (score3_gen_cmp): Delete.
22886         * config/score/score7.h (score7_gen_cmp): Delete.
22887
22888         * config/sh/sh-protos.h (prepare_scc_operands): Rename to...
22889         (sh_emit_scc_to_t): ... this.  Return void.
22890         (from_compare): Rename to...
22891         (sh_emit_compare_and_branch): ... this.
22892         (sh_emit_compare_and_set): New.
22893         (sh_expand_t_scc): Accept operands.
22894         * config/sh/predicates.md (sh_float_comparison_operator): New.
22895         * config/sh/sh.c (sh_compare_op0, sh_compare_op1): Delete.
22896         (prepare_scc_operands): Rename to...
22897         (sh_emit_scc_to_t): ... this.  Return void.  Get op0/op1 from
22898         arguments.
22899         (sh_emit_cheap_store_flag): New.
22900         (sh_emit_set_t_insn): New.
22901         (from_compare): Rename to...
22902         (sh_emit_compare_and_branch): ... this.  Accept mode.  Rewrite
22903         handling of TARGET_SH2E floating point to avoid recursive call.
22904         Generate branch here.
22905         (sh_emit_compare_and_set): New.
22906         (sh_expand_t_scc): Get op0/op1 from arguments.
22907         (sh_emit_cheap_store_flag): New.
22908         * config/sh/sh.md (cbranchdi4, cbranchsi4): Include -mno-cbranchdi
22909         cases.
22910         (cbranchdi4_i): Use an "I08" constraint instead of an "i" constraint.
22911         (cmpsi, cmpdi, cmpsf, cmpdf): Delete.
22912         (movsicc, movdicc): Do nothing when it recreated operands from
22913         sh_compare_*. Use sh_emit_cheap_store_flag.  Adjust call to
22914         prepare_scc_operands (now sh_emit_scc_to_t).
22915         (udivdi3): Use cstoresi4.
22916         (beq_media, bne_media, bge_media, bgtu_media, bgeu_media, beq,
22917         bne, bgt, blt, ble, bge, bgtu, bltu, bgeu, bleu, bunordered): Delete.
22918         (cbranchint4_media, cbranchfp4_media): New.
22919         (casesi): Use cbranchdi4.
22920         (seq, slt, sle, sgt, sge, sgtu, sltu, sgeu, sne, sleu, sunordered):
22921         Delete.
22922         (cstore4_media, cstoresi4, cstoredi4, cstoresf4, cstoredf4): New.
22923         (movnegt): Remove second operand.
22924         (cbranchsf4, cbranchdf4): New.
22925         (stack_protect): Use cbranchdi4/cbranchsi4.
22926
22927         * config/sparc/sparc.c (sparc_compare_op0, sparc_compare_op1): Delete.
22928         (gen_compare_reg): Accept comparison, extract part of it to...
22929         (gen_compare_reg_1): ... this.
22930         (gen_compare_operator): Delete.
22931         (gen_v9_scc): Accept separate destination, comparison code and arms.
22932         Do not use sparc_compare_op0/sparc_compare_op1.
22933         (emit_scc_insn, emit_conditional_branch_insn): New.
22934         (emit_v9_brxx): Make static.  Remove useless assertion.
22935         (sparc_emit_float_lib_cmp): Return RTL instead of calling
22936         emit_cmp_insn.
22937         (sparc_expand_compare_and_swap_12): Use gen_compare_reg_1+cbranchcc4.
22938         * config/sparc/sparc-protos.h (gen_compare_reg,
22939         sparc_emit_float_lib_cmp): Adjust prototype.
22940         (emit_scc_insn, emit_conditional_branch_insn): New.
22941         (gen_v9_scc, emit_v9_brxx_insn, gen_compare_operator): Delete.
22942         * config/sparc/sparc.h (sparc_compare_op0, sparc_compare_op1): Delete.
22943         * config/sparc/sparc.md (P, I, F, V32, V32I, V64, V64I): Move all
22944         iterators to the top.
22945         (cmpsi, cmpdi, cmpsf, cmpdf, cmptf, seqsi_special_extend,
22946         snesi_special_extend, sCC, bCC, seqdi_special_trunc,
22947         snedi_special_trunc): Delete.
22948         (seqdi_special, snedi_special): Use expansion of seqdi_special_trunc
22949         and snedi_special_trunc.
22950         (cstoresi4, cstoredi4, cstore<F:mode>4, cbranchcc4, cbranchsi4,
22951         cbranchdi4, cbranch<F:mode>4): New.
22952         (mov<I:mode>cc, mov<F:mode>cc): Handle sparc_emit_float_lib_cmp
22953         here.  Use gen_compare_reg instead of gen_compare_operator.
22954         (conditional_trap): Replace with...
22955         (ctrapsi4, ctrapdi4): ... this.
22956         (stack_protect_test): Use cbranchcc4.
22957
22958         * config/spu/spu-protos.h (spu_emit_branch_or_set): Change second
22959         argument to rtx.
22960         * config/spu/spu.c (spu_compare_op0, spu_compare_op1): Remove.
22961         (spu_emit_branch_or_set): Get code/op0/op1 from second argument.
22962         Change spu_compare_op0/op1 to op0/op1 throughout.  Get target
22963         from operands[0] or operands[3] depending on is_set.
22964         * config/spu/spu.h (spu_compare_op0, spu_compare_op1): Remove.
22965         * config/spu/spu.md (cmp<mode:VQHSI>, cmp<mode:DTI>, cmp<mode:VSF>,
22966         cmpdf, bCC), sCC: Remove.
22967         (cbranch<mode:VQHSI>4, cbranch<mode:DTI>, cbranch<mode:VSF>4,
22968         cbranchdf4, cstore<mode:VQHSI>4, cstore<mode:DTI>, cstore<mode:VSF>4,
22969         cstoredf4): New.
22970         (mov<mode>cc): Accept ordered_comparison_operator, adjust call to
22971         spu_emit_branch_or_set.
22972
22973         * config/stormy16/stormy16-protos.h (xstormy16_emit_cbranch):
22974         Add two arguments.
22975         * config/stormy16/stormy16.h (xstormy16_compare_op0,
22976         xstormy16_compare_op1): Delete.
22977         * config/stormy16/stormy16.c (xstormy16_compare_op0,
22978         xstormy16_compare_op1): Delete.
22979         (xstormy16_emit_cbranch): Get op0/op1 from the new arguments.
22980         Adjust calls.
22981         * config/stormy16/stormy16.md (cbranchsi4, cbranchhi4): New.
22982         (cmphi, cmpsi, bCC): Remove.
22983
22984         * config/v850/v850.md (tstsi, cmpsi): Fold into...
22985         (*cmpsi): ... this one.
22986         (cbranchsi4, cstoresi4): New.
22987         (bCC expanders): Delete.
22988         (sCC insns): Fold into...
22989         (*setcc): ... this one.
22990         (casesi): Do not use gen_cmpsi and gen_bgtu.
22991         (various splits): Wrap "naked" RHS of a cc0 set with COMPARE.
22992         (movsicc): Simplify.
22993         * config/v850/v850.c (v850_rtx_costs): Handle ZERO_EXTRACT in COMPARE.
22994
22995         * config/vax/vax-protos.h (cond_name): New.
22996         (vax_output_conditional_branch): Remove.
22997         * config/vax/vax.c (cond_name): New.
22998         (vax_output_conditional_branch): Remove.
22999         * config/vax/vax.h (PRINT_OPERAND): Dispatch %c to cond_name.
23000         * config/vax/vax.md (tst<VAXint>, tst<VAXfp>): Remove.
23001         (cmp<VAXint>, cmp<VAXfp>): Privatize.  Add constraints for tst.
23002         (bit<VAXint>): Wrap source with (compare).
23003         (b<code> and following unnamed pattern): Rename to *branch and
23004         *branch_reversed.  Change macroization to match_operator.
23005         (cbranch<VAXint>4, cbranch<VAXfp>4): New.
23006
23007         * config/xtensa/predicates.md (xtensa_cstoresi_operator): New.
23008         * config/xtensa/xtensa-protos.h (xtensa_expand_conditional_branch):
23009         Change last argument to machine_mode.
23010         (xtensa_expand_scc): Add machine_mode argument.
23011         * config/xtensa/xtensa.c (branch_cmp, branch_type): Remove.
23012         (gen_conditional_move, xtensa_expand_conditional_branch,
23013         xtensa_expand_scc, xtensa_expand_conditional_move): Use mode
23014         instead of branch_type, fetch cmp0/cmp1/test_code from operands[].
23015         Adjust operand numbers.
23016         * config/xtensa/xtensa.h (enum cmp_type, branch_cmp, branch_type):
23017         Delete.
23018         * config/xtensa/xtensa.md (any_cond, any_scc): Delete.
23019         (cmpsi, cmpsf, b<code>, s<code>): Delete.
23020         (cbranchsi4, cbranchsf4, cstoresi4, cstoresf4): New.
23021
23022 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
23023
23024         * optabs.c (prepare_cmp_insn): Temporarily disable test that
23025         causes spurious differences between trunk and cond-optab branch.
23026
23027 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
23028
23029         PR target/37137
23030         * doc/install.texi (STAGE1_TFLAGS, BUILD_CONFIG): Document.
23031
23032 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
23033
23034         * tree.c (iterative_hash_pointer): Delete.
23035         (iterative_hash_expr): Short-circuit handling of NULL pointer.
23036         Hash UIDs and versions of SSA names.  Don't special-case built-in
23037         function declarations.
23038
23039 2009-05-11  Ian Lance Taylor  <iant@google.com>
23040
23041         PR bootstrap/40103
23042         * graphite.c: Force -Wc++-compat to only be a warning before
23043         #including "cloog/cloog.h".
23044
23045 2009-05-11  Martin Jambor  <mjambor@suse.cz>
23046
23047         * ipa-cp.c (ipcp_cloning_candidate_p): Add missing return false.
23048
23049 2009-05-11  Jan Hubicka  <jh@suse.cz>
23050
23051         * tree-ssa-loop-ivcanon.c: Include target.h
23052         (struct loop_size): new structure.
23053         (constant_after_peeling): New predicate.
23054         (tree_estimate_loop_size): New function.
23055         (estimated_unrolled_size): Rewrite for new estimates.
23056         (try_unroll_loop_completely): Use new estimates.
23057         * Makefile.in (tree-ssa-loop-ivcanon.o): Add dependenc on target.h
23058
23059 2009-05-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23060
23061         * config/spu/spu-c.c (spu_categorize_keyword): Update for recent
23062         libcpp interface change.
23063         (spu_macro_to_expand): Likewise.
23064
23065 2009-05-11  Paolo Bonzini  <bonzini@gnu.org>
23066
23067         PR tree-optimization/40026
23068         * gimplify.c (gimplify_init_constructor): Change initial conditional
23069         to assertion.  Rewrite TREE_OPERAND (*expr_p, 1) after
23070         optimize_compound_literals_in_ctor.
23071
23072 2009-05-11  Nathan Sidwell  <nathan@codesourcery.com>
23073
23074         * config/m68k/m68k-devices.def (52274, 52277, 5301x, 5225x, 51xx):
23075         New devices.
23076         * doc/invoke.texi (M680x0 Options): Document new coldfire cpus.
23077
23078 2009-05-11  H.J. Lu  <hongjiu.lu@intel.com>
23079
23080         * tree-vect-data-refs.c (vect_analyze_group_access): Use
23081         HOST_WIDE_INT for gap.
23082
23083 2009-05-11  Ira Rosen  <irar@il.ibm.com>
23084
23085         PR tree-optimization/40074
23086         * tree-vect-data-refs.c (vect_analyze_group_access): Take gaps into
23087         account in group size and step comparison.
23088
23089 2009-05-11  Richard Guenther  <rguenther@suse.de>
23090
23091         * passes.c (init_optimization_passes): Strip now incorrect comment.
23092         (execute_function_todo): Do not set PROP_alias.
23093         * tree-pass.h (PROP_alias): Remove.
23094         * tree-ssa-structalias.c (pass_build_alias): Do not provide PROP_alias.
23095         * tree-if-conv.c (pass_if_conversion): Do not require PROP_alias.
23096         * tree-nrv.c (pass_return_slot): Likewise.
23097         * tree-object-size.c (pass_object_sizes): Likewise.
23098         * tree-ssa-dom.c (pass_dominator): Likewise.
23099         (pass_phi_only_cprop): Likewise.
23100         * tree-ssa-dse.c (pass_dse): Likewise.
23101         * tree-ssa-phiopt.c (pass_phiopt): Likewise.
23102         (pass_cselim): Likewise.
23103         * tree-ssa-pre.c (pass_pre): Likewise.
23104         (pass_fre): Likewise.
23105         * tree-ssa-reassoc.c (pass_reassoc): Likewise.
23106         * tree-ssa-sink.c (pass_sink_code): Likewise.
23107         * tree-stdarg.c (pass_stdarg): Likewise.
23108         * tree-tailcall.c (pass_tail_calls): Likewise.
23109         * tree-vrp.c (pass_vrp): Likewise.
23110
23111 2009-05-10  Ian Lance Taylor  <iant@google.com>
23112
23113         * basic-block.h (enum profile_status): Break out of struct
23114         control_flow_graph.
23115         * cgraph.h (struct inline_summary): Break out of struct
23116         cgraph_local_info.
23117         * cgraphunit.c (enum cgraph_order_sort_kind): New enum, broken out
23118         of struct cgraph_order_sort.
23119         * combine.c (enum undo_kind): New enum, broken out of struct undo.
23120         * cse.c (struct branch_path): Break out of struct
23121         cse_basic_block_data.
23122         * except.h (enum eh_region_type): Break out of struct eh_region.
23123         * gcc.c (enum add_del): Break out of struct modify_target.
23124         * genrecog.c (enum decision_type): Break out of struct decision_test.
23125         * ggc-page.c (struct ggc_pch_ondisk): Break out of struct
23126         ggc_pch_data.
23127         * matrix-reorg.c (struct free_info): Break out of struct matrix_info.
23128         * regmove.c (enum match_use): New enum, broken out of struct match.
23129         * sched-int.h (enum post_call_group): New enum, broken out of
23130         struct deps.
23131         (struct deps_reg): Break out of struct deps.
23132         * target.h (struct asm_int_op): Break out of struct gcc_target.
23133         * tree-eh.c (struct goto_queue_node): Break out of struct
23134         leh_tf_state.
23135         * tree-inline.h (enum copy_body_cge_which): Break out of
23136         copy_body_data.
23137         * tree-pass.h (enum opt_pass_type): Break out of struct opt_pass.
23138
23139         * c-decl.c (in_struct, struct_types): New static variables.
23140         (pushtag): Add loc parameter.  Change all callers.
23141         (lookup_tag): Add ploc parameter.  Change all callers.
23142         (check_compound_literal_type): New function.
23143         (parser_xref_tag): Add loc parameter.  Change all callers.  If
23144         -Wc++-compat, warn about struct/union/enum types defined within a
23145         struct or union.
23146         (start_struct): Add enclosing_in_struct, enclosing_struct_types,
23147         and loc parameters.  Change all callers.  Change error calls to
23148         error_at, using loc.  For a redefinition, if the location of the
23149         original definition is known, report it.  Set in_struct and
23150         struct_types.  If -Wc++-compat warn if in sizeof, typeof, or alignof.
23151         (finish_struct): Add new parameters enclosing_in_struct and
23152         enclosing_struct_types.  Change all callers.  Set
23153         C_TYPE_DEFINED_IN_STRUCT for all struct/union/enum types defined
23154         in the struct.  If in a struct, add this struct to struct_types.
23155         (start_enum): Add loc parameter.  Change all callers.  Use
23156         error_at for errors, using loc.  For a redefinition, if the
23157         location of the original definition is known, report it.  If in a
23158         struct, add this enum type to struct_types.  If -Wc++-compat warn
23159         if in sizeof, typeof, or alignof.
23160         * c-parser.c (disable_extension_diagnostics): Disable -Wc++-compat.
23161         (enable_extension_diagnostics): Reenable -Wc++-compat if appropriate.
23162         (c_parser_enum_specifier): Get enum location for start_enum.
23163         (c_parser_struct_or_union_specifier): Get struct location for
23164         start_struct.  Save in_struct and struct_types status between
23165         start_struct and finish_struct.
23166         (c_parser_cast_expression): Get location of cast.
23167         (c_parser_alignof_expression): Get location of type.
23168         (c_parser_postfix_expression): Likewise.
23169         (c_parser_postfix_expression_after_paren_type): Add type_loc
23170         parameter.  Change all callers.  Call check_compound_literal_type.
23171         Use type_loc for error about variable size type.
23172         * c-typeck.c (build_external_ref): If -Wc++-compat, warn about a use
23173         of an enum constant from an enum type defined in a struct or union.
23174         (c_cast_expr): Add loc parameter.  Change all callers.  If
23175         -Wc++-compat, warn about defining a type in a cast.
23176         * c-tree.h (C_TYPE_DEFINED_IN_STRUCT): Define.
23177         (start_enum, start_struct, finish_struct): Update declarations.
23178         (parser_xref_tag, c_cast_expr): Update declarations.
23179         (check_compound_literal_type): Declare.
23180
23181 2009-05-11  Ben Elliston  <bje@au.ibm.com>
23182
23183         * config/rs6000/rs6000-c.c (altivec_categorize_keyword): Update
23184         for recent libcpp interface change.
23185         (rs6000_macro_to_expand): Likewise.
23186
23187 2009-05-10  Michael Matz  <matz@suse.de>
23188
23189         PR target/40031
23190         * config/arm/arm.c (require_pic_register): Emit on entry edge,
23191         not at entry of function.
23192
23193 2009-05-10  Richard Guenther  <rguenther@suse.de>
23194
23195         PR tree-optimization/40081
23196         Revert
23197         * tree-sra.c (instantiate_element): Instantiate scalar replacements
23198         using the main variant of the element type.  Do not fiddle with
23199         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
23200
23201         * tree-sra.c (sra_type_can_be_decomposed_p): Do not decompose
23202         structs with volatile fields.
23203
23204 2009-05-10  Jan Hubicka  <jh@suse.cz>
23205
23206         * tree-inline.c (delete_unreachable_blocks_update_callgraph): Declare.
23207         (estimate_move_cost): Assert that it does not get called for
23208         VOID_TYPE_P.
23209         (estimate_num_insns): Skip VOID types in argument handling.
23210         (optimize_inline_calls): Delete unreachable blocks and verify that
23211         callgraph is valid.
23212
23213 2009-05-10  Jan Hubicka  <jh@suse.cz>
23214
23215         * cgraphbuild.c (record_reference): Use cgraph_mark_address_taken_node.
23216         * cgraph.c (cgraph_mark_address_taken_node): New function.
23217         (dump_cgraph_node): Dump new flag.
23218         * cgraph.h (struct cgraph_node): Add address_taken.
23219         (cgraph_mark_address_taken_node): New function.
23220         * ipa.c (cgraph_postorder): Prioritize functions with address taken
23221         since new direct calls can be born.
23222
23223 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
23224
23225         * c-lex.c (c_lex_with_flags): Expect cpp_hashnode in
23226         tok->val.node.node.
23227
23228 2009-05-10  Jan Hubicka  <jh@suse.cz>
23229
23230         PR middle-end/40084
23231         * cgraph.c (cgraph_update_edges_for_call_stmt_node): Take old_call
23232         argument; rewrite.
23233         (cgraph_update_edges_for_call_stmt): Take old_decl argument.
23234         * cgraph.h (cgraph_update_edges_for_call_stmt): Update prototype.
23235         * tree-inline.c (copy_bb): Set frequency correctly.
23236         (fold_marked_statements): Update call to
23237         cgraph_update_edges_for_call_stmt.
23238
23239 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
23240
23241         * config/arc/arc.c (arc_handle_interrupt_attribute): Use %qE for
23242         identifiers in diagnostics.
23243         * config/arm/arm.c (arm_handle_fndecl_attribute,
23244         arm_handle_isr_attribute): Likewise.
23245         * config/avr/avr.c (avr_handle_progmem_attribute,
23246         avr_handle_fndecl_attribute, avr_handle_fntype_attribute): Likewise.
23247         * config/bfin/bfin.c (handle_int_attribute,
23248         bfin_handle_longcall_attribute, bfin_handle_l1_text_attribute,
23249         bfin_handle_l1_data_attribute, bfin_handle_longcall_attribute,
23250         bfin_handle_l1_text_attribute, bfin_handle_l1_data_attribute):
23251         Likewise.
23252         * config/darwin.c (darwin_handle_kext_attribute,
23253         darwin_handle_weak_import_attribute): Likewise.
23254         * config/h8300/h8300.c (h8300_handle_fndecl_attribute,
23255         h8300_handle_eightbit_data_attribute,
23256         h8300_handle_tiny_data_attribute): Likewise.
23257         * config/i386/i386.c (ix86_handle_cconv_attribute,
23258         ix86_handle_abi_attribute, ix86_handle_struct_attribute): Likewise.
23259         * config/i386/winnt.c (ix86_handle_shared_attribute,
23260         ix86_handle_selectany_attribute): Likewise.
23261         * config/ia64/ia64.c (ia64_handle_model_attribute): Likewise.
23262         * config/m32c/m32c.c (function_vector_handler): Likewise.
23263         * config/m68hc11/m68hc11.c (m68hc11_handle_page0_attribute,
23264         m68hc11_handle_fntype_attribute): Likewise.
23265         * config/m68k/m68k.c (m68k_handle_fndecl_attribute): Likewise.
23266         * config/mcore/mcore.c (mcore_handle_naked_attribute): Likewise.
23267         * config/mips/mips.c (mips_insert_attributes,
23268         mips_merge_decl_attributes, mips_expand_builtin): Likewise.
23269         * config/rs6000/rs6000.c (rs6000_handle_longcall_attribute,
23270         rs6000_handle_struct_attribute): Likewise.
23271         * config/sh/sh.c (sh_insert_attributes,
23272         sh_handle_resbank_handler_attribute,
23273         sh_handle_interrupt_handler_attribute,
23274         sh2a_handle_function_vector_handler_attribute,
23275         sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
23276         Likewise.
23277         * config/sh/symbian.c (sh_symbian_mark_dllimport): Likewise.
23278         * config/spu/spu.c (spu_handle_fndecl_attribute,
23279         spu_handle_vector_attribute): Likewise.
23280         * config/stormy16/stormy16.c
23281         (xstormy16_handle_interrupt_attribute): Likewise.
23282         * config/v850/v850-c.c (ghs_pragma_section): Likewise.
23283         * config/v850/v850.c (v850_handle_interrupt_attribute): Likewise.
23284
23285 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
23286
23287         * pretty-print.h (struct pretty_print_info): Add translate_identifiers.
23288         (pp_translate_identifiers): New.
23289         (pp_identifier): Only conditionally translate identifier to locale
23290         character set.
23291         * pretty-print.c (pp_construct): Set pp_translate_identifiers.
23292         (pp_base_tree_identifier): Only conditionally translate identifier
23293         to locale character set.
23294         * c-pretty-print.c (M_): Define.
23295         (pp_c_type_specifier, pp_c_primary_expression): Mark English
23296         fragments for conditional translation with M_.
23297         * tree-pretty-print.c (maybe_init_pretty_print): Disable
23298         identifier translation.
23299
23300 2009-05-10  Richard Guenther  <rguenther@suse.de>
23301
23302         PR tree-optimization/40081
23303         * tree-sra.c (instantiate_element): Instantiate scalar replacements
23304         using the main variant of the element type.  Do not fiddle with
23305         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
23306
23307 2009-05-09  Jan Hubicka  <jh@suse.cz>
23308
23309         PR middle-end/40080
23310         * cgraphunit.c (cgraph_materialize_all_clones): Do not redirect
23311         indirect calls; verify cgraph afterwards.
23312
23313 2009-05-09  Jan Hubicka  <jh@suse.cz>
23314
23315         PR bootstrap/40082
23316         * ipa.c (update_inlined_to_pointer): New function.
23317         (cgraph_remove_unreachable_nodes): Use it.
23318
23319 2009-05-09  Jan Hubicka  <jh@suse.cz>
23320
23321         * tree-eh.c (struct leh_state): Remove prev_try.
23322         (lower_try_finally, lower_catch, lower_eh_filter, lower_cleanup): Do
23323         not track prev_try.
23324         * except.c (gen_eh_region_cleanup, duplicate_eh_regions,
23325         copy_eh_region_1, copy_eh_region, redirect_eh_edge_to_label,
23326         remove_eh_handler_and_replace, foreach_reachable_handler,
23327         verify_eh_region, verify_eh_tree): Remove tracking of prev_try pointer.
23328         * except.h (struct eh_region): Remove eh_region_u_cleanup.
23329         (gen_eh_region_cleanup): Update prototype.
23330
23331 2009-05-09  Jan Hubicka  <jh@suse.cz>
23332
23333         PR middle-end/40043
23334         * except.c (copy_eh_region): Always set prev_try.
23335         (redirect_eh_edge_to_label): Find outer try.
23336         (foreach_reachable_handler): When looking for prev try
23337         handle case where previous try is not going to be taken.
23338
23339 2009-05-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
23340
23341         PR tree-optimization/40049
23342         * tree-vect-stmts.c (vectorizable_operation): If the machine has
23343         only vector/vector shifts, convert the type of the constant to the
23344         appropriate type to avoid building incorrect trees, which
23345         eventually have problems with garbage collection.
23346
23347 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
23348
23349         * fold-const.c (fold_binary): Do not fold multiplication by 1 or
23350         -1 for complex floating-point types if honoring signed zeros.
23351
23352 2009-05-08  Jan Hubicka  <jh@suse.cz>
23353
23354         * cgraphbuild.c (compute_call_stmt_bb_frequency): Accept function
23355         argument; handle correctly when profile is absent.
23356         (build_cgraph_edges): Update.
23357         (rebuild_cgraph_edges): Update.
23358         * cgraph.c: Do not include varray.h.
23359         (cgraph_set_call_stmt_including_clones): New function.
23360         (cgraph_create_edge_including_clones): Likewise
23361         (cgraph_update_edges_for_call_stmt_node): New static cfunction.
23362         (cgraph_update_edges_for_call_stmt): Handle clones.
23363         (cgraph_remove_node): Handle clone tree.
23364         (cgraph_remove_node_and_inline_clones): New function.
23365         (dump_cgraph_node): Dump clone tree.
23366         (cgraph_clone_node): Handle clone tree.
23367         (clone_function_name): Bring here from tree-inline.c.
23368         (cgraph_create_virtual_clone): New function.
23369         * cgraph.h (ipa_replace_map): Move here from ipa.h.
23370         (cgraph_clone_info): New function.
23371         (strut cgraph_node): Add clone_info and new clone tree pointers.
23372         (cgraph_remove_node_and_inline_clones,
23373         cgraph_set_call_stmt_including_clones,
23374         cgraph_create_edge_including_clones,
23375         cgraph_create_virtual_clone): Declare.
23376         (cgraph_function_versioning): Use VEC argument.
23377         (compute_call_stmt_bb_frequency): Update prototype.
23378         (cgraph_materialize_all_clones): New function.
23379         * ipa-cp.c (ipcp_update_cloned_node): Remove.
23380         (ipcp_create_replace_map): Update to VECtors.
23381         (ipcp_update_callgraph): Use virtual clones.
23382         (ipcp_update_bb_counts, ipcp_update_edges_counts): Remove.
23383         (ipcp_update_profiling): Do not update local profiling.
23384         (ipcp_insert_stage): Use VECtors and virtual clones.
23385         * cgraphunit.c (verify_cgraph_node): Verify clone tree.
23386         (clone_of_p): New function.
23387         (cgraph_preserve_function_body_p): Use clone tree.
23388         (cgraph_optimize): Materialize clones.
23389         (cgraph_function_versioning): Update for VECtors.
23390         (save_inline_function_body): Use clone tree.
23391         (cgraph_materialize_clone): New function.
23392         (cgraph_materialize_all_clones): Likewise.
23393         * ipa-inline.c (cgraph_default_inline_p): Use analyzed flags.
23394         * ipa.c: Include gimple.h.
23395         (cgraph_remove_unreachable_nodes): Use clone tree.
23396         * ipa-prop.c (ipa_note_param_call): Update call to
23397         compute_call_stmt_bb_frequencycall.
23398         * ipa-prop.h (ipa_replace_map): Move to cgraph.h.
23399         * tree-inline.c: Do not include varray.h or gt-tree-inline.h.
23400         (copy_bb): Handle updating of clone tree; add new edge when new call
23401         appears.
23402         (expand_call_inline): Be strict about every call having edge.
23403         (clone_fn_id_num, clone_function_name): Move to cgraph.c.
23404         (delete_unreachable_blocks_update_callgraph): New function.
23405         (tree_function_versioning): Use VECtors; always remove unreachable
23406         blocks and fold conditionals.
23407         * tree-inline.h: Do not include varray.h.
23408         (tree_function_versioning): Remove.
23409         * Makefile.in (GTFILES): Remove tree-inline.c
23410         * passes.c (do_per_function): Do only functions having body.
23411         * ipa-struct-reorg.c (do_reorg_1, collect_data_accesses): Handle clone
23412         tree.
23413
23414 2009-05-08  H.J. Lu  <hongjiu.lu@intel.com>
23415             Andrew Morrow  <acm@google.com>
23416
23417         PR c/36892
23418         * c-common.c (c_common_attribute_table): Permit deprecated
23419         attribute to take an optional argument.
23420         (handle_deprecated_attribute): If the optional argument to
23421         __attribute__((deprecated)) is not a string ignore the attribute
23422         and emit a warning.
23423
23424         * c-decl.c (grokdeclarator): Updated warn_deprecated_use call.
23425         * c-typeck.c (build_component_ref): Likewise.
23426         (build_external_ref): Likewise.
23427
23428         * toplev.c (warn_deprecated_use): Add an attribute argument.
23429         Emit the message associated with __attribute__((deprecated)).
23430
23431         * toplev.h (warn_deprecated_use): Updated.
23432
23433         * doc/extend.texi: Document new optional parameter to
23434         __attribute__((deprecated))
23435
23436 2009-05-08  Michael Eager <eager@eagercon.com>
23437
23438         * config/rs6000/rs6000.md (*movdf_softfloat32): replace
23439         !TARGET_DOUBLE_FLOAT with TARGET_SINGLE_FLOAT.
23440
23441 2009-05-08  Richard Guenther  <rguenther@suse.de>
23442
23443         PR tree-optimization/40062
23444         * tree-scalar-evolution.c (follow_ssa_edge_in_condition_phi):
23445         Avoid exponential behavior.
23446
23447 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
23448
23449         PR rtl-optimization/33928
23450         PR 26854
23451         * fwprop.c (use_def_ref, get_def_for_use, bitmap_only_bit_bitween,
23452         process_uses, build_single_def_use_links): New.
23453         (update_df): Update use_def_ref.
23454         (forward_propagate_into): Use get_def_for_use instead of use-def
23455         chains.
23456         (fwprop_init): Call build_single_def_use_links and let it initialize
23457         dataflow.
23458         (fwprop_done): Free use_def_ref.
23459         (fwprop_addr): Eliminate duplicate call to df_set_flags.
23460         * df-problems.c (df_rd_simulate_artificial_defs_at_top,
23461         df_rd_simulate_one_insn): New.
23462         (df_rd_bb_local_compute_process_def): Update head comment.
23463         (df_chain_create_bb): Use the new RD simulation functions.
23464         * df.h (df_rd_simulate_artificial_defs_at_top,
23465         df_rd_simulate_one_insn): New.
23466         * opts.c (decode_options): Enable fwprop at -O1.
23467         * doc/invoke.texi (-fforward-propagate): Document this.
23468
23469 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
23470
23471         PR c/24581
23472         * c-typeck.c (build_binary_op): Handle arithmetic between one real
23473         and one complex operand specially.
23474         * tree-complex.c (some_nonzerop): Do not identify a real value as
23475         zero if flag_signed_zeros.
23476
23477 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
23478
23479         PR rtl-optimization/33928
23480         * loop-invariant.c (record_use): Fix && vs. || mishap.
23481
23482 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
23483
23484         PR rtl-optimization/33928
23485         * loop-invariant.c (struct use): Add addr_use_p.
23486         (struct def): Add n_addr_uses.
23487         (struct invariant): Add cheap_address.
23488         (create_new_invariant): Set cheap_address.
23489         (record_use): Accept df_ref.  Set addr_use_p and update n_addr_uses.
23490         (record_uses): Pass df_ref to record_use.
23491         (get_inv_cost): Do not add inv->cost to comp_cost for cheap addresses
23492         used only as such.
23493
23494 2009-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
23495
23496         * config/sh/sh.c: Do not include c-pragma.h.
23497
23498 2009-05-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23499
23500         * config/spu/spu.c: Remove include of c-common.h.
23501
23502 2009-05-07  Janis Johnson  <janis187@us.ibm.com>
23503
23504         PR c/39037
23505         * c-common.h (mark_valid_location_for_stdc_pragma,
23506         valid_location_for_stdc_pragma_p, set_float_const_decimal64,
23507         clear_float_const_decimal64, float_const_decimal64_p): New.
23508         * c.opt (Wunsuffixed-float-constants): New.
23509         * c-lex.c (interpret_float): Use pragma FLOAT_CONST_DECIMAL64 for
23510         unsuffixed float constant, handle new warning.
23511         * c-cppbuiltin.c (c_cpp_builtins): Use cast for double constants.
23512         * c-decl.c (c_scope): New flag float_const_decimal64.
23513         (set_float_const_decimal64, clear_float_const_decimal64,
23514         float_const_decimal64_p): New.
23515         (push_scope): Set new flag.
23516         * c-parser.c (c_parser_translation_unit): Mark when it's valid
23517         to use STDC pragmas.
23518         (c_parser_external_declaration): Ditto.
23519         (c_parser_compound_statement_nostart): Ditto.
23520         * c-pragma.c (valid_location_for_stdc_pragma,
23521         mark_valid_location_for_stdc_pragma,
23522         valid_location_for_stdc_pragma_p, handle_stdc_pragma,
23523         handle_pragma_float_const_decimal64): New.
23524         (init_pragma): Register new pragma FLOAT_CONST_DECIMAL64.
23525         * cp/semantics.c (valid_location_for_stdc_pragma_p,
23526         set_float_const_decimal64, clear_float_const_decimal64,
23527         float_const_decimal64_p): New dummy functions.
23528         * doc/extend.texi (Decimal Float): Remove statement that the
23529         pragma, and suffix for double constants, are not supported.
23530         * doc/invoke.texi (Warning Options): List new option.
23531         (-Wunsuffixed-float-constants): New.
23532
23533 2009-05-08  Steven Bosscher  <steven@gcc.gnu.org>
23534
23535         * config/i386/i386.c: Do not include c-common.h.
23536
23537 2009-05-07  Mark Heffernan  <meheff@google.com>
23538
23539         * doc/invoke.texi (Debugging Options): Document change of debugging
23540         dump location.
23541         * opts.c (decode_options): Make dump_base_name relative to
23542         aux_base_name directory.
23543
23544 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
23545
23546         * config/picochip/picochip.h (NO_DOLLAR_IN_LABEL): Added.
23547         * config/picochip/libgccExtras/divmod15.asm : Removed redefiniton.
23548
23549 2009-05-07  Rafael Avila de Espindola  <espindola@google.com>
23550
23551         * Makefile.in (install-plugin): Simplify a bit.
23552
23553 2009-05-07  Paolo Bonzini  <bonzini@gnu.org>
23554
23555         * Makefile.in (OBJS-common): Add regcprop.o.
23556         (regcprop.o): New.
23557         * timevar.def (TV_CPROP_REGISTERS): New.
23558         * regrename.c (regrename_optimize): Return 0.
23559         (rest_of_handle_regrename): Delete.
23560         (pass_rename_registers): Point to regrename_optimize.
23561         (struct value_data_entry, struct value_data,
23562         kill_value_one_regno, kill_value_regno, kill_value,
23563         set_value_regno, init_value_data, kill_clobbered_value,
23564         kill_set_value, kill_autoinc_value, copy_value,
23565         mode_change_ok, maybe_mode_change, find_oldest_value_reg,
23566         replace_oldest_value_reg, replace_oldest_value_addr,
23567         replace_oldest_value_mem, copyprop_hardreg_forward_1,
23568         debug_value_data, validate_value_data): Move...
23569         * regcprop.c: ... here.
23570         (rest_of_handle_cprop): Delete.
23571         (pass_cprop_hardreg): Point to copyprop_hardreg_forward.
23572
23573 2009-05-07  Jakub Jelinek  <jakub@redhat.com>
23574
23575         PR middle-end/40057
23576         * dojump.c (prefer_and_bit_test): Use immed_double_const instead of
23577         GEN_INT for 1 << bitnum.
23578         (do_jump) <case BIT_AND_EXPR>: Use build_int_cst_wide_type instead of
23579         build_int_cst_type.
23580
23581 2009-05-07  Uros Bizjak  <ubizjak@gmail.com>
23582
23583         * doc/md.texi (Standard Pattern Names For Generation) [sync_nand]:
23584         Remove wrong description of "nand" operation.
23585
23586 2009-05-06  Richard Guenther  <rguenther@suse.de>
23587             Adam Nemet  <anemet@caviumnetworks.com>
23588
23589         * gimple.def (GIMPLE_ASSIGN): Fix incorrect information in the
23590         comment.  Add that if LHS is not a gimple register, then RHS1 has
23591         to be a single object (GIMPLE_SINGLE_RHS).
23592
23593 2009-05-06  Adam Nemet  <anemet@caviumnetworks.com>
23594
23595         * expr.c (get_def_for_expr): Move it up in the file.
23596         (store_field): When expanding a bit-field store, look at the
23597         defining gimple stmt for the masking conversion.
23598
23599 2009-05-06  Janis Johnson  <janis187@us.ibm.com>
23600
23601         PR middle-end/39986
23602         * dfp.c (encode_decimal32, decode_decimal32, encode_decimal64,
23603         decode_decimal64, encode_decimal128, decode_decimal128): Avoid
23604         32-bit memcpy into long.
23605
23606 2009-05-06  Jakub Jelinek  <jakub@redhat.com>
23607
23608         * dwarf2out.c (new_reg_loc_descr): Don't ever create DW_OP_regX.
23609         (one_reg_loc_descriptor): Create DW_OP_regX here instead of calling
23610         new_reg_loc_descr.
23611         (loc_by_reference): If loc is DW_OP_regX, change it into DW_OP_bregX 0
23612         instead of appending DW_OP_deref*.
23613
23614 2009-05-06  Michael Matz  <matz@suse.de>
23615
23616         PR middle-end/40021
23617         * cfgexpand.c (maybe_cleanup_end_of_block): New static function.
23618         (expand_gimple_cond): Use it to cleanup CFG and superfluous jumps.
23619
23620 2009-05-06  Rafael Avila de Espindola  <espindola@google.com>
23621
23622         * Makefile.in (install-plugin): Fix srcdir handling.
23623
23624 2009-05-06  Andrey Belevantsev  <abel@ispras.ru>
23625
23626         * tree-ssa.c (execute_update_address_taken): Handle TARGET_MEM_REF
23627         when processing for not_regs_needed bitmap.
23628         * gimple.c (walk_stmt_load_store_addr_ops): When visiting address,
23629         handle TARGET_MEM_REF in lhs.  Check TMR_BASE for NULL while
23630         handling it for rhs.
23631
23632 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
23633
23634         * config/i386/i386.md (unnamed inc/dec peephole): Use
23635         optimize_insn_for_size_p instead of optimize_size.
23636         * config/i386/predicates.md (incdec_operand): Likewise.
23637         (aligned_operand): Likewise.
23638         * config/i386/sse.md (divv8sf3): Likewise.
23639         (sqrtv8sf2): Likewise.
23640
23641 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
23642
23643         * config/i386/i386.c (ix86_build_signbit_mask): Make it static.
23644
23645         * config/i386/i386-protos.h (ix86_build_signbit_mask): Removed.
23646
23647 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
23648
23649         * config/i386/i386.md (*avx_<code><mode>3_finite): Replace
23650         ssemodesuffixf2c with avxmodesuffixf2c.
23651
23652 2009-05-06  Joseph Myers  <joseph@codesourcery.com>
23653
23654         PR c/40032
23655         * c-decl.c (grokdeclarator): Handle incomplete type of unnamed field.
23656
23657 2009-05-05  Jakub Jelinek  <jakub@redhat.com>
23658
23659         * tree.h: Remove DECL_BY_REFERENCE from private_flag comment.
23660         (struct tree_base): Adjust spacing for 8 bit boundaries.
23661         (struct tree_decl_common): Add decl_by_reference_flag bit.
23662         (DECL_BY_REFERENCE): Adjust.
23663         * print-tree.c (print_node): For VAR_DECL, PARM_DECL or RESULT_DECL,
23664         print DECL_BY_REFERENCE bit.
23665         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Revert last change.
23666         * dwarf2out.c (loc_by_reference, gen_decl_die): Check
23667         DECL_BY_REFERENCE for all VAR_DECLs, not just non-static ones.
23668         (gen_variable_die): Likewise.  Check TREE_PRIVATE/TREE_PROTECTED
23669         unconditionally.
23670
23671         PR middle-end/39666
23672         * gimplify.c (gimplify_switch_expr): If case labels cover the whole
23673         range of the type, but default label is missing, add it with one
23674         of the existing labels instead of adding a new label for it.
23675
23676 2009-05-05  Joseph Myers  <joseph@codesourcery.com>
23677
23678         * dwarf.h: Remove.
23679
23680 2009-05-05  Rafael Avila de Espindola  <espindola@google.com>
23681
23682         * Makefile.in (enable_plugin, plugin_includedir): New.
23683         (install): Depend on install-plugin.
23684         (PLUGIN_HEADERS): New.
23685         (install-plugin): New.
23686         * config.gcc: Add vxworks-dummy.h to tm_file for x86 and x86-64.
23687
23688 2009-05-05  Richard Guenther  <rguenther@suse.de>
23689
23690         PR tree-optimization/40022
23691         * tree-ssa-phiprop.c (struct phiprop_d): Exchange vop_stmt for
23692         the only vuse.
23693         (phivn_valid_p): Fix tuplification error, simplify.
23694         (phiprop_insert_phi): Add dumps.
23695         (propagate_with_phi): Simplify.
23696
23697 2009-05-05  Richard Guenther  <rguenther@suse.de>
23698
23699         PR middle-end/40023
23700         * builtins.c (gimplify_va_arg_expr): Properly build the address.
23701
23702 2009-05-05  Shujing Zhao  <pearly.zhao@oracle.com>
23703
23704         * tree.h (strip_float_extensions): Remove duplicate declaration.
23705         (build_low_bits_mask, debug_fold_checksum, expand_function_end,
23706         expand_function_start, stack_protect_prologue, stack_protect_epilogue,
23707         block_ultimate_origin): Rearrange the declarations line to match the
23708         comment that indicates the .c file which the functions are defined.
23709         (dwarf2out_*, set_decl_rtl): Add comment.
23710         (get_base_address): Adjust comment.
23711         (change_decl_assembler_name, maybe_fold_*, build_addr): Rearrange the
23712         declarations line and add comment.
23713         (is_builtin_name): Add blank after function name, for clarity.
23714
23715 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
23716
23717         * attribs.c (decl_attributes): Use %qE for identifiers in
23718         diagnostics.
23719         * cgraphunit.c (verify_cgraph_node): Translate function names to
23720         locale character set in diagnostics.
23721         * coverage.c (get_coverage_counts): Use %qE for identifiers in
23722         diagnostics.
23723         * doc/invoke.texi (-finstrument-functions-exclude-function-list):
23724         Document that functions are named in UTF-8.
23725         * expr.c (expand_expr_real_1): Translate function names to locale
23726         character set in diagnostics.
23727         * gimplify.c (omp_notice_variable, omp_is_private,
23728         gimplify_scan_omp_clauses): Use %qE for identifiers in
23729         diagnostics.
23730         * langhooks.c (lhd_print_error_function): Translate function names
23731         to locale character set.
23732         * langhooks.h (decl_printable_name): Document that return value is
23733         in internal character set.
23734         * stmt.c: Include pretty-print.h
23735         (tree_conflicts_with_clobbers_p): Use %qE for identifiers in
23736         diagnostics.
23737         (resolve_operand_name_1): Translate named operand name to locale
23738         character set.
23739         * stor-layout.c (finalize_record_size): Use %qE for identifiers in
23740         diagnostics.
23741         * toplev.c (announce_function): Translate function names to locale
23742         character set.
23743         (warn_deprecated_use): Use %qE for identifiers in diagnostics.
23744         (default_tree_printer): Use pp_identifier or translate identifiers
23745         to locale character set.  Mark "<anonymous>" for translation.
23746         * tree-mudflap.c (mx_register_decls, mudflap_finish_file): Use %qE
23747         for identifiers in diagnostics.
23748         * tree.c (handle_dll_attribute): Use %qE for identifiers in
23749         diagnostics.
23750         * varasm.c (output_constructor): Use %qE for identifiers in
23751         diagnostics.
23752
23753 2009-05-04  Rafael Avila de Espindola  <espindola@google.com>
23754
23755         * configure.ac: use ` ` instead of $()
23756         * configure: Regenerate.
23757
23758 2009-05-05  Ben Elliston  <bje@au.ibm.com>
23759
23760         * config/pa/linux-atomic.c: Eliminate conditional include of
23761         errno.h on non-LP64 systems to simplify build requirements.
23762
23763 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
23764
23765         * c-common.c (handle_mode_attribute): Use %qE for identifiers in
23766         diagnostics.
23767         * c-decl.c (check_bitfield_type_and_width): Make orig_name a tree
23768         and pass value to identifier_to_locale.
23769         (warn_variable_length_array): Make name a tree.
23770         (grokdeclarator): Separate diagnostic texts for named and unnamed
23771         declarators.  Use %qE for named declarators.
23772         * c-parser.c (c_lex_one_token): Use %qE for identifiers in
23773         diagnostics.
23774         * c-pragma.c (pop_alignment, handle_pragma_pack): Use %qE for
23775         identifiers in diagnostics.
23776         * c-typeck.c (push_member_name, start_init): Pass identifiers to
23777         identifier_to_locale.  Mark "anonymous" strings for translation.
23778
23779 2009-05-04  Michael Eager <eager@eagercon.com>
23780
23781         * config/rs6000/rs6000.c (rs6000_legitimate_address): Allow
23782         address for DImode/DFmode only if double-precision FP regs.
23783
23784 2009-05-04  Michael Eager <eager@eagercon.com>
23785
23786         * config/rs6000/rs6000.c (rs6000_libcall_value): Add
23787         TARGET_SINGLE_FLOAT check.
23788
23789 2009-05-04  Michael Eager <eager@eagercon.com>
23790
23791         * config/rs6000/xilinx.h: Add CPP_SPEC for -mxilinx-fpu options.
23792
23793 2009-05-04  Michael Eager <eager@eagercon.com>
23794
23795         * gcc/config.gcc (powerpc-xilinx-eabi*): Add tm t-xilinx
23796         * config/rs6000/t-xilinx: New
23797
23798 2009-05-04  Paolo Bonzini  <bonzini@gnu.org>
23799
23800         * doc/tm.texi (LEGITIMIZE_ADDRESS): Revise documentation.
23801         * gcc/defaults.h (LEGITIMIZE_ADDRESS): Delete.
23802         * gcc/explow.c (memory_address): Use target hook.
23803         * gcc/targhooks.c (default_legitimize_address): New.
23804         * gcc/targhooks.h (default_legitimize_address): New.
23805         * gcc/target.h (legitimize_address): New.
23806         * gcc/target-def.h (TARGET_LEGITIMIZE_ADDRESS): New.
23807         (TARGET_INITIALIZER): Include it.
23808         * gcc/system.h (LEGITIMIZE_ADDRESS): Poison.
23809
23810         * config/bfin/bfin-protos.h (legitimize_address): Remove.
23811         * config/bfin/bfin.c (legitimize_address): Remove.
23812         * config/bfin/bfin.h (LEGITIMIZE_ADDRESS): Remove.
23813         * config/m68hc11/m68hc11-protos.h (m68hc11_legitimize_address):
23814         Remove.
23815         * config/m68hc11/m68hc11.c (m68hc11_legitimize_address): Remove.
23816         * config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Remove.
23817
23818         * gcc/config/arm/arm.h (LEGITIMIZE_ADDRESS, ARM_LEGITIMIZE_ADDRESS,
23819         THUMB_LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS): Delete.
23820         * gcc/config/s390/s390.h (LEGITIMIZE_ADDRESS): Delete.
23821         * gcc/config/m32c/m32c.h (LEGITIMIZE_ADDRESS): Delete.
23822         * gcc/config/sparc/sparc.h (LEGITIMIZE_ADDRESS): Delete.
23823         * gcc/config/m32r/m32r.h (LEGITIMIZE_ADDRESS): Delete.
23824         * gcc/config/i386/i386.h (LEGITIMIZE_ADDRESS): Delete.
23825         * gcc/config/sh/sh.h (LEGITIMIZE_ADDRESS): Delete.
23826         * gcc/config/avr/avr.h (LEGITIMIZE_ADDRESS): Delete.
23827         * gcc/config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Delete.
23828         * gcc/config/iq2000/iq2000.h (LEGITIMIZE_ADDRESS): Delete.
23829         * gcc/config/mn10300/mn10300.h (LEGITIMIZE_ADDRESS): Delete.
23830         * gcc/config/m68k/m68k.h (LEGITIMIZE_ADDRESS): Delete.
23831         * gcc/config/score/score.h (LEGITIMIZE_ADDRESS): Delete.
23832         * gcc/config/pa/pa.h (LEGITIMIZE_ADDRESS): Delete.
23833         * gcc/config/mips/mips.h (LEGITIMIZE_ADDRESS): Delete.
23834         * gcc/config/alpha/alpha.h (LEGITIMIZE_ADDRESS): Delete.
23835         * gcc/config/frv/frv.h (LEGITIMIZE_ADDRESS): Delete.
23836         * gcc/config/spu/spu.h (LEGITIMIZE_ADDRESS): Delete.
23837         * gcc/config/xtensa/xtensa.h (LEGITIMIZE_ADDRESS): Delete.
23838         * gcc/config/cris/cris.h (LEGITIMIZE_ADDRESS): Delete.
23839         * gcc/config/rs6000/rs6000.h (LEGITIMIZE_ADDRESS): Delete.
23840         * gcc/config/picochip/picochip.h (LEGITIMIZE_ADDRESS): Delete.
23841
23842         * gcc/config/s390/s390-protos.h (legitimize_address): Delete.
23843         * gcc/config/m32c/m32c-protos.h (m32c_legitimize_address): Delete.
23844         * gcc/config/sparc/sparc-protos.h (legitimize_address): Delete.
23845         * gcc/config/i386/i386-protos.h (legitimize_address): Delete.
23846         * gcc/config/avr/avr-protos.h (legitimize_address): Delete.
23847         * gcc/config/mn10300/mn10300-protos.h (legitimize_address): Delete.
23848         * gcc/config/score/score-protos.h (score_legitimize_address): Delete.
23849         * gcc/config/arm/arm-protos.h (arm_legitimize_address,
23850         (thumb_legitimize_address): Delete.
23851         * gcc/config/pa/pa-protos.h (hppa_legitimize_address): Delete.
23852         * gcc/config/mips/mips-protos.h (mips_legitimize_address): Delete.
23853         * gcc/config/alpha/alpha-protos.h (alpha_legitimize_address): Delete.
23854         * gcc/config/frv/frv-protos.h (frv_legitimize_address): Delete.
23855         * gcc/config/spu/spu-protos.h (spu_legitimize_address): Delete.
23856         * gcc/config/xtensa/xtensa-protos.h (xtensa_legitimize_address):
23857         Delete.
23858         * gcc/config/rs6000/rs6000-protos.h (rs6000_legitimize_address):
23859         Delete.
23860
23861         * config/arm/arm.c (arm_legitimize_address): Maybe call Thumb version.
23862         * config/m32c/m32c.c (m32c_legitimize_address): Standardize.
23863         * config/m32r/m32r.c (m32r_legitimize_address): New.
23864         * config/m68k/m68k.c (m68k_legitimize_address): New.
23865         * config/score/score.c (score_legitimize_address): Standardize.
23866         * config/score/score3.c (score3_legitimize_address): Standardize.
23867         * config/score/score3.h (score3_legitimize_address): Adjust.
23868         * config/score/score7.c (score7_legitimize_address): Standardize.
23869         * config/score/score7.h (score7_legitimize_address): Adjust.
23870         * config/sh/sh.c (sh_legitimize_address): New.
23871         * config/iq2000/iq2000.c (iq2000_legitimize_address): New.
23872
23873         * gcc/config/s390/s390.c (legitimize_address): Rename to...
23874         (s390_legitimize_address): ... this.
23875         * gcc/config/sparc/sparc.c (legitimize_address): Rename to...
23876         (sparc_legitimize_address): ... this.
23877         * gcc/config/i386/i386.c (legitimize_address): Rename to...
23878         (ix86_legitimize_address): ... this.
23879         * gcc/config/avr/avr.c (legitimize_address): Rename to...
23880         (avr_legitimize_address): ... this.
23881         * gcc/config/mn10300/mn10300.c (legitimize_address): Rename to...
23882         (mn10300_legitimize_address): ... this.
23883         * config/alpha/alpha.c (alpha_legitimize_address): Wrap...
23884         (alpha_legitimize_address_1): ... the old alpha_legitimize_address.
23885         (alpha_expand_mov): Adjust call.
23886
23887         * config/frv/frv.c (frv_legitimize_address): Return x on failure.
23888         * config/spu/spu.c (spu_legitimize_address): Likewise.
23889         * config/xtensa/xtensa.c (xtensa_legitimize_address): Likewise.
23890         * config/rs6000/rs6000.c (rs6000_legitimize_address): Likewise.
23891
23892 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
23893
23894         * intl.c (locale_encoding, locale_utf8): New.
23895         (gcc_init_libintl): Initialize locale_encoding and locale_utf8.
23896         * intl.h (locale_encoding, locale_utf8): Declare.
23897         * pretty-print.c: Include ggc.h.  Include iconv.h if HAVE_ICONV.
23898         (pp_base_tree_identifier, decode_utf8_char, identifier_to_locale):
23899         New.
23900         * pretty-print.h (pp_identifier): Call identifier_to_locale on ID
23901         argument.
23902         (pp_tree_identifier): Define to call pp_base_tree_identifier.
23903         (pp_base_tree_identifier): Declare as function.
23904         (identifier_to_locale): Declare.
23905         * Makefile.in (pretty-print.o): Update dependencies.
23906         * varasm.c (finish_aliases_1): Use %qE for identifiers in diagnostics.
23907
23908 2009-05-04  Richard Guenther  <rguenther@suse.de>
23909
23910         PR middle-end/40015
23911         * builtins.c (fold_builtin_memory_op): Do not decay to element
23912         type if the size matches the whole array.
23913
23914 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
23915
23916         * expmed.c (synth_mult): When trying out a shift, pass the result
23917         of a signed shift.
23918
23919 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
23920
23921         * expmed.c (shiftsub_cost): Rename to shiftsub0_cost.
23922         (shiftsub1_cost): New.
23923         (init_expmed): Compute shiftsub1_cost.
23924         (synth_mult): Optimize multiplications by constants of the form
23925         -(2^^m-1) for some constant positive integer m.
23926
23927 2009-05-03  Richard Guenther  <rguenther@suse.de>
23928
23929         PR c/39983
23930         * c-typeck.c (array_to_pointer_conversion): Do not built
23931         ADDR_EXPRs of arrays of pointer-to-element type.
23932         * c-gimplify.c (c_gimplify_expr): Revert change fixing
23933         up wrong ADDR_EXPRs after-the-fact.
23934         * c-common.c (strict_aliasing_warning): Strip pointer
23935         conversions for obtaining the original type.
23936         * builtins.c (fold_builtin_memset): Handle array types.
23937         (fold_builtin_memory_op): Handle folded POINTER_PLUS_EXPRs
23938         and array types
23939
23940 2009-05-03  Richard Guenther  <rguenther@suse.de>
23941
23942         PR middle-end/23329
23943         * tree-ssa.c (useless_type_conversion_p_1): Use get_deref_alias_set.
23944         Do not lose casts from array types with unknown extent to array
23945         types with known extent.
23946         * tree-ssa-copy.c (may_propagate_copy): Remove hack checking for
23947         alias set compatibility.
23948
23949 2009-05-03  Manuel López-Ibáñez  <manu@gcc.gnu.org>
23950
23951         * flags.h (extra_warnings): Delete.
23952         * toplev.c (process_options): Handle Wuninitialized here.
23953         * opts.c (extra_warnings): Delete.
23954         (set_Wextra): Delete.
23955         (common_handle_option): -Wextra can be handled automatically.
23956         * c-opts.c (c_common_handle_option): Delete obsolete code.
23957         (c_common_post_options): Simplify comment.
23958         * common.opt (W): Add Var.
23959         (Wextra): Add Var.
23960         (Wuninitialized): Initialize to -1.
23961
23962 2009-05-03  Adam Nemet  <anemet@caviumnetworks.com>
23963             Richard Guenther  <rguenther@suse.de>
23964
23965         * expr.c (get_def_for_expr): New function.
23966         (expand_expr_real_1) <PLUS_EXPR, MINUS_EXPR>: Adjust to work with
23967         SSA rather than trees.
23968         <MULT_EXPR>: Likewise.  Use subexp0 and subexp1 instead of
23969         TREE_OPERAND (exp, 0) and TREE_OPERAND (exp, 1).
23970
23971 2009-05-03  Joseph Myers  <joseph@codesourcery.com>
23972
23973         * c-common.c (reswords): Add _Imaginary.
23974         * c-common.c (enum rid): Add RID_IMAGINARY.
23975
23976 2009-05-03  Paolo Bonzini  <bonzini@gnu.org>
23977
23978         * tree.h (TYPE_VECTOR_OPAQUE): Fix documentation.
23979         Patch by Richard Guenther.
23980
23981 2009-05-03  Anatoly Sokolov  <aesok@post.ru>
23982
23983         * defaults.h (FRAME_POINTER_REQUIRED): Provide default.
23984         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
23985         * config/alpha/alpha.h (FRAME_POINTER_REQUIRED): Delete.
23986         * config/s390/s390.h (FRAME_POINTER_REQUIRED): Delete.
23987         * config/spu/spu.h (FRAME_POINTER_REQUIRED): Delete.
23988         * config/sh/sh.h (FRAME_POINTER_REQUIRED): Delete.
23989         * config/pdp11/pdp11.h (FRAME_POINTER_REQUIRED): Delete.
23990         * config/stormy16/stormy16.h (FRAME_POINTER_REQUIRED): Delete.
23991         * config/m68hc11/m68hc11.h (FRAME_POINTER_REQUIRED): Delete.
23992         * config/iq2000/iq2000.h (FRAME_POINTER_REQUIRED): Delete.
23993         * config/mn10300/mn10300.h (FRAME_POINTER_REQUIRED): Delete.
23994         * config/ia64/ia64.h (FRAME_POINTER_REQUIRED): Delete.
23995         * config/m68k/m68k.h (FRAME_POINTER_REQUIRED): Delete.
23996         * config/rs6000/rs6000.h (FRAME_POINTER_REQUIRED): Delete.
23997         * config/picochip/picochip.h (FRAME_POINTER_REQUIRED): Delete.
23998         * config/mcore/mcore.h (FRAME_POINTER_REQUIRED): Delete.
23999         * config/h8300/h8300.h (FRAME_POINTER_REQUIRED): Delete.
24000         * config/v850/v850.h (FRAME_POINTER_REQUIRED): Delete.
24001
24002 2009-05-02  Richard Guenther  <rguenther@suse.de>
24003
24004         PR tree-optimization/39940
24005         * tree-ssa-pre.c (eliminate): Make sure we may propagate before
24006         doing so.
24007
24008 2009-05-02  Richard Guenther  <rguenther@suse.de>
24009
24010         PR middle-end/40001
24011         * tree-ssa.c (execute_update_addresses_taken): Properly check
24012         if we can mark a variable DECL_GIMPLE_REG_P.
24013         * gimple.c (is_gimple_reg): Re-order check for DECL_GIMPLE_REG_P
24014         back to the end of the function.
24015         (is_gimple_reg_type): Remove complex type special casing.
24016         * gimplify.c (gimplify_bind_expr): Do not set DECL_GIMPLE_REG_P
24017         if not optimizing.
24018
24019 2009-05-02  Ben Elliston  <bje@au.ibm.com>
24020
24021         * doc/collect2.texi (Collect2): Document search path behaviour
24022         when configured with --with-ld.
24023
24024 2009-05-02  Jan Hubicka  <jh@suse.cz>
24025
24026         * tree-ssa-coalesce.c (coalesce_cost): Do not take ciritical
24027         parameter; update callers.
24028         (coalesce_cost_edge): EH edges are costier because they needs
24029         splitting even if not critical and even more costier when there are
24030         multiple EH predecestors.
24031
24032 2009-05-02  Jan Hubicka  <jh@suse.cz>
24033
24034         * except.c (remove_eh_handler_and_replace): Handle updating after
24035         removing TRY blocks.
24036
24037 2009-05-02  Eric Botcazou  <ebotcazou@adacore.com>
24038
24039         * store-motion.c (compute_store_table): Add ENABLE_CHECKING guard.
24040
24041 2009-05-02  Steven Bosscher  <steven@gcc.gnu.org>
24042
24043         * varasm.c: Do not include c-pragma.h.
24044         * attribs.c: Do not incude c-common.h.
24045
24046 2009-05-01  Michael Matz  <matz@suse.de>
24047
24048         * calls.c (initialize_argument_information): Handle SSA names like
24049         decls with a non MEM_P DECL_RTL.
24050
24051 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
24052
24053         * ipa-reference.c: Do not include c-common.h, include splay-tree.h.
24054         * ipa-utils.c: Likewise.
24055         * ipa-type-escape.c: Likewise.
24056         * cgraphunit.c Do not include c-common.h.
24057         * ipa-pure-const.c: Likewise.
24058         * tree-if-conv.c: Likewise.
24059         * matrix-reorg.c: Do not include c-common.h and c-tree.h.
24060         * ipa-struct-reorg.c: Likewise.
24061         * tree-nomudflap.c: Likewise.
24062         * tree-ssa-structalias.c: Likewise.
24063
24064 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
24065
24066         * store-motion.c: Many cleanups to make this pass a first-class
24067         citizen instead of an appendix to gcse load motion.  Add TODO list
24068         to make this pass faster/cleaner/better.
24069
24070         (struct ls_expr): Post gcse.c-split cleanups.
24071         Rename to st_expr.  Rename "loads" field to "antic_stores".  Rename
24072         "stores" field to "avail_stores".
24073         (pre_ldst_mems): Rename to store_motion_mems.
24074         (pre_ldst_table): Rename to store_motion_mems_table.
24075         (pre_ldst_expr_hash): Rename to pre_st_expr_hash, update users.
24076         (pre_ldst_expr_eq): Rename to pre_st_expr_eq, update users.
24077         (ldst_entry): Rename to st_expr_entry, update users.
24078         (free_ldst_entry): Rename to free_st_expr_entry, update users.
24079         (free_ldst_mems): Rename to free_store_motion_mems, update users.
24080         (enumerate_ldsts): Rename to enumerate_store_motion_mems,
24081         update caller.
24082         (first_ls_expr): Rename to first_st_expr, update users.
24083         (next_ls_expr): Rename to next_st_expr, update users.
24084         (print_ldst_list): Rename to print_store_motion_mems.  Print names of
24085         fields properly for store motion instead of names inherited from load
24086         motion in gcse.c.
24087         (ANTIC_STORE_LIST, AVAIL_STORE_LIST): Remove.
24088         (LAST_AVAIL_CHECK_FAILURE): Explain what this is.  Undefine when we
24089         are done with it.
24090
24091         (ae_kill): Rename to st_kill, update users.
24092         (ae_gen): Rename to st_avloc, update users.
24093         (transp): Rename to st_transp, update users.
24094         (pre_insert_map): Rename to st_insert_map, update users.
24095         (pre_delete_map): Rename to st_delete_map, update users.
24096         (insert_store, build_store_vectors, free_store_memory,
24097         one_store_motion_pass): Update for abovementioned changes.
24098
24099         (gcse_subst_count, gcse_create_count): Remove.
24100         (one_store_motion_pass): New statistics counters "n_stores_deleted"
24101         and "n_stores_created", local variables.
24102
24103         (extract_mentioned_regs, extract_mentioned_regs_1): Rewrite to
24104         use for_each_rtx.
24105
24106         (regvec, compute_store_table_current_insn): Remove.
24107         (reg_set_info, reg_clear_last_set): Remove.
24108         (compute_store_table): Use DF caches instead of local dataflow
24109         solvers.
24110
24111 2009-05-01  Joseph Myers  <joseph@codesourcery.com>
24112
24113         * c-objc-common.c (c_tree_printer): Print identifiers with
24114         pp_identifier, not pp_string.  Mark "({anonymous})" for
24115         translation.
24116         * c-pretty-print.c (pp_c_ws_string): New.
24117         (pp_c_cv_qualifier, pp_c_type_specifier,
24118         pp_c_specifier_qualifier_list, pp_c_parameter_type_list,
24119         pp_c_storage_class_specifier, pp_c_function_specifier,
24120         pp_c_attributes, pp_c_bool_constant, pp_c_constant,
24121         pp_c_primary_expression, pp_c_postfix_expression,
24122         pp_c_unary_expression, pp_c_shift_expression,
24123         pp_c_relational_expression, pp_c_equality_expression,
24124         pp_c_logical_and_expression, pp_c_logical_or_expression): Mostly
24125         use pp_string and pp_c_ws_string in place of pp_identifier and
24126         pp_c_identifier for non-identifiers.  Mark English strings for
24127         translation.
24128         * c-pretty-print.h (pp_c_ws_string): Declare.
24129
24130 2009-04-30  Paul Pluzhnikov  <ppluzhnikov@google.com>
24131             Roland McGrath <roland@redhat.com>
24132
24133         * configure.ac (HAVE_LD_BUILDID): New check for ld --build-id support.
24134         (ENABLE_LD_BUILDID): New configuration option.
24135         * gcc.c [HAVE_LD_BUILDID and ENABLE_LD_BUILDID]
24136         (LINK_BUILDID_SPEC): New macro.
24137         (init_spec): If defined, prepend it between LINK_EH_SPEC and
24138         link_spec.
24139         * doc/install.texi: Document --enable-linker-build-id option.
24140         * configure: Rebuild.
24141         * config.in: Rebuild.
24142
24143 2009-04-30  Adam Nemet  <anemet@caviumnetworks.com>
24144
24145         * config/mips/mips.h (FRAME_GROWS_DOWNWARD,
24146         MIPS_GP_SAVE_AREA_SIZE): Define new macros.
24147         (STARTING_FRAME_OFFSET): Return 0 if FRAME_GROWS_DOWNWARD.  Use
24148         MIPS_GP_SAVE_AREA_SIZE.
24149         * config/mips/mips.c (struct mips_frame_info): Update comment
24150         before arg_pointer_offset and hard_frame_pointer_offset.
24151         (mips_compute_frame_info): Update diagram before function: to
24152         correctly use stack_pointer_rtx for fp_sp_offset and gp_sp_offset, to
24153         indicate the position of frame_pointer_rtx with -fstack-protector and
24154         to show args_size.  Don't allocate cprestore area for leaf functions
24155         if FRAME_GROWS_DOWNWARD.  Use MIPS_GP_SAVE_AREA_SIZE to set
24156         cprestore_size.
24157         (mips_initial_elimination_offset): Update for FRAME_GROWS_DOWNWARD.
24158
24159 2009-04-30  Michael Matz  <matz@suse.de>
24160
24161         PR tree-optimization/39955
24162         * config/rs6000/rs6000.c (rs6000_check_sdmode): Also check SSA_NAMEs.
24163
24164 2009-04-30  Dave Korn  <dave.korn.cygwin@gmail.com>
24165
24166         * ira.c (setup_cover_and_important_classes):  Use safe macro
24167         REG_CLASS_FOR_CONSTRAINT instead of calling regclass_for_constraint
24168         directly.
24169         * genpreds.c (write_tm_preds_h):  Output suitable definition of
24170         REG_CLASS_FOR_CONSTRAINT.
24171
24172 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
24173
24174         * alloc-pool.c (alloc_pool_descriptor): Use an insert_opion value
24175         instead of an int.
24176         * bitmap.c (bitmap_descriptor): Likewise.
24177         * ggc-common.c (loc_descriptor): Likewise.
24178         * varray.c (varray_descriptor): Likewise.
24179         * vec.c (vec_descriptor): Likewise.
24180
24181 2009-04-30  Eric Botcazou  <ebotcazou@adacore.com>
24182
24183         * Makefile.in (dce.o): Add $(EXCEPT_H).
24184         * dce.c: Include except.h and delete redundant vector definitions.
24185         (deletable_insn_p): Return false for non-call insns that can throw
24186         if DF is running.
24187
24188 2009-04-30  Steven Bosscher  <steven@gcc.gnu.org>
24189
24190         * gcse.c (ae_gen): Remove.
24191         (can_assign_to_reg_p): Rename to can_assign_to_reg_without_clobbers_p
24192         and make non-static function to make it available in store-motion.c.
24193         Update call sites with search-and-replace.
24194         (enumerate_ldsts, reg_set_info, reg_clear_last_set, store_ops_ok,
24195         extract_mentioned_regs, extract_mentioned_regs_helper,
24196         find_moveable_store, compute_store_table, load_kills_store, find_loads,
24197         store_killed_in_insn, store_killed_after, store_killed_before,
24198         build_store_vectors, insert_insn_start_basic_block, insert-store,
24199         remove_reachable_equiv_notes, replace_store_insn, delete_store,
24200         free_store_memory, one_store_motion_pass, gate_rtl_store_motion,
24201         execute_rtl_store_motion, pass_rtl_store_motion): Move to...
24202         * store-motion.c: ...new file.  Also copy data structures from gcse.c
24203         and clean up to remove parts not used by store motion.
24204         * rtl.h (can_assign_to_reg_without_clobbers_p): Add prototype.
24205         * Makefile.in (store-motion.o): New rule. Add to OBJS-common.
24206
24207 2009-04-30  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
24208
24209         PR target/38571
24210         * config/arm/arm.h (FUNCTION_BOUNDARY): Set to 16 for thumb
24211         when optimizing for size.
24212
24213 2009-04-30  Hans-Peter Nilsson  <hp@axis.com>
24214
24215         * gcse.c (gcse_constant_p): Fix typo in last change.
24216
24217 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
24218
24219         * plugin.c: Include plugin-version.h only if ENABLE_PLUGIN is defined.
24220
24221 2009-04-30  Andreas Krebbel  <krebbel1@de.ibm.com>
24222
24223         * gcse.c (gcse_constant_p): Make sure the constant is sharable.
24224
24225 2009-04-29  James E. Wilson  <wilson@codesourcery.com>
24226
24227         * config/mips/mips.c (mips_add_offset): Use gen_int_mode for
24228         CONST_HIGH_PART result.
24229
24230 2009-04-29  Anatoly Sokolov  <aesok@post.ru>
24231
24232         * config/avr/avr.c (initial_elimination_offset): Rename to
24233         avr_initial_elimination_offset.
24234         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p,
24235         change return type to bool.
24236         (avr_can_eliminate): New function.
24237         * config/avr/avr.h (CAN_ELIMINATE): Use avr_can_eliminate.
24238         (FRAME_POINTER_REQUIRED): Use avr_frame_pointer_required_p.
24239         (INITIAL_ELIMINATION_OFFSET): Use avr_initial_elimination_offset.
24240         * config/avr/avr-protos.h (initial_elimination_offset): Rename to
24241         avr_initial_elimination_offset.
24242         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p.
24243         (avr_initial_elimination_offset): Define.
24244
24245 2009-04-29  Eric Botcazou  <ebotcazou@adacore.com>
24246             Steven Bosscher  <steven@gcc.gnu.org>
24247
24248         PR rtl-optimization/39938
24249         * Makefile.in (cfgrtl.o): Add $(INSN_ATTR_H).
24250         * cfgrtl.c: Include insn-attr.h.
24251         (rest_of_pass_free_cfg): New function.
24252         (pass_free_cfg): Use rest_of_pass_free_cfg as execute function.
24253         * resource.c (init_resource_info): Remove call to df_analyze.
24254
24255 2009-04-29  Richard Guenther  <rguenther@suse.de>
24256
24257         PR target/39943
24258         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Only
24259         allow conversion to signed integers.
24260
24261 2009-04-29  Richard Guenther  <rguenther@suse.de>
24262
24263         * tree-cfg.c (verify_gimple_assign_binary): Allow vector
24264         shifts of floating point vectors if the shift amount is
24265         a constant multiple of the element size.
24266
24267 2009-04-29  Andreas Krebbel  <krebbel1@de.ibm.com>
24268             Michael Matz  <matz@suse.de>
24269
24270         PR middle-end/39927
24271         PR bootstrap/39929
24272         * tree-outof-ssa.c (emit_partition_copy): New function.
24273         (insert_partition_copy_on_edge, insert_rtx_to_part_on_edge,
24274         insert_part_to_rtx_on_edge): Perform the partition base var
24275         copy using emit_partition_copy.
24276         (insert_value_copy_on_edge): Convert constants to the right mode.
24277         (insert_rtx_to_part_on_edge): Add UNSIGNEDSRCP parameter.
24278         (elim_create): Pass the sign of the src to insert_rtx_to_part_on_edge.
24279
24280 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
24281
24282         * config/bfin/bfin.c (bfin_optimize_loop): If we need a scratch reg,
24283         scan backwards to try to find a constant to initialize it.
24284
24285         * config/bfin/bfin.c (bfin_optimize_loop): When looking for the last
24286         insn before the loop_end instruction, don't look past labels.
24287
24288 2009-04-29  Richard Guenther  <rguenther@suse.de>
24289
24290         PR middle-end/39937
24291         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not
24292         loose type conversions.
24293         (forward_propagate_addr_expr): Fix tuplification bug.  Remove
24294         stmts only if there are no uses of its definition.
24295
24296 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
24297
24298         * config/bfin/bfin.h (splitting_loops): Declare.
24299         * config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315):
24300         Reorder bit definitions to be ascending.
24301         (WA_LOAD_LCREGS, ENABLE_WA_LOAD_LCREGS): New macros.
24302         * config/bfin/bfin.c (splitting_loops): New variable.
24303         (bfin_cpus): Add WA_LOAD_LCREGS as needed.
24304         (struct loop_info): Remove members INIT and LOOP_INIT.
24305         (bfin_optimize_loop): Don't set them.  Reorder the code that generates
24306         the LSETUP sequence.  Allow LC to be loaded from any register, but
24307         also add a case to push/pop a PREG scratch if ENABLE_WA_LOAD_LCREGS.
24308         (bfin_reorg_loops): When done, split all BB_ENDs with splitting_loops
24309         set to 1.
24310         * config/bfin/bfin.md (loop_end splitter): Use splitting_loops instead
24311         of reload_completed.
24312
24313         From Jie Zhang:
24314         * config/bfin/bfin.md (movsi_insn): Refine constraints.
24315
24316 2009-04-29  Rafael Avila de Espindola  <espindola@google.com>
24317
24318         * Makefile.in (PLUGIN_VERSION_H): New.
24319         (OBJS-common): Remove plugin-version.o.
24320         (plugin.o): Depend on (PLUGIN_VERSION_H).
24321         (plugin-version.o): Remove.
24322         * configure: Regenerate
24323         * configure.ac: Create plugin-version.h.
24324         * gcc-plugin.h (plugin_gcc_version): Remove.
24325         (plugin_default_version_check): Change signature.
24326         * plugin-version.c: Remove.
24327         * plugin.c: Include plugin-version.h.
24328         (str_plugin_gcc_version_name): Remove.
24329         (try_init_one_plugin): Pass gcc version to plugin_init.
24330         (plugin_default_version_check): Both gcc and plugin versions are now
24331         arguments.
24332
24333 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
24334
24335         * config/bfin/bfin.c (bfin_optimize_loop): Unify handling of
24336         problematic last insns.  Test for TYPE_CALL rather than CALL_P.
24337         Remove special case testing for last insn of inner loops. Don't fail
24338         if the loop ends with a jump, emit an extra nop instead.
24339
24340         * config/bfin/bfin.c (bfin_register_move_cost): Test for subsets of
24341         DREGS rather than comparing directly.  Remove code that tries to
24342         account for latencies.
24343
24344 2009-04-29  Richard Guenther  <rguenther@suse.de>
24345
24346         PR tree-optimization/39941
24347         * tree-ssa-pre.c (eliminate): Schedule update-ssa after
24348         eliminating an indirect call.
24349
24350 2009-04-29  Richard Guenther  <rguenther@suse.de>
24351
24352         * tree-cfg.c (verify_types_in_gimple_reference): Add require_lvalue
24353         parameter.  Allow invariants as base if !require_lvalue.
24354         (verify_gimple_assign_single): Adjust.
24355
24356 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
24357
24358         * config/bfin/bfin.md (sp_or_sm, spm_string, spm_name): New macro.
24359         (ss<spm_name>hi3, ss<spm_name>hi3_parts, ss<spm_name>hi3_low_parts,
24360         ss<spm_name_hi3_high_parts): New patterns, replacing ssaddhi3,
24361         ssubhi3, ssaddhi3_parts and sssubhi3_parts.
24362         (flag_mulhi3_parts): Produce a HImode output rather than trying to set
24363         a VEC_SELECT.
24364         * config/bfin/bfin.c (bfin_expand_builtin,
24365         case BFIN_BUILTIN_CPLX_SQU): Adjust accordingly.
24366
24367 2009-04-28  Richard Guenther  <rguenther@suse.de>
24368
24369         * tree-vect-loop.c (get_initial_def_for_induction): Use
24370         correct types for pointer increment.
24371
24372 2009-04-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
24373
24374         * toplev.c (print_version): Update GMP version string calculation.
24375
24376 2009-04-28  Eric Botcazou  <ebotcazou@adacore.com>
24377
24378         PR rtl-optimization/39938
24379         * resource.c (init_resource_info): Add call to df_analyze.
24380
24381 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
24382
24383         * config/alpha/alpha.md (usegp): Cast the result of
24384         alpha_find_lo_sum_using_gp to enum attr_usegp.
24385         * config/alpha/alpha.c (override_options): Remove end-of-structure
24386         marker element from cpu_table.  Use array size of cpu_table to handle
24387         -mcpu and -mtune options.
24388         (tls_symbolic_operand_type): Change 0 to TLS_MODEL_NONE.
24389
24390 2009-04-28  Joseph Myers  <joseph@codesourcery.com>
24391
24392         * config.gcc (powerpc*-*-* | rs6000-*-*): Add
24393         rs6000/option-defaults.h to tm_file.  Support cpu_32, cpu_64,
24394         tune_32 and tune_64.
24395         * doc/install.texi (--with-cpu-32, --with-cpu-64): Document
24396         support on PowerPC.
24397         * config/rs6000/rs6000.h (OPTION_DEFAULT_SPECS): Move to ...
24398         * config/rs6000/option-defaults.h: ... here.  New file.
24399         (OPT_64, OPT_32): Define.
24400         (MASK_64BIT): Define to 0 if not already defined.
24401         (OPT_ARCH64, OPT_ARCH32): Define.
24402         (OPTION_DEFAULT_SPECS): Add entries for cpu_32, cpu_64, tune_32
24403         and tune_64.
24404
24405 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
24406
24407         * config/arm/arm.c (arm_override_options): Emit error on using
24408         fpa with AAPCS.
24409
24410 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
24411
24412         PR rtl-optimization/39914
24413         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
24414         registers for allocnos created from user-defined variables only
24415         when not optimizing.
24416
24417 2009-04-28  Richard Guenther  <rguenther@suse.de>
24418
24419         PR middle-end/39937
24420         * fold-const.c (fold_binary): Use distribute_real_division only
24421         on float types.
24422
24423 2009-04-28  Steve Ellcey  <sje@cup.hp.com>
24424
24425         * config.gcc (hppa*64*-*-hpux11*): Set use_gcc_stdint and
24426         add hpux-stdint.h to tm_file.
24427         (hppa[12]*-*-hpux11*): Ditto.
24428         (ia64*-*-hpux*): Ditto.
24429         * config/hpux-stdint.h: New.
24430         * config/ia64/hpux.h (TARGET_OS_CPP_BUILTINS): Set
24431         __STDC_EXT__ for all compiles.
24432         * config/pa/pa-hpux.h: Ditto.
24433         * config/pa/pa-hpux10.h: Ditto.
24434         * config/pa/pa-hpux11.h: Ditto.
24435
24436 2009-04-28  Catherine Moore  <clm@codesourcery.com>
24437
24438         * debug.h (set_name): Add comment.
24439
24440 2009-04-28  Andrew Pinski  <pinskia@gmail.com>
24441
24442         PR target/39929
24443         * config/darwin.c (machopic_gen_offset): Check
24444         currently_expanding_to_rtl if current_ir_type returns IR_GIMPLE.
24445         * config/arm/arm.c (require_pic_register): Likewise.
24446
24447 2009-04-28  Paolo Bonzini  <bonzini@gnu.org>
24448
24449         * config/m32c/m32c.c (TARGET_PROMOTE_FUNCTION_RETURN,
24450         m32c_promote_function_return, TARGET_PROMOTE_PROTOTYPES,
24451         m32c_promote_prototypes): Delete.
24452
24453 2009-04-28  Michael Matz  <matz@suse.de>
24454
24455         PR middle-end/39922
24456         * tree-outof-ssa.c (insert_value_copy_on_edge): Don't convert
24457         constants.
24458
24459 2009-04-28  Richard Guenther  <rguenther@suse.de>
24460
24461         * tree-vect-stmts.c (vect_get_vec_def_for_operand): Fix type error.
24462
24463 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
24464
24465         * config/arm/arm-cores.def: Add support for arm1156t2f-s.
24466         * doc/invoke.texi (ARM Options): Document support for arm1156t2f-s.
24467         * config/arm/arm-tune.md: Regenerate.
24468
24469 2009-04-28  Alexander Monakov  <amonakov@ispras.ru>
24470
24471         * sel-sched-ir.c (maybe_tidy_empty_bb): Do not attempt to delete a
24472         block if there are complex incoming edges.
24473         (sel_merge_blocks): Remove useless assert.
24474         (sel_redirect_edge_and_branch): Check that edge was redirected.
24475         * sel-sched-ir.h (_eligible_successor_edge_p): Remove assert.
24476         (sel_find_rgns): Delete declaration.
24477         * sel-sched.c (purge_empty_blocks): Attempt to remove first block of
24478         the region when it is not a preheader.
24479
24480 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
24481
24482         PR c/39323
24483         * config/alpha/elf.h (MAX_OFILE_ALIGNMENT): Sync with elfos.h
24484
24485 2009-04-28  Richard Guenther  <rguenther@suse.de>
24486
24487         * tree.h (SSA_NAME_VALUE): Remove.
24488         (struct tree_ssa_name): Remove value_handle member.
24489         * tree-vrp.c (execute_vrp): Initialize/free the value-handle
24490         array for jump threading.
24491         * tree-ssa-propagate.c (ssa_prop_init): Do not initialize
24492         SSA_NAME_VALUEs.
24493         * print-tree.c (print_node): Do not dump SSA_NAME_VALUEs.
24494         * tree-flow.h (threadedge_initialize_values): Declare.
24495         (threadedge_finalize_values): Likewise.
24496         * tree-ssa-threadedge.c (ssa_name_values): New global variable.
24497         (SSA_NAME_VALUE): Define.
24498         (threadedge_initialize_values): New function.
24499         (threadedge_finalize_values): Likewise.
24500         * tree-ssa-dom.c (ssa_name_values): New global variable.
24501         (SSA_NAME_VALUE): Define.
24502         (tree_ssa_dominator_optimize): Initialize/free the value-handle array.
24503
24504 2009-04-28  Ira Rosen  <irar@il.ibm.com>
24505
24506         * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks):
24507         Use REPORT_VECTORIZED_LOCATIONS instead
24508         REPORT_VECTORIZED_LOOPS.
24509         * tree-vectorizer.c (vect_verbosity_level): Make static.
24510         (vect_loop_location): Rename to vect_location.
24511         (vect_set_verbosity_level): Update comment.
24512         (vect_set_dump_settings): Use REPORT_VECTORIZED_LOCATIONS
24513         and vect_location.
24514         (vectorize_loops): Fix comment. Use REPORT_VECTORIZED_LOCATIONS
24515         and vect_location. Use REPORT_UNVECTORIZED_LOCATIONS
24516         instead REPORT_UNVECTORIZED_LOOPS.
24517         * tree-vectorizer.h (enum vect_def_type): Rename vect_invariant_def
24518         and vect_loop_def to vect_external_def and vect_internal_def.
24519         (enum verbosity_levels): Rename REPORT_VECTORIZED_LOOPS
24520         and REPORT_UNVECTORIZED_LOOPS to REPORT_VECTORIZED_LOCATIONS and
24521         REPORT_UNVECTORIZED_LOCATIONS.
24522         (enum vect_relevant): Update comment. Rename vect_unused_in_loop
24523         and vect_used_in_loop and to vect_unused_in_scope and
24524         vect_used_in_scope.
24525         (STMT_VINFO_RELEVANT_P): Use vect_unused_in_scope.
24526         (vect_verbosity_level): Remove declaration.
24527         (vect_analyze_operations): Likewise.
24528         (vect_analyze_stmt): Declare.
24529         * tree-vect-loop.c (vect_determine_vectorization_factor): Use
24530         REPORT_UNVECTORIZED_LOCATIONS.
24531         (vect_get_loop_niters): Fix indentation.
24532         (vect_analyze_loop_form): Use REPORT_UNVECTORIZED_LOCATIONS.
24533         (vect_analyze_loop_operations): New function.
24534         (vect_analyze_loop): Call vect_analyze_loop_operations instead of
24535         vect_analyze_operations.
24536         (vect_is_simple_reduction): Use new names.
24537         (vectorizable_live_operation, vect_transform_loop): Likewise.
24538         * tree-vect-data-refs.c (vect_check_interleaving): Add a return value
24539         to specify whether the data references can be a part of interleaving
24540         chain.
24541         (vect_analyze_data_ref_dependence): Use new names.
24542         (vect_analyze_data_refs_alignment, vect_analyze_data_refs): Likewise.
24543         (vect_create_addr_base_for_vector_ref): Remove redundant code.
24544         * tree-vect-patterns.c (widened_name_p): Use new names.
24545         (vect_recog_dot_prod_pattern): Likewise.
24546         * tree-vect-stmts.c (vect_stmt_relevant_p): Use new names.
24547         (process_use, vect_mark_stmts_to_be_vectorized,
24548         vect_model_simple_cost, vect_model_store_cost,
24549         vect_get_vec_def_for_operand, vect_get_vec_def_for_stmt_copy,
24550         vectorizable_call, vectorizable_conversion, vectorizable_assignment,
24551         vectorizable_operation, vectorizable_type_demotion,
24552         vectorizable_type_promotion, vectorizable_store, vectorizable_load,
24553         vectorizable_condition): Likewise.
24554         (vect_analyze_operations): Split into vect_analyze_loop_operations
24555         and ...
24556         (vect_analyze_stmt): ... new function.
24557         (new_stmt_vec_info): Use new names.
24558         (vect_is_simple_use): Use new names and fix comment.
24559         * tree-vect-slp.c (vect_get_and_check_slp_defs): Use new names.
24560         (vect_build_slp_tree, vect_analyze_slp, vect_schedule_slp): Likewise.
24561
24562 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
24563
24564         PR target/39911
24565         * config/i386/i386.c (print_operand) ['Z']: Handle floating point
24566         and integer modes for x87 operands.  Do not ICE for unsupported size,
24567         generate error instead.  Generate error for unsupported operand types.
24568         ['z']: Do not handle HImode memory operands specially.  Warning
24569         for floating-point operands.  Fallthru to 'Z' for unsupported operand
24570         types.  Do not ICE for unsupported size, generate error instead.
24571         (output_387_binary_op): Use %Z to output operands.
24572         (output_fp_compare): Ditto.
24573         (output_387_reg_move): Ditto.
24574
24575 2009-04-28  Ben Elliston  <bje@au.ibm.com>
24576
24577         PR c++/35652
24578         Revert:
24579
24580         2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24581
24582         * builtins.c (c_strlen): Do not warn here.
24583         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
24584         * c-common.c (pointer_int_sum): Take an explicit location.
24585         Warn about offsets out of bounds.
24586         * c-common.h (pointer_int_sum): Adjust declaration.
24587
24588 2009-04-27  Ian Lance Taylor  <iant@google.com>
24589
24590         * collect2.c (is_ctor_dtor): Change type of ret field in struct
24591         names to symkind.
24592         * dce.c (run_fast_df_dce): Change type of old_flags to int.
24593         * df-core.c (df_set_flags): Change return type to int.  Change
24594         type of old_flags to int.
24595         (df_clear_flags): Likewise.
24596         * df-scan.c (df_def_record_1): Change 0 to VOIDmode.
24597         (df_get_conditional_uses): Likewise.
24598         * df.h (df_set_flags, df_clear_flags): Update declarations.
24599         * dwarf2out.c (struct indirect_string_node): Change type of form
24600         field to enum dwarf_form.
24601         (AT_string_form): Change return type to enum dwarf_form.
24602         * fixed-value.c (fixed_compare): Add cast to enum type.
24603         * fwprop.c (update_df): Change 0 to VOIDmode.
24604         * gensupport.c: Change 0 to UNKNOWN.
24605         * gimple.h (gimple_cond_code): Add cast to enum type.
24606         * haifa-sched.c (reemit_notes): Add cast to enum type.
24607         * hooks.c (hook_int_void_no_regs): Remove function.
24608         * hooks.h (hook_int_void_no_regs): Remove declaration.
24609         * optabs.c (expand_widen_pattern_expr): Change 0 to VOIDmode.
24610         * predict.c (combine_predictions_for_insn): Add casts to enum type.
24611         * real.c (real_arithmetic): Add cast to enum type.
24612         (real_compare): Likewise.
24613         * target.h (struct gcc_target): Change return type of
24614         branch_target_register_class to enum reg_class.
24615         * target-def.h (TARGET_BRANCH_TARGET_REGISTER_CLASS): Define as
24616         default_branch_target_register_class.
24617         * targhooks.c (default_branch_target_register_class): New function.
24618         * targhooks.h (default_branch_target_register_class): Declare.
24619         * tree-data-ref.c (print_direction_vector): Add cast to enum type.
24620         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Remove
24621         cast to int.
24622         * tree-vect-loop.c (vect_create_epilog_for_reduction): Change 0 to
24623         ERROR_MARK.
24624         * tree-vect-slp.c (vect_build_slp_tree): Change 0 to
24625         vect_uninitialized_def.  Change 0 to ERROR_MARK.
24626         * tree-vect-stmts.c (supportable_widening_operation): Don't
24627         initialize icode1 and icode2.
24628         * tree-vectorizer.h (enum vect_def_type): Add vect_uninitialized_def.
24629         * config/sol2-c.c (cmn_err_length_specs): Change 0 to FMT_LEN_none
24630         and to STD_C89.
24631         (cmn_err_flag_specs): Change 0 to STD_C89.
24632         (cmn_err_char_table): Likewise.
24633         * config/arm/arm.c (get_arm_condition_code): Change type of code
24634         to enum arm_cond_code.
24635         (IWMMXT_BUILTIN): Change 0 to UNKNOWN.
24636         (IWMMXT_BUILTIN2): Likewise.
24637         (neon_builtin_type_bits): Don't define typedef.
24638         (neon_builtin_datum): Change type of bits field to int.
24639         (arm_expand_neon_args): Add cast to enum type.
24640         * config/ia64/ia64.c (tls_symbolic_operand_type): Change 0 to
24641         TLS_MODEL_NONE.
24642         * config/i386/i386.c (bdesc_multi_arg): Change 0 to UNKNOWN.  Add
24643         casts to enum type.
24644         * config/mips/mips.c (LOONGSON_BUILTIN_ALIAS): Change 0 to
24645         MIPS_FP_COND_f.
24646         * config/mips/mips.md (jal_macro): Return enum constant.
24647         (single_insn): Likewise.
24648         * config/rs6000/rs6000.c (bdesc_altivec_preds): Change 0 to
24649         CODE_FOR_nothing.
24650         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
24651         casts to enum type.
24652         * config/s390/s390.c (s390_tune_flags): Change type to int.
24653         (s390_arch_flags): Likewise.
24654         (s390_handle_arch_option): Change flags field of struct pta to int.
24655         * config/s390/s390.h (s390_tune_flags): Update declaration.
24656         (s390_arch_flags): Likewise.
24657         * config/sh/sh.c (prepare_move_operands): Compare
24658         tls_symbolic_operand result with enum constant.
24659         (sh_reorg): Change PUT_MODE to PUT_REG_NOTE_KIND.
24660         (sh_expand_prologue): Add cast to enum type.
24661         (sh_expand_epilogue): Likewise.
24662         (tls_symbolic_operand): Change return type to enum tls_model.
24663         (fpscr_set_from_mem): Add cast to enum type.
24664         (legitimize_pic_address): Compare tls_symbolic_operand result with
24665         enum constant.
24666         (sh_target_reg_class): Change return type to enum reg_class.
24667         * config/sh/sh.h (OVERRIDE_OPTIONS): Change CPU_xxx to
24668         PROCESSOR_xxx.
24669         * config/sh/sh-protos.h (tls_symbolic_operand): Update declaration.
24670         * config/sparc/sparc.c (sparc_override_options): Add cast to enum type.
24671         * config/sparc/sparc.md (empty_delay_slot): Return enum constant.
24672         (pic, calls_alloca, calls_eh_return, leaf_function): Likewise.
24673         (delayed_branch, tls_call_delay): Likewise.
24674         (eligible_for_sibcall_delay): Likewise.
24675         (eligible_for_return_delay): Likewise.
24676         * config/spu/spu.c (expand_builtin_args): Add cast to enum type.
24677         (spu_expand_builtin_1): Likewise.
24678
24679         * c-typeck.c (convert_for_assignment): Issue -Wc++-compat warnings
24680         for all types of conversions.
24681         (output_init_element): Issue -Wc++-compat warning if needed when
24682         initializing a bitfield with enum type.
24683         * c-parser.c (c_parser_expression): Set original_type to
24684         original_type of right hand operand of comma operator.
24685
24686 2009-04-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
24687
24688         * doc/c-tree.texi (Types, Functions, Expression trees): Fix
24689         grammar nits.
24690         * doc/cfg.texi (Maintaining the CFG, Liveness information): Likewise.
24691         * doc/cpp.texi (Standard Predefined Macros)
24692         (Implementation-defined behavior): Likewise.
24693         * doc/extend.texi (Function Attributes, Type Attributes): Likewise.
24694         * doc/gimple.texi (GIMPLE Exception Handling)
24695         (@code{GIMPLE_ASSIGN}): Likewise.
24696         * doc/install.texi (Prerequisites, Configuration, Specific): Likewise.
24697         * doc/invoke.texi (Warning Options, Optimize Options)
24698         (AVR Options, Darwin Options): Likewise.
24699         (Optimize Options): Reformulate -fwhole-program description.
24700         * doc/loop.texi (Lambda): Likewise.
24701         * doc/md.texi (Output Template, Define Constraints)
24702         (Standard Names, Insn Splitting): Likewise.
24703         * doc/options.texi (Option properties): Likewise.
24704         * doc/passes.texi (Tree-SSA passes): Likewise.
24705         * doc/rtl.texi (Side Effects, Assembler, Insns): Likewise.
24706         * doc/tm.texi (Register Classes, Old Constraints, Scalar Return)
24707         (File Names and DBX): Likewise.
24708         * doc/trouble.texi (Incompatibilities): Likewise.
24709
24710 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
24711
24712         * spu.c (spu_machine_dependent_reorg): Make sure branch label on hint
24713         instruction is correct.
24714
24715 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
24716
24717         Allow non-constant arguments to conversion intrinsics.
24718         * spu-protos.h (exp2_immediate_p, spu_gen_exp2): Declare.
24719         * predicates.md (spu_inv_exp2_operand, spu_exp2_operand): New.
24720         * spu.c (print_operand): Handle 'v' and 'w'.
24721         (exp2_immediate_p, spu_gen_exp2): Define.
24722         * spu-builtins.def (spu_convts, spu_convtu, spu_convtf_0,
24723         spu_convtf_1): Update parameter descriptions.
24724         * spu-builtins.md (spu_csflt, spu_cuflt, spu_cflts, spu_cfltu): Update.
24725         * constraints.md ('v', 'w'): New.
24726         * spu.md (UNSPEC_CSFLT, UNSPEC_CFLTS, UNSPEC_CUFLT, UNSPEC_CFLTU):
24727         Remove.
24728         (i2f, I2F): New define_mode_attr.
24729         (floatsisf2, floatv4siv4sf2, fix_truncsfsi2, fix_truncv4sfv4si2,
24730         floatunssisf2, floatunsv4siv4sf2, fixuns_truncsfsi2,
24731         fixuns_truncv4sfv4si2):  Update to use mode attribute.
24732         (float<mode><i2f>2_mul, float<mode><i2f>2_div,
24733         fix_trunc<mode><f2i>2_mul, floatuns<mode><i2f>2_mul,
24734         floatuns<mode><i2f>2_div, fixuns_trunc<mode><f2i>2_mul): New
24735         patterns for combine.
24736
24737 2009-04-27  Steven Bosscher  <steven@gcc.gnu.org>
24738
24739         * dbgcnt.def (cprop1, cprop2, gcse, jump_bypass): Remove
24740         (cprop, hoist, pre, store_motion): New debug counters.
24741         * tree-pass.h (pass_tracer): Move to list of gimple passes, it
24742         is not an RTL pass anymore.
24743         (pass_profiling): Remove extern decl for pass removed in 2005.
24744         (pass_gcse, pass_jump_bypass): Remove.
24745         * final.c (rest_of_clean_state): Set flag_rerun_cse_after_global_opts
24746         to 0 for clean state.
24747         * toplev.h (flag_rerun_cse_after_global_opts): Add extern declaration.
24748         * cse.c (gate_handle_cse_after_global_opts,
24749         rest_of_handle_cse_after_global_opts): New functions.
24750         (pass_cse_after_global_opts): New pass, does local CSE.
24751         * timevar.def (TV_GCSE, TV_CPROP1, TV_CPROP2, TV_BYPASS): Remove.
24752         (TV_CPROP): New timevar.
24753         * gcse.c (flag_rerun_cse_after_global_opts): New global variable.
24754         (run_jump_opt_after_gcse, max_gcse_regno): Remove global vars.
24755         (gcse_main, recompute_all_luids): Remove.
24756         (compute_hash_table_work): Call max_reg_num instead of reading
24757         max_gcse_regno.
24758         (cprop_jump): Don't set run_jump_opt_after_gcse.
24759         (constprop_register): Always allow to alter jumps.
24760         (cprop_insn): Likewise.
24761         (do_local_cprop): Likewise.
24762         (local_cprop_pass): Likewise.  Return non-zero if something changed.
24763         (cprop): Remove function, fold interesting bits into one_cprop_pass.
24764         (find_implicit_sets): Add note about missed optimization opportunity.
24765         (one_cprop_pass): Rewrite to be "the" CPROP pass, called from the
24766         pass_rtl_cprop execute function.
24767         Don't bother tracking the pass number, each pass gets its own dumpfile
24768         now anyway.
24769         Always allow to alter jumpsand bypass jumps.
24770         (bypass_block): Don't ignore regno >= max_gcse_regno, find_bypass_set
24771         will just find no suitable set.
24772         (pre_edge_insert): Fix dumping, this function is for PRE only.
24773         (one_pre_gcse_pass): Rewrite to be "the" PRE pass, called from the
24774         pass_rtl_pre execute function.
24775         (hoist_code): Return non-zero if something changed.  Keep track of
24776         substitutions and insertions for statistics gathering similar to PRE.
24777         (one_code_hoisting_pass): Rewrite to be "the" code hoisting pass,
24778         called from the pass_rtl_hoist execute function.  Show pass statistics.
24779         (compute_store_table): Use max_reg_num directly instead of using the
24780         formerly global max_gcse_regno.
24781         (build_store_vectors): Likewise.
24782         (replace_store_insn): Fix dumping.
24783         (store_motion): Rename to ...
24784         (one_store_motion_pass): ... this.  Rewrite to be "the" STORE_MOTION
24785         pass, called from the pass_rtl_store_motion execute function.  Keep
24786         track of substitutions and insertions for statistics gathering similar
24787         to PRE.
24788         (bypass_jumps): Remove, fold interesting bits into ...
24789         (one_cprop_pass): ... this.  Rewrite to be "the" CPROP pass, called
24790         from the pass_rtl_cprop execute function.
24791         (gate_handle_jump_bypass, rest_of_handle_jump_bypass,
24792         pass_jump_bypass): Remove.
24793         (gate_handle_gcse, rest_of_handle_gcse): Remove.
24794         (gate_rtl_cprop, execute_rtl_cprop, pass_rtl_cprop): New.
24795         (gate_rtl_pre, execute_rtl_pre, pass_rtl_pre): New.
24796         (gate_rtl_hoist, execute_rtl_hoist, pass_rtl_hoist): New.
24797         (gate_rtl_store_motion, execute_rtl_store_motion,
24798         pass_rtl_store_motion): New.
24799         * common.opt: Remove flag_cse_skip_blocks, adjust documentation to
24800         make it clear that -fcse-skip-blocks is a no-op for backward compat.
24801         * passes.c (init_optimization_passes): Remove pass_gcse and
24802         pass_jump_bypass.  Schedule cprop, pre, hoist, cprop, store_motion,
24803         and cse_after_global_opts in place of pass_gcse.  Schedule cprop
24804         instead of pass_jump_bypass.
24805
24806 2009-04-27  Richard Guenther  <rguenther@suse.de>
24807
24808         PR middle-end/39928
24809         * gimplify.c (gimplify_expr): If we are required to create
24810         a temporary make sure it ends up as register.
24811
24812 2009-04-27  H.J. Lu  <hongjiu.lu@intel.com>
24813
24814         PR target/39903
24815         * config/i386/i386.c (construct_container): Don't call
24816         gen_reg_or_parallel with BLKmode on X86_64_SSE_CLASS,
24817         X86_64_SSESF_CLASS and X86_64_SSEDF_CLASS.
24818
24819 2009-04-27  Michael Matz  <matz@suse.de>
24820
24821         * ssaexpand.h (struct ssaexpand): Member 'values' is a bitmap.
24822         (get_gimple_for_ssa_name): Adjust, lookup using SSA_NAME_DEF_STMT.
24823         * tree-ssa-live.h (find_replaceable_exprs): Return a bitmap.
24824         (dump_replaceable_exprs): Take a bitmap.
24825         * cfgexpand.c (gimple_cond_pred_to_tree): Handle bitmap instead of
24826         array.
24827         (expand_gimple_basic_block): Likewise.
24828         * tree-ssa-ter.c (struct temp_expr_table_d): Make
24829         replaceable_expressions member a bitmap.
24830         (free_temp_expr_table): Pass back and deal with bitmap, not gimple*.
24831         (mark_replaceable): Likewise.
24832         (find_replaceable_in_bb, dump_replaceable_exprs): Likewise.
24833         * tree-outof-ssa.c (remove_ssa_form): 'values' is a bitmap.
24834
24835 2009-04-27  Richard Guenther  <rguenther@suse.de>
24836
24837         * tree-cfg.c (remove_useless_stmts): Verify stmts afterwards.
24838         (verify_stmts): Dispatch to gimple/type verification code.
24839         * tree-inline.c (remap_gimple_op_r): Work around C++ FE
24840         issue with call argument types.
24841
24842 2009-04-27  Michael Matz  <matz@suse.de>
24843
24844         * tree-into-ssa.c (regs_to_rename, mem_syms_to_rename): Remove.
24845         (init_update_ssa, delete_update_ssa, update_ssa): Remove references
24846         to above.
24847
24848 2009-04-27  Richard Sandiford  <rdsandiford@googlemail.com>
24849             Eric Botcazou  <ebotcazou@adacore.com>
24850
24851         * resource.c (find_basic_block): Use BLOCK_FOR_INSN to look up
24852         a label's basic block.
24853         (mark_target_live_regs): Tidy and rework obsolete comments.
24854         Change back DF problem to LIVE.  If a label starts a basic block,
24855         assume that all registers that used to be live then still are.
24856         (init_resource_info): If a label starts a basic block, set its
24857         BLOCK_FOR_INSN accordingly.
24858         (fini_resource_info): Undo the setting of BLOCK_FOR_INSN.
24859
24860 2009-04-27  Richard Guenther  <rguenther@suse.de>
24861
24862         * tree-flow-inline.h (function_ann): Remove.
24863         (get_function_ann): Likewise.
24864         * tree-dfa.c (create_function_ann): Remove.
24865         * tree-flow.h (struct static_var_ann_d): Remove.
24866         (struct function_ann_d): Likewise.
24867         (union tree_ann_d): Remove fdecl member.
24868         (function_ann_t): Remove.
24869         (function_ann, get_function_ann, create_function_ann): Remove
24870         declarations.
24871
24872 2009-04-27  Uros Bizjak  <ubizjak@gmail.com>
24873
24874         * config/alpha/alpha.c (code_for_builtin): Declare as enum insn_code.
24875
24876 2009-04-27  Jan Hubicka  <jh@suse.cz>
24877
24878         * ipa-pure-const.c (struct funct_state_d): New fields
24879         state_previously_known, looping_previously_known; remove
24880         state_set_in_source.
24881         (analyze_function): Use new fields.
24882         (propagate): Avoid assumption that state_set_in_source imply
24883         nonlooping.
24884
24885         * tree-ssa-loop-niter.c (finite_loop_p): New function.
24886         * tree-ssa-loop-ivcanon.c (empty_loop_p): Use it.
24887         * cfgloop.h (finite_loop_p): Declare.
24888
24889 2009-04-26  Michael Matz  <matz@suse.de>
24890
24891         * tree-flow.h (tree_ann_common_d): Remove aux and value_handle members.
24892
24893 2009-04-26  Michael Matz  <matz@suse.de>
24894
24895         * tree-pass.h (pass_del_ssa, pass_mark_used_blocks,
24896         pass_free_cfg_annotations, pass_free_datastructures): Remove decls.
24897         * gimple-low.c (mark_blocks_with_used_vars, mark_used_blocks,
24898         pass_mark_used_blocks): Remove.
24899         * tree-optimize.c (pass_free_datastructures,
24900         execute_free_cfg_annotations, pass_free_cfg_annotations): Remove.
24901         * passes.c (init_optimization_passes): Don't call
24902         pass_mark_used_blocks, remove dead code.
24903
24904 2009-04-26  H.J. Lu  <hongjiu.lu@intel.com>
24905
24906         * tree-outof-ssa.c (rewrite_trees): Add ATTRIBUTE_UNUSED.
24907         * tree-ssa-live.h (register_ssa_partition): Likewise.
24908
24909 2009-04-26  Michael Matz  <matz@suse.de>
24910
24911         Expand from SSA.
24912         * builtins.c (fold_builtin_next_arg): Handle SSA names.
24913         * tree-ssa-copyrename.c (rename_ssa_copies): Use ssa_name() directly.
24914         * tree-ssa-coalesce.c (create_outofssa_var_map): Mark only useful
24915         SSA names.
24916         (compare_pairs): Swap cost comparison.
24917         (coalesce_ssa_name): Don't use change_partition_var.
24918         * tree-nrv.c (struct nrv_data): Add modified member.
24919         (finalize_nrv_r): Set it.
24920         (tree_nrv): Use it to update statements.
24921         (pass_nrv): Require PROP_ssa.
24922         * tree-mudflap.c (mf_decl_cache_locals,
24923         mf_build_check_statement_for): Use make_rename_temp.
24924         (pass_mudflap_2): Require PROP_ssa, run ssa update at finish.
24925         * alias.c (find_base_decl): Handle SSA names.
24926         * emit-rtl (set_reg_attrs_for_parm): Make non-static.
24927         (component_ref_for_mem_expr): Don't leak SSA names into RTL.
24928         * rtl.h (set_reg_attrs_for_parm): Declare.
24929         * tree-optimize.c (pass_cleanup_cfg_post_optimizing): Rename
24930         to "optimized", remove unused locals at finish.
24931         (execute_free_datastructures): Make global, call
24932         delete_tree_cfg_annotations.
24933         (execute_free_cfg_annotations): Don't call
24934         delete_tree_cfg_annotations.
24935
24936         * ssaexpand.h: New file.
24937         * expr.c (toplevel): Include ssaexpand.h.
24938         (expand_assignment): Handle SSA names the same as register variables.
24939         (expand_expr_real_1): Expand SSA names.
24940         * cfgexpand.c (toplevel): Include ssaexpand.h.
24941         (SA): New global variable.
24942         (gimple_cond_pred_to_tree): Fold TERed comparisons into predicates.
24943         (SSAVAR): New macro.
24944         (set_rtl): New helper function.
24945         (add_stack_var): Deal with SSA names, use set_rtl.
24946         (expand_one_stack_var_at): Likewise.
24947         (expand_one_stack_var): Deal with SSA names.
24948         (stack_var_size_cmp): Use code (SSA_NAME / DECL) as tie breaker
24949         before unique numbers.
24950         (expand_stack_vars): Use set_rtl.
24951         (expand_one_var): Accept SSA names, add asserts for them, feed them
24952         to above subroutines.
24953         (expand_used_vars): Expand all partitions (without default defs),
24954         then only the local decls (ignoring those expanded already).
24955         (expand_gimple_cond): Remove edges when jumpif() expands an
24956         unconditional jump.
24957         (expand_gimple_basic_block): Don't clear EDGE_EXECUTABLE here,
24958         or remove abnormal edges.  Ignore insns setting the LHS of a TERed
24959         SSA name.
24960         (gimple_expand_cfg): Call into rewrite_out_of_ssa, initialize
24961         members of SA; deal with PARM_DECL partitions here; expand
24962         all PHI nodes, free tree datastructures and SA.  Commit instructions
24963         on edges, clear EDGE_EXECUTABLE and remove abnormal edges here.
24964         (pass_expand): Require and destroy PROP_ssa, verify SSA form, flow
24965         info and statements at start, collect garbage at finish.
24966         * tree-ssa-live.h (struct _var_map): Remove partition_to_var member.
24967         (VAR_ANN_PARTITION) Remove.
24968         (change_partition_var): Don't declare.
24969         (partition_to_var): Always return SSA names.
24970         (var_to_partition): Only accept SSA names.
24971         (register_ssa_partition): Only check argument.
24972         * tree-ssa-live.c (init_var_map): Don't allocate partition_to_var
24973         member.
24974         (delete_var_map): Don't free it.
24975         (var_union): Only accept SSA names, simplify.
24976         (partition_view_init): Mark only useful SSA names as used.
24977         (partition_view_fini): Only deal with SSA names.
24978         (change_partition_var): Remove.
24979         (dump_var_map): Use ssa_name instead of partition_to_var member.
24980         * tree-ssa.c (delete_tree_ssa): Don't remove PHI nodes on RTL
24981         basic blocks.
24982         * tree-outof-ssa.c (toplevel): Include ssaexpand.h and expr.h.
24983         (struct _elim_graph): New member const_dests; nodes member vector of
24984         ints.
24985         (set_location_for_edge): New static helper.
24986         (create_temp): Remove.
24987         (insert_partition_copy_on_edge, insert_part_to_rtx_on_edge,
24988         insert_value_copy_on_edge, insert_rtx_to_part_on_edge): New functions.
24989         (new_elim_graph): Allocate const_dests member.
24990         (clean_elim_graph): Truncate const_dests member.
24991         (delete_elim_graph): Free const_dests member.
24992         (elim_graph_size): Adapt to new type of nodes member.
24993         (elim_graph_add_node): Likewise.
24994         (eliminate_name): Likewise.
24995         (eliminate_build): Don't take basic block argument, deal only with
24996         partition numbers, not variables.
24997         (get_temp_reg): New static helper.
24998         (elim_create): Use it, deal with RTL temporaries instead of trees.
24999         (eliminate_phi): Adjust all calls to new signature.
25000         (assign_vars, replace_use_variable, replace_def_variable): Remove.
25001         (rewrite_trees): Only do checking.
25002         (edge_leader, stmt_list, leader_has_match, leader_match): Remove.
25003         (same_stmt_list_p, identical_copies_p, identical_stmt_lists_p,
25004         init_analyze_edges_for_bb, fini_analyze_edges_for_bb,
25005         contains_tree_r, MAX_STMTS_IN_LATCH,
25006         process_single_block_loop_latch, analyze_edges_for_bb,
25007         perform_edge_inserts): Remove.
25008         (expand_phi_nodes): New global function.
25009         (remove_ssa_form): Take ssaexpand parameter.  Don't call removed
25010         functions, initialize new parameter, remember partitions having a
25011         default def.
25012         (finish_out_of_ssa): New global function.
25013         (rewrite_out_of_ssa): Make global.  Adjust call to remove_ssa_form,
25014         don't reset in_ssa_p here, don't disable TER when mudflap.
25015         (pass_del_ssa): Remove.
25016         * tree-flow.h (struct var_ann_d): Remove out_of_ssa_tag and
25017         partition members.
25018         (execute_free_datastructures): Declare.
25019         * Makefile.in (SSAEXPAND_H): New variable.
25020         (tree-outof-ssa.o, expr.o, cfgexpand.o): Depend on SSAEXPAND_H.
25021         * basic-block.h (commit_one_edge_insertion): Declare.
25022         * passes.c (init_optimization_passes): Move pass_nrv and
25023         pass_mudflap2 before pass_cleanup_cfg_post_optimizing, remove
25024         pass_del_ssa, pass_free_datastructures, pass_free_cfg_annotations.
25025         * cfgrtl.c (commit_one_edge_insertion): Make global, don't declare.
25026         (redirect_branch_edge): Deal with super block when expanding, split
25027         out jump patching itself into ...
25028         (patch_jump_insn): ... here, new static helper.
25029
25030 2009-04-26  Michael Matz  <matz@suse.de>
25031
25032         * tree-ssa-copyrename.c (rename_ssa_copies): Don't iterate
25033         beyond num_ssa_names.
25034         * tree-ssa-ter.c (free_temp_expr_table): Likewise.
25035         * tree-ssa-coalesce.c (create_outofssa_var_map): Likewise.
25036
25037 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
25038
25039         PR inline-asm/39543
25040         * fwprop.c (forward_propagate_asm): New function.
25041         (forward_propagate_and_simplify): Propagate also into __asm, if it
25042         doesn't increase the number of referenced registers.
25043
25044         PR c/39889
25045         * stmt.c (warn_if_unused_value): Look through NON_LVALUE_EXPR.
25046
25047 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
25048
25049         * tree-nested.c (get_nonlocal_vla_type): If not optimizing, call
25050         note_nonlocal_vla_type for nonlocal VLAs.
25051         (note_nonlocal_vla_type, note_nonlocal_block_vlas,
25052         contains_remapped_vars, remap_vla_decls): New functions.
25053         (convert_nonlocal_reference_stmt): If not optimizing, call
25054         note_nonlocal_block_vlas on GIMPLE_BIND block vars.
25055         (nesting_copy_decl): Return {VAR,PARM,RESULT}_DECL unmodified
25056         if it wasn't found in var_map.
25057         (finalize_nesting_tree_1): Call remap_vla_decls.  If outermost
25058         GIMPLE_BIND doesn't have gimple_bind_block, chain debug_var_chain
25059         to BLOCK_VARS (DECL_INITIAL (root->context)) instead of calling
25060         declare_vars.
25061         * gimplify.c (nonlocal_vlas): New variable.
25062         (gimplify_var_or_parm_decl): Add debug VAR_DECLs for non-local
25063         referenced VLAs.
25064         (gimplify_body): Create and destroy nonlocal_vlas.
25065
25066         * dwarf2out.c (loc_descr_plus_const): New function.
25067         (build_cfa_aligned_loc, tls_mem_loc_descriptor,
25068         mem_loc_descriptor, loc_descriptor_from_tree_1,
25069         descr_info_loc, gen_variable_die): Use it.
25070
25071         * tree.h (DECL_BY_REFERENCE): Note that it is also valid for
25072         !TREE_STATIC VAR_DECLs.
25073         * dwarf2out.c (loc_by_reference, gen_decl_die): Handle
25074         DECL_BY_REFERENCE on !TREE_STATIC VAR_DECLs.
25075         (gen_variable_die): Likewise.  Don't look at TREE_PRIVATE if
25076         DECL_BY_REFERENCE is valid.
25077         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Don't look at TREE_PRIVATE
25078         for PARM_DECLs, RESULT_DECLs or !TREE_STATIC VAR_DECLs.
25079         * tree-nested.c (get_nonlocal_debug_decl, get_local_debug_decl):
25080         Copy DECL_BY_REFERENCE.
25081         (struct nesting_copy_body_data): New type.
25082         (nesting_copy_decl): New function.
25083         (finalize_nesting_tree_1): Remap types of debug_var_chain variables,
25084         if they have variable length.
25085
25086 2009-04-26  Michael Matz  <matz@suse.de>
25087
25088         * tree-sra.c (sra_build_assignment): Don't use into_ssa mode,
25089         mark new temporaries for renaming.
25090
25091 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
25092
25093         PR c/39581
25094         * c-decl.c (global_bindings_p): Return negative value.
25095         (c_variable_size): New.  Based on variable_size from
25096         stor-layout.c.
25097         (grokdeclarator): Call c_variable_size not variable_size.
25098
25099 2009-04-26  Uros Bizjak  <ubizjak@gmail.com>
25100
25101         * config/i386/i386.c (print_operand) ['z']: Fix typo.
25102
25103 2009-04-26  Kai Tietz  <kai.tietz@onevision.com>
25104
25105         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR):
25106         Redefine it to just use mingw/include.
25107         (ASM_SPEC): Rules for -m32 and -m64.
25108         (LINK_SPEC): Use Likewise.
25109         (SPEC_32): New define.
25110         (SPEC_64): Likewise.
25111         (SUB_LINK_SPEC): Likewise.
25112         (MULTILIB_DEFAULTS): New define.
25113         * config/i386/t-mingw-w64 (MULTILIB_OPTIONS):
25114         Add multilib options.
25115         (MULTILIB_DIRNAMES): Likewise.
25116         (MULTILIB_OSDIRNAMES): Likewise.
25117         (LIBGCC): Likewise.
25118         (INSTALL_LIBGCC): Likewise.
25119
25120 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
25121
25122         PR c/39556
25123         * c-tree.h (enum c_inline_static_type): New.
25124         (record_inline_static): Declare.
25125         * c-decl.c (struct c_inline_static, c_inline_statics,
25126         record_inline_static, check_inline_statics): New.
25127         (pop_file_scope): Call check_inline_statics.
25128         (start_decl): Call record_inline_static instead of pedwarning
25129         directly for static in inline function.
25130         * c-typeck.c (build_external_ref): Call record_inline_static
25131         instead of pedwarning directly for static referenced in inline
25132         function.
25133
25134 2009-04-26  Steven Bosscher  <steven@gcc.gnu.org>
25135
25136         * df-scan.c (df_insn_rescan): Salvage insn's LUID if the insn is
25137         not new but only being rescanned.
25138         * gcse.c (uid_cuid, max_uid, INSN_CUID, max_cuid, struct reg_set,
25139         reg_set_table, REG_SET_TABLE_SLOP, reg_set_in_block,
25140         alloc_reg_set_mem, free_reg_set_mem, record_one_set,
25141         record_set_info, compute_set, grealloc): Remove.
25142         (recompute_all_luids): New function.
25143         (gcse_main): Don't compute sets, and don't do related memory
25144         allocations/free-ing.  If something changed before the end of the
25145         pass, update LUIDs using recompute_all_luids.
25146         (alloc_gcse_mem): Don't compute LUIDs.  Don't allocate reg_set memory.
25147         (free_gcse_mem): Don't free it either.
25148         (oprs_unchanged_p, load_killed_in_block, record_last_reg_set_info):
25149         Use the df insn LUIDs.
25150         (load_killed_in_block): Likewise.
25151         (compute_hash_table_work): Don't compute reg_set_in_block.
25152         (compute_transp): Use DF_REG_DEF_CHAINs.
25153         (local_cprop_pass): Don't use compute_sets and related functions.
25154         (one_cprop_pass, pre_gcse, one_pre_gcse_pass, one_code_hoisting_pass):
25155         Use get_max_uid() instead of max_cuid.
25156         (insert_insn_end_basic_block, pre_insert_copy_insn,
25157         update_ld_motion_stores): Don't try to
25158         keep reg_set tables up to date.
25159         (pre_insert_copies): Use df insn LUIDs.
25160         (sbitmap pre_redundant_insns): Replace with uses of INSN_DELETED_P.
25161         (reg_set_info): Don't use extra bitmap argument.
25162         (compute_store_table): Don't compute reg_set_in_block.  Use DF scan
25163         information to compute regs_set_in_block.
25164         (free_store_memory, store_motion): Don't nullify reg_set_in_block.
25165         (bypass_jumps): Don't use compute_sets and friends.
25166
25167 2009-04-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
25168
25169         PR testsuite/39710
25170         * opts.c (undocumented_msg): Do not leave blank even with
25171         ENABLE_CHECKING.
25172
25173 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
25174
25175         * c-decl.c (build_enumerator): Allow values folding to integer
25176         constants but not integer constant expressions with a pedwarn if
25177         pedantic.
25178
25179 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
25180
25181         PR c/39582
25182         * c-typeck.c (c_expr_sizeof_type): Create a C_MAYBE_CONST_EXPR
25183         with non-null C_MAYBE_CONST_EXPR_PRE if size of a variable-length
25184         type is an integer constant.
25185
25186 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
25187
25188         PR target/39897
25189         * config/i386/i386.c (print_operand) ['z']: Revert handling of
25190         HImode operands.
25191
25192 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
25193
25194         PR c/39564
25195         * c-decl.c (grokdeclarator): Diagnose declarations of functions
25196         with variably modified return type and no storage class
25197         specifiers, except for the case of nested functions.  Distinguish
25198         extern declarations of functions with variably modified return
25199         types from those of objects with variably modified types.
25200
25201 2009-04-25  Jan Hubicka  <jh@suse.cz>
25202
25203         * tree.c (list_equal_p): New function.
25204         * tree.h (list_equal_p): Declare.
25205         * coretypes.h (edge_def, edge, const_edge, basic_block_def
25206         basic_block_def, basic_block, const_basic_block): New.
25207         * tree-eh.c (make_eh_edge): EH edges are not abnormal.
25208         (redirect_eh_edge): New function.
25209         (make_eh_edge_update_phi): EH edges are not abnormal.
25210         * except.c: Include tree-flow.h.
25211         (list_match): New function.
25212         (eh_region_replaceable_by_p): New function.
25213         (replace_region): New function.
25214         (hash_type_list): New function.
25215         (hash_eh_region): New function.
25216         (eh_regions_equal_p): New function.
25217         (merge_peers): New function.
25218         (remove_unreachable_regions): Verify EH tree when checking;
25219         merge peers.
25220         (copy_eh_region_1): New function.
25221         (copy_eh_region): New function.
25222         (push_reachable_handler): New function.
25223         (build_post_landing_pads, dw2_build_landing_pads): Be ready for
25224         regions without label but with live RESX.
25225         * except.h (redirect_eh_edge_to_label): New.
25226         * tree-flow.h (redirect_eh_edge): New.
25227         * coretypes.h (edge_def, edge, const_edge, basic_block_def
25228         basic_block_def, basic_block, const_basic_block): Remove.
25229         * Makefile.in (except.o): Add dependency on tree-flow.h
25230         * tree-cfg.c (gimple_redirect_edge_and_branch): Handle EH edges.
25231         * basic-block.h (edge, const_edge, basic_block, const_basic_block):
25232         Remove.
25233
25234 2009-04-25  Eric Botcazou  <ebotcazou@adacore.com>
25235
25236         PR bootstrap/39645
25237         * config/sparc/sparc.c (sparc_gimplify_va_arg): Set TREE_ADDRESSABLE
25238         on the destination of memcpy.
25239
25240 2009-04-25  Paolo Bonzini  <bonzini@gnu.org>
25241
25242         * doc/tm.texi (REGNO_OK_FOR_BASE_P, REGNO_MODE_OK_FOR_BASE_P,
25243         REGNO_MODE_OK_FOR_REG_BASE_P, REGNO_MODE_CODE_OK_FOR_BASE_P,
25244         REGNO_OK_FOR_INDEX_P): Mention strict/nonstrict difference.
25245
25246 2009-04-25  Jan Hubicka  <jh@suse.cz>
25247
25248         * tree-eh.c (tree_remove_unreachable_handlers): Handle shared labels.
25249         (tree_empty_eh_handler_p): Allow non-EH predecestors; allow region
25250         to be reached by different label than left.
25251         (update_eh_edges): Update comment; remove edge_to_remove if possible
25252         and return true if suceeded.
25253         (cleanup_empty_eh): Accept sharing map; handle shared regions.
25254         (cleanup_eh): Compute sharing map.
25255         * except.c (remove_eh_handler_and_replace): Add argument if we should
25256         update regions.
25257         (remove_unreachable_regions): Update for label sharing.
25258         (label_to_region_map): Likewise.
25259         (get_next_region_sharing_label): New function.
25260         (remove_eh_handler_and_replace): Add update_catch_try parameter; update
25261         prev_try pointers.
25262         (remove_eh_handler): Update.
25263         (remove_eh_region_and_replace_by_outer_of): New function.
25264         * except.h (struct eh_region): Add next_region_sharing_label.
25265         (remove_eh_region_and_replace_by_outer_of,
25266         get_next_region_sharing_label): Declare.
25267         * tree-cfgcleanup.c (tree_forwarder_block_p): Simplify.
25268
25269 2009-04-25  Jan Hubicka  <jh@suse.cz>
25270
25271         * tree-cfg.c (split_critical_edges): Split also edges where we can't
25272         insert code even if they are not critical.
25273
25274 2009-04-25  Jan Hubicka  <jh@suse.cz>
25275
25276         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
25277         (gimple_can_remove_branch_p): EH edges won't remove branch by
25278         redirection.
25279         * tree-inline.c (update_ssa_across_abnormal_edges): Do handle
25280         updating of non-abnormal EH edges.
25281         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
25282         (gimple_can_remove_branch_p): EH edges are unremovable by redirection.
25283         (split_critical_edges): Split also edges where emitting code on them
25284         will lead to splitting later.
25285
25286 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
25287             H.J. Lu  <hongjiu.lu@intel.com>
25288
25289         PR target/39590
25290         * configure.ac (HAVE_AS_IX86_FILDQ): On x86 targets check whether
25291         the configured assembler supports fildq and fistpq mnemonics.
25292         (HAVE_AS_IX86_FILDS): Rename from HAVE_GAS_FILDS_FISTS.
25293         * configure: Regenerated.
25294         * config.in: Ditto.
25295
25296         * config/i386/i386.c (print_operand): Handle 'Z'.
25297         ['z']: Remove handling of special fild/fist suffixes.
25298         (output_fix_trunc): Use '%Z' to output suffix of fist{,p,tp} insn.
25299         * config/i386/i386.md (*floathi<mode>2_i387): Use '%Z' to output
25300         suffix of fild insn.
25301         (*floatsi<mode>2_vector_mixed): Ditto.
25302         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Ditto.
25303         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Ditto.
25304         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
25305         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387): Ditto.
25306         * config/i386/gas.h (GAS_MNEMONICS): Remove.
25307
25308 2009-04-25  Ben Elliston  <bje@au.ibm.com>
25309
25310         * genrecog.c (validate_pattern): Do not warn for VOIDmode CALLs as
25311         the source of a set operation.
25312
25313 2009-04-25  Anatoly Sokolov  <aesok@post.ru>
25314
25315         * target.h (struct gcc_target): Add case_values_threshold field.
25316         * target-def.h (TARGET_CASE_VALUES_THRESHOLD): New.
25317         (TARGET_INITIALIZER): Use TARGET_CASE_VALUES_THRESHOLD.
25318         * targhooks.c (default_case_values_threshold): New function.
25319         * targhooks.h (default_case_values_threshold): Declare function.
25320         * stmt.c (expand_case): Use case_values_threshold target hook.
25321         * expr.h (case_values_threshold): Remove declartation.
25322         * expr.c (case_values_threshold): Remove function.
25323         * doc/tm.texi (CASE_VALUES_THRESHOLD): Revise documentation.
25324
25325         * config/avr/avr.h (CASE_VALUES_THRESHOLD): Remove macro.
25326         * config/avr/avr.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
25327         (avr_case_values_threshold): Declare as static.
25328         * config/avr/avr-protos.h (avr_case_values_threshold): Remove.
25329
25330         * config/avr/mn10300.h (CASE_VALUES_THRESHOLD): Remove macro.
25331         * config/avr/mn10300.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
25332         (mn10300_case_values_threshold): New function.
25333
25334 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
25335
25336         * ira.c (setup_cover_and_important_classes): Add enum cast.
25337
25338 2009-04-24  Vladimir Makarov  <vmakarov@redhat.com>
25339
25340         * genpreds.c (write_enum_constraint_num): Output definition of
25341         CONSTRAINT_NUM_DEFINED_P macro.
25342         * ira.c (setup_cover_and_important_classes): Use
25343         CONSTRAINT_NUM_DEFINED_P instead of CONSTRAINT__LIMIT in #ifdef.
25344
25345 2009-04-24  DJ Delorie  <dj@redhat.com>
25346
25347         * config/sh/sh.h (LIBGCC2_DOUBLE_TYPE_SIZE): Test
25348         __SH2A_SINGLE_ONLY__ also.
25349
25350 2009-04-24  Steve Ellcey  <sje@cup.hp.com>
25351
25352         * config/ia64/ia64.md (movfs_internal): Allow flt constants.
25353         (movdf_internal): Ditto.
25354         * config/ia64/ia64.c (ia64_legitimate_constant_p): Allow
25355         SFmode and DFmode constants.
25356         (ia64_print_operand): Add 'G' format for printing
25357         floating point constants.
25358
25359 2009-04-24  Richard Guenther  <rguenther@suse.de>
25360
25361         * tree-vrp.c (extract_range_from_binary_expr): Handle overflow
25362         from unsigned additions.
25363
25364 2009-04-24  Joseph Myers  <joseph@codesourcery.com>
25365
25366         * c-typeck.c (set_init_index): Allow array designators that are
25367         not integer constant expressions with a pedwarn if pedantic.
25368
25369 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
25370
25371         * simplify-rtx.c (simplify_binary_operation_1, case AND): Result is
25372         zero if no overlap in nonzero bits between the operands.
25373
25374 2009-04-24  Ian Lance Taylor  <iant@google.com>
25375
25376         * combine.c (record_value_for_reg): Change 0 to VOIDmode, twice.
25377         (record_dead_and_set_regs): Likewise.
25378         * df.h (struct df_mw_hardreg): Change flags field to int.
25379         (struct df_base_ref): Likewise.
25380         (struct df): Change changeable_flags field to int.
25381         * df-scan.c (df_defs_record): Change clobber_flags to int.
25382         * dwarf2.h (enum dwarf_tag): Make lo_user and hi_user values enum
25383         constants rather than #define macros.
25384         (enum dwarf_attribute, enum dwarf_location_atom): Likewise.
25385         (enum dwarf_type, enum dwarf_endianity_encoding): Likewise.
25386         (enum dwarf_calling_convention): Likewise.
25387         (enum dwarf_line_number_x_ops): Likewise.
25388         (enum dwarf_call_frame_info): Likewise.
25389         (enum dwarf_source_language): Likewise.
25390         * dwarf2out.c (int_loc_descriptor): Add cast to enum type.
25391         (add_calling_convention_attribute): Likewise.
25392         * fold-const.c (fold_undefer_overflow_warnings): Add cast to enum type.
25393         (combine_comparisons): Change compcode to int.  Add cast to enum type.
25394         * genrecog.c (maybe_both_true_2): Change c to int.
25395         (write_switch): Likewise.  Add cast to enum type.
25396         * gimplify.c (gimplify_omp_for): Handle return values from
25397         gimplify_expr using MIN rather than bitwise or.
25398         (gimplify_expr): Add cast to enum type.
25399         * ipa-prop.c (update_jump_functions_after_inlining): Change
25400         IPA_BOTTOM to IPA_JF_UNKNOWN.
25401         * ira.c (setup_class_subset_and_memory_move_costs): Change mode to int.
25402         Add casts to enum type.
25403         (setup_cover_and_important_classes): Change cl to int.  Add casts
25404         to enum type.
25405         (setup_class_translate): Change cl and mode to int.
25406         (ira_init_once): Change mode to int.
25407         (free_register_move_costs): Likewise.
25408         (setup_prohibited_mode_move_regs): Add casts to enum type.
25409         * langhooks.c (add_builtin_function_common): Rework assertion that
25410         value fits bitfield.
25411         * mcf.c (add_fixup_edge): Change type parameter to edge_type.
25412         * omega.c (omega_do_elimination): Avoid math on enum types.
25413         * optabs.c (expand_vec_shift_expr): Remove casts to int.
25414         * opts.c (set_debug_level): Change 2 to enum constant.  Use new
25415         int local to handle integral_argment value.
25416         * regmove.c (try_auto_increment): Change PUT_MODE to
25417         PUT_REG_NOTE_KIND.
25418         * reload.c (push_secondary_reload): Add casts to enum type.
25419         (secondary_reload_class, find_valid_class): Likewise.
25420         * reload1.c (emit_input_reload_insns): Likewise.
25421         * rtl.h (NOTE_VAR_LOCATION_STATUS): Likewise.
25422         * sel-sched.c (init_hard_regs_data): Change cur_mode to int.
25423         * sel-sched-ir.c (hash_with_unspec_callback): Change 0 to enum
25424         constant.
25425         * tree.c (build_common_builtin_nodes): Add casts to enum type.
25426         * tree-complex.c (complex_lattice_t): Typedef to int rather than
25427         enum type.
25428         (expand_complex_libcall): Add casts to enum type.
25429         * tree-into-ssa.c (get_ssa_name_ann): Change 0 to enum constant.
25430         * tree-vect-loop.c (vect_model_reduction_cost): Compare reduc_code
25431         with ERROR_MARK, not NUM_TREE_CODES.
25432         (vect_create_epilog_for_reduction): Likewise.
25433         (vectorizable_reduction): Don't initialize epiloc_reduc_code.
25434         When not using it, set it to ERROR_MARK rather than NUM_TREE_CODES.
25435         * tree-vect-patterns.c (vect_pattern_recog_1): Change vec_mode to
25436         enum machine_mode.
25437         * tree-vect-stmts.c (new_stmt_vec_info): Change 0 to
25438         vect_unused_in_loop.  Change 0 to loop_vect.
25439         * tree-vectorizer.c (vect_set_verbosity_level): Add casts to enum type.
25440         * var-tracking.c (get_init_value): Change return type to enum
25441         var_init_status.
25442         * vec.h (DEF_VEC_FUNC_P) [iterate]: Cast 0 to type T.
25443         * config/arm/arm.c (fp_model_for_fpu): Change to array to enum
25444         arm_fp_model.
25445         (arm_override_options): Add casts to enum type.
25446         (arm_emit_tls_decoration): Likewise.
25447         * config/i386/i386.c (ix86_function_specific_restore): Add casts
25448         to enum type.
25449         * config/i386/i386-c.c (ix86_pragma_target_parse): Likewise.
25450         * config/ia64/ia64.c (ia64_expand_compare): Change magic to int.
25451         * config/rs6000/rs6000.c (rs6000_override_options): Add casts to
25452         enum type.
25453         * config/s390/s390.c (code_for_builtin_64): Change to array of
25454         enum insn_code.
25455         (code_for_builtin_31): Likewise.
25456         (s390_expand_builtin): Change code_for_builtin to enum insn_code
25457         const *.
25458         * config/sparc/sparc.c (sparc_override_options): Change value
25459         field in struct code_model to enum cmodel.  In initializer change
25460         0 to NULL and add cast to enum type.
25461
25462         * c-typeck.c (build_modify_expr): Add lhs_origtype parameter.
25463         Change all callers.  Issue a -Wc++-compat warning using
25464         lhs_origtype if necessary.
25465         (convert_for_assignment): Issue -Wc++-compat warnings about
25466         invalid conversions to enum type on assignment.
25467         * c-common.h (build_modify_expr): Update declaration.
25468
25469 2009-04-24  Nick Clifton  <nickc@redhat.com>
25470
25471         * config/iq2000/iq2000.c (function_arg): Handle TImode values.
25472         (function_arg_advance): Likewise.
25473         * config/iq2000/iq2000.md (movsi_internal2): Fix the length of the
25474         5th alternative.
25475
25476 2009-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
25477
25478         * config/s390/constraints.md ('I', 'J'): Fix condition.
25479
25480 2009-04-24  Diego Novillo  <dnovillo@google.com>
25481
25482         * gengtype-parse.c (parse_error): Add newline after message.
25483
25484 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
25485
25486         * config/i386/sse.md (avxmodesuffixs): Removed.
25487         (*avx_pinsr<avxmodesuffixs>): Renamed to ...
25488         (*avx_pinsr<ssevecsize>): This.
25489
25490 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
25491
25492         * loop-iv.c (replace_single_def_regs): Look for REG_EQUAL notes;
25493         follow chains of regs with a single definition, and allow expressions
25494         that are function_invariant_p.
25495         (simple_rhs_p): Allow expressions that are function_invariant_p.
25496
25497 2009-04-24  Paolo Bonzini  <bonzini@gnu.org>
25498
25499         PR middle-end/39867
25500         * fold-const.c (fold_cond_expr_with_comparison): When folding
25501         > and >= to MAX, make sure the MAX uses the same type as the
25502         comparison's operands.
25503
25504 2009-04-24  Nick Clifton  <nickc@redhat.com>
25505
25506         * config/frv/frv.c (frv_frame_access): Do not use reg+reg
25507         addressing for DImode accesses.
25508         (frv_print_operand_address): Handle PLUS case.
25509         * config/frv/frv.h (FIXED_REGISTERS): Mark link register as fixed.
25510
25511 2009-04-24  Jakub Jelinek  <jakub@redhat.com>
25512
25513         PR rtl-optimization/39794
25514         * alias.c (canon_true_dependence): Add x_addr argument.
25515         * rtl.h (canon_true_dependence): Adjust prototype.
25516         * cse.c (check_dependence): Adjust canon_true_dependence callers.
25517         * cselib.c (cselib_invalidate_mem): Likewise.
25518         * gcse.c (compute_transp): Likewise.
25519         * dse.c (scan_reads_nospill): Likewise.
25520         (record_store, check_mem_read_rtx): Likewise.  For non-const-or-frame
25521         addresses pass base->val_rtx as mem_addr, for const-or-frame addresses
25522         canon_base_addr of the group, plus optional offset.
25523         (struct group_info): Rename canon_base_mem to
25524         canon_base_addr.
25525         (get_group_info): Set canon_base_addr to canon_rtx of base, not
25526         canon_rtx of base_mem.
25527
25528 2009-04-23  Paolo Bonzini  <bonzini@gnu.org>
25529
25530         * config/sh/sh.c (sh_expand_prologue, sh_expand_epilogue):
25531         Use memory_address_p instead of GO_IF_LEGITIMATE_ADDRESS.
25532
25533 2009-04-23  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
25534
25535         * config/spu/spu-builtins.h: Delete file.
25536
25537         * config/spu/spu.h (enum spu_builtin_type): Move here from
25538         spu-builtins.h.
25539         (struct spu_builtin_description): Likewise.  Add GTY marker.
25540         Do not use enum spu_function_code or enum insn_code.
25541         (spu_builtins): Add extern declaration.
25542
25543         * config/spu/spu.c: Do not include "spu-builtins.h".
25544         (enum spu_function_code, enum spu_builtin_type_index,
25545         V16QI_type_node, V8HI_type_node, V4SI_type_node, V2DI_type_node,
25546         V4SF_type_node, V2DF_type_node, unsigned_V16QI_type_node,
25547         unsigned_V8HI_type_node, unsigned_V4SI_type_node,
25548         unsigned_V2DI_type_node): Move here from spu-builtins.h.
25549         (spu_builtin_types): Make static.  Add GTY marker.
25550         (spu_builtins): Add extern declaration with GTY marker.
25551         Include "gt-spu.h".
25552
25553         * config/spu/spu-c.c: Do not include "spu-builtins.h".
25554         (spu_resolve_overloaded_builtin): Do not use spu_function_code.
25555         Check programmatically whether all parameters are scalar.
25556
25557         * config/spu/t-spu-elf (spu.o, spu-c.o): Update dependencies.
25558
25559 2009-04-23  Eric Botcazou  <ebotcazou@adacore.com>
25560
25561         * gimplify.c (gimplify_modify_expr_rhs) <VAR_DECL>: Do not do a direct
25562         assignment from the constructor either if the target is volatile.
25563
25564 2009-04-23  Daniel Jacobowitz  <dan@codesourcery.com>
25565
25566         * config/arm/arm.md (insv): Do not share operands[0].
25567
25568 2009-04-23  Nathan Sidwell  <nathan@codesourcery.com>
25569
25570         * config/vxlib-tls.c (active_tls_threads): Delete.
25571         (delete_hook_installed): New.
25572         (tls_delete_hook): Don't delete the delete hook.
25573         (tls_destructor): Delete it here.
25574         (__gthread_set_specific): Adjust installing the delete hook.
25575         (tls_delete_hook): Use __gthread_enter_tsd_dtor_context and
25576         __gthread_leave_tsd_dtor_context.
25577
25578 2009-04-23  Rafael Avila de Espindola  <espindola@google.com>
25579
25580         * c-format.c (gcc_tdiag_char_table): Add support for %E.
25581
25582 2009-04-23  Uros Bizjak  <ubizjak@gmail.com>
25583
25584         * config/alpha/alpha.c (alpha_legitimize_reload_address): Add cast to
25585         enum type.
25586         (alpha_rtx_costs): Ditto.
25587         (emit_unlikely_jump): Use add_reg_note.
25588         (emit_frame_store_1): Ditto.
25589         (alpha_expand_prologue): Ditto.
25590         (alpha_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
25591         * config/alpha/alpha.c (Unicos/Mk address splitter): Use add_reg_note.
25592
25593 2009-04-23  Nick Clifton  <nickc@redhat.com>
25594
25595         * config/v850/v850.md (epilogue): Remove suppressed code.
25596         (return): Rename to return_simple and remove test of frame size.
25597         * config/v850/v850.c (expand_epilogue): Rename call to gen_return
25598         to gen_return_simple.
25599
25600 2009-04-22  Jing Yu  <jingyu@google.com>
25601
25602         PR testsuite/39781
25603         * config/arm/arm.h: Define HANDLE_PRAGMA_PACK_PUSH_POP.
25604
25605 2009-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
25606
25607         PR C/31499
25608         * c-typeck.c (process_init_element): Treat VECTOR_TYPE like ARRAY_TYPE
25609         and RECORD_TYPE/UNION_TYPE.  When outputing the actual element and the
25610         value is a VECTOR_CST, the element type is the element type of the
25611         vector.
25612
25613 2009-04-22  DJ Delorie  <dj@redhat.com>
25614
25615         * config/m32c/m32c.h: Update GTY annotations to new syntax.
25616
25617 2009-04-22  Jakub Jelinek  <jakub@redhat.com>
25618
25619         * alias.c (find_base_term): Move around LO_SUM case, so that
25620         CONST falls through into PLUS/MINUS handling.
25621
25622         PR c/39855
25623         * fold-const.c (fold_binary) <case LSHIFT_EXPR>: When optimizing
25624         into 0, use omit_one_operand.
25625
25626 2009-04-23  Ben Elliston  <bje@au.ibm.com>
25627
25628         * config/rs6000/linux-unwind.h (get_regs): Remove type
25629         puns. Change the type of `pc' to an array of unsigned ints and
25630         update all users.  Constify frame24.
25631
25632 2009-04-22  DJ Delorie  <dj@redhat.com>
25633
25634         * config/m32c/m32c.c (m32c_special_page_vector_p): Move
25635         declarations before code.
25636         (current_function_special_page_vector): Likewise.
25637         (m32c_expand_insv): Silence a warning.
25638
25639 2009-04-21  Taras Glek  <tglek@mozilla.com>
25640
25641         * alias.c: Update GTY annotations to new syntax.
25642         * basic-block.h: Likewise.
25643         * bitmap.h: Likewise.
25644         * c-common.h: Likewise.
25645         * c-decl.c: Likewise.
25646         * c-parser.c: Likewise.
25647         * c-pragma.c: Likewise.
25648         * c-tree.h: Likewise.
25649         * cfgloop.h: Likewise.
25650         * cgraph.h: Likewise.
25651         * config/alpha/alpha.c: Likewise.
25652         * config/arm/arm.h: Likewise.
25653         * config/avr/avr.h: Likewise.
25654         * config/bfin/bfin.c: Likewise.
25655         * config/cris/cris.c: Likewise.
25656         * config/darwin.c: Likewise.
25657         * config/frv/frv.c: Likewise.
25658         * config/i386/i386.c: Likewise.
25659         * config/i386/i386.h: Likewise.
25660         * config/i386/winnt.c: Likewise.
25661         * config/ia64/ia64.h: Likewise.
25662         * config/iq2000/iq2000.c: Likewise.
25663         * config/mips/mips.c: Likewise.
25664         * config/mmix/mmix.h: Likewise.
25665         * config/pa/pa.c: Likewise.
25666         * config/pa/pa.h: Likewise.
25667         * config/rs6000/rs6000.c: Likewise.
25668         * config/s390/s390.c: Likewise.
25669         * config/sparc/sparc.c: Likewise.
25670         * config/xtensa/xtensa.c: Likewise.
25671         * cselib.h: Likewise.
25672         * dbxout.c: Likewise.
25673         * dwarf2out.c: Likewise.
25674         * except.c: Likewise.
25675         * except.h: Likewise.
25676         * fixed-value.h: Likewise.
25677         * function.c: Likewise.
25678         * function.h: Likewise.
25679         * gimple.h: Likewise.
25680         * integrate.c: Likewise.
25681         * optabs.c: Likewise.
25682         * output.h: Likewise.
25683         * real.h: Likewise.
25684         * rtl.h: Likewise.
25685         * stringpool.c: Likewise.
25686         * tree-data-ref.c: Likewise.
25687         * tree-flow.h: Likewise.
25688         * tree-scalar-evolution.c: Likewise.
25689         * tree-ssa-address.c: Likewise.
25690         * tree-ssa-alias.h: Likewise.
25691         * tree-ssa-operands.h: Likewise.
25692         * tree.c: Likewise.
25693         * tree.h: Likewise.
25694         * varasm.c: Likewise.
25695         * varray.h: Likewise.
25696         * vec.h: Likewise.
25697         * coretypes.h: Do not define GTY macro if it is already defined.
25698         * doc/gty.texi: Update GTY documentation to new syntax.
25699         * gengtype-lex.l: Enforce attribute-like syntax for GTY
25700         annotations on structs.
25701         * gengtype-parse.c: Likewise.
25702
25703 2009-04-22  Mark Heffernan  <meheff@google.com>
25704
25705         * gcc.c (LINK_COMMAND_SPEC): Link with gcov with -fprofile-generate=.
25706
25707 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
25708
25709         * config/arm/arm.c (arm_rtx_costs_1): Use power_of_two_operand
25710         where appropriate.
25711
25712 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
25713
25714         * config/arm/arm.c (arm_size_rtx_costs): Treat a PLUS with a shift
25715         the same as a PLUS without a shift.  Increase the cost of a
25716         CONST_INT in MULT.
25717
25718 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25719
25720         * Makefile.in: Update dependencies.
25721         * errors.c (warning): Remove unused parameter 'opt'. Returns 'void'.
25722         * errors.h: Remove bogus comment about compatibility.
25723         (warning): Update declaration.
25724         * genautomata.c: Update all calls to warning.
25725         * gimple.c: Do not include errors.h. Include toplev.h.
25726         * tree-ssa-structalias.c: Do not include errors.h.
25727         * omega.c: Likewise.
25728         * tree-ssa-reassoc.c: Likewise.
25729         * config/spu/spu-c.c: Likewise.
25730         * config/spu/t-spu-elf: Update dependencies.
25731
25732 2009-04-22  Richard Guenther  <rguenther@suse.de>
25733
25734         PR tree-optimization/39824
25735         * tree-ssa-ccp.c (fold_const_aggregate_ref): For INDIRECT_REFs
25736         make sure the types are compatible.
25737
25738 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25739
25740         PR c++/14875
25741         * c-common.c (c_parse_error): Take a token_flags parameter.
25742         Use token_type for the token type instead.
25743         Pass token_flags to cpp_type2name.
25744         * c-common.h (c_parse_error): Update declaration.
25745         * c-parser.c (c_parser_error): Pass 0 as token flags.
25746
25747 2009-04-22  Andrey Belevantsev  <abel@ispras.ru>
25748
25749         PR rtl-optimization/39580
25750         * sel-sched-ir.c (insert_in_history_vect): Remove incorrect gcc_assert.
25751
25752 2009-04-22  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
25753
25754         * function.c (expand_function_end): Do not emit a jump to the "naked"
25755         return label for fall-through returns.
25756         * except.c (sjlj_emit_function_exit): Always place the call to the
25757         unregister function at the location installed by expand_function_end.
25758
25759 2009-04-22  Richard Guenther  <rguenther@suse.de>
25760
25761         PR tree-optimization/39845
25762         * tree-switch-conversion.c (build_arrays): Add new referenced vars.
25763         (gen_inbound_check): Likewise.
25764
25765 2009-04-22  Nathan Sidwell  <nathan@codesourcery.com>
25766
25767         * gthr-vxworks.h (struct __gthread_once_t): Add alignment and
25768         padding for PPC.
25769         (__GTHREAD_ONCE_INIT): Adjust ppc initializer.
25770         * config/vxlib.c (__gthread_once): Add race guard for PPC.
25771
25772 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
25773
25774         * config/sh/sh.c (shift_insns_rtx, shiftcosts, gen_shifty_op,
25775         sh_dynamicalize_shift_p, shl_and_scr_length): Truncate
25776         shift counts to avoid out-of-bounds array accesses.
25777
25778 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
25779
25780         * config/sparc/sparc.h (POINTER_SIZE): Fix comment.
25781         (Pmode): Move above.
25782
25783 2009-04-22  Uros Bizjak  <ubizjak@gmail.com>
25784
25785         * config/alpha/alpha.c: Use REG_P, MEM_P, CONST_INT_P, JUMP_P,
25786         NONJUMP_INSN_P, CALL_P, LABEL_P and NOTE_P predicates instead of
25787         GET_CODE macro.  Use IN_RANGE macro where appropriate.
25788         * config/alpha/alpha.h: Ditto.
25789         * config/alpha/alpha.md: Ditto.
25790         * config/alpha/constraints.md: Ditto.
25791         * config/alpha/predicates.md: Ditto.
25792
25793 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
25794
25795         * defaults.h (GO_IF_MODE_DEPENDENT_ADDRESS): Provide empty default.
25796         * config/frv/frv.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25797         * config/s390/s390.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25798         * config/m32c/m32c.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25799         * config/spu/spu.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25800         * config/i386/i386.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25801         * config/sh/sh.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25802         * config/pdp11/pdp11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25803         * config/avr/avr.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25804         * config/crx/crx.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25805         * config/fr30/fr30.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25806         * config/m68hc11/m68hc11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25807         * config/cris/cris.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25808         * config/iq2000/iq2000.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25809         * config/mn10300/mn10300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25810         * config/ia64/ia64.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25811         * config/m68k/m68k.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25812         * config/picochip/picochip.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25813         * config/arc/arc.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25814         * config/mcore/mcore.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25815         * config/score/score.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25816         * config/arm/arm.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25817         * config/pa/pa.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25818         * config/mips/mips.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25819         * config/v850/v850.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25820         * config/mmix/mmix.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25821         * config/bfin/bfin.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25822
25823 2009-04-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
25824
25825         * cfghooks.c (tidy_fallthru_edges): Remove find_basic_blocks
25826         references from comments.
25827         * cfgbuild.c (count_basic_blocks): Delete.
25828         (find_basic_blocks_1): Delete.
25829         (find_basic_blocks): Delete.
25830         * except.c (finish_eh_generation): Make static.  Move comment from
25831         except.h here.  Remove find_basic_blocks references from comments.
25832         * except.h (finish_eh_generation): Delete.
25833         * basic-block.h (find_basic_blocks): Delete.
25834         * config/sh/sh.c (sh_output_mi_thunk): Delete a "#if 0" block.
25835
25836 2009-04-22  Dave Korn  <dave.korn.cygwin@gmail.com>
25837
25838         * sdbout.c (sdbout_symbol):  Pass VOIDmode to eliminate_regs.
25839         (sdbout_parms):  Likewise.
25840
25841 2009-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
25842
25843         * config/sh/sh.c (prepare_cbranch_operands): Use
25844         LAST_AND_UNUSED_RTX_CODE instead of CODE_FOR_nothing.
25845         (expand_cbranchdi4): Likewise.
25846         (from_compare): Add cast to enum type.
25847         (expand_cbranchsi4): Use add_reg_note.
25848         (output_stack_adjust, push, pop, sh_expand_prologue): Likewise.
25849         (sh_insn_length_adjustment): Use sh_cpu_attr instead of sh_cpu.
25850         (sh_initialize_trampoline): Change 0 to LCT_NORMAL in function call.
25851         (sh_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
25852         * config/sh/sh.md (cbranchsi4): Use LAST_AND_UNUSED_RTX_CODE
25853         instead of CODE_FOR_nothing.
25854         (cbranchdi4): Likewise.  Fix the order of arguments for
25855         gen_rtx_fmt_ee.
25856         (push_fpscr): Use add_reg_note.
25857         (pop_fpscr, movdf_i4+1, reload_outdf__RnFRm+3, reload_outdf__RnFRm+4,
25858         reload_outdf__RnFRm+5, fpu_switch+1, fpu_switch+2): Likewise.
25859
25860 2009-04-21  Joseph Myers  <joseph@codesourcery.com>
25861
25862         * ABOUT-GCC-NLS, ChangeLog, ChangeLog-1997, ChangeLog-1998,
25863         ChangeLog-1999, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
25864         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
25865         ChangeLog-2007, ChangeLog-2008, ChangeLog.dataflow, ChangeLog.lib,
25866         ChangeLog.ptr, ChangeLog.tree-ssa, ChangeLog.tuples, FSFChangeLog,
25867         FSFChangeLog.10, FSFChangeLog.11, LANGUAGES, ONEWS, acinclude.m4,
25868         config/alpha/gnu.h, config/alpha/libgcc-alpha-ldbl.ver,
25869         config/alpha/t-osf4, config/alpha/t-vms, config/alpha/va_list.h,
25870         config/alpha/x-vms, config/arc/t-arc,
25871         config/arm/README-interworking, config/arm/arm-c.c,
25872         config/arm/gentune.sh, config/arm/libgcc-bpabi.ver,
25873         config/arm/t-arm, config/arm/t-arm-elf, config/arm/t-arm-softfp,
25874         config/arm/t-bpabi, config/arm/t-linux, config/arm/t-linux-eabi,
25875         config/arm/t-netbsd, config/arm/t-pe, config/arm/t-strongarm-elf,
25876         config/arm/t-symbian, config/arm/t-vxworks, config/arm/t-wince-pe,
25877         config/avr/t-avr, config/bfin/elf.h, config/bfin/libgcc-bfin.ver,
25878         config/bfin/linux.h, config/bfin/t-bfin, config/bfin/t-bfin-elf,
25879         config/bfin/t-bfin-linux, config/bfin/t-bfin-uclinux,
25880         config/bfin/uclinux.h, config/cris/mulsi3.asm, config/cris/t-cris,
25881         config/cris/t-elfmulti, config/crx/t-crx,
25882         config/darwin-ppc-ldouble-patch.def, config/darwin-sections.def,
25883         config/divmod.c, config/fr30/t-fr30, config/frv/libgcc-frv.ver,
25884         config/frv/t-frv, config/frv/t-linux, config/h8300/genmova.sh,
25885         config/h8300/t-h8300, config/i386/athlon.md,
25886         config/i386/darwin-libgcc.10.4.ver,
25887         config/i386/darwin-libgcc.10.5.ver, config/i386/libgcc-glibc.ver,
25888         config/i386/mach.h, config/i386/netbsd.h, config/i386/t-crtpc,
25889         config/i386/t-cygming, config/i386/t-cygwin, config/i386/t-i386,
25890         config/i386/t-linux64, config/i386/t-nwld,
25891         config/i386/t-rtems-i386, config/i386/t-sol2-10,
25892         config/i386/x-mingw32, config/ia64/div.md, config/ia64/elf.h,
25893         config/ia64/ia64.opt, config/ia64/libgcc-glibc.ver,
25894         config/ia64/libgcc-ia64.ver, config/ia64/linux.h,
25895         config/ia64/sysv4.h, config/ia64/t-hpux, config/ia64/t-ia64,
25896         config/iq2000/abi, config/iq2000/lib2extra-funcs.c,
25897         config/iq2000/t-iq2000, config/libgcc-glibc.ver,
25898         config/m32r/libgcc-glibc.ver, config/m32r/t-linux,
25899         config/m32r/t-m32r, config/m68hc11/t-m68hc11,
25900         config/m68k/t-floatlib, config/m68k/t-linux, config/m68k/t-mlibs,
25901         config/m68k/t-uclinux, config/mcore/t-mcore,
25902         config/mcore/t-mcore-pe, config/mips/20kc.md, config/mips/4130.md,
25903         config/mips/5400.md, config/mips/5500.md, config/mips/crti.asm,
25904         config/mips/crtn.asm, config/mips/irix-crti.asm,
25905         config/mips/irix-crtn.asm, config/mips/libgcc-mips16.ver,
25906         config/mips/mips-dsp.md, config/mips/mips-dspr2.md,
25907         config/mips/mips-fixed.md, config/mips/sb1.md,
25908         config/mips/sr71k.md, config/mips/t-elf, config/mips/t-gofast,
25909         config/mips/t-iris6, config/mips/t-isa3264,
25910         config/mips/t-libgcc-mips16, config/mips/t-linux64,
25911         config/mips/t-mips, config/mips/t-r3900, config/mips/t-rtems,
25912         config/mips/t-sb1, config/mips/t-sde, config/mips/t-sdemtk,
25913         config/mips/t-slibgcc-irix, config/mips/t-sr71k, config/mips/t-st,
25914         config/mips/t-vr, config/mips/t-vxworks, config/mmix/t-mmix,
25915         config/mn10300/t-linux, config/mn10300/t-mn10300,
25916         config/pa/pa32-regs.h, config/pa/t-hpux-shlib, config/pa/t-linux,
25917         config/pa/t-linux64, config/pa/t-pa64, config/pdp11/t-pdp11,
25918         config/picochip/libgccExtras/clzsi2.asm,
25919         config/picochip/t-picochip, config/rs6000/darwin-ldouble-format,
25920         config/rs6000/darwin-libgcc.10.4.ver,
25921         config/rs6000/darwin-libgcc.10.5.ver,
25922         config/rs6000/libgcc-ppc-glibc.ver, config/rs6000/ppc-asm.h,
25923         config/rs6000/t-aix43, config/rs6000/t-aix52,
25924         config/rs6000/t-darwin, config/rs6000/t-fprules,
25925         config/rs6000/t-fprules-fpbit, config/rs6000/t-linux64,
25926         config/rs6000/t-lynx, config/rs6000/t-netbsd,
25927         config/rs6000/t-ppccomm, config/rs6000/t-ppcendian,
25928         config/rs6000/t-ppcgas, config/rs6000/t-rs6000,
25929         config/rs6000/t-rtems, config/rs6000/t-spe,
25930         config/rs6000/t-vxworks, config/s390/libgcc-glibc.ver,
25931         config/score/t-score-elf, config/sh/divcost-analysis,
25932         config/sh/libgcc-glibc.ver, config/sh/t-netbsd, config/sh/t-sh,
25933         config/sh/t-sh64, config/sh/t-superh, config/sh/t-symbian,
25934         config/sparc/libgcc-sparc-glibc.ver, config/sparc/sol2-bi.h,
25935         config/sparc/sol2-gas.h, config/sparc/sol2-gld-bi.h,
25936         config/sparc/t-elf, config/sparc/t-linux64, config/sparc/t-sol2,
25937         config/stormy16/stormy-abi, config/stormy16/t-stormy16,
25938         config/t-darwin, config/t-libunwind, config/t-libunwind-elf,
25939         config/t-linux, config/t-lynx, config/t-slibgcc-elf-ver,
25940         config/t-slibgcc-sld, config/t-sol2, config/t-vxworks,
25941         config/udivmod.c, config/udivmodsi4.c, config/v850/t-v850,
25942         config/v850/t-v850e, config/xtensa/t-xtensa, diagnostic.def,
25943         gdbinit.in, glimits.h, gstab.h, gsyms.h, java/ChangeLog,
25944         java/ChangeLog.ptr, java/ChangeLog.tree-ssa, libgcc-std.ver,
25945         limitx.h, version.c, xcoff.h: Add copyright and license notices.
25946         * config/h8300/genmova.sh: Include copyright and license notices
25947         in generated output.
25948         * config/h8300/mova.md: Regenerate.
25949         * doc/install.texi2html: Include word "Copyright" in copyright
25950         notice and use name "Free Software Foundation, Inc.".
25951         * ChangeLog, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
25952         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
25953         ChangeLog-2007, ChangeLog-2008: Correct dates.
25954
25955 2009-04-21  Eric Botcazou  <ebotcazou@adacore.com>
25956
25957         * c-common.c (c_common_truthvalue_conversion): Use LOCATION to build
25958         NE_EXPR operations as well.
25959         * c-parser.c (c_parser_condition): Do not set location information on
25960         the condition.
25961         (c_parser_conditional_expression): Likewise.
25962         (c_parser_binary_expression): Set location information on operators.
25963         * c-typeck.c (build_unary_op) <TRUTH_NOT_EXPR>: Reset the location if
25964         TRUTH_NOT_EXPR has been folded.
25965         * fold-const.c (fold_truth_not_expr): Copy location information from
25966         the incoming expression to the outgoing one.
25967         * gimplify.c (shortcut_cond_r): Add locus parameter.  Pass it to
25968         recursive calls on the LHS of the operator but pass that of the
25969         operator to recursive calls on the RHS of the operator.  Set it
25970         on the COND_EXPR.
25971         (shortcut_cond_expr): Set the locus of the operator on the second
25972         COND_EXPR and that of the expression on the first in degenerate cases.
25973         Pass the locus of the expression to calls to shortcut_cond_r.
25974         Set the locus of the 'then' block on the associated jump, if any.
25975         (gimplify_boolean_expr): Add locus parameter.  Set it on the COND_EXPR.
25976         (gimplify_expr) <TRUTH_ANDIF_EXPR>: Pass the locus of the outer
25977         expression to call to gimplify_boolean_expr.
25978
25979 2009-04-21  Kai Tietz  <kai.tietz@onevision.com>
25980
25981         * config.gcc: Add additional configuration for
25982         i686-w64-mingw* and x86_64-w64-mingw* triplet.
25983         * config/i386/mingw-w64.h: New mingw-w64 specific header.
25984         (CPP_SPEC): Redefine for allowing -municode option.
25985         (STARTFILE_SPEC): Likewise.
25986         * config/i386/t-mingw-w64: New.
25987         * config/i386/mingw-w64.opt: New.
25988         (municode): Add new target option.
25989         * doc/invoke.texi (municode): Add documentation for new option.
25990
25991 2009-04-21  Ian Lance Taylor  <iant@google.com>
25992
25993         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
25994         Correct test for number of arguments.
25995         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Likewise.
25996
25997 2009-04-21  Andreas Schwab  <schwab@linux-m68k.org>
25998
25999         * config/m68k/linux.h (FINALIZE_TRAMPOLINE): Use enum for second
26000         argument of emit_library_call.
26001
26002 2009-04-21  Richard Guenther  <rguenther@suse.de>
26003
26004         PR middle-end/39829
26005         * gimple.c (walk_stmt_load_store_addr_ops): Catch addresses
26006         inside VIEW_CONVERT_EXPRs.
26007
26008 2009-04-21  Martin Jambor  <mjambor@suse.cz>
26009
26010         * tree-switch-conversion.c (build_constructors): Split a long line.
26011         (constructor_contains_same_values_p): New function.
26012         (build_one_array): Create assigns of constants if possible, do not
26013         call mark_sym_for_renaming, call update_stmt.
26014         (build_arrays): Call make_ssa_name (create_tmp_var ()) instead of
26015         make_rename_temp.  Do not call mark_symbols_for_renaming, call
26016         update_stmt.
26017         (gen_def_assigns): Do not call mark_symbols_for_renaming or
26018         find_new_referenced_vars, call update_stmt.
26019         (gen_inbound_check): Use create_tmp_var and create ssa names manually
26020         instead of calling make_rename_temp.  Do not call
26021         find_new_referenced_vars or mark_symbols_for_renaming, call
26022         update_stmt.
26023
26024 2009-04-21  Richard Guenther  <rguenther@suse.de>
26025
26026         PR tree-optimization/39827
26027         * tree-ssa-phiprop.c (propagate_with_phi): Check SSA_NAME is in range.
26028         (tree_ssa_phiprop): Pass the correct array size.
26029
26030 2009-04-21  Uros Bizjak  <ubizjak@gmail.com>
26031
26032         * config/alpha/alpha.md (tune): Add cast to enum attr_tune.
26033
26034 2009-04-21  Manuel López-Ibáñez  <manu@gcc.gnu.org>
26035
26036         PR 16202
26037         * c-typeck.c (lvalue_p): Move declaration ...
26038         * c-common.h (lvalue_p): ... to here.
26039         * c-common.c (candidate_equal_p): New.
26040         (add_tlist): Use it.
26041         (merge_tlist): Use it.
26042         (warn_for_collisions_1): Likewise.
26043         (warning_candidate_p): Accept more candidates.
26044         (verify_tree): A warning candidate can be an expression. Use
26045         candidate_equal_p.
26046
26047 2009-04-21  Ben Elliston  <bje@au.ibm.com>
26048
26049         PR target/5267
26050         * doc/invoke.texi (RS/6000 and PowerPC Options): Add documentation
26051         for -mcall-eabi, -mcall-aixdesc, -mcall-freebsd and -mcall-openbsd
26052         options.  Remove -mcall-solaris documentation.
26053
26054 2009-04-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26055
26056         PR c++/13358
26057         * doc/invoke.texi (-Wlong-long): Update description.
26058         * c-lex (interpret_integer): Only warn if there was no previous
26059         overflow and -Wlong-long is enabled.
26060         * c-decl.c (declspecs_add_type): Drop redundant flags.
26061         * c.opt (Wlong-long): Init to -1.
26062         * c-opts.c (sanitize_cpp_opts): Synchronize cpp's warn_long_long
26063         and front-end warn_long_long. Wlong-long only depends on other
26064         flags if it is uninitialized.
26065         * c-parser.c (disable_extension_diagnostics): warn_long_long is
26066         the same for CPP and FE.
26067         (restore_extension_diagnostics): Likewise.
26068
26069 2009-04-20  Ian Lance Taylor  <iant@google.com>
26070
26071         Fix enum conversions which are invalid in C++:
26072         * auto-inc-dec.c (attempt_change): Change 0 to SET in function call.
26073         * calls.c (store_one_arg): Change 0 to EXPAND_NORMAL in function call.
26074         * cse.c (hash_rtx_cb): Change 0 to VOIDmode in function call.
26075         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add cast to enum type.
26076         * dbxout.c (dbxout_symbol): Change 0 to VOIDmode in function call.
26077         (dbxout_parms): Likewise.
26078         * df-core.c (df_set_flags): Change changeable_flags parameter to int.
26079         (df_clear_flags): Likewise.
26080         * df-problems.c (df_rd_bb_local_compute_process_def): Change
26081         top_flag parameter to int.
26082         (df_chain_create_bb_process_use): Likewise.
26083         (df_chain_add_problem): Change chain_flags parameter to unsigned int.
26084         Remove cast.
26085         * df-scan.c (df_ref_create): Change ref_flags parameter to int.
26086         (df_ref_create_structure, df_def_record_1): Likewise.
26087         (df_defs_record, df_uses_record, df_get_call_refs): Likewise.
26088         (df_notes_rescan): Change 0 to VOIDmode in function call.
26089         (df_get_call_refs, df_insn_refs_collect): Likewise.
26090         (df_bb_regs_collect): Likewise.
26091         (df_entry_block_defs_collect): Likewise.
26092         (df_exit_block_uses_collect): Likewise.
26093         * df.h: Update declarations.
26094         * double-int.c (double_int_divmod): Add cast to enum type.
26095         * dse.c (replace_inc_dec): Reverse parameters to gen_int_mode.
26096         * dwarf2out.c (new_reg_loc_descr): Add casts to enum type.
26097         (based_loc_descr): Likewise.
26098         (loc_descriptor_from_tree_1): Change first_op and second_op to
26099         enum dwarf_location_atom.  Add cast to enum type.
26100         * expmed.c (init_expmed): Change 0 to SET in function call.
26101         * expr.c (init_expr_target): Change 0 to VOIDmode in function call.
26102         (expand_expr_real_1): Change 0 to EXPAND_NORMAL in function call.
26103         (do_store_flag): Likewise.
26104         * fixed-value.h (struct fixed_value): Change mode to enum
26105         machine_mode.
26106         * function.c (assign_parms): Change 0 to VOIDmode in function call.
26107         * genautomata.c (insert_automaton_decl): Change 1 to INSERT in
26108         function call.
26109         (insert_insn_decl, insert_decl, insert_state): Likewise.
26110         (automata_list_finish): Likewise.
26111         * genrecog.c (process_define_predicate): Add cast to enum type.
26112         * gensupport.c (init_predicate_table): Add cast to enum type.
26113         * gimple.c (gimple_build_return): Change 0 to ERROR_MARK in
26114         function call.
26115         (gimple_build_call_1, gimple_build_label): Likewise.
26116         (gimple_build_goto, gimple_build_asm_1): Likewise.
26117         (gimple_build_switch_1, gimple_build_cdt): Likewise.
26118         * gimple.h (GIMPLE_CHECK): Change 0 to ERROR_MARK in function call.
26119         (enum fallback): Rename from enum fallback_t.
26120         (fallback_t): Typedef as int.
26121         * gimple-low.c (lower_builtin_setjmp): Change TSI_SAME_STMT to
26122         GSI_SAME_STMT in function call.
26123         * ira.c (setup_class_subset_and_memory_move_costs): Add casts to
26124         enum type.
26125         (setup_reg_class_relations): Likewise.
26126         (setup_reg_class_nregs): Change cl to int.  Add casts to enum type.
26127         (setup_prohibited_class_mode_regs): Add cast to enum type.
26128         (setup_prohibited_mode_move_regs): Likewise.
26129         * ira-costs.c (record_reg_classes): Change rclass to enum reg_class.
26130         (record_address_regs): Change i to enum reg_class.
26131         * lists.c (alloc_EXPR_LIST): Add cast to enum type.
26132         * machmode.h (GET_MODE_CLASS): Cast value to enum mode_class.
26133         (GET_MODE_WIDER_MODE): Cast value to enum machine_mode.
26134         (GET_MODE_2XWIDER_MODE): Likewise.
26135         (GET_CLASS_NARROWEST_MODE): Likewise.
26136         * omp-low.c (expand_omp_for): Add cast to enum type.
26137         * optabs.c (debug_optab_libfuncs): Add casts to enum type.
26138         * opts.c (enable_warning_as_error): Change kind to diagostic_t.
26139         * postreload.c (reload_cse_simplify_operands): Change rclass local
26140         to enum reg_class.
26141         * predict.c (combine_predictions_for_insn): Change best_predictor
26142         and predictor to enum br_predictor.
26143         (combine_predictions_for_bb): Likewise.
26144         (build_predict_expr): Change assignment to PREDICT_EXPR_OUTCOME to
26145         use SET_PREDICT_EXPR_OUTCOME.
26146         * real.c (real_arithmetic): Change icode to code in function call.
26147         * reginfo.c (init_move_cost): Add casts to enum type.
26148         (init_reg_sets_1, init_fake_stack_mems): Likewise.
26149         * regmove.c (regclass_compatible_p): Change class0 and class1 to
26150         enum reg_class.
26151         * reload.c (find_valid_class): Add casts to enum type.
26152         (push_reload): Change 0 to NO_REGS in function call.
26153         (find_reloads): Change this_alternative to array of enum
26154         reg_class.  Remove some now-unnecessary casts.
26155         (make_memloc): Change 0 to VOIDmode in function call.
26156         * reload1.c (reload): Change 0 to VOIDmode in function call.
26157         (eliminate_regs_1, elimination_effects): Likewise.
26158         (eliminate_regs_in_insn): Likewise.
26159         (emit_input_reload_insns): Add cast to enum type.
26160         (delete_output_reload): Change 0 to VOIDmode in function call.
26161         * reorg.c (insn_sets_resource_p): Convert include_delayed_effects
26162         to enum type in function call.
26163         * tree.h (PREDICT_EXPR_OUTCOME): Add cast to enum type.
26164         (SET_PREDICT_EXPR_OUTCOME): Define.
26165         * tree-dump.c (get_dump_file_info): Change phase parameter to int.
26166         (get_dump_file_name, dump_begin, dump_enabled_p): Likewise.
26167         (dump_initialized_p, dump_flag_name, dump_end): Likewise.
26168         (dump_function): Likewise.
26169         * tree-dump.h: Update declarations.
26170         * tree-pass.h: Update declarations.
26171         * varasm.c (assemble_integer): Change mclass to enum mode_class.
26172         * config/arm/arm.c (thumb_legitimize_reload_address): Add cast to
26173         enum type.
26174         (arm_rtx_costs_1): Correct parenthesization.
26175         (arm_rtx_costs): Add casts to enum type.
26176         (adjacent_mem_locations): Reverse arguments to const_ok_for_op.
26177         (vfp_emit_fstmd): Use add_rg_note.
26178         (emit_multi_reg_push, emit_sfm): Likewise.
26179         (thumb_set_frame_pointer): Likewise.
26180         (arm_expand_prologue): Likewise.
26181         (arm_regno_class): Change return type to enum reg_class.
26182         (thumb1_expand_prologue): Use add_reg_note.
26183         * config/arm/arm-protos.h (arm_regno_class): Update declaration.
26184         * config/arm/arm.h (INITIALIZE_TRAMPOLINE): Change 0 to LCT_NORMAL
26185         in function call.
26186         * config/arm/gentune.sh: Add cast to enum type.
26187         * config/arm/arm-tune.md: Rebuild.
26188         * config/i386/i386.c (ix86_expand_prologue): Use add_reg_note.
26189         (ix86_split_fp_branch, predict_jump): Likewise.
26190         (ix86_expand_multi_arg_builtin): Change sub_code from enum
26191         insn_code to enum rtx_code.
26192         (ix86_builtin_vectorized_function): Add cast to enum type.
26193         * config/i386/i386.md (truncdfsf2): Change slot to enum
26194         ix86_stack_slot.
26195         (truncxf<mode>2, isinf<mode>2): Likewise.
26196         * config/i386/i386-c.c (ix86_pragma_target_parse): Add cast to
26197         enum type.
26198         * config/ia64/ia64.c (ia64_split_tmode_move): Use add_reg_note.
26199         (spill_restore_mem, do_spill, ia64_expand_prologue): Likewise.
26200         (insert_bundle_state): Change 1 to INSERT in function call.
26201         (ia64_add_bundle_selector_before): Likewise.
26202         * config/ia64/ia64.md (cpu attr): Add cast to enum type.
26203         (save_stack_nonlocal): Change 0 to LCT_NORMAL in function call.
26204         (restore_stack_nonlocal): Likewise.
26205         * config/mips/mips.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL in
26206         function call.
26207         * config/mips/mips.c (mips_binary_cost): Change 0 to SET in
26208         function call.
26209         (mips_rtx_costs): Likewise.
26210         (mips_override_options): Add casts to enum type.
26211         * config/mips/sdemtk.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL
26212         in function call.
26213         * config/pa/pa.c (legitimize_pic_address): Use add_reg_note.
26214         (store_reg, set_reg_plus_d): Likewise.
26215         (hppa_expand_prologue, hppa_profile_hook): Likewise.
26216         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Add
26217         cast to enum type.
26218         (altivec_expand_vec_set_builtin): Change 0 to EXPAND_NORMAL in
26219         function call.
26220         (emit_unlikely_jump): Use add_reg_note.
26221         (rs6000_emit_allocate_stack): Likewise.
26222         (rs6000_frame_related, rs6000_emit_prologue): Likewise.
26223         (output_toc): Change 1 to INSERT in function call.
26224         (output_profile_hook): Change 0 to LCT_NORMAL in function call.
26225         (rs6000_initialize_trampoline): Likewise.
26226         (rs6000_init_dwarf_reg_sizes_extra): Change 0 to EXPAND_NORMAL in
26227         function call.
26228         * config/s390/s390.c (s390_rtx_costs): Add cast to enum type.
26229         (s390_expand_movmem): Change 0 to OPTAB_DIRECT in function call.
26230         (s390_expand_setmem, s390_expand_cmpmem): Likewise.
26231         (save_gprs): Use add_reg_note.
26232         (s390_emit_prologue): Likewise.
26233         (s390_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
26234         * config/sparc/sparc.c (sparc_expand_prologue): Use add_reg_note.
26235         (sparc_fold_builtin): Add cast to enum type.
26236         * config/spu/spu.c (spu_emit_branch_or_set): Change ior_code to
26237         enum insn_code.
26238         (spu_expand_prologue): Use add_reg_note.
26239         (expand_builtin_args): Change 0 to EXPAND_NORMAL in function call.
26240
26241 2009-04-20  Ian Lance Taylor  <iant@google.com>
26242
26243         * c-parser.c (c_parser_attributes): Change VEC back to tree list.
26244         (c_parser_postfix_expression_after_primary): Get VEC for list of
26245         arguments.  Get original types of arguments.  Call
26246         build_function_call_vec.
26247         (cached_expr_list_1, cached_expr_list_2): New static variables.
26248         (c_parser_expr_list): Change return type to VEC *.  Add
26249         p_orig_types parameter.  Change all callers.
26250         (c_parser_release_expr): New static function.
26251         (c_parser_vec_to_tree_list): New static function.
26252         * c-typeck.c (build_function_call): Rewrite to build a VEC and
26253         call build_function_call_vec.
26254         (build_function_call_vec): New function, based on old
26255         build_function_call.
26256         (convert_arguments): Remove nargs and argarray parameters.  Change
26257         values to a VEC.  Add origtypes parameter.
26258         (build_modify_expr): Add rhs_origtype parameter.  Change all callers.
26259         (convert_for_assignment): Add origtype parameter.  Change all
26260         callers.  If warn_cxx_compat, check for conversion to an enum
26261         type when calling a function.
26262         (store_init_value): Add origtype parameter.  Change all callers.
26263         (digest_init): Likewise.
26264         (struct init_node): Add origtype field.
26265         (add_pending_init): Add origtype parameter.  Change all callers.
26266         (output_init_element): Likewise.
26267         (output_pending_init_elements): Pass origtype from init_node to
26268         output_init_element.
26269         (process_init_element): Pass origtype from c_expr to
26270         output_init_element.
26271         (c_finish_return): Add origtype parameter.  Change all callers.
26272         * c-common.c (sync_resolve_size): Change params to VEC *.  Change
26273         caller.
26274         (sync_resolve_params): Likewise.
26275         (sync_resolve_return): Change params to first_param.  Change caller.
26276         (resolve_overloaded_builtins): Change params to VEC *.  Change
26277         callers.  Save first parameter around call to build_function_call_vec.
26278         * c-decl.c (finish_decl): Add origtype parameter.  Change all
26279         callers.  Call build_function_call_vec rather than
26280         build_function_call for cleanup.
26281         * c-tree.h: Update declarations.
26282         * c-common.h: Update declarations.
26283         * stub-objc.c (objc_rewrite_function_call): Change parameter from
26284         params to first_param.
26285         * target.h (struct gcc_target): Change resolve_overloaded_builtin
26286         params parameter from tree to void *.
26287         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
26288         Change arglist parameter to have type void *, and to be a pointer
26289         to a VEC.
26290         * config/rs6000/rs6000-protos.h
26291         (altivec_resolve_overloaded_builtin): Update declaration.
26292         * config/spu/spu-c.c (spu_resolved_overloaded_builtin): Change
26293         fnargs parameter to have type void *, and to be a pointer to a
26294         VEC.  Call build_function_call_vec instead of
26295         build_function_call.
26296         * config/spu/spu-protos.h (spu_expand_builtin): Update declaration.
26297
26298 2009-04-20  Joey Ye  <joey.ye@intel.com>
26299             Xuepeng Guo  <xuepeng.guo@intel.com>
26300             H.J. Lu  <hongjiu.lu@intel.com>
26301
26302         * config/i386/atom.md: Add bypasses with ix86_dep_by_shift_count.
26303
26304         * config/i386/i386.c (LEA_SEARCH_THRESHOLD): New macro.
26305         (IX86_LEA_PRIORITY): Likewise.
26306         (distance_non_agu_define): New function.
26307         (distance_agu_use): Likewise.
26308         (ix86_lea_for_add_ok): Likewise.
26309         (ix86_dep_by_shift_count): Likewise.
26310
26311         * config/i386/i386.md: Call ix86_lea_for_add_ok to decide we
26312         should split for LEA.
26313
26314         * config/i386/i386-protos.h (ix86_lea_for_add_ok): Declare new
26315         function.
26316         (ix86_dep_by_shift_count): Likewise.
26317
26318 2009-04-20  Richard Guenther  <rguenther@suse.de>
26319
26320         * expr.c (handled_component_p): Move ...
26321         * tree.h (handled_component_p): ... here.
26322         * tree.def: Re-order BIT_FIELD_REF, COMPONENT_REF,
26323         ARRAY_REF, ARRAY_RANGE_REF, VIEW_CONVERT_EXPR, IMAGPART_EXPR
26324         and REALPART_EXPR to be in one group.
26325
26326 2009-04-20  Richard Guenther  <rguenther@suse.de>
26327
26328         * basic-block.h (get_all_dominated_blocks): Declare.
26329         * dominance.c (get_all_dominated_blocks): New function.
26330         * tree-cfg.c (get_all_dominated_blocks): Remove.
26331         (remove_edge_and_dominated_blocks): Adjust.
26332         * tree-ssa-phiprop.c (tree_ssa_phiprop_1): Fold in ...
26333         (tree_ssa_phiprop): ... here.  Use get_all_dominated_blocks
26334         instead of recursing.
26335
26336 2009-04-20  Doug Kwan  <dougkwan@google.com>
26337
26338         * cgraph.h (cgraph_node_ptr): New type for vector functions.
26339         (struct cgraph_node_set_def): New type.
26340         (cgraph_node_set) New type. Also declare vector functions.
26341         (struct cgraph_node_set_element_def): New type.
26342         (cgraph_node_set_element): Ditto.
26343         (cgraph_node_set_iterator): New iterator type.
26344         (cgraph_node_set_new, cgraph_node_set_find, cgraph_node_set_add,
26345         cgraph_node_set_remove, dump_cgraph_node_set,
26346         debug_cgraph_node_set): New prototypes.
26347         (csi_end_p, csi_next, csi_node, csi_start, cgraph_node_in_set_p,
26348         cgraph_node_set_size): New inlines.
26349         * tree-pass.h (struct cgraph_node_set_def): New decl to avoid
26350         including cgraph.h.
26351         (struct ipa_opt_pass): Add struct cgraph_node_set_def
26352         argument to function 'write_summary'.
26353         * ipa.c: Include ggc.h.
26354         (hash_cgraph_node_set_element,
26355         eq_cgraph_node_set_element, cgraph_node_set_new,
26356         cgraph_node_set_add, cgraph_node_set_remove,
26357         cgraph_node_set_find, dump_cgraph_node_set,
26358         debug_cgraph_node_set): New functions.
26359         * Makefile.in (ipa.o): Add dependency on GGC_H.
26360
26361 2009-04-20  Ira Rosen  <irar@il.ibm.com>
26362
26363         PR tree-optimization/39675
26364         * tree-vect-loop.c (vect_transform_loop): Remove currently redundant
26365         check of the return code of vect_schedule_slp. Check that
26366         stmt_vec_info still exists for the statement, before checking its
26367         vectorization type.
26368
26369 2009-04-20  Michael Matz  <matz@suse.de>
26370
26371         * Makefile.in (generated_files): Take out $(simple_generated_c).
26372
26373 2009-04-19  Dave Korn  <dave.korn.cygwin@gmail.com>
26374
26375         * config/i386/cygwin-stdint.h (INTPTR_TYPE):  Remove "long".
26376         (UINTPTR_TYPE):  Likewise.
26377
26378 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
26379
26380         PR c/37481
26381         * c-typeck.c (digest_init): Check for initializing an array with a
26382         string literal.
26383
26384 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
26385
26386         PR c/19771
26387         * c-semantics.c (pop_stmt_list): Propagate
26388         STATEMENT_LIST_HAS_LABEL to parent statement list.
26389
26390 2009-04-19  Adam Nemet  <anemet@caviumnetworks.com>
26391
26392         * config/mips/mips.h (mips_tune_attr): New macro.
26393         * config/mips/mips.md (cpu): Use it.
26394
26395 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
26396
26397         PR c/38243
26398         * c-decl.c (shadow_tag_warned): Diagnose use of restrict when
26399         declaring a tag.
26400
26401 2009-04-19  Diego Novillo  <dnovillo@google.com>
26402
26403         * toplev.c (compile_file): Move call to coverage_finish ...
26404         * cgraphunit.c (ipa_passes): ... here.
26405         Call cgraph_process_new_functions.
26406         * ipa-utils.c (get_base_var): Handle CONSTRUCTOR.
26407         * Makefile.in (cgraphunit.o): Add dependency on COVERAGE_H.
26408
26409 2009-04-19  Jan Hubicka  <jh@suse.cz>
26410
26411         * cgraph.c (cgraph_create_edge, cgraph_set_call_stmt): Set proper
26412         cfun.
26413         (dump_cgraph_node): Dump can throw external flag.
26414         * ipa-pure-const.c (propagate): Fix propagation of nothrow flags.
26415
26416 2009-04-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
26417
26418         PR c/32061
26419         PR c++/36954
26420         * doc/invoke.texi: Add -Wlogical-op to -Wextra.
26421         * common.opt (Wlogical-op): Move from here...
26422         * c.opt (Wlogical-op): ... to here.
26423         * c-typeck.c (parser_build_binary_op): Update call to
26424         warn_logical_operator.
26425         * c-opts.c (c_common_post_options): Enable warn_logical_op with
26426         extra_warnings.
26427         * c-common.c (warn_logical_op): Update.
26428         * c-common.h (warn_logical_op): Update declaration.
26429
26430 2009-04-19  Eric Botcazou  <ebotcazou@adacore.com>
26431
26432         * tree.c (protected_set_expr_location): Fix formatting.
26433
26434 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
26435
26436         PR c/27676
26437         * c-typeck.c (readonly_warning): new.
26438         (build_unary_op, build_modify_expr): Use readonly_warning for
26439         storing into something readonly but not const-qualified.
26440
26441 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
26442
26443         PR c/22367
26444         * c-typeck.c (build_unary_op): Check for taking address of
26445         expression of type void.
26446
26447 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
26448
26449         PR c/35210
26450         * c-typeck.c (build_function_call): Check for calling a function
26451         with qualified void return types.  Call require_complete_type when
26452         generating a trap.
26453
26454 2009-04-18  Jan Hubicka  <jh@suse.cz>
26455
26456         * cgraph.c (cgraph_make_edge, dump_cgraph_node, cgraph_set_call_stmt):
26457         Set nothrow flag.
26458         * cgraph.h (struct function): Reduce loop_nest to 30 bits; add
26459         can_throw_external flag.
26460         * ipa-reference.c (ipa_utils_reduced_inorder): Update call.
26461         * ipa-pure-const.c (ignore_edge): New function.
26462         (propagate): Compute order for NOTHROW computation; set NOTHROWs
26463         only over can_throw_external edges.
26464         (local_pure_const): Add nothrow flag.
26465         * ipa-utils.c (searchc): Add ignore_edge callback.
26466         (ipa_utils_reduced_inorder): Add ignore_edge callback.
26467         * ipa-utils.h (ipa_utils_reduced_inorder): Update prototype.
26468         (set_nothrow_function_flags): Update cgraph.
26469         * tree-cfg.c (verify_stmt): Relax nothrow checking when in IPA mode.
26470
26471 2009-04-18  Richard Guenther  <rguenther@suse.de>
26472
26473         PR middle-end/39804
26474         * tree-ssa-ccp.c (fold_stmt_1): New function factored from ...
26475         (fold_stmt): ... this and ...
26476         (fold_stmt_inplace): ... this.
26477         (fold_stmt_1): Fold references in calls and asms.
26478         * tree-cfg.c (remove_useless_stmts_cond): Use fold_stmt.
26479
26480 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
26481
26482         * tree-vrp.c (ssa_name_nonzero_p): Remove.
26483         * tree.h: Remove the prototype for ssa_name_nonzero_p.
26484
26485 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
26486
26487         * tree.c (function_args_count): Remove.
26488         * tree.h: Remove the prototype for function_args_count.
26489
26490 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
26491
26492         * tree-iterator.c (expr_only): Remove.
26493         * tree.h: Remove the prototype for expr_only.
26494
26495 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
26496
26497         * reginfo.c (cannot_change_mode_set_regs): Remove.
26498         * rtl.h: Remove the prototype for cannot_change_mode_set_regs.
26499
26500 2009-04-08  Anatoly Sokolov  <aesok@post.ru>
26501
26502         * config/avr/avr.md (*rotlsi3_8, *rotlsi3_16, *rotlsi3_24 ): Check
26503         whether operands 0 and 1 overlaps.
26504
26505 2009-04-18  Manuel López-Ibáñez  <manu@gcc.gnu.org>
26506
26507         PR middle-end/36902
26508         * tree-vrp.c (check_array_ref): Pass a location_t instead of a
26509         pointer. Use warning_at instead of warning.
26510         (search_for_addr_array): Likewise.
26511         (check_array_bounds): Likewise.
26512         (check_all_array_refs): Check that the incoming edge is not in the
26513         list of edges to be removed.
26514         (check_all_array_refs): Avoid the temporal pointer.
26515         (vrp_visit_cond_stmt): Fix typo.
26516         (simplify_switch_using_ranges): Handle the case where the switch
26517         index is an integer constant.
26518
26519 2009-04-18  Adam Nemet  <anemet@caviumnetworks.com>
26520
26521         * config/mips/mips.c (mips_final_postscan_insn): Make it static.
26522
26523 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
26524
26525         * doc/extend.texi, doc/invoke.texi: Fix typos.
26526
26527 2009-04-17  Cary Coutant  <ccoutant@google.com>
26528
26529         * tree-flow-inline.h (get_lineno): Fix inverted test.
26530
26531 2009-04-17  Diego Novillo  <dnovillo@google.com>
26532
26533         * tree-ssa-pre.c (create_expression_by_pieces): Remove
26534         assertion for AVAIL_OUT.
26535
26536 2009-04-17  Mike Frysinger  <vapier@gentoo.org>
26537
26538         PR target/38627
26539         * config/sh/lib1funcs.asm [__ELF__ && __linux__]: Add .note.GNU-stack.
26540         * config/sh/linux-atomic.asm: Likewise.
26541
26542 2009-04-17  Diego Novillo  <dnovillo@google.com>
26543
26544         * except.c (debug_eh_tree): New.
26545         (struct eh_region, struct eh_status): Move ...
26546         * except.h: ... here.
26547         (add_type_for_runtime): Declare extern.
26548         (lookup_type_for_runtime): Likewise.
26549         (debug_eh_tree): Declare.
26550         * Makefile.in (GTFILES): List except.h before except.c
26551
26552 2009-04-17  Diego Novillo  <dnovillo@google.com>
26553
26554         * omp-low.c (create_omp_child_function): Set DECL_CONTEXT for DECL.
26555         * cgraphunit.c (cgraph_build_static_cdtor): Likewise.
26556         * tree-dfa.c (find_referenced_vars_in): Factor out of ...
26557         (find_vars_r): ... here.
26558         * tree-flow.h (find_referenced_vars_in): Declare.
26559         * tree-ssa-pre.c (create_expression_by_pieces): Assert
26560         that AVAIL_OUT exists for BLOCK.
26561         * Makefile.in (CGRAPH_H): Add dependency on cif-code.def
26562         (tree-loop-distribution.o): Fix dependency on TREE_VECTORIZER_H.
26563         (tree-parloops.o): Likewise.
26564
26565 2009-04-17  Simon Baldwin  <simonb@google.com>
26566
26567         * toplev.c (default_tree_printer): Add handling for %E format.
26568
26569 2009-04-17  Diego Novillo  <dnovillo@google.com>
26570
26571         * tree-pretty-print.c (dump_generic_node): Add break after
26572         TREE_BINFO handler.  Handle COMPLEX_TYPE, REAL_TYPE and
26573         FIXED_POINT_TYPE.  Handle NULL TREE_TYPEs.  Handle METHOD_TYPE and
26574         FUNCTION_TYPE together.  Call print_struct_decl when printing
26575         structures and TDF_SLIM is not given.
26576         (print_struct_decl): Fix logic for detecting recursion.
26577
26578 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
26579
26580         PR 31567
26581         * gcc.c (create_at_file): New.
26582         (compile_input_file_p): New.
26583         (do_spec_1): Use @args files for %i. Use create_at_file for %o.
26584         * main.c (main): Update call to toplev_main.
26585         * toplev.c (toplev_main): Change signature. Call expandargv.
26586         * toplev.h (toplev_main): Change signature.
26587
26588 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
26589
26590         * dwarf2out.c (field_byte_offset): Use the type size as the field size
26591         if the latter is not constant.
26592
26593 2009-04-17  David Edelsohn  <edelsohn@gnu.org>
26594
26595         * dbxout.c (xcoff_debug_hooks): Add set_name_debug_nothing.
26596
26597 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
26598
26599         * dbxout.c (dbxout_block): Reinstate test on TREE_USED.
26600         * tree-ssa-live.c (remove_unused_scope_block_p): Update TREE_USED bit.
26601
26602 2009-04-17  Richard Guenther  <rguenther@suse.de>
26603
26604         * tree-ssa-structalias.c (get_constraint_for_component_ref):
26605         Handle component references view-converting an invariant address.
26606
26607 2009-04-17  Adam Nemet  <anemet@caviumnetworks.com>
26608
26609         * doc/tm.texi (TARGET_DEFAULT_TARGET_FLAGS,
26610         TARGET_MIN_ANCHOR_OFFSET, TARGET_MAX_ANCHOR_OFFSET,
26611         TARGET_HAVE_SRODATA_SECTION, TARGET_HAVE_TLS,
26612         TARGET_UNWIND_TABLES_DEFAULT, TARGET_TERMINATE_DW2_EH_FRAME_INFO):
26613         Use @deftypevr rather than @deftypevar.
26614
26615 2009-04-17  Richard Guenther  <rguenther@suse.de>
26616
26617         * tree-ssa-forwprop.c (get_prop_dest_stmt): Clean up tuplification.
26618         (get_prop_source_stmt): Likewise.
26619         (can_propagate_from): Likewise.
26620
26621 2009-04-17  Andrew Stubbs  <ams@codesourcery.com>
26622
26623         * configure.ac: Add new AC_SUBST for TM_ENDIAN_CONFIG,
26624         TM_MULTILIB_CONFIG and TM_MULTILIB_EXCEPTIONS_CONFIG.
26625         (--with-multilib-list): Add default value.
26626         * configure: Regenerate.
26627         * Makefile.in (TM_ENDIAN_CONFIG): Define.
26628         (TM_MULTILIB_CONFIG, TM_MULTILIB_EXCEPTIONS_CONFIG): Define.
26629         * config.gcc (sh-*-*): Switch to using TM_ENDIAN_CONFIG,
26630         TM_MULTILIB_CONFIG, and TM_MULTILIB_EXCEPTIONS_CONFIG.
26631         Don't add default cpu to multilib list unnecessarily, but do enable
26632         the relevant compiler option..
26633         Add support for --with-multilib-list=<blank> and
26634         --with-multilib-list=!<somelib> to supress unwanted multilibs.
26635         * config/sh/t-sh (DEFAULT_ENDIAN, OTHER_ENDIAN): New variables.
26636         (MULTILIB_ENDIAN, MULTILIB_CPUS): Delete variables.
26637         (MULTILIB_OPTIONS): Redefine using OTHER_ENDIAN and
26638         TM_MULTILIB_CONFIG.
26639         (MULTILIB_EXCEPTIONS): Add TM_MULTILIB_EXCEPTIONS_CONFIG.
26640         (MULTILIB_OSDIRNAMES): New variable.
26641         * config/sh/t-1e: Delete file.
26642         * config/sh/t-mlib-sh1: Delete file.
26643         * config/sh/t-mlib-sh2: Delete file.
26644         * config/sh/t-mlib-sh2a: Delete file.
26645         * config/sh/t-mlib-sh2a-nofpu: Delete file.
26646         * config/sh/t-mlib-sh2a-single: Delete file.
26647         * config/sh/t-mlib-sh2a-single-only: Delete file.
26648         * config/sh/t-mlib-sh2e: Delete file.
26649         * config/sh/t-mlib-sh3e: Delete file.
26650         * config/sh/t-mlib-sh4: Delete file.
26651         * config/sh/t-mlib-sh4-nofpu: Delete file.
26652         * config/sh/t-mlib-sh4-single: Delete file.
26653         * config/sh/t-mlib-sh4-single-only: Delete file.
26654         * config/sh/t-mlib-sh4a: Delete file.
26655         * config/sh/t-mlib-sh4a-nofpu: Delete file.
26656         * config/sh/t-mlib-sh4a-single: Delete file.
26657         * config/sh/t-mlib-sh4a-single-only: Delete file.
26658         * config/sh/t-mlib-sh4al: Delete file.
26659         * config/sh/t-mlib-sh5-32media: Delete file.
26660         * config/sh/t-mlib-sh5-32media-nofpu: Delete file.
26661         * config/sh/t-mlib-sh5-64media: Delete file.
26662         * config/sh/t-mlib-sh5-64media-nofpu: Delete file.
26663         * config/sh/t-mlib-sh5-compact: Delete file.
26664         * config/sh/t-mlib-sh5-compact-nofpu: Delete file.
26665         * config/sh/t-linux: Don't override MULTILIB_EXCEPTIONS.
26666         * doc/install.texi (Options specification): Add
26667         --with-multilib-list and --with-endian.
26668
26669 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
26670
26671         * Makefile.in (REVISION_s): Always include quotes. Change ifdef to use
26672         REVISION_c.
26673         (OBJS-common): Add plugin-version.o.
26674         (plugin-version.o): New.
26675         * gcc-plugin.h (plugin_gcc_version): New.
26676         (plugin_default_version_check): New.
26677         (plugin_init_func, plugin_init): Add version argument.
26678         * plugin-version.c: New.
26679         * plugin.c (str_plugin_gcc_version_name): New.
26680         (try_init_one_plugin): Read plugin_gcc_version from the plugin and
26681         pass it to the init function.
26682         (plugin_default_version_check): New.
26683
26684 2009-04-17  Richard Guenther  <rguenther@suse.de>
26685
26686         * tree-ssa-alias.c (refs_may_alias_p_1): Do not use TBAA
26687         for decl-vs-decl disambiguation.
26688
26689 2009-04-17  Andreas Krebbel  <krebbel1@de.ibm.com>
26690
26691         * config/s390/s390.h (s390_tune_attr): New macro definition.
26692         * config/s390/s390.md (cpu attribute): Map to s390_tune_attr.
26693
26694 2009-04-17  Richard Guenther  <rguenther@suse.de>
26695
26696         * tree-ssa-ccp.c (struct fold_stmt_r_data): Remove.
26697         (fold_stmt_r): Likewise.
26698         (maybe_fold_reference): New function.
26699         (fold_gimple_assign): Handle cases fold_stmt_r did.
26700         (fold_stmt): Do not use fold_stmt_r.
26701         (fold_stmt_inplace): Likewise.
26702
26703 2009-04-17  Richard Guenther  <rguenther@suse.de>
26704
26705         * tree-ssa-dom.c (gimple_assign_unary_useless_conversion_p): Remove.
26706         (record_equivalences_from_stmt): Remove useless checks and
26707         simplifications.
26708         * tree-ssa-pre.c (eliminate): Avoid converting a constant if
26709         the type is already suitable.
26710
26711 2009-04-17  Paolo Bonzini  <bonzini@gnu.org>
26712
26713         * config/sh/sh.h (FUNCTION_VALUE): Fix call to sh_promote_prototypes.
26714
26715 2009-04-17  Uros Bizjak  <ubizjak@gmail.com>
26716
26717         * config/arm/sfp-machine.h (__gcc_CMPtype): New typedef.
26718         (CMPtype): Define as __gcc_CMPtype.
26719
26720 2009-04-17  Aurelien Jarno  <aurelien@aurel32.net>
26721
26722         * config.gcc: Add soft-fp/t-softfp and i386/t-linux to tmake_file
26723         for i[34567]86-*-kfreebsd*-gnu*, x86_64-*-kfreebsd*-gnu*.
26724
26725 2009-04-17  Richard Guenther  <rguenther@suse.de>
26726
26727         PR tree-optimization/39746
26728         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Remove
26729         special-casing for builtins and static variable use/def.
26730         (call_may_clobber_ref_p_1): Likewise.
26731
26732 2009-04-16  Ian Lance Taylor  <iant@google.com>
26733
26734         * df.h: Include "timevar.h".
26735         (struct df_problem): Change tv_id field to timevar_id_t.
26736         * tree-pass.h: Include "timevar.h".
26737         (struct opt_pass): Change tv_id field to timevar_id_t.
26738         * timevar.h (timevar_id_t): Define TV_NONE.
26739         * passes.c (execute_one_ipa_transform_pass): Check for tv_id !=
26740         TV_NONE rather than tv_id != 0.
26741         (execute_one_pass): Likewise.
26742         * Makefile.in (DF_H): Add $(TIMEVAR_H).
26743         (TREE_PASS_H): Define.  Change all instances of tree-pass.h in
26744         dependencies to $(TREE_PASS_H).
26745         * bt-load.c (pass_branch_target_load_optimize1): Set tv_id field
26746         to TV_NONE.
26747         (pass_branch_target_load_optimize2): Likewise.
26748         * cfglayout.c (pass_into_cfg_layout_mode): Likewise.
26749         (pass_outof_cfg_layout_mode): Likewise.
26750         * cgraphbuild.c (pass_remove_cgraph_callee_edges): Likewise.
26751         (pass_rebuild_cgraph_edges): Likewise.
26752         (pass_remove_cgraph_callee_edges): Likewise.
26753         * df-core.c (pass_df_initialize_opt): Likewise.
26754         (pass_df_initialize_no_opt): Likewise.
26755         (pass_df_finish): Likewise.
26756         * emit-rtl.c (pass_unshare_all_rtl): Likewise.
26757         * except.c (pass_set_nothrow_function_flags): Likewise.
26758         (pass_convert_to_eh_region_ranges): Likewise.
26759         * final.c (pass_compute_alignments): Likewise.
26760         * function.c (pass_instantiate_virtual_regs): Likewise.
26761         (pass_init_function): Likewise.
26762         (pass_leaf_regs): Likewise.
26763         (pass_match_asm_constraints): Likewise.
26764         * gimple-low.c (pass_lower_cf): Likewise.
26765         (pass_mark_used_blocks): Likewise.
26766         * init-regs.c (pass_initialize_regs): Likewise.
26767         * integrate.c (pass_initial_value_sets): Likewise.
26768         * ira.c (pass_ira): Likewise.
26769         * jump.c (pass_cleanup_barriers): Likewise.
26770         * omp-low.c (pass_expand_omp): Likewise.
26771         (pass_lower_omp): Likewise.
26772         * matrix-reorg.c (pass_ipa_matrix_reorg): Likewise.
26773         * recog.c (pass_split_all_insns): Likewise.
26774         (pass_split_after_reload): Likewise.
26775         (pass_split_before_regstack): Likewise.
26776         (pass_split_before_sched2): Likewise.
26777         (pass_split_for_shorten_branches): Likewise.
26778         * reginfo.c (pass_reginfo_init): Likewise.
26779         (pass_subregs_of_mode_init): Likewise.
26780         (pass_subregs_of_mode_finish): Likewise.
26781         * passes.c (pass_postreload): Likewise.
26782         * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
26783         * tree-cfg.c (pass_remove_useless_stmts): Likewise.
26784         (pass_warn_function_return): Likewise.
26785         (pass_warn_function_noreturn): Likewise.
26786         * tree-complex.c (pass_lower_complex): Likewise.
26787         (pass_lower_complex_O0): Likewise.
26788         * tree-if-conv.c (pass_if_conversion): Likewise.
26789         * tree-into-ssa.c (pass_build_ssa): Likewise.
26790         * tree-mudflap.c (pass_mudflap_1): Likewise.
26791         (pass_mudflap_2): Likewise.
26792         * tree-nomudflap.c (pass_mudflap_1): Likewise.
26793         (pass_mudflap_2): Likewise.
26794         * tree-nrv.c (pass_return_slot): Likewise.
26795         * tree-object-size.c (pass_object_sizes): Likewise.
26796         * tree-optimize.c (pass_all_optimizations): Likewise.
26797         (pass_early_local_passes): Likewise.
26798         (pass_all_early_optimizations): Likewise.
26799         (pass_cleanup_cfg): Likewise.
26800         (pass_cleanup_cfg_post_optimizing): Likewise.
26801         (pass_free_datastructures): Likewise.
26802         (pass_free_cfg_annotations): Likewise.
26803         (pass_fixup_cfg): Likewise.
26804         (pass_init_datastructures): Likewise.
26805         * tree-ssa.c (pass_early_warn_uninitialized): Likewise.
26806         (pass_late_warn_uninitialized): Likewise.
26807         (pass_update_address_taken): Likewise.
26808         * tree-ssa-ccp.c (pass_fold_builtins): Likewise.
26809         * tree-ssa-math-opts.c (pass_cse_reciprocals): Likewise.
26810         (pass_cse_sincos): Likewise.
26811         (pass_convert_to_rsqrt): Likewise.
26812         * tree-ssa-structalias.c (pass_build_alias): Likewise.
26813         * tree-stdarg.c (pass_stdarg): Likewise.
26814         * tree-tailcall.c (pass_tail_recursion): Likewise.
26815         (pass_tail_calls): Likewise.
26816         * tree-vect-generic.c (pass_lower_vector): Likewise.
26817         (pass_lower_vector_ssa): Likewise.
26818         * tree-vectorizer.c (pass_ipa_increase_alignment): Likewise.
26819
26820 2009-04-16  Joseph Myers  <joseph@codesourcery.com>
26821
26822         * config/mips/mips.c (mips_rtx_cost_data): Use SOFT_FP_COSTS in
26823         XLR entry.
26824         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC):
26825         Handle -march=xlr.
26826         * config/mips/xlr.md (ir_xlr_alu): Also accept insn types move,
26827         logical and signext.
26828
26829 2009-04-16  Kaz Kojima  <kkojima@gcc.gnu.org>
26830
26831         PR target/39767
26832         * config/sh/predicates.md (arith_operand): Check if the operand
26833         of TRUNCATE is a REG.
26834
26835 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
26836
26837         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
26838         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
26839
26840 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
26841
26842         * tree-iterator.c (tsi_split_statement_list_after,
26843         tsi_split_statement_list_before): Remove.
26844         * tree-iterator.h: Remove the prototypes for
26845         tsi_split_statement_list_after and tsi_split_statement_list_before.
26846
26847 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
26848
26849         * tree-ssa-propagate.c (stmt_makes_single_load): Remove.
26850         * tree-ssa-propagate.h: Remove the prototype for
26851         stmt_makes_single_load.
26852
26853 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
26854
26855         * emit-rtl.c (set_mem_attrs_from_reg): Remove.
26856         * rtl.h: Remove the prototype for set_mem_attrs_from_reg.
26857
26858 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
26859
26860         * tree-iterator.c (EXPR_LAST_BODY): Remove.
26861
26862 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
26863
26864         * except.c (eh_region_outer_p): Remove.
26865         * except.h: Remove the prototype for eh_region_outer_p.
26866
26867 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
26868
26869         * function.c (current_function_assembler_name): Remove.
26870         * function.h: Remove the prototype for
26871         current_function_assembler_name.
26872
26873 2009-04-16  Ian Lance Taylor  <iant@google.com>
26874
26875         * rtlanal.c (alloc_reg_note): New function, broken out of add_reg_note.
26876         (add_reg_note): Call alloc_reg_note.
26877         * rtl.h (alloc_reg_note): Declare.
26878         * combine.c (try_combine): Use alloc_reg_note.
26879         (recog_for_combine, move_deaths): Likewise.
26880         (distribute_notes): Use alloc_reg_note and add_reg_note.
26881         * haifa-sched.c (sched_create_recovery_edges): Use add_reg_note.
26882         * combine-stack-adj.c (adjust_frame_related_expr): Likewise.
26883         * reload1.c (eliminate_regs_1): Use alloc_reg_note.
26884
26885 2009-04-16  Vladimir Makarov  <vmakarov@redhat.com>
26886
26887         PR rtl-optimization/39762
26888         * ira-int.h (ira_register_move_cost, ira_may_move_in_cost,
26889         ira_may_move_out_cost): Add comments about way of their usage.
26890         (ira_get_register_move_cost, ira_get_may_move_cost): New functions.
26891
26892         * ira-conflicts.c (process_regs_for_copy): Use function
26893         ira_get_register_move_cost instead of global
26894         ira_register_move_cost.
26895
26896         * ira-color.c (update_copy_costs, calculate_allocno_spill_cost,
26897         color_pass, move_spill_restore, update_curr_costs): Ditto.
26898
26899         * ira-lives.c (process_single_reg_class_operands): Ditto.
26900
26901         * ira-emit.c (emit_move_list): Ditto.
26902
26903         * ira-costs.c (copy_cost): Don't call ira_init_register_move_cost.
26904         (record_reg_classes): Ditto.  Use functions
26905         ira_get_register_move_cost and ira_get_may_move_cost instead of
26906         global vars ira_register_move_cost, ira_may_move_out_cost and
26907         ira_may_move_in_cost.
26908         (record_address_regs): Don't call ira_init_register_move_cost.
26909         Use function ira_get_may_move_cost instead of global
26910         ira_may_move_in_cost.
26911         (process_bb_node_for_hard_reg_moves): Use function
26912         ira_get_register_move_cost instead of global ira_register_move_cost.
26913         (ira_costs): Don't call ira_init_register_move_cost.
26914
26915 2009-04-16  Richard Guenther  <rguenther@suse.de>
26916
26917         * tree-cfg.c (verify_gimple_assign_binary):
26918         Allow POINTER_PLUS_EXPR-like PLUS_EXPR for vectors.
26919         * ipa-struct-reorg.c (gen_size): Fold the built expressions.
26920         (create_general_new_stmt): Note that this function is broken.
26921
26922 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
26923
26924         * common.opt (fhelp): Add Var(help_flag).
26925         * gcc-plugin.h (plugin_info): Add help.
26926         * plugin.c (plugin_name_args): Add help.
26927         (register_plugin_info): Set plugin->help.
26928         (print_help_one_plugin): New.
26929         (print_plugins_help): New.
26930         * plugin.h (print_plugins_help): New.
26931         * toplev.c (toplev_main): Call print_plugins_help if needed.
26932
26933 2009-04-16  Richard Guenther  <rguenther@suse.de>
26934
26935         * gimple.c (gimple_copy): Do not clear addresses_taken bitmap.
26936         (gimple_ior_addresses_taken_1): New function.
26937         (gimple_ior_addresses_taken): Likewise.
26938         * gimple.h (struct gimple_statement_with_ops_base): Remove
26939         addresses_taken member.
26940         (gimple_ior_addresses_taken): Declare.
26941         (gimple_addresses_taken, gimple_addresses_taken_ptr,
26942         gimple_set_addresses_taken): Remove.
26943         * ipa-reference.c (mark_address): New function.
26944         (scan_stmt_for_static_refs): Use it for marking addresses taken.
26945         * tree-ssa-operands.c (add_to_addressable_set): Rename to ...
26946         (mark_address_taken): ... this.  Just set TREE_ADDRESSABLE.
26947         (gimple_add_to_addresses_taken): Remove.
26948         (get_tmr_operands): Call mark_address_taken.
26949         (get_asm_expr_operands): Likewise.
26950         (get_expr_operands): Likewise.
26951         (build_ssa_operands): Do not clear the addresses_taken bitmap.
26952         (free_stmt_operands): Do not free it.
26953         * tree-ssa.c (delete_tree_ssa): Likewise.
26954         (execute_update_addresses_taken): Use gimple_ior_addresses_taken.
26955
26956 2009-04-16  Richard Guenther  <rguenther@suse.de>
26957
26958         * gimple.h (walk_stmt_load_store_addr_ops): Declare.
26959         (walk_stmt_load_store_ops): Likewise.
26960         * gimple.c (get_base_loadstore): New function.
26961         (walk_stmt_load_store_addr_ops): Likewise.
26962         (walk_stmt_load_store_ops): Likewise.
26963         * ipa-pure-const.c (check_op): Simplify.
26964         (check_load, check_store): New functions.
26965         (check_stmt): Use walk_stmt_load_store_ops.
26966         * ipa-reference.c (mark_load): Adjust signature.
26967         (mark_store): Likewise.
26968         (scan_stmt_for_static_refs): Use walk_stmt_load_store_addr_ops.
26969
26970 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
26971
26972         * gcc-plugin.h (plugin_event): Add PLUGIN_INFO.
26973         (plugin_info): New.
26974         * opts.c (common_handle_option): Don't call print_version.
26975         * plugin.c (plugin_name_args): Add version.
26976         (register_plugin_info): New.
26977         (register_callback): Handle PLUGIN_INFO.
26978         (try_init_one_plugin): New.
26979         (init_one_plugin): Use try_init_one_plugin. Only free plugin_name_args
26980         if failed to init.
26981         (finalize_one_plugin): New.
26982         (finalize_plugins): New.
26983         (print_one_plugin): New.
26984         (print_plugins_versions): New.
26985         * plugin.h (print_plugins_versions): New.
26986         (finalize_plugins): New.
26987         * toplev.c (compile_file): Don't call initialize_plugins.
26988         (print_version): Call print_plugins_versions.
26989         (toplev_main): Call initialize_plugins. Print version if needed.
26990         Call finalize_plugins.
26991
26992 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
26993
26994         * common.opt (fversion): New.
26995         * gcc.c (print_version): New.
26996         (process_command): Don't print the version. Just set print_version.
26997         (main): Print version. Call subprocesses if print_version and
26998         verbose_flag are set.
26999         * opts.c (common_handle_option): Handle OPT_fversion.
27000
27001 2009-04-16  Richard Guenther  <rguenther@suse.de>
27002             Ira Rosen  <irar@il.ibm.com>
27003
27004         PR tree-optimization/39698
27005         * tree-vect-loop.c (get_initial_def_for_reduction): Use the
27006         type of the reduction variable.  Only generate the def if
27007         it is needed.
27008
27009         * omp-low.c (expand_omp_for_generic): When converting to a pointer
27010         make sure to first convert to an integer of the same precision.
27011         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer): Retain
27012         the type of the evolution correctly in computing the new
27013         induction variable base.
27014
27015 2009-04-16  Richard Guenther  <rguenther@suse.de>
27016
27017         PR middle-end/39625
27018         * tree-cfg.c (make_blocks): Split statements with to-be
27019         abnormal SSA names on the lhs.
27020
27021 2009-04-16  Paolo Bonzini  <bonzini@gnu.org>
27022
27023         * c-common.c (vector_targets_convertible_p, vector_types_convertible_p):
27024         Use TYPE_VECTOR_OPAQUE instead of targetm.vector_opaque_p.
27025         * c-typeck.c (really_start_incremental_init): Likewise.
27026         * target-def.h (TARGET_VECTOR_OPAQUE_P): Remove.
27027         (TARGET_INITIALIZER): Remove it.
27028         * target.h (struct target): Remove vector_opaque_p.
27029         * tree.c (build_opaque_vector_type): New.
27030         * tree.h (TYPE_VECTOR_OPAQUE): New.
27031         (build_opaque_vector_type): Declare.
27032         * doc/tm.texi (TARGET_VECTOR_OPAQUE_P): Remove.
27033         * config/rs6000/rs6000.c (build_opaque_vector_type,
27034         rs6000_is_vector_type, TARGET_VECTOR_OPAQUE_P): Remove.
27035         (rs6000_init_builtins): Use build_opaque_vector_type for
27036         opaque_V4SI_type_node.
27037
27038 2009-04-15  Catherine Moore  <clm@codesourcery.com>
27039
27040         * debug.h (set_name):  Declare.
27041         * dwarf2out.c (dwarf2out_set_name): Declare.
27042         (dwarf2_debug_hooks): Add set_name.
27043         (find_AT_string): New.
27044         (add_AT_string): Call find_AT_string.
27045         (dwarf2out_set_name): New.
27046         * cp/decl.c (grokdeclarator): Call set_name.
27047         * vmsdbgout.c (vmsdbg_debug_hooks): Add set_name_debug_nothing.
27048         * debug.c (do_nothing_debug_hooks):  Likewise.
27049         * dbxout.c (dbx_debug_hooks): Likewise.
27050         * sdbout.c (sdb_debug_hooks): Likewise.
27051
27052 2009-04-15  Michael Eager  <eager@eagercon.com>
27053
27054         * config/rs6000/rs6000.c (rs6000_function_value): Set function return
27055         reg for single-precision FPU.
27056         * config/rs6000/rs6000.md (movsi_internal1): Only for
27057         !TARGET_SINGLE_FPU.
27058         (movsi_internal1_single): New. Add pattern to move SI values to/from
27059         single-precision FP regs.
27060
27061 2009-04-15  Richard Guenther  <rguenther@suse.de>
27062
27063         * omp-low.c (lower_rec_input_clauses): Build correct address
27064         expressions.
27065         (expand_omp_for_generic): Fix multiplication type.
27066         * tree-loop-distribution.c (build_size_arg): Build a size_t argument.
27067         (generate_memset_zero): Fix types.
27068         * tree-profile.c (prepare_instrumented_value): Correctly
27069         widen a pointer.
27070
27071 2009-04-15  Ian Lance Taylor  <iant@google.com>
27072
27073         * c.opt (Wenum-compare): Enable for C and Objc.  Initialize to -1.
27074         * c-opts.c (c_common_handle_option): For C, set warn_enum_compare
27075         for -Wall and for -Wc++-compat.
27076         (c_common_post_options): For C++, set warn_enum_compare if not
27077         already set.
27078         * c-tree.h (struct c_expr): Add field original_type.
27079         (build_external_ref): Update declaration.
27080         * c-parser.c (c_parser_braced_init): Set original_type.
27081         (c_parser_initelt): Likewise.
27082         (c_parser_expr_no_commas): Likewise.
27083         (c_parser_conditional_expression): Likewise.
27084         (c_parser_cast_expression): Likewise.
27085         (c_parser_unary_expression): Likewise.  Pull setting of
27086         original_code to top of function.
27087         (c_parser_sizeof_expression): Set original_type.
27088         (c_parser_alignof_expression): Likewise.
27089         (c_parser_postfix_expression): Likewise.  Pull setting of
27090         original_code to top of function.
27091         (c_parser_postfix_expression_after_paren_type): Set original_type.
27092         (c_parser_postfix_expression_after_primary): Likewise.
27093         (c_parser_expression): Likewise.
27094         * c-typeck.c (build_external_ref): Add type parameter.  Change all
27095         callers.
27096         (c_expr_sizeof_expr): Set original_type field.
27097         (parser_build_unary_op): Likewise.
27098         (parser_build_binary_op): Likewise.  Optionally warn about
27099         comparisons of enums of different types.
27100         (digest_init): Set original_type field.
27101         (really_start_incremental_init): Likewise.
27102         (push_init_level, pop_init_level): Likewise.
27103         * doc/invoke.texi (Warning Options): -Wenum-compare now
27104         supported in C.
27105
27106 2009-04-15  Richard Guenther  <rguenther@suse.de>
27107
27108         * tree-ssa-pre.c (eliminate): When replacing a PHI node carry
27109         out a necessary conversion.
27110         * tree-ssa-sccvn.c (run_scc_vn): Also assign value-ids to
27111         names we didn't value number.
27112         * tree-mudflap.c (mf_build_check_statement_for): Use correct types.
27113
27114 2009-04-15  Richard Guenther  <rguenther@suse.de>
27115
27116         PR tree-optimization/39764
27117         * tree-ssa-ccp.c (get_value): Canonicalize value with
27118         canonicalize_float_value.
27119
27120 2009-04-15  Jan Hubicka  <jh@suse.cz>
27121
27122         * builtins.def (va_start, va_end, va_copy): Fix my previous commit.
27123         Wrong version of patch.
27124
27125 2009-04-15  Jan Hubicka  <jh@suse.cz>
27126
27127         * builtins.def (va_start, va_end, va_copy): Mark nothrow.
27128
27129 2009-04-15  Nathan Sidwell  <nathan@codesourcery.com>
27130
27131         * config/rs6000/rs6000.c (rs6000_init_builtins): Set TYPE_NAME of
27132         our distinct integral and vector types.
27133
27134 2009-04-15  Rafael Avila de Espindola  <espindola@google.com>
27135
27136         * class.c (build_vtbl_ref_1): Remove call to assemble_external.
27137         * init.c (build_vtbl_address): Remove call to assemble_external.
27138
27139 2009-04-14  Daniel Jacobowitz  <dan@codesourcery.com>
27140
27141         * config/rs6000/rs6000.c (rs6000_dwarf_register_span): Fix debug
27142         output for other floating point modes.
27143
27144 2009-04-14  Diego Novillo  <dnovillo@google.com>
27145
27146         * diagnostic.c (diagnostic_report_diagnostic): Do not
27147         warn about loaded plugins for DK_ERROR and DK_WARNING.
27148         * c-decl.c (declspecs_add_type): Move call to
27149         invoke_plugin_callbacks ...
27150         * c-parser.c (c_parser_declspecs): ... here.
27151         * plugin.c (dump_active_plugins): Tidy output.
27152
27153 2009-04-14  Diego Novillo  <dnovillo@google.com>
27154             Le-Chun Wu  <lcwu@google.com>
27155
27156         * configure.ac: Add --enable-plugin support.
27157         Define ENABLE_PLUGIN and PLUGINLIBS when specified.
27158         * Makefile.in (PLUGIN_H): Define.
27159         Export ENABLE_PLUGIN and GMPINC to site.exp.
27160         Add PLUGINLIBS to link command.
27161         Add/modify dependencies for plugin.o and files including plugin.h.
27162         (plugin.o): New.
27163         * config.in: Regenerate.
27164
27165         * opts.c (common_handle_option): Handle OPT_fplugin_ and
27166         OPT_fplugin_arg_.
27167
27168 2009-04-14  Le-Chun Wu  <lcwu@google.com>
27169
27170         * tree-pass.h (register_one_dump_file): Add a prototype for
27171         register_one_dump_file.
27172         * toplev.c (compile_file): Call initialize_plugins.
27173         (do_compile): Call invoke_plugin_callbacks.
27174         (toplev_main): Call invoke_plugin_callbacks.
27175         * common.opt: Add -fplugin= and -fplugin-arg-.
27176         * gcc-plugin.h: New public header file for plugins to include.
27177         * plugin.c: New source file.
27178         * plugin.h: New internal header file.
27179         * passes.c (register_one_dump_file): Make it external.
27180
27181         * c-parser.c (c_parser_declspecs): Call invoke_plugin_callbacks.
27182
27183 2009-04-14  Diego Novillo  <dnovillo@google.com>
27184
27185         * doc/plugins.texi: New.
27186         * doc/gccint.texi: Add reference to Plugins chapter.
27187         * doc/invoke.texi: Document -fplugin and -fplugin-arg
27188         * diagnostic.c (diagnostic_report_diagnostic): Warn about
27189         loaded plugins, if any.
27190         * timevar.def (TV_PLUGIN_INIT): Define.
27191         (TV_PLUGIN_RUN): Define.
27192         * plugin.c: Include timevar.h
27193         (plugins_active_p): New.
27194         (dump_active_plugins): New.
27195         (debug_active_plugins): New.
27196
27197 2009-04-14  Joseph Myers  <joseph@codesourcery.com>
27198
27199         * config/sol2.h (LINK_ARCH32_SPEC_BASE): Use %R with absolute
27200         library paths.
27201         * config/sparc/sol2-bi.h (LINK_ARCH64_SPEC_BASE): Likewise.
27202
27203 2009-04-14  Kazu Hirata  <kazu@codesourcery.com>
27204
27205         * config/arm/arm.c (arm_rtx_costs_1): Treat a minus with a shift
27206         the same as a minus without a shift.
27207
27208 2009-04-14  Nick Clifton  <nickc@redhat.com>
27209
27210         * config/stormy16/stormy16.md (ineqbranch_1): Do not assume that
27211         comparisons with small integers will always produce a short
27212         branch.
27213
27214 2009-04-14  Rafael Avila de Espindola  <espindola@google.com>
27215
27216         Merge:
27217         2008-12-19  Diego Novillo  <dnovillo@google.com>
27218
27219         * cgraph.c (dump_cgraph_node): Show memory address of NODE.
27220
27221 2009-04-14  Richard Guenther  <rguenther@suse.de>
27222
27223         * tree-cfg.c (verify_gimple_assign_unary): Adjust vector code
27224         verification.
27225         (verify_gimple_assign_binary): Likewise.  Handle shifts and
27226         rotates correctly.
27227         (verify_gimple_phi): Print the mismatched argument position.
27228         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer):
27229         Fix types.
27230         (vect_update_init_of_dr): Likewise.
27231         * matrix-reorg.c (transform_access_sites): Do what the
27232         comment suggests.
27233         * omp-low.c (expand_omp_atomic_pipeline): Use the correct types.
27234
27235 2009-04-13  Michael Eager  <eager@eagercon.com>
27236
27237         * config/rs6000/rs6000-c.c: generate defines if rs6000_xilinx_fpu:
27238         _XFPU, _XFPU_SP_LITE, _XFPU_SP_FULL, _XFPU_DP_LITE, _XFPU_DP_FULL
27239         * config/rs6000/xilinx.h: New.  Spec for powerpc-xilinx-eabi
27240         * config.gcc (powerpc-xilinx-eabi): add xilinx.h to tm_file,
27241         remove duplicate config
27242
27243 2009-04-13  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
27244
27245         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Dump
27246         file_name:line_number type locator of the call site.
27247
27248 2009-04-13  Vladimir Makarov  <vmakarov@redhat.com>
27249
27250         * genautomata.c: Put blank after comma.
27251         (automaton_decls): New.
27252         (struct unit_usage): Add comments to member next.
27253         (store_alt_unit_usage): Keep the list ordered.
27254         (unit_present_on_list_p, equal_alternatives_p): New.
27255         (check_regexp_units_distribution): Check units distribution
27256         correctness correctly.
27257         (main): Don't write automata if error is found.  Return correct
27258         exit code.
27259
27260         * config/m68k/cf.md (cfv4_ds): Remove.
27261         (cfv4_pOEP1, cfv4_sOEP1, cfv4_pOEP2,cfv4_sOEP2, cfv4_pOEP3,
27262         cfv4_sOEP3): Assign to cfv4_oep instead of cfv4_ds.
27263
27264         * config/rs6000/power4.md (lsuq_power4, iq_power4, fpq_power4,
27265         power4-load-ext, power4-store, power4-store-update,
27266         power4-fpstore, power4-fpstore-update, power4-two, power4-three,
27267         power4-insert, power4-compare, power4-lmul-cmp, power4-imul-cmp,
27268         power4-lmul, , power4-imul, power4-imul3, power4-sdiv,
27269         power4-sqrt, power4-isync): Modify reservation to make correct
27270         unit distribution to automata.
27271
27272         * config/rs6000/power5.md (iq_power5, fpq_power5, power5-store,
27273         power5-store-update, power5-two, power5-three, power5-lmul,
27274         power5-imul, power5-imul3, power5-sdiv, power5-sqrt): Ditto.
27275
27276 2009-04-13  Adam Nemet  <anemet@caviumnetworks.com>
27277
27278         * except.c (pass_set_nothrow_function_flags): Set name and add
27279         TODO_dump_func.
27280         (set_nothrow_function_flags): Mention in the dump file when
27281         changing a function to nothrow.
27282
27283 2009-04-13  Ozkan Sezer  <sezeroz@gmail.com>
27284
27285         PR/39066
27286         * gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Use __SIZE_TYPE__
27287         instead of unsigned long.
27288
27289 2009-04-13  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
27290
27291         * config/arm/arm.c (return_used_this_function): Remove.
27292         (arm_output_function_prologue): Remove use of
27293         return_used_this_function.
27294         (output_return_instruction): Replace use of
27295         return_used_this_function
27296         by cfun->machine->return_used_this_function.
27297         (arm_output_epilogue): Likewise.
27298         (arm_output_function_epilogue): Likewise.
27299         (thumb_unexpanded_epilogue): Likewise.
27300         * config/arm/arm.h (struct machine_function):
27301         New member return_used_this_function.
27302
27303 2009-04-12  Mark Mitchell  <mark@codesourcery.com>
27304
27305         * doc/install.texi: Correct description of default directory for
27306         --with-gxx-include-dir.
27307
27308 2009-04-12  Eric Botcazou  <ebotcazou@adacore.com>
27309
27310         * fold-const.c (build_range_check): Properly deal with enumeral and
27311         boolean base types.
27312
27313 2009-04-12  Steven Bosscher  <steven@gcc.gnu.org>
27314
27315         * doc/invoke.texi (max_gcse_passes): Remove documentation.
27316         * params.def (PARAM_MAX_GCSE_PASSES): Remove.
27317         * params.h (MAX_GCSE_PASSES): Remove.
27318         * gcse.c (gcse_main): Run CPROP1, PRE or HOIST, and CPROP2
27319         in sequence.  Remove ability to run multiple passes.
27320         (bypass_jumps): Report run as third CPROP pass.
27321
27322 2009-04-12  Adam Nemet  <anemet@caviumnetworks.com>
27323
27324         PR middle-end/39651
27325         * except.c (can_throw_external): Look at each insn in a SEQUENCE
27326         when deciding whether the whole SEQUENCE can throw.
27327
27328 2009-04-12  Uros Bizjak  <ubizjak@gmail.com>
27329
27330         PR target/39740
27331         * config/alpha/predicates.md (local_symbolic_operand): Return 1 for
27332         offseted label references.
27333
27334 2009-04-11  Jan Hubicka  <jh@suse.cz>
27335
27336         * tree-ssa-pre.c (eliminate): Fix call of update_stmt.
27337
27338 2009-04-11  Richard Guenther  <rguenther@suse.de>
27339
27340         PR middle-end/39732
27341         * tree-inline.c (declare_return_variable): Mark DECL_BY_REFERENCE
27342         return variables as TREE_ADDRESSABLE.
27343
27344 2009-04-11  Richard Guenther  <rguenther@suse.de>
27345
27346         PR tree-optimization/39713
27347         * tree-ssa-sccvn.c (vn_get_expr_for): Make sure built
27348         reference trees have SSA_NAME operands.
27349
27350 2009-04-11  Richard Guenther  <rguenther@suse.de>
27351
27352         PR c/39712
27353         * c-gimplify.c (c_gimplify_expr): Adjust check for mismatched
27354         address expressions.
27355
27356 2009-04-11  Dave Korn  <dave.korn.cygwin@gmail.com>
27357
27358         * config/i386/cygwin-stdint.h (INT_LEAST32_TYPE):  Update to
27359         match changes in Cygwin 1.7
27360         (UINT_LEAST32_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE,
27361         UINT_FAST16_TYPE, UINT_FAST32_TYPE):  Likewise.
27362
27363 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
27364
27365         PR tree-optimization/39701
27366         * doc/invoke.texi (Optimization Options): Document change in
27367         meaning and initialization of -fdelete-null-pointer-checks.
27368
27369 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
27370
27371         PR middle-end/39701
27372         * common.opt (-fdelete-null-pointer-checks): Initialize to 1.
27373
27374         * opts.c (decode_options): Don't set flag_delete_null_pointer_checks
27375         here.
27376
27377         * doc/invoke.texi: Update -fdelete-null-pointer-checks.
27378
27379 2009-04-10  Chao-ying Fu  <fu@mips.com>
27380
27381         * doc/tm.texi (Instruction Output): Document
27382         TARGET_ASM_FINAL_POSTSCAN_INSN.
27383         * target.h (final_postscan_insn): New field in asm_out.
27384         * target-def.h (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
27385         (TARGET_ASM_OUT): Add TARGET_ASM_FINAL_POSTSCAN_INSN.
27386         * final.c (final_scan_insn): Call
27387         targetm.asm_out.final_postscan_insn after outputting
27388         an asm macro and a normal instruction.
27389
27390         * config/mips/mips.h (FINAL_PRESCAN_INSN): New define.
27391         * config/mips/mips-protos.h (mips_final_prescan_insn): Declare.
27392         * config/mips/mips.c (mips_at_reg_p): New for_each_rtx callback.
27393         (mips_final_prescan_insn, mips_final_postscan_insn): New functions.
27394         (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
27395
27396 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
27397
27398         PR middle-end/39701
27399         * fold-const.c (tree_single_nonzero_warnv_p): Pass non-static
27400         variables as non-NULL even with -fdelete-null-pointer-checks.
27401
27402 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
27403
27404         * config/rs6000/darwin-vecsave.asm: Remove extra "*/".
27405
27406 2009-04-09  H.J. Lu  <hongjiu.lu@intel.com>
27407
27408         PR target/39678
27409         * config/i386/i386.c (classify_argument): Handle SCmode with
27410         (bit_offset % 64) != 0.
27411
27412 2009-04-09  Sandra Loosemore  <sandra@codesourcery.com>
27413
27414         * doc/invoke.texi (Optimize Options): Add cross-reference to
27415         -Q --help=optimizers examples.
27416
27417 2009-04-10  Ben Elliston  <bje@au.ibm.com>
27418
27419         PR target/36800
27420         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Do not set
27421         regalign for the reg == fpr and TDmode case.
27422
27423 2009-04-09  David Ayers  <ayers@fsfe.org>
27424
27425         PR objc/29200
27426         * objc/objc-act.c (warn_with_method): Remove helper function.
27427         (check_duplicates): Call warning and inform directly.
27428         (really_start_method): Likewise.
27429
27430 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
27431
27432         * expmed.c (expand_divmod): Always use a comparison for a division
27433         by a large unsigned integer.
27434
27435         * fold-const.c (tree_single_nonzero_warnv_p): Always treat decls
27436         for things others than variables or functions as nonzero.
27437
27438 2009-04-09  Nick Clifton  <nickc@redhat.com>
27439
27440         * unwind-compat.c: Change copyright header to refer to version
27441         3 of the GNU General Public License with version 3.1 of the
27442         GCC Runtime Library Exception and to point readers at the
27443         COPYING3 and COPYING3.RUNTIME files and the FSF's license web page.
27444         * config/alpha/crtfastmath.c: Likewise.
27445         * config/alpha/linux-unwind.h: Likewise.
27446         * config/alpha/qrnnd.asm: Likewise.
27447         * config/alpha/vms-crt0-64.c: Likewise.
27448         * config/alpha/vms-crt0.c: Likewise.
27449         * config/alpha/vms-dwarf2.asm: Likewise.
27450         * config/alpha/vms-dwarf2eh.asm: Likewise.
27451         * config/alpha/vms-psxcrt0-64.c: Likewise.
27452         * config/alpha/vms-psxcrt0.c: Likewise.
27453         * config/alpha/vms_tramp.asm: Likewise.
27454         * config/arc/initfini.c: Likewise.
27455         * config/arc/lib1funcs.asm: Likewise.
27456         * config/arm/bpabi-v6m.S: Likewise.
27457         * config/arm/bpabi.S: Likewise.
27458         * config/arm/bpabi.c: Likewise.
27459         * config/arm/crti.asm: Likewise.
27460         * config/arm/crtn.asm: Likewise.
27461         * config/arm/ieee754-df.S: Likewise.
27462         * config/arm/ieee754-sf.S: Likewise.
27463         * config/arm/lib1funcs.asm: Likewise.
27464         * config/arm/libunwind.S: Likewise.
27465         * config/arm/linux-atomic.c: Likewise.
27466         * config/arm/mmintrin.h: Likewise.
27467         * config/arm/pr-support.c: Likewise.
27468         * config/arm/unaligned-funcs.c: Likewise.
27469         * config/arm/unwind-arm.c: Likewise.
27470         * config/arm/unwind-arm.h: Likewise.
27471         * config/avr/libgcc.S: Likewise.
27472         * config/bfin/crti.s: Likewise.
27473         * config/bfin/crtlibid.s: Likewise.
27474         * config/bfin/crtn.s: Likewise.
27475         * config/bfin/lib1funcs.asm: Likewise.
27476         * config/bfin/linux-unwind.h: Likewise.
27477         * config/cris/arit.c: Likewise.
27478         * config/cris/cris_abi_symbol.c: Likewise.
27479         * config/darwin-64.c: Likewise.
27480         * config/darwin-crt2.c: Likewise.
27481         * config/darwin-crt3.c: Likewise.
27482         * config/darwin.h: Likewise.
27483         * config/dbxelf.h: Likewise.
27484         * config/dfp-bit.c: Likewise.
27485         * config/dfp-bit.h: Likewise.
27486         * config/elfos.h: Likewise.
27487         * config/fixed-bit.c: Likewise.
27488         * config/fixed-bit.h: Likewise.
27489         * config/fp-bit.c: Likewise.
27490         * config/fp-bit.h: Likewise.
27491         * config/fr30/crti.asm: Likewise.
27492         * config/fr30/crtn.asm: Likewise.
27493         * config/fr30/lib1funcs.asm: Likewise.
27494         * config/freebsd-spec.h: Likewise.
27495         * config/frv/cmovd.c: Likewise.
27496         * config/frv/cmovh.c: Likewise.
27497         * config/frv/cmovw.c: Likewise.
27498         * config/frv/frvbegin.c: Likewise.
27499         * config/frv/frvend.c: Likewise.
27500         * config/frv/lib1funcs.asm: Likewise.
27501         * config/glibc-stdint.h: Likewise.
27502         * config/h8300/clzhi2.c: Likewise.
27503         * config/h8300/crti.asm: Likewise.
27504         * config/h8300/crtn.asm: Likewise.
27505         * config/h8300/ctzhi2.c: Likewise.
27506         * config/h8300/fixunssfsi.c: Likewise.
27507         * config/h8300/lib1funcs.asm: Likewise.
27508         * config/h8300/parityhi2.c: Likewise.
27509         * config/h8300/popcounthi2.c: Likewise.
27510         * config/i386/ammintrin.h: Likewise.
27511         * config/i386/att.h: Likewise.
27512         * config/i386/avxintrin.h: Likewise.
27513         * config/i386/biarch64.h: Likewise.
27514         * config/i386/bmmintrin.h: Likewise.
27515         * config/i386/cpuid.h: Likewise.
27516         * config/i386/cross-stdarg.h: Likewise.
27517         * config/i386/crtfastmath.c: Likewise.
27518         * config/i386/crtprec.c: Likewise.
27519         * config/i386/cygming-crtbegin.c: Likewise.
27520         * config/i386/cygming-crtend.c: Likewise.
27521         * config/i386/cygwin.asm: Likewise.
27522         * config/i386/emmintrin.h: Likewise.
27523         * config/i386/gmm_malloc.h: Likewise.
27524         * config/i386/gthr-win32.c: Likewise.
27525         * config/i386/i386.h: Likewise.
27526         * config/i386/immintrin.h: Likewise.
27527         * config/i386/linux-unwind.h: Likewise.
27528         * config/i386/linux64.h: Likewise.
27529         * config/i386/mm3dnow.h: Likewise.
27530         * config/i386/mmintrin-common.h: Likewise.
27531         * config/i386/mmintrin.h: Likewise.
27532         * config/i386/nmmintrin.h: Likewise.
27533         * config/i386/pmm_malloc.h: Likewise.
27534         * config/i386/pmmintrin.h: Likewise.
27535         * config/i386/smmintrin.h: Likewise.
27536         * config/i386/sol2-c1.asm: Likewise.
27537         * config/i386/sol2-ci.asm: Likewise.
27538         * config/i386/sol2-cn.asm: Likewise.
27539         * config/i386/sol2-gc1.asm: Likewise.
27540         * config/i386/tmmintrin.h: Likewise.
27541         * config/i386/unix.h: Likewise.
27542         * config/i386/w32-unwind.h: Likewise.
27543         * config/i386/wmmintrin.h: Likewise.
27544         * config/i386/x86-64.h: Likewise.
27545         * config/i386/x86intrin.h: Likewise.
27546         * config/i386/xmmintrin.h: Likewise.
27547         * config/ia64/crtbegin.asm: Likewise.
27548         * config/ia64/crtend.asm: Likewise.
27549         * config/ia64/crtfastmath.c: Likewise.
27550         * config/ia64/crti.asm: Likewise.
27551         * config/ia64/crtn.asm: Likewise.
27552         * config/ia64/fde-glibc.c: Likewise.
27553         * config/ia64/lib1funcs.asm: Likewise.
27554         * config/ia64/linux-unwind.h: Likewise.
27555         * config/ia64/quadlib.c: Likewise.
27556         * config/ia64/unwind-ia64.c: Likewise.
27557         * config/linux.h: Likewise.
27558         * config/m32c/m32c-lib1.S: Likewise.
27559         * config/m32c/m32c-lib2-trapv.c: Likewise.
27560         * config/m32c/m32c-lib2.c: Likewise.
27561         * config/m32r/initfini.c: Likewise.
27562         * config/m68hc11/larith.asm: Likewise.
27563         * config/m68hc11/m68hc11-crt0.S: Likewise.
27564         * config/m68k/cf.md: Likewise.
27565         * config/m68k/crti.s: Likewise.
27566         * config/m68k/crtn.s: Likewise.
27567         * config/m68k/lb1sf68.asm: Likewise.
27568         * config/m68k/linux-unwind.h: Likewise.
27569         * config/mcore/crti.asm: Likewise.
27570         * config/mcore/crtn.asm: Likewise.
27571         * config/mcore/lib1.asm: Likewise.
27572         * config/mips/linux-unwind.h: Likewise.
27573         * config/mips/loongson.h: Likewise.
27574         * config/mips/mips16.S: Likewise.
27575         * config/mmix/crti.asm: Likewise.
27576         * config/mmix/crtn.asm: Likewise.
27577         * config/pa/fptr.c: Likewise.
27578         * config/pa/hpux-unwind.h: Likewise.
27579         * config/pa/lib2funcs.asm: Likewise.
27580         * config/pa/linux-atomic.c: Likewise.
27581         * config/pa/linux-unwind.h: Likewise.
27582         * config/pa/milli64.S: Likewise.
27583         * config/pa/quadlib.c: Likewise.
27584         * config/pa/stublib.c: Likewise.
27585         * config/picochip/libgccExtras/adddi3.asm: Likewise.
27586         * config/picochip/libgccExtras/ashlsi3.asm: Likewise.
27587         * config/picochip/libgccExtras/ashlsi3.c: Likewise.
27588         * config/picochip/libgccExtras/ashrsi3.asm: Likewise.
27589         * config/picochip/libgccExtras/ashrsi3.c: Likewise.
27590         * config/picochip/libgccExtras/cmpsi2.asm: Likewise.
27591         * config/picochip/libgccExtras/divmod15.asm: Likewise.
27592         * config/picochip/libgccExtras/divmodhi4.asm: Likewise.
27593         * config/picochip/libgccExtras/divmodsi4.asm: Likewise.
27594         * config/picochip/libgccExtras/longjmp.asm: Likewise.
27595         * config/picochip/libgccExtras/lshrsi3.asm: Likewise.
27596         * config/picochip/libgccExtras/lshrsi3.c: Likewise.
27597         * config/picochip/libgccExtras/parityhi2.asm: Likewise.
27598         * config/picochip/libgccExtras/popcounthi2.asm: Likewise.
27599         * config/picochip/libgccExtras/setjmp.asm: Likewise.
27600         * config/picochip/libgccExtras/subdi3.asm: Likewise.
27601         * config/picochip/libgccExtras/ucmpsi2.asm: Likewise.
27602         * config/picochip/libgccExtras/udivmodhi4.asm: Likewise.
27603         * config/picochip/libgccExtras/udivmodsi4.asm: Likewise.
27604         * config/rs6000/750cl.h: Likewise.
27605         * config/rs6000/altivec.h: Likewise.
27606         * config/rs6000/biarch64.h: Likewise.
27607         * config/rs6000/crtresfpr.asm: Likewise.
27608         * config/rs6000/crtresgpr.asm: Likewise.
27609         * config/rs6000/crtresxfpr.asm: Likewise.
27610         * config/rs6000/crtresxgpr.asm: Likewise.
27611         * config/rs6000/crtsavfpr.asm: Likewise.
27612         * config/rs6000/crtsavgpr.asm: Likewise.
27613         * config/rs6000/darwin-asm.h: Likewise.
27614         * config/rs6000/darwin-fallback.c: Likewise.
27615         * config/rs6000/darwin-fpsave.asm: Likewise.
27616         * config/rs6000/darwin-ldouble.c: Likewise.
27617         * config/rs6000/darwin-tramp.asm: Likewise.
27618         * config/rs6000/darwin-unwind.h: Likewise.
27619         * config/rs6000/darwin-vecsave.asm: Likewise.
27620         * config/rs6000/darwin-world.asm: Likewise.
27621         * config/rs6000/e500crtres32gpr.asm: Likewise.
27622         * config/rs6000/e500crtres64gpr.asm: Likewise.
27623         * config/rs6000/e500crtres64gprctr.asm: Likewise.
27624         * config/rs6000/e500crtrest32gpr.asm: Likewise.
27625         * config/rs6000/e500crtrest64gpr.asm: Likewise.
27626         * config/rs6000/e500crtresx32gpr.asm: Likewise.
27627         * config/rs6000/e500crtresx64gpr.asm: Likewise.
27628         * config/rs6000/e500crtsav32gpr.asm: Likewise.
27629         * config/rs6000/e500crtsav64gpr.asm: Likewise.
27630         * config/rs6000/e500crtsav64gprctr.asm: Likewise.
27631         * config/rs6000/e500crtsavg32gpr.asm: Likewise.
27632         * config/rs6000/e500crtsavg64gpr.asm: Likewise.
27633         * config/rs6000/e500crtsavg64gprctr.asm: Likewise.
27634         * config/rs6000/eabi-ci.asm: Likewise.
27635         * config/rs6000/eabi-cn.asm: Likewise.
27636         * config/rs6000/eabi.asm: Likewise.
27637         * config/rs6000/linux-unwind.h: Likewise.
27638         * config/rs6000/linux64.h: Likewise.
27639         * config/rs6000/paired.h: Likewise.
27640         * config/rs6000/paired.md: Likewise.
27641         * config/rs6000/ppc64-fp.c: Likewise.
27642         * config/rs6000/ppu_intrinsics.h: Likewise.
27643         * config/rs6000/rs6000.h: Likewise.
27644         * config/rs6000/si2vmx.h: Likewise.
27645         * config/rs6000/sol-ci.asm: Likewise.
27646         * config/rs6000/sol-cn.asm: Likewise.
27647         * config/rs6000/spe.h: Likewise.
27648         * config/rs6000/spu2vmx.h: Likewise.
27649         * config/rs6000/sysv4.h: Likewise.
27650         * config/rs6000/tramp.asm: Likewise.
27651         * config/rs6000/vec_types.h: Likewise.
27652         * config/s390/linux-unwind.h: Likewise.
27653         * config/s390/tpf-unwind.h: Likewise.
27654         * config/score/crti.asm: Likewise.
27655         * config/score/crtn.asm: Likewise.
27656         * config/sh/crt1.asm: Likewise.
27657         * config/sh/crti.asm: Likewise.
27658         * config/sh/crtn.asm: Likewise.
27659         * config/sh/divtab-sh4-300.c: Likewise.
27660         * config/sh/divtab-sh4.c: Likewise.
27661         * config/sh/divtab.c: Likewise.
27662         * config/sh/lib1funcs-4-300.asm: Likewise.
27663         * config/sh/lib1funcs-Os-4-200.asm: Likewise.
27664         * config/sh/lib1funcs.asm: Likewise.
27665         * config/sh/lib1funcs.h: Likewise.
27666         * config/sh/linux-atomic.asm: Likewise.
27667         * config/sh/linux-unwind.h: Likewise.
27668         * config/sh/shmedia.h: Likewise.
27669         * config/sh/sshmedia.h: Likewise.
27670         * config/sh/ushmedia.h: Likewise.
27671         * config/sparc/crtfastmath.c: Likewise.
27672         * config/sparc/linux-unwind.h: Likewise.
27673         * config/sparc/sol2-c1.asm: Likewise.
27674         * config/sparc/sol2-ci.asm: Likewise.
27675         * config/sparc/sol2-cn.asm: Likewise.
27676         * config/spu/divmodti4.c: Likewise.
27677         * config/spu/divv2df3.c: Likewise.
27678         * config/spu/float_disf.c: Likewise.
27679         * config/spu/float_unsdidf.c: Likewise.
27680         * config/spu/float_unsdisf.c: Likewise.
27681         * config/spu/float_unssidf.c: Likewise.
27682         * config/spu/mfc_multi_tag_release.c: Likewise.
27683         * config/spu/mfc_multi_tag_reserve.c: Likewise.
27684         * config/spu/mfc_tag_release.c: Likewise.
27685         * config/spu/mfc_tag_reserve.c: Likewise.
27686         * config/spu/mfc_tag_table.c: Likewise.
27687         * config/spu/multi3.c: Likewise.
27688         * config/spu/spu_internals.h: Likewise.
27689         * config/spu/spu_intrinsics.h: Likewise.
27690         * config/spu/spu_mfcio.h: Likewise.
27691         * config/spu/vec_types.h: Likewise.
27692         * config/spu/vmx2spu.h: Likewise.
27693         * config/stormy16/stormy16-lib2.c: Likewise.
27694         * config/svr4.h: Likewise.
27695         * config/sync.c: Likewise.
27696         * config/v850/lib1funcs.asm: Likewise.
27697         * config/vxlib-tls.c: Likewise.
27698         * config/vxlib.c: Likewise.
27699         * config/vxworks-dummy.h: Likewise.
27700         * config/xtensa/crti.asm: Likewise.
27701         * config/xtensa/crtn.asm: Likewise.
27702         * config/xtensa/ieee754-df.S: Likewise.
27703         * config/xtensa/ieee754-sf.S: Likewise.
27704         * config/xtensa/lib1funcs.asm: Likewise.
27705         * config/xtensa/lib2funcs.S: Likewise.
27706         * config/xtensa/linux-unwind.h: Likewise.
27707         * config/xtensa/unwind-dw2-xtensa.c: Likewise.
27708         * config/xtensa/unwind-dw2-xtensa.h: Likewise.
27709         * coretypes.h: Likewise.
27710         * crtstuff.c: Likewise.
27711         * defaults.h: Likewise.
27712         * dwarf2.h: Likewise.
27713         * emutls.c: Likewise.
27714         * gbl-ctors.h: Likewise.
27715         * gcov-io.h: Likewise.
27716         * ginclude/float.h: Likewise.
27717         * ginclude/iso646.h: Likewise.
27718         * ginclude/stdarg.h: Likewise.
27719         * ginclude/stdbool.h: Likewise.
27720         * ginclude/stddef.h: Likewise.
27721         * ginclude/stdfix.h: Likewise.
27722         * ginclude/stdint-gcc.h: Likewise.
27723         * ginclude/tgmath.h: Likewise.
27724         * gthr-aix.h: Likewise.
27725         * gthr-dce.h: Likewise.
27726         * gthr-gnat.c: Likewise.
27727         * gthr-gnat.h: Likewise.
27728         * gthr-lynx.h: Likewise.
27729         * gthr-mipssde.h: Likewise.
27730         * gthr-nks.h: Likewise.
27731         * gthr-posix.c: Likewise.
27732         * gthr-posix.h: Likewise.
27733         * gthr-posix95.h: Likewise.
27734         * gthr-rtems.h: Likewise.
27735         * gthr-single.h: Likewise.
27736         * gthr-solaris.h: Likewise.
27737         * gthr-tpf.h: Likewise.
27738         * gthr-vxworks.h: Likewise.
27739         * gthr-win32.h: Likewise.
27740         * gthr.h: Likewise.
27741         * libgcc2.c: Likewise.
27742         * libgcc2.h: Likewise.
27743         * libgcov.c: Likewise.
27744         * tsystem.h: Likewise.
27745         * typeclass.h: Likewise.
27746         * unwind-c.c: Likewise.
27747         * unwind-compat.h: Likewise.
27748         * unwind-dw2-fde-compat.c: Likewise.
27749         * unwind-dw2-fde-darwin.c: Likewise.
27750         * unwind-dw2-fde-glibc.c: Likewise.
27751         * unwind-dw2-fde.c: Likewise.
27752         * unwind-dw2-fde.h: Likewise.
27753         * unwind-dw2.c: Likewise.
27754         * unwind-dw2.h: Likewise.
27755         * unwind-generic.h: Likewise.
27756         * unwind-pe.h: Likewise.
27757         * unwind-sjlj.c: Likewise.
27758         * unwind.inc: Likewise.
27759         * config/arm/neon-gen.ml: Change generated copyright header to
27760         refer to version 3 of the GNU General Public License with
27761         version 3.1 of the GCC Runtime Library Exception and to point
27762         readers at the COPYING3 and COPYING3.RUNTIME files and the
27763         FSF's license web page.
27764         * config/arm/arm_neon.h: Regenerate.
27765
27766 2009-04-09  Jakub Jelinek  <jakub@redhat.com>
27767
27768         * config/cris/cris.md: Change copyright header to refer to version
27769         3 of the GNU General Public License.
27770         * doc/install.texi2html: Change copyright header to refer to version
27771         3 of the GNU General Public License and to point readers at the
27772         COPYING3 file and the FSF's license web page.
27773         * config/vax/linux.h: Likewise.
27774
27775 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
27776
27777         * config/i386/i386.md (cmpcc): New.
27778         * config/i386/sync.md (sync_compare_and_swap*): Set FLAGS_REG.
27779         (sync_compare_and_swap_cc*): Delete.
27780
27781         * config/s390/s390.c (s390_compare_emitted): Remove.
27782         (s390_emit_compare): Handle MODE_CC s390_compare_op0 like
27783         s390_compare_emitted used to be handled.  Assert that modes match.
27784         (s390_emit_compare_and_swap): Use s390_emit_compare, do not
27785         refer to sync_compare_and_swap_ccsi.
27786         * config/s390/s390.h (s390_compare_emitted): Remove.
27787         * config/s390/s390.md (seq): Look for MODE_CC s390_compare_op0
27788         instead of s390_compare_emitted.
27789         (stack_protect_test, sync_compare_and_swap_cc): Set s390_compare_op0
27790         instead of s390_compare_emitted.
27791         * config/s390/s390.md (cmpcc): New.
27792         (sync_compare_and_swapqi, sync_compare_and_swaphi): Clobber
27793         CC_REGNUM, do not pretend it's set.
27794         (sync_compare_and_swap_cc*): Delete.
27795         * config/s390/predicates.md (cc_reg_operand): New.
27796
27797         * expr.c (sync_compare_and_swap_cc): Delete.
27798         * optabs.h (sync_compare_and_swap_cc): Delete.
27799         * optabs.c (prepare_cmp_insn): Ignore which specific CCmode
27800         is being used with can_compare_p.
27801         (emit_cmp_and_jump_insn_1): Likewise when looking in the optab.
27802         (find_cc_set): New.
27803         (expand_bool_compare_and_swap): Do not use sync_compare_and_swap_cc,
27804         look for a MODE_CC set instead.  Use emit_store_flag.
27805         (expand_compare_and_swap_loop): Likewise, with some additional
27806         complication to avoid a force_reg when useless.  Use
27807         emit_cmp_and_jump_insns.
27808         * genopinit.c (optabs): Delete sync_compare_and_swap_cc.
27809         * doc/md.texi (sync_compare_and_swap_cc): Merge with
27810         sync_compare_and_swap documentation.
27811
27812 2009-04-09  Jan Hubicka  <jh@suse.cz>
27813
27814         * except.c (find_prev_try): Break out from ....
27815         (duplicate_eh_regions): ... here; properly update prev_try pointers
27816         when duplication part of tree.
27817         (dump_eh_tree): Improve dumping.
27818         (verify_eh_region): New.
27819         (verify_eh_tree): Use it.
27820
27821 2009-04-06  Richard Guenther  <rguenther@suse.de>
27822
27823         * c-gimplify.c (c_gimplify_expr): Fix the invalid GENERIC
27824         &ARRAY addresses by adjusting their types and prepending
27825         a conversion.
27826         * tree-cfg.c (verify_gimple_assign_single): Verify that
27827         addresses are correct.
27828
27829 2009-04-09  Richard Guenther  <rguenther@suse.de>
27830
27831         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Move non-constant
27832         indices into an array reference if possible.
27833         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
27834         Fold POINTER_PLUS_EXPR statements with invariant address.
27835
27836 2009-04-09  Alan Modra  <amodra@bigpond.net.au>
27837
27838         PR target/39634
27839         * config.gcc (powerpc64-*-linux*): Always build biarch.
27840
27841 2009-04-09  Joseph Myers  <joseph@codesourcery.com>
27842
27843         PR c/39613
27844         * c-typeck.c (do_case): If case label is not an INTEGER_CST, fold
27845         it and pedwarn if this results in an INTEGER_CST.
27846
27847 2009-04-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
27848
27849         * doc/install.texi: Update minimum GMP version.  Remove obsolete
27850         text in MPFR section.
27851
27852 2009-04-08  Jakub Jelinek  <jakub@redhat.com>
27853
27854         * dwarf2out.c (class_scope_p): New static inline.
27855         (class_or_namespace_scope_p): Use it.
27856         (gen_variable_die): Use DW_TAG_member tag for static data member
27857         declarations instead of DW_TAG_variable.
27858
27859         PR middle-end/39573
27860         * omp-low.c (expand_omp_taskreg): Finalize taskreg static local_decls
27861         variables.
27862
27863 2009-04-08  Richard Guenther  <rguenther@suse.de>
27864
27865         * tree-ssa-sccvn.c (valueize_refs): Do not continue to
27866         valueize random data.
27867
27868 2009-04-08  David Edelsohn  <edelsohn@gnu.org>
27869
27870         * config.gcc (aix tm_file):  Add aix-stdint.h.
27871         (aix tm clause use_gcc_stdint):  Set to wrap.
27872         * config/rs6000/aix-stdint.h:  New file.
27873
27874 2009-04-08  Richard Guenther  <rguenther@suse.de>
27875
27876         PR middle-end/36291
27877         * tree-dfa.c (add_referenced_var): Do not recurse into
27878         global initializers.
27879         * tree-ssa-ccp.c (get_symbol_constant_value): Add newly
27880         exposed variables.
27881         (fold_const_aggregate_ref): Likewise.
27882
27883 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
27884
27885         * recog.c (ordered_comparison_operator): New.
27886         * gensupport.c (std_preds): Add it.
27887         * doc/md.texi (Machine-Independent Predicates): Document it.
27888
27889 2009-04-08  Jan Hubicka  <jh@suse.cz>
27890
27891         * tree-eh.c (cleanup_eh): When not optimizing, do not try EH merging.
27892         * function.h (rtl_eh): Remove exception_handler_label_map.
27893         * except.c (ehl_hash, ehl_eq, add_ehl_entry,
27894         remove_exception_handler_label, for_each_eh_label_1): Remove.
27895         (rtl_remove_unreachable_regions): Remove.
27896         (convert_from_eh_region_ranges): Do not remove unreachable regions.
27897         (find_exception_handler_labels): Don't build the hashtable.
27898         (maybe_remove_eh_handler): Remove.
27899         (for_each_eh_label): Rewrite to walk the tree.
27900         (rest_of_handle_eh): Do not cleanup cfg prior EH construction.
27901         * except.h (maybe_remove_eh_handler): Remove.
27902         * passes.c (init_optimization_passes): Schedule second EH cleanup
27903         before out-of-ssa.
27904         * cfgrtl.c (rtl_delete_block, rtl_merge_blocks,
27905         cfg_layout_merge_blocks): Do not call maybe_remove_eh_handler.
27906
27907 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
27908
27909         * genoutput.c (validate_optab_operands): New.
27910         (gen_insn, gen_expand): Call it.
27911
27912         * genflags.c (gen_insn): Detect misused iterators.
27913         (main): Pass line_no to gen_insn, exit with status 1 on error.
27914
27915         * genextract.c (line_no): Make global.
27916         (VEC_safe_set_locstr): Change assertion to error message.
27917         (main): Exit with status 1 on error.
27918
27919 2009-04-08  Joseph Myers  <joseph@codesourcery.com>
27920
27921         PR c/39614
27922         PR c/39673
27923         * c-common.h (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
27924         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
27925         EXPR_INT_CONST_OPERANDS): Remove duplicate definitions.
27926         * c-convert.c (convert): Do not call fold on results of conversion
27927         functions when the result is a C_MAYBE_CONST_EXPR.
27928         * c-parser.c (c_parser_postfix_expression): Do not fold condition
27929         of __builtin_choose_expr.
27930         * c-typeck.c (remove_c_maybe_const_expr): New.
27931         (build_unary_op, build_conditional_expr, build_compound_expr,
27932         build_binary_op, c_objc_common_truthvalue_conversion): Call
27933         remove_c_maybe_const_expr on any input C_MAYBE_CONST_EXPR with
27934         integer operands.
27935
27936 2009-04-08  Bingfeng Mei  <bmei@broadcom.com>
27937
27938         * fold-const.c (const_binop): Combine two VECTOR_CST under operation
27939         CODE to produce a new one. Add a prototype to use fold_convert_const
27940
27941 2009-04-08  Danny Smith  <dannysmith@users.sourceforge.net>
27942
27943         PR bootstrap/39660
27944         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Don't
27945         mix declarations and code.
27946
27947 2009-04-08  Ben Elliston  <bje@au.ibm.com>
27948
27949         * gcc.c: Replace `CC' with `GCC' throughout.
27950
27951 2009-04-07  H.J. Lu  <hongjiu.lu@intel.com>
27952
27953         * doc/invoke.texi: Document Atom support.
27954
27955 2009-04-07  Jason Merrill  <jason@redhat.com>
27956
27957         PR c++/25185
27958         * c-common.h, c-common.c: Add flag_pretty_templates.
27959         * c-opts.c (c_common_handle_option): Set it.
27960         * c.opt: Add -fno-pretty-templates.
27961         * doc/invoke.texi (C++ Dialect Options): Likewise.
27962
27963 2009-04-07  Uros Bizjak  <ubizjak@gmail.com>
27964
27965         * config/ia64/ia64.c (ia64_builtins): Add IA64_BUILTIN_HUGE_VALQ.
27966         (ia64_init_builtins): Handle IA64_BUILTIN_HUGE_VALQ.
27967         (ia64_expand_builtin): Likewise.
27968
27969 2009-04-07  Martin Jambor  <mjambor@suse.cz>
27970
27971         * tree-ssa-alias.c (refs_may_alias_p_1): Check for
27972         is_gimple_min_invariant rather than CONSTANT_CLASS_P so that invariant
27973         ADDR_EXPRS are include too.
27974
27975 2009-04-07  Richard Guenther  <rguenther@suse.de>
27976
27977         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Non-aliased
27978         decls are only used if passes as parameters or if they are
27979         local statics and the call is not to a builtin.
27980         (call_may_clobber_ref_p_1): Likewise.
27981
27982 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
27983
27984         * expr.c (do_store_flag): Remove last argument.  Simplify code
27985         to avoid duplication of tests already done by can_compare_p.
27986         (expand_expr_real_1): Adjust caller.
27987
27988 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
27989
27990         * optabs.c (can_compare_p): Test the predicate of a
27991         cbranch and cstore pattern.
27992
27993 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
27994
27995         * expr.c (convert_move): Use emit_store_flag instead of
27996         "emulating" it.
27997
27998 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
27999
28000         * config/i386/i386.c (ix86_compare_emitted): Remove.
28001         (ix86_expand_compare, ix86_expand_branch): Handle MODE_CC
28002         ix86_compare_op0 like ix86_compare_emitted used to be handled.
28003         * config/i386/i386.h (ix86_compare_emitted): Remove.
28004         * config/i386/i386.md (stack_protect_test): Set ix86_compare_op0
28005         instead of ix86_compare_emitted.
28006         * config/i386/sync.md (sync_compare_and_swap_cc): Likewise.
28007
28008 2009-04-07  Andrew Stubbs  <ams@codesourcery.com>
28009
28010         * config.gcc (sh-*-*): Add sysroot-suffix.h to tm_file.
28011         Add t-sysroot-suffix to tmake_file.
28012         * config/print-sysroot-suffix.sh: New file.
28013         * config/t-sysroot-suffix: New file.
28014
28015 2009-04-07  Ben Elliston  <bje@au.ibm.com>
28016
28017         * libgcc2.c (INFINITY): Use __builtin_huge_val, not __builtin_inf,
28018         as the latter produces a warning when the target does not support
28019         infinity.
28020
28021 2009-04-07  Ben Elliston  <bje@au.ibm.com>
28022
28023         * dfp.c: Replace type punning assignments with memcpy throughout.
28024         * Makefile.in (dfp.o-warn): Remove.
28025
28026 2009-04-07  Alan Modra  <amodra@bigpond.net.au>
28027
28028         PR target/39634
28029         * config.gcc: Merge powerpc-*-linux* and powerpc64-*-linux*.
28030         Include soft-fp/t-softfp after rs6000/t-linux64.
28031
28032 2009-04-06  Eric Botcazou  <ebotcazou@adacore.com>
28033
28034         * stor-layout.c (set_sizetype): Use the full precision of their
28035         machine mode for bitsize types.
28036
28037 2009-04-06  H.J. Lu  <hongjiu.lu@intel.com>
28038
28039         * config/i386/i386.md: Revert 2 accidental checkins.
28040
28041 2009-04-06  Joey Ye  <joey.ye@intel.com>
28042             Xuepeng Guo  <xuepeng.guo@intel.com>
28043             H.J. Lu  <hongjiu.lu@intel.com>
28044
28045         Atom pipeline model, tuning and insn selection.
28046         * config.gcc (atom): Add atom config options and target.
28047
28048         * config/i386/atom.md: New.
28049
28050         * config/i386/i386.c (atom_cost): New cost.
28051         (m_ATOM): New macro flag.
28052         (initial_ix86_tune_features): Set m_ATOM.
28053         (x86_accumulate_outgoing_args): Likewise.
28054         (x86_arch_always_fancy_math_387): Likewise.
28055         (processor_target): Add Atom cost.
28056         (cpu_names): Add Atom cpu name.
28057         (override_options): Set Atom ISA.
28058         (ix86_issue_rate): New case PROCESSOR_ATOM.
28059         (ix86_adjust_cost): Likewise.
28060
28061         * config/i386/i386.h (TARGET_ATOM): New target macro.
28062         (ix86_tune_indices): Add X86_TUNE_OPT_AGU.
28063         (TARGET_OPT_AGU): New target option.
28064         (target_cpu_default): Add TARGET_CPU_DEFAULT_atom.
28065         (processor_type): Add PROCESSOR_ATOM.
28066
28067         * config/i386/i386.md (cpu): Add new value "atom".
28068         (use_carry, movu): New attr.
28069         (atom.md): Include atom.md.
28070         (adddi3_carry_rex64): Set attr "use_carry".
28071         (addqi3_carry): Likewise.
28072         (addhi3_carry): Likewise.
28073         (addsi3_carry): Likewise.
28074         (*addsi3_carry_zext): Likewise.
28075         (subdi3_carry_rex64): Likewise.
28076         (subqi3_carry): Likewise.
28077         (subhi3_carry): Likewise.
28078         (subsi3_carry): Likewise.
28079         (x86_movdicc_0_m1_rex64): Likewise.
28080         (*x86_movdicc_0_m1_se): Likewise.
28081         (x86_movsicc_0_m1): Likewise.
28082         (*x86_movsicc_0_m1_se): Likewise.
28083         (*adddi_1_rex64): Emit add insn as much as possible.
28084         (*addsi_1): Likewise.
28085         (return_internal): Set atom_unit.
28086         (return_internal_long): Likewise.
28087         (return_pop_internal): Likewise.
28088         (*rcpsf2_sse): Set atom_sse_attr attr.
28089         (*qrt<mode>2_sse): Likewise.
28090         (*prefetch_sse): Likewise.
28091
28092         * config/i386/i386-c.c (ix86_target_macros_internal): New case
28093         PROCESSOR_ATOM.
28094         (ix86_target_macros_internal): Likewise.
28095
28096         * config/i386/sse.md (cpu): Set attr "atom_sse_attr".
28097         (*prefetch_sse_rex): Likewise.
28098         (sse_rcpv4sf2): Likewise.
28099         (sse_vmrcpv4sf2): Likewise.
28100         (sse_sqrtv4sf2): Likewise.
28101         (<sse>_vmsqrt<mode>2): Likewise.
28102         (sse_ldmxcsr): Likewise.
28103         (sse_stmxcsr): Likewise.
28104         (*sse_sfence): Likewise.
28105         (sse2_clflush): Likewise.
28106         (*sse2_mfence): Likewise.
28107         (*sse2_lfence): Likewise.
28108         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Set attr "movu".
28109         (<sse>_movup<ssemodesuffixf2c>): Likewise.
28110         (avx_movdqu<avxmodesuffix>): Likewise.
28111         (avx_lddqu<avxmodesuffix>): Likewise.
28112         (sse2_movntv2di): Change attr "type" to "ssemov".
28113         (sse2_movntsi): Likewise.
28114         (rsqrtv8sf2): Change attr "type" to "sseadd".
28115         (sse3_addsubv2df3): Set attr "atom_unit".
28116         (sse3_h<plusminus_insn>v4sf3): Likewise.
28117         (*sse2_pmaddwd): Likewise.
28118         (*vec_extractv2di_1_rex64): Likewise.
28119         (*vec_extractv2di_1_avx): Likewise.
28120         (sse2_psadbw): Likewise.
28121         (ssse3_phaddwv8hi3): Likewise.
28122         (ssse3_phaddwv4hi3): Likewise.
28123         (ssse3_phadddv4si3): Likewise.
28124         (ssse3_phadddv2si3): Likewise.
28125         (ssse3_phaddswv8hi3): Likewise.
28126         (ssse3_phaddswv4hi3): Likewise.
28127         (ssse3_phsubwv8hi3): Likewise.
28128         (ssse3_phsubwv4hi3): Likewise.
28129         (ssse3_phsubdv4si3): Likewise.
28130         (ssse3_phsubdv2si3): Likewise.
28131         (ssse3_phsubswv8hi3): Likewise.
28132         (ssse3_phsubswv4hi3): Likewise.
28133         (ssse3_pmaddubsw128): Likewise.
28134         (sse3_pmaddubsw: Likewise.
28135         (ssse3_palignrti): Likewise.
28136         (ssse3_palignrdi): Likewise.
28137
28138 2009-04-06  Gerald Pfeifer  <gerald@pfeifer.com>
28139
28140         * doc/install.texi (Specific): Fix two cross-references to MinGW.
28141
28142 2009-04-06  Richard Guenther  <rguenther@suse.de>
28143
28144         PR tree-optimization/28868
28145         * tree-ssa-pre.c (inserted_phi_names): New bitmap to keep track
28146         of which PHI results we inserted.
28147         (insert_into_preds_of_block): Record inserted PHIs.
28148         (eliminate): Eliminate redundant PHI nodes.
28149         (init_pre): Init inserted_phi_names.
28150
28151 2009-04-06  Richard Guenther  <rguenther@suse.de>
28152
28153         PR tree-optimization/39643
28154         * tree-ssa-ccp.c (ccp_fold): Fold REALPART_EXPRs and
28155         IMAGPART_EXPRs of complex constants.
28156         (execute_fold_all_builtins): If we folded a call queue
28157         TODO_update_address_taken.
28158
28159 2009-04-06  Jan Hubicka  <jh@suse.cz>
28160
28161         PR middle-end/39659
28162         * except.c (remove_unreachable_regions): Propagate may_contain_throw
28163         flag.
28164
28165 2009-04-06  Andrew Stubbs  <ams@codesourcery.com>
28166
28167         * config/sh/lib1funcs.asm (ic_invalidate): Move ICBI out of the
28168         delay slot.
28169         (ic_invalidate_array): Likewise.
28170
28171 2009-04-06  Hariharan Sandanagobalane  <hariharan@picochip.com>
28172
28173         * calls.c (emit_library_call_value_1): Fix a problem with parameter
28174         alignment for library calls.
28175
28176 2009-04-06  Danny Smith  <dannysmith@users.sourceforge.net>
28177
28178         * config.gcc (mingw32 tm_file):  Add mingw-stdint.h.
28179         (mingw32 tm clause use_gcc_stdint):  Set to wrap.
28180         * config/i386/mingw-stdint.h:  New file.
28181
28182 2009-04-05  Richard Guenther  <rguenther@suse.de>
28183
28184         PR tree-optimization/39648
28185         * tree-ssa-sccvn.c (vn_reference_fold_indirect): Work around
28186         our &A vs. &A[0] IL deficiencies.
28187
28188 2009-04-04  Jan Hubicka  <jh@suse.cz>
28189
28190         * except.c (sjlj_find_directly_reachable_regions): Be ready for
28191         removed toplevel regions.
28192         (sjlj_mark_call_sites): Likewise.
28193
28194 2009-04-04  Dave Korn  <dave.korn.cygwin@gmail.com>
28195
28196         * config.gcc (cygwin tm_file):  Add cygwin-stdint.h.
28197         (cygwin tm clause use_gcc_stdint):  Set to wrap.
28198         * config/i386/cygwin-stdint.h:  New file.
28199
28200 2009-04-04  Richard Guenther  <rguenther@suse.de>
28201
28202         * Makefile.in (tree-ssa-copy.o): Add $(CFGLOOP_H) dependency.
28203         * tree-ssa-copy.c (init_copy_prop): Do not propagate through
28204         single-argument PHIs if we are in loop-closed SSA form.
28205         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Pass extra guards
28206         for the pre-condition.
28207         (slpeel_tree_peel_loop_to_edge): Likewise.
28208         (vect_build_loop_niters): Take an optional sequence to append stmts.
28209         (vect_generate_tmps_on_preheader): Likewise.
28210         (vect_do_peeling_for_loop_bound): Take extra guards for the
28211         pre-condition.
28212         (vect_do_peeling_for_alignment): Adjust.  Unconditionally apply
28213         the cost model check.
28214         (vect_loop_versioning): Take stmt and stmt list to put pre-condition
28215         guards if we are going to peel.  Do not apply versioning in that case.
28216         * tree-vectorizer.h (vect_loop_versioning): Adjust declaration.
28217         (vect_do_peeling_for_loop_bound): Likewise.
28218         * tree-vect-loop.c (vect_transform_loop): If we are peeling for
28219         loop bound only record extra pre-conditions, do not apply loop
28220         versioning.
28221
28222 2009-04-04  Richard Guenther  <rguenther@suse.de>
28223
28224         * tree-ssa-operands.c (pop_stmt_changes): Remove automatic
28225         renaming code.
28226
28227 2009-04-04  Jan Hubicka  <jh@suse.cz>
28228
28229         * tree-ssa-uncprop.c (associate_equivalences_with_edges): Use
28230         last_basic_block for size of bb->index indexed array.
28231         * bt-load.c (compute_defs_uses_and_gen, compute_kill,
28232         compute_out, link_btr_uses, build_btr_def_use_webs,
28233         build_btr_def_use_webs, migrate_btr_defs): Likewise.
28234
28235 2009-04-04  Jan Hubicka  <jh@suse.cz>
28236
28237         * except.c (remove_eh_handler_and_replace): Break out from ...
28238         (remove_eh_handler): ... here.
28239         (bring_to_root): New function.
28240         (remove_unreachable_regions): Collect MUST_NOT_THROW, unify runtime
28241         handled ones, bring others to root of tree.
28242
28243 2009-04-04  Jan Hubicka  <jh@suse.cz>
28244
28245         * tree-eh.c (tree_empty_eh_handler_p): Pattern match more curefully.
28246         (all_phis_safe_to_merge): New function.
28247         (update_info): New structure.
28248         (make_eh_edge_and_update_phi, update_eh_edges): New functions.
28249         (cleanup_empty_eh): Update SSA if possible.
28250
28251 2009-04-04  Richard Guenther  <rguenther@suse.de>
28252
28253         * tree-ssa.c (verify_ssa): With -O0 we do not need VOPs.
28254         * tree-ssa-operands.c (append_vdef): Do not append VOPs at -O0.
28255         (append_vuse): Likewise.
28256
28257 2009-04-04  Jakub Jelinek  <jakub@redhat.com>
28258
28259         * unwind-dw2.h (_Unwind_FrameState): Add REG_UNDEFINED enum value.
28260         * unwind-dw2.c (execute_cfa_program): Set how to REG_UNDEFINED
28261         instead of REG_UNSAVED for DW_CFA_undefined.
28262         (uw_update_context_1): Handle REG_UNDEFINED the same as REG_UNSAVED.
28263         (uw_update_context): If RA column is REG_UNDEFINED, mark it as
28264         outermost frame.
28265
28266 2009-04-04  Richard Earnshaw  <rearnsha@arm.com>
28267
28268         PR target/39501
28269         * arm.md (movsfcc): Disable if not TARGET_HARD_FLOAT.
28270
28271 2009-04-04  Richard Guenther  <rguenther@suse.de>
28272
28273         PR tree-optimization/8781
28274         PR tree-optimization/37892
28275         * tree-ssa-sccvn.h (vn_reference_fold_indirect): Declare.
28276         * tree-ssa-sccvn.c (vn_reference_fold_indirect): New function.
28277         (valueize_refs): Call it for *& valueizations.
28278         (shared_reference_ops_from_ref): Rename to ...
28279         (valueize_shared_reference_ops_from_ref): ... this and valueize.
28280         (shared_reference_ops_from_call): Rename to ...
28281         (valueize_shared_reference_ops_from_call): ... this and valueize.
28282         (vn_reference_lookup): Update.
28283         (visit_reference_op_call): Likewise.
28284         * tree-ssa-pre.c (phi_translate_1): Fold *&.
28285         (eliminate): Value-replace the call address in call statements.
28286
28287 2009-04-04  Richard Guenther  <rguenther@suse.de>
28288
28289         PR tree-optimization/39636
28290         * tree-ssa-forwprop.c
28291         (forward_propagate_addr_into_variable_array_index): Check for
28292         GIMPLE_ASSIGN before accessing the rhs code.
28293
28294 2009-04-03  Jason Merrill  <jason@redhat.com>
28295
28296         * stor-layout.c (set_sizetype): Set TYPE_CANONICAL.
28297
28298 2009-04-03  Steve Ellcey  <sje@cup.hp.com>
28299
28300         * config/ia64/ia64.md (extendsfdf2, extendsfxf2, extenddfxf2,
28301         truncdfsf2, truncxfsf2, truncxfdf2, floatdixf2, fix_truncsfdi2,
28302         fix_truncdfdi2, fix_truncxfdi2, fix_truncxfdi2_alts, floatunsdisf2,
28303         floatunsdidf2, floatunsdixf2, fixuns_truncsfdi2, fixuns_truncdfdi2,
28304         fixuns_truncxfdi2, fixuns_truncxfdi2_alts, divsi3_internal,
28305         smuldi3_highpart, umuldi3_highpart, ctzdi2, *getf_exp_xf,
28306         divdi3_internal_lat, divdi3_internal_thr, mulditi3, *mulditi3_internal,
28307         umulditi3, *umulditi3_internal, addsf3, mulsf3, abssf2, negsf2,
28308         *nabssf2, sminsf3, smaxsf3, *maddsf4, *msubsf4, *nmulsf3, *nmaddsf4,
28309         *nmaddsf4_alts, divsf3, *sqrt_approx, sqrtsf2, sqrtsf2_internal_thr,
28310         adddf3, *adddf3_trunc, muldf3, *muldf3_trunc, absdf2, negdf2, *nabsdf2,
28311         smindf3, smaxdf3, *madddf4, *madddf4_trunc, *msubdf4, *msubdf4_trunc,
28312         *nmuldf3, *nmuldf3_trunc, *nmadddf4, *nmadddf4_alts, *nmadddf4_truncsf,
28313         *nmadddf4_truncsf_alts, divdf3, sqrtdf2, sqrtdf2_internal_thr, divxf3,
28314         sqrtxf2, sqrtxf2_internal_thr, *recip_approx):
28315         Use fr_reg_or_fp01_operand instead of fr_register_operand
28316
28317         * config/ia64/div.md (extend<mode>rf2, truncrf<mode>2,
28318         recip_approx_rf, divsf3_internal_thr, divsf3_internal_lat,
28319         divdf3_internal_thr, divdf3_internal_lat divxf3_internal): Ditto.
28320
28321 2009-04-03  Vladimir Makarov  <vmakarov@redhat.com>
28322
28323         PR rtl-optimization/39607
28324         PR rtl-optimization/39631
28325
28326         Revert:
28327
28328         2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
28329         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
28330         instead of DF_LR_OUT.
28331         * ira-lives.c (process_bb_node_lives): Ditto.
28332         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
28333         instead of DF_LR_{OUT,IN}.
28334         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
28335         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
28336
28337 2009-04-03  Steven Bosscher  <steven@gcc.gnu.org>
28338
28339         * omp-low.c (pass_expand_omp): Don't claim to provide PROP_gimple_lomp.
28340         (execute_lower_omp): Always run but take the short way out if -fopenmp
28341         is not given.
28342         (gate_lower_omp): Remove, forcing the pass manager to always run the
28343         pass and always set PROP_gimple_lomp.
28344         (pass_lower_omp): Remove gate function.
28345         * matrix-reorg.c (pass_ipa_matrix_reorg): Don't claim to provide
28346         PROP_trees.  Instead, require it.
28347         * ipa-cp.c (pass_ipa_cp): Likewise.
28348         * ipa-inline.c (pass_early_inline): Don't claim to provide PROP_cfg.
28349         (pass_ipa_early_inline, pass_inline_parameters, pass_ipa_inline): Idem.
28350         * tree-profile.c (pass_tree_profile): Don't claim to provide PROP_cfg
28351         and PROP_gimple_leh.
28352
28353 2009-04-03  Richard Guenther  <rguenther@suse.de>
28354
28355         PR middle-end/13146
28356         PR tree-optimization/23940
28357         PR tree-optimization/33237
28358         PR middle-end/33974
28359         PR middle-end/34093
28360         PR tree-optimization/36201
28361         PR tree-optimization/36230
28362         PR tree-optimization/38049
28363         PR tree-optimization/38207
28364         PR tree-optimization/38230
28365         PR tree-optimization/38301
28366         PR tree-optimization/38585
28367         PR middle-end/38895
28368         PR tree-optimization/38985
28369         PR tree-optimization/39299
28370         * tree-ssa-structalias.h: Remove.
28371         * tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
28372         (NULL_DEF_OPERAND_P): Make of type def_operand_p.
28373         (struct vuse_element_d): Remove.
28374         (struct vuse_vec_d): Likewise.
28375         (VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
28376         VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
28377         SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
28378         VUSE_ELEMENT_VAR): Likewise.
28379         (struct voptype_d): Likewise.
28380         (NUM_VOP_FREE_BUCKETS): Likewise.
28381         (struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
28382         (struct stmt_operands_d): Remove.
28383         (VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
28384         VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
28385         VDEF_NUM, VDEF_VECT): Likewise.
28386         (copy_virtual_operands): Remove.
28387         (operand_build_cmp): Likewise.
28388         (create_ssa_artificial_load_stmt): Likewise.
28389         (enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
28390         (struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
28391         vuse_index and mayuse_index members.  Pack and move done and iter_type
28392         members to the front.
28393         (SSA_OP_VMAYUSE): Remove.
28394         (SSA_OP_VIRTUAL_USES): Adjust.
28395         (FOR_EACH_SSA_VDEF_OPERAND): Remove.
28396         (unlink_stmt_vdef): Declare.
28397         (add_to_addressable_set): Remove.
28398         * tree-vrp.c (stmt_interesting_for_vrp): Adjust.
28399         (vrp_visit_stmt): Likewise.
28400         * doc/tree-ssa.texi (Alias analysis): Update.
28401         * doc/invoke.texi (max-aliased-vops): Remove docs.
28402         (avg-aliased-vops): Likewise.
28403         * tree-into-ssa.c (syms_to_rename): Remove.
28404         (need_to_update_vops_p): Likewise.
28405         (need_to_initialize_update_ssa_p): Rename to ...
28406         (update_ssa_initialized_fn): ... this.  Track function we are
28407         initialized for.
28408         (symbol_marked_for_renaming): Simplify.
28409         (add_new_name_mapping): Do not set need_to_update_vops_p.
28410         (dump_currdefs): Use SYMS_TO_RENAME.
28411         (rewrite_update_stmt): Always walk all uses/defs.
28412         (dump_update_ssa): Adjust.
28413         (init_update_ssa): Take function argument.  Track what we are
28414         initialized for.
28415         (delete_update_ssa): Reset SYMS_TO_RENAME and update_ssa_initialized_fn.
28416         (create_new_def_for): Initialize for cfun, assert we are initialized
28417         for cfun.
28418         (mark_sym_for_renaming): Simplify.
28419         (mark_set_for_renaming): Do not initialize update-ssa.
28420         (need_ssa_update_p): Simplify.  Take function argument.
28421         (name_mappings_registered_p): Assert we ask for the correct function.
28422         (name_registered_for_update_p): Likewise.
28423         (ssa_names_to_replace): Likewise.
28424         (release_ssa_name_after_update_ssa): Likewise.
28425         (update_ssa): Likewise.  Use SYMS_TO_RENAME.
28426         (dump_decl_set): Do not print a newline.
28427         (debug_decl_set): Do it here.
28428         (dump_update_ssa): And here.
28429         * tree-ssa-loop-im.c (move_computations): Adjust.
28430         (movement_possibility): Likewise.
28431         (determine_max_movement): Likewise.
28432         (gather_mem_refs_stmt): Likewise.
28433         * tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
28434         or NAME_MEMORY_TAG.
28435         * tree-complex.c (update_all_vops): Remove.
28436         (expand_complex_move): Adjust.
28437         * tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
28438         Simplify test for memory referencing statement.  Exclude
28439         non-invariant ADDR_EXPRs.
28440         * tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
28441         * tree-loop-distribution.c (generate_memset_zero): Adjust.
28442         (rdg_flag_uses): Likewise.
28443         * tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
28444         related code.
28445         (tree_optimize_tail_calls_1): Also split the
28446         edge from the entry block if we have degenerate PHI nodes in
28447         the first basic block.
28448         * tree.c (init_ttree): Remove memory-tag related code.
28449         (tree_code_size): Likewise.
28450         (tree_node_structure): Likewise.
28451         (build7_stat): Re-write to be build6_stat.
28452         * tree.h (MTAG_P, TREE_MEMORY_TAG_CHECK, TMR_TAG): Remove.
28453         (SSA_VAR_P): Adjust.
28454         (struct tree_memory_tag): Remove.
28455         (struct tree_memory_partition_tag): Likewise.
28456         (union tree_node): Adjust.
28457         (build7): Re-write to be build6.
28458         * tree-pass.h (pass_reset_cc_flags): Remove.
28459         (TODO_update_address_taken): New flag.
28460         (pass_simple_dse): Remove.
28461         * ipa-cp.c (ipcp_update_callgraph): Update SSA form.
28462         * params.h (MAX_ALIASED_VOPS): Remove.
28463         (AVG_ALIASED_VOPS): Likewise.
28464         * omp-low.c (expand_omp_taskreg): Update SSA form.
28465         * tree-ssa-dse.c (dse_optimize_stmt): Properly query if the rhs
28466         aliases the lhs in a copy stmt.
28467         * tree-ssa-dse.c (struct address_walk_data): Remove.
28468         (memory_ssa_name_same): Likewise.
28469         (memory_address_same): Likewise.
28470         (get_kill_of_stmt_lhs): Likewise.
28471         (dse_possible_dead_store_p): Simplify, use the oracle.  Handle
28472         unused stores.  Look through PHI nodes into post-dominated regions.
28473         (dse_optimize_stmt): Simplify.  Properly remove stores.
28474         (tree_ssa_dse): Compute dominators.
28475         (execute_simple_dse): Remove.
28476         (pass_simple_dse): Likewise.
28477         * ipa-reference.c (scan_stmt_for_static_refs): Open-code
28478         gimple_loaded_syms and gimple_stored_syms computation.
28479         * toplev.c (dump_memory_report): Dump alias and pta stats.
28480         * tree-ssa-sccvn.c (vn_reference_compute_hash): Simplify.
28481         (vn_reference_eq): Likewise.
28482         (vuses_to_vec, copy_vuses_from_stmt, vdefs_to_vec,
28483         copy_vdefs_from_stmt, shared_lookup_vops, shared_vuses_from_stmt,
28484         valueize_vuses): Remove.
28485         (get_def_ref_stmt_vuses): Simplify.  Rename to ...
28486         (get_def_ref_stmt_vuse): ... this.
28487         (vn_reference_lookup_2): New function.
28488         (vn_reference_lookup_pieces): Use walk_non_aliased_vuses for
28489         walking equivalent vuses.  Simplify.
28490         (vn_reference_lookup): Likewise.
28491         (vn_reference_insert): Likewise.
28492         (vn_reference_insert_pieces): Likewise.
28493         (visit_reference_op_call): Simplify.
28494         (visit_reference_op_load): Likewise.
28495         (visit_reference_op_store): Likewise.
28496         (init_scc_vn): Remove shared_lookup_vuses initialization.
28497         (free_scc_vn): Remove shared_lookup_vuses freeing.
28498         (sort_vuses, sort_vuses_heap): Remove.
28499         (get_ref_from_reference_ops): Export.
28500         * tree-ssa-sccvn.h (struct vn_reference_s): Replace vuses
28501         vector with single vuse pointer.
28502         (vn_reference_lookup_pieces, vn_reference_lookup,
28503         vn_reference_insert, vn_reference_insert_pieces): Adjust prototypes.
28504         (shared_vuses_from_stmt): Remove.
28505         (get_ref_from_reference_ops): Declare.
28506         * tree-ssa-loop-manip.c (slpeel_can_duplicate_loop_p): Adjust.
28507         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
28508         memory-tag related code.
28509         * tree-ssa-ccp.c (get_symbol_constant_value): Remove memory-tag code.
28510         (likely_value): Add comment, skip static-chain of call statements.
28511         (surely_varying_stmt_p): Adjust.
28512         (gimplify_and_update_call_from_tree): Likewise.
28513         (execute_fold_all_builtins): Do not rebuild alias info.
28514         (gimplify_and_update_call_from_tree): Properly update VOPs.
28515         * tree-ssa-loop-ivopts.c (get_ref_tag): Remove.
28516         (copy_ref_info): Remove memory-tag related code.
28517         * tree-call-cdce.c (tree_call_cdce): Rename the VOP.
28518         * ipa-pure-const.c (check_decl): Remove memory-tag related code.
28519         (check_stmt): Open-code gimple_loaded_syms and gimple_stored_syms
28520         computation.
28521         * tree-ssa-dom.c (gimple_p): Remove typedef.
28522         (eliminate_redundant_computations): Adjust.
28523         (record_equivalences_from_stmt): Likewise.
28524         (avail_expr_hash): Likewise.
28525         (avail_expr_eq): Likewise.
28526         * tree-ssa-propagate.c (update_call_from_tree): Properly update VOPs.
28527         (stmt_makes_single_load): Likewise.
28528         (stmt_makes_single_store): Likewise.
28529         * tree-ssa-alias.c: Rewrite completely.
28530         (debug_memory_partitions, dump_mem_ref_stats, debug_mem_ref_stats,
28531         debug_mem_sym_stats, dump_mem_sym_stats_for_var,
28532         debug_all_mem_sym_stats, debug_mp_info, update_mem_sym_stats_from_stmt,
28533         delete_mem_ref_stats, create_tag_raw, dump_points_to_info,
28534         dump_may_aliases_for, debug_may_aliases_for, new_type_alias):
28535         Remove public functions.
28536         (pass_reset_cc_flags): Remove.
28537         (pass_build_alias): Move ...
28538         * tree-ssa-structalias.c (pass_build_alias): ... here.
28539         * tree-ssa-alias.c (may_be_aliased): Move ...
28540         * tree-flow-inline.h (may_be_aliased): ... here.
28541         tree-ssa-alias.c (struct count_ptr_d, count_ptr_derefs,
28542         count_uses_and_derefs): Move ...
28543         * gimple.c: ... here.
28544         * gimple.h (count_uses_and_derefs): Declare.
28545         * tree-ssa-alias.c (dump_alias_stats, ptr_deref_may_alias_global_p,
28546         ptr_deref_may_alias_decl_p, ptr_derefs_may_alias_p,
28547         same_type_for_tbaa, nonaliasing_component_refs_p, decl_refs_may_alias_p,
28548         indirect_ref_may_alias_decl_p, indirect_refs_may_alias_p,
28549         ref_maybe_used_by_call_p, ref_maybe_used_by_stmt_p,
28550         call_may_clobber_ref_p, stmt_may_clobber_ref_p, maybe_skip_until,
28551         get_continuation_for_phi, walk_non_aliased_vuses, walk_aliased_vdefs):
28552         New functions.
28553         * tree-dfa.c (refs_may_alias_p): Move ...
28554         * tree-ssa-alias.c (refs_may_alias_p): ... here.  Extend.
28555         * tree-ssa-alias.h: New file.
28556         * tree-ssa-sink.c (is_hidden_global_store): Adjust.
28557         (statement_sink_location): Likewise.
28558         * opts.c (decode_options): Do not adjust max-aliased-vops or
28559         avg-aliased-vops values.
28560         * timevar.def (TV_TREE_MAY_ALIAS): Remove.
28561         (TV_CALL_CLOBBER): Likewise.
28562         (TV_FLOW_SENSITIVE): Likewise.
28563         (TV_FLOW_INSENSITIVE): Likewise.
28564         (TV_MEMORY_PARTITIONING): Likewise.
28565         (TV_ALIAS_STMT_WALK): New timevar.
28566         * tree-ssa-loop-ivcanon.c (empty_loop_p): Adjust.
28567         * tree-ssa-address.c (create_mem_ref_raw): Use build6.
28568         (get_address_description): Remove memory-tag related code.
28569         * tree-ssa-ifcombine.c (bb_no_side_effects_p): Adjust.
28570         * treestruct.def (TS_MEMORY_TAG, TS_MEMORY_PARTITION_TAG): Remove.
28571         * tree-eh.c (cleanup_empty_eh): Do not leave stale SSA_NAMEs
28572         and immediate uses in statements.  Document.
28573         * gimple-pretty-print.c (dump_gimple_mem_ops): Adjust.
28574         (dump_symbols): Remove.
28575         (dump_gimple_mem_ops): Do not dump loaded or stored syms.
28576         * alias.c (get_deref_alias_set): New function split out from ...
28577         (get_alias_set): ... here.
28578         * alias.h (get_deref_alias_set): Declare.
28579         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove unused
28580         type parameter.  Remove restrict pointer handling.  Create a
28581         ref-all pointer in case type-based alias sets do not conflict.
28582         (vect_analyze_data_refs): Remove SMT related code.
28583         * tree-vect-stmts.c (vectorizable_store): Re-instantiate TBAA assert.
28584         (vectorizable_load): Likewise.
28585         * tree-data-ref.h (struct dr_alias): Remove symbol_tag field.
28586         (DR_SYMBOL_TAG, DR_VOPS): Remove.
28587         * tree-data-ref.c (dr_may_alias_p): Use the alias-oracle.
28588         Ignore vops and SMTs.
28589         (dr_analyze_alias): Likewise..
28590         (free_data_ref): Likewise.
28591         (create_data_ref): Likewise.
28592         (analyze_all_data_dependences): Likewise.
28593         (get_references_in_stmt): Adjust.
28594         * tree-flow-inline.h (gimple_aliases_computed_p,
28595         gimple_addressable_vars, gimple_call_clobbered_vars,
28596         gimple_call_used_vars, gimple_global_var, may_aliases, memory_partition,
28597         factoring_name_p, mark_call_clobbered, clear_call_clobbered,
28598         compare_ssa_operands_equal, symbol_mem_tag, set_symbol_mem_tag,
28599         gimple_mem_ref_stats): Remove.
28600         (gimple_vop): New function.
28601         (op_iter_next_use): Remove vuses and mayuses cases.
28602         (op_iter_next_def): Remove vdefs case.
28603         (op_iter_next_tree): Remove vuses, mayuses and vdefs cases.
28604         (clear_and_done_ssa_iter): Do not set removed fields.
28605         (op_iter_init): Likewise.  Skip vuse and/or vdef if requested.
28606         Assert we are not iterating over vuses or vdefs if not also
28607         iterating over uses or defs.
28608         (op_iter_init_use): Likewise.
28609         (op_iter_init_def): Likewise.
28610         (op_iter_next_vdef): Remove.
28611         (op_iter_next_mustdef): Likewise.
28612         (op_iter_init_vdef): Likewise.
28613         (compare_ssa_operands_equal): Likewise.
28614         (link_use_stmts_after): Handle vuse operand.
28615         (is_call_used): Use is_call_clobbered.
28616         (is_call_clobbered): Global variables are always call clobbered,
28617         query the call-clobbers bitmap.
28618         (mark_call_clobbered): Ignore global variables.
28619         (clear_call_clobbered): Likewise.
28620         * tree-ssa-coalesce.c (create_outofssa_var_map): Adjust
28621         virtual operands sanity check.
28622         * tree.def (NAME_MEMORY_TAG, SYMBOL_MEMORY_TAG, MEMORY_PARTITION_TAG):
28623         Remove.
28624         (TARGET_MEM_REF): Remove TMR_TAG operand.
28625         * tree-dfa.c (add_referenced_var): Initialize call-clobber state.
28626         Remove call-clobber related code.
28627         (remove_referenced_var): Likewise.  Do not clear mpt or symbol_mem_tag.
28628         (dump_variable): Do not dump SMTs, memory stats, may-aliases or
28629         partitions or escape reason.
28630         (get_single_def_stmt, get_single_def_stmt_from_phi,
28631         get_single_def_stmt_with_phi): Remove.
28632         (dump_referenced_vars): Tidy.
28633         (get_ref_base_and_extent): Allow bare decls.
28634         (collect_dfa_stats): Adjust.
28635         * graphite.c (rename_variables_in_stmt): Adjust.
28636         (graphite_copy_stmts_from_block): Likewise.
28637         (translate_clast): Likewise.
28638         * tree-ssa-pre.c (struct bb_bitmap_sets): Add expr_dies bitmap.
28639         (EXPR_DIES): New.
28640         (translate_vuse_through_block): Use the oracle.
28641         (phi_translate_1): Adjust.
28642         (value_dies_in_block_x): Use the oracle.  Cache the outcome
28643         in EXPR_DIES.
28644         (valid_in_sets): Check if the VUSE for
28645         a REFERENCE is available.
28646         (eliminate): Do not remove stmts during elimination,
28647         instead queue and remove them afterwards.
28648         (do_pre): Do not rebuild alias info.
28649         (pass_pre): Run TODO_rebuild_alias before PRE.
28650         * tree-ssa-live.c (remove_unused_locals): Remove memory-tag code.
28651         * tree-sra.c (sra_walk_function): Use gimple_references_memory_p.
28652         (mark_all_v_defs_stmt): Remove.
28653         (mark_all_v_defs_seq): Adjust.
28654         (sra_replace): Likewise.
28655         (scalarize_use): Likewise.
28656         (scalarize_copy): Likewise.
28657         (scalarize_init): Likewise.
28658         (scalarize_ldst): Likewise.
28659         (todoflags): Remove.
28660         (tree_sra): Do not rebuild alias info.
28661         (tree_sra_early): Adjust.
28662         (pass_sra): Run TODO_update_address_taken before SRA.
28663         * tree-predcom.c (set_alias_info): Remove.
28664         (prepare_initializers_chain): Do not call it.
28665         (mark_virtual_ops_for_renaming): Adjust.
28666         (mark_virtual_ops_for_renaming_list): Remove.
28667         (initialize_root_vars): Adjust.
28668         (initialize_root_vars_lm): Likewise.
28669         (prepare_initializers_chain): Likewise.
28670         * tree-ssa-copy.c (may_propagate_copy): Remove memory-tag related code.
28671         (may_propagate_copy_into_stmt): Likewise.
28672         (merge_alias_info): Do nothing for now.
28673         (propagate_tree_value_into_stmt): Adjust.
28674         (stmt_may_generate_copy): Likewise.
28675         * tree-ssa-forwprop.c (tidy_after_forward_propagate_addr): Do
28676         not mark symbols for renaming.
28677         (forward_propagate_addr_expr): Match up push/pop_stmt_changes
28678         with the same statement, make sure to update the new pointed-to one.
28679         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do not copy
28680         call statements, do not mark symbols for renaming.
28681         (mark_operand_necessary): Dump something.
28682         (ref_may_be_aliased): New function.
28683         (mark_aliased_reaching_defs_necessary_1): New helper function.
28684         (mark_aliased_reaching_defs_necessary): Likewise.
28685         (mark_all_reaching_defs_necessary_1): Likewise.
28686         (mark_all_reaching_defs_necessary): Likewise.
28687         (propagate_necessity): Do not process virtual PHIs.  For
28688         non-aliased loads mark all reaching definitions as necessary.
28689         For aliased loads and stores mark the immediate dominating
28690         aliased clobbers as necessary.
28691         (visited): New global static.
28692         (perform_tree_ssa_dce): Free visited bitmap after propagating
28693         necessity.
28694         (remove_dead_phis): Perform simple dead virtual PHI removal.
28695         (remove_dead_stmt): Properly unlink virtual operands when
28696         removing stores.
28697         (eliminate_unnecessary_stmts): Schedule PHI removal after
28698         stmt removal.
28699         * tree-ssa-ter.c (is_replaceable_p): Adjust.
28700         (process_replaceable): Likewise.
28701         (find_replaceable_in_bb): Likewise.
28702         * tree-ssa.c (verify_ssa_name): Verify all VOPs are
28703         based on the single gimple vop.
28704         (verify_flow_insensitive_alias_info): Remove.
28705         (verify_flow_sensitive_alias_info): Likewise.
28706         (verify_call_clobbering): Likewise.
28707         (verify_memory_partitions): Likewise.
28708         (verify_alias_info): Likewise.
28709         (verify_ssa): Adjust..
28710         (execute_update_addresses_taken): Export.  Update SSA
28711         manually.  Optimize only when optimizing.  Use a local bitmap.
28712         (pass_update_address_taken): Remove TODO_update_ssa, add
28713         TODO_dump_func.
28714         (pass_update_address_taken): Just use TODO_update_address_taken.
28715         (init_tree_ssa): Do not initialize addressable_vars.
28716         (verify_ssa): Verify new VUSE / VDEF properties.
28717         Verify that all stmts definitions have the stmt as SSA_NAME_DEF_STMT.
28718         Do not call verify_alias_info.
28719         (delete_tree_ssa): Clear the VUSE, VDEF operands.
28720         Do not free the loaded and stored syms bitmaps.  Reset the escaped
28721         and callused solutions.  Do not free addressable_vars.
28722         Remove memory-tag related code.
28723         (warn_uninitialized_var): Aliases are always available.
28724         * tree-ssa-loop-prefetch.c (gather_memory_references): Adjust.
28725         * lambda-code.c (can_put_in_inner_loop): Adjust.
28726         (can_put_after_inner_loop): Likewise.
28727         (perfect_nestify): Likewise.
28728         * tree-vect-stmts.c (vect_stmt_relevant_p): Adjust.
28729         (vect_gen_widened_results_half): Remove CALL_EXPR handling.
28730         (vectorizable_conversion): Do not mark symbols for renaming.
28731         * tree-inline.c (remap_gimple_stmt): Clear VUSE/VDEF.
28732         (expand_call_inline): Unlink the calls virtual operands before
28733         replacing it.
28734         (tree_function_versioning): Do not call update_ssa if we are not
28735         updating clones.  Simplify.
28736         * tree-ssa-phiprop.c (phivn_valid_p): Adjust.
28737         (propagate_with_phi): Likewise..
28738         * tree-outof-ssa.c (create_temp): Remove memory tag and call
28739         clobber code.  Assert we are not aliased or global.
28740         * tree-flow.h: Include tree-ssa-alias.h
28741         (enum escape_type): Remove.
28742         (struct mem_sym_stats_d): Likewise.
28743         (struct mem_ref_stats_d): Likewise.
28744         (struct gimple_df): Add vop member.  Remove global_var,
28745         call_clobbered_vars, call_used_vars, addressable_vars,
28746         aliases_compted_p and mem_ref_stats members.  Add syms_to_rename,
28747         escaped and callused members.
28748         (struct ptr_info_def): Remove all members, add points-to solution
28749         member pt.
28750         (struct var_ann_d): Remove in_vuse_list, in_vdef_list,
28751         call_clobbered, escape_mask, mpt and symbol_mem_tag members.
28752         * Makefile.in (TREE_FLOW_H): Add tree-ssa-alias.h.
28753         (tree-ssa-structalias.o): Remove tree-ssa-structalias.h.
28754         (tree-ssa-alias.o): Likewise.
28755         (toplev.o): Add tree-ssa-alias.h
28756         (GTFILES): Remove tree-ssa-structalias.h, add tree-ssa-alias.h.
28757         * gimple.c (gimple_set_bb): Fix off-by-one error.
28758         (is_gimple_reg): Do not handle memory tags.
28759         (gimple_copy): Also copy virtual operands.
28760         Delay updating the statement.  Do not reset loaded and stored syms.
28761         (gimple_set_stored_syms): Remove.
28762         (gimple_set_loaded_syms): Likewise.
28763         (gimple_call_copy_skip_args): Copy the virtual operands
28764         and mark the new statement modified.
28765         * tree-ssa-structalias.c (may_alias_p): Remove.
28766         (set_uids_in_ptset): Take the alias set to prune with as
28767         parameter.  Fold in the alias test of may_alias_p.
28768         (compute_points_to_sets): Compute whether a ptr is dereferenced
28769         in a local sbitmap.
28770         (process_constraint): Deal with &ANYTHING on the lhs, reject all
28771         other ADDRESSOF constraints on the lhs.
28772         (get_constraint_for_component_ref): Assert that we don't get
28773         ADDRESSOF constraints from the base of the reference.
28774         Properly generate UNKNOWN_OFFSET for DEREF if needed.
28775         (struct variable_info): Remove collapsed_to member.
28776         (get_varinfo_fc): Remove.
28777         (new_var_info): Do not set collapsed_to.
28778         (dump_constraint): Do not follow cycles.
28779         (dump_constraint_graph): Likewise.
28780         (build_pred_graph): Likewise.
28781         (build_succ_graph): Likewise.
28782         (rewrite_constraints): Likewise.
28783         (do_simple_structure_copy): Remove.
28784         (do_rhs_deref_structure_copy): Remove.
28785         (do_lhs_deref_structure_copy): Remove.
28786         (collapse_rest_of_var): Remove.
28787         (do_structure_copy): Re-implement.
28788         (pta_stats): New global variable.
28789         (dump_pta_stats): New function.
28790         (struct constraint_expr): Make offset signed.
28791         (UNKNOWN_OFFSET): Define special value.
28792         (dump_constraint): Dump UNKNOWN_OFFSET as UNKNOWN.
28793         (solution_set_expand): New helper function split out from ...
28794         (do_sd_constraint): ... here.
28795         (solution_set_add): Handle UNKNOWN_OFFSET.  Handle negative offsets.
28796         (do_ds_constraint): Likewise.
28797         (do_sd_constraint): Likewise.  Do not special-case ESCAPED = *ESCAPED
28798         and CALLUSED = *CALLUSED.
28799         (set_union_with_increment): Make inc argument signed.
28800         (type_safe): Remove.
28801         (get_constraint_for_ptr_offset): Handle unknown and negative
28802         constant offsets.
28803         (first_vi_for_offset): Handle offsets before start.  Bail
28804         out early for offsets beyond the variable extent.
28805         (first_or_preceding_vi_for_offset): New function.
28806         (init_base_vars): Add ESCAPED = ESCAPED + UNKNOWN_OFFSET constraint.
28807         Together with ESCAPED = *ESCAPED this properly computes reachability.
28808         (find_what_var_points_to): New function.
28809         (find_what_p_points_to): Implement in terms of find_what_var_points_to.
28810         (pt_solution_reset, pt_solution_empty_p, pt_solution_includes_global,
28811         pt_solution_includes_1, pt_solution_includes, pt_solutions_intersect_1,
28812         pt_solutions_intersect): New functions.
28813         (compute_call_used_vars): Remove.
28814         (compute_may_aliases): New main entry into PTA computation.
28815         * gimple.h (gimple_p): New typedef.
28816         (struct gimple_statement_base): Remove references_memory_p.
28817         (struct gimple_statement_with_memory_ops_base): Remove
28818         vdef_ops, vuse_ops, stores and loads members.  Add vdef and vuse
28819         members.
28820         (gimple_vuse_ops, gimple_set_vuse_ops, gimple_vdef_ops,
28821         gimple_set_vdef_ops, gimple_loaded_syms, gimple_stored_syms,
28822         gimple_set_references_memory): Remove.
28823         (gimple_vuse_op, gimple_vdef_op, gimple_vuse, gimple_vdef,
28824         gimple_vuse_ptr, gimple_vdef_ptri, gimple_set_vuse, gimple_set_vdef):
28825         New functions.
28826         * tree-cfg.c (move_block_to_fn): Fix off-by-one error.
28827         (verify_expr): Allow RESULT_DECL.
28828         (gimple_duplicate_bb): Do not copy virtual operands.
28829         (gimple_duplicate_sese_region): Adjust.
28830         (gimple_duplicate_sese_tail): Likewise.
28831         (mark_virtual_ops_in_region): Remove.
28832         (move_sese_region_to_fn): Do not call it.
28833         * passes.c (init_optimization_passes): Remove pass_reset_cc_flags
28834         and pass_simple_dse.
28835         (execute_function_todo): Handle TODO_update_address_taken,
28836         call execute_update_addresses_taken for TODO_rebuild_alias.
28837         (execute_todo): Adjust.
28838         (execute_one_pass): Init dump files early.
28839         * ipa-struct-reorg.c (finalize_var_creation): Do not mark vars
28840         call-clobbered.
28841         (create_general_new_stmt): Clear vops.
28842         * tree-ssa-reassoc.c (get_rank): Adjust.
28843         * tree-vect-slp.c (vect_create_mask_and_perm): Do not mark
28844         symbols for renaming.
28845         * params.def (PARAM_MAX_ALIASED_VOPS): Remove.
28846         (PARAM_AVG_ALIASED_VOPS): Likewise.
28847         * tree-ssanames.c (init_ssanames): Allocate SYMS_TO_RENAME.
28848         (duplicate_ssa_name_ptr_info): No need to copy the shared bitmaps.
28849         * tree-ssa-operands.c: Simplify for new virtual operand representation.
28850         (operand_build_cmp, copy_virtual_operands,
28851         create_ssa_artificial_load_stmt, add_to_addressable_set,
28852         gimple_add_to_addresses_taken): Remove public functions.
28853         (unlink_stmt_vdef): New function.
28854
28855 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
28856
28857         * config.gcc (powerpc-*-linux*): Merge variants.
28858
28859 2009-04-02  Chao-ying Fu  <fu@mips.com>
28860             James Grosbach  <james.grosbach@microchip.com>
28861
28862         * config/mips/mips.c (mips_frame_info): Add acc_mask, num_acc,
28863         num_cop0_regs, acc_save_offset, cop0_save_offset, acc_sp_offset,
28864         cop0_sp_offset.
28865         (machine_function): Add interrupt_handler_p, use_shadow_register_set_p,
28866         keep_interrupts_masked_p, use_debug_exception_return_p.
28867         (mips_attribute_table): Add interrupt, use_shadow_register_set,
28868         keep_interrupts_masked, use_debug_exception_return.
28869         (mips_interrupt_type_p, mips_use_shadow_register_set_p,
28870         mips_keep_interrupts_masked_p, mips_use_debug_exception_return_p):
28871         New functions.
28872         (mips_function_ok_for_sibcall): Return false for interrupt handlers.
28873         (mips_print_operand): Process COP0 registers to print $0 .. $31
28874         correctly for GAS to process.
28875         (mips_interrupt_extra_call_saved_reg_p): New function.
28876         (mips_cfun_call_saved_reg_p): For interrupt handlers, we need to check
28877         extra registers.
28878         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
28879         (mips_compute_frame_info): Add supports for interrupt context that
28880         includes doubleword accumulators and COP0 registers.
28881         (mips_for_each_saved_acc): New function.
28882         (mips_for_each_saved_gpr_and_fpr): Change the function name from
28883         mips_for_each_saved_reg.
28884         (mips_save_reg): Save accumulators.
28885         (mips_kernel_reg_p): A new for_each_rtx callback.
28886         (mips_expand_prologue): Support interrupt handlers.
28887         (mips_restore_reg): Restore accumulators.
28888         (mips_expand_epilogue): Support interrupt handlers.
28889         (mips_can_use_return_insn): Return false for interrupt handlers.
28890         (mips_epilogue_uses): New function.
28891         * config/mips/mips.md (UNSPEC_ERET, UNSPEC_DERET, UNSPEC_DI,
28892         UNSPEC_EHB, UNSPEC_RDPGPR, UNSPEC_COP0): New UNSPEC.
28893         (mips_eret, mips_deret, mips_di, mips_ehb, mips_rdpgpr,
28894         cop0_move): New instructions.
28895         * config/mips/mips-protos.h (mips_epilogue_uses): Declare.
28896         * config/mips/mips.h (K0_REG_NUM, K1_REG_NUM, KERNEL_REG_P): New
28897         defines.
28898         (COP0_STATUS_REG_NUM, COP0_CAUSE_REG_NUM, COP0_EPC_REG_NUM):
28899         New defines.
28900         (CAUSE_IPL, SR_IPL, SR_EXL, SR_IE): New defines.
28901         (MIPS_PROLOGUE_TEMP_REGNUM, MIPS_EPILOGUE_TEMP_REGNUM): For
28902         interrupt handlers, we use K0 as the temporary register.
28903         (EPILOGUE_USES): Change to a function call.
28904         * config/mips/sde.h (MIPS_EPILOGUE_TEMP_REGNUM): For interrupt
28905         handlers, we use K0 as the temporary register.
28906
28907         * doc/extend.texi (Function Attributes): Document interrupt,
28908         use_shadow_register_set, keep_interrupts_masked,
28909         use_debug_exception_return for MIPS attributes.
28910
28911 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
28912
28913         * config.gcc (powerpc64-*-gnu*): Add rs6000/default64.h to tm_file.
28914         Remove a number of t-files from tmake_file.
28915         * config/rs6000/sysv4.opt (mprototype): Name variable target_prototype.
28916         * config/rs6000/sysv4.h (TARGET_PROTOTYPE): Define.
28917         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Set
28918         target_prototype, not TARGET_PROTOTYPE.
28919         (LINK_OS_GNU_SPEC): Define.
28920         * config/rs6000/t-linux64 (LIB2FUNCS_EXTRA): Delete tramp.S
28921         and darwin-ldoubdle.c.
28922
28923 2009-04-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
28924
28925         PR driver/39293
28926         * gcc.c (save_temps_flag): Add support for -save-temps=obj.
28927         (cpp_options): Ditto.
28928         (default_compilers): Ditto.
28929         (display_help): Ditto.
28930         (process_command): Ditto.
28931         (do_spec_1): Ditto.
28932         (set_input): Use lbasename instead of duplicate code.
28933         (save_temps_prefix): New static for -save-temps=obj.
28934         (save_temps_length): Ditto.
28935
28936         * doc/invoke.texi (-save-temps=obj): Document new variant to
28937         -save-temps switch.
28938
28939 2009-04-02  Jeff Law  <law@redhat.com>
28940
28941         * reload1.c (fixup_eh_region_notes): Remove write-only "trap_count"
28942         variable.
28943
28944 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
28945
28946         * configure.ac: Support -Bstatic/-Bdynamic for linker version > 2.
28947         * configure: Regenerated.
28948
28949 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
28950
28951         * c-decl.c (merge_decls): Make sure newdecl and olddecl don't
28952         share the argument list.
28953
28954 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
28955
28956         Merge
28957
28958         2009-02-12  Diego Novillo  <dnovillo@google.com>
28959
28960         * varpool.c (debug_varpool): New.
28961         * cgraph.h (debug_varpool): Declare.
28962
28963 2009-04-02  Jan Hubicka  <jh@suse.cz>
28964
28965         * passes.c (init_optimization_passes): Remove two copies of ehcleanup
28966         pass.
28967
28968 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
28969
28970         * config/i386/i386.c (ix86_abi): Move initialization to ...
28971         (override_options): Here.
28972
28973 2009-04-02  Christian Bruel  <christian.bruel@st.com>
28974
28975         * config/sh/sh.c (sh_dwarf_register_span): New function.
28976         (TARGET_DWARF_REGISTER_SPAN): Define.
28977         * config/sh/sh-protos.h (sh_dwarf_register_span): Declare.
28978
28979 2009-04-02  Ira Rosen  <irar@il.ibm.com>
28980
28981         PR tree-optimization/39595
28982         * tree-vect-slp.c (vect_build_slp_tree): Check that the size of
28983         interleaved loads group is not  greater than the SLP group size.
28984
28985 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
28986
28987         * builtins.c (is_builtin_name): New.
28988         (called_as_built_in): Use is_builtin_name.
28989         * tree.h (is_builtin_name): New.
28990         * varasm.c (incorporeal_function_p): Use is_builtin_name
28991
28992 2009-04-02  Andrew Stubbs  <ams@codesourcery.com>
28993
28994         * config/sh/linux-unwind.h: Disable when inhibit_libc is defined.
28995
28996 2009-04-02  Dodji Seketeli  <dodji@redhat.com>
28997
28998         PR c++/26693
28999         * c-decl.c (clone_underlying_type): Move this ...
29000         * c-common.c (set_underlying_type): ... here.
29001         Also, make sure the function properly sets TYPE_STUB_DECL() on
29002         the newly created typedef variant type.
29003         * c-common.h (is_typedef_decl, set_underlying_type): Declare ...
29004         * c-common.c (is_typedef_decl, set_underlying_type): ... new entry
29005         points.
29006
29007 2009-04-02  Richard Guenther  <rguenther@suse.de>
29008
29009         PR tree-optimization/37221
29010         * tree-flow.h (degenerate_phi_result): Declare.
29011         * tree-ssa-dom.c (degenerate_phi_result): Export.
29012         * tree-scalar-evolution.c (analyze_initial_condition): If
29013         the initial condition is defined by a degenerate PHI node
29014         use the degenerate value.
29015
29016 2009-04-01  Eric Botcazou  <ebotcazou@adacore.com>
29017
29018         PR rtl-optimization/39588
29019         * combine.c (merge_outer_ops): Do not set the constant when this
29020         is not necessary.
29021         (simplify_shift_const_1): Do not modify it either in this case.
29022
29023 2009-04-01  Steven Bosscher  <steven@gcc.gnu.org>
29024
29025         * config/ia64/ia64.c (ia64_handle_option): Inform user that Itanium1
29026         tuning is deprecated if -mtune value is set to an Itanium1 variant.
29027
29028 2009-04-01  Janis Johnson  <janis187@us.ibm.com>
29029
29030         PR c/29027
29031         * c-lex.c (interpret_float): Default (no suffix) is double.
29032
29033 2009-04-1  Xinliang David Li  <davidxl@google.com>
29034
29035         * config/i386/i386.c (legitimate_constant_p): Recognize
29036         all one vector constant.
29037
29038 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
29039
29040         * config/vax/vax.c: Add #includes to silence warnings.
29041         Change #include order to silence two warnings.
29042
29043 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
29044
29045         * config/vax/linux.h (TARGET_DEFAULT): Add the MASK_QMATH flag bit.
29046         (ASM_SPEC): Pass -k to the assembler for PIC code.
29047
29048 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
29049
29050         * config.gcc: Add vax-*-linux* to the switch.
29051         * config/vax/linux.h: New file. (TARGET_VERSION,
29052         TARGET_OS_CPP_BUILTINS, TARGET_DEFAULT, CPP_SPEC, LINK_SPEC): Define.
29053
29054 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
29055
29056         * config/vax/vax.c (vax_output_int_move, adjacent_operands_p):
29057         Use predicate macros instead of GET_CODE() == foo.
29058         * config/vax/vax.md (movsi_2, movstrictqi, and<mode>3, ashrsi3,
29059         ashlsi3, rotrsi3, <unnamed>): Likewise.
29060
29061 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
29062
29063         * config/vax/builtins.md (jbbssiqi, jbbssihi, jbbssisi, jbbcciqi,
29064         jbbccihi, jbbccisi): Remova trailing whitespace.
29065         * config/vax/constraints.md: Likewise.
29066         * config/vax/elf.h (ASM_PREFERRED_EH_DATA_FORMAT): Likewise.
29067         * config/vax/openbsd1.h (OBSD_OLD_GAS): Likewise.
29068         * config/vax/predicates.md: Likewise.
29069         * config/vax/vax.c (print_operand_address, vax_output_int_move,
29070         vax_expand_addsub_di_operands, adjacent_operands_p): Likewise.
29071         * config/vax/vax.h: Likewise.
29072         * config/vax/vax.md (nonlocal_goto): Likewise.
29073
29074 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
29075
29076         * config/vax/vax.c (vax_float_literal, vax_output_int_move)
29077         (indirectable_address_p, adjacent_operands_p): Add spaces around
29078         braces.
29079         * config/vax/vax-protos.h (adjacent_operands_p): Likewise.
29080
29081 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
29082
29083         * config/vax/vax.c (legitimate_constant_address_p,
29084         legitimate_constant_p, indirectable_address_p, nonindexed_address_p,
29085         index_term_p, reg_plus_index_p, legitimate_address_p,
29086         vax_mode_dependent_address_p): Update comments to match functions
29087         modified by the recent int->bool conversion.
29088
29089 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
29090
29091         * config/vax/builtins.md: Update copyright message.
29092         * config/vax/constraints.md: Likewise.
29093         * config/vax/netbsd-elf.h: Likewise.
29094         * config/vax/predicates.md: Likewise.
29095         * config/vax/vax-protos.h: Likewise.
29096         * config/vax/vax.c: Likewise.
29097         * config/vax/vax.h: Likewise.
29098         * config/vax/vax.md: Likewise.
29099         * config/vax/vax.opt: Likewise.
29100
29101 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
29102
29103         * config/vax/builtins.md (ffssi2, ffssi2_internal,
29104         sync_lock_test_and_set<mode>, sync_lock_release<mode>): Fix indention.
29105         * config/vax/constraints.md (B, R): Likewise.
29106         * config/vax/predicates.md (external_memory_operand,
29107         nonimmediate_addsub_di_operand): Likewise.
29108         * config/vax/vax.c (vax_output_int_add): Likewise.
29109         * config/vax/vax.md (movsi, movsi_2, mov<mode>, call_value,
29110         untyped_call): Likewise.
29111
29112 2009-04-01  Matt Thomas  <matt@3am-software.com>
29113
29114         * config/vax/predicates.md: New file.
29115         (symbolic_operand, local_symbolic_operand, external_symbolic_operand,
29116         external_const_operand, nonsymbolic_operand, external_memory_operand,
29117         indirect_memory_operand, indexed_memory_operand,
29118         illegal_blk_memory_operand, illegal_addsub_di_memory_operand,
29119         nonimmediate_addsub_di_operand, general_addsub_di_operand): New
29120         predicate.
29121         * config/vax/constraints.md: New file.
29122         (Z0, U06,  U08, U16, CN6, S08, S16, I, J, K, L, M, N, O, G, Q, B, R, T):
29123         New constraint.
29124         * config/vax/builtins.md: New file.
29125         (ffssi2, ffssi2_internal, sync_lock_test_and_set<mode>, jbbssiqi,
29126         jbbssihi, jbbssisi, sync_lock_release<mode>, jbbcciqi, jbbccihi,
29127         jbbccisi): Define.
29128         * config/vax/vax.opt (mqmath): Add option.
29129         * config/vax/vax.md (isfx): Extend with DI.
29130         (VAXintQH, VAXintQHSD): Define.
29131         (tst<mode>, cmp<mode>, *bit<mode>, movmemhi1, truncsiqi2, truncsihi2,
29132         mulsidi3, add<mode>3, sub<mode>, mul<mode>3, div<mode>3, and<mode>,
29133         and<mode>_const_int, ior<mode>3, xor<mode>3, neg<mode>2,
29134         one_cmpl<mode>2, ashlsi3, lshrsi3, rotlsi3): Update constraints.
29135         (movdi): Update constraints and use vax_output_int_move().
29136         (movsi, movsi_2, pushlclsymreg, pushextsymreg, movlclsymreg,
29137         movextsymreg, adddi3, adcdi3, subdi3, sbcdi3, pushextsym, movextsym,
29138         pushlclsym, movlclsym, movaddr<mode>, pushaddr<mode>,
29139         nonlocal_goto): New.
29140         (mov<mode>): Extend accepted operand types.
29141         (subdi3_old): Rename from subdi3, change update constraints and use
29142         a new implementation.
29143         * config/vax/vax.h (PCC_BITFIELD_TYPE_MATTERS): Add space.
29144         (FRAME_POINTER_CFA_OFFSET, IRA_COVER_CLASSES, CLASS_MAX_NREGS,
29145         MOVE_RATIO, CLEAR_RATIO): Define.
29146         (REG_CLASS_FROM_LETTER, CONST_OK_FOR_LETTER_P,
29147         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT): Delete.
29148         (PRINT_OPERAND): Redefine using a function instead of inlined code.
29149         * config/vax/vax.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Define.
29150         (split_quadword_operands): Make static and really allow variable
29151         splitting.
29152         (print_operand_address): Update for PIC generation.
29153         (print_operand, vax_builtin_setjmp_frame_value, vax_output_int_subtract,
29154         indexable_address_p, fixup_mathdi_operand,
29155         vax_expand_addsub_di_operands, adjacent_operands_p): New.
29156         (vax_float_literal, legitimate_constant_p,
29157         indirectable_constant_address_p, index_term_p,
29158         reg_plus_index_p): Return bool instead of int.
29159         (vax_rtx_costs): Fix cost for CONST_INT, indent and use HOST_WIDE_INT
29160         where needed.
29161         (vax_output_int_move, vax_output_int_add): Extend to allow PIC
29162         generation.
29163         (vax_output_conditional_branch): Indent.
29164         (legitimate_constant_address_p, indirectable_constant_address_p,
29165         indirectable_address_p, nonindexed_address_p, legitimate_address_p,
29166         vax_mode_dependent_address_p): Return bool instead of int, update for
29167         PIC generation.
29168         * config/vax/vax-protos.h (legitimate_constant_address_p,
29169         legitimate_constant_p, legitimate_address_p,
29170         vax_mode_dependent_address_p): Change declaration to bool.
29171         (legitimate_pic_operand_p, adjacent_operands_p, print_operand,
29172         vax_expand_addsub_di_operands, vax_output_int_subtract,
29173         vax_output_movmemsi): Declare.
29174         (split_quadword_operands, vax_float_literal): Delete declaration.
29175         * config/vax/netbsd-elf.h (CC1_SPEC, CC1PLUS_SPEC) Define.
29176         * config/vax/elf.h (NO_EXTERNAL_INDIRECT_ADDRESS,
29177         VAX_CC1_AND_CC1PLUS_SPEC, ASM_PREFERRED_EH_DATA_FORMAT,
29178         ASM_OUTPUT_DWARF_PCREL): Define.
29179         (ASM_SPEC): Change definition to allow PIC generation.
29180
29181 2009-04-01  Steve Ellcey  <sje@cup.hp.com>
29182
29183         * doc/sourcebuild.texi: Update front-end requirements.
29184
29185 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
29186
29187         PR target/39226
29188         * config/rs6000/rs6000.md (andsi3_internal5_nomc,
29189         anddi3_internal2_nomc, anddi3_internal3_nomc): Removed.
29190         (booldi3_internal3): Use boolean_or_operator instead of
29191         boolean_operator.
29192
29193 2009-04-01  Joseph Myers  <joseph@codesourcery.com>
29194
29195         PR c/39605
29196         * c-decl.c (grokdeclarator): Pedwarn for file-scope array
29197         declarator whose size is not an integer constant expression but
29198         folds to an integer constant, then treat it as a constant
29199         subsequently.
29200
29201 2009-04-01  Richard Guenther  <rguenther@suse.de>
29202
29203         * fold-const.c (fold_plusminus_mult_expr): Do not fold
29204         i * 4 + 2 to (i * 2 + 1) * 2.
29205
29206 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
29207
29208         PR c/37772
29209         * c-parser.c (c_parser_asm_statement): Skip until close paren and
29210         return if c_parser_asm_string_literal returned NULL.
29211
29212 2009-04-01  Nick Clifton  <nickc@redhat.com>
29213
29214         * config/m32c/m32c.h (LIBGCC2_UNITS_PER_WORD): Define if not
29215         already defined.
29216         * config/m32c/t-m32c (LIB2FUNCS_EXTRA): Add m32c-lib2-trapv.c.
29217         * config/m32c/m32c-lib2.c: Remove unused typedefs.  Rename the
29218         other typedefs to avoid conflicts with libgcc2.c.  Define labels
29219         to gain 16-bit bit-manipulation functions from libgcc2.c and then
29220         include it.
29221         * config/m32c/m32c-lib2-trapv.c: New file.  Define labels
29222         to gain 16-bit trapping arithmetic functions from libgcc2.c and
29223         then include it.
29224
29225 2009-04-01  Rafael Avila de Espindola  <espindola@google.com>
29226
29227         * varasm.c (default_function_rodata_section): Declare DOT as
29228         const char*.
29229
29230 2009-04-01  Kai Tietz  <kai.tietz@onevision.com>
29231             Andrey Galkin  <agalkin@hypercom.com>
29232
29233         PR/39492
29234         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address):
29235         Make object_name unique for each process.
29236
29237 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
29238
29239         PR other/39591
29240         * omp-low.c (remove_exit_barrier): Don't optimize if there are any
29241         addressable variables in the parallel that could go out of scope while
29242         running queued tasks.
29243
29244 2009-04-01  Anatoly Sokolov  <aesok@post.ru>
29245
29246         * config/avr/avr.h (avr_case_values_threshold): Remove declaration.
29247         (CASE_VALUES_THRESHOLD): Redefine.
29248         * config/avr/avr.c (avr_override_options): Remove initialization of
29249         avr_case_values_threshold variable.
29250         (avr_case_values_threshold): Remove variable. Add new function.
29251         * config/avr/avr-protos.h (avr_case_values_threshold): Declare.
29252         * config/avr/avr.opt (mno-tablejump): Remove option.
29253         * doc/invoke.texi (AVR Options): Remove -mno-tablejump.
29254
29255 2009-04-01  DJ Delorie  <dj@redhat.com>
29256
29257         * varasm.c (default_function_rodata_section): Don't assume
29258         anything about where the first '.' in the section name is.
29259
29260 2009-04-01  Alan Modra  <amodra@bigpond.net.au>
29261
29262         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Delete redundant
29263         rs6000_emit_stack_tie.
29264
29265 2009-03-31  Ian Lance Taylor  <iant@google.com>
29266
29267         * tree-eh.c (tree_remove_unreachable_handlers): Compare
29268         gimple_code with GIMPLE_RESX, not RESX.
29269
29270 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
29271
29272         * c-common.c (c_get_ident): New.
29273         (c_common_nodes_and_builtins): Call it for type names that may be NULL.
29274
29275 2009-04-01  Ben Elliston  <bje@au.ibm.com>
29276
29277         * config/rs6000/sysv4.opt (msdata): Improve option description.
29278
29279 2009-03-31  Steve Ellcey  <sje@cup.hp.com>
29280
29281         * config/ia64/ia64.md (divsf3_internal_lat): Remove.
29282         (divdf3_internal_lat): Remove.
29283         (divxf3_internal_lat): Remove.
29284         (divxf3_internal_thr): Remove.
29285         (divxf): Use divxf3_internal.
29286         * config/ia64/div.md (divsf3_internal_lat): New.
29287         (divdf3_internal_lat): New.
29288         (divxf3_internal): New.
29289
29290 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
29291
29292         PR c/448
29293         * Makefile.in (USE_GCC_STDINT): Define.
29294         (stmp-int-hdrs): Install stdint.h if applicable.
29295         * c-common.c (CHAR16_TYPE): Define in terms of UINT_LEAST16_TYPE
29296         if known.
29297         (CHAR32_TYPE): Define in terms of UINT_LEAST32_TYPE if known.
29298         (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE, INT64_TYPE,
29299         UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
29300         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
29301         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
29302         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
29303         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
29304         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
29305         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
29306         (c_common_nodes_and_builtins): Initialize
29307         underlying_wchar_type_node.  Do not initialize
29308         signed_wchar_type_node or unsigned_wchar_type_node.  Initialize
29309         nodes for new types.
29310         (c_stddef_cpp_builtins): Define macros for new types.
29311         * c-common.h (CTI_SIGNED_WCHAR_TYPE, CTI_UNSIGNED_WCHAR_TYPE):
29312         Remove.
29313         (CTI_UNDERLYING_WCHAR_TYPE, CTI_SIG_ATOMIC_TYPE, CTI_INT8_TYPE,
29314         CTI_INT16_TYPE, CTI_INT32_TYPE, CTI_INT64_TYPE, CTI_UINT8_TYPE,
29315         CTI_UINT16_TYPE, CTI_UINT32_TYPE, CTI_UINT64_TYPE,
29316         CTI_INT_LEAST8_TYPE, CTI_INT_LEAST16_TYPE, CTI_INT_LEAST32_TYPE,
29317         CTI_INT_LEAST64_TYPE, CTI_UINT_LEAST8_TYPE, CTI_UINT_LEAST16_TYPE,
29318         CTI_UINT_LEAST32_TYPE, CTI_UINT_LEAST64_TYPE, CTI_INT_FAST8_TYPE,
29319         CTI_INT_FAST16_TYPE, CTI_INT_FAST32_TYPE, CTI_INT_FAST64_TYPE,
29320         CTI_UINT_FAST8_TYPE, CTI_UINT_FAST16_TYPE, CTI_UINT_FAST32_TYPE,
29321         CTI_UINT_FAST64_TYPE, CTI_INTPTR_TYPE, CTI_UINTPTR_TYPE): Define.
29322         (signed_wchar_type_node, unsigned_wchar_type_node): Remove.
29323         (underlying_wchar_type_node, sig_atomic_type_node, int8_type_node,
29324         int16_type_node, int32_type_node, int64_type_node,
29325         uint8_type_node, uint16_type_node, c_uint32_type_node,
29326         c_uint64_type_node, int_least8_type_node, int_least16_type_node,
29327         int_least32_type_node, int_least64_type_node,
29328         uint_least8_type_node, uint_least16_type_node,
29329         uint_least32_type_node, uint_least64_type_node,
29330         int_fast8_type_node, int_fast16_type_node, int_fast32_type_node,
29331         int_fast64_type_node, uint_fast8_type_node, uint_fast16_type_node,
29332         uint_fast32_type_node, uint_fast64_type_node, intptr_type_node,
29333         uintptr_type_node): Define.
29334         * c-cppbuiltin.c (builtin_define_constants,
29335         builtin_define_type_minmax): New.
29336         (builtin_define_stdint_macros): Define more macros.
29337         (c_cpp_builtins): Define more limit macros.
29338         (type_suffix): New.
29339         (builtin_define_type_max): Define in terms of
29340         builtin_define_type_minmax.  Remove is_long parameter.  All
29341         callers changed.
29342         * config.gcc (use_gcc_stdint): Define.
29343         (tm_file): Add glibc-stdint.h for targets using glibc or uClibc.
29344         Add newlib-stdint.h for generic targets.
29345         * config/glibc-stdint.h, config/newlib-stdint.h,
29346         ginclude/stdint-gcc.h, ginclude/stdint-wrap.h: New.
29347         * config/m32c/m32c.h (UINTPTR_TYPE): Define.
29348         * config/score/score.h (UINTPTR_TYPE): Define.
29349         * config/sol2.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
29350         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
29351         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
29352         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
29353         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
29354         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
29355         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
29356         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
29357         * config/spu/spu.h (STDINT_LONG32): Define.
29358         * configure.ac (use_gcc_stdint): Substitute.
29359         * configure: Regenerate.
29360         * doc/cpp.texi (__SIG_ATOMIC_TYPE__, __INT8_TYPE__,
29361         __INT16_TYPE__, __INT32_TYPE__, __INT64_TYPE__, __UINT8_TYPE__,
29362         __UINT16_TYPE__, __UINT32_TYPE__, __UINT64_TYPE__,
29363         __INT_LEAST8_TYPE__, __INT_LEAST16_TYPE__, __INT_LEAST32_TYPE__,
29364         __INT_LEAST64_TYPE__, __UINT_LEAST8_TYPE__, __UINT_LEAST16_TYPE__,
29365         __UINT_LEAST32_TYPE_, __UINT_LEAST64_TYPE__, __INT_FAST8_TYPE__,
29366         __INT_FAST16_TYPE__, __INT_FAST32_TYPE__, __INT_FAST64_TYPE__,
29367         __UINT_FAST8_TYPE__, __UINT_FAST16_TYPE__, __UINT_FAST32_TYPE__,
29368         __UINT_FAST64_TYPE__, __INTPTR_TYPE__, __UINTPTR_TYPE__,
29369         __WINT_MAX__, __SIZE_MAX__, __PTRDIFF_MAX__, __UINTMAX_MAX__,
29370         __SIG_ATOMIC_MAX__, __INT8_MAX__, __INT16_MAX__, __INT32_MAX__,
29371         __INT64_MAX__, __UINT8_MAX__, __UINT16_MAX__, __UINT32_MAX__,
29372         __UINT64_MAX__, __INT_LEAST8_MAX__, __INT_LEAST16_MAX__,
29373         __INT_LEAST32_MAX__, __INT_LEAST64_MAX__, __UINT_LEAST8_MAX__,
29374         __UINT_LEAST16_MAX__, __UINT_LEAST32_MAX__, __UINT_LEAST64_MAX__,
29375         __INT_FAST8_MAX__, __INT_FAST16_MAX__, __INT_FAST32_MAX__,
29376         __INT_FAST64_MAX__, __UINT_FAST8_MAX__, __UINT_FAST16_MAX__,
29377         __UINT_FAST32_MAX__, __UINT_FAST64_MAX__, __INTPTR_MAX__,
29378         __UINTPTR_MAX__, __WCHAR_MIN__, __WINT_MIN__, __SIG_ATOMIC_MIN__,
29379         __INT8_C, __INT16_C, __INT32_C, __INT64_C, __UINT8_C, __UINT16_C,
29380         __UINT32_C, __UINT64_C, __INTMAX_C, __UINTMAX_C): Document.
29381         * doc/tm.texi (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE,
29382         INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
29383         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
29384         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
29385         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
29386         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
29387         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
29388         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Document.
29389
29390 2009-03-31  Bernd Schmidt  <bernd.schmidt@analog.com>
29391
29392         * loop-iv.c (suitable_set_for_replacement): Renamed from
29393         simplify_using_assignment; changed to return bool and to accept new
29394         args DEST and SRC.  Return true iff we find a source/destination pair
29395         that can be used to make a replacement, and fill SRC and DEST if so.
29396         Remove arg ALTERED.  Don't deal with altered regs here.  All callers
29397         changed.
29398         (simplify_using_initial_values): Deal with altered regs here and track
29399         more precisely the effect they have on the validity of our expression.
29400
29401         * loop-iv.c (simplify_using_condition): A condition of the form
29402         (EQ REG CONST) can be used to simply make a substitution.
29403         (simplify_using_initial_values): Keep track of conditions we have seen
29404         and keep using them to simplify new expressions, while applying the
29405         same substitutions to them as to the expression.
29406
29407         * simplify-rtx.c (simplify_relational_operation_1): Simplify
29408         (LTU (PLUS a C) C) or (LTU (PLUS a C) a) to (GEU a -C); likewise with
29409         GEU/LTU reversed.
29410
29411         * loop-iv.c (determine_max_iter): New arg OLD_NITER.  All callers
29412         changed.  Use this when trying to improve the upper bound.
29413         Generate the comparison by using simplify_gen_relational.
29414
29415         * loop-iv.c (simple_rhs_p): Allow more kinds of expressions.
29416
29417         * loop-iv.c (replace_single_def_regs, replace_in_expr): New static
29418         functions.
29419         (simplify_using_assignment, simplify_using_initial_values): Call
29420         replace_in_expr to make replacements.  Call replace_single_def_regs
29421         once on the initial version of the expression.
29422
29423 2009-03-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
29424
29425         PR target/27237
29426         * doc/invoke.texi (ARM Options): Update documentation for -mthumb.
29427
29428 2009-03-31  Richard Guenther  <rguenther@suse.de>
29429
29430         PR middle-end/31029
29431         * fold-const.c (fold_binary): Fold X +- Y CMP X to Y CMP 0 for
29432         equality comparisons.  Fold C - X CMP X if C % 2 == 1.
29433
29434 2009-03-31  Richard Guenther  <rguenther@suse.de>
29435
29436         * tree.h (div_if_zero_remainder): Declare.
29437         * fold-const.c (div_if_zero_remainder): Export.
29438         * tree-ssa-forwprop.c
29439         (forward_propagate_addr_into_variable_array_index): Handle
29440         constant array index addition outside of the variable index.
29441
29442 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
29443
29444         PR target/39592
29445         * config/i386/i386.md (*floatunssi<mode>2_1, two unnamed
29446         define_splits, floatunssi<mode>2): Require x87 conversions from
29447         DImode to be permitted.
29448
29449 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
29450
29451         PR preprocessor/15638
29452         * c-common.c (c_cpp_error): Handle CPP_DL_FATAL.
29453
29454 2009-03-31  Richard Guenther  <rguenther@suse.de>
29455
29456         PR middle-end/23401
29457         PR middle-end/27810
29458         * tree.h (DECL_GIMPLE_FORMAL_TEMP_P): Remove.
29459         (struct tree_decl_with_vis): Remove gimple_formal_temp member.
29460         * tree-eh.c (lower_eh_constructs_2): Move LHS assignment to
29461         a separate statement.
29462         * gimplify.c (pop_gimplify_context): Remove formal temp handling.
29463         (lookup_tmp_var): Likewise.
29464         (is_gimple_formal_tmp_or_call_rhs): Remove.
29465         (is_gimple_reg_or_call_rhs): Rename to ...
29466         (is_gimple_reg_rhs_or_call): ... this.
29467         (is_gimple_mem_or_call_rhs): Rename to ...
29468         (is_gimple_mem_rhs_or_call): ... this.
29469         (internal_get_tmp_var): Use is_gimple_reg_rhs_or_call.  Set
29470         DECL_GIMPLE_REG_P only if is_formal is true.
29471         (gimplify_compound_lval): Use is_gimple_reg.  Remove workaround
29472         for non-proper post-modify expression gimplification.
29473         (gimplify_self_mod_expr): For post-modify expressions gimplify
29474         the lvalue to a minimal lvalue.
29475         (rhs_predicate_for): Remove formal temp case.
29476         (gimplify_modify_expr_rhs): Likewise.
29477         (gimplify_addr_expr): Use is_gimple_reg.
29478         (gimplify_expr): Remove formal temp cases.
29479         (gimple_regimplify_operands): Likewise.
29480         * tree-ssa-pre.c (get_or_alloc_expr_for): Treat EXC_PTR_EXPR
29481         and FILTER_EXPR like constants.
29482         * gimple.c (walk_gimple_op): Fix val_only initialization, use
29483         is_gimple_reg.
29484         (is_gimple_formal_tmp_rhs): Remove.
29485         (is_gimple_reg_rhs): Remove special casing.
29486         (is_gimple_mem_rhs): Fix.
29487         (is_gimple_reg): Move DECL_GIMPLE_REG_P handling earlier.
29488         (is_gimple_formal_tmp_var): Remove.
29489         (is_gimple_formal_tmp_reg): Likewise.
29490         (is_gimple_min_lval): Allow invariant component ref parts.
29491         * gimple.h (is_gimple_formal_tmp_rhs, is_gimple_formal_tmp_var,
29492         is_gimple_formal_tmp_reg): Remove declarations.
29493         * tree-cfg.c (verify_expr): Verify that variables with address
29494         taken do not have DECL_GIMPLE_REG_P set.
29495         * tree-mudflap.c (mf_build_check_statement_for): Use
29496         force_gimple_operand instead of gimplify_expr.
29497
29498 2009-03-31  Ayal Zaks  <zaks@il.ibm.com>
29499
29500         * modulo-sched.c (sms_schedule_by_order): Pass the actual
29501         schedulable rows to compute_split_row.
29502
29503 2009-03-31  Ben Elliston  <bje@au.ibm.com>
29504
29505         PR target/31635
29506         * config/rs6000/rs6000.c (rs6000_handle_option): Handle
29507         OPT_mvrsave.
29508
29509 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
29510
29511         * doc/invoke.texi (RS/6000 and PowerPC Options):Document mtls-markers.
29512         * configure.ac (HAVE_AS_TLS_MARKERS): New gas feature check.
29513         * configure: Regenerate.
29514         * config.in: Regenerate.
29515         * config/rs6000/rs6000.opt (mtls-markers): Add.
29516         * config/rs6000/rs6000.h (TARGET_TLS_MARKERS): Define.
29517         * config/rs6000/rs6000.md (tls_gd_aix, tls_gd_sysv): Add splitter.
29518         (tls_ld_aix, tls_ld_sysv): Likewise.
29519         (tls_gd, tls_gd_call_aix, tls_gd_call_sysv): New insns.
29520         (tls_ld, tls_ld_call_aix, tls_ld_call_sysv): Likewise.
29521
29522 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
29523
29524         * config/spu/spu.c (spu_expand_prologue): Delete redundant code.
29525
29526 2009-03-30  Jan Hubicka  <jh@suse.cz>
29527
29528         * tree-eh.c (make_eh_edges): Set probability 100% to first edge
29529         out of RESX.
29530         (tree_remove_unreachable_handlers): Cleanup EH predecestor
29531         detection and label handling.
29532
29533 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
29534
29535         * ira-int.h (ira_allocno): Rename left_conflicts_num to
29536         left_conflicts_size.
29537         (ALLOCNO_LEFT_CONFLICTS_NUM): Rename to
29538         ALLOCNO_LEFT_CONFLICTS_SIZE.
29539
29540         * ira-color.c (allocno_spill_priority, push_allocno_to_stack,
29541         remove_allocno_from_bucket_and_push,
29542         allocno_spill_priority_compare, push_allocnos_to_stack,
29543         setup_allocno_available_regs_num): Use ALLOCNO_LEFT_CONFLICTS_SIZE
29544         instead of ALLOCNO_LEFT_CONFLICTS_NUM.
29545         (setup_allocno_left_conflicts_num): Ditto.  Rename to
29546         setup_allocno_left_conflicts_size.
29547         (put_allocno_into_bucket): Use ALLOCNO_LEFT_CONFLICTS_SIZE
29548         instead of ALLOCNO_LEFT_CONFLICTS_NUM and
29549         setup_allocno_left_conflicts_size instead of
29550         setup_allocno_left_conflicts_num.
29551
29552         * ira-build.c (ira_create_allocno): Use
29553         ALLOCNO_LEFT_CONFLICTS_SIZE instead of
29554         ALLOCNO_LEFT_CONFLICTS_NUM.
29555
29556 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
29557
29558         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
29559         instead of DF_LR_OUT.
29560
29561         * ira-lives.c (process_bb_node_lives): Ditto.
29562
29563         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
29564         instead of DF_LR_{OUT,IN}.
29565
29566         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
29567
29568         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
29569
29570 2009-03-30  Jan Hubicka  <jh@suse.cz>
29571
29572         * except.c (label_to_region_map): Fix thinko.
29573
29574 2009-03-30  Steve Ellcey  <sje@cup.hp.com>
29575
29576         PR middle-end/38237
29577         * tree.h (tree_find_value): New declaration.
29578         * tree.c (tree_find_value): New function.
29579         * varasm.c (assemble_external): Avoid duplicate entries on lists.
29580
29581 2009-03-30  Jakub Jelinek  <jakub@redhat.com>
29582
29583         PR debug/39563
29584         * c-decl.c (struct c_binding): Add locus field.
29585         (bind): Add locus argument, set locus field from it.
29586         (pop_scope): For b->nested VAR_DECL or FUNCTION_DECL,
29587         add a DECL_EXTERNAL copy of b->decl to current BLOCK_VARS.
29588         (push_file_scope, pushtag, pushdecl, pushdecl_top_level,
29589         implicitly_declare, undeclared_variable, lookup_label,
29590         declare_label, c_make_fname_decl, c_builtin_function,
29591         c_builtin_function_ext_scope, store_parm_decls_newstyle): Adjust
29592         bind callers.
29593
29594 2009-03-30  H.J. Lu  <hongjiu.lu@intel.com>
29595
29596         PR target/38781
29597         * config/i386/i386.c (classify_argument): Check total size of
29598         structure.
29599
29600 2009-03-30  Martin Jambor  <mjambor@suse.cz>
29601
29602         * ipa-prop.h (jump_func_type): Rename IPA_UNKNOWN, IPA_CONST,
29603         IPA_CONST_MEMBER_PTR, and IPA_PASS_THROUGH to IPA_JF_UNKNOWN,
29604         IPA_JF_CONST, IPA_JF_CONST_MEMBER_PTR, and IPA_JF_PASS_THROUGH
29605         respectively.
29606
29607         * tree-dfa.c (get_ref_base_and_extent): Return -1 maxsize if
29608         seen_variable_array_ref while also traversing a union.
29609
29610         * tree-inline.c (optimize_inline_calls): Do not call
29611         cgraph_node_remove_callees.
29612         * cgraphbuild.c (remove_cgraph_callee_edges): New function.
29613         (pass_remove_cgraph_callee_edges): New variable.
29614         * passes.c (init_optimization_passes): Add
29615         pass_remove_cgraph_callee_edges after early inlining and before all
29616         late intraprocedural passes.
29617
29618         * omp-low.c (expand_omp_taskreg): Always set current_function_decl.
29619
29620 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
29621
29622         * config/sparc/sparc.md (*nand<V64mode>_vis, *nand<V32mode>_vis):
29623         Fix typos in names.
29624
29625 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
29626
29627         * combine.c (simplify_comparison): Use have_insn_for.
29628         * dojump.c (do_jump): Likewise.
29629
29630 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
29631
29632         * config/sparc/sparc.c (sparc_compare_emitted): Remove.
29633         (gen_compare_reg, emit_v9_brxx_insn): Handle MODE_CC
29634         sparc_compare_op0 like sparc_compare_emitted used to be handled.
29635         (sparc_expand_compare_and_swap_12): Set sparc_compare_op0
29636         instead of sparc_compare_emitted.
29637         * config/sparc/sparc.h (sparc_compare_emitted): Remove.
29638         * config/sparc/sparc.md (stack_protect_test): Set sparc_compare_op0
29639         instead of sparc_compare_emitted.
29640
29641 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
29642
29643         * bb-reorder.c (partition_hot_cold_basic_blocks): Do not
29644         enter/exit cfglayout mode.
29645         (pass_partition_block): Require it.
29646         * combine.c (find_single_use, reg_dead_at_p): Use CFG.
29647         (combine_instructions): Track basic blocks instead of labels.
29648         (update_cfg_for_uncondjump): New.
29649         (try_combine): Use it.  Update jumps after rescanning.
29650         (pass_combine): Require PROP_cfglayout.
29651         * passes.c (pass_outof_cfg_layout_mode): Move after regmove.
29652
29653 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
29654
29655         * cfglayout.c (pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode):
29656         Provide/destroy PROP_cfglayout respectively.
29657         * gcse.c (pass_jump_bypass, pass_gcse): Require it.
29658         * tree-pass.h (PROP_cfglayout): New.
29659
29660 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
29661
29662         * fold-const.c (const_binop, fold_convert_const_real_from_fixed,
29663         fold_convert_const_fixed_from_fixed,
29664         fold_convert_const_fixed_from_int,
29665         fold_convert_const_fixed_from_real, fold_negate_const): Do not
29666         set TREE_CONSTANT_OVERFLOW.
29667         * tree.def: Remove mention of TREE_CONSTANT_OVERFLOW.
29668         * tree.h (TREE_CONSTANT_OVERFLOW): Delete.
29669
29670 2009-03-30  Ira Rosen  <irar@il.ibm.com>
29671
29672         * tree-vect-loop-manip.c: New file.
29673         * tree-vectorizer.c: Update documentation and included files.
29674         (vect_loop_location): Make extern.
29675         (rename_use_op): Move to tree-vect-loop-manip.c
29676         (rename_variables_in_bb, rename_variables_in_loop,
29677         slpeel_update_phis_for_duplicate_loop,
29678         slpeel_update_phi_nodes_for_guard1,
29679         slpeel_update_phi_nodes_for_guard2, slpeel_make_loop_iterate_ntimes,
29680         slpeel_tree_duplicate_loop_to_edge_cfg, slpeel_add_loop_guard,
29681         slpeel_can_duplicate_loop_p, slpeel_verify_cfg_after_peeling,
29682         set_prologue_iterations, slpeel_tree_peel_loop_to_edge,
29683         find_loop_location): Likewise.
29684         (new_stmt_vec_info): Move to tree-vect-stmts.c.
29685         (init_stmt_vec_info_vec, free_stmt_vec_info_vec, free_stmt_vec_info,
29686         get_vectype_for_scalar_type, vect_is_simple_use,
29687         supportable_widening_operation, supportable_narrowing_operation):
29688         Likewise.
29689         (bb_in_loop_p): Move to tree-vect-loop.c.
29690         (new_loop_vec_info, destroy_loop_vec_info,
29691         reduction_code_for_scalar_code, report_vect_op,
29692         vect_is_simple_reduction, vect_is_simple_iv_evolution): Likewise.
29693         (vect_can_force_dr_alignment_p): Move to tree-vect-data-refs.c.
29694         (vect_supportable_dr_alignment): Likewise.
29695         * tree-vectorizer.h (tree-data-ref.h): Include.
29696         (vect_loop_location): Declare.
29697         Reorganize function declarations according to the new file structure.
29698         * tree-vect-loop.c: New file.
29699         * tree-vect-analyze.c: Remove. Move functions to tree-vect-data-refs.c,
29700         tree-vect-stmts.c, tree-vect-slp.c, tree-vect-loop.c.
29701         * tree-vect-data-refs.c: New file.
29702         * tree-vect-patterns.c (timevar.h): Don't include.
29703         * tree-vect-stmts.c: New file.
29704         * tree-vect-transform.c: Remove. Move functions to tree-vect-stmts.c,
29705         tree-vect-slp.c, tree-vect-loop.c.
29706         * Makefile.in (OBJS-common): Remove tree-vect-analyze.o and
29707         tree-vect-transform.o. Add tree-vect-data-refs.o, tree-vect-stmts.o,
29708         tree-vect-loop.o, tree-vect-loop-manip.o, tree-vect-slp.o.
29709         (tree-vect-analyze.o): Remove.
29710         (tree-vect-transform.o): Likewise.
29711         (tree-vect-data-refs.o): Add rule.
29712         (tree-vect-stmts.o, tree-vect-loop.o, tree-vect-loop-manip.o,
29713         tree-vect-slp.o): Likewise.
29714         (tree-vect-patterns.o): Remove redundant dependencies.
29715         (tree-vectorizer.o): Likewise.
29716         * tree-vect-slp.c: New file.
29717
29718 2009-03-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
29719
29720         * optc-gen.awk: Warn if an option flag has multiple different
29721         help strings.
29722
29723 2009-03-30  Sebastian Pop  <sebastian.pop@amd.com>
29724
29725         * doc/invoke.texi (-floop-interchange, -floop-strip-mine,
29726         -floop-block): Document dependences on PPL, CLooG and Graphite.
29727
29728 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
29729
29730         PR rtl-optimization/323
29731         * c-common.c (c_fully_fold, convert_and_check,
29732         c_common_truthvalue_conversion): Handle EXCESS_PRECISION_EXPR.
29733         (c_fully_fold_internal): Disallow EXCESS_PRECISION_EXPR.
29734         * c-common.def (EXCESS_PRECISION_EXPR): New.
29735         * c-cppbuiltin.c (builtin_define_float_constants): Define
29736         constants with enough digits for long double.
29737         * c-lex.c (interpret_float): Interpret constant with excess
29738         precision where appropriate.
29739         * c-opts.c (c_common_post_options): Set
29740         flag_excess_precision_cmdline.  Give an error for
29741         -fexcess-precision=standard for C++ for processors where the
29742         option is significant.
29743         * c-parser.c (c_parser_conditional_expression): Handle excess
29744         precision in condition.
29745         * c-typeck.c (convert_arguments): Handle arguments with excess
29746         precision.
29747         (build_unary_op): Move excess precision outside operation.
29748         (build_conditional_expr): Likewise.
29749         (build_compound_expr): Likewise.
29750         (build_c_cast): Do cast on operand of EXCESS_PRECISION_EXPR.
29751         (build_modify_expr): Handle excess precision in RHS.
29752         (convert_for_assignment): Handle excess precision in converted
29753         value.
29754         (digest_init, output_init_element, process_init_element): Handle
29755         excess precision in initializer.
29756         (c_finish_return): Handle excess precision in return value.
29757         (build_binary_op): Handle excess precision in operands and add
29758         excess precision as needed for operation.
29759         * common.opt (-fexcess-precision=): New option.
29760         * config/i386/i386.h (X87_ENABLE_ARITH, X87_ENABLE_FLOAT): New.
29761         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
29762         For standard excess precision, output explicit conversion to and
29763         truncation from XFmode.
29764         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1,
29765         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp,
29766         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387, two unnamed
29767         define_splits, floatdi<X87MODEF:mode>2_i387_with_xmm, two unnamed
29768         define_splits, *floatunssi<mode>2_1, two unnamed define_splits,
29769         floatunssi<mode>2, add<mode>3, sub<mode>3, mul<mode>3, divdf3,
29770         divsf3, *fop_<mode>_comm_i387, *fop_<mode>_1_i387,
29771         *fop_<MODEF:mode>_2_i387, *fop_<MODEF:mode>_3_i387,
29772         *fop_df_4_i387, *fop_df_5_i387, *fop_df_6_i387, two unnamed
29773         define_splits, sqrt<mode>2): Disable where appropriate for
29774         standard excess precision.
29775         * convert.c (convert_to_real): Do not shorten arithmetic to type
29776         for which excess precision would be used.
29777         * defaults.h (TARGET_FLT_EVAL_METHOD_NON_DEFAULT): Define.
29778         * doc/invoke.texi (-fexcess-precision=): Document option.
29779         (-mfpmath=): Correct index entry.
29780         * flags.h (enum excess_precision, flag_excess_precision_cmdline,
29781         flag_excess_precision): New.
29782         * langhooks.c (lhd_post_options): Set
29783         flag_excess_precision_cmdline.
29784         * opts.c (common_handle_option): Handle -fexcess-precision=.
29785         * toplev.c (flag_excess_precision_cmdline, flag_excess_precision,
29786         init_excess_precision): New.
29787         (lang_dependent_init_target): Call init_excess_precision.
29788         * tree.c (excess_precision_type): New.
29789         * tree.h (excess_precision_type): Declare.
29790
29791 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
29792
29793         PR c/35235
29794         * c-typeck.c (build_component_ref): Do not copy qualifiers from
29795         non-lvalue to component.
29796
29797 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
29798
29799         PR preprocessor/34695
29800         * Makefile.in (c-opts.o): Depend on c-tree.h.
29801         * c-common.c: Move down include of diagnostic.h.
29802         (done_lexing, c_cpp_error): New.
29803         * c-common.h (done_lexing): Declare.
29804         * c-decl.c (c_write_global_declarations): Don't check cpp_errors
29805         (parse_in).
29806         * c-opts.c: Include c-tree.h.
29807         (c_common_init_options): Set preprocessor error callback.
29808         (c_common_handle_option): Do not set preprocessor
29809         inhibit_warnings, warnings_are_errors, warn_system_headers,
29810         pedantic_errors or inhibit_warnings flags.
29811         (c_common_post_options): Do not check cpp_errors (parse_in).
29812         (c_common_finish): Do not output dependencies if there were
29813         errors.  Do not check return value of cpp_finish.
29814         * c-ppoutput.c (pp_file_change): Set input_location.
29815         * c-tree.h (c_cpp_error): Declare.
29816         * diagnostic.c (diagnostic_set_info_translated): Also initialize
29817         override_column.
29818         (diagnostic_build_prefix): Check override_column.
29819         * diagnostic.h (diagnostic_info): Add override_column field.
29820         (diagnostic_override_column): Define.
29821
29822 2009-03-28  Paolo Bonzini  <bonzini@gnu.org>
29823
29824         * c-common.c (c_expand_expr, c_staticp): Remove.
29825         * c-common.def (COMPOUND_LITERAL_EXPR): Delete.
29826         * c-common.h (emit_local_var, c_staticp, COMPOUND_LITERAL_EXPR_DECL,
29827         COMPOUND_LITERAL_EXPR_DECL_EXPR): Remove.
29828         * c-gimplify.c (gimplify_compound_literal_expr,
29829         optimize_compound_literals_in_ctor): Remove.
29830         (c_gimplify_expr): Remove COMPOUND_LITERAL_EXPR handling.
29831         * c-objc-common.h (LANG_HOOKS_STATICP): Remove.
29832         * c-semantics.c (emit_local_var): Remove.
29833
29834         * langhooks-def.h (lhd_expand_expr): Remove.
29835         * langhooks.c (lhd_expand_expr): Remove.
29836         * langhooks.h (LANG_HOOKS_DEF): Remove LANG_HOOKS_EXPAND_EXPR.
29837
29838         * expr.c (expand_expr_real_1): Move COMPOUND_LITERAL_EXPR
29839         handling from c-semantics.c; don't call into langhook.
29840         (expand_expr_addr_expr_1): Check that we don't get non-GENERIC trees.
29841         * gimplify.c (gimplify_compound_literal_expr,
29842         optimize_compound_literals_in_ctor): Move from c-gimplify.c.
29843         (gimplify_init_constructor): Call optimize_compound_literals_in_ctor.
29844         (gimplify_modify_expr_rhs, gimplify_expr): Handle COMPOUND_LITERAL_EXPR
29845         as was done in c-gimplify.c.
29846         * tree.c (staticp): Move COMPOUND_LITERAL_EXPR handling from c_staticp.
29847         * tree.h (COMPOUND_LITERAL_EXPR_DECL, COMPOUND_LITERAL_EXPR_DECL_EXPR):
29848         Move from c-common.h.
29849         * tree.def (COMPOUND_LITERAL_EXPR): Move from c-common.def.
29850
29851         * tree.c (staticp): Do not call langhook.
29852         * langhooks.c (lhd_staticp): Delete.
29853         * langhooks-def.h (lhd_staticp): Delete prototype.
29854         (LANG_HOOKS_STATICP): Delete.
29855         (LANG_HOOKS_INITIALIZER): Delete LANG_HOOKS_STATICP.
29856
29857         * doc/c-tree.texi (Expression nodes): Refer to DECL_EXPRs
29858         instead of DECL_STMTs.
29859
29860 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
29861
29862         PR c/456
29863         PR c/5675
29864         PR c/19976
29865         PR c/29116
29866         PR c/31871
29867         PR c/35198
29868         * builtins.c (fold_builtin_sincos): Build COMPOUND_EXPR in
29869         void_type_node.
29870         (fold_call_expr): Return a NOP_EXPR from folding rather than the
29871         contained expression.
29872         * c-common.c (c_fully_fold, c_fully_fold_internal, c_save_expr): New.
29873         (c_common_truthvalue_conversion): Use c_save_expr.  Do not fold
29874         conditional expressions for C.
29875         (decl_constant_value_for_optimization): Move from
29876         decl_constant_value_for_broken_optimization in c-typeck.c.  Check
29877         whether optimizing and that the expression is a VAR_DECL not of
29878         array type instead of doing such checks in the caller.  Do not
29879         check pedantic.  Call gcc_unreachable for C++.
29880         * c-common.def (C_MAYBE_CONST_EXPR): New.
29881         * c-common.h (c_fully_fold, c_save_expr,
29882         decl_constant_value_for_optimization): New prototypes.
29883         (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
29884         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
29885         EXPR_INT_CONST_OPERANDS): Define.
29886         * c-convert.c (convert): Strip nops from expression.
29887         * c-decl.c (groktypename): Take extra parameters expr and
29888         expr_const_operands.  Update call to grokdeclarator.
29889         (start_decl): Update call to grokdeclarator.  Add statement for
29890         expressions used in type of decl.
29891         (grokparm): Update call to grokdeclarator.
29892         (push_parm_decl): Update call to grokdeclarator.
29893         (build_compound_literal): Add parameter non_const and build a
29894         C_MAYBE_COSNT_EXPR if applicable.
29895         (grokdeclarator): Take extra parameters expr and
29896         expr_const_operands.  Track expressions used in declaration
29897         specifiers and declarators.  Fold array sizes and track whether
29898         they are constant expressions and whether they are integer
29899         constant expressions.
29900         (parser_xref_tag): Set expr and expr_const_operands fields in
29901         return value.
29902         (grokfield): Update call to grokdeclarator.
29903         (start_function): Update call to grokdeclarator.
29904         (build_null_declspecs): Set expr and expr_const_operands fields in
29905         return value.
29906         (declspecs_add_type): Handle expressions in typeof specifiers.
29907         * c-parser.c (c_parser_declspecs): Set expr and
29908         expr_const_operands fields for declaration specifiers.
29909         (c_parser_enum_specifier): Likewise.
29910         (c_parser_struct_or_union_specifier): Likewise.
29911         (c_parser_typeof_specifier): Likewise.  Update call to
29912         groktypename.  Fold expression as needed.  Return expressions with
29913         type instead of adding statements.
29914         (c_parser_attributes): Update calls to c_parser_expr_list.
29915         (c_parser_statement_after_labels): Fold expression before passing
29916         to objc_build_throw_stmt.
29917         (c_parser_condition): Fold expression.
29918         (c_parser_asm_operands): Fold expression.
29919         (c_parser_conditional_expression): Use c_save_expr.  Update call
29920         to build_conditional_expr.
29921         (c_parser_alignof_expression): Update call to groktypename.
29922         (c_parser_postfix_expression): Preserve C_MAYBE_CONST_EXPR as
29923         original_code.  Fold expression argument of va_arg.  Create
29924         C_MAYBE_CONST_EXPR to preserve side effects of expressions in type
29925         argument to va_arg.  Update calls to groktypename.  Fold array
29926         index for offsetof.  Verify that first argument to
29927         __builtin_choose_expr has integer type.
29928         (c_parser_postfix_expression_after_paren_type): Update calls to
29929         groktypename and build_compound_literal.  Handle expressions with
29930         side effects in type name.
29931         (c_parser_postfix_expression_after_primary): Update call to
29932         c_parser_expr_list.  Set original_code for calls to
29933         __builtin_constant_p.
29934         (c_parser_expr_list): Take extra parameter fold_p.  Fold
29935         expressions if requested.
29936         (c_parser_objc_type_name): Update call to groktypename.
29937         (c_parser_objc_synchronized_statement): Fold expression.
29938         (c_parser_objc_receiver): Fold expression.
29939         (c_parser_objc_keywordexpr): Update call to c_parser_expr_list.
29940         (c_parser_omp_clause_num_threads, c_parser_omp_clause_schedule,
29941         c_parser_omp_atomic, c_parser_omp_for_loop): Fold expressions.
29942         * c-tree.h (CONSTRUCTOR_NON_CONST): Define.
29943         (struct c_typespec): Add elements expr and expr_const_operands.
29944         (struct c_declspecs): Add elements expr and expr_const_operands.
29945         (groktypename, build_conditional_expr, build_compound_literal):
29946         Update prototypes.
29947         (in_late_binary_op): Declare.
29948         * c-typeck.c (note_integer_operands): New function.
29949         (in_late_binary_op): New variable.
29950         (decl_constant_value_for_broken_optimization): Move to c-common.c
29951         and rename to decl_constant_value_for_optimization.
29952         (default_function_array_conversion): Do not strip nops.
29953         (default_conversion): Do not call
29954         decl_constant_value_for_broken_optimization.
29955         (build_array_ref): Do not fold result.
29956         (c_expr_sizeof_expr): Fold operand.  Use C_MAYBE_CONST_EXPR for
29957         result when operand is a VLA.
29958         (c_expr_sizeof_type): Update call to groktypename.  Handle
29959         expressions included in type name.  Use C_MAYBE_CONST_EXPR for
29960         result when operand names a VLA type.
29961         (build_function_call): Update call to build_compound_literal.
29962         Only fold result for calls to __builtin_* functions.  Strip
29963         NOP_EXPR from INTEGER_CST returned from such functions.  Fold
29964         the function designator.
29965         (convert_arguments): Fold arguments.  Update call to
29966         convert_for_assignment.
29967         (build_unary_op): Handle increment and decrement of
29968         C_MAYBE_CONST_EXPR.  Move lvalue checks for increment and
29969         decrement earlier.  Fold operand of increment and decrement.
29970         Handle address of C_MAYBE_CONST_EXPR.  Only fold expression being
29971         built for integer operand.  Wrap returns that are INTEGER_CSTs
29972         without being integer constant expressions or that have integer
29973         constant operands without being INTEGER_CSTs.
29974         (lvalue_p): Handle C_MAYBE_CONST_EXPR.
29975         (build_conditional_expr): Add operand ifexp_bcp.  Track whether
29976         result is an integer constant expression or can be used in
29977         unevaluated parts of one and avoid folding and wrap as
29978         appropriate.  Fold operands before possibly doing -Wsign-compare
29979         warnings.
29980         (build_compound_expr): Wrap result for C99 if operands can be used
29981         in integer constant expressions.
29982         (build_c_cast): Update call to digest_init.  Do not ignore
29983         overflow from casting floating-point constants to integers.  Wrap
29984         results that could be confused with integer constant expressions,
29985         null pointer constants or floating-point constants.
29986         (c_cast_expr): Update call to groktypename.  Handle expressions
29987         included in type name.
29988         (build_modify_expr): Handle modifying a C_MAYBE_CONST_EXPR.  Fold
29989         lhs inside possible SAVE_EXPR.  Fold RHS before assignment.
29990         Update calls to convert_for_assignment.
29991         (convert_for_assignment): Take new parameter
29992         null_pointer_constant.  Do not strip nops or call
29993         decl_constant_value_for_broken_optimization.  Set
29994         in_late_binary_op for conversions to boolean.
29995         (store_init_value): Update call to digest_init.
29996         (digest_init): Take new parameter null_pointer_constant.  Do not
29997         call decl_constant_value_for_broken_optimization.  pedwarn for
29998         initializers not constant expressions.  Update calls to
29999         convert_for_assignment.
30000         (constructor_nonconst): New.
30001         (struct constructor_stack): Add nonconst element.
30002         (really_start_incremental_init, push_init_level, pop_init_level):
30003         Handle constructor_nonconst and nonconst element.
30004         (set_init_index): Call constant_expression_warning for array
30005         designators.
30006         (output_init_element): Fold value.  Set constructor_nonconst as
30007         applicable.  pedwarn for initializers not constant expressions.
30008         Update call to digest_init.  Call constant_expression_warning
30009         where constant initializers are required.
30010         (process_init_element): Use c_save_expr.
30011         (c_finish_goto_ptr): Fold expression.
30012         (c_finish_return): Fold return value.  Update call to
30013         convert_for_assignment.
30014         (c_start_case): Fold switch expression.
30015         (c_process_expr_stmt): Fold expression.
30016         (c_finish_stmt_expr): Create C_MAYBE_CONST_EXPR as needed to
30017         ensure statement expression is not evaluated in constant expression.
30018         (build_binary_op): Track whether results are integer constant
30019         expressions or may occur in such, disable folding and wrap results
30020         as applicable.  Fold operands for -Wsign-compare warnings unless
30021         in_late_binary_op.
30022         (c_objc_common_truthvalue_conversion): Handle results folded to
30023         integer constants that are not integer constant expressions.
30024         * doc/extend.texi: Document when typeof operands are evaluated,
30025         that condition of __builtin_choose_expr is an integer constant
30026         expression, and more about use of __builtin_constant_p in
30027         initializers.
30028
30029 2009-03-29  Richard Guenther  <rguenther@suse.de>
30030
30031         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Properly
30032         propagate addresses of array references.
30033
30034 2009-03-29  Steven Bosscher  <steven@gcc.gnu.org>
30035
30036         * regmove.c (perhaps_ends_bb_p): Remove.
30037         (optimize_reg_copy_1): Don't call perhaps_ends_bb_p.  Get basic block
30038         from INSN and check that the main loop stays within that basic block.
30039         (optimize_reg_copy_1, optimize_reg_copy_3, fixup_match_2): Likewise.
30040         (regmove_forward_pass): Split out from regmove_optimize.  Use
30041         FOR_EACH_BB and FOR_BB_INSNS instead of traversing the insns stream.
30042         (regmove_backward_pass): Split out from regmove_optimize.  Use
30043         FOR_EACH_BB_REVERSE and FOR_BB_INSNS_REVERS_SAFE.
30044         (regmove_optimize): Simplify.
30045
30046 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
30047
30048         PR target/39545
30049         * config/i386/i386.c (classify_argument): Ignore flexible array
30050         member in struct and warn ABI change.
30051
30052 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
30053
30054         * config/i386/i386-protos.h (ix86_agi_dependent): New.
30055
30056         * config/i386/i386.c (ix86_agi_dependent): Rewrite.
30057         (ix86_adjust_cost): Updated.
30058
30059 2009-03-29  Jan Hubicka  <jh@suse.cz>
30060
30061         PR middle-end/28850
30062         * tree-pass.h (pass_cleanup_eh): New function.
30063         (remove_unreachable_regions): Break code handling RTL
30064         to rtl_remove_unreachable_regions; remove ERT_MUST_NOT_THROW
30065         that can not be reached by runtime.
30066         (can_be_reached_by_runtime): New function.
30067         (label_to_region_map): New function.
30068         (num_eh_regions): New function.
30069         (rtl_remove_unreachable_regions): New function.
30070         (convert_from_eh_region_ranges): Call rtl_remove_unreachable_regions.
30071         (remove_eh_region): New function.
30072         * except.h: Include sbitmap and vecprim.
30073         (remove_eh_region, remove_unreachable_regions, label_to_region_map,
30074         num_eh_regions): Declare.
30075         * passes.c (init_optimization_passes): Schedule cleanup_eh.
30076         * Makefile.in (EXCEPT_H): New; replace all uses of except.h by it.
30077         * tree-eh.c (tree_remove_unreachable_handlers): New function.
30078         (tree_empty_eh_handler_p): New function.
30079         (cleanup_empty_eh): New function.
30080         (cleanup_eh): New function.
30081         (pass_cleanup_eh): New function.
30082
30083 2009-03-29  Jan Hubicka  <jh@suse.cz>
30084
30085         * except.c (verify_eh_tree): Fix handling of fun!=cfun; be ready
30086         for removed regions.
30087
30088 2009-03-29  Jan Hubicka  <jh@suse.cz>
30089
30090         * except.c (dump_eh_tree): Dump all datastructures.
30091
30092 2009-03-29  Jan Hubicka  <jh@suse.cz>
30093
30094         * except.c (duplicate_eh_regions_0): Handle AKA bitmap.
30095         (duplicate_eh_regions_1): Likewise.
30096         (duplicate_eh_regions): Likewise; cleanup code gorwing the region
30097         vector; call EH verification.
30098         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
30099         Be ready for region being removed.
30100
30101 2009-03-29  Jan Hubicka  <jh@suse.cz>
30102
30103         * bitmap.c (bitmap_last_set_bit): New function.
30104         * bitmap.h (bitmap_last_set_bit): Declare.
30105
30106 2009-03-29  David Ayers  <ayers@fsfe.org>
30107
30108         PR objc/27377
30109         * c-typeck.c (build_conditional_expr): Emit ObjC warnings
30110         by calling objc_compare_types and surpress warnings about
30111         incompatible C pointers that are compatible ObjC pointers.
30112
30113 2009-03-29  Adam Nemet  <anemet@caviumnetworks.com>
30114
30115         * cgraphbuild.c (build_cgraph_edges, rebuild_cgraph_edges): Don't
30116         call initialize_inline_failed.
30117         (initialize_inline_failed): Move it from here ...
30118         * cgraph.c (initialize_inline_failed): ... to here.
30119         (cgraph_create_edge): Call initialize_inline_failed rather than
30120         setting inline_failed directly.
30121
30122 2009-03-29  Ben Elliston  <bje@au.ibm.com>
30123
30124         PR target/32542
30125         * sysv4.opt (msdata): Improve comment.
30126         * linux64.h (ASM_SPEC32): Do not pass -memb when -msdata is given.
30127         * sysv4.h (SVR4_ASM_SPEC): Likewise.
30128
30129 2009-03-29  Ben Elliston  <bje@au.ibm.com>
30130
30131         PR target/30451
30132         * config/rs6000/rs6000.md (*movti_ppc64): Correct the order of
30133         load and store attributes.
30134
30135 2009-03-29  Ben Elliston  <bje@au.ibm.com>
30136
30137         * config/i386/i386.c (enum ix86_builtins): Add IX86_BUILTIN_HUGE_VALQ.
30138         (ix86_init_builtins): Add built-in function __builtin_huge_valq.
30139         (ix86_expand_builtin): Handle IX86_BUILTIN_HUGE_VALQ.
30140         * doc/extend.texi (X86 Built-in Functions): Add index entries for
30141         __builtin_infq and __builtin_huge_valq.
30142
30143 2009-03-28  Anatoly Sokolov  <aesok@post.ru>
30144
30145         * config/avr/avr.c (avr_mcu_t): Add atmega8c1, atmega16c1 and
30146         atmega8m1 devices.
30147         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
30148         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.)
30149
30150 2009-03-28  Xinliang David Li  <davidxl@google.com>
30151
30152         * tree-ssa-ccp.c (ccp_finalize): Add dbg_count support.
30153         (do_dbg_cnt): New function.
30154
30155 2009-03-28  Jan Hubicka  <jh@suse.cz>
30156
30157         Merge from pretty-ipa:
30158
30159         2009-03-27  Jan Hubicka  <jh@suse.cz>
30160
30161         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
30162         * tree-pass.h (function_called_by_processed_nodes_p): Declare.
30163         * passes.c (function_called_by_processed_nodes_p): New.
30164         * ipa-pure-const.c (check_call): Fix handling of operands.
30165         (analyze_function): Dump debug output for skipped bodies.
30166         (local_pure_const): Use function_called_by_processed_nodes_p.
30167         * dwarf2out.c (reference_to_unused): Use output.
30168         * passes.c (do_per_function_toporder): Likewise.
30169
30170         2008-11-12  Jan Hubicka  <jh@suse.cz>
30171
30172         * tree-pass.h (pass_fixup_cfg, pass_local_pure_const): Declare.
30173         * ipa-pure-const.c (funct_state_d): Add can throw field; make
30174         state_set_in_source enum
30175         (check_decl): Ignore memory tags; do not set fake looping flags;
30176         dump diagnostics.
30177         (check_operand, check_tree, check_rhs_var, check_lhs_var,
30178         get_asm_expr_operands, scan_function_op, scan_function_stmt): Remove.
30179         (check_call, analyze_function): Rewrite.
30180         (check_stmt): New.
30181         (add_new_function): Update call of analyze_function.
30182         (generate_summary): Add call of analyze_function.
30183         (propagate): Propagate can_throw; handle state_set_in_source correctly.
30184         (local_pure_const): New function.
30185         (pass_local_pure_const): New pass.
30186         * ipa-inline.c (inline_transform): Set after_inlining.
30187         * tree-eh.c (stmt_can_throw_external): New.
30188         * tree-optimize.c (execute_fixup_cfg): Do not set after_inlining;
30189         work with aliasing built.
30190         * tree-flow.h (stmt_can_throw_external): New.
30191         * passes.c (init_optimization_passes): Schedule fixup_cfg pass early;
30192         and local pure/const pass in early and late optimization queue.
30193
30194 2009-03-28  Martin Jambor  <mjambor@suse.cz>
30195
30196         * fold-const.c (get_pointer_modulus_and_residue): New parameter
30197         allow_func_align.
30198         (fold_binary): Allow function decl aligment consideration is the
30199         second argument is integer constant one.
30200         * tree-ssa-forwprop.c (simplify_bitwise_and): New function.
30201         (tree_ssa_forward_propagate_single_use_vars): Handle assing statements
30202         with BIT_AND_EXPR on the RHS by calling simplify_bitwise_and.
30203
30204 2009-03-28  Jan Hubicka  <jh@suse.cz>
30205
30206         * dwarf2out.c (dwarf2out_begin_prologue): Use crtl->nothrow
30207         * tree-eh.c (stmt_could_throw_p): Remove check for WEAK decls.
30208         * function.h (rtl_data): Add nothrow flag.
30209         * except.c (set_nothrow_function_flags): Use crtl->nothrow;
30210         set DECL_NOTHROW for AVAILABLE functions.
30211
30212 2009-03-28  Jakub Jelinek  <jakub@redhat.com>
30213
30214         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): If macro
30215         following vector keyword has expansion starting with pixel or bool
30216         keyword, expand vector to __vector and pixel or bool to __pixel or
30217         __bool.
30218
30219         PR c++/39554
30220         * opts.c (warning_disallowed_functions, warn_disallowed_functions,
30221         warn_if_disallowed_function_p): Removed.
30222         (common_handle_option): Don't handle OPT_Wdisallowed_function_list_.
30223         * c-parser.c (c_parser_postfix_expression_after_primary): Don't call
30224         warning_if_disallowed_function_p.
30225         * flags.h (warn_if_disallowed_function_p,
30226         warn_disallowed_functions): Removed.
30227         * common.opt (Wdisallowed-function-list=): Removed.
30228         * doc/invoke.texi (-Wdisallowed-function-list=): Removed.
30229
30230 2009-03-28  Richard Guenther  <rguenther@suse.de>
30231
30232         PR tree-optimization/38723
30233         * tree-ssa-pre.c (compute_avail): Add all default definitions to
30234         the entry block.
30235
30236 2009-03-28  Jan Hubicka  <jh@suse.cz>
30237
30238         * tree-ssa-structalias.c (ipa_pta_execute): Fix bogus node->analyzed
30239         test introduced by my previous patch.
30240
30241 2009-03-28  Richard Guenther  <rguenther@suse.de>
30242
30243         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not leave
30244         the PHIs value undefined.
30245
30246 2009-03-28  Jan Hubicka  <jh@suse.cz>
30247
30248         * tree-pass.h (pass_fixup_cfg): New pass.
30249         * ipa-inline.c (inline_transform): Set
30250         always_inline_functions_inlined/after_inlining.
30251         * tree-optimize.c (execute_fixup_cfg): Do not set them here.
30252         (pass_fixup_cfg): New pass.
30253         * passes.c (init_optimization_passes): Add fixup_cfg.
30254
30255 2009-03-28  Richard Guenther  <rguenther@suse.de>
30256
30257         PR tree-optimization/38458
30258         * tree-ssa-copy.c (copy_prop_visit_phi_node): For the first
30259         argument use the arguments copy-of value.
30260
30261 2009-03-28  Richard Guenther  <rguenther@suse.de>
30262
30263         PR tree-optimization/38180
30264         * tree-ssa-ccp.c (get_default_value): Simplify.
30265         (likely_value): Likewise.
30266         (surely_varying_stmt_p): Properly handle VOP case.
30267         (ccp_initialize): Likewise.
30268         (ccp_fold): Handle propagating through *&.
30269         (fold_const_aggregate_ref): Also handle decls.
30270
30271 2009-03-28  Jan Hubicka  <jh@suse.cz>
30272
30273         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
30274         * cgraph.h (cgraph_node): Likewise.
30275         * cgraphunit.c (cgraph_process_new_functions): Set process flag.
30276         (cgraph_reset_node): Use process flag.
30277         (cgraph_mark_functions_to_output): Likewise.
30278         (cgraph_expand_function): Likewise.
30279         (cgraph_expand_all_functions): Likewise.
30280         (cgraph_output_in_order): Likewise.
30281         * dwarf2out.c (reference_to_unused): Likewise.
30282         * passes.c do_per_function_toporder): Likewise.
30283
30284 2009-03-28  Jan Hubicka  <jh@suse.cz>
30285
30286         Bring from lto-branch:
30287
30288         2008-09-03  Doug Kwan  <dougkwan@google.com>
30289
30290         * cgraphbuild.c (initialize_inline_failed): Use cgraph_inline_failed_t
30291         enums instead of reason strings.
30292         * cgraph.c (cgraph_create_edge): Same.
30293         (cgraph_inline_failed_string): New function.
30294         * cgraph.h (cgraph_inline_failed_t): New enum type.
30295         (cgraph_inline_failed_string): New prototype.
30296         (struct cgraph_edge): Change type of INLINED_FAILED from constant
30297         char pointer to cgraph_inline_failed_t.
30298         (cgraph_inline_p): Adjust prototype to use cgraph_inline_failed_t.
30299         (cgraph_default_inline_p): Ditto.
30300         * cgraphunit.c (cgraph_inline_p): Change type of parameter REASON
30301         to cgraph_inline_failed_t pointer.
30302         * cif-code.def: New file.
30303         * ipa-inline.c (cgraph_mark_inline_edge): Use an enum instead of a
30304         reason string.
30305         (cgraph_check_inline_limits): Change type of REASON to pointer to
30306         cgraph_inline_failed_t.  Replace reason strings with enums.
30307         (cgraph_default_inline_p): Ditto.
30308         (cgraph_recursive_inlining_p): Ditto.
30309         (update_caller_keys): Change type of FAILED_REASON to
30310         cgraph_inline_failed_t.
30311         (cgraph_set_inline_failed): Change type of REASON to pointer to
30312         cgraph_inline_failed_t.  Call cgraph_inline_failed_string to
30313         convert enums to strings for text output.
30314         (cgraph_decide_inlining_of_small_function): Change FAILED_REASON
30315         to be of type cgraph_inline_failed_t.  Replace reason strings with
30316         enums.  Call cgraph_inline_failed_string to covert enums
30317         to strings for text output.
30318         (cgraph_decide_inlining): Replace reason strings with enums.
30319         (cgraph_decide_inlining_incrementally): Change type of FAILED_REASON
30320         to cgraph_inline_failed_t type.  Call cgraph_inline_failed_string
30321         for text output.
30322         * tree-inline.c (expand_call_inline): Change type of REASON
30323         to cgraph_inline_failed_t.  Replace reason strings with enums.
30324         Call cgraph_inline_failed_string for text output.
30325         * Makefile.in (CGRAPH_H): Add cif-code.def to dependencies.
30326         (cgraph.o): Ditto.
30327
30328 2009-03-28  Jan Hubicka  <jh@suse.cz>
30329
30330         * cgraph.c (cgraph_node, cgraph_remove_node, dump_cgraph_node,
30331         cgraph_clone_node): Remove master clone handling.
30332         (cgraph_is_master_clone, cgraph_master_clone): Remove.
30333         * cgraph.h (master_clone): Remove.
30334         (cgraph_is_master_clone, cgraph_master_clone): Remove.
30335         * ipa-type-escape.c (type_escape_execute): Remove use of master clone.
30336         (tree-ssa-structalias.c (ipa_pta_execute): Likewise.
30337
30338 2009-03-28  Jan Hubicka  <jh@suse.cz>
30339
30340         * cgraph.c (cgraph_function_body_availability): Functions declared
30341         inline are always safe to assume that it is not going to be replaced.
30342
30343 2009-03-28  Richard Guenther  <rguenther@suse.de>
30344
30345         PR tree-optimization/38513
30346         * tree-ssa-pre.c (eliminate): Remove redundant stores.
30347         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
30348         EXC_PTR_EXPR and FILTER_EXPR.
30349         (get_ref_from_reference_ops): Likewise.
30350
30351 2009-03-28  Richard Guenther  <rguenther@suse.de>
30352
30353         PR tree-optimization/38968
30354         * tree-vect-analyze.c (vect_compute_data_ref_alignment):
30355         Use FLOOR_MOD_EXPR to compute misalignment.
30356
30357 2009-03-28  Richard Guenther  <rguenther@suse.de>
30358
30359         PR tree-optimization/37795
30360         * tree.h (combine_comparisons): Declare.
30361         * fold-const.c (combine_comparisons): Export.
30362         * tree-ssa-ifcombine.c (ifcombine_ifandif): Optimize two successive
30363         comparisons.
30364         (ifcombine_iforif): Use combine_comparisons.
30365
30366 2009-03-28  Jan Hubicka  <jh@suse.cz>
30367
30368         * tree-eh.c (inlinable_call_p): New function.
30369         (make_eh_edges): Use it.
30370         (verify_eh_edges): Use it.
30371         (stmt_can_throw_external, stmt_can_throw_internal): Use it.
30372         * except.c (reachable_next_level): Add inlinable_function argument
30373         (sjlj_find_directly_reachable_regions): Update.
30374         (add_reachable_handler): Do not set saw_any_handlers.
30375         (reachable_next_level): Handle MUST_NOT_THROW more curefully.
30376         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
30377         Add new inlinable call parameter.
30378         (can_throw_internal, can_throw_external): Update.
30379         * except.h (can_throw_internal_1, can_throw_external_1,
30380         foreach_reachable_handler): Update declaration.
30381
30382 2009-03-28  Joseph Myers  <joseph@codesourcery.com>
30383
30384         * config/arm/t-arm-coff, config/h8300/coff.h,
30385         config/i386/i386-aout.h, config/i386/i386-coff.h,
30386         config/libgloss.h, config/m68k/coff.h, config/m68k/m68k-aout.h,
30387         config/pdp11/2bsd.h, config/rs6000/aix41.h,
30388         config/rs6000/aix41.opt, config/rs6000/t-newas, config/sh/coff.h,
30389         fix-header.c, fixproto, gen-protos.c, protoize.c, scan-decls.c,
30390         scan-types.sh, scan.c, scan.h, sort-protos, sys-protos.h,
30391         sys-types.h: Remove.
30392         * Makefile.in: Remove protoize and fixproto support and references
30393         in comments.
30394         (SYSCALLS.c.X-warn, TARGET_GETGROUPS_T, STMP_FIXPROTO,
30395         PROTOIZE_INSTALL_NAME, UNPROTOIZE_INSTALL_NAME, FIXPROTO_DEFINES):
30396         Remove.
30397         (ALL_HOST_OBJS): Remove $(PROTO_OBJS).
30398         (MOSTLYCLEANFILES): Remove protoize$(exeext) and
30399         unprotoize$(exeext).
30400         (rest.encap): Don't depend on $(STMP_FIXPROTO)
30401         (.PHONY): Don't depend on proto.
30402         (libgcc-support): Don't depend on $(STMP_FIXPROTO).
30403         (proto, PROTO_OBJS, protoize$(exeext), unprotoize$(exeext),
30404         protoize.o, unprotoize.o, SYSCALLS.c.X, test-protoize-simple,
30405         deduced.h, GEN_PROTOS_OBJS, build/gen-protos$(build_exeext),
30406         build/gen-protos.o, build/scan.o, xsys-protos.h,
30407         build/fix-header$(build_exeext), build/fix-header.o,
30408         build/scan-decls.o, fixhdr.ready, stmp-fixproto,
30409         stmp-install-fixproto): Remove.
30410         (mostlyclean): Don't remove xsys-protos.hT, SYSCALLS.c.X,
30411         SYSCALLS.c or fixproto files.
30412         (install-common): Don't install protoize.
30413         (install-headers-tar, install-headers-cpio, install-headers-cp):
30414         Don't depend on $(STMP_FIXPROTO).
30415         (install-mkheaders): Don't depend on $(STMP_FIXPROTO).  Don't
30416         install fixproto files or write out fixproto settings.
30417         (uninstall): Don't uninstall protoize.
30418         * config.gcc (use_fixproto): Remove.
30419         (arm-*-coff*, armel-*-coff*, h8300-*-*, i[34567]86-*-aout*,
30420         i[34567]86-*-coff*, m68k-*-aout*, m68k-*-coff*, pdp11-*-bsd,
30421         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*, sh-*-*): Remove.
30422         * config/m32r/t-linux (STMP_FIXPROTO): Remove.
30423         * config/m68k/m68k.c: Remove M68K_TARGET_COFF-conditional code.
30424         * config/mips/t-iris (FIXPROTO_DEFINES): Remove.
30425         * config/pa/t-pa-hpux (FIXPROTO_DEFINES): Remove.
30426         * config/pdp11/pdp11.c: Remove TWO_BSD-conditional code.
30427         * config/t-svr4 (FIXPROTO_DEFINES): Remove.
30428         * config/t-vxworks (STMP_FIXPROTO): Remove.
30429         * configure.ac (AC_TYPE_GETGROUPS, TARGET_GETGROUPS_T,
30430         STMP_FIXPROTO): Remove.
30431         * config.in, configure: Regenerate.
30432         * crtstuff.c (gid_t, uid_t): Don't undefine.
30433         * doc/install.texi: Change m68k-coff to m68k-elf in example.
30434         (arm-*-coff, arm-*-aout: Remove target entries.
30435         (*-ibm-aix*): Mention removal of support for AIX 4.2 and older.
30436         Remove mention of AIX 4.1.
30437         (m68k-*-*): Remove mention of m68k-*-aout and m68k-*-coff*.
30438         * doc/invoke.texi (Running Protoize): Remove.
30439         * doc/trouble.texi (Actual Bugs): Remove mention of fixproto.
30440         (Protoize Caveats): Remove.
30441         * tsystem.h: Update comments on headers assumed to exist.
30442
30443 2009-03-27  Vladimir Makarov  <vmakarov@redhat.com>
30444
30445         * genautomata.c: Add a new year to the copyright.  Add a new
30446         reference.
30447         (struct insn_reserv_decl): Add comments for member bypass_list.
30448         (find_bypass): Remove.
30449         (insert_bypass): New.
30450         (process_decls): Use insert_bypass.
30451         (output_internal_insn_latency_func): Output all bypasses with the
30452         same input insn in one switch case.
30453
30454         * rtl.def (define_bypass): Describe bypass choice.
30455         * doc/md.texi (define_bypass): Ditto.
30456
30457 2009-03-27  Richard Guenther  <rguenther@suse.de>
30458
30459         * gimplify.c (mark_addressable): Export.
30460         * tree-flow.h (mark_addressable): Declare.
30461         * tree-ssa-loop-manip.c (create_iv): Mark the base addressable.
30462         * tree-ssa.c (verify_phi_args): Verify that address taken
30463         variables have TREE_ADDRESSABLE set.
30464
30465 2009-03-27  Richard Guenther  <rguenther@suse.de>
30466
30467         * fold-const.c (build_fold_addr_expr_with_type_1): Rename back to ...
30468         (build_fold_addr_expr_with_type): ... this.  Remove in_fold handling.
30469         Do not mark decls TREE_ADDRESSABLE.
30470         (build_fold_addr_expr): Adjust.
30471         (fold_addr_expr): Remove.
30472         (fold_unary): Use build_fold_addr_expr.
30473         (fold_comparison): Likewise.
30474         (split_address_to_core_and_offset): Likewise.
30475         * coverage.c (tree_coverage_counter_addr): Mark the array decl
30476         TREE_ADDRESSABLE.
30477         * gimplify.c (mark_addressable): Do not exclude RESULT_DECLs.
30478         (gimplify_modify_expr_to_memcpy): Mark source and destination
30479         addressable.
30480         * omp-low.c (create_omp_child_function): Mark the object decl
30481         TREE_ADDRESSABLE.
30482         (lower_rec_input_clauses): Mark the var we take the address of
30483         TREE_ADDRESSABLE.
30484         (lower_omp_taskreg): Mark the sender decl TREE_ADDRESSABLE.
30485
30486 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
30487
30488         PR middle-end/39315
30489         * cfgexpand.c (expand_one_stack_var_at): Change alignment
30490         limit to MAX_SUPPORTED_STACK_ALIGNMENT.
30491
30492 2009-03-27  Richard Guenther  <rguenther@suse.de>
30493
30494         PR tree-optimization/39120
30495         * tree-ssa-structalias.c (handle_rhs_call): Fill out return
30496         constraints.
30497         (handle_lhs_call): Process return constraints.  Add escape
30498         constraints if necessary.
30499         (handle_const_call): Fill out return constraints.  Make nested
30500         case more precise.  Avoid consttmp if possible.
30501         (handle_pure_call): Fill out return constraints.  Avoid
30502         callused if possible.
30503         (find_func_aliases): Simplify call handling.
30504
30505 2009-03-27  Richard Guenther  <rguenther@suse.de>
30506
30507         PR tree-optimization/39120
30508         * tree-ssa-structalias.c (do_sd_constraint): Do not use CALLUSED
30509         as a representative.
30510         (solve_graph): Do propagate CALLUSED.
30511         (handle_pure_call): Use a scalar constraint from CALLUSED for
30512         the return value.
30513         (find_what_p_points_to): CALLUSED shall not appear in poins-to
30514         solutions.
30515
30516 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
30517
30518         PR c/39323
30519         * c-common.c (handle_aligned_attribute): Properly check alignment
30520         overflow.  Use (1U << i) instead of (1 << i).
30521
30522         * emit-rtl.c (get_mem_align_offset): Use "unsigned int" for align.
30523
30524         * expr.h (get_mem_align_offset): Updated.
30525
30526         * tree.h (tree_decl_common): Change align to "unsigned int" and
30527         move it before pointer_alias_set.
30528
30529 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
30530             Jakub Jelinek  <jakub@redhat.com>
30531
30532         PR target/38034
30533         * config/ia64/sync.md (cmpxchg_rel_<mode>): Replace input
30534         gr_register_operand with gr_reg_or_0_operand.
30535         (cmpxchg_rel_di): Likewise.
30536         (sync_lock_test_and_set<mode>): Likewise.
30537
30538 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
30539
30540         * jump.c (rtx_renumbered_equal_p): Use subreg_get_info.
30541         (true_regnum): Likewise.
30542
30543         * rtlanal.c (subreg_info): Moved to ...
30544         * rtl.h (subreg_info): Here.  New.
30545         (subreg_get_info): New.
30546
30547         * rtlanal.c (subreg_get_info): Make it extern.
30548
30549 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
30550
30551         PR target/39472
30552         * config/i386/i386.c (ix86_abi): New.
30553         (override_options): Handle -mabi=.
30554         (ix86_function_arg_regno_p): Replace DEFAULT_ABI with ix86_abi.
30555         (ix86_call_abi_override): Likewise.
30556         (init_cumulative_args): Likewise.
30557         (function_arg_advance): Likewise.
30558         (function_arg_64): Likewise.
30559         (function_arg): Likewise.
30560         (ix86_pass_by_reference): Likewise.
30561         (ix86_function_value_regno_p): Likewise.
30562         (ix86_build_builtin_va_list_abi): Likewise.
30563         (setup_incoming_varargs_64): Likewise.
30564         (is_va_list_char_pointer): Likewise.
30565         (ix86_init_machine_status): Likewise.
30566         (ix86_reg_parm_stack_space): Use enum calling_abi on call_abi.
30567         (ix86_function_type_abi): Return enum calling_abi.  Rewrite
30568         for 64bit.  Replace DEFAULT_ABI with ix86_abi.
30569         (ix86_function_abi): Make it static and return enum calling_abi.
30570         (ix86_cfun_abi): Return enum calling_abi.  Replace DEFAULT_ABI
30571         with ix86_abi.
30572         (ix86_fn_abi_va_list): Updated.
30573
30574         * config/i386/i386.h (ix86_abi): New.
30575         (STACK_BOUNDARY): Replace DEFAULT_ABI with ix86_abi.
30576         (CONDITIONAL_REGISTER_USAGE): Likewise.
30577         (CUMULATIVE_ARGS): Change call_abi type to enum calling_abi.
30578         (machine_function): Likewise.
30579
30580         * config/i386/i386.md (untyped_call): Replace DEFAULT_ABI
30581         with ix86_abi.
30582         * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Likewise.
30583         (STACK_BOUNDARY): Likewise.
30584         * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Likewise.
30585
30586         * config/i386/i386.opt (mabi=): New.
30587
30588         * config/i386/i386-protos.h (ix86_cfun_abi): Changed to
30589         return enum calling_abi.
30590         (ix86_function_type_abi): Likewise.
30591         (ix86_function_abi): Removed.
30592
30593         * doc/invoke.texi: Document -mabi= option for x86.
30594
30595 2009-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
30596
30597         * builtins.c (real_dconstp): Delete.
30598         (fold_builtin_logarithm): Remove inaccurate log(e) special case.
30599
30600 2009-03-27  Dodji Seketeli  <dodji@redhat.com>
30601             Jakub Jelinek  <jakub@redhat.com>
30602
30603         PR debug/37959
30604         * dwarf2out.c (dwarf_attr_name): Handle DW_AT_explicit attribute.
30605         (gen_subprogram_die): When a function is explicit, generate the
30606         DW_AT_explicit attribute.
30607         * langhooks.h (struct lang_hooks_for_decls): Add
30608         function_decl_explicit_p langhook.
30609         * langhooks-def.h (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P): Define.
30610         (LANG_HOOKS_DECLS): Add LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P.
30611
30612 2009-03-27  Jakub Jelinek  <jakub@redhat.com>
30613
30614         * builtins.c (fold_builtin_memory_op): Optimize memmove
30615         into memcpy if we can prove source and destination don't overlap.
30616
30617         * tree-inline.c: Include gt-tree-inline.h.
30618         (clone_fn_id_num): New variable.
30619         (clone_function_name): New function.
30620         (tree_function_versioning): Use it.
30621         * Makefile.in (GTFILES): Add tree-inline.c.
30622
30623 2009-03-27  Mark Mitchell  <mark@codesourcery.com>
30624
30625         * BASE-VER: Change to 4.5.0.
30626
30627 2009-03-27  Xinliang David Li  <davidxl@google.com>
30628
30629         PR tree-optimization/39557
30630         * tree-ssa.c (warn_uninitialized_vars): free postdom info.
30631
30632 2009-03-27  Xinliang David Li  <davidxl@google.com>
30633
30634         PR tree-optimization/39548
30635         * tree-ssa-copy.c (copy_prop_visit_phi_node): Add copy
30636         candidate check.
30637
30638 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
30639
30640         * c-common.c (pointer_int_sum): Use %wd on return from
30641         tree_low_cst.
30642
30643 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
30644
30645         * c-common.c (pointer_int_sum): Use HOST_WIDE_INT_PRINT_DEC
30646         on return from tree_low_cst.
30647
30648 2009-03-27  Andrew Pinski  <andrew_pinski@playstation.sony.com>
30649
30650         PR c++/36799
30651         * ginclude/stdarg.h (va_copy): Define also for
30652         __GXX_EXPERIMENTAL_CXX0X__.
30653
30654 2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
30655
30656         PR c++/35652
30657         * builtins.h (c_strlen): Do not warn here.
30658         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
30659         * c-common.c (pointer_int_sum): Take an explicit location.
30660         Warn about offsets out of bounds.
30661         * c-common.h (pointer_int_sum): Adjust declaration.
30662
30663 2009-03-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
30664
30665         * doc/invoke.texi (i386 and x86-64 Windows Options): Fix texinfo
30666         markup glitch.
30667
30668 2009-03-26  Jakub Jelinek  <jakub@redhat.com>
30669
30670         PR c++/39554
30671         * opts.c (warn_if_disallowed_function_p): Don't assume
30672         get_callee_fndecl must return non-NULL.
30673
30674 2009-03-26  Vladimir Makarov  <vmakarov@redhat.com>
30675
30676         PR rtl-optimization/39522
30677         * reload1.c (reload_as_needed): Invalidate reg_last_reload_reg too
30678         when reg_reloaded_valid is set.
30679
30680 2009-03-26  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
30681
30682         * config/spu/divv2df3.c: New file.
30683         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add it.
30684         (DPBIT_FUNCS): Filter out _div_df.
30685
30686 2009-03-26  Bernd Schmidt  <bernd.schmidt@analog.com>
30687
30688         * config/bfin/bfin.c (bfin_optimize_loop): If the LSETUP goes before
30689         a jump insn, count that jump in the distance to the loop start.
30690
30691 2009-03-25  Kaz Kojima  <kkojima@gcc.gnu.org>
30692
30693         PR target/39523
30694         * config/sh/sh.c (calc_live_regs): Fix condition for global
30695         registers except PIC_OFFSET_TABLE_REGNUM.
30696
30697 2009-03-25  Kai Tietz  <kai.tietz@onevision.com>
30698
30699         PR/39518
30700         * doc/invoke.texi (-mconsole): New.
30701         (-mcygwin): New.
30702         (-mno-cygwin): New.
30703         (-mdll): New.
30704         (-mnop-fun-dllimport): New.
30705         (-mthread): New.
30706         (-mwin32): New.
30707         (-mwindows): New.
30708         (sub section "i386 and x86-64 Windows Options"): New.
30709
30710 2009-03-25  Ralf Corsépius  <ralf.corsepius@rtems.org>
30711
30712         * config/arm/rtems-elf.h: Remove LINK_GCC_C_SEQUENCE_SPEC.
30713         * config/rs6000/t-rtems: Remove MULTILIB_EXTRA_OPTS.
30714
30715 2009-03-25  Richard Guenther  <rguenther@suse.de>
30716
30717         PR middle-end/39497
30718         * Makefile.in (dfp.o-warn): Use -fno-strict-aliasing instead
30719         of -Wno-error.
30720
30721 2009-03-25  Andrey Belevantsev  <abel@ispras.ru>
30722
30723         * config/ia64/ia64.c (ia64_set_sched_flags): Zero spec_info->mask when
30724         neither of haifa/selective schedulers are working.
30725
30726 2009-03-25  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
30727
30728         * doc/invoke.texi (Debugging Options): Fix description of
30729         -fno-merge-debug-strings.
30730
30731 2009-03-24  Hans-Peter Nilsson  <hp@axis.com>
30732
30733         * config/cris/libgcc.ver: New version-script.
30734         * config/cris/t-linux (SHLIB_MAPFILES): Use it.
30735
30736         * configure.ac <GAS features, nop mnemonic>: Add pattern
30737         crisv32-*-* for "nop".
30738         <GAS features, Thread-local storage>: Add item for CRIS and CRIS v32.
30739         * configure: Regenerate.
30740
30741 2009-03-24  Ira Rosen  <irar@il.ibm.com>
30742
30743         PR tree-optimization/39529
30744         * tree-vect-transform.c (vect_create_data_ref_ptr): Call
30745         mark_sym_for_renaming for the tag copied to the new vector
30746         pointer.
30747
30748 2009-03-24  Arthur Loiret  <aloiret@debian.org>
30749
30750         * config.host (alpha*-*-linux*): Use driver-alpha.o and alpha/x-alpha.
30751         * config/alpha/linux.h (host_detect_local_cpu): Declare, add to
30752         EXTRA_SPEC_FUNCTIONS.
30753         (MCPU_MTUNE_NATIVE_SPECS, DRIVER_SELF_SPECS): New macros.
30754         * config/alpha/driver-alpha.c, config/alpha/x-alpha: New.
30755         * doc/invoke.texi (DEC Alpha Options): Document 'native' value for
30756         -march and -mtune options.
30757
30758 2009-03-24  Ralf Corsépius  <ralf.corsepius@rtems.org>
30759
30760         * config/m68k/t-rtems: Add m5329 multilib.
30761
30762 2009-03-24  Dodji Seketeli  <dodji@redhat.com>
30763             Jakub Jelinek  <jakub@redhat.com>
30764
30765         PR debug/39524
30766         * dwarf2out.c (gen_variable_die): Avoid adding duplicate declaration
30767         nodes.
30768
30769 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
30770
30771         PR c/39495
30772         * c-parser.c (c_parser_omp_for_loop): Call c_parser_binary_expression
30773         instead of c_parser_expression_conv, if original_code isn't one of the
30774         4 allowed comparison codes, fail.
30775
30776 2009-03-23  Richard Guenther  <rguenther@suse.de>
30777
30778         * cgraph.h (struct cgraph_node): Reorder fields for 64-bit hosts.
30779         * tree.h (struct tree_type): Likewise.
30780         * reload.h (struct insn_chain): Likewise.
30781         * dwarf2out.c (struct dw_loc_descr_struct): Likewise.
30782         * function.h (struct function): Likewise.
30783         * tree-ssa-structalias.c (struct equiv_class_label): Likewise.
30784
30785 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
30786
30787         PR tree-optimization/39516
30788         * lambda-code.c (perfect_nestify): Fix type of the uboundvar variable.
30789
30790 2009-03-23  Bingfeng Mei  <bmei@broadcom.com>
30791
30792         * config.gcc (need_64bit_hwint): Make clear that need_64bit_hwint
30793         should be set true if BITS_PER_WORD of target is bigger than 32
30794
30795 2009-03-22  Hans-Peter Nilsson  <hp@axis.com>
30796
30797         * config/cris/linux.h (CRIS_LINK_SUBTARGET_SPEC):
30798         Translate -B-options to -rpath-link.  Correct existing
30799         rpath-link and conditionalize on !nostdlib.
30800
30801 2009-03-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
30802
30803         * doc/extend.texi (Function Attributes, Variable Attributes):
30804         Fix typos.
30805         * doc/invoke.texi (Debugging Options, Optimize Options)
30806         (i386 and x86-64 Options, MCore Options): Likewise.
30807
30808 2009-03-20  Jakub Jelinek  <jakub@redhat.com>
30809
30810         PR debug/37890
30811         * dwarf2out.c (gen_namespace_die): Add context_die argument and use
30812         it for block local namespace aliases.
30813         (gen_decl_die): Pass context_die to gen_namespace_die.
30814
30815 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
30816
30817         PR c/39495
30818         * c-omp.c (c_finish_omp_for): Allow NE_EXPR with TREE_TYPE (decl)'s
30819         minimum or maximum value.
30820
30821 2009-03-19  Alexandre Oliva  <aoliva@redhat.com>
30822
30823         * reginfo.c (globalize_reg): Recompute derived reg sets.
30824
30825 2009-03-19  Ozkan Sezer  <sezeroz@gmail.com>
30826
30827         PR target/39063
30828         * libgcc2.c (mprotect): Do not use signed arguments for
30829         VirtualProtect, use DWORD arguments.  Also fix the 'may
30830         be used uninitialized' warning for the np variable.
30831
30832 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
30833
30834         PR target/39496
30835         * config/i386/i386.c (ix86_function_regparm): Don't optimize local
30836         functions using regparm calling conventions when not optimizing.
30837         (ix86_function_sseregparm): Similarly for sseregparm calling
30838         conventions.
30839
30840 2009-03-19  Li Feng  <nemokingdom@gmail.com>
30841
30842         PR middle-end/39500
30843         * tree-data-ref.c (analyze_subscript_affine_affine): There is no
30844         dependence if the first conflict is after niter iterations.
30845
30846 2009-03-19  Hans-Peter Nilsson  <hp@axis.com>
30847
30848         PR middle-end/38609
30849         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Force for all
30850         functions with dynamic stack-pointer adjustments.
30851
30852 2009-03-19  Ben Elliston  <bje@au.ibm.com>
30853
30854         * doc/invoke.texi (RS/6000 and PowerPC Options): Fix -msdata-data
30855         option; change to -msdata=data.
30856
30857 2009-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
30858
30859         * c.opt: Unify help texts for -Wdeprecated, -Wsystem-headers,
30860         and -fopenmp.
30861
30862 2009-03-18  Eric Botcazou  <ebotcazou@adacore.com>
30863
30864         PR target/35180
30865         * config/sparc/sparc.md (do_builtin_setjmp_setup): Prettify asm output.
30866
30867 2009-03-18  Sandra Loosemore  <sandra@codesourcery.com>
30868
30869         * doc/invoke.texi (Code Gen Options): Expand discussion of
30870         -fno-common.
30871
30872 2009-03-18  Jakub Jelinek  <jakub@redhat.com>
30873
30874         * dse.c (struct group_info): Reorder fields for 64-bit hosts.
30875         * matrix-reorg.c (struct matrix_info): Likewise.
30876         * tree-ssa-loop-ivopts.c (struct ivopts_data): Likewise.
30877         * rtl.h (struct mem_attrs): Likewise.
30878         * df.h (struct df): Likewise.
30879         * tree-data-ref.h (struct data_dependence_relation): Likewise.
30880         * ira-int.h (struct ira_allocno): Likewise.
30881         * df-scan.c (struct df_collection_rec): Likewise.
30882         * ira.c (struct equivalence): Likewise.
30883         * function.c (struct temp_slot): Likewise.
30884         * cfgloop.h (struct loop): Likewise.
30885
30886         PR debug/39485
30887         * function.c (use_register_for_decl): When not optimizing, disregard
30888         register keyword for variables with types containing methods.
30889
30890 2009-03-18  Sebastian Pop  <sebastian.pop@amd.com>
30891
30892         PR middle-end/39447
30893         * graphite.c (exclude_component_ref): Renamed contains_component_ref_p.
30894         (is_simple_operand): Call contains_component_ref_p before calling data
30895         reference analysis that would fail on COMPONENT_REFs.
30896
30897         * tree-vrp.c (search_for_addr_array): Fix formatting.
30898
30899 2009-03-18  Richard Guenther  <rguenther@suse.de>
30900
30901         * tree-vect-transform.c (vect_loop_versioning): Fold the
30902         generated comparisons.
30903         * tree-vectorizer.c (set_prologue_iterations): Likewise.
30904         (slpeel_tree_peel_loop_to_edge): Likewise.
30905
30906 2009-03-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
30907
30908         PR middle-end/37805
30909         * opts.c (print_specific_help): In addition to `undocumented',
30910         accept `separate' and `joined' flags if passed alone.  Describe
30911         output by the first matched one of those.
30912         (common_handle_option): Skip over empty strings.
30913         * gcc.c (display_help): Fix help string for `--help='.
30914         * doc/invoke.texi (Option Summary, Overall Options): With
30915         `--help=', classes and qualifiers can both be repeated, but
30916         only the latter can be negated.  One should not pass only
30917         negated qualifiers.  Fix markup and examples.
30918
30919         Revert
30920         2008-10-14  Jakub Jelinek  <jakub@redhat.com>
30921         PR middle-end/37805
30922         * opts.c (common_handle_option): Don't ICE on -fhelp=joined
30923         and -fhelp=separate.
30924
30925 2009-03-17  Jing Yu  <jingyu@google.com>
30926
30927         PR middle-end/39378
30928         * function.h (struct rtl_data): Move is_thunk from here...
30929         (struct function): ...to here.
30930         * cp/method.c (use_thunk): Change is_thunk from crtl to cfun.
30931         * varasm.c (assemble_start_function): Change is_thunk from crtl to
30932         cfun.
30933         * config/alpha/alpha.c (alpha_sa_mask): Change is_thunk from crtl to
30934         cfun.
30935         (alpha_does_function_need_gp, alpha_start_function): Likewise.
30936         (alpha_output_function_end_prologue): Likewise.
30937         (alpha_end_function, alpha_output_mi_thunk_osf): Likewise.
30938         * config/rs6000/rs6000.c (rs6000_ra_ever_killed): Likewise.
30939         (rs6000_output_function_epilogue): Likewise.
30940         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
30941
30942 2009-03-17  Uros Bizjak  <ubizjak@gmail.com>
30943
30944         PR target/39482
30945         * config/i386/i386.md (*truncdfsf_mixed): Avoid combining registers
30946         from different units in a single alternative.
30947         (*truncdfsf_i387): Ditto.
30948         (*truncxfsf2_mixed): Ditto.
30949         (*truncxfdf2_mixed): Ditto.
30950
30951 2009-03-17  Jakub Jelinek  <jakub@redhat.com>
30952
30953         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Allow
30954         non-NAMESPACE_DECL IMPORTED_DECL_ASSOCIATED_DECL.
30955
30956         PR debug/39474
30957         * tree-ssa-live.c (remove_unused_locals): Don't remove local
30958         unused non-artificial variables when not optimizing.
30959
30960         PR debug/39471
30961         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Emit
30962         DW_TAG_imported_module even if decl is IMPORTED_DECL with
30963         NAMESPACE_DECL in its DECL_INITIAL.
30964
30965         PR middle-end/39443
30966         * optabs.c (set_user_assembler_libfunc): New function.
30967         * expr.h (set_user_assembler_libfunc): New prototype.
30968         * c-common.c: Include libfuncs.h.
30969         (set_builtin_user_assembler_name): Call set_user_assembler_libfunc
30970         for memcmp, memset, memcpy, memmove and abort.
30971         * Makefile.in (c-common.o): Depend on libfuncs.h.
30972
30973         PR debug/39412
30974         * dwarf2out.c (gen_inlined_enumeration_type_die,
30975         gen_inlined_structure_type_die, gen_inlined_union_type_die,
30976         gen_tagged_type_instantiation_die): Removed.
30977         (gen_decl_die): For TYPE_DECL_IS_STUB with non-NULL decl_origin
30978         do nothing.
30979
30980 2009-03-17  Janis Johnson  <janis187@us.ibm.com>
30981
30982         PR testsuite/38526
30983         * Makefile.in (site.exp): Rename TEST_GCC_EXEC_PREFIX and comment
30984         its use.
30985         (check-%): Don't set GCC_EXEC_PREFIX when invoking runtest.
30986         (check-parallel-%): Ditto.
30987         (check-consistency): Ditto.
30988
30989 2009-03-17  Kai Tietz  <kai.tietz@onevision.com>
30990
30991         * ipa-struct-reorg.c (create_general_new_stmt): Initialize
30992         local variable rhs by NULL_TREE.
30993
30994 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
30995
30996         PR target/39477
30997         * doc/extend.texi: Correct register behavior for regparm on Intel 386.
30998
30999 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
31000
31001         PR target/39476
31002         * config/i386/i386.c (ix86_function_regparm): Rewrite for 64bit.
31003
31004 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
31005
31006         PR target/39473
31007         * config/i386/i386.c (ix86_expand_call): Check extra clobbers
31008         for ms->sysv ABI calls only in 64bit mode.
31009
31010         * config/i386/i386.md (untyped_call): Support 32bit.
31011
31012 2009-03-16  H.J. Lu  <hongjiu.lu@intel.com>
31013
31014         * doc/extend.texi: Replace x86_65 with x86_64.
31015
31016 2009-03-16  Jakub Jelinek  <jakub@redhat.com>
31017
31018         PR tree-optimization/39455
31019         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Fix types
31020         mismatches for POINTER_TYPE_P (type).
31021         (number_of_iterations_le): Likewise.
31022
31023 2009-03-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
31024
31025         * config/picochip/picochip.c: Removed profiling support.
31026         * config/picochip/picochip.md: Removed profiling instruction.
31027         * config/picochip/picochip.h: Removed profiling builtin.
31028
31029 2009-03-16  Joseph Myers  <joseph@codesourcery.com>
31030
31031         * doc/install.texi (--with-host-libstdcxx): Document.
31032
31033 2009-03-14  Anatoly Sokolov  <aesok@post.ru>
31034
31035         PR target/34299
31036         * config/avr/avr.c (avr_handle_fndecl_attribute): Move code for
31037         generate a warning if the function name does not begin with
31038         "__vector" and the function has either the 'signal' or 'interrupt'
31039         attribute, from here to ...
31040         (avr_declare_function_name): ...here. New function.
31041         * config/avr/avr.h (ASM_DECLARE_FUNCTION_NAME): Redefine.
31042         * config/avr/avr-protos.h (avr_declare_function_name): Declare.
31043
31044 2009-03-14  Jakub Jelinek  <jakub@redhat.com>
31045
31046         PR bootstrap/39454
31047         * cse.c (fold_rtx): Don't modify original const_arg1 when
31048         canonicalizing SHIFT_COUNT_TRUNCATED shift count, do it on a
31049         separate variable instead.
31050         * rtlanal.c (nonzero_bits1) <case ASHIFTRT>: Don't assume anything
31051         from out of range shift counts.
31052         (num_sign_bit_copies1) <case ASHIFTRT, case ASHIFT>: Similarly.
31053
31054 2009-03-13  Catherine Moore  <clm@codesourcery.com>
31055
31056         * config/i386/x-mingw32 (host-mingw32.o): Replace
31057         diagnostic.h with $(DIAGNOSTIC_H).
31058
31059 2009-03-12  Jakub Jelinek  <jakub@redhat.com>
31060
31061         PR target/39431
31062         * config/i386/predicates.md (cmpxchg8b_pic_memory_operand): New
31063         predicate.
31064         * config/i386/sync.md (sync_compare_and_swap<mode>,
31065         sync_compare_and_swap_cc<mode>): For DImode with -m32 -fpic check
31066         if operands[1] is cmpxchg8b_pic_memory_operand, if not force address
31067         into a register.
31068         (sync_double_compare_and_swapdi_pic,
31069         sync_double_compare_and_swap_ccdi_pic): Require operand 1 to be
31070         cmpxchg8b_pic_memory_operand instead of just memory_operand.
31071
31072 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
31073
31074         PR target/39445
31075         * config/i386/i386.c (ix86_expand_push): Don't set memory alignment.
31076
31077 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
31078
31079         PR target/39327
31080         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
31081         (avx_addsubv4df3): Likewise.
31082         (*avx_addsubv4sf3): Likewise.
31083         (sse3_addsubv4sf3): Likewise.
31084
31085 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
31086
31087         PR target/38824
31088         * config/i386/i386.md: Compare REGNO on the new peephole2 patterns.
31089
31090 2009-03-12  Vladimir Makarov  <vmakarov@redhat.com>
31091
31092         PR debug/39432
31093         * ira-int.h (struct allocno): Fix comment for calls_crossed_num.
31094         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
31095         registers for allocnos created from user-defined variables.
31096
31097 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
31098
31099         PR target/39181
31100         * config/spu/spu.c (spu_expand_mov): Handle invalid subregs
31101         of non-integer mode as well.
31102
31103 2009-03-11  Adam Nemet  <anemet@caviumnetworks.com>
31104
31105         * gimplify.c (gimplify_call_expr): Don't set CALL_CANNOT_INLINE_P
31106         for functions for which the parameter types are unknown.
31107
31108 2009-03-11  Jakub Jelinek  <jakub@redhat.com>
31109
31110         PR target/39137
31111         * cfgexpand.c (get_decl_align_unit): Use LOCAL_DECL_ALIGNMENT macro.
31112         * defaults.h (LOCAL_DECL_ALIGNMENT): Define if not yet defined.
31113         * config/i386/i386.h (LOCAL_DECL_ALIGNMENT): Define.
31114         * config/i386/i386.c (ix86_local_alignment): For
31115         -m32 -mpreferred-stack-boundary=2 use 32-bit alignment for
31116         long long variables on the stack to avoid dynamic realignment.
31117         Allow the first argument to be a decl rather than type.
31118         * doc/tm.texi (LOCAL_DECL_ALIGNMENT): Document.
31119
31120 2009-03-11  Nick Clifton  <nickc@redhat.com>
31121
31122         PR target/5362
31123         * config/mcore/mcore.opt: Remove deprecated m4align and m8align
31124         options.
31125         Add description to mno-lsim option.
31126         * config/mcore/mcore.h: Remove comment about deprecated m4align
31127         option.
31128         (TARGET_DEFAULT): Remove deprecated MASK_M8ALIGN.
31129         * doc/invoke.texi: Add description of mno-lsim and
31130         mstack-increment options.
31131
31132         * config/fr30/fr30.opt: Document the -mno-lsim option.
31133         * doc/invoke.texi: Add descriptions of the FR30's -msmall-model
31134         and -mno-lsim options.
31135
31136 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
31137
31138         * fold-const.c (fold_comparison): Only call fold_inf_compare
31139         if the mode supports infinities.
31140
31141 2009-03-11  Jason Merrill  <jason@redhat.com>
31142
31143         PR debug/39086
31144         * tree-nrv.c (tree_nrv): Don't do this optimization if the front
31145         end already did.  Notice GIMPLE_CALL modifications of the result.
31146         Don't copy debug information from an ignored decl or a decl from
31147         another function.
31148
31149 2009-03-10  Richard Guenther  <rguenther@suse.de>
31150             Nathan Froyd  <froydnj@codesourcery.com>
31151
31152         PR middle-end/37850
31153         * libgcc2.c (__mulMODE3): Use explicit assignments to form the result.
31154         (__divMODE3): Likewise.
31155
31156 2009-03-09  Jakub Jelinek  <jakub@redhat.com>
31157
31158         PR tree-optimization/39394
31159         * gimplify.c (gimplify_type_sizes): Gimplify DECL_SIZE and
31160         DECL_SIZE_UNIT of variable length FIELD_DECLs.
31161
31162 2009-03-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
31163
31164         * recog.c (verfiy_changes): Disallow renaming of hard regs in
31165         inline asms for register asm ("") declarations.
31166
31167 2009-03-09  Eric Botcazou  <ebotcazou@adacore.com>
31168
31169         * fold-const.c (fold_unary): Fix comment.
31170
31171 2009-03-07  Jan Hubicka  <jh@suse.cz>
31172
31173         PR target/39361
31174         * tree-inline.c (setup_one_parameter): Do replacement of const
31175         argument by constant in SSA form.
31176
31177 2009-03-07  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
31178
31179         PR middle-end/38028
31180         * function.c (assign_parm_setup_stack): Use STACK_SLOT_ALIGNMENT to
31181         determine alignment passed to assign_stack_local.
31182         (assign_parms_unsplit_complex): Likewise.
31183         * except.c (sjlj_build_landing_pads): Likewise.
31184
31185 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
31186
31187         PR middle-end/39360
31188         * tree-flow.h (add_referenced_var): Return bool instead of void.
31189         * tree-dfa.c (add_referenced_var): Return result of
31190         referenced_var_check_and_insert call.
31191         * tree-inline.c (expand_call_inline): Call add_referenced_var instead
31192         of referenced_var_check_and_insert.
31193
31194         PR debug/39372
31195         * dwarf2out.c (add_abstract_origin_attribute): Return origin_die.
31196         (gen_variable_die): Emit DW_AT_location on abstract static variable's
31197         DIE, don't emit it if abstract origin already has it.
31198         * tree-cfg.c (remove_useless_stmts_bind): GIMPLE_BINDs with any
31199         BLOCK_NONLOCALIZED_VARS in its gimple_bind_block aren't useless.
31200
31201 2009-03-06  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
31202
31203         * genpreds.c (needs_variable): Fix parentheses at variable name
31204         detection.
31205         (write_tm_constrs_h): Indent generated code.
31206
31207 2009-03-06  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
31208
31209         * doc/extend.texi (Function Attributes): Add documentation
31210         for isr attributes.
31211
31212 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
31213
31214         PR debug/39387
31215         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): For IMPORTED_DECL
31216         take locus from its DECL_SOURCE_LOCATION instead of input_location.
31217
31218 2009-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
31219
31220         * config/bfin/bfin.c (bfin_discover_loop): When retrying fails, mark
31221         the loop as bad.
31222
31223 2009-03-05  Jakub Jelinek  <jakub@redhat.com>
31224
31225         PR debug/39379
31226         * tree-cfg.c (remove_useless_stmts_bind): Don't remove GIMPLE_BINDs
31227         with blocks containing IMPORTED_DECLs in BLOCK_VARS.
31228
31229 2009-03-05  Uros Bizjak  <ubizjak@gmail.com>
31230
31231         * config/i386/i386.md (R8_REG, R9_REG): New constants.
31232         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Use named
31233         constants instead of magic numbers.
31234         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
31235         (QI_REG_P): Ditto.
31236         * config/i386/i386.c (x86_64_int_parameter_registers): Ditto.
31237         (x86_64_ms_abi_int_parameter_registers): Ditto.
31238         (x86_64_int_return_registers): Ditto.
31239         (ix86_maybe_switch_abi): Ditto.
31240         (ix86_expand_call): Ditto for clobbered_registers array.
31241         (ix86_hard_regno_mode_ok): Ditto.
31242         (x86_extended_QIreg_mentioned_p): Ditto.
31243
31244 2009-03-05  J"orn Rennecke  <joern.rennecke@arc.com>
31245
31246         PR tree-optimization/39349
31247         * cse.c (cse_insn): Fix loop to stop at VOIDmode.
31248
31249         * combine.c (gen_lowpart_for_combine): Use omode when generating
31250         clobber.
31251
31252 2009-03-04  J"orn Rennecke  <joern.rennecke@arc.com>
31253
31254         PR rtl-optimization/39235
31255         * loop-iv.c (get_simple_loop_desc): Use XCNEW.
31256
31257 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
31258
31259         * graphite.c (nb_reductions_in_loop): Update simple_iv arguments.
31260
31261 2009-03-04  Richard Guenther  <rguenther@suse.de>
31262
31263         PR tree-optimization/39362
31264         * tree-ssa-sccvn.c (visit_use): Stores and copies from SSA_NAMEs
31265         that occur in abnormal PHIs should be varying.
31266
31267 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
31268
31269         * tree-scalar-evolution.c (analyze_scalar_evolution_in_loop):
31270         Extend comments.
31271         (simple_iv):  Take loop as an argument instead of statement.
31272         * tree-scalar-evolution.h (simple_iv): Declaration changed.
31273         * tree-ssa-loop-niter.c (number_of_iterations_exit): Update calls
31274         to simple_iv.
31275         * tree-ssa-loop-ivopts.c (determine_biv_step, find_givs_in_stmt_scev):
31276         Ditto.
31277         * tree-parloops.c (loop_parallel_p, canonicalize_loop_ivs): Ditto.
31278         * matrix-reorg.c (analyze_transpose): Ditto.
31279         * tree-data-ref.c (dr_analyze_innermost): Ditto.
31280         * tree-vect-analyze.c (vect_analyze_data_refs): Ditto.
31281         * tree-predcom.c (ref_at_iteration): Ditto.
31282         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Ditto.
31283
31284 2009-03-04  Richard Guenther  <rguenther@suse.de>
31285
31286         PR tree-optimization/39358
31287         * tree-ssa-structalias.c (do_sd_constraint): Fix check for
31288         escaped_id and callused_id.
31289         (solve_graph): Likewise.
31290
31291 2009-03-04  Richard Guenther  <rguenther@suse.de>
31292
31293         PR tree-optimization/39339
31294         * tree-sra.c (try_instantiate_multiple_fields): Make it
31295         no longer ICE on the above.
31296
31297 2009-03-03  Joseph Myers  <joseph@codesourcery.com>
31298
31299         * emit-rtl.c (adjust_address_1): Reduce offset to a signed value
31300         that fits within Pmode.
31301
31302 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
31303
31304         PR middle-end/10109
31305         * tm.texi (LIBCALL_VALUE): Update description.
31306
31307 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
31308
31309         PR middle-end/34443
31310         * doc/extend.texi (section): Update description.
31311
31312 2009-03-03  H.J. Lu  <hongjiu.lu@intel.com>
31313
31314         PR middle-end/39345
31315         * tree-inline.c (remapped_type): New.
31316         (can_be_nonlocal): Call remapped_type instead of remap_type.
31317
31318 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
31319
31320         PR fortran/39354
31321         * gimplify.c (goa_stabilize_expr): Handle tcc_comparison,
31322         TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR.
31323
31324 2009-03-03  Richard Guenther  <rguenther@suse.de>
31325
31326         PR middle-end/39272
31327         * tree.c (tree_nonartificial_location): New function.
31328         * tree.h (tree_nonartificial_location): Declare.
31329         * builtins.c (expand_builtin_memory_chk): Provide location
31330         of the call location for artificial function pieces.
31331         (maybe_emit_chk_warning): Likewise.
31332         (maybe_emit_sprintf_chk_warning): Likewise.
31333         (maybe_emit_free_warning): Likewise.
31334         * expr.c (expand_expr_real_1): Likewise.
31335
31336 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
31337
31338         PR tree-optimization/39343
31339         * tree-ssa-ccp.c (maybe_fold_offset_to_address): Don't check if
31340         COMPONENT_REF t has ARRAY_TYPE.
31341
31342 2009-03-02  Sebastian Pop  <sebastian.pop@amd.com>
31343
31344         PR middle-end/39335
31345         * tree-parloops.c (canonicalize_loop_ivs): Call fold_convert
31346         when the type precision of the induction variable should be
31347         larger than the type precision of nit.
31348         (gen_parallel_loop): Update use of canonicalize_loop_ivs.
31349         * graphite.c (graphite_loop_normal_form): Same.
31350         * tree-flow.h (canonicalize_loop_ivs): Update declaration.
31351
31352 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
31353
31354         * config/i386/i386.md (ST?_REG, MM?_REG): New constants.
31355         (*call_1_rex64_ms_sysv): Use named constants instead of magic
31356         numbers to describe clobbered registers.
31357         (*call_value_0_rex64_ms_sysv): Ditto.
31358         * config/i386/mmx.md (mmx_emms): Ditto.
31359         (mmx_femms): Ditto.
31360
31361 2009-03-02  Richard Sandiford  <rdsandiford@googlemail.com>
31362
31363         * config/mips/mips.c (mips_mdebug_abi_name): Fix the handling
31364         of ABI_64.
31365
31366 2009-03-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
31367
31368         * config/spu/spu.c (TARGET_SECTION_TYPE_FLAGS): Define.
31369         (spu_section_type_flags): New function.
31370
31371 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
31372
31373         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not copy
31374         reg_class_contents of FLOAT_REGS into a temporary.
31375
31376 2009-03-02  Richard Guenther  <rguenther@suse.de>
31377             Ira Rosen  <irar@il.ibm.com>
31378
31379         PR tree-optimization/39318
31380         * tree-vect-transform.c (vectorizable_call): Transfer the EH region
31381         information to the vectorized statement.
31382
31383 2009-03-01  Uros Bizjak  <ubizjak@gmail.com>
31384
31385         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not shadow "i"
31386         variable.  Use defined names instead of magic constants for REX SSE
31387         registers.
31388
31389 2009-03-01  Richard Guenther  <rguenther@suse.de>
31390
31391         PR tree-optimization/39331
31392         * omp-low.c (lower_send_shared_vars): Do not receive new
31393         values for the reference of DECL_BY_REFERENCE parms or results.
31394
31395 2009-03-01  Jan Hubicka  <jh@suse.cz>
31396
31397         PR debug/39267
31398         * tree.h (BLOCK_NONLOCALIZED_VARS, BLOCK_NUM_NONLOCALIZED_VARS,
31399         BLOCK_NONLOCALIZED_VAR): New macros.
31400         (tree_block): Add nonlocalized_vars.
31401         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die,
31402         gen_decl_die): Add origin argument.  Allow generation of die with
31403         origin at hand only.
31404         (gen_member_die, gen_type_die_with_usage, force_decl_die,
31405         declare_in_namespace, gen_namescpace_die, dwarf2out_decl): Update use
31406         of gen_*.
31407         (gen_block_die): Fix checking for unused blocks.
31408         (process_scope_var): Break out from .... ; work with origins only.
31409         (decls_for_scope) ... here; process nonlocalized list.
31410         (dwarf2out_ignore_block): Look for nonlocalized vars.
31411         * tree-ssa-live.c (remove_unused_scope_block_p): Look for nonlocalized
31412         vars.
31413         (dump_scope_block): Dump them.
31414         * tree-inline.c (remap_decls): Handle nonlocalized vars.
31415         (remap_block): Likewise.
31416         (can_be_nonlocal): New predicate.
31417         (copy_bind_expr, copy_gimple_bind): Update use of remap_block.
31418
31419 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
31420
31421         * configure: Regenerate.
31422
31423 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
31424
31425         * optc-gen.awk: No need to duplicate option flags twice.
31426         Reuse help texts for duplicate options which do not have any.
31427
31428         * gcc.c (display_help): Document --version.
31429
31430         * gcc.c (main): If print_help_list and verbose_flag, ensure
31431         driver output comes before subprocess output.
31432
31433         * optc-gen.awk: Assign all remaining fields to help string,
31434         space-separated, for multi-line help in *.opt.
31435
31436         * doc/invoke.texi (Warning Options): -Wsync-nand is C/C++ only.
31437         -Wno-pedantic-ms-format is for MinGW targets only.
31438
31439         * doc/options.texi (Option file format): Fix bad indentation,
31440         restoring dropped sentence.
31441
31442 2009-02-28  Jan Hubicka  <jh@suse.cz>
31443
31444         * tree-inline.c (tree_function_versioning): Output debug info.
31445
31446 2009-02-28  Jan Hubicka  <jh@suse.cz>
31447
31448         PR debug/39267
31449         * tree-inline.c (setup_one_parameter): Do not copy propagate
31450         arguments when not optimizing.
31451
31452 2009-02-28  H.J. Lu  <hongjiu.lu@intel.com>
31453
31454         PR target/39327
31455         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
31456         (avx_addsubv4df3): Likewise.
31457         (*avx_addsubv4sf3): Likewise.
31458         (sse3_addsubv4sf3): Likewise.
31459         (*avx_addsubv2df3): Likewise.
31460         (sse3_addsubv2df3): Likewise.
31461         (avx_unpckhps256): Correct item selectors.
31462         (avx_unpcklps256): Likewise.
31463         (avx_unpckhpd256): Likewise.
31464         (avx_unpcklpd256): Likewise.
31465
31466 2009-02-28  Jan Hubicka  <jh@suse.cz>
31467
31468         * tree-inline.c (expand_call_inline): Avoid duplicate declarations of
31469         static vars.
31470         (copy_arguments_for_versioning): If var is declared don't declare it.
31471         (tree_function_versioning): First setup substitutions and then copy
31472         args.
31473
31474 2009-02-27  Jan Hubicka  <jh@suse.cz>
31475
31476         PR debug/39267
31477         * cgraph.h (varpool_output_debug_info): Remove.
31478         * cgraphunit.c (varpool_output_debug_info): Remove.
31479         * dwarf2out.c (deferred_locations_struct): New struct
31480         (deferred_locations): New type.
31481         (deferred_locations_list): New static var.
31482         (deffer_location): New function.
31483         (gen_variable_die): Use it.
31484         (decls_for_scope): Output info on local static vars.
31485         (dwarf2out_finish): Process deferred locations.
31486         * varpool.c (varpool_output_debug_info): Remove.
31487
31488 2009-02-27  Jan Hubicka  <jh@suse.cz>
31489
31490         PR debug/39267
31491         * tree.h (TREE_PROTECTED): Fix comment.
31492         (BLOCK_HANDLER_BLOCK): Remove.
31493         (struct tree_block): Remove handler_block add body_block.
31494         (inlined_function_outer_scope_p): New.
31495         (is_body_block): Remove.
31496         * dbxout.c (dbxout_block): Remove BLOCK_HANDLER_BLOCK.
31497         * dwarf2out.c (is_inlined_entry_point): Remove.
31498         (add_high_low_attributes): Use inlined_function_outer_scope_p.
31499         (gen_block_die): Use is_inlined_entry_point check.  Remove body block
31500         code.
31501         * langhooks.h (struct lang_hooks): Remove no_bodu_blocks.
31502         * gimplify.c (gimplify_expr): Gimplify body blocks.
31503         * tree-ssa-live.c (remove_unused_scope_block_p): Allow removing wrapper
31504         block with multiple subblocks.
31505         (dump_scope_block): Prettier output; dump more flags and info.
31506         (dump_scope_blocks): New.
31507         (remove_unused_locals): Use dump_scope_blocks.
31508         * tree-flow.h (dump_scope_blocks): Declare.
31509         * tree-cfg.c (execute_build_cfg): Dump scope blocks.
31510         * stmt.c (is_body_block): Remove.
31511         * tree-inline.c (remap_block): Copy BODY_BLOCK info.
31512         * langhooks-def.h (LANG_HOOKS_NO_BODY_BLOCKS): Remove.
31513
31514 2009-02-27  Sebastian Pop  <sebastian.pop@amd.com>
31515
31516         PR middle-end/39308
31517         * graphite.c (graphite_loop_normal_form): Do not call
31518         number_of_iterations_exit from a gcc_assert.
31519
31520 2009-02-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
31521
31522         * config/s390/s390.c (s390_swap_cmp): Look for conditional
31523         jumps if COND is NULL.
31524         (find_cond_jump): New function.
31525         (s390_z10_optimize_cmp): Handling for reg-reg compares added.
31526         * config/s390/s390.md: Remove z10_cobra attribute value.
31527
31528 2009-02-26  Uros Bizjak  <ubizjak@gmail.com>
31529
31530         * config/alpha/alpha.h (alpha_expand_mov): Return false if
31531         force_const_mem returns NULL_RTX.
31532
31533 2009-02-26  Jan Hubicka  <jh@suse.cz>
31534
31535         PR debug/39267
31536         * cgraph.h (varpool_output_debug_info): Remove.
31537         * cgraphunit.c (varpool_output_debug_info): Remove.
31538         * dwarf2out.c (deferred_locations_struct): New struct
31539         (deferred_locations): New type.
31540         (deferred_locations_list): New static var.
31541         (deffer_location): New function.
31542         (gen_variable_die): Use it.
31543         (decls_for_scope): Output info on local static vars.
31544         (dwarf2out_finish): Process deferred locations.
31545         * varpool.c (varpool_output_debug_info): Remove.
31546
31547 2009-02-25  H.J. Lu  <hongjiu.lu@intel.com>
31548
31549         PR rtl-optimization/39241
31550         * jump.c (rtx_renumbered_equal_p): Remove 2 superfluous calls
31551         to subreg_offset_representable_p.
31552
31553 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
31554
31555         * regmove.c (regmove_optimize): Conform to struct rtl_opt_pass
31556         execute function prototype.  Get f and nregs from max_reg_num
31557         and get_insns.  Remove the first backward pass as it's dead,
31558         guard the forward pass by flag_expensive_optimizations.
31559         (rest_of_handle_regmove): Delete.
31560         (pass_regmove): Replace it with regmove_optimize.
31561
31562 2009-02-25  Martin Jambor  <mjambor@suse.cz>
31563
31564         PR tree-optimization/39259
31565         * tree-inline.c (initialize_cfun): Remove asserts for calls_setjmp and
31566         calls_alloca function flags.
31567         (copy_bb): Set calls_setjmp and alls_alloca function flags if such
31568         calls are detected.
31569
31570 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
31571
31572         * regmove.c (discover_flags_reg, flags_set_1, mark_flags_life_zones,
31573         flags_set_1_rtx, flags_set_1_set): Delete.
31574         (regmove_optimize): Do not call mark_flags_life_zones.
31575
31576 2009-02-24  Julian Brown  <julian@codesourcery.com>
31577
31578         PR target/35965
31579         * config/arm/arm.c (require_pic_register): Only set
31580         cfun->machine->pic_reg once per function.
31581
31582 2009-02-24  Sandra Loosemore  <sandra@codesourcery.com>
31583
31584         * doc/invoke.texi (Link Options): Document an easier way to pass
31585         options that take arguments to the GNU linker using -Xlinker and -Wl.
31586
31587 2009-02-24  Steve Ellcey  <sje@cup.hp.com>
31588
31589         PR target/33785
31590         * doc/tm.texi (TARGET_C99_FUNCTIONS): Fix description.
31591
31592 2009-02-24  Richard Guenther  <rguenther@suse.de>
31593
31594         PR debug/39285
31595         * dwarf2out.c (gen_enumeration_type_die): Handle CONST_DECLs.
31596
31597 2009-02-24  Richard Guenther  <rguenther@suse.de>
31598             Zdenek Dvorak  <ook@ucw.cz>
31599
31600         PR tree-optimization/39233
31601         * tree-ssa-loop-ivopts.c (add_candidate_1): Do not except pointers
31602         from converting them to a generic type.
31603
31604 2009-02-23  Sebastian Pop  <sebastian.pop@amd.com>
31605
31606         PR tree-optimization/39260
31607         * graphite.c (harmful_stmt_in_bb): Stop a SCoP when the basic block
31608         contains a condition with a real type.
31609         (build_scop_conditions_1): Conditions are always last_stmt of a bb.
31610
31611 2009-02-23  Jason Merrill  <jason@redhat.com>
31612
31613         PR c++/38880
31614         * varasm.c (initializer_constant_valid_p) [PLUS_EXPR]: Check
31615         narrowing_initializer_constant_valid_p.
31616         (narrowing_initializer_constant_valid_p): Don't return
31617         null_pointer_node for adding a pointer to itself.
31618
31619 2009-02-23  Jan Hubicka  <jh@suse.cz>
31620
31621         PR c/12245
31622         * ggc.h (htab_create_ggc): Use ggc_free to free hashtable when
31623         resizing.
31624
31625 2009-02-23  Jan Hubicka  <jh@suse.cz>
31626
31627         PR tree-optimization/37709
31628         * tree.c (block_ultimate_origin): Move here from dwarf2out.
31629         * tree.h (block_ultimate_origin): Declare.
31630         * dwarf2out.c (block_ultimate_origin): Move to tree.c
31631         * tree-ssa-live.c (remove_unused_scope_block_p):
31632         Eliminate blocks containig no instructions nor live variables nor
31633         nested blocks.
31634         (dump_scope_block): New function.
31635         (remove_unused_locals): Enable removal of dead blocks by default;
31636         enable dumping at TDF_DETAILS.
31637
31638 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
31639
31640         * config/i386/i386.c (classify_argument): Don't allow COImode
31641         and OImode.
31642         (function_arg_advance_32): Don't allow OImode.
31643         (function_arg_32): Likewise.
31644         (function_value_32): Likewise.
31645         (return_in_memory_32): Likewise.
31646         (function_arg_64): Remove OImode comment.
31647
31648 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
31649
31650         PR target/39261
31651         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
31652         ix86_expand_vector_set for V4DImode in 64bit mode only.
31653         (ix86_expand_vector_init_one_var): Likewise.
31654
31655 2009-02-21  Sebastian Pop  <sebastian.pop@amd.com>
31656
31657         * graphite.c (graphite_trans_loop_block): Adjust tile size to 51.
31658
31659 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
31660
31661         PR bootstrap/39257
31662         * loop-iv.c: Revert last change.
31663         * emit-rtl.c: Likewise.
31664
31665 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
31666
31667         PR target/39256
31668         * config/i386/i386.c (type_natural_mode): Remove an extra
31669         space in the warning message.
31670         (function_value_32): Handle 32-byte vector modes.
31671         (return_in_memory_32): Likewise.
31672
31673 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
31674
31675         * loop-iv.c (truncate_value): New function.
31676         (iv_subreg, get_iv_value, iv_number_of_iterations): Use it instead
31677         of lowpart_subreg.
31678         (lowpart_subreg): Move to...
31679         * emit-rtl.c: ...here.
31680
31681 2009-02-21  Danny Smith  <dannysmith@users.sourceforge.net>
31682
31683         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common): Revert
31684         accidental and undocumented change at revision 140860.
31685
31686 2009-02-21  Joseph Myers  <joseph@codesourcery.com>
31687
31688         * config/arm/arm.c (arm_gimplify_va_arg_expr): Update prototype to
31689         take gimple_seq * arguments.
31690         (arm_mangle_type): Use CONST_CAST_TREE on type argument passed to
31691         types_compatible_p langhook.
31692
31693 2009-02-20  Mark Mitchell  <mark@codesourcery.com>
31694             Joseph Myers  <joseph@codesourcery.com>
31695
31696         * config/arm/arm.c (arm_builtin_va_list): New function.
31697         (arm_expand_builtin_va_start): Likewise.
31698         (arm_gimplify_va_arg_expr): Likewise.
31699         (TARGET_BUILD_BUILTIN_VA_LIST): Define.
31700         (TARGET_BUILD_BUILTIN_VA_START): Likewise.
31701         (TARGET_BUILD_BUILTIN_VA_ARG_EXPR): Likewise.
31702         (va_list_type): New variable.
31703         (arm_mangle_type): Mangle va_list_type appropriately.
31704
31705 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
31706
31707         PR middle-end/39157
31708         * Makefile.in (loop-invariant.o): Depend on $(PARAMS_H).
31709         * params.h (LOOP_INVARIANT_MAX_BBS_IN_LOOP): Define.
31710         * params.def (loop-invariant-max-bbs-in-loop): New parameter.
31711         * opts.c (decode_options): Set loop-invariant-max-bbs-in-loop
31712         parameter to 1000 for -O1 by default.
31713         * doc/invoke.texi (loop-invariant-max-bbs-in-loop): Document new
31714         parameter.
31715         * loop-invariant.c: Include params.h.
31716         (move_loop_invariants): Don't call move_single_loop_invariants on
31717         very large loops.
31718
31719 2009-02-20  Jaka Mocnik  <jaka@xlab.si>
31720
31721         * calls.c (emit_library_call_value_1): Use slot_offset instead of
31722         offset when calculating bounds for indexing stack_usage_map.  Fixes
31723         a buffer overflow with certain target setups.
31724
31725 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
31726
31727         PR target/39240
31728         * calls.c (expand_call): Clear try_tail_call if caller and callee
31729         disagree in promotion of function return value.
31730
31731 2009-02-19  Jakub Jelinek  <jakub@redhat.com>
31732
31733         PR target/39175
31734         * c-common.c (c_determine_visibility): If visibility changed and
31735         DECL_RTL has been already set, call make_decl_rtl to update symbol
31736         flags.
31737
31738 2009-02-19  H.J. Lu  <hongjiu.lu@intel.com>
31739
31740         PR c++/39188
31741         * varasm.c (assemble_variable): Don't check DECL_NAME when
31742         globalizing a variable.
31743
31744 2009-02-19  Joseph Myers  <joseph@codesourcery.com>
31745
31746         PR c/38483
31747         * builtins.c (gimplify_va_arg_expr): Evaluate the va_list
31748         expression before any __builtin_trap call.
31749         * c-typeck.c (build_function_call): Convert and check function
31750         arguments before generating a call to a trap.  Evaluate the
31751         function arguments before the trap.
31752
31753 2009-02-19  Uros Bizjak  <ubizjak@gmail.com>
31754
31755         PR target/39228
31756         * config/i386/i386.md (isinfxf2): Split from isinf<mode>2.
31757         (UNSPEC_FXAM_MEM): New unspec.
31758         (fxam<mode>2_i387_with_temp): New insn and split pattern.
31759         (isinf<mode>2): Use MODEF mode iterator.  Force operand[1] through
31760         memory using fxam<mode>2_i387_with_temp to remove excess precision.
31761
31762 2009-02-19  Richard Guenther  <rguenther@suse.de>
31763
31764         PR tree-optimization/39207
31765         PR tree-optimization/39074
31766         * tree-ssa-structalias.c (storedanything_id, var_storedanything,
31767         storedanything_tree): New.
31768         (do_ds_constraint): Simplify ANYTHING shortcutting.  Update
31769         the STOREDANYTHING solution if the lhs solution contains ANYTHING.
31770         (build_succ_graph): Add edges from STOREDANYTHING to all
31771         non-direct nodes.
31772         (init_base_vars): Initialize STOREDANYTHING.
31773         (compute_points_to_sets): Free substitution info after
31774         building the succ graph.
31775         (ipa_pta_execute): Likewise.
31776
31777         * tree-ssa-structalias.c (struct variable_info): Add may_have_pointers
31778         field.
31779         (do_ds_constraint): Do not add to special var or non-pointer
31780         field solutions.
31781         (type_could_have_pointers): Split out from ...
31782         (could_have_pointers): ... here.  For arrays use the element type.
31783         (create_variable_info_for): Initialize may_have_pointers.
31784         (new_var_info): Likewise.
31785         (handle_lhs_call): Make the HEAP variable unknown-sized.
31786         (intra_create_variable_infos): Use a type with pointers for
31787         PARM_NOALIAS, make it unknown-sized.
31788
31789 2009-02-18  H.J. Lu  <hongjiu.lu@intel.com>
31790
31791         PR target/39224
31792         * config/i386/i386.c (ix86_return_in_memory): Properly check ABI.
31793
31794 2009-02-18  Jason Merrill  <jason@redhat.com>
31795
31796         PR target/39179
31797         * tree-ssa-ccp.c (get_symbol_constant_value): Don't assume zero
31798         value if DECL_EXTERNAL.
31799         * tree-sra.c (sra_walk_gimple_assign): Likewise.
31800         * target.h (gcc_target::binds_local_p): Clarify "module".
31801         * tree.h (TREE_PUBLIC): Clarify "module".
31802
31803 2009-02-17  Xuepeng Guo  <xuepeng.guo@intel.com>
31804
31805         PR target/38891
31806         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move the hunk of
31807         initialization for MS_ABI prior to the hunk of !TARGET_MMX.
31808
31809 2009-02-17  H.J. Lu  <hongjiu.lu@intel.com>
31810
31811         PR target/39082
31812         * c.opt (Wabi): Support C and ObjC.
31813         (Wpsabi): New.
31814
31815         * c-opts.c (c_common_handle_option): Handle OPT_Wabi.
31816
31817         * config/i386/i386.c (classify_argument): Warn once about the ABI
31818         change when passing union with long double.
31819
31820         * doc/invoke.texi: Update -Wabi for warning psABI changes.
31821
31822 2009-02-18  Joseph Myers  <joseph@codesourcery.com>
31823
31824         PR c/35447
31825         * c-parser.c (c_parser_compound_statement): Always enter and leave
31826         a scope.
31827
31828 2009-02-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
31829
31830         PR target/34587
31831         * config/darwin.h (SUPPORTS_INIT_PRIORITY): Define.
31832
31833 2009-02-18  Jakub Jelinek  <jakub@redhat.com>
31834
31835         PR tree-optimization/36922
31836         * tree-data-ref.c (initialize_matrix_A): Handle BIT_NOT_EXPR.
31837         * tree-scalar-evolution.c (interpret_rhs_expr, instantiate_scev_1):
31838         Likewise.
31839
31840 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
31841
31842         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
31843         to 0 for EABI64.
31844
31845 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
31846
31847         * config/mips/mips.md (type): Reclassify lui_movf as "unknown".
31848
31849 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
31850
31851         * config/mips/mips.c (mips_gimplify_va_arg_expr): Fix invalid
31852         tree sharing.
31853
31854 2009-02-17  Ruan Beihong  <ruanbeihong@gmail.com>
31855             Richard Sandiford  <rdsandiford@googlemail.com>
31856
31857         * config/mips/mips.c (CODE_FOR_loongson_biadd): Delete.
31858         * config/mips/loongson.md (reduc_uplus_<mode>): Rename to...
31859         (loongson_biadd): ...this.
31860
31861 2009-02-17  Richard Guenther  <rguenther@suse.de>
31862
31863         PR tree-optimization/39202
31864         * tree-ssa-structalias.c (do_structure_copy): Before collapsing
31865         a var make sure to follow existing collapses.
31866
31867 2009-02-17  Richard Guenther  <rguenther@suse.de>
31868
31869         PR middle-end/39214
31870         * langhooks.c (lhd_print_error_function): Check for NULL block.
31871
31872 2009-02-17  Richard Guenther  <rguenther@suse.de>
31873
31874         PR tree-optimization/39204
31875         * tree-ssa-pre.c (phi_translate_1): Lookup the value-number
31876         of the PHI arg.
31877
31878 2009-02-17  Uros Bizjak  <ubizjak@gmail.com>
31879
31880         * config/soft-fp/double.h: Update from glibc CVS.
31881
31882 2009-02-17  Richard Guenther  <rguenther@suse.de>
31883
31884         PR tree-optimization/39207
31885         * tree-ssa-structalias.c (find_what_p_points_to): Do not emit
31886         strict-aliasing warnings for pointers pointing to NULL.
31887
31888 2009-02-16  Joseph Myers  <joseph@codesourcery.com>
31889
31890         PR c/35446
31891         * c-parser.c (c_parser_braced_init): Call pop_init_level when
31892         skipping until next close brace.
31893
31894 2009-02-16  H.J. Lu  <hongjiu.lu@intel.com>
31895
31896         PR target/37049
31897         * config/i386/i386.c (ix86_expand_push): Set memory alignment
31898         to function argument boundary.
31899
31900 2009-02-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
31901
31902         * config/picochip/picochip.md (lea_add): Allow any nonimmediate
31903         in the lea_add. Reload eventually constraints it properly.
31904         * config/picochip/constraints.md: Remove the target constraint
31905         "b", since it is not needed anymore.
31906
31907 2009-02-16  Jakub Jelinek  <jakub@redhat.com>
31908
31909         * gthr-dce.h: Uglify function parameter and local variable names.
31910         * gthr-gnat.h: Likewise.
31911         * gthr-mipssde.h: Likewise.
31912         * gthr-nks.h: Likewise.
31913         * gthr-posix95.h: Likewise.
31914         * gthr-posix.h: Likewise.
31915         * gthr-rtems.h: Likewise.
31916         * gthr-single.h: Likewise.
31917         * gthr-solaris.h: Likewise.
31918         * gthr-tpf.h: Likewise.
31919         * gthr-vxworks.h: Likewise.
31920         * gthr-win32.h: Likewise.
31921
31922 2009-02-15  H.J. Lu  <hongjiu.lu@intel.com>
31923
31924         PR target/39196
31925         * config/i386/i386.md: Restrict the new peephole2 to move
31926         between MMX/SSE registers.
31927
31928 2009-02-15  Richard Guenther  <rguenther@suse.de>
31929
31930         Revert
31931         2009-02-13  Richard Guenther  <rguenther@suse.de>
31932
31933         * configure.ac: Enable LFS.
31934         * configure: Re-generate.
31935         * config.in: Likewise.
31936
31937 2009-02-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
31938
31939         * config/spu/spu_internals.h (spu_sr, spu_sra, spu_srqw,
31940         spu_srqwbyte, spu_srqwbytebc): Define.
31941         * config/spu/spu-builtins.def (spu_sr, spu_sra, spu_srqw,
31942         spu_srqwbyte, spu_srqwbytebc): New overloaded builtins.
31943         * config/spu/spu.md ("shrqbybi_<mode>", "shrqbi_<mode>",
31944         "shrqby_<mode>"): New insn-and-split patterns.
31945         * config/spu/spu.c (expand_builtin_args): Determine and return
31946         number of operands using spu_builtin_description data.
31947         (spu_expand_builtin_1): Use it.
31948
31949 2009-02-13  Steve Ellcey  <sje@cup.hp.com>
31950
31951         PR target/38056
31952         * config/ia64/ia64.c (ia64_function_ok_for_sibcall): Check
31953         TARGET_CONST_GP.
31954
31955 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
31956
31957         PR target/39149
31958         * config/i386/i386.c (override_options): Correct warning
31959         messages for -malign-loops, -malign-jumps and -malign-functions.
31960
31961 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
31962
31963         PR target/39152
31964         * config/i386/i386.md: Restrict the new peephole2 to move
31965         between the general purpose registers.
31966
31967 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
31968
31969         PR target/39162
31970         * config/i386/i386.c (type_natural_mode): Add a new argument.
31971         Return the original mode and warn ABI change if vector size is 32byte.
31972         (function_arg_advance): Updated.
31973         (function_arg): Likewise.
31974         (ix86_function_value): Likewise.
31975         (ix86_return_in_memory): Likewise.
31976         (ix86_sol10_return_in_memory): Likewise.
31977         (ix86_gimplify_va_arg): Likewise.
31978         (function_arg_32): Don't warn ABX ABI change here.
31979         (function_arg_64): Likewise.
31980
31981 2009-02-13  Bernd Schmidt  <bernd.schmidt@analog.com>
31982
31983         * loop-iv.c (implies_p): In the final case, test that operands 0
31984         of the two comparisons match.
31985
31986         * config/bfin/bfin.c (find_prev_insn_start): New function.
31987         (bfin_optimize_loop): Use it in some cases instead of PREV_INSN.
31988         (find_next_insn_start): Move.
31989
31990 2009-02-13  Richard Guenther  <rguenther@suse.de>
31991
31992         * configure.ac: Enable LFS.
31993         * configure: Re-generate.
31994         * config.in: Likewise.
31995
31996 2009-02-13  Joseph Myers  <joseph@codesourcery.com>
31997
31998         PR c/35444
31999         * c-parser.c (c_parser_parms_list_declarator): Discard pending
32000         sizes on syntax error after some arguments have been parsed.
32001
32002 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
32003
32004         * doc/invoke.texi (-fira): Remove.
32005
32006 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
32007
32008         * caller-save.c: Replace regclass.c with reginfo.c in comments.
32009         * recog.c: Likewise.
32010         * rtl.h: Likewise.
32011
32012 2009-02-12  Uros Bizjak  <ubizjak@gmail.com>
32013
32014         * longlong.h (sub_ddmmss): New for ia64. Ported from GMP 4.2.
32015         (umul_ppmm): Likewise.
32016         (count_leading_zeros): Likewise.
32017         (count_trailing_zeros): Likewise.
32018         (UMUL_TIME): Likewise.
32019
32020 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
32021
32022         * config.gcc (ia64*-*-linux*): Add ia64/t-fprules-softfp and
32023         soft-fp/t-softfp to tmake_file.
32024
32025         * config/ia64/ia64.c (ia64_soft_fp_init_libfuncs): New.
32026         (ia64_expand_compare): Use HPUX library for TFmode only for HPUX.
32027         (ia64_builtins) [IA64_BUILTIN_COPYSIGNQ, IA64_BUILTIN_FABSQ,
32028         IA64_BUILTIN_INFQ]: New.
32029         (ia64_init_builtins): Initialize __builtin_infq,
32030         __builtin_fabsq and __builtin_copysignq if not HPUX.
32031         (ia64_expand_builtin): Handle IA64_BUILTIN_COPYSIGNQ,
32032         IA64_BUILTIN_FABSQ and IA64_BUILTIN_INFQ.
32033
32034         * config/ia64/lib1funcs.asm (__divtf3): Define only if
32035         SHARED is defined.
32036         (__fixtfti): Likewise.
32037         (__fixunstfti): Likewise.
32038         (__floattitf): Likewise.
32039
32040         * config/ia64/libgcc-glibc.ver: New.
32041         * config/ia64/t-fprules-softfp: Likewise.
32042         * config/ia64/sfp-machine.h: Likewise.
32043
32044         * config/ia64/linux.h (LIBGCC2_HAS_TF_MODE): New.
32045         (LIBGCC2_TF_CEXT): Likewise.
32046         (TF_SIZE): Likewise.
32047         (TARGET_INIT_LIBFUNCS): Likewise.
32048
32049         * config/ia64/t-glibc (SHLINB_MAPFILES):
32050         Add $(srcdir)/config/ia64/libgcc-glibc.ver.
32051
32052 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
32053
32054         * config/i386/i386.c (construct_container): Rewrite processing
32055         BLKmode with X86_64_SSE_CLASS.
32056
32057 2009-02-12  Paolo Bonzini  <bonzini@gnu.org>
32058
32059         PR target/39152
32060         * config/i386/i386.md: Replace simplify_replace_rtx with
32061         replace_rtx in the new peephole2.
32062
32063 2009-02-12  Nathan Sidwell  <nathan@codesourcery.com>
32064
32065         * doc/invoke.texi (Optimize Options): Stop claiming inlining and
32066         loop unrolling do not happen at -O2.
32067
32068 2009-02-12  Michael Matz  <matz@suse.de>
32069
32070         * gcc.c (ASM_DEBUG_SPEC): Check for -g0.
32071
32072 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
32073
32074         * dwarf2out.c (dwarf2out_finish): Force output of comp_unit_die
32075         for -g3.
32076
32077 2009-02-12  Ben Elliston  <bje@au.ibm.com>
32078
32079         * config/rs6000/rs6000.md (allocate_stack): Use _stack form of
32080         patterns when updating the back chain.  Missed in the 2009-02-10
32081         change.
32082
32083 2009-02-11  Janis Johnson  <janis187@us.ibm.com>
32084
32085         * doc/extend.texi (Decimal Floating Types): Update identifier of
32086         draft TR and list of missing support.
32087
32088 2009-02-11  Jakub Jelinek  <jakub@redhat.com>
32089
32090         PR middle-end/39154
32091         * gimplify.c (omp_notice_variable): If adding GOVD_SEEN
32092         bit to variable length decl's flags, add it also to its
32093         pointer replacement variable.
32094
32095 2009-02-11  Uros Bizjak  <ubizjak@gmail.com>
32096             Jakub Jelinek  <jakub@redhat.com>
32097
32098         PR target/39118
32099         * config/i386/i386.md (UNSPEC_MEMORY_BLOCKAGE): New constant.
32100         (memory_blockage): New expander.
32101         (*memory_blockage): New insn pattern.
32102         * config/i386/i386.c (ix86_expand_prologue): Use memory_blockage
32103         instead of general blockage at the end of function prologue when
32104         frame pointer is used to access red zone area.  Do not emit blockage
32105         when profiling, it is emitted in generic code.
32106         (ix86_expand_epilogue): Emit memory_blockage at the beginning of
32107         function epilogue when frame pointer is used to access red zone area.
32108
32109 2009-02-11  Paolo Bonzini  <bonzini@gnu.org>
32110
32111         PR target/38824
32112         * config/i386/i386.md: Add two new peephole2 to avoid mov followed
32113         by arithmetic with memory operands.
32114         * config/i386/predicates.md (commutative_operator): New.
32115
32116 2009-02-10  Janis Johnson  <janis187@us.ibm.com>
32117
32118         * doc/extend.texi (Fixed-Point Types): Break long paragraphs into
32119         bulleted lists.
32120
32121 2009-02-10  Eric Botcazou  <ebotcazou@adacore.com>
32122
32123         * alias.h (record_alias_subset): Declare.
32124         * alias.c (record_alias_subset): Make global.
32125
32126 2009-02-10  Nick Clifton  <nickc@redhat.com>
32127
32128         * tree-parloops.c: Change license to GPLv3.
32129         * ipa-struct-reorg.c: Change license to GPLv3.
32130         * ipa-struct-reorg.h: Change license to GPLv3.
32131
32132 2009-02-10  Steve Ellcey  <sje@cup.hp.com>
32133
32134         PR c/39084
32135         * c-decl.c (start_struct): Return NULL on error.
32136
32137 2009-02-10  Jakub Jelinek  <jakub@redhat.com>
32138
32139         PR middle-end/39124
32140         * cfgloopmanip.c (remove_path): Call remove_bbs after
32141         cancel_loop_tree, not before it.
32142
32143         PR target/39139
32144         * function.h (struct function): Add has_local_explicit_reg_vars bit.
32145         * gimplify.c (gimplify_bind_expr): Set it if local DECL_HARD_REGISTER
32146         VAR_DECLs were seen.
32147         * tree-ssa-live.c (remove_unused_locals): Recompute
32148         cfun->has_local_explicit_reg_vars.
32149         * tree-ssa-sink.c (statement_sink_location): Don't sink BLKmode
32150         copies or clearings if cfun->has_local_explicit_reg_vars.
32151
32152 2009-02-10  Uros Bizjak  <ubizjak@gmail.com>
32153
32154         PR target/39118
32155         * config/i386/i386.c (expand_prologue): Emit blockage at the end
32156         of function prologue when frame pointer is used to access
32157         red zone area.
32158
32159 2009-02-10  Richard Guenther  <rguenther@suse.de>
32160
32161         PR middle-end/39127
32162         * gimplify.c (gimple_regimplify_operands): Always look if
32163         we need to create a temporary.
32164
32165 2009-02-10  Richard Guenther  <rguenther@suse.de>
32166
32167         PR tree-optimization/39132
32168         * tree-loop-distribution.c (todo): New global var.
32169         (generate_memset_zero): Trigger TODO_rebuild_alias.
32170         (tree_loop_distribution): Return todo.
32171
32172 2009-02-10  H.J. Lu  <hongjiu.lu@intel.com>
32173
32174         PR target/39119
32175         * config/i386/i386.c (x86_64_reg_class): Remove X86_64_AVX_CLASS.
32176         (x86_64_reg_class_name): Removed.
32177         (classify_argument): Return 0 if bytes > 32.  Return 0 if the
32178         first one isn't X86_64_SSE_CLASS or any other ones aren't
32179         X86_64_SSEUP_CLASS when size > 16bytes.  Don't turn
32180         X86_64_SSEUP_CLASS into X86_64_SSE_CLASS if the preceded one
32181         is X86_64_SSEUP_CLASS.  Set AVX modes to 1 X86_64_SSE_CLASS
32182         and 3 X86_64_SSEUP_CLASS.
32183         (construct_container): Remove X86_64_AVX_CLASS.  Handle 4
32184         registers with 1 X86_64_SSE_CLASS and 3 X86_64_SSEUP_CLASS.
32185
32186 2009-02-10  Ben Elliston  <bje@au.ibm.com>
32187
32188         * config/rs6000/rs6000.md (allocate_stack): Always use an update
32189         form instruction to update the stack back chain word, even if the
32190         user has disabled the generation of update instructions.
32191         (movdi_<mode>_update_stack): New.
32192         (movsi_update_stack): Likewise.
32193         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Likewise,
32194         always use an update form instruction to update the stack back
32195         chain word.
32196
32197 2009-02-09  Sebastian Pop  <sebastian.pop@amd.com>
32198
32199         PR middle-end/38953
32200         * graphite.c (if_region_set_false_region): After moving a region in
32201         the false branch of a condition, remove the empty dummy basic block.
32202         (gloog): Remove wrong fix for PR38953.
32203
32204 2009-02-09  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
32205
32206         * config/spu/spu.c (array_to_constant): Fix (latent) wrong-code
32207         generation due to implicit sign extension.
32208
32209 2009-02-09  Eric Botcazou  <ebotcazou@adacore.com>
32210
32211         PR middle-end/38981
32212         * tree-ssa-coalesce.c (add_coalesce): Cap the costs of coalesce pairs
32213         at MUST_COALESCE_COST-1 instead of MUST_COALESCE_COST.
32214
32215 2009-02-09  Richard Guenther  <rguenther@suse.de>
32216
32217         PR middle-end/35202
32218         * convert.c (convert_to_real): Disable (float)fn((double)x)
32219         to fnf(x) conversion if errno differences may occur and
32220         -fmath-errno is set.
32221
32222 2009-02-07  Anatoly Sokolov  <aesok@post.ru>
32223
32224         * config/avr/avr.c (avr_mcu_t): Add ata6289 device.
32225         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
32226         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
32227
32228 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
32229
32230         PR c/35434
32231         * c-common.c (handle_alias_attribute): Disallow attribute for
32232         anything not a FUNCTION_DECL or VAR_DECL.
32233
32234 2009-02-06  Janis Johnson  <janis187@us.ibm.com>
32235
32236         PR c/39035
32237         * real.c (do_compare): Special-case compare of zero against
32238         decimal float value.
32239
32240 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
32241
32242         PR c/36432
32243         * c-decl.c (grokdeclarator): Don't treat [] declarators in fields
32244         as indicating flexible array members unless the field itself is
32245         being declarared as the incomplete array.
32246
32247 2009-02-06  Jan Hubicka  <jh@suse.cz>
32248
32249         PR tree-optimization/38844
32250         * ipa-inline.c (try_inline): Stop inlining recursion when edge
32251         is already inlined.
32252
32253 2009-02-06  Richard Guenther  <rguenther@suse.de>
32254
32255         PR middle-end/38977
32256         * tree-cfg.c (need_fake_edge_p): Force a fake edge for
32257         fork because we may expand it as __gcov_fork.
32258
32259 2009-02-06  Nick Clifton  <nickc@redhat.com>
32260
32261         * config/m32c/m32c.h (PCC_BITFIELD_TYPE_MATTERS): Define to zero.
32262
32263 2009-02-06  Paolo Bonzini  <bonzini@gnu.org>
32264
32265         PR tree-optimization/35659
32266         * tree-ssa-sccvn.c (vn_constant_eq, vn_reference_eq, vn_nary_op_eq
32267         vn_phi_eq): Shortcut if hashcode does not match.
32268         (vn_reference_op_compute_hash): Do not call iterative_hash_expr for
32269         NULL operands.
32270         * tree-ssa-pre.c (pre_expr_hash): Look at hashcode if available,
32271         and avoid iterative_hash_expr.
32272         (FOR_EACH_VALUE_ID_IN_SET): New.
32273         (value_id_compare): Remove.
32274         (sorted_array_from_bitmap_set): Use FOR_EACH_VALUE_ID_IN_SET to
32275         sort expressions by value id.
32276
32277 2009-02-05  Kaz Kojima  <kkojima@gcc.gnu.org>
32278
32279         PR target/38991
32280         * config/sh/predicates.md (general_movsrc_operand): Don't check
32281         the subreg of system registers here.
32282
32283 2009-02-05  Jakub Jelinek  <jakub@redhat.com>
32284
32285         PR c++/39106
32286         * cgraphunit.c (cgraph_function_versioning): Clear also DECL_VIRTUAL_P
32287         on the copied decl.
32288
32289 2009-02-05  Paolo Bonzini  <bonzini@gnu.org>
32290
32291         PR rtl-optimization/39110
32292         * rtlanal.c (rtx_addr_can_trap_p_1): Shortcut unaligned
32293         addresses, not aligned ones.
32294
32295 2009-02-05  Daniel Berlin  <dberlin@dberlin.org>
32296             Richard Guenther  <rguenther@suse.de>
32297
32298         PR tree-optimization/39100
32299         * tree-ssa-structalias.c (do_ds_constraint): Actually do what the
32300         comment says and add edges.
32301
32302 2009-02-05  Joseph Myers  <joseph@codesourcery.com>
32303
32304         PR c/35435
32305         * c-common.c (handle_tls_model_attribute): Ignore attribute for
32306         non-VAR_DECLs without checking DECL_THREAD_LOCAL_P.
32307
32308 2009-02-04  Tobias Grosser  <grosser@fim.uni-passau.de>
32309
32310         * graphite.c (bb_in_sese_p, sese_build_livein_liveouts_use,
32311         sese_build_livein_liveouts_bb, sese_build_livein_liveouts,
32312         register_bb_in_sese, new_sese, free_sese): Moved.
32313         (dot_scop_1, build_scop_loop_nests, build_loop_iteration_domains,
32314         outermost_loop_in_scop, build_scop_iteration_domain,
32315         expand_scalar_variables_ssa_name, get_vdef_before_scop,
32316         limit_scops): Use bb_in_sese_p instead of bb_in_scop_p.
32317         Use loop_in_sese_p instead of loop_in_scop_p.
32318         (new_graphite_bb, gloog): Do not initialize SCOP_BBS_B.
32319         (new_scop, free_scop): Remove SCOP_LOOP2CLOOG_LOOP and SCOP_BBS_B.
32320         (scopdet_basic_block_info): Fix bug in scop detection.
32321         (new_loop_to_cloog_loop_str, hash_loop_to_cloog_loop,
32322         eq_loop_to_cloog_loop): Remove.
32323         (nb_loops_around_loop_in_scop, nb_loop
32324         ref_nb_loops): Moved here...
32325         * graphite.h (ref_nb_loops): ... from here.
32326         (struct scop): Remove bbs_b bitmap and loop2cloog_loop.
32327         (loop_domain_dim, loop_iteration_vector_dim): Remove.
32328         (SCOP_BBS_B, bb_in_scop_p, loop_in_scop_p): Removed.
32329
32330 2009-02-04  Paolo Bonzini  <bonzini@gnu.org>
32331             Hans-Peter Nilsson  <hp@axis.com>
32332
32333         PR rtl-optimization/37889
32334         * rtlanal.c (rtx_addr_can_trap_p_1): Add offset and size arguments.
32335         Move offset handling from PLUS to before the switch.  Use new
32336         arguments when considering SYMBOL_REFs too.
32337         (rtx_addr_can_trap_p): Pass dummy offset and size.
32338         (enum may_trap_p_flags): Remove.
32339         (may_trap_p_1): Pass size from MEM_SIZE.
32340
32341         PR rtl-optimization/38921
32342         * loop-invariant.c (find_invariant_insn): Use may_trap_or_fault_p.
32343         * rtl.h (may_trap_after_code_motion_p): Delete prototype.
32344         * rtlanal.c (may_trap_after_code_motion_p): Delete.
32345         (may_trap_p, may_trap_or_fault_p): Pass 0/1 as flags.
32346
32347 2009-02-04  H.J. Lu  <hongjiu.lu@intel.com>
32348
32349         AVX Programming Reference (January, 2009)
32350         * config/i386/sse.md (*vpclmulqdq): New.
32351
32352 2009-02-04  Jakub Jelinek  <jakub@redhat.com>
32353
32354         PR tree-optimization/38977
32355         PR gcov-profile/38292
32356         * calls.c (special_function_p): Disregard __builtin_ prefix.
32357
32358 2009-02-04  Hariharan Sandanagobalane  <hariharan@picochip.com>
32359
32360         * config/picochip/picochip.c (GO_IF_LEGITIMATE_ADDRESS): Disallow
32361         non-indexable addresses even before reload.
32362
32363 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
32364
32365         PR c/29129
32366         * c-decl.c (grokdeclarator): Mark [*] arrays in field declarators
32367         as having variable size.  Do not give an error for unnamed
32368         parameters with [*] declarators.  Give a warning for type names
32369         with [*] declarators and mark them as variable size.
32370         * c-parser.c (c_parser_sizeof_expression): Do not give an error
32371         for sizeof applied to [*] type names.
32372
32373 2009-02-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
32374
32375         PR C++/36607
32376         * convert.c (convert_to_integer): Treat OFFSET_TYPE like INTEGER_TYPE.
32377
32378 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
32379
32380         * gcc.c (process_command): Update copyright notice dates.
32381         * gcov.c (print_version): Likewise.
32382         * gcov-dump.c (print_version): Likewise.
32383         * mips-tfile.c (main): Likewise.
32384         * mips-tdump.c (main): Likewise.
32385
32386 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
32387
32388         PR c/35433
32389         * c-typeck.c (composite_type): Set TYPE_SIZE and TYPE_SIZE_UNIT
32390         for composite type involving a zero-length array type.
32391
32392 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
32393
32394         PR target/35318
32395         * function.c (match_asm_constraints_1): Skip over
32396         initial optional % in the constraint.
32397
32398         PR inline-asm/39059
32399         * c-parser.c (c_parser_postfix_expression): If fixed point is not
32400         supported, don't accept FIXED_CSTs.
32401         * c-decl.c (finish_declspecs): Error if fixed point is not supported
32402         and _Sat is used without _Fract/_Accum.  Set specs->type to
32403         integer_type_node for cts_fract/cts_accum if fixed point is not
32404         supported.
32405
32406 2009-02-02  Catherine Moore  <clm@codesourcery.com>
32407
32408         * sde.h (SUBTARGET_ARM_SPEC): Don't assemble -fpic code as -mabicalls.
32409
32410 2009-02-02  Richard Sandiford  <rdsandiford@googlemail.com>
32411
32412         * config/mips/mips.h (FILE_HAS_64BIT_SYMBOLS): New macro.
32413         (ABI_HAS_64BIT_SYMBOLS): Use it.
32414         (DWARF2_ADDR_SIZE): Use it instead of ABI_HAS_64BIT_SYMBOLS.
32415
32416 2009-02-02  Paul Brook  <paul@codesourcery.com>
32417
32418         * config/arm/arm.md (arm_addsi3): Add r/r/k alternative.
32419
32420 2009-02-02  Jakub Jelinek  <jakub@redhat.com>
32421
32422         PR inline-asm/39058
32423         * recog.h (asm_operand_ok): Add constraints argument.
32424         * recog.c (asm_operand_ok): Likewise.  If it is set, for digits
32425         recurse on matching constraint.
32426         (check_asm_operands): Pass constraints as 3rd argument to
32427         asm_operand_ok.  Don't look up matching constraint here.
32428         * stmt.c (expand_asm_operands): Pass NULL as 3rd argument
32429         to asm_operand_ok.
32430
32431 2009-02-02  Ben Elliston  <bje@au.ibm.com>
32432
32433         * doc/tm.texi (Storage Layout): Fix TARGET_ALIGN_ANON_BITFIELD and
32434         TARGET_NARROW_VOLATILE_BITFIELD macro names.
32435
32436 2009-01-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
32437
32438         * doc/install.texi (hppa*-hp-hpux*): Update binutils and linker
32439         information.  Remove some obsolete information.  Reorganize.
32440
32441         * config/pa/fptr.c: Revert license to GPL 2.
32442         * config/pa/milli64.S: Likewise.
32443
32444 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
32445
32446         PR target/38904
32447         * mkmap-flat.awk (END):  Use pe_dll command-line arg to pass
32448         LIBRARY name in, instead of hard-coding it.
32449         * config.gcc (i[34567]86-*-pe | i[34567]86-*-cygwin*):  Add an
32450         extra target make frag to tmake_files according to EH model.
32451         (i[34567]86-*-mingw* | x86_64-*-mingw*):  Likewise.
32452         * config/i386/t-dw2-eh, config/i386/t-sjlj-eh:  Add new target
32453         frags that define makefile variable EH_MODEL appropriately.
32454         * config/i386/cygming.h (DWARF2_UNWIND_INFO):  Add comment.
32455         * config/i386/cygwin.h (LIBGCC_EH_EXTN):  Define to nothing or
32456         to "-sjlj" according to type of EH configured.
32457         (LIBGCC_SONAME):  Concatenate it to shared library base name.
32458         * config/i386/mingw32.h (LIBGCC_EH_EXTN):  Define to "_dw2" or
32459         to "_sjlj" according to type of EH configured.
32460         (LIBGCC_SONAME):  Concatenate it to shared library base name.
32461         * config/i386/t-cygming (SHLIB_SONAME):  Use EH_MODEL.
32462         (SHLIB_LINK):  Add missing semicolon to if-else construct.
32463         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
32464         string value of "pe_dll" command-line option.
32465         * config/i386/t-cygwin (SHLIB_EH_EXTENSION):  New helper.
32466         (SHLIB_SONAME):  Use it when overriding t-cygming default.
32467         (SHLIB_IMPLIB):  Override t-cygming default.
32468         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
32469         string value of "pe_dll" command-line option.
32470
32471 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
32472
32473         PR target/38952
32474         * config/i386/i386.c (ix86_builtin_setjmp_frame_value): New.
32475         (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Override default to point at it.
32476
32477 2009-01-31  Richard Guenther  <rguenther@suse.de>
32478
32479         PR tree-optimization/38937
32480         * tree-ssa-structalias.c (do_sd_constraint): Do not shortcut
32481         computing the transitive closure.
32482
32483 2009-01-30  Richard Guenther  <rguenther@suse.de>
32484
32485         PR tree-optimization/39041
32486         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
32487         Propagate variable indices only if the types match for this stmt.
32488
32489 2009-01-30  Jakub Jelinek  <jakub@redhat.com>
32490
32491         PR target/39013
32492         * c-decl.c (pop_scope): Set DECL_EXTERNAL for functions declared
32493         inline but never defined.
32494
32495 2009-01-30  Wolfgang Gellerich  <gellerich@de.ibm.com>
32496
32497         * config/s390/s390.md (*insv<mode>_reg_extimm): Removed.
32498         (*insv_h_di_reg_extimm): New insn.
32499         (*insv_l<mode>_reg_extimm): New insn.
32500
32501 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
32502
32503         * config/picochip/picochip.c (flag_conserve_stack): set
32504         PARAM_LARGE_STACK_FRAME and PARAM_STACK_FRAME_GROWTH to zero under
32505         fconserve-stack. Reduce call-overhead used by inliner.
32506
32507 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
32508
32509         PR/38157
32510         * common.opt (flag_conserve_stack): Initialised to zero.
32511
32512 2009-01-30  Kai Tietz  <kai.tietz@onevision.com>
32513
32514         PR/39002
32515         * config/i386/i386.c (ix86_can_use_return_insn_p): Check for nsseregs.
32516         (ix86_expand_epilogue): Take nsseregs in account to use proper restore
32517         method.
32518
32519 2009-01-29  H.J. Lu  <hongjiu.lu@intel.com>
32520
32521         * ira-color.c (allocno_reload_assign): Update comments.
32522         * regmove.c (regmove_optimize): Likewise.
32523
32524         * ra.h: Removed.
32525
32526 2009-01-29  Robert Millan  <rmh@aybabtu.com>
32527
32528         * config.gcc: Recognize GNU/kOpenSolaris (*-*-kopensolaris*-gnu).
32529         * config/i386/kopensolaris-gnu.h: New file.  Undefine
32530         `MD_UNWIND_SUPPORT'.
32531         * config/kopensolaris-gnu.h: New file (based on kfreebsd-gnu.h).
32532
32533 2009-01-29  Kazu Hirata  <kazu@codesourcery.com>
32534
32535         PR tree-optimization/39007
32536         * tree-loop-distribution.c (generate_builtin): Use
32537         recompute_dominator to compute the immediate dominator of the
32538         basic block just after the loop.
32539
32540 2009-01-29  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
32541
32542         * config/i386/sol2-10.h [!HAVE_AS_IX86_DIFF_SECT_DELTA]
32543         (ASM_OUTPUT_DWARF_PCREL): Define.
32544
32545 2009-01-29  Vladimir Makarov  <vmakarov@redhat.com>
32546
32547         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Modify description.
32548         * doc/passes.texi: Remove entries about regclass, local-alloc, and
32549         global.  Modify entries about regmove and IRA.
32550
32551         * ra-conflict.c: Remove the file.
32552
32553         * reload.c (push_reload, find_dummy_reload): Remove flag_ira.
32554
32555         * tree-pass.h (pass_local_alloc, pass_global_alloc): Remove.
32556         (pass_regclass_init): Rename to pass_reginfo_init.
32557
32558         * cfgloopanal.c (estimate_reg_pressure_cost): Remove flag_ira.
32559
32560         * toplev.h (flag_ira): Remove.
32561
32562         * caller-save.c (setup_save_areas): Remove flag_ira.
32563
32564         * ira-color.c (ira_reuse_stack_slot, ira_mark_new_stack_slot): Ditto.
32565
32566         * global.c: Remove the file.
32567
32568         * opts.c (decode_options): Remove flag_ira.
32569
32570         * hard-reg-set.h (losing_caller_save_reg_set): Remove.
32571
32572         * regmove.c: Modify file description.
32573         (find_use_as_address, try_auto_increment): Define them only if
32574         AUTO_INC_DEC is defined.
32575         (replacement_quality, replace_in_call_usage, fixup_match_1,
32576         stable_and_no_regs_but_for_p): Remove.
32577         (reg_set_in_bb): Make it static.
32578         (regmove_optimize): Remove flag_ira and code which worked for
32579         !flag_ira.
32580
32581         * local-alloc.c: Remove the file.
32582
32583         * common.opt (fira): Remove.
32584
32585         * ira.c: Include except.h.
32586         (eliminable_regset): Move from global.c.
32587         (mark_elimination): Ditto.  Remove flag_ira.
32588         (reg_renumber, struct equivalence, reg_equiv, equiv_mem,
32589         equiv_mem_modified, validate_equiv_mem_from_store,
32590         validate_equiv_mem, equiv_init_varies_p, equiv_init_movable_p,
32591         contains_replace_regs, memref_referenced_p, memref_used_between_p,
32592         no_equiv, recorded_label_ref): Move from local-alloc.c.
32593         (update_equiv_regs): Ditto.  Make it static.
32594         (print_insn_chain, print_insn_chains): Move it from global.c.
32595         (pseudo_for_reload_consideration_p): Ditto.  Remove flag_ira.
32596         (build_insn_chain): Ditto.  Make it static.
32597         (ra_init_live_subregs): Move from ra-conflict.c.  Make it static.
32598         Rename to init_live_subregs.
32599         (gate_ira): Remove flag_ira.
32600
32601         * regclass.c: Rename reginfo.c.  Change file description.
32602         (FORBIDDEN_INC_DEC_CLASSES): Remove.
32603         (reg_class_superclasses, forbidden_inc_dec_class, in_inc_dec): Remove.
32604         (init_reg_sets_1): Remove code for evaluation of
32605         reg_class_superclasses and losing_caller_save_reg_set.
32606         (init_regs): Remove init_reg_autoinc.
32607         (struct costs, costs, init_cost, ok_for_index_p_nonstrict,
32608         ok_for_base_p_nonstrict): Remove.
32609         (regclass_init): Rename to reginfo_init.  Don't initialize init_cost.
32610         (pass_regclass_init): Rename to pass_reginfo_init.  Modify
32611         corresponding entries.
32612         (dump_regclass, record_operand_costs, scan_one_insn,
32613         init_reg_autoinc, regclass, record_reg_classes, copy_cost,
32614         record_address_regs, auto_inc_dec_reg_p): Remove.
32615         (gt-regclass.h): Rename to gt-reginfo.h.
32616
32617         * rtl.h (dump_global_regs, retry_global_alloc,
32618         build_insn_chain, dump_local_alloc, update_equiv_regs): Remove.
32619
32620         * Makefile.in (RA_H): Remove.
32621         (OBJS-common): Remove global.o, local-alloc.o, and ra-conflict.o.
32622         Rename regclass.o to reginfo.o.
32623         (regclass.o): Rename to reginfo.o.  Rename gt-regclass.h to
32624         gt-reginfo.h.
32625         (global.o, local-alloc.o, ra-conflict.o): Remove entries.
32626         (GTFILES): Rename regclass.c to reginfo.c.
32627
32628         * passes.c (init_optimization_passes): Remove pass_local_alloc and
32629         pass_global_alloc.  Rename pass_regclass_init to pass_reginfo_init.
32630
32631         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
32632         count_spilled_pseudo, find_reg, alter_reg, delete_output_reload):
32633         Remove flag_ira.
32634         (finish_spills): Ditto.  Remove code for !flag_ira.
32635
32636 2009-01-29  Kenneth Zadeck  <zadeck@naturalbridge.com>
32637
32638         PR middle-end/35854
32639         * doc/invoke.texi (rtl debug options): Complete rewrite.
32640         * auto-inc-dec.c (pass_inc_dec): Rename pass from "auto-inc-dec"
32641         to auto_inc_dec".
32642         * mode-switching.c (pass_mode_switching): Rename pass from
32643         "mode-sw" to "mode_sw".
32644         * except.c (pass_convert_to_eh_ranges): Rename pass from
32645         "eh-ranges" to "eh_ranges".
32646         * lower-subreg.c (pass_lower_subreg): Renamed pass from "subreg"
32647         to "subreg1".
32648
32649
32650 2009-01-29  Andrey Belevantsev  <abel@ispras.ru>
32651             Alexander Monakov  <amonakov@ispras.ru>
32652
32653         PR middle-end/38857
32654         * sel-sched.c (count_occurrences_1): Check that *cur_rtx is a hard
32655         register.
32656         (move_exprs_to_boundary): Change return type and pass through
32657         should_move from move_op.  Relax assert.  Update usage ...
32658         (schedule_expr_on_boundary): ... here.  Use should_move instead of
32659         cant_move.
32660         (move_op_orig_expr_found): Indicate that insn was disconnected from
32661         stream.
32662         (code_motion_process_successors): Do not call after_merge_succs
32663         callback if original expression was not found when traversing any of
32664         the branches.
32665         (code_motion_path_driver): Change return type.  Update prototype.
32666         (move_op): Update comment.  Add a new parameter (should_move).  Update
32667         prototype.  Set *should_move based on indication provided by
32668         move_op_orig_expr_found.
32669
32670 2009-01-28  Pat Haugen  <pthaugen@us.ibm.com>
32671
32672         * doc/invoke.texi (avoid-indexed-addresses): Document new option.
32673         * config/rs6000/rs6000-protos.h (avoiding_indexed_address_p): Declare.
32674         * config/rs6000/rs6000.opt (avoid-indexed-addresses): New option.
32675         * config/rs6000/rs6000.c (rs6000_override_options): Default
32676         avoid-indexed-addresses on for Power6, off for everything else.
32677         (avoiding_indexed_address_p): New function.
32678         (rs6000_legitimize_address): Use it.
32679         (rs6000_legitimate_address): Likewise.
32680         * config/rs6000/rs6000.md (movXX_updateX): Likewise
32681
32682 2009-01-28  Kazu Hirata  <kazu@codesourcery.com>
32683
32684         PR tree-optimization/38997
32685         * tree-loop-distribution.c (generate_memset_zero): Use
32686         POINTER_PLUS_EXPR for a pointer addition.
32687
32688 2009-01-28  Andreas Krebbel  <krebbel1@de.ibm.com>
32689
32690         * config/s390/s390.md (bswap<mode>2): New pattern added.
32691
32692 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
32693
32694         * config/s390/s390.md (*tls_load_31): Added type attribute.
32695
32696 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
32697
32698         * config/s390/s390.md: Fix a few comments.
32699
32700 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
32701
32702         * config/s390/s390.md (*tmsi_reg): Fixed z10prop attribute.
32703         (*tm<mode>_full): Fixed z10prop attribute.
32704         (*tst<mode>_extimm): Fixed z10prop attribute.
32705         (*tst<mode>_cconly_extimm): Fixed z10prop attribute.
32706         (*tstqiCCT_cconly): Fixed z10prop attribute.
32707         (*cmpsi_ccu_zerohi_rlsi): Fixed z10prop attribute.
32708         (*movsi_larl): Fixed z10prop attribute.
32709         (*movsi_zarch): Fixed z10prop attribute.
32710         (*movsi_eas): Fixed z10prop attribute.
32711         (*movhi): Fixed z10prop attribute.
32712         (*movqi): Fixed z10prop attribute.
32713         (*movstrictqi): Fixed z10prop attribute.
32714         (*mov<mode>): Fixed z10prop attribute.
32715         (*movcc): Fixed z10prop attribute.
32716         (*sethighpartdi_64): Fixed z10prop attribute.
32717         (*zero_extendhi<mode>2_z10): Fixed z10prop attribute.
32718         (*negdi2_sign_cc): Fixed z10prop attribute.
32719         (*negdi2_sign): Fixed z10prop attribute.
32720         (*absdi2_sign_cc): Fixed z10prop attribute.
32721         (*absdi2_sign): Fixed z10prop attribute.
32722         (*negabsdi2_sign_cc): Fixed z10prop attribute.
32723         (*negabsdi2_sign): Fixed z10prop attribute.
32724         (*cmp_and_trap_signed_int<mode>): Fixed z10prop attribute.
32725         (*cmp_and_trap_unsigned_int<mode>): Fixed z10prop attribute.
32726         (doloop_si64): Fixed z10prop attribute.
32727         (doloop_si31): Fixed z10prop attribute.
32728         (doloop_long): Fixed z10prop attribute.
32729         (indirect_jump): Fixed z10prop attribute.
32730         (nop): Fixed z10prop attribute.
32731         (main_base_64): Fixed z10prop attribute.
32732         (reload_base_64): Fixed z10prop attribute.
32733
32734 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
32735
32736         PR rtl-optimization/38740
32737         * reorg.c (gate_handle_delay_slots): Avoid dbr scheduling
32738         if !optimize.
32739         * config/mips/mips.c (mips_reorg): Likewise.
32740
32741 2009-01-28  Richard Guenther  <rguenther@suse.de>
32742
32743         PR tree-optimization/38926
32744         * tree-ssa-pre.c (add_to_value): Assert we add only expressions
32745         with the correct value id to a value.
32746         (do_regular_insertion): Use the value number of edoubleprime
32747         for the value number of the expr.
32748
32749         Revert
32750         2008-08-21  Richard Guenther  <rguenther@suse.de>
32751
32752         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
32753         a PHI ask VN if it is already available.
32754         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
32755         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
32756
32757 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
32758
32759         PR middle-end/38934
32760         * tree-vrp.c (extract_range_from_assert): For LE_EXPR and LT_EXPR
32761         set to varying whenever max has TREE_OVERFLOW set, similarly
32762         for GE_EXPR and GT_EXPR and TREE_OVERFLOW min.
32763
32764 2009-01-28  Richard Guenther  <rguenther@suse.de>
32765
32766         PR middle-end/38908
32767         * tree-ssa.c (warn_uninitialized_var): Do not warn for seemingly
32768         uninitialized aggregate uses in call arguments.
32769
32770 2009-01-28  Paolo Bonzini  <bonzini@gnu.org>
32771
32772         PR tree-optimization/38984
32773         * tree-ssa-structalias.c (get_constraints_for_1): Do not use
32774         the nothing_id variable if -fno-delete-null-pointer-checks.
32775
32776 2009-01-28  Uros Bizjak  <ubizjak@gmail.com>
32777
32778         PR target/38988
32779         * config/i386/i386.md (set_rip_rex64): Wrap operand 1 in label_ref.
32780         (set_got_offset_rex64): Ditto.
32781
32782 2009-01-27  H.J. Lu  <hongjiu.lu@intel.com>
32783
32784         PR target/38941
32785         * doc/extend.texi: Improve local variable with asm reg.
32786
32787 2009-01-27  Adam Nemet  <anemet@caviumnetworks.com>
32788
32789         * c.opt (Wpacked-bitfield-compat): Change init value to -1.
32790         * c-opts.c (c_common_post_options): If -W*packed-bitfield-compat
32791         was not supplied then set warn_packed_bitfield_compat to the
32792         default value of 1.
32793         * stor-layout.c (place_field): Check warn_packed_bitfield_compat
32794         against 1.
32795
32796 2009-01-27  Richard Guenther  <rguenther@suse.de>
32797
32798         PR tree-optimization/38503
32799         * cfgexpand.c (expand_gimple_basic_block): Ignore
32800         GIMPLE_CHANGE_DYNAMIC_TYPE during expansion.
32801         * tree-ssa-structalias.c (set_uids_in_ptset): Do not prune
32802         variables that cannot have TBAA applied.
32803         (compute_points_to_sets): Do not remove GIMPLE_CHANGE_DYNAMIC_TYPE
32804         statements.
32805
32806 2009-01-27  Uros Bizjak  <ubizjak@gmail.com>
32807
32808         PR middle-end/38969
32809         * calls.c (initialize_argument_information): Do not wrap complex
32810         arguments in SAVE_EXPR.
32811
32812 2009-01-26  Andreas Tobler  <a.tobler@schweiz.org>
32813
32814         * config/t-vxworks (LIBGCC2_INCLUDES): Fix typo.
32815         (INSTALL_LIBGCC): Revert typo commit.
32816
32817 2009-01-26  Richard Guenther  <rguenther@suse.de>
32818
32819         PR tree-optimization/38745
32820         * tree-ssa-alias.c (update_alias_info_1): Exclude RESULT_DECL
32821         from special handling.
32822
32823 2009-01-26  Richard Guenther  <rguenther@suse.de>
32824
32825         PR tree-optimization/38745
32826         * tree-ssa.c (execute_update_addresses_taken): Do not include
32827         variables that cannot possibly be a register in not_reg_needs.
32828         Do not clear TREE_ADDRESSABLE on vars that may not become
32829         registers.
32830         * tree-ssa.c (update_alias_info_1): Include those in the set
32831         of addressable vars.
32832
32833 2009-01-26  Richard Guenther  <rguenther@suse.de>
32834
32835         PR middle-end/38851
32836         * Makefile.in (tree-ssa-dse.o): Add langhooks.h.
32837         * tree-ssa-dse.c: Include langhooks.h
32838         (execute_simple_dse): Remove stores with zero size.
32839
32840 2009-01-24  Jakub Jelinek  <jakub@redhat.com>
32841
32842         PR c/38957
32843         * c-typeck.c (c_finish_return): Handle POINTER_PLUS_EXPR the same way
32844         as PLUS_EXPR.
32845
32846 2009-01-24  Julian Brown  <julian@codesourcery.com>
32847
32848         * config/arm/t-linux-eabi (LIB2FUNCS_STATIC_EXTRA): Add
32849         config/arm/linux-atomic.c.
32850         * config/arm/linux-atomic.c: New.
32851
32852 2009-01-24  Eric Botcazou  <ebotcazou@adacore.com>
32853
32854         * config/sparc/linux.h (DBX_REGISTER_NUMBER): Delete.
32855         * config/sparc/linux64.h (DBX_REGISTER_NUMBER): Likewise.
32856         * config/sparc/sysv4.h (DBX_REGISTER_NUMBER): Likewise.
32857
32858 2009-01-24  H.J. Lu  <hongjiu.lu@intel.com>
32859
32860         PR c/38938
32861         * c-opts.c (c_common_handle_option): Update warn_pointer_sign
32862         properly.
32863
32864 2009-01-24  Sebastian Pop  <sebastian.pop@amd.com>
32865
32866         PR tree-optimization/38953
32867         * graphite.c (graphite_verify): Add a call to verify_loop_closed_ssa.
32868         (scop_adjust_phis_for_liveouts): Initialize false_i to zero.
32869         (gloog): Split the exit of the scop when the scop exit is a loop exit.
32870         (graphite_transform_loops): Only call cleanup_tree_cfg if gloog
32871         changed the CFG.
32872
32873 2009-01-24  Paul Brook  <paul@codesourcery.com>
32874
32875         * config/arm/neon.md (neon_type): Move to arm.md.
32876         (neon_mov<VSTRUCT>): Add neon_type attribute.
32877         * config/arm/arm.md (neon_type): Move to here.
32878         (conds): Add "unconditioal" and use as default for NEON insns.
32879
32880 2009-01-24  Ben Elliston  <bje@au.ibm.com>
32881
32882         * bitmap.h (BITMAP_FREE): Eliminate `implicit conversion from
32883         void *' warning from -Wc++-compat.
32884         * Makefile.in (dominance.o-warn): Remove.
32885
32886 2009-01-23  Paolo Bonzini  <bonzini@gnu.org>
32887
32888         PR tree-optimization/38932
32889         * fold-const.c (fold_unary_ignore_overflow): New.
32890         * tree.h (fold_unary_ignore_overflow): Declare.
32891         * tree-ssa-ccp.c (ccp_fold): Use fold_unary_ignore_overflow.
32892         * tree-ssa-sccvn.c (visit_reference_op_load,
32893         simplify_unary_expression): Likewise.
32894
32895 2009-01-22  Adam Nemet  <anemet@caviumnetworks.com>
32896
32897         * c-decl.c (finish_struct): Move code to set DECL_PACKED after
32898         DECL_BIT_FIELD is alreay known.  Also inherit packed for bitfields
32899         regardless of their type.
32900         * c-common.c (handle_packed_attribute): Don't ignore packed on
32901         bitfields.
32902         * c.opt (Wpacked-bitfield-compat): New warning option.
32903         * stor-layout.c (place_field): Warn if offset of a field changed.
32904         * doc/extend.texi (packed): Mention the ABI change.
32905         * doc/invoke.texi (-Wpacked-bitfield-compat): Document.
32906         (Warning Options): Add it to the list.
32907
32908 2009-01-22  H.J. Lu  <hongjiu.lu@intel.com>
32909
32910         * c-opts.c (c_common_post_options): Fix a typo in comments.
32911
32912 2009-01-22  Steve Ellcey  <sje@cup.hp.com>
32913
32914         PR middle-end/38615
32915         * gimplify.c (gimplify_init_constructor): Fix promotion of const
32916         variables to static.
32917         * doc/invoke.texi (-fmerge-all-constants): Update description.
32918
32919 2009-01-22  Uros Bizjak  <ubizjak@gmail.com>
32920
32921         PR target/38931
32922         * config/i386/i386.md (*movsi_1): Use type "mmx" for alternative 2.
32923         (*movdi_1_rex64): Use type "mmx" for alternative 5.
32924
32925 2009-01-22  Richard Earnshaw  <rearnsha@arm.com>
32926
32927         * arm.h (DATA_ALIGNMENT): Align structures, unions and arrays to
32928         a word boundary.
32929         (LOCAL_ALIGNMENT): Similarly.
32930
32931 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
32932             Joseph Myers  <joseph@codesourcery.com>
32933
32934         * config/arm/arm.c (all_architectures): Add iWMMXt2 entry.
32935         * config/arm/arm-cores.def: New ARM_CORE entry for iWMMXt2.
32936         * config/arm/arm-tune.md: Regenerate.
32937         * doc/invoke.texi (ARM Options): Document -mcpu=iwmmxt2 and
32938         -march=iwmmxt2.
32939
32940 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
32941
32942         * config/arm/bpabi.h (SUBTARGET_EXTRA_ASM_SPEC): Bump EABI
32943         version number to five.
32944
32945 2009-01-22  Dodji Seketeli  <dodji@redhat.com>
32946
32947         PR c++/38930
32948         * c-decl.c (clone_underlying_type): Revert PR c++/26693 changes.
32949         * c-common.c (set_underlying_type): Likewise.
32950         (is_typedef_decl ): Likewise
32951         * tree.h: Likewise
32952         (set_underlying_type): Likewise.
32953         (is_typedef_type): Likewise.
32954
32955 2009-01-21  Vladimir Makarov  <vmakarov@redhat.com>
32956
32957         PR middle-end/38587
32958         * ira-color.c (coalesce_spill_slots): Don't coalesce allocnos
32959         crossing setjmps.
32960
32961 2009-01-21  Dave Korn  <dave.korn.cygwin@gmail.com>
32962
32963         PR bootstrap/37660
32964         * config/i386/cygwin.h (SHARED_LIBGCC_SPEC):  New helper macro.
32965         (LIBGCC_SPEC):  Don't define.
32966         (REAL_LIBGCC_SPEC):  Define instead, using SHARED_LIBGCC_SPEC.
32967
32968 2009-01-21  Uros Bizjak  <ubizjak@gmail.com>
32969
32970         PR rtl-optimization/38879
32971         * alias.c (base_alias_check): Unaligned access via AND address can
32972         alias all surrounding object types except those with sizes equal
32973         or wider than the size of unaligned access.
32974
32975 2009-01-21  Dodji Seketeli  <dodji@redhat.com>
32976
32977         PR c++/26693
32978         * c-decl.c (clone_underlying_type): Move this ...
32979         * c-common.c (set_underlying_type): ... here.
32980         Also, make sure the function properly sets TYPE_STUB_DECL() on
32981         the newly created typedef variant type.
32982         (is_typedef_decl ): New entry point.
32983         * tree.h: Added a new member member_types_needing_access_check to
32984         struct tree_decl_non_common.
32985         (set_underlying_type): New entry point.
32986         (is_typedef_type): Likewise.
32987
32988 2009-01-21  Bingfeng Mei  <bmei@broadcom.com>
32989
32990         * alias.c (walk_mems_1, walk_mems_2, insn_alias_sets_conflict_p):
32991         Check whether two instructions have memory references that
32992         belong to conflicting alias sets.  walk_mems_1 and walk_mems_2
32993         are helper functions for traversing.
32994         * alias.h (insn_alias_sets_confilict_p): New prototypes.
32995         * ddg.c (add_inter_loop_mem_dep): Call insn_alias_sets_conflict_p
32996         not to draw dependency edge for instructions with non-conflicting
32997         alias sets.
32998
32999 2009-01-20  Joseph Myers  <joseph@codesourcery.com>
33000
33001         PR other/38758
33002         * longlong.h: Update copyright years.  Use soft-fp license notice.
33003         Sync __clz_tab declaration with glibc.
33004
33005 2009-01-20  Steve Ellcey  <sje@cup.hp.com>
33006
33007         PR target/30687
33008         * doc/extend.texi (syscall_linkage): New.
33009         (version_id): Modify.
33010
33011 2009-01-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
33012             Richard Guenther  <rguenther@suse.de>
33013
33014         PR tree-optimization/38747
33015         PR tree-optimization/38748
33016         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Disable the VCE
33017         conversion if the base address is an indirect reference and the
33018         aliasing sets could cause issues.
33019
33020 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
33021
33022         * common.opt (fgraphite, fgraphite-identity): Add comment for
33023         explaining why these options are not documented.
33024
33025 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
33026
33027         * graphite.c (stmt_simple_for_scop_p): Also handle cases when
33028         gimple_call_lhs is NULL.
33029
33030 2009-01-20  Paolo Bonzini  <bonzini@gnu.org>
33031
33032         PR target/38868
33033         * emit-rtl.c (adjust_address_1): Make sure memref is never
33034         overwritten.
33035
33036 2009-01-20  Ben Elliston  <bje@au.ibm.com>
33037
33038         * libgcov.c (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
33039         const qualifier from arg parameter. Remove unnecessary cast to char *.
33040         * gcov-io.h (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
33041         const qualifier from arg 2.
33042
33043 2009-01-19  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
33044
33045         * config/darwin.h: Add static-libgfortran to LINK_SPEC.
33046
33047 2009-01-19  Vladimir Makarov  <vmakarov@redhat.com>
33048
33049         PR c/38869
33050         * rtl.h (reinit_regs): New prototype.
33051         * regclass.c: Include ira.h.
33052         (reinit_regs): New.
33053         * Makefile.in (regclass.o): Add ira.h.
33054         * config/i386/i386.c (ix86_maybe_switch_abi): Use reinit_regs.
33055
33056 2009-01-18  H.J. Lu  <hongjiu.lu@intel.com>
33057
33058         PR target/38736
33059         * c-common.c (handle_aligned_attribute): Use
33060         ATTRIBUTE_ALIGNED_VALUE instead of BIGGEST_ALIGNMENT for
33061         default alignment value.
33062
33063         * c-cppbuiltin.c (c_cpp_builtins): Define __BIGGEST_ALIGNMENT__.
33064
33065         * defaults.h (ATTRIBUTE_ALIGNED_VALUE): New.
33066         * config/i386/i386.h (ATTRIBUTE_ALIGNED_VALUE): Likewise.
33067
33068         * doc/extend.texi: Update __attribute__ ((aligned)).  Document
33069         __BIGGEST_ALIGNMENT__.
33070
33071         * doc/tm.texi: Document ATTRIBUTE_ALIGNED_VALUE.
33072
33073 2009-01-18  Richard Guenther  <rguenther@suse.de>
33074
33075         PR tree-optimization/38819
33076         * tree-flow.h (operation_could_trap_helper_p): Declare.
33077         * tree-eh.c (operation_could_trap_helper_p): Export.
33078         * tree-ssa-sccvn.h (vn_nary_may_trap): Declare.
33079         * tree-ssa-sccvn.c (vn_nary_may_trap): New function.
33080         * tree-ssa-pre.c (insert_into_preds_of_block): Check if we
33081         are about to insert a possibly trapping instruction and fail
33082         in this case.
33083
33084 2009-01-18  Andreas Schwab  <schwab@suse.de>
33085
33086         * doc/install.texi (Configuration): Remove obsolete paragraph
33087         about use of --with-gnu-ld with --with-gnu-as.
33088
33089 2009-01-18  Kazu Hirata  <kazu@codesourcery.com>
33090
33091         * doc/extend.texi, doc/gimple.texi, doc/invoke.texi,
33092         doc/md.texi, doc/sourcebuild.texi, doc/tm.texi: Fix typos.
33093         Follow spelling conventions.
33094
33095 2009-01-18  Ben Elliston  <bje@au.ibm.com>
33096
33097         * bitmap.c (bitmap_obstack_alloc_stat): Adjust cast to eliminate
33098         C++ warning about implicit conversion from void * to struct
33099         bitmap_head_def *.
33100         (bitmap_obstack_free): Likewise for bitmap_element *.
33101         * Makefile.in (bitmap.o-warn): Remove.
33102
33103 2009-01-17  Dave Korn  <dave.korn.cygwin@gmail.com>
33104
33105         * Makefile.in (BACKENDLIBS):  Reorder to match dependencies.
33106
33107 2009-01-17  Sebastian Pop  <sebastian.pop@amd.com>
33108             Tobias Grosser  <tobi.grosser@amd.com>
33109
33110         * graphite.c (graphite_trans_scop_block): Do not block single
33111         nested loops.
33112
33113 2009-01-16  Alexandre Oliva  <aoliva@redhat.com>
33114
33115         * ebitmap.h (ebitmap_iter_init): Initialize all fields.
33116         * ipa-struct-reorg.c (gen_struct_type): Replace known-true
33117         test with assertion.
33118
33119 2009-01-16  Richard Guenther  <rguenther@suse.de>
33120
33121         PR tree-optimization/38835
33122         PR middle-end/36227
33123         * fold-const.c (fold_binary): Remove PTR + INT -> (INT)(PTR p+ INT)
33124         and INT + PTR -> (INT)(PTR p+ INT) folding.
33125         * tree-ssa-address.c (create_mem_ref): Properly use POINTER_PLUS_EXPR.
33126
33127 2009-01-16  Adam Nemet  <anemet@caviumnetworks.com>
33128
33129         PR target/38554
33130         * expmed.c (expand_shift): With SHIFT_COUNT_TRUNCATED, don't lift
33131         the subreg from a lowpart subreg if it is also casting the value.
33132
33133 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
33134             Tobias Grosser  <tobi.grosser@amd.com>
33135
33136         * graphite.c (compare_prefix_loops): New.
33137         (build_scop_canonical_schedules): Rewritten.
33138         (graphite_transform_loops): Move build_scop_canonical_schedules
33139         after build_scop_iteration_domain.
33140
33141 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
33142             Tobias Grosser  <tobi.grosser@amd.com>
33143
33144         * graphite.c (add_conditions_to_domain): Add the loops to
33145         the dimension of the iteration domain.  Do copy the domain
33146         only when it exists.
33147         (build_scop_conditions_1): Do not call add_conditions_to_domain.
33148         (add_conditions_to_constraints): New.
33149         (can_generate_code_stmt, can_generate_code): Removed.
33150         (gloog): Do not call can_generate_code.
33151         (graphite_transform_loops): Call add_conditions_to_constraints
33152         after building the iteration domain.
33153
33154 2009-01-16  Jakub Jelinek  <jakub@redhat.com>
33155
33156         PR tree-optimization/38789
33157         * tree-ssa-threadedge.c
33158         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
33159         __builtin_constant_p.
33160
33161 2009-01-16  Kenneth Zadeck  <zadeck@naturalbridge.com>
33162
33163         * dce.c (delete_unmarked_insns): Reversed the order that insns are
33164         examined before deleting them.
33165
33166 2009-01-16  Richard Earnshaw  <rearnsha@arm.com>
33167
33168         * function.c (aggregate_value_p): Correctly extract the function
33169         type from CALL_EXPR_FN lookup.
33170
33171 2009-01-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
33172
33173         * config/picochip/picochip.c (picochip_override_options): Revert
33174         CFI asm flag disable commited previously.
33175
33176 2009-01-15  Sebastian Pop  <sebastian.pop@amd.com>
33177             Tobias Grosser  <tobi.grosser@amd.com>
33178             Jan Sjodin  <jan.sjodin@amd.com>
33179
33180         * graphite.c (scan_tree_for_params): On substractions negate
33181         all the coefficients of the term.
33182         (clast_to_gcc_expression_red): New.  Handle reduction expressions
33183         of more than two operands.
33184         (clast_to_gcc_expression): Call clast_to_gcc_expression_red.
33185         (get_vdef_before_scop): Handle also the case of default definitions.
33186
33187 2009-01-15  Richard Sandiford  <rdsandiford@googlemail.com>
33188
33189         * caller-save.c (add_used_regs_1, add_used_regs): New functions.
33190         (insert_one_insn): Use them instead of REG_DEAD and REG_INC notes.
33191         Also use them when walking CALL_INSN_FUNCTION_USAGE.
33192
33193 2009-01-15  H.J. Lu  <hongjiu.lu@intel.com>
33194             Joey Ye  <joey.ye@intel.com>
33195
33196         PR middle-end/37843
33197         * cfgexpand.c (expand_stack_alignment): Don't update stack
33198         boundary nor check incoming stack boundary here.
33199         (gimple_expand_cfg): Update stack boundary and check incoming
33200         stack boundary here.
33201
33202 2009-01-15  Kenneth Zadeck  <zadeck@naturalbridge.com>
33203
33204         * dce.c (find_call_stack_args, delete_unmarked_insns): Fixed comments.
33205
33206 2009-01-14  Jakub Jelinek  <jakub@redhat.com>
33207
33208         PR rtl-optimization/38245
33209         * calls.c (expand_call): Add stack arguments to
33210         CALL_INSN_FUNCTION_USAGE even for pure calls (when
33211         ACCUMULATE_OUTGOING_ARGS) and even for args partially passed
33212         in regs and partially in memory or BLKmode arguments.
33213         (emit_library_call_value_1): Add stack arguments to
33214         CALL_INSN_FUNCTION_USAGE even for pure calls (when
33215         ACCUMULATE_OUTGOING_ARGS).
33216         * dce.c: Include tm_p.h.
33217         (find_call_stack_args): New function.
33218         (deletable_insn_p): Call it for CALL_P insns.  Add ARG_STORES
33219         argument.
33220         (mark_insn): Call find_call_stack_args for CALL_Ps.
33221         (prescan_insns_for_dce): Walk insns backwards in bb rather than
33222         forwards.  Allocate and free arg_stores bitmap if needed, pass it
33223         down to deletable_insn_p, don't mark stores set in arg_stores
33224         bitmap, clear the bitmap at the beginning of each bb.
33225         * Makefile.in (dce.o): Depend on $(TM_P_H).
33226
33227 2009-01-14  Michael Meissner  <gnu@the-meissners.org>
33228
33229         PR target/22599
33230         * config/i386/i386.c (print_operand): Add tests for 'D', 'C', 'F', 'f'
33231         to make sure the insn is a conditional test (bug 22599).  Reformat a
33232         few long lines.
33233
33234 2009-01-14  Sebastian Pop  <sebastian.pop@amd.com>
33235
33236         PR middle-end/38431
33237         * graphite.c (get_vdef_before_scop, scop_adjust_vphi): New.
33238         (scop_adjust_phis_for_liveouts): Call scop_adjust_vphi.
33239         (gloog): Do not call cleanup_tree_cfg.
33240         (graphite_transform_loops): Call cleanup_tree_cfg after all
33241         scops have been code generated.
33242
33243 2009-01-14  Basile Starynkevitch  <basile@starynkevitch.net>
33244         * doc/gty.texi (Invoking the garbage collector): Added new node
33245         and section documenting ggc_collect.
33246
33247 2009-01-14  Richard Guenther  <rguenther@suse.de>
33248
33249         PR tree-optimization/38826
33250         PR middle-end/38477
33251         * tree-ssa-structalias.c (emit_alias_warning): Emit the pointer
33252         initialization notes only if we actually emitted a warning.
33253         (intra_create_variable_infos): Add constraints for a result decl
33254         that is passed by hidden reference.
33255         (build_pred_graph): Mark all related variables non-direct on
33256         address-taking.
33257
33258 2009-01-14  Nick Clifton  <nickc@redhat.com>
33259
33260         * ira-conflicts.c: Include addresses.h for the definition of
33261         base_reg_class.
33262         (ira_build_conflicts): Use base_reg_class instead of BASE_REG_CLASS.
33263         * Makefile.in: Add a dependency of ira-conflicts.o on addresses.h.
33264
33265 2009-01-13  Vladimir Makarov  <vmakarov@redhat.com>
33266
33267         PR target/38811
33268         * Makefile.in (ira-lives.o): Add except.h.
33269
33270         * ira-lives.c: Include except.h.
33271         (process_bb_node_lives): Process can_throw_internal.
33272
33273 2009-01-13  Jakub Jelinek  <jakub@redhat.com>
33274
33275         PR rtl-optimization/38774
33276         * combine.c (simplify_set): When undoing cc_use change, don't do
33277         PUT_CODE on the newly created comparison, but instead put back the
33278         old comparison.
33279
33280 2009-01-13  Joseph Myers  <joseph@codesourcery.com>
33281
33282         * doc/invoke.texi (ARM Options): Update lists of -mcpu and -march
33283         values.  Remove duplicate arm8 entry.
33284
33285 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
33286
33287         PR tree-optimization/38786
33288         * graphite.c (expand_scalar_variables_ssa_name): New, outlined from
33289         the SSA_NAME case of expand_scalar_variables_expr.
33290         Set the type of an expression to the type of its assign statement.
33291         (expand_scalar_variables_expr): Also gather the scalar computation
33292         used to index the memory access.  Do not pass loop_p.
33293         Fix comment.  Stop recursion on tcc_constant or tcc_declaration.
33294         (expand_scalar_variables_stmt): Pass to expand_scalar_variables_expr
33295         the gimple_stmt_iterator where it inserts new code.
33296         Do not pass loop_p.
33297         (copy_bb_and_scalar_dependences): Do not pass loop_p.
33298         (translate_clast): Update call to copy_bb_and_scalar_dependences.
33299
33300 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
33301
33302         * graphite.h (debug_value): Removed.
33303         * graphite.c (debug_value): Removed.
33304
33305 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
33306
33307         * config/arm/arm.c (output_move_double): Don't synthesize thumb-2
33308         ldrd/strd with two 32-bit instructions.
33309
33310 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
33311
33312         * config/arm/arm.c (struct processors): Pass for speed down into
33313         cost helper functions.
33314         (const_ok_for_op): Handle COMPARE and inequality nodes.
33315         (arm_rtx_costs_1): Rewrite.
33316         (arm_size_rtx_costs): Update prototype.
33317         (arm_rtx_costs): Pass speed down to helper functions.
33318         (arm_slowmul_rtx_costs): Rework cost calculations.
33319         (arm_fastmul_rtx_costs, arm_xscale_rtx_costs): Likewise.
33320         (arm_9e_rtx_costs): Likewise.
33321
33322 2009-01-13  Uros Bizjak  <ubizjak@gmail.com>
33323
33324         * config/alpha/alpha.c (alpha_legitimate_address_p): Explicit
33325         relocations of local symbols wider than UNITS_PER_WORD are not valid.
33326         (alpha_legitimize_address): Do not split local symbols wider than
33327         UNITS_PER_WORD into HIGH/LO_SUM parts.
33328
33329 2009-01-13  Danny Smith  <dannysmith@users.sourceforge.net>
33330
33331         PR bootstrap/38580
33332         * gcc.c (process_command): Replace call to execvp with calls
33333         to pex_one and exit.
33334
33335 2009-01-03  Anatoly Sokolov  <aesok@post.ru>
33336
33337         PR target/29141
33338         * config/avr/t-avr (LIB1ASMFUNCS): Add _tablejump_elpm.
33339         * config/avr/libgcc.S (__do_global_ctors, __do_global_dtors): Add
33340         variant for devices with 3-byte PC.
33341         (__tablejump_elpm__): New.
33342
33343 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
33344
33345         PR c/32041
33346         * c-parser.c (c_parser_postfix_expression): Allow `->' in
33347         offsetof member-designator, handle it as `[0].'.
33348
33349 2009-01-12  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
33350
33351         * pa.c (pa_asm_output_mi_thunk): Use pc-relative branch to thunk
33352         function when not using named sections on targets with named sections
33353         if branch distance is less than 262132.
33354
33355 2009-01-12  Richard Earnshaw  <rearnsha@arm.com>
33356
33357         * combine.c (combine_instructions):  Recompute
33358         optimize_this_for_speed_p  for each BB in the main combine loop.
33359
33360 2009-01-12  Tomas Bily  <tbily@suse.cz>
33361
33362         PR middlend/38385
33363         * tree-loop-distribution.c (prop_phis): New function.
33364         (generate_builtin): Call prop_phis.
33365
33366 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
33367
33368         PR tree-optimization/38807
33369         * tree-ssa-reassoc.c (remove_visited_stmt_chain): Don't look at
33370         gimple_visited_p unless stmt is GIMPLE_ASSIGN.
33371
33372 2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
33373
33374         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
33375         subreg of op0 to the original op0.
33376
33377 2009-01-11  Laurent GUERBY  <laurent@guerby.net>
33378
33379         * doc/sourcebuild.texi (Source Tree): Move up intl and fixinc.
33380
33381 2009-01-11  Markus Schoepflin  <markus.schoepflin@comsoft.de>
33382
33383         PR debug/7055
33384         * mips-tfile.c (parse_def): Fix parsing of def strings
33385         starting with digits.
33386
33387 2009-01-10  Jakub Jelinek  <jakub@redhat.com>
33388
33389         PR target/38695
33390         * config/arm/arm.c (arm_is_long_call_p): Don't call
33391         arm_function_in_section_p if decl isn't a FUNCTION_DECL.
33392
33393 2009-01-09  Steven Bosscher  <steven@gcc.gnu.org>
33394
33395         * regrename.c (regrename_optimize): Fix dumping.
33396         (find_oldest_value_reg): Preserve REG_POINTER.
33397         (copy_hardreg_forward_1): Likewise.
33398
33399 2009-01-09  Diego Novillo  <dnovillo@google.com>
33400
33401         * gimple.h (struct gimple_statement_base) <uid>: Document
33402         the restrictions on its use.
33403         (gimple_uid): Tidy.
33404         (gimple_set_uid): Tidy.
33405
33406 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
33407
33408         * config/i386/i386.c (ix86_expand_movmem, ix86_expand_setmem): Add
33409         zero guard even if align_bytes != 0 and count is smaller than
33410         size_needed.
33411
33412 2009-01-09  Vladimir Makarov  <vmakarov@redhat.com>
33413
33414         PR rtl-optimization/38495
33415         * ira-emit.c (print_move_list, ira_debug_move_list): New functions.
33416         (add_range_and_copies_from_move_list): Print all added ranges.
33417         Add ranges to memory optimized destination.
33418
33419 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
33420
33421         PR target/38686
33422         PR target/38708
33423         * config/i386/i386.c (override_options): Reject
33424         -mstringop-strategy=rep_8byte with -m32.
33425         (ix86_expand_movmem): For size_needed == 1 set epilogue_size_needed
33426         to 1.  Do count comparison against epilogue_size_needed at compile
33427         time even when count_exp was constant forced into register.  For
33428         size_needed don't jump to epilogue, instead just avoid aligning
33429         and invoke the body algorithm.  If need_zero_guard, add zero guard
33430         even if count is non-zero, but smaller than size_needed + number of
33431         bytes that could be stored for alignment.
33432         (ix86_expand_setmem): For size_needed == 1 set epilogue_size_needed
33433         to 1.  If need_zero_guard, add zero guard even if count is non-zero,
33434         but smaller than size_needed + number of bytes that could be stored
33435         for alignment.  Compare size_needed with epilogue_size_needed instead
33436         of desired_align - align, don't adjust size_needed, pass
33437         epilogue_size_needed to the epilogue expanders.
33438
33439         PR c/35742
33440         * c-pretty-print.c (pp_c_expression): Handle GOTO_EXPR like BIND_EXPR.
33441
33442 2009-01-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
33443
33444         * pa.c (last_address): Change to unsigned.
33445         (update_total_code_bytes): Change argument to unsigned.  Don't
33446         check if insn addresses are set.
33447         (pa_output_function_epilogue): Set last_address to UINT_MAX if insn
33448         addresses are not set.
33449         (pa_asm_output_mi_thunk): Handle wrap when updating last_address.
33450
33451 2009-01-09  Nick Clifton  <nickc@redhat.com>
33452
33453         * config/sh/symbian.c: Replace uses of DECL_INLINE with
33454         DECL_DECLARED_INLINE_P.
33455
33456 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
33457
33458         PR middle-end/38347
33459         * dojump.c (do_jump_by_parts_zero_rtx): Use mode instead of
33460         GET_MODE (op0) in operand_subword_force calls.
33461
33462         PR middle-end/38771
33463         * fold-const.c (fold_unary): For COMPOUND_EXPR and COND_EXPR,
33464         fold_convert arg0 operands to TREE_TYPE (op0) first.
33465
33466 2009-01-08  Vladimir Makarov  <vmakarov@redhat.com>
33467
33468         * params.def (ira-max-conflict-table-size): Decrease default value
33469         to 1000.
33470
33471 2009-01-08  Jakub Jelinek  <jakub@redhat.com>
33472
33473         PR tree-optimization/37031
33474         * lambda-code.c (lambda_collect_parameters): Call pointer_set_destroy
33475         on parameter_set.
33476         (build_access_matrix): Reserve correct size for AM_MATRIX vector,
33477         allocate it using gc instead of heap, use VEC_quick_push instead of
33478         VEC_safe_push.
33479         * graphite.c (build_access_matrix): Allocate AM_MATRIX vector using gc
33480         instead of heap, use VEC_quick_push instead of VEC_safe_push.
33481         * tree-data-ref.h (struct access_matrix): Change matrix to gc
33482         allocated vector from heap allocated.
33483         * lambda.h: Add DEF_VEC_ALLOC_P for gc allocated lambda_vector.
33484         * tree-loop-linear.c (linear_transform_loops): Allocate nest
33485         vector only after perfect_loop_nest_depth call.
33486
33487 2009-01-08  Sebastian Pop  <sebastian.pop@amd.com>
33488             Jan Sjodin  <jan.sjodin@amd.com>
33489
33490         PR tree-optimization/38559
33491         * graphite.c (debug_value, copy_constraint,
33492         swap_constraint_variables, scale_constraint_variable, ): New.
33493         (get_lower_bound, get_upper_bound): Removed.
33494         (graphite_trans_bb_strip_mine): Clean up this code that works
33495         only for constant number of iterations.  Fully copy upper and
33496         lower bound constraints, not only the constant part of them.
33497         * graphite.h (debug_value): Declared.
33498
33499 2009-01-08  Ira Rosen  <irar@il.ibm.com>
33500
33501         PR tree-optimization/37194
33502         * tree-vect-transform.c (vect_estimate_min_profitable_iters):
33503         Don't add the cost of cost model guard in prologue to scalar
33504         outside cost in case of known number of iterations.
33505
33506 2009-01-07  Nathan Froyd  <froydnj@codesourcery.com>
33507             Alan Modra  <amodra@bigpond.net.au>
33508
33509         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check for
33510         non-word-aligned REG+CONST addressing.
33511
33512 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
33513
33514         PR target/38706
33515         * config/alpha/alpha.c (alpha_end_function): For TARGET_ABI_OSF, call
33516         free_after_compilation when outputting a thunk.
33517         (alpha_output_mi_thunk_osf): Assert that we are processing a thunk.
33518         Do not call free_after_compilation here.
33519
33520 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
33521
33522         * config/i386/i386.c (ix86_target_string): Use ARRAY_SIZE.
33523         (ix86_valid_target_attribute_inner_p): Ditto.
33524
33525 2009-01-07  Jan Sjodin  <jan.sjodin@amd.com>
33526
33527         PR tree-optimization/38492
33528         PR tree-optimization/38498
33529         * tree-check.c (operator_is_linear, scev_is_linear_expression): New.
33530         * tree-chrec.h (scev_is_linear_expression): Declared.
33531         * graphite.c (graphite_cannot_represent_loop_niter): New.
33532         (scopdet_basic_block_info): Call graphite_cannot_represent_loop_niter.
33533         (graphite_loop_normal_form): Use gcc_assert.
33534         (scan_tree_for_params): Use CASE_CONVERT.
33535         (phi_node_is_iv, bb_contains_non_iv_scalar_phi_nodes): New.
33536         (build_scop_conditions_1): Call bb_contains_non_iv_scalar_phi_nodes.
33537         Use gcc_assert.  Discard scops that contain unhandled cases.
33538         (build_scop_conditions): Return a boolean status for unhandled cases.
33539         (strip_mine_profitable_p): Print the loop number, not its depth.
33540         (is_interchange_valid): Pass the depth of the loop nest, don't
33541         recompute it wrongly.
33542         (graphite_trans_bb_block): Same.
33543         (graphite_trans_bb_block): Print tentative of loop blocking.
33544         (graphite_trans_scop_block): Do not print that the loop has been
33545         blocked.
33546         (graphite_transform_loops): Do not handle scops that contain condition
33547         scalar phi nodes.
33548
33549 2009-01-07  H.J. Lu  <hongjiu.lu@intel.com>
33550
33551         AVX Programming Reference (December, 2008)
33552         * config/i386/avxintrin.h (_mm256_stream_si256): New.
33553         (_mm256_stream_pd): Likewise.
33554         (_mm256_stream_ps): Likewise.
33555
33556         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVNTDQ256,
33557         IX86_BUILTIN_MOVNTPD256 and IX86_BUILTIN_MOVNTPS256.
33558         (ix86_special_builtin_type): Add VOID_FTYPE_PV4DI_V4DI.
33559         (bdesc_special_args): Add __builtin_ia32_movntdq256,
33560         __builtin_ia32_movntpd256 and __builtin_ia32_movntps256.
33561         (ix86_init_mmx_sse_builtins): Handle VOID_FTYPE_PV4DI_V4DI.
33562         (ix86_expand_special_args_builtin): Likewise.
33563
33564         * config/i386/sse.md (AVXMODEDI): New.
33565         (avx_movnt<mode>): Likewise.
33566         (avx_movnt<mode>): Likewise.
33567         (<sse>_movnt<mode>): Remove AVX support.
33568         (sse2_movntv2di): Likewise.
33569
33570 2009-01-07  Richard Guenther  <rguenther@suse.de>
33571
33572         PR middle-end/38751
33573         * fold-const.c (extract_muldiv): Remove obsolete comment.
33574         (fold_plusminus_mult_expr): Undo MINUS_EXPR
33575         to PLUS_EXPR canonicalization for the canonicalization.
33576
33577 2009-01-07  Gerald Pfeifer  <gerald@pfeifer.com>
33578
33579         * doc/install.texi (alpha*-dec-osf*): Remove note on 32-bit
33580         hosted cross-compilers generating less efficient code.
33581
33582 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
33583
33584         * function.h (rtl_data): Add a dbr_scheduled_p field.
33585         * reorg.c (dbr_schedule): Set it.
33586         (gate_handle_delay_slots): Check it.
33587         * config/mips/mips.c (mips_base_delayed_branch): Delete.
33588         (mips_reorg): Check flag_delayed_branch instead of
33589         mips_base_delayed_branch.
33590         (mips_override_options): Don't set mips_base_delayed_branch
33591         or flag_delayed_branch.
33592
33593 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
33594
33595         PR rtl-optimization/38426.
33596         * ira.c (ira): Set current_function_is_leaf earlier.
33597
33598 2009-01-06  Jakub Jelinek  <jakub@redhat.com>
33599
33600         PR rtl-optimization/38722
33601         * combine.c (try_combine): Don't modify PATTERN (i3) and notes
33602         too early, only set a flag and modify after last possible
33603         undo_all point.
33604
33605 2009-01-06  Janis Johnson  <janis187@us.ibm.com>
33606
33607         PR c/34252
33608         * ginclude/float.h: Rename DECnn_DEN to DECnn_SUBNORMAL_MIN.
33609         * real.c (decimal_single_format): Correct values of emin and emax.
33610         (decimal_double_format): Ditto.
33611         (decimal_quad_format): Ditto.
33612         * c-cppbuiltin.c (builtin_define_decimal_float_constants): Adjust
33613         computation of DECnn_MIN and DECnn_MAX for corrected values of
33614         emin and emax.  Define __DECnn_SUBNORMAL_MIN__ instead of
33615         __DECnn_MIN__, and adjust its computation for the corrected value
33616         of emin.
33617
33618 2009-01-06  Jan Hubicka  <jh@suse.cz>
33619
33620         PR target/38744
33621         * config/i386/i386.c (ix86_expand_call): Use ARRAY_SIZE.
33622
33623 2009-01-06  Gerald Pfeifer  <gerald@pfeifer.com>
33624
33625         * doc/contrib.texi (Contributors): Slightly adjust the end note.
33626         Add Robert Clark to the list of testers.
33627
33628 2009-01-06  Jan Hubicka  <jh@suse.cz>
33629             Kai Tietz  <kai.tietz@onevision.com>
33630
33631         * config/i386/i386.md (*msabi_syvabi): Add SSE regs clobbers.
33632         * config/i386/i386.c (ix86_expand_call): Add clobbers.
33633
33634 2009-01-06  Jan Hubicka  <jh@suse.cz>
33635             Kai Tietz  <kai.tietz@onevision.com>
33636
33637         * config/i386/i386.h (CONDITIONAL_CALL_USAGE): SSE regs are not used
33638         for w64 ABI.
33639         * config/i386/i386.c (struct ix86_frame): Add padding0 and nsseregs.
33640         (ix86_nsaved_regs): Count only general purpose regs.
33641         (ix86_nsaved_sseregs): New.
33642         (ix86_compute_frame_layout): Update nsseregs; set preferred alignment
33643         to 16 for w64; compute padding and size of sse reg save area.
33644         (ix86_emit_save_regs, ix86_emit_save_regs_using_mov): Save only
33645         general purpose regs.
33646         (ix86_emit_save_sse_regs_using_mov): New.
33647         (ix86_expand_prologue): Save SSE regs if needed.
33648         (ix86_emit_restore_regs_using_mov): Use only general purpose regs.
33649         (ix86_emit_restore_sse_regs_using_mov): New.
33650         (ix86_expand_epilogue): Save SSE regs if needed.
33651
33652 2009-01-06  Jan Hubicka  <jh@suse.cz>
33653             Kai Tietz  <kai.tietz@onevision.com>
33654
33655         * config/i386/i386.h (ACCUMULATE_OUTGOING_ARGS): Enable for MSABI
33656         * config/i386/i386.c (init_cumulative_args): Disallow calls of MSABI
33657         functions when accumulate outgoing args is off.
33658
33659 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
33660
33661         PR bootstrap/38742
33662         * ira-color.c (ira_reuse_stack_slot): Check ENABLE_IRA_CHECKING
33663         before using pseudos_have_intersected_live_ranges_p.
33664
33665         * ira-int.h (ira_assert): Always define.
33666
33667 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
33668
33669         AVX Programming Reference (December, 2008)
33670         * config/i386/avxintrin.h (_mm_permute2_pd): Removed.
33671         (_mm256_permute2_pd): Likewise.
33672         (_mm_permute2_ps): Likewise.
33673         (_mm256_permute2_ps): Likewise.
33674         * config/i386/i386.md (UNSPEC_VPERMIL2): Likewise.
33675         * config/i386/sse.md (avx_vpermil2<mode>3): Likewise.
33676
33677         * config/i386/i386.c (ix86_builtins): Remove
33678         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
33679         IX86_BUILTIN_VPERMIL2PD256 and IX86_BUILTIN_VPERMIL2PS256.
33680         (ix86_builtin_type): Remove V8SF_FTYPE_V8SF_V8SF_V8SI_INT,
33681         V4DF_FTYPE_V4DF_V4DF_V4DI_INT, V4SF_FTYPE_V4SF_V4SF_V4SI_INT
33682         and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
33683         (bdesc_args): Remove __builtin_ia32_vpermil2pd,
33684         __builtin_ia32_vpermil2ps, __builtin_ia32_vpermil2pd256 and
33685         __builtin_ia32_vpermil2ps256.
33686         (ix86_init_mmx_sse_builtins): Updated.
33687         (ix86_expand_args_builtin): Likewise.
33688
33689 2009-01-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
33690
33691         * pa.c (output_call): Relocate non-jump insns in the delay slot of
33692         long absolute calls when generating PA 2.0 code.
33693
33694 2009-01-05  Vladimir Makarov  <vmakarov@redhat.com>
33695
33696         PR rtl-optimization/38583
33697         * params.h (IRA_MAX_CONFLICT_TABLE_SIZE): New macro.
33698
33699         * params.def (ira-max-conflict-table-size): New.
33700
33701         * doc/invoke.texi (ira-max-conflict-table-size): Decribe.
33702
33703         * ira.h (ira_conflicts_p): New external definition.
33704
33705         * ira-conflicts.c (build_conflict_bit_table): Do not build too big
33706         table.  Report this.  Return result of building.
33707         (ira_build_conflicts): Use ira_conflicts_p.  Check result of
33708         building conflict table.
33709
33710         * ira-color.c (fast_allocation): Use num instead of ira_allocnos_num.
33711         (ira_color): Use ira_conflicts_p.
33712
33713         * global.c: Include ira.h.
33714         (pseudo_for_reload_consideration_p, build_insn_chain): Use
33715         ira_conflicts_p.
33716
33717         * Makefile.in (global.o): Add ira.h.
33718
33719         * ira-build.c (mark_all_loops_for_removal,
33720         propagate_some_info_from_allocno): New.
33721         (remove_unnecessary_allocnos): Call
33722         propagate_some_info_from_allocno.
33723         (remove_low_level_allocnos): New.
33724         (remove_unnecessary_regions): Add parameter.  Call
33725         mark_all_loops_for_removal and remove_low_level_allocnos.  Pass
33726         parameter to remove_unnecessary_regions.
33727         (ira_build): Remove all regions but root if the conflict table was
33728         not built.  Update conflict hard regs for allocnos crossing calls.
33729
33730         * ira.c (ira_conflicts_p): New global.
33731         (ira): Define and use ira_conflicts_p.
33732
33733         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
33734         count_spilled_pseudo, find_reg, alter_reg, finish_spills,
33735         emit_input_reload_insns, delete_output_reload): Use ira_conflicts_p.
33736
33737 2009-01-06  Ben Elliston  <bje@au.ibm.com>
33738
33739         * gengtype-lex.l (YY_NO_INPUT): Define.
33740
33741 2009-01-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
33742
33743         PR c/34911
33744         * c-common.c (handle_vector_size_attribute): Also reject
33745         BOOLEAN_TYPE types.
33746
33747 2009-01-05  Sebastian Pop  <sebastian.pop@amd.com>
33748
33749         PR tree-optimization/38492
33750         * graphite.c (rename_map_elt, debug_rename_elt,
33751         debug_rename_map_1, debug_rename_map, new_rename_map_elt,
33752         rename_map_elt_info, eq_rename_map_elts,
33753         get_new_name_from_old_name, bb_in_sese_p): Moved around.
33754         (sese_find_uses_to_rename_use): Renamed sese_build_livein_liveouts_use.
33755         (sese_find_uses_to_rename_bb): Renamed sese_build_livein_liveouts_bb.
33756         (sese_build_livein_liveouts): New.
33757         (new_sese, free_sese): New.
33758         (new_scop): Call new_sese.
33759         (free_scop): Call free_sese.
33760         (rename_variables_from_edge, rename_phis_end_scop): Removed.
33761         (register_old_new_names): Renamed register_old_and_new_names.
33762         (register_scop_liveout_renames, add_loop_exit_phis,
33763         insert_loop_close_phis, struct igp,
33764         default_liveout_before_guard, add_guard_exit_phis,
33765         insert_guard_phis, copy_renames): New.
33766         (translate_clast): Call insert_loop_close_phis and insert_guard_phis.
33767         (sese_add_exit_phis_edge): Renamed scop_add_exit_phis_edge.
33768         (rewrite_into_sese_closed_ssa): Renamed scop_insert_phis_for_liveouts.
33769         (scop_adjust_phis_for_liveouts): New.
33770         (gloog): Call scop_adjust_phis_for_liveouts.
33771
33772         * graphite.h (struct sese): Documented.  Added fields liveout,
33773         num_ver and livein.
33774         (SESE_LIVEOUT, SESE_LIVEIN, SESE_LIVEIN_VER, SESE_NUM_VER): New.
33775         (new_sese, free_sese, sese_build_livein_liveouts): Declared.
33776         (struct scop): Added field liveout_renames.
33777         (SCOP_LIVEOUT_RENAMES): New.
33778
33779 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
33780
33781         PR tree-optimization/38510
33782         * graphite.c (recompute_all_dominators): Call mark_irreducible_loops.
33783         (translate_clast): Call recompute_all_dominators before
33784         graphite_verify.
33785         (gloog): Call recompute_all_dominators before graphite_verify.
33786
33787 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
33788             Jan Sjodin  <jan.sjodin@amd.com>
33789
33790         PR tree-optimization/38500
33791         * graphite.c (create_sese_edges): Call fix_loop_structure after
33792         splitting blocks.
33793
33794 2009-01-05  Joel Sherrill  <joel.sherrill@oarcorp.com>
33795
33796         * config.gcc: Add m32r*-*-rtems*.
33797         * config/m32r/rtems.h: New file.
33798
33799 2009-01-05  Ben Elliston  <bje@au.ibm.com>
33800
33801         * Makefile.in (.po.gmo): Use mkinstalldirs, not test -d || mkdir.
33802         (.po.pox): Likewise.
33803         (po/gcc.pot): Likewise.
33804
33805 2009-01-04  David S. Miller  <davem@davemloft.net>
33806
33807         * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED_RTX): Delete.
33808         (STARTING_FRAME_OFFSET): Always set to zero.
33809
33810 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
33811
33812         * tree.def (LSHIFT_EXPR, RSHIFT_EXPR): Add commentary.
33813         * tree-cfg.c (verify_gimple_assign_binary): Allow shifts of
33814         fixed-point types, and vectors of the same.
33815
33816 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
33817
33818         * config/mips/sync.md (*mb_barrier): Rename to...
33819         (*memory_barrier): ...this.
33820
33821 2009-01-04  Jonathan Wakely  <jwakely.gcc@gmail.com>
33822
33823         * doc/extend.texi (Function Attributes): Move @cindex after @item
33824         for 'artificial' and 'flatten'. Fix grammar for 'externally_visible'
33825         and put in alphabetical order. Fix 'target' name and put in order.
33826         * doc/invoke.texi (-Wstrict-null-sentinel, -fipa-matrix-reorg): Fix
33827         typos.
33828
33829 2009-01-04  Uros Bizjak  <ubizjak@gmail.com>
33830
33831         * config/s390/s390.md (UNSPEC_MB): Rename from UNSPECV_MB.
33832         (memory_barrier): Expand as unspec instead of unspec_volatile.
33833         Remove mem:BLK from insn operands.  Use Pmode scratch register.
33834         (*memory_barrier): Define as unspec instead of unspec_volatile.
33835         Use (match_dup 0) as input operand.
33836
33837         * config/sparc/sparc.md (UNSPEC_MEMBAR): Rename from UNSPECV_MEMBAR.
33838         * config/sparc/sync.md (memory_barrier): Expand as unspec instead of
33839         unspec_volatile.  Remove mem:BLK from insn operands.  Use Pmode
33840         scratch register.  Remove operand 1.
33841         (*stbar): Define as unspec instead of unspec_volatile.
33842         Use (match_dup 0) as input operand, remove (const_int 8).
33843         (*membar): Define as unspec instead of unspec_volatile.
33844         Use (match_dup 0) as input operand, remove input operand 2.
33845
33846         * config/xtensa/xtensa.md (UNSPEC_MEMW): Rename from UNSPECV_MEMW.
33847         (memory_barrier): Expand as unspec instead of unspec_volatile.
33848         Remove mem:BLK from insn operands.  Use Pmode scratch register.
33849         (*memory_barrier): Define as unspec instead of unspec_volatile.
33850         Use (match_dup 0) as input operand.
33851
33852         * config/ia64/sync.md (memory_barrier): Redefine as expander pattern.
33853         Remove mem:BLK from insn operands.  Use Pmode scratch register.
33854         Set volatile flag on operand 0.
33855         (*memory_barrier): New insn pattern.
33856
33857         * config/rs6000/sync.md (memory_barrier): Remove mem:BLK from
33858         insn operands.
33859         (*memory_barrier): Use (match_dup 0) as input operand.
33860
33861         * config/mips/sync.md (memory_barrier): Redefine as expander pattern.
33862         Remove mem:BLK from insn operands.  Use Pmode scratch register.
33863         Set volatile flag on operand 0.
33864         (*mb_internal): New insn pattern.
33865
33866         * config/alpha/sync.md (*memory_barrier): Rename from *mb_internal.
33867
33868 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
33869
33870         PR middle-end/38586
33871         * function.c (struct temp_slot): Move to the section of the file
33872         that deals with temp slots.  Remove field 'address'.
33873         (temp_slot_address_table): New hash table of address -> temp slot.
33874         (struct temp_slot_address_entry): New struct, items for the table.
33875         (temp_slot_address_compute_hash, temp_slot_address_hash,
33876         temp_slot_address_eq, insert_temp_slot_address): Support functions
33877         for the new table.
33878         (find_temp_slot_from_address): Rewrite to use the new hash table.
33879         (remove_unused_temp_slot_addresses): Remove addresses of temp
33880         slots that have been made available.
33881         (remove_unused_temp_slot_addresses_1): Call-back for htab_traverse,
33882         worker function for remove_unused_temp_slot_addresses.
33883         (assign_stack_temp_for_type): Don't clear the temp slot address list.
33884         Add the temp slot address to the address -> temp slot map.
33885         (update_temp_slot_address): Update via insert_temp_slot_address.
33886         (free_temp_slots): Call remove_unused_temp_slot_addresses.
33887         (pop_temp_slots): Likewise.
33888         (init_temp_slots): Allocate the address -> temp slot map, or empty
33889         the map if it is already allocated.
33890         (prepare_function_start): Initialize temp slot processing.
33891
33892 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
33893
33894         PR middle-end/38584
33895         * cfgexpand.c (estimate_stack_frame_size): Simplify the estimate:
33896         Calculate the size of all stack vars assuming no packing of stack
33897         vars will happen, replacing a quadratic algorithm with a linear one.
33898
33899 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
33900
33901         PR target/38707
33902         * expmed.c (store_bit_field_1): Don't modify op0 if movstrict insn
33903         can't be used.
33904
33905 2009-01-03  Diego Novillo  <dnovillo@google.com>
33906
33907         * doc/contrib.texi: Update contributions.
33908
33909 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
33910
33911         PR c++/38705
33912         * builtins.c (fold_builtin_memory_op): Give up if either operand
33913         is volatile.  Set srctype or desttype to non-qualified version
33914         of the other type.
33915
33916         PR c/38700
33917         * builtins.c (fold_builtin_expect): Only check DECL_WEAK for VAR_DECLs
33918         and FUNCTION_DECLs.
33919
33920 2009-01-02  Kenneth Zadeck  <zadeck@naturalbridge.com>
33921
33922         PR rtl-optimization/35805
33923         * df-problems.c (df_lr_finalize): Add recursive call to resolve lr
33924         problem if fast dce is able to remove any instructions.
33925         * dce.c (dce_process_block): Fix dump message.
33926
33927 2009-01-02  Mark Mitchell  <mark@codesourcery.com>
33928
33929         PR 33649
33930         * tree-ssa-pre.c (compute_antic): Correct loop bounds.
33931
33932 2009-01-02  Jakub Jelinek  <jakub@redhat.com>
33933
33934         PR middle-end/38690
33935         * tree-flow.h (op_code_prio, op_prio): New prototypes.
33936         * tree-pretty-print.c (op_code_prio): New function.
33937         (op_prio): No longer static.  Use op_code_prio.
33938         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs):
33939         Use op_prio and op_code_prio to determine if () should be
33940         printed around operand(s) or not.
33941
33942         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs,
33943         dump_gimple_call, dump_gimple_switch, dump_gimple_cond,
33944         dump_gimple_label, dump_gimple_try, dump_symbols, dump_gimple_phi,
33945         dump_gimple_mem_ops, dump_bb_header, dump_bb_end, pp_cfg_jump): Use
33946         pp_character instead of pp_string for single letter printing.
33947
33948 2009-01-02  Richard Sandiford  <rdsandiford@googlemail.com>
33949
33950         * doc/extend.texi: Fix '#pragma GCC option' typo.
33951
33952 2009-01-02  Richard Guenther  <rguenther@suse.de>
33953
33954         * doc/install.texi (--enable-checking): Mention different
33955         default for stage1.
33956         (--enable-stage1-checking): Document.
33957
33958 2009-01-01  Andrew Pinski  <pinskia@gmail.com>
33959
33960         PR middle-end/30142
33961         * tree-cfg.c (verify_expr): Add INDIRECT_REF case.  Change MODIFY_EXPR
33962         case to be an error.
33963
33964 2009-01-02  Ben Elliston  <bje@au.ibm.com>
33965
33966         * config/fp-bit.h (pack_d): Constify argument.
33967         * config/fp-bit.c (makenan): Constify return type. Remove casts.
33968         (isnan): Constify argument.
33969         (isinf): Likewise.
33970         (iszero): Likewise.
33971         (pack_d): Likewise.
33972         (_fpadd_parts): Constify return type.
33973         (_fpmul_parts): Likewise.
33974         (_fpdiv_parts): Likewise.
33975
33976 2009-01-01  Jakub Jelinek  <jakub@redhat.com>
33977
33978         PR c/36489
33979         * c-typeck.c (add_pending_init): Add IMPLICIT argument.  Only
33980         warn about overwriting initializer with side-effects or
33981         -Woverride-init if !IMPLICIT.
33982         (output_init_element): Likewise.  Pass IMPLICIT down to
33983         add_pending_init.
33984         (process_init_element): Add IMPLICIT argument.  Pass it down
33985         to output_init_element.
33986         (push_init_element, pop_init_level, set_designator): Adjust
33987         process_init_element callers.
33988         (set_nonincremental_init, set_nonincremental_init_from_string):
33989         Adjust add_pending_init callers.
33990         (output_pending_init_elements): Adjust output_init_element callers.
33991         * c-tree.h (process_init_element): Adjust prototype.
33992         * c-parser.c (c_parser_initelt, c_parser_initval): Adjust
33993         process_init_element callers.
33994
33995 \f
33996 Copyright (C) 2009 Free Software Foundation, Inc.
33997
33998 Copying and distribution of this file, with or without modification,
33999 are permitted in any medium without royalty provided the copyright
34000 notice and this notice are preserved.