OSDN Git Service

bcccc3a2bf97c3a9eb600611f267a158a1603269
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-12-07  Richard Henderson  <rth@redhat.com>
2
3         PR rtl-opt/42269
4         * combine.c (setup_incoming_promotions): Improve the conditions
5         under which we respect the promotions applied.
6
7 2009-12-07  Eric Botcazou  <ebotcazou@adacore.com>
8
9         * config/sparc/linux.h (ASM_SPEC): Pass -K PIC if -findirect-dispatch.
10         * config/sparc/linux64.h (ASM_SPEC): Likewise.
11
12 2009-12-07  Richard Henderson  <rth@redhat.com>
13
14         PR debug/42299
15         PR debug/42166
16         * tree-ssa.c (insert_debug_temp_for_var_def): Skip propagation
17         for ssa names already registered for update.
18
19 2009-12-07  Jakub Jelinek  <jakub@redhat.com>
20
21         PR debug/42244
22         * ddg.c (add_inter_loop_mem_dep): Use ANTI_DEP if from or to
23         is a DEBUG_INSN.
24
25 2009-12-07  Sebastian Pop  <sebastian.pop@amd.com>
26
27         * config/i386/driver-i386.c (host_detect_local_cpu): Add -mlwp to the
28         options when bit_LWP is set.
29
30 2009-12-07  Sebastian Pop  <sebastian.pop@amd.com>
31
32         * config/i386/cpuid.h (bit_ABM): New.
33         * config/i386/driver-i386.c (host_detect_local_cpu): Add -mabm to the
34         options when bit_ABM is set.
35
36 2009-12-07  Jakub Jelinek  <jakub@redhat.com>
37
38         * config/i386/i386.c (bdesc_special_args): Move __builtin_clzs from
39         this array ...
40         (bdesc_args): ... here.
41         * config.gcc (i[34567]86-*-*): Include abmintrin.h.
42         (x86_64-*-*): Likewise.
43
44 2009-12-07  Sebastian Pop  <sebastian.pop@amd.com>
45
46         * config.gcc (i[34567]86-*-*, x86_64-*-*): Add popcntintrin.h.
47         * config/i386/abmintrin.h (_mm_popcnt_u32, _mm_popcnt_u64): Moved...
48         * config/i386/i386-c.c (__POPCNT__): Defined.
49         * config/i386/popcntintrin.h: ...here.  New file.
50         * config/i386/smmintrin.h (_mm_popcnt_u32, _mm_popcnt_u64): Moved...
51         Include popcntintrin.h.
52         * config/i386/x86intrin.h: Include popcntintrin.h when __POPCNT__
53         is defined.
54
55 2009-12-07  Sebastian Pop  <sebastian.pop@amd.com>
56
57         * config/i386/i386-protos.h (ix86_expand_fma4_multiple_memory):
58         Removed.
59         * config/i386/i386.c (ix86_expand_fma4_multiple_memory): Removed.
60         * config/i386/sse.md: Remove all XOP splitters.
61         Allow the second and fourth operands of XOP multiply-add insns
62         to be nonimmediate.
63
64 2009-12-07  Sebastian Pop  <sebastian.pop@amd.com>
65
66         * config/i386/sse.md: Remove all FMA4 splitters.
67         Allow the second operand of FMA4 insns to be a nonimmediate.
68         Fix comments punctuation.
69
70 2009-12-07  Julian Brown  <julian@codesourcery.com>
71
72         * config/arm/constraints.md (Ps, Pt): New constraint letters.
73         * config/arm/thumb2.md (*thumb2_addsi_short): Tighten constraints.
74
75 2009-12-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
76
77         PR other/40302
78         * configure.ac (HAVE_mpc): Don't define.
79         * config.in, configure: Regenerate.
80
81         PR other/40302
82         * builtins.c: Remove HAVE_mpc* checks throughout.
83         * fold-const.c: Likewise.
84         * real.h: Likewise.
85         * toplev.c: Likewise.
86
87 2009-12-07  Edmar Wienskoski  <edmar@freescale.com>
88
89         * config.gcc (cpu_is_64bit): Add new core e500mc64.
90         (powerpc*-*-*): Add new core e500mc64.
91         * config/rs6000/e500mc64.md: New file.
92         * config/rs6000/rs6000.c (processor_costs): Add new costs for
93         e500mc64.
94         (rs6000_override_options): Add e500mc64 case to
95         processor_target_table. Altivec and Spe options not allowed with
96         e500mc64. Disable string instructions for e500mc64. Enable branch
97         targets alignment for both e500mc and e500mc64. Initialize
98         rs6000_cost for e500mc64.
99         (rs6000_emit_sISEL): New function.
100         (rs6000_emit_sCOND): Call rs6000_emit_sISEL for isel targets.
101         (rs6000_emit_int_cmove): Fix mode of 64 bit isel pattern
102         generation.
103         (rs6000_issue_rate): Set issue rate for e500mc64.
104         (rs6000_rtx_costs): Set more accurate cost for mfcr instruction
105         on architectures with isel.
106         * config/rs6000/rs6000-protos.h (rs6000_emit_sISEL): Declare.
107         * config/rs6000/rs6000.h (processor_type): Add
108         PROCESSOR_PPCE500MC64.
109         (ASM_CPU_SPEC): Add e500mc64.
110         * config/rs6000/rs6000.md (define_attr "cpu"): Add ppce500mc64.
111         Include e500mc64.md.
112         (abssi2_isel): Expand pattern to handle DImode.
113         (nabs<mode>2_isel): New pattern.
114         (absdi2): Change pattern to handle 64 bit isel targets.
115         (absdi2_internal): Exclude ISEL targets.
116         (nabsdi2): Exclude ISEL targets.
117         * doc/invoke.texi: Add e500mc64 to list of cpus.
118
119 2009-12-07  Uros Bizjak  <ubizjak@gmail.com>
120
121         * config/i386/i386.md (any_or): New code iterator.
122         (any_logic): Rename from plogic code iterator.
123         (logicprefix): Rename from plogicprefix code attribute.
124         (<code><mode>3): Macroize expander from {ior,xor}<mode>3 using
125         any_or code iterator.
126         (*<code><mode>_1): Macroize insn from *{ior,xor}<mode>_1 using
127         any_or code iterator.
128         (*<code><mode>_2): Ditto from *{ior,xor}<mode>_2.
129         (*<code><mode>_3): Ditto from *{ior,xor}<mode>_3.
130         (ior and xor splitters): Ditto.
131         * config/i386/mmx.md: Updated for rename.
132         * config/i386/sse.md: Ditto.
133
134 2009-12-07  Uros Bizjak  <ubizjak@gmail.com>
135
136         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
137         Remove quotes around condition logic code.
138
139 2009-12-06  Richard Henderson  <rth@redhat.com>
140
141         PR debug/42234
142         * tree-ssa-dom.c (degenerate_phi_result): Check for NULL phi
143         argument earlier.
144
145 2009-12-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
146
147         * doc/install.texi: Document MPC is required.
148
149 2009-12-06  Uros Bizjak  <ubizjak@gmail.com>
150
151         * config/i386/i386.md (g): Add HImode and QImode.
152         (general_szext_operand): New mode attribute.
153         (*test<mode>_1): Macroize insn from *test{qi,hi,si}_1 using
154         SWI124 mode iterator.
155         (and<mode>3): Macroize expander from and{qi,hi,si,di}3 using
156         SWIM mode iterator.
157         (*and<mode>_2): Macroize insn from *and{qi,hi,si}_2 using
158         SWI124 mode iterator.
159         (ior<mode>3): Macroize expander from ior{qi,hi,si,di}3 using
160         SWIM mode iterator.
161         (*ior<mode>_1): Macroize insn from *ior{hi,si,di}_1 using
162         SWI248 mode iterator.
163         (*ior<mode>_2): Macroize insn from *ior{qi,hi,si,di}_2 using
164         SWI mode iterator.
165         (*ior<mode>_3): Macroize insn from *ior{qi,hi,si,di}_3 using
166         SWI mode iterator.
167         (xor<mode>3): Macroize expander from xor{qi,hi,si,di}3 using
168         SWIM mode iterator.
169         (*xor<mode>_1): Macroize insn from *xor{hi,si,di}_1 using
170         SWI248 mode iterator.
171         (*xor<mode>_2): Macroize insn from *xor{qi,hi,si,di}_2 using
172         SWI mode iterator.
173         (*xor<mode>_3): Macroize insn from *xor{qi,hi,si,di}_3 using
174         SWI mode iterator.
175
176 2009-12-05  Sebastian Pop  <sebastian.pop@amd.com>
177
178         * config/i386/i386.c (TARGET_DEFAULT_TARGET_FLAGS): Add
179         MASK_FUSED_MADD.
180         * config/i386/i386.h (CC1_CPU_SPEC_1): Remove
181         "'-mfused-madd' was removed".
182         * config/i386/i386.opt (mfused-madd): New.
183         * config/i386/sse.md: Add TARGET_FUSED_MADD to FMA4 insns.
184         * doc/invoke.texi (-mfused-madd, -mno-fused-madd): Document.
185
186 2009-12-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
187
188         * pa64-hpux.h (LIB_SPEC): Handle -rdynamic.
189         * pa-hpux10.h (LIB_SPEC): Likewise.
190         * pa-hpux11.h (LIB_SPEC): Likewise.
191
192         PR ada/41912
193         * pa/linux-unwind.h (pa32_fallback_frame_state): Set fs->signal_frame
194         for signal frames.
195         * pa/hpux-unwind.h (pa32_fallback_frame_state): Likewise.
196
197 2009-12-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
198
199         * configure: Regenerate.
200
201 2009-12-05  Richard Earnshaw  <rearnsha@arm.com>
202
203         * arm/thumb2.md (thumb2_mulsi_short_compare0): Use a low-register
204         for the scratch.
205
206 2009-12-04  David Daney  <ddaney@caviumnetworks.com>
207
208         PR rtl-optimization/42164
209         * combine.c (combine_simplify_rtx): Handle truncation of integer
210         constants.
211
212 2009-12-04  Richard Guenther  <rguenther@suse.de>
213
214         * lto-streamer-out.c (pack_ts_decl_common_value_fields):
215         Revert previous change.
216         (lto_output_ts_decl_common_tree_pointers): Stream DECL_VALUE_EXPR.
217         * lto-streamer-in.c (lto_input_ts_decl_common_tree_pointers):
218         Likewise.
219
220 2009-12-04  Richard Guenther  <rguenther@suse.de>
221
222         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Handle
223         BUILT_IN_MALLOC.
224         (call_may_clobber_ref_p_1): Likewise.
225
226 2009-12-04  Matthias Klose  <doko@ubuntu.com>
227             John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
228
229         PR target/40134
230         * config.gcc (hppa*-*-linux*): Use config/t-slibgcc-libgcc.
231         * config/pa/pa-linux.h (LIB_SPEC): Remove.
232
233 2009-12-03  Sebastian Pop  <sebastian.pop@amd.com>
234             Richard Henderson  <rth@redhat.com>
235
236         * config/i386/i386-protos.h (ix86_fma4_valid_op_p): Remove.
237         * config/i386/i386.c (ix86_fma4_valid_op_p): Remove.
238         * config/i386/i386.md: Do not use ix86_fma4_valid_op_p.
239         * config/i386/sse.md (fma4_*): Remove alternative with operand 1
240         matching a memory access.  Do not use ix86_fma4_valid_op_p.
241         (xop_*): Same.
242         Do not use ix86_fma4_valid_op_p in FMA4 and XOP splitters.
243
244 2009-12-03  Richard Henderson  <rth@redhat.com>
245
246         * config/i386/i386.c (ix86_fixup_binary_operands): For FMA4, force
247         all operands into registers.
248
249 2009-12-03  Sebastian Pop  <sebastian.pop@amd.com>
250
251         * config/i386/i386.c (ix86_expand_fma4_multiple_memory): Remove unused
252         parameter.
253         * config/i386/i386-protos.h (ix86_expand_fma4_multiple_memory): Same.
254         * config/i386/sse.md: Same.
255
256 2009-12-03  Richard Guenther  <rguenther@suse.de>
257
258         * cgraphunit.c (assemble_thunk): Use DECL_ASSEMBLER_NAME
259         instead of DECL_NAME for the entry point.
260
261 2009-12-03  Richard Earnshaw  <rearnsha@arm.com>
262
263         * arm/linux-atomic.c (SYNC_LOCK_RELEASE): Place memory barrier
264         before the lock release.
265
266 2009-12-03  Michael Matz  <matz@suse.de>
267
268         PR middle-end/38474
269         * cfgexpand.c (struct stack_var): Add conflicts member.
270         (stack_vars_conflict, stack_vars_conflict_alloc,
271         n_stack_vars_conflict): Remove.
272         (add_stack_var): Initialize conflicts member.
273         (triangular_index, resize_stack_vars_conflict): Remove.
274         (add_stack_var_conflict, stack_var_conflict_p): Rewrite in
275         terms of new member.
276         (union_stack_vars): Only run over the conflicts.
277         (partition_stack_vars): Remove special case.
278         (expand_used_vars_for_block): Don't call resize_stack_vars_conflict,
279         don't create self-conflicts.
280         (account_used_vars_for_block): Don't create any conflicts.
281         (fini_vars_expansion): Free bitmaps, don't free or clear removed
282         globals.
283
284 2009-12-03  Bernd Schmidt  <bernd.schmidt@analog.com>
285
286         PR middle-end/42202
287         * regrename.c (live_in_chains): New variable.
288         (verify_reg_tracked): New static function.
289         (scan_rtx_reg): Update live_in_chains.
290         (scan_rtx): Only promote sets in COND_EXEC to OP_INOUT if
291         we're already tracking the reg.
292         (build_def_use): Likewise.  Initialize live_in_chains.
293
294 2009-12-03  Ken Werner  <ken.werner@de.ibm.com>
295
296         * config/spu/spu-elf.h (STARTFILE_SPEC): Add support for gprof
297         startup files.
298         * config/spu/spu-protos.h (spu_function_profiler): Add prototype.
299         * config/spu/spu.c (spu_function_profiler): New function.
300         * config/spu/spu.h (FUNCTION_PROFILER): Invoke
301         spu_function_profiler.
302         (NO_PROFILE_COUNTERS): Define.
303         (PROFILE_BEFORE_PROLOGUE): Likewise.
304
305 2009-12-03  Dave Korn  <dave.korn.cygwin@gmail.com>
306
307         * ggc-page.c (struct free_object): Pull definition out ...
308         (struct globals): .. from here.
309
310 2009-12-02  Richard Guenther  <rguenther@suse.de>
311
312         * fold-const.c (div_if_zero_remainder): Honor that sizetypes
313         are sign-extending.  Simplify.
314
315 2009-12-02  Richard Henderson  <rth@redhat.com>
316
317         PR tree-opt/42215
318         * tree-loop-distribution.c (build_size_arg_loc): Tidy.
319         (generate_memset_zero): Convert to sizetype properly.  Tidy.
320
321 2009-12-02  Richard Guenther  <rguenther@suse.de>
322
323         * lto-streamer-out.c (pack_ts_decl_common_value_fields):
324         Do not pretend we have value exprs.
325
326 2009-12-02  Richard Guenther  <rguenther@suse.de>
327
328         PR middle-end/41491
329         * fold-const.c (try_move_mult_to_index): Do not leak
330         domain types into the IL.
331
332 2009-12-02  Richard Guenther  <rguenther@suse.de>
333
334         PR middle-end/42088
335         * tree.c (free_lang_data): Disable if not using LTO.
336
337 2009-12-02  Richard Guenther  <rguenther@suse.de>
338
339         PR middle-end/42229
340         * cfgloopmanip.c (remove_path): Avoid cancelling loops twice.
341
342 2009-12-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
343
344         PR middle-end/42224
345         * tree.h (int_or_pointer_precision): Remove.
346         * tree.c (int_or_pointer_precision): Remove.
347         (integer_pow2p): Use TYPE_PRECISION instead.
348         (tree_log2): Likewise.
349         (tree_floor_log2): Likewise.
350         (signed_or_unsigned_type_for): Likewise.
351         * fold-const.c (fit_double_type): Likewise.
352         * varasm.c (initializer_constant_valid_p): Likewise.
353
354 2009-12-02  Ira Rosen  <irar@il.ibm.com>
355
356         * doc/invoke.texi (-fdump-tree-slp): Document.
357         (-ftree-vectorizer-verbose): Update.
358         (-ftree-slp-vectorize): Document.
359
360 2009-12-02  Nick Clifton  <nickc@redhat.com>
361
362         * config/rx/rx.c (rx_conditional_register_usage): Do not warn if
363         no fixed registers are available for interrupt handlers.  Do not
364         fix normal registers.
365         (MUST_SAVE_ACC_REGISTER): New macro.
366         (rx_get_stack_layout): Create a stack frame for fast interrupt
367         handlers, if necessary.  Push extra registers if needed in order
368         to save the accumulator.
369         (rx_expand_prologue): Create a stack frame for fast interrupt
370         handlers, if necessary.
371         (rx_expand_builtin_mvfc): Handle the case where there is no target.
372
373 2009-12-01  Sebastian Pop  <sebastian.pop@amd.com>
374
375         * config/i386/abmintrin.h (__lzcnt16): New.
376         (__lzcnt): New.
377         (__lzcnt64): New.
378         * config/i386/i386-builtin-types.def (UINT16_FTYPE_UINT16): New.
379         * config/i386/i386.c (IX86_BUILTIN_CLZS): New.
380         (bdesc_special_args): Add __builtin_clzs.
381         (ix86_expand_args_builtin): Handle UINT16_FTYPE_UINT16.
382
383 2009-12-01  Sebastian Pop  <sebastian.pop@amd.com>
384
385         * config/i386/abmintrin.h (_mm_popcnt_u32): New.
386         (_mm_popcnt_u64): New.
387
388 2009-12-01  Sebastian Pop  <sebastian.pop@amd.com>
389
390         * config/i386/abmintrin.h: New.
391         * config/i386/i386-c.c (ix86_target_macros_internal): Defined __ABM__.
392         * config/i386/x86intrin.h: Include abmintrin.h when __ABM__ is defined.
393
394 2009-12-01  Uros Bizjak  <ubizjak@gmail.com>
395
396         * config/i386/i386.md (SWI124): Rename from CRC32MODE.
397         (crc32modesuffix): Remove.
398         (crc32modeconstraint): Ditto.
399         (sse4_2_crc32<mode>): Update for renamed mode iterator.  Use
400         imodesuffix instead of crc32modesuffix and <r>m instead of
401         crc32modeconstraint.
402
403 2009-12-01  Jakub Jelinek  <jakub@redhat.com>
404
405         PR c++/42234
406         * tree-cfgcleanup.c (cleanup_omp_return): Don't ICE if control_bb
407         contains no statements.
408
409 2009-12-01  Grigori Fursin  <grigori.fursin@inria.fr>
410             Joern Rennecke  <amylaar@spamcop.net>
411
412         * cgraphunit.c (plugin.h): Include.
413         (ipa_passes): Invoke PLUGIN_ALL_IPA_PASSES_START /
414         PLUGIN_ALL_IPA_PASSES_END at start / end of processing.
415         * gcc-plugin.h (highlev-plugin-common.h, hashtab.h): Include.
416         (enum plugin_event): Define by including plugin.def.
417         Last enumerator is now called PLUGIN_EVENT_FIRST_DYNAMIC.
418         (plugin_event_name): Change type to const char **.
419         (get_event_last, get_named_event_id, unregister_callback): Declare.
420         (register_callback): Change type of event argument to int.
421         (highlev-plugin-common.h): New file.
422         * Makefile.in (GCC_PLUGIN_H): Add highlev-plugin-common.h and
423         $(HASHTAB_H)
424         (tree-optimize.o passes.o): Depend on $(PLUGIN_H).
425         (PLUGIN_HEADERS): Add opts.h, $(PARAMS_H) and plugin.def.
426         (s-header-vars): New rule.
427         (install-plugin): Depend on s-header-vars.  Install b-header-vars.
428         * params.c (get_num_compiler_params): New function.
429         * params.h (get_num_compiler_params): Declare.
430         * passes.c (plugin.h): Include.
431         (make_pass_instance): Invoke PLUGIN_NEW_PASS.
432         (do_per_function_toporder, pass_init_dump_file): No longer static.
433         (pass_fini_dump_file): Likewise.
434         (execute_one_pass): Likewise.  Invoke PLUGIN_OVERRIDE_GATE and
435         PLUGIN_PASS_EXECUTION.
436         (execute_ipa_pass_list): Invoke PLUGIN_EARLY_GIMPLE_PASSES_START and
437         PLUGIN_EARLY_GIMPLE_PASSES_END.
438         * plugin.c (plugin_event_name_init): New array, defined by
439         including plugin.def.
440         (FMT_FOR_PLUGIN_EVENT): Update.
441         (plugin_event_name): Change type to const char ** and initialize
442         to plugin_event_name_init.
443         (event_tab, event_last, event_horizon): New variable.
444         (get_event_last): New function.
445         (plugin_callbacks_init): New array.
446         (plugin_callbacks: Change type to struct callback_info **.
447         Initialize to plugin_callbacks_init.
448         (htab_event_eq, get_named_event_id, unregister_callback): New function.
449         (invoke_plugin_va_callbacks): Likewise.
450         (register_callback): Change type of event argument to int.
451         Handle new events.  Allow dynamic events.
452         (invoke_plugin_callbacks): Likewise.  Return success status.
453         (plugins_active_p): Allow dynamic callbacks.
454         * plugin.def: New file.
455         * plugin.h (invoke_plugin_callbacks): Update prototype.
456         (invoke_plugin_va_callbacks): Declare.
457         * tree-optimize.c (plugin.h): Include.
458         (tree_rest_of_compilation): Invoke PLUGIN_ALL_PASSES_START and
459         PLUGIN_ALL_PASSES_END.
460         * tree-pass.h (execute_one_pass, pass_init_dump_file): Declare.
461         (pass_fini_dump_file, do_per_function_toporder): Likewise.
462         * doc/plugin.texi: Document new event types.
463
464 2009-12-01  Martin Jambor  <mjambor@suse.cz>
465
466         PR tree-optimization/42237
467         * tree-sra.c (sra_ipa_modify_assign): Split gimple_reg_type assignments
468         in between references into two.
469
470 2009-12-01  Richard Guenther  <rguenther@suse.de>
471
472         * tree-inline.c (copy_tree_body_r): Do not set TREE_BLOCK
473         to the block of the call when remapping a type.
474
475 2009-12-01  Martin Jambor  <mjambor@suse.cz>
476
477         * cgraph.h (struct cgraph_edge): Reorder fields.  Make loop_nest
478         unsigned short int.
479         * ipa-prop.h (struct ipa_param_call_note): Likewise.
480         * ipa-prop.c (ipa_note_param_call): Initialize note->loop_nest.
481
482 2009-12-01  Richard Guenther  <rguenther@suse.de>
483
484         * final.c (rest_of_clean_state): If -fcompare-debug is
485         given dump final insns without UIDs.
486         * tree-ssa-live.c (remove_unused_scope_block_p): Remove
487         after_inlining checks.
488
489 2009-11-30  Chao-ying Fu  <fu@mips.com>
490
491         * config/mips/mips-dsp.md (mips_lhx_<mode>): Use sign_extend.
492
493 2009-11-30  Dave Korn  <dave.korn.cygwin@gmail.com>
494
495         * configure.ac (USE_CYGWIN_LIBSTDCXX_WRAPPERS): Define to reflect
496         status of AC_CHECK_FUNC for Cygwin DLL libstdc++ support wrappers.
497         * configure: Regenerate.
498         * config.in: Regenerate.
499
500         * config/i386/cygwin.h (CXX_WRAP_SPEC_LIST): Define list of --wrap
501         options for Cygwin DLL libstdc++ support wrappers.
502         (CXX_WRAP_SPEC_OPT): Define spec to use wrappers or not by default
503         according to defined value of USE_CYGWIN_LIBSTDCXX_WRAPPERS.
504         (CXX_WRAP_SPEC): Define entire wrapper spec in or out according to
505         whether USE_CYGWIN_LIBSTDCXX_WRAPPERS is even defined or not.
506         (LINK_SPEC): Include CXX_WRAP_SPEC.
507         * gcc/config/i386/winnt.c (wrapper_strcmp): New qsort helper function.
508         (i386_find_on_wrapper_list): Check if a function is found on the list
509         of libstdc++ wrapper options.
510         (i386_pe_file_end): If we are importing a wrapped function, also emit
511         an external declaration for the real version.
512         * config/i386/cygming.opt (muse-libstdc-wrappers): New option for
513         Cygwin targets. Update copyright year.
514
515 2009-11-30  Steve Ellcey  <sje@cup.hp.com>
516             Jakub Jelinek <jakub@redhat.com>
517
518         * function.c (instantiate_virtual_regs_in_insn): Copy to new reg
519         before forcing mode.
520
521 2009-11-30  Anatoly Sokolov  <aesok@post.ru>
522
523         * config/sh/sh.c (sh_promote_prototypes): Make static.
524         (sh_function_value, sh_libcall_value, sh_function_value_regno_p): New
525         functions.
526         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
527         * config/sh/sh.h (FUNCTION_VALUE_REGNO_P): Redefine, use
528         sh_function_value_regno_p.
529         (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
530         * config/sh/sh-protos.h (sh_function_value_regno_p): Declare.
531         (sh_promote_prototypes) : Remove.
532
533 2009-11-30  Julian Brown  <julian@codesourcery.com>
534
535         * config/arm/arm.h (PREFERRED_RELOAD_CLASS): Don't restrict Thumb-2
536         reloads to LO_REGS.
537
538 2009-11-30  Richard Henderson  <rth@redhat.com>
539
540         * config/i386/i386.c (ix86_vec_interleave_v2df_operator_ok): New.
541         (bdesc_special_args): Update insn codes.
542         (avx_vpermilp_parallel): Correct range check.
543         (ix86_rtx_costs): Handle vector permutation rtx codes.
544         (struct expand_vec_perm_d): Move earlier.
545         (get_mode_wider_vector): New.
546         (expand_vec_perm_broadcast_1): New.
547         (ix86_expand_vector_init_duplicate): Use it.  Tidy AVX modes.
548         (expand_vec_perm_broadcast): New.
549         (ix86_expand_vec_perm_builtin_1): Use it.
550         * config/i386/i386-protos.h: Update.
551         * config/i386/predicates.md (avx_vbroadcast_operand): New.
552         * config/i386/sse.md (AVX256MODE24P): New.
553         (ssescalarmodesuffix2s): New.
554         (avxhalfvecmode, avxscalarmode): Fill out to all modes.
555         (avxmodesuffixf2c): Add V8SI, V4DI.
556         (vec_dupv4sf): New expander.
557         (*vec_dupv4sf_avx): Add vbroadcastss alternative.
558         (*vec_set<mode>_0_avx, **vec_set<mode>_0_sse4_1): Macro-ize for
559         V4SF and V4SI.  Move C alternatives to front.  Add insertps and
560         pinsrd alternatives.
561         (*vec_set<mode>_0_sse2): Split out from ...
562         (vec_set<mode>_0): Macro-ize for V4SF and V4SI.
563         (vec_interleave_highv2df, vec_interleave_lowv2df): Require register
564         destination; use ix86_vec_interleave_v2df_operator_ok, instead of
565         ix86_fixup_binary_operands.
566         (*avx_interleave_highv2df, avx_interleave_lowv2df): Add movddup.
567         (*sse3_interleave_highv2df, sse3_interleave_lowv2df): New.
568         (*avx_movddup, *sse3_movddup): Remove.  New splitter from
569         vec_select form to vec_duplicate form.
570         (*sse2_interleave_highv2df, sse2_interleave_lowv2df): Use
571         ix86_vec_interleave_v2df_operator_ok.
572         (avx_movddup256, avx_unpcklpd256): Change to expanders, merge into ...
573         (*avx_unpcklpd256): ... here.
574         (*vec_dupv4si_avx): New.
575         (*vec_dupv2di_avx): Add movddup alternative.
576         (*vec_dupv2di_sse3): New.
577         (vec_dup<AVX256MODE24P>): Replace avx_vbroadcasts<AVXMODEF4P> and
578         avx_vbroadcastss256; represent with vec_duplicate instead of
579         nested vec_concat operations.
580         (avx_vbroadcastf128_<mode>): Rename from
581         avx_vbroadcastf128_p<avxmodesuffixf2c>256.
582         (*avx_vperm_broadcast_v4sf): New.
583         (*avx_vperm_broadcast_<AVX256MODEF2P>): New.
584
585 2009-11-30  Martin Jambor  <mjambor@suse.cz>
586
587         PR middle-end/42196
588         * tree-sra.c (struct access): New field grp_different_types.
589         (dump_access): Dump grp_different_types.
590         (compare_access_positions): Prefer scalars and vectors over other
591         scalar types.
592         (sort_and_splice_var_accesses): Set grp_different_types if appropriate.
593         (sra_modify_expr): Use the original also when dealing with a complex
594          or vector group accessed as multiple types.
595
596 2009-11-30  Richard Henderson  <rth@redhat.com>
597
598         * config/i386/i386.c (avx_vperm2f128_parallel): New.
599         * config/i386/i386-protos.h: Declare it.
600         * config/i386/predicates.md (avx_vperm2f128_v8sf_operand,
601         avx_vperm2f128_v8si_operand, avx_vperm2f128_v4df_operand): New.
602         * config/i386/sse.md (avx_vperm2f128<mode>3): Change to expander.
603         (*avx_vperm2f128<mode>_full): Renamed from avx_vperm2f128<mode>3.
604         (*avx_vperm2f128<mode>_nozero): New.
605
606 2009-11-30  Richard Henderson  <rth@redhat.com>
607
608         * config/i386/i386-builtin-types.def (V4DF_FTYPE_V4DF_V4DF_V4DI): New.
609         (V8SF_FTYPE_V8SF_V8SF_V8SI): New.
610         * config/i386/i386.c (ix86_vectorize_builtin_vec_perm): Support
611         V4DF and V8SF for AVX; relax constraint on V4SF to SSE1 from SSE2.
612         (IX86_BUILTIN_VEC_PERM_V4DF, IX86_BUILTIN_VEC_PERM_V8SF): New.
613         (bdesc_args): Add them.
614         (ix86_expand_builtin): Expand them.
615         (expand_vec_perm_pshufb2): Only operate on 16-byte vectors.
616
617 2009-11-30  Martin Jambor  <mjambor@suse.cz>
618
619         PR middle-end/42206
620         * ipa-prop.c (ipa_write_node_info): Initialize note_count to zero.
621
622 2009-11-30  Jakub Jelinek  <jakub@redhat.com>
623
624         * ipa-reference.c (propagate): Only dump bitmaps if computed.
625
626 2009-11-30  Olga Golovanevsky  <olga@il.ibm.com>
627
628         PR middle-end/39806
629         * ipa-struct-reorg.c (new_var_eq): Use DECL_UID to hash new variables.
630         (new_var_hash): Likewise.
631         (is_in_new_vars_htab): Likewise.
632         (add_to_new_vars_htab): Likewise.
633
634 2009-11-30  Ira Rosen  <irar@il.ibm.com>
635
636         * tree-vect-stmts.c (vectorizable_assignment): Support
637         multiple types.
638
639 2009-11-30  Richard Guenther  <rguenther@suse.de>
640
641         * doc/contrib.texi (Contributors): Add myself.
642
643 2009-11-30  Richard Guenther  <rguenther@suse.de>
644
645         * tree.c (free_lang_data): Do not set debug_info_level to
646         none if terse.
647
648 2009-11-30  Richard Guenther  <rguenther@suse.de>
649
650         PR middle-end/42119
651         PR fortran/38530
652         * expr.c (expand_expr_addr_expr_1): Properly expand the initializer
653         of CONST_DECLs.
654
655 2009-11-30  Richard Guenther  <rguenther@suse.de>
656
657         * tree-into-ssa.c (insert_phi_nodes): Add PHI nodes in
658         variable UID order.
659
660 2009-11-30  Richard Guenther  <rguenther@suse.de>
661
662         * tree-dump.c (dump_option_value_in): Add TDF_NOUID.
663         * tree-pass.h (TDF_NOUID): Likewise.
664         * print-rtl.c: Include tree-pass.h.
665         (print_mem_expr): Pass dump_flags.
666         (print_rtx): Likewise.
667         * print-tree.c: Include tree-pass.h.
668         (print_node_brief): Handle TDF_NOUID.
669         (print_node): Likewise.
670         * tree-pretty-print.c (dump_decl_name): Likewise.
671         (dump_generic_node): Likewise.
672         * Makefile.in (print-rtl.o, print-tree.o): Add $(TREE_PASS_H)
673         dependency.
674
675 2009-11-30  Nick Clifton  <nickc@redhat.com>
676
677         * config/stormy16/stormy16-lib2-count-leading-zeros.c: Delete.
678         * config/stormy16/t-stormy16 (LIB2FUNCS_EXTRA): Remove
679         stormy16-lib2-count-leading-zeros.c.
680         * config/stormy16/stormy16-lib2.c (__clzhi2): Move code from
681         __stormy16_count_leading_zeros() into this function.
682         (__ctzhi2): Use __builtin_clz.
683         (__ffshi2): Likewise.
684
685 2009-11-30  Eric Botcazou  <ebotcazou@adacore.com>
686
687         * config/sparc/sparc.c (DF_MODES): Simplify.
688         (TF_ONLY_MODES, OF_ONLY_MODES): Delete.
689         (TF_MODES, OF_MODES): Adjust for above change.
690         (TF_MODES_NO_S, OF_MODES_NO_S): Likewise.
691         *  config/sparc/sparc.h (REGNO_REG_CLASS): Move around.
692
693 2009-11-30  Paolo Bonzini  <bonzini@gnu.org>
694
695         PR rtl-optimization/41812
696         * fwprop.c (local_md, local_lr): New globals.
697         (process_defs, process_uses): Remove local_md argument.  Never
698         consider dead pseudos to have singleton def-use chains.
699         (single_def_use_enter_block): Perform LR simulation.
700         (build_single_def_use_links): Remove local_md local variable.
701         Add DF_NOTE.  Allocate local_lr.
702         (fwprop_done): Do not remove DF_CHAIN, we do not use it anymore.
703         * df-problems.c (df_md_scratch): New.
704         (df_md_alloc, df_md_free): Allocate/free it.
705         (df_md_local_compute): Only include live registers in init.
706         (df_md_transfer_function): Prune the in-set computed by
707         the confluence function, and the gen-set too.
708
709 2009-11-30  Hans-Peter Nilsson  <hp@axis.com>
710
711         PR rtl-optimization/40086
712         * reorg.c (relax_delay_slots): When looking for redundant insn at
713         the branch target, use next_real_insn, not next_active_insn.
714
715 2009-11-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
716
717         * doc/install.texi: Update minimum MPC version to 0.8.
718
719 2009-09-09  Segher Boessenkool  <segher@kernel.crashing.org>
720
721         * config/rs6000/rs6000.md (fnmaddsf4_powerpc_1): Remove
722         HONOR_SIGNED_ZEROS final condition.
723         (fnmsubsf4_powerpc_1): Same.
724         (fnmadddf4_fpr_1): Same.
725         (fnmsubdf4_fpr_1): Same.
726
727 2009-11-29  Ira Rosen  <irar@il.ibm.com>
728
729         PR tree-optimization/42193
730         * tree-vect-stmts.c (vectorizable_operation): Set vectorization factor
731         to 1 in case of basic block SLP.
732         (vectorizable_load): Likewise.
733
734 2009-11-28  Jan Hubicka  <jh@suse.cz>
735
736         * cgraph.c (same_body_alias_1): Break out of
737         (same_body_alias): ... here; remove comdat check; it is handled
738         in cp already.
739         (cgraph_add_thunk): New.
740         (dump_cgraph_node): Dump aliases and thunks.
741         * cgraph.h (cgraph_thunk_info): New structure.
742         (struct cgraph_node): Add thunk info.
743         (cgraph_add_thunk): New.
744         * cgraphunit.c (cgraph_emit_thunks): Remove.
745         (cgraph_finalize_compilation_unit): Do not call cgraph_emit_thunks.
746         (assemble_thunk): New function.
747         (cgraph_expand_function): Handle thunks.
748         (thunk_adjust): New.
749         (init_lowered_empty_function): New.
750         * cp-objcp-common.h (LANG_HOOKS_CALLGRAPH_EMIT_ASSOCIATED_THUNKS):
751         Remove.
752         * lto-cgraph.c (lto_output_node): Stream thunk info.
753         (input_node): Likewise.
754         * langhooks.h (lang_hooks_for_callgraph): Remove emit_associated_thunks.
755         * langhooks-def.h (LANG_HOOKS_CALLGRAPH_EMIT_ASSOCIATED_THUNKS): Remove.
756         (LANG_HOOKS_CALLGRAPH_INITIALIZER): Update.
757         * i386.c (x86_output_mi_thunk): Make output prettier.
758
759 2009-11-28  Richard Guenther  <rguenther@suse.de>
760
761         PR tree-optimization/42183
762         * tree-nrv.c (tree_nrv): Bail out if the RESULT_DECL has its
763         address taken.  Merge the addressable state of the NRV
764         variable and the result instead of copying it.
765
766 2009-11-28  Jakub Jelinek  <jakub@redhat.com>
767
768         * matrix-reorg.c (analyze_matrix_allocation_site): Remove unused
769         malloc_fname variable.
770         (check_allocation_function): Remove unused gsi and bb_level_0
771         variables.
772         (transform_access_sites): Remove unused d_type_size and d_type_size_k
773         variables.
774         * omega.c (resurrect_subs): Remove unused n variable.
775         (omega_solve_geq): Remove unused neweqns variable.
776         * lto-streamer-in.c (lto_read_tree): Remove unused end_marker variable.
777         * tree-inline.c (declare_return_variable): Remove USE_P argument,
778         return use instead of var.
779         (remap_decl, remap_block): Remove unused fn variable.
780         (expand_call_inline): Remove unused retvar variable, adjust
781         declare_return_variable caller.
782         (optimize_inline_calls): Remove unused prev_fn variable.
783         * tree-vect-slp.c (vect_analyze_slp_instance): Remove unused ncopies
784         variable.
785         (vect_create_mask_and_perm): Remove unused group_size and dr_chain_size
786         variables.
787         * tree-ssa-loop-niter.c (split_to_var_and_offset): Handle MINUS_EXPR
788         properly.
789         * tree-vect-loop.c (vect_analyze_loop_form): Remove unused backedge
790         variable.
791         (vect_create_epilog_for_reduction): Remove unused bytesize variable.
792         * omp-low.c (workshare_safe_to_combine_p): Remove par_entry_bb
793         parameter.  Remove unused par_stmt variable.
794         (determine_parallel_type): Adjust workshare_safe_to_combine_p caller.
795         (expand_omp_sections): Remove unused l1 variable.
796         (lower_omp_for): Remove unused ilist variable.
797         * tree-loop-distribution.c (mark_nodes_having_upstream_mem_writes):
798         Remove unused has_upstream_mem_write_p variable.
799         * recog.c (decode_asm_operands): Remove unused noperands variable.
800         * tree-ssa-alias.c (refs_may_alias_p_1): Remove unused size1 and
801         size2 variable.
802         * libgcov.c (__gcov_merge_delta): Remove unused last variable.
803         * tree-call-cdce.c (gen_conditions_for_pow_int_base): Remove unused
804         base_nm variable.
805         (gen_conditions_for_pow): Remove unused ec variable.
806         * tree-ssa-sccvn.c (vn_reference_lookup_3): Remove unused size
807         variable.
808         * ipa-struct-reorg.c (program_redefines_malloc_p): Remove unused
809         fndecl variable.
810         * tree-ssa-sink.c (statement_sink_location): Remove unused code
811         variable.
812         * regmove.c (copy_src_to_dest): Remove unused insn_uid and move_uid
813         variables.
814         * tree-complex.c (create_one_component_var): Remove unused inner_type
815         variable.
816         * calls.c (emit_call_1): Don't GEN_INT (struct_value_size)
817         unnecessarily when GEN_*CALL omits that argument.
818         * regrename.c (regrename_optimize): Remove unused regs_seen variable.
819         (build_def_use): Remove unused icode variable.
820         * ipa-pure-const.c (check_call): Remove unused callee and avail
821         variables.
822         * tree-dfa.c (add_referenced_var): Remove unused v_ann variable.
823         * tree-vect-patterns.c (vect_recog_pow_pattern): Remove unused type
824         variable.
825         (vect_pattern_recog): Remove unused stmt variable.
826         * sel-sched-ir.c (make_regions_from_the_rest): Remove unused
827         new_regions variable.
828         * postreload.c (reload_cse_simplify_operands): Remove unused mode
829         variable.
830         * tree-parloops.c (create_call_for_reduction_1): Remove unused
831         addr_type variable.
832         (create_parallel_loop): Remove unused res variable.
833         (gen_parallel_loop): Remove unused nloop variable.
834         * tree-vect-loop-manip.c (vect_loop_versioning): Likewise.
835         * value-prof.c (gimple_mod_subtract_transform,
836         gimple_stringops_transform): Remove unused value variable.
837         (gimple_stringops_values_to_profile): Remove unused fcode variable.
838         * tree-vrp.c (register_new_assert_for): Remove unused found variable.
839         (vrp_visit_switch_stmt): Remove unused n variable.
840         * tree-vect-stmts.c (vectorizable_conversion): Remove unused expr
841         variable.
842         (vectorizable_operation): Remove unused shift_p variable.
843         (vectorizable_store): Remove unused first_stmt_vinfo variable.
844         * tree-ssa-operands.c (add_stmt_operand): Remove unused v_ann variable.
845         * tree-vect-data-refs.c (vect_analyze_data_refs): Remove unused bb
846         variable.
847         (vect_permute_store_chain): Remove unused scalar_dest variable.
848         (vect_supportable_dr_alignment): Remove unused invariant_in_outerloop
849         variable.
850         * tree-ssa-threadupdate.c (thread_single_edge): Remove unused
851         local_info variable.
852         * tree-optimize.c (tree_rest_of_compilation): Remove unused node
853         variable.
854         * optabs.c (expand_binop): Remove unused equiv_value variable.
855         (emit_libcall_block): Remove unused prev variable.
856         (init_optabs): Remove unused int_mode variable.
857         * tree-ssa-structalias.c (scc_visit): Remove unused have_ref_node
858         variable.
859         (do_structure_copy): Remove unused lhsbase and rhsbase variables.
860         (find_func_aliases): Remove unused rhstype variable.
861         (ipa_pta_execute): Remove unused varid variable.
862
863 2009-11-28  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
864
865         * config/avr/avr.h (ASM_OUTPUT_EXTERNAL): Add.
866
867 2009-11-28  David Binderman  <dcb314@hotmail.com>
868
869         * ira-color.c (put_allocno_into_bucket): Remove set but not used
870         local variable hard_regs_num.
871         * ira-lives.c (process_single_reg_class_operands): Remove cover_class.
872         * loop-unswitch.c (unswitch_loop): Remove zero_bitmap.
873         * lower-subreg.c (decompose_multiword_subregs): Remove next.
874
875 2009-11-27  Martin Jambor  <mjambor@suse.cz>
876
877         PR middle-end/42006
878         * tree-sra.c (get_replaced_param_substitute): Call create_tmp_var
879         instead of create_tmp_var.  Set DECL_GIMPLE_REG_P to one manually
880         for vector and complex types.
881         (get_adjustment_for_base): Describe return value in the comment.
882
883 2009-11-27  Nick Clifton  <nickc@redhat.com>
884
885         * longlong.h (count_leading_zeros): Define macro for stormy16 target.
886         (COUNT_LEADING_ZEROS_0): Likewise.
887         * config/stormy16/stormy16-lib2.c: Arrange for separate
888         compilation of each function.
889         (__ffshi2): New function.
890         (__stormy16_count_leading_zeros): New function.
891         * config/stormy16/t-stormy16 (LIB2FUNCS_EXTRA): Use stub files to
892         compile each function into its own object file.
893         (stormy16-lib2-ashlsi3.c): New stub file.
894         (stormy16-lib2-ashrsi3.c): New stub file.
895         (stormy16-lib2-clzhi2.c): New stub file.
896         (stormy16-lib2-count-leading-zeros.c): New stub file.
897         (stormy16-lib2-ctzhi2.c): New stub file.
898         (stormy16-lib2-divsi3.c): New stub file.
899         (stormy16-lib2-ffshi2.c): New stub file.
900         (stormy16-lib2-lshrsi3.c): New stub file.
901         (stormy16-lib2-modsi3.c): New stub file.
902         (stormy16-lib2-parityhi2.c): New stub file.
903         (stormy16-lib2-popcounthi2.c): New stub file.
904         (stormy16-lib2-udivmodsi4.c): New stub file.
905         (stormy16-lib2-udivsi3.c): New stub file.
906         (stormy16-lib2-umodsi3.c): New stub file.
907
908 2009-11-27  Richard Henderson  <rth@redhat.com>
909
910         * config/i386/sse.md (vec_interleave_highv16qi,
911         vec_interleave_lowv16qi, vec_interleave_highv8hi,
912         vec_interleave_lowv8hi, vec_interleave_highv4si,
913         vec_interleave_lowv4si, vec_interleave_highv2di,
914         vec_interleave_lowv2di, vec_interleave_highv4sf,
915         vec_interleave_lowv4sf, vec_interleave_highv2df,
916         vec_interleave_lowv2df): Remove expanders.
917         (sse_unpcklps, sse_unpckhps, sse2_unpckhpd_exp, sse2_unpcklpd_exp,
918         sse2_punpckhqdq, sse2_punpcklqdq, sse2_punpckhbw, sse2_punpcklbw,
919         sse2_punpckhwd, sse2_punpcklwd, sse2_punpckhdq, sse2_punpckldq):
920         Rename to their proper vec_interleave equivalent.  Update all users
921         to the new name.
922         * config/i386/i386.c, config/i386/i386.md: Update all users.
923
924 2009-11-27  Michael Matz  <matz@suse.de>
925
926         PR rtl-optimization/42084
927         * cfgexpand.c (maybe_cleanup_end_of_block): Add new parameter,
928         use it to stop walking.
929         (expand_gimple_cond): Adjust call to above.
930
931 2009-11-27  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
932
933         PR target/41810
934         * gthr-solaris.h (__gthread_mutex_destroy): Remove UNUSED.
935         [SUPPORTS_WEAK && GTHREAD_USE_WEAK] (__gthread_active_p): Use
936         __extension__ to allow cast from function pointer to object
937         pointer in C++.
938         * doc/install.texi (--enable-threads): Clarify use of Solaris threads.
939
940 2009-11-27  Steven Bosscher  <steven@gcc.gnu.org>
941
942         * config/ia64/itanium1.md: Remove.
943         * config/ia64/ia64.md: Do not include it.
944         * config/ia64/ia64.c (ia64_handle_option): Remove "itanium",
945         "itanium1", and "merced" from the processor alias table.
946         (clocks, add_cycles): Remove global variables.
947         (ia64_sched_reorder2): Don't set/use them.
948         (ia64_dfa_new_cycle, ia64_h_i_d_extended, ia64_reorg): Likewise.
949         (bundling): Likewise. Remove extra pass for MMMUL/MMSHF.
950
951 2009-11-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
952
953         * config/s390/s390.c (last_scheduled_insn): New variable.
954         (s390_fpload_toreg, s390_z10_prevent_earlyload_conflicts): New
955         functions.
956         (s390_sched_reorder, s390_sched_variable_issue): New functions.
957         (TARGET_SCHED_VARIABLE_ISSUE, TARGET_SCHED_REORDER): Target hooks
958         defined.
959
960 2009-11-27  Michael Matz  <matz@suse.de>
961
962         PR c++/41906
963         * tree-eh.c (lower_catch): Stop after expanding a catch-all.
964
965 2009-11-27  Richard Guenther  <rguenther@suse.de>
966
967         * timevar.def (TV_LOOP_MOVE_INVARIANTS, TV_LOOP_UNSWITCH,
968         TV_LOOP_UNROLL, TV_LOOP_DOLOOP): New timevars.
969         * loop-init.c (pass_rtl_move_loop_invariants): Use
970         TV_LOOP_MOVE_INVARIANTS.
971         (pass_rtl_unswitch): Use TV_LOOP_UNSWITCH.
972         (pass_rtl_unroll_and_peel): Use TV_LOOP_UNROLL.
973         (pass_rtl_doloop): Use TV_LOOP_DOLOOP.
974
975 2009-11-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
976
977         * emit-rtl.c (next_active_insn, prev_active_insn): Correct comment.
978
979 2009-11-27  Jakub Jelinek  <jakub@redhat.com>
980
981         * config/i386/i386.c (ix86_emit_restore_sse_regs_using_mov): Remove
982         unused insn variable.
983         * genemit.c (output_peephole2_scratches): Only declare and initialize
984         _regs_allocated if it will be ever used.
985         * cfgloopmanip.c (create_empty_if_region_on_edge): Remove unused
986         succ_bb variable.
987         (create_empty_loop_on_edge): Remove unused freq and cnt variables.
988         * unwind-c.c (PERSONALITY_FUNCTION): Remove unused action_record
989         variable.
990
991         * opts.c (decode_options): If optimize is bigger than 255,
992         set it to 255.
993
994 2009-11-26  Richard Henderson  <rth@redhat.com>
995
996         * config/i386/sse.md (mulv16qi3): Change back from an expander
997         to an insn-and-split.
998         (mulv4si): Mention AVX not XOP for AVX exception.
999         (*sse2_mulv4si3): Likewise.
1000         (mulv2di3): Use vmulld not vpmacsdd for XOP expansion.  Tidy.
1001
1002 2009-11-26  Bernd Schmidt  <bernd.schmidt@analog.com>
1003
1004         * cfgexpand (n_stack_vars_conflict): New static variable.
1005         (triangular_index): Reduce likelyhood of overflow by performing
1006         the division before the multiplication.
1007         (resize_stack_vars_conflict): Call fatal_error if overflow
1008         occurred in triangular_index.  Update n_stack_vars_conflict.
1009
1010         PR rtl-opt/38582
1011         * regrename.c (struct du_chain): Remove member earlyclobber.
1012         (scan_rtx_reg): Don't set it.  Remove argument earlyclobber,
1013         all callers changed.
1014         (scan_rtx): Remove argument earlyclobber, all callers changed.
1015         (hide_operands, restore_operands, record_out_operands): New functions,
1016         broken out of build_def_use.
1017         (build_def_use): Call them as necessary.
1018
1019         * regrename.c (struct du_head): New members id, conflicts,
1020         hard_conflicts and cannot_rename.
1021         (enum scan_actions): Remove terminate_all_read and
1022         terminate_overlapping_read; add mark_all_read.
1023         (scan_actions_name): Likewise.
1024         (du_head_p): New typedef.  Define a vector type for it.
1025         (id_to_chain): New static variable.
1026         (note_sets, clear_dead_regs): Delete functions.
1027         (free_chain_data): New function.
1028         (merge_overlapping_regs): Simply walk the conflicts bitmap.
1029         Remove argument B, all callers changed.
1030         (regrename_optimize): Allocate id_to_chain.  Ignore chains that have
1031         the cannot_rename bit set.  Update regno and nregs of a renamed chain.
1032         Call free_chain_data when done.
1033         (do_replace): Remove death notes when the renamed reg is set in the
1034         last insn; add them if not.
1035         (mark_conflict, note_sets_clobbers): New static function.
1036         (fail_current_block, current_id, open_chains_set, live_hard_regs): New
1037         static variables.
1038         (scan_rtx_reg): Keep track of conflicts between chains, and between
1039         chains and hard regs.  Don't terminate chains when we find a read we
1040         can't handle, mark it unrenameable instead.  For terminate_write,
1041         terminate chains that are written with an exact match or a superset
1042         of registers.  Set fail_current_block if multi-word lifetimes are too
1043         complex to handle.
1044         (scan_rtx_address): Use mark_all_read instead of terminate_all_read.
1045         (build_def_use): Initialize current_id, live_chains and live_hard_regs;
1046         free memory for them when done.
1047         Rearrange the steps so that earlyclobbers are noted before reads
1048         are processed.  Add new steps to keep track of hard register lifetimes
1049         outside insn operands.
1050
1051 2009-11-26  Richard Guenther  <rguenther@suse.de>
1052
1053         * tree-ssa-dce.c (nr_walks): New variable.
1054         (mark_aliased_reaching_defs_necessary): Adjust oracle cut-off.
1055         (perform_tree_ssa_dce): Init nr_walks.
1056
1057 2009-11-26  Michael Matz  <matz@suse.de>
1058
1059         PR tree-optimization/41905
1060         * tree-eh.c (lower_eh_constructs_2): Don't add assignments
1061         below statements that can't fall thru.
1062
1063 2009-11-26  Michael Matz  <matz@suse.de>
1064
1065         * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
1066         expand_builtin_sprintf): Remove.
1067         (expand_builtin): Don't call them.
1068
1069 2009-11-26  Richard Guenther  <rguenther@suse.de>
1070
1071         * tree-ssa-dce.c (perform_tree_ssa_dce): Allocate visited bitmap.
1072
1073 2009-11-26  Nick Clifton  <nickc@redhat.com>
1074
1075         * config/rx/rx.c (rx_expand_epilogue): Add checks for sibcalls
1076         being used incorrectly.
1077         (rx_function_ok_for_sibcall): New function.  Do not allow indirect
1078         sibcalls, or sibcalls from interrupt functions.
1079         (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
1080         * config/rx/rx.md (sibcall): Convert to a define_expand.  Check
1081         for a MEM inside a MEM.
1082         (sibcall_value): Likewise.
1083         (sibcall_internal): New pattern containing old sibcall pattern.
1084         (sibcall_value_internal): Likewise.
1085
1086 2009-11-25  Richard Henderson  <rth@redhat.com>
1087
1088         * config/i386/i386-builtin-types.awk (DEF_VECTOR_TYPE): Allow an
1089         optional 3rd argument to define the mode.
1090         * config/i386/i386-builtin-types.def (UQI, UHI, USI, UDI): New.
1091         (V2UDI, V4USI, V8UHI, V16UQI): New.
1092         (V4SF_FTYPE_V4SF_V4SF_V4SI, V2UDI_FTYPE_V2UDI_V2UDI_V2UDI,
1093         V4USI_FTYPE_V4USI_V4USI_V4USI, V8UHI_FTYPE_V8UHI_V8UHI_V8UHI,
1094         V16UQI_FTYPE_V16UQI_V16UQI_V16UQI): New.
1095         * config/i386/i386-modes.def: Rearrange for double-wide AVX.
1096         * config/i386/i386-protos.h (ix86_expand_vec_extract_even_odd): New.
1097         * config/i386/i386.c (IX86_BUILTIN_VEC_PERM_*): New.
1098         (bdesc_args): Add the builtin definitions to match.
1099         (ix86_expand_builtin): Expand them.
1100         (ix86_builtin_vectorization_cost): Rename from
1101         x86_builtin_vectorization_cost.
1102         (ix86_vectorize_builtin_vec_perm, struct expand_vec_perm_d,
1103         doublesize_vector_mode, expand_vselect, expand_vselect_vconcat,
1104         expand_vec_perm_blend, expand_vec_perm_vpermil,
1105         expand_vec_perm_pshufb, expand_vec_perm_1,
1106         expand_vec_perm_pshuflw_pshufhw, expand_vec_perm_palignr,
1107         expand_vec_perm_interleave2, expand_vec_perm_pshufb2,
1108         expand_vec_perm_even_odd_1, expand_vec_perm_even_odd,
1109         ix86_expand_vec_perm_builtin_1, extract_vec_perm_cst,
1110         ix86_expand_vec_perm_builtin, ix86_vectorize_builtin_vec_perm_ok,
1111         ix86_expand_vec_extract_even_odd, TARGET_VECTORIZE_BUILTIN_VEC_PERM,
1112         TARGET_VECTORIZE_BUILTIN_VEC_PERM_OK): New.
1113         * sse.md (SSEMODE_EO): New.
1114         (vec_extract_even<mode>): Use SSEMODE_EO and
1115         ix86_expand_vec_extract_even_odd.
1116         (vec_extract_odd<mode>): Likewise.
1117         (mulv16qi3, vec_pack_trunc_v8hi, vec_pack_trunc_v4si,
1118         vec_pack_trunc_v2di): Use ix86_expand_vec_extract_even_odd.
1119
1120 2009-11-25  Richard Henderson  <rth@redhat.com>
1121
1122         * target.h (targetm.vectorize.builtin_vec_perm_ok): New.
1123         * target-def.h (TARGET_VECTORIZE_BUILTIN_VEC_PERM_OK): New.
1124         * hooks.h, hooks.c (hook_bool_tree_tree_true): New.
1125         * tree-vect-slp.c (vect_create_mask_and_perm): Don't create
1126         the vector constant here...
1127         (vect_transform_slp_perm_load): ... do it here instead.  Validate
1128         that the permutation vector is implementable by the target.
1129
1130 2009-11-25  Jakub Jelinek  <jakub@redhat.com>
1131
1132         * config/rs6000/sysv4.opt (mregnames): Change Var to rs6000_regnames.
1133         * config/rs6000/sysv4.h (TARGET_REGNAMES): Define.
1134
1135         * print-rtl.c (print_rtx): When printing newline, append
1136         print_rtx_head and indentation after the newline.
1137
1138         PR target/42165
1139         * config/i386/i386.c (print_operand): For 32-byte memory use
1140         YMMWORD in -masm=intel mode.  Use TBYTE instead of XWORD.
1141         * config/i386/i386.md (crc32modesuffix): Expand to nothing
1142         in -masm=intel mode.
1143         (sse4_2_crc32di): Print just crc32 instead of crc32q in
1144         -masm=intel mode.
1145         * config/i386/mmx.md (*mmx_pinsrw): Print correct size of
1146         memory operand in -masm=intel mode.
1147         * config/i386/sse.md (*avx_pinsr<ssevecsize>, *sse4_1_pinsrb,
1148         *sse2_pinsrw): Likewise.
1149         (sse_cvtss2siq, sse_cvtss2siq_2, sse_cvttss2siq): Don't print
1150         q suffix in -masm=intel mode.
1151
1152 2009-11-25  Eric Botcazou  <ebotcazou@adacore.com>
1153
1154         PR target/10127
1155         PR ada/20548
1156         PR middle-end/42004
1157         * dwarf2out.c (dwarf2out_args_size_adjust): Rename to...
1158         (dwarf2out_stack_adjust): ...this.  Do not adjust the arg size for
1159         ACCUMULATE_OUTGOING_ARGS targets.  Rename former version to...
1160         (dwarf2out_notice_stack_adjust): ...this.  Adjust for above renaming.
1161         (dwarf2out_frame_debug_expr): Revert previous change and adjust for
1162         above renaming.
1163         (dwarf2out_frame_debug): Add ??? comment.  Adjust for above renaming.
1164
1165 2009-11-25  Uros Bizjak  <ubizjak@gmail.com>
1166
1167         * config/i386/predicates.md (emms_operation): New predicate.
1168         (vzeroupper_operation): Ditto.
1169         (vzeroall_operation): Improve pattern recognition.
1170         * config/i386/sse.md (avx_vzeroupper_rex64): Remove insn pattern.
1171         (avx_vzeroupper): Change insn pattern to expander.
1172         (*avx_vzeroupper): New insn pattern.  Use vzeroupper_operation
1173         predicate.
1174         (*avx_vzeroall): Remove operands 1 and 2.
1175         * config/i386/mmx.md (mmx_emms): Change insn pattern to expander.
1176         (mmx_femms): Ditto.
1177         (*mmx_emms): New insn pattern.  Use emms_operation predicate.
1178         (*mmx_femms): Ditto.
1179         * config/i386/i386.c (enum ix86_builtins)
1180         <IX86_BUILTIN_VZEROUPPER_REX64>: Remove.
1181         (struct builtin_description) <CODE_FOR_avx_vzeroupper_rex64>:
1182         Remove initailization.
1183         <CODE_FOR_avx_vzeroupper>: Unconditionally initialize here.
1184
1185 2009-11-25  Paul Brook  <paul@codesourcery.com>
1186
1187         * config/arm/arm.md (consttable_4): Handle (high ...).
1188
1189 2009-11-25  Robert Nelson  <robert.nelson@digikey.com>
1190             Richard Earnshaw  <rearnsha@arm.com>
1191
1192         * arm.h (enum vfp_reg_type): Add VFP_NONE.
1193         * arm.c (all_fpus): Use it for floating point units that aren't based
1194         on the VFP architecture.
1195         (aapcs_vfp_is_call_or_return_candidate): Make base_mode a pointer to
1196         enum machine_mode.
1197
1198 2009-11-25  H.J. Lu  <hongjiu.lu@intel.com>
1199
1200         * alias.c: Remove trailing white spaces.
1201         * alloc-pool.c: Likewise.
1202         * alloc-pool.h: Likewise.
1203         * attribs.c: Likewise.
1204         * auto-inc-dec.c: Likewise.
1205         * basic-block.h: Likewise.
1206         * bb-reorder.c: Likewise.
1207         * bt-load.c: Likewise.
1208         * builtins.c: Likewise.
1209         * builtins.def: Likewise.
1210         * c-common.c: Likewise.
1211         * c-common.h: Likewise.
1212         * c-cppbuiltin.c: Likewise.
1213         * c-decl.c: Likewise.
1214         * c-format.c: Likewise.
1215         * c-lex.c: Likewise.
1216         * c-omp.c: Likewise.
1217         * c-opts.c: Likewise.
1218         * c-parser.c: Likewise.
1219         * c-pretty-print.c: Likewise.
1220         * c-tree.h: Likewise.
1221         * c-typeck.c: Likewise.
1222         * caller-save.c: Likewise.
1223         * calls.c: Likewise.
1224         * cfg.c: Likewise.
1225         * cfganal.c: Likewise.
1226         * cfgexpand.c: Likewise.
1227         * cfghooks.c: Likewise.
1228         * cfghooks.h: Likewise.
1229         * cfglayout.c: Likewise.
1230         * cfgloop.c: Likewise.
1231         * cfgloop.h: Likewise.
1232         * cfgloopmanip.c: Likewise.
1233         * cfgrtl.c: Likewise.
1234         * cgraph.c: Likewise.
1235         * cgraph.h: Likewise.
1236         * cgraphbuild.c: Likewise.
1237         * cgraphunit.c: Likewise.
1238         * cif-code.def: Likewise.
1239         * collect2.c: Likewise.
1240         * combine.c: Likewise.
1241         * convert.c: Likewise.
1242         * coverage.c: Likewise.
1243         * crtstuff.c: Likewise.
1244         * cse.c: Likewise.
1245         * cselib.c: Likewise.
1246         * dbgcnt.c: Likewise.
1247         * dbgcnt.def: Likewise.
1248         * dbgcnt.h: Likewise.
1249         * dbxout.c: Likewise.
1250         * dce.c: Likewise.
1251         * ddg.c: Likewise.
1252         * ddg.h: Likewise.
1253         * defaults.h: Likewise.
1254         * df-byte-scan.c: Likewise.
1255         * df-core.c: Likewise.
1256         * df-problems.c: Likewise.
1257         * df-scan.c: Likewise.
1258         * df.h: Likewise.
1259         * dfp.c: Likewise.
1260         * diagnostic.c: Likewise.
1261         * diagnostic.h: Likewise.
1262         * dominance.c: Likewise.
1263         * domwalk.c: Likewise.
1264         * double-int.c: Likewise.
1265         * double-int.h: Likewise.
1266         * dse.c: Likewise.
1267         * dwarf2asm.c: Likewise.
1268         * dwarf2asm.h: Likewise.
1269         * dwarf2out.c: Likewise.
1270         * ebitmap.c: Likewise.
1271         * ebitmap.h: Likewise.
1272         * emit-rtl.c: Likewise.
1273         * et-forest.c: Likewise.
1274         * except.c: Likewise.
1275         * except.h: Likewise.
1276         * expmed.c: Likewise.
1277         * expr.c: Likewise.
1278         * expr.h: Likewise.
1279         * final.c: Likewise.
1280         * flags.h: Likewise.
1281         * fold-const.c: Likewise.
1282         * function.c: Likewise.
1283         * function.h: Likewise.
1284         * fwprop.c: Likewise.
1285         * gcc.c: Likewise.
1286         * gcov-dump.c: Likewise.
1287         * gcov-io.c: Likewise.
1288         * gcov-io.h: Likewise.
1289         * gcov.c: Likewise.
1290         * gcse.c: Likewise.
1291         * genattr.c: Likewise.
1292         * genattrtab.c: Likewise.
1293         * genautomata.c: Likewise.
1294         * genchecksum.c: Likewise.
1295         * genconfig.c: Likewise.
1296         * genflags.c: Likewise.
1297         * gengtype-parse.c: Likewise.
1298         * gengtype.c: Likewise.
1299         * gengtype.h: Likewise.
1300         * genmddeps.c: Likewise.
1301         * genmodes.c: Likewise.
1302         * genopinit.c: Likewise.
1303         * genpreds.c: Likewise.
1304         * gensupport.c: Likewise.
1305         * ggc-common.c: Likewise.
1306         * ggc-page.c: Likewise.
1307         * ggc-zone.c: Likewise.
1308         * ggc.h: Likewise.
1309         * gimple-iterator.c: Likewise.
1310         * gimple-low.c: Likewise.
1311         * gimple-pretty-print.c: Likewise.
1312         * gimple.c: Likewise.
1313         * gimple.def: Likewise.
1314         * gimple.h: Likewise.
1315         * gimplify.c: Likewise.
1316         * graphds.c: Likewise.
1317         * graphite-clast-to-gimple.c: Likewise.
1318         * gthr-nks.h: Likewise.
1319         * gthr-posix.c: Likewise.
1320         * gthr-posix.h: Likewise.
1321         * gthr-posix95.h: Likewise.
1322         * gthr-single.h: Likewise.
1323         * gthr-tpf.h: Likewise.
1324         * gthr-vxworks.h: Likewise.
1325         * gthr.h: Likewise.
1326         * haifa-sched.c: Likewise.
1327         * hard-reg-set.h: Likewise.
1328         * hooks.c: Likewise.
1329         * hooks.h: Likewise.
1330         * hosthooks.h: Likewise.
1331         * hwint.h: Likewise.
1332         * ifcvt.c: Likewise.
1333         * incpath.c: Likewise.
1334         * init-regs.c: Likewise.
1335         * integrate.c: Likewise.
1336         * ipa-cp.c: Likewise.
1337         * ipa-inline.c: Likewise.
1338         * ipa-prop.c: Likewise.
1339         * ipa-pure-const.c: Likewise.
1340         * ipa-reference.c: Likewise.
1341         * ipa-struct-reorg.c: Likewise.
1342         * ipa-struct-reorg.h: Likewise.
1343         * ipa-type-escape.c: Likewise.
1344         * ipa-type-escape.h: Likewise.
1345         * ipa-utils.c: Likewise.
1346         * ipa-utils.h: Likewise.
1347         * ipa.c: Likewise.
1348         * ira-build.c: Likewise.
1349         * ira-color.c: Likewise.
1350         * ira-conflicts.c: Likewise.
1351         * ira-costs.c: Likewise.
1352         * ira-emit.c: Likewise.
1353         * ira-int.h: Likewise.
1354         * ira-lives.c: Likewise.
1355         * ira.c: Likewise.
1356         * jump.c: Likewise.
1357         * lambda-code.c: Likewise.
1358         * lambda-mat.c: Likewise.
1359         * lambda-trans.c: Likewise.
1360         * lambda.h: Likewise.
1361         * langhooks.c: Likewise.
1362         * lcm.c: Likewise.
1363         * libgcov.c: Likewise.
1364         * lists.c: Likewise.
1365         * loop-doloop.c: Likewise.
1366         * loop-init.c: Likewise.
1367         * loop-invariant.c: Likewise.
1368         * loop-iv.c: Likewise.
1369         * loop-unroll.c: Likewise.
1370         * lower-subreg.c: Likewise.
1371         * lto-cgraph.c: Likewise.
1372         * lto-compress.c: Likewise.
1373         * lto-opts.c: Likewise.
1374         * lto-section-in.c: Likewise.
1375         * lto-section-out.c: Likewise.
1376         * lto-streamer-in.c: Likewise.
1377         * lto-streamer-out.c: Likewise.
1378         * lto-streamer.c: Likewise.
1379         * lto-streamer.h: Likewise.
1380         * lto-symtab.c: Likewise.
1381         * lto-wpa-fixup.c: Likewise.
1382         * matrix-reorg.c: Likewise.
1383         * mcf.c: Likewise.
1384         * mode-switching.c: Likewise.
1385         * modulo-sched.c: Likewise.
1386         * omega.c: Likewise.
1387         * omega.h: Likewise.
1388         * omp-low.c: Likewise.
1389         * optabs.c: Likewise.
1390         * optabs.h: Likewise.
1391         * opts-common.c: Likewise.
1392         * opts.c: Likewise.
1393         * params.def: Likewise.
1394         * params.h: Likewise.
1395         * passes.c: Likewise.
1396         * plugin.c: Likewise.
1397         * postreload-gcse.c: Likewise.
1398         * postreload.c: Likewise.
1399         * predict.c: Likewise.
1400         * predict.def: Likewise.
1401         * pretty-print.c: Likewise.
1402         * pretty-print.h: Likewise.
1403         * print-rtl.c: Likewise.
1404         * print-tree.c: Likewise.
1405         * profile.c: Likewise.
1406         * read-rtl.c: Likewise.
1407         * real.c: Likewise.
1408         * recog.c: Likewise.
1409         * reg-stack.c: Likewise.
1410         * regcprop.c: Likewise.
1411         * reginfo.c: Likewise.
1412         * regmove.c: Likewise.
1413         * regrename.c: Likewise.
1414         * regs.h: Likewise.
1415         * regstat.c: Likewise.
1416         * reload.c: Likewise.
1417         * reload1.c: Likewise.
1418         * resource.c: Likewise.
1419         * rtl.c: Likewise.
1420         * rtl.def: Likewise.
1421         * rtl.h: Likewise.
1422         * rtlanal.c: Likewise.
1423         * sbitmap.c: Likewise.
1424         * sched-deps.c: Likewise.
1425         * sched-ebb.c: Likewise.
1426         * sched-int.h: Likewise.
1427         * sched-rgn.c: Likewise.
1428         * sched-vis.c: Likewise.
1429         * sdbout.c: Likewise.
1430         * sel-sched-dump.c: Likewise.
1431         * sel-sched-dump.h: Likewise.
1432         * sel-sched-ir.c: Likewise.
1433         * sel-sched-ir.h: Likewise.
1434         * sel-sched.c: Likewise.
1435         * sel-sched.h: Likewise.
1436         * sese.c: Likewise.
1437         * sese.h: Likewise.
1438         * simplify-rtx.c: Likewise.
1439         * stack-ptr-mod.c: Likewise.
1440         * stmt.c: Likewise.
1441         * stor-layout.c: Likewise.
1442         * store-motion.c: Likewise.
1443         * stringpool.c: Likewise.
1444         * stub-objc.c: Likewise.
1445         * sync-builtins.def: Likewise.
1446         * target-def.h: Likewise.
1447         * target.h: Likewise.
1448         * targhooks.c: Likewise.
1449         * targhooks.h: Likewise.
1450         * timevar.c: Likewise.
1451         * tlink.c: Likewise.
1452         * toplev.c: Likewise.
1453         * toplev.h: Likewise.
1454         * tracer.c: Likewise.
1455         * tree-affine.c: Likewise.
1456         * tree-affine.h: Likewise.
1457         * tree-browser.def: Likewise.
1458         * tree-call-cdce.c: Likewise.
1459         * tree-cfg.c: Likewise.
1460         * tree-cfgcleanup.c: Likewise.
1461         * tree-chrec.c: Likewise.
1462         * tree-chrec.h: Likewise.
1463         * tree-complex.c: Likewise.
1464         * tree-data-ref.c: Likewise.
1465         * tree-data-ref.h: Likewise.
1466         * tree-dfa.c: Likewise.
1467         * tree-dump.c: Likewise.
1468         * tree-dump.h: Likewise.
1469         * tree-eh.c: Likewise.
1470         * tree-flow-inline.h: Likewise.
1471         * tree-flow.h: Likewise.
1472         * tree-if-conv.c: Likewise.
1473         * tree-inline.c: Likewise.
1474         * tree-into-ssa.c: Likewise.
1475         * tree-loop-distribution.c: Likewise.
1476         * tree-loop-linear.c: Likewise.
1477         * tree-mudflap.c: Likewise.
1478         * tree-nested.c: Likewise.
1479         * tree-nomudflap.c: Likewise.
1480         * tree-nrv.c: Likewise.
1481         * tree-object-size.c: Likewise.
1482         * tree-optimize.c: Likewise.
1483         * tree-outof-ssa.c: Likewise.
1484         * tree-parloops.c: Likewise.
1485         * tree-pass.h: Likewise.
1486         * tree-phinodes.c: Likewise.
1487         * tree-predcom.c: Likewise.
1488         * tree-pretty-print.c: Likewise.
1489         * tree-profile.c: Likewise.
1490         * tree-scalar-evolution.c: Likewise.
1491         * tree-ssa-address.c: Likewise.
1492         * tree-ssa-alias.c: Likewise.
1493         * tree-ssa-ccp.c: Likewise.
1494         * tree-ssa-coalesce.c: Likewise.
1495         * tree-ssa-copy.c: Likewise.
1496         * tree-ssa-copyrename.c: Likewise.
1497         * tree-ssa-dce.c: Likewise.
1498         * tree-ssa-dom.c: Likewise.
1499         * tree-ssa-dse.c: Likewise.
1500         * tree-ssa-forwprop.c: Likewise.
1501         * tree-ssa-ifcombine.c: Likewise.
1502         * tree-ssa-live.c: Likewise.
1503         * tree-ssa-live.h: Likewise.
1504         * tree-ssa-loop-ch.c: Likewise.
1505         * tree-ssa-loop-im.c: Likewise.
1506         * tree-ssa-loop-ivcanon.c: Likewise.
1507         * tree-ssa-loop-ivopts.c: Likewise.
1508         * tree-ssa-loop-manip.c: Likewise.
1509         * tree-ssa-loop-niter.c: Likewise.
1510         * tree-ssa-loop-prefetch.c: Likewise.
1511         * tree-ssa-loop-unswitch.c: Likewise.
1512         * tree-ssa-loop.c: Likewise.
1513         * tree-ssa-math-opts.c: Likewise.
1514         * tree-ssa-operands.c: Likewise.
1515         * tree-ssa-operands.h: Likewise.
1516         * tree-ssa-phiopt.c: Likewise.
1517         * tree-ssa-phiprop.c: Likewise.
1518         * tree-ssa-pre.c: Likewise.
1519         * tree-ssa-propagate.c: Likewise.
1520         * tree-ssa-reassoc.c: Likewise.
1521         * tree-ssa-sccvn.c: Likewise.
1522         * tree-ssa-sink.c: Likewise.
1523         * tree-ssa-structalias.c: Likewise.
1524         * tree-ssa-ter.c: Likewise.
1525         * tree-ssa-threadedge.c: Likewise.
1526         * tree-ssa-threadupdate.c: Likewise.
1527         * tree-ssa-uncprop.c: Likewise.
1528         * tree-ssa.c: Likewise.
1529         * tree-ssanames.c: Likewise.
1530         * tree-switch-conversion.c: Likewise.
1531         * tree-tailcall.c: Likewise.
1532         * tree-vect-data-refs.c: Likewise.
1533         * tree-vect-generic.c: Likewise.
1534         * tree-vect-loop-manip.c: Likewise.
1535         * tree-vect-loop.c: Likewise.
1536         * tree-vect-patterns.c: Likewise.
1537         * tree-vect-slp.c: Likewise.
1538         * tree-vect-stmts.c: Likewise.
1539         * tree-vectorizer.c: Likewise.
1540         * tree-vectorizer.h: Likewise.
1541         * tree-vrp.c: Likewise.
1542         * tree.c: Likewise.
1543         * tree.def: Likewise.
1544         * tree.h: Likewise.
1545         * treestruct.def: Likewise.
1546         * unwind-compat.c: Likewise.
1547         * unwind-dw2-fde-glibc.c: Likewise.
1548         * unwind-dw2.c: Likewise.
1549         * value-prof.c: Likewise.
1550         * value-prof.h: Likewise.
1551         * var-tracking.c: Likewise.
1552         * varasm.c: Likewise.
1553         * varpool.c: Likewise.
1554         * vec.c: Likewise.
1555         * vec.h: Likewise.
1556         * vmsdbgout.c: Likewise.
1557         * web.c: Likewise.
1558         * xcoffout.c: Likewise.
1559
1560 2009-11-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1561
1562         * pa.c (output_call): Only use sr4 for long interspace calls if
1563         call binds local and generating non PIC code.
1564         (attr_length_call): Adjust length calculation for above.
1565
1566 2009-11-25  Uros Bizjak  <ubizjak@gmail.com>
1567
1568         * config/i386/i386.md (plusminus_carry_mnemonic): New code attribute.
1569         (add<mode>3_carry): Change operand order of plus RTX.
1570         (*add<mode>3_carry): Ditto.
1571         (*addsi3_carry_zext): Ditto.
1572         (*add<dwi>3_doubleword): Update for changed operand order.
1573         (*negti2_1 splitter): Ditto.
1574         (*negdi2_1 splitter): Ditto.
1575         (<plusminus_insn><mode>3_carry): Macroize expander from
1576         {add,sub}<mode>3_carry patterns using plusminus code iterator.
1577         (*<plusminus_insn><mode>3_carry): Macroize insn from
1578         *{add,sub}<mode>3_carry patetrns using plusminus code iterator.
1579         (neg<mode>2): Macroize expander from neg{qi,hi,si,di,ti}2
1580         patterns using SDWIM mode iterator.
1581         (*neg<dwi>2_doubleword): New insn_and_split pattern.  Macroize
1582         pattern from *neg{di,ti}2_1 patterns and corresponding splitters
1583         using DWIH mode iterator.
1584         (*neg<mode>2_1): Macroize insn from neg{qi,hi,si,di}2_1 patterns
1585         using SWI mode iterator.
1586         (*neg<mode>2_cmpz): Ditto from neg{qi,hi,si,di}2_cmpz patterns.
1587         (one_cmpl<mode>2): Macroize expander from one_cmpl{qi,hi,si,di}2
1588         patterns using SWIM mode iterator.
1589         (*one_cmpl<mode>2_1): Macroize insn from one_cmpl{hi,si,di}2_1
1590         patterns using SWI248 mode iterator.
1591         (*one_cmpl<mode>2_2): Macroize insn from one_cmpl{qi,hi,si,di}2_2
1592         patterns using SWI mode iterator.
1593         (*one_cmpl<mode>2_2 splitter): Macroize splitter from
1594         one_cmpl{qi,hi,si,di}2_2 splitter patterns using SWI mode iterator.
1595
1596 2009-11-24  Michael Matz  <matz@suse.de>
1597
1598         * expr.c (set_storage_via_libcall): Fix build_call_expr call.
1599
1600 2009-11-24  David Binderman  <dcb314@hotmail.com>
1601
1602         * expr.c (store_field): Remove set but not used local variable
1603         width_mask.
1604         (expand_expr_real_2): Remove treeop2.
1605         * gcse.c (update_ld_motion_stores): Remove new_rtx.
1606         * haifa-sched.c (max_issue): Remove points.
1607         (sched_create_recovery_edges): Remove e.
1608         * ira-costs.c (setup_allocno_cover_class_and_costs): Remove mode.
1609
1610 2009-11-24  Nick Clifton  <nickc@redhat.com>
1611
1612         * config/v850/v850.c (function_arg): Fix handling of zero-length
1613         function arguments.
1614
1615 2009-11-24  Michael Matz  <matz@suse.de>
1616
1617         * tree.h (union tree_ann_d): Don't declare.
1618         (tree_base): Remove ann field.
1619         (struct var_ann_d): Declare forward.
1620         (tree_result_decl, tree_parm_decl, tree_var_decl): Add ann field.
1621         (DECL_VAR_ANN_PTR): New macro.
1622         * tree-dfa.c (create_var_ann): Rewrite in terms of above macro,
1623         accept only VAR, PARM or RESULT decls.
1624         (create_tree_common_ann): Remove.
1625         (remove_referenced_var): Use DECL_VAR_ANN_PTR.
1626         * tree-eh.c (lookup_expr_eh_lp): Remove.
1627         * tree-flow-inline.h (var_ann, get_var_ann): Rewrite in terms of
1628         DECL_VAR_ANN_PTR.
1629         (ann_type, tree_common_ann, get_tree_common_ann): Remove.
1630         * tree-flow.h (enum tree_ann_type): Remove.
1631         (struct tree_ann_common_d): Remove.
1632         (struct var_ann_d): Remove common field.
1633         (union tree_ann_d): Remove.
1634         (tree_ann_t, tree_ann_common_t): Remove typedefs.
1635         (tree_common_ann, get_tree_common_ann, ann_type,
1636         create_tree_common_ann, lookup_expr_eh_lp): Don't declare.
1637         * tree-ssa.c (delete_tree_ssa): Use DECL_VAR_ANN_PTR.
1638         * tree.c (copy_node_stat): Use DECL_VAR_ANN_PTR.
1639         * builtins.c (expand_builtin_memcpy): Use
1640         currently_expanding_gimple_stmt instead of tree annotation.
1641         (expand_builtin_memset_args): Ditto.
1642         * cfgexpand.c (currently_expanding_gimple_stmt): Add global variable.
1643         (expand_call_stmt): Don't set tree annotation.
1644         (expand_gimple_basic_block): Set currently_expanding_gimple_stmt.
1645         * expr.c (expand_expr_real): Don't call lookup_expr_eh_lp.
1646         * gimple.h (currently_expanding_gimple_stmt): Declare.
1647
1648 2009-11-24  Paolo Carlini  <paolo.carlini@oracle.com>
1649
1650         * dwarf2out.c (add_location_or_const_value_attribute): Remove
1651         useless NOTE_VAR_LOCATION_STATUS call.
1652         * cfgrtl.c (commit_one_edge_insertion): Remove useless loop, tidy.
1653
1654 2009-11-24  Rafael Avila de Espindola  <espindola@google.com>
1655
1656         * lto-wrapper.c (lto_wrapper_exit): Don't try to delete files if
1657         being called recursively.
1658
1659 2009-11-24  Basile Starynkevitch  <basile@starynkevitch.net>
1660
1661         * Makefile.in (PLUGIN_HEADERS): Added files: cppdefault.h flags.h
1662         $(MD5_H) params.def params.h prefix.h tree-inline.h.
1663
1664 2009-11-24  Paul Brook  <paul@codesourcery.com>
1665
1666         * gcc/config/arm/arm.c (arm_compute_save_reg0_reg12_mask): Fix comment
1667         typo.
1668
1669 2009-11-24  Julian Brown  <julian@codesourcery.com>
1670             Paul Brook  <paul@codesourcery.com>
1671
1672         * config/arm/arm.c (TARGET_DWARF_REGISTER_SPAN): Define.
1673         (arm_dwarf_register_span): New function.
1674         (arm_dbx_register_number): Add VFPv3 dwarf numbering.
1675
1676 2009-11-24  David Binderman  <dcb314@hotmail.com>
1677
1678         * cfgrtl.c (commit_one_edge_insertion): Remove set but not used
1679         local variable bb_note.
1680         * dominance.c (get_dominated_by): Likewise local var n.
1681         (output_file_names): Likewise local var idx.
1682         (add_location_or_const_value_attribute): Likewise local var status.
1683         * dwarf2out.c (gen_variable_die): Likewise local var field.
1684         * emit-rtl.c (no_line_numbers): Remove.
1685         (init_emit_once): Remove line_numbers parameter.
1686         * rtl.h (init_emit_once): Adjust prototype.
1687         * toplev.c (backend_init): Adjust init_emit_once call.
1688
1689 2009-11-24  Richard Guenther  <rguenther@suse.de>
1690
1691         PR tree-optimization/42142
1692         * tree-ssa-dce.c (mark_aliased_reaching_defs_necessary_1):
1693         Handle iv-dependent (non-)kills properly.
1694         (mark_aliased_reaching_defs_necessary): Pass the basic-block
1695         of the reference statement to mark_aliased_reaching_defs_necessary_1.
1696
1697 2009-11-24  Martin Jambor  <mjambor@suse.cz>
1698
1699         PR tree-optimization/42154
1700         * tree-sra.c (struct access): Added comments.
1701         (sra_modify_expr): Build references to the old aggregate with
1702         build_ref_for_offset instead of reusing access->expr.
1703         (load_assign_lhs_subreplacements): Likewise.
1704
1705 2009-11-24  Uros Bizjak  <ubizjak@gmail.com>
1706
1707         * config/i386/i386.md (add<mode>3_carry): Change insn pattern
1708         to expander.
1709         (sub<mode>3_carry): Ditto.
1710         (x86_mov<mode>cc_0_m1): Ditto.
1711         (*add<mode>3_carry): New insn pattern.  Use VOIDmode match_operator
1712         for ix86_carry_flag_operator operator predicate.
1713         (*sub<mode>3_carry): Ditto.
1714         (*x86_mov<mode>cc_0_m1): Ditto.
1715         (*addsi3_carry_zext): Use VOIDmode match_operator for
1716         ix86_carry_flag_operator operator predicate.
1717         (*subsi3_carry_zext): Ditto.
1718         (*x86_mov<mode>cc_0_m1_s): Ditto.
1719         (*x86_mov<mode>cc_0_m1_neg): Ditto.
1720         * config/i386/predocates.md (ix86_carry_flag_operator): Do not
1721         check operator sub-expressions for FLAGS_REG and const0_rtx.
1722         * config/i386/i386.c (*ix86_gen_sub3_carry): Update prototype.
1723         (ix86_expand_int_movcc): Update calls to gen_x86_mov{si,di}cc_0_m1.
1724         (ix86_expand_int_addcc): Update calls to
1725         gen_{add,sub}{qi,hi,si,di}3_carry.  Do not set mode of compare_op.
1726         (ix86_expand_strlensi_unroll_1): Update calls to ix86_gen_sub3_carry.
1727         Do not set mode of compare operation.
1728
1729 2009-11-23  Jan Hubicka  <jh@suse.cz>
1730
1731         PR middle-end/42151
1732         * ipa-inline.c (inline_transform): Avoid ICE when transform is called
1733         twice.
1734
1735 2009-11-23  Jan Hubicka  <jh@suse.cz>
1736
1737         * ipa-cp.c (ipcp_compute_node_scale): Work around completely
1738         wrong profile updates.
1739         * predict.c (counts_to_freqs): Be expected for ENTRY/EXIT block
1740         having largest frequency.
1741         * ira-live.c (ira_implicitly_set_insn_hard_regs): Silecne
1742         used uninitalized warning.
1743         * tree-optimize.c (execute_fixup_cfg): Rescale entry and exit block
1744         frequencies.
1745
1746 2009-11-23  Uros Bizjak  <ubizjak@gmail.com>
1747
1748         * config/alpha/alpha.md (*cmp_sadd_sidi): Use gen_lowpart instead
1749         of gen_rtx_REG to generate operand 5.
1750         (*cmp_ssub_sidi): Ditto.
1751
1752 2009-11-23  Richard Henderson  <rth@redhat.com>
1753
1754         * config/i386/i386.c (avx_vpermilp_parallel): Fix sign compare
1755         mismatch.
1756
1757 2009-11-23  Paul Brook  <paul@codesourcery.com>
1758
1759         * config/arm/arm.c (arm_compute_save_reg0_reg12_mask): Add special
1760         case for noreturn functions.
1761         (arm_compute_save_reg_mask): Remove special noreturn handling.
1762
1763 2009-11-23  Richard Guenther  <rguenther@suse.de>
1764
1765         * tree-dfa.c (get_ref_base_and_extent): Adjust maximum access
1766         size for DECL bases.
1767
1768 2009-11-22  Richard Henderson  <rth@redhat.com>
1769
1770         * i386.c (avx_vpermilp_parallel): New function.
1771         * i386-protos.h: Declare it.
1772         * predicates.md (avx_vpermilp_v8sf_operand, avx_vpermilp_v4df_operand,
1773         avx_vpermilp_v4sf_operand, avx_vpermilp_v2df_operand): New.
1774         * sse.md (AVXMODEFDP, AVXMODEFSP): New iterators.
1775         (ssescalarnum, ssedoublesizemode): Add AVX modes.
1776         (vpermilbits): Remove.
1777         (avx_vpermil<mode>): Change insns to expanders.
1778         (*avx_vpermil<mode>): New.  Use vec_select.
1779
1780 2009-11-22  Richard Earnshaw  <rearnsha@arm.com>
1781
1782         * opts.c (decode_options): Don't enable flag_schedule_insns
1783         when optimizing for size.
1784         * doc/invoke.texi: Document change.
1785
1786 2009-11-22  Uros Bizjak  <ubizjak@gmail.com>
1787
1788         PR target/42113
1789         * config/alpha/alpha.md (*cmp_sadd_si): Change mode
1790         of scratch register to SImode.
1791         (*cmp_sadd_sidi): Ditto.
1792         (*cmp_ssub_si): Ditto.
1793         (*cmp_ssub_sidi): Ditto.
1794
1795 2009-11-21  Ian Lance Taylor  <iant@google.com>
1796
1797         * Makefile.in (HOST_LIBS): Move higher in file.
1798         (LINKER, LINKER_FLAGS): If ENABLE_BUILD_WITH_CXX, but $(HOST_LIBS)
1799         is not empty, set to $(CC) and $(CFLAGS).
1800
1801 2009-11-22  Martin Jambor  <mjambor@suse.cz>
1802
1803         * tree-cfg.c (verify_types_in_gimple_reference): Error out on
1804         V_C_E of an SSA_NAME or an invariant if lvalue is required.
1805         (verify_gimple_call): Verify LHS also with with
1806         verify_types_in_gimple_reference.
1807
1808 2009-11-21  Martin Jambor  <mjambor@suse.cz>
1809
1810         PR middle-end/42025
1811         * tree-sra.c (access_precludes_ipa_sra_p): New function.
1812         (splice_param_accesses): Check all accesses by calling
1813         access_precludes_ipa_sra_p.
1814         (sra_ipa_modify_expr): Rename argument erite to dont_convert and do
1815         not convert types if it is true.
1816         (sra_ipa_modify_assign): Convert types in case of mismatch.
1817
1818 2009-11-21  Kaushik Phatak  <kaushik.phatak@kpitcummins.com>
1819
1820         * config/sh/sh.md (cmpeqsi_t-1): Use logical_operand predicate
1821         for operand 1.
1822
1823 2009-11-21  Adam Nemet  <adambnemet@gmail.com>
1824
1825         * config/mips/mips-protos.h (mulsidi3_gen_fn): New typedef.
1826         (mips_mulsidi3_gen_fn): Declare new function.
1827         * config/mips/mips.c (mips_mulsidi3_gen_fn): New function.
1828         * config/mips/mips.md (<u>mulsidi3): Change condition to use
1829         mips_mulsidi3_gen_fn.  Use mips_mulsidi3_gen_fn to generate the insn.
1830         (<u>mulsidi3_64bit): Don't match for ISA_HAS_DMUL3.
1831         (mulsidi3_64bit_dmul): New define_insn.
1832
1833 2009-11-21  Ben Elliston  <bje@au.ibm.com>
1834
1835         * gengtype-lex.l: Enable noinput flex option.
1836         (YY_NO_INPUT): Remove define.
1837
1838 2009-11-21  Alexandre Oliva  <aoliva@redhat.com>
1839
1840         * tree-ssa.c (find_released_ssa_name): Handle NULL wi.
1841         (insert_debug_temp_for_var_def): Handle degenerate PHI nodes.
1842         (insert_debug_temps_for_defs): Handle PHI nodes.
1843         * tree-ssa-dom.c (degenerate_phi_result): Don't crash on released
1844         SSA names.
1845
1846 2009-11-21  Alexandre Oliva  <aoliva@redhat.com>
1847
1848         * tree-ssa-pre.c (remove_dead_inserted_code): Don't release_defs
1849         after remove_phi_node.
1850
1851 2009-11-21  Alexandre Oliva  <aoliva@redhat.com>
1852
1853         PR tree-optimization/42078
1854         * gimple.h (gimple_replace_lhs): New declaration.
1855         * gimple.c (gimple_replace_lhs): New function.
1856         * tree-ssa-math-opts.c (execute_cse_reciprocals): Call it before
1857         modifying the call.
1858
1859 2009-11-20  Sebastian Pop  <sebastian.pop@amd.com>
1860
1861         * config/i386/sse.md (*xop_pmacsdql_mem): Don't call reg_mentioned_p.
1862         (xop_mulv2div2di3_low): Same.
1863         (*xop_pmacsdqh_mem): Same.
1864
1865 2009-11-20  Richard Henderson  <rth@redhat.com>
1866
1867         * config/i386/i386-builtin-types.awk: New file.
1868         * config/i386/i386-builtin-types.def: New file.
1869         * config/i386/t-i386: Use them to build i386-builtin-types.inc.
1870         * config/i386/i386.c: Include it.
1871         (ix86_builtin_type_tab, ix86_get_builtin_type): New.
1872         (ix86_builtin_func_type_tab, ix86_get_builtin_func_type): New.
1873         (struct builtin_isa): Remove GTY marker.  Replace tree type with
1874         ix86_builtin_func_type; add set_and_not_built_p.
1875         (def_builtin): Change type parameter to tcode; use
1876         ix86_get_builtin_func_type; update all callers.  Accept zero mask
1877         to mean the builtin is unconditionally available.
1878         (ix86_add_new_builtins): Use set_and_not_built_p instead of type
1879         being set to NULL.
1880         (enum ix86_special_builtin_type, enum ix86_builtin_type): Remove.
1881         Update some users to rationalized enumeration codes from new include.
1882         (enum multi_arg_type): Remove.  Replace all enumeration values
1883         with defines to new ix86_builtin_func_type.
1884         (ix86_init_mmx_sse_builtins): Don't build any types here.  Defer
1885         all type resolution to def_builtin.
1886         (ix86_init_builtin_types): Split out from ...
1887         (ix86_init_builtins): ... here.  Use ix86_get_builtin_func_type.
1888
1889 2009-11-20  Michael Meissner  <meissner@linux.vnet.ibm.com>
1890
1891         PR target/41787
1892         * config/rs6000/rs6000.c (struct machine_function): Revert
1893         2009-10-23 change to set VRSAVE to non-0 if we use VSX.
1894         (rs6000_expand_to_rtl_hook): Ditto.
1895         (rs6000_check_vector_mode): Ditto.
1896         (compute_vrsave_mask): Ditto.
1897
1898 2009-11-20  Paul Brook  <paul@codesourcery.com>
1899
1900         * doc/invoke.texi: Document ARM -mcpu=cortex-a5.
1901         * config/arm/arm-cores.def: Add cortex-a5.
1902         * config/arm/bpabi.h (BE8_LINK_SPEC): Add mcpu=cortex-a5.
1903         * config/arm/arm-tune.md: Regenerate.
1904
1905 2009-11-20 Olga Golovanevsky <olga@il.ibm.com>
1906
1907         PR middle-end/39960
1908         * ipa-struct-reorg.c (find_pos_in_stmt): New parameter.
1909         (ref_pos): New field in structure.
1910         (insert_new_var_in_stmt): New function.
1911
1912
1913 2009-11-20  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1914
1915         * config.gcc (alpha*-dec-osf[45]*): Set use_gcc_stdint.
1916         * config/alpha/osf.h (SIG_ATOMIC_TYPE): Define.
1917         (INT8_TYPE, INT16_TYPE, INT32_TYPE, INT64_TYPE): Define.
1918         (UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE): Define.
1919         (INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
1920         INT_LEAST64_TYPE): Define.
1921         (UINT_LEAST8_TYPE, UINT_LEAST16_TYPE, UINT_LEAST32_TYPE,
1922         UINT_LEAST64_TYPE): Define.
1923         (INT_FAST8_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE,
1924         INT_FAST64_TYPE): Define.
1925         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
1926         UINT_FAST64_TYPE): Define.
1927         (INTPTR_TYPE, UINTPTR_TYPE): Define.
1928
1929 2009-11-20  Julian Brown  <julian@codesourcery.com>
1930
1931         * config/arm/arm.h (ASM_OUTPUT_REG_PUSH): Handle STATIC_CHAIN_REGNUM
1932         specially for Thumb-1.
1933         (ASM_OUTPUT_REG_POP): Likewise.
1934
1935 2009-11-19  Jason Merrill  <jason@redhat.com>
1936
1937         * dwarf2out.c (get_context_die): Take TYPE_MAIN_VARIANT.
1938
1939 2009-11-19  Basile Starynkevitch  <basile@starynkevitch.net>
1940             Rafael Avila de Espindola  <espindola@google.com>
1941
1942         * doc/plugins.texi (Plugin initialization): Added advices for
1943         retrieving the version of GCC at plugin compilation and loading times.
1944
1945 2009-11-19  Basile Starynkevitch  <basile@starynkevitch.net>
1946
1947         * plugin.c (FMT_FOR_PLUGIN_EVENT): added definition.
1948         (dump_active_plugins): output to file everything. Use
1949         internationalized dump & FMT_FOR_PLUGIN_EVENT.
1950
1951 2009-11-19  Richard Guenther  <rguenther@suse.de>
1952
1953         * gimple.c (canonicalize_cond_expr_cond): Strip conversions
1954         around truth-valued expressions.
1955         * tree.c (free_lang_data): Untangle check for LTO frontend.
1956
1957 2009-11-19  Jakub Jelinek  <jakub@redhat.com>
1958
1959         * tree.c (need_assembler_name_p): Use cgraph_get_node instead
1960         of cgraph_node_for_decl.
1961         * cgraph.h (cgraph_node_for_decl): Remove prototype.
1962         * cgraph.c (cgraph_node_for_decl): Remove.
1963         (cgraph_get_node): Just return NULL if !cgraph_hash.
1964
1965 2009-11-19  Paul Brook  <paul@codesourcery.com>
1966
1967         * config.gcc: Add new ARM --with-fpu options.
1968         * doc/invoke.texi: Docuent ARM -mfpu=fpv4-sp-d16.
1969         * config/arm/arm.c (all_fpus): Add fpv4-sp-d16.
1970
1971 2009-11-18  Richard Guenther  <rguenther@suse.de>
1972
1973         * gimple.h (union gimple_statement_d): Add gsmembase member.
1974         (gimple_vuse_op): Use gsmembase for access.
1975         (gimple_vdef_op): Likewise.
1976         (gimple_vuse): Likewise.
1977         (gimple_vdef): Likewise.
1978         (gimple_vuse_ptr): Likewise.
1979         (gimple_vdef_ptr): Likewise.
1980         (gimple_set_vuse): Likewise.
1981         (gimple_set_vdef): Likewise.
1982         * gsstruct.def (GSS_WITH_MEM_OPS_BASE): Add.
1983
1984 2009-11-18  Daniel Jacobowitz  <dan@codesourcery.com>
1985
1986         * doc/arm-neon-intrinsics.texi: Regenerated.
1987
1988 2009-11-18  Daniel Jacobowitz  <dan@codesourcery.com>
1989
1990         * config/arm/neon-docgen.ml (analyze_shape_elt): Handle alternatives.
1991
1992 2009-11-18  Paul Brook  <paul@codesourcery.com>
1993             Daniel Jacobowitz  <dan@codesourcery.com>
1994
1995         * config/arm/arm.c (FL_ARCH7EM, FL_FOR_ARCH7EM): Define.
1996         (arm_arch7em): New variable.
1997         (all_architectures): Add armv7e-m.
1998         (arm_override_options): Set arm_arch7em.
1999         * config/arm/arm.h (TARGET_DSP_MULTIPLY, TARGET_INT_SIMD):
2000         Include arm_arch7em.
2001         (arm_arch7em): Declare.
2002
2003 2009-11-18  Richard Guenther  <rguenther@suse.de>
2004
2005         * lto-streamer-in.c (input_gimple_stmt): Assert that we find
2006         a valid field decl if checking is enabled.
2007
2008 2009-11-18  Martin Jambor  <mjambor@suse.cz>
2009
2010         * ipa-prop.h (struct ipa_param_call_note): New field lto_stmt_uid.
2011         (lto_ipa_fixup_call_notes): Declare.
2012         * ipa-prop.c (ipa_note_param_call): Store gimple uid.
2013         (update_call_notes_after_inlining): Copy call stmt uid to the new
2014         edge.
2015         (ipa_write_param_call_note): New function.
2016         (ipa_read_param_call_note): New function
2017         (ipa_write_node_info): Write also param call notes.  Removed a bogus
2018         comment, reformatted to fit 80 columns.
2019         (ipa_read_node_info): Read also param call notes. Removed a bogus
2020         comment.  Remove ipa_edge_args_vector growth.
2021         (lto_ipa_fixup_call_notes): New function.
2022         * ipa-cp.c (pass_ipa_cp): Add stmt_fixup hook.
2023         * ipa-inline.c (cgraph_mark_inline_edge): Perform indirect
2024         inlining regardless of flag_wpa.
2025         (cgraph_decide_inlining_of_small_functions): Likewise.
2026         (cgraph_decide_inlining): Likewise.
2027         (inline_read_summary): Likewise.
2028
2029 2009-11-18  Jan Hubicka  <jh@suse.cz>
2030
2031         * predict.c (compute_function_frequency): Export.
2032         * predict.h (compute_function_frequency): Declare.
2033         * tree-optimize.c (execute_fixup_cfg): Rescale frequencies.
2034
2035 2009-11-18  Martin Jambor  <mjambor@suse.cz>
2036
2037         * passes.c (ipa_write_summaries): Call renumber_gimple_stmt_uids
2038         on all nodes we write summaries for.
2039
2040 2009-11-18  Shujing Zhao  <pearly.zhao@oracle.com>
2041
2042         PR middle-end/22201
2043         * params.def (PARAM_INLINE_UNIT_GROWTH, PARAM_IPCP_UNIT_GROWTH)
2044         (PARAM_EARLY_INLINING_INSNS, PARAM_IRA_MAX_LOOPS_NUM)
2045         (PARAM_IRA_MAX_CONFLICT_TABLE_SIZE)
2046         (PARAM_LOOP_INVARIANT_MAX_BBS_IN_LOOP)
2047         (PARAM_MIN_INSN_TO_PREFETCH_RATIO)
2048         (PARAM_PREFETCH_MIN_INSN_TO_MEM_RATIO)
2049         (PARAM_IPA_SRA_PTR_GROWTH_FACTOR): Uppercase the first letter of the
2050         description string.
2051
2052 2009-11-18  Jakub Jelinek  <jakub@redhat.com>
2053
2054         * dwarf2out.c (loc_list_from_tree): Don't call rtl_for_decl_location
2055         unnecessarily.
2056         (rtl_for_decl_location): Try harder to get a rtl for TREE_STATIC vars.
2057
2058         PR c++/3187
2059         * cgraph.h (struct cgraph_node): Add same_body and same_body_alias
2060         fields.
2061         (cgraph_same_body_alias, cgraph_remove_same_body_alias): New
2062         prototypes.
2063         * cgraphunit.c (cgraph_expand_function, cgraph_emit_thunks,
2064         cgraph_materialize_all_clones): Handle same_body aliases.
2065         * cgraph.c (cgraph_allocate_node): New function.
2066         (cgraph_create_node): Use it.
2067         (cgraph_node_for_decl, cgraph_node, cgraph_get_node,
2068         cgraph_node_for_asm, cgraph_remove_node): Handle same_body aliases.
2069         (cgraph_same_body_alias, cgraph_remove_same_body_alias): New
2070         functions.
2071         * lto-cgraph.c (lto_output_node): Stream out same_body aliases.
2072         (input_node): Stream in same_body aliases.
2073         * lto-symtab.c (lto_cgraph_replace_node): Clear node pointers
2074         for same_body aliases.
2075         (lto_symtab_merge_cgraph_nodes_1): Handle same_body aliases.
2076
2077 2009-11-18  Iain Sandoe <iain.sandoe@sandoe-acoustics.co.uk>
2078
2079         PR other/39888
2080         * config/darwin.h: Use the extension stub libraries to access
2081         current libgcc_s features.
2082
2083 2009-11-18  Alexandre Oliva  <aoliva@redhat.com>
2084
2085         PR debug/41926
2086         * tree-vect-loop.c (vect_loop_kill_debug_uses): New.
2087         (vect_transform_loop): Call it.
2088
2089 2009-11-18  Alexandre Oliva  <aoliva@redhat.com>
2090
2091         * tree-ssa.c (insert_debug_temp_for_var_def): Fix handling of
2092         released SSA names.
2093
2094 2009-11-18  Alexandre Oliva  <aoliva@redhat.com>
2095
2096         PR debug/41888
2097         PR debug/41886
2098         * graphite-scop-detection.c (stmt_simple_for_scop_p): Debug stmts
2099         are ok.
2100         * graphite-sese-to-poly.c (graphite_stmt_p): Likewise.
2101         (try_generate_gimple_bb): Skip debug stmts when finding data refs.
2102         * sese.c (sese_build_liveouts_bb): Skip debug stmts.
2103         (sese_bad_liveouts_use): New.
2104         (sese_reset_debug_liveouts_bb): New.
2105         (sese_build_liveouts): Use it.
2106         (rename_variables_in_stmt): Reset debug stmts rather than creating
2107         new vars for them.
2108         (expand_scalar_variable_stmt): Likewise.
2109
2110 2009-11-18  Alexandre Oliva  <aoliva@redhat.com>
2111
2112         * df-scan.c (df_ref_create): Don't mark BB as dirty on debug insns.
2113         (df_ref_remove): Likewise.
2114
2115 2009-11-17  Jan Hubicka  <jh@suse.cz>
2116
2117         * ipa-struct-reorg.c (update_cgraph_with_malloc_call): Fix profile
2118         info.
2119
2120 2009-11-17  Eric Botcazou  <ebotcazou@adacore.com>
2121
2122         * toplev.c (process_options): Remove dead code.
2123         * doc/invoke.texi (-frename-registers): Mention -fpeel-loops.
2124
2125 2009-11-17  Rafael Avila de Espindola  <espindola@google.com>
2126
2127         * lto-symtab.c (lto_symtab_resolve_symbols): Always initialize the
2128         nodes.
2129
2130 2009-11-17  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2131
2132         PR tree-optimization/41857
2133         * tree-ssa-address.c (move_hint_to_base): Use void pointer to
2134         TYPE's address space instead of pointer to TYPE.
2135
2136 2009-11-17  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2137
2138         * reload.c (find_reloads_address): Fix typo.
2139
2140 2009-11-17  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2141
2142         * config/spu/spu.c (get_pic_reg): Use LAST_ARG_REGNUM as PIC
2143         registers in leaf functions if possible.
2144
2145 2009-11-17  Maxim Kuvyrkov  <maxim@codesourcery.com>
2146
2147         * config/m68k/m68k-devices.def: Add MCF5441x family.
2148
2149 2009-11-17  Jan Hubicka  <jh@suse.cz>
2150
2151         * cgraph.c (cgraph_update_edges_for_call_stmt_node): Do not access
2152         removed node.
2153         * cgraphunit.c (verify_cgraph_node): Verify frequencies for match.
2154
2155 2009-11-17  Uros Bizjak  <ubizjak@gmail.com>
2156
2157         * config/i386/predicates.md (x86_64_szext_general_operand): Do not
2158         nest ior expressions.
2159         (x86_64_szext_nonmemory_operand): Ditto.
2160         (call_insn_operand): Ditto.
2161
2162 2009-11-16  Alexandre Oliva  <aoliva@redhat.com>
2163
2164         * stmt.c (expand_asm_stmt): Get locus from stmt.
2165
2166 2009-11-16  Alexandre Oliva  <aoliva@redhat.com>
2167
2168         * tree-cfg.c (gimple_redirect_edge_and_branch) <case GIMPLE_ASM>:
2169         Create the decl label for the new dest block on demand.  Require
2170         a fallthrough edge if no asm labels were redirected.
2171
2172 2009-11-16  Uros Bizjak  <ubizjak@gmail.com>
2173
2174         * config/i386/i386.md (cbranchsi4): Use nonimmediate_operand for
2175         operand 1 predicate.
2176         (cstoresi4): Ditto for operand 2.
2177         (cbranch<mode>4): Macroize expander from cbranch{qi,hi,si,di,ti}4
2178         patterns using SDWIM mode iterator.
2179         (cstore<mode>4): Macroize expander from cstore{qi,hi,si,di}4 patterns
2180         using SWIM mode iterator.
2181         (cmpdi_1): Rename from cmpdi_1_rex64.
2182         (cmp<mode>_1): Macroize expander from cmp{si,di}_1 patterns using
2183         SWI48 mode iterator.
2184         (*cmp<mode>_1): Macroize insn from *cmp{qi,hi,si,di}_1_insn patterns
2185         using SWI mode iterator.
2186         (*cmp<mode>_ccno_1): Ditto from *cmp{qi,hi,si,di}_ccno_1.
2187         (*cmp<mode>_minus_1): Ditto from *cmp{qi,hi,si,di}_minus_1.
2188         (*cmpqi_ext_3_insn): Make private.
2189         (*cmpqi_ext_3_insn_rex64): Make private.
2190         (cmpstrnsi): Update for renamed cmpdi_1_rex64.
2191         * config/i386/predicates.md (cmpsi_operand): Remove.
2192
2193 2009-11-16  Paul Brook  <paul@codesourcery.com>
2194
2195         * doc/invoke.texi: Document ARM VFPv4 based FPUs.
2196         * config/arm/arm.c (all_fpus): Add VFPv4 entries.
2197
2198 2009-11-14  Jan Hubicka  <jh@suse.cz>
2199
2200         * cgraphbuild.c (compute_call_stmt_bb_frequency): Use proper
2201         ENTRY_BLOCK_PTR.
2202         * cgraph.c (cgraph_clone_edge): Avoid freq_scale 0 to completely
2203         zero out all callees.
2204         * cgraphunit.c (verify_cgraph_node): Verify cgraph nodes for
2205         frequency and count match.
2206         * ipa-inline.c (update_noncloned_frequencies): New function.
2207         (cgraph_clone_inlined_nodes): Use it.
2208         * tree-inline.c (copy_bb): Fix frequency scaling; output
2209         diagnostic on frequency mismatches to dump file.
2210         (initialize_cfun): Do not scale frequency; fix count scaling;
2211         initialize entry and exit block frequencies; copy profile info.
2212         (copy_cfg_body): Use frequency_scale as argument; fix count scaling.
2213         (copy_body): Use frequency_scale as argument.
2214         (expand_call_inline): Compute frequency scale and output diagnostic
2215         to dump file.
2216         (delete_unreachable_blocks_update_callgrah): Remove checking that
2217         has to be done after edge redirection.
2218         (tree_function_versioning): Update initialize_cfun and copy_body call.
2219
2220 2009-11-14  Jan Hubicka  <jh@suse.cz>
2221
2222         * cgraph.c (cgraph_release_function_body): Update use of
2223         ipa_transforms_to_apply.
2224         (cgraph_remove_node): Remove ipa_transforms_to_apply.
2225         * cgraph.h (struct cgraph_node): Add ipa_transforms_to_apply.
2226         * cgraphunit.c (save_inline_function_body): Clear ipa_transforms for
2227         copied body.
2228         (cgraph_materialize_clone): Remove original if dead.
2229         * lto-streamer-in.c (lto_read_body): Remove FIXME and
2230         ipa_transforms_to_apply hack.
2231         * function.h (struct function): Add ipa_transforms_to_apply.
2232         * ipa.c (cgraph_remove_unreachable_nodes): Handle dead clone originals.
2233         * tree-inline.c (copy_bb): Update sanity check.
2234         (initialize_cfun): Do not copy ipa_transforms_to_apply.
2235         (expand_call_inline): remove dead clone originals.
2236         (tree_function_versioning): Merge transformation queues.
2237         * passes.c (add_ipa_transform_pass): Remove.
2238         (execute_one_ipa_transform_pass): Update ipa_transforms_to_apply
2239         tracking.
2240         (execute_all_ipa_transforms): Update.
2241         (execute_one_pass): Update.
2242
2243 2009-11-14  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
2244
2245         PR target/21078, 21080
2246         * config/avr/avr.c (avr_return_addr_rtx): New function for
2247         builtin_return_address.
2248         (expand_prologue): Calculate stack usage.
2249         (avr_asm_function_end_prologue): Output stack size and offset label.
2250         * config/avr/avr.h (RETURN_ADDR_RTX): Replace.
2251         (machine_function): Add stack_usage.
2252         * config/avr/avr-protos.h (avr_return_addr_rtx): New function.
2253
2254 2009-11-14  Anatoly Sokolov  <aesok@post.ru>
2255
2256         * config/iq2000/iq2000.c (iq2000_function_value): Make static, add
2257         new 'outgoing' argument.
2258         (iq2000_libcall_value, iq2000_function_value_regno_p): New functions.
2259         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
2260         * config/iq2000/iq2000.h (FUNCTION_VALUE_REGNO_P): Redefine, use
2261         iq2000_function_value_regno_p.
2262         (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
2263         * config/iq2000/iq2000-protos.h (iq2000_function_value_regno_p):
2264         Declare.
2265
2266 2009-11-14  Richard Earnshaw  <rearnsha@arm.com>
2267
2268         PR target/42031
2269         * arm.md (adddi_sesidi_di): Place tied contraint first.
2270         (adddi_zesidi_di, subdi_di_zesidi, subdi_di_sesidi): Likewise
2271         (subdi_zesidi_di, subdi_sesidi_di): Likewise.
2272         (mulsi3_compare0, mulsi_compare0_scratch): Likewise.
2273         (mulsi3addsi, mulsi3addsi_compare0): Likewise.
2274         (mulsi3addsi_compare0_scratch, smulsi3_highpart_nov6): Likewise.
2275         (umulsi3_highpart_nov6, anddi_zesidi_di, anddi_sesdi_di): Likewise.
2276         (anddi_notdi_di, iordi_sesidi_di, xordi_sesidi_di): Likewise.
2277         (andsi_iorsi3_notsi, arm_ashldi3_1bit, arm_ashrdi3_1_bit): Likewise.
2278         (arm_lshrdi3_1bit, one_cmpldi2): Likewise.
2279
2280 2009-11-14  Uros Bizjak  <ubizjak@gmail.com>
2281
2282         * config/i386/predicates.md (call_register_no_elim_operand):
2283         New predicate.  Reject stack register as valid call operand
2284         for 32bit targets.
2285         (call_insn_operand): Use call_register_no_elim_operand.
2286
2287 2009-11-13  Richard Henderson  <rth@redhat.com>
2288
2289         * function.c (stack_protect_prologue): Don't bypass expand_expr
2290         for stack_protect_guard and guard_decl.
2291         (stack_protect_epilogue): Likewise.
2292
2293 2009-11-13  Jan Hubicka  <jh@suse.cz>
2294
2295         * ipa.c (function_and_variable_visibility): Clear COMDAT on functions
2296         when to PUBLIC is set.
2297
2298 2009-11-13  Jakub Jelinek  <jakub@redhat.com>
2299
2300         PR middle-end/42029
2301         * gimplify.c (gimplify_omp_atomic): Set DECL_GIMPLE_REG_P on
2302         tmp_load if needed.
2303
2304 2009-11-13  Uros Bizjak  <ubizjak@gmail.com>
2305
2306         PR target/41900
2307         * config/i386/i386.md (*call_pop_1, *call_1, *call_value_pop_1,
2308         *call_value_1): Use "lsm" as operand 1 constraint.
2309         * config/i386/predicates.md (call_insn_operand): Depend on
2310         index_register_operand to avoid %esp register.
2311
2312 2009-11-13  Uros Bizjak  <ubizjak@gmail.com>
2313
2314         Revert:
2315         2009-11-03  Uros Bizjak  <ubizjak@gmail.com>
2316
2317         PR target/41900
2318         * config/i386/i386.h (ix86_arch_indices) <X86_ARCH_CALL_ESP>: New.
2319         (TARGET_CALL_ESP): New define.
2320         * config/i386/i386.c (initial_ix86_tune_features): Initialize
2321         X86_ARCH_CALL_ESP.
2322         * config/i386/i386.md (*call_pop_1_esp, *call_1_esp,
2323         *call_value_pop_1_esp, *call_value_1_esp): Rename from *call_pop_1,
2324         *call_1, *call_value_pop_1 and *call_value_1.  Depend on
2325         TARGET_CALL_ESP.
2326         (*call_pop_1, *call_1, *call_value_pop_1, *call_value_1):
2327         New patterns, use "lsm" as operand 1 constraint.
2328         * config/i386/predicates.md (call_insn_operand): Depend on
2329         index_register_operand for !TARGET_CALL_ESP to avoid %esp register.
2330
2331 2009-11-13  Jason Merrill  <jason@redhat.com>
2332
2333         PR debug/26965
2334         * dwarf2out.c (gen_variable_die): Don't worry about DECL_COMDAT.
2335         Don't emit a second declaration at any scope.
2336
2337 2009-11-13  Andrey Belevantsev  <abel@ispras.ru>
2338
2339         PR rtl-optimization/41697
2340         * sel-sched-ir.c (fallthru_bb_of_jump): Bail out when a block with
2341         a conditional jump has a single successor.
2342
2343 2009-11-13  Andrey Belevantsev  <abel@ispras.ru>
2344
2345         * sched-deps.c (init_deps): New parameter lazy_reg_last.  Don't
2346         allocate reg_last when in case lazy_reg_last is true.
2347         (init_deps_reg_last): New.
2348         (free_deps): When max_reg is 0, this context is already freed.
2349         * sched-int.h (init_deps_reg_last): Export.
2350         (init_deps): Update prototype.
2351         * sched-ebb.c (schedule_ebb): Update the call to init_deps.
2352         * sched-rgn.c (sched_rgn_compute_dependencies): Likewise.
2353         * ddg.c (build_intra_loop_deps): Likewise.
2354         * sel-sched-ir.c (copy_deps_context, create_deps_context,
2355         reset_deps_context, deps_init_id): Likewise.
2356         (init_first_time_insn_data): Lazy allocate INSN_DEPS_CONTEXT.
2357         (free_data_for_scheduled_insn): New, break down from ...
2358         (free_first_time_insn_data): ... here.
2359         (has_dependence_p): Allocate reg_last now, when it is needed.
2360         (extend_insn_data): When maximal LUID is big enough, allocate
2361         per-insn data in smaller chunks.
2362         * sel-sched-ir.h (free_data_for_scheduled_insn): Export.
2363         * sel-sched.c (update_seqnos_and_stage): Free INSN_DEPS_CONTEXT
2364         in scheduled insn.
2365
2366 2009-11-13  Uros Bizjak  <ubizjak@gmail.com>
2367
2368         * config/i386/i386.md (call_value): Fix comment.
2369         (sibcall_value): Ditto.
2370
2371 2009-11-13  Eric Botcazou  <ebotcazou@adacore.com>
2372
2373         * config/i386/linux-unwind.h (x86_frob_update_context): New function.
2374         (MD_FROB_UPDATE_CONTEXT): Define.
2375
2376 2009-11-12  Eric Botcazou  <ebotcazou@adacore.com>
2377             Laurent GUERBY  <laurent@guerby.net>
2378
2379         * config/sparc/linux-unwind.h (sparc64_fallback_frame_state): Tidy.
2380         Do not schedule an %sp restore.  Compensate for RETURN_ADDR_OFFSET.
2381         (sparc_fallback_frame_state): Tidy.  Compensate for RETURN_ADDR_OFFSET.
2382
2383 2009-11-12  Jan Hubicka  <jh@suse.cz>
2384
2385         * ipa.c (function_and_variable_visibility): Fix my accidentail commit
2386         and clear DECL_COMMON on localized declarations.
2387
2388 2009-11-12  Bernd Schmidt  <bernd.schmidt@analog.com>
2389
2390         PR rtl-opt/38582
2391         * regrename.c (struct du_head): New structure; some elements moved
2392         from...
2393         (struct du_chain): ... this one.
2394         (open_chains, closed_chains): Now of type struct du_head *.
2395         (do_replace): Accept du_head argument, not du_chain.  All callers
2396         changed.  Modified code to match new data structures.
2397         (build_def_use): Return a list of du_head structures.  Modified code
2398         to match new data structures.
2399         (dump_def_use_chain): Accept du_head argument, not du_chain.  All
2400         callers changed.  Modified code to match new data structures.
2401         (merge_overlapping_regs): Accept du_head argument, not du_chain.  All
2402         callers changed.  Modified code to match new data structures.
2403         (scan_rtx_reg): Change type of this_regno and this_nregs to unsigned.
2404         Allocate a du_head structure as well as a du_chain when creating a
2405         new chain.  Modified other code to match new data structures.
2406
2407 2009-11-12  Jan Hubicka  <jh@suse.cz>
2408
2409         * cgraph.h (varpool_node_name): Declare.
2410         * cgraphunit.c (process_function_and_variable_attributes): Set
2411         force_output flag on used variables.
2412         * ipa.c (function_and_variable_visibility): Dump externally visible
2413         and needed variables.
2414         * varpool.c (varpool_node_name): Export.
2415         (decide_is_variable_needed): Check COMDAT for externally visible vars;
2416         ignore needed flag.
2417
2418 2009-11-12  Uros Bizjak  <ubizjak@gmail.com>
2419
2420         PR middle-end/41930
2421         * simplify-rtx.c (simplify_replace_fn_rtx) <case 'e'>: Skip
2422         processing if XEXP (x, i) is NULL.
2423
2424 2009-11-12  Jan Hubicka  <jh@suse.cz>
2425
2426         * ipa.c (function_and_variable_visibility): Verify that WEAK || COMMON
2427         imply PUBLIC || EXTERNAL.
2428
2429 2009-11-11  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
2430
2431         PR middle-end/41440
2432         * cfgexpand.c (expand_gimple_basic_block): Append NOP to a fallthru,
2433         single successor block, ending with jump created by RTL expander.
2434
2435 2009-11-11  Jan Hubicka  <jh@suse.cz>
2436
2437         PR middle-end/41729
2438         * ipa.c (function_and_variable_visibility): Do not privatize COMDAT
2439         and WEAK variables at -fwhole-program.
2440
2441         PR middle-end/41735
2442         * ipa.c (whole_program_function_and_variable_visility): COMDAT
2443         functions/variables are not needed even if they are externally visible.
2444
2445 2009-11-11  Jan Hubicka  <jh@suse.cz>
2446
2447         (patch by Richard Guenther)
2448         * lto-streamer-out.c (output_function): Output head of argument list
2449         earlier.
2450         * lto-streamer-in.c (input_function): Re-map arguments into merged
2451         declaration.
2452
2453 2009-11-11  Jan Hubicka  <jh@suse.cz>
2454
2455         * lto-cgraph.c: Include gcov-io.h
2456         (output_profile_summary): New function.
2457         (output_cgraph): Use it.
2458         (input_profile_summary): New function.
2459         (input_cgraph): Use it.
2460         * coverage.c (build_ctr_info_value): Use varpool; initalize
2461         DECL_ASSEMBLER_NAME.
2462         (create_coverage): Likewise.
2463         * tree-profile.c (tree_init_ic_make_global_vars): Likewise.
2464         (tree_init_edge_profiler): Likewise.
2465         * Makefile.in (lto-cgraph.o): Add dependency on gcov-io.h.
2466
2467 2009-11-11  Kai Tietz  <kai.tietz@onevision.com>
2468
2469         * config/i386/cygming.h (HANDLE_PRAGMA_PUSH_POP_MACRO): Removed.
2470         * c-pragma.c (def_pragma_macro_value): Likewise.
2471         (def_pragma_macro): Likewise.
2472         (pushed_macro_table): Likewise.
2473         (HANDLE_PRAGMA_PUSH_POP_MACRO): Remove guarded code.
2474         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): Removed.
2475
2476 2009-11-11  Basile Starynkevitch  <basile@starynkevitch.net>
2477
2478         * doc/plugins.texi (Registering custom attributes): section
2479         renamed as (Registering custom attributes or pragmas).
2480         Mentions custom attributes & pragmas, and c_register_pragma, with
2481         a small example.
2482         * doc/cpp.texi (Pragmas): Mentions that plugins can provide their
2483         pragmas.
2484         * doc/extend.texi (Function Attributes): Mentions that plugin can
2485         provide their attributes.
2486
2487 2009-11-11  Jon Beniston  <jon@beniston.com>
2488
2489         * config.gcc: Add lm32 elf and uclinux targets.
2490         * config/lm32: New directory.
2491         * config/lm32/lm32.c: New file.
2492         * config/lm32/lm32.h: New file.
2493         * config/lm32/lm32.md: New file.
2494         * config/lm32/lm32.opt: New file.
2495         * config/lm32/lm32-protos.h: New file.
2496         * config/lm32/constraints.md: New file.
2497         * config/lm32/predicates.md: New file.
2498         * config/lm32/sfp-machine.h: New file.
2499         * config/lm32/t-fprules-softfp: New file.
2500         * config/lm32/uclinux-elf.h: New file.
2501         * doc/invoke.texi: Document lm32 options.
2502         * doc/contrib.texi: Document lm32 porter.
2503         * doc/install.texi: Document lm32 targets.
2504
2505 2009-11-11  Martin Jambor  <mjambor@suse.cz>
2506
2507         PR lto/41932
2508         * ipa-prop.c (ipa_update_after_lto_read): Call
2509         ipa_check_create_node_params and ipa_check_create_edge_args.  Also
2510         call ipa_initialize_node_params instead of ipa_populate_param_decls.
2511
2512 2009-11-11  Daniel Jacobowitz  <dan@codesourcery.com>
2513
2514         * config/arm/arm.c (neon_vdup_constant, neon_make_constant): New.
2515         (neon_expand_vector_init): Use them.  Also handle non-constant
2516         vectors with identical elements and vectors with only one
2517         non-constant element.
2518         (arm_print_operand): Handle 'y' modifier.
2519         * config/arm/arm-protos.h (neon_make_constant): Declare.
2520         * config/arm/neon.md (neon_vdup_n<mode>): Split into two
2521         patterns.  Use VX instead of VDQW for the first one.  Allow
2522         a VFP alternative and V32 modes for the second one.
2523         * config/arm/neon.ml (shape_elt): Add Alternatives.
2524         (ops): Use Alternatives for vdup lane instructions.
2525         * config/arm/neon-testgen.ml (analyze_shape): Handle Alternatives.
2526         * config/arm/vec-common.md (mov<mode>): Use neon_make_constant.
2527
2528 2009-11-11  Daniel Jacobowitz  <dan@codesourcery.com>
2529
2530         * config/arm/neon.md (*neon_mov<mode>): Reject two non-register
2531         operands.
2532         (movti, mov<mode>): Call force_reg on one operand if required.
2533         * config/arm/vec-common.md (mov<mode>): Likewise.
2534
2535 2009-11-11  Daniel Jacobowitz  <dan@codesourcery.com>
2536
2537         * config/arm/arm.c (arm_override_options): Enable scheduling for
2538         Thumb-2.
2539
2540 2009-11-10  Eric Botcazou  <ebotcazou@adacore.com>
2541
2542         PR target/10127
2543         PR ada/20548
2544         * expr.h (anti_adjust_stack_and_probe): Declare.
2545         * explow.c (anti_adjust_stack_and_probe): Make global, add ADJUST_BACK
2546         parameter and rewrite head comment.
2547         (allocate_dynamic_stack_space): Adjust call to above function.
2548         * function.c (expand_function_end): Handle STACK_CHECK_MOVING_SP.
2549
2550         * tree.h (dwarf2out_args_size): Delete.
2551         * dwarf2out.c (dwarf2out_args_size): Make static and move around.
2552         (dwarf2out_args_size_adjust): Delete prototype and move around.
2553         (dwarf2out_frame_debug_expr): Do not record arg size adjustments for
2554         ACCUMULATE_OUTGOING_ARGS targets.
2555
2556 2009-11-10  Eric Botcazou  <ebotcazou@adacore.com>
2557
2558         * config/sparc/sparc.c (print_operand) <')'>: Test for a non-null
2559         DECL_SIZE of DECL_RESULT before evaluating it.
2560
2561 2009-11-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2562
2563         PR tree-optimization/41987
2564         * fold-const.c (const_binop): Avoid using fold_buildN().
2565
2566 2009-11-10  Martin Jambor  <mjambor@suse.cz>
2567
2568         * tree-pass.h (struct ipa_opt_pass_d): Added stmt_fixup field.
2569         (execute_all_ipa_stmt_fixups): Declare.
2570         * ipa-cp.c (pass_ipa_cp): Added stmt_fixup value.
2571         * ipa-inline.c (pass_ipa_inline): Likewise.
2572         * ipa-pure-const.c (pass_ipa_pure_cons): Likewise.
2573         * ipa-reference.c (pass_ipa_reference): Likewise.
2574         * ipa.c (pass_ipa_whole_program_visibility): Likewise.
2575         * lto-streamer-out.c (pass_ipa_lto_gimple_out): Likewise.
2576         (pass_ipa_lto_finish_out): Likewise.
2577         * lto-wpa-fixup.c (pass_ipa_lto_wpa_fixup): Likewise.
2578         * passes.c (execute_ipa_stmt_fixups): New function.
2579         (execute_all_ipa_stmt_fixups): New function.
2580         * lto-streamer-in.c (input_function): Call execute_all_ipa_stmt_fixups.
2581
2582 2009-11-10  Eric Botcazou  <ebotcazou@adacore.com>
2583
2584         PR ada/20548
2585         * explow.c (probe_stack_range): Fix typo.
2586         * config/sparc/sparc.md (probe_stack): New expander.
2587
2588 2009-11-09  Dave Korn  <dave.korn.cygwin@gmail.com>
2589
2590         * config/i386/cygwin.h (LINK_SPEC): Add -tsaware flag if !mno-cygwin.
2591
2592 2009-11-09  Jason Merrill  <jason@redhat.com>
2593
2594         * gdbinit.in (pgq): New function for printing gimple sequence.
2595
2596 2009-11-09  Paul Brook  <paul@codesourcery.com>
2597             Daniel Jacobowitz  <dan@codesourcery.com>
2598             Sandra Loosemore  <sandra@codesourcery.com>
2599
2600         * doc/extend.texi (Half-Precision): Update wording to reflect
2601         that there are now multiple -mfpu options that enable fp16
2602         hardware support.
2603         * doc/invoke.texi: Update list of ARM -mfpu= options.
2604         * config.gcc: Update ARM --with-fpu option list.
2605         * config/arm/arm.c (all_fpus): Add vfpv3-fp16, vfpv3-d16-fp16,
2606         vfpv3xd and vfpv3xd-fp16.
2607         (use_vfp_abi): New function.
2608         (aapcs_vfp_is_call_or_return_candidate): Avoid double precision regs
2609         when undesirable.
2610         (aapcs_vfp_is_return_candidate, aapcs_vfp_is_call_candidate,
2611         aapcs_vfp_allocate_return_reg): Use use_vfp_abi.
2612         (arm_rtx_costs_1, arm_size_rtx_costs, arm_fastmul_rtx_costs,
2613         arm_9e_rtx_costs): Only expect double-precision operations if the FPU
2614         provides them.
2615         (coproc_secondary_reload_class): Reload HFmode via GENERAL_REGS if no
2616         NEON.
2617         (arm_print_operand): Handle 'p' modifier.
2618         (arm_hard_regno_mode_ok): : Allow HFmode in VFP registers if
2619         TARGET_FP16.
2620         * config/arm/arm.h (TARGET_VFP_SINGLE, TARGET_VFP_DOUBLE): Define.
2621         (TARGET_FP16): Define.
2622         * config/arm/vfp.md: Disable double-precision patterns if the FPU
2623         does not provide them.
2624         (arm_movdi_vfp, thumb2_movdi_vfp): Use fcpys to move
2625         double-precision values on a single-precision FPU.
2626         (movdf_vfp, thumb2_movdf_vfp): Likewise.  Use "Dy" for
2627         double-precision constants.
2628         (movhf_vfp_neon): New pattern (was movhf_vfp).
2629         (movhf_vfp): Remove NEON instructions.
2630         * config/arm/constraints.md: Add new "Dy" constraint for
2631         double-precision constants.  Update description of "Dv".
2632         * config/arm/arm.md: Disable double-precision patterns if the FPU
2633         does not provide them
2634
2635 2009-11-09  Jakub Jelinek  <jakub@redhat.com>
2636
2637         * config/i386/i386.c (print_operand) <case 'D'>: Fix formatting.
2638         (print_operand) <case 'Y'>: Likewise.  Fix a pasto in operand lossage
2639         diagnostics.
2640
2641 2009-11-08  H.J. Lu  <hongjiu.lu@intel.com>
2642
2643         * collect2.c (main): Search PLUGIN_LD for plugin linker.
2644
2645         * configure.ac (--with-plugin-ld): New.  Default to ld.
2646         * configure: Regenerated.
2647         * config.in: Likewise.
2648
2649         * exec-tool.in (ORIGINAL_PLUGIN_LD_FOR_TARGET): New.
2650         (collect-ld): Use ORIGINAL_PLUGIN_LD_FOR_TARGET for -plugin.
2651
2652 2009-11-08  Jonathan Gray  <jsg@openbsd.org>
2653
2654         * config/openbsd-stdint.h: Change to reflect what
2655         c_common_nodes_and_builtins expects.
2656
2657 2009-11-08  Paolo Carlini  <paolo.carlini@oracle.com>
2658
2659         * builtins.c (apply_args_reg_offset): Remove commented out delaration.
2660
2661 2009-11-08  Jakub Jelinek  <jakub@redhat.com>
2662
2663         PR target/41985
2664         * config/i386/i386.c (get_some_local_dynamic_name): Don't assert
2665         function contains at least one local dynamic name.
2666         (print_operand) <case '&'>: Instead output operand lossage diagnostics
2667         here if that happens.
2668
2669 2009-11-08  Zbigniew Chamski  <zbigniew.chamski@gmail.com>
2670             Joern Rennecke  <amylaar@spamcop.net>
2671
2672         * cfgrtl.c (pass_free_cfg): Add pass name.
2673         * cgraphbuild.c (pass_build_cgraph_edges): Likewise.
2674         (pass_rebuild_cgraph_edges, pass_remove_cgraph_callee_edges): Likewise.
2675         * dce.c (pass_ud_rtl_dce, pass_fast_rtl_dce): Change pass name.
2676         * df-core.c (pass_df_initialize_no_opt): Likewise.
2677         * except.c (pass_rtl_eh): Likewise.
2678         * function.c (pass_init_function, pass_leaf_regs): Likewise.
2679         * gcse.c (pass_rtl_pre): Change pass name.
2680         * passes.c (pass_postreload): Add pass name.
2681         (make_pass_instance): Don't use duplicate-tracking logic for
2682         names starting with '*'.
2683         (next_pass_1): Assert that pass has a name.
2684         (register_one_dump_file): If there is an space in the name,
2685         skip past it.
2686         * predict.c (pass_strip_predict_hints): Add pass name.
2687         * reg-stack.c (pass_stack_regs): Likewise.
2688         * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
2689         * tree-cfg.c (pass_warn_function_return,
2690         pass_warn_function_noreturn): Add pass name.
2691         * tree-dfa.c (pass_referenced_vars): Likewise.
2692         * tree-optimize.c (pass_cleanup_cfg_post_optimizing):
2693         Fix whitespace before comment.
2694         (pass_fixup_cfg): Add pass name, fix whitespace before comment.
2695         (pass_init_datastructures): Add pass name.
2696         * tree-ssa-loop.c (pass_record_bounds): Likewise.
2697         * tree-ssa.c (pass_early_warn_uninitialized,
2698         pass_late_warn_uninitialized): Likewise.
2699         * tree.c (pass_ipa_free_lang_data): Likewise.
2700         * doc/passes.texi (pass manager): Document how to disambiguate
2701         pass names.
2702
2703 2009-11-08  Paolo Bonzini  <bonzini@gnu.org>
2704
2705         * df-problems.c: Fix documentation for forward simulation of LR.
2706         (df_simulate_one_insn_forwards): Use df_simulate_find_defs.
2707         (df_simulate_finalize_forwards): Remove.
2708         * df.h (df_simulate_finalize_forwards): Remove.
2709
2710 2009-11-08  Richard Guenther  <rguenther@suse.de>
2711
2712         * tree-ssa-structalias.c (build_succ_graph): Properly make
2713         variables escape if they are stored to anything.
2714
2715 2009-11-08  Richard Guenther  <rguenther@suse.de>
2716
2717         PR rtl-optimization/41928
2718         * loop-invariant.c (free_loop_data): If we didn't allocate
2719         loop data do not try to free it.
2720
2721 2009-11-07  Jason Merrill  <jason@redhat.com>
2722
2723         * tree.c (reconstruct_complex_type): Preserve attributes.
2724
2725 2009-11-07  Richard Guenther  <rguenther@suse.de>
2726
2727         * tree-ssa-structalias.c (build_succ_graph): Feed stores
2728         to anything only to variables that can take pointers.
2729         (get_constraint_for_ssa_var): Properly exclude full
2730         variables from expanding.
2731         (first_vi_for_offset): Avoid overflow in arithmetic.
2732         (first_or_preceding_vi_for_offset): Likewise.
2733         (count_num_arguments): Fix implementation.
2734         (gate_ipa_pta): Do not run when not optimizing.
2735
2736 2009-11-07  David Binderman <dcb314@hotmail.com>
2737
2738         * builtins.c (apply_args_size, expand_builtin_mathfn, expand_powi,
2739         expand_builtin_expect, maybe_emit_sprintf_chk_warning): Remove some
2740         set but not used variables.
2741         (apply_args_reg_offset): Comment out as unused.
2742         * calls.c (flags_from_decl_or_type): Likewise.
2743         * genautomata.c (check_regexp_units_distribution): Likewise.
2744
2745 2009-11-07  Uros Bizjak  <ubizjak@gmail.com>
2746
2747         * config/i386/sse.md (xop_pmacsww, xop_pmacssww, xop_pmacsdd,
2748         xop_pmacssdd, xop_pmacssdql, xop_pmacssdqh, xop_pmacsdql,
2749         *xop_pmacsdql_mem, xop_pmacsdqh, *xop_pmacsdqh_mem, xop_pmacsswd,
2750         xop_pmacswd, xop_pmadcsswd, xop_pmadcswd, xop_pcmov_<mode>,
2751         xop_pcmov_<mode>256, xop_pperm, xop_pperm_pack_v2di_v4si,
2752         xop_pperm_pack_v4si_v8hi, xop_pperm_pack_v8hi_v16qi): Compress
2753         operand alternatives.
2754
2755 2009-11-06  Michael Matz  <matz@suse.de>
2756
2757         PR middle-end/41963
2758         * tree-ssa-math-opts.c (execute_cse_reciprocals): Check all uses
2759         of a potential reciprocal to really be reciprocals.
2760
2761 2009-11-06  Jakub Jelinek  <jakub@redhat.com>
2762
2763         * config/i386/x86intrin.h: Include fma4intrin.h, xopintrin.h and
2764         lwpintrin.h after immintrin.h.
2765         * config/i386/fma4intrin.h (__v8sf, __v4df, __m256, __m256d): Remove
2766         typedefs.
2767
2768         PR middle-end/41935
2769         * c-common.c (fold_offsetof_1) <case ARRAY_REF>: Don't crash for VLAs
2770         or non-constant index, allow index one past the last element and
2771         allow exceeding array bound in arrays that might be used as flexible
2772         array members.
2773
2774 2009-11-05  Richard Henderson  <rth@redhat.com>
2775
2776         * config/i386/ia32intrin.h: Protect CRC32 builtins with __SSE4_2__.
2777
2778 2009-11-05  Paul Brook  <paul@codesourcery.com>
2779
2780         * config/arm/arm.c (arm_fp_model, arm_fpu_arch, arm_fpu_tune): Remove.
2781         (arm_fpu_desc): New.
2782         (all_fpus): Add FPU details.
2783         (fp_model_for_fpu): Remove.
2784         (arm_override_options): Set and use arm_fpu_desc and arm_fpu_attr.
2785         (arm_output_epilogue, arm_save_coproc_regs): Use TARGET_FPA_EMU2.
2786         (arm_file_start): Use arm_fpu_desc.
2787         * config/arm/arm.h (TARGET_FPA, TARGET_MAVERICK, TARGET_VFP,
2788         TARGET_VFPD32, TARGET_VFP3, TARGET_NEON_FP16, TARGET_NEON): Use
2789         arm_fpu_desc.
2790         (TARGET_FPA_EMU2): Define.
2791         (arm_fp_model, fputype, arm_fpu_tune): Remove.
2792         (vfp_reg_type, arm_fpu_desc): New.
2793         * config/arm/arm.md (attr fpu): Simplify.
2794         * config/arm/fpa.md (movxf_fpa): Use TARGET_FPA_EMU2.
2795         * config/arm/linux-elf.h (FPUTYPE_DEFAULT): Use string value.
2796         * config/arm/bpabi.h (FPUTYPE_DEFAULT): Use string value.
2797         * config/arm/netbsd-elf.h (FPUTYPE_DEFAULT): Use string value.
2798         * config/arm/vxworks.h (FPUTYPE_DEFAULT): Use string value.
2799
2800 2009-11-05  Michael Matz  <matz@suse.de>
2801
2802         * config/i386/i386.c (ix86_builtin_reciprocal): Remove dependency
2803         on TARGET_RECIP.
2804         * doc/invoke.texi (-mrecip): Clarify that we don't need -mrecip
2805         for 1/sqrtf.
2806
2807 2009-11-04  Jason Merrill  <jason@redhat.com>
2808
2809         PR c++/36912
2810         * varasm.c (initializer_constant_valid_p): A PLUS_EXPR
2811         or MINUS_EXPR of REAL_TYPE is not a valid constant initializer.
2812         (output_constant): Avoid crash after error.
2813
2814 2009-11-05  Martin Jambor  <mjambor@suse.cz>
2815
2816         * tree-sra.c (struct access): Changed comment of next_sibling field.
2817         (analyze_modified_params): Loop over accesses of a group rather than
2818         over all with the ame base, pass a common bitmap to
2819         walk_aliased_vdefs.
2820         (unmodified_by_ref_scalar_representative): Build link lists of
2821         accesses of a group.
2822         (splice_param_accesses): Likewise.
2823
2824 2009-11-04  Kenneth Zadeck  <zadeck@naturalbridge.com>
2825
2826         * df-scan.c (df-uses-record): Add case zero_extract of mem.
2827
2828 2009-11-04  Eric Botcazou  <ebotcazou@adacore.com>
2829
2830         PR target/10127
2831         PR ada/20548
2832         * config/i386/i386.md (probe_stack): New expander.
2833         (logical operation peepholes): Do not split stack checking probes.
2834
2835 2009-11-04  Harsha Jagasia  <harsha.jagasia@amd.com>
2836             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
2837
2838         * doc/invoke.texi (-mlwp): Add documentation.
2839         * doc/extend.texi (x86 intrinsics): Add LWP intrinsics.
2840         * config.gcc (i[34567]86-*-*): Include lwpintrin.h.
2841         (x86_64-*-*): Ditto.
2842         * config/i386/lwpintrin.h: New file, provide x86 compiler
2843         intrinisics for LWP.
2844         * config/i386/cpuid.h (bit_LWP): Define LWP bit.
2845         * config/i386/x86intrin.h: Add LWP check and lwpintrin.h.
2846         * config/i386/i386-c.c (ix86_target_macros_internal): Check
2847         ISA_FLAG for LWP.
2848         * config/i386/i386.h (TARGET_LWP): New macro for LWP.
2849         * config/i386/i386.opt (-mlwp): New switch for LWP support.
2850         * config/i386/i386.c (OPTION_MASK_ISA_LWP_SET): New.
2851         (OPTION_MASK_ISA_LWP_UNSET): New.
2852         (ix86_handle_option): Handle -mlwp.
2853         (isa_opts): Handle -mlwp.
2854         (enum pta_flags): Add PTA_LWP.
2855         (override_options): Add LWP support.
2856         (IX86_BUILTIN_LLWPCB16): New for LWP intrinsic.
2857         (IX86_BUILTIN_LLWPCB32): Ditto.
2858         (IX86_BUILTIN_LLWPCB64): Ditto.
2859         (IX86_BUILTIN_SLWPCB16): Ditto.
2860         (IX86_BUILTIN_SLWPCB32): Ditto.
2861         (IX86_BUILTIN_SLWPCB64): Ditto.
2862         (IX86_BUILTIN_LWPVAL16): Ditto.
2863         (IX86_BUILTIN_LWPVAL32): Ditto.
2864         (IX86_BUILTIN_LWPVAL64): Ditto.
2865         (IX86_BUILTIN_LWPINS16): Ditto.
2866         (IX86_BUILTIN_LWPINS32): Ditto.
2867         (IX86_BUILTIN_LWPINS64): Ditto.
2868         (enum  ix86_special_builtin_type): Add LWP intrinsic support.
2869         (builtin_description): Ditto.
2870         (ix86_init_mmx_sse_builtins): Ditto.
2871         (ix86_expand_special_args_builtin): Ditto.
2872         * config/i386/i386.md (UNSPEC_LLWP_INTRINSIC): Add new UNSPEC for
2873         LWP support.
2874         (UNSPEC_SLWP_INTRINSIC): Ditto.
2875         (UNSPECV_LWPVAL_INTRINSIC): Ditto.
2876         (UNSPECV_LWPINS_INTRINSIC): Ditto.
2877         (lwp_llwpcbhi1): New lwp pattern.
2878         (lwp_llwpcbsi1): Ditto.
2879         (lwp_llwpcbdi1): Ditto.
2880         (lwp_slwpcbhi1): Ditto.
2881         (lwp_slwpcbsi1): Ditto.
2882         (lwp_slwpcbdi1): Ditto.
2883         (lwp_lwpvalhi3): Ditto.
2884         (lwp_lwpvalsi3): Ditto.
2885         (lwp_lwpvaldi3): Ditto.
2886         (lwp_lwpinshi3): Ditto.
2887         (lwp_lwpinssi3): Ditto.
2888         (lwp_lwpinsdi3): Ditto.
2889
2890 2009-11-04  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2891             Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
2892
2893         PR rtl-opt/41833
2894         * simplify-rtx.c (simplify_binary_operation_1): Simplify vec_select of
2895         a vec_duplicate.
2896
2897 2009-11-04  Richard Guenther  <rguenther@suse.de>
2898             Rafael Avila de Espindola  <espindola@google.com>
2899
2900         * gcc.c (process_command): Handle arguments name@offset.
2901
2902 2009-11-04  Harsha Jagasia  <harsha.jagasia@amd.com>
2903             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
2904
2905         * config.gcc (i[34567]86-*-*): Include xopintrin.h.
2906         (x86_64-*-*): Ditto.
2907         * config/i386/xopintrin.h: New file, provide common x86 compiler
2908         intrinisics for XOP.
2909         * config/i386/cpuid.h (bit_XOP): Define XOP bit.
2910         * config/i386/x86intrin.h: Add XOP check and xopintrin.h.
2911         * config/i386/i386-c.c(ix86_target_macros_internal): Check
2912         ISA_FLAG for XOP.
2913         * config/i386/i386.h(TARGET_XOP): New macro for XOP.
2914         * config/i386/i386.opt (-mxop): New switch for XOP support.
2915         * config/i386/i386.md (UNSPEC_XOP_UNSIGNED_CMP)
2916         (UNSPEC_XOP_TRUEFALSE)
2917         (UNSPEC_XOP_PERMUTE)
2918         (UNSPEC_FRCZ): Add new UNSPEC for XOP support.
2919         (PPERM_*): New constants for vpperm instruction.
2920         (xop_pcmov_<mode>): Add XOP conditional mov instructions.
2921         * config/i386/i386.c (OPTION_MASK_ISA_XOP_SET): New.
2922         (OPTION_MASK_ISA_XOP_UNSET): New.
2923         (OPTION_MASK_ISA_XOP_UNSET): Change definition to depend on XOP.
2924         (ix86_handle_option): Handle -mxop.
2925         (isa_opts): Handle -mxop.
2926         (enum pta_flags): Add PTA_XOP.
2927         (override_options): Add XOP support.
2928         (print_operand): Add code for XOP compare instructions.
2929         (ix86_expand_sse_movcc): Extend for XOP conditional move instruction.
2930         (ix86_expand_int_vcond): Extend for XOP compare instruction.
2931
2932         (IX86_BUILTIN_VPCMOV): New for XOP intrinsic.
2933         (IX86_BUILTIN_VPCMOV_V2DI): Ditto.
2934         (IX86_BUILTIN_VPCMOV_V4SI): Ditto.
2935         (IX86_BUILTIN_VPCMOV_V8HI): Ditto.
2936         (IX86_BUILTIN_VPCMOV_V16QI): Ditto.
2937         (IX86_BUILTIN_VPCMOV_V4SF): Ditto.
2938         (IX86_BUILTIN_VPCMOV_V2DF): Ditto.
2939
2940         (IX86_BUILTIN_VPCMOV256): Ditto.
2941         (IX86_BUILTIN_VPCMOV_V4DI256): Ditto.
2942         (IX86_BUILTIN_VPCMOV_V8SI256): Ditto.
2943         (IX86_BUILTIN_VPCMOV_V16HI256): Ditto.
2944         (IX86_BUILTIN_VPCMOV_V32QI256): Ditto.
2945         (IX86_BUILTIN_VPCMOV_V8SF256): Ditto.
2946         (IX86_BUILTIN_VPCMOV_V4DF256): Ditto.
2947
2948         (IX86_BUILTIN_VPPERM): Ditto.
2949
2950         (IX86_BUILTIN_VPMACSSWW): Ditto.
2951         (IX86_BUILTIN_VPMACSWW): Ditto.
2952         (IX86_BUILTIN_VPMACSSWD): Ditto.
2953         (IX86_BUILTIN_VPMACSWD): Ditto.
2954         (IX86_BUILTIN_VPMACSSDD): Ditto.
2955         (IX86_BUILTIN_VPMACSDD): Ditto.
2956         (IX86_BUILTIN_VPMACSSDQL): Ditto.
2957         (IX86_BUILTIN_VPMACSSDQH): Ditto.
2958         (IX86_BUILTIN_VPMACSDQL): Ditto.
2959         (IX86_BUILTIN_VPMACSDQH): Ditto.
2960         (IX86_BUILTIN_VPMADCSSWD): Ditto.
2961         (IX86_BUILTIN_VPMADCSWD): Ditto.
2962
2963         (IX86_BUILTIN_VPHADDBW): Ditto.
2964         (IX86_BUILTIN_VPHADDBD): Ditto.
2965         (IX86_BUILTIN_VPHADDBQ): Ditto.
2966         (IX86_BUILTIN_VPHADDWD): Ditto.
2967         (IX86_BUILTIN_VPHADDWQ): Ditto.
2968         (IX86_BUILTIN_VPHADDDQ): Ditto.
2969         (IX86_BUILTIN_VPHADDUBW): Ditto.
2970         (IX86_BUILTIN_VPHADDUBD): Ditto.
2971         (IX86_BUILTIN_VPHADDUBQ): Ditto.
2972         (IX86_BUILTIN_VPHADDUWD): Ditto.
2973         (IX86_BUILTIN_VPHADDUWQ): Ditto.
2974         (IX86_BUILTIN_VPHADDUDQ): Ditto.
2975         (IX86_BUILTIN_VPHSUBBW): Ditto.
2976         (IX86_BUILTIN_VPHSUBWD): Ditto.
2977         (IX86_BUILTIN_VPHSUBDQ): Ditto.
2978
2979         (IX86_BUILTIN_VPROTB): Ditto.
2980         (IX86_BUILTIN_VPROTW): Ditto.
2981         (IX86_BUILTIN_VPROTD): Ditto.
2982         (IX86_BUILTIN_VPROTQ): Ditto.
2983         (IX86_BUILTIN_VPROTB_IMM): Ditto.
2984         (IX86_BUILTIN_VPROTW_IMM): Ditto.
2985         (IX86_BUILTIN_VPROTD_IMM): Ditto.
2986         (IX86_BUILTIN_VPROTQ_IMM): Ditto.
2987
2988         (IX86_BUILTIN_VPSHLB): Ditto.
2989         (IX86_BUILTIN_VPSHLW): Ditto.
2990         (IX86_BUILTIN_VPSHLD): Ditto.
2991         (IX86_BUILTIN_VPSHLQ): Ditto.
2992         (IX86_BUILTIN_VPSHAB): Ditto.
2993         (IX86_BUILTIN_VPSHAW): Ditto.
2994         (IX86_BUILTIN_VPSHAD): Ditto.
2995         (IX86_BUILTIN_VPSHAQ): Ditto.
2996
2997         (IX86_BUILTIN_VFRCZSS): Ditto.
2998         (IX86_BUILTIN_VFRCZSD): Ditto.
2999         (IX86_BUILTIN_VFRCZPS): Ditto.
3000         (IX86_BUILTIN_VFRCZPD): Ditto.
3001         (IX86_BUILTIN_VFRCZPS256): Ditto.
3002         (IX86_BUILTIN_VFRCZPD256): Ditto.
3003
3004         (IX86_BUILTIN_VPCOMEQUB): Ditto.
3005         (IX86_BUILTIN_VPCOMNEUB): Ditto.
3006         (IX86_BUILTIN_VPCOMLTUB): Ditto.
3007         (IX86_BUILTIN_VPCOMLEUB): Ditto.
3008         (IX86_BUILTIN_VPCOMGTUB): Ditto.
3009         (IX86_BUILTIN_VPCOMGEUB): Ditto.
3010         (IX86_BUILTIN_VPCOMFALSEUB): Ditto.
3011         (IX86_BUILTIN_VPCOMTRUEUB): Ditto.
3012
3013         (IX86_BUILTIN_VPCOMEQUW): Ditto.
3014         (IX86_BUILTIN_VPCOMNEUW): Ditto.
3015         (IX86_BUILTIN_VPCOMLTUW): Ditto.
3016         (IX86_BUILTIN_VPCOMLEUW): Ditto.
3017         (IX86_BUILTIN_VPCOMGTUW): Ditto.
3018         (IX86_BUILTIN_VPCOMGEUW): Ditto.
3019         (IX86_BUILTIN_VPCOMFALSEUW): Ditto.
3020         (IX86_BUILTIN_VPCOMTRUEUW): Ditto.
3021
3022         (IX86_BUILTIN_VPCOMEQUD): Ditto.
3023         (IX86_BUILTIN_VPCOMNEUD): Ditto.
3024         (IX86_BUILTIN_VPCOMLTUD): Ditto.
3025         (IX86_BUILTIN_VPCOMLEUD): Ditto.
3026         (IX86_BUILTIN_VPCOMGTUD): Ditto.
3027         (IX86_BUILTIN_VPCOMGEUD): Ditto.
3028         (IX86_BUILTIN_VPCOMFALSEUD): Ditto.
3029         (IX86_BUILTIN_VPCOMTRUEUD): Ditto.
3030
3031         (IX86_BUILTIN_VPCOMEQUQ): Ditto.
3032         (IX86_BUILTIN_VPCOMNEUQ): Ditto.
3033         (IX86_BUILTIN_VPCOMLTUQ): Ditto.
3034         (IX86_BUILTIN_VPCOMLEUQ): Ditto.
3035         (IX86_BUILTIN_VPCOMGTUQ): Ditto.
3036         (IX86_BUILTIN_VPCOMGEUQ): Ditto.
3037         (IX86_BUILTIN_VPCOMFALSEUQ): Ditto.
3038         (IX86_BUILTIN_VPCOMTRUEUQ): Ditto.
3039
3040         (IX86_BUILTIN_VPCOMEQB): Ditto.
3041         (IX86_BUILTIN_VPCOMNEB): Ditto.
3042         (IX86_BUILTIN_VPCOMLTB): Ditto.
3043         (IX86_BUILTIN_VPCOMLEB): Ditto.
3044         (IX86_BUILTIN_VPCOMGTB): Ditto.
3045         (IX86_BUILTIN_VPCOMGEB): Ditto.
3046         (IX86_BUILTIN_VPCOMFALSEB): Ditto.
3047         (IX86_BUILTIN_VPCOMTRUEB): Ditto.
3048
3049         (IX86_BUILTIN_VPCOMEQW): Ditto.
3050         (IX86_BUILTIN_VPCOMNEW): Ditto.
3051         (IX86_BUILTIN_VPCOMLTW): Ditto.
3052         (IX86_BUILTIN_VPCOMLEW): Ditto.
3053         (IX86_BUILTIN_VPCOMGTW): Ditto.
3054         (IX86_BUILTIN_VPCOMGEW): Ditto.
3055         (IX86_BUILTIN_VPCOMFALSEW): Ditto.
3056         (IX86_BUILTIN_VPCOMTRUEW): Ditto.
3057
3058         (IX86_BUILTIN_VPCOMEQD): Ditto.
3059         (IX86_BUILTIN_VPCOMNED): Ditto.
3060         (IX86_BUILTIN_VPCOMLTD): Ditto.
3061         (IX86_BUILTIN_VPCOMLED): Ditto.
3062         (IX86_BUILTIN_VPCOMGTD): Ditto.
3063         (IX86_BUILTIN_VPCOMGED): Ditto.
3064         (IX86_BUILTIN_VPCOMFALSED): Ditto.
3065         (IX86_BUILTIN_VPCOMTRUED): Ditto.
3066
3067         (IX86_BUILTIN_VPCOMEQQ): Ditto.
3068         (IX86_BUILTIN_VPCOMNEQ): Ditto.
3069         (IX86_BUILTIN_VPCOMLTQ): Ditto.
3070         (IX86_BUILTIN_VPCOMLEQ): Ditto.
3071         (IX86_BUILTIN_VPCOMGTQ): Ditto.
3072         (IX86_BUILTIN_VPCOMGEQ): Ditto.
3073         (IX86_BUILTIN_VPCOMFALSEQ): Ditto.
3074         (IX86_BUILTIN_VPCOMTRUEQ): Ditto.
3075
3076         (enum multi_arg_type): New enum for describing the various XOP
3077         intrinsic argument types.
3078         (bdesc_multi_arg): New table for XOP intrinsics.
3079         (ix86_init_mmx_sse_builtins): Add XOP intrinsic support.
3080         (ix86_expand_multi_arg_builtin): New function for creating XOP
3081         intrinsics.
3082
3083         * config/i386/sse.md (sserotatemax): New mode attribute for XOP.
3084         (xop_pmacsww): Ditto.
3085         (xop_pmacssww): Ditto.
3086         (xop_pmacsdd): Ditto.
3087         (xop_pmacssdd): Ditto.
3088         (xop_pmacssdql): Ditto.
3089         (xop_pmacssdqh): Ditto.
3090         (xop_pmacsdql): Ditto.
3091         (xop_pmacsdql_mem): Ditto.
3092         (xop_mulv2div2di3_low): Ditto.
3093         (xop_pmacsdqh): Ditto.
3094         (xop_pmacsdqh_mem): Ditto.
3095         (xop_mulv2div2di3_high): Ditto.
3096         (xop_pmacsswd): Ditto.
3097         (xop_pmacswd): Ditto.
3098         (xop_pmadcsswd): Ditto.
3099         (xop_pmadcswd): Ditto.
3100         (xop_pcmov_<mode>): Ditto.
3101         (xop_pcmov_<mode>256): Ditto.
3102         (xop_phaddbw): Ditto.
3103         (xop_phaddbd): Ditto.
3104         (xop_phaddbq): Ditto.
3105         (xop_phaddwd): Ditto.
3106         (xop_phaddwq): Ditto.
3107         (xop_phadddq): Ditto.
3108         (xop_phaddubw): Ditto.
3109         (xop_phaddubd): Ditto.
3110         (xop_phaddubq): Ditto.
3111         (xop_phadduwd): Ditto.
3112         (xop_phadduwq): Ditto.
3113         (xop_phaddudq): Ditto.
3114         (xop_phsubbw): Ditto.
3115         (xop_phsubwd): Ditto.
3116         (xop_phsubdq): Ditto.
3117         (xop_pperm): Ditto.
3118         (rotl<mode>3): Ditto.
3119         (rotr<mode>3): Ditto.
3120         (xop_rotl<mode>3): Ditto.
3121         (xop_rotr<mode>3): Ditto.
3122         (vrotr<mode>3): Ditto.
3123         (vrotl<mode>3): Ditto.
3124         (xop_vrotl<mode>3): Ditto.
3125         (vlshr<mode>3): Ditto.
3126         (vashr<mode>3): Ditto.
3127         (vashl<mode>3
3128         (xop_ashl<mode>3): Ditto.
3129         (xop_lshl<mode>3): Ditto.
3130         (ashlv16qi3): Ditto.
3131         (lshlv16qi3): Ditto.
3132         (ashrv16qi3): Ditto.
3133         (ashrv2di3): Ditto.
3134         (xop_frcz<mode>2): Ditto.
3135         (xop_vmfrcz<mode>2): Ditto.
3136         (xop_frcz<mode>2256): Ditto.
3137         (xop_maskcmp<mode>3): Ditto.
3138         (xop_maskcmp_uns<mode>3): Ditto.
3139         (xop_maskcmp_uns2<mode>3): Ditto.
3140         (xop_pcom_tf<mode>3): Ditto.
3141
3142         * doc/invoke.texi (-mxop): Add documentation.
3143         * doc/extend.texi (x86 intrinsics): Add XOP intrinsics.
3144
3145 2009-11-03  Mark Mitchell  <mark@codesourcery.com>
3146
3147         PR driver/11810
3148         * gcc.c (SWITCHES_NEED_SPACES): Define to "o".
3149         * config/alpha/osf.h (SWITCHES_NEED_SPACES): Remove here.
3150         * config/mips/iris.h (SWITCHES_NEED_SPACES): Remove here.
3151
3152 2009-11-04  Richard Earnshaw  <rearnsha@arm.com>
3153
3154         PR target/40835
3155         * arm.md (peephole2 patterns for move and compare): New.
3156
3157 2009-11-04  Nick Clifton  <nickc@redhat.com>
3158
3159         * defaults.h (CONSTANT_ADDRESS_P): Provide a default definition.
3160         Make sure that it does not allow CONST_DOUBLEs.
3161         * doc/tm.texi (CONSTANT_ADDRESS_P): Update description.
3162         * config/avr/avr.h (CONSTANT_ADDRESS_P): Delete.
3163         * config/bfin/bfin.h (CONSTANT_ADDRESS_P): Delete.
3164         * config/cris/cris.h (CONSTANT_ADDRESS_P): Delete.
3165         * config/fr30/fr30.h (CONSTANT_ADDRESS_P): Delete.
3166         * config/frv/frv.h (CONSTANT_ADDRESS_P): Delete.
3167         * config/m32c/m32c.h (CONSTANT_ADDRESS_P): Delete.
3168         * config/m68hc11/m68hc11.h (CONSTANT_ADDRESS_P): Delete.
3169         * config/mep/mep.h (CONSTANT_ADDRESS_P): Delete.
3170         * config/mn10300/mn10300.h (CONSTANT_ADDRESS_P): Delete.
3171         * config/moxie/moxie.h (CONSTANT_ADDRESS_P): Delete.
3172         * config/pdp11/pdp11.h (CONSTANT_ADDRESS_P): Delete.
3173         * config/picochip/picochip.h (CONSTANT_ADDRESS_P): Delete.
3174         * config/score/score.h (CONSTANT_ADDRESS_P): Delete.
3175         * config/stormy16/stormy16.h (CONSTANT_ADDRESS_P): Delete.
3176
3177 2009-11-04  Richard Guenther  <rguenther@suse.de>
3178
3179         PR tree-optimization/41919
3180         * tree-vrp.c (test_for_singularity): Properly compare values.
3181
3182 2009-11-04  Revital Eres  <eres@il.ibm.com>
3183
3184         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
3185         Consider peeling for alignment only for stores and remove
3186         redundant assignment.
3187
3188 2009-11-04  Maxim Kuvyrkov  <maxim@codesourcery.com>
3189
3190         PR target/41302
3191         * config/m68k/m68k.c (m68k_reg_present_p): New static function.
3192         (m68k_ok_for_sibcall_p): Handle different result return locations.
3193
3194 2009-11-04  Richard Guenther  <rguenther@suse.de>
3195
3196         * c-opts.c (c_common_post_options): Move LTO option processing
3197         code ...
3198         * opts.c (decode_options): ... here.
3199
3200 2009-11-04  Jakub Jelinek  <jakub@redhat.com>
3201
3202         * c-common.c (fold_offsetof_1): Use %wd instead of
3203         HOST_WIDE_INT_PRINT_DEC.
3204
3205 2009-11-04  Maciej W. Rozycki  <macro@linux-mips.org>
3206
3207         * config/vax/linux.h (TARGET_OS_CPP_BUILTINS): Don't define
3208         __pic__ or __PIC__.
3209
3210 2009-11-04  Maciej W. Rozycki  <macro@linux-mips.org>
3211
3212         * config.gcc (vax-*-linux*): Keep the original contents of
3213         tmake_file while adding vax/t-linux.
3214
3215 2009-11-03  Eric Botcazou  <ebotcazou@adacore.com>
3216
3217         PR target/10127
3218         PR ada/20548
3219         * expr.h (STACK_CHECK_PROBE_INTERVAL): Delete.
3220         (STACK_CHECK_PROBE_INTERVAL_EXP): New macro.
3221         (STACK_CHECK_MOVING_SP): Likewise.
3222         * system.h (STACK_CHECK_PROBE_INTERVAL): Poison it.
3223         * doc/tm.texi (Stack Checking): Delete STACK_CHECK_PROBE_INTERVAL.
3224         Document STACK_CHECK_PROBE_INTERVAL_EXP and STACK_CHECK_MOVING_SP.
3225         * doc/md.texi (Standard Pattern Names): Tweak entry of CHECK_STACK.
3226         Document PROBE_STACK.
3227         * explow.c (anti_adjust_stack_and_probe): New function.
3228         (allocate_dynamic_stack_space): Do not directly allocate space if
3229         STACK_CHECK_MOVING_SP, instead invoke above function.
3230         (emit_stack_probe): Handle probe_stack insn.
3231         (PROBE_INTERVAL): New macro.
3232         (STACK_GROW_OPTAB): Likewise.
3233         (STACK_GROW_OFF): Likewise.
3234         (probe_stack_range): Use Pmode and memory_address consistently.  Fix
3235         loop condition in the small constant case.  Rewrite in the general
3236         case to be immune to wraparounds.  Make sure the address of probes
3237         is valid.  Try to use [base + disp] addressing mode if possible.
3238         * ira.c (setup_eliminable_regset): Set frame_pointer_needed if stack
3239         checking is enabled and STACK_CHECK_MOVING_SP.
3240         * rtlanal.c (may_trap_p_1) <MEM>: If stack checking is enabled,
3241         return 1 for volatile references to the stack pointer.
3242         * tree.c (build_common_builtin_nodes): Do not set ECF_NOTHROW on
3243         __builtin_alloca if stack checking is enabled.
3244         * unwind-dw2.c (uw_identify_context): Take into account whether the
3245         context is that of a signal frame or not.
3246         * config/i386/linux.h (STACK_CHECK_MOVING_SP): Define to 1.
3247         * config/i386/linux64.h (STACK_CHECK_MOVING_SP): Likewise.
3248
3249 2009-11-03  Jakub Jelinek  <jakub@redhat.com>
3250
3251         PR rtl-optimization/41917
3252         * rtlanal.c (num_sign_bit_copies1) <case UMOD>: If sign bit of second
3253         operand isn't known to be 0, return 1.
3254
3255 2009-11-03  Richard Sandiford  <rdsandiford@googlemail.com>
3256
3257         * config/mips/mips.md: Fix typos.
3258
3259 2009-11-03  Richard Sandiford  <rdsandiford@googlemail.com>
3260
3261         * doc/invoke.texi: Fix typo.
3262
3263 2009-11-03  Paul Brook  <paul@codesourcery.com>
3264
3265         * config/arm/neon.ml (vectype): Add T_floatSF.
3266         (string_of_vectype): Ditto.
3267         * config/arm/neon-gen.ml (signed_ctype): Add T_floatSF.
3268         (deftypes): Use float for float32_t.
3269         * config/arm/arm_neon.h: Regenerate.
3270
3271 2009-11-03  Nick Clifton  <nickc@redhat.com>
3272             Kevin Buettner  <kevinb@redhat.com>
3273
3274         * config/rx/predicates.md (rx_store_multiple_vector): Reverse
3275         order of expected registers.
3276         (rx_load_multiple_vector): Likewise.
3277         (rx_rtsd_vector): Likewise.
3278         * config/rx/rx.c (rx_cpu_type): New variable.
3279         (rx_print_operand): Fix bug printing 64-bit constant values.
3280         (rx_emit_stack_pushm): Reverse order of pushed registers.
3281         (gen_rx_store_vector): Likewise.
3282         (is_fast_interrupt_func): Only accept "fast_interrupt" as the
3283         attribute name.
3284         (is_exception_func): Rename to is_interrupt_func and only accept
3285         "interrupt" as the attribute name.
3286         (rx_get_stack_layout): Use new function name.
3287         (rx_func_attr_inlinable): Likewise.
3288         (rx_attribute_table): Remove "exception".
3289         (rx_expand_prologue): If necessary push the accumulator register
3290         in the prologue of interrupt functions.
3291         (rx_expand_epilogue): If necessary pop the accumulator.
3292         (rx_builtins): Add RX_BUILTIN_MVTIPL.
3293         (rx_expand_builtin_stz): Remove.
3294         (rx_expand_builtin_mvtipl): New function.
3295         (rx_init_builtins): Handle RX_BUILTIN_MVTIPL.
3296         (rx_expand_builtin): Likewise.
3297         (rx_enable_fpu): New variable.
3298         (rx_handle_option): Handle -fpu, -nofpu, -mcpu and -patch.
3299         * config/rx/rx.h (TARGET_CPU_CPP_BUILTINS): Assert machine based
3300         on rx_cpu_type.  Define __RX_FPU_INSNS__ if FPU insns are allowed.
3301         (enum rx_cpu_types): Define.
3302         (ASM_SPEC): Pass -m32bit-doubles on to assembler.
3303         (INCOMING_FRAME_SP_OFFSET): Define.
3304         (ARG_POINTER_CFA_OFFSET): Define.
3305         (FRAME_POINTER_CFA_OFFSET): Define.
3306         (OVERRIDE_OPTIONS): Enable fast math if RX FPU insns are enabled.
3307         (ALLOW_RX_FPU_INSNS): Define.
3308         * config/rx/rx.md: Test ALLOW_RX_FPU_INSNS instead of
3309         fast_math_flags_set_p.
3310         (UNSPEC_BUILTIN_MVTIPL): Define.
3311         (revl): Rename to bswapsi2.
3312         (bswaphi2): New pattern.
3313         (mvtachi): Mark as volatile because it uses a register unknown to GCC.
3314         (mvtaclo): Likewise.
3315         (racw): Likewise.
3316         (mvtc): Remove clobber of cc0.
3317         (mvtcp): Delete.
3318         (opecp): Delete.
3319         * config/rx/rx.opt (mieee): Remove.
3320         (fpu): Add.
3321         (nofpu): Add.
3322         (mcpu=): Add.
3323         (patch=): Add.
3324         (msave-acc-in-interrupts): Add.
3325         * config/rx/t-rx (MULTILIB_OPTIONS): Change default to 64bit doubles.
3326         (MULTILIB_DIRS): Likewise.
3327         (MULTILIB_MATCHES): Treat -fpu as an alias for -m32bit-doubles.
3328         * doc/extend.texi: Remove description of "exception" function
3329         attribute.
3330         * doc/invoke.texi: Document -fpu, -nofpu, -mcpu=, -patch= and
3331         -msave-acc-in-interrupts options.
3332
3333 2009-11-03  Richard Guenther  <rguenther@suse.de>
3334
3335         * c-common.c (fold_offsetof_1): Use HOST_WIDE_INT_PRINT_DEC.
3336
3337 2009-11-03  Dodji Seketeli  <dodji@redhat.com>
3338
3339         PR c++/38699
3340         * c-common.c (fold_offsetof_1): Issue errors when the member
3341         designator of the offsetof expression is not legitimate.
3342
3343 2009-11-03  Uros Bizjak  <ubizjak@gmail.com>
3344
3345         * config/i386/i386.md (*call_value_1_rex64_ms_sysv): Use register
3346         names instead of numerical constants.
3347         (sse_prologue_save): Ditto.
3348         (*sse_prologue_save_insn): Ditto.
3349
3350 2009-11-03  Uros Bizjak  <ubizjak@gmail.com>
3351
3352         PR target/41900
3353         * config/i386/i386.h (ix86_arch_indices) <X86_ARCH_CALL_ESP>: New.
3354         (TARGET_CALL_ESP): New define.
3355         * config/i386/i386.c (initial_ix86_tune_features): Initialize
3356         X86_ARCH_CALL_ESP.
3357         * config/i386/i386.md (*call_pop_1_esp, *call_1_esp,
3358         *call_value_pop_1_esp, *call_value_1_esp): Rename from *call_pop_1,
3359         *call_1, *call_value_pop_1 and *call_value_1.  Depend on
3360         TARGET_CALL_ESP.
3361         (*call_pop_1, *call_1, *call_value_pop_1, *call_value_1):
3362         New patterns, use "lsm" as operand 1 constraint.
3363         * config/i386/predicates.md (call_insn_operand): Depend on
3364         index_register_operand for !TARGET_CALL_ESP to avoid %esp register.
3365
3366 2009-11-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
3367
3368         PR tree-optimization/41857
3369         * tree-flow.h (rewrite_use_address): Add BASE_HINT argument.
3370         * tree-ssa-loop-ivopts.c (rewrite_use_address): Pass base hint
3371         to create_mem_ref.
3372         * tree-ssa-address.c (move_hint_to_base): New function.
3373         (most_expensive_mult_to_index): Add TYPE argument.  Use mode and
3374         address space associated with TYPE.
3375         (addr_to_parts): Add TYPE and BASE_HINT arguments.  Pass TYPE to
3376         most_expensive_mult_to_index.  Call move_hint_to_base.
3377         (create_mem_ref): Add BASE_HINT argument.  Pass BASE_HINT and
3378         TYPE to addr_to_parts.
3379
3380 2009-11-02  Martin Jambor  <mjambor@suse.cz>
3381
3382         PR tree-optimization/41750
3383         * tree-sra.c (analyze_modified_params): Loop over all
3384         representatives of components of a parameter.
3385
3386 2009-11-02  Jakub Jelinek  <jakub@redhat.com>
3387
3388         PR tree-optimization/41841
3389         * ipa-struct-reorg.c (build_data_structure): Don't attempt to look at
3390         local variables of not yet materialized clones.
3391
3392         PR debug/41893
3393         * cfgexpand.c (expand_debug_expr): Don't attempt to create DECL_RTL
3394         for a VOIDmode variable.
3395
3396         PR c++/41774
3397         * c-pragma.c (visstack): Change into vector of ints rather than
3398         enum symbol_visibility.
3399         (push_visibility): Add kind argument, push default_visibility together
3400         with kind.
3401         (pop_visibility): Add kind argument, return true if successful, fail
3402         if visibility stack is empty or if stack top is of different kind.
3403         (handle_pragma_visibility): Don't check length of visstack, instead
3404         call pop_visibility and issue diagnostics if it failed.  Pass 0
3405         as last argument to push_visibility and pop_visibility.
3406         * c-pragma.h (push_visibility): Add kind argument.
3407         (pop_visibility): Likewise.  Return bool instead of void.
3408
3409 2009-11-01  Eric Botcazou  <ebotcazou@adacore.com>
3410
3411         * tree.def (TARGET_MEM_REF): Update comment.
3412         * alias.c (get_alias_set): Retrieve the original memory reference for
3413         a TARGET_MEM_REF before proceeding.
3414
3415 2009-10-31  Anatoly Sokolov  <aesok@post.ru>
3416
3417         * config/frv/frv.c (frv_function_value, frv_libcall_value,
3418         frv_function_value_regno_p): New functions.
3419         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
3420         * config/frv/frv.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
3421         (FUNCTION_VALUE_REGNO_P): Redefine, use frv_function_value_regno_p.
3422         * config/frv/frv-protos.h (frv_function_value_regno_p): Declare.
3423
3424 2009-10-31  Anatoly Sokolov  <aesok@post.ru>
3425
3426         * config/mn10300/mn10300.c (mn10300_function_value): Make static, add
3427         new 'outgoing' argument.
3428         (mn10300_libcall_value, mn10300_function_value_regno_p): New functions.
3429         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
3430         * config/mn10300/mn10300.h (FUNCTION_VALUE, FUNCTION_OUTGOING_VALUE,
3431         LIBCALL_VALUE): Remove.
3432         (FUNCTION_VALUE_REGNO_P): Redefine, use mn10300_function_value_regno_p.
3433         * config/mn10300/mn10300-protos.h (mn10300_function_value): Remove.
3434         (mh10300_function_value_regno_p): Declare.
3435
3436 2009-10-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
3437
3438         * config/arm/cortex-a9.md: New - integer pipeline description.
3439
3440 2009-10-31  Eric Botcazou  <ebotcazou@adacore.com>
3441
3442         * tree-ssa-sccvn.c (vn_reference_lookup_3): Bail out instead of
3443         aborting if the sizes of the two references don't match.
3444
3445 2009-10-31  Toon Moene  <toon@moene.org>
3446
3447         * ipa-inline.c (cgraph_decide_inlining):
3448         Include reason for not inlining called-once functions in dump file.
3449
3450 2009-10-30  Daniel Gutson  <dgutson@codesourcery.com>
3451
3452         * config/arm/linux-eabi.h (LINK_SPEC): BE8_LINK_SPEC added.
3453         * config/arm/bpapi.h (BE8_LINK_SPEC): New define.
3454         (LINK_SPEC): BE_LINK_SPEC added.
3455
3456 2009-10-30  Richard Guenther  <rguenther@suse.de>
3457
3458         PR lto/41858
3459         * lto-streamer.h (struct lto_file_decl_data): Remove fd member.
3460
3461 2009-10-30  Nathan Sidwell  <nathan@codesourcery.com>
3462
3463         * target-def.h (TARGET_ASM_TTYPE): Correct typo of TARGET_ARM_TTYPE.
3464         * config/arm/unwind-arm.c (__gnu_Unwind_Backtrace): Remove unused
3465         label.
3466
3467 2009-10-30  Martin Jambor  <mjambor@suse.cz>
3468
3469         * tree-sra.c (build_ref_for_offset_1): Remove a comment.
3470
3471 2009-10-30  H.J. Lu  <hongjiu.lu@intel.com>
3472
3473         PR target/40838
3474         * cfgexpand.c (expand_stack_alignment): Call update_stack_boundary
3475         first.  Move assert on stack_alignment_estimated just before
3476         setting stack_realign_needed.
3477         (gimple_expand_cfg): Initialize stack_alignment_estimated to 0.
3478         Don't call update_stack_boundary.
3479
3480         * config/i386/i386.c (ix86_minimum_incoming_stack_boundary): New.
3481         (verride_options): Don't check ix86_force_align_arg_pointer here.
3482         (ix86_function_ok_for_sibcall): Use it.
3483         (ix86_update_stack_boundary): Likewise.
3484
3485         * config/i386/i386.h (STACK_REALIGN_DEFAULT): Update comments.
3486
3487 2009-10-30  Richard Earnshaw  <rearnsha@arm.com>
3488
3489         * arm.md (QHSI): New mode iterator.
3490         (movqi): If generating for thumb, then truncate any immediate to
3491         8 bits.
3492         * thumb2.md (thumb2_movsi_shortim and peephole2 generator): Replace
3493         with...
3494         (thumb2_mov<mode>_shortim and peephole2 generator): ... iterator based
3495         version.
3496
3497 2009-10-29  Cary Coutant  <ccoutant@google.com>
3498
3499         PR debug/41700
3500         * dwarf2out.c (dwarf2_debug_hooks): Add entries for new hook (two
3501         locations in the source).
3502         (store_vcall_insn): New function.
3503         (lookup_vcall_insn): New function.
3504         (dwarf2out_virtual_call_token): Use store_vcall_insn.
3505         (dwarf2out_copy_call_info): New function.
3506         (dwarf2out_virtual_call): Use lookup_vcall_insn.
3507         * emit-rtl.c (try_split): Call copy_call_info debug hook.
3508         * debug.h (struct gcc_debug_hooks): Add copy_call_info hook.
3509         * debug.c (do_nothing_debug_hooks): Add dummy entry for new hook.
3510         (debug_nothing_rtx_rtx): New dummy hook.
3511         * dbxout.c (dbx_debug_hooks): Add dummy entry for new hook.
3512         (xcoff_debug_hooks): Likewise.
3513         * sdbout.c (sdb_debug_hooks): Likewise.
3514         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
3515
3516 2009-10-29  David Daney  <ddaney@caviumnetworks.com>
3517
3518         * doc/invoke.texi (mmcount-ra-address): Document new command line
3519         option.
3520         * config/mips/mips.opt (mmcount-ra-address): New option.
3521         * config/mips/mips-protos.h (mips_function_profiler): Declare new
3522         function.
3523         * config/mips/mips.c (struct mips_frame_info): Add ra_fp_offset
3524         member.
3525         (mips_for_each_saved_gpr_and_fpr): Set ra_fp_offset.
3526         (mips_function_profiler): Moved from FUNCTION_PROFILER, and
3527         rewritten.
3528         * config/mips/mips.h (FUNCTION_PROFILER): Body of macro moved to
3529         mips_function_profiler.
3530
3531 2009-10-29  Steve Ellcey  <sje@cup.hp.com>
3532
3533         PR middle-end/37565
3534         PR target/38018
3535         * doc/tm.texi (OVERRIDE_OPTIONS): Update.
3536         (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
3537         * optc-gen.awk (cl_target_option_restore): Include call to
3538         targetm.override_options_after_change.
3539         * target-def.h (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
3540         * target.h (override_options_after_change): New.
3541         * c-common.c (parse_optimize_options): Call
3542         targetm.override_options_after_change.
3543         * config/ia64/ia64.c (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
3544         (ia64_override_options_after_change): New.
3545         (ia64_override_options) Add call to above.
3546
3547 2009-10-29  Michael Matz  <matz@suse.de>
3548
3549         * tree-ssa-math-opts.c (execute_convert_to_rsqrt): Remove.
3550         (gate_convert_to_rsqrt): Ditto.
3551         (pass_convert_to_rsqrt): Ditto.
3552         * tree-pass.h (pass_convert_to_rsqrt): Don't declare.
3553         * passes.c (init_optimization_passes): Don't add pass_convert_to_rsqrt
3554         to pass list.
3555
3556         * config/i386/i386.c (ix86_emit_swdivsf): Change evaluation order.
3557
3558 2009-10-29  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
3559
3560         * config/arm/arm.c (find_best_start): Fix type of remainder to be
3561         unsigned.
3562
3563 2009-10-29  Martin Jambor  <mjambor@suse.cz>
3564
3565         PR tree-optimization/41775
3566         * tree-sra.c (build_ref_for_offset): Unshare *expr if not NULL.
3567         (generate_subtree_copies): Do not unshare agg.
3568         (load_assign_lhs_subreplacements): Do not unshare rhs.
3569         (sra_modify_assign): Do not unshare exprs.
3570         (propagate_subacesses_accross_link): Renamed to
3571         propagate_subaccesses_across_link.
3572
3573 2009-10-29  Richard Earnshaw  <rearnsha@arm.com>
3574
3575         * arm.c (count_insns_for_constant): Rework to support counting for
3576         thumb2 immediates as well.
3577         (find_best_start): Split out from arm_gen_constant.
3578         (arm_gen_constant): Rework to support XOR with immediate.
3579
3580 2009-10-29  Chao-ying Fu  <fu@mips.com>
3581
3582         * config/mips/mips.c (mips_emit_unary, mips_force_unary): New
3583         functions.
3584         (mips_expand_synci_loop):  Use the length rtx to control the
3585         synci loop from the begin rtx that points to the first byte of
3586         the cache line.
3587
3588 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
3589
3590         * doc/invoke.texi: Rename -use-linker-plugin -fuse-linker-plugin.
3591
3592 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
3593
3594         * dbxout.c (dbxout_common_check): Accept non public trees.
3595         * dwarf2out.c (fortran_common): Accept non public trees.
3596
3597 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
3598
3599         * common.opt (fuse-linker-plugin): New option.
3600         * gcc.c (LINK_COMMAND_SPEC, main): Rename use-linker-plugin to
3601         fuse-linker-plugin.
3602         * opts.c (common_handle_option): Ignore OPT_fuse_linker_plugin.
3603
3604 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
3605
3606         PR rtl-optimization/39715
3607         * config/arm/arm.md (cstoresi4): Use gen_cstoresi_ltu_thumb1.
3608         (gen_cstoresi_ltu_thumb1): New splitter.
3609
3610 2009-10-28  Richard Guenther  <rguenther@suse.de>
3611
3612         PR lto/41808
3613         PR lto/41839
3614         * tree-ssa.c (useless_type_conversion_p): Do not treat
3615         conversions to pointers to incomplete types as useless.
3616         * gimple.c (gimple_types_compatible_p): Compare struct tags,
3617         not typedef names.
3618
3619 2009-10-28  Jakub Jelinek  <jakub@redhat.com>
3620
3621         * var-tracking.c (emit_note_insn_var_location): Don't call the second
3622         vt_expand_loc unnecessarily when location is not a register nor
3623         memory.
3624
3625         PR middle-end/41837
3626         * ipa-struct-reorg.c (find_field_in_struct_1): Return NULL if
3627         fields don't have DECL_NAME.
3628
3629         PR debug/41801
3630         * builtins.c (get_builtin_sync_mem): Expand loc in ptr_mode,
3631         call convert_memory_address on addr.
3632
3633         PR target/41762
3634         * config/i386/i386.c (ix86_pic_register_p): Don't call
3635         rtx_equal_for_cselib_p for VALUEs discarded as useless.
3636
3637 2009-10-28  Richard Sandiford  <rdsandiford@googlemail.com>
3638
3639         * var-tracking.c (emit_note_insn_var_location): Get the mode of
3640         a variable part from its REG, MEM or VALUE.
3641
3642 2009-10-28  Richard Guenther  <rguenther@suse.de>
3643
3644         * gimple.c (gimple_get_alias_set): Fix comment typo.
3645
3646 2009-10-28  Richard Guenther  <rguenther@suse.de>
3647
3648         * tree.c (free_lang_data_in_type): Do not call get_alias_set.
3649         (free_lang_data): Unconditionally compute alias sets for all
3650         standard integer types.  Bail out if gate bailed out previously.
3651         Do not reset the types_compatible_p langhook.
3652         (gate_free_lang_data): Remove.
3653         (struct pass_ipa_free_lang_data): Enable unconditionally.
3654         * gimple.c (gimple_get_alias_set): Use the same alias-set for
3655         all pointer types.
3656
3657 2009-10-28  Richard Guenther  <rguenther@suse.de>
3658
3659         PR middle-end/41855
3660         * tree-ssa-alias.c (refs_may_alias_p_1): Deal with CONST_DECLs
3661         (ref_maybe_used_by_call_p_1): Fix bcopy handling.
3662         (call_may_clobber_ref_p_1): Likewise.
3663         * tree-ssa-structalias.c (find_func_aliases): Likewise.
3664         * alias.c (nonoverlapping_memrefs_p): Deal with CONST_DECLs.
3665
3666 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
3667
3668         PR rtl-optimization/41812
3669
3670         Revert:
3671         2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
3672
3673         * df-problems.c (df_md_scratch): New.
3674         (df_md_alloc, df_md_free): Allocate/free it.
3675         (df_md_local_compute): Only include live registers in init.
3676         (df_md_transfer_function): Prune the in-set computed by
3677         the confluence function, and the gen-set too.
3678
3679 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
3680
3681         PR rtl-optimization/39715
3682         * combine.c (simplify_comparison): Use extensions to
3683         widen comparisons.  Try an ANDing first.
3684
3685 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
3686
3687         PR rtl-optimization/40741
3688         * config/arm/arm.c (thumb1_rtx_costs): IOR or XOR with
3689         a small constant is cheap.
3690         * config/arm/arm.md (andsi3, iorsi3): Try to place the result of
3691         force_reg on the LHS.
3692         (xorsi3): Likewise, and split the XOR if the constant is complex
3693         and not in Thumb mode.
3694
3695 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
3696
3697         * expmed.c (emit_store_flag): Check costs before
3698         transforming to the opposite representation.
3699
3700 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
3701
3702         * config/sh/sh.md (cbranchfp4_media): Remove hack extending
3703         cstore result to DImode.
3704
3705 2009-10-28  Kaz Kojima  <kkojima@gcc.gnu.org>
3706
3707         * config/sh/sh.md (stuff_delay_slot): Move const_int pattern
3708         inside the unspec vector.
3709
3710 2009-10-27  Richard Henderson  <rth@redhat.com>
3711
3712         * cgraphunit.c (cgraph_optimize): Maintain timevar stack properly.
3713
3714 2009-10-27  Richard Henderson  <rth@redhat.com>
3715
3716         PR c++/41819
3717         * tree-eh.c (eh_region_may_contain_throw_map): Rename from
3718         eh_region_may_contain_throw; update users.
3719         (eh_region_may_contain_throw): New function.
3720         (lower_catch): Check flag_exceptions before creating exception region.
3721         (lower_eh_filter, lower_eh_must_not_throw): Likewise.
3722         (lower_cleanup): Tidy existing flag_exceptions check to match.
3723
3724 2009-10-27  Kai Tietz <kai.tietz@onevision.com>
3725
3726         PR/41799
3727         * config/i386/mingw32.h (CHECK_EXECUTE_STACK_ENABLED): New macro.
3728         * config/i386/mingw.opt: Add fset-stack-executable.
3729         * config/i386/i386.c (ix86_trampoline_init): Make call to
3730         emit_library_call conditional, if CHECK_EXECUTE_STACK_ENABLED is
3731         defined and its value is not zero.
3732         * doc/invoke.texi
3733
3734 2009-10-27  Richard Guenther  <rguenther@suse.de>
3735
3736         * tree-ssa-structalias.c (find_func_aliases): In IPA mode
3737         handle calls to externally visible functions like in regular mode.
3738         (create_variable_info_for): Do not create function infos here.
3739         (have_alias_info): Remove write-only variable.
3740         (solve_constraints): New function split out from common code
3741         in compute_points_to_sets and ipa_pta_execute.
3742         (compute_points_to_sets): Adjust.
3743         (ipa_pta_execute): Likewise.  Handle clones and externally visible
3744         functions like in non-IPA mode.
3745
3746 2009-10-27  Jakub Jelinek  <jakub@redhat.com>
3747
3748         PR c/41842
3749         * c-typeck.c (convert_arguments): Return -1 if any of the arguments is
3750         error_mark_node.
3751
3752 2009-10-27  Richard Guenther  <rguenther@suse.de>
3753
3754         * tree-complex.c (expand_complex_div_wide): Check for
3755         INTEGER_CST, not TREE_CONSTANT on comparison folding result.
3756
3757 2009-10-27  Revital Eres  <eres@il.ibm.com>
3758
3759         PR tree-optimization/40648
3760         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
3761         Change decision of when to peel for alignment.
3762
3763 2009-10-27  Richard Guenther  <rguenther@suse.de>
3764
3765         PR lto/41821
3766         * gimple.c (gimple_types_compatible_p): Handle OFFSET_TYPE.
3767
3768 2009-10-27  Aldy Hernandez  <aldyh@redhat.com>
3769
3770         PR bootstrap/41451
3771         * fold-const.c (fold_binary_loc): Do not call
3772         protected_set_expr_location.
3773
3774 2009-10-27  Wei Guozhi  <carrot@google.com>
3775
3776         PR target/41705
3777         * target.h (have_conditional_execution): Add a new target hook
3778         function.
3779         * target-def.h (TARGET_HAVE_CONDITIONAL_EXECUTION): Likewise.
3780         * targhooks.h (default_have_conditional_execution): Likewise.
3781         * targhooks.c (default_have_conditional_execution): Likewise.
3782         * doc/tm.texi (TARGET_HAVE_CONDITIONAL_EXECUTION): Document it.
3783         * config/arm/arm.c (TARGET_HAVE_CONDITIONAL_EXECUTION): Define it.
3784         (arm_have_conditional_execution): New function.
3785         * ifcvt.c (noce_process_if_block, find_if_header,
3786         cond_exec_find_if_block, dead_or_predicable): Change the usage of
3787         macro HAVE_conditional_execution to a target hook call.
3788         * recog.c (peephole2_optimize): Likewise.
3789         * sched-rgn.c (add_branch_dependences): Likewise.
3790         * final.c (asm_insn_count, final_scan_insn): Likewise.
3791         * bb-reorder.c (HAVE_conditional_execution): Remove it.
3792
3793 2009-10-26  Ben Elliston  <bje@au.ibm.com>
3794             Michael Meissner  <meissner@linux.vnet.ibm.com>
3795             Ulrich Weigand  <uweigand@de.ibm.com>
3796
3797         * config.gcc (spu-*-elf*): Add spu_cache.h to extra_headers.
3798         * config/spu/spu_cache.h: New file.
3799
3800         * config/spu/cachemgr.c: New file.
3801         * config/spu/cache.S: New file.
3802
3803         * config/spu/spu.h (ASM_OUTPUT_SYMBOL_REF): Define.
3804         (ADDR_SPACE_EA): Define.
3805         (TARGET_ADDR_SPACE_KEYWORDS): Define.
3806         * config/spu/spu.c (EAmode): New macro.
3807         (TARGET_ADDR_SPACE_POINTER_MODE): Define.
3808         (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
3809         (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Likewise.
3810         (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Likewise.
3811         (TARGET_ADDR_SPACE_SUBSET_P): Likewise.
3812         (TARGET_ADDR_SPACE_CONVERT): Likewise.
3813         (TARGET_ASM_SELECT_SECTION): Likewise.
3814         (TARGET_ASM_UNIQUE_SECTION): Likewise.
3815         (TARGET_ASM_UNALIGNED_SI_OP): Likewise.
3816         (TARGET_ASM_ALIGNED_DI_OP): Likewise.
3817         (ea_symbol_ref): New function.
3818         (spu_legitimate_constant_p): Handle __ea qualified addresses.
3819         (spu_addr_space_legitimate_address_p): New function.
3820         (spu_addr_space_legitimize_address): Likewise.
3821         (cache_fetch): New global.
3822         (cache_fetch_dirty): Likewise.
3823         (ea_alias_set): Likewise.
3824         (ea_load_store): New function.
3825         (ea_load_store_inline): Likewise.
3826         (expand_ea_mem): Likewise.
3827         (spu_expand_mov): Handle __ea qualified memory references.
3828         (spu_addr_space_pointer_mode): New function.
3829         (spu_addr_space_address_mode): Likewise.
3830         (spu_addr_space_subset_p): Likewise.
3831         (spu_addr_space_convert): Likewise.
3832         (spu_section_type_flags): Handle "._ea" section.
3833         (spu_select_section): New function.
3834         (spu_unique_section): Likewise.
3835         * config/spu/spu-c.c (spu_cpu_cpp_builtins): Support __EA32__
3836         and __EA64__ predefined macros.
3837         * config/spu/spu-elf.h (LIB_SPEC): Handle -mcache-size= and
3838         -matomic-updates switches.
3839
3840         * config/spu/t-spu-elf (MULTILIB_OPTIONS): Define.
3841         (EXTRA_MULTILIB_PARTS): Add libgcc_cachemgr.a,
3842         libgcc_cachemgr_nonatomic.a, libgcc_cache8k.a, libgcc_cache16k.a,
3843         libgcc_cache32k.a, libgcc_cache64k.a, libgcc_cache128k.a.
3844         ($(T)cachemgr.o, $(T)cachemgr_nonatomic.o): New target.
3845         ($(T)cache8k.o, $(T)cache16k.o, $(T)cache32k.o, $(T)cache64k.o,
3846         $(T)cache128k.o): Likewise.
3847         ($(T)libgcc_%.a): Likewise.
3848
3849         * config/spu/spu.h (TARGET_DEFAULT): Add MASK_ADDRESS_SPACE_CONVERSION.
3850         * config/spu/spu.opt (-mea32/-mea64): Add switches.
3851         (-maddress-space-conversion): Likewise.
3852         (-mcache-size=): Likewise.
3853         (-matomic-updates): Likewise.
3854         * doc/invoke.texi (-mea32/-mea64): Document.
3855         (-maddress-space-conversion): Likewise.
3856         (-mcache-size=): Likewise.
3857         (-matomic-updates): Likewise.
3858
3859 2009-10-26  Ben Elliston  <bje@au.ibm.com>
3860             Michael Meissner  <meissner@linux.vnet.ibm.com>
3861             Ulrich Weigand  <uweigand@de.ibm.com>
3862
3863         * doc/tm.texi (TARGET_ADDR_SPACE_KEYWORDS): Document.
3864
3865         * c-common.c (c_common_reswords): If TARGET_ADDR_SPACE_KEYWORDS is
3866         defined, add the named address space keywords.
3867         (c_addr_space_name): New function.
3868         (complete_array_type): Preserve named address space.
3869         (handle_mode_attribute): Use targetm.addr_space.valid_pointer_mode
3870         instead of targetm.valid_pointer_mode.
3871
3872         * c-common.h (enum rid): Add RID_ADDR_SPACE_0 .. RID_ADDR_SPACE_15,
3873         RID_FIRST_ADDR_SPACE and RID_LAST_ADDR_SPACE.
3874         (ADDR_SPACE_KEYWORD): New macro.
3875         (c_addr_space_name): Add prototype.
3876
3877         * c-tree.h (struct c_declspecs): Add address_space member.
3878         (declspecs_add_addrspace): Add prototype.
3879
3880         * c-pretty-print.c (pp_c_type_qualifier_list): Handle address spaces.
3881
3882         * c-parser.c (c_parse_init): Add assertion.
3883         (typedef enum c_id_kind): Add C_ID_ADDRSPACE.
3884         (c_lex_one_token): Handle address space keywords.
3885         (c_token_starts_typename): Likewise.
3886         (c_token_starts_declspecs): Likewise.
3887         (c_parser_declspecs): Likewise.
3888         (c_parser_postfix_expression_after_paren_type): Diagnose compound
3889         literal within function qualified with named address space.
3890
3891         * c-decl.c (diagnose_mismatched_decls): Diagnose conflicting named
3892         address space qualifiers.
3893         (shadow_tag_warned): Warn about useless address space qualifiers.
3894         (quals_from_declspecs): Handle address space qualifiers.
3895         (grokdeclarator): Likewise.
3896         (build_null_declspecs): Likewise.
3897         (declspecs_add_addrspace): New function.
3898
3899         * c-typeck.c (addr_space_superset): New function.
3900         (qualify_type): Handle named address spaces.
3901         (composite_type): Likewise.
3902         (common_pointer_type): Likewise.
3903         (comp_target_types): Likewise.
3904         (build_conditional_expr): Likewise.
3905         (handle_warn_cast_qual): Likewise.
3906         (build_c_cast): Likewise.
3907         (convert_for_assignment): Likewise.
3908         (build_binary_op): Likewise.
3909         (pointer_diff): Handle named address spaces.  Use intermediate
3910         integer type of sufficient size if required.
3911
3912 2009-10-26  Ben Elliston  <bje@au.ibm.com>
3913             Michael Meissner  <meissner@linux.vnet.ibm.com>
3914             Ulrich Weigand  <uweigand@de.ibm.com>
3915
3916         * doc/tm.texi (TARGET_ADDR_SPACE_POINTER_MODE): Document.
3917         (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
3918         (TARGET_ADDR_SPACE_VALID_POINTER_MODE): Likewise.
3919
3920         * target.h (struct target_def): Add pointer_mode, address_mode,
3921         and valid_pointer_mode to addr_space substructure.
3922         * target-def.h (TARGET_ADDR_SPACE_POINTER_MODE): Define.
3923         (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
3924         (TARGET_ADDR_SPACE_VALID_POINTER_MODE): Likewise.
3925         (TARGET_ADDR_SPACE_HOOKS): Add them.
3926         * targhooks.c (target_default_pointer_address_modes_p): New function.
3927         * target.h (target_default_pointer_address_modes_p): Add prototype.
3928         * targhooks.c (default_addr_space_pointer_mode): New function.
3929         (default_addr_space_address_mode): Likewise.
3930         (default_addr_space_valid_pointer_mode): Likewise.
3931         * targhooks.h (default_addr_space_pointer_mode): Add prototype.
3932         (default_addr_space_address_mode): Likewise.
3933         (default_addr_space_valid_pointer_mode): Likewise.
3934         * output.h (default_valid_pointer_mode): Move to ...
3935         * targhooks.h (default_valid_pointer_mode): ... here.
3936         * varasm.c (default_valid_pointer_mode): Move to ...
3937         * targhooks.c (default_valid_pointer_mode): ... here.
3938
3939         * varasm.c (output_constant): Use targetm.addr_space.valid_pointer_mode
3940         instead of targetm.valid_pointer_mode.
3941
3942         * fold-const.c (fit_double_type): Use int_or_pointer_precision.
3943         * tree.c (integer_pow2p): Likewise.
3944         (tree_log2): Likewise.
3945         (tree_floor_log2): Likewise.
3946         (signed_or_unsigned_type_for): Support pointer type of different size.
3947         (int_or_pointer_precision): New function.
3948         * tree.h (int_or_pointer_precision): Add prototype.
3949         * stor-layout.c (layout_type): Set TYPE_PRECISION for offset types.
3950         * varasm.c (initializer_constant_valid_p): Use TYPE_PRECISION of
3951         incoming pointer type instead of POINTER_SIZE.
3952
3953         * tree.c (build_pointer_type): Use appropriate pointer mode
3954         instead of ptr_mode.
3955         (build_reference_type): Likewise.
3956         * expr.c (store_expr): Likewise.
3957         (expand_expr_addr_expr): Likewise.
3958         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Likewise.
3959         * cfgexpand.c (expand_debug_expr): Likewise.
3960
3961         * auto-inc-dec.c: Include "target.h".
3962         (try_merge): Use appropriate address mode instead of Pmode.
3963         (find_inc): Likewise.
3964         * combine.c (find_split_point): Likewise.
3965         * cselib.c (cselib_record_sets): Likewise.
3966         * dse.c (replace_inc_dec): Likewise.
3967         (canon_address): Likewise.
3968         * var-tracking.c (replace_expr_with_values): Likewise.
3969         (count_uses): Likewise.
3970         (add_uses): Likewise.
3971         (add_stores): Likewise.
3972         * emit-rtl.c: Include "target.h".
3973         (adjust_address_1): Use appropriate address mode instead of Pmode.
3974         (offset_address): Likewise.
3975         * explow.c (break_out_memory_refs): Likewise.
3976         (memory_address_addr_space): Likewise.
3977         (promote_mode): Likewise.
3978         * expr.c (move_by_pieces): Likewise.
3979         (emit_block_move_via_loop): Likewise.
3980         (store_by_pieces): Likewise.
3981         (store_by_pieces_1): Likewise.
3982         (expand_assignment): Likewise.
3983         (store_constructor): Likewise.
3984         (expand_expr_addr_expr): Likewise.
3985         (expand_expr_real_1): Likewise.
3986         * cfgexpand.c (expand_debug_expr): Likewise.
3987         * ifcvt.c (noce_try_cmove_arith): Likewise.
3988         * regcprop.c (kill_autoinc_value): Likewise.
3989         * regmove.c (try_auto_increment): Likewise.
3990         * reload.c (find_reloads): Likewise.
3991         (find_reloads_address): Likewise.
3992         (find_reloads_address_1): Likewise.
3993         * sched-deps.c: Include "target.h".
3994         (sched_analyze_1): Use appropriate address mode instead of Pmode.
3995         (sched_analyze_2): Likewise.
3996         * sel-sched-dump.c: Include "target.h".
3997         (debug_mem_addr_value): Use appropriate address mode instead of Pmode.
3998         * stor-layout.c (layout_type): Likewise.
3999         * tree-ssa-loop-ivopts.c (produce_memory_decl_rtl): Likewise.
4000         (multiplier_allowed_in_address_p): Likewise.
4001         (get_address_cost): Likewise.
4002         * varasm.c (make_decl_rtl): Likewise.
4003
4004         * expr.c (expand_assignment): Always convert offsets to appropriate
4005         address mode.
4006         (store_expr): Likewise.
4007         (store_constructor): Likewise.
4008         (expand_expr_real_1): Likewise.
4009
4010         * reload.h (form_sum): Add MODE argument.
4011         * reload.c (form_sum): Add MODE argument, use it instead of Pmode.
4012         Update recursive calls.
4013         (subst_indexed_address): Update calls to form_sum.
4014
4015         * tree-flow.h (addr_for_mem_ref): Add ADDRSPACE argument.
4016         * tree-ssa-address.c: Include "target.h".
4017         (templates): Replace by ...
4018         (mem_addr_template_list): ... this new vector.
4019         (TEMPL_IDX): Handle address space numbers.
4020         (gen_addr_rtx): Add address mode argument, use it instead of Pmode.
4021         (addr_for_mem_ref): Add ADDRSPACE argument.  Use per-address-space
4022         instead of global cache.  Update call to gen_addr_rtx.