OSDN Git Service

* config/sparc/linux.h (ASM_SPEC): Pass -K PIC if -findirect-dispatch.
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-12-07  Eric Botcazou  <ebotcazou@adacore.com>
2
3         * config/sparc/linux.h (ASM_SPEC): Pass -K PIC if -findirect-dispatch.
4         * config/sparc/linux64.h (ASM_SPEC): Likewise.
5
6 2009-12-07  Richard Henderson  <rth@redhat.com>
7
8         PR debug/42299
9         PR debug/42166
10         * tree-ssa.c (insert_debug_temp_for_var_def): Skip propagation
11         for ssa names already registered for update.
12
13 2009-12-07  Jakub Jelinek  <jakub@redhat.com>
14
15         PR debug/42244
16         * ddg.c (add_inter_loop_mem_dep): Use ANTI_DEP if from or to
17         is a DEBUG_INSN.
18
19 2009-12-07  Sebastian Pop  <sebastian.pop@amd.com>
20
21         * config/i386/driver-i386.c (host_detect_local_cpu): Add -mlwp to the
22         options when bit_LWP is set.
23
24 2009-12-07  Sebastian Pop  <sebastian.pop@amd.com>
25
26         * config/i386/cpuid.h (bit_ABM): New.
27         * config/i386/driver-i386.c (host_detect_local_cpu): Add -mabm to the
28         options when bit_ABM is set.
29
30 2009-12-07  Jakub Jelinek  <jakub@redhat.com>
31
32         * config/i386/i386.c (bdesc_special_args): Move __builtin_clzs from
33         this array ...
34         (bdesc_args): ... here.
35         * config.gcc (i[34567]86-*-*): Include abmintrin.h.
36         (x86_64-*-*): Likewise.
37
38 2009-12-07  Sebastian Pop  <sebastian.pop@amd.com>
39
40         * config.gcc (i[34567]86-*-*, x86_64-*-*): Add popcntintrin.h.
41         * config/i386/abmintrin.h (_mm_popcnt_u32, _mm_popcnt_u64): Moved...
42         * config/i386/i386-c.c (__POPCNT__): Defined.
43         * config/i386/popcntintrin.h: ...here.  New file.
44         * config/i386/smmintrin.h (_mm_popcnt_u32, _mm_popcnt_u64): Moved...
45         Include popcntintrin.h.
46         * config/i386/x86intrin.h: Include popcntintrin.h when __POPCNT__
47         is defined.
48
49 2009-12-07  Sebastian Pop  <sebastian.pop@amd.com>
50
51         * config/i386/i386-protos.h (ix86_expand_fma4_multiple_memory):
52         Removed.
53         * config/i386/i386.c (ix86_expand_fma4_multiple_memory): Removed.
54         * config/i386/sse.md: Remove all XOP splitters.
55         Allow the second and fourth operands of XOP multiply-add insns
56         to be nonimmediate.
57
58 2009-12-07  Sebastian Pop  <sebastian.pop@amd.com>
59
60         * config/i386/sse.md: Remove all FMA4 splitters.
61         Allow the second operand of FMA4 insns to be a nonimmediate.
62         Fix comments punctuation.
63
64 2009-12-07  Julian Brown  <julian@codesourcery.com>
65
66         * config/arm/constraints.md (Ps, Pt): New constraint letters.
67         * config/arm/thumb2.md (*thumb2_addsi_short): Tighten constraints.
68
69 2009-12-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
70
71         PR other/40302
72         * configure.ac (HAVE_mpc): Don't define.
73         * config.in, configure: Regenerate.
74
75         PR other/40302
76         * builtins.c: Remove HAVE_mpc* checks throughout.
77         * fold-const.c: Likewise.
78         * real.h: Likewise.
79         * toplev.c: Likewise.
80
81 2009-12-07  Edmar Wienskoski  <edmar@freescale.com>
82
83         * config.gcc (cpu_is_64bit): Add new core e500mc64.
84         (powerpc*-*-*): Add new core e500mc64.
85         * config/rs6000/e500mc64.md: New file.
86         * config/rs6000/rs6000.c (processor_costs): Add new costs for
87         e500mc64.
88         (rs6000_override_options): Add e500mc64 case to
89         processor_target_table. Altivec and Spe options not allowed with
90         e500mc64. Disable string instructions for e500mc64. Enable branch
91         targets alignment for both e500mc and e500mc64. Initialize
92         rs6000_cost for e500mc64.
93         (rs6000_emit_sISEL): New function.
94         (rs6000_emit_sCOND): Call rs6000_emit_sISEL for isel targets.
95         (rs6000_emit_int_cmove): Fix mode of 64 bit isel pattern
96         generation.
97         (rs6000_issue_rate): Set issue rate for e500mc64.
98         (rs6000_rtx_costs): Set more accurate cost for mfcr instruction
99         on architectures with isel.
100         * config/rs6000/rs6000-protos.h (rs6000_emit_sISEL): Declare.
101         * config/rs6000/rs6000.h (processor_type): Add
102         PROCESSOR_PPCE500MC64.
103         (ASM_CPU_SPEC): Add e500mc64.
104         * config/rs6000/rs6000.md (define_attr "cpu"): Add ppce500mc64.
105         Include e500mc64.md.
106         (abssi2_isel): Expand pattern to handle DImode.
107         (nabs<mode>2_isel): New pattern.
108         (absdi2): Change pattern to handle 64 bit isel targets.
109         (absdi2_internal): Exclude ISEL targets.
110         (nabsdi2): Exclude ISEL targets.
111         * doc/invoke.texi: Add e500mc64 to list of cpus.
112
113 2009-12-07  Uros Bizjak  <ubizjak@gmail.com>
114
115         * config/i386/i386.md (any_or): New code iterator.
116         (any_logic): Rename from plogic code iterator.
117         (logicprefix): Rename from plogicprefix code attribute.
118         (<code><mode>3): Macroize expander from {ior,xor}<mode>3 using
119         any_or code iterator.
120         (*<code><mode>_1): Macroize insn from *{ior,xor}<mode>_1 using
121         any_or code iterator.
122         (*<code><mode>_2): Ditto from *{ior,xor}<mode>_2.
123         (*<code><mode>_3): Ditto from *{ior,xor}<mode>_3.
124         (ior and xor splitters): Ditto.
125         * config/i386/mmx.md: Updated for rename.
126         * config/i386/sse.md: Ditto.
127
128 2009-12-07  Uros Bizjak  <ubizjak@gmail.com>
129
130         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
131         Remove quotes around condition logic code.
132
133 2009-12-06  Richard Henderson  <rth@redhat.com>
134
135         PR debug/42234
136         * tree-ssa-dom.c (degenerate_phi_result): Check for NULL phi
137         argument earlier.
138
139 2009-12-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
140
141         * doc/install.texi: Document MPC is required.
142
143 2009-12-06  Uros Bizjak  <ubizjak@gmail.com>
144
145         * config/i386/i386.md (g): Add HImode and QImode.
146         (general_szext_operand): New mode attribute.
147         (*test<mode>_1): Macroize insn from *test{qi,hi,si}_1 using
148         SWI124 mode iterator.
149         (and<mode>3): Macroize expander from and{qi,hi,si,di}3 using
150         SWIM mode iterator.
151         (*and<mode>_2): Macroize insn from *and{qi,hi,si}_2 using
152         SWI124 mode iterator.
153         (ior<mode>3): Macroize expander from ior{qi,hi,si,di}3 using
154         SWIM mode iterator.
155         (*ior<mode>_1): Macroize insn from *ior{hi,si,di}_1 using
156         SWI248 mode iterator.
157         (*ior<mode>_2): Macroize insn from *ior{qi,hi,si,di}_2 using
158         SWI mode iterator.
159         (*ior<mode>_3): Macroize insn from *ior{qi,hi,si,di}_3 using
160         SWI mode iterator.
161         (xor<mode>3): Macroize expander from xor{qi,hi,si,di}3 using
162         SWIM mode iterator.
163         (*xor<mode>_1): Macroize insn from *xor{hi,si,di}_1 using
164         SWI248 mode iterator.
165         (*xor<mode>_2): Macroize insn from *xor{qi,hi,si,di}_2 using
166         SWI mode iterator.
167         (*xor<mode>_3): Macroize insn from *xor{qi,hi,si,di}_3 using
168         SWI mode iterator.
169
170 2009-12-05  Sebastian Pop  <sebastian.pop@amd.com>
171
172         * config/i386/i386.c (TARGET_DEFAULT_TARGET_FLAGS): Add
173         MASK_FUSED_MADD.
174         * config/i386/i386.h (CC1_CPU_SPEC_1): Remove
175         "'-mfused-madd' was removed".
176         * config/i386/i386.opt (mfused-madd): New.
177         * config/i386/sse.md: Add TARGET_FUSED_MADD to FMA4 insns.
178         * doc/invoke.texi (-mfused-madd, -mno-fused-madd): Document.
179
180 2009-12-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
181
182         * pa64-hpux.h (LIB_SPEC): Handle -rdynamic.
183         * pa-hpux10.h (LIB_SPEC): Likewise.
184         * pa-hpux11.h (LIB_SPEC): Likewise.
185
186         PR ada/41912
187         * pa/linux-unwind.h (pa32_fallback_frame_state): Set fs->signal_frame
188         for signal frames.
189         * pa/hpux-unwind.h (pa32_fallback_frame_state): Likewise.
190
191 2009-12-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
192
193         * configure: Regenerate.
194
195 2009-12-05  Richard Earnshaw  <rearnsha@arm.com>
196
197         * arm/thumb2.md (thumb2_mulsi_short_compare0): Use a low-register
198         for the scratch.
199
200 2009-12-04  David Daney  <ddaney@caviumnetworks.com>
201
202         PR rtl-optimization/42164
203         * combine.c (combine_simplify_rtx): Handle truncation of integer
204         constants.
205
206 2009-12-04  Richard Guenther  <rguenther@suse.de>
207
208         * lto-streamer-out.c (pack_ts_decl_common_value_fields):
209         Revert previous change.
210         (lto_output_ts_decl_common_tree_pointers): Stream DECL_VALUE_EXPR.
211         * lto-streamer-in.c (lto_input_ts_decl_common_tree_pointers):
212         Likewise.
213
214 2009-12-04  Richard Guenther  <rguenther@suse.de>
215
216         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Handle
217         BUILT_IN_MALLOC.
218         (call_may_clobber_ref_p_1): Likewise.
219
220 2009-12-04  Matthias Klose  <doko@ubuntu.com>
221             John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
222
223         PR target/40134
224         * config.gcc (hppa*-*-linux*): Use config/t-slibgcc-libgcc.
225         * config/pa/pa-linux.h (LIB_SPEC): Remove.
226
227 2009-12-03  Sebastian Pop  <sebastian.pop@amd.com>
228             Richard Henderson  <rth@redhat.com>
229
230         * config/i386/i386-protos.h (ix86_fma4_valid_op_p): Remove.
231         * config/i386/i386.c (ix86_fma4_valid_op_p): Remove.
232         * config/i386/i386.md: Do not use ix86_fma4_valid_op_p.
233         * config/i386/sse.md (fma4_*): Remove alternative with operand 1
234         matching a memory access.  Do not use ix86_fma4_valid_op_p.
235         (xop_*): Same.
236         Do not use ix86_fma4_valid_op_p in FMA4 and XOP splitters.
237
238 2009-12-03  Richard Henderson  <rth@redhat.com>
239
240         * config/i386/i386.c (ix86_fixup_binary_operands): For FMA4, force
241         all operands into registers.
242
243 2009-12-03  Sebastian Pop  <sebastian.pop@amd.com>
244
245         * config/i386/i386.c (ix86_expand_fma4_multiple_memory): Remove unused
246         parameter.
247         * config/i386/i386-protos.h (ix86_expand_fma4_multiple_memory): Same.
248         * config/i386/sse.md: Same.
249
250 2009-12-03  Richard Guenther  <rguenther@suse.de>
251
252         * cgraphunit.c (assemble_thunk): Use DECL_ASSEMBLER_NAME
253         instead of DECL_NAME for the entry point.
254
255 2009-12-03  Richard Earnshaw  <rearnsha@arm.com>
256
257         * arm/linux-atomic.c (SYNC_LOCK_RELEASE): Place memory barrier
258         before the lock release.
259
260 2009-12-03  Michael Matz  <matz@suse.de>
261
262         PR middle-end/38474
263         * cfgexpand.c (struct stack_var): Add conflicts member.
264         (stack_vars_conflict, stack_vars_conflict_alloc,
265         n_stack_vars_conflict): Remove.
266         (add_stack_var): Initialize conflicts member.
267         (triangular_index, resize_stack_vars_conflict): Remove.
268         (add_stack_var_conflict, stack_var_conflict_p): Rewrite in
269         terms of new member.
270         (union_stack_vars): Only run over the conflicts.
271         (partition_stack_vars): Remove special case.
272         (expand_used_vars_for_block): Don't call resize_stack_vars_conflict,
273         don't create self-conflicts.
274         (account_used_vars_for_block): Don't create any conflicts.
275         (fini_vars_expansion): Free bitmaps, don't free or clear removed
276         globals.
277
278 2009-12-03  Bernd Schmidt  <bernd.schmidt@analog.com>
279
280         PR middle-end/42202
281         * regrename.c (live_in_chains): New variable.
282         (verify_reg_tracked): New static function.
283         (scan_rtx_reg): Update live_in_chains.
284         (scan_rtx): Only promote sets in COND_EXEC to OP_INOUT if
285         we're already tracking the reg.
286         (build_def_use): Likewise.  Initialize live_in_chains.
287
288 2009-12-03  Ken Werner  <ken.werner@de.ibm.com>
289
290         * config/spu/spu-elf.h (STARTFILE_SPEC): Add support for gprof
291         startup files.
292         * config/spu/spu-protos.h (spu_function_profiler): Add prototype.
293         * config/spu/spu.c (spu_function_profiler): New function.
294         * config/spu/spu.h (FUNCTION_PROFILER): Invoke
295         spu_function_profiler.
296         (NO_PROFILE_COUNTERS): Define.
297         (PROFILE_BEFORE_PROLOGUE): Likewise.
298
299 2009-12-03  Dave Korn  <dave.korn.cygwin@gmail.com>
300
301         * ggc-page.c (struct free_object): Pull definition out ...
302         (struct globals): .. from here.
303
304 2009-12-02  Richard Guenther  <rguenther@suse.de>
305
306         * fold-const.c (div_if_zero_remainder): Honor that sizetypes
307         are sign-extending.  Simplify.
308
309 2009-12-02  Richard Henderson  <rth@redhat.com>
310
311         PR tree-opt/42215
312         * tree-loop-distribution.c (build_size_arg_loc): Tidy.
313         (generate_memset_zero): Convert to sizetype properly.  Tidy.
314
315 2009-12-02  Richard Guenther  <rguenther@suse.de>
316
317         * lto-streamer-out.c (pack_ts_decl_common_value_fields):
318         Do not pretend we have value exprs.
319
320 2009-12-02  Richard Guenther  <rguenther@suse.de>
321
322         PR middle-end/41491
323         * fold-const.c (try_move_mult_to_index): Do not leak
324         domain types into the IL.
325
326 2009-12-02  Richard Guenther  <rguenther@suse.de>
327
328         PR middle-end/42088
329         * tree.c (free_lang_data): Disable if not using LTO.
330
331 2009-12-02  Richard Guenther  <rguenther@suse.de>
332
333         PR middle-end/42229
334         * cfgloopmanip.c (remove_path): Avoid cancelling loops twice.
335
336 2009-12-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
337
338         PR middle-end/42224
339         * tree.h (int_or_pointer_precision): Remove.
340         * tree.c (int_or_pointer_precision): Remove.
341         (integer_pow2p): Use TYPE_PRECISION instead.
342         (tree_log2): Likewise.
343         (tree_floor_log2): Likewise.
344         (signed_or_unsigned_type_for): Likewise.
345         * fold-const.c (fit_double_type): Likewise.
346         * varasm.c (initializer_constant_valid_p): Likewise.
347
348 2009-12-02  Ira Rosen  <irar@il.ibm.com>
349
350         * doc/invoke.texi (-fdump-tree-slp): Document.
351         (-ftree-vectorizer-verbose): Update.
352         (-ftree-slp-vectorize): Document.
353
354 2009-12-02  Nick Clifton  <nickc@redhat.com>
355
356         * config/rx/rx.c (rx_conditional_register_usage): Do not warn if
357         no fixed registers are available for interrupt handlers.  Do not
358         fix normal registers.
359         (MUST_SAVE_ACC_REGISTER): New macro.
360         (rx_get_stack_layout): Create a stack frame for fast interrupt
361         handlers, if necessary.  Push extra registers if needed in order
362         to save the accumulator.
363         (rx_expand_prologue): Create a stack frame for fast interrupt
364         handlers, if necessary.
365         (rx_expand_builtin_mvfc): Handle the case where there is no target.
366
367 2009-12-01  Sebastian Pop  <sebastian.pop@amd.com>
368
369         * config/i386/abmintrin.h (__lzcnt16): New.
370         (__lzcnt): New.
371         (__lzcnt64): New.
372         * config/i386/i386-builtin-types.def (UINT16_FTYPE_UINT16): New.
373         * config/i386/i386.c (IX86_BUILTIN_CLZS): New.
374         (bdesc_special_args): Add __builtin_clzs.
375         (ix86_expand_args_builtin): Handle UINT16_FTYPE_UINT16.
376
377 2009-12-01  Sebastian Pop  <sebastian.pop@amd.com>
378
379         * config/i386/abmintrin.h (_mm_popcnt_u32): New.
380         (_mm_popcnt_u64): New.
381
382 2009-12-01  Sebastian Pop  <sebastian.pop@amd.com>
383
384         * config/i386/abmintrin.h: New.
385         * config/i386/i386-c.c (ix86_target_macros_internal): Defined __ABM__.
386         * config/i386/x86intrin.h: Include abmintrin.h when __ABM__ is defined.
387
388 2009-12-01  Uros Bizjak  <ubizjak@gmail.com>
389
390         * config/i386/i386.md (SWI124): Rename from CRC32MODE.
391         (crc32modesuffix): Remove.
392         (crc32modeconstraint): Ditto.
393         (sse4_2_crc32<mode>): Update for renamed mode iterator.  Use
394         imodesuffix instead of crc32modesuffix and <r>m instead of
395         crc32modeconstraint.
396
397 2009-12-01  Jakub Jelinek  <jakub@redhat.com>
398
399         PR c++/42234
400         * tree-cfgcleanup.c (cleanup_omp_return): Don't ICE if control_bb
401         contains no statements.
402
403 2009-12-01  Grigori Fursin  <grigori.fursin@inria.fr>
404             Joern Rennecke  <amylaar@spamcop.net>
405
406         * cgraphunit.c (plugin.h): Include.
407         (ipa_passes): Invoke PLUGIN_ALL_IPA_PASSES_START /
408         PLUGIN_ALL_IPA_PASSES_END at start / end of processing.
409         * gcc-plugin.h (highlev-plugin-common.h, hashtab.h): Include.
410         (enum plugin_event): Define by including plugin.def.
411         Last enumerator is now called PLUGIN_EVENT_FIRST_DYNAMIC.
412         (plugin_event_name): Change type to const char **.
413         (get_event_last, get_named_event_id, unregister_callback): Declare.
414         (register_callback): Change type of event argument to int.
415         (highlev-plugin-common.h): New file.
416         * Makefile.in (GCC_PLUGIN_H): Add highlev-plugin-common.h and
417         $(HASHTAB_H)
418         (tree-optimize.o passes.o): Depend on $(PLUGIN_H).
419         (PLUGIN_HEADERS): Add opts.h, $(PARAMS_H) and plugin.def.
420         (s-header-vars): New rule.
421         (install-plugin): Depend on s-header-vars.  Install b-header-vars.
422         * params.c (get_num_compiler_params): New function.
423         * params.h (get_num_compiler_params): Declare.
424         * passes.c (plugin.h): Include.
425         (make_pass_instance): Invoke PLUGIN_NEW_PASS.
426         (do_per_function_toporder, pass_init_dump_file): No longer static.
427         (pass_fini_dump_file): Likewise.
428         (execute_one_pass): Likewise.  Invoke PLUGIN_OVERRIDE_GATE and
429         PLUGIN_PASS_EXECUTION.
430         (execute_ipa_pass_list): Invoke PLUGIN_EARLY_GIMPLE_PASSES_START and
431         PLUGIN_EARLY_GIMPLE_PASSES_END.
432         * plugin.c (plugin_event_name_init): New array, defined by
433         including plugin.def.
434         (FMT_FOR_PLUGIN_EVENT): Update.
435         (plugin_event_name): Change type to const char ** and initialize
436         to plugin_event_name_init.
437         (event_tab, event_last, event_horizon): New variable.
438         (get_event_last): New function.
439         (plugin_callbacks_init): New array.
440         (plugin_callbacks: Change type to struct callback_info **.
441         Initialize to plugin_callbacks_init.
442         (htab_event_eq, get_named_event_id, unregister_callback): New function.
443         (invoke_plugin_va_callbacks): Likewise.
444         (register_callback): Change type of event argument to int.
445         Handle new events.  Allow dynamic events.
446         (invoke_plugin_callbacks): Likewise.  Return success status.
447         (plugins_active_p): Allow dynamic callbacks.
448         * plugin.def: New file.
449         * plugin.h (invoke_plugin_callbacks): Update prototype.
450         (invoke_plugin_va_callbacks): Declare.
451         * tree-optimize.c (plugin.h): Include.
452         (tree_rest_of_compilation): Invoke PLUGIN_ALL_PASSES_START and
453         PLUGIN_ALL_PASSES_END.
454         * tree-pass.h (execute_one_pass, pass_init_dump_file): Declare.
455         (pass_fini_dump_file, do_per_function_toporder): Likewise.
456         * doc/plugin.texi: Document new event types.
457
458 2009-12-01  Martin Jambor  <mjambor@suse.cz>
459
460         PR tree-optimization/42237
461         * tree-sra.c (sra_ipa_modify_assign): Split gimple_reg_type assignments
462         in between references into two.
463
464 2009-12-01  Richard Guenther  <rguenther@suse.de>
465
466         * tree-inline.c (copy_tree_body_r): Do not set TREE_BLOCK
467         to the block of the call when remapping a type.
468
469 2009-12-01  Martin Jambor  <mjambor@suse.cz>
470
471         * cgraph.h (struct cgraph_edge): Reorder fields.  Make loop_nest
472         unsigned short int.
473         * ipa-prop.h (struct ipa_param_call_note): Likewise.
474         * ipa-prop.c (ipa_note_param_call): Initialize note->loop_nest.
475
476 2009-12-01  Richard Guenther  <rguenther@suse.de>
477
478         * final.c (rest_of_clean_state): If -fcompare-debug is
479         given dump final insns without UIDs.
480         * tree-ssa-live.c (remove_unused_scope_block_p): Remove
481         after_inlining checks.
482
483 2009-11-30  Chao-ying Fu  <fu@mips.com>
484
485         * config/mips/mips-dsp.md (mips_lhx_<mode>): Use sign_extend.
486
487 2009-11-30  Dave Korn  <dave.korn.cygwin@gmail.com>
488
489         * configure.ac (USE_CYGWIN_LIBSTDCXX_WRAPPERS): Define to reflect
490         status of AC_CHECK_FUNC for Cygwin DLL libstdc++ support wrappers.
491         * configure: Regenerate.
492         * config.in: Regenerate.
493
494         * config/i386/cygwin.h (CXX_WRAP_SPEC_LIST): Define list of --wrap
495         options for Cygwin DLL libstdc++ support wrappers.
496         (CXX_WRAP_SPEC_OPT): Define spec to use wrappers or not by default
497         according to defined value of USE_CYGWIN_LIBSTDCXX_WRAPPERS.
498         (CXX_WRAP_SPEC): Define entire wrapper spec in or out according to
499         whether USE_CYGWIN_LIBSTDCXX_WRAPPERS is even defined or not.
500         (LINK_SPEC): Include CXX_WRAP_SPEC.
501         * gcc/config/i386/winnt.c (wrapper_strcmp): New qsort helper function.
502         (i386_find_on_wrapper_list): Check if a function is found on the list
503         of libstdc++ wrapper options.
504         (i386_pe_file_end): If we are importing a wrapped function, also emit
505         an external declaration for the real version.
506         * config/i386/cygming.opt (muse-libstdc-wrappers): New option for
507         Cygwin targets. Update copyright year.
508
509 2009-11-30  Steve Ellcey  <sje@cup.hp.com>
510             Jakub Jelinek <jakub@redhat.com>
511
512         * function.c (instantiate_virtual_regs_in_insn): Copy to new reg
513         before forcing mode.
514
515 2009-11-30  Anatoly Sokolov  <aesok@post.ru>
516
517         * config/sh/sh.c (sh_promote_prototypes): Make static.
518         (sh_function_value, sh_libcall_value, sh_function_value_regno_p): New
519         functions.
520         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
521         * config/sh/sh.h (FUNCTION_VALUE_REGNO_P): Redefine, use
522         sh_function_value_regno_p.
523         (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
524         * config/sh/sh-protos.h (sh_function_value_regno_p): Declare.
525         (sh_promote_prototypes) : Remove.
526
527 2009-11-30  Julian Brown  <julian@codesourcery.com>
528
529         * config/arm/arm.h (PREFERRED_RELOAD_CLASS): Don't restrict Thumb-2
530         reloads to LO_REGS.
531
532 2009-11-30  Richard Henderson  <rth@redhat.com>
533
534         * config/i386/i386.c (ix86_vec_interleave_v2df_operator_ok): New.
535         (bdesc_special_args): Update insn codes.
536         (avx_vpermilp_parallel): Correct range check.
537         (ix86_rtx_costs): Handle vector permutation rtx codes.
538         (struct expand_vec_perm_d): Move earlier.
539         (get_mode_wider_vector): New.
540         (expand_vec_perm_broadcast_1): New.
541         (ix86_expand_vector_init_duplicate): Use it.  Tidy AVX modes.
542         (expand_vec_perm_broadcast): New.
543         (ix86_expand_vec_perm_builtin_1): Use it.
544         * config/i386/i386-protos.h: Update.
545         * config/i386/predicates.md (avx_vbroadcast_operand): New.
546         * config/i386/sse.md (AVX256MODE24P): New.
547         (ssescalarmodesuffix2s): New.
548         (avxhalfvecmode, avxscalarmode): Fill out to all modes.
549         (avxmodesuffixf2c): Add V8SI, V4DI.
550         (vec_dupv4sf): New expander.
551         (*vec_dupv4sf_avx): Add vbroadcastss alternative.
552         (*vec_set<mode>_0_avx, **vec_set<mode>_0_sse4_1): Macro-ize for
553         V4SF and V4SI.  Move C alternatives to front.  Add insertps and
554         pinsrd alternatives.
555         (*vec_set<mode>_0_sse2): Split out from ...
556         (vec_set<mode>_0): Macro-ize for V4SF and V4SI.
557         (vec_interleave_highv2df, vec_interleave_lowv2df): Require register
558         destination; use ix86_vec_interleave_v2df_operator_ok, instead of
559         ix86_fixup_binary_operands.
560         (*avx_interleave_highv2df, avx_interleave_lowv2df): Add movddup.
561         (*sse3_interleave_highv2df, sse3_interleave_lowv2df): New.
562         (*avx_movddup, *sse3_movddup): Remove.  New splitter from
563         vec_select form to vec_duplicate form.
564         (*sse2_interleave_highv2df, sse2_interleave_lowv2df): Use
565         ix86_vec_interleave_v2df_operator_ok.
566         (avx_movddup256, avx_unpcklpd256): Change to expanders, merge into ...
567         (*avx_unpcklpd256): ... here.
568         (*vec_dupv4si_avx): New.
569         (*vec_dupv2di_avx): Add movddup alternative.
570         (*vec_dupv2di_sse3): New.
571         (vec_dup<AVX256MODE24P>): Replace avx_vbroadcasts<AVXMODEF4P> and
572         avx_vbroadcastss256; represent with vec_duplicate instead of
573         nested vec_concat operations.
574         (avx_vbroadcastf128_<mode>): Rename from
575         avx_vbroadcastf128_p<avxmodesuffixf2c>256.
576         (*avx_vperm_broadcast_v4sf): New.
577         (*avx_vperm_broadcast_<AVX256MODEF2P>): New.
578
579 2009-11-30  Martin Jambor  <mjambor@suse.cz>
580
581         PR middle-end/42196
582         * tree-sra.c (struct access): New field grp_different_types.
583         (dump_access): Dump grp_different_types.
584         (compare_access_positions): Prefer scalars and vectors over other
585         scalar types.
586         (sort_and_splice_var_accesses): Set grp_different_types if appropriate.
587         (sra_modify_expr): Use the original also when dealing with a complex
588          or vector group accessed as multiple types.
589
590 2009-11-30  Richard Henderson  <rth@redhat.com>
591
592         * config/i386/i386.c (avx_vperm2f128_parallel): New.
593         * config/i386/i386-protos.h: Declare it.
594         * config/i386/predicates.md (avx_vperm2f128_v8sf_operand,
595         avx_vperm2f128_v8si_operand, avx_vperm2f128_v4df_operand): New.
596         * config/i386/sse.md (avx_vperm2f128<mode>3): Change to expander.
597         (*avx_vperm2f128<mode>_full): Renamed from avx_vperm2f128<mode>3.
598         (*avx_vperm2f128<mode>_nozero): New.
599
600 2009-11-30  Richard Henderson  <rth@redhat.com>
601
602         * config/i386/i386-builtin-types.def (V4DF_FTYPE_V4DF_V4DF_V4DI): New.
603         (V8SF_FTYPE_V8SF_V8SF_V8SI): New.
604         * config/i386/i386.c (ix86_vectorize_builtin_vec_perm): Support
605         V4DF and V8SF for AVX; relax constraint on V4SF to SSE1 from SSE2.
606         (IX86_BUILTIN_VEC_PERM_V4DF, IX86_BUILTIN_VEC_PERM_V8SF): New.
607         (bdesc_args): Add them.
608         (ix86_expand_builtin): Expand them.
609         (expand_vec_perm_pshufb2): Only operate on 16-byte vectors.
610
611 2009-11-30  Martin Jambor  <mjambor@suse.cz>
612
613         PR middle-end/42206
614         * ipa-prop.c (ipa_write_node_info): Initialize note_count to zero.
615
616 2009-11-30  Jakub Jelinek  <jakub@redhat.com>
617
618         * ipa-reference.c (propagate): Only dump bitmaps if computed.
619
620 2009-11-30  Olga Golovanevsky  <olga@il.ibm.com>
621
622         PR middle-end/39806
623         * ipa-struct-reorg.c (new_var_eq): Use DECL_UID to hash new variables.
624         (new_var_hash): Likewise.
625         (is_in_new_vars_htab): Likewise.
626         (add_to_new_vars_htab): Likewise.
627
628 2009-11-30  Ira Rosen  <irar@il.ibm.com>
629
630         * tree-vect-stmts.c (vectorizable_assignment): Support
631         multiple types.
632
633 2009-11-30  Richard Guenther  <rguenther@suse.de>
634
635         * doc/contrib.texi (Contributors): Add myself.
636
637 2009-11-30  Richard Guenther  <rguenther@suse.de>
638
639         * tree.c (free_lang_data): Do not set debug_info_level to
640         none if terse.
641
642 2009-11-30  Richard Guenther  <rguenther@suse.de>
643
644         PR middle-end/42119
645         PR fortran/38530
646         * expr.c (expand_expr_addr_expr_1): Properly expand the initializer
647         of CONST_DECLs.
648
649 2009-11-30  Richard Guenther  <rguenther@suse.de>
650
651         * tree-into-ssa.c (insert_phi_nodes): Add PHI nodes in
652         variable UID order.
653
654 2009-11-30  Richard Guenther  <rguenther@suse.de>
655
656         * tree-dump.c (dump_option_value_in): Add TDF_NOUID.
657         * tree-pass.h (TDF_NOUID): Likewise.
658         * print-rtl.c: Include tree-pass.h.
659         (print_mem_expr): Pass dump_flags.
660         (print_rtx): Likewise.
661         * print-tree.c: Include tree-pass.h.
662         (print_node_brief): Handle TDF_NOUID.
663         (print_node): Likewise.
664         * tree-pretty-print.c (dump_decl_name): Likewise.
665         (dump_generic_node): Likewise.
666         * Makefile.in (print-rtl.o, print-tree.o): Add $(TREE_PASS_H)
667         dependency.
668
669 2009-11-30  Nick Clifton  <nickc@redhat.com>
670
671         * config/stormy16/stormy16-lib2-count-leading-zeros.c: Delete.
672         * config/stormy16/t-stormy16 (LIB2FUNCS_EXTRA): Remove
673         stormy16-lib2-count-leading-zeros.c.
674         * config/stormy16/stormy16-lib2.c (__clzhi2): Move code from
675         __stormy16_count_leading_zeros() into this function.
676         (__ctzhi2): Use __builtin_clz.
677         (__ffshi2): Likewise.
678
679 2009-11-30  Eric Botcazou  <ebotcazou@adacore.com>
680
681         * config/sparc/sparc.c (DF_MODES): Simplify.
682         (TF_ONLY_MODES, OF_ONLY_MODES): Delete.
683         (TF_MODES, OF_MODES): Adjust for above change.
684         (TF_MODES_NO_S, OF_MODES_NO_S): Likewise.
685         *  config/sparc/sparc.h (REGNO_REG_CLASS): Move around.
686
687 2009-11-30  Paolo Bonzini  <bonzini@gnu.org>
688
689         PR rtl-optimization/41812
690         * fwprop.c (local_md, local_lr): New globals.
691         (process_defs, process_uses): Remove local_md argument.  Never
692         consider dead pseudos to have singleton def-use chains.
693         (single_def_use_enter_block): Perform LR simulation.
694         (build_single_def_use_links): Remove local_md local variable.
695         Add DF_NOTE.  Allocate local_lr.
696         (fwprop_done): Do not remove DF_CHAIN, we do not use it anymore.
697         * df-problems.c (df_md_scratch): New.
698         (df_md_alloc, df_md_free): Allocate/free it.
699         (df_md_local_compute): Only include live registers in init.
700         (df_md_transfer_function): Prune the in-set computed by
701         the confluence function, and the gen-set too.
702
703 2009-11-30  Hans-Peter Nilsson  <hp@axis.com>
704
705         PR rtl-optimization/40086
706         * reorg.c (relax_delay_slots): When looking for redundant insn at
707         the branch target, use next_real_insn, not next_active_insn.
708
709 2009-11-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
710
711         * doc/install.texi: Update minimum MPC version to 0.8.
712
713 2009-09-09  Segher Boessenkool  <segher@kernel.crashing.org>
714
715         * config/rs6000/rs6000.md (fnmaddsf4_powerpc_1): Remove
716         HONOR_SIGNED_ZEROS final condition.
717         (fnmsubsf4_powerpc_1): Same.
718         (fnmadddf4_fpr_1): Same.
719         (fnmsubdf4_fpr_1): Same.
720
721 2009-11-29  Ira Rosen  <irar@il.ibm.com>
722
723         PR tree-optimization/42193
724         * tree-vect-stmts.c (vectorizable_operation): Set vectorization factor
725         to 1 in case of basic block SLP.
726         (vectorizable_load): Likewise.
727
728 2009-11-28  Jan Hubicka  <jh@suse.cz>
729
730         * cgraph.c (same_body_alias_1): Break out of
731         (same_body_alias): ... here; remove comdat check; it is handled
732         in cp already.
733         (cgraph_add_thunk): New.
734         (dump_cgraph_node): Dump aliases and thunks.
735         * cgraph.h (cgraph_thunk_info): New structure.
736         (struct cgraph_node): Add thunk info.
737         (cgraph_add_thunk): New.
738         * cgraphunit.c (cgraph_emit_thunks): Remove.
739         (cgraph_finalize_compilation_unit): Do not call cgraph_emit_thunks.
740         (assemble_thunk): New function.
741         (cgraph_expand_function): Handle thunks.
742         (thunk_adjust): New.
743         (init_lowered_empty_function): New.
744         * cp-objcp-common.h (LANG_HOOKS_CALLGRAPH_EMIT_ASSOCIATED_THUNKS):
745         Remove.
746         * lto-cgraph.c (lto_output_node): Stream thunk info.
747         (input_node): Likewise.
748         * langhooks.h (lang_hooks_for_callgraph): Remove emit_associated_thunks.
749         * langhooks-def.h (LANG_HOOKS_CALLGRAPH_EMIT_ASSOCIATED_THUNKS): Remove.
750         (LANG_HOOKS_CALLGRAPH_INITIALIZER): Update.
751         * i386.c (x86_output_mi_thunk): Make output prettier.
752
753 2009-11-28  Richard Guenther  <rguenther@suse.de>
754
755         PR tree-optimization/42183
756         * tree-nrv.c (tree_nrv): Bail out if the RESULT_DECL has its
757         address taken.  Merge the addressable state of the NRV
758         variable and the result instead of copying it.
759
760 2009-11-28  Jakub Jelinek  <jakub@redhat.com>
761
762         * matrix-reorg.c (analyze_matrix_allocation_site): Remove unused
763         malloc_fname variable.
764         (check_allocation_function): Remove unused gsi and bb_level_0
765         variables.
766         (transform_access_sites): Remove unused d_type_size and d_type_size_k
767         variables.
768         * omega.c (resurrect_subs): Remove unused n variable.
769         (omega_solve_geq): Remove unused neweqns variable.
770         * lto-streamer-in.c (lto_read_tree): Remove unused end_marker variable.
771         * tree-inline.c (declare_return_variable): Remove USE_P argument,
772         return use instead of var.
773         (remap_decl, remap_block): Remove unused fn variable.
774         (expand_call_inline): Remove unused retvar variable, adjust
775         declare_return_variable caller.
776         (optimize_inline_calls): Remove unused prev_fn variable.
777         * tree-vect-slp.c (vect_analyze_slp_instance): Remove unused ncopies
778         variable.
779         (vect_create_mask_and_perm): Remove unused group_size and dr_chain_size
780         variables.
781         * tree-ssa-loop-niter.c (split_to_var_and_offset): Handle MINUS_EXPR
782         properly.
783         * tree-vect-loop.c (vect_analyze_loop_form): Remove unused backedge
784         variable.
785         (vect_create_epilog_for_reduction): Remove unused bytesize variable.
786         * omp-low.c (workshare_safe_to_combine_p): Remove par_entry_bb
787         parameter.  Remove unused par_stmt variable.
788         (determine_parallel_type): Adjust workshare_safe_to_combine_p caller.
789         (expand_omp_sections): Remove unused l1 variable.
790         (lower_omp_for): Remove unused ilist variable.
791         * tree-loop-distribution.c (mark_nodes_having_upstream_mem_writes):
792         Remove unused has_upstream_mem_write_p variable.
793         * recog.c (decode_asm_operands): Remove unused noperands variable.
794         * tree-ssa-alias.c (refs_may_alias_p_1): Remove unused size1 and
795         size2 variable.
796         * libgcov.c (__gcov_merge_delta): Remove unused last variable.
797         * tree-call-cdce.c (gen_conditions_for_pow_int_base): Remove unused
798         base_nm variable.
799         (gen_conditions_for_pow): Remove unused ec variable.
800         * tree-ssa-sccvn.c (vn_reference_lookup_3): Remove unused size
801         variable.
802         * ipa-struct-reorg.c (program_redefines_malloc_p): Remove unused
803         fndecl variable.
804         * tree-ssa-sink.c (statement_sink_location): Remove unused code
805         variable.
806         * regmove.c (copy_src_to_dest): Remove unused insn_uid and move_uid
807         variables.
808         * tree-complex.c (create_one_component_var): Remove unused inner_type
809         variable.
810         * calls.c (emit_call_1): Don't GEN_INT (struct_value_size)
811         unnecessarily when GEN_*CALL omits that argument.
812         * regrename.c (regrename_optimize): Remove unused regs_seen variable.
813         (build_def_use): Remove unused icode variable.
814         * ipa-pure-const.c (check_call): Remove unused callee and avail
815         variables.
816         * tree-dfa.c (add_referenced_var): Remove unused v_ann variable.
817         * tree-vect-patterns.c (vect_recog_pow_pattern): Remove unused type
818         variable.
819         (vect_pattern_recog): Remove unused stmt variable.
820         * sel-sched-ir.c (make_regions_from_the_rest): Remove unused
821         new_regions variable.
822         * postreload.c (reload_cse_simplify_operands): Remove unused mode
823         variable.
824         * tree-parloops.c (create_call_for_reduction_1): Remove unused
825         addr_type variable.
826         (create_parallel_loop): Remove unused res variable.
827         (gen_parallel_loop): Remove unused nloop variable.
828         * tree-vect-loop-manip.c (vect_loop_versioning): Likewise.
829         * value-prof.c (gimple_mod_subtract_transform,
830         gimple_stringops_transform): Remove unused value variable.
831         (gimple_stringops_values_to_profile): Remove unused fcode variable.
832         * tree-vrp.c (register_new_assert_for): Remove unused found variable.
833         (vrp_visit_switch_stmt): Remove unused n variable.
834         * tree-vect-stmts.c (vectorizable_conversion): Remove unused expr
835         variable.
836         (vectorizable_operation): Remove unused shift_p variable.
837         (vectorizable_store): Remove unused first_stmt_vinfo variable.
838         * tree-ssa-operands.c (add_stmt_operand): Remove unused v_ann variable.
839         * tree-vect-data-refs.c (vect_analyze_data_refs): Remove unused bb
840         variable.
841         (vect_permute_store_chain): Remove unused scalar_dest variable.
842         (vect_supportable_dr_alignment): Remove unused invariant_in_outerloop
843         variable.
844         * tree-ssa-threadupdate.c (thread_single_edge): Remove unused
845         local_info variable.
846         * tree-optimize.c (tree_rest_of_compilation): Remove unused node
847         variable.
848         * optabs.c (expand_binop): Remove unused equiv_value variable.
849         (emit_libcall_block): Remove unused prev variable.
850         (init_optabs): Remove unused int_mode variable.
851         * tree-ssa-structalias.c (scc_visit): Remove unused have_ref_node
852         variable.
853         (do_structure_copy): Remove unused lhsbase and rhsbase variables.
854         (find_func_aliases): Remove unused rhstype variable.
855         (ipa_pta_execute): Remove unused varid variable.
856
857 2009-11-28  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
858
859         * config/avr/avr.h (ASM_OUTPUT_EXTERNAL): Add.
860
861 2009-11-28  David Binderman  <dcb314@hotmail.com>
862
863         * ira-color.c (put_allocno_into_bucket): Remove set but not used
864         local variable hard_regs_num.
865         * ira-lives.c (process_single_reg_class_operands): Remove cover_class.
866         * loop-unswitch.c (unswitch_loop): Remove zero_bitmap.
867         * lower-subreg.c (decompose_multiword_subregs): Remove next.
868
869 2009-11-27  Martin Jambor  <mjambor@suse.cz>
870
871         PR middle-end/42006
872         * tree-sra.c (get_replaced_param_substitute): Call create_tmp_var
873         instead of create_tmp_var.  Set DECL_GIMPLE_REG_P to one manually
874         for vector and complex types.
875         (get_adjustment_for_base): Describe return value in the comment.
876
877 2009-11-27  Nick Clifton  <nickc@redhat.com>
878
879         * longlong.h (count_leading_zeros): Define macro for stormy16 target.
880         (COUNT_LEADING_ZEROS_0): Likewise.
881         * config/stormy16/stormy16-lib2.c: Arrange for separate
882         compilation of each function.
883         (__ffshi2): New function.
884         (__stormy16_count_leading_zeros): New function.
885         * config/stormy16/t-stormy16 (LIB2FUNCS_EXTRA): Use stub files to
886         compile each function into its own object file.
887         (stormy16-lib2-ashlsi3.c): New stub file.
888         (stormy16-lib2-ashrsi3.c): New stub file.
889         (stormy16-lib2-clzhi2.c): New stub file.
890         (stormy16-lib2-count-leading-zeros.c): New stub file.
891         (stormy16-lib2-ctzhi2.c): New stub file.
892         (stormy16-lib2-divsi3.c): New stub file.
893         (stormy16-lib2-ffshi2.c): New stub file.
894         (stormy16-lib2-lshrsi3.c): New stub file.
895         (stormy16-lib2-modsi3.c): New stub file.
896         (stormy16-lib2-parityhi2.c): New stub file.
897         (stormy16-lib2-popcounthi2.c): New stub file.
898         (stormy16-lib2-udivmodsi4.c): New stub file.
899         (stormy16-lib2-udivsi3.c): New stub file.
900         (stormy16-lib2-umodsi3.c): New stub file.
901
902 2009-11-27  Richard Henderson  <rth@redhat.com>
903
904         * config/i386/sse.md (vec_interleave_highv16qi,
905         vec_interleave_lowv16qi, vec_interleave_highv8hi,
906         vec_interleave_lowv8hi, vec_interleave_highv4si,
907         vec_interleave_lowv4si, vec_interleave_highv2di,
908         vec_interleave_lowv2di, vec_interleave_highv4sf,
909         vec_interleave_lowv4sf, vec_interleave_highv2df,
910         vec_interleave_lowv2df): Remove expanders.
911         (sse_unpcklps, sse_unpckhps, sse2_unpckhpd_exp, sse2_unpcklpd_exp,
912         sse2_punpckhqdq, sse2_punpcklqdq, sse2_punpckhbw, sse2_punpcklbw,
913         sse2_punpckhwd, sse2_punpcklwd, sse2_punpckhdq, sse2_punpckldq):
914         Rename to their proper vec_interleave equivalent.  Update all users
915         to the new name.
916         * config/i386/i386.c, config/i386/i386.md: Update all users.
917
918 2009-11-27  Michael Matz  <matz@suse.de>
919
920         PR rtl-optimization/42084
921         * cfgexpand.c (maybe_cleanup_end_of_block): Add new parameter,
922         use it to stop walking.
923         (expand_gimple_cond): Adjust call to above.
924
925 2009-11-27  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
926
927         PR target/41810
928         * gthr-solaris.h (__gthread_mutex_destroy): Remove UNUSED.
929         [SUPPORTS_WEAK && GTHREAD_USE_WEAK] (__gthread_active_p): Use
930         __extension__ to allow cast from function pointer to object
931         pointer in C++.
932         * doc/install.texi (--enable-threads): Clarify use of Solaris threads.
933
934 2009-11-27  Steven Bosscher  <steven@gcc.gnu.org>
935
936         * config/ia64/itanium1.md: Remove.
937         * config/ia64/ia64.md: Do not include it.
938         * config/ia64/ia64.c (ia64_handle_option): Remove "itanium",
939         "itanium1", and "merced" from the processor alias table.
940         (clocks, add_cycles): Remove global variables.
941         (ia64_sched_reorder2): Don't set/use them.
942         (ia64_dfa_new_cycle, ia64_h_i_d_extended, ia64_reorg): Likewise.
943         (bundling): Likewise. Remove extra pass for MMMUL/MMSHF.
944
945 2009-11-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
946
947         * config/s390/s390.c (last_scheduled_insn): New variable.
948         (s390_fpload_toreg, s390_z10_prevent_earlyload_conflicts): New
949         functions.
950         (s390_sched_reorder, s390_sched_variable_issue): New functions.
951         (TARGET_SCHED_VARIABLE_ISSUE, TARGET_SCHED_REORDER): Target hooks
952         defined.
953
954 2009-11-27  Michael Matz  <matz@suse.de>
955
956         PR c++/41906
957         * tree-eh.c (lower_catch): Stop after expanding a catch-all.
958
959 2009-11-27  Richard Guenther  <rguenther@suse.de>
960
961         * timevar.def (TV_LOOP_MOVE_INVARIANTS, TV_LOOP_UNSWITCH,
962         TV_LOOP_UNROLL, TV_LOOP_DOLOOP): New timevars.
963         * loop-init.c (pass_rtl_move_loop_invariants): Use
964         TV_LOOP_MOVE_INVARIANTS.
965         (pass_rtl_unswitch): Use TV_LOOP_UNSWITCH.
966         (pass_rtl_unroll_and_peel): Use TV_LOOP_UNROLL.
967         (pass_rtl_doloop): Use TV_LOOP_DOLOOP.
968
969 2009-11-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
970
971         * emit-rtl.c (next_active_insn, prev_active_insn): Correct comment.
972
973 2009-11-27  Jakub Jelinek  <jakub@redhat.com>
974
975         * config/i386/i386.c (ix86_emit_restore_sse_regs_using_mov): Remove
976         unused insn variable.
977         * genemit.c (output_peephole2_scratches): Only declare and initialize
978         _regs_allocated if it will be ever used.
979         * cfgloopmanip.c (create_empty_if_region_on_edge): Remove unused
980         succ_bb variable.
981         (create_empty_loop_on_edge): Remove unused freq and cnt variables.
982         * unwind-c.c (PERSONALITY_FUNCTION): Remove unused action_record
983         variable.
984
985         * opts.c (decode_options): If optimize is bigger than 255,
986         set it to 255.
987
988 2009-11-26  Richard Henderson  <rth@redhat.com>
989
990         * config/i386/sse.md (mulv16qi3): Change back from an expander
991         to an insn-and-split.
992         (mulv4si): Mention AVX not XOP for AVX exception.
993         (*sse2_mulv4si3): Likewise.
994         (mulv2di3): Use vmulld not vpmacsdd for XOP expansion.  Tidy.
995
996 2009-11-26  Bernd Schmidt  <bernd.schmidt@analog.com>
997
998         * cfgexpand (n_stack_vars_conflict): New static variable.
999         (triangular_index): Reduce likelyhood of overflow by performing
1000         the division before the multiplication.
1001         (resize_stack_vars_conflict): Call fatal_error if overflow
1002         occurred in triangular_index.  Update n_stack_vars_conflict.
1003
1004         PR rtl-opt/38582
1005         * regrename.c (struct du_chain): Remove member earlyclobber.
1006         (scan_rtx_reg): Don't set it.  Remove argument earlyclobber,
1007         all callers changed.
1008         (scan_rtx): Remove argument earlyclobber, all callers changed.
1009         (hide_operands, restore_operands, record_out_operands): New functions,
1010         broken out of build_def_use.
1011         (build_def_use): Call them as necessary.
1012
1013         * regrename.c (struct du_head): New members id, conflicts,
1014         hard_conflicts and cannot_rename.
1015         (enum scan_actions): Remove terminate_all_read and
1016         terminate_overlapping_read; add mark_all_read.
1017         (scan_actions_name): Likewise.
1018         (du_head_p): New typedef.  Define a vector type for it.
1019         (id_to_chain): New static variable.
1020         (note_sets, clear_dead_regs): Delete functions.
1021         (free_chain_data): New function.
1022         (merge_overlapping_regs): Simply walk the conflicts bitmap.
1023         Remove argument B, all callers changed.
1024         (regrename_optimize): Allocate id_to_chain.  Ignore chains that have
1025         the cannot_rename bit set.  Update regno and nregs of a renamed chain.
1026         Call free_chain_data when done.
1027         (do_replace): Remove death notes when the renamed reg is set in the
1028         last insn; add them if not.
1029         (mark_conflict, note_sets_clobbers): New static function.
1030         (fail_current_block, current_id, open_chains_set, live_hard_regs): New
1031         static variables.
1032         (scan_rtx_reg): Keep track of conflicts between chains, and between
1033         chains and hard regs.  Don't terminate chains when we find a read we
1034         can't handle, mark it unrenameable instead.  For terminate_write,
1035         terminate chains that are written with an exact match or a superset
1036         of registers.  Set fail_current_block if multi-word lifetimes are too
1037         complex to handle.
1038         (scan_rtx_address): Use mark_all_read instead of terminate_all_read.
1039         (build_def_use): Initialize current_id, live_chains and live_hard_regs;
1040         free memory for them when done.
1041         Rearrange the steps so that earlyclobbers are noted before reads
1042         are processed.  Add new steps to keep track of hard register lifetimes
1043         outside insn operands.
1044
1045 2009-11-26  Richard Guenther  <rguenther@suse.de>
1046
1047         * tree-ssa-dce.c (nr_walks): New variable.
1048         (mark_aliased_reaching_defs_necessary): Adjust oracle cut-off.
1049         (perform_tree_ssa_dce): Init nr_walks.
1050
1051 2009-11-26  Michael Matz  <matz@suse.de>
1052
1053         PR tree-optimization/41905
1054         * tree-eh.c (lower_eh_constructs_2): Don't add assignments
1055         below statements that can't fall thru.
1056
1057 2009-11-26  Michael Matz  <matz@suse.de>
1058
1059         * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
1060         expand_builtin_sprintf): Remove.
1061         (expand_builtin): Don't call them.
1062
1063 2009-11-26  Richard Guenther  <rguenther@suse.de>
1064
1065         * tree-ssa-dce.c (perform_tree_ssa_dce): Allocate visited bitmap.
1066
1067 2009-11-26  Nick Clifton  <nickc@redhat.com>
1068
1069         * config/rx/rx.c (rx_expand_epilogue): Add checks for sibcalls
1070         being used incorrectly.
1071         (rx_function_ok_for_sibcall): New function.  Do not allow indirect
1072         sibcalls, or sibcalls from interrupt functions.
1073         (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
1074         * config/rx/rx.md (sibcall): Convert to a define_expand.  Check
1075         for a MEM inside a MEM.
1076         (sibcall_value): Likewise.
1077         (sibcall_internal): New pattern containing old sibcall pattern.
1078         (sibcall_value_internal): Likewise.
1079
1080 2009-11-25  Richard Henderson  <rth@redhat.com>
1081
1082         * config/i386/i386-builtin-types.awk (DEF_VECTOR_TYPE): Allow an
1083         optional 3rd argument to define the mode.
1084         * config/i386/i386-builtin-types.def (UQI, UHI, USI, UDI): New.
1085         (V2UDI, V4USI, V8UHI, V16UQI): New.
1086         (V4SF_FTYPE_V4SF_V4SF_V4SI, V2UDI_FTYPE_V2UDI_V2UDI_V2UDI,
1087         V4USI_FTYPE_V4USI_V4USI_V4USI, V8UHI_FTYPE_V8UHI_V8UHI_V8UHI,
1088         V16UQI_FTYPE_V16UQI_V16UQI_V16UQI): New.
1089         * config/i386/i386-modes.def: Rearrange for double-wide AVX.
1090         * config/i386/i386-protos.h (ix86_expand_vec_extract_even_odd): New.
1091         * config/i386/i386.c (IX86_BUILTIN_VEC_PERM_*): New.
1092         (bdesc_args): Add the builtin definitions to match.
1093         (ix86_expand_builtin): Expand them.
1094         (ix86_builtin_vectorization_cost): Rename from
1095         x86_builtin_vectorization_cost.
1096         (ix86_vectorize_builtin_vec_perm, struct expand_vec_perm_d,
1097         doublesize_vector_mode, expand_vselect, expand_vselect_vconcat,
1098         expand_vec_perm_blend, expand_vec_perm_vpermil,
1099         expand_vec_perm_pshufb, expand_vec_perm_1,
1100         expand_vec_perm_pshuflw_pshufhw, expand_vec_perm_palignr,
1101         expand_vec_perm_interleave2, expand_vec_perm_pshufb2,
1102         expand_vec_perm_even_odd_1, expand_vec_perm_even_odd,
1103         ix86_expand_vec_perm_builtin_1, extract_vec_perm_cst,
1104         ix86_expand_vec_perm_builtin, ix86_vectorize_builtin_vec_perm_ok,
1105         ix86_expand_vec_extract_even_odd, TARGET_VECTORIZE_BUILTIN_VEC_PERM,
1106         TARGET_VECTORIZE_BUILTIN_VEC_PERM_OK): New.
1107         * sse.md (SSEMODE_EO): New.
1108         (vec_extract_even<mode>): Use SSEMODE_EO and
1109         ix86_expand_vec_extract_even_odd.
1110         (vec_extract_odd<mode>): Likewise.
1111         (mulv16qi3, vec_pack_trunc_v8hi, vec_pack_trunc_v4si,
1112         vec_pack_trunc_v2di): Use ix86_expand_vec_extract_even_odd.
1113
1114 2009-11-25  Richard Henderson  <rth@redhat.com>
1115
1116         * target.h (targetm.vectorize.builtin_vec_perm_ok): New.
1117         * target-def.h (TARGET_VECTORIZE_BUILTIN_VEC_PERM_OK): New.
1118         * hooks.h, hooks.c (hook_bool_tree_tree_true): New.
1119         * tree-vect-slp.c (vect_create_mask_and_perm): Don't create
1120         the vector constant here...
1121         (vect_transform_slp_perm_load): ... do it here instead.  Validate
1122         that the permutation vector is implementable by the target.
1123
1124 2009-11-25  Jakub Jelinek  <jakub@redhat.com>
1125
1126         * config/rs6000/sysv4.opt (mregnames): Change Var to rs6000_regnames.
1127         * config/rs6000/sysv4.h (TARGET_REGNAMES): Define.
1128
1129         * print-rtl.c (print_rtx): When printing newline, append
1130         print_rtx_head and indentation after the newline.
1131
1132         PR target/42165
1133         * config/i386/i386.c (print_operand): For 32-byte memory use
1134         YMMWORD in -masm=intel mode.  Use TBYTE instead of XWORD.
1135         * config/i386/i386.md (crc32modesuffix): Expand to nothing
1136         in -masm=intel mode.
1137         (sse4_2_crc32di): Print just crc32 instead of crc32q in
1138         -masm=intel mode.
1139         * config/i386/mmx.md (*mmx_pinsrw): Print correct size of
1140         memory operand in -masm=intel mode.
1141         * config/i386/sse.md (*avx_pinsr<ssevecsize>, *sse4_1_pinsrb,
1142         *sse2_pinsrw): Likewise.
1143         (sse_cvtss2siq, sse_cvtss2siq_2, sse_cvttss2siq): Don't print
1144         q suffix in -masm=intel mode.
1145
1146 2009-11-25  Eric Botcazou  <ebotcazou@adacore.com>
1147
1148         PR target/10127
1149         PR ada/20548
1150         PR middle-end/42004
1151         * dwarf2out.c (dwarf2out_args_size_adjust): Rename to...
1152         (dwarf2out_stack_adjust): ...this.  Do not adjust the arg size for
1153         ACCUMULATE_OUTGOING_ARGS targets.  Rename former version to...
1154         (dwarf2out_notice_stack_adjust): ...this.  Adjust for above renaming.
1155         (dwarf2out_frame_debug_expr): Revert previous change and adjust for
1156         above renaming.
1157         (dwarf2out_frame_debug): Add ??? comment.  Adjust for above renaming.
1158
1159 2009-11-25  Uros Bizjak  <ubizjak@gmail.com>
1160
1161         * config/i386/predicates.md (emms_operation): New predicate.
1162         (vzeroupper_operation): Ditto.
1163         (vzeroall_operation): Improve pattern recognition.
1164         * config/i386/sse.md (avx_vzeroupper_rex64): Remove insn pattern.
1165         (avx_vzeroupper): Change insn pattern to expander.
1166         (*avx_vzeroupper): New insn pattern.  Use vzeroupper_operation
1167         predicate.
1168         (*avx_vzeroall): Remove operands 1 and 2.
1169         * config/i386/mmx.md (mmx_emms): Change insn pattern to expander.
1170         (mmx_femms): Ditto.
1171         (*mmx_emms): New insn pattern.  Use emms_operation predicate.
1172         (*mmx_femms): Ditto.
1173         * config/i386/i386.c (enum ix86_builtins)
1174         <IX86_BUILTIN_VZEROUPPER_REX64>: Remove.
1175         (struct builtin_description) <CODE_FOR_avx_vzeroupper_rex64>:
1176         Remove initailization.
1177         <CODE_FOR_avx_vzeroupper>: Unconditionally initialize here.
1178
1179 2009-11-25  Paul Brook  <paul@codesourcery.com>
1180
1181         * config/arm/arm.md (consttable_4): Handle (high ...).
1182
1183 2009-11-25  Robert Nelson  <robert.nelson@digikey.com>
1184             Richard Earnshaw  <rearnsha@arm.com>
1185
1186         * arm.h (enum vfp_reg_type): Add VFP_NONE.
1187         * arm.c (all_fpus): Use it for floating point units that aren't based
1188         on the VFP architecture.
1189         (aapcs_vfp_is_call_or_return_candidate): Make base_mode a pointer to
1190         enum machine_mode.
1191
1192 2009-11-25  H.J. Lu  <hongjiu.lu@intel.com>
1193
1194         * alias.c: Remove trailing white spaces.
1195         * alloc-pool.c: Likewise.
1196         * alloc-pool.h: Likewise.
1197         * attribs.c: Likewise.
1198         * auto-inc-dec.c: Likewise.
1199         * basic-block.h: Likewise.
1200         * bb-reorder.c: Likewise.
1201         * bt-load.c: Likewise.
1202         * builtins.c: Likewise.
1203         * builtins.def: Likewise.
1204         * c-common.c: Likewise.
1205         * c-common.h: Likewise.
1206         * c-cppbuiltin.c: Likewise.
1207         * c-decl.c: Likewise.
1208         * c-format.c: Likewise.
1209         * c-lex.c: Likewise.
1210         * c-omp.c: Likewise.
1211         * c-opts.c: Likewise.
1212         * c-parser.c: Likewise.
1213         * c-pretty-print.c: Likewise.
1214         * c-tree.h: Likewise.
1215         * c-typeck.c: Likewise.
1216         * caller-save.c: Likewise.
1217         * calls.c: Likewise.
1218         * cfg.c: Likewise.
1219         * cfganal.c: Likewise.
1220         * cfgexpand.c: Likewise.
1221         * cfghooks.c: Likewise.
1222         * cfghooks.h: Likewise.
1223         * cfglayout.c: Likewise.
1224         * cfgloop.c: Likewise.
1225         * cfgloop.h: Likewise.
1226         * cfgloopmanip.c: Likewise.
1227         * cfgrtl.c: Likewise.
1228         * cgraph.c: Likewise.
1229         * cgraph.h: Likewise.
1230         * cgraphbuild.c: Likewise.
1231         * cgraphunit.c: Likewise.
1232         * cif-code.def: Likewise.
1233         * collect2.c: Likewise.
1234         * combine.c: Likewise.
1235         * convert.c: Likewise.
1236         * coverage.c: Likewise.
1237         * crtstuff.c: Likewise.
1238         * cse.c: Likewise.
1239         * cselib.c: Likewise.
1240         * dbgcnt.c: Likewise.
1241         * dbgcnt.def: Likewise.
1242         * dbgcnt.h: Likewise.
1243         * dbxout.c: Likewise.
1244         * dce.c: Likewise.
1245         * ddg.c: Likewise.
1246         * ddg.h: Likewise.
1247         * defaults.h: Likewise.
1248         * df-byte-scan.c: Likewise.
1249         * df-core.c: Likewise.
1250         * df-problems.c: Likewise.
1251         * df-scan.c: Likewise.
1252         * df.h: Likewise.
1253         * dfp.c: Likewise.
1254         * diagnostic.c: Likewise.
1255         * diagnostic.h: Likewise.
1256         * dominance.c: Likewise.
1257         * domwalk.c: Likewise.
1258         * double-int.c: Likewise.
1259         * double-int.h: Likewise.
1260         * dse.c: Likewise.
1261         * dwarf2asm.c: Likewise.
1262         * dwarf2asm.h: Likewise.
1263         * dwarf2out.c: Likewise.
1264         * ebitmap.c: Likewise.
1265         * ebitmap.h: Likewise.
1266         * emit-rtl.c: Likewise.
1267         * et-forest.c: Likewise.
1268         * except.c: Likewise.
1269         * except.h: Likewise.
1270         * expmed.c: Likewise.
1271         * expr.c: Likewise.
1272         * expr.h: Likewise.
1273         * final.c: Likewise.
1274         * flags.h: Likewise.
1275         * fold-const.c: Likewise.
1276         * function.c: Likewise.
1277         * function.h: Likewise.
1278         * fwprop.c: Likewise.
1279         * gcc.c: Likewise.
1280         * gcov-dump.c: Likewise.
1281         * gcov-io.c: Likewise.
1282         * gcov-io.h: Likewise.
1283         * gcov.c: Likewise.
1284         * gcse.c: Likewise.
1285         * genattr.c: Likewise.
1286         * genattrtab.c: Likewise.
1287         * genautomata.c: Likewise.
1288         * genchecksum.c: Likewise.
1289         * genconfig.c: Likewise.
1290         * genflags.c: Likewise.
1291         * gengtype-parse.c: Likewise.
1292         * gengtype.c: Likewise.
1293         * gengtype.h: Likewise.
1294         * genmddeps.c: Likewise.
1295         * genmodes.c: Likewise.
1296         * genopinit.c: Likewise.
1297         * genpreds.c: Likewise.
1298         * gensupport.c: Likewise.
1299         * ggc-common.c: Likewise.
1300         * ggc-page.c: Likewise.
1301         * ggc-zone.c: Likewise.
1302         * ggc.h: Likewise.
1303         * gimple-iterator.c: Likewise.
1304         * gimple-low.c: Likewise.
1305         * gimple-pretty-print.c: Likewise.
1306         * gimple.c: Likewise.
1307         * gimple.def: Likewise.
1308         * gimple.h: Likewise.
1309         * gimplify.c: Likewise.
1310         * graphds.c: Likewise.
1311         * graphite-clast-to-gimple.c: Likewise.
1312         * gthr-nks.h: Likewise.
1313         * gthr-posix.c: Likewise.
1314         * gthr-posix.h: Likewise.
1315         * gthr-posix95.h: Likewise.
1316         * gthr-single.h: Likewise.
1317         * gthr-tpf.h: Likewise.
1318         * gthr-vxworks.h: Likewise.
1319         * gthr.h: Likewise.
1320         * haifa-sched.c: Likewise.
1321         * hard-reg-set.h: Likewise.
1322         * hooks.c: Likewise.
1323         * hooks.h: Likewise.
1324         * hosthooks.h: Likewise.
1325         * hwint.h: Likewise.
1326         * ifcvt.c: Likewise.
1327         * incpath.c: Likewise.
1328         * init-regs.c: Likewise.
1329         * integrate.c: Likewise.
1330         * ipa-cp.c: Likewise.
1331         * ipa-inline.c: Likewise.
1332         * ipa-prop.c: Likewise.
1333         * ipa-pure-const.c: Likewise.
1334         * ipa-reference.c: Likewise.
1335         * ipa-struct-reorg.c: Likewise.
1336         * ipa-struct-reorg.h: Likewise.
1337         * ipa-type-escape.c: Likewise.
1338         * ipa-type-escape.h: Likewise.
1339         * ipa-utils.c: Likewise.
1340         * ipa-utils.h: Likewise.
1341         * ipa.c: Likewise.
1342         * ira-build.c: Likewise.
1343         * ira-color.c: Likewise.
1344         * ira-conflicts.c: Likewise.
1345         * ira-costs.c: Likewise.
1346         * ira-emit.c: Likewise.
1347         * ira-int.h: Likewise.
1348         * ira-lives.c: Likewise.
1349         * ira.c: Likewise.
1350         * jump.c: Likewise.
1351         * lambda-code.c: Likewise.
1352         * lambda-mat.c: Likewise.
1353         * lambda-trans.c: Likewise.
1354         * lambda.h: Likewise.
1355         * langhooks.c: Likewise.
1356         * lcm.c: Likewise.
1357         * libgcov.c: Likewise.
1358         * lists.c: Likewise.
1359         * loop-doloop.c: Likewise.
1360         * loop-init.c: Likewise.
1361         * loop-invariant.c: Likewise.
1362         * loop-iv.c: Likewise.
1363         * loop-unroll.c: Likewise.
1364         * lower-subreg.c: Likewise.
1365         * lto-cgraph.c: Likewise.
1366         * lto-compress.c: Likewise.
1367         * lto-opts.c: Likewise.
1368         * lto-section-in.c: Likewise.
1369         * lto-section-out.c: Likewise.
1370         * lto-streamer-in.c: Likewise.
1371         * lto-streamer-out.c: Likewise.
1372         * lto-streamer.c: Likewise.
1373         * lto-streamer.h: Likewise.
1374         * lto-symtab.c: Likewise.
1375         * lto-wpa-fixup.c: Likewise.
1376         * matrix-reorg.c: Likewise.
1377         * mcf.c: Likewise.
1378         * mode-switching.c: Likewise.
1379         * modulo-sched.c: Likewise.
1380         * omega.c: Likewise.
1381         * omega.h: Likewise.
1382         * omp-low.c: Likewise.
1383         * optabs.c: Likewise.
1384         * optabs.h: Likewise.
1385         * opts-common.c: Likewise.
1386         * opts.c: Likewise.
1387         * params.def: Likewise.
1388         * params.h: Likewise.
1389         * passes.c: Likewise.
1390         * plugin.c: Likewise.
1391         * postreload-gcse.c: Likewise.
1392         * postreload.c: Likewise.
1393         * predict.c: Likewise.
1394         * predict.def: Likewise.
1395         * pretty-print.c: Likewise.
1396         * pretty-print.h: Likewise.
1397         * print-rtl.c: Likewise.
1398         * print-tree.c: Likewise.
1399         * profile.c: Likewise.
1400         * read-rtl.c: Likewise.
1401         * real.c: Likewise.
1402         * recog.c: Likewise.
1403         * reg-stack.c: Likewise.
1404         * regcprop.c: Likewise.
1405         * reginfo.c: Likewise.
1406         * regmove.c: Likewise.
1407         * regrename.c: Likewise.
1408         * regs.h: Likewise.
1409         * regstat.c: Likewise.
1410         * reload.c: Likewise.
1411         * reload1.c: Likewise.
1412         * resource.c: Likewise.
1413         * rtl.c: Likewise.
1414         * rtl.def: Likewise.
1415         * rtl.h: Likewise.
1416         * rtlanal.c: Likewise.
1417         * sbitmap.c: Likewise.
1418         * sched-deps.c: Likewise.
1419         * sched-ebb.c: Likewise.
1420         * sched-int.h: Likewise.
1421         * sched-rgn.c: Likewise.
1422         * sched-vis.c: Likewise.
1423         * sdbout.c: Likewise.
1424         * sel-sched-dump.c: Likewise.
1425         * sel-sched-dump.h: Likewise.
1426         * sel-sched-ir.c: Likewise.
1427         * sel-sched-ir.h: Likewise.
1428         * sel-sched.c: Likewise.
1429         * sel-sched.h: Likewise.
1430         * sese.c: Likewise.
1431         * sese.h: Likewise.
1432         * simplify-rtx.c: Likewise.
1433         * stack-ptr-mod.c: Likewise.
1434         * stmt.c: Likewise.
1435         * stor-layout.c: Likewise.
1436         * store-motion.c: Likewise.
1437         * stringpool.c: Likewise.
1438         * stub-objc.c: Likewise.
1439         * sync-builtins.def: Likewise.
1440         * target-def.h: Likewise.
1441         * target.h: Likewise.
1442         * targhooks.c: Likewise.
1443         * targhooks.h: Likewise.
1444         * timevar.c: Likewise.
1445         * tlink.c: Likewise.
1446         * toplev.c: Likewise.
1447         * toplev.h: Likewise.
1448         * tracer.c: Likewise.
1449         * tree-affine.c: Likewise.
1450         * tree-affine.h: Likewise.
1451         * tree-browser.def: Likewise.
1452         * tree-call-cdce.c: Likewise.
1453         * tree-cfg.c: Likewise.
1454         * tree-cfgcleanup.c: Likewise.
1455         * tree-chrec.c: Likewise.
1456         * tree-chrec.h: Likewise.
1457         * tree-complex.c: Likewise.
1458         * tree-data-ref.c: Likewise.
1459         * tree-data-ref.h: Likewise.
1460         * tree-dfa.c: Likewise.
1461         * tree-dump.c: Likewise.
1462         * tree-dump.h: Likewise.
1463         * tree-eh.c: Likewise.
1464         * tree-flow-inline.h: Likewise.
1465         * tree-flow.h: Likewise.
1466         * tree-if-conv.c: Likewise.
1467         * tree-inline.c: Likewise.
1468         * tree-into-ssa.c: Likewise.
1469         * tree-loop-distribution.c: Likewise.
1470         * tree-loop-linear.c: Likewise.
1471         * tree-mudflap.c: Likewise.
1472         * tree-nested.c: Likewise.
1473         * tree-nomudflap.c: Likewise.
1474         * tree-nrv.c: Likewise.
1475         * tree-object-size.c: Likewise.
1476         * tree-optimize.c: Likewise.
1477         * tree-outof-ssa.c: Likewise.
1478         * tree-parloops.c: Likewise.
1479         * tree-pass.h: Likewise.
1480         * tree-phinodes.c: Likewise.
1481         * tree-predcom.c: Likewise.
1482         * tree-pretty-print.c: Likewise.
1483         * tree-profile.c: Likewise.
1484         * tree-scalar-evolution.c: Likewise.
1485         * tree-ssa-address.c: Likewise.
1486         * tree-ssa-alias.c: Likewise.
1487         * tree-ssa-ccp.c: Likewise.
1488         * tree-ssa-coalesce.c: Likewise.
1489         * tree-ssa-copy.c: Likewise.
1490         * tree-ssa-copyrename.c: Likewise.
1491         * tree-ssa-dce.c: Likewise.
1492         * tree-ssa-dom.c: Likewise.
1493         * tree-ssa-dse.c: Likewise.
1494         * tree-ssa-forwprop.c: Likewise.
1495         * tree-ssa-ifcombine.c: Likewise.
1496         * tree-ssa-live.c: Likewise.
1497         * tree-ssa-live.h: Likewise.
1498         * tree-ssa-loop-ch.c: Likewise.
1499         * tree-ssa-loop-im.c: Likewise.
1500         * tree-ssa-loop-ivcanon.c: Likewise.
1501         * tree-ssa-loop-ivopts.c: Likewise.
1502         * tree-ssa-loop-manip.c: Likewise.
1503         * tree-ssa-loop-niter.c: Likewise.
1504         * tree-ssa-loop-prefetch.c: Likewise.
1505         * tree-ssa-loop-unswitch.c: Likewise.
1506         * tree-ssa-loop.c: Likewise.
1507         * tree-ssa-math-opts.c: Likewise.
1508         * tree-ssa-operands.c: Likewise.
1509         * tree-ssa-operands.h: Likewise.
1510         * tree-ssa-phiopt.c: Likewise.
1511         * tree-ssa-phiprop.c: Likewise.
1512         * tree-ssa-pre.c: Likewise.
1513         * tree-ssa-propagate.c: Likewise.
1514         * tree-ssa-reassoc.c: Likewise.
1515         * tree-ssa-sccvn.c: Likewise.
1516         * tree-ssa-sink.c: Likewise.
1517         * tree-ssa-structalias.c: Likewise.
1518         * tree-ssa-ter.c: Likewise.
1519         * tree-ssa-threadedge.c: Likewise.
1520         * tree-ssa-threadupdate.c: Likewise.
1521         * tree-ssa-uncprop.c: Likewise.
1522         * tree-ssa.c: Likewise.
1523         * tree-ssanames.c: Likewise.
1524         * tree-switch-conversion.c: Likewise.
1525         * tree-tailcall.c: Likewise.
1526         * tree-vect-data-refs.c: Likewise.
1527         * tree-vect-generic.c: Likewise.
1528         * tree-vect-loop-manip.c: Likewise.
1529         * tree-vect-loop.c: Likewise.
1530         * tree-vect-patterns.c: Likewise.
1531         * tree-vect-slp.c: Likewise.
1532         * tree-vect-stmts.c: Likewise.
1533         * tree-vectorizer.c: Likewise.
1534         * tree-vectorizer.h: Likewise.
1535         * tree-vrp.c: Likewise.
1536         * tree.c: Likewise.
1537         * tree.def: Likewise.
1538         * tree.h: Likewise.
1539         * treestruct.def: Likewise.
1540         * unwind-compat.c: Likewise.
1541         * unwind-dw2-fde-glibc.c: Likewise.
1542         * unwind-dw2.c: Likewise.
1543         * value-prof.c: Likewise.
1544         * value-prof.h: Likewise.
1545         * var-tracking.c: Likewise.
1546         * varasm.c: Likewise.
1547         * varpool.c: Likewise.
1548         * vec.c: Likewise.
1549         * vec.h: Likewise.
1550         * vmsdbgout.c: Likewise.
1551         * web.c: Likewise.
1552         * xcoffout.c: Likewise.
1553
1554 2009-11-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1555
1556         * pa.c (output_call): Only use sr4 for long interspace calls if
1557         call binds local and generating non PIC code.
1558         (attr_length_call): Adjust length calculation for above.
1559
1560 2009-11-25  Uros Bizjak  <ubizjak@gmail.com>
1561
1562         * config/i386/i386.md (plusminus_carry_mnemonic): New code attribute.
1563         (add<mode>3_carry): Change operand order of plus RTX.
1564         (*add<mode>3_carry): Ditto.
1565         (*addsi3_carry_zext): Ditto.
1566         (*add<dwi>3_doubleword): Update for changed operand order.
1567         (*negti2_1 splitter): Ditto.
1568         (*negdi2_1 splitter): Ditto.
1569         (<plusminus_insn><mode>3_carry): Macroize expander from
1570         {add,sub}<mode>3_carry patterns using plusminus code iterator.
1571         (*<plusminus_insn><mode>3_carry): Macroize insn from
1572         *{add,sub}<mode>3_carry patetrns using plusminus code iterator.
1573         (neg<mode>2): Macroize expander from neg{qi,hi,si,di,ti}2
1574         patterns using SDWIM mode iterator.
1575         (*neg<dwi>2_doubleword): New insn_and_split pattern.  Macroize
1576         pattern from *neg{di,ti}2_1 patterns and corresponding splitters
1577         using DWIH mode iterator.
1578         (*neg<mode>2_1): Macroize insn from neg{qi,hi,si,di}2_1 patterns
1579         using SWI mode iterator.
1580         (*neg<mode>2_cmpz): Ditto from neg{qi,hi,si,di}2_cmpz patterns.
1581         (one_cmpl<mode>2): Macroize expander from one_cmpl{qi,hi,si,di}2
1582         patterns using SWIM mode iterator.
1583         (*one_cmpl<mode>2_1): Macroize insn from one_cmpl{hi,si,di}2_1
1584         patterns using SWI248 mode iterator.
1585         (*one_cmpl<mode>2_2): Macroize insn from one_cmpl{qi,hi,si,di}2_2
1586         patterns using SWI mode iterator.
1587         (*one_cmpl<mode>2_2 splitter): Macroize splitter from
1588         one_cmpl{qi,hi,si,di}2_2 splitter patterns using SWI mode iterator.
1589
1590 2009-11-24  Michael Matz  <matz@suse.de>
1591
1592         * expr.c (set_storage_via_libcall): Fix build_call_expr call.
1593
1594 2009-11-24  David Binderman  <dcb314@hotmail.com>
1595
1596         * expr.c (store_field): Remove set but not used local variable
1597         width_mask.
1598         (expand_expr_real_2): Remove treeop2.
1599         * gcse.c (update_ld_motion_stores): Remove new_rtx.
1600         * haifa-sched.c (max_issue): Remove points.
1601         (sched_create_recovery_edges): Remove e.
1602         * ira-costs.c (setup_allocno_cover_class_and_costs): Remove mode.
1603
1604 2009-11-24  Nick Clifton  <nickc@redhat.com>
1605
1606         * config/v850/v850.c (function_arg): Fix handling of zero-length
1607         function arguments.
1608
1609 2009-11-24  Michael Matz  <matz@suse.de>
1610
1611         * tree.h (union tree_ann_d): Don't declare.
1612         (tree_base): Remove ann field.
1613         (struct var_ann_d): Declare forward.
1614         (tree_result_decl, tree_parm_decl, tree_var_decl): Add ann field.
1615         (DECL_VAR_ANN_PTR): New macro.
1616         * tree-dfa.c (create_var_ann): Rewrite in terms of above macro,
1617         accept only VAR, PARM or RESULT decls.
1618         (create_tree_common_ann): Remove.
1619         (remove_referenced_var): Use DECL_VAR_ANN_PTR.
1620         * tree-eh.c (lookup_expr_eh_lp): Remove.
1621         * tree-flow-inline.h (var_ann, get_var_ann): Rewrite in terms of
1622         DECL_VAR_ANN_PTR.
1623         (ann_type, tree_common_ann, get_tree_common_ann): Remove.
1624         * tree-flow.h (enum tree_ann_type): Remove.
1625         (struct tree_ann_common_d): Remove.
1626         (struct var_ann_d): Remove common field.
1627         (union tree_ann_d): Remove.
1628         (tree_ann_t, tree_ann_common_t): Remove typedefs.
1629         (tree_common_ann, get_tree_common_ann, ann_type,
1630         create_tree_common_ann, lookup_expr_eh_lp): Don't declare.
1631         * tree-ssa.c (delete_tree_ssa): Use DECL_VAR_ANN_PTR.
1632         * tree.c (copy_node_stat): Use DECL_VAR_ANN_PTR.
1633         * builtins.c (expand_builtin_memcpy): Use
1634         currently_expanding_gimple_stmt instead of tree annotation.
1635         (expand_builtin_memset_args): Ditto.
1636         * cfgexpand.c (currently_expanding_gimple_stmt): Add global variable.
1637         (expand_call_stmt): Don't set tree annotation.
1638         (expand_gimple_basic_block): Set currently_expanding_gimple_stmt.
1639         * expr.c (expand_expr_real): Don't call lookup_expr_eh_lp.
1640         * gimple.h (currently_expanding_gimple_stmt): Declare.
1641
1642 2009-11-24  Paolo Carlini  <paolo.carlini@oracle.com>
1643
1644         * dwarf2out.c (add_location_or_const_value_attribute): Remove
1645         useless NOTE_VAR_LOCATION_STATUS call.
1646         * cfgrtl.c (commit_one_edge_insertion): Remove useless loop, tidy.
1647
1648 2009-11-24  Rafael Avila de Espindola  <espindola@google.com>
1649
1650         * lto-wrapper.c (lto_wrapper_exit): Don't try to delete files if
1651         being called recursively.
1652
1653 2009-11-24  Basile Starynkevitch  <basile@starynkevitch.net>
1654
1655         * Makefile.in (PLUGIN_HEADERS): Added files: cppdefault.h flags.h
1656         $(MD5_H) params.def params.h prefix.h tree-inline.h.
1657
1658 2009-11-24  Paul Brook  <paul@codesourcery.com>
1659
1660         * gcc/config/arm/arm.c (arm_compute_save_reg0_reg12_mask): Fix comment
1661         typo.
1662
1663 2009-11-24  Julian Brown  <julian@codesourcery.com>
1664             Paul Brook  <paul@codesourcery.com>
1665
1666         * config/arm/arm.c (TARGET_DWARF_REGISTER_SPAN): Define.
1667         (arm_dwarf_register_span): New function.
1668         (arm_dbx_register_number): Add VFPv3 dwarf numbering.
1669
1670 2009-11-24  David Binderman  <dcb314@hotmail.com>
1671
1672         * cfgrtl.c (commit_one_edge_insertion): Remove set but not used
1673         local variable bb_note.
1674         * dominance.c (get_dominated_by): Likewise local var n.
1675         (output_file_names): Likewise local var idx.
1676         (add_location_or_const_value_attribute): Likewise local var status.
1677         * dwarf2out.c (gen_variable_die): Likewise local var field.
1678         * emit-rtl.c (no_line_numbers): Remove.
1679         (init_emit_once): Remove line_numbers parameter.
1680         * rtl.h (init_emit_once): Adjust prototype.
1681         * toplev.c (backend_init): Adjust init_emit_once call.
1682
1683 2009-11-24  Richard Guenther  <rguenther@suse.de>
1684
1685         PR tree-optimization/42142
1686         * tree-ssa-dce.c (mark_aliased_reaching_defs_necessary_1):
1687         Handle iv-dependent (non-)kills properly.
1688         (mark_aliased_reaching_defs_necessary): Pass the basic-block
1689         of the reference statement to mark_aliased_reaching_defs_necessary_1.
1690
1691 2009-11-24  Martin Jambor  <mjambor@suse.cz>
1692
1693         PR tree-optimization/42154
1694         * tree-sra.c (struct access): Added comments.
1695         (sra_modify_expr): Build references to the old aggregate with
1696         build_ref_for_offset instead of reusing access->expr.
1697         (load_assign_lhs_subreplacements): Likewise.
1698
1699 2009-11-24  Uros Bizjak  <ubizjak@gmail.com>
1700
1701         * config/i386/i386.md (add<mode>3_carry): Change insn pattern
1702         to expander.
1703         (sub<mode>3_carry): Ditto.
1704         (x86_mov<mode>cc_0_m1): Ditto.
1705         (*add<mode>3_carry): New insn pattern.  Use VOIDmode match_operator
1706         for ix86_carry_flag_operator operator predicate.
1707         (*sub<mode>3_carry): Ditto.
1708         (*x86_mov<mode>cc_0_m1): Ditto.
1709         (*addsi3_carry_zext): Use VOIDmode match_operator for
1710         ix86_carry_flag_operator operator predicate.
1711         (*subsi3_carry_zext): Ditto.
1712         (*x86_mov<mode>cc_0_m1_s): Ditto.
1713         (*x86_mov<mode>cc_0_m1_neg): Ditto.
1714         * config/i386/predocates.md (ix86_carry_flag_operator): Do not
1715         check operator sub-expressions for FLAGS_REG and const0_rtx.
1716         * config/i386/i386.c (*ix86_gen_sub3_carry): Update prototype.
1717         (ix86_expand_int_movcc): Update calls to gen_x86_mov{si,di}cc_0_m1.
1718         (ix86_expand_int_addcc): Update calls to
1719         gen_{add,sub}{qi,hi,si,di}3_carry.  Do not set mode of compare_op.
1720         (ix86_expand_strlensi_unroll_1): Update calls to ix86_gen_sub3_carry.
1721         Do not set mode of compare operation.
1722
1723 2009-11-23  Jan Hubicka  <jh@suse.cz>
1724
1725         PR middle-end/42151
1726         * ipa-inline.c (inline_transform): Avoid ICE when transform is called
1727         twice.
1728
1729 2009-11-23  Jan Hubicka  <jh@suse.cz>
1730
1731         * ipa-cp.c (ipcp_compute_node_scale): Work around completely
1732         wrong profile updates.
1733         * predict.c (counts_to_freqs): Be expected for ENTRY/EXIT block
1734         having largest frequency.
1735         * ira-live.c (ira_implicitly_set_insn_hard_regs): Silecne
1736         used uninitalized warning.
1737         * tree-optimize.c (execute_fixup_cfg): Rescale entry and exit block
1738         frequencies.
1739
1740 2009-11-23  Uros Bizjak  <ubizjak@gmail.com>
1741
1742         * config/alpha/alpha.md (*cmp_sadd_sidi): Use gen_lowpart instead
1743         of gen_rtx_REG to generate operand 5.
1744         (*cmp_ssub_sidi): Ditto.
1745
1746 2009-11-23  Richard Henderson  <rth@redhat.com>
1747
1748         * config/i386/i386.c (avx_vpermilp_parallel): Fix sign compare
1749         mismatch.
1750
1751 2009-11-23  Paul Brook  <paul@codesourcery.com>
1752
1753         * config/arm/arm.c (arm_compute_save_reg0_reg12_mask): Add special
1754         case for noreturn functions.
1755         (arm_compute_save_reg_mask): Remove special noreturn handling.
1756
1757 2009-11-23  Richard Guenther  <rguenther@suse.de>
1758
1759         * tree-dfa.c (get_ref_base_and_extent): Adjust maximum access
1760         size for DECL bases.
1761
1762 2009-11-22  Richard Henderson  <rth@redhat.com>
1763
1764         * i386.c (avx_vpermilp_parallel): New function.
1765         * i386-protos.h: Declare it.
1766         * predicates.md (avx_vpermilp_v8sf_operand, avx_vpermilp_v4df_operand,
1767         avx_vpermilp_v4sf_operand, avx_vpermilp_v2df_operand): New.
1768         * sse.md (AVXMODEFDP, AVXMODEFSP): New iterators.
1769         (ssescalarnum, ssedoublesizemode): Add AVX modes.
1770         (vpermilbits): Remove.
1771         (avx_vpermil<mode>): Change insns to expanders.
1772         (*avx_vpermil<mode>): New.  Use vec_select.
1773
1774 2009-11-22  Richard Earnshaw  <rearnsha@arm.com>
1775
1776         * opts.c (decode_options): Don't enable flag_schedule_insns
1777         when optimizing for size.
1778         * doc/invoke.texi: Document change.
1779
1780 2009-11-22  Uros Bizjak  <ubizjak@gmail.com>
1781
1782         PR target/42113
1783         * config/alpha/alpha.md (*cmp_sadd_si): Change mode
1784         of scratch register to SImode.
1785         (*cmp_sadd_sidi): Ditto.
1786         (*cmp_ssub_si): Ditto.
1787         (*cmp_ssub_sidi): Ditto.
1788
1789 2009-11-21  Ian Lance Taylor  <iant@google.com>
1790
1791         * Makefile.in (HOST_LIBS): Move higher in file.
1792         (LINKER, LINKER_FLAGS): If ENABLE_BUILD_WITH_CXX, but $(HOST_LIBS)
1793         is not empty, set to $(CC) and $(CFLAGS).
1794
1795 2009-11-22  Martin Jambor  <mjambor@suse.cz>
1796
1797         * tree-cfg.c (verify_types_in_gimple_reference): Error out on
1798         V_C_E of an SSA_NAME or an invariant if lvalue is required.
1799         (verify_gimple_call): Verify LHS also with with
1800         verify_types_in_gimple_reference.
1801
1802 2009-11-21  Martin Jambor  <mjambor@suse.cz>
1803
1804         PR middle-end/42025
1805         * tree-sra.c (access_precludes_ipa_sra_p): New function.
1806         (splice_param_accesses): Check all accesses by calling
1807         access_precludes_ipa_sra_p.
1808         (sra_ipa_modify_expr): Rename argument erite to dont_convert and do
1809         not convert types if it is true.
1810         (sra_ipa_modify_assign): Convert types in case of mismatch.
1811
1812 2009-11-21  Kaushik Phatak  <kaushik.phatak@kpitcummins.com>
1813
1814         * config/sh/sh.md (cmpeqsi_t-1): Use logical_operand predicate
1815         for operand 1.
1816
1817 2009-11-21  Adam Nemet  <adambnemet@gmail.com>
1818
1819         * config/mips/mips-protos.h (mulsidi3_gen_fn): New typedef.
1820         (mips_mulsidi3_gen_fn): Declare new function.
1821         * config/mips/mips.c (mips_mulsidi3_gen_fn): New function.
1822         * config/mips/mips.md (<u>mulsidi3): Change condition to use
1823         mips_mulsidi3_gen_fn.  Use mips_mulsidi3_gen_fn to generate the insn.
1824         (<u>mulsidi3_64bit): Don't match for ISA_HAS_DMUL3.
1825         (mulsidi3_64bit_dmul): New define_insn.
1826
1827 2009-11-21  Ben Elliston  <bje@au.ibm.com>
1828
1829         * gengtype-lex.l: Enable noinput flex option.
1830         (YY_NO_INPUT): Remove define.
1831
1832 2009-11-21  Alexandre Oliva  <aoliva@redhat.com>
1833
1834         * tree-ssa.c (find_released_ssa_name): Handle NULL wi.
1835         (insert_debug_temp_for_var_def): Handle degenerate PHI nodes.
1836         (insert_debug_temps_for_defs): Handle PHI nodes.
1837         * tree-ssa-dom.c (degenerate_phi_result): Don't crash on released
1838         SSA names.
1839
1840 2009-11-21  Alexandre Oliva  <aoliva@redhat.com>
1841
1842         * tree-ssa-pre.c (remove_dead_inserted_code): Don't release_defs
1843         after remove_phi_node.
1844
1845 2009-11-21  Alexandre Oliva  <aoliva@redhat.com>
1846
1847         PR tree-optimization/42078
1848         * gimple.h (gimple_replace_lhs): New declaration.
1849         * gimple.c (gimple_replace_lhs): New function.
1850         * tree-ssa-math-opts.c (execute_cse_reciprocals): Call it before
1851         modifying the call.
1852
1853 2009-11-20  Sebastian Pop  <sebastian.pop@amd.com>
1854
1855         * config/i386/sse.md (*xop_pmacsdql_mem): Don't call reg_mentioned_p.
1856         (xop_mulv2div2di3_low): Same.
1857         (*xop_pmacsdqh_mem): Same.
1858
1859 2009-11-20  Richard Henderson  <rth@redhat.com>
1860
1861         * config/i386/i386-builtin-types.awk: New file.
1862         * config/i386/i386-builtin-types.def: New file.
1863         * config/i386/t-i386: Use them to build i386-builtin-types.inc.
1864         * config/i386/i386.c: Include it.
1865         (ix86_builtin_type_tab, ix86_get_builtin_type): New.
1866         (ix86_builtin_func_type_tab, ix86_get_builtin_func_type): New.
1867         (struct builtin_isa): Remove GTY marker.  Replace tree type with
1868         ix86_builtin_func_type; add set_and_not_built_p.
1869         (def_builtin): Change type parameter to tcode; use
1870         ix86_get_builtin_func_type; update all callers.  Accept zero mask
1871         to mean the builtin is unconditionally available.
1872         (ix86_add_new_builtins): Use set_and_not_built_p instead of type
1873         being set to NULL.
1874         (enum ix86_special_builtin_type, enum ix86_builtin_type): Remove.
1875         Update some users to rationalized enumeration codes from new include.
1876         (enum multi_arg_type): Remove.  Replace all enumeration values
1877         with defines to new ix86_builtin_func_type.
1878         (ix86_init_mmx_sse_builtins): Don't build any types here.  Defer
1879         all type resolution to def_builtin.
1880         (ix86_init_builtin_types): Split out from ...
1881         (ix86_init_builtins): ... here.  Use ix86_get_builtin_func_type.
1882
1883 2009-11-20  Michael Meissner  <meissner@linux.vnet.ibm.com>
1884
1885         PR target/41787
1886         * config/rs6000/rs6000.c (struct machine_function): Revert
1887         2009-10-23 change to set VRSAVE to non-0 if we use VSX.
1888         (rs6000_expand_to_rtl_hook): Ditto.
1889         (rs6000_check_vector_mode): Ditto.
1890         (compute_vrsave_mask): Ditto.
1891
1892 2009-11-20  Paul Brook  <paul@codesourcery.com>
1893
1894         * doc/invoke.texi: Document ARM -mcpu=cortex-a5.
1895         * config/arm/arm-cores.def: Add cortex-a5.
1896         * config/arm/bpabi.h (BE8_LINK_SPEC): Add mcpu=cortex-a5.
1897         * config/arm/arm-tune.md: Regenerate.
1898
1899 2009-11-20 Olga Golovanevsky <olga@il.ibm.com>
1900
1901         PR middle-end/39960
1902         * ipa-struct-reorg.c (find_pos_in_stmt): New parameter.
1903         (ref_pos): New field in structure.
1904         (insert_new_var_in_stmt): New function.
1905
1906
1907 2009-11-20  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1908
1909         * config.gcc (alpha*-dec-osf[45]*): Set use_gcc_stdint.
1910         * config/alpha/osf.h (SIG_ATOMIC_TYPE): Define.
1911         (INT8_TYPE, INT16_TYPE, INT32_TYPE, INT64_TYPE): Define.
1912         (UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE): Define.
1913         (INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
1914         INT_LEAST64_TYPE): Define.
1915         (UINT_LEAST8_TYPE, UINT_LEAST16_TYPE, UINT_LEAST32_TYPE,
1916         UINT_LEAST64_TYPE): Define.
1917         (INT_FAST8_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE,
1918         INT_FAST64_TYPE): Define.
1919         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
1920         UINT_FAST64_TYPE): Define.
1921         (INTPTR_TYPE, UINTPTR_TYPE): Define.
1922
1923 2009-11-20  Julian Brown  <julian@codesourcery.com>
1924
1925         * config/arm/arm.h (ASM_OUTPUT_REG_PUSH): Handle STATIC_CHAIN_REGNUM
1926         specially for Thumb-1.
1927         (ASM_OUTPUT_REG_POP): Likewise.
1928
1929 2009-11-19  Jason Merrill  <jason@redhat.com>
1930
1931         * dwarf2out.c (get_context_die): Take TYPE_MAIN_VARIANT.
1932
1933 2009-11-19  Basile Starynkevitch  <basile@starynkevitch.net>
1934             Rafael Avila de Espindola  <espindola@google.com>
1935
1936         * doc/plugins.texi (Plugin initialization): Added advices for
1937         retrieving the version of GCC at plugin compilation and loading times.
1938
1939 2009-11-19  Basile Starynkevitch  <basile@starynkevitch.net>
1940
1941         * plugin.c (FMT_FOR_PLUGIN_EVENT): added definition.
1942         (dump_active_plugins): output to file everything. Use
1943         internationalized dump & FMT_FOR_PLUGIN_EVENT.
1944
1945 2009-11-19  Richard Guenther  <rguenther@suse.de>
1946
1947         * gimple.c (canonicalize_cond_expr_cond): Strip conversions
1948         around truth-valued expressions.
1949         * tree.c (free_lang_data): Untangle check for LTO frontend.
1950
1951 2009-11-19  Jakub Jelinek  <jakub@redhat.com>
1952
1953         * tree.c (need_assembler_name_p): Use cgraph_get_node instead
1954         of cgraph_node_for_decl.
1955         * cgraph.h (cgraph_node_for_decl): Remove prototype.
1956         * cgraph.c (cgraph_node_for_decl): Remove.
1957         (cgraph_get_node): Just return NULL if !cgraph_hash.
1958
1959 2009-11-19  Paul Brook  <paul@codesourcery.com>
1960
1961         * config.gcc: Add new ARM --with-fpu options.
1962         * doc/invoke.texi: Docuent ARM -mfpu=fpv4-sp-d16.
1963         * config/arm/arm.c (all_fpus): Add fpv4-sp-d16.
1964
1965 2009-11-18  Richard Guenther  <rguenther@suse.de>
1966
1967         * gimple.h (union gimple_statement_d): Add gsmembase member.
1968         (gimple_vuse_op): Use gsmembase for access.
1969         (gimple_vdef_op): Likewise.
1970         (gimple_vuse): Likewise.
1971         (gimple_vdef): Likewise.
1972         (gimple_vuse_ptr): Likewise.
1973         (gimple_vdef_ptr): Likewise.
1974         (gimple_set_vuse): Likewise.
1975         (gimple_set_vdef): Likewise.
1976         * gsstruct.def (GSS_WITH_MEM_OPS_BASE): Add.
1977
1978 2009-11-18  Daniel Jacobowitz  <dan@codesourcery.com>
1979
1980         * doc/arm-neon-intrinsics.texi: Regenerated.
1981
1982 2009-11-18  Daniel Jacobowitz  <dan@codesourcery.com>
1983
1984         * config/arm/neon-docgen.ml (analyze_shape_elt): Handle alternatives.
1985
1986 2009-11-18  Paul Brook  <paul@codesourcery.com>
1987             Daniel Jacobowitz  <dan@codesourcery.com>
1988
1989         * config/arm/arm.c (FL_ARCH7EM, FL_FOR_ARCH7EM): Define.
1990         (arm_arch7em): New variable.
1991         (all_architectures): Add armv7e-m.
1992         (arm_override_options): Set arm_arch7em.
1993         * config/arm/arm.h (TARGET_DSP_MULTIPLY, TARGET_INT_SIMD):
1994         Include arm_arch7em.
1995         (arm_arch7em): Declare.
1996
1997 2009-11-18  Richard Guenther  <rguenther@suse.de>
1998
1999         * lto-streamer-in.c (input_gimple_stmt): Assert that we find
2000         a valid field decl if checking is enabled.
2001
2002 2009-11-18  Martin Jambor  <mjambor@suse.cz>
2003
2004         * ipa-prop.h (struct ipa_param_call_note): New field lto_stmt_uid.
2005         (lto_ipa_fixup_call_notes): Declare.
2006         * ipa-prop.c (ipa_note_param_call): Store gimple uid.
2007         (update_call_notes_after_inlining): Copy call stmt uid to the new
2008         edge.
2009         (ipa_write_param_call_note): New function.
2010         (ipa_read_param_call_note): New function
2011         (ipa_write_node_info): Write also param call notes.  Removed a bogus
2012         comment, reformatted to fit 80 columns.
2013         (ipa_read_node_info): Read also param call notes. Removed a bogus
2014         comment.  Remove ipa_edge_args_vector growth.
2015         (lto_ipa_fixup_call_notes): New function.
2016         * ipa-cp.c (pass_ipa_cp): Add stmt_fixup hook.
2017         * ipa-inline.c (cgraph_mark_inline_edge): Perform indirect
2018         inlining regardless of flag_wpa.
2019         (cgraph_decide_inlining_of_small_functions): Likewise.
2020         (cgraph_decide_inlining): Likewise.
2021         (inline_read_summary): Likewise.
2022
2023 2009-11-18  Jan Hubicka  <jh@suse.cz>
2024
2025         * predict.c (compute_function_frequency): Export.
2026         * predict.h (compute_function_frequency): Declare.
2027         * tree-optimize.c (execute_fixup_cfg): Rescale frequencies.
2028
2029 2009-11-18  Martin Jambor  <mjambor@suse.cz>
2030
2031         * passes.c (ipa_write_summaries): Call renumber_gimple_stmt_uids
2032         on all nodes we write summaries for.
2033
2034 2009-11-18  Shujing Zhao  <pearly.zhao@oracle.com>
2035
2036         PR middle-end/22201
2037         * params.def (PARAM_INLINE_UNIT_GROWTH, PARAM_IPCP_UNIT_GROWTH)
2038         (PARAM_EARLY_INLINING_INSNS, PARAM_IRA_MAX_LOOPS_NUM)
2039         (PARAM_IRA_MAX_CONFLICT_TABLE_SIZE)
2040         (PARAM_LOOP_INVARIANT_MAX_BBS_IN_LOOP)
2041         (PARAM_MIN_INSN_TO_PREFETCH_RATIO)
2042         (PARAM_PREFETCH_MIN_INSN_TO_MEM_RATIO)
2043         (PARAM_IPA_SRA_PTR_GROWTH_FACTOR): Uppercase the first letter of the
2044         description string.
2045
2046 2009-11-18  Jakub Jelinek  <jakub@redhat.com>
2047
2048         * dwarf2out.c (loc_list_from_tree): Don't call rtl_for_decl_location
2049         unnecessarily.
2050         (rtl_for_decl_location): Try harder to get a rtl for TREE_STATIC vars.
2051
2052         PR c++/3187
2053         * cgraph.h (struct cgraph_node): Add same_body and same_body_alias
2054         fields.
2055         (cgraph_same_body_alias, cgraph_remove_same_body_alias): New
2056         prototypes.
2057         * cgraphunit.c (cgraph_expand_function, cgraph_emit_thunks,
2058         cgraph_materialize_all_clones): Handle same_body aliases.
2059         * cgraph.c (cgraph_allocate_node): New function.
2060         (cgraph_create_node): Use it.
2061         (cgraph_node_for_decl, cgraph_node, cgraph_get_node,
2062         cgraph_node_for_asm, cgraph_remove_node): Handle same_body aliases.
2063         (cgraph_same_body_alias, cgraph_remove_same_body_alias): New
2064         functions.
2065         * lto-cgraph.c (lto_output_node): Stream out same_body aliases.
2066         (input_node): Stream in same_body aliases.
2067         * lto-symtab.c (lto_cgraph_replace_node): Clear node pointers
2068         for same_body aliases.
2069         (lto_symtab_merge_cgraph_nodes_1): Handle same_body aliases.
2070
2071 2009-11-18  Iain Sandoe <iain.sandoe@sandoe-acoustics.co.uk>
2072
2073         PR other/39888
2074         * config/darwin.h: Use the extension stub libraries to access
2075         current libgcc_s features.
2076
2077 2009-11-18  Alexandre Oliva  <aoliva@redhat.com>
2078
2079         PR debug/41926
2080         * tree-vect-loop.c (vect_loop_kill_debug_uses): New.
2081         (vect_transform_loop): Call it.
2082
2083 2009-11-18  Alexandre Oliva  <aoliva@redhat.com>
2084
2085         * tree-ssa.c (insert_debug_temp_for_var_def): Fix handling of
2086         released SSA names.
2087
2088 2009-11-18  Alexandre Oliva  <aoliva@redhat.com>
2089
2090         PR debug/41888
2091         PR debug/41886
2092         * graphite-scop-detection.c (stmt_simple_for_scop_p): Debug stmts
2093         are ok.
2094         * graphite-sese-to-poly.c (graphite_stmt_p): Likewise.
2095         (try_generate_gimple_bb): Skip debug stmts when finding data refs.
2096         * sese.c (sese_build_liveouts_bb): Skip debug stmts.
2097         (sese_bad_liveouts_use): New.
2098         (sese_reset_debug_liveouts_bb): New.
2099         (sese_build_liveouts): Use it.
2100         (rename_variables_in_stmt): Reset debug stmts rather than creating
2101         new vars for them.
2102         (expand_scalar_variable_stmt): Likewise.
2103
2104 2009-11-18  Alexandre Oliva  <aoliva@redhat.com>
2105
2106         * df-scan.c (df_ref_create): Don't mark BB as dirty on debug insns.
2107         (df_ref_remove): Likewise.
2108
2109 2009-11-17  Jan Hubicka  <jh@suse.cz>
2110
2111         * ipa-struct-reorg.c (update_cgraph_with_malloc_call): Fix profile
2112         info.
2113
2114 2009-11-17  Eric Botcazou  <ebotcazou@adacore.com>
2115
2116         * toplev.c (process_options): Remove dead code.
2117         * doc/invoke.texi (-frename-registers): Mention -fpeel-loops.
2118
2119 2009-11-17  Rafael Avila de Espindola  <espindola@google.com>
2120
2121         * lto-symtab.c (lto_symtab_resolve_symbols): Always initialize the
2122         nodes.
2123
2124 2009-11-17  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2125
2126         PR tree-optimization/41857
2127         * tree-ssa-address.c (move_hint_to_base): Use void pointer to
2128         TYPE's address space instead of pointer to TYPE.
2129
2130 2009-11-17  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2131
2132         * reload.c (find_reloads_address): Fix typo.
2133
2134 2009-11-17  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2135
2136         * config/spu/spu.c (get_pic_reg): Use LAST_ARG_REGNUM as PIC
2137         registers in leaf functions if possible.
2138
2139 2009-11-17  Maxim Kuvyrkov  <maxim@codesourcery.com>
2140
2141         * config/m68k/m68k-devices.def: Add MCF5441x family.
2142
2143 2009-11-17  Jan Hubicka  <jh@suse.cz>
2144
2145         * cgraph.c (cgraph_update_edges_for_call_stmt_node): Do not access
2146         removed node.
2147         * cgraphunit.c (verify_cgraph_node): Verify frequencies for match.
2148
2149 2009-11-17  Uros Bizjak  <ubizjak@gmail.com>
2150
2151         * config/i386/predicates.md (x86_64_szext_general_operand): Do not
2152         nest ior expressions.
2153         (x86_64_szext_nonmemory_operand): Ditto.
2154         (call_insn_operand): Ditto.
2155
2156 2009-11-16  Alexandre Oliva  <aoliva@redhat.com>
2157
2158         * stmt.c (expand_asm_stmt): Get locus from stmt.
2159
2160 2009-11-16  Alexandre Oliva  <aoliva@redhat.com>
2161
2162         * tree-cfg.c (gimple_redirect_edge_and_branch) <case GIMPLE_ASM>:
2163         Create the decl label for the new dest block on demand.  Require
2164         a fallthrough edge if no asm labels were redirected.
2165
2166 2009-11-16  Uros Bizjak  <ubizjak@gmail.com>
2167
2168         * config/i386/i386.md (cbranchsi4): Use nonimmediate_operand for
2169         operand 1 predicate.
2170         (cstoresi4): Ditto for operand 2.
2171         (cbranch<mode>4): Macroize expander from cbranch{qi,hi,si,di,ti}4
2172         patterns using SDWIM mode iterator.
2173         (cstore<mode>4): Macroize expander from cstore{qi,hi,si,di}4 patterns
2174         using SWIM mode iterator.
2175         (cmpdi_1): Rename from cmpdi_1_rex64.
2176         (cmp<mode>_1): Macroize expander from cmp{si,di}_1 patterns using
2177         SWI48 mode iterator.
2178         (*cmp<mode>_1): Macroize insn from *cmp{qi,hi,si,di}_1_insn patterns
2179         using SWI mode iterator.
2180         (*cmp<mode>_ccno_1): Ditto from *cmp{qi,hi,si,di}_ccno_1.
2181         (*cmp<mode>_minus_1): Ditto from *cmp{qi,hi,si,di}_minus_1.
2182         (*cmpqi_ext_3_insn): Make private.
2183         (*cmpqi_ext_3_insn_rex64): Make private.
2184         (cmpstrnsi): Update for renamed cmpdi_1_rex64.
2185         * config/i386/predicates.md (cmpsi_operand): Remove.
2186
2187 2009-11-16  Paul Brook  <paul@codesourcery.com>
2188
2189         * doc/invoke.texi: Document ARM VFPv4 based FPUs.
2190         * config/arm/arm.c (all_fpus): Add VFPv4 entries.
2191
2192 2009-11-14  Jan Hubicka  <jh@suse.cz>
2193
2194         * cgraphbuild.c (compute_call_stmt_bb_frequency): Use proper
2195         ENTRY_BLOCK_PTR.
2196         * cgraph.c (cgraph_clone_edge): Avoid freq_scale 0 to completely
2197         zero out all callees.
2198         * cgraphunit.c (verify_cgraph_node): Verify cgraph nodes for
2199         frequency and count match.
2200         * ipa-inline.c (update_noncloned_frequencies): New function.
2201         (cgraph_clone_inlined_nodes): Use it.
2202         * tree-inline.c (copy_bb): Fix frequency scaling; output
2203         diagnostic on frequency mismatches to dump file.
2204         (initialize_cfun): Do not scale frequency; fix count scaling;
2205         initialize entry and exit block frequencies; copy profile info.
2206         (copy_cfg_body): Use frequency_scale as argument; fix count scaling.
2207         (copy_body): Use frequency_scale as argument.
2208         (expand_call_inline): Compute frequency scale and output diagnostic
2209         to dump file.
2210         (delete_unreachable_blocks_update_callgrah): Remove checking that
2211         has to be done after edge redirection.
2212         (tree_function_versioning): Update initialize_cfun and copy_body call.
2213
2214 2009-11-14  Jan Hubicka  <jh@suse.cz>
2215
2216         * cgraph.c (cgraph_release_function_body): Update use of
2217         ipa_transforms_to_apply.
2218         (cgraph_remove_node): Remove ipa_transforms_to_apply.
2219         * cgraph.h (struct cgraph_node): Add ipa_transforms_to_apply.
2220         * cgraphunit.c (save_inline_function_body): Clear ipa_transforms for
2221         copied body.
2222         (cgraph_materialize_clone): Remove original if dead.
2223         * lto-streamer-in.c (lto_read_body): Remove FIXME and
2224         ipa_transforms_to_apply hack.
2225         * function.h (struct function): Add ipa_transforms_to_apply.
2226         * ipa.c (cgraph_remove_unreachable_nodes): Handle dead clone originals.
2227         * tree-inline.c (copy_bb): Update sanity check.
2228         (initialize_cfun): Do not copy ipa_transforms_to_apply.
2229         (expand_call_inline): remove dead clone originals.
2230         (tree_function_versioning): Merge transformation queues.
2231         * passes.c (add_ipa_transform_pass): Remove.
2232         (execute_one_ipa_transform_pass): Update ipa_transforms_to_apply
2233         tracking.
2234         (execute_all_ipa_transforms): Update.
2235         (execute_one_pass): Update.
2236
2237 2009-11-14  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
2238
2239         PR target/21078, 21080
2240         * config/avr/avr.c (avr_return_addr_rtx): New function for
2241         builtin_return_address.
2242         (expand_prologue): Calculate stack usage.
2243         (avr_asm_function_end_prologue): Output stack size and offset label.
2244         * config/avr/avr.h (RETURN_ADDR_RTX): Replace.
2245         (machine_function): Add stack_usage.
2246         * config/avr/avr-protos.h (avr_return_addr_rtx): New function.
2247
2248 2009-11-14  Anatoly Sokolov  <aesok@post.ru>
2249
2250         * config/iq2000/iq2000.c (iq2000_function_value): Make static, add
2251         new 'outgoing' argument.
2252         (iq2000_libcall_value, iq2000_function_value_regno_p): New functions.
2253         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
2254         * config/iq2000/iq2000.h (FUNCTION_VALUE_REGNO_P): Redefine, use
2255         iq2000_function_value_regno_p.
2256         (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
2257         * config/iq2000/iq2000-protos.h (iq2000_function_value_regno_p):
2258         Declare.
2259
2260 2009-11-14  Richard Earnshaw  <rearnsha@arm.com>
2261
2262         PR target/42031
2263         * arm.md (adddi_sesidi_di): Place tied contraint first.
2264         (adddi_zesidi_di, subdi_di_zesidi, subdi_di_sesidi): Likewise
2265         (subdi_zesidi_di, subdi_sesidi_di): Likewise.
2266         (mulsi3_compare0, mulsi_compare0_scratch): Likewise.
2267         (mulsi3addsi, mulsi3addsi_compare0): Likewise.
2268         (mulsi3addsi_compare0_scratch, smulsi3_highpart_nov6): Likewise.
2269         (umulsi3_highpart_nov6, anddi_zesidi_di, anddi_sesdi_di): Likewise.
2270         (anddi_notdi_di, iordi_sesidi_di, xordi_sesidi_di): Likewise.
2271         (andsi_iorsi3_notsi, arm_ashldi3_1bit, arm_ashrdi3_1_bit): Likewise.
2272         (arm_lshrdi3_1bit, one_cmpldi2): Likewise.
2273
2274 2009-11-14  Uros Bizjak  <ubizjak@gmail.com>
2275
2276         * config/i386/predicates.md (call_register_no_elim_operand):
2277         New predicate.  Reject stack register as valid call operand
2278         for 32bit targets.
2279         (call_insn_operand): Use call_register_no_elim_operand.
2280
2281 2009-11-13  Richard Henderson  <rth@redhat.com>
2282
2283         * function.c (stack_protect_prologue): Don't bypass expand_expr
2284         for stack_protect_guard and guard_decl.
2285         (stack_protect_epilogue): Likewise.
2286
2287 2009-11-13  Jan Hubicka  <jh@suse.cz>
2288
2289         * ipa.c (function_and_variable_visibility): Clear COMDAT on functions
2290         when to PUBLIC is set.
2291
2292 2009-11-13  Jakub Jelinek  <jakub@redhat.com>
2293
2294         PR middle-end/42029
2295         * gimplify.c (gimplify_omp_atomic): Set DECL_GIMPLE_REG_P on
2296         tmp_load if needed.
2297
2298 2009-11-13  Uros Bizjak  <ubizjak@gmail.com>
2299
2300         PR target/41900
2301         * config/i386/i386.md (*call_pop_1, *call_1, *call_value_pop_1,
2302         *call_value_1): Use "lsm" as operand 1 constraint.
2303         * config/i386/predicates.md (call_insn_operand): Depend on
2304         index_register_operand to avoid %esp register.
2305
2306 2009-11-13  Uros Bizjak  <ubizjak@gmail.com>
2307
2308         Revert:
2309         2009-11-03  Uros Bizjak  <ubizjak@gmail.com>
2310
2311         PR target/41900
2312         * config/i386/i386.h (ix86_arch_indices) <X86_ARCH_CALL_ESP>: New.
2313         (TARGET_CALL_ESP): New define.
2314         * config/i386/i386.c (initial_ix86_tune_features): Initialize
2315         X86_ARCH_CALL_ESP.
2316         * config/i386/i386.md (*call_pop_1_esp, *call_1_esp,
2317         *call_value_pop_1_esp, *call_value_1_esp): Rename from *call_pop_1,
2318         *call_1, *call_value_pop_1 and *call_value_1.  Depend on
2319         TARGET_CALL_ESP.
2320         (*call_pop_1, *call_1, *call_value_pop_1, *call_value_1):
2321         New patterns, use "lsm" as operand 1 constraint.
2322         * config/i386/predicates.md (call_insn_operand): Depend on
2323         index_register_operand for !TARGET_CALL_ESP to avoid %esp register.
2324
2325 2009-11-13  Jason Merrill  <jason@redhat.com>
2326
2327         PR debug/26965
2328         * dwarf2out.c (gen_variable_die): Don't worry about DECL_COMDAT.
2329         Don't emit a second declaration at any scope.
2330
2331 2009-11-13  Andrey Belevantsev  <abel@ispras.ru>
2332
2333         PR rtl-optimization/41697
2334         * sel-sched-ir.c (fallthru_bb_of_jump): Bail out when a block with
2335         a conditional jump has a single successor.
2336
2337 2009-11-13  Andrey Belevantsev  <abel@ispras.ru>
2338
2339         * sched-deps.c (init_deps): New parameter lazy_reg_last.  Don't
2340         allocate reg_last when in case lazy_reg_last is true.
2341         (init_deps_reg_last): New.
2342         (free_deps): When max_reg is 0, this context is already freed.
2343         * sched-int.h (init_deps_reg_last): Export.
2344         (init_deps): Update prototype.
2345         * sched-ebb.c (schedule_ebb): Update the call to init_deps.
2346         * sched-rgn.c (sched_rgn_compute_dependencies): Likewise.
2347         * ddg.c (build_intra_loop_deps): Likewise.
2348         * sel-sched-ir.c (copy_deps_context, create_deps_context,
2349         reset_deps_context, deps_init_id): Likewise.
2350         (init_first_time_insn_data): Lazy allocate INSN_DEPS_CONTEXT.
2351         (free_data_for_scheduled_insn): New, break down from ...
2352         (free_first_time_insn_data): ... here.
2353         (has_dependence_p): Allocate reg_last now, when it is needed.
2354         (extend_insn_data): When maximal LUID is big enough, allocate
2355         per-insn data in smaller chunks.
2356         * sel-sched-ir.h (free_data_for_scheduled_insn): Export.
2357         * sel-sched.c (update_seqnos_and_stage): Free INSN_DEPS_CONTEXT
2358         in scheduled insn.
2359
2360 2009-11-13  Uros Bizjak  <ubizjak@gmail.com>
2361
2362         * config/i386/i386.md (call_value): Fix comment.
2363         (sibcall_value): Ditto.
2364
2365 2009-11-13  Eric Botcazou  <ebotcazou@adacore.com>
2366
2367         * config/i386/linux-unwind.h (x86_frob_update_context): New function.
2368         (MD_FROB_UPDATE_CONTEXT): Define.
2369
2370 2009-11-12  Eric Botcazou  <ebotcazou@adacore.com>
2371             Laurent GUERBY  <laurent@guerby.net>
2372
2373         * config/sparc/linux-unwind.h (sparc64_fallback_frame_state): Tidy.
2374         Do not schedule an %sp restore.  Compensate for RETURN_ADDR_OFFSET.
2375         (sparc_fallback_frame_state): Tidy.  Compensate for RETURN_ADDR_OFFSET.
2376
2377 2009-11-12  Jan Hubicka  <jh@suse.cz>
2378
2379         * ipa.c (function_and_variable_visibility): Fix my accidentail commit
2380         and clear DECL_COMMON on localized declarations.
2381
2382 2009-11-12  Bernd Schmidt  <bernd.schmidt@analog.com>
2383
2384         PR rtl-opt/38582
2385         * regrename.c (struct du_head): New structure; some elements moved
2386         from...
2387         (struct du_chain): ... this one.
2388         (open_chains, closed_chains): Now of type struct du_head *.
2389         (do_replace): Accept du_head argument, not du_chain.  All callers
2390         changed.  Modified code to match new data structures.
2391         (build_def_use): Return a list of du_head structures.  Modified code
2392         to match new data structures.
2393         (dump_def_use_chain): Accept du_head argument, not du_chain.  All
2394         callers changed.  Modified code to match new data structures.
2395         (merge_overlapping_regs): Accept du_head argument, not du_chain.  All
2396         callers changed.  Modified code to match new data structures.
2397         (scan_rtx_reg): Change type of this_regno and this_nregs to unsigned.
2398         Allocate a du_head structure as well as a du_chain when creating a
2399         new chain.  Modified other code to match new data structures.
2400
2401 2009-11-12  Jan Hubicka  <jh@suse.cz>
2402
2403         * cgraph.h (varpool_node_name): Declare.
2404         * cgraphunit.c (process_function_and_variable_attributes): Set
2405         force_output flag on used variables.
2406         * ipa.c (function_and_variable_visibility): Dump externally visible
2407         and needed variables.
2408         * varpool.c (varpool_node_name): Export.
2409         (decide_is_variable_needed): Check COMDAT for externally visible vars;
2410         ignore needed flag.
2411
2412 2009-11-12  Uros Bizjak  <ubizjak@gmail.com>
2413
2414         PR middle-end/41930
2415         * simplify-rtx.c (simplify_replace_fn_rtx) <case 'e'>: Skip
2416         processing if XEXP (x, i) is NULL.
2417
2418 2009-11-12  Jan Hubicka  <jh@suse.cz>
2419
2420         * ipa.c (function_and_variable_visibility): Verify that WEAK || COMMON
2421         imply PUBLIC || EXTERNAL.
2422
2423 2009-11-11  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
2424
2425         PR middle-end/41440
2426         * cfgexpand.c (expand_gimple_basic_block): Append NOP to a fallthru,
2427         single successor block, ending with jump created by RTL expander.
2428
2429 2009-11-11  Jan Hubicka  <jh@suse.cz>
2430
2431         PR middle-end/41729
2432         * ipa.c (function_and_variable_visibility): Do not privatize COMDAT
2433         and WEAK variables at -fwhole-program.
2434
2435         PR middle-end/41735
2436         * ipa.c (whole_program_function_and_variable_visility): COMDAT
2437         functions/variables are not needed even if they are externally visible.
2438
2439 2009-11-11  Jan Hubicka  <jh@suse.cz>
2440
2441         (patch by Richard Guenther)
2442         * lto-streamer-out.c (output_function): Output head of argument list
2443         earlier.
2444         * lto-streamer-in.c (input_function): Re-map arguments into merged
2445         declaration.
2446
2447 2009-11-11  Jan Hubicka  <jh@suse.cz>
2448
2449         * lto-cgraph.c: Include gcov-io.h
2450         (output_profile_summary): New function.
2451         (output_cgraph): Use it.
2452         (input_profile_summary): New function.
2453         (input_cgraph): Use it.
2454         * coverage.c (build_ctr_info_value): Use varpool; initalize
2455         DECL_ASSEMBLER_NAME.
2456         (create_coverage): Likewise.
2457         * tree-profile.c (tree_init_ic_make_global_vars): Likewise.
2458         (tree_init_edge_profiler): Likewise.
2459         * Makefile.in (lto-cgraph.o): Add dependency on gcov-io.h.
2460
2461 2009-11-11  Kai Tietz  <kai.tietz@onevision.com>
2462
2463         * config/i386/cygming.h (HANDLE_PRAGMA_PUSH_POP_MACRO): Removed.
2464         * c-pragma.c (def_pragma_macro_value): Likewise.
2465         (def_pragma_macro): Likewise.
2466         (pushed_macro_table): Likewise.
2467         (HANDLE_PRAGMA_PUSH_POP_MACRO): Remove guarded code.
2468         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): Removed.
2469
2470 2009-11-11  Basile Starynkevitch  <basile@starynkevitch.net>
2471
2472         * doc/plugins.texi (Registering custom attributes): section
2473         renamed as (Registering custom attributes or pragmas).
2474         Mentions custom attributes & pragmas, and c_register_pragma, with
2475         a small example.
2476         * doc/cpp.texi (Pragmas): Mentions that plugins can provide their
2477         pragmas.
2478         * doc/extend.texi (Function Attributes): Mentions that plugin can
2479         provide their attributes.
2480
2481 2009-11-11  Jon Beniston  <jon@beniston.com>
2482
2483         * config.gcc: Add lm32 elf and uclinux targets.
2484         * config/lm32: New directory.
2485         * config/lm32/lm32.c: New file.
2486         * config/lm32/lm32.h: New file.
2487         * config/lm32/lm32.md: New file.
2488         * config/lm32/lm32.opt: New file.
2489         * config/lm32/lm32-protos.h: New file.
2490         * config/lm32/constraints.md: New file.
2491         * config/lm32/predicates.md: New file.
2492         * config/lm32/sfp-machine.h: New file.
2493         * config/lm32/t-fprules-softfp: New file.
2494         * config/lm32/uclinux-elf.h: New file.
2495         * doc/invoke.texi: Document lm32 options.
2496         * doc/contrib.texi: Document lm32 porter.
2497         * doc/install.texi: Document lm32 targets.
2498
2499 2009-11-11  Martin Jambor  <mjambor@suse.cz>
2500
2501         PR lto/41932
2502         * ipa-prop.c (ipa_update_after_lto_read): Call
2503         ipa_check_create_node_params and ipa_check_create_edge_args.  Also
2504         call ipa_initialize_node_params instead of ipa_populate_param_decls.
2505
2506 2009-11-11  Daniel Jacobowitz  <dan@codesourcery.com>
2507
2508         * config/arm/arm.c (neon_vdup_constant, neon_make_constant): New.
2509         (neon_expand_vector_init): Use them.  Also handle non-constant
2510         vectors with identical elements and vectors with only one
2511         non-constant element.
2512         (arm_print_operand): Handle 'y' modifier.
2513         * config/arm/arm-protos.h (neon_make_constant): Declare.
2514         * config/arm/neon.md (neon_vdup_n<mode>): Split into two
2515         patterns.  Use VX instead of VDQW for the first one.  Allow
2516         a VFP alternative and V32 modes for the second one.
2517         * config/arm/neon.ml (shape_elt): Add Alternatives.
2518         (ops): Use Alternatives for vdup lane instructions.
2519         * config/arm/neon-testgen.ml (analyze_shape): Handle Alternatives.
2520         * config/arm/vec-common.md (mov<mode>): Use neon_make_constant.
2521
2522 2009-11-11  Daniel Jacobowitz  <dan@codesourcery.com>
2523
2524         * config/arm/neon.md (*neon_mov<mode>): Reject two non-register
2525         operands.
2526         (movti, mov<mode>): Call force_reg on one operand if required.
2527         * config/arm/vec-common.md (mov<mode>): Likewise.
2528
2529 2009-11-11  Daniel Jacobowitz  <dan@codesourcery.com>
2530
2531         * config/arm/arm.c (arm_override_options): Enable scheduling for
2532         Thumb-2.
2533
2534 2009-11-10  Eric Botcazou  <ebotcazou@adacore.com>
2535
2536         PR target/10127
2537         PR ada/20548
2538         * expr.h (anti_adjust_stack_and_probe): Declare.
2539         * explow.c (anti_adjust_stack_and_probe): Make global, add ADJUST_BACK
2540         parameter and rewrite head comment.
2541         (allocate_dynamic_stack_space): Adjust call to above function.
2542         * function.c (expand_function_end): Handle STACK_CHECK_MOVING_SP.
2543
2544         * tree.h (dwarf2out_args_size): Delete.
2545         * dwarf2out.c (dwarf2out_args_size): Make static and move around.
2546         (dwarf2out_args_size_adjust): Delete prototype and move around.
2547         (dwarf2out_frame_debug_expr): Do not record arg size adjustments for
2548         ACCUMULATE_OUTGOING_ARGS targets.
2549
2550 2009-11-10  Eric Botcazou  <ebotcazou@adacore.com>
2551
2552         * config/sparc/sparc.c (print_operand) <')'>: Test for a non-null
2553         DECL_SIZE of DECL_RESULT before evaluating it.
2554
2555 2009-11-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2556
2557         PR tree-optimization/41987
2558         * fold-const.c (const_binop): Avoid using fold_buildN().
2559
2560 2009-11-10  Martin Jambor  <mjambor@suse.cz>
2561
2562         * tree-pass.h (struct ipa_opt_pass_d): Added stmt_fixup field.
2563         (execute_all_ipa_stmt_fixups): Declare.
2564         * ipa-cp.c (pass_ipa_cp): Added stmt_fixup value.
2565         * ipa-inline.c (pass_ipa_inline): Likewise.
2566         * ipa-pure-const.c (pass_ipa_pure_cons): Likewise.
2567         * ipa-reference.c (pass_ipa_reference): Likewise.
2568         * ipa.c (pass_ipa_whole_program_visibility): Likewise.
2569         * lto-streamer-out.c (pass_ipa_lto_gimple_out): Likewise.
2570         (pass_ipa_lto_finish_out): Likewise.
2571         * lto-wpa-fixup.c (pass_ipa_lto_wpa_fixup): Likewise.
2572         * passes.c (execute_ipa_stmt_fixups): New function.
2573         (execute_all_ipa_stmt_fixups): New function.
2574         * lto-streamer-in.c (input_function): Call execute_all_ipa_stmt_fixups.
2575
2576 2009-11-10  Eric Botcazou  <ebotcazou@adacore.com>
2577
2578         PR ada/20548
2579         * explow.c (probe_stack_range): Fix typo.
2580         * config/sparc/sparc.md (probe_stack): New expander.
2581
2582 2009-11-09  Dave Korn  <dave.korn.cygwin@gmail.com>
2583
2584         * config/i386/cygwin.h (LINK_SPEC): Add -tsaware flag if !mno-cygwin.
2585
2586 2009-11-09  Jason Merrill  <jason@redhat.com>
2587
2588         * gdbinit.in (pgq): New function for printing gimple sequence.
2589
2590 2009-11-09  Paul Brook  <paul@codesourcery.com>
2591             Daniel Jacobowitz  <dan@codesourcery.com>
2592             Sandra Loosemore  <sandra@codesourcery.com>
2593
2594         * doc/extend.texi (Half-Precision): Update wording to reflect
2595         that there are now multiple -mfpu options that enable fp16
2596         hardware support.
2597         * doc/invoke.texi: Update list of ARM -mfpu= options.
2598         * config.gcc: Update ARM --with-fpu option list.
2599         * config/arm/arm.c (all_fpus): Add vfpv3-fp16, vfpv3-d16-fp16,
2600         vfpv3xd and vfpv3xd-fp16.
2601         (use_vfp_abi): New function.
2602         (aapcs_vfp_is_call_or_return_candidate): Avoid double precision regs
2603         when undesirable.
2604         (aapcs_vfp_is_return_candidate, aapcs_vfp_is_call_candidate,
2605         aapcs_vfp_allocate_return_reg): Use use_vfp_abi.
2606         (arm_rtx_costs_1, arm_size_rtx_costs, arm_fastmul_rtx_costs,
2607         arm_9e_rtx_costs): Only expect double-precision operations if the FPU
2608         provides them.
2609         (coproc_secondary_reload_class): Reload HFmode via GENERAL_REGS if no
2610         NEON.
2611         (arm_print_operand): Handle 'p' modifier.
2612         (arm_hard_regno_mode_ok): : Allow HFmode in VFP registers if
2613         TARGET_FP16.
2614         * config/arm/arm.h (TARGET_VFP_SINGLE, TARGET_VFP_DOUBLE): Define.
2615         (TARGET_FP16): Define.
2616         * config/arm/vfp.md: Disable double-precision patterns if the FPU
2617         does not provide them.
2618         (arm_movdi_vfp, thumb2_movdi_vfp): Use fcpys to move
2619         double-precision values on a single-precision FPU.
2620         (movdf_vfp, thumb2_movdf_vfp): Likewise.  Use "Dy" for
2621         double-precision constants.
2622         (movhf_vfp_neon): New pattern (was movhf_vfp).
2623         (movhf_vfp): Remove NEON instructions.
2624         * config/arm/constraints.md: Add new "Dy" constraint for
2625         double-precision constants.  Update description of "Dv".
2626         * config/arm/arm.md: Disable double-precision patterns if the FPU
2627         does not provide them
2628
2629 2009-11-09  Jakub Jelinek  <jakub@redhat.com>
2630
2631         * config/i386/i386.c (print_operand) <case 'D'>: Fix formatting.
2632         (print_operand) <case 'Y'>: Likewise.  Fix a pasto in operand lossage
2633         diagnostics.
2634
2635 2009-11-08  H.J. Lu  <hongjiu.lu@intel.com>
2636
2637         * collect2.c (main): Search PLUGIN_LD for plugin linker.
2638
2639         * configure.ac (--with-plugin-ld): New.  Default to ld.
2640         * configure: Regenerated.
2641         * config.in: Likewise.
2642
2643         * exec-tool.in (ORIGINAL_PLUGIN_LD_FOR_TARGET): New.
2644         (collect-ld): Use ORIGINAL_PLUGIN_LD_FOR_TARGET for -plugin.
2645
2646 2009-11-08  Jonathan Gray  <jsg@openbsd.org>
2647
2648         * config/openbsd-stdint.h: Change to reflect what
2649         c_common_nodes_and_builtins expects.
2650
2651 2009-11-08  Paolo Carlini  <paolo.carlini@oracle.com>
2652
2653         * builtins.c (apply_args_reg_offset): Remove commented out delaration.
2654
2655 2009-11-08  Jakub Jelinek  <jakub@redhat.com>
2656
2657         PR target/41985
2658         * config/i386/i386.c (get_some_local_dynamic_name): Don't assert
2659         function contains at least one local dynamic name.
2660         (print_operand) <case '&'>: Instead output operand lossage diagnostics
2661         here if that happens.
2662
2663 2009-11-08  Zbigniew Chamski  <zbigniew.chamski@gmail.com>
2664             Joern Rennecke  <amylaar@spamcop.net>
2665
2666         * cfgrtl.c (pass_free_cfg): Add pass name.
2667         * cgraphbuild.c (pass_build_cgraph_edges): Likewise.
2668         (pass_rebuild_cgraph_edges, pass_remove_cgraph_callee_edges): Likewise.
2669         * dce.c (pass_ud_rtl_dce, pass_fast_rtl_dce): Change pass name.
2670         * df-core.c (pass_df_initialize_no_opt): Likewise.
2671         * except.c (pass_rtl_eh): Likewise.
2672         * function.c (pass_init_function, pass_leaf_regs): Likewise.
2673         * gcse.c (pass_rtl_pre): Change pass name.
2674         * passes.c (pass_postreload): Add pass name.
2675         (make_pass_instance): Don't use duplicate-tracking logic for
2676         names starting with '*'.
2677         (next_pass_1): Assert that pass has a name.
2678         (register_one_dump_file): If there is an space in the name,
2679         skip past it.
2680         * predict.c (pass_strip_predict_hints): Add pass name.
2681         * reg-stack.c (pass_stack_regs): Likewise.
2682         * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
2683         * tree-cfg.c (pass_warn_function_return,
2684         pass_warn_function_noreturn): Add pass name.
2685         * tree-dfa.c (pass_referenced_vars): Likewise.
2686         * tree-optimize.c (pass_cleanup_cfg_post_optimizing):
2687         Fix whitespace before comment.
2688         (pass_fixup_cfg): Add pass name, fix whitespace before comment.
2689         (pass_init_datastructures): Add pass name.
2690         * tree-ssa-loop.c (pass_record_bounds): Likewise.
2691         * tree-ssa.c (pass_early_warn_uninitialized,
2692         pass_late_warn_uninitialized): Likewise.
2693         * tree.c (pass_ipa_free_lang_data): Likewise.
2694         * doc/passes.texi (pass manager): Document how to disambiguate
2695         pass names.
2696
2697 2009-11-08  Paolo Bonzini  <bonzini@gnu.org>
2698
2699         * df-problems.c: Fix documentation for forward simulation of LR.
2700         (df_simulate_one_insn_forwards): Use df_simulate_find_defs.
2701         (df_simulate_finalize_forwards): Remove.
2702         * df.h (df_simulate_finalize_forwards): Remove.
2703
2704 2009-11-08  Richard Guenther  <rguenther@suse.de>
2705
2706         * tree-ssa-structalias.c (build_succ_graph): Properly make
2707         variables escape if they are stored to anything.
2708
2709 2009-11-08  Richard Guenther  <rguenther@suse.de>
2710
2711         PR rtl-optimization/41928
2712         * loop-invariant.c (free_loop_data): If we didn't allocate
2713         loop data do not try to free it.
2714
2715 2009-11-07  Jason Merrill  <jason@redhat.com>
2716
2717         * tree.c (reconstruct_complex_type): Preserve attributes.
2718
2719 2009-11-07  Richard Guenther  <rguenther@suse.de>
2720
2721         * tree-ssa-structalias.c (build_succ_graph): Feed stores
2722         to anything only to variables that can take pointers.
2723         (get_constraint_for_ssa_var): Properly exclude full
2724         variables from expanding.
2725         (first_vi_for_offset): Avoid overflow in arithmetic.
2726         (first_or_preceding_vi_for_offset): Likewise.
2727         (count_num_arguments): Fix implementation.
2728         (gate_ipa_pta): Do not run when not optimizing.
2729
2730 2009-11-07  David Binderman <dcb314@hotmail.com>
2731
2732         * builtins.c (apply_args_size, expand_builtin_mathfn, expand_powi,
2733         expand_builtin_expect, maybe_emit_sprintf_chk_warning): Remove some
2734         set but not used variables.
2735         (apply_args_reg_offset): Comment out as unused.
2736         * calls.c (flags_from_decl_or_type): Likewise.
2737         * genautomata.c (check_regexp_units_distribution): Likewise.
2738
2739 2009-11-07  Uros Bizjak  <ubizjak@gmail.com>
2740
2741         * config/i386/sse.md (xop_pmacsww, xop_pmacssww, xop_pmacsdd,
2742         xop_pmacssdd, xop_pmacssdql, xop_pmacssdqh, xop_pmacsdql,
2743         *xop_pmacsdql_mem, xop_pmacsdqh, *xop_pmacsdqh_mem, xop_pmacsswd,
2744         xop_pmacswd, xop_pmadcsswd, xop_pmadcswd, xop_pcmov_<mode>,
2745         xop_pcmov_<mode>256, xop_pperm, xop_pperm_pack_v2di_v4si,
2746         xop_pperm_pack_v4si_v8hi, xop_pperm_pack_v8hi_v16qi): Compress
2747         operand alternatives.
2748
2749 2009-11-06  Michael Matz  <matz@suse.de>
2750
2751         PR middle-end/41963
2752         * tree-ssa-math-opts.c (execute_cse_reciprocals): Check all uses
2753         of a potential reciprocal to really be reciprocals.
2754
2755 2009-11-06  Jakub Jelinek  <jakub@redhat.com>
2756
2757         * config/i386/x86intrin.h: Include fma4intrin.h, xopintrin.h and
2758         lwpintrin.h after immintrin.h.
2759         * config/i386/fma4intrin.h (__v8sf, __v4df, __m256, __m256d): Remove
2760         typedefs.
2761
2762         PR middle-end/41935
2763         * c-common.c (fold_offsetof_1) <case ARRAY_REF>: Don't crash for VLAs
2764         or non-constant index, allow index one past the last element and
2765         allow exceeding array bound in arrays that might be used as flexible
2766         array members.
2767
2768 2009-11-05  Richard Henderson  <rth@redhat.com>
2769
2770         * config/i386/ia32intrin.h: Protect CRC32 builtins with __SSE4_2__.
2771
2772 2009-11-05  Paul Brook  <paul@codesourcery.com>
2773
2774         * config/arm/arm.c (arm_fp_model, arm_fpu_arch, arm_fpu_tune): Remove.
2775         (arm_fpu_desc): New.
2776         (all_fpus): Add FPU details.
2777         (fp_model_for_fpu): Remove.
2778         (arm_override_options): Set and use arm_fpu_desc and arm_fpu_attr.
2779         (arm_output_epilogue, arm_save_coproc_regs): Use TARGET_FPA_EMU2.
2780         (arm_file_start): Use arm_fpu_desc.
2781         * config/arm/arm.h (TARGET_FPA, TARGET_MAVERICK, TARGET_VFP,
2782         TARGET_VFPD32, TARGET_VFP3, TARGET_NEON_FP16, TARGET_NEON): Use
2783         arm_fpu_desc.
2784         (TARGET_FPA_EMU2): Define.
2785         (arm_fp_model, fputype, arm_fpu_tune): Remove.
2786         (vfp_reg_type, arm_fpu_desc): New.
2787         * config/arm/arm.md (attr fpu): Simplify.
2788         * config/arm/fpa.md (movxf_fpa): Use TARGET_FPA_EMU2.
2789         * config/arm/linux-elf.h (FPUTYPE_DEFAULT): Use string value.
2790         * config/arm/bpabi.h (FPUTYPE_DEFAULT): Use string value.
2791         * config/arm/netbsd-elf.h (FPUTYPE_DEFAULT): Use string value.
2792         * config/arm/vxworks.h (FPUTYPE_DEFAULT): Use string value.
2793
2794 2009-11-05  Michael Matz  <matz@suse.de>
2795
2796         * config/i386/i386.c (ix86_builtin_reciprocal): Remove dependency
2797         on TARGET_RECIP.
2798         * doc/invoke.texi (-mrecip): Clarify that we don't need -mrecip
2799         for 1/sqrtf.
2800
2801 2009-11-04  Jason Merrill  <jason@redhat.com>
2802
2803         PR c++/36912
2804         * varasm.c (initializer_constant_valid_p): A PLUS_EXPR
2805         or MINUS_EXPR of REAL_TYPE is not a valid constant initializer.
2806         (output_constant): Avoid crash after error.
2807
2808 2009-11-05  Martin Jambor  <mjambor@suse.cz>
2809
2810         * tree-sra.c (struct access): Changed comment of next_sibling field.
2811         (analyze_modified_params): Loop over accesses of a group rather than
2812         over all with the ame base, pass a common bitmap to
2813         walk_aliased_vdefs.
2814         (unmodified_by_ref_scalar_representative): Build link lists of
2815         accesses of a group.
2816         (splice_param_accesses): Likewise.
2817
2818 2009-11-04  Kenneth Zadeck  <zadeck@naturalbridge.com>
2819
2820         * df-scan.c (df-uses-record): Add case zero_extract of mem.
2821
2822 2009-11-04  Eric Botcazou  <ebotcazou@adacore.com>
2823
2824         PR target/10127
2825         PR ada/20548
2826         * config/i386/i386.md (probe_stack): New expander.
2827         (logical operation peepholes): Do not split stack checking probes.
2828
2829 2009-11-04  Harsha Jagasia  <harsha.jagasia@amd.com>
2830             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
2831
2832         * doc/invoke.texi (-mlwp): Add documentation.
2833         * doc/extend.texi (x86 intrinsics): Add LWP intrinsics.
2834         * config.gcc (i[34567]86-*-*): Include lwpintrin.h.
2835         (x86_64-*-*): Ditto.
2836         * config/i386/lwpintrin.h: New file, provide x86 compiler
2837         intrinisics for LWP.
2838         * config/i386/cpuid.h (bit_LWP): Define LWP bit.
2839         * config/i386/x86intrin.h: Add LWP check and lwpintrin.h.
2840         * config/i386/i386-c.c (ix86_target_macros_internal): Check
2841         ISA_FLAG for LWP.
2842         * config/i386/i386.h (TARGET_LWP): New macro for LWP.
2843         * config/i386/i386.opt (-mlwp): New switch for LWP support.
2844         * config/i386/i386.c (OPTION_MASK_ISA_LWP_SET): New.
2845         (OPTION_MASK_ISA_LWP_UNSET): New.
2846         (ix86_handle_option): Handle -mlwp.
2847         (isa_opts): Handle -mlwp.
2848         (enum pta_flags): Add PTA_LWP.
2849         (override_options): Add LWP support.
2850         (IX86_BUILTIN_LLWPCB16): New for LWP intrinsic.
2851         (IX86_BUILTIN_LLWPCB32): Ditto.
2852         (IX86_BUILTIN_LLWPCB64): Ditto.
2853         (IX86_BUILTIN_SLWPCB16): Ditto.
2854         (IX86_BUILTIN_SLWPCB32): Ditto.
2855         (IX86_BUILTIN_SLWPCB64): Ditto.
2856         (IX86_BUILTIN_LWPVAL16): Ditto.
2857         (IX86_BUILTIN_LWPVAL32): Ditto.
2858         (IX86_BUILTIN_LWPVAL64): Ditto.
2859         (IX86_BUILTIN_LWPINS16): Ditto.
2860         (IX86_BUILTIN_LWPINS32): Ditto.
2861         (IX86_BUILTIN_LWPINS64): Ditto.
2862         (enum  ix86_special_builtin_type): Add LWP intrinsic support.
2863         (builtin_description): Ditto.
2864         (ix86_init_mmx_sse_builtins): Ditto.
2865         (ix86_expand_special_args_builtin): Ditto.
2866         * config/i386/i386.md (UNSPEC_LLWP_INTRINSIC): Add new UNSPEC for
2867         LWP support.
2868         (UNSPEC_SLWP_INTRINSIC): Ditto.
2869         (UNSPECV_LWPVAL_INTRINSIC): Ditto.
2870         (UNSPECV_LWPINS_INTRINSIC): Ditto.
2871         (lwp_llwpcbhi1): New lwp pattern.
2872         (lwp_llwpcbsi1): Ditto.
2873         (lwp_llwpcbdi1): Ditto.
2874         (lwp_slwpcbhi1): Ditto.
2875         (lwp_slwpcbsi1): Ditto.
2876         (lwp_slwpcbdi1): Ditto.
2877         (lwp_lwpvalhi3): Ditto.
2878         (lwp_lwpvalsi3): Ditto.
2879         (lwp_lwpvaldi3): Ditto.
2880         (lwp_lwpinshi3): Ditto.
2881         (lwp_lwpinssi3): Ditto.
2882         (lwp_lwpinsdi3): Ditto.
2883
2884 2009-11-04  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2885             Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
2886
2887         PR rtl-opt/41833
2888         * simplify-rtx.c (simplify_binary_operation_1): Simplify vec_select of
2889         a vec_duplicate.
2890
2891 2009-11-04  Richard Guenther  <rguenther@suse.de>
2892             Rafael Avila de Espindola  <espindola@google.com>
2893
2894         * gcc.c (process_command): Handle arguments name@offset.
2895
2896 2009-11-04  Harsha Jagasia  <harsha.jagasia@amd.com>
2897             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
2898
2899         * config.gcc (i[34567]86-*-*): Include xopintrin.h.
2900         (x86_64-*-*): Ditto.
2901         * config/i386/xopintrin.h: New file, provide common x86 compiler
2902         intrinisics for XOP.
2903         * config/i386/cpuid.h (bit_XOP): Define XOP bit.
2904         * config/i386/x86intrin.h: Add XOP check and xopintrin.h.
2905         * config/i386/i386-c.c(ix86_target_macros_internal): Check
2906         ISA_FLAG for XOP.
2907         * config/i386/i386.h(TARGET_XOP): New macro for XOP.
2908         * config/i386/i386.opt (-mxop): New switch for XOP support.
2909         * config/i386/i386.md (UNSPEC_XOP_UNSIGNED_CMP)
2910         (UNSPEC_XOP_TRUEFALSE)
2911         (UNSPEC_XOP_PERMUTE)
2912         (UNSPEC_FRCZ): Add new UNSPEC for XOP support.
2913         (PPERM_*): New constants for vpperm instruction.
2914         (xop_pcmov_<mode>): Add XOP conditional mov instructions.
2915         * config/i386/i386.c (OPTION_MASK_ISA_XOP_SET): New.
2916         (OPTION_MASK_ISA_XOP_UNSET): New.
2917         (OPTION_MASK_ISA_XOP_UNSET): Change definition to depend on XOP.
2918         (ix86_handle_option): Handle -mxop.
2919         (isa_opts): Handle -mxop.
2920         (enum pta_flags): Add PTA_XOP.
2921         (override_options): Add XOP support.
2922         (print_operand): Add code for XOP compare instructions.
2923         (ix86_expand_sse_movcc): Extend for XOP conditional move instruction.
2924         (ix86_expand_int_vcond): Extend for XOP compare instruction.
2925
2926         (IX86_BUILTIN_VPCMOV): New for XOP intrinsic.
2927         (IX86_BUILTIN_VPCMOV_V2DI): Ditto.
2928         (IX86_BUILTIN_VPCMOV_V4SI): Ditto.
2929         (IX86_BUILTIN_VPCMOV_V8HI): Ditto.
2930         (IX86_BUILTIN_VPCMOV_V16QI): Ditto.
2931         (IX86_BUILTIN_VPCMOV_V4SF): Ditto.
2932         (IX86_BUILTIN_VPCMOV_V2DF): Ditto.
2933
2934         (IX86_BUILTIN_VPCMOV256): Ditto.
2935         (IX86_BUILTIN_VPCMOV_V4DI256): Ditto.
2936         (IX86_BUILTIN_VPCMOV_V8SI256): Ditto.
2937         (IX86_BUILTIN_VPCMOV_V16HI256): Ditto.
2938         (IX86_BUILTIN_VPCMOV_V32QI256): Ditto.
2939         (IX86_BUILTIN_VPCMOV_V8SF256): Ditto.
2940         (IX86_BUILTIN_VPCMOV_V4DF256): Ditto.
2941
2942         (IX86_BUILTIN_VPPERM): Ditto.
2943
2944         (IX86_BUILTIN_VPMACSSWW): Ditto.
2945         (IX86_BUILTIN_VPMACSWW): Ditto.
2946         (IX86_BUILTIN_VPMACSSWD): Ditto.
2947         (IX86_BUILTIN_VPMACSWD): Ditto.
2948         (IX86_BUILTIN_VPMACSSDD): Ditto.
2949         (IX86_BUILTIN_VPMACSDD): Ditto.
2950         (IX86_BUILTIN_VPMACSSDQL): Ditto.
2951         (IX86_BUILTIN_VPMACSSDQH): Ditto.
2952         (IX86_BUILTIN_VPMACSDQL): Ditto.
2953         (IX86_BUILTIN_VPMACSDQH): Ditto.
2954         (IX86_BUILTIN_VPMADCSSWD): Ditto.
2955         (IX86_BUILTIN_VPMADCSWD): Ditto.
2956
2957         (IX86_BUILTIN_VPHADDBW): Ditto.
2958         (IX86_BUILTIN_VPHADDBD): Ditto.
2959         (IX86_BUILTIN_VPHADDBQ): Ditto.
2960         (IX86_BUILTIN_VPHADDWD): Ditto.
2961         (IX86_BUILTIN_VPHADDWQ): Ditto.
2962         (IX86_BUILTIN_VPHADDDQ): Ditto.
2963         (IX86_BUILTIN_VPHADDUBW): Ditto.
2964         (IX86_BUILTIN_VPHADDUBD): Ditto.
2965         (IX86_BUILTIN_VPHADDUBQ): Ditto.
2966         (IX86_BUILTIN_VPHADDUWD): Ditto.
2967         (IX86_BUILTIN_VPHADDUWQ): Ditto.
2968         (IX86_BUILTIN_VPHADDUDQ): Ditto.
2969         (IX86_BUILTIN_VPHSUBBW): Ditto.
2970         (IX86_BUILTIN_VPHSUBWD): Ditto.
2971         (IX86_BUILTIN_VPHSUBDQ): Ditto.
2972
2973         (IX86_BUILTIN_VPROTB): Ditto.
2974         (IX86_BUILTIN_VPROTW): Ditto.
2975         (IX86_BUILTIN_VPROTD): Ditto.
2976         (IX86_BUILTIN_VPROTQ): Ditto.
2977         (IX86_BUILTIN_VPROTB_IMM): Ditto.
2978         (IX86_BUILTIN_VPROTW_IMM): Ditto.
2979         (IX86_BUILTIN_VPROTD_IMM): Ditto.
2980         (IX86_BUILTIN_VPROTQ_IMM): Ditto.
2981
2982         (IX86_BUILTIN_VPSHLB): Ditto.
2983         (IX86_BUILTIN_VPSHLW): Ditto.
2984         (IX86_BUILTIN_VPSHLD): Ditto.
2985         (IX86_BUILTIN_VPSHLQ): Ditto.
2986         (IX86_BUILTIN_VPSHAB): Ditto.
2987         (IX86_BUILTIN_VPSHAW): Ditto.
2988         (IX86_BUILTIN_VPSHAD): Ditto.
2989         (IX86_BUILTIN_VPSHAQ): Ditto.
2990
2991         (IX86_BUILTIN_VFRCZSS): Ditto.
2992         (IX86_BUILTIN_VFRCZSD): Ditto.
2993         (IX86_BUILTIN_VFRCZPS): Ditto.
2994         (IX86_BUILTIN_VFRCZPD): Ditto.
2995         (IX86_BUILTIN_VFRCZPS256): Ditto.
2996         (IX86_BUILTIN_VFRCZPD256): Ditto.
2997
2998         (IX86_BUILTIN_VPCOMEQUB): Ditto.
2999         (IX86_BUILTIN_VPCOMNEUB): Ditto.
3000         (IX86_BUILTIN_VPCOMLTUB): Ditto.
3001         (IX86_BUILTIN_VPCOMLEUB): Ditto.
3002         (IX86_BUILTIN_VPCOMGTUB): Ditto.
3003         (IX86_BUILTIN_VPCOMGEUB): Ditto.
3004         (IX86_BUILTIN_VPCOMFALSEUB): Ditto.
3005         (IX86_BUILTIN_VPCOMTRUEUB): Ditto.
3006
3007         (IX86_BUILTIN_VPCOMEQUW): Ditto.
3008         (IX86_BUILTIN_VPCOMNEUW): Ditto.
3009         (IX86_BUILTIN_VPCOMLTUW): Ditto.
3010         (IX86_BUILTIN_VPCOMLEUW): Ditto.
3011         (IX86_BUILTIN_VPCOMGTUW): Ditto.
3012         (IX86_BUILTIN_VPCOMGEUW): Ditto.
3013         (IX86_BUILTIN_VPCOMFALSEUW): Ditto.
3014         (IX86_BUILTIN_VPCOMTRUEUW): Ditto.
3015
3016         (IX86_BUILTIN_VPCOMEQUD): Ditto.
3017         (IX86_BUILTIN_VPCOMNEUD): Ditto.
3018         (IX86_BUILTIN_VPCOMLTUD): Ditto.
3019         (IX86_BUILTIN_VPCOMLEUD): Ditto.
3020         (IX86_BUILTIN_VPCOMGTUD): Ditto.
3021         (IX86_BUILTIN_VPCOMGEUD): Ditto.
3022         (IX86_BUILTIN_VPCOMFALSEUD): Ditto.
3023         (IX86_BUILTIN_VPCOMTRUEUD): Ditto.
3024
3025         (IX86_BUILTIN_VPCOMEQUQ): Ditto.
3026         (IX86_BUILTIN_VPCOMNEUQ): Ditto.
3027         (IX86_BUILTIN_VPCOMLTUQ): Ditto.
3028         (IX86_BUILTIN_VPCOMLEUQ): Ditto.
3029         (IX86_BUILTIN_VPCOMGTUQ): Ditto.
3030         (IX86_BUILTIN_VPCOMGEUQ): Ditto.
3031         (IX86_BUILTIN_VPCOMFALSEUQ): Ditto.
3032         (IX86_BUILTIN_VPCOMTRUEUQ): Ditto.
3033
3034         (IX86_BUILTIN_VPCOMEQB): Ditto.
3035         (IX86_BUILTIN_VPCOMNEB): Ditto.
3036         (IX86_BUILTIN_VPCOMLTB): Ditto.
3037         (IX86_BUILTIN_VPCOMLEB): Ditto.
3038         (IX86_BUILTIN_VPCOMGTB): Ditto.
3039         (IX86_BUILTIN_VPCOMGEB): Ditto.
3040         (IX86_BUILTIN_VPCOMFALSEB): Ditto.
3041         (IX86_BUILTIN_VPCOMTRUEB): Ditto.
3042
3043         (IX86_BUILTIN_VPCOMEQW): Ditto.
3044         (IX86_BUILTIN_VPCOMNEW): Ditto.
3045         (IX86_BUILTIN_VPCOMLTW): Ditto.
3046         (IX86_BUILTIN_VPCOMLEW): Ditto.
3047         (IX86_BUILTIN_VPCOMGTW): Ditto.
3048         (IX86_BUILTIN_VPCOMGEW): Ditto.
3049         (IX86_BUILTIN_VPCOMFALSEW): Ditto.
3050         (IX86_BUILTIN_VPCOMTRUEW): Ditto.
3051
3052         (IX86_BUILTIN_VPCOMEQD): Ditto.
3053         (IX86_BUILTIN_VPCOMNED): Ditto.
3054         (IX86_BUILTIN_VPCOMLTD): Ditto.
3055         (IX86_BUILTIN_VPCOMLED): Ditto.
3056         (IX86_BUILTIN_VPCOMGTD): Ditto.
3057         (IX86_BUILTIN_VPCOMGED): Ditto.
3058         (IX86_BUILTIN_VPCOMFALSED): Ditto.
3059         (IX86_BUILTIN_VPCOMTRUED): Ditto.
3060
3061         (IX86_BUILTIN_VPCOMEQQ): Ditto.
3062         (IX86_BUILTIN_VPCOMNEQ): Ditto.
3063         (IX86_BUILTIN_VPCOMLTQ): Ditto.
3064         (IX86_BUILTIN_VPCOMLEQ): Ditto.
3065         (IX86_BUILTIN_VPCOMGTQ): Ditto.
3066         (IX86_BUILTIN_VPCOMGEQ): Ditto.
3067         (IX86_BUILTIN_VPCOMFALSEQ): Ditto.
3068         (IX86_BUILTIN_VPCOMTRUEQ): Ditto.
3069
3070         (enum multi_arg_type): New enum for describing the various XOP
3071         intrinsic argument types.
3072         (bdesc_multi_arg): New table for XOP intrinsics.
3073         (ix86_init_mmx_sse_builtins): Add XOP intrinsic support.
3074         (ix86_expand_multi_arg_builtin): New function for creating XOP
3075         intrinsics.
3076
3077         * config/i386/sse.md (sserotatemax): New mode attribute for XOP.
3078         (xop_pmacsww): Ditto.
3079         (xop_pmacssww): Ditto.
3080         (xop_pmacsdd): Ditto.
3081         (xop_pmacssdd): Ditto.
3082         (xop_pmacssdql): Ditto.
3083         (xop_pmacssdqh): Ditto.
3084         (xop_pmacsdql): Ditto.
3085         (xop_pmacsdql_mem): Ditto.
3086         (xop_mulv2div2di3_low): Ditto.
3087         (xop_pmacsdqh): Ditto.
3088         (xop_pmacsdqh_mem): Ditto.
3089         (xop_mulv2div2di3_high): Ditto.
3090         (xop_pmacsswd): Ditto.
3091         (xop_pmacswd): Ditto.
3092         (xop_pmadcsswd): Ditto.
3093         (xop_pmadcswd): Ditto.
3094         (xop_pcmov_<mode>): Ditto.
3095         (xop_pcmov_<mode>256): Ditto.
3096         (xop_phaddbw): Ditto.
3097         (xop_phaddbd): Ditto.
3098         (xop_phaddbq): Ditto.
3099         (xop_phaddwd): Ditto.
3100         (xop_phaddwq): Ditto.
3101         (xop_phadddq): Ditto.
3102         (xop_phaddubw): Ditto.
3103         (xop_phaddubd): Ditto.
3104         (xop_phaddubq): Ditto.
3105         (xop_phadduwd): Ditto.
3106         (xop_phadduwq): Ditto.
3107         (xop_phaddudq): Ditto.
3108         (xop_phsubbw): Ditto.
3109         (xop_phsubwd): Ditto.
3110         (xop_phsubdq): Ditto.
3111         (xop_pperm): Ditto.
3112         (rotl<mode>3): Ditto.
3113         (rotr<mode>3): Ditto.
3114         (xop_rotl<mode>3): Ditto.
3115         (xop_rotr<mode>3): Ditto.
3116         (vrotr<mode>3): Ditto.
3117         (vrotl<mode>3): Ditto.
3118         (xop_vrotl<mode>3): Ditto.
3119         (vlshr<mode>3): Ditto.
3120         (vashr<mode>3): Ditto.
3121         (vashl<mode>3
3122         (xop_ashl<mode>3): Ditto.
3123         (xop_lshl<mode>3): Ditto.
3124         (ashlv16qi3): Ditto.
3125         (lshlv16qi3): Ditto.
3126         (ashrv16qi3): Ditto.
3127         (ashrv2di3): Ditto.
3128         (xop_frcz<mode>2): Ditto.
3129         (xop_vmfrcz<mode>2): Ditto.
3130         (xop_frcz<mode>2256): Ditto.
3131         (xop_maskcmp<mode>3): Ditto.
3132         (xop_maskcmp_uns<mode>3): Ditto.
3133         (xop_maskcmp_uns2<mode>3): Ditto.
3134         (xop_pcom_tf<mode>3): Ditto.
3135
3136         * doc/invoke.texi (-mxop): Add documentation.
3137         * doc/extend.texi (x86 intrinsics): Add XOP intrinsics.
3138
3139 2009-11-03  Mark Mitchell  <mark@codesourcery.com>
3140
3141         PR driver/11810
3142         * gcc.c (SWITCHES_NEED_SPACES): Define to "o".
3143         * config/alpha/osf.h (SWITCHES_NEED_SPACES): Remove here.
3144         * config/mips/iris.h (SWITCHES_NEED_SPACES): Remove here.
3145
3146 2009-11-04  Richard Earnshaw  <rearnsha@arm.com>
3147
3148         PR target/40835
3149         * arm.md (peephole2 patterns for move and compare): New.
3150
3151 2009-11-04  Nick Clifton  <nickc@redhat.com>
3152
3153         * defaults.h (CONSTANT_ADDRESS_P): Provide a default definition.
3154         Make sure that it does not allow CONST_DOUBLEs.
3155         * doc/tm.texi (CONSTANT_ADDRESS_P): Update description.
3156         * config/avr/avr.h (CONSTANT_ADDRESS_P): Delete.
3157         * config/bfin/bfin.h (CONSTANT_ADDRESS_P): Delete.
3158         * config/cris/cris.h (CONSTANT_ADDRESS_P): Delete.
3159         * config/fr30/fr30.h (CONSTANT_ADDRESS_P): Delete.
3160         * config/frv/frv.h (CONSTANT_ADDRESS_P): Delete.
3161         * config/m32c/m32c.h (CONSTANT_ADDRESS_P): Delete.
3162         * config/m68hc11/m68hc11.h (CONSTANT_ADDRESS_P): Delete.
3163         * config/mep/mep.h (CONSTANT_ADDRESS_P): Delete.
3164         * config/mn10300/mn10300.h (CONSTANT_ADDRESS_P): Delete.
3165         * config/moxie/moxie.h (CONSTANT_ADDRESS_P): Delete.
3166         * config/pdp11/pdp11.h (CONSTANT_ADDRESS_P): Delete.
3167         * config/picochip/picochip.h (CONSTANT_ADDRESS_P): Delete.
3168         * config/score/score.h (CONSTANT_ADDRESS_P): Delete.
3169         * config/stormy16/stormy16.h (CONSTANT_ADDRESS_P): Delete.
3170
3171 2009-11-04  Richard Guenther  <rguenther@suse.de>
3172
3173         PR tree-optimization/41919
3174         * tree-vrp.c (test_for_singularity): Properly compare values.
3175
3176 2009-11-04  Revital Eres  <eres@il.ibm.com>
3177
3178         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
3179         Consider peeling for alignment only for stores and remove
3180         redundant assignment.
3181
3182 2009-11-04  Maxim Kuvyrkov  <maxim@codesourcery.com>
3183
3184         PR target/41302
3185         * config/m68k/m68k.c (m68k_reg_present_p): New static function.
3186         (m68k_ok_for_sibcall_p): Handle different result return locations.
3187
3188 2009-11-04  Richard Guenther  <rguenther@suse.de>
3189
3190         * c-opts.c (c_common_post_options): Move LTO option processing
3191         code ...
3192         * opts.c (decode_options): ... here.
3193
3194 2009-11-04  Jakub Jelinek  <jakub@redhat.com>
3195
3196         * c-common.c (fold_offsetof_1): Use %wd instead of
3197         HOST_WIDE_INT_PRINT_DEC.
3198
3199 2009-11-04  Maciej W. Rozycki  <macro@linux-mips.org>
3200
3201         * config/vax/linux.h (TARGET_OS_CPP_BUILTINS): Don't define
3202         __pic__ or __PIC__.
3203
3204 2009-11-04  Maciej W. Rozycki  <macro@linux-mips.org>
3205
3206         * config.gcc (vax-*-linux*): Keep the original contents of
3207         tmake_file while adding vax/t-linux.
3208
3209 2009-11-03  Eric Botcazou  <ebotcazou@adacore.com>
3210
3211         PR target/10127
3212         PR ada/20548
3213         * expr.h (STACK_CHECK_PROBE_INTERVAL): Delete.
3214         (STACK_CHECK_PROBE_INTERVAL_EXP): New macro.
3215         (STACK_CHECK_MOVING_SP): Likewise.
3216         * system.h (STACK_CHECK_PROBE_INTERVAL): Poison it.
3217         * doc/tm.texi (Stack Checking): Delete STACK_CHECK_PROBE_INTERVAL.
3218         Document STACK_CHECK_PROBE_INTERVAL_EXP and STACK_CHECK_MOVING_SP.
3219         * doc/md.texi (Standard Pattern Names): Tweak entry of CHECK_STACK.
3220         Document PROBE_STACK.
3221         * explow.c (anti_adjust_stack_and_probe): New function.
3222         (allocate_dynamic_stack_space): Do not directly allocate space if
3223         STACK_CHECK_MOVING_SP, instead invoke above function.
3224         (emit_stack_probe): Handle probe_stack insn.
3225         (PROBE_INTERVAL): New macro.
3226         (STACK_GROW_OPTAB): Likewise.
3227         (STACK_GROW_OFF): Likewise.
3228         (probe_stack_range): Use Pmode and memory_address consistently.  Fix
3229         loop condition in the small constant case.  Rewrite in the general
3230         case to be immune to wraparounds.  Make sure the address of probes
3231         is valid.  Try to use [base + disp] addressing mode if possible.
3232         * ira.c (setup_eliminable_regset): Set frame_pointer_needed if stack
3233         checking is enabled and STACK_CHECK_MOVING_SP.
3234         * rtlanal.c (may_trap_p_1) <MEM>: If stack checking is enabled,
3235         return 1 for volatile references to the stack pointer.
3236         * tree.c (build_common_builtin_nodes): Do not set ECF_NOTHROW on
3237         __builtin_alloca if stack checking is enabled.
3238         * unwind-dw2.c (uw_identify_context): Take into account whether the
3239         context is that of a signal frame or not.
3240         * config/i386/linux.h (STACK_CHECK_MOVING_SP): Define to 1.
3241         * config/i386/linux64.h (STACK_CHECK_MOVING_SP): Likewise.
3242
3243 2009-11-03  Jakub Jelinek  <jakub@redhat.com>
3244
3245         PR rtl-optimization/41917
3246         * rtlanal.c (num_sign_bit_copies1) <case UMOD>: If sign bit of second
3247         operand isn't known to be 0, return 1.
3248
3249 2009-11-03  Richard Sandiford  <rdsandiford@googlemail.com>
3250
3251         * config/mips/mips.md: Fix typos.
3252
3253 2009-11-03  Richard Sandiford  <rdsandiford@googlemail.com>
3254
3255         * doc/invoke.texi: Fix typo.
3256
3257 2009-11-03  Paul Brook  <paul@codesourcery.com>
3258
3259         * config/arm/neon.ml (vectype): Add T_floatSF.
3260         (string_of_vectype): Ditto.
3261         * config/arm/neon-gen.ml (signed_ctype): Add T_floatSF.
3262         (deftypes): Use float for float32_t.
3263         * config/arm/arm_neon.h: Regenerate.
3264
3265 2009-11-03  Nick Clifton  <nickc@redhat.com>
3266             Kevin Buettner  <kevinb@redhat.com>
3267
3268         * config/rx/predicates.md (rx_store_multiple_vector): Reverse
3269         order of expected registers.
3270         (rx_load_multiple_vector): Likewise.
3271         (rx_rtsd_vector): Likewise.
3272         * config/rx/rx.c (rx_cpu_type): New variable.
3273         (rx_print_operand): Fix bug printing 64-bit constant values.
3274         (rx_emit_stack_pushm): Reverse order of pushed registers.
3275         (gen_rx_store_vector): Likewise.
3276         (is_fast_interrupt_func): Only accept "fast_interrupt" as the
3277         attribute name.
3278         (is_exception_func): Rename to is_interrupt_func and only accept
3279         "interrupt" as the attribute name.
3280         (rx_get_stack_layout): Use new function name.
3281         (rx_func_attr_inlinable): Likewise.
3282         (rx_attribute_table): Remove "exception".
3283         (rx_expand_prologue): If necessary push the accumulator register
3284         in the prologue of interrupt functions.
3285         (rx_expand_epilogue): If necessary pop the accumulator.
3286         (rx_builtins): Add RX_BUILTIN_MVTIPL.
3287         (rx_expand_builtin_stz): Remove.
3288         (rx_expand_builtin_mvtipl): New function.
3289         (rx_init_builtins): Handle RX_BUILTIN_MVTIPL.
3290         (rx_expand_builtin): Likewise.
3291         (rx_enable_fpu): New variable.
3292         (rx_handle_option): Handle -fpu, -nofpu, -mcpu and -patch.
3293         * config/rx/rx.h (TARGET_CPU_CPP_BUILTINS): Assert machine based
3294         on rx_cpu_type.  Define __RX_FPU_INSNS__ if FPU insns are allowed.
3295         (enum rx_cpu_types): Define.
3296         (ASM_SPEC): Pass -m32bit-doubles on to assembler.
3297         (INCOMING_FRAME_SP_OFFSET): Define.
3298         (ARG_POINTER_CFA_OFFSET): Define.
3299         (FRAME_POINTER_CFA_OFFSET): Define.
3300         (OVERRIDE_OPTIONS): Enable fast math if RX FPU insns are enabled.
3301         (ALLOW_RX_FPU_INSNS): Define.
3302         * config/rx/rx.md: Test ALLOW_RX_FPU_INSNS instead of
3303         fast_math_flags_set_p.
3304         (UNSPEC_BUILTIN_MVTIPL): Define.
3305         (revl): Rename to bswapsi2.
3306         (bswaphi2): New pattern.
3307         (mvtachi): Mark as volatile because it uses a register unknown to GCC.
3308         (mvtaclo): Likewise.
3309         (racw): Likewise.
3310         (mvtc): Remove clobber of cc0.
3311         (mvtcp): Delete.
3312         (opecp): Delete.
3313         * config/rx/rx.opt (mieee): Remove.
3314         (fpu): Add.
3315         (nofpu): Add.
3316         (mcpu=): Add.
3317         (patch=): Add.
3318         (msave-acc-in-interrupts): Add.
3319         * config/rx/t-rx (MULTILIB_OPTIONS): Change default to 64bit doubles.
3320         (MULTILIB_DIRS): Likewise.
3321         (MULTILIB_MATCHES): Treat -fpu as an alias for -m32bit-doubles.
3322         * doc/extend.texi: Remove description of "exception" function
3323         attribute.
3324         * doc/invoke.texi: Document -fpu, -nofpu, -mcpu=, -patch= and
3325         -msave-acc-in-interrupts options.
3326
3327 2009-11-03  Richard Guenther  <rguenther@suse.de>
3328
3329         * c-common.c (fold_offsetof_1): Use HOST_WIDE_INT_PRINT_DEC.
3330
3331 2009-11-03  Dodji Seketeli  <dodji@redhat.com>
3332
3333         PR c++/38699
3334         * c-common.c (fold_offsetof_1): Issue errors when the member
3335         designator of the offsetof expression is not legitimate.
3336
3337 2009-11-03  Uros Bizjak  <ubizjak@gmail.com>
3338
3339         * config/i386/i386.md (*call_value_1_rex64_ms_sysv): Use register
3340         names instead of numerical constants.
3341         (sse_prologue_save): Ditto.
3342         (*sse_prologue_save_insn): Ditto.
3343
3344 2009-11-03  Uros Bizjak  <ubizjak@gmail.com>
3345
3346         PR target/41900
3347         * config/i386/i386.h (ix86_arch_indices) <X86_ARCH_CALL_ESP>: New.
3348         (TARGET_CALL_ESP): New define.
3349         * config/i386/i386.c (initial_ix86_tune_features): Initialize
3350         X86_ARCH_CALL_ESP.
3351         * config/i386/i386.md (*call_pop_1_esp, *call_1_esp,
3352         *call_value_pop_1_esp, *call_value_1_esp): Rename from *call_pop_1,
3353         *call_1, *call_value_pop_1 and *call_value_1.  Depend on
3354         TARGET_CALL_ESP.
3355         (*call_pop_1, *call_1, *call_value_pop_1, *call_value_1):
3356         New patterns, use "lsm" as operand 1 constraint.
3357         * config/i386/predicates.md (call_insn_operand): Depend on
3358         index_register_operand for !TARGET_CALL_ESP to avoid %esp register.
3359
3360 2009-11-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
3361
3362         PR tree-optimization/41857
3363         * tree-flow.h (rewrite_use_address): Add BASE_HINT argument.
3364         * tree-ssa-loop-ivopts.c (rewrite_use_address): Pass base hint
3365         to create_mem_ref.
3366         * tree-ssa-address.c (move_hint_to_base): New function.
3367         (most_expensive_mult_to_index): Add TYPE argument.  Use mode and
3368         address space associated with TYPE.
3369         (addr_to_parts): Add TYPE and BASE_HINT arguments.  Pass TYPE to
3370         most_expensive_mult_to_index.  Call move_hint_to_base.
3371         (create_mem_ref): Add BASE_HINT argument.  Pass BASE_HINT and
3372         TYPE to addr_to_parts.
3373
3374 2009-11-02  Martin Jambor  <mjambor@suse.cz>
3375
3376         PR tree-optimization/41750
3377         * tree-sra.c (analyze_modified_params): Loop over all
3378         representatives of components of a parameter.
3379
3380 2009-11-02  Jakub Jelinek  <jakub@redhat.com>
3381
3382         PR tree-optimization/41841
3383         * ipa-struct-reorg.c (build_data_structure): Don't attempt to look at
3384         local variables of not yet materialized clones.
3385
3386         PR debug/41893
3387         * cfgexpand.c (expand_debug_expr): Don't attempt to create DECL_RTL
3388         for a VOIDmode variable.
3389
3390         PR c++/41774
3391         * c-pragma.c (visstack): Change into vector of ints rather than
3392         enum symbol_visibility.
3393         (push_visibility): Add kind argument, push default_visibility together
3394         with kind.
3395         (pop_visibility): Add kind argument, return true if successful, fail
3396         if visibility stack is empty or if stack top is of different kind.
3397         (handle_pragma_visibility): Don't check length of visstack, instead
3398         call pop_visibility and issue diagnostics if it failed.  Pass 0
3399         as last argument to push_visibility and pop_visibility.
3400         * c-pragma.h (push_visibility): Add kind argument.
3401         (pop_visibility): Likewise.  Return bool instead of void.
3402
3403 2009-11-01  Eric Botcazou  <ebotcazou@adacore.com>
3404
3405         * tree.def (TARGET_MEM_REF): Update comment.
3406         * alias.c (get_alias_set): Retrieve the original memory reference for
3407         a TARGET_MEM_REF before proceeding.
3408
3409 2009-10-31  Anatoly Sokolov  <aesok@post.ru>
3410
3411         * config/frv/frv.c (frv_function_value, frv_libcall_value,
3412         frv_function_value_regno_p): New functions.
3413         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
3414         * config/frv/frv.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
3415         (FUNCTION_VALUE_REGNO_P): Redefine, use frv_function_value_regno_p.
3416         * config/frv/frv-protos.h (frv_function_value_regno_p): Declare.
3417
3418 2009-10-31  Anatoly Sokolov  <aesok@post.ru>
3419
3420         * config/mn10300/mn10300.c (mn10300_function_value): Make static, add
3421         new 'outgoing' argument.
3422         (mn10300_libcall_value, mn10300_function_value_regno_p): New functions.
3423         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
3424         * config/mn10300/mn10300.h (FUNCTION_VALUE, FUNCTION_OUTGOING_VALUE,
3425         LIBCALL_VALUE): Remove.
3426         (FUNCTION_VALUE_REGNO_P): Redefine, use mn10300_function_value_regno_p.
3427         * config/mn10300/mn10300-protos.h (mn10300_function_value): Remove.
3428         (mh10300_function_value_regno_p): Declare.
3429
3430 2009-10-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
3431
3432         * config/arm/cortex-a9.md: New - integer pipeline description.
3433
3434 2009-10-31  Eric Botcazou  <ebotcazou@adacore.com>
3435
3436         * tree-ssa-sccvn.c (vn_reference_lookup_3): Bail out instead of
3437         aborting if the sizes of the two references don't match.
3438
3439 2009-10-31  Toon Moene  <toon@moene.org>
3440
3441         * ipa-inline.c (cgraph_decide_inlining):
3442         Include reason for not inlining called-once functions in dump file.
3443
3444 2009-10-30  Daniel Gutson  <dgutson@codesourcery.com>
3445
3446         * config/arm/linux-eabi.h (LINK_SPEC): BE8_LINK_SPEC added.
3447         * config/arm/bpapi.h (BE8_LINK_SPEC): New define.
3448         (LINK_SPEC): BE_LINK_SPEC added.
3449
3450 2009-10-30  Richard Guenther  <rguenther@suse.de>
3451
3452         PR lto/41858
3453         * lto-streamer.h (struct lto_file_decl_data): Remove fd member.
3454
3455 2009-10-30  Nathan Sidwell  <nathan@codesourcery.com>
3456
3457         * target-def.h (TARGET_ASM_TTYPE): Correct typo of TARGET_ARM_TTYPE.
3458         * config/arm/unwind-arm.c (__gnu_Unwind_Backtrace): Remove unused
3459         label.
3460
3461 2009-10-30  Martin Jambor  <mjambor@suse.cz>
3462
3463         * tree-sra.c (build_ref_for_offset_1): Remove a comment.
3464
3465 2009-10-30  H.J. Lu  <hongjiu.lu@intel.com>
3466
3467         PR target/40838
3468         * cfgexpand.c (expand_stack_alignment): Call update_stack_boundary
3469         first.  Move assert on stack_alignment_estimated just before
3470         setting stack_realign_needed.
3471         (gimple_expand_cfg): Initialize stack_alignment_estimated to 0.
3472         Don't call update_stack_boundary.
3473
3474         * config/i386/i386.c (ix86_minimum_incoming_stack_boundary): New.
3475         (verride_options): Don't check ix86_force_align_arg_pointer here.
3476         (ix86_function_ok_for_sibcall): Use it.
3477         (ix86_update_stack_boundary): Likewise.
3478
3479         * config/i386/i386.h (STACK_REALIGN_DEFAULT): Update comments.
3480
3481 2009-10-30  Richard Earnshaw  <rearnsha@arm.com>
3482
3483         * arm.md (QHSI): New mode iterator.
3484         (movqi): If generating for thumb, then truncate any immediate to
3485         8 bits.
3486         * thumb2.md (thumb2_movsi_shortim and peephole2 generator): Replace
3487         with...
3488         (thumb2_mov<mode>_shortim and peephole2 generator): ... iterator based
3489         version.
3490
3491 2009-10-29  Cary Coutant  <ccoutant@google.com>
3492
3493         PR debug/41700
3494         * dwarf2out.c (dwarf2_debug_hooks): Add entries for new hook (two
3495         locations in the source).
3496         (store_vcall_insn): New function.
3497         (lookup_vcall_insn): New function.
3498         (dwarf2out_virtual_call_token): Use store_vcall_insn.
3499         (dwarf2out_copy_call_info): New function.
3500         (dwarf2out_virtual_call): Use lookup_vcall_insn.
3501         * emit-rtl.c (try_split): Call copy_call_info debug hook.
3502         * debug.h (struct gcc_debug_hooks): Add copy_call_info hook.
3503         * debug.c (do_nothing_debug_hooks): Add dummy entry for new hook.
3504         (debug_nothing_rtx_rtx): New dummy hook.
3505         * dbxout.c (dbx_debug_hooks): Add dummy entry for new hook.
3506         (xcoff_debug_hooks): Likewise.
3507         * sdbout.c (sdb_debug_hooks): Likewise.
3508         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
3509
3510 2009-10-29  David Daney  <ddaney@caviumnetworks.com>
3511
3512         * doc/invoke.texi (mmcount-ra-address): Document new command line
3513         option.
3514         * config/mips/mips.opt (mmcount-ra-address): New option.
3515         * config/mips/mips-protos.h (mips_function_profiler): Declare new
3516         function.
3517         * config/mips/mips.c (struct mips_frame_info): Add ra_fp_offset
3518         member.
3519         (mips_for_each_saved_gpr_and_fpr): Set ra_fp_offset.
3520         (mips_function_profiler): Moved from FUNCTION_PROFILER, and
3521         rewritten.
3522         * config/mips/mips.h (FUNCTION_PROFILER): Body of macro moved to
3523         mips_function_profiler.
3524
3525 2009-10-29  Steve Ellcey  <sje@cup.hp.com>
3526
3527         PR middle-end/37565
3528         PR target/38018
3529         * doc/tm.texi (OVERRIDE_OPTIONS): Update.
3530         (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
3531         * optc-gen.awk (cl_target_option_restore): Include call to
3532         targetm.override_options_after_change.
3533         * target-def.h (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
3534         * target.h (override_options_after_change): New.
3535         * c-common.c (parse_optimize_options): Call
3536         targetm.override_options_after_change.
3537         * config/ia64/ia64.c (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
3538         (ia64_override_options_after_change): New.
3539         (ia64_override_options) Add call to above.
3540
3541 2009-10-29  Michael Matz  <matz@suse.de>
3542
3543         * tree-ssa-math-opts.c (execute_convert_to_rsqrt): Remove.
3544         (gate_convert_to_rsqrt): Ditto.
3545         (pass_convert_to_rsqrt): Ditto.
3546         * tree-pass.h (pass_convert_to_rsqrt): Don't declare.
3547         * passes.c (init_optimization_passes): Don't add pass_convert_to_rsqrt
3548         to pass list.
3549
3550         * config/i386/i386.c (ix86_emit_swdivsf): Change evaluation order.
3551
3552 2009-10-29  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
3553
3554         * config/arm/arm.c (find_best_start): Fix type of remainder to be
3555         unsigned.
3556
3557 2009-10-29  Martin Jambor  <mjambor@suse.cz>
3558
3559         PR tree-optimization/41775
3560         * tree-sra.c (build_ref_for_offset): Unshare *expr if not NULL.
3561         (generate_subtree_copies): Do not unshare agg.
3562         (load_assign_lhs_subreplacements): Do not unshare rhs.
3563         (sra_modify_assign): Do not unshare exprs.
3564         (propagate_subacesses_accross_link): Renamed to
3565         propagate_subaccesses_across_link.
3566
3567 2009-10-29  Richard Earnshaw  <rearnsha@arm.com>
3568
3569         * arm.c (count_insns_for_constant): Rework to support counting for
3570         thumb2 immediates as well.
3571         (find_best_start): Split out from arm_gen_constant.
3572         (arm_gen_constant): Rework to support XOR with immediate.
3573
3574 2009-10-29  Chao-ying Fu  <fu@mips.com>
3575
3576         * config/mips/mips.c (mips_emit_unary, mips_force_unary): New
3577         functions.
3578         (mips_expand_synci_loop):  Use the length rtx to control the
3579         synci loop from the begin rtx that points to the first byte of
3580         the cache line.
3581
3582 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
3583
3584         * doc/invoke.texi: Rename -use-linker-plugin -fuse-linker-plugin.
3585
3586 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
3587
3588         * dbxout.c (dbxout_common_check): Accept non public trees.
3589         * dwarf2out.c (fortran_common): Accept non public trees.
3590
3591 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
3592
3593         * common.opt (fuse-linker-plugin): New option.
3594         * gcc.c (LINK_COMMAND_SPEC, main): Rename use-linker-plugin to
3595         fuse-linker-plugin.
3596         * opts.c (common_handle_option): Ignore OPT_fuse_linker_plugin.
3597
3598 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
3599
3600         PR rtl-optimization/39715
3601         * config/arm/arm.md (cstoresi4): Use gen_cstoresi_ltu_thumb1.
3602         (gen_cstoresi_ltu_thumb1): New splitter.
3603
3604 2009-10-28  Richard Guenther  <rguenther@suse.de>
3605
3606         PR lto/41808
3607         PR lto/41839
3608         * tree-ssa.c (useless_type_conversion_p): Do not treat
3609         conversions to pointers to incomplete types as useless.
3610         * gimple.c (gimple_types_compatible_p): Compare struct tags,
3611         not typedef names.
3612
3613 2009-10-28  Jakub Jelinek  <jakub@redhat.com>
3614
3615         * var-tracking.c (emit_note_insn_var_location): Don't call the second
3616         vt_expand_loc unnecessarily when location is not a register nor
3617         memory.
3618
3619         PR middle-end/41837
3620         * ipa-struct-reorg.c (find_field_in_struct_1): Return NULL if
3621         fields don't have DECL_NAME.
3622
3623         PR debug/41801
3624         * builtins.c (get_builtin_sync_mem): Expand loc in ptr_mode,
3625         call convert_memory_address on addr.
3626
3627         PR target/41762
3628         * config/i386/i386.c (ix86_pic_register_p): Don't call
3629         rtx_equal_for_cselib_p for VALUEs discarded as useless.
3630
3631 2009-10-28  Richard Sandiford  <rdsandiford@googlemail.com>
3632
3633         * var-tracking.c (emit_note_insn_var_location): Get the mode of
3634         a variable part from its REG, MEM or VALUE.
3635
3636 2009-10-28  Richard Guenther  <rguenther@suse.de>
3637
3638         * gimple.c (gimple_get_alias_set): Fix comment typo.
3639
3640 2009-10-28  Richard Guenther  <rguenther@suse.de>
3641
3642         * tree.c (free_lang_data_in_type): Do not call get_alias_set.
3643         (free_lang_data): Unconditionally compute alias sets for all
3644         standard integer types.  Bail out if gate bailed out previously.
3645         Do not reset the types_compatible_p langhook.
3646         (gate_free_lang_data): Remove.
3647         (struct pass_ipa_free_lang_data): Enable unconditionally.
3648         * gimple.c (gimple_get_alias_set): Use the same alias-set for
3649         all pointer types.
3650
3651 2009-10-28  Richard Guenther  <rguenther@suse.de>
3652
3653         PR middle-end/41855
3654         * tree-ssa-alias.c (refs_may_alias_p_1): Deal with CONST_DECLs
3655         (ref_maybe_used_by_call_p_1): Fix bcopy handling.
3656         (call_may_clobber_ref_p_1): Likewise.
3657         * tree-ssa-structalias.c (find_func_aliases): Likewise.
3658         * alias.c (nonoverlapping_memrefs_p): Deal with CONST_DECLs.
3659
3660 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
3661
3662         PR rtl-optimization/41812
3663
3664         Revert:
3665         2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
3666
3667         * df-problems.c (df_md_scratch): New.
3668         (df_md_alloc, df_md_free): Allocate/free it.
3669         (df_md_local_compute): Only include live registers in init.
3670         (df_md_transfer_function): Prune the in-set computed by
3671         the confluence function, and the gen-set too.
3672
3673 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
3674
3675         PR rtl-optimization/39715
3676         * combine.c (simplify_comparison): Use extensions to
3677         widen comparisons.  Try an ANDing first.
3678
3679 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
3680
3681         PR rtl-optimization/40741
3682         * config/arm/arm.c (thumb1_rtx_costs): IOR or XOR with
3683         a small constant is cheap.
3684         * config/arm/arm.md (andsi3, iorsi3): Try to place the result of
3685         force_reg on the LHS.
3686         (xorsi3): Likewise, and split the XOR if the constant is complex
3687         and not in Thumb mode.
3688
3689 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
3690
3691         * expmed.c (emit_store_flag): Check costs before
3692         transforming to the opposite representation.
3693
3694 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
3695
3696         * config/sh/sh.md (cbranchfp4_media): Remove hack extending
3697         cstore result to DImode.
3698
3699 2009-10-28  Kaz Kojima  <kkojima@gcc.gnu.org>
3700
3701         * config/sh/sh.md (stuff_delay_slot): Move const_int pattern
3702         inside the unspec vector.
3703
3704 2009-10-27  Richard Henderson  <rth@redhat.com>
3705
3706         * cgraphunit.c (cgraph_optimize): Maintain timevar stack properly.
3707
3708 2009-10-27  Richard Henderson  <rth@redhat.com>
3709
3710         PR c++/41819
3711         * tree-eh.c (eh_region_may_contain_throw_map): Rename from
3712         eh_region_may_contain_throw; update users.
3713         (eh_region_may_contain_throw): New function.
3714         (lower_catch): Check flag_exceptions before creating exception region.
3715         (lower_eh_filter, lower_eh_must_not_throw): Likewise.
3716         (lower_cleanup): Tidy existing flag_exceptions check to match.
3717
3718 2009-10-27  Kai Tietz <kai.tietz@onevision.com>
3719
3720         PR/41799
3721         * config/i386/mingw32.h (CHECK_EXECUTE_STACK_ENABLED): New macro.
3722         * config/i386/mingw.opt: Add fset-stack-executable.
3723         * config/i386/i386.c (ix86_trampoline_init): Make call to
3724         emit_library_call conditional, if CHECK_EXECUTE_STACK_ENABLED is
3725         defined and its value is not zero.
3726         * doc/invoke.texi
3727
3728 2009-10-27  Richard Guenther  <rguenther@suse.de>
3729
3730         * tree-ssa-structalias.c (find_func_aliases): In IPA mode
3731         handle calls to externally visible functions like in regular mode.
3732         (create_variable_info_for): Do not create function infos here.
3733         (have_alias_info): Remove write-only variable.
3734         (solve_constraints): New function split out from common code
3735         in compute_points_to_sets and ipa_pta_execute.
3736         (compute_points_to_sets): Adjust.
3737         (ipa_pta_execute): Likewise.  Handle clones and externally visible
3738         functions like in non-IPA mode.
3739
3740 2009-10-27  Jakub Jelinek  <jakub@redhat.com>
3741
3742         PR c/41842
3743         * c-typeck.c (convert_arguments): Return -1 if any of the arguments is
3744         error_mark_node.
3745
3746 2009-10-27  Richard Guenther  <rguenther@suse.de>
3747
3748         * tree-complex.c (expand_complex_div_wide): Check for
3749         INTEGER_CST, not TREE_CONSTANT on comparison folding result.
3750
3751 2009-10-27  Revital Eres  <eres@il.ibm.com>
3752
3753         PR tree-optimization/40648
3754         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
3755         Change decision of when to peel for alignment.
3756
3757 2009-10-27  Richard Guenther  <rguenther@suse.de>
3758
3759         PR lto/41821
3760         * gimple.c (gimple_types_compatible_p): Handle OFFSET_TYPE.
3761
3762 2009-10-27  Aldy Hernandez  <aldyh@redhat.com>
3763
3764         PR bootstrap/41451
3765         * fold-const.c (fold_binary_loc): Do not call
3766         protected_set_expr_location.
3767
3768 2009-10-27  Wei Guozhi  <carrot@google.com>
3769
3770         PR target/41705
3771         * target.h (have_conditional_execution): Add a new target hook
3772         function.
3773         * target-def.h (TARGET_HAVE_CONDITIONAL_EXECUTION): Likewise.
3774         * targhooks.h (default_have_conditional_execution): Likewise.
3775         * targhooks.c (default_have_conditional_execution): Likewise.
3776         * doc/tm.texi (TARGET_HAVE_CONDITIONAL_EXECUTION): Document it.
3777         * config/arm/arm.c (TARGET_HAVE_CONDITIONAL_EXECUTION): Define it.
3778         (arm_have_conditional_execution): New function.
3779         * ifcvt.c (noce_process_if_block, find_if_header,
3780         cond_exec_find_if_block, dead_or_predicable): Change the usage of
3781         macro HAVE_conditional_execution to a target hook call.
3782         * recog.c (peephole2_optimize): Likewise.
3783         * sched-rgn.c (add_branch_dependences): Likewise.
3784         * final.c (asm_insn_count, final_scan_insn): Likewise.
3785         * bb-reorder.c (HAVE_conditional_execution): Remove it.
3786
3787 2009-10-26  Ben Elliston  <bje@au.ibm.com>
3788             Michael Meissner  <meissner@linux.vnet.ibm.com>
3789             Ulrich Weigand  <uweigand@de.ibm.com>
3790
3791         * config.gcc (spu-*-elf*): Add spu_cache.h to extra_headers.
3792         * config/spu/spu_cache.h: New file.
3793
3794         * config/spu/cachemgr.c: New file.
3795         * config/spu/cache.S: New file.
3796
3797         * config/spu/spu.h (ASM_OUTPUT_SYMBOL_REF): Define.
3798         (ADDR_SPACE_EA): Define.
3799         (TARGET_ADDR_SPACE_KEYWORDS): Define.
3800         * config/spu/spu.c (EAmode): New macro.
3801         (TARGET_ADDR_SPACE_POINTER_MODE): Define.
3802         (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
3803         (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Likewise.
3804         (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Likewise.
3805         (TARGET_ADDR_SPACE_SUBSET_P): Likewise.
3806         (TARGET_ADDR_SPACE_CONVERT): Likewise.
3807         (TARGET_ASM_SELECT_SECTION): Likewise.
3808         (TARGET_ASM_UNIQUE_SECTION): Likewise.
3809         (TARGET_ASM_UNALIGNED_SI_OP): Likewise.
3810         (TARGET_ASM_ALIGNED_DI_OP): Likewise.
3811         (ea_symbol_ref): New function.
3812         (spu_legitimate_constant_p): Handle __ea qualified addresses.
3813         (spu_addr_space_legitimate_address_p): New function.
3814         (spu_addr_space_legitimize_address): Likewise.
3815         (cache_fetch): New global.
3816         (cache_fetch_dirty): Likewise.
3817         (ea_alias_set): Likewise.
3818         (ea_load_store): New function.
3819         (ea_load_store_inline): Likewise.
3820         (expand_ea_mem): Likewise.
3821         (spu_expand_mov): Handle __ea qualified memory references.
3822         (spu_addr_space_pointer_mode): New function.
3823         (spu_addr_space_address_mode): Likewise.
3824         (spu_addr_space_subset_p): Likewise.
3825         (spu_addr_space_convert): Likewise.
3826         (spu_section_type_flags): Handle "._ea" section.
3827         (spu_select_section): New function.
3828         (spu_unique_section): Likewise.
3829         * config/spu/spu-c.c (spu_cpu_cpp_builtins): Support __EA32__
3830         and __EA64__ predefined macros.
3831         * config/spu/spu-elf.h (LIB_SPEC): Handle -mcache-size= and
3832         -matomic-updates switches.
3833
3834         * config/spu/t-spu-elf (MULTILIB_OPTIONS): Define.
3835         (EXTRA_MULTILIB_PARTS): Add libgcc_cachemgr.a,
3836         libgcc_cachemgr_nonatomic.a, libgcc_cache8k.a, libgcc_cache16k.a,
3837         libgcc_cache32k.a, libgcc_cache64k.a, libgcc_cache128k.a.
3838         ($(T)cachemgr.o, $(T)cachemgr_nonatomic.o): New target.
3839         ($(T)cache8k.o, $(T)cache16k.o, $(T)cache32k.o, $(T)cache64k.o,
3840         $(T)cache128k.o): Likewise.
3841         ($(T)libgcc_%.a): Likewise.
3842
3843         * config/spu/spu.h (TARGET_DEFAULT): Add MASK_ADDRESS_SPACE_CONVERSION.
3844         * config/spu/spu.opt (-mea32/-mea64): Add switches.
3845         (-maddress-space-conversion): Likewise.
3846         (-mcache-size=): Likewise.
3847         (-matomic-updates): Likewise.
3848         * doc/invoke.texi (-mea32/-mea64): Document.
3849         (-maddress-space-conversion): Likewise.
3850         (-mcache-size=): Likewise.
3851         (-matomic-updates): Likewise.
3852
3853 2009-10-26  Ben Elliston  <bje@au.ibm.com>
3854             Michael Meissner  <meissner@linux.vnet.ibm.com>
3855             Ulrich Weigand  <uweigand@de.ibm.com>
3856
3857         * doc/tm.texi (TARGET_ADDR_SPACE_KEYWORDS): Document.
3858
3859         * c-common.c (c_common_reswords): If TARGET_ADDR_SPACE_KEYWORDS is
3860         defined, add the named address space keywords.
3861         (c_addr_space_name): New function.
3862         (complete_array_type): Preserve named address space.
3863         (handle_mode_attribute): Use targetm.addr_space.valid_pointer_mode
3864         instead of targetm.valid_pointer_mode.
3865
3866         * c-common.h (enum rid): Add RID_ADDR_SPACE_0 .. RID_ADDR_SPACE_15,
3867         RID_FIRST_ADDR_SPACE and RID_LAST_ADDR_SPACE.
3868         (ADDR_SPACE_KEYWORD): New macro.
3869         (c_addr_space_name): Add prototype.
3870
3871         * c-tree.h (struct c_declspecs): Add address_space member.
3872         (declspecs_add_addrspace): Add prototype.
3873
3874         * c-pretty-print.c (pp_c_type_qualifier_list): Handle address spaces.
3875
3876         * c-parser.c (c_parse_init): Add assertion.
3877         (typedef enum c_id_kind): Add C_ID_ADDRSPACE.
3878         (c_lex_one_token): Handle address space keywords.
3879         (c_token_starts_typename): Likewise.
3880         (c_token_starts_declspecs): Likewise.
3881         (c_parser_declspecs): Likewise.
3882         (c_parser_postfix_expression_after_paren_type): Diagnose compound
3883         literal within function qualified with named address space.
3884
3885         * c-decl.c (diagnose_mismatched_decls): Diagnose conflicting named
3886         address space qualifiers.
3887         (shadow_tag_warned): Warn about useless address space qualifiers.
3888         (quals_from_declspecs): Handle address space qualifiers.
3889         (grokdeclarator): Likewise.
3890         (build_null_declspecs): Likewise.
3891         (declspecs_add_addrspace): New function.
3892
3893         * c-typeck.c (addr_space_superset): New function.
3894         (qualify_type): Handle named address spaces.
3895         (composite_type): Likewise.
3896         (common_pointer_type): Likewise.
3897         (comp_target_types): Likewise.
3898         (build_conditional_expr): Likewise.
3899         (handle_warn_cast_qual): Likewise.
3900         (build_c_cast): Likewise.
3901         (convert_for_assignment): Likewise.
3902         (build_binary_op): Likewise.
3903         (pointer_diff): Handle named address spaces.  Use intermediate
3904         integer type of sufficient size if required.
3905
3906 2009-10-26  Ben Elliston  <bje@au.ibm.com>
3907             Michael Meissner  <meissner@linux.vnet.ibm.com>
3908             Ulrich Weigand  <uweigand@de.ibm.com>
3909
3910         * doc/tm.texi (TARGET_ADDR_SPACE_POINTER_MODE): Document.
3911         (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
3912         (TARGET_ADDR_SPACE_VALID_POINTER_MODE): Likewise.
3913
3914         * target.h (struct target_def): Add pointer_mode, address_mode,
3915         and valid_pointer_mode to addr_space substructure.
3916         * target-def.h (TARGET_ADDR_SPACE_POINTER_MODE): Define.
3917         (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
3918         (TARGET_ADDR_SPACE_VALID_POINTER_MODE): Likewise.
3919         (TARGET_ADDR_SPACE_HOOKS): Add them.
3920         * targhooks.c (target_default_pointer_address_modes_p): New function.
3921         * target.h (target_default_pointer_address_modes_p): Add prototype.
3922         * targhooks.c (default_addr_space_pointer_mode): New function.
3923         (default_addr_space_address_mode): Likewise.
3924         (default_addr_space_valid_pointer_mode): Likewise.
3925         * targhooks.h (default_addr_space_pointer_mode): Add prototype.
3926         (default_addr_space_address_mode): Likewise.
3927         (default_addr_space_valid_pointer_mode): Likewise.
3928         * output.h (default_valid_pointer_mode): Move to ...
3929         * targhooks.h (default_valid_pointer_mode): ... here.
3930         * varasm.c (default_valid_pointer_mode): Move to ...
3931         * targhooks.c (default_valid_pointer_mode): ... here.
3932
3933         * varasm.c (output_constant): Use targetm.addr_space.valid_pointer_mode
3934         instead of targetm.valid_pointer_mode.
3935
3936         * fold-const.c (fit_double_type): Use int_or_pointer_precision.
3937         * tree.c (integer_pow2p): Likewise.
3938         (tree_log2): Likewise.
3939         (tree_floor_log2): Likewise.
3940         (signed_or_unsigned_type_for): Support pointer type of different size.
3941         (int_or_pointer_precision): New function.
3942         * tree.h (int_or_pointer_precision): Add prototype.
3943         * stor-layout.c (layout_type): Set TYPE_PRECISION for offset types.
3944         * varasm.c (initializer_constant_valid_p): Use TYPE_PRECISION of
3945         incoming pointer type instead of POINTER_SIZE.
3946
3947         * tree.c (build_pointer_type): Use appropriate pointer mode
3948         instead of ptr_mode.
3949         (build_reference_type): Likewise.
3950         * expr.c (store_expr): Likewise.
3951         (expand_expr_addr_expr): Likewise.
3952         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Likewise.
3953         * cfgexpand.c (expand_debug_expr): Likewise.
3954
3955         * auto-inc-dec.c: Include "target.h".
3956         (try_merge): Use appropriate address mode instead of Pmode.
3957         (find_inc): Likewise.
3958         * combine.c (find_split_point): Likewise.
3959         * cselib.c (cselib_record_sets): Likewise.
3960         * dse.c (replace_inc_dec): Likewise.
3961         (canon_address): Likewise.
3962         * var-tracking.c (replace_expr_with_values): Likewise.
3963         (count_uses): Likewise.
3964         (add_uses): Likewise.
3965         (add_stores): Likewise.
3966         * emit-rtl.c: Include "target.h".
3967         (adjust_address_1): Use appropriate address mode instead of Pmode.
3968         (offset_address): Likewise.
3969         * explow.c (break_out_memory_refs): Likewise.
3970         (memory_address_addr_space): Likewise.
3971         (promote_mode): Likewise.
3972         * expr.c (move_by_pieces): Likewise.
3973         (emit_block_move_via_loop): Likewise.
3974         (store_by_pieces): Likewise.
3975         (store_by_pieces_1): Likewise.
3976         (expand_assignment): Likewise.
3977         (store_constructor): Likewise.
3978         (expand_expr_addr_expr): Likewise.
3979         (expand_expr_real_1): Likewise.
3980         * cfgexpand.c (expand_debug_expr): Likewise.
3981         * ifcvt.c (noce_try_cmove_arith): Likewise.
3982         * regcprop.c (kill_autoinc_value): Likewise.
3983         * regmove.c (try_auto_increment): Likewise.
3984         * reload.c (find_reloads): Likewise.
3985         (find_reloads_address): Likewise.
3986         (find_reloads_address_1): Likewise.
3987         * sched-deps.c: Include "target.h".
3988         (sched_analyze_1): Use appropriate address mode instead of Pmode.
3989         (sched_analyze_2): Likewise.
3990         * sel-sched-dump.c: Include "target.h".
3991         (debug_mem_addr_value): Use appropriate address mode instead of Pmode.
3992         * stor-layout.c (layout_type): Likewise.
3993         * tree-ssa-loop-ivopts.c (produce_memory_decl_rtl): Likewise.
3994         (multiplier_allowed_in_address_p): Likewise.
3995         (get_address_cost): Likewise.
3996         * varasm.c (make_decl_rtl): Likewise.
3997
3998         * expr.c (expand_assignment): Always convert offsets to appropriate
3999         address mode.
4000         (store_expr): Likewise.
4001         (store_constructor): Likewise.
4002         (expand_expr_real_1): Likewise.
4003
4004         * reload.h (form_sum): Add MODE argument.
4005         * reload.c (form_sum): Add MODE argument, use it instead of Pmode.
4006         Update recursive calls.
4007         (subst_indexed_address): Update calls to form_sum.
4008
4009         * tree-flow.h (addr_for_mem_ref): Add ADDRSPACE argument.
4010         * tree-ssa-address.c: Include "target.h".
4011         (templates): Replace by ...
4012         (mem_addr_template_list): ... this new vector.
4013         (TEMPL_IDX): Handle address space numbers.
4014         (gen_addr_rtx): Add address mode argument, use it instead of Pmode.
4015         (addr_for_mem_ref): Add ADDRSPACE argument.  Use per-address-space
4016         instead of global cache.  Update call to gen_addr_rtx.
4017         (valid_mem_ref_p): Update call to addr_for_mem_ref.
4018         * expr.c (expand_expr_real_1): Update call to addr_for_mem_ref.
4019
4020         * rtl.h (convert_memory_address_addr_space): Add prototype.
4021         (convert_memory_address): Define as macro.
4022         * explow.c (convert_memory_address): Rename to ...
4023         (convert_memory_address_addr_space): ... this.  Add ADDRSPACE argument.
4024         Use appropriate pointer and address modes instead of ptr_mode / Pmode.
4025         Update recursive calls.
4026         (memory_address_addr_space): Call convert_memory_address_addr_space.
4027         * expmed.c (make_tree): Likewise.
4028         * expr.c (expand_assignment): Likewise.
4029         (expand_expr_addr_expr_1): Likewise.  Also, add ADDRSPACE argument.
4030         (expand_expr_addr_expr): Likewise.  Also, update call.
4031
4032         * alias.c (find_base_value): Guard pointer size optimizations.
4033         (find_base_term): Likewise.
4034         * rtlanal.c (nonzero_bits1): Likewise.
4035         (num_sign_bit_copies1): Likewise.
4036         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
4037
4038         * Makefile.in (tree-ssa-address.o): Add $(TARGET_H) dependency.
4039         (emit-rtl.o): Likewise.
4040         (auto-inc-dec.o): Likewise.
4041         (sched-deps.o): Likewise.
4042
4043 2009-10-26  Ben Elliston  <bje@au.ibm.com>
4044             Michael Meissner  <meissner@linux.vnet.ibm.com>
4045             Ulrich Weigand  <uweigand@de.ibm.com>
4046
4047         * doc/extend.texi (Named Address Spaces): New section.
4048         * coretypes.h (addr_space_t): New type.
4049         (ADDR_SPACE_GENERIC): New define.
4050         (ADDR_SPACE_GENERIC_P): New macro.
4051
4052         * doc/tm.texi (Named Address Spaces): New section.
4053         (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Document.
4054         (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Document.
4055         (TARGET_ADDR_SPACE_SUBSET_P): Document.
4056         (TARGET_ADDR_SPACE_CONVERT): Document.
4057         * target.h (struct gcc_target): Add addr_space substructure.
4058         * target-def.h (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Define.
4059         (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Likewise.
4060         (TARGET_ADDR_SPACE_SUBSET_P): Likewise.
4061         (TARGET_ADDR_SPACE_CONVERT): Likewise.
4062         (TARGET_ADDR_SPACE_HOOKS): Likewise.
4063         (TARGET_INITIALIZER): Initialize addr_space hooks.
4064         * targhooks.c (default_addr_space_legitimate_address_p): New function.
4065         (default_addr_space_legitimize_address): Likewise.
4066         (default_addr_space_subset_p): Likewise.
4067         (default_addr_space_convert): Likewise.
4068         * targhooks.h (default_addr_space_legitimate_address_p): Add prototype.
4069         (default_addr_space_legitimize_address): Likewise.
4070         (default_addr_space_subset_p): Likewise.
4071         (default_addr_space_convert): Likewise.
4072
4073         * doc/rtl.texi (MEM_ADDR_SPACE): Document.
4074         * rtl.h (mem_attrs): Add ADDRSPACE memory attribute.
4075         (MEM_ADDR_SPACE): New macro.
4076         * emit-rtl.c (get_mem_attrs): Add ADDRSPACE argument and set
4077         address space memory attribute.
4078         (mem_attrs_htab_hash): Handle address space memory attribute.
4079         (mem_attrs_htab_eq): Likewise.
4080         (set_mem_attributes_minus_bitpos): Likewise.
4081         (set_mem_alias_set): Likewise.
4082         (set_mem_align): Likewise.
4083         (set_mem_expr): Likewise.
4084         (set_mem_offset): Likewise.
4085         (set_mem_size): Likewise.
4086         (adjust_address_1): Likewise.
4087         (offset_address): Likewise.
4088         (widen_memoy_address): Likewise.
4089         (get_spill_slot_decl): Likewise.
4090         (set_mem_attrs_for_spill): Likewise.
4091         (set_mem_addr_space): New function.
4092         * emit-rtl.h (set_mem_addr_space): Add prototype.
4093         * print-rtl.c (print_rtx): Print address space memory attribute.
4094         * expr.c (expand_assignment): Set address space memory attribute
4095         of generated MEM RTXes as appropriate.
4096         (expand_expr_real_1): Likewise.
4097         * cfgexpand.c (expand_debug_expr): Likewise.
4098         * tree-ssa-loop-ivopts.c (produce_memory_decl_rtl): Likewise.
4099
4100         * tree.h (struct tree_base): Add address_space bitfield.  Reduce
4101         size of "spare" bitfield.
4102         (TYPE_ADDR_SPACE): New macro.
4103         (ENCODE_QUAL_ADDR_SPACE): Likewise.
4104         (DECODE_QUAL_ADDR_SPACE): Likewise.
4105         (CLEAR_QUAL_ADDR_SPACE): Likewise.
4106         (KEEP_QUAL_ADDR_SPACE): Likewise.
4107         (TYPE_QUALS): Encode type address space.
4108         (TYPE_QUALS_NO_ADDR_SPACE): New macro.
4109         * tree.c (set_type_quals): Set type address space.
4110         (build_array_type): Inherit array address space from element type.
4111         * print-tree.c (print_node_brief): Print type address space.
4112         (print_node): Likewise.
4113         * tree-pretty-print.c (dump_generic_node): Likewise.
4114
4115         * explow.c (memory_address): Rename to ...
4116         (memory_address_addr_space): ... this.  Add ADDRSPACE argument.
4117         Use address-space aware variants of memory address routines.
4118         * recog.c (memory_address_p): Rename to ...
4119         (memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
4120         Use address-space aware variants of memory address routines.
4121         (offsettable_address_p): Rename to ...
4122         (offsettable_address_addr_space_p): ... this.  Add ADDRSPACE argument.
4123         Use address-space aware variants of memory address routines.
4124         * reload.c (strict_memory_address_p): Rename to ...
4125         (strict_memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
4126         Use address-space aware variants of memory address routines.
4127         (maybe_memory_address_p): Rename to ...
4128         (maybe_memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
4129         Use address-space aware variants of memory address routines.
4130         * expr.h (memory_address_addr_space): Add prototype.
4131         (memory_address): Define as macro.
4132         * recog.h (memory_address_addr_space_p): Add prototype.
4133         (memory_address_p): Define as macro.
4134         (offsettable_address_addr_space_p): Add prototype.
4135         (offsettable_address_p): Define as macro.
4136         (strict_memory_address_addr_space_p): Add prototype.
4137         (strict_memory_address_p): Define as macro.
4138
4139         * combine.c (find_split_point): Use address-space aware variants
4140         of memory address routines.
4141         * emit-rtl.c (operand_subword): Likewise.
4142         (change_address_1): Likewise.
4143         (adjust_address_1): Likewise.
4144         (offset_address): Likewise.
4145         * expr.c (emit_move_insn): Likewise.
4146         (expand_assignment): Likewise.
4147         (expand_expr_real_1): Likewise.
4148         * recog.c (verify_changes): Likewise.
4149         (general_operand): Likewise.
4150         (offsettable_memref_p): Likewise.
4151         (offsettable_nonstrict_memref_p): Likewise.
4152         (constrain_operands): Likewise.
4153         * reload.c (get_secondary_mem): Likewise.
4154         (find_reloads_toplev): Likewise.
4155         (find_reloads_address): Likewise.
4156         (find_reloads_subreg_address): Likewise.
4157         * reload1.c (reload): Likewise.
4158         * rtlhooks.c (gen_lowpart_if_possible): Likewise.
4159         * rtl.h (address_cost): Add ADDRSPACE argument.
4160         * rtlanal.c (address_cost): Add ADDRSPACE argument.  Use address-space
4161         aware variant of memory address routines.
4162         * loop-invariant.c (create_new_invariant): Update address_cost call.
4163         * tree-ssa-loop-ivopts.c (computation_cost): Likewise.
4164         * fwprop.c (should_replace_address): Add ADDRSPACE argument.
4165         Use address-space aware variant of memory address routines.
4166         (propagate_rtx_1): Update call to should_replace_address.
4167         * tree-flow.h (multiplier_allowed_in_address_p): Add ADDRSPACE
4168         argument.
4169         * tree-ssa-loop-ivopts.c (multiplier_allowed_in_address_p): Add
4170         ADDRSPACE argument.  Use per-address-space instead of global cache.
4171         Use address-space aware variant of memory address routines.
4172         (get_address_cost): Likewise.
4173         (get_computation_cost_at): Update calls.
4174         * tree-ssa-address.c (valid_mem_ref_p): Add ADDRSPACE argument.
4175         Use address-space aware variant of memory address routines.
4176         (create_mem_ref_raw): Update call to valid_mem_ref_p.
4177         (most_expensive_mult_to_index): Update call to
4178         multiplier_allowed_in_address_p.
4179
4180         * dwarf2out.c (modified_type_die): Output DW_AT_address_class
4181         attribute to indicate named address spaces.
4182
4183         * varasm.c (get_variable_section): DECLs in named address spaces
4184         cannot be "common".
4185
4186         * reload.c (find_reloads_address): Do not use LEGITIMIZE_RELOAD_ADDRESS
4187         for addresses in a non-generic address space.
4188
4189         * expr.c (emit_block_move_hints): Do not use libcalls for
4190         memory in non-generic address spaces.
4191         (clear_storage_hints): Likewise.
4192         (expand_assignment): Likewise.
4193
4194         * fold-const.c (operand_equal_p): Expressions refering to different
4195         address spaces are not equivalent.
4196
4197         * rtl.c (rtx_equal_p_cb): MEMs refering to different address
4198         spaces are not equivalent.
4199         (rtx_equal_p): Likewise.
4200         * cse.c (exp_equiv_p): Likewise.
4201         * jump.c (rtx_renumbered_equal_p): Likewise.
4202         * reload.c (operands_match_p): Likewise.
4203
4204         * alias.c (nonoverlapping_memrefs_p): MEMs refering to different
4205         address spaces may alias.
4206         (true_dependence): Likewise.
4207         (canon_true_dependence): Likewise.
4208         (write_dependence_p): Likewise.
4209
4210         * dse.c (canon_address): Handle named address spaces.
4211         * ifcvt.c (noce_try_cmove_arith): Likewise.
4212
4213         * tree.def (ADDR_SPACE_CONVERT_EXPR): New tree code.
4214         * expr.c (expand_expr_real_2): Expand ADDR_SPACE_CONVERT_EXPR.
4215         * convert.c (convert_to_pointer): Generate ADDR_SPACE_CONVERT_EXPR
4216         to handle conversions between different address spaces.
4217         * fold-const.c (fold_convert_loc): Likewise.
4218         (fold_unary_loc): Handle ADDR_SPACE_CONVERT_EXPR.
4219         * tree-pretty-print.c (dump_generic_node): Likewise.
4220         * gimple-pretty-print.c (dump_unary_rhs): Likewise.
4221         * tree-cfg.c (verify_gimple_assign_unary): Likewise.
4222         * tree-inline.c (estimate_operator_cost): Likewise.
4223         * tree-ssa.c (useless_type_conversion_p): Conversions between pointers
4224         to different address spaces are not useless.
4225
4226 2009-10-26  Jakub Jelinek  <jakub@redhat.com>
4227
4228         PR bootstrap/41345
4229         * cfgcleanup.c (trivially_empty_bb_p): New function.
4230         (try_optimize_bb): Use it instead of checking BB_HEAD == BB_END.
4231
4232         PR debug/41828
4233         * dwarf2out.c (add_pubname, add_pubtype, generic_parameter_die,
4234         add_name_and_src_coords_attributes, gen_namespace_die,
4235         dwarf2out_set_name): Handle dwarf2_name returning NULL.
4236
4237 2009-10-26  Nick Clifton  <nickc@redhat.com>
4238
4239         * config.gcc: Add support for RX target.
4240         * config/rx: New directory.
4241         * config/rx/constraints.md: New file.
4242         * config/rx/predicates.md: New file.
4243         * config/rx/rx.c: New file.
4244         * config/rx/rx.h: New file.
4245         * config/rx/rx.md: New file.
4246         * config/rx/rx.opt: New file.
4247         * config/rx/rx-protos.h: New file.
4248         * config/rx/t-rx: New file.
4249         * doc/extend.texi: Document RX function attributes.
4250         * doc/invoke.texi: Document RX specific command line options.
4251         * doc/contrib.texi: Document RX contribution.
4252         * doc/md.texi: Document RX constraints.
4253         * doc/install.texi: Document RX support.
4254
4255 2009-10-26  Michael Matz  <matz@suse.de>
4256
4257         PR tree-optimization/41783
4258         * tree-ssa-alias.c (get_continuation_for_phi): Export, add a special
4259         case for simple diamonds.
4260         * tree-ssa-alias.h (get_continuation_for_phi): Declare.
4261         * tree-ssa-pre.c (translate_vuse_through_block): Add same_valid
4262         argument, use alias oracle to skip some vdefs.
4263         (phi_translate_1): Change call to above, don't allocate new
4264         value ids if they can stay the same.
4265         (compute_avail): Allow vuse walking when looking up references.
4266
4267 2009-10-26  Richard Guenther  <rguenther@suse.de>
4268
4269         PR tree-optimization/41826
4270         * tree-ssa-structalias.c (get_constraint_for_ptr_offset): Avoid
4271         access to re-allocated vector fields.
4272
4273 2009-10-26  Richard Guenther  <rguenther@suse.de>
4274
4275         * graphite-sese-to-poly.c (check_poly_representation): Fix
4276         compile without checking.
4277
4278 2009-10-26  Janus Weil  <janus@gcc.gnu.org>
4279
4280         PR fortran/41714
4281         * gimple.h (tree_annotate_all_with_location): Remove prototype.
4282         * gimplify.c (tree_should_carry_location_p,
4283         tree_annotate_one_with_location,tree_annotate_all_with_location):
4284         Remove obsolete functions.
4285
4286 2009-10-25  Kaz Kojima  <kkojima@gcc.gnu.org>
4287
4288         PR target/41813
4289         * config/sh/sh.md (stuff_delay_slot): Don't set T_REG in pattern.
4290
4291 2009-10-25  Richard Guenther  <rguenther@suse.de>
4292
4293         * lto-streamer-in.c (unpack_ts_decl_common_value_fields):
4294         Stream DECL_RESTRICTED_P.
4295         * lto-streamer-out.c (pack_ts_decl_common_value_fields): Likewise.
4296
4297 2009-10-25  Richard Sandiford  <rdsandiford@googlemail.com>
4298
4299         * config/mips/mips.c (mips_restore_gp_from_cprestore_slot): Emit
4300         a note when expanding to nothing.
4301
4302 2009-10-25  Richard Guenther  <rguenther@suse.de>
4303
4304         PR middle-end/41814
4305         * tree.c (find_decls_types_r): Deal with Java overloading
4306         BINFO_VIRTUALS for its own purpose.
4307
4308 2009-10-24  Adam Nemet  <anemet@caviumnetworks.com>
4309
4310         * config/mips/predicates.md (hilo_operand): New predicate.
4311         * config/mips/mips.md (<u>mulsidi3_64bit): Change it to a
4312         define_insn.  Correct !ISA_HAS_EXT_INS length from 24 to 28.  Move
4313         splitter part from here ...:
4314         (<u>mulsidi3_64bit splitter for !ISA_HAS_EXT_INS): ... to here.  Swap
4315         op0 and op4 to match the DINS case.
4316         (<u>mulsidi3_64bit splitter for ISA_HAS_EXT_INS): New splitter.
4317
4318 2009-10-24  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
4319
4320         PR middle-end/19154
4321         * avr.md (QIDI): Add new mode iterator.
4322         (sbrx_branch<mode>): Create new zero extract bit, test and jump
4323         patterns for all QI thru DI modes combinations.
4324         (sbrx_and_branch<mode>): Create new and based bit test and jump
4325         patterns for QI thru SI modes.
4326         avr.c (avr_out_sbxx_branch): Use only bit number.
4327
4328 2009-10-24  Jan Hubicka  <jh@suse.cz>
4329
4330         * ipa-reference.c (check_call): Noreturn notrhow calls do not write
4331         to memory.
4332         (analyze_function): When analyzing noreturn nothrow call, do not
4333         compute written stats; free bitmaps of vars early if possible.
4334         (generate_summary): Only update bitmaps if computed.
4335         (propagate): Only dump bitmaps if computed.
4336         (ipa_reference_read_summary): Fix pasto.
4337
4338 2009-10-24  Eric Botcazou  <ebotcazou@adacore.com>
4339
4340         * tree-ssa-alias.c (nonaliasing_component_refs_p): Rename into...
4341         (aliasing_component_refs_p): ...this.  Return true if there is no
4342         common base and the base access types have the same alias set.
4343         (indirect_ref_may_alias_decl_p): Adjust for above renaming.
4344         (indirect_refs_may_alias_p): Likewise.
4345
4346 2009-10-23  Joseph Myers  <joseph@codesourcery.com>
4347
4348         PR c/40033
4349         * c-typeck.c (c_finish_stmt_expr): Do not wrap error_mark_node in
4350         a C_MAYBE_CONST_EXPR.
4351
4352 2009-10-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
4353
4354         PR target/41787
4355         * config/rs6000/rs6000.c (struct machine_function): Add
4356         vsx_or_altivec_used_p to record if vector types are used.
4357         (rs6000_expand_to_rtl_hook): Rename from
4358         rs6000_alloc_sdmode_stack_slot.  If VSX, check to see if there are
4359         any vector operations, so if there are, we can set VRSAVE to
4360         non-zero when only floating point vector registers are used.
4361         (TARGET_EXPAND_TO_RTL_HOOK): Use rs6000_expand_to_rtl_hook.
4362         (rs6000_check_vector_mode): Inner function to check if vector
4363         types are used in the code.
4364         (compute_vrsave_mask): If VSX, make sure VRSAVE is non-zero if
4365         vector instructions are used.
4366
4367         * config/rs6000/rs6000.h (HARD_REGNO_CALL_PART_CLOBBERED):
4368         Indicate that VSX registers which overlap floating point
4369         registers, can't be used across a call, since the ABI only states
4370         the scalar part of the register will be saved and restored.
4371
4372 2009-10-23  Joseph Myers  <joseph@codesourcery.com>
4373
4374         PR c/41673
4375         * alias.c (get_alias_set): Call langhook before returning 0 for
4376         types with structural equality.
4377         * c-common.c (c_common_get_alias_set): Use alias set of element
4378         type for arrays with structural comparison.
4379
4380 2009-10-23  Richard Guenther  <rguenther@suse.de>
4381
4382         PR middle-end/41805
4383         * cfgexpand.c (expand_call_stmt): Use gimple_has_side_effects and
4384         gimple_call_nothrow_p.
4385
4386 2009-10-23  Richard Guenther  <rguenther@suse.de>
4387
4388         PR tree-optimization/41778
4389         * tree-ssa-pre.c (do_regular_insertion): Only insert if a
4390         redundancy along a path in the CFG we want to optimize for speed
4391         is going to be removed.
4392         (execute_pre): Do partial-PRE only if the function is to be
4393         optimized for speed.
4394         (gate_pre): Do not turn off all of PRE when not optimizing a
4395         function for speed.
4396
4397 2009-10-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4398
4399         * builtins.c (fold_builtin_cabs): Use validate_arg().
4400         (fold_builtin_cexp): Fix if-logic.
4401         (fold_builtin_1): Check subtype for BUILT_IN_CIMAG.
4402
4403 2009-10-22  Jeff Law  <law@redhat.com>
4404
4405         * ira-lives.c (process_single_reg_class_operands): Update the
4406         hard reg costs for all the hard registers desired by the
4407         single reg class operand.
4408
4409 2009-10-22  Richard Sandiford  <rdsandiford@googlemail.com>
4410
4411         * simplify-rtx.c (simplify_replace_fn_rtx): Add a fallback case
4412         for rtxes that aren't handled specially.
4413
4414 2009-10-22  Richard Sandiford  <rdsandiford@googlemail.com>
4415
4416         * rtl.h (shallow_copy_rtvec): Declare.
4417         * rtl.c (shallow_copy_rtvec): New function.
4418         * cselib.c (cselib_subst_to_values): Use it.  Only modify an
4419         rtx field if the subrtx has changed.
4420
4421 2009-10-22  Anatoly Sokolov  <aesok@post.ru>
4422
4423         * config/m32c/m32c.c (m32c_function_value_regno_p): New function.
4424         (m32c_function_value): Make static, add new 'outgoing' argument.
4425         (m32c_libcall_value): Make static, add new 'fun' argument.
4426         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
4427         * config/m32c/m32c.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
4428         (FUNCTION_VALUE_REGNO_P): Redefine, use m32c_function_value_regno_p.
4429         * config/m32c/m32c-protos.h (m32c_function_value_regno_p): Declare.
4430         (m32c_function_value, m32c_libcall_value): Delete declaration.
4431
4432 2009-10-22  Diego Novillo  <dnovillo@google.com>
4433
4434         * Makefile.in (PLUGIN_HEADERS): Add output.h and IPA_UTILS_H.
4435
4436 2009-10-22  Razya Ladelsky  <razya@il.ibm.com>
4437
4438         * tree-cfg.c (gimple_duplicate_sese_tail): Fix typos/indentation/white
4439         space.
4440
4441 2009-10-22  Richard Guenther  <rguenther@suse.de>
4442
4443         * lto-streamer.h (lto_symtab_merge_cgraph_nodes): Declare.
4444         * lto-symtab.c (struct lto_symtab_entry_def): Add node member.
4445         (lto_symtab_merge): Do not merge cgraph nodes here.
4446         (lto_symtab_resolve_can_prevail_p): Simplify.
4447         (lto_symtab_resolve_symbols): Store cgraph node.
4448         (lto_symtab_merge_decls_1): Simplify.  Do not drop non-prevailing
4449         functions from the symtab.
4450         (lto_symtab_merge_cgraph_nodes_1): New function.
4451         (lto_symtab_merge_cgraph_nodes): Likewise.
4452
4453 2009-10-22  Richard Guenther  <rguenther@suse.de>
4454
4455         PR lto/41791
4456         * lto-streamer-out.c (lto_output_location): Stream the
4457         system header flag.
4458         * lto-streamer-in.c (lto_input_location): Likewise.
4459
4460 2009-10-22  Razya Ladelsky  <razya@il.ibm.com>
4461
4462         * cfgloopmanip.c (duplicate_subloops): Export.
4463         * tree-parloops.c (loop_parallel_p): Dump if loop is innermost.
4464         (transform_to_exit_first_loop): Duplicate bbs starting from
4465         header up to loop->latch instead of exit->src.
4466         Initialize control variable to the correct number of iterations.
4467         (gather_scalar_reductions): Do not register double reductions.
4468         (parallelize_loops): Dump which loop is tested.
4469         Indicate whether the parallelized loop is inner or not.
4470         Remove the innermost-loop requirement.
4471         * cfgloop.h (duplicate_subloops): Export.
4472         * tree-cfg.c (add_phi_args_after_redirect): New function.
4473         (gimple_duplicate_sese_tail): Remove the no-subloops constraint.
4474         Call duplicate_subloops.
4475         Update number of iterations at the exit condition.
4476         Don't redirect nexits always to the loop exit.
4477         Redirect copied edges from latch to the loop exit.
4478
4479 2009-10-22  Jan Hubicka  <jh@suse.cz>
4480
4481         * ipa-cp.c (ipcp_read_summary): Remove now invalid FIXME and
4482         flag_ltrans check.
4483         * ipa-inline.c (cgraph_mark_inline_edge,
4484         cgraph_decide_inlining_of_small_function,
4485         cgraph_decide_inlining, inline_read_summary): Disable indirect
4486         inlining for WPA for time being.
4487
4488         PR tree-optimize/40556
4489         * ipa-inline.c (cgraph_early_inlining): Fix iterations condition.
4490
4491 2009-10-22  Richard Guenther  <rguenther@suse.de>
4492
4493         * lto-streamer.h (lto_symtab_clear_resolution): Remove.
4494         * lto-symtab.c (lto_symtab_clear_resolution): Likewise.
4495
4496 2009-10-22  Jan Hubicka  <jh@suse.cz>
4497
4498         PR lto/41730
4499         * ipa-reference.c (has_proper_scope_for_analysis): Add fixme about
4500         global vars.
4501         (check_call): Handle only indirect calls.
4502         (propagate_bits): Update comment.
4503         (write_node_summary_p): Turn bogus check to assert.
4504         (ipa_reference_write_summary): Stream calls_read_all properly.
4505         (ipa_reference_read_summary): Stream in calls_read_all properly.
4506         (read_write_all_from_decl): New function.
4507         (propagate): Handle OVERWRITABLE nodes and external calls here.
4508         * ipa-pre-const.c (check_call): In IPA mode handle indirect
4509         calls only.
4510         (analyze_function): Do not check visibility here.
4511         (add_new_function): We summary OVERWRITABLE too.
4512         (generate_summary): Stream OVERWRITABLE nodes too.
4513         (propagate): Handle external calls and OVERWRITABLE nodes here.
4514         (local_pure_const): Check visibility here.
4515
4516 2009-10-22  Jan Hubicka  <jh@suse.cz>
4517
4518         * ipa-cp.c (ipcp_write_summary, ipcp_read_summary): New functions.
4519         (pass_ipa_cp): Register them.
4520         (ipcp_init_stage): Analyze all functions for whopr/lto.
4521         (ipcp_propagate_stage): Skip external calls.
4522         (ipcp_iterate_stage): Call ipa_update_after_lto_read if needed.
4523         * ipa-reference.c (write_node_summary_p): Fix thinko about
4524         availability.
4525         * cgraphunit.c (ipa_passes): When in lto, ne er produce new summaries;
4526         when in ltrans, skip executing of ipa passes since everything
4527         should've been done.
4528         * ipa-inline.c (cgraph_decide_inlining): Remove FIXMEs.
4529         (inline_generate_summary): Likewise.
4530         (inline_read_summary): New function.
4531         (inline_write_summary): New function.
4532         (pass_ipa_inline): Register new hooks.
4533         * ipa-prop.c: Inlcude lto-streamer.h
4534         (ipa_edge_args_vector): Update declaration.
4535         (ipa_count_arguments, ipa_compute_jump_functions,
4536         ipa_free_edge_args_substructures): Move ipa_edge_args_vector into ggc.
4537         (ipa_write_jump_function, ipa_read_jump_function, ipa_write_node_info,
4538         ipa_read_node_info): New static functions.
4539         (ipa_prop_write_jump_functions, ipa_prop_read_jump_functions): Update.
4540         (duplicate_array): Use xmalloc.
4541         (duplicate_ggc_array): New.
4542         (ipa_edge_duplication_hook): Use it.
4543         (ipa_update_after_lto_read): New function.
4544         * ipa-prop.h (ipa_prop_write_jump_functions,
4545         ipa_prop_read_jump_functions): Declare.
4546         (ipa_pass_through_data, ipa_ancestor_jf_data, ipa_member_ptr_cst,
4547         jump_func_value, ipa_member_ptr_cst, ipa_edge_args): Add GTY markers.
4548         (ipa_edge_args_vector): Move into GGC.
4549         (ipa_check_create_edge_args): Update.
4550         (ipa_update_after_lto_read): New.
4551         * passes.c (ipa_write_summaries_1): When in wpa, do not write
4552         summaries.
4553         (ipa_read_summaries): When in ltrans, so not read summaries.
4554         * lto-streamer.c (lto_get_section_name): Add
4555         LTO_section_jump_functions.
4556         * lto-streamer.h (LTO_section_jump_functions): New section.
4557         (produce_asm): Declare.
4558         * lto-cgraph.c (output_cgraph): Output edges in reverse order.
4559         * lto-streamer-out.c (produce_asm): Export.
4560         * lto-streamer-in.c: Include tree-pass.h
4561         (input_function): Free dominance info when done.
4562         (lto_read_body): Push ipa_inline in ltrans stage.
4563         * gengtype.c (open_base_files): Add ipa-prop.h into includes.
4564         * Makefile.in (GTFILES): Add ipa-prop.h
4565
4566 2009-10-22  Matthias Klose  <doko@ubuntu.com>
4567
4568         * doc/install.texi: Document --enable-browser-plugin.
4569
4570 2009-10-21  Vladimir Makarov  <vmakarov@redhat.com>
4571
4572         * doc/invoke.texi (fira-loop-pressure): Update default value.
4573         * opts.c (decode_options): Remove default value setting for
4574         flag_ira_loop_pressure.
4575         * config/ia64/ia64.c (ia64_override_options): Set
4576         flag_ira_loop_pressure up for -O3.
4577         * config/rs6000/rs6000.c (rs6000_override_options): Ditto.
4578
4579 2009-10-21  Sebastian Pop  <sebastian.pop@amd.com>
4580
4581         PR tree-optimization/41497
4582         * tree-scalar-evolution.c (analyze_evolution_in_loop): Return
4583         chrec_dont_know if the evolution function returned by follow_ssa_edge
4584         is constant in the analyzed loop and is not compatible with the
4585         initial value before the loop.
4586         * tree-chrec.h (no_evolution_in_loop_p): Call STRIP_NOPS.
4587
4588 2009-10-21  Joseph Myers  <joseph@codesourcery.com>
4589
4590         * config/sh/sh.c (nonpic_symbol_mentioned_p): Allow UNSPEC_TPOFF.
4591
4592 2009-10-21  Jakub Jelinek  <jakub@redhat.com>
4593
4594         PR other/25507
4595         * doc/invoke.texi: Document -print-multi-os-directory.
4596
4597 2009-10-21  Jack Howarth  <howarth@bromo.med.uc.edu>
4598
4599         PR c++/41313
4600         * gcc/config/darwin10.h: Use default_emit_unwind_label.
4601         * gcc/config/darwin.c: Disable -freorder-blocks-and-partition
4602         when darwin_emit_unwind_label is used.
4603
4604 2009-10-21  Eric Botcazou  <ebotcazou@adacore.com>
4605
4606         * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Tweak
4607         order of checks.
4608
4609 2009-10-20  Richard Henderson  <rth@redhat.com>
4610
4611         * tree-eh.c (lower_try_finally_copy): Do lower_eh_constructs_1
4612         before emit_post_landing_pad.
4613
4614 2009-10-20  Adam Nemet  <anemet@caviumnetworks.com>
4615
4616         * config/mips/mips.c (mips_binary_cost): Add new argument speed.
4617         Use when calling rtx_costs.
4618         (mips_rtx_costs): Fix formatting.  Use argument speed rather than the
4619         global optimize_size.  Pass speed to mips_binary_cost.
4620
4621 2009-10-20  Jakub Jelinek  <jakub@redhat.com>
4622
4623         * config/rs6000/rs6000.c (def_builtin): Set TREE_READONLY instead
4624         of TREE_CONSTANT.
4625
4626 2009-10-20  Richard Sandiford  <rdsandiford@googlemail.com>
4627
4628         * rtl.h (simplify_replace_fn_rtx): Declare.
4629         (wrap_constant, unwrap_constant): Delete.
4630         * cfgexpand.c (unwrap_constant, wrap_constant): Delete.
4631         (expand_debug_expr): Don't call wrap_constant.
4632         * combine.c (rtx_subst_pair): Only define for AUTO_INC_DEC.
4633         (auto_adjust_pair): Fold into...
4634         (propagate_for_debug_subst): ...here.  Only define for AUTO_INC_DEC.
4635         Just return a new value.
4636         (propagate_for_debug): Use simplify_replace_fn_rtx for AUTO_INC_DEC,
4637         otherwise use simplify_replace_rtx.
4638         * cselib.c (wrap_constant): Reinstate old definition.
4639         (cselib_expand_value_rtx_1): Don't wrap constants.
4640         * gcse.c (try_replace_reg): Don't use copy_rtx in the call to
4641         simplify_replace_rtx.
4642         (bypass_block): Fix formatting in calls to simplify_replace_rtx.
4643         * reload1.c (reload): Skip all uses for an insn before adjusting it.
4644         Use simplify_replace_rtx.
4645         * simplify-rtx.c (simplify_replace_fn_rtx): New function,
4646         adapted from...
4647         (simplify_replace_rtx): ...here.  Turn into a wrapper for
4648         simplify_replace_fn_rtx.
4649         (simplify_unary_operation): Don't unwrap CONSTs.
4650         * var-tracking.c (check_wrap_constant): Delete.
4651         (vt_expand_loc_callback): Don't call it.
4652         (vt_expand_loc): Likewise.
4653
4654 2009-10-20  Pascal Obry  <obry@adacore.com>
4655             Eric Botcazou  <ebotcazou@adacore.com>
4656
4657         * config/i386/cygming.h (DWARF_FRAME_REGNUM): Add enclosing parens.
4658
4659 2009-10-20  Michael Matz  <matz@suse.de>
4660
4661         * loop-invariant.c (create_new_invariant): Use different magic number.
4662
4663 2009-10-20  Richard Earnshaw  <rearnsha@arm.com>
4664
4665         PR target/39247
4666         * arm.c (arm_override_options): Forcibly disable hot/cold block
4667         partitioning.
4668
4669 2009-10-20  Alexandre Oliva  <aoliva@redhat.com>
4670
4671         PR debug/41739
4672         * haifa-sched.c (try_ready): Skip debug deps updating speculation
4673         status.
4674
4675 2009-10-20  Richard Guenther  <rguenther@suse.de>
4676
4677         * ggc-page.c: Include cfgloop.h.
4678         (struct max_alignment): Drop long double, add void *.
4679         (extra_order_size_table): Add low non-power-of-two multiples
4680         of MAX_ALIGNMENT.  Drop small type-based entries, add
4681         tree_type, cgraph_node and loop.
4682         * alloc-pool.c (struct allocation_object_def): Drop long double
4683         aligning element.
4684
4685 2009-10-20  Jakub Jelinek  <jakub@redhat.com>
4686
4687         PR debug/41340
4688         * loop-invariant.c (calculate_loop_reg_pressure): Don't count regs
4689         referenced just in DEBUG_INSNs.
4690
4691 2009-10-20  Richard Guenther  <rguenther@suse.de>
4692
4693         PR lto/41761
4694         * gimple.c (gimple_register_type): Make sure we register
4695         the types main variant first.
4696
4697 2009-10-20  Richard Guenther  <rguenther@suse.de>
4698
4699         * gimple.c (gimple_types_compatible_p): Simplify.  Move
4700         cheap checks before hashtable queries.  Add checks for
4701         TYPE_NONALIASED_COMPONENT and DECL_NONADDRESSABLE_P.
4702
4703 2009-10-20  Eric Botcazou  <ebotcazou@adacore.com>
4704
4705         * tree-sra.c (build_ref_for_offset_1) <RECORD_TYPE>: Skip fields
4706         without size or with size that can't be represented as a host integer.
4707
4708 2009-10-20  Alexandre Oliva  <aoliva@redhat.com>
4709
4710         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Don't regard
4711         the removal of a debug stmt as a significant change.
4712
4713 2009-10-20  Wolfgang Gellerich  <gellerich@de.ibm.com>
4714
4715         * config/s390/s390.md: Added agen condition to operand
4716         forwarding bypasses.  Added bypass for early address generation
4717         use of int results.  Updated comments.
4718
4719 2009-10-20  Stefan Dösinger  <stefan@codeweavers.com>
4720
4721         * config/i386/i386.c: Remove signal.h #include.
4722
4723 2009-10-20  Jie Zhang  <jie.zhang@analog.com>
4724
4725         * simplify-rtx.c (simplify_const_unary_operation): Handle SS_ABS.
4726         * doc/rtl.texi: Document ss_abs.
4727
4728 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
4729
4730         * c-common.c (c_parse_error): Handle CPP_UTF8STRING.
4731         * c-lex.c (c_lex_with_flags): Likewise.  Test C_LEX_STRING_NO_JOIN
4732         instead of C_LEX_RAW_STRINGS.
4733         (lex_string): Handle CPP_UTF8STRING.
4734         * c-parser.c (c_parser_postfix_expression): Likewise.
4735         * c-pragma.h (C_LEX_RAW_STRINGS): Rename to ...
4736         (C_LEX_STRING_NO_JOIN): ... this.
4737
4738 2009-10-19  Anatoly Sokolov  <aesok@post.ru>
4739
4740         * config/cris/cris.c (cris_function_value, cris_libcall_value,
4741         cris_function_value_regno_p): New functions.
4742         (cris_promote_function_mode): Update comment.
4743         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
4744         * config/cris/cris.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
4745         (FUNCTION_VALUE_REGNO_P): Redefine, use cris_function_value_regno_p.
4746         * config/cris/cris-protos.h (cris_function_value_regno_p): Declare.
4747
4748 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
4749
4750         * unwind-dw2.c (execute_stack_op): Fix operand order for
4751         DW_OP_le, DW_OP_ge, DW_OP_lt and DW_OP_gt.
4752
4753 2009-10-19  Eric Botcazou  <ebotcazou@adacore.com>
4754
4755         * gimple-low.c (struct lower_data): Add cannot_fallthru field.
4756         (lower_stmt) <GIMPLE_BIND>: Add comment.
4757         <GIMPLE_COND, GIMPLE_GOTO, GIMPLE_SWITCH>: Set cannot_fallthru to true
4758         and return.
4759         <GIMPLE_RETURN>: Remove the statement if cannot_fallthru is set.
4760         Otherwise lower it and set cannot_fallthru to true.
4761         <GIMPLE_TRY>: Update cannot_fallthru for GIMPLE_TRY_FINALLY and return.
4762         <GIMPLE_CATCH, GIMPLE_EH_FILTER>: Set cannot_fallthru to false.
4763         <GIMPLE_CALL>: Set cannot_fallthru to false for BUILT_IN_SETJMP and
4764         to true for a noreturn call.  Do not remove statements.
4765         <GIMPLE_OMP_PARALLEL, GIMPLE_OMP_TASK>: Set cannot_fallthru to false.
4766         Set cannot_fallthru to false on function exit.
4767         (gimple_stmt_may_fallthru) <GIMPLE_SWITCH>: Really return false.
4768         <GIMPLE_ASSIGN>: Remove.
4769
4770 2009-10-19  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
4771
4772         * config/s390/s390.c (s390_z10_optimize_cmp): Don't touch FP compares.
4773
4774 2009-10-19  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
4775
4776         * config/s390/s390.c (s390_z10_optimize_cmp): Use
4777         next/prev_active_insn to skip DEBUG_INSNs as well.
4778
4779 2009-10-19  Joseph Myers  <joseph@codesourcery.com>
4780
4781         * config/arm/arm.c (output_move_neon): Use DImode in call to
4782         adjust_address.
4783
4784 2009-10-19  Matthias Klose  <doko@ubuntu.com>
4785
4786         PR target/40134
4787         * config.gcc (arm*-*-linux-*eabi): Use config/t-slibgcc-libgcc.
4788
4789 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
4790
4791         * cfgexpand.c (expand_debug_expr): Fail if bitpos < 0 for non-MEM op0.
4792
4793 2009-10-17  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
4794
4795         PR middle-end/41738
4796         * optabs.c (expand_binop): Make mode of shift count expression mode
4797         of shift count not target.
4798         Remove indent nit.
4799
4800 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
4801
4802         * tree-nested.c (convert_nonlocal_reference_stmt) <GIMPLE_COND>: New
4803         case.  Force using values to replace references within the statement.
4804         (convert_local_reference_stmt): Likewise.
4805
4806 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
4807
4808         * gimple-low.c (lower_stmt) <GIMPLE_CALL>: If the call is noreturn,
4809         remove a subsequent GOTO or RETURN statement.
4810
4811 2009-10-17  Andy Hutchinson  <hutchinsonandy@aim.com>
4812
4813         * config/avr.md (*movqi): Add zero as equally preferable constraint
4814         as general register.
4815         (*movhi): Ditto.
4816
4817 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
4818
4819         * print-tree.c (print_node): Fix string for DECL_STRUCT_FUNCTION.
4820
4821 2009-10-17  Richard Guenther  <rguenther@suse.de>
4822
4823         * lto-streamer-in.c (lto_input_location): Try to reuse previous maps.
4824
4825 2009-10-17  Richard Guenther  <rguenther@suse.de>
4826
4827         * lto-streamer-in.c (input_gimple_stmt): Fixup FIELD_DECL
4828         operands in COMPONENT_REFs.
4829
4830 2009-10-17  Anatoly Sokolov  <aesok@post.ru>
4831
4832         * targhooks.c (default_libcall_value): Don't use LIBCALL_VALUE macro
4833         if not defined. Change type of second argument to const_rtx.
4834         (default_function_value): Call gcc_unreachable if FUNCTION_VALUE
4835         macro not defined.
4836         * targhooks.h (default_libcall_value): Update prototype.
4837         * target.h (struct gcc_target): Change type of second argument of
4838         libcall_value to const_rtx.
4839         * config/arm/arm.c (arm_libcall_value): Change type of second argument
4840         to const_rtx.
4841         (arm_libcall_uses_aapcs_base): Change type of argument to const_rtx.
4842         * doc/tm.texi (TARGET_LIBCALL_VALUE):  Revise documentation.
4843
4844 2009-10-17  Jakub Jelinek  <jakub@redhat.com>
4845
4846         PR debug/40521
4847         * debug.h (struct gcc_debug_hooks): Add assembly_start hook.
4848         * cgraphunit.c (cgraph_optimize): Call it.
4849         * dwarf2out.c (dwarf2out_init): Move .cfi_sections printing into...
4850         (dwarf2out_assembly_start): ... here.  New hook.
4851         (dwarf2out_debug_hooks): Add dwarf2out_assembly_start.
4852         * debug.c (do_nothing_debug_hooks): Do nothing for assembly_start
4853         hook.
4854         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Likewise.
4855         * sdbout.c (sdb_debug_hooks): Likewise.
4856         * vmsdbgout.c (vmsdbg_debug_hooks): Add vmsdbgout_assembly_start.
4857         (vmsdbgout_assembly_start): New hook.
4858
4859 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
4860
4861         * rtl.h (RTL_LOCATION): Fix typo.
4862
4863 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
4864
4865         * print-rtl.c (print_rtx): Print locators in asm_operands
4866         and asm_input.
4867
4868 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
4869
4870         PR debug/41535
4871         * sched-deps.c (depl_on_debug_p): New.
4872         (attach_dep_link): Reject debug deps before nondebug deps.
4873         (add_to_deps_list): Insert debug deps after nondebug deps.
4874         (sd_lists_empty_p): Stop at first nonempty list.  Disregard debug
4875         deps.
4876         (sd_add_dep): Do not reject debug deps.
4877         (add_insn_mem_dependence): Don't count debug deps.
4878         (remove_from_deps): Likewise.
4879         (sched_analyze_2): Set up mem deps on debug insns.
4880         (sched_analyze_insn): Record reg uses for deps on debug insns.
4881         * haifa-sched.c (schedule_insn): Reset deferred debug insn.  Don't
4882         try_ready nondebug insn after debug insn.
4883         * ddg.c (create_ddg_dep_from_intra_loop_link,
4884         create_ddg_dep_no_link): Don't reject debug deps.
4885
4886 2009-10-16  Richard Guenther  <rguenther@suse.de>
4887
4888         * lto-symtab.c (merge_incomplete_and_complete_type): Remove.
4889         (maybe_merge_incomplete_and_complete_type): Likewise.
4890         (lto_symtab_merge): Do not call them.  Do not warn for
4891         complete vs. incomplete compatible types.
4892         (lto_symtab_merge_decls_2): Simplify.
4893         * gimple.c (gimple_force_type_merge): Remove.
4894         (gimple_types_compatible_p): Make it static.
4895         * gimple.h (gimple_force_type_merge): Remove.
4896         (gimple_types_compatible_p): Likewise.
4897
4898 2009-10-16  Jakub Jelinek  <jakub@redhat.com>
4899
4900         * dwarf2out.c (mem_loc_descriptor) <case ZERO_EXTRACT>: Cast
4901         DWARF2_ADDR_SIZE to int to avoid signed vs. unsigned warnings.
4902
4903 2009-10-16  Richard Guenther  <rguenther@suse.de>
4904
4905         PR tree-optimization/41728
4906         * tree-ssa-dom.c (optimize_stmt): Mark the stmt modified
4907         if fold_stmt did anything.
4908
4909 2009-10-16  Richard Guenther  <rguenther@suse.de>
4910
4911         PR lto/41715
4912         * lto-streamer-in.c (lto_input_tree_ref): Revert last change.
4913         (maybe_fixup_handled_component): New function.
4914         (input_gimple_stmt): Fixup mismatched decl replacements.
4915
4916 2009-10-16  Richard Guenther  <rguenther@suse.de>
4917
4918         PR lto/41713
4919         * lto-streamer-out.c (lto_output_tree_ref): Handle DEBUG_EXPR_DECL
4920         the same as VAR_DECL.
4921
4922 2009-10-16  Richard Guenther  <rguenther@suse.de>
4923
4924         * gimple.c (iterative_hash_gimple_type): For integer types
4925         also hash their minimum and maximum values and the string flag.
4926         For array types hash their domain and the string flag.
4927
4928 2009-10-16  Richard Guenther  <rguenther@suse.de>
4929
4930         * gimple.c (gimple_types_compatible_p): Restrict completing
4931         types to record or unions.  Simplify completion.
4932         Do not merge records or unions with different
4933         TYPE_STRUCTURAL_EQUALITY_P tag.
4934         (iterative_hash_gimple_type): Restrict non-recursing into
4935         pointer targets for records and unions.
4936
4937 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
4938
4939         PR debug/41717
4940         * cfgexpand.c (expand_debug_expr): Handle CONJ_EXPR.
4941         * dwarf2out.c (mem_loc_descriptor): Don't handle
4942         POST_INT/POST_DEC/POST_MODIFY like SUBREG.  For SUBREG
4943         punt if it is not lowpart subreg or if inner mode isn't
4944         MODE_INT.
4945
4946 2009-10-16  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
4947
4948         * config/s390/s390.c (s390_z10_optimize_cmp): Skip notes when
4949         investigating previous or next insns.
4950
4951 2009-10-16  Eric Botcazou  <ebotcazou@adacore.com>
4952
4953         * tree-sra.c (build_ref_for_offset_1): Update comment.
4954
4955 2009-10-16  Wolfgang Gellerich  <gellerich@de.ibm.com>
4956
4957         * config/s390/s390.md (atype): Added missing values.
4958
4959 2009-10-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4960
4961         PR target/41702
4962         * pa.md (casesi): Use sign extended index in call to gen_casesi64p.
4963         (casesi64p): Update pattern to reflect above.
4964
4965 2009-10-15  Steve Ellcey  <sje@cup.hp.com>
4966
4967         PR rtl-optimization/41697
4968         * sel-sched-ir.h (_eligible_successor_edge_p): Check successor count.
4969
4970 2009-10-15  Michael Meissner  <meissner@linux.vnet.ibm.com>
4971
4972         PR target/23983
4973         * config/rs6000/predicates.md: Update copyright year.
4974         * config/rs6000/altivec.md: Ditto.
4975
4976         * config/rs6000/t-rs6000 (TM_H): Add rs6000-builtin.def.
4977         (MD_INCLUDES): Add a2.md.
4978
4979         * config/rs6000/rs6000.c (rs6000_builtin_decls): Change
4980         RS6000_BUILTIN_COUNT to MAX_RS6000_BUILTINS.
4981         (builtin_classify): New static vector to classify various builtins
4982         to get the tree attributes correct.
4983         (def_builtin): Set the attributes of builtins based on what the
4984         builtin does (i.e. memory operation, floating point, saturation
4985         need special attributes, others are pure functions).
4986
4987         * config/rs6000/rs6000.h (enum rs6000_btc): New enum to classify
4988         the builtins.
4989         (enum rs6000_builtins): Include rs6000-builtin.def to define the
4990         builtins.  Change the end marker to MAX_RS6000_BUILTINS from
4991         RS6000_BUILTIN_COUNT.
4992         (rs6000_builtin_decls): Change RS6000_BUILTIN_COUNT to
4993         MAX_RS6000_BUILTINS.
4994
4995         * config/rs6000/rs6000-builtin.def: New file that combines the
4996         builtin enumeration name and attributes.
4997
4998 2009-10-15  H.J. Lu  <hongjiu.lu@intel.com>
4999
5000         * config/i386/linux.h (ASM_SPEC): Add --32.
5001
5002 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
5003
5004         * dwarf2out.c (dwarf_tag_name): Handle DW_TAG_rvalue_reference_type
5005         and DW_TAG_template_alias.
5006         (dwarf_attr_name): Handle DW_AT_main_subprogram,
5007         DW_AT_data_bit_offset, DW_AT_const_expr, DW_AT_enum_class,
5008         DW_AT_linkage_name, DW_AT_GNU_guarded_by, DW_AT_GNU_pt_guarded_by,
5009         DW_AT_GNU_guarded, DW_AT_GNU_pt_guarded, DW_AT_GNU_locks_excluded,
5010         DW_AT_GNU_exclusive_locks_required, DW_AT_GNU_shared_locks_required
5011         and DW_AT_GNU_odr_signature.
5012         (dwarf_form_name): Handle DW_FORM_sec_offset, DW_FORM_exprloc,
5013         DW_FORM_flag_present and DW_FORM_ref_sig8.
5014         (output_signature): Only print name on the first byte.
5015         (output_die): Likewise for dw_val_class_data8.
5016
5017 2009-10-15  Alexander Monakov  <amonakov@ispras.ru>
5018
5019         * doc/invoke.texi: Clarify that most optimizations are not enabled
5020         without -O.
5021
5022 2009-10-15  Richard Guenther  <rguenther@suse.de>
5023
5024         PR lto/41668
5025         * gimple.c (compare_type_names_p): Handle anonymous names
5026         differently based on new mode argument.
5027         (gimple_types_compatible_p): For structs also compare the tags.
5028         (iterative_hash_type_name): Rename to ...
5029         (iterative_hash_name): ... this.  Hash all names.
5030         (iterative_hash_gimple_type): Fix hashing the struct tag of
5031         pointer targets.  Hash field decl names.
5032
5033 2009-10-15  Richard Guenther  <rguenther@suse.de>
5034
5035         PR lto/41669
5036         * gimple.c (gimple_get_alias_set): Avoid recursing on
5037         invalid type topology.
5038
5039 2009-10-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5040
5041         * config/spu/spu.c (get_branch_target): Use extract_asm_operands.
5042
5043 2009-10-15  Richard Guenther  <rguenther@suse.de>
5044
5045         * tree.c (free_lang_data_in_decl): Free DECL_FCONTEXT.
5046
5047 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
5048
5049         * config/rs6000/option-defaults.h (OPTION_DEFAULT_SPECS): Don't
5050         add --with-tune{,-32,-64} configured default for -mtune if explicit
5051         -mcpu is used.
5052
5053 2009-10-14  Daniel Gutson  <dgutson@codesourcery.com>
5054
5055         * config/arm/neon.md (neon_vshll_n<mode>): Checking Bounds fixed.
5056
5057 2009-10-14  DJ Delorie  <dj@redhat.com>
5058
5059         * config/h8300/h8300.c (F): New.
5060         (Fpa): New.
5061         (h8300_emit_stack_adjustment): Call them.
5062         (push): Likewise.
5063         (h8300_push_pop): Likewise.
5064         (h8300_expand_prologue): Likewise.
5065         * config/h8300/h8300.h (DWARF2_DEBUGGING_INFO): Define.
5066         (MUST_USE_SJLJ_EXCEPTIONS): Define.
5067         (INCOMING_RETURN_ADDR_RTX): Define.
5068         (INCOMING_FRAME_SP_OFFSET): Define.
5069         (DWARF_CIE_DATA_ALIGNMENT): Define.
5070
5071 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
5072
5073         * stor-layout.c (place_field): Don't emit -Wpadded warnings for
5074         fields in builtin structs.
5075         (finalize_record_size): Likewise.
5076
5077 2009-10-14  Richard Guenther  <rguenther@suse.de>
5078
5079         * gimple.c (gtc_ob): New global.
5080         (struct type_pair_d): Replace pointers with type UIDs.
5081         (type_pair_hash): Adjust.
5082         (type_pair_eq): Likewise.
5083         (lookup_type_pair): Likewise.  Allocate from an obstack.
5084         (gimple_force_type_merge): Adjust.
5085         (gimple_types_compatible_p): Likewise.
5086         (free_gimple_type_tables): Free the obstack.
5087
5088 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
5089
5090         * tree-parloops.c (separate_decls_in_region_debug_bind): Drop debug
5091         stmts setting DEBUG_EXPR_DECLs.
5092
5093         * cfgexpand.c (expand_debug_expr): Ignore zero-length bitfields.
5094         Don't crash if mode1 is VOIDmode.
5095
5096 2009-09-26  Vladimir Makarov  <vmakarov@redhat.com>
5097
5098         * params.def (PARAM_IRA_LOOP_RESERVED_REGS): New.
5099         * params.h (IRA_LOOP_RESERVED_REGS): New.
5100         * tree-pass.h (pass_subregs_of_mode_init,
5101         pass_subregs_of_mode_finish): Remove.
5102         * passes.c (pass_subregs_of_mode_init,
5103         pass_subregs_of_mode_finish): Remove.
5104         (pass_reginfo_init): Move before loop optimizations.
5105         * config/i386/i386.h (STACK_REG_COVER_CLASS): Define.
5106         * common.opt (fira-loop-pressure): New.
5107         * toplev.h (flag_ira_loop_pressure): New.
5108         * rtl.h (init_subregs_of_mode, finish_subregs_of_mode): New externals.
5109         * reginfo.c (init_subregs_of_mode, finish_subregs_of_mode):
5110         Make external and void type functions.
5111         (gate_subregs_of_mode_init, pass_subregs_of_mode_init,
5112         pass_subregs_of_mode_finish): Remove.
5113         * ira-costs.c (init_costs): Call init_subregs_of_mode.
5114         * regmove.c: Include ira.h.
5115         (regmove_optimize): Call ira_set_pseudo_classes after IRA based
5116         register pressure calculation in loops.
5117         * loop-invariant.c: Include REGS_H and ira.h.
5118         (struct loop_data): New members max_reg_pressure, regs_ref, and
5119         regs_live.
5120         (struct invariant): New member orig_regno.
5121         (curr_loop): New variable.
5122         (find_exits): Initialize regs_ref and regs_live.
5123         (create_new_invariant): Initialize orig_regno.
5124         (get_cover_class_and_nregs): New.
5125         (get_inv_cost): Make aregs_needed an array.  Use regs_needed as an
5126         array.  Add code for flag_ira_loop_pressure.
5127         (gain_for_invariant): Make new_regs an array.  Add code for
5128         flag_ira_loop_pressure.
5129         (best_gain_for_invariant): Ditto.
5130         (set_move_mark): New parameter gain.  Use it for debugging output.
5131         (find_invariants_to_move): Make regs_needed and new_regs an array.
5132         Add code for flag_ira_loop_pressure.
5133         (move_invariant_reg): Set up orig_regno.
5134         (move_invariants): Set up reg classes for pseudos for
5135         flag_ira_loop_pressure.
5136         (free_loop_data): Clear regs_ref and regs_live.
5137         (curr_regs_live, curr_reg_pressure, regs_set, n_regs_set,
5138         get_regno_cover_class, change_pressure, mark_regno_live,
5139         mark_regno_death, mark_reg_store, mark_reg_clobber,
5140         mark_reg_death, mark_ref_regs, calculate_loop_reg_pressure): New.
5141         (move_loop_invariants): Calculate pressure.  Initialize curr_loop.
5142         * ira.c (ira): Call ira_set_pseudo_classes after IRA based
5143         register pressure calculation in loops if new regs were added.
5144         Call finish_subregs_of_mode.
5145         * opts.c (decode_options): Set up flag_ira_loop_pressure.
5146         * Makefile.in (loop-invariant.o): Add ira.h.
5147         (regmove.o): Ditto.
5148         * doc/invoke.texi (-fira-loop-pressure, ira-loop-reserved-regs):
5149         Describe.
5150         * doc/tm.texi (STACK_REG_COVER_CLASS): Describe.
5151
5152 2009-10-14  Richard Guenther  <rguenther@suse.de>
5153
5154         * lto-symtab.c (lto_symtab_compatible): Fold in ...
5155         (lto_symtab_merge): ... here.  Rewrite both to take the
5156         prevailing and a to-be-merged entry and to queue diagnostics properly.
5157         (lto_symtab_resolve_replaceable_p): New predicate for
5158         symbol resolution.
5159         (lto_symtab_resolve_can_prevail_p): Likewise.
5160         (lto_symtab_resolve_symbols): Rewrite.  Fold in code that
5161         handles merging commons by choosing the largest decl.  Fold
5162         in code that gives ODR errors.
5163         (lto_symtab_merge_decls_2): Simplify a lot.  Emit queued
5164         diagnostics here.
5165         (lto_symtab_merge_decls_1): Re-structure.  Deal with the
5166         case of no prevailing decl here.  Diagnose mismatches
5167         in object types here.  Drop all but the prevailing decls.
5168         (lto_symtab_prevailing_decl): Return the single prevailing decl.
5169         * lto-streamer-in.c (lto_input_tree_ref): Deal with
5170         VIEW_CONVERT_EXPRs in decl slots.  Unshare the tree in this case.
5171
5172 2009-10-14  Richard Guenther  <rguenther@suse.de>
5173
5174         PR lto/41521
5175         * lto-streamer-in.c (input_bb): Replace debug stmts with
5176         nops instead of dropping them.
5177
5178 2009-10-14  Nick Clifton  <nickc@redhat.com>
5179
5180         * gcc/doc/extended.texi: Replace the dash character with @minus{}
5181         in situations where it is being used as a minus symbol.
5182         * gcc/doc/tm.texi: Likewise.
5183         * gcc/doc/md.texi: Likewise.
5184
5185 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
5186
5187         PR preprocessor/41543
5188         * input.h (BUILTINS_LOCATION): Change to 1 from 2.
5189         Assert BUILTINS_LOCATION < RESERVED_LOCATION_COUNT.
5190         * tree.c: Include intl.h.
5191         (expand_location): Handle BUILTINS_LOCATION.
5192         * Makefile.in (tree.o): Depend on intl.h.
5193
5194         PR debug/41695
5195         * dwarf2out.c (dwarf2out_var_location): Always clear
5196         last_postcall_label when changing last_label.
5197
5198 2009-10-14  Pascal Obry  <obry@adacore.com>
5199
5200         * gcc.c (DEFAULT_SWITCH_CURTAILS_COMPILATION): Add -E.
5201         (process_command): Handle -E as done with -c and -S.  Do not add
5202         the target executable suffix to the output file when -E is used.
5203         (main): Adjust error message accordingly.
5204
5205 2009-10-14  Alexandre Oliva  <aoliva@redhat.com>
5206
5207         PR debug/41343
5208         PR debug/41447
5209         PR debug/41264
5210         PR debug/41338
5211         * tree.c (tree_node_structure_for_code): DEBUG_EXPR_DECL uses
5212         decl with rtl.
5213         (tree_code_size): Likewise.
5214
5215 2009-10-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5216
5217         * builtins.c (fold_builtin_1): Support complex "arc" functions.
5218         * real.h (HAVE_mpc_arc): Define.
5219
5220 2009-10-14  Kaz Kojima  <kkojima@gcc.gnu.org>
5221
5222         * config/sh/sh.c (TARGET_BUILTIN_DECL): Define.
5223         (struct builtin_description): Add fndecl field.
5224         (bdesc): Remove const qualifier.  Update initializer.
5225         (sh_media_init_builtins): Remove const qualifier for d.  Record
5226         the result of add_builtin_function to the fndecl field.
5227         (sh_builtin_decl): New.
5228         (sh_media_builtin_decl): New.
5229
5230 2009-10-14  Hans-Peter Nilsson  <hp@axis.com>
5231
5232         PR target/38948
5233         * config/cris/cris.h (SECONDARY_RELOAD_CLASS): Handle reload
5234         requests between special registers.
5235
5236 2009-10-13  Eric Botcazou  <ebotcazou@adacore.com>
5237
5238         * dwarf2out.c (mem_loc_descriptor): Accept UNGT as well.
5239
5240 2009-10-13  Richard Henderson  <rth@redhat.com>
5241
5242         PR tree-optimization/41377
5243         * tree-eh.c (unsplit_eh): Propagate degenerate PHIs.
5244         (cleanup_empty_eh_merge_phis): New change_region parameter;
5245         pass it on to redirect_eh_edge_1.  Update callers.
5246         (cleanup_empty_eh_unsplit): Don't require an existing EH label
5247         at the destination block.
5248
5249 2009-10-13  Basile Starynkevitch  <basile@starynkevitch.net>
5250
5251         * passes.c (register_pass): Replaced gcc_unreachable by
5252         fatal_error on failure. Mentions plugins in comments & messages.
5253
5254 2009-10-13  Jakub Jelinek  <jakub@redhat.com>
5255
5256         PR target/41693
5257         * rtl.h (DEBUG_EXPR_TREE_DECL): Define.
5258         * sched-vis.c (print_value): Use it.
5259         * cselib.c (cselib_hash_rtx): Likewise.
5260         * print-rtl.c (print_rtx): Likewise.
5261         * cfgexpand.c (expand_debug_rtx): Likewise.
5262         * var-tracking.c (vt_expand_loc_callback): Likewise.
5263
5264 2009-10-13  Richard Guenther  <rguenther@suse.de>
5265
5266         PR lto/41565
5267         * opts.c (handle_option): Split out code to handle setting
5268         the options flag var ...
5269         (set_option): ... here.
5270         * opts.h (set_option): Declare.
5271         * lto-opts.c (register_user_option_p): Include -fexceptions
5272         and all position independent code variants.
5273         (handle_common_option): Remove.
5274         (lto_reissue_options): Use set_option.
5275
5276 2009-10-13  Martin Jambor  <mjambor@suse.cz>
5277
5278         PR tree-optimization/41661
5279         * ipa-prop.c (compute_complex_pass_through): Allow only operations
5280         that are tcc_comparisons or do not change the type in any
5281         un-usleless way.
5282         * ipa-cp.c (ipcp_lattice_from_jfunc): Request boolean type when
5283         folding tcc_comparison operations.
5284
5285 2009-10-13  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
5286
5287         * config/s390/s390.c (s390_encode_section_info): Handle BLKmode
5288         properly.
5289
5290 2009-10-12  Alexandre Oliva  <aoliva@redhat.com>
5291
5292         PR debug/41343
5293         PR debug/41447
5294         PR debug/41264
5295         PR debug/41338
5296         * tree.def (DEBUG_EXPR_DECL): New.
5297         * rtl.def (DEBUG_EXPR): New.
5298         * gengtype.c (adjust_field_rtx_def): Handle it.
5299         * tree-ssa.c (propagate_var_def_into_debug_stmts): Rename to...
5300         (insert_debug_temp_for_var_def): ... this.  Drop support for
5301         moving.  Take iterator for def stmt; insert debug stmt before it.
5302         Scan early for use count and kind in debug stmts.
5303         (propagate_defs_into_debug_stmts): Rename to...
5304         (insert_debug_temps_for_defs): ... this.  Likewise.
5305         * tree.h (DEBUG_TEMP_UID): New.
5306         * tree.c (next_debug_decl_uid): New.
5307         (make_node_stat): Count debug decls separately.
5308         (copy_node_stat): Likewise.
5309         * cfgexpand.c (expand_debug_expr): Handle DEBUG_EXPR_DECL.
5310         * var-tracking.c (dv_is_decl_p): Recognize it.
5311         (VALUE_RECURSED_INTO): Apply to DEBUG_EXPRs too.
5312         (track_expr_p): Track expanded DEBUG_EXPR_DECLs.
5313         (vt_expand_loc_callback): Expand DEBUG_EXPRs.
5314         (emit_note_insn_var_location): Don't emit notes for DEBUG_EXPR_DECLs.
5315         * cselib.c (rtx_equal_for_cselib_p): Handle DEBUG_EXPR.
5316         (cselib_hash_rtx): Likewise.
5317         (cselib_expand_value_rtx_1): Use callback for DEBUG_EXPR.
5318         * tree-ssa-operands.c (get_expr_operands): Skip DEBUG_EXPR_DECLs in
5319         debug bind stmts.
5320         * emit-rtl.c (verify_rtx_sharing): Handle DEBUG_EXPR and VALUE.
5321         (copy_rtx_if_shared_1, reset_used_flags, set_used_flags): Likewise.
5322         * rtl.c (copy_rtx): Likewise.
5323         (rtx_equal_p_cb, rtx_equal_p): Handle DEBUG_EXPR.
5324         * print-rtl.c (print_rtx): Likewise.
5325         * sched-vis.c (print_value): Likewise.
5326         (print_insn): Handle DEBUG_EXPR_DECL.
5327         * tree-dump.c (dequeue_and_dump): Likewise.
5328         * tree-pretty-print.c (dump_decl_name, dump_generic_node): Likewise.
5329         * gimple-iterator (gsi_replace): Check for same lhs.
5330         (gsi_remove): Insert debug temps.
5331         * tree-ssa-loop-im.c (rewrite_reciprocal): Replace with same lhs.
5332         (move_computations_stmt): Drop explicit propagation into debug stmts.
5333         (rewrite_bittest): Likewise.  Use gsi_remove for propagation.
5334         * tree-ssa-reassoc.c (rewrite_expr_tree, linearize_expr): Likewise.
5335         * tree-ssa-sink.c (statement_sink_location): Likewise.
5336         * tree-ssa-forwprop (forward_propagate_addr_expr): Likewise.
5337         * tree-ssanames.c (release_ssa_name): Adjust for rename.
5338         * tree-flow.h: Likewise.
5339         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Don't mark
5340         debug temps without values.
5341         (eliminate_unnecessary_stmts): Don't discard just-inserted
5342         debug stmts.
5343
5344 2009-10-12  Hans-Peter Nilsson  <hp@axis.com>
5345
5346         PR target/26515
5347         * config/cris/cris.md (andu): Check that operand 1 is one of the
5348         general registers.  Fix typo in head comment.
5349
5350 2009-10-12  Stefan Dösinger  <stefan@codeweavers.com>
5351
5352         * config/i386/i386.md (vswapmov): New.
5353         * config/i386/i386.c (ix86_handle_fndecl_attribute): New.
5354         (ix86_function_ms_hook_prologue): New.
5355         (ix86_expand_prologue): Handle ms_hook_prologue attribute.
5356         * configure.ac: Test for swap suffix support in as.
5357         * configure: Rebuild.
5358
5359 2009-10-12  Jakub Jelinek  <jakub@redhat.com>
5360
5361         PR target/41680
5362         * config/i386/i386.md (split after *testqi_ext_3_rex64): Only narrow
5363         paradoxical subregs to prevent partial register stalls if the inner
5364         mode is integer mode.
5365
5366 2009-10-12  Uros Bizjak  <ubizjak@gmail.com>
5367
5368         * config/i386/i386.md (*setcc_<mode>_2): Remove insn pattern.
5369
5370 2009-10-12  Dodji Seketeli  <dodji@redhat.com>
5371
5372         PR c++/41570
5373         * gcc/dwarf2out.c (template_parameter_pack_die,
5374         gen_formal_parameter_pack_die): Use add_name_and_src_coords_attributes.
5375
5376 2009-10-12  Alexandre Oliva  <aoliva@redhat.com>
5377
5378         PR debug/41616
5379         * tree-into-ssa.c (insert_phi_nodes_for): Build debug bind stmts
5380         on updates too.
5381         (maybe_register_def): Likewise.  Take stmt iterator.
5382         (rewrite_update_stmt): Take stmt iterator and pass it on.
5383         (rewrite_update_enter_block): Pass stmt iterator.
5384
5385 2009-10-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5386
5387         * config/spu/spu.c (TARGET_BUILTIN_DECL): Define.
5388         (spu_builtin_decl): New function.
5389
5390 2009-10-12  Uros Bizjak  <ubizjak@gmail.com>
5391
5392         * config/i386/i386.md (SWIM): New mode iterator.
5393         (mov<mode>cc): Macroize expander from mov{qi,hi,si,di}cc patterns
5394         using SWIM mode iterator.
5395         (x86_mov<mode>cc_0_m1): Macroize insn from x86_mov{si,di}cc_0_m1
5396         patterns using SWI48 mode iterator.
5397         (*x86_mov<mode>cc_0_m1_se):  Macroize insn from
5398         *x86_mov{si,di}cc_0_m1_se patterns using SWI48 mode iterator.
5399         (*x86_mov<mode>cc_0_m1_neg): New insn pattern.
5400         (*mov<mode>cc_noc): Macroize insn from *mov{hi,si,di}cc_noc
5401         patterns using SWI248 mode iterator.
5402         * config/i386/i386.c (ix86_expand_int_movcc): Update the call to
5403         gen_x86_movdicc_0_m1_rex64 for renamed function
5404
5405 2009-10-11  Jose Ruiz  <ruiz@adacore.com>
5406             Eric Botcazou  <ebotcazou@adacore.com>
5407
5408         PR target/33743
5409         * config/sparc/sol2.h (MD_UNWIND_SUPPORT): Define.
5410         * config/sparc/sol2-unwind.h: New file.
5411
5412 2009-10-11  Olivier Hainque  <hainque@adacore.com>
5413             Eric Botcazou  <ebotcazou@adacore.com>
5414
5415         PR target/33743
5416         * config/i386/sol2.h (MD_UNWIND_SUPPORT): Define.
5417         * config/i386/sol2-unwind.h: New file.
5418
5419 2009-10-11  H.J. Lu  <hongjiu.lu@intel.com>
5420
5421         PR target/41665
5422         * config/i386/i386.md (addsi_1_zext): Get the proper second
5423         operand for lea.
5424
5425 2009-10-11  Richard Sandiford  <rdsandiford@googlemail.com>
5426
5427         * simplify-rtx.c (simplify_replace_rtx): Use rtx_equal_p for
5428         all OLD_RTXes, not just REGs.  Use copy_rtx to create the
5429         replacement value.
5430
5431 2009-10-11  Richard Guenther  <rguenther@suse.de>
5432
5433         * gimple.c (iterative_hash_type_name): Do not handle special
5434         anonymous names.
5435
5436 2009-10-11  Uros Bizjak  <ubizjak@gmail.com>
5437
5438         * config/i386/i386.md (*setcc_di_1): New insn_and_split pattern.
5439         (*setcc_si_1_and): Ditto.
5440         (*setcc_si_1_movzbl): Ditto.
5441         (*setcc_<mode>_2): Ditto.
5442         (*setcc_qi): Rename from *setcc_1.
5443         (*setcc_qi_slp): Rename from *setcc_2.
5444
5445         (*zero_extendqihi2_movzbw_and splitter): Use ix86_expand_clear.
5446         (*zero_extendqisi2_movzbw_and splitter): Ditto.
5447
5448         * config/i386/i386.c (ix86_expand_clear): Remove reload_completed from
5449         "if" condition, there is already assert with reload_completed present.
5450
5451 2009-10-11  Gerald Pfeifer  <gerald@pfeifer.com>
5452
5453         * plugin.c (try_init_one_plugin): Improve constness of variable err.
5454
5455 2009-10-10  Gerald Pfeifer  <gerald@pfeifer.com>
5456
5457         * doc/install.texi (Final install): Refer to
5458         http://gcc.gnu.org/bugs/ for bug reporting.
5459
5460 2009-10-10  Peter Bergner  <bergner@vnet.ibm.com>
5461
5462         * configure.ac: Add test for dci instruction.
5463         * configure: Regenerate.
5464         * config.in: Likewise.
5465         * config.gcc: Handle --with-cpu=476 and --with-cpu=476fp.
5466         * doc/invoke.texi: Add cpu_type 476 and 476fp.
5467         (-mmulhw): Add 476 to description.
5468         (-mdlmzb): Likewise.
5469         * config/rs6000/t-fprules (MULTILIB_MATCHES_FLOAT): Include -mcpu=476.
5470         * config/rs6000/rs6000.c (processor_costs): Add ppc476_cost.
5471         (processor_target_table): Add 476 and 476fp entries.
5472         (rs6000_override_options): Use ppc476_cost for PROCESSOR_PPC476.
5473         (rs6000_issue_rate): Add CPU_PPC476.
5474         * config/rs6000/rs6000.h (ASM_CPU_476_SPEC): Define.
5475         (ASM_CPU_SPEC): Pass %(asm_cpu_476) for -mcpu=476 and -mcpu=476fp.
5476         (processor_type): Add PROCESSOR_PPC476.
5477         (EXTRA_SPECS): Add asm_cpu_476 string.
5478         * config/rs6000/rs6000.md (define_attr "type"): Add isel attribute.
5479         (define_attr "cpu"): Add ppc476.
5480         Include 476.md.
5481         Update comments for 476.
5482         (isel_signed, isel_unsigned): Change to use "isel" type attribute.
5483         * config/rs6000/vxworks.h (CPP_SPEC): Handle 464 and 476.
5484         Update copyright year.
5485         * config/rs6000/476.md: New file.
5486         * config/rs6000/40x.md: Add description for "isel" attribute.
5487         Update copyright year.
5488         * config/rs6000/440.md: Likewise.
5489         * config/rs6000/603.md: Likewise.
5490         * config/rs6000/6xx.md: Likewise.
5491         * config/rs6000/7450.md: Likewise.
5492         * config/rs6000/7xx.md: Likewise.
5493         * config/rs6000/8540.md: Likewise.
5494         * config/rs6000/cell.md: Likewise.
5495         * config/rs6000/e300c2c3.md: Likewise.
5496         * config/rs6000/e500mc.md: Likewise.
5497         * config/rs6000/mpc.md: Likewise.
5498         * config/rs6000/power4.md: Likewise.
5499         * config/rs6000/power5.md: Likewise.
5500         * config/rs6000/power6.md: Likewise.
5501         * config/rs6000/power7.md: Likewise.
5502         * config/rs6000/rios1.md: Likewise.
5503         * config/rs6000/rios2.md: Likewise.
5504         * config/rs6000/rs64.md: Likewise.
5505
5506 2009-10-10  Richard Guenther  <rguenther@suse.de>
5507
5508         PR tree-optimization/41654
5509         * tree-ssa-ifcombine.c (ifcombine_ifandif): Properly canonicalize
5510         a cond expr before calling gimple_cond_set_condition_from_tree.
5511         (ifcombine_iforif): Likewise.
5512
5513 2009-10-09  Ian Lance Taylor  <iant@google.com>
5514
5515         * configure.ac: Use AC_SEARCH_LIBS to find dlopen.
5516         * configure: Rebuild.
5517
5518 2009-10-09  Neil Vachharajani <nvachhar@google.com>
5519
5520         * doc/cpp.texi (Other Directives): Do not list #ident and #sccs as
5521         deprecated.
5522
5523 2009-10-09  Richard Guenther  <rguenther@suse.de>
5524
5525         PR lto/41638
5526         * target-def.h (TARGET_BUILTIN_DECL): Define.
5527         (TARGET_INITIALIZER): Add TARGET_BUILTIN_DECL.
5528         * target.h (struct gcc_target): Add builtin_decl target hook.
5529         * doc/tm.texi (TARGET_BUILTIN_DECL): Document.
5530         * lto-streamer-in.c (lto_get_builtin_tree): Fix handling of
5531         target builtins.
5532         * lto-streamer-out.c (lto_output_tree_pointers): Use sorry,
5533         not gcc_unreachable.
5534         (lto_output_builtin_tree): Sorry if the target does not support
5535         streaming target builtins.
5536         * config/rs6000/rs6000.c (TARGET_BUILTIN_DECL): Define.
5537         (rs6000_builtin_decl): New function.
5538         * config/i386/i386.c (TARGET_BUILTIN_DECL): Define.
5539         (ix86_builtin_decl): New function.
5540
5541 2009-10-09  Jakub Jelinek  <jakub@redhat.com>
5542
5543         PR preprocessor/41445
5544         * c-ppoutput.c (do_line_change): New function.
5545         (cb_line_change): Use it.
5546         (scan_translation_unit): Call do_line_change if
5547         avoid_paste or PREV_WHITE and token location is on a different line
5548         than print.src_line.
5549
5550         PR debug/40521
5551         * dwarf2out.c (dwarf2out_init): Test whether
5552         HAVE_GAS_CFI_SECTIONS_DIRECTIVE is non-zero instead of checking
5553         it is defined.
5554
5555         PR rtl-optimization/41646
5556         * calls.c (expand_call): For BLKmode types returned in registers
5557         avoid likely spilled hard regs in copy_blkmode_from_reg generated
5558         insns.
5559
5560 2009-10-09  Richard Guenther  <rguenther@suse.de>
5561
5562         PR tree-optimization/41634
5563         * tree-ssa-dom.c (remove_local_expressions_from_table): Assert
5564         we remove the correct elements.
5565         (optimize_stmt): Make sure to update stmt operands before
5566         optimizing redundancies.
5567
5568 2009-10-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
5569
5570         * config/s390/s390.md ("prefetch"): Remove stcmh for prefetching.
5571
5572 2009-10-09  Richard Guenther  <rguenther@suse.de>
5573
5574         PR driver/41637
5575         * lto-wrapper.c (ltrans_output_file, flto_out, args_name): New
5576         globals.
5577         (lto_wrapper_exit): New function.
5578         (fatal): Use it.
5579         (fatal_perror): Likewise.
5580         (fork_execute): Use global args_name, do not free it.
5581         (run_gcc): Use global ltrans_output_file, flto_out, do not free them.
5582         * lto-streamer.h: Remove duplicate prototypes.
5583
5584 2009-10-09  Richard Guenther  <rguenther@suse.de>
5585
5586         * cgraph.c (cgraph_create_edge): Check for NULL call_stmt
5587         before calling stmt_can_throw_external.
5588
5589 2009-10-09  Eric Botcazou  <ebotcazou@adacore.com>
5590
5591         PR tree-optimization/40071
5592         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Build a ref-all
5593         pointer if the original data reference doesn't conflict with the
5594         created vector data reference.  Fix long line.
5595
5596 2009-10-09  Uros Bizjak  <ubizjak@gmail.com>
5597
5598         * config/i386/i386.md (any_div): New code iterator.
5599         (u): Handle div and udiv.
5600         (sgnprefix): Ditto.
5601         (<u>divqi3): Macroize insn from {,u}divqi3  using any_div
5602         code iterator.
5603         (lfloor<MODEF:mode><SWI48:mode>2): Macroize insn from
5604         lfloor<mode>{si,di}2 patterns using SWI48 mode iterator.
5605         (lceil<MODEF:mode><SWI48:mode>2): Macroize insn from
5606         lceil<mode>{si,di}2 patterns using SWI48 mode iterator.
5607
5608 2009-10-08  Joseph Myers  <joseph@codesourcery.com>
5609
5610         * gcc.c (main): Remove trailing "." from diagnostics.
5611
5612 2009-10-08  Cary Coutant  <ccoutant@google.com>
5613
5614         Add support for debugging with ICF (Identical Code Folding).
5615         * calls.c (debug.h): New #include.
5616         (emit_call_1): Call virtual_call_token debug hook.
5617         * common.opt (-fenable-icf-debug): New option.
5618         * dwarf2out.c (dwarf2_debug_hooks): Add entries for new hooks (two
5619         locations in the source).
5620         (poc_label_num): New variable.
5621         (dcall_entry, vcall_entry): New typedefs.
5622         (dcall_table, vcall_table): New variables.
5623         (struct vcall_insn): New type.
5624         (vcall_insn_table): New variable.
5625         (DEBUG_DCALL_SECTION, DEBUG_VCALL_SECTION): New macros.
5626         (size_of_dcall_table): New function.
5627         (output_dcall_table): New function.
5628         (size_of_vcall_table): New function.
5629         (output_vcall_table): New function.
5630         (dwarf2out_direct_call): New function.
5631         (vcall_insn_table_hash): New function.
5632         (vcall_insn_table_eq): New function.
5633         (dwarf2out_virtual_call_token): New function.
5634         (dwarf2out_virtual_call): New function.
5635         (dwarf2out_init): Allocate new tables and sections.
5636         (prune_unused_types): Mark DIEs referenced from direct call table.
5637         (dwarf2out_finish): Output direct and virtual call tables.
5638         * final.c (final_scan_insn): Call direct_call and virtual_call
5639         debug hooks.
5640         * debug.h (struct gcc_debug_hooks): Add direct_call,
5641         virtual_call_token, virtual_call hooks.
5642         (debug_nothing_uid): New function.
5643         * debug.c (do_nothing_debug_hooks): Add dummy entries for new hooks.
5644         (debug_nothing_uid): New function.
5645         * dbxout.c (dbx_debug_hooks): Add dummy entries for new hooks.
5646         (xcoff_debug_hooks): Likewise.
5647         * sdbout.c (sdb_debug_hooks): Likewise.
5648         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
5649         * doc/invoke.texi (-fenable-icf-debug): New option.
5650
5651 2009-10-08  Alexandre Oliva  <aoliva@redhat.com>
5652
5653         PR debug/41353
5654         * regmove.c (regmove_backward_pass): Replace src with dst in the
5655         debug insn, and check for dst before rather than after.
5656
5657 2009-10-08  Janis Johnson <janis187@us.ibm.com>
5658
5659         * config/rs6000/rs6000.c (rs6000_delegitimize_address): Remove.
5660         (TARGET_DELEGITIMIZE_ADDRESS): Likewise.
5661
5662 2009-10-08  Jan Hubicka  <jh@suse.cz>
5663
5664         PR middle-end/41626
5665         * cgraphbuild.c (record_reference): When parameter DATA is NULL,
5666         do not mark cgraph nodes as needed.
5667         (record_references_in_initializer): Add new only_vars parameter.
5668         * cgraph.h (record_references_in_initializer): New parameter.
5669         * varasm.c (assemble_variable): Update call.
5670         * varpool.c (varpool_analyze_pending_decls): Always look for
5671         referenced vars.
5672
5673 2009-10-08  Anatoly Sokolov  <aesok@post.ru>
5674
5675         * config/avr/avr.c (last_insn_address) Remove variable.
5676         (expand_prologue): Don't initialise last_insn_address variable.
5677         (final_prescan_insn): Don't output insn size.
5678         * config/avr/avr.opt (msize): Remove switch.
5679         * doc/invoke.texi (AVR Options): Remove documentation of -msize
5680         switch.
5681
5682 2009-10-08  Adam Nemet  <anemet@caviumnetworks.com>
5683
5684         * combine.c (label_tick_ebb_start): Fix comment.
5685         (combine_instructions): Set label_tick and label_tick_ebb_start before
5686         calling setup_incoming_promotions.  Start them from 1.  Increment
5687         label_tick instead of deriving it from the BB index.  Rather than
5688         comparing ticks use the block from the previous iteration to decide
5689         whether to start a new EBB.  Remove empty lines before function.
5690
5691 2009-10-08  Michael Matz  <matz@suse.de>
5692
5693         PR middle-end/41573
5694         * builtins.c (fold_builtin_isascii): Use fold_build2.
5695         (fold_builtin_isdigit): Ditto.
5696         * except.c (duplicate_eh_regions_1): Tolerate NULL labels.
5697         * tree-cfg.c (struct rus_data, remove_useless_stmts_warn_notreached,
5698         remove_useless_stmts_cond, remove_useless_stmts_tf,
5699         remove_useless_stmts_tc, remove_useless_stmts_bind,
5700         remove_useless_stmts_goto, remove_useless_stmts_label,
5701         remove_useless_stmts_1, remove_useless_stmts,
5702         pass_remove_useless_stmts): Remove.
5703         * tree-pass.h (pass_remove_useless_stmts): Don't declare.
5704         * passes.c (init_optimization_passes): Don't add
5705         pass_remove_useless_stmts.
5706         * tree-eh.c (lower_eh_constructs_2): Handle empty cleanups.
5707         * tree.c (free_lang_data_in_decl): Don't clear DECL_INITIAL of
5708         static constants.
5709         * lto-symtab.c (lto_symtab_register_decl): Accepts DECL_INITIAL
5710         for static constants.
5711         * lto-streamer-out.c (output_gimple_stmt): Handle GIMPLE_NOP.
5712         * lto-streamer-in.c (input_gimple_stmt): Handle GIMPLE_NOP.
5713
5714 2009-10-08  Richard Guenther  <rguenther@suse.de>
5715
5716         * gimple.c (free_gimple_type_tables): New function.
5717         * gimple.h (free_gimple_type_tables): Declare.
5718
5719 2009-10-07  Mark Heffernan  <meheff@google.com>
5720
5721         * ipa-prop.c (ipa_print_node_params) Only print
5722         names of named arguments.
5723
5724 2009-10-08  Rafael Avila de Espindola  <espindola@google.com>
5725
5726         * gcc.c (LINK_COMMAND_SPEC): Pass libc with -pass-through if it is
5727         being statically linked.
5728
5729 2009-10-08  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
5730
5731         * collect2.c (add_lto_object): Only define if OBJECT_FORMAT_NONE.
5732
5733 2009-10-08  Jan Hubicka  <jh@suse.cz>
5734
5735         PR bootstrap/41620
5736         * ipa.c (cgraph_externally_visible_p,
5737         function_and_variable_visibility,
5738         whole_program_function_and_variable_visibility): Skip non-finalized
5739         nodes.
5740
5741 2009-10-08  Nick Clifton  <nickc@redhat.com>
5742
5743         * config/mn10300/mn10300.h (CONSTANT_ADDRESS_P): Do not allow
5744         CONST_DOUBLEs.
5745
5746 2009-10-08  Andreas Tobler  <a.tobler@schweiz.org>
5747
5748         PR bootstrap/37739
5749         * config.host: Use config/x-cflags-O1 for powerpc FreeBSD.
5750
5751 2009-10-07  Joseph Myers  <joseph@codesourcery.com>
5752
5753         PR c/41182
5754         * c-common.c (c_fully_fold_internal): Strip nops from the result
5755         of recursive calls to c_fully_fold_internal.
5756         (c_wrap_maybe_const): New.
5757         (c_save_expr): Use c_wrap_maybe_const.
5758         * c-common.h (c_wrap_maybe_const): Declare.
5759         * c-typeck.c (build_conditional_expr, c_finish_stmt_expr,
5760         build_binary_op): Use c_wrap_maybe_const.
5761
5762 2009-10-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5763
5764         * real.c: Fix comment to reflect actual exponent size.
5765
5766 2009-10-08  Ben Elliston  <bje@au.ibm.com>
5767
5768         * config/rs6000/a2.md: Add FSF comment header.
5769
5770 2009-10-07  Uros Bizjak  <ubizjak@gmail.com>
5771
5772         * config/i386/i386.md (any_extend): New code iterator.
5773         (u, s): New code attributes.
5774         (sgnprefix): Ditto.
5775         (DWIH): Rewrite as code iterator for SI and DI modes.
5776         (DWI): Rewrite as mode attribute.
5777         (dwi): New mode attribute.
5778         (di): Depend on SI mode and DI mode.
5779         (doubleint_general_operand): Remove mode attribute.
5780
5781         (*lea_1): Macroize insn from *lea_1_rex64 and *lea_1 patterns using
5782         DWIH mode iterator.
5783
5784         (*add<mode>3_doubleword): Use DWIH as the base mode iterator.
5785         (*sub<mode>3_doubleword): Ditto.
5786
5787         (mul<mode>3): Macroize expander from mul{hi,si,di}3 patterns
5788         using SWIM248 mode iterator.
5789         (*mul<mode>3_1): Macroize insn from mul{si,di}3_1 patterns
5790         using SWI48 mode iterator.
5791         (<u>mul<mode><dwi>3): Macroize expander from {,u}mul{sidi,diti}3
5792         patterns using DWIH mode iterator and any_extend code iterator.
5793         (<u>mulqihi3): Macroize expander from {,u}mulqihi3 patterns
5794         using any_extend code iterator.
5795         (*<u>mul<mode><dwi>3_1): Macroize insn from {,u}mul{sidi,diti}3_1
5796         patterns using DWIH mode iterator and any_extend code iterator.
5797         (*<u>mulqihi3_1): Macroize insn from {,u}mulqihi3_1 patterns
5798         using any_extend code iterator.
5799         (<s>mul<mode>3_highpart): Macroize expander from
5800         {s,u}mul{si,di}3_highpart patterns using DWIH mode iterator
5801         and any_extend code iterator.
5802         (*<s>muldi3_highpart_1): Macroize insn from
5803         *{s,u}muldi3_highpart_rex64 patterns using any_extend code iterator.
5804         (*<s>mulsi3_highpart_1): Macroize insn from *{s,u}mulsi3_highpart_1
5805         patterns using any_extend code iterator.
5806         (*<s>mulsi3_highpart_zext): Macroize insn from
5807         *{s,u}mulsi3_highpart_zext patterns using any_extend code iterator.
5808
5809 2009-10-07  Jakub Jelinek  <jakub@redhat.com>
5810
5811         * dwarf2out.c (tree_add_const_value_attribute_for_decl): Don't add
5812         DW_AT_const_value if VAR_DIE already has DW_AT_abstract_origin
5813         refering to a DIE with DW_AT_const_value.
5814
5815 2009-10-07  Vladimir Makarov  <vmakarov@redhat.com>
5816
5817         PR middle-end/22072
5818         * ira-lives.c (check_and_make_def_conflict): Process all operands.
5819
5820 2009-10-06  Jan Hubicka  <jh@suse.cz>
5821
5822         * cgraph.c (cgraph_node_can_be_local): Handle externally visible nodes
5823         correctly.
5824
5825 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
5826
5827         * config/i386/i386.md (*lea_1_rex64, *lea_1, *lea_1_zext,
5828         *lea_2_rex64): Move before *add<mode>_1 pattern.
5829
5830 2009-10-07  Jan Hubicka  <jh@suse.cz>
5831
5832         * collect2.c (main): Add -fno-whole-program.
5833         * gcc.c (set_collect_gcc_options): Do not remove whole program here.
5834
5835 2009-10-07  Jan Hubicka  <jh@suse.cz>
5836
5837         * lto-symtab.c (lto_cgraph_replace_node): Assert that inline clones
5838         has no address taken.
5839         * cgraph.c (cgraph_mark_needed_node): Assert that inline clones are
5840         never needed.
5841         (cgraph_clone_node): Clear externally_visible flag for clones.
5842         * cgraph.h (cgraph_only_called_directly_p,
5843         cgraph_can_remove_if_no_direct_calls_p): New predicates.
5844         * tree-pass.h (pass_ipa_whole_program_visibility): Declare.
5845         * ipa-cp.c (ipcp_cloning_candidate_p): Use new predicate.
5846         (ipcp_initialize_node_lattices, ipcp_estimate_growth,
5847         ipcp_insert_stage): Likwise.
5848         * cgraphunit.c (cgraph_decide_is_function_needed): Do not compute
5849         externally_visible flag.
5850         (verify_cgraph_node): Verify that inline clones look right.
5851         (process_function_and_variable_attributes): Do not set
5852         externally_visible flags.
5853         (ipa_passes): Avoid executing small_ipa_passes at LTO stage; they've
5854         been already run.
5855         * lto-cgraph.c (lto_output_node): Assert that inline clones are not
5856         boundaries.
5857         * ipa-inline.c (cgraph_clone_inlined_nodes): Use new predicates;
5858         clear externally_visible when turning into inline clones
5859         (cgraph_mark_inline_edge): Use new predicates.
5860         (cgraph_estimate_growth): Likewise.
5861         (cgraph_decide_inlining): Likewise.
5862         * ipa.c (cgraph_postorder): Likewise.
5863         (cgraph_remove_unreachable_nodes): Likewise; sanity check
5864         that inline clones are not needed.
5865         (cgraph_externally_visible_p): New predicate.
5866         (function_and_variable_visibility): Add whole_program parameter;
5867         always set externally_visible flag; handle COMDAT function
5868         privatization.
5869         (local_function_and_variable_visibility): New function.
5870         (gate_whole_program_function_and_variable_visibility): New function.
5871         (whole_program_function_and_variable_visibility): New function.
5872         (pass_ipa_whole_program_visibility): New function.
5873         * passes.c  (init_optimization_passes): Add whole program visibility
5874         pass.
5875         (do_per_function_toporder, function_called_by_processed_nodes_p): Do
5876         not care about needed/reachable flags.
5877         * varpool.c: Include flags.h
5878         (decide_is_variable_needed): When doing LTO assume whole-program mode.
5879         (varpool_finalize_decl): When we are in LTO read-back, all variables
5880         are analyzed.
5881         (varpool_analyze_pending_decls): Skip analyzis of analyzed vars.
5882
5883 2009-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
5884
5885         * config/s390/tpf.h (TARGET_DEFAULT): Remove MASK_HARD_FLOAT and
5886         add MASK_HARD_DFP.
5887
5888 2009-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
5889
5890         * config.gcc: Don't include the makefile fragments intended for
5891         libgcc.
5892         * config/s390/fixdfdi.h: File removed.
5893         * config/s390/libgcc-glibc.ver: File removed.
5894         * config/s390/s390.h: Remove the fixdfdi.h hack.
5895         * config/s390/t-crtstuff: File moved to libgcc dir.
5896         * config/s390/t-linux: Likewise.
5897         * config/s390/t-tpf: libgcc specific parts removed.
5898         * config/s390/t-linux64: Likewise.
5899
5900 2009-10-06  Jerry Quinn  <jlquinn@optonline.net>
5901
5902         * Makefile.in (lto-wrapper): Use COMPILER and ALL_COMPILERFLAGS.
5903         (lto-compress.o): Likewise.
5904
5905 2009-10-07  Danny Smith  <dannysmith@users.sourceforge.net>
5906
5907         PR target/41512
5908         * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't propagate
5909         dllexport to class members here.
5910         (i386_pe_determine_dllimport_p): Only check static class data for
5911         definition.
5912         (i386_pe_encode_section_info): Don't recheck DECL_DLLIMPORT_P.
5913         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Only check
5914         functions for vague linkage.
5915         (i386_pe_type_dllexport_p): Fix formatting.
5916         (maybe_add_dllexport) New function.
5917         (i386_pe_adjust_class_at_definition): Use it to propagate dllexport
5918         to class members.
5919
5920 2009-10-07  Ben Elliston  <bje@au.ibm.com>
5921
5922         * config/rs6000/a2.md: Remove duplicated lines.
5923
5924 2009-10-07  Ben Elliston  <bje@au.ibm.com>
5925
5926         * config.gcc (powerpc*-*-*): Handle a2.
5927         * config/rs6000/rs6000.md (cpu): Add ppca2.  Include "a2.md".
5928         * config/rs6000/a2.md: New file.
5929         * config/rs6000/rs6000.opt (mno-update): New.
5930         (mupdate): Return to using a mask, not a var.
5931         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add support for a2.
5932         (enum processor_type): Add PROCESSOR_PPCA2.
5933         * config/rs6000/rs6000.c (ppca2_cost): New costs.
5934         (rs6000_override_options): Add "a2" to processor_target_table.
5935         Update rs6000_always_hint logic.  Correctly set rs6000_cost for a2.
5936         * doc/invoke.texi (RS/6000 and PowerPC Options): Document -mcpu=a2.
5937
5938 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
5939
5940         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
5941         Use explicit gen_truncxfsf2 and gen_truncxfdf2 references to avoid
5942         reference to nonexistent gen_truncxfxf2 function.
5943
5944 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
5945
5946         * config/i386/i386.md (SWI48, SDWIM, DWI): New mode iterators.
5947         (DWIH, g, di, doubleint_general_operand): New mode attributes.
5948         (general_operand): Handle TI mode.
5949         (add<mode>3): Macroize expander from add{qi,hi,si,di,ti}3 patterns
5950         using SDWIM mode iterator.
5951         (*add<mode>3_doubleword): New insn_and_split pattern.  Macroize
5952         pattern from *add{di,ti}3_1 patterns and corresponding splitters
5953         using DWI mode iterator.
5954         (add<mode>3_carry): Macroize insn from add{qi,hi,si,di}3_carry
5955         patterns using SWI mode iterator.
5956         (*add<mode>3_cc): Macroize insn from add{si,di}3_cc patterns
5957         using SWI48 mode iterator.
5958         (*add<mode>_1): Ditto from add{si,di}_1 patterns.
5959         (*add<mode>_2): Ditto from add{si,di}_2 patterns.
5960         (*add<mode>_3): Ditto from add{si,di}_3 patterns.
5961         (*add<mode>_5): Ditto from add{si,di}_5 patterns.
5962         (sub<mode>3): Macroize expander from sub{qi,hi,si,di,ti}3 patterns
5963         using SDWIM mode iterator.
5964         (*sub<mode>3_doubleword): New insn_and_split pattern.  Macroize
5965         pattern from *sub{di,ti}3_1 patterns and corresponding splitters
5966         using DWI mode iterator.
5967         (sub<mode>3_carry): Macroize insn from sub{qi,hi,si,di}3_carry
5968         patterns using SWI mode iterator.
5969         (*sub<mode>_1): Ditto from from sub{qi,hi,si,di}_1 patterns.
5970         (*sub<mode>_2): Ditto from sub{qi,hi,si,di}_2 patterns.
5971         (*sub<mode>_3): Ditto from sub{qi,hi,si,di}_3 patterns.
5972         (<plusminus_insn>xf3): Macroize expander from addxf3 and subxf3
5973         patterns using plusminus code iterator.
5974         (<plusminus_insn><mode>3): Macroize expander from add<mode>3 and
5975         sub<mode>3 patterns using plusminus code iterator.
5976         * config/i386/i386.c (override_options): Update the call to
5977         gen_subdi_carry_rex64 for renamed function.
5978         (ix86_expand_int_addcc): Update calls to gen_subdi3_carry_rex64
5979         and gen_adddi3_carry_rex64 for renamed functions.  Use indirect
5980         calls to instruction expanders.
5981
5982 2009-10-06  Martin Jambor  <mjambor@suse.cz>
5983
5984         PR bootstrap/41395
5985         * opts.c (decode_options): Run IPA-SRA at -O2.
5986
5987 2009-10-06  Richard Guenther  <rguenther@suse.de>
5988
5989         * lto-symtab.c (lto_symtab_entry_hash): Hash strings, not pointers.
5990
5991 2009-10-06  Tobias Burnus  <burnus@net-b.de>
5992
5993         PR lto/41591
5994         * doc/invoke.texi (-flto,-fwhole-program): Make clear that the
5995         -flto and -fwhole-program flags can be combined.
5996
5997 2009-10-06  Ryan Mansfield  <rmansfield@qnx.com>
5998
5999         PR driver/41217
6000         * gcc.c (process_command): Check that -o argument was specified.
6001
6002 2009-10-06  Jerry Quinn  <jlquinn@optonline.net>
6003
6004         * gimple.c (gimple_type_hash): Use CONST_CAST_TREE to fix compilation.
6005
6006 2009-10-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
6007
6008         * c.opt (Wjump-misses-init): Fix typo to enable for ObjC.
6009         * doc/invoke.texi (Warning Options): Annotate allowed languages
6010         for -Wunsuffixed-float-constants.
6011
6012 2009-10-05  Jakub Jelinek  <jakub@redhat.com>
6013
6014         * dwarf2out.c (modified_type_die): Don't add DW_AT_name to
6015         DW_TAG_{const,volatile}_type if its DW_AT_type already has the
6016         same name and isn't the main variant.
6017
6018         PR debug/41558
6019         * dwarf2out.c (loc_by_reference): Removed.
6020         (dw_loc_list_1): New function.
6021         (dw_loc_list): Remove toplev argument, add want_address argument.
6022         Don't look at decl_by_reference_p at all.  Use dw_loc_list_1.
6023         (loc_list_from_tree) <case VAR_DECL>: Pass want_address rather than
6024         want_address == 2 to dw_loc_list.  For successful dw_loc_list
6025         set have_address to 1 only if want_address is not 0.
6026
6027 2009-10-05  Richard Sandiford  <rdsandiford@googlemail.com>
6028
6029         * config/mips/mips-protos.h (mips_trampoline_code_size): Declare.
6030         * config/mips/mips.h (TRAMPOLINE_SIZE): Redefine as the size of
6031         a code block followed by two pointers.
6032         (TRAMPOLINE_ALIGNMENT): Define to 64 for 32-bit targets too.
6033         * config/mips/mips.c (MIPS_LOAD_PTR): New macro.
6034         (MIPS_MOVE): Likewise.
6035         (MIPS_LUI): Likewise.
6036         (MIPS_JR): Likewise.
6037         (MIPS_BAL): Likewise.
6038         (MIPS_NOP): Likewise.
6039         (mips_asm_trampoline_template): Delete.
6040         (mips_trampoline_code_size): New function.
6041         (mips_trampoline_init): Add shorter sequences for all cases
6042         except Pmode == DImoe && !TARGET_USE_PIC_FN_ADDR_REG.
6043         Calculate the opcodes directly, rather than copying from a template.
6044         Only flush the code part of the trampoline.
6045         (TARGET_ASM_TRAMPOLINE_TEMPLATE): Delete.
6046
6047 2009-10-05  Richard Sandiford  <rdsandiford@googlemail.com>
6048
6049         * config/mips/mips.h (DWARF_FRAME_RETURN_COLUMN): Replace
6050         GP_REG_FIRST + 31 with RETURN_ADDR_REGNUM.
6051         (INCOMING_RETURN_ADDR_RTX): Likewise.
6052         (FUNCTION_PROFILER): Likewise.  Replace GP_REG_FIRST + 1
6053         with AT_REGNUM.
6054         * config/mips/sdemtk.h (FUNCTION_PROFILER): Replace GP_REG_FIRST + 31
6055         with RETURN_ADDR_REGNUM.
6056         (MIPS_SAVE_REG_FOR_PROFILING_P): Likewise.
6057         * config/mips/mips.c (mips16_build_call_stub): Replace
6058         GP_REG_FIRST + 31 with RETURN_ADDR_REGNUM, GP_REG_FIRST + 1
6059         with AT_REGNUM and 31 with RETURN_ADDR_REGNUM.
6060         (mips_print_operand_punctuation): Likewise.
6061         (mips_frame_set): Likewise.
6062         (mips16e_output_save_restore): Likewise.
6063         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
6064         (mips_save_reg_p): Likewise.
6065         (mips_return_addr): Likewise.
6066         (mips_set_return_address): Likewise.
6067         (mips_direct_save_slot_move_p): Likewise.
6068         (mips_output_function_prologue): Likewise.
6069         (mips_restore_reg): Likewise.
6070         (mips_expand_epilogue): Likewise.
6071         (mips_epilogue_uses): Likewise.
6072         * config/mips/mips.md (RETURN_ADD_REGNUM): Define.
6073         (*mov<mode>_ra): Use it instead of a hard-coded 31.
6074         (clear_hazard_<mode>): Likewise.
6075         (call_internal): Likewise.
6076         (call_internal_direct): Likewise.
6077         (call_direct_split): Likewise.
6078         (call_value_internal): Likewise.
6079         (call_value_split): Likewise.
6080         (call_value_internal_direct): Likewise.
6081         (call_value_direct_split): Likewise.
6082         (call_value_multiple_internal): Likewise.
6083         (call_value_multiple_split): Likewise.
6084
6085 2009-10-05  Eric Botcazou  <ebotcazou@adacore.com>
6086             Jakub Jelinek  <jakub@redhat.com>
6087
6088         PR rtl-optimization/41511
6089         * combine.c (record_value_for_reg): Pass explicit values as argument
6090         to get_last_value_validate.
6091         (get_last_value_validate): Document INSN parameter.
6092         For non-readonly MEMs, assume they might have been modified if INSN
6093         was in another basic block.
6094         (get_last_value): Minor reformatting.
6095
6096 2009-10-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6097
6098         PR tree-opt/40992
6099         * final.c (asm_str_count): Split out from asm_insn_count.
6100         * rtl.h (asm_str_count): New prototype.
6101         * tree-inline (estimate_num_insns) <case GIMPLE_ASM>: Call
6102         asm_str_count.
6103
6104 2009-10-05  Sriraman Tallam  <tmsriram@google.com>
6105
6106         * doc/plugins.texi: Change plugin_pass to register_pass_info.
6107
6108 2009-10-05  Basile Starynkevitch  <basile@starynkevitch.net>
6109             Rafael Espindola  <espindola@google.com>
6110
6111         * gengtype.c (write_types): Moved call to write_func_for_structure
6112         into seperate loops.
6113
6114 2009-10-05  Richard Guenther  <rguenther@suse.de>
6115
6116         PR lto/41281
6117         * lto-cgraph.c (output_cgraph): Output toplevel asms.
6118         (input_cgraph_1): Input toplevel asms.
6119
6120 2009-10-05  Richard Guenther  <rguenther@suse.de>
6121
6122         PR lto/40902
6123         * lto-symtab.c (lto_compatible_attributes_p): Remove.
6124         (external_aggregate_decl_p): Likewise.
6125         (lto_symtab_compatible): Re-structure.  Remove dead code.
6126         For variables ignore toplevel qualifiers when comparing types.
6127         Issue warnings, not errors for mismatched user-alignment.
6128
6129 2009-10-05  Richard Guenther  <rguenther@suse.de>
6130
6131         PR lto/41552
6132         PR lto/41487
6133         * lto-symtab.c (struct lto_symtab_base_def): Remove.
6134         (struct lto_symtab_identifier_def): Likewise.
6135         (struct lto_symtab_decl_def): Likewise.
6136         (struct lto_symtab_entry_def): New.
6137         (lto_symtab_identifier_t): Rename to ...
6138         (lto_symtab_entry_t): ... this.
6139         (lto_symtab_decls): Remove.
6140         (lto_symtab_base_hash): Rename to ...
6141         (lto_symtab_entry_hash): ... this.
6142         (lto_symtab_base_eq): Rename to ...
6143         (lto_symtab_entry_eq): ... this.
6144         (lto_symtab_base_marked_p): Rename to ...
6145         (lto_symtab_entry_marked_p): ... this.
6146         (lto_symtab_identifier_marked_p): Remove.
6147         (lto_symtab_decl_marked_p): Likewise.
6148         (lto_symtab_maybe_init_hash_tables): Rename to ...
6149         (lto_symtab_maybe_init_hash_table): ... this.
6150         (lto_symtab_set_resolution_and_file_data): Remove.
6151         (lto_symtab_register_decl): New function.
6152         (lto_symtab_get_identifier): Remove.
6153         (lto_symtab_get): New function.
6154         (lto_symtab_get_resolution): Adjust.
6155         (lto_symtab_get_identifier_decl): Remove.
6156         (lto_symtab_set_identifier_decl): Likewise.
6157         (lto_symtab_merge_decl): Rename to ...
6158         (lto_symtab_merge): ... this.  Rewrite.
6159         (lto_symtab_merge_var): Remove.
6160         (lto_symtab_merge_fn): Likewise.
6161         (lto_symtab_prevailing_decl): Adjust.
6162         (lto_cgraph_replace_node): New function.
6163         (lto_symtab_merge_decls_2): Likewise.
6164         (lto_symtab_merge_decls_1): Likewise.
6165         (lto_symtab_fixup_var_decls): Likewise.
6166         (lto_symtab_resolve_symbols): Likewise.
6167         (lto_symtab_merge_decls): Likewise.
6168         (lto_symtab_prevailing_decl): Adjust.
6169         (lto_symtab_get_symtab_def): Remove.
6170         (lto_symtab_get_file_data): Likewise.
6171         (lto_symtab_clear_resolution): Adjust.
6172         (lto_symtab_clear_resolution): Likewise.
6173         * lto-cgraph.c (input_edge): Do not merge cgraph nodes here.
6174         (input_cgraph_1): Likewise.
6175         * lto-streamer-in.c (get_resolution): Do not provide fake
6176         symbol resolutions here.
6177         (deferred_global_decls): Remove.
6178         (lto_register_deferred_decls_in_symtab): Likewise.
6179         (lto_register_var_decl_in_symtab): Change signature, register
6180         variable via lto_symtab_register_decl.
6181         (lto_register_function_decl_in_symtab): Likewise.
6182         (lto_read_tree): Adjust.
6183         * lto-streamer.h (lto_register_deferred_decls_in_symtab): Remove.
6184         (lto_symtab_merge_var): Likewise.
6185         (lto_symtab_merge_fn): Likewise.
6186         (lto_symtab_register_decl): Declare.
6187         (lto_symtab_merge_decls): Likewise.
6188
6189 2009-10-05  Richard Guenther  <rguenther@suse.de>
6190
6191         PR tree-optimization/23821
6192         * tree-vrp.c (vrp_finalize): Do not perform copy propagation.
6193         * tree-ssa-dom.c (cprop_operand): Do not propagate copies into
6194         simple IV increments.
6195
6196 2009-10-05  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
6197
6198         * config/arm/arm.c (arm_override_options): Really initialize
6199         flag_dwarf2_cfi_asm to 0.
6200
6201 2009-10-05  Doug Kwan  <dougkwan@google.com>
6202
6203         PR rtl-optimization/41574
6204         * combine.c (distribute_and_simplify_rtx): Quit if RTX mode is
6205         floating point and we are not doing unsafe math optimizations.
6206
6207 2009-10-03  Simon Baldwin  <simonb@google.com>
6208             Cary Coutant  <ccoutant@google.com>
6209             Rafael Espindola  <espindola@google.com>
6210             Richard Guenther  <rguenther@suse.de>
6211             Jan Hubicka  <jh@suse.cz>
6212             Doug Kwan <dougkwan@google.com>
6213             H.J. Lu  <hongjiu.lu@intel.com>
6214             Bill Maddox  <maddox@google.com>
6215             Ryan Mansfield  <rmansfield@qnx.com>
6216             Diego Novillo  <dnovillo@google.com>
6217             Ollie Wild  <aaw@google.com>
6218             Kenneth Zadeck <zadeck@naturalbridge.com>
6219
6220         * lto-cgraph.c: New file.
6221         * lto-compress.c: New file.
6222         * lto-compress.h: New file.
6223         * lto-opts.c: New file.
6224         * lto-section-in.c: New file.
6225         * lto-section-out.c: New file.
6226         * lto-streamer-in.c: New file.
6227         * lto-streamer-out.c: New file.
6228         * lto-streamer.c: New file.
6229         * lto-streamer.h: New file.
6230         * lto-symtab.c: New file.
6231         * lto-wpa-fixup.c: New file.
6232         * lto-wrapper.c: New file.
6233
6234 2009-10-03  Simon Baldwin  <baldwin@google.com>
6235             Ben Elliston  <bje@au.ibm.com>
6236             Rafael Espindola  <espindola@google.com>
6237             Nathan Froyd  <froydnj@codesourcery.com>
6238             Jan Hubicka  <jh@suse.cz>
6239             Doug Kwan  <dougkwan@google.com>
6240             Diego Novillo  <dnovillo@google.com>
6241             Kenneth Zadeck  <zadeck@naturalbridge.com>
6242
6243         * Makefile.in (enable_lto): New.
6244         (site.exp): If @enable_lto@ is set to 'yes' define ENABLE_LTO.
6245         (LINKER_PLUGIN_API_H): Define.
6246         (LTO_SYMTAB_H): Define.
6247         (LTO_STREAMER_H): Define.
6248         (TREE_VECTORIZER_H): Define.
6249         (INCLUDES): Add LIBELFINC.
6250         (OBJS-common): Add lto-cgraph.o, lto-streamer-in.o,
6251         lto-streamer-out.o, lto-section-in.o, lto-section-out.o, lto-symtab.o,
6252         lto-opts.o, lto-streamer.o, lto-wpa-fixup.o, lto-compress.o.
6253         (MOSTLYCLEANFILES): Add lto-wrapper$(exeext)
6254         (native): Add lto-wrapper$(exeext)
6255         (lto-compress.o, lto-cgraph.o, lto-streamer-in.o,
6256         lto-streamer-out.o, lto-section-in.o, lto-section-out.o,
6257         lto-symtab.o, lto-opts.o, lto-streamer.o, lto-wpa-fixup.o): New rules.
6258         (gimple.o): Add dependency on LTO_HEADER_H and LTO_SECTION_OUT_H.
6259         (varasm.o): Add dependency on tree-iterator.h.
6260         (cgraph.o): Add dependency on cif-code.def.
6261         (ipa-reference.o): Add dependency on LTO_STREAMER_H.
6262         (ipa-pure-const.o): Likewise.
6263         (GTFILES): Add lto-symtab.c.
6264         (install-lto-wrapper): New.
6265         * configure.ac: If 'lto' is in enable_languages, define ENABLE_LTO
6266         and enable_lto.  If LIBELFLIBS is set, define HAVE_libelf.
6267         * config.in: Regenerate.
6268
6269 2009-10-03  Rafael Espindola  <espindola@google.com>
6270             Diego Novillo  <dnovillo@google.com>
6271
6272         * cgraphunit.c (ipa_passes): Prevent lto1 from calling
6273         ipa_write_summaries.
6274         Call execute_ipa_summary_passes for all_regular_ipa_passes and
6275         all_lto_gen_passes.
6276         (cgraph_optimize): Make extern.
6277
6278 2009-10-03  Nathan Froyd  <froydnj@codesourcery.com>
6279             Kenneth Zadeck <zadeck@naturalbridge.com>
6280
6281         * toplev.c (in_lto_p): Declare.
6282         * collect2.c (scan_prog_file): Read all the output when reading
6283         information for LTO.
6284         (enum lto_mode_d): Declare.
6285
6286 2009-10-03  Richard Guenther  <rguenther@suse.de>
6287             Diego Novillo  <dnovillo@google.com>
6288
6289         * gimple.c: Include target.h and alias.h.
6290         (gimple_types): Declare.
6291         (type_hash_cache): Declare.
6292         (gimple_alloc_stat): Make extern.
6293         (gimple_build_eh_must_not_throw): Call
6294         gimple_eh_must_not_throw_set_fndecl.
6295         (struct type_pair_d): Declare.
6296         (type_pair_t): Declare.
6297         (type_pair_hash): New.
6298         (type_pair_eq): New.
6299         (lookup_type_pair): New.
6300         (gimple_force_type_merge): New.
6301         (compare_type_names_p): New.
6302         (compare_field_offset): New.
6303         (gimple_types_compatible_p): New.
6304         (struct sccs): Declare.
6305         (next_dfs_num): Declare.
6306         (iterative_hash_gimple_type): New.
6307         (visit): New.
6308         (iterative_hash_type_name): New.
6309         (iterative_hash_gimple_type): New.
6310         (gimple_type_hash): New.
6311         (gimple_type_eq): New.
6312         (gimple_register_type): New.
6313         (print_gimple_types_stats): New.
6314         (gimple_signed_or_unsigned_type): New.
6315         (gimple_unsigned_type): New.
6316         (gimple_signed_type): New.
6317         (gimple_get_alias_set): New.
6318         (gimple_decl_printable_name): Do not use DMGL_TYPES.
6319         * gimple.h (gimple_alloc, gimple_alloc_stat): Declare.
6320         (gimple_force_type_merge): Declare.
6321         (gimple_types_compatible_p): Declare.
6322         (gimple_register_type): Declare.
6323         (print_gimple_types_stats): Declare.
6324         (gimple_unsigned_type): Declare.
6325         (gimple_signed_type): Declare.
6326         (gimple_get_alias_set): Declare.
6327         (gimple_eh_must_not_throw_set_fndecl): New.
6328
6329 2009-10-03  Jan Hubicka  <jh@suse.cz>
6330             Kenneth Zadeck <zadeck@naturalbridge.com>
6331
6332         * ipa-pure-const.c: Include lto-streamer.h.
6333         (register_hooks): Factor out of ...
6334         (generate_summary): ... here.
6335         (pure_const_write_summary): New.
6336         (pure_const_read_summary): New.
6337         (pass_ipa_pure_const): Add pure_const_write_summary and
6338         pure_const_read_summary.
6339         * ipa-reference.c: Include lto-streamer.h.
6340         (add_new_function): New.
6341         (remove_node_data): New.
6342         (duplicate_node_data): New.
6343         (ipa_init): Guard against multiple calls.
6344         Move hook setup from analyze_function.
6345         (write_node_summary_p): New.
6346         (ipa_reference_write_summary): New.
6347         (ipa_reference_read_summary): New.
6348         (pass_ipa_reference): Add ipa_reference_write_summary and
6349         ipa_reference_read_summary.
6350         * cgraph.h (cgraph_local_info): Add field lto_file_data.
6351         (struct cgraph_edge): Add fields lto_stmt_uid and
6352         call_stmt_cannot_inline_p.
6353         (cgraph_optimize): Declare.
6354         (cgraph_decide_is_function_needed): Declare.
6355         (reset_inline_failed): Declare.
6356         (enum LTO_cgraph_tags): Declare.
6357         (LTO_cgraph_tag_names): Declare.
6358         (LCC_NOT_FOUND): Define.
6359
6360 2009-10-03  Doug Kwan  <dougkwan@google.com>
6361             Rafael Espindola  <espindola@google.com>
6362             Jan Hubicka  <jh@suse.cz>
6363             Diego Novillo  <dnovillo@google.com>
6364             Kenneth Zadeck  <zadeck@naturalbridge.com>
6365
6366         * passes.c (all_regular_ipa_passes): New.
6367         (all_ipa_passes): Rename to all_small_ipa_passes.
6368         (init_optimization_passes): Init all_regular_ipa_passes.
6369         * tree-pass.h (all_regular_ipa_passes): New.
6370         (all_ipa_passes): Rename to all_small_ipa_passes.
6371         * passes.c (all_lto_gen_passes): New.
6372         (init_optimization_passes): Initialize all_lto_gen_passes.
6373         (execute_ipa_summary_passes): Make non-static.
6374         (ipa_write_summaries_1): New.
6375         (ipa_write_summaries_2): New.
6376         (ipa_write_summaries): New.
6377         (ipa_write_summaries_of_cgraph_node_set): New.
6378         (ipa_read_summaries_1): New.
6379         (ipa_read_summaries): New.
6380         (execute_ipa_pass_list): Call cgraph_process_new_functions.
6381         (execute_regular_ipa_pass_list): Remove.
6382         (init_optimization_passes): Schedule
6383         pass_rebuild_cgraph_edges and pass_early_inline outside
6384         of pass_all_early_optimizations.  Document reason.
6385         (pass_ipa_lto_gimple_out, pass_ipa_lto_wpa_fixup,
6386         pass_ipa_lto_finish_out): New pass.
6387         (pass_ipa_summary_passes): Start and stop timers if the pass has them.
6388         (execute_all_ipa_transforms): New.
6389         (execute_one_pass): Don't call execute_one_ipa_transform_pass.
6390         (dump_properties, debug_properties): New.
6391         * tree-optimize.c (gate_all_early_local_passes): Return
6392         false if we are in lto1.
6393         (tree_rest_of_compilation): Call execute_all_ipa_transforms.
6394         * tree-pass.h (execute_all_ipa_transforms): Declare.
6395         (pass_ipa_function_and_variable_visibility): Declare.
6396         (pass_ipa_early_inline): Declare.
6397         (pass_ipa_lto_gimple_out): Declare.
6398         (pass_ipa_lto_wpa_fixup): Declare.
6399         (pass_ipa_lto_finish_out): Declare.
6400         (all_small_ipa_passes, all_regular_ipa_passes,
6401         all_lto_gen_passes): Declare.
6402         (execute_ipa_summary_passes): Declare.
6403         (execute_all_ipa_transforms): Declare.
6404         (ipa_write_summaries): Declare
6405         (ipa_write_summaries_of_cgraph_node_set): Declare.
6406         (ipa_read_summaries): Declare.
6407
6408 2009-10-03  Doug Kwan  <dougkwan@google.com>
6409             Ollie Wild  <aaw@google.com>
6410
6411         * ipa-prop.c (ipa_propagate_indirect_call_infos): Do nothing in WPA.
6412
6413         * collect2.c (LTO_MODE_NONE, LTO_MODE_LTO, LTO_MODE_WPA): New enums.
6414         (lto_mode): New variable.
6415         (maybe_run_lto_and_relink): Handle the -fwpa option.
6416         (main): Handle the -fwpa option.
6417         (maybe_unlink_list): New function.
6418         * gcc.c (link_lto_options): Replace -flto with -fwpa.
6419         * common.opt (flto): New flag.
6420         * toplev.c (flag_generate_lto): Declare.
6421
6422 2009-10-03  Simon Baldwin  <simonb@google.com>
6423
6424         * common.opt (flto-compression-level): New flag.
6425
6426         * opts.c: Include lto-opts.h.
6427         (handle_option): Call lto_register_user_option for each
6428         valid option handled.
6429         (decode_options): Clear registered options before the options
6430         handling loop.
6431
6432 2009-10-03  Cary Coutant  <ccoutant@google.com>
6433
6434         * collect2.c (is_elf): New function.
6435         (scan_prog_file): Require LTO object to be in ELF format.
6436
6437 2009-10-03  Rafael Espindola  <espindola@google.com>
6438
6439         * gcc.c (LINK_COMMAND_SPEC): Use the -pass-through option to pass
6440         libgcc to the linker.
6441
6442         * ipa-cp.c (cgraph_gate_cp): Return false if LTRANS is running.
6443
6444         * collect2.c (maybe_run_lto_and_relink): Execute lto-wrapper.
6445         (collect_execute): Add flags argument. Pass flags to pex_run. Update
6446         all callers.
6447         * collect2.h (collect_execute): Add flags argument.
6448         * tlink.c (tlink_execute): Update call to collect_execute.
6449         * gcc.c (main): Set the COLLECT_LTO_WRAPPER environment variable.
6450         (use_linker_plugin): New.
6451         (use_linker_plugin_spec_function): New.
6452         (LINK_COMMAND_SPEC): Pass plugin options to the linker.
6453         (linker_plugin_file_spec): New.
6454         (lto_wrapper_spec): New.
6455         (lto_gcc_spec): New.
6456         (static_specs): Add linker_plugin_file, lto_wrapper and lto_gcc.
6457         (static_spec_functions): Add use-linker-plugin.
6458         (process_command): Handle -use-linker-plugin.
6459         (main): Use lto_wrapper_spec instead of lto_wrapper. Set
6460         linker_plugin_file_spec and lto_gcc_spec.
6461         (use_linker_plugin_spec_function): New.
6462
6463 2009-10-03  Richard Guenther  <rguenther@suse.de>
6464
6465         PR lto/41547
6466         PR lto/41548
6467         * tree.h (is_lang_specific): Include LANG_TYPE.
6468         * tree.c (find_decls_types_r): Manually add interesting parts
6469         of TYPE_FIELDS.  Walk BINFO_VIRTUALS.  Do not walk TYPE_METHODS.
6470
6471         * gimple.c (type_pair_hash): Make symmetric.
6472         (type_pair_eq): Likewise.
6473         (lookup_type_pair): Increase initial hashtable size.
6474         (gimple_force_type_merge): Rely on type-pair symmetry.
6475         (visit): Remove excessive checking code.
6476         (iterative_hash_type_name): Do not hash TYPE_NAME of anonymous unions.
6477         (gimple_register_type): Remove getenv calls, shrink initial
6478         hashtable size.
6479
6480         PR middle-end/41502
6481         * cgraphunit.c (ipa_passes): Do not remove bodies of extern
6482         inline functions if not generating lto output.
6483
6484         PR lto/41379
6485         * toplev.c (finalize): In WPA mode remove the asm file.
6486
6487 2009-10-03  Doug Kwan  <dougkwan@google.com>
6488
6489         * ipa-inline.c (cgraph_mark_inline): Check
6490         edge->call_stmt_cannot_inline_p instead of calling
6491         gimple_call_cannot_inline_p.
6492         (cgraph_decide_inlining): Do nothing in WPA and LTRANS.
6493         (cgraph_gate_ipa_early_inlining): Return false if in_lto_p is set.
6494         (inline_generate_summary): Do nothing in LTRANS.
6495         * cgraph.c (initialize_inline_failed): Make sure e->call_stmt
6496         exists before calling gimple_call_cannot_inline_p.
6497         (cgraph_create_edge): Set edge->call_stmt_cannot_inline_p.
6498         (cgraph_clone_edge): Add argument STMT_UID.  Modify all callers.
6499         Update new_edge->lto_stmt_uid.
6500         * cgraphbuild.c (reset_inline_failed): New.
6501
6502         * common.opt (fwpa): New flag.
6503         (fltrans): New option.
6504         * gcc.c (gcc_lto_option_t): New type.
6505         (current_lto_option): New variable.
6506         (lto_single_spec_function): Remove and is replaced by ..
6507         (lto_option_spec_function): New function.
6508         (LINK_COMMAND_SPEC): Use link_lto_option spec instead of just
6509         passing the -flto flag.
6510         (cc1_options): Separate non-LTO related parts into ..
6511         (cc1_non_lto_options): Non-LTO related options shared by all FEs.
6512         (lto1_options): New spec for lto FE.
6513         (link_lto_options): New spec for handling LTO flags in linker.
6514         (invoke_lto_single): Re-format to fit in 80 column.  Replace
6515         lto-single with lto-option.
6516         (static_specs): Add cc1_non_lto_options, lto1_options and
6517         link_lto_options.
6518         (static_spec_function): Replace lto-single with lto-option.
6519         (process_command): Handle -flto, -fwpa and -fltran by setting
6520         current_lto_option and not passing it to subprocess unconditionally.
6521
6522 2009-10-03  Bill Maddox  <maddox@google.com>
6523
6524         Add `gcc' driver support for link-time code generation (LTO).
6525
6526         * collect2.c (enum pass): Add new literal PASS_LTOINFO.
6527         (lto_flag, lto_objects, lto_o_file): New variables.
6528         (struct lto_object, struct lto_object_list): New structures.
6529         (collect_exit, handler): Remove LTO temporary output file on exit.
6530         (add_lto_object): New function.
6531         (maybe_run_lto_and_relink): New function. Perform link time code
6532         generation and relinking for object files containing LTO information.
6533         (main): Invoke maybe_run_lto_and_relink().
6534         (dump_argv): New function.  For debugging, currently disabled.
6535         (scan_prog_file): Add LTO information pass.
6536         * gcc.c (LINK_COMMAND_SPEC): Pass `-flto' switch to linker, i.e.,
6537         collect2.
6538         * toplev.c (compile_file): Emit assembler directive to create
6539         the `gnu_lto_v1' marker symbol when compiling with `-flto'.
6540
6541 2009-10-03  Diego Novillo  <dnovillo@google.com>
6542
6543         * c.opt: Add LTO to warn_abi and warn_psabi.
6544
6545         * tree.c (fld_worklist_push): Rename from PUSH.  Convert to static
6546         inline function.  Ignore language-specific nodes.  Update all users.
6547         (find_decls_types_r): Do not traverse the subtrees of
6548         language-specific nodes.  Do not traverse DECL_INITIAL for TYPE_DECLs.
6549         * tree.h (is_lang_specific): New.
6550         * langhooks.h (struct lang_hooks_for_decls): Remove
6551         may_need_assembler_name_p.  Update all users.
6552
6553         * c-common.c (set_builtin_user_assembler_name): Move ...
6554         * builtins.c (set_builtin_user_assembler_name): ... here.
6555         (is_builtin_name): Add comment
6556         (is_builtin_fn): New.
6557         * except.c (output_ttype): Only call
6558         lookup_type_for_runtime if TYPE is not a runtime type.
6559
6560         * passes.c (register_pass): Call position_pass on
6561         all_small_ipa_passes, all_regular_ipa_passes and all_lto_gen_passes.
6562         * timevar.def (TV_IPA_LTO_GIMPLE_IO): Define.
6563         (TV_IPA_LTO_DECL_IO): Define.
6564         (TV_IPA_LTO_CGRAPH_IO): Define.
6565         (TV_LTO): Define.
6566         (TV_WHOPR_WPA): Define.
6567         (TV_WHOPR_WPA_IO): Define.
6568         (TV_WHOPR_LTRANS): Define.
6569         (TV_WHOPR_WPA_FIXUP): Define.
6570         (TV_WHOPR_WPA_LTRANS_EXEC): Define.
6571         * tree-cfg.c (tree_node_can_be_shared): Make extern.
6572         * tree-flow.h (tree_node_can_be_shared): Declare.
6573         * tree-inline.c (tree_can_inline_p): Check that E has a
6574         statement associated with it.
6575         * tree.c (free_lang_data_in_binf): Factor out of ...
6576         (free_lang_data_in_type): ... here.
6577         Call RECORD_OR_UNION_TYPE_P.
6578         (need_assembler_name_p): Ignore DECL if it does not have TREE_PUBLIC
6579         set.  Call lang_hooks.decls.may_need_assembler_name_p if set.
6580         (free_lang_data_in_decl): Do not clear DECL_CONTEXT for CONST_DECLs.
6581         (free_lang_data): Set debug_info_level to DINFO_LEVEL_NONE.  Set
6582         write_symbols to NO_DEBUG.  Set debug_hooks to do_nothing_debug_hooks.
6583         (gate_free_lang_data): Return true if flag_generate_lto is set.
6584         (walk_tree_1): Call RECORD_OR_UNION_TYPE_P.
6585         * c-common.h (set_builtin_user_assembler_name): Move ...
6586         * tree.h (set_builtin_user_assembler_name): ... here.
6587
6588         * common.opt (flto-report): New flag.
6589         * opts.c (complain_wrong_lang): Do not complain if running lto1.
6590         * collect2.c (scan_prog_file): Send the error output of
6591         'nm' to HOST_BIT_BUCKET.
6592
6593 2009-10-03  Ollie Wild  <aaw@google.com>
6594
6595         * langhooks-def.h (lhd_begin_section): New function declaration.
6596         (lhd_write_section): New function declaration.
6597         (lhd_end_section): New function declaration.
6598         (LANG_HOOKS_BEGIN_SECTION): New macro.
6599         (LANG_HOOKS_WRITE_SECTION_DATA): New macro.
6600         (LANG_HOOKS_END_SECTION): New macro.
6601         (LANG_HOOKS_LTO): New macro.
6602         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_LTO.
6603         * langhooks.c (output.h): Add include.
6604         (saved_section): New static variable.
6605         (lhd_begin_section): New function.
6606         (lhd_write_section_data): New function.
6607         (lhd_end_section): New function.
6608         * langhooks.h (struct lang_hooks_for_lto): New structure.
6609         (struct lang_hooks): Add member lto.
6610         * Makefile.in (langhooks.o): Add dependency on output.h.
6611
6612         * c-opts.c (c_common_post_options): Handle -flto and -fwhopr.
6613
6614 2009-10-03  Richard Guenther  <rguenther@suse.de>
6615
6616         * config/rs6000/rs6000.c (rs6000_output_function_epilogue):
6617         Handle LTO.
6618
6619 2009-10-03  Simon Baldwin  <simonb@google.com>
6620             Richard Guenther  <rguenther@suse.de>
6621             Janis Johnson  <janis187@us.ibm.com>
6622             Doug Kwan  <dougkwan@google.com>
6623             Diego Novillo  <dnovillo@google.com>
6624             Ramana Radhakrishnan  <ramana.r@gmail.com>
6625             Ollie Wild  <aaw@google.com>
6626
6627         * doc/install.texi: Add documentation for libelf and --enable-lto.
6628         * doc/invoke.texi: Document -fwpa, -flto, -fwhopr, -fltrans,
6629         -flto-report, -flto-compression-level and -use-linker-plugin.
6630         * doc/sourcebuild.texi: Document use of zlib.  Document lto-plugin.
6631         Add section for LTO Testing.
6632
6633 2009-10-02  Cary Coutant  <ccoutant@google.com>
6634
6635         Add support for comdat type sections for DWARF v4.
6636         Merge from dwarf4 branch.
6637
6638         * dwarf2out.c (DWARF_TYPE_SIGNATURE_SIZE): New constant.
6639         (dw_die_ref): Define vector type.
6640         (enum dw_val_class): Add dw_val_class_data8.
6641         (struct dw_val_struct): Add v.val_data8.
6642         (comdat_type_node_ref): New type.
6643         (struct die_struct): Move die_symbol into a union; add new field
6644         die_type_node.  Change all uses.
6645         (comdat_type_node): New type.
6646         (skeleton_chain_node): New type.
6647         (DWARF_COMDAT_TYPE_UNIT_HEADER_SIZE): New constant.
6648         (comdat_type_list): New variable.
6649         (dwarf_tag_name): Add DW_TAG_type_unit.
6650         (dwarf_attr_name): Add DW_AT_signature.
6651         (add_AT_data8): New function.
6652         (replace_child): New function.
6653         (move_all_children): New function.
6654         (print_signature): New function.
6655         (print_die): Print signature information; add dw_val_class_data8.
6656         (attr_checksum): Support dw_val_class_data8.
6657         (CHECKSUM_STRING): Redefine for DWARF-4 to include trailing NULL byte.
6658         (CHECKSUM_SLEB128, CHECKSUM_ULEB128): New macros.
6659         (checksum_sleb128, checksum_uleb128): New functions.
6660         (checksum_die_context): New function.
6661         (loc_checksum_ordered): New function.
6662         (attr_checksum_ordered): New function.
6663         (struct checksum_attributes): New structure.
6664         (collect_checksum_attributes): New function.
6665         (die_checksum_ordered): New function.
6666         (generate_type_signature): New function.
6667         (same_dw_val_p): Add dw_val_class_data8.
6668         (is_symbol_die): Use new is_declaration_die function.
6669         (is_declaration_die): New function.
6670         (should_move_die_to_comdat): New function.
6671         (clone_die): New function.
6672         (clone_tree): New function.
6673         (clone_as_declaration): New function.
6674         (copy_declaration_context): New function.
6675         (generate_skeleton_ancestor_tree): New function.
6676         (generate_skeleton_bottom_up): New function.
6677         (generate_skeleton): New function.
6678         (remove_child_or_replace_with_skeleton): New function.
6679         (break_out_comdat_types): New function.
6680         (struct decl_table_entry): New type.
6681         (htab_decl_hash): New function.
6682         (htab_decl_eq): New function.
6683         (htab_decl_del): New function.
6684         (copy_ancestor_tree): New function.
6685         (copy_decls_walk): New function.
6686         (copy_decls_for_unworthy_types): New function.
6687         (build_abbrev_table): Don't assert on missing die_symbol when doing
6688         comdat type sections.
6689         (size_of_die): Use DW_FORM_sig8 for external references.  Add
6690         dw_val_class_data8.
6691         (unmark_dies): Don't assert for unmarked dies when doing comdat
6692         type sections.
6693         (value_format): Support DW_FORM_sig8 and dw_val_class_data8.
6694         (output_signature): New function.
6695         (output_die): Likewise.
6696         (output_compilation_unit_header): Mark output as DWARF version 3
6697         even if generating DWARF 4.
6698         (output_comdat_type_unit): New function.
6699         (output_line_info): Mark output as DWARF version 3 even if generating
6700         DWARF 4.
6701         (dwarf2out_start_source_file): Don't do eliminate_dwarf2_dups with
6702         DWARF-4.
6703         (dwarf2out_end_source_file): Likewise.
6704         (prune_unused_types_walk_attribs): Don't follow references into
6705         comdat type sections.
6706         (prune_unused_types_mark): When generating type units, do not mark
6707         children of non-defining declarations of types; do mark children of
6708         type entries.
6709         (prune_unused_types): Process comdat type sections.
6710         (htab_ct_hash): New function.
6711         (htab_ct_eq): New function.
6712         (dwarf2out_finish): Move types to comdat sections when using DWARF-4.
6713         Add a pointer to the line table from type unit entries so
6714         DW_AT_decl_file has meaning.
6715         * varasm.c (default_elf_asm_named_section): Use identifier name as
6716         comdat key instead of lang hook.
6717
6718 2009-10-02  Neil Vachharajani  <nvachhar@google.com>
6719
6720         * gcov-io.c (gcov_open): Open files read-only when MODE < 0.
6721
6722 2009-10-02  Uros Bizjak  <ubizjak@gmail.com>
6723
6724         * config/i386/i386.md (SWIM248): New mode iterator.
6725         (divmod<mode>4) Macroize expander from divmoddi4, divmodsi4 and
6726         divmodhi4 patterns using SWIM248 macro.
6727         (*divmod<mode>4): Macroize insn_and_split pattern from
6728         *divmoddi4_cltd_rex64, *divmodsi4_cltd and divmodhi4 insn patterns
6729         and their corresponding splitters usign SWIM248 macro.  Split SImode
6730         insn to generate cltd and DImode insn to generate cqto instead of
6731         move+shift when optimizing for size or TARGET_USE_CLTD is in effect.
6732         (*divmoddi4_nocltd_rex64, *divmodsi4_nocltd): Remove insn patterns.
6733         (*divmod<mode>4_noext): Macroize insn from *divmoddi_noext_rex64 and
6734         *divmodsi_noext patterns using SWIM248 macro.
6735         (udivmod<mode>4): Macroize expander from udivmoddi4, udivmodsi4 and
6736         udivmodhi4 patterns using SWIM248 macro.
6737         (*udivmod<mode>4): Macroize insn_and_split pattern from
6738         *udivmoddi4, udivmodsi4 and udivmodhi4 patterns and their
6739         corresponding splitters using SWIM248 macro.
6740         (*udivmod<mode>4_noext): Macroize insn from *udivmoddi4_noext,
6741         *udivmodsi4_noext and *udivmodhi_noext patterns using SWIM248 macro.
6742
6743 2009-10-02  Eric Botcazou  <ebotcazou@adacore.com>
6744
6745         * stor-layout.c (layout_type) <ARRAY_TYPE>: Make sure that an array
6746         of zero-sized element is zero-sized regardless of its extent.
6747
6748 2009-10-02  Jakub Jelinek  <jakub@redhat.com>
6749
6750         PR debug/40521
6751         * configure.ac (HAVE_GAS_CFI_SECTIONS_DIRECTIVE): New test.
6752         * configure: Regenerated.
6753         * config.in: Regenerated.
6754         * dwarf2out.c (dwarf2out_do_cfi_asm): Return false if
6755         !HAVE_GAS_CFI_SECTIONS_DIRECTIVE and not emitting .eh_frame.
6756         (dwarf2out_init): If HAVE_GAS_CFI_SECTIONS_DIRECTIVE and
6757         not emitting .eh_frame, emit .cfi_sections .debug_frame
6758         directive.
6759
6760         PR debug/41404
6761         PR debug/41353
6762         * cfgexpand.c (expand_debug_expr) <case STRING_CST>: Don't create
6763         CONST_STRING if STRING_CST contains embedded '\0's or doesn't end
6764         with '\0'.
6765         (expand_debug_expr) <case VAR_DECL>: For TREE_STATIC !DECL_EXTERNAL
6766         vars use DECL_RTL with resetting it back to NULL afterwards.
6767         * dwarf2out.c (same_dw_val_p): For dw_val_class_addr compare with
6768         rtx_equal_p instead of asserting it is a SYMBOL_REF.
6769         (value_format): For dw_val_class_addr only use DW_FORM_addr if
6770         the attribute type allows it, otherwise use DW_FORM_dataN.
6771         (mem_loc_descriptor): Handle CONST_STRING.
6772         (add_const_value_attribute): Handle CONST_STRING using add_AT_addr.
6773         Handle MEM with CONST_STRING address using add_AT_string.
6774         (rtl_for_decl_init): Return MEM with CONST_STRING address instead of
6775         CONST_STRING for const arrays initialized with a string literal.
6776         (resolve_one_addr, resolve_addr_in_expr, resolve_addr): New functions.
6777         (dwarf2out_finish): Call resolve_addr.
6778
6779 2009-10-02  Andreas Schwab  <schwab@linux-m68k.org>
6780             Maxim Kuvyrkov  <maxim@codesourcery.com>
6781
6782         * config/m68k/lb1sf68.asm (PICCALL): Use variable sized branch.
6783
6784 2009-10-02  Nick Clifton  <nickc@redhat.com>
6785
6786         * config/mn10300/mn10300.h (USER_LABEL_PREFIX): Define.
6787         (ASM_OUTPUT_LABELREF): Use asm_fprintf and %U.
6788
6789 2009-10-01  Jan Hubicka  <jh@suse.cz>
6790
6791         * cgraph.c (cgraph_clone_node): Add redirect_callers parameter.
6792         (cgraph_create_virtual_clone): Just pass redirect_callers
6793         around.
6794         * cgraph.h (cgraph_clone_node): Update prototype.
6795         * ipa-pure-const.c (self_recursive_p): New function.
6796         (propagate): Use it.
6797         * ipa-inline.c (cgraph_clone_inlined_nodes,
6798         cgraph_decide_recursive_inlining): Update.
6799
6800 2009-10-01  David Daney  <ddaney@caviumnetworks.com>
6801
6802         * gcc/config/mips/mips.c (mips_process_sync_loop) Emit syncw
6803         instructions for TARGET_OCTEON.
6804
6805 2009-10-01  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
6806
6807         * config/arm/arm.c (arm_override_options): Turn off
6808         flag_dwarf2_cfi_asm for AAPCS variants.
6809
6810 2009-10-01  Martin Jambor  <mjambor@suse.cz>
6811
6812         PR middle-end/12392
6813         * tree-sra.c (convert_callers): Do not call
6814         compute_inline_parameters on one caller more than once.
6815
6816 2009-10-01  Nick Clifton  <nickc@redhat.com>
6817
6818         * config/vax/netbsd-elf.h (NETBSD_CC1_AND_CC1PLUS_SPEC): Define as
6819         an empty string if not already defined.
6820
6821 2009-10-01  Martin Jambor  <mjambor@suse.cz>
6822
6823         PR bootstrap/41395
6824         * tree-sra.c (is_va_list_type): New function.
6825         (find_var_candidates): Call is_va_list_type.
6826         (find_param_candidates): Check that the type or the type pointed
6827         to are not va_list types.
6828
6829 2009-10-01  Martin Jambor  <mjambor@suse.cz>
6830
6831         PR c++/41503
6832         * cp/pt.c (function_parameter_expanded_from_pack_p): Return false if
6833         DECL_ARTIFICIAL (param_decl) is true.
6834
6835 2009-09-30  Gabriel Dos Reis  <gdr@cs.tamu.edu>
6836
6837         * tree.h (tree_decl_common::lang_flag_8): New.
6838         * c-common.c (c_common_reswords): Include "constexpr" as C++0x
6839         keyword.
6840         * c-common.h (RID_CONSTEXPR): New.
6841
6842 2009-09-30  Uros Bizjak  <ubizjak@gmail.com>
6843
6844         * config/alpha/alpha.c (alpha_gimplify_va_arg_1):
6845         Use ref-all pointers.
6846         (alpha_gimplify_va_arg): Ditto.
6847
6848 2009-09-30  Jakub Jelinek  <jakub@redhat.com>
6849
6850         PR target/41279
6851         * cfgloopanal.c (num_loop_insns): Don't increment ninsns for each bb
6852         before insn counting loop now that BB_END (bb) is counted.  Ensure
6853         the return value isn't zero.
6854
6855 2009-09-30  Nick Clifton  <nickc@redhat.com>
6856
6857         * config.gcc (sh-symbianelf): Replace definition of extra_objs
6858         with separate definitions of c_target_objs and cxx_target_objs.
6859         * config/sh/t-sh: Add rules to build symbian-cxx.o, symbian-c.o
6860         and symbian-base.o.
6861         * config/sh/sh.c (TARGET_CXX_INPUT_EXPORT_CLASS): Use
6862         sh_symbian_import_export_class.
6863         * config/sh/sh-protos.h: Fix names of exported symbian functions.
6864         * config/sh/symbian.c: Delete, moving code into...
6865         * config/sh/symbian-base.c: ... here
6866         * config/sh/symbian-c.c: ... and here
6867         * config/sh/symbian-cxx.c: ... and here.
6868
6869 2009-09-30  Uros Bizjak  <ubizjak@gmail.com>
6870
6871         PR target/22093
6872         * config/alpha/alpha.md (unaligned_storehi_be): Force operand
6873         of plus RTX into register.
6874
6875 2009-09-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
6876
6877         * doc/install.texi: Linguistic and markup fixes.
6878         (Configuration) <--disable-cpp>: Remove description.
6879         <--enable-maintainer-mode>: Autotools files are affected, too.
6880         <--with-sysroot>: Improve description.
6881         (Building): Bump required GNU make version.
6882
6883 2009-09-29  Harsha Jagasia  <harsha.jagasia@amd.com>
6884
6885         * config.gcc (i[34567]86-*-*): Include fma4intrin.h.
6886         (x86_64-*-*): Ditto.
6887
6888         * config/i386/fma4intrin.h: New file, provide common x86 compiler
6889         intrinisics for FMA4.
6890         * config/i386/cpuid.h (bit_FMA4): Define FMA4 bit.
6891         * config/i386/x86intrin.h: Fix typo to SSE4A instead of SSE4a.
6892         Add FMA4 check and fma4intrin.h.
6893         * config/i386/i386-c.c(ix86_target_macros_internal): Check
6894         ISA_FLAG for FMA4.
6895         * config/i386/i386.h(TARGET_FMA4): New macro for FMA4.
6896         * config/i386/i386.md (UNSPEC_FMA4_INTRINSIC): Add new UNSPEC
6897         constant for FMA4 support.
6898         (UNSPEC_FMA4_FMADDSUB): Ditto.
6899         (UNSPEC_FMA4_FMSUBADD): Ditto.
6900         * config/i386/i386.opt (-mfma4): New switch for FMA4 support.
6901         * config/i386/i386-protos.h (ix86_fma4_valid_op_p): Add declaration.
6902         (ix86_expand_fma4_multiple_memory): Ditto.
6903         * config/i386/i386.c (OPTION_MASK_ISA_FMA4_SET): New.
6904         (OPTION_MASK_ISA_FMA4_UNSET): New.
6905         (OPTION_MASK_ISA_SSE4A_UNSET): Change definition to depend on FMA4.
6906         (OPTION_MASK_ISA_AVX_UNSET): Change definition to depend on FMA4.
6907         (ix86_handle_option): Handle -mfma4.
6908         (isa_opts): Handle -mfma4.
6909         (enum pta_flags): Add PTA_FMA4.
6910         (override_options): Add FMA4 support.
6911         (IX86_BUILTIN_VFMADDSS): New for FMA4 intrinsic.
6912         (IX86_BUILTIN_VFMADDSD): Ditto.
6913         (IX86_BUILTIN_VFMADDPS): Ditto.
6914         (IX86_BUILTIN_VFMADDPD): Ditto.
6915         (IX86_BUILTIN_VFMSUBSS): Ditto.
6916         (IX86_BUILTIN_VFMSUBSD): Ditto.
6917         (IX86_BUILTIN_VFMSUBPS): Ditto.
6918         (IX86_BUILTIN_VFMSUBPD): Ditto.
6919         (IX86_BUILTIN_VFMADDSUBPS): Ditto.
6920         (IX86_BUILTIN_VFMADDSUBPD): Ditto.
6921         (IX86_BUILTIN_VFMSUBADDPS): Ditto.
6922         (IX86_BUILTIN_VFMSUBADDPD): Ditto.
6923         (IX86_BUILTIN_VFNMADDSS): Ditto.
6924         (IX86_BUILTIN_VFNMADDSD): Ditto.
6925         (IX86_BUILTIN_VFNMADDPS): Ditto.
6926         (IX86_BUILTIN_VFNMADDPD): Ditto.
6927         (IX86_BUILTIN_VFNMSUBSS): Ditto.
6928         (IX86_BUILTIN_VFNMSUBSD): Ditto.
6929         (IX86_BUILTIN_VFNMSUBPS): Ditto.
6930         (IX86_BUILTIN_VFNMSUBPD): Ditto.
6931         (IX86_BUILTIN_VFMADDPS256): Ditto.
6932         (IX86_BUILTIN_VFMADDPD256): Ditto.
6933         (IX86_BUILTIN_VFMSUBPS256): Ditto.
6934         (IX86_BUILTIN_VFMSUBPD256): Ditto.
6935         (IX86_BUILTIN_VFMADDSUBPS256): Ditto.
6936         (IX86_BUILTIN_VFMADDSUBPD256): Ditto.
6937         (IX86_BUILTIN_VFMSUBADDPS256): Ditto.
6938         (IX86_BUILTIN_VFMSUBADDPD256): Ditto.
6939         (IX86_BUILTIN_VFNMADDPS256): Ditto.
6940         (IX86_BUILTIN_VFNMADDPD256): Ditto.
6941         (IX86_BUILTIN_VFNMSUBPS256): Ditto.
6942         (IX86_BUILTIN_VFNMSUBPD256): Ditto.
6943         (enum multi_arg_type): New enum for describing the various FMA4
6944         intrinsic argument types.
6945         (bdesc_multi_arg): New table for FMA4 intrinsics.
6946         (ix86_init_mmx_sse_builtins): Add FMA4 intrinsic support.
6947         (ix86_expand_multi_arg_builtin): New function for creating FMA4
6948         intrinsics.
6949         (ix86_expand_builtin): Add FMA4 intrinsic support.
6950         (ix86_fma4_valid_op_p): New function to validate FMA4 3 and 4
6951         operand instructions.
6952         (ix86_expand_fma4_multiple_memory): New function to split the
6953         second memory reference from FMA4 instructions.
6954         * config/i386/sse.md (ssemodesuffixf4): New mode attribute for FMA4.
6955         (ssemodesuffixf2s): Ditto.
6956         (fma4_fmadd<mode>4): Add FMA4 floating point multiply/add
6957         instructions.
6958         (fma4_fmsub<mode>4): Ditto.
6959         (fma4_fnmadd<mode>4): Ditto.
6960         (fma4_fnmsub<mode>4): Ditto.
6961         (fma4_vmfmadd<mode>4): Ditto.
6962         (fma4_vmfmsub<mode>4): Ditto.
6963         (fma4_vmfnmadd<mode>4): Ditto.
6964         (fma4_vmfnmsub<mode>4): Ditto.
6965         (fma4_fmadd<mode>4256): Ditto.
6966         (fma4_fmsub<mode>4256): Ditto.
6967         (fma4_fnmadd<mode>4256): Ditto.
6968         (fma4_fnmsub<mode>4256): Ditto.
6969         (fma4_fmaddsubv8sf4): Ditto.
6970         (fma4_fmaddsubv4sf4): Ditto.
6971         (fma4_fmaddsubv4df4): Ditto.
6972         (fma4_fmaddsubv2df4): Ditto.
6973         (fma4_fmsubaddv8sf4): Ditto.
6974         (fma4_fmsubaddv4sf4): Ditto.
6975         (fma4_fmsubaddv4df4): Ditto.
6976         (fma4_fmsubaddv2df4): Ditto.
6977         (fma4i_fmadd<mode>4): Add FMA4 floating point multiply/add
6978         instructions for intrinsics.
6979         (fma4i_fmsub<mode>4): Ditto.
6980         (fma4i_fnmadd<mode>4): Ditto.
6981         (fma4i_fnmsub<mode>4): Ditto.
6982         (fma4i_vmfmadd<mode>4): Ditto.
6983         (fma4i_vmfmsub<mode>4): Ditto.
6984         (fma4i_vmfnmadd<mode>4): Ditto.
6985         (fma4i_vmfnmsub<mode>4): Ditto.
6986         (fma4i_fmadd<mode>4256): Ditto.
6987         (fma4i_fmsub<mode>4256): Ditto.
6988         (fma4i_fnmadd<mode>4256): Ditto.
6989         (fma4i_fnmsub<mode>4256): Ditto.
6990         (fma4i_fmaddsubv8sf4): Ditto.
6991         (fma4i_fmaddsubv4sf4): Ditto.
6992         (fma4i_fmaddsubv4df4): Ditto.
6993         (fma4i_fmaddsubv2df4): Ditto.
6994         (fma4i_fmsubaddv8sf4): Ditto.
6995         (fma4i_fmsubaddv4sf4): Ditto.
6996         (fma4i_fmsubaddv4df4): Ditto.
6997         (fma4i_fmsubaddv2df4): Ditto.
6998
6999         * doc/invoke.texi (-mfma4): Add documentation.
7000         * doc/extend.texi (x86 intrinsics): Add FMA4 intrinsics.
7001
7002 2009-09-29  Richard Henderson  <rth@redhat.com>
7003
7004         * tree-eh.c (unsplit_eh): Do not unsplit if there's already
7005         an edge to the new destination block.
7006
7007 2009-09-29  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7008
7009         PR target/41393
7010         * pa.c (hppa_profile_hook): Use
7011         make_reg_eh_region_note_nothrow_nononlocal to add REG_EH_REGION note.
7012
7013 2009-09-29  Steve Ellcey  <sje@cup.hp.com>
7014             Alexander Monakov  <amonakov@ispras.ru>
7015
7016         PR target/41365
7017         * config/ia64/predicates.md (not_postinc_destination_operand): New.
7018         (not_postinc_memory_operand): New.
7019         (not_postinc_move_operand): New.
7020         * config/ia64/ia64.md (*cmovdi_internal): Disallow autoincrement.
7021         (*cmovsi_internal): Ditto.
7022
7023 2009-09-29  Pat Haugen  <pthaugen@us.ibm.com>
7024
7025         * config/rs6000/rs6000.c (rs6000_issue_rate): Don't artificially
7026         restrict issue_rate in first pass when scheduling for register
7027         pressure.
7028
7029 2009-09-29  Basile Starynkevitch  <basile@starynkevitch.net>
7030             Rafael Avila de Espindola  <espindola@google.com>
7031
7032         * gengtype.c (plugin_output): New.
7033         (get_output_file_with_visibility): Return plugin_output for plugins.
7034         (main): Parse and use the -P option.
7035         * gty.texi: Update the command line format.
7036
7037 2009-09-29  Jakub Jelinek  <jakub@redhat.com>
7038
7039         PR debug/41438
7040         * dwarf2out.c (const_ok_for_output_1, const_ok_for_output): New
7041         functions.
7042         (mem_loc_descriptor, loc_descriptor, add_const_value_attribute): Bail
7043         out if !const_ok_for_output.
7044
7045         PR debug/41474
7046         * dwarf2out.c (mem_loc_descriptor) <case CONCAT, case CONCATN,
7047         case VAR_LOCATION>: Remove gcc_unreachable ().
7048
7049 2009-09-29  Harsha Jagasia  <harsha.jagasia@amd.com>
7050
7051         * config.gcc (i[34567]86-*-*): Remove mmintrin-common.h.
7052         (x86_64-*-*): Ditto.
7053         * config/i386/smmintrin.h: Move instructions in mmintrin-common.h
7054         back to smmintrin.h.
7055         * config/i386/cpuid.h (bit_SSE5): Remove SSE5 bit.
7056         * config/i386/x86intrin.h: Remove SSE5.
7057         * config/i386/mmintrin-common.h: Delete file.
7058         * doc/extend.texi (x86 intrinsics): Remove SSE5 flags and builtins.
7059
7060 2009-09-29  Richard Guenther  <rguenther@suse.de>
7061
7062         * alias.c (ao_ref_from_mem): Properly deal with off decl accesses
7063         resulting from stack temporaries on STRICT_ALIGNMENT targets.
7064
7065 2009-09-29  Nick Clifton  <nickc@redhat.com>
7066
7067         * function.c (current_function_name): If there is no current
7068         function just return "<none>".
7069
7070 2009-09-28  Sriraman Tallam  <tmsriram@google.com>
7071
7072         * tree-pass.h (register_pass_info): New structure.
7073         (pass_positioning_ops): Move enum from gcc-plugin.h.
7074         (register_pass): New function.
7075         * gcc-plugin.h (plugin_pass): Delete structure.
7076         (pass_positioning_ops): Delete enum.
7077         * plugin.c (regsiter_pass): Delete function.
7078         (position_pass): Delete function.
7079         (added_pass_nodes): Delete variable.
7080         (prev_added_pass_nodes): Delete variable.
7081         (pass_list_node): Delete structure.
7082         * passes.c (make_pass_instance): New function.
7083         (next_pass_1): Change to call make_pass_instance.
7084         (pass_list_node): Move structure from gcc-plugin.h.
7085         (added_pass_nodes): Move variable from plugin.c.
7086         (prev_added_pass_nodes): Move variable from plugin.c.
7087         (position_pass): New function.
7088         (register_pass): New function.
7089
7090 2009-09-28  Easwaran Raman  <eraman@google.com>
7091
7092         * ifcvt.c (noce_try_abs): Recognize pattern and call
7093         expand_one_cmpl_abs_nojump.
7094         * optabs.c (expand_one_cmpl_abs_nojump): New function.
7095         * optabs.h (expand_one_cmpl_abs_nojump): Declare.
7096
7097 2009-09-28  Ian Lance Taylor  <iant@google.com>
7098
7099         PR middle-end/40500
7100         * c-opts.c (c_common_handle_option): Don't set
7101         warn_jump_misses_init for -Wall.
7102         * doc/invoke.texi (Warning Options): Update documentation.
7103
7104 2009-09-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
7105
7106         * Makefile.in ($(out_object_file)): Depend on
7107         gt-$(basename $(notdir $(out_file))).h.
7108
7109 2009-09-28  Richard Henderson  <rth@redhat.com>
7110
7111         * except.h (struct eh_region_d): Add use_cxa_end_cleanup.
7112         * except.c (gen_eh_region): Set it.
7113         (duplicate_eh_regions_1): Copy it.
7114         * tree-eh.c (lower_resx): Use it to determine which function
7115         to call to resume.
7116
7117         * langhooks.h (struct lang_hooks): Add eh_use_cxa_end_cleanup.
7118         * langhooks-def.h (LANG_HOOKS_EH_USE_CXA_END_CLEANUP): New.
7119         * builtins.def (BUILT_IN_CXA_END_CLEANUP): New.
7120         * tree.c (build_common_builtin_nodes): Remove parameter.  Build
7121         BUILT_IN_CXA_END_CLEANUP if necessary.
7122
7123         * c-common.c (c_define_builtins): Update call to
7124         build_common_builtin_nodes.
7125
7126 2009-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7127
7128         * spu.c (get_branch_target): Return NULL for ASM_OPERANDS patterns.
7129
7130 2009-09-28  Michael Matz  <matz@suse.de>
7131
7132         * builtins.c (interclass_mathfn_icode): New helper.
7133         (expand_builtin_interclass_mathfn): Use it here, and split folding
7134         into ...
7135         (fold_builtin_interclass_mathfn): ... this new folder.
7136         (build_call_nofold_loc): New static helper.
7137         (build_call_nofold): New wrapper macro for above.
7138         (expand_builtin_int_roundingfn): Use it instead of build_call_expr.
7139         (expand_builtin_pow): Ditto.
7140         (expand_builtin_memset_args): Ditto.
7141         (expand_builtin_printf): Ditto.
7142         (expand_builtin_fprintf): Ditto.
7143         (expand_builtin_sprintf): Ditto.
7144         (expand_builtin_memory_chk): Ditto.
7145         (expand_builtin_mempcpy_args): Ditto and don't call folders.
7146         (expand_builtin_stpcpy): Ditto.
7147         (expand_builtin_strcmp): Ditto.
7148         (expand_builtin_strncmp): Ditto.
7149         (expand_builtin_strcpy): Remove FNDECL and MODE arguments.
7150         (expand_builtin_strcpy_args): Don't call folders.
7151         (expand_builtin_memcmp): Ditto.
7152         (expand_builtin_strncpy): Ditto, and use target.
7153         (expand_builtin_memcpy): Ditto.
7154         (expand_builtin_strstr, expand_builtin_strchr, expand_builtin_strrchr,
7155         expand_builtin_strpbrk, expand_builtin_memmove,
7156         expand_builtin_memmove_args, expand_builtin_bcopy,
7157         expand_builtin_memchr, expand_builtin_strcat, expand_builtin_strncat,
7158         expand_builtin_strspn, expand_builtin_strcspn,
7159         expand_builtin_fputs): Remove these.
7160         (expand_builtin): Don't call the above, change calls to other
7161         expanders that changed prototype.
7162         (fold_builtin_stpcpy): New folder split out from expand_builtin_stpcpy.
7163         (fold_builtin_1 <ISFINITE, ISINF, ISNORMAL>): Call
7164         fold_builtin_interclass_mathfn.
7165         (fold_builtin_2 <STPCPY>): Call fold_builtin_stpcpy.
7166         (fold_builtin_strcat): Add folding split from expand_builtin_strcat.
7167
7168         * fold-const.c (fold_binary_loc <NE_EXPR>): Add !exp != 0 -> !exp.
7169         * passes.c (init_optimization_passes): Move pass_fold_builtins
7170         after last phiopt pass.
7171         * tree-inline.c (fold_marked_statements): When folding builtins
7172         iterate over all instruction potentially generated.
7173         * tree-ssa-ccp.c (gimplify_and_update_call_from_tree): Declare
7174         earlier.
7175         (fold_gimple_call): Use it to always fold calls (into potentially
7176         multiple instructions).
7177         * tree-ssa-dom.c (optimize_stmt): Resolve __builtin_constant_p
7178         calls into zero at this time.
7179         * tree-ssa-propagate.c (substitute_and_fold): Ignore multiple
7180         statements generated by builtin folding.
7181
7182 2009-09-28  Nick Clifton  <nickc@redhat.com>
7183
7184         * config/m32r/m32r.c (m32r_is_insn): Return false for debugging insns.
7185
7186 2009-09-28  Duncan Sands  <baldrick@free.fr>
7187
7188         * gcc-plugin.h (PLUGIN_REGISTER_GGC_CACHES): New event.
7189         * plugin.c (plugin_event_name): Add PLUGIN_REGISTER_GGC_CACHES.
7190         (register_callback): Dispatch it.
7191         (invoke_plugin_callbacks): Incorporate in sanity check.
7192         * ggc.h (ggc_register_cache_tab): Add declaration.
7193         * ggc-common.c (ggc_register_root_tab): Simplify.
7194         (const_ggc_cache_tab_t): New typedef.
7195         (extra_cache_vec): New vector of dynamically added cache tables.
7196         (ggc_register_cache_tab): New function.
7197         (ggc_scan_cache_tab): New function.
7198         (ggc_mark_roots): Simplify dynamic roots.  Handle dynamic caches.
7199         * doc/plugins.texi: Document PLUGIN_REGISTER_GGC_CACHES.
7200
7201 2009-09-27  Richard Henderson  <rth@redhat.com>
7202
7203         * tree-ssa-ccp.c (optimize_stack_restore): Relax the conditions under
7204         which we remove __builtin_stack_restore.
7205
7206 2009-09-27  Bernd Schmidt  <bernd.schmidt@analog.com>
7207
7208         * loop-iv.c (iv_analyze_op): Use function_invariant_p, not CONSTANT_P,
7209         to test for GRD_INVARIANT.
7210         (simple_rhs_p): Anything that's function_invariant_p is fine.
7211
7212 2009-09-27  Rafael Avila de Espindola  <espindola@google.com>
7213
7214         * gengtype.c (main): Use plunge_files instead of plugin_output.
7215
7216 2009-09-27  Basile Starynkevitch  <basile@starynkevitch.net>
7217             Rafael Avila de Espindola  <espindola@google.com>
7218
7219         * gengtype.c (write_root, write_roots): Add a emit_pch argument.
7220         Don't print pch related info if it is false.
7221         (main): Don't print pch info in plugin mode.
7222
7223 2009-09-27  Eric Botcazou  <ebotcazou@adacore.com>
7224
7225         * dwarf2out.c (enum dw_val_class): Replace dw_val_class_long_long
7226         with dw_val_class_const_double.
7227         (struct dw_val_struct): Replace val_long_long with val_double and
7228         adjust for above change.
7229         (output_loc_operands): Likewise.
7230         (add_AT_long_long): Rename into...
7231         (add_AT_double): ...this.
7232         (print_die): Replace dw_val_class_long_long with
7233         dw_val_class_const_double and adjust.
7234         (attr_checksum): Likewise.
7235         (same_dw_val_p): Likewise.
7236         (size_of_die): Likewise.
7237         (value_format): Likewise.
7238         (output_die): Likewise.
7239         (loc_descriptor) <CONST_DOUBLE>: Likewise.
7240         (add_const_value_attribute) <CONST_DOUBLE>: Call add_AT_double
7241         instead of add_AT_long_long.
7242         (add_bound_info) <INTEGER_CST>: Generate the bound as an unsigned
7243         value with the precision of its type.
7244
7245 2009-09-27  Andreas Schwab  <schwab@linux-m68k.org>
7246
7247         PR c/41476
7248         * c-typeck.c (build_conditional_expr): Use the readonly and
7249         volatile flags of the operand types, not of the operands itself.
7250
7251 2009-09-27  Peter O'Gorman  <pogma@thewrittenword.com>
7252
7253         * collect2.c (main): Look for -brtl before adding libraries.
7254
7255 2009-09-27  Jonathan Gray  <jsg@openbsd.org>
7256
7257         * config.gcc: Update OpenBSD targets.
7258         * config/openbsd-stdint.h: New file.
7259         * config/openbsd-libpthread.h: New file.
7260         * config/openbsd.h: Update and break out LIB_SPEC definition.
7261         * config/alpha/openbsd.h: Overhaul to reflect ELF migration.
7262         * config/i386/openbsdelf.h: Correct types.
7263         * config/m68k/openbsd.h: Likewise.
7264         * config/mips/openbsd.h: Likewise.
7265         * config/vax/openbsd.h: Likewise.
7266
7267 2009-09-27  Eric Botcazou  <ebotcazou@adacore.com>
7268
7269         * fold-const.c (maybe_lvalue_p): Return false for M(IN|AX)_EXPR.
7270         (extract_muldiv_1) <MINUS_EXPR>: Swap operands if necessary.
7271         * stor-layout.c (layout_type) <ARRAY_TYPE>: Do not take the maximum
7272         of the length and zero.
7273
7274 2009-09-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
7275
7276         * Makefile.in (TOPLEV_H): Use $(INPUT_H) not input.h.
7277         (FLAGS_H): Add options.h $(REAL_H).
7278         (SEL_SCHED_IR_H): Add $(BITMAP_H) vecprim.h $(CFGLOOP_H).
7279         (TREE_VECTORIZER_H): New.
7280         (EBITMAP_H): Renamed from EBIMAP_H.
7281         (c-decl.o, c-objc-common.o, c-pretty-print.o, attribs.o, c-omp.o)
7282         (gtype-desc.o, ggc-common.o, ggc-page.o, ggc-zone.o, langhooks.o)
7283         (tree.o, tree-ssa-structalias.o, tree-ssa-ter.o, tree-ssanames.o)
7284         (tree-phinodes.o, tree-ssa-loop.o, tree-ssa-math-opts.o)
7285         (gimple-low.o, omp-low.o, sese.o, graphite-blocking.o)
7286         (graphite-clast-to-gimple.o, graphite-dependences.o)
7287         (graphite-interchange.o, graphite-poly.o, graphite-scop-detection.o)
7288         (graphite-sese-to-poly.o, tree-vect-loop.o, tree-vect-loop-manip.o)
7289         (tree-vect-patterns.o, tree-vect-slp.o, tree-vect-stmts.o)
7290         (tree-vect-data-refs.o, tree-vectorizer.o, gimple.o, tree-mudflap.o)
7291         (targhooks.o, stmt.o, emit-rtl.o, ipa.o, matrix-reorg.o, ipa-inline.o)
7292         (gcse.o, tree-ssa-ccp.o, df-byte-scan.o, vec.o, caller-save.o)
7293         (ira-build.o, ira-costs.o, ira-color.o, ira-emit.o, ira.o)
7294         (haifa-sched.o, sched-rgn.o, sel-sched.o, sel-sched-dump.o)
7295         (sel-sched-ir.o, final.o, $(out_object_file)): Dependencies
7296         updated and fixed as per above changes and per
7297         check_makefile_deps.sh output.
7298
7299         PR bootstrap/40928
7300         * configure.ac: Use $LIBS for '-ldl', not $LDFLAGS.
7301         * configure: Regenerate.
7302
7303 2009-09-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7304
7305         * doc/install.texi: Update minimum MPC version to 0.7.
7306
7307 2009-09-26  Gerald Pfeifer  <gerald@pfeifer.com>
7308
7309         * doc/install.texi (Binaries): Remove reference to the binary
7310         distribution CD-ROM from the FSF.
7311
7312 2009-09-26  Michael Matz  <matz@suse.de>
7313
7314         PR lto/40758
7315         PR middle-end/41470
7316         * tree-ssa-coalesce.c (coalesce_ssa_name): Add only SSA names
7317         that are mentioned in the body.
7318
7319 2009-09-26  Michael Matz  <matz@suse.de>
7320
7321         PR tree-optimization/41454
7322         * tree-ssa-dom (stmts_to_rescan): Remove variable.
7323         (tree_ssa_dominator_optimize): Don't allocate and free it.
7324         (dom_opt_leave_block): Don't iterate over it.
7325         (eliminate_redundant_computations): Don't return a value.
7326         (cprop_operand, cprop_into_stmt): Ditto.
7327         (optimize_stmt): Don't defer updating stmts.
7328
7329 2009-09-25  Dodji Seketeli  <dodji@redhat.com>
7330
7331         * dwarf2out.c (dwarf_tag_name, gen_generic_params_dies,
7332         generic_parameter_die, template_parameter_pack_die,
7333         gen_formal_parameter_die, gen_subprogram_die): Adjust after
7334         renaming DW_TAG_formal_parameter_pack and
7335         DW_TAG_template_parameter_pack into DW_TAG_GNU_formal_parameter_pack
7336         and DW_TAG_GNU_template_parameter_pack.
7337
7338 2009-09-25  Anatoly Sokolov  <aesok@post.ru>
7339
7340         * config/v850/v850.h (FUNCTION_VALUE): Remove.
7341         * config/v850/v850.c (v850_function_value): New function.
7342         (TARGET_FUNCTION_VALUE): Define.
7343
7344 2009-09-25  Jakub Jelinek  <jakub@redhat.com>
7345
7346         * tree-vect-stmts.c (vectorizable_call): Call
7347         mark_symbols_for_renaming after vect_finish_stmt_generation.
7348
7349         * dwarf2out.c (tls_mem_loc_descriptor): Pass 1 instead of 2
7350         to loc_descriptor_from_tree.
7351         (add_location_or_const_value_attribute): Pass 0 instead of 2
7352         for decl_by_reference_p decls.
7353
7354 2009-09-25  Richard Guenther  <rguenther@suse.de>
7355
7356         PR middle-end/41463
7357         * tree-dfa.c (get_ref_base_and_extent): Fix issue with trailing
7358         arrays again.
7359
7360 2009-09-25  Ben Elliston  <bje@au.ibm.com>
7361
7362         * doc/invoke.texi (RS/6000 and PowerPC Options): Add missing comma
7363         after `power7'.
7364
7365 2009-09-25  Alan Modra  <amodra@bigpond.net.au>
7366
7367         * config/rs6000/rs6000.md (load_toc_v4_PIC_3c): Correct POWER
7368         form of instruction.
7369
7370 2009-09-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7371
7372         PR middle-end/41435
7373         * fold-const.c (const_binop): Handle complex int division.
7374         * tree-complex.c (expand_complex_div_straight,
7375         expand_complex_div_wide): Update comments.
7376
7377 2009-09-24  DJ Delorie  <dj@redhat.com>
7378
7379         PR target/41456
7380         * config/m32c/m32c.h (REG_CLASS_CONTENTS): Add R13.
7381         (reg_class): Likewise.
7382         (REG_CLASS_NAMES): Likewise.
7383         * config/m32c/m32c.c (m32c_reg_class_from_constraint): Likewise.
7384         (m32c_override_options): Disable -fivopts for M32C.
7385
7386 2009-09-24  Michael Meissner  <meissner@linux.vnet.ibm.com>
7387
7388         * config/rs6000/predicates.md (indexed_or_indirect_operand):
7389         Delete VSX load/store with update support.
7390         * config/rs6000/rs6000.c (rs6000_legitimate_address_p): Ditto.
7391         * config/rs6000/vsx.md (vsx_mov<mode>): Ditto.
7392         (vsx_movti): Ditto.
7393         (VSX_U): Delete.
7394         (VSbit): Ditto.
7395         (VStype_load_update): Ditto.
7396         (VStype_store_update): Ditto.
7397         (vsx_load<VSX_U:mode>_update_<P:mptrsize>): Ditto.
7398         (vsx_store<VSX_U:mode>_update_<P:mptrsize>): Ditto.
7399
7400         * config/rs6000/rs6000.h (enum rs6000_builtins): Delete VSX
7401         load/store with update builtins.
7402
7403 2009-09-24  Kai Tietz  <kai.tietz@onevision.com>
7404
7405         * libgcc2.c (L_trampoline): Prototype for getpagesize
7406         and mprotect in WINNT case.
7407
7408 2009-09-24  Anatoly Sokolov  <aesok@post.ru>
7409
7410         * config/rs6000/rs6000.h (FUNCTION_VALUE): Remove macro.
7411         * config/rs6000/rs6000-protos.h (rs6000_function_value): Remove.
7412         * config/rs6000/rs6000.c (rs6000_function_value): Make static, add
7413         'outgoing' argument.
7414         (TARGET_FUNCTION_VALUE): Define.
7415
7416 2009-09-24  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
7417
7418         * config/darwin.h (DWARF2_DEBUGGING_INFO): Define as 1.
7419
7420 2009-09-24  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
7421
7422         PR bootstrap/41405
7423         * common.opt: Initialize dwarf_strict to -1.
7424         * toplev.c (process_options): Catch unset dwarf_strict
7425         and set to 0 for all targets not overriding.
7426         * config/darwin.c (darwin_override_options): Catch unset
7427         dwarf_strict and override to 1.
7428
7429 2009-09-24  Jeff Law  <law@redhat.com>
7430
7431         * tree-into-ssa.c (rewrite_into_ssa): Free interesting_blocks.
7432
7433 2009-09-24  Richard Guenther  <rguenther@suse.de>
7434
7435         PR tree-optimization/36143
7436         PR tree-optimization/38747
7437         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Only
7438         create VIEW_CONVERT_EXPRs for TBAA compatible accesses.
7439
7440 2009-09-24  Jakub Jelinek  <jakub@redhat.com>
7441
7442         PR bootstrap/41457
7443         * dwarf2out.c (add_const_value_attribute): For HIGH and CONST_FIXED,
7444         return false instead of gcc_unreachable ().  For CONST return the
7445         value returned by recursive call instead of always returning true.
7446         (tree_add_const_value_attribute): Return the value returned by
7447         add_const_value_attribute instead of always returning true if rtl
7448         is non-NULL.
7449
7450 2009-09-23  Justin Seyster  <jrseys@gmail.com>
7451
7452         * Makefile.in (PLUGIN_HEADERS): Include real.h.
7453
7454 2009-09-24  Jakub Jelinek  <jakub@redhat.com>
7455
7456         * cgraphunit.c (cgraph_lower_function): Revert last change.
7457         * targhooks.c (default_static_chain): Use !DECL_STATIC_CHAIN
7458         instead of DECL_NO_STATIC_CHAIN.
7459         * tree-cfg.c (verify_gimple_call): Likewise.
7460         * tree-nested.c (get_chain_decl, get_chain_field,
7461         convert_tramp_reference_op, convert_gimple_call): Likewise.
7462         (convert_all_function_calls): Likewise.  Always set or clear
7463         DECL_STATIC_CHAIN initially, for !n->outer clear it.
7464         (lower_nested_functions): Remove DECL_NO_STATIC_CHAIN checking code.
7465         * c-parser.c (c_parser_declaration_or_fndef): Set DECL_STATIC_CHAIN
7466         if nested.
7467         * print-tree.c (print_node): Handle DECL_STATIC_CHAIN instead of
7468         DECL_NO_STATIC_CHAIN.
7469         * config/i386/i386.c (ix86_static_chain): Use !DECL_STATIC_CHAIN
7470         instead of DECL_NO_STATIC_CHAIN.
7471         (ix86_function_regparm, find_drap_reg): Likewise.  Don't test
7472         decl_function_context.
7473         * varasm.c (initializer_constant_valid_p): Likewise.
7474         * tree.h (DECL_NO_STATIC_CHAIN): Renamed to ...
7475         (DECL_STATIC_CHAIN): ... this.
7476         * config/moxie/moxie.c (moxie_static_chain): Use !DECL_STATIC_CHAIN
7477         instead of DECL_NO_STATIC_CHAIN.
7478
7479 2009-09-23  Basile Starynkevitch  <basile@starynkevitch.net>
7480             Rafael Avila de Espindola  <espindola@google.com>
7481
7482         * gengtype.c (nb_plugin_files): Make it unsigned to match
7483         num_gt_files. Adjust other variables to avoid warnings.
7484         (main): Allocate an all zero lang_bitmap before each plugin file name
7485         to match regular file names.
7486
7487 2009-09-23  Richard Henderson  <rth@redhat.com>
7488
7489         * doc/tm.texi (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Remove.
7490         (TARGET_STATIC_CHAIN): Mention that this hook must be used for
7491         static chain passed in memory.
7492         * system.h (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Poison.
7493         * targhooks.c (default_static_chain): Don't handle STATIC_CHAIN,
7494         STATIC_CHAIN_INCOMING.  Issue a sorry if there's no
7495         STATIC_CHAIN_REGNUM defined.
7496
7497         * config/picochip/picochip-protos.h: s/class/klass/.
7498         * config/picochip/picochip.c (TARGET_STATIC_CHAIN): New.
7499         (picochip_static_chain): New.
7500         * config/picochip/picochip.h (STATIC_CHAIN): Remove.
7501         (STATIC_CHAIN_INCOMING): Remove.
7502
7503         * config/xtensa/xtensa.c (TARGET_STATIC_CHAIN): New.
7504         (xtensa_static_chain): New.
7505         * config/xtensa/xtensa.h (STATIC_CHAIN): Remove.
7506         (STATIC_CHAIN_INCOMING): Remove.
7507
7508 2009-09-23  Anatoly Sokolov  <aesok@post.ru>
7509
7510         * config/pa/pa.h (FUNCTION_VALUE): Remove macro.
7511         * config/pa/pa-protos.h (function_value): Remove.
7512         * config/pa/pa.c (pa_function_value): Rename from function_value.
7513         Make static, add 'outgoing' argument.
7514         (TARGET_FUNCTION_VALUE): Define.
7515
7516 2009-09-23  Anatoly Sokolov  <aesok@post.ru>
7517
7518         * config/avr/avr.c (avr_regs_to_save): Use current_function_is_leaf
7519         instead of cfun->machine->is_leaf.
7520         * config/avr/avr.h (machine_function): Remove is_leaf field.
7521
7522 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
7523
7524         PR debug/41439
7525         * dwarf2out.c (address_of_int_loc_descriptor): Don't emit
7526         DW_OP_piece after DW_OP_stack_value, adjust size calculations
7527         for it, when DW_OP_stack_value and DW_OP_implicit_value has
7528         the same size, prefer DW_OP_stack_value.
7529         (loc_descriptor, loc_list_for_address_of_addr_expr_of_indirect_ref,
7530         loc_list_from_tree): Don't emit DW_OP_piece after DW_OP_stack_value.
7531
7532 2009-09-23  Alexandre Oliva  <aoliva@redhat.com>
7533
7534         PR debug/41353
7535         * var-tracking.c (add_with_sets): Sort MO_VAL_LOC last among uses.
7536
7537 2009-09-23  Alexandre Oliva  <aoliva@redhat.com>
7538
7539         PR debug/41248
7540         * cfgexpand.c (convert_debug_memory_address): New.
7541         (expand_debug_expr): Convert base address and offset to the same
7542         mode.  Use it to convert addresses to other modes.  Accept
7543         ptr_mode addresses.
7544
7545 2009-09-23  Dodji Seketeli <dodji@redhat.com>
7546
7547         PR debug/41065
7548         * function.h (types_used_by_vars_hash): Declare new hash table.
7549         (types_used_by_vars_eq, types_used_by_var_decl_insert): Declare
7550         equality and hash function for the hash table.
7551         (types_used_by_cur_var_decl): Declare a new global chained list.
7552         (types_used_by_var_decl_insert): Declare new function.
7553         * function.c (types_used_by_vars_hash): Define the hashtable ...
7554         (types_used_by_vars_eq, types_used_by_vars_do_hash): ... as well as
7555         its equality and hash functions.
7556         (hash_types_used_by_vars_entry): New hash helper.
7557         (types_used_by_cur_var_decl): Define the global chained list.
7558         (used_types_insert): Update the list of types used by the global
7559         variable being parsed.
7560         (types_used_by_var_decl_insert): Define new function.
7561         * c-common.h (record_types_used_by_current_var_decl): Declare ...
7562         * c-common.c (record_types_used_by_current_var_decl): ... new
7563         function.
7564         * c-decl.c (finish_decl): Record the types used by the global
7565         variable declaration we've just parsed.
7566         * dwarf2out.c (premark_used_types): Insert a new line between
7567         comment and function.
7568         (premark_used_types_helper): Fix comment.
7569         (premark_types_used_by_global_vars_helper,
7570         premark_types_used_by_global_vars): New functions.
7571         (prune_unused_types): Do not prune types used by global variables.
7572
7573 2009-09-23  Richard Guenther  <rguenther@suse.de>
7574
7575         * alias.c (ao_ref_from_mem): Correct for negative MEM_OFFSET
7576         produced for bigendian targets with promoted subregs.
7577
7578 2009-09-23  Richard Guenther  <rguenther@suse.de>
7579
7580         * value-prof.c (gimple_ic): Purge old EH edges only after building
7581         the new ones.
7582
7583 2009-09-23  Nick Clifton  <nickc@redhat.com>
7584
7585         * config/arc/arc.c (arc_trampoline_init): Fix typo.
7586
7587 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
7588
7589         PR bootstrap/41405
7590         * doc/invoke.texi: Document -gstrict-dwarf and -gno-strict-dwarf.
7591
7592         PR bootstrap/41436
7593         * cgraphunit.c (cgraph_lower_function): Set DECL_NO_STATIC_CHAIN
7594         on non-nested functions.
7595
7596 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
7597             Jan Hubicka  <jh@suse.cz>
7598
7599         * dwarf2out.c (loc_list_plus_const): Only define if
7600         DWARF2_DEBUGGING_INFO.
7601         (address_of_int_loc_descriptor): Likewise.
7602
7603         PR debug/41411
7604         * dwarf2out.c (mem_loc_descriptor): Handle HIGH.
7605
7606 2009-09-23  Uros Bizjak  <ubizjak@gmail.com>
7607
7608         PR c/39779
7609         * c-typeck.c (build_binary_op) <short_shift>: Check that integer
7610         constant is more than zero.
7611
7612 2009-09-23  Alan Modra  <amodra@bigpond.net.au>
7613
7614         PR target/40473
7615         * config/rs6000/rs6000.c (rs6000_output_function_prologue): Don't
7616         call final to emit non-scheduled prologue, instead insert at entry.
7617
7618 2009-09-22  Loren J. Rittle  <ljrittle@acm.org>
7619             Joseph S. Myers  <joseph@codesourcery.com>
7620
7621         * doc/install.texi (*-*-freebsd*): Add proper format codes.
7622
7623 2009-09-22  Basile Starynkevitch  <basile@starynkevitch.net>
7624             Rafael Avila de Espindola  <espindola@google.com>
7625
7626         * gengtype.c (is_file_equal): New function.
7627         (close_output_files): Use is_file_equal. Free of->buf.
7628
7629 2009-09-22  Basile Starynkevitch  <basile@starynkevitch.net>
7630             Rafael Avila de Espindola  <espindola@google.com>
7631
7632         * gengtype.c (write_types, write_local): Add the output_header
7633         argument. Update all callers.
7634
7635 2009-09-22  Dodji Seketeli  <dodji@redhat.com>
7636
7637         * dwarf2out.c (template_parameter_pack_die,
7638         gen_formal_parameter_pack_die ): New functions.
7639         (make_ith_pack_parameter_name): Remove this function.
7640         (dwarf_tag_name): Support printing DW_TAG_template_parameter_pack and
7641         DW_TAG_formal_parameter_pack.
7642         (gen_generic_params_dies): Represent each template parameter pack
7643         by a DW_TAG_template_parameter_pack DIE. Argument pack elements are
7644         represented by usual DW_TAG_template_*_parameter DIEs that are
7645         children of the DW_TAG_template_parameter_pack element DIE.
7646         (generic_parameter_die): This doesn't deal with parameter pack
7647         names anymore. Don't generate DW_AT_name for some DIEs, e.g. children
7648         of parameter pack DIEs.
7649         (gen_formal_parameter_die): Add a flag to not emit DW_AT_name
7650         in certain cases, e.g. for pack elements.
7651         (gen_formal_types_die, gen_decl_die): Adjust usage of
7652         gen_formal_parameter_die.
7653         (gen_subprogram_die): Represent each function parameter pack by a
7654         DW_TAG_formal_parameter_pack DIE. Arguments of of the pack are
7655         represented by usual DW_TAG_formal_parameter DIEs that are children
7656         of the DW_TAG_formal_parameter_pack DIE. Remove references to
7657         ____builtin_va_alist decls as no part of the compiler uses those
7658         anymore.
7659         * langhooks.h (struct lang_hooks_for_decls): Add
7660         function_parm_expanded_from_pack_p, get_generic_function_decl
7661         and function_parameter_pack_p hooks.  Fix comment for
7662         get_innermost_generic_parms hook.
7663         * langhooks-def.h (LANG_HOOKS_FUNCTION_PARAMETER_PACK_P,
7664         LANG_HOOKS_FUNCTION_PARM_EXPANDED_FROM_PACK_P ): Declare new hook
7665         macros and use them to initialize lang_hook.
7666
7667 2009-09-22  Richard Henderson  <rth@redhat.com>
7668
7669         * system.h (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE): Poison.
7670         (TRAMPOLINE_ADJUST_ADDRESS): Poison.
7671         * target-def.h (TARGET_ASM_TRAMPOLINE_TEMPLATE): Don't conditionalize
7672         on TRAMPOLINE_TEMPLATE.
7673         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): Don't conditionalize on
7674         TRAMPOLINE_ADJUST_ADDRESS.
7675         * targhooks.c (default_asm_trampoline_template): Remove.
7676         (default_trampoline_adjust_address): Remove.
7677         (default_trampoline_init): Don't handle INITIALIZE_TRAMPOLINE.
7678         * targhooks.h: Update decls.
7679
7680 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
7681
7682         * config/i386/cygming.h (TARGET_USE_JCR_SECTION): Enable.
7683         * config/i386/cygwin.h (LIBGCJ_SONAME): Define.
7684         * config/i386/mingw32.h (LIBGCJ_SONAME): Likewise.
7685
7686 2009-09-22  Alexandre Oliva  <aoliva@redhat.com>
7687
7688         PR debug/41295
7689         * reload1.c (reload): Reset debug insns with pseudos without
7690         equivalences.
7691
7692 2009-09-22  Janis Johnson  <janis187@us.ibm.com>
7693
7694         * config/i386/i386.c (ix86_scalar_mode_supported_p): Don't return
7695         unconditional true for decimal float modes.
7696         * config/rs6000/rs6000.c (rs6000_scalar_mode_supported_p): Ditto.
7697         * config/s390/s390.c (s390_scalar_mode_supported_p): Ditto.
7698
7699 2009-09-22  Loren J. Rittle  <ljrittle@acm.org>
7700
7701         * unwind-dw2-fde-glibc.c: Define and use USE_PT_GNU_EH_FRAME.
7702         Enable a new case for __FreeBSD__ >= 7.
7703         * crtstuff.c:  Define USE_PT_GNU_EH_FRAME for __FreeBSD__ >= 7.
7704         * config/t-freebsd: Define LIB2ADDEH and LIB2ADDEHDEP.
7705         * config/freebsd-spec.h: Conditionally define LINK_EH_SPEC
7706         and USE_LD_AS_NEEDED.
7707
7708         * doc/install.texi (*-*-freebsd*): Update target information.
7709
7710 2009-09-22  Richard Guenther  <rguenther@suse.de>
7711
7712         PR middle-end/41395
7713         * tree-dfa.c (get_ref_base_and_extent): Handle trailing
7714         arrays really properly.
7715
7716 2009-09-22  Richard Henderson  <rth@redhat.com>
7717
7718         PR target/41246
7719         * target.h (struct gcc_target): Add asm_out.trampoline_template,
7720         calls.static_chain, calls.trampoline_init,
7721         calls.trampoline_adjust_address.
7722         * target-def.h (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
7723         (TARGET_STATIC_CHAIN, TARGET_TRAMPOLINE_INIT): New.
7724         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
7725         * builtins.c (expand_builtin_setjmp_receiver): Use
7726         targetm.calls.static_chain; only clobber registers.
7727         (expand_builtin_init_trampoline): Use targetm.calls.trampoline_init;
7728         set up memory attributes properly for the trampoline block.
7729         (expand_builtin_adjust_trampoline): Use
7730         targetm.calls.trampoline_adjust_address.
7731         * calls.c (prepare_call_address): Add fndecl argument.  Use
7732         targetm.calls.static_chain.
7733         * df-scan.c (df_need_static_chain_reg): Remove.
7734         (df_get_entry_block_def_set): Use targetm.calls.static_chain;
7735         consolodate static chain handling.
7736         * doc/tm.texi: Document new hooks.
7737         * emit-rtl.c (static_chain_rtx, static_chain_incoming_rtx): Remove.
7738         (init_emit_regs): Don't initialize them.
7739         * expr.h (prepare_call_address): Update decl.
7740         * final.c (profile_function): Use targetm.calls.static_chain.
7741         * function.c (expand_function_start): Likewise.
7742         * rtl.h (static_chain_rtx, static_chain_incoming_rtx): Remove.
7743         * stmt.c (expand_nl_goto_receiver): Use targetm.calls.static_chain;
7744         only clobber registers.
7745         * targhooks.c (default_static_chain): New.
7746         (default_asm_trampoline_template, default_trampoline_init): New.
7747         (default_trampoline_adjust_address): New.
7748         * targhooks.h: Declare them.
7749         * varasm.c (assemble_trampoline_template): Use
7750         targetm.asm_out.trampoline_template.  Make the memory block const
7751         and set its size.
7752
7753         * config/alpha/alpha.c (alpha_trampoline_init): Rename from
7754         alpha_initialize_trampoline.  Make static.  Merge VMS parameter
7755         differences into the TARGET_ABI_OPEN_VMS code block.
7756         (TARGET_TRAMPOLINE_INIT): New.
7757         * config/alpha/alpha.h (TRAMPOLINE_TEMPLATE): Remove.
7758         (TRAMPOLINE_SECTION, INITIALIZE_TRAMPOLINE): Remove.
7759         * config/alpha/vms.h (TRAMPOLINE_SIZE, TRAMPOLINE_ALIGNMENT): Remove.
7760         (INITIALIZE_TRAMPOLINE): Remove.
7761
7762         * config/arc/arc.h (TRAMPOLINE_ALIGNMENT): New.
7763         (TRAMPOLINE_TEMPLATE): Merge with ...
7764         (INITIALIZE_TRAMPOLINE): ... this and move ...
7765         * config/arc/arc.c (arc_trampoline_init): ... here.
7766         (TARGET_TRAMPOLINE_INIT): New.
7767
7768         * config/arm/arm.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
7769         (TARGET_TRAMPOLINE_INIT, TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
7770         (arm_asm_trampoline_template): New.
7771         (arm_trampoline_init, arm_trampoline_adjust_address): New.
7772         * config/arm/arm.h (TRAMPOLINE_TEMPLATE, ARM_TRAMPOLINE_TEMPLATE,
7773         THUMB2_TRAMPOLINE_TEMPLATE, THUMB1_TRAMPOLINE_TEMPLATE): Move all
7774         code to arm_asm_trampoline_template.
7775         (TRAMPOLINE_ADJUST_ADDRESS): Move code to
7776         arm_trampoline_adjust_address.
7777         (INITIALIZE_TRAMPOLINE): Move code to arm_trampoline_init;
7778         adjust for target hook parameters.
7779
7780         * config/avr/avr.h (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE):
7781         Remove.
7782
7783         * config/bfin/bfin-protos.h (initialize_trampoline): Remove.
7784         * config/bfin/bfin.c (bfin_asm_trampoline_template): New.
7785         (bfin_trampoline_init): Rename from initialize_trampoline;
7786         make static; update for target hook parameters.
7787         (TARGET_ASM_TRAMPOLINE_TEMPLATE, TARGET_TRAMPOLINE_INIT): New.
7788         * config/bfin/bfin.h (TRAMPOLINE_TEMPLATE): Move code to
7789         bfin_asm_trampoline_template.
7790         (INITIALIZE_TRAMPOLINE): Remove.
7791
7792         * config/cris/cris.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
7793         TARGET_TRAMPOLINE_INIT, cris_asm_trampoline_template,
7794         cris_trampoline_init): New.
7795         * config/cris/cris.h (TRAMPOLINE_TEMPLATE): Move code to
7796         cris_asm_trampoline_template.
7797         (INITIALIZE_TRAMPOLINE): Move code to cris_trampoline_init;
7798         adjust for target hook parameters.
7799
7800         * config/crx/crx.h (INITIALIZE_TRAMPOLINE): Remove.
7801
7802         * config/fr30/fr30.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
7803         TARGET_TRAMPOLINE_INIT, fr30_asm_trampoline_template,
7804         fr30_trampoline_init): New.
7805         * config/fr30/fr30.h (TRAMPOLINE_TEMPLATE): Move code to
7806         fr30_asm_trampoline_template.
7807         (INITIALIZE_TRAMPOLINE): Move code to fr30_trampoline_init;
7808         adjust for target hook parameters.
7809
7810         * config/frv/frv.c (TARGET_TRAMPOLINE_INIT): New.
7811         (frv_trampoline_init): Rename from frv_initialize_trampoline;
7812         make static, adjust arguments for TARGET_TRAMPOLINE_INIT hook.
7813         * config/frv/frv.h (INITIALIZE_TRAMPOLINE): Remove.
7814         * config/frv/frv-protos.h (frv_initialize_trampoline): Remove.
7815
7816         * config/h8300/h8300.c (h8300_trampoline_init): New.
7817         (TARGET_TRAMPOLINE_INIT): New.
7818         * config/h8300/h8300.h (INITIALIZE_TRAMPOLINE): Move code
7819         to h8300_trampoline_init and adjust for hook parameters.
7820
7821         * config/ia64/ia64-protos.h (ia64_initialize_trampoline): Remove.
7822         * config/ia64/ia64.c (TARGET_TRAMPOLINE_INIT): New.
7823         (ia64_trampoline_init): Rename from ia64_initialize_trampoline;
7824         make static; adjust for hook parameters.
7825         * config/ia64/ia64.h (INITIALIZE_TRAMPOLINE): Remove.
7826
7827         * config/iq2000/iq2000.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
7828         (TARGET_TRAMPOLINE_INIT): New.
7829         (iq2000_asm_trampoline_template, iq2000_trampoline_init): New.
7830         * config/iq2000/iq2000.h (TRAMPOLINE_TEMPLATE): Move code to
7831         iq2000_asm_trampoline_template.
7832         (INITIALIZE_TRAMPOLINE): Move code to iq2000_trampoline_init.
7833         (TRAMPOLINE_CODE_SIZE): New.
7834         (TRAMPOLINE_SIZE): Use it.
7835         (TRAMPOLINE_ALIGNMENT): Follow Pmode.
7836
7837         * config/m32c/m32c-protos.h (m32c_initialize_trampoline): Remove.
7838         * config/m32c/m32c.c (TARGET_TRAMPOLINE_INIT): New.
7839         (m32c_trampoline_init): Rename from m32c_initialize_trampoline;
7840         adjust for hook parameters.
7841         * config/m32c/m32c.h (INITIALIZE_TRAMPOLINE): Remove.
7842
7843         * config/m32r/m32r.c (TARGET_TRAMPOLINE_INIT): New.
7844         (m32r_trampoline_init): New.
7845         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Move code to
7846         m32r_trampoline_init.
7847
7848         * config/m68hc11/m68hc11.c (TARGET_TRAMPOLINE_INIT): New.
7849         (m68hc11_trampoline_init): Rename from m68hc11_initialize_trampoline;
7850         make static; update for hook parameters.
7851         * config/m68hc11/m68hc11-protos.h: Update.
7852         * config/m68hc11/m68hc11.h (INITIALIZE_TRAMPOLINE): Remove.
7853
7854         * config/mcore/mcore.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
7855         (TARGET_TRAMPOLINE_INIT): New.
7856         (mcore_function_value): Fix typo.
7857         (mcore_asm_trampoline_template, mcore_trampoline_init): New.
7858         * config/mcore/mcore.h (TRAMPOLINE_TEMPLATE): Move code
7859         to mcore_asm_trampoline_template.
7860         (INITIALIZE_TRAMPOLINE): Move code to mcore_trampoline_init.
7861
7862         * config/mep/mep.h (INITIALIZE_TRAMPOLINE): Remove.
7863         * config/mep/mep.c (TARGET_TRAMPOLINE_INIT): New.
7864         (mep_trampoline_init): Rename from mep_init_trampoline; make static;
7865         update for hook parameters.
7866         * config/mep/mep-protos.h (mep_init_trampoline): Remove.
7867
7868         * config/mips/mips.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
7869         mips_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
7870         mips_trampoline_init): New.
7871         * config/mips/mips.h (TRAMPOLINE_TEMPLATE): Move code to
7872         mips_asm_trampoline_template.
7873         (INITIALIZE_TRAMPOLINE): Move code to mips_trampoline_init;
7874         update for hook parameters.
7875
7876         * gcc/config/mmix/mmix.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
7877         (TARGET_TRAMPOLINE_INIT): New.
7878         (mmix_trampoline_size): Remove.
7879         (mmix_asm_trampoline_template): Rename from mmix_trampoline_template;
7880         make static.  Remove out-of-date tetra vs octa comment.
7881         (mmix_trampoline_init): Rename from mmix_initialize_trampoline;
7882         make static; update for hook parameters.
7883         * config/mmix/mmix.h (TRAMPOLINE_TEMPLATE): Remove.
7884         (INITIALIZE_TRAMPOLINE): Remove.
7885         (TRAMPOLINE_SIZE): Use a constant instead of mmix_trampoline_size.
7886         (TRAMPOLINE_ALIGNMENT): New.
7887         * gcc/config/mmix/mmix-protos.h: Update.
7888
7889         * config/mn10300/mn10300.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
7890         mn10300_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
7891         mn10300_trampoline_init): New.
7892         * config/mn10300/mn10300.h (TRAMPOLINE_TEMPLATE): Move code to
7893         mn10300_asm_trampoline_template.
7894         (INITIALIZE_TRAMPOLINE): Move code to mn10300_trampoline_init.
7895
7896         * config/moxie/moxie.c (moxie_static_chain,
7897         moxie_asm_trampoline_template, moxie_trampoline_init,
7898         TARGET_STATIC_CHAIN, TARGET_ASM_TRAMPOLINE_TEMPLATE,
7899         TARGET_TRAMPOLINE_INIT): New.
7900         * config/moxie/moxie.h (INITIALIZE_TRAMPOLINE): Move code to
7901         moxie_trampoline_init.
7902         (TRAMPOLINE_TEMPLATE): Move code to moxie_asm_trampoline_template.
7903         (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Remove.
7904
7905         * gcc/config/pa/pa.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
7906         pa_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
7907         pa_trampoline_init, TARGET_TRAMPOLINE_ADJUST_ADDRESS,
7908         pa_trampoline_adjust_address): New.
7909         * config/pa/pa.h (TRAMPOLINE_TEMPLATE): Move code to
7910         pa_asm_trampoline_template.
7911         (TRAMPOLINE_ALIGNMENT): New.
7912         (TRAMPOLINE_CODE_SIZE): Move to pa.c.
7913         (INITIALIZE_TRAMPOLINE): Move code to pa_trampoline_init;
7914         adjust for hook parameters.
7915         (TRAMPOLINE_ADJUST_ADDRESS): Move code to pa_trampoline_adjust_address.
7916
7917         * config/pdp11/pdp11.c (pdp11_trampoline_init): New.
7918         (TARGET_TRAMPOLINE_INIT): New.
7919         * config/pdp11/pdp11.h (TRAMPOLINE_TEMPLATE): Remove.
7920         (INITIALIZE_TRAMPOLINE): Move code to pdp11_trampoline_init.
7921
7922         * config/picochip/picochip.h (INITIALIZE_TRAMPOLINE): Remove.
7923
7924         * config/rs6000/rs6000-protos.h (rs6000_initialize_trampoline): Remove.
7925         * config/rs6000/rs6000.c (TARGET_TRAMPOLINE_INIT): New.
7926         (rs6000_trampoline_init): Rename from rs6000_initialize_trampoline;
7927         make static; adjust parameters for the hook.
7928         * config/rs6000/rs6000.h (INITIALIZE_TRAMPOLINE): Remove.
7929
7930         * config/s390/s390.c (s390_asm_trampoline_template): Rename from
7931         s390_trampoline_template; make static.
7932         (s390_trampoline_init): Rename from s390_initialize_trampoline;
7933         make static; adjust for target hook.
7934         (TARGET_ASM_TRAMPOLINE_TEMPLATE, TARGET_TRAMPOLINE_INIT): New.
7935         * config/s390/s390-protos.h: Remove trampoline decls.
7936         * config/s390/s390.h (INITIALIZE_TRAMPOLINE): Remove.
7937         (TRAMPOLINE_TEMPLATE): Remove.
7938         (TRAMPOLINE_ALIGNMENT): New.
7939
7940         * config/score/score-protos.h (score_initialize_trampoline): Remove.
7941         * config/score/score.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
7942         (TARGET_TRAMPOLINE_INIT): New.
7943         (score_asm_trampoline_template): New.
7944         (score_trampoline_init): Rename from score_initialize_trampoline;
7945         make static; adjust for hook parameters.
7946         * config/score/score.h (TRAMPOLINE_TEMPLATE): Move code to
7947         score[37]_asm_trampoline_template.
7948         (INITIALIZE_TRAMPOLINE): Remove.
7949         * config/score/score3.c (score3_asm_trampoline_template): New.
7950         (score3_trampoline_init): Rename from score3_initialize_trampoline;
7951         adjust for target hook.
7952         * config/score/score7.c (score7_asm_trampoline_template): New.
7953         (score7_trampoline_init): Rename from score7_initialize_trampoline;
7954         adjust for target hook.
7955         * config/score/score3.h, config/score/score7.h: Update.
7956
7957         * config/sh/sh-protos.h (sh_initialize_trampoline): Remove.
7958         * config/sh/sh.c (TARGET_TRAMPOLINE_INIT): New.
7959         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
7960         (sh_trampoline_init): Rename from sh_initialize_trampoline;
7961         make static; adjust for target hook parameters.
7962         (sh_trampoline_adjust_address): New.
7963         * config/sh/sh.h (INITIALIZE_TRAMPOLINE): New.
7964         (TRAMPOLINE_ADJUST_ADDRESS): Move code to sh_trampoline_adjust_address.
7965
7966         * config/sparc/sparc.c (TARGET_TRAMPOLINE_INIT): New.
7967         (sparc32_initialize_trampoline): Rename from
7968         sparc_initialize_trampoline; make static; replace tramp parameter
7969         with m_tramp and update memory accesses.
7970         (sparc64_initialize_trampoline): Similarly.
7971         (sparc_trampoline_init): New.
7972         * config/sparc/sparc-protos.h: Remove trampoline decls.
7973         * config/sparc/sparc.h (INITIALIZE_TRAMPOLINE): Remove.
7974         * config/sparc/sparc.md (nonlocal_goto): Don't use static_chain_rtx.
7975
7976         * config/spu/spu.c (TARGET_TRAMPOLINE_INIT): New.
7977         (array_to_constant): Make ARR parameter const.
7978         (spu_trampoline_init): Rename from spu_initialize_trampoline;
7979         make static; update for hook parameters.
7980         * config/spu/spu-protos.h: Update decls.
7981         * config/spu/spu.h (INITIALIZE_TRAMPOLINE): Remove.
7982
7983         * config/stormy16/stormy16.c (xstormy16_trampoline_init): Rename
7984         from xstormy16_initialize_trampoline; make static; update for
7985         hook parameters.
7986         (TARGET_TRAMPOLINE_INIT): New.
7987         * config/stormy16/stormy16.h (INITIALIZE_TRAMPOLINE): Remove.
7988
7989         * config/v850/v850.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
7990         (TARGET_TRAMPOLINE_INIT): New.
7991         (v850_can_eliminate): Make static.
7992         (v850_asm_trampoline_template, v850_trampoline_init): New.
7993         * config/v850/v850.h (TRAMPOLINE_TEMPLATE): Move code to
7994         v850_asm_trampoline_template.
7995         (INITIALIZE_TRAMPOLINE): Move code to v850_trampoline_init
7996         and adjust for target hook parameters.
7997
7998         * config/vax/vax.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
7999         (TARGET_TRAMPOLINE_INIT): New.
8000         (vax_asm_trampoline_template, vax_trampoline_init): New.
8001         * config/vax/vax.h (TRAMPOLINE_TEMPLATE): Move code to
8002         vax_asm_trampoline_template.
8003         (INITIALIZE_TRAMPOLINE): Move code to vax_trampoline_init.
8004
8005         * config/xtensa/xtensa.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
8006         (TARGET_TRAMPOLINE_INIT): New.
8007         (xtensa_asm_trampoline_template): Rename from
8008         xtensa_trampoline_template; make static.
8009         (xtensa_trampoline_init): Rename from xtensa_initialize_trampoline;
8010         make static; update for hook parameters.
8011         * config/xtensa/xtensa-protos.h: Remove trampoline decls.
8012         * config/xtensa/xtensa.h (TRAMPOLINE_TEMPLATE): Remove.
8013         (INITIALIZE_TRAMPOLINE): Remove.
8014
8015         * config/i386/i386.c (ix86_function_regparm): Do not issue an
8016         error for nested functions with regparm=3.
8017         (ix86_compute_frame_layout): Adjust frame pointer offset for
8018         ix86_static_chain_on_stack.
8019         (ix86_expand_prologue): Handle ix86_static_chain_on_stack.
8020         (ix86_emit_restore_reg_using_pop): Increment ix86_cfa_state->offset,
8021         don't reset to UNITS_PER_WORD.
8022         (ix86_emit_leave): Adjust ix86_cfa_state.
8023         (ix86_expand_epilogue): Handle ix86_static_chain_on_stack.
8024         (ix86_static_chain): New.
8025         (ix86_trampoline_init): Rename from x86_initialize_trampoline;
8026         make static; update for target hook parameters; use ix86_static_chain.
8027         (TARGET_STATIC_CHAIN, TARGET_TRAMPOLINE_INIT): New.
8028         * config/i386/i386.h (STATIC_CHAIN_REGNUM): Remove.
8029         (INITIALIZE_TRAMPOLINE): Remove.
8030         (TRAMPOLINE_SIZE): Use 24 for 64-bit.
8031         (struct machine_function): Use BOOL_BITFIELD; rearrange bitfields
8032         to the end.  Add static_chain_on_stack.
8033         (ix86_static_chain_on_stack): New.
8034
8035         * config/m68k/m68k.c (TARGET_TRAMPOLINE_INIT): New.
8036         (m68k_output_mi_thunk): Don't use static_chain_rtx.
8037         (m68k_trampoline_init): New.
8038         * config/m68k/m68k.h (INITIALIZE_TRAMPOLINE): Move code to
8039         m68k_trampoline_init and adjust for hook parameters.
8040         * config/m68k/netbsd-elf.h (TRAMPOLINE_TEMPLATE): Remove.
8041         (TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE): Remove.
8042
8043 2009-09-22  Jakub Jelinek  <jakub@redhat.com>
8044
8045         * config/rs6000/rs6000.c (bdesc_2arg): Fix CODE_FOR_vector_gt* codes
8046         for __builtin_altivec_vcmpgt{sb,uh,sh,uw}.
8047
8048         * reload1.c (reload): Call wrap_constant when substituting
8049         reg for equiv inside of DEBUG_INSNs.
8050
8051         PR bootstrap/41405
8052         * dwarf2out.c (base_type_die, record_type_tag, gen_subprogram_die,
8053         add_call_src_coords_attributes, add_high_low_attributes,
8054         gen_compile_unit_die, gen_type_die_with_usage force_decl_die,
8055         gen_decl_die, dwarf2out_imported_module_or_decl_1, dwarf2out_finish,
8056         dwarf2out_imported_module_or_decl): Avoid using DWARF3 additions
8057         when -gdwarf-2 -gstrict-dwarf.
8058         (loc_list_from_tree): Likewise.  Avoid using DWARF4 additions when
8059         -gdwarf-[23] -gstrict-dwarf.
8060         (address_of_int_loc_descriptor, loc_descriptor,
8061         loc_list_for_address_of_addr_expr_of_indirect_ref): Avoid using
8062         DWARF4 additions when -gdwarf-[23] -gstrict-dwarf.
8063         * common.opt (gno-strict-dwarf, gstrict-dwarf): New options.
8064
8065 2009-09-22  Richard Guenther  <rguenther@suse.de>
8066
8067         PR tree-optimization/41428
8068         * tree-ssa-ccp.c (ccp_fold_stmt): New function.
8069         (ccp_finalize): Pass it to substitute_and_fold.
8070
8071 2009-09-22  Richard Guenther  <rguenther@suse.de>
8072
8073         * tree-ssa-propagate.h (ssa_prop_fold_stmt_fn): Declare.
8074         (substitute_and_fold): Adjust prototype.
8075         * tree-vrp.c (vrp_evaluate_conditional): Make static.
8076         (simplify_stmt_using_ranges): Likewise.
8077         (fold_predicate_in): Move here from tree-ssa-propagate.c.
8078         (vrp_fold_stmt): New function.
8079         (vrp_finalize): Pass it to substitute_and_fold.
8080         * tree-flow.h (vrp_evaluate_conditional): Remove.
8081         (simplify_stmt_using_ranges): Likewise.
8082         * tree-ssa-ccp.c (ccp_finalize): Adjust call to substitute_and_fold.
8083         * tree-ssa-copy.c (fini_copy_prop): Likewise.
8084         * tree-ssa-propagate.c (struct prop_stats_d): Rename num_pred_folded
8085         member.
8086         (fold_predicate_in): Move to tree-vrp.c.
8087         (substitute_and_fold): Use the callback instead of calling into
8088         tree-vrp.c functions directly.
8089
8090 2009-09-22  Jakub Jelinek  <jakub@redhat.com>
8091
8092         * dwarf2out.c (address_of_int_loc_descriptor): Avoid signed/unsigned
8093         comparison warning on rs6000.
8094
8095         PR middle-end/41429
8096         * tree-cfg.c (remove_useless_stmts_tc): Call gsi_next (gsi) even for
8097         GIMPLE_EH_MUST_NOT_THROW cleanup.
8098         (verify_types_in_gimple_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.
8099
8100 2009-09-22  Jack Howarth  <howarth@bromo.med.uc.edu>
8101
8102         PR middle-end/41260
8103         * gcc/config.gcc: Use darwin9.h and darwin10.h on darwin10 and later.
8104         * gcc/config/darwin10.h: Add file to pass -no_compact_unwind on
8105         LIB_SPEC for darwin10 and later since it always uses the unwinder in
8106         libSystem which is derived from the gcc 4.2.1 unwinder.
8107
8108 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
8109
8110         PR middle-end/41357
8111         * varasm.c (default_encode_section_info): Copy TLS model into
8112         sym_ref flags regardless of backend support for TLS, for all
8113         model types except TLS_MODEL_EMULATED.
8114
8115 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
8116
8117         PR bootstrap/41404
8118         * dwarf2out.c (mem_loc_descriptor): Punt on CONST_STRING until
8119         we can handle it correctly.
8120
8121 2009-09-21  Gerald Pfeifer  <gerald@pfeifer.com>
8122
8123         * doc/install.texi (os2): Remove section.
8124
8125 2009-09-21  Gerald Pfeifer  <gerald@pfeifer.com>
8126
8127         * doc/standards.texi (Objective-C): Adjust two URLs.
8128
8129 2009-09-21  Giuseppe Scrivano <gscrivano@gnu.org>
8130
8131         * tree-tailcall.c (process_assignment): Don't check if a
8132         multiplication or an addition are already present.
8133         (find_tail_calls): Combine multiple additions and multiplications.
8134         (adjust_accumulator_values): Emit accumulators.
8135
8136 2009-09-21  Kai Tietz  <kai.tietz@onevision.com>
8137
8138         * config/i386/i386.c (ix86_expand_epilogue): Adjust offset for
8139         xmm register restore.
8140
8141 2009-09-21  Jan Hubicka  <jh@suse.cz>
8142
8143         * dwarf2out.c (decl_loc_table_eq): Allow decl_loc_table to be NULL.
8144         (dwarf2out_abstract_function): NULLify decl_loc_table at begginig and
8145         restore at the end.
8146
8147 2009-09-21  Eric Botcazou  <ebotcazou@adacore.com>
8148
8149         * stor-layout.c (layout_type): Remove obsolete code.
8150
8151 2009-09-20  H.J. Lu  <hongjiu.lu@intel.com>
8152
8153         PR middle-end/41395
8154         * opts.c (decode_options): Don't turn on flag_ipa_sra for opt2.
8155
8156 2009-09-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8157
8158         PR middle-end/30789
8159         * builtins.c (do_mpc_arg2): Accept DO_NONFINITE parameter.
8160         (do_mpc_ckconv): Accept FORCE_CONVERT parameter.
8161         (fold_builtin_2, do_mpc_arg1): Update accordingly.
8162         * fold-const.c (const_binop): Likewise.
8163         * real.h (do_mpc_arg2): Update prototype.
8164
8165 2009-09-20  Jan Hubicka  <jh@suse.cz>
8166
8167         * dwarf2out.c (add_const_value_attribute): Return true if successful.
8168         (add_location_or_const_value_attribute): Rewrite using
8169         loc_list_from_tree.
8170         (tree_add_const_value_attribute): Return true if successful.
8171         (tree_add_const_value_attribute_for_decl): Likewise.
8172
8173         * dwarf2out.c (address_of_int_loc_descriptor): Break out from ...
8174         (loc_descriptor): ... here;
8175         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
8176         (cst_pool_loc_descr): Break out from ...; do not reffer constant
8177         pool items that was not marked for output.
8178         (loc_list_from_tree): ... here; handle special cases of ADDR_EXPR;
8179         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
8180         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
8181         handle ALIGN_INDIRECT_REF, MISALIGNED_INDIRECT_REF, REALPART_EXPR,
8182         IMAGPART_EXPR; handle address of INTEGER_CST; improve handling of
8183         CONSTRUCTOR; handle REAL_CST, STRING_CST, COMPLEX_CST; use
8184         DW_OP_stack_value to get address of items that are not available
8185         as addresses.
8186         (dw_loc_list): Handle single element lists correctly.
8187
8188 2009-09-20  Kai Tietz  <kai.tietz@onevision.com>
8189             Pascal Obry  <obry@adacore.com>
8190
8191         * unwind-dw2-fde.c (classify_object_over_fdes):
8192         Cast the constant 1 to _Unwind_Ptr.
8193         (add_fdes): Likewise.
8194         (linear_search_fdes): Likewise.
8195
8196 2009-09-20  Eric Botcazou  <ebotcazou@adacore.com>
8197
8198         * stor-layout.c (set_sizetype): Avoid useless type copy.
8199
8200 2009-09-20  Richard Sandiford  <rdsandiford@googlemail.com>
8201
8202         * configure.ac (gcc_cv_ld_mips_personality_relaxation): New
8203         feature check.
8204         (HAVE_LD_PERSONALITY_RELAXATION): New macro definition.
8205         * configure, config.in: Regenerate.
8206         * dwarf2asm.c (eh_data_format_name): Handle DW_EH_PE_indirect |
8207         DW_EH_PE_absptr.
8208         * config/mips/mips.h (TARGET_WRITABLE_EH_FRAME): New macro.
8209         (ASM_PREFERRED_EH_DATA_FORMAT): Define.  Use MIPS_EH_INDIRECT
8210         for global data if the output could be used in a shared library.
8211         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
8212         to 0 if TARGET_WRITABLE_EH_FRAME.
8213
8214 2009-09-20  Paolo Bonzini <bonzini@gnu.org>
8215
8216         PR rtl-optimization/39886
8217         * combine.c (update_cfg_for_uncondjump): Set EDGE_FALLTHRU
8218         just when insn is equal to BB_END (bb).
8219
8220 2009-09-19  Adam Nemet  <anemet@caviumnetworks.com>
8221
8222         * config/mips/mips.opt (mrelax-pic-calls): New option.
8223         * config/mips/mips.c (mips_strip_unspec_address): Move it up in
8224         the file.
8225         (mips_unspec_call): Change "unspec_call" expander into this.
8226         (mips_strip_unspec_call): New function.
8227         (mips_got_load): Call mips_unspec_call instead of
8228         gen_unspec_call<mode>.
8229         (mips16_build_call_stub): Fix comment for fp_code.  Adjust call to
8230         MIPS_CALL.
8231         (mips_cfg_in_reorg): New function.
8232         (mips16_lay_out_constants): Use it to decide whether to call
8233         CFG-aware insn splitting.
8234         (r10k_insert_cache_barriers): Move CFG set-up code from here to
8235         mips_reorg.  Move DF set-up code from here ...
8236         (mips_df_reorg): ... to here.  Call r10k_insert_cache_barriers
8237         from here.
8238         (mips_reorg): Call mips_df_reorg instead of
8239         r10k_insert_cache_barriers.  Move CFG set-up code here from
8240         r10k_insert_cache_barriers.
8241         (mips_call_expr_from_insn): New function.
8242         (mips_pic_call_symbol_from_set): Likewise.
8243         (mips_find_pic_call_symbol): Likewise.
8244         (mips_annotate_pic_call_expr): Likewise.
8245         (mips_get_pic_call_symbol): Likewise.
8246         (mips_annotate_pic_calls): Likewise.
8247         (mips_override_options): Disable -mrelax-pic-calls unless PIC
8248         calls are used.
8249         (mips_set_mips16_mode): Disable -mrelax-pic-calls for MIPS16.
8250         * config/mips/mips-protos.h (mips_get_pic_call_symbol): Declare it.
8251         * config/mips/mips.h (MIPS_CALL): Use it to print the .reloc
8252         directive.
8253         * config/mips/mips.md (UNSPEC_CALL_ATTR): New unspec.
8254         (unspec_call<mode>): Remove it.
8255         (sibcall_internal, sibcall_value_internal,
8256         sibcall_value_multiple_internal, call_internal, call_split,
8257         call_value_internal, call_value_split,
8258         call_value_multiple_internal, call_value_multiple_split): Pass
8259         SIZE_OPNO to MIPS_CALL.
8260         (call_internal_direct, call_direct_split,
8261         call_value_internal_direct, call_value_direct_split): Pass -1 as
8262         SIZE_OPNO to MIPS_CALL.
8263         * configure.ac <mips*-*-*>: Add test for .reloc R_MIPS_JALR.
8264         * configure: Regenerate.
8265         * doc/invoke.texi (Option Summary): Add -mrelax-pic-calls
8266         and -mno-relax-pic-calls.
8267         (MIPS Options): Document -mrelax-pic-calls and -mno-relax-pic-calls.
8268
8269 2009-09-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
8270
8271         PR bootstrap/35619
8272         * Makefile.in (stmp-fixinc): Ensure `include-fixed' is created
8273         in the directory this rule is called from, rather than the
8274         toplevel 'gcc' directory, to fix in-tree build.
8275
8276 2009-09-19  Chris Demetriou  <cgd@google.com>
8277
8278         PR preprocessor/28435:
8279         * c-opts.c (c_common_handle_option): For -MD and -MMD, indicate
8280         to cpplib that the preprocessor output is needed.
8281
8282 2009-09-19  Jakub Jelinek  <jakub@redhat.com>
8283
8284         * config/rs6000/rs6000.md (*save_gpregs_<mode>, *save_fpregs_<mode>,
8285         *restore_gpregs_<mode>, *return_and_restore_gpregs_<mode>,
8286         *return_and_restore_fpregs_<mode>,
8287         *return_and_restore_fpregs_aix_<mode>): Remove 'z' operand modifier.
8288
8289         PR bootstrap/41397
8290         * dwarf2out.c (mem_loc_descriptor) <case SUBREG>: Recurse
8291         instead of assuming it has always a REG inside of it.
8292
8293 2009-09-18  Gerald Pfeifer  <gerald@pfeifer.com>
8294
8295         * config/freebsd.h: Update comment on types.
8296         (WINT_TYPE): Define.
8297
8298 2009-09-18  Jason Merrill  <jason@redhat.com>
8299
8300         * c.opt: Add -fno-deduce-init-list.
8301
8302 2009-09-18  Neil Vachharajani  <nvachhar@google.com>
8303
8304         * value-prof.c (interesting_stringop_to_profile_p): Added output
8305         argument to indicate which parameter is the size parameter.
8306         * value-prof.c (gimple_stringop_fixed_value): Use
8307         INTERESTING_STRINGOP_TO_PROFILE_P to find size argument.
8308         * value-prof.c (gimple_stringops_transform): Update call sites to
8309         INTERESTING_STRINGOP_TO_PROFILE_P to reflect parameter change.
8310
8311 2009-09-18  Uros Bizjak  <ubizjak@gmail.com>
8312
8313         PR target/38288
8314         From David Binderman <dcb314@hotmail.com>:
8315         * gcc/config/i386/i386.c (ix86_function_regparm): Remove useless
8316         local variable f.  Remove stale comments.
8317         (ix86_compute_frame_layout): Remove useless local variable total_size.
8318         Remove #if 0'd code.
8319         (legitimate_address_p): Remove useless local variables
8320         reason_rtx and reason.
8321         (ix86_split_copysign_const): Remove useless local variable op1.
8322         (scale_counter): Remove useless local variable piece_size_mask.
8323
8324 2009-09-18  Jakub Jelinek  <jakub@redhat.com>
8325
8326         * stmt.c (expand_asm_operands): Set REG_ATTRS on the temporary from
8327         output decl.
8328
8329 2009-09-17  Michael Haubenwallner  <michael.haubenwallner@salomon.at>
8330
8331         PR target/40913
8332         * config/pa/t-hpux-shlib: Set soname in libgcc_s.sl.
8333
8334 2009-09-17  Jakub Jelinek  <jakub@redhat.com>
8335
8336         * c-decl.c (finish_struct): Adjust DECL_SOURCE_LOCATION of
8337         TYPE_STUB_DECL.
8338
8339 2009-09-17  Alexandre Oliva  <aoliva@redhat.com>
8340
8341         * dwarf2out.c (loc_descriptor): Emit DW_OP_stack_value and
8342         DW_OP_implicit_value even without dwarf_version 4.
8343
8344 2009-09-17  Jan Hubicka  <jh@suse.cz>
8345
8346         * dwarf2out.c: Include tree-pass.h and gimple.h.
8347         (loc_list_plus_const): New function.
8348         (loc_descriptor_from_tree_1): Rename to ...
8349         (loc_descriptor_from_tree): ... remove original.
8350         (loc_list_from_tree): New function.
8351         (add_AT_location_description): Accept location list.
8352         (tls_mem_loc_descriptor): Update call of loc_descriptor_from_tree.
8353         (concatn_mem_loc_descriptor): Remove.
8354         (mem_loc_descriptor): Handle CONCAT/CONCATN and VAR_LOCATION by
8355         returning NULL.
8356         (secname_for_decl): Move up.
8357         (hidden_reference_p): New function; break out from ...
8358         (loc_by_refernece): ... here; move up.
8359         (dw_loc_list): New function.
8360         (single_element_loc_list): New function.
8361         (single_element_loc_list_p): New function.
8362         (add_loc_descr_to_each): New function.
8363         (add_loc_list): New function.
8364         (loc_descr_from_tree): Make wraper of loc_list_from_tree.
8365         (loc_list_from_tree): Reroganized from loc_descr_from_tree;
8366         add diagnostics why expansion failed.
8367         (add_location_or_const_value_attribute): Support location lists.
8368         (add_bound_info): Likewise.
8369         (descr_info_loc): Update call of loc_descriptor_from_tree.
8370         (gen_variable_die): Work on location lists.
8371         * final.c (pass_final): Add dump file.
8372         * Makefile.in (dwarf2out.o): Add new dependencies.
8373
8374 2009-09-17  Janis Johnson  <janis187@us.ibm.com>
8375
8376         PR c/41049
8377         * real.c decimal_from_integer, decimal_integer_string): New.
8378         (real_from_integer): Use them as special case for decimal float.
8379         * config/dfp-bit.c (_si_to_sd, _usi_to_sd): Use default rounding.
8380         (_di_to_sd, _di_to_dd, _di_to_td, _udi_to_sd, _udi_to_dd, _udi_to_td):
8381         Do not append zero after the decimal point in string to convert.
8382
8383 2009-09-17  Alexander Monakov  <amonakov@ispras.ru>
8384
8385         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Add bounds only
8386         for ARRAY_REFs.  Use array_ref_{low,up}_bound to determine bounds.
8387
8388 2009-09-17  Martin Jambor  <mjambor@suse.cz>
8389
8390         * common.opt (fipa-sra): New switch.
8391         * opts.c (decode_options): Turn flag_ipa_sra on for opt2.
8392         * timevar.def (TV_IPA_SRA): New timevar.
8393         * params.def (ipa-sra-ptr-growth-factor): New parameter.
8394         * doc/invoke.texi: Document -fipa-sra and ipa-sra-ptr-growth-factor.
8395         * tree-sra.c: Include cgraph.c.
8396         (enum sra_mode): Added SRA_MODE_EARLY_IPA.
8397         (struct access): Added fields stmt, grp_maybe_modified, grp_scalar_ptr
8398         and grp_not_necessarilly_dereferenced.
8399         (func_param_count): New variable.
8400         (encountered_apply_args): New variable.
8401         (bb_dereferences): New variable.
8402         (final_bbs): New variable.
8403         (no_accesses_representant): New variable.
8404         (no_accesses_p): New function.
8405         (dump_access): Dump the new fields.
8406         (sra_initialize): Set encountered_apply_args to false.
8407         (get_ssa_base_param): New function.
8408         (mark_parm_dereference): New function.
8409         (create_access): Caring for INIDRECT_REFs and different handling of
8410         varialble length accesses in early IPA SRA.  Store the stmt - a new
8411         parameter - to the new access.
8412         (build_access_from_expr_1): New parameter stmt, passed to
8413         create_access.  Handle INDIRECT_REFs.
8414         (build_access_from_expr): Pass the current statement to
8415         build_access_from_expr_1.
8416         (disqualify_ops_if_throwing_stmt): Trigger only in intraprocedural
8417         passes.
8418         (build_accesses_from_assign): Pass the current statement to
8419         build_access_from_expr_1.  Do not create assign links in IPA-SRA.
8420         (scan_function): Call handle_ssa_defs on phi nodes.  Set bits in
8421         final_bbs when necessary.  Check for calls to __builtin_apply_args.
8422         Fixup EH info if anythng was changed.
8423         (is_unused_scalar_param): New function.
8424         (ptr_parm_has_direct_uses): New function.
8425         (find_param_candidates): New function.
8426         (mark_maybe_modified): New function.
8427         (analyze_modified_params): New function.
8428         (propagate_dereference_distances): New function.
8429         (dump_dereferences_table): New function.
8430         (analyze_caller_dereference_legality): New function.
8431         (unmodified_by_ref_scalar_representative): New function.
8432         (splice_param_accesses): New function.
8433         (decide_one_param_reduction): New function.
8434         (enum ipa_splicing_result): New type.
8435         (splice_all_param_accesses): New function.
8436         (get_param_index): New function.
8437         (turn_representatives_into_adjustments): New function.
8438         (analyze_all_param_acesses): New function.
8439         (get_replaced_param_substitute): New function.
8440         (get_adjustment_for_base): New function.
8441         (replace_removed_params_ssa_names): New function.
8442         (sra_ipa_reset_debug_stmts): New function.
8443         (sra_ipa_modify_expr): New function.
8444         (sra_ipa_modify_assign): New function.
8445         (convert_callers): New function.
8446         (modify_function): New function.
8447         (ipa_sra_preliminary_function_checks): New function.
8448         (ipa_early_sra): New function.
8449         (ipa_early_sra_gate): New function.
8450         (pass_early_ipa_sra): New variable.
8451         * Makefile.in (tree-sra.o): Add cgraph.h to dependencies.
8452
8453 2009-09-17  Michael Matz  <matz@suse.de>
8454
8455         PR middle-end/41347
8456         * tree.c (build_type_attribute_qual_variant): Export.
8457         * tree.h (build_type_attribute_qual_variant): Declare.
8458         * tree-inline.c (remap_type_1): Use it to build variants with
8459         the original qualifiers and attributes.
8460
8461 2009-09-17  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
8462
8463         * cfglayout.c (fixup_reorder_chain): Accept conditional jumps
8464         without a fallthrough edge.
8465
8466 2009-09-16  DJ Delorie  <dj@redhat.com>
8467
8468         * config/m32c/m32c.c (m32c_emit_epilogue): Check for R8C or M16C
8469         chip and ignore the "fast_interrupt" attribute if so.
8470
8471 2009-09-16  Richard Henderson  <rth@redhat.com>
8472
8473         PR middle-end/41360
8474         * cfgbuild.c (find_bb_boundaries): Really re-instate 2009-09-02
8475         barrier fix.
8476
8477 2009-09-16  Richard Henderson  <rth@redhat.com>
8478
8479         PR target/41246
8480         * tree-cfg.c (verify_gimple_call): Validate that gimple_call_chain
8481         is set only if DECL_NO_STATIC_CHAIN is unset.
8482         * tree-nested.c (iter_nestinfo_start, iter_nestinfo_next): New.
8483         (FOR_EACH_NEST_INFO): New.
8484         (walk_all_functions): Use it.
8485         (finalize_nesting_tree): Likewise.
8486         (unnest_nesting_tree): Likewise.
8487         (free_nesting_tree): Use iter_nestinfo_start, iter_nestinfo_next.
8488         (get_chain_decl, get_chain_field): Reset DECL_NO_STATIC_CHAIN.
8489         (convert_gimple_call): Early out if gimple_call_chain already set.
8490         (convert_all_function_calls): Iterate until no new functions
8491         require a static chain.
8492         (finalize_nesting_tree_1): Assert DECL_NO_STATIC_CHAIN is unset
8493         when building a trampoline.  Use dump_function_to_file instead
8494         of dump_function.
8495         (lower_nested_functions): Open dump_file.  Validate that decls
8496         that have DECL_NO_STATIC_CHAIN from the front end don't have that
8497         bit reset by this pass.
8498
8499 2009-09-16  Michael Matz  <matz@suse.de>
8500
8501         PR fortran/41212
8502         * tree.h (struct tree_decl_common): Add decl_restricted_flag,
8503         shorten decl_common_unused.
8504         (DECL_RESTRICTED_P): New accessor.
8505         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Use it
8506         to disambiguate marked decls and restrict pointers.
8507
8508 2009-09-16  Richard Henderson  <rth@redhat.com>
8509
8510         PR middle-end/41360
8511         * cfgbuild.c (find_bb_boundaries): Re-instate 2009-09-02 barrier fix.
8512
8513 2009-09-16  Jakub Jelinek  <jakub@redhat.com>
8514
8515         * integrate.c (set_block_abstract_flags): Call
8516         set_decl_abstract_flags also on BLOCK_NONLOCALIZED_VARs.
8517
8518 2009-09-16  Richard Guenther  <rguenther@suse.de>
8519
8520         PR middle-end/34011
8521         * tree-flow-inline.h (may_be_aliased): Compute readonly variables
8522         as non-aliased.
8523
8524 2009-09-16  DJ Delorie  <dj@redhat.com>
8525             Kaz Kojima  <kkojima@gcc.gnu.org>
8526
8527         * config/sh/sh.c (output_stack_adjust): Add new argument frame_p.
8528         (sh_expand_prologue): Update calls to output_stack_adjust.
8529         (sh_expand_epilogue): Likewise.
8530
8531 2009-09-15  Adam Nemet  <anemet@caviumnetworks.com>
8532
8533         PR bootstrap/41349
8534         * reorg.c (redundant_insn): Don't count notes or DEBUG_INSNs when
8535         trying to limit the extent of searches in the insn stream.
8536
8537 2009-09-15  Nathan Froyd  <froydnj@codesourcery.com>
8538             Jakub Jelinek  <jakub@redhat.com>
8539
8540         PR target/41175
8541         PR target/40677
8542         * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence
8543         problem.
8544         (SAVRES_NOINLINE_GPRS_SAVES_LR, SAVRES_NOINLINE_FPRS_SAVES_LR,
8545         SAVRES_NOINLINE_FPRS_DOESNT_RESTORE_LR): New strategy bits.
8546         (rs6000_savres_strategy): Always save FP registers inline if the
8547         target doesn't support hardware double-precision.  Set the above
8548         bits in return value when needed.
8549         (rs6000_savres_routine_sym): Fix computation for cache selector.
8550         Mark the generated symbol as a function.  Rename exitp argument to
8551         lr.  Move code for determining the name of the symbol...
8552         (rs6000_savres_routine_name): ...here.  New function.  Add cases for
8553         getting the names right on AIX and 64-bit Linux.
8554         (savres_routine_name): New variable.
8555         (rs6000_make_savres_rtx): Rename exitp argument to lr.  Don't assert
8556         lr isn't set when savep.  Use r12 resp. r1 instead of r11 depending
8557         on what the target routine uses as a base register.  If savep && lr
8558         describe saving of r0 into memory slot.
8559         (rs6000_emit_prologue): Correct use of call_used_regs.  Fix out of
8560         line calls for AIX ABI.
8561         (rs6000_output_function_prologue): Use rs6000_savres_routine_name to
8562         determine FP save/restore functions.
8563         (rs6000_emit_stack_reset): Handle savres if sp_offset != 0 and
8564         frame_reg_rtx != sp_reg_rtx.  Use gen_add3_insn instead of
8565         gen_addsi3.
8566         (rs6000_emit_epilogue): Adjust computation of restore_lr.
8567         Duplicate restoration of LR and execute the appropriate one
8568         depending on whether GPRs are being restored inline.  Set r11 from
8569         offsetted frame_reg_rtx instead of sp_reg_rtx; if frame_reg_rtx is
8570         r11, adjust sp_offset.  Use gen_add3_insn instead of gen_addsi3.
8571         Fix out of line calls for AIX ABI.
8572         * config/rs6000/rs6000.md (*return_and_restore_fpregs_aix_<mode>):
8573         New insn.
8574         * config/rs6000/spe.md (*save_gpregs_spe): Use explicit match for
8575         register 11.
8576         (*restore_gpregs_spe): Likewise.
8577         (*return_and_restore_gpregs_spe): Likewise.
8578         * config/rs6000/linux64.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
8579         Define to empty string unconditionally.
8580         * config/rs6000/sysv4.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
8581         Define to empty string unconditionally.
8582         (GP_SAVE_INLINE, FP_SAVE_INLINE): Handle TARGET_64BIT the same as
8583         !TARGET_64BIT.
8584
8585 2009-09-15  Jan Hubicka  <jh@suse.cz>
8586
8587         * doc/invoke.texi (inline-insns-auto): Drop from 60 to 50.
8588         * params.def (inline-insns-auto): Likewise.
8589
8590 2009-09-15  Martin Jambor  <mjambor@suse.cz>
8591
8592         * ipa-inline.c (estimate_function_body_sizes): Dump info about
8593         individual statements only at TDF_DETAILS dump level.  Format
8594         source for 80 characters per line.
8595
8596 2009-09-15  Christian Bruel  <christian.bruel@st.com>
8597
8598         * regrename.c (do_replace): Update REG_DEAD notes.
8599
8600 2009-09-15  Revital Eres  <eres@il.ibm.com>
8601
8602         * doc/tm.texi (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Document.
8603         * targhooks.c (default_builtin_support_vector_misalignment):
8604         New builtin function.
8605         * targhooks.h (default_builtin_support_vector_misalignment):
8606         Declare.
8607         * target.h (builtin_support_vector_misalignment):
8608         New field in struct gcc_target.
8609         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Call
8610         new builtin function.
8611         * target-def.h (TARGET_SUPPORT_VECTOR_MISALIGNMENT):
8612         Define.
8613         * config/rs6000/rs6000.c
8614         (rs6000_builtin_support_vector_misalignment): New function.
8615         (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Define.
8616
8617 2009-09-15  Jie Zhang  <jie.zhang@analog.com>
8618
8619         * config/bfin/bfin.c (length_for_loop): Use NONDEBUG_INSN_P
8620         instead of INSN_P.
8621         (bfin_optimize_loop): Likewise.
8622         (bfin_gen_bundles): Likewise.
8623         (workaround_speculation): Likewise.
8624         (find_load): Return NULL_RTX for debug_insn.
8625
8626 2009-09-15  Uros Bizjak  <ubizjak@gmail.com>
8627
8628         * config/alpha/alpha.md (smaxsf3): Disable for IEEE mode.
8629         (sminsf3): Ditto.
8630
8631 2009-09-14  DJ Delorie  <dj@redhat.com>
8632
8633         * config/mep/mep.h (JUMP_TABLES_IN_TEXT_SECTION): Define.
8634         * config/mep/mep.c (mep_emit_cbranch): Don't use BEQZ/BNEI in
8635         VLIW mode.
8636
8637 2009-09-14  Richard Henderson  <rth@redhat.com>
8638             Jakub Jelinek  <jakub@redhat.com>
8639
8640         * builtins.c (expand_builtin_synchronize): Use gimple_build_asm_vec.
8641         * cfgbuild.c (make_edges): Handle asm goto.
8642         * cfglayout.c (fixup_reorder_chain): Likewise.
8643         * cfgrtl.c (patch_jump_insn): Likewise.
8644         * gimple-pretty-print.c (dump_gimple_asm): Likewise.
8645         * gimple.c (gimple_build_asm_1): Add and use nlabels parameter.
8646         (gimple_build_asm_vec): Add and use labels parameter.
8647         (gimple_build_asm): Remove.
8648         (walk_gimple_asm): Walk labels too.
8649         * gimple.def (GIMPLE_ASM): Update docs.
8650         * gimple.h: Update decls.
8651         (struct gimple_statement_asm): Change nc to use unsigned char;
8652         add nl member.
8653         (gimple_asm_nlabels): New.
8654         (gimple_asm_label_op, gimple_asm_set_label_op): New.
8655         * gimplify.c (gimplify_asm_expr): Copy labels from ASM_EXPR
8656         into gimple_build_asm_vec.
8657         * jump.c (mark_jump_label_asm): New.
8658         (mark_jump_label): Use it.
8659         (redirect_jump_1): Handle asm goto.
8660         (invert_jump_1): Soft fail if X is null.
8661         * recog.c (extract_asm_operands): New.
8662         (asm_noperands): Use it; handle asm labels.
8663         (decode_asm_operands): Use extract_asm_operands.
8664         (asm_operand_ok): Properly handle empty string.
8665         * reg-stack.c (get_asm_operands_in_out): Rename from
8666         get_asm_operand_n_inputs; use extract_asm_operands; return both
8667         inputs and outputs by reference; update all callers.
8668         * rtl.def (ASM_OPERANDS): Add label vector as operand 6.
8669         * rtl.h (ASM_OPERANDS_LABEL_VEC): New.
8670         (ASM_OPERANDS_LABEL_LENGTH, ASM_OPERANDS_LABEL): New.
8671         (ASM_OPERANDS_SOURCE_LOCATION): Renumber.
8672         (extract_asm_operands): Declare.
8673         * stmt.c (expand_asm_operands): Add and use labels parameter.
8674         (check_unique_operand_names): Likewise.
8675         (resolve_asm_operand_names, resolve_operand_name_1): Likewise.
8676         (expand_asm_stmt): Handle asm labels.
8677         * tree-cfg.c (make_gimple_asm_edges): New.
8678         (make_edges): Use it.
8679         (cleanup_dead_labels): Handle asm labels.
8680         (is_ctrl_altering_stmt): Likewise.
8681         (gimple_redirect_edge_and_branch): Likewise.
8682         * tree.def (ASM_EXPR): Add 5th operand.
8683         * tree.h (ASM_LABELS): New.
8684         (resolve_asm_operand_names): Update decl.
8685
8686         * c-parser.c (c_parser_asm_statement): Parse asm goto.
8687         (c_parser_asm_goto_operands): New.
8688         * c-tree.h (build_asm_expr): Update decl.
8689         * c-typeck.c (build_asm_expr): Add and use labels parameter.
8690         * doc/extend.texi: Document asm goto.
8691
8692 2009-09-14  Richard Henderson  <rth@redhat.com>
8693
8694         * except.h: Update declarations.
8695         (struct pointer_map_t): Forward declare.
8696         (ERT_UNKNOWN, ERT_THROW, ERT_CATCH): Remove.
8697         (struct eh_landing_pad_d, eh_landing_pad): New.
8698         (struct eh_catch_d, eh_catch): New.
8699         (struct eh_region_d): Remove next_region_sharing_label, aka,
8700         label, tree_label, landing_pad, post_landing_pad, resume,
8701         may_contain_throw.  Rename region_number to index.  Remove
8702         u.eh_catch, u.eh_throw.  Rename u.eh_try.eh_catch to first_catch.
8703         Add u.must_not_throw, landing_pads, exc_ptr_reg, filter_reg.
8704         (VEC(eh_landing_pad,gc)): New.
8705         (struct eh_status): Remove last_region_number.  Add lp_array,
8706         throw_stmt_table, ttype_data, ehspec_data.
8707         (ehr_next, FOR_ALL_EH_REGION_AT): New.
8708         (FOR_ALL_EH_REGION_FN, FOR_ALL_EH_REGION): New.
8709         * except.c (lang_protect_cleanup_actions): Return tree.
8710         (struct ehl_map_entry): Remove.
8711         (init_eh_for_function): Push zero entries for region and lp_array.
8712         (gen_eh_region): Add to region_array immediately.
8713         (gen_eh_region_catch): Operate on eh_catch objects.
8714         (gen_eh_landing_pad): New.
8715         (get_eh_region_may_contain_throw, get_eh_region_tree_label): Remove.
8716         (get_eh_region_no_tree_label, set_eh_region_tree_label): Remove.
8717         (get_eh_region_from_number, get_eh_region_from_number_fn): New.
8718         (get_eh_landing_pad_from_number_fn): New.
8719         (get_eh_landing_pad_from_number): New.
8720         (get_eh_region_from_lp_number_fn): New.
8721         (get_eh_region_from_lp_number): New.
8722         (expand_resx_stmt, note_eh_region_may_contain_throw): Remove.
8723         (get_exception_pointer, get_exception_filter): Remove.
8724         (collect_eh_region_array, can_be_reached_by_runtime): Remove.
8725         (current_function_has_exception_handlers): Simplify.
8726         (bring_to_root, eh_region_replaceable_by_p): Remove.
8727         (replace_region, hash_type_list, hash_eh_region): Remove.
8728         (eh_regions_equal_p, merge_peers, remove_unreachable_regions): Remove.
8729         (label_to_region_map, num_eh_regions): Remove.
8730         (get_next_region_sharing_label, must_not_throw_labels): Remove.
8731         (find_exception_handler_labels): Remove.
8732         (duplicate_eh_regions_0, find_prev_try): Remove.
8733         (struct duplicate_eh_regions_data): New.
8734         (duplicate_eh_regions_1): Rewrite.
8735         (duplicate_eh_regions): Return a pointer map instead of an
8736         integer offset.
8737         (copy_eh_region_1, copy_eh_region, push_reachable_handler): Remove.
8738         (redirect_eh_edge_to_label): Remove.
8739         (eh_region_outermost): Rewrite using eh_region pointers
8740         instead of integers.
8741         (add_ttypes_entry): Update for ttype_data move to eh_status.
8742         (add_ehspec_entry): Rewrite with VEC instead of varray.
8743         (assign_filter_values): Likewise.  Export.
8744         (build_post_landing_pads, connect_post_landing_pads): Remove.
8745         (dw2_build_landing_pads): Rewrite to use lp_array.
8746         (struct sjlj_lp_info, sjlj_find_directly_reachable_regions): Remove.
8747         (sjlj_assign_call_site_values): Rewrite to use lp_array.
8748         (sjlj_emit_dispatch_table, sjlj_build_landing_pads): Likewise.
8749         (sjlj_mark_call_sites): Update for landing pad numbers.
8750         (finish_eh_generation): Rewrite.
8751         (gate_handle_eh): Do nothing for no eh tree.
8752         (pass_rtl_eh): Move up near finish_eh_generation.
8753         (remove_eh_landing_pad): New.
8754         (remove_eh_handler): Export.
8755         (remove_eh_region, remove_eh_handler_and_replace): Remove.
8756         (for_each_eh_label): Rewrite to use lp_array.
8757         (make_reg_eh_region_note): New.
8758         (make_reg_eh_region_note_nothrow_nononlocal): New.
8759         (insn_could_throw_p): New.
8760         (copy_reg_eh_region_note_forward): New.
8761         (copy_reg_eh_region_note_backward): New.
8762         (check_handled, add_reachable_handler): Remove.
8763         (reachable_next_level, foreach_reachable_handler): Remove.
8764         (arh_to_landing_pad, arh_to_label, reachable_handlers): Remove.
8765         (get_eh_region_and_lp_from_rtx): New.
8766         (get_eh_region_from_rtx): New.
8767         (can_throw_internal_1, can_throw_external_1): Remove.
8768         (can_throw_internal): Use get_eh_region_from_rtx.
8769         (can_throw_external): Use get_eh_region_and_lp_from_rtx.
8770         (insn_nothrow_p, can_nonlocal_goto): New.
8771         (expand_builtin_eh_common, expand_builtin_eh_pointer): New.
8772         (expand_builtin_eh_filter, expand_builtin_eh_copy_values): New.
8773         (add_action_record): Use VEC not varray.
8774         (collect_one_action_chain): Update for eh_region changes.
8775         (convert_to_eh_region_ranges): Make static.  Use VEC not varray.
8776         Use get_eh_region_and_lp_from_rtx.
8777         (gate_convert_to_eh_region_ranges): New.
8778         (pass_convert_to_eh_region_ranges): Use it.
8779         (push_uleb128, push_sleb128): Use VEC not varray.
8780         (output_one_function_exception_table): Likewise.
8781         (dump_eh_tree): Update for eh_region changes.
8782         (verify_eh_tree): Likewise.
8783         (verify_eh_region, default_init_unwind_resume_libfunc): Remove.
8784         * tree-eh.c: Include target.h.
8785         (add_stmt_to_eh_lp_fn): Rename from add_stmt_to_eh_region_fn.
8786         Don't disallow GIMPLE_RESX; adjust argument check.
8787         (add_stmt_to_eh_lp): Rename from add_stmt_to_eh_region.
8788         (record_stmt_eh_region): Update for landing pad numbers;
8789         generate a landing pad if necessary.
8790         (remove_stmt_from_eh_lp): Rename from remove_stmt_from_eh_region.
8791         (remove_stmt_from_eh_lp_fn): Similarly.
8792         (lookup_stmt_eh_lp_fn): Rename from lookup_stmt_eh_region_fn.
8793         Update for lp numbers; don't special case missing throw_stmt_table.
8794         (lookup_expr_eh_lp): Similarly.
8795         (lookup_stmt_eh_lp): Rename from lookup_stmt_eh_region.
8796         (eh_seq, eh_region_may_contain_throw): New.
8797         (struct leh_state): Add ehp_region.
8798         (struct leh_tf_state): Remove eh_label.
8799         (emit_post_landing_pad): New.
8800         (emit_resx, emit_eh_dispatch): New.
8801         (note_eh_region_may_contain_throw): New.
8802         (frob_into_branch_around): Take eh_region not eh label;
8803         emit eh code into eh_seq.
8804         (honor_protect_cleanup_actions): Early exit for no actions.  Don't
8805         handle EXC_PTR_EXPR, FILTER_EXPR.  Use gimple_build_eh_must_not_throw,
8806         lower_eh_must_not_throw.  Emit code to eh_seq.
8807         (lower_try_finally_nofallthru): Emit eh code to eh_seq.
8808         (lower_try_finally_onedest): Likewise.
8809         (lower_try_finally_copy): Likewise.
8810         (lower_try_finally_switch): Likewise.
8811         (lower_try_finally): Initialize ehp_region.
8812         (lower_catch): Update for eh_catch objects.
8813         (lower_eh_filter): Don't handle must_not_throw.
8814         (lower_eh_must_not_throw): New.
8815         (lower_cleanup): Don't set eh_label.
8816         (lower_eh_constructs_2): Resolve eh builtins.
8817         Handle GIMPLE_EH_MUST_NOT_THROW.
8818         (lower_eh_constructs): Initialize eh_region_may_contain_throw.
8819         Add eh_seq to the end of the function body.
8820         (make_eh_dispatch_edges): New.
8821         (make_eh_edge): Remove.
8822         (make_eh_edges): Simplify for landing pads.
8823         (redirect_eh_edge_1): New.
8824         (redirect_eh_edge): Use it.
8825         (redirect_eh_dispatch_edge): New.
8826         (stmt_could_throw_p): Use a switch.  Allow RESX.
8827         (stmt_can_throw_external): Use lookup_stmt_eh_lp.
8828         (stmt_can_throw_internal): Likewise.
8829         (maybe_clean_eh_stmt_fn, maybe_clean_eh_stmt): New.
8830         (maybe_clean_or_replace_eh_stmt): Update for landing pads.
8831         (maybe_duplicate_eh_stmt_fn, maybe_duplicate_eh_stmt): New.
8832         (gate_refactor_eh): New.
8833         (pass_refactor_eh): Use it.
8834         (lower_resx, execute_lower_resx, pass_lower_resx): New.
8835         (lower_eh_dispatch, execute_lower_eh_dispatch): New.
8836         (gate_lower_ehcontrol, pass_lower_eh_dispatch): New.
8837         (remove_unreachable_handlers): Rename from
8838         tree_remove_unreachable_handlers; rewrite for landing pads;
8839         call remove_eh_handler directly.
8840         (remove_unreachable_handlers_no_lp): New.
8841         (unsplit_eh, unsplit_all_eh): New.
8842         (tree_empty_eh_handler_p, all_phis_safe_to_merge): Remove.
8843         (cleanup_empty_eh_merge_phis, cleanup_empty_eh_move_lp): New.
8844         (cleanup_empty_eh_unsplit): New.
8845         (cleanup_empty_eh): Rewrite.
8846         (cleanup_all_empty_eh): New.
8847         (execute_cleanup_eh): Rename from cleanup_eh.  Remove unreachable
8848         handlers first.  Use unsplit_all_eh, cleanup_all_empty_eh.
8849         (gate_cleanup_eh): New.
8850         (pass_cleanup_eh): Use it.
8851         (verify_eh_edges): Move later in file.  Expect one EH edge.
8852         (verify_eh_dispatch_edge): New.
8853
8854         * Makefile.in (FUNCTION_H): Use vecprim.h, not varray.h.
8855         (gtype-desc.o): Add TARGET_H.
8856         (tree.o): Use EXCEPT_H, not except.h.
8857         (cfgbuild.o): Add EXPR_H.
8858         (GTFILES): Add vecprim.h.
8859         * builtins.c (expand_builtin): Handle BUILT_IN_EH_POINTER,
8860         BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES.
8861         * builtins.def (BUILT_IN_UNWIND_RESUME, BUILT_IN_EH_POINTER,
8862         BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES): New.
8863         * calls.c (emit_call_1): Use make_reg_eh_region_note.
8864         * cfgbuild.c (control_flow_insn_p): Use can_nonlocal_goto; tidy
8865         calls to can_throw_internal.
8866         (rtl_make_eh_edge): Use get_eh_landing_pad_from_rtx.
8867         (make_edges): Don't handle RESX; use can_nonlocal_goto.
8868         * cfgexpand.c (expand_gimple_stmt_1): Don't handle RESX.
8869         (expand_gimple_stmt): Use make_reg_eh_region_note.
8870         (expand_debug_expr): Don't handle EXC_PTR_EXPR and FILTER_EXPR.
8871         (gimple_expand_cfg): Don't call convert_from_eh_region_ranges,
8872         or find_exception_handler_labels.
8873         * cfgrtl.c (rtl_verify_flow_info_1): Don't handle RESX.  Assert
8874         there is exacly one EH edge.  Use can_nonlocal_goto and
8875         can_throw_internal.
8876         * cgraphunit.c (update_call_expr): Use maybe_clean_eh_stmt_fn.
8877         (cgraph_materialize_all_clones): Use maybe_clean_or_replace_eh_stmt.
8878         * combine.c (can_combine_p, try_combine): Use insn_nothrow_p.
8879         * cse.c (count_reg_usage, insn_live_p): Use insn_could_throw_p.
8880         * dce.c (deletable_insn_p_1): Don't test may_trap_p.
8881         (deletable_insn_p): Use insn_nothrow_p; reorder nonjump insn test.
8882         * dse.c (scan_insn): Use insn_could_throw_p.
8883         * emit-rtl.c (try_split): Use copy_reg_eh_region_note_backward.
8884         * expr.c (expand_expr_real): Use make_reg_eh_region_note.
8885         (expand_expr_real_1): Don't handle RESX, EXC_PTR, or FILTER_EXPR.
8886         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't handle
8887         EXC_PTR_EXPR or FILTER_EXPR.
8888         (tree_expr_nonzero_warnv_p): Likewise.
8889         * function.h: Include vecprim.h, not varray.h
8890         (struct rtl_eh): Remove filter, exc_ptr, built_landing_pad members;
8891         move ttype_data and ehspec_data members to struct eh_status; change
8892         action_record_data member to a VEC.
8893         * gcse.c (hash_scan_set): Use can_throw_internal.
8894         * gengtype.c (open_base_files): Add target.h to gtype-desc.c.
8895         * gimple-iterator.c (gsi_replace): Use maybe_clean_or_replace_eh_stmt.
8896         * gimple-low.c (lower_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.
8897         (block_may_fallthru): Don't handle RESX_EXPR.
8898         * gimple-pretty-print.c (dump_gimple_label): Dump EH_LANDING_PAD_NR.
8899         (dump_gimple_eh_must_not_throw, dump_gimple_eh_dispatch): New.
8900         (dump_gimple_stmt): Dump landing pad information with TDF_EH;
8901         handle GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH.
8902         * gimple.c (gss_for_code): Handle GIMPLE_EH_MUST_NOT_THROW,
8903         GIMPLE_EH_DISPATCH, GIMPLE_RESX.
8904         (gimple_size): Likewise.
8905         (gimple_build_eh_dispatch, gimple_build_eh_must_not_throw): New.
8906         (gimple_build_resx): Use gimple_build_with_ops.
8907         (DEFTREECODE): Don't handle EXC_PTR_EXPR, FILTER_EXPR.
8908         (is_gimple_val): Likewise.
8909         (is_gimple_stmt): Remove RESX_EXPR.
8910         * gimple.def (GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH): New.
8911         (GIMPLE_RESX): Reorder with other EH constructs.
8912         * gimple.h (struct gimple_statement_eh_mnt): New.
8913         (struct gimple_statement_eh_ctrl): Rename from gimple_statement_resx.
8914         (gimple_eh_filter_must_not_throw): Remove.
8915         (gimple_eh_filter_set_must_not_throw): Remove.
8916         (gimple_eh_must_not_throw_fndecl): New.
8917         (gimple_eh_dispatch_region, gimple_eh_dispatch_set_region): New.
8918         (is_gimple_resx): New.
8919         * gimplify.c (gimplify_expr): Don't handle EXC_PTR_EXPR, RESX_EXPR.
8920         Don't copy EH_FILTER_MUST_NOT_THROW.
8921         * gsstruct.def (GSS_EH_MNT, GSS_EHCONTROL): New.
8922         * ipa-inline.c (estimate_function_body_sizes): Don't try to
8923         handle must_not_throw_labels specially.
8924         * ipa-pure-const.c (check_call): Update debug statement for LP.
8925         * ipa-type-escape.c (check_operand): Don't handle EXC_PTR or FILTER.
8926         * ipa-utils.c (get_base_var): Likewise.
8927         * libfunc.h (LTI_unwind_resume, unwind_resume_libfunc): Remove.
8928         * lower-subreg.c (move_eh_region_note): Remove.
8929         (resolve_simple_move): Use copy_reg_eh_region_note_forward.
8930         * omp-low.c (new_omp_context): Update for eh_lp_nr.
8931         (create_task_copyfn): Likewise.
8932         (maybe_catch_exception): Use gimple_build_eh_filter.
8933         * optabs.c (emit_libcall_block): Update test for no-nonlocal-goto
8934         REG_EH_REGION.  Use make_reg_eh_region_note_nothrow_nononlocal.
8935         * passes.c (init_optimization_passes): Add pass_lower_eh_dispatch
8936         and pass_lower_resx.
8937         * print-tree.c (print_node): Dump EH_LANDING_PAD_NR.
8938         * recog.c (peephole2_optimize): Use copy_reg_eh_region_note_backward,
8939         can_throw_internal, can_nonlocal_goto.
8940         * reload1.c (fixup_eh_region_note): Use insn_could_throw_p,
8941         copy_reg_eh_region_note_forward.
8942         (emit_input_reload_insns): Use copy_reg_eh_region_note_forward.
8943         (emit_output_reload_insns): Likewise.
8944         (copy_eh_notes): Remove.
8945         * rtl.def (RESX): Remove.
8946         * rtl.h: Update declarations.
8947         * sese.c (graphite_copy_stmts_from_block): Use maybe_duplicate_eh_stmt.
8948         * tree-cfg.c (make_edges): Handle GIMPLE_EH_DISPATCH.
8949         (update_eh_label): Remove.
8950         (cleanup_dead_labels_eh): New.
8951         (cleanup_deal_labels): Use it instead of update_eh_label.
8952         (gimple_merge_blocks): Update landing pad data structure when
8953         removing a landing pad label.
8954         (remove_useless_stmts_tc): Remove gimple_eh_filter_must_not_throw
8955         test; handle GIMPLE_EH_MUST_NOT_THROW.
8956         (is_ctrl_altering_stmt): Handle GIMPLE_EH_DISPATCH.
8957         (verify_gimple_assign_single): Don't handle EXC_PTR or FILTER_EXPR.
8958         (verify_types_in_gimple_stmt): Handle GIMPLE_EH_DISPATCH.
8959         (verify_stmt): Likewise.  Verify landing pads.
8960         (gimple_redirect_edge_and_branch): Handle GIMPLE_EH_DISPATCH.
8961         (gimple_duplicate_bb): Use maybe_duplicate_eh_stmt.
8962         (struct move_stmt_d): Add eh_map.
8963         (move_stmt_eh_region_nr, move_stmt_eh_region_tree_nr): New.
8964         (move_stmt_r): Remap eh region numbers in builtin calls,
8965         resx and eh_dispatch.
8966         (move_block_to_fn): Remove eh_offset parameter.  Use
8967         maybe_duplicate_eh_stmt_fn.
8968         (find_outermost_region_in_block): Operate on eh_region pointers
8969         instead of region numbers.
8970         (move_sese_region_to_fn): Expect eh_map instead of eh_offset from
8971         duplicate_eh_regions.
8972         * tree-cfgcleanup.c (tree_forwarder_block_p): Move entry block edge
8973         test earlier.  Disallow EH landing pads.
8974         * tree-cfa.c (create_tree_common_ann): Don't set ann->rn.
8975         * tree-flow.h: Update declarations.
8976         (struct tree_ann_common_d): Replace rn with lp_nr.
8977         * tree-inline.c (copy_tree_body_r): Don't handle RESX_EXPR.
8978         (remap_eh_region_nr, remap_eh_region_tree_nr): New.
8979         (remap_gimple_stmt): Remap eh region numbers in builtin calls,
8980         resx and eh_dispatch.
8981         (copy_bb): Use maybe_duplicate_eh_stmt_fn.
8982         (copy_edges_for_bb): Use make_eh_dispatch_edges.
8983         (copy_cfg_body): Expect eh_map instead of eh_region_offset
8984         from duplicate_eh_regions.
8985         (estimate_num_insns): Don't handle EXC_PTR_EXPR or FILTER_EXPR;
8986         update RESX; handle EH_DISPATCH.
8987         (expand_call_inline): Set eh_lp_nr, not eh_region.
8988         (maybe_inline_call_in_expr): Likewise.
8989         * tree-inline.h (struct copy_body_data): Replace eh_region with
8990         eh_lp_nr, eh_region_offset with eh_map.
8991         * tree-optimize.c (execute_fixup_cfg): Use maybe_clean_eh_stmt.
8992         * tree-pass.h (pass_lower_eh_dispatch, pass_lower_resx): New.
8993         * tree-pretty-print.c (dump_generic_node): Don't handle
8994         EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR.
8995         * tree-sra.c (scan_function): Use maybe_clean_eh_stmt.
8996         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Don't handle
8997         EXC_PTR_EXPR, FILTER_EXPR.
8998         * tree-ssa-operands.c (get_expr_operands): Likewise.
8999         * tree-ssa-propagate.c (valid_gimple_rhs_p): Likewise.
9000         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
9001         (ao_ref_init_from_vn_reference): Likewise.
9002         * tree-ssa-sink.c (statement_sink_location): Likewise.
9003         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
9004         (mark_virtual_phi_result_for_renaming): Export.  Tidy.
9005         * tree-ssa-pre.c (get_or_alloc_expr_for): Don't handle
9006         EXC_PTR_EXPR, FILTER_EXPR.
9007         (is_exception_related): Remove.
9008         (compute_avail): Don't call it.
9009         * tree-ssa-structalias.c: Remove VEC definitions for int and unsigned.
9010         * tree.c (find_decls_types_in_eh_region): Update for eh_region changes.
9011         (find_decls_types_in_node): Use FOR_ALL_EH_REGION_FN.
9012         (build_common_builtin_nodes): Add enable_cxa_end_cleanup parameter.
9013         Build EH builtins.
9014         (build_resx): Remove.
9015         * tree.def (EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR): Remove.
9016         * tree.h: Update declarations.
9017         (EH_FILTER_MUST_NOT_THROW): Remove.
9018         (struct tree_label_decl): Add eh_landing_pad_nr.
9019         (EH_LANDING_PAD_NR): New.
9020         * value-prof.c (gimple_ic): Tidy variable names.  Update for
9021         landing pad numbers.
9022         (gimple_stringop_fixed_value): Tidy variable names.  Assert
9023         that neither call stmt can throw.
9024         * vecprim.h (uchar): New.
9025         (VEC(uchar,heap), VEC(uchar,gc)): New.
9026
9027         * c-common.c (c_define_builtins): Update call to
9028         build_common_builtin_nodes.
9029         * c-parser.c (c_parse_file): Don't call
9030         default_init_unwind_resume_libfunc.
9031
9032 2009-09-14  Richard Sandiford  <rdsandiford@googlemail.com>
9033
9034         * config/mips/mips-protos.h (mips_cfun_has_cprestore_slot_p): Declare.
9035         (mips_cprestore_address_p): Likewise.
9036         (mips_save_gp_to_cprestore_slot): Likewise.
9037         (mips_restore_gp): Rename to...
9038         (mips_restore_gp_from_cprestore_slot): ...this.
9039         (mips_must_initialize_gp_p): Declare.
9040         (mips_emit_save_slot_move): Likewise.
9041         (mips_output_load_label): Return nothing.
9042         (mips_eh_uses): Declare.
9043         * config/mips/mips.h (TARGET_SPLIT_CALLS): Require epilogue_completed.
9044         (TARGET_CPRESTORE_DIRECTIVE): New macro.
9045         (TARGET_ABSOLUTE_JUMPS): Likewise.
9046         (EH_USES): Likewise.
9047         (FIRST_PSEUDO_REGISTER): Update comment.
9048         (MIPS_ABSOLUTE_JUMP): New macro, extracted from...
9049         (MIPS_CALL): ...here.
9050         (REGISTER_NAMES): Add $cprestore.
9051         * config/mips/mips.c (machine_function): Remove has_gp_insn_p.
9052         Add load_label_length, has_inflexible_gp_insn_p,
9053         has_flexible_gp_insn_p, must_initialize_gp_p and
9054         must_restore_gp_when_clobbered_p.
9055         (mips_expand_call): Don't generate split instructions here.
9056         (mips_split_call): Update the call to mips_restore_gp after
9057         the above name change.
9058         (mips16_cfun_returns_in_fpr_p): Move earlier in file.
9059         (mips_find_gp_ref): New function.
9060         (mips_insn_has_inflexible_gp_ref_p): Likewise.
9061         (mips_cfun_has_inflexible_gp_ref_p): Likewise.
9062         (mips_insn_has_flexible_gp_ref_p): Likewise.
9063         (mips_cfun_has_flexible_gp_ref_p): Likewise.
9064         (mips_function_has_gp_insn): Delete.
9065         (mips_global_pointer): Drop the df_regs_ever_live_p check.
9066         Use the new functions above.  Only return INVALID_REGNUM
9067         for TARGET_ABSOLUTE_JUMPS.
9068         (mips_must_initialize_gp_p): New function.
9069         (mips_get_cprestore_base_and_offset): New function, extracted from...
9070         (mips_cprestore_slot): ...here.  Take a bool parameter.
9071         (mips_cfun_has_cprestore_slot_p): New function.
9072         (mips_cprestore_address_p): Likewise.
9073         (mips_save_gp_to_cprestore_slot): Likewise.
9074         (mips_restore_gp): Rename to...
9075         (mips_restore_gp_from_cprestore_slot): ...this.  Assert
9076         epilogue_completed.  Update the call to mips_cprestore_slot.
9077         Test cfun->machine->must_restore_gp_when_clobbered_p.
9078         (mips_direct_save_slot_move_p): New function.
9079         (mips_emit_save_slot_move): Likewise.
9080         (mips_output_cplocal): Test mips_must_initialize_gp_p () instead
9081         of cfun->machine->global_pointer.
9082         (mips_output_function_prologue): Check mips_must_initialize_gp_p ().
9083         (mips_save_reg): Use mips_emit_save_slot_move.
9084         (mips_expand_prologue): Set must_initialize_gp_p.
9085         Use mips_cfun_has_cprestore_slot_p.  Use gen_potential_cprestore
9086         for all cprestore saves.  Emit a use_cprestore instruction after
9087         setting up the cprestore slot.
9088         (mips_restore_reg): Use mips_emit_save_slot_move.
9089         (mips_process_load_label): New function.
9090         (mips_load_label_length): Likewise.
9091         (mips_output_load_label): Don't return asm: output it here instead.
9092         Use mips_process_load_label.
9093         (mips_adjust_insn_length): Adjust the length of branch instructions
9094         that have length MAX_PIC_BRANCH_LENGTH.
9095         (mips_output_conditional_branch): Update the call to
9096         mips_output_load_label.  Assume the branch target is OPERANDS[0]
9097         rather than OPERANDS[1].  Use MIPS_ABSOLUTE_JUMP for absolute jumps.
9098         (mips_output_order_conditional_branch): Swap the meaning of
9099         OPERANDS[0] and OPERANDS[1].
9100         (mips_variable_issue): Don't count ghost instructions.
9101         (mips_expand_ghost_gp_insns): New function.
9102         (mips_reorg): Rerun mips_reorg_process_insns if it returns true.
9103         (mips_output_mi_thunk): Set must_initialize_gp_p.
9104         (mips_eh_uses): New function.
9105         * config/mips/predicates.md (cprestore_save_slot_operand)
9106         (cprestore_load_slot_operand): New predicates.
9107         * config/mips/mips.md (UNSPEC_POTENTIAL_CPRESTORE): New unspec.
9108         (UNSPEC_MOVE_GP): Likewise.
9109         (UNSPEC_CPRESTORE, UNSPEC_RESTORE_GP, UNSPEC_EH_RETURN)
9110         (UNSPEC_CONSTTABLE_INT, UNSPEC_CONSTTABLE_FLOAT): Bump to make room.
9111         (CPRESTORE_SLOT_REGNUM): New register.
9112         (MAX_PIC_BRANCH_LENGTH): New constant.
9113         (jal_macro): Use MIPS_ABSOLUTE_JUMPS.
9114         (length): Use MAX_PIC_BRANCH_LENGTH as a placeholder for PIC long
9115         branches.  Fix commentary.
9116         (loadgp_newabi_<mode>): Change from unspec_volatile to unspec.
9117         Only split if mips_must_initialize_gp_p; expand to nothing otherwise.
9118         Change type to "ghost".
9119         (loadgp_absolute_<mode>): Likewise.
9120         (loadgp_rtp_<mode>): Likewise.
9121         (copygp_mips16): Likewise.
9122         (loadgp_blockage): Remove redundant mode attribute.
9123         (potential_cprestore): New instruction.
9124         (cprestore): Turn into an unspec set.
9125         (use_cprestore): New instruction.
9126         (*branch_fp): Swap operands 0 and 1.  Remove redundant mode attribute.
9127         (*branch_fp_inverted): Likewise.
9128         (*branch_order<mode>): Likewise.
9129         (*branch_order<mode>_inverted): Likewise.
9130         (*branch_equality<mode>): Likewise.
9131         (*branch_equality<mode>_inverted): Likewise.
9132         (*branch_bit<bbv><mode>): Likewise.
9133         (*branch_bit<bbv><mode>_inverted): Likewise.
9134         (*branch_equality<mode>_mips16): Remove redundant mode.
9135         (jump): Turn into a define_expand.
9136         (*jump_absolute): New instruction.
9137         (*jump_pic): Likewise.
9138         (*jump_mips16): Rename previously-unnamed pattern.  Remove
9139         redundant mode attribute.
9140         (restore_gp): Split on epilogue_completed rather than
9141         reload_completed.  Change type to "ghost".
9142         (move_gp<mode>): New instruction.
9143         * config/mips/mips-dsp.md (mips_bposge): Swap operands 0 and 1.
9144         Remove redundant mode attribute.
9145         * config/mips/mips-ps-3d.md (bc1any4t): Likewise.
9146         (bc1any4f, bc1any2t, bc1any2f): Likewise.
9147         (*branch_upper_lower, *branch_upper_lower_inverted): Likewise.
9148
9149 2009-09-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
9150
9151         PR target/41210
9152         * config/rs6000/rs6000.c (rs6000_function_value): V2DF and V2DI
9153         are returned in the same register (vs34 or v2) that Altivec vector
9154         types are returned in.
9155         (rs6000_libcall_value): Ditto.
9156
9157         PR target/41331
9158         * config/rs6000/rs6000.c (rs6000_emit_move): Use gen_add3_insn
9159         instead of explicit addsi3/adddi3 calls.
9160         (rs6000_split_multireg_move): Ditto.
9161         (rs6000_emit_allocate_stack): Ditto.
9162         (rs6000_emit_prologue): Ditto.
9163         (rs6000_output_mi_thunk): Ditto.
9164
9165         * config/rs6000/rs6000.md (bswapdi*): Don't assume the pointer
9166         size is 64 bits if we can use 64-bit registers.
9167
9168 2009-09-14  Bernd Schmidt  <bernd.schmidt@analog.com>
9169
9170         * config/bfin/bfin.c (bfin_longcall_p): Don't use short calls for weak
9171         symbols.
9172
9173         From Jie Zhang <jie.zhang@analog.com>:
9174         * config/bfin/bfin.c (bfin_expand_prologue): Ask do_link to
9175         save FP and RETS with saveall attribute.
9176         (bfin_expand_epilogue): Ask do_unlink to restore FP and RETS
9177         with saveall attribute.
9178
9179         * config/bfin/bfin.c (bfin_expand_builtin,
9180         case BFIN_BUILTIN_MULT_1X32X32): Force constants to registers for the
9181         operands.
9182
9183         From Jie Zhang <jie.zhang@analog.com>:
9184         * config/bfin/bfin.c (bfin_expand_builtin): Initialize icodes
9185         before use in two places.
9186         * config/bfin/bfin.md (AREG): Define mode iterator.
9187         (reload_in, reload_out): Use mode iterator AREG.
9188
9189 2009-09-14  Richard Guenther  <rguenther@suse.de>
9190
9191         PR middle-end/41350
9192         * dwarf2out.c (dwarf2out_begin_prologue): Adjust non-CFI asm
9193         EH personality path.
9194
9195 2009-09-13  Richard Guenther  <rguenther@suse.de>
9196             Rafael Avila de Espindola  <espindola@google.com>
9197
9198         * langhooks-def.h (LANG_HOOKS_EH_RUNTIME_TYPE): Define.
9199         (LANG_HOOKS_EH_PERSONALITY): Likewise.
9200         (LANG_HOOKS_INITIALIZER): Adjust.
9201         (lhd_pass_through_t): Declare.
9202         * langhooks.h (struct lang_hooks): Add eh_runtime_type and
9203         eh_personality.
9204         * langhooks.c (lhd_pass_through_t): New function.
9205         * dwarf2out.c (output_call_frame_info, dwarf2out_do_cfi_startproc,
9206         dwarf2out_begin_prologue): Use personality from current_function_decl.
9207         * expr.h (get_personality_function): Declare.
9208         * expr.c (get_personality_function): New function.
9209         (build_personality_function): Likewise.
9210         * libfuncs.h (libfunc_index): Remove LTI_eh_personality.
9211         (eh_personality_libfunc): Remove.
9212         * optabs.c (build_libfunc_function): New function split out from ...
9213         (init_one_libfunc): ... here.
9214         * tree.h (DECL_FUNCTION_PERSONALITY): New.
9215         (tree_function_decl): Add personality.
9216         (lhd_gcc_personality): Declare.
9217         (build_personality_function): Likewise.
9218         * tree.c (gcc_eh_personality_decl): New.
9219         (lhd_gcc_personality): New function.
9220         * except.h (lang_eh_runtime_type): Remove.
9221         (enum eh_personality_kind): New.
9222         (build_personality_function): Declare.
9223         (function_needs_eh_personality): Declare.
9224         * except.c (lang_eh_runtime_type): Remove.
9225         (function_needs_eh_personality): New function.
9226         (add_type_for_runtime): Call lang_hooks.type_for_runtime instead.
9227         (sjlj_emit_function_enter, output_function_exception_table):
9228         Use personality from current_function_decl.
9229         * tree-eh.c (lower_eh_constructs): Set DECL_FUNCTION_PERSONALITY.
9230         * tree-inline.c (tree_can_inline_p): Do not inline across different
9231         EH personalities.
9232         (expand_call_inline): Likewise.  Adjust the callers EH personality.
9233         (tree_function_versioning): Copy DECL_FUNCTION_PERSONALITY.
9234         * cgraph.c (cgraph_add_new_function): Set DECL_FUNCTION_PERSONALITY.
9235         * Makefile.in (cgraph.o): Add $(EXCEPT_H) dependency.
9236         (c-parser.o): Likewise
9237         * c-tree.h (c_eh_initialized_p): Remove.
9238         (c_maybe_initialize_eh): Likewise.
9239         * c-decl.c (finish_decl): Don't call c_maybe_initialize_eh.
9240         (finish_decl): Don't call c_maybe_initialize_eh.
9241         (c_eh_initialized_p): Remove.
9242         (c_maybe_initialize_eh): Likewise.
9243         * c-parser.c (c_parser_omp_construct): Likewise.
9244         (c_parse_file): Initialize exception handling.
9245
9246 2009-09-13  Kai Tietz  <kai.tietz@onevision.com>
9247
9248         * config.gcc (tm_file): Remove i386/biarch32.h
9249         for i?86-w64-mingw* case.
9250         (i?86-*-mingw* andx86_64-*-mingw*): Add multilib
9251         support.
9252         * config.host: Set for x64 mingw the option
9253         use_long_long_for_widest_fast_int to yes.
9254
9255 2009-09-13  Eric Botcazou  <ebotcazou@adacore.com>
9256
9257         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
9258         * dbxout.c (dbxout_function_end): Do not test DECL_IGNORED_P.
9259         (dbxout_begin_function): Likewise.
9260         * final.c (dwarf2_debug_info_emitted_p): New predicate.
9261         (final_start_function): Do not emit debug info if DECL_IGNORED_P is
9262         set on the function.
9263         (final_end_function): Likewise.
9264         (final_scan_insn): Likewise.
9265         (rest_of_handle_final): Likewise.
9266         * varasm.c (assemble_start_function): Likewise.
9267         * config/rs6000/xcoff.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
9268
9269 2009-09-12  Jason Merrill  <jason@redhat.com>
9270
9271         * dbgcnt.c (dbg_cnt_process_single_pair): constify.
9272         * opts.c (common_handle_option): constify.
9273
9274 2009-09-12  Gerald Pfeifer  <gerald@pfeifer.com>
9275
9276         * doc/install.texi (avr): Remove obsolete reference site.
9277
9278 2009-09-12  Gerald Pfeifer  <gerald@pfeifer.com>
9279
9280         * doc/install.texi (Binaries): Adjust AIX link.
9281
9282 2009-09-12  Akim Demaille  <demaille@gostai.com>
9283
9284         * doc/invoke.texi (-fstrict-aliasing): Correct two examples.
9285         Use an imperative sentence.
9286
9287 2009-09-11  Richard Henderson  <rth@redhat.com>
9288
9289         * gsstruct.def (DEFGSSTRUCT): Remove printable-name argument; add
9290         structure-name and has-tree-operands arguments; update all entries.
9291         * gimple.def (DEFGSCODE): Replace 3rd argument with GSS_symbol;
9292         update all entries.
9293         * gimple.c (gimple_ops_offset_): Use HAS_TREE_OP argument.
9294         (gsstruct_code_size): New.
9295         (gss_for_code_): New.
9296         (gss_for_code): Remove.
9297         (gimple_size): Rewrite using gsstruct_code_size.
9298         (gimple_statement_structure): Move to gimple.h.
9299         * gimple.h (gimple_ops_offset_, gss_for_code_): Declare.
9300         (gss_for_code, gimple_statement_structure): New.
9301         (gimple_ops): Use new arrays; tidy.
9302
9303 2009-09-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
9304
9305         * config/pa/predicates.md (symbolic_operand): Require a CONST symbolic
9306         operand to be a PLUS expression.
9307         * config/pa/pa.c (pa_secondary_reload): Likewise.
9308
9309 2009-09-11  Jakub Jelinek  <jakub@redhat.com>
9310
9311         * combine.c (propagate_for_debug_subst): Call wrap_constant on top.
9312
9313         * print-rtl.c (print_rtx): Use JUMP_LABEL (in_rtx) instead of
9314         XEXP (in_rtx, 8).
9315
9316 2009-09-11  Bernd Schmidt  <bernd.schmidt@analog.com>
9317
9318         From Jie Zhang <jie.zhang@analog.com>:
9319         * doc/extend.texi (node Function Attributes): Document l2
9320         function attribute.
9321         (node Blackfin Variable Attributes): Document l2 variable attributes.
9322
9323 2009-09-11  Loren J. Rittle  <ljrittle@acm.org>
9324
9325         * config.gcc (*-*-freebsd*): Enable default_use_cxa_atexit
9326         to match the system compiler's configuration at inflection point.
9327         Add comment to remark a remaining difference with system compiler.
9328
9329         * configure.ac (*-*-freebsd*): Enable check for __stack_chk_fail.
9330         * configure: Regenerate.
9331
9332 2009-09-11  Bernd Schmidt  <bernd.schmidt@analog.com>
9333
9334         From Jie Zhang <jie.zhang@analog.com>:
9335         * config/bfin/bfin.c (bfin_expand_call): Handle L2 functions.
9336         (bfin_handle_l2_attribute): New.
9337         (bfin_attribute_table): Add l2 attribute.
9338
9339 2009-09-11  Michael Matz  <matz@suse.de>
9340
9341         PR middle-end/41275
9342         * tree-inline.c (remap_decls): Don't put DECL_EXTERNAL decls
9343         on the local_decls list.
9344
9345 2009-09-11  Alexandre Oliva  <aoliva@redhat.com>
9346
9347         PR debug/41276
9348         PR debug/41307
9349         * cselib.c (cselib_expand_value_rtx_cb): Document callback
9350         interface.
9351         (cselib_expand_value_rtx_1): Use callback for SUBREGs.  Adjust
9352         for VALUEs, to implement the documented interface.
9353         * var-tracking.c (vt_expand_loc_callback): Handle SUBREGs.
9354         Adjust for VALUEs and anything else, to implement the
9355         documented interface.
9356
9357 2009-09-10  Nathan Froyd  <froydnj@codesourcery.com>
9358
9359         * config/rs6000/rs6000.h (DATA_ALIGNMENT): Check that we are dealing
9360         with actual SPE/paired vector modes before using 64-bit alignment.
9361         Check that TYPE is a REAL_TYPE for TARGET_E500_DOUBLE.
9362
9363 2009-09-10  DJ Delorie  <dj@redhat.com>
9364
9365         * config/mep/mep.md (eh_epilogue): Defer until after epilogue is
9366         emitted.
9367
9368         * config/mep/mep.h (LEGITIMATE_CONSTANT_P): New.
9369         * config/mep/mep.c (mep_legitimate_constant_p): New.
9370         * config/mep/mep-protos.h: Prototype it.
9371
9372 2009-09-10  Richard Henderson  <rth@redhat.com>
9373
9374         * print-rtl.c (print_rtx): Fix JUMP_LABEL index.
9375
9376 2009-09-10  Jason Merrill  <jason@redhat.com>
9377
9378         * tree.c (chain_index): New fn.
9379         * tree.h: Declare it.
9380
9381 2009-09-10  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
9382
9383         * config/sol2-c.c (cmn_err_length_specs): Initialize
9384         scalar_identity_flag.
9385
9386 2009-09-10  Richard Henderson  <rth@redhat.com>
9387
9388         * tree.h (struct tree_decl_common): Move align member earlier;
9389         move label_decl_uid member ...
9390         (struct tree_label_decl): ... here.
9391         (LABEL_DECL_UID): Update to match.
9392
9393         * tree-cfg.c (dump_function_to_file): Dump eh tree with TDF_EH,
9394         not TDF_DETAILS.
9395
9396         * tree-cfg.c (gimple_redirect_edge_and_branch): Do
9397         gimple_try_redirect_by_replacing_jump test after no-op and EH tests.
9398
9399         * tree-cfg.c (split_edge_bb_loc): Don't disallow placement at
9400         dest_prev if the edge is complex.
9401
9402         * tree-cfg.c (is_ctrl_stmt): Use a switch.
9403
9404         * tree-cfg.c (gimple_can_merge_blocks_p): Move label and
9405         loop latch tests earlier.
9406
9407         * gimple-iterator.c (gimple_find_edge_insert_loc): Insert
9408         before GIMPLE_RETURN, not after its predecessor; insert
9409         before GIMPLE_RESX.
9410
9411         * gimple-iterator.c (gimple_find_edge_insert_loc): Use
9412         gimple_seq_empty_p to test for no PHI nodes.
9413         * tree-cfg.c (split_critical_edges): Likewise.
9414
9415         * c-common.h (c_dialect_cxx, c_dialect_objc): Boolify.
9416
9417 2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
9418
9419         * final.c (shorten_branches) : Ignore DEBUG_INSN_P instructions
9420         introduced by the VTA branch merge.
9421
9422 2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
9423
9424         * ira-conflicts.c: Use fputs or putc instead of fprintf
9425         where appropriate.
9426         * cfg.c: Ditto.
9427         * toplev.c: Ditto.
9428         * tree-switch-conversion.c: Ditto.
9429
9430 2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
9431
9432         * config/picochip/picochip.c : Ignore DEBUG_INSN_P instructions
9433         introduced by the VTA branch merge.
9434
9435 2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
9436
9437         Revert:
9438         2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
9439
9440         PR rtl-optimization/39779
9441         * expr.c (convert_modes): Return when mode == oldmode after
9442         CONST_INTs are processed.
9443
9444 2009-09-10  Nick Clifton  <nickc@redhat.com>
9445
9446         * config/mep/mep.c (mep_encode_section_info): Copy weakness
9447         attribute and referring decl when creating renamed symbol.
9448
9449 2009-09-10  Richard Guenther  <rguenther@suse.de>
9450
9451         PR middle-end/41257
9452         * cgraphunit.c (cgraph_emit_thunks): Emit thunks only for
9453         reachable nodes.
9454         (cgraph_finalize_compilation_unit): Compute reachability
9455         before emitting thunks.  Properly process aliases before
9456         possibly removing unreachable nodes.
9457
9458 2009-09-10  Richard Guenther  <rguenther@suse.de>
9459
9460         PR middle-end/41254
9461         * tree.c (struct free_lang_data_d): Add worklist member.
9462         (find_decls_types_r): Push onto the worklist instead of recursing.
9463         Handle TREE_BINFOs properly.
9464         (find_decls_types): New function wrapped around find_decls_types_r
9465         to process the worklist.
9466         (find_decls_types_in_eh_region): Use it.
9467         (find_decls_types_in_node): Likewise.
9468         (find_decls_types_in_var): Likewise.
9469         (free_lang_data_in_cgraph): Likewise.  Free the worklist.
9470         * tree.h (RECORD_OR_UNION_TYPE_P): New.
9471         (AGGREGATE_TYPE_P): Adjust.
9472
9473 2009-09-09  Jason Merrill  <jason@redhat.com>
9474
9475         * configure.ac: Check glibc version even if we have an in-tree
9476         assembler.
9477
9478 2009-09-09  Anthony Green  <green@moxielogic.com>
9479
9480         * config/moxie/moxie.md (*movsi, *movhi, *movqi): Use xor to load
9481         the constant 0 when appropriate.
9482         * config/moxie/constraints.md: Add constraint O.
9483
9484         * config/moxie/moxie.c (moxie_setup_incoming_varargs): Adjust
9485         to pass up to 6 32-bit argument values in registers.
9486         (moxie_function_arg): Ditto.
9487         (moxie_arg_partial_bytes): Ditto.
9488         * config/moxie/moxie.h (FUNCTION_ARG_ADVANCE): Ditto.
9489         (REG_PARM_STACK_SPACE): Ditto.
9490         (FUNCTION_ARG_REGNO_P): Ditto.
9491
9492         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
9493         instruction to allocate stack space.
9494
9495 2009-09-09  Segher Boessenkool  <segher@kernel.crashing.org>
9496
9497         * config/rs6000/rs6000.md (bswapdi2_64bit): Fix
9498         unnecessarily stringent constraints.  Fix address
9499         calculation in the splitters.
9500
9501 2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
9502
9503         PR rtl-optimization/39779
9504         * expr.c (convert_modes): Return when mode == oldmode after
9505         CONST_INTs are processed.
9506
9507 2009-09-09  Kai Tietz  <kai.tietz@onevision.com>
9508
9509         PR/41315
9510         * config/i386.c (ix86_can_use_return_insn_p): Check for padding0, too.
9511         (ix86_expand_prologue): Take frame.padding0 into logic of
9512         to_allocate checks.
9513         (ix86_expand_epilogue): Likewise.
9514
9515 2009-09-09  Jakub Jelinek  <jakub@redhat.com>
9516
9517         * config/t-slibgcc-elf-ver (SHLIB_MAKE_SOLINK, SHLIB_INSTALL_SOLINK):
9518         New variables.
9519         (SHLIB_LINK, SHLIB_INSTALL): Use them.
9520         * config/t-slibgcc-libgcc: New file.
9521         * config.gcc (powerpc*-*-linux*, powerpc*-*-gnu*): Use it.
9522
9523 2009-09-09  Martin Jambor  <mjambor@suse.cz>
9524
9525         PR tree-optimization/41089
9526         * tree-sra.c (find_var_candidates): Do not consider va_lists in
9527         early SRA.
9528
9529 2009-09-09  Richard Henderson  <rth@redhat.com>
9530
9531         * gimple.h (CASE_GIMPLE_OMP): New.
9532         (is_gimple_omp): Use it.
9533         * tree-cfg.c (is_ctrl_altering_stmt): Likewise.
9534         (verify_gimple_debug): Likewise.
9535
9536 2009-09-09  Richard Guenther  <rguenther@suse.de>
9537
9538         PR tree-optimization/41101
9539         * tree-ssa-pre.c (maximal_set): Remove.
9540         (compute_antic_aux): Treat the maximal set as implicitly all ones.
9541         Defer all blocks we didn't visit at least one successor.
9542         (add_to_exp_gen): Do not add to the maximal set.
9543         (make_values_for_phi): Likewise.
9544         (compute_avail): Likewise.
9545         (init_pre): Do not allocate the maximal set.
9546         (execute_pre): Do not dump it.
9547
9548 2009-09-09  Martin Jambor  <mjambor@suse.cz>
9549
9550         * tree-cfg.c (verify_gimple_phi): Check that gimple_phi_result is
9551         an SSA_NAME rather than a is_gimple_variable.
9552
9553 2009-09-09  Richard Guenther  <rguenther@suse.de>
9554
9555         PR middle-end/41317
9556         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Remove
9557         code dealing with plain pointer bases.
9558         (maybe_fold_offset_to_reference): Likewise.
9559         (maybe_fold_stmt_addition): Adjust.
9560
9561 2009-09-09  Richard Guenther  <rguenther@suse.de>
9562
9563         * tree.c (free_lang_data_in_type): Do not free the type variant
9564         chains.
9565         (free_lang_data): Merge char_type_node with its properly signed
9566         variant.
9567         (pass_ipa_free): Collect after freeing language specific data.
9568
9569 2009-09-09  Michael Matz  <matz@suse.de>
9570
9571         PR middle-end/41268
9572         * cfgexpand.c (expand_gimple_stmt_1): Use an int for storing
9573         SUBREG_PROMOTED_UNSIGNED_P, instead of a bool.
9574         * rtl.h (struct rtx, SUBREG_PROMOTED_UNSIGNED_P): Update comments
9575         to reflect reality.
9576
9577 2009-09-08  DJ Delorie  <dj@redhat.com>
9578
9579         * config/mep/mep.c (conversions[]): Add "ml" pattern.
9580
9581 2009-09-04  Jason Merrill  <jason@redhat.com>
9582
9583         * tree.c (tree_find_value): Remove.
9584         * tree.h: Remove prototype.
9585         * varasm.c (assemble_external): Use value_member instead.
9586
9587 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
9588
9589         * toplev.c (process_options): Choose default debugging type when
9590         gtoggle enables debug info and type is unset.
9591
9592 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
9593
9594         PR debug/41276
9595         PR debug/41307
9596         * cselib.c (cselib_expand_value_rtx_1): Don't return copy of
9597         invalid subreg.
9598
9599 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
9600
9601         * configure: Rebuilt with modified libtool.m4.
9602
9603 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
9604
9605         PR debug/41229
9606         PR debug/41291
9607         PR debug/41300
9608         * tree-ssa.c (execute_update_addresses_taken): Update debug insns.
9609
9610 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
9611
9612         * tree-ssa-loop-ivopts.c (get_phi_with_result): Remove.
9613         (remove_statement): Likewise.
9614         (rewrite_use_nonlinear_expr): Adjust.
9615         (remove_unused_ivs): Collect SSA NAMEs to remove and call...
9616         * tree-ssa.c (release_defs_bitset): ... this.  New.
9617         * tree-flow.h (release_defs_bitset): Declare.
9618
9619 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
9620
9621         PR debug/41232
9622         * tree-ssa-phiopt.c (minmax_replacement): Skip debug stmts
9623         in the middle block.
9624
9625 2009-09-08  Kai Tietz  <kai.tietz@onevision.com>
9626
9627         * tree-ssa-reassoc.c (find_operand_rank): Cast pointer
9628         via intptr_t to long type.
9629         (insert_operand_rank): Cast long type via intptr_t to
9630         pointer type.
9631         * genattrtab.c (RTL_HASH): Use intptr_t to cast from
9632         pointer to scalar.
9633         * c-pretty-print.c (pp_c_tree_decl_identifier): Cast
9634         from pointer to unsigned via uintptr_t.
9635
9636         * configure.ac (GCC_STDINT_TYPES): Initialize intptr_t,
9637         uintptr_t, HAVE_INTTYPES_H, HAVE_STDINT_H, HAVE_UINTPTR_T,
9638         and HAVE_INTPTR_T.
9639         * configure: Regenerated.
9640         * config.in: Regenerated
9641         * system.h (stdint.h): Add include.
9642         (inttypes.h): Likewise.
9643         * Makefile.in (aclocal): Add config/stdint.m4.
9644         * aclocal.m4: Regenerated.
9645
9646 2009-09-08  Bernd Schmidt  <bernd.schmidt@analog.com>
9647
9648         * config/bfin/bfin.c (np_check_regno, np_after_branch): New static
9649         variables.
9650         (note_np_check_stores): New function.
9651         (harmless_null_pointer_p): New function.
9652         (trapping_loads_p): New args NP_REG and AFTER_NP_BRANCH.  Callers
9653         changed.  Take into account whether we're in the shadow of a condjump
9654         that tested NP_REG for NULL.
9655         Lose all code that tested for SEQUENCEs.
9656         (workaround_speculation): Avoid inserting NOPs for loads that are
9657         either always executed or a NULL pointer.
9658
9659 2009-09-08  Jan Hubicka  <jh@suse.cz>
9660
9661         * doc/invoke.texi (early-inlining-insns): Reduce from 12 to 8.
9662         * params.def (early-inlining-insns): Likewise.
9663
9664 2009-09-08  Jakub Jelinek  <jakub@redhat.com>
9665
9666         PR rtl-optimization/41239
9667         * sched-int.h (struct deps): Add last_function_call_may_noreturn field.
9668         * sched-rgn.c (deps_join): Join also last_function_call_may_noreturn
9669         lists.
9670         * sched-deps.c (sched_analyze_insn): Prevent moving trapping insns
9671         across calls, as the calls might not always return normally.
9672         (call_may_noreturn_p): New function.
9673         (deps_analyze_insn): Update last_function_call_may_noreturn list.
9674         (init_deps): Initialize it.
9675         (remove_from_deps): Also remove calls from
9676         last_function_call_may_noreturn list.
9677
9678 2009-09-07  Richard Henderson  <rth@redhat.com>
9679
9680         * tree-ssa-sccvn.c (vn_reference_lookup_3): Don't assume there are
9681         more VR->OPERANDS than LHS operands.  Free LHS before returning.
9682
9683 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
9684
9685         * config/bfin/bfin.md (UNSPEC_VOLATILE_STALL): New constant.
9686         (attr "addrtype"): New member "spreg".
9687         Use it if mem_spfp_address_operand is true for the address.
9688         (attr "type"): New entry "stall".
9689         (cpu_unit "load"): New.
9690         (insn_reservations "load32", "loadp", "loadi"): Add reservation of
9691         "load".
9692         (insn_reservation "loadsp"): New.
9693         (insn_reservation "load_stall1"): New.
9694         (insn_reservation "load_stall3"): New.
9695         (stall): New insn.
9696         * config/bfin/predicates.md (const1_operand, const3_operand): New.
9697         (mem_p_address_operand): Exclude stack and frame pointer based
9698         addresses.
9699         (mem_spfp_address_operand): New; match them here.
9700         * config/bfin/bfin.c (add_sched_insns_for_speculation): New function.
9701         (bfin_reorg): Call it if scheduling insns.
9702         (bfin_gen_bundles): Remove dummy insns created by
9703         add_sched_insns_for_speculation.
9704
9705         From Jie Zhang <jie.zhang@analog.com>:
9706         * config/bfin/bfin-protos.h (enum bfin_cpu_type, bfin_cpu_type,
9707         bfin_si_revision, bfin_workarounds): Move these ...
9708         * config/bfin/bfin.h: ... here.
9709
9710         From Mike Frysinger  <michael.frysinger@analog.com>
9711         * config/bfin/bfin-protos.h (bfin_cpu_type): Add BFIN_CPU_BF542M,
9712         BFIN_CPU_BF544M, BFIN_CPU_BF547M, BFIN_CPU_BF548M, and BFIN_CPU_BF549M.
9713         * config/bfin/bfin.c (bfin_cpus[]): Add 0.3 for bf542m, bf544m,
9714         bf547m, bf548m, and bf549m.
9715         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF542M__
9716         for BFIN_CPU_BF542M, __ADSPBF544M__ for BFIN_CPU_BF544M,
9717         __ADSPBF547M__ for BFIN_CPU_BF547M, __ADSPBF548M__ for
9718         BFIN_CPU_BF548M, and __ADSPBF549M__ for BFIN_CPU_BF549M.
9719         * config/bfin/t-bfin-elf (MULTILIB_MATCHES): Select bf532-none for
9720         bf542m-none, bf544m-none, bf547m-none, bf548m-none, and bf549m-none.
9721         * config/bfin/t-bfin-linux (MULTILIB_MATCHES): Likewise.
9722         * config/bfin/t-bfin-uclinux (MULTILIB_MATCHES): Likewise.
9723         * doc/invoke.texi (Blackfin Options): Document that -mcpu now accepts
9724         bf542m, bf544m, bf547m, bf548m, and bf549m.
9725
9726         From Jie Zhang <jie.zhang@analog.com>:
9727         * config/bfin/predicates.md (p_register_operand): New predicate.
9728         (dp_register_operand): New predicate.
9729         * config/bfin/bfin-protos.h (WA_05000074): Define.
9730         (ENABLE_WA_05000074): Define.
9731         * config/bfin/bfin.c (bfin_cpus[]): Add WA_05000074 for all cpus.
9732         (bfin_gen_bundles): Put dsp32shiftimm instruction in slot[0].
9733         * config/bfin/bfin.md (define_attr type): Add dsp32shiftimm.
9734         (define_attr addrtype): Allow load/store register to be P register.
9735         (define_attr storereg): New.
9736         (define_cpu_unit anomaly_05000074): New.
9737         (define_insn_reservation dsp32shiftimm): New.
9738         (define_insn_reservation dsp32shiftimm_anomaly_05000074): New.
9739         (define_insn_reservation loadp): Cannot use slot2.
9740         (define_insn_reservation loadsp): Cannot use slot2.
9741         (define_insn_reservation storep): Cannot use slot2. Does not
9742         apply when working around 05000074.
9743         (define_insn_reservation storep_anomaly_05000074): New.
9744         (define_insn_reservation storei): Does not apply when working
9745         around 05000074.
9746         (define_insn_reservation storei_anomaly_05000074): New.
9747         (define_attr length): Add dsp32shiftimm case.
9748         (define_insn movsi_insn32, movsi_insv, ashlsi3_insn, ashrsi3,
9749         ror_one, rol_one, lshrsi3, lshrpdi3, ashrpdi3, movhiv2hi_low,
9750         movhiv2hi_high, composev2hi, packv2hi, movv2hi_hi,
9751         ssashiftv2hi3, ssashifthi3, ssashiftsi3, lshiftv2hi3, lshifthi3):
9752         Set type as dsp32shiftimm for dsp32shiftimm alternatives.
9753
9754 2009-09-07  Martin Jambor  <mjambor@suse.cz>
9755
9756         PR middle-end/41282
9757         * tree-sra.c (create_artificial_child_access): Return NULL if
9758         build_ref_for_offset fails.
9759         (propagate_subacesses_accross_link): Allow build_ref_for_offset
9760         and create_artificial_child_access to fail.
9761
9762 2009-09-06  Dmitry Gorbachev  <d.g.gorbachev@gmail.com>
9763
9764         PR c++/41214
9765         * unwind-dw2.c (uw_init_context_1): Mark noinline.
9766         * config/ia64/unwind-ia64.c (uw_init_context_1): Likewise.
9767         * config/xtensa/unwind-dw2-xtensa.c (uw_init_context_1): Likewise.
9768
9769 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
9770
9771         * config/bfin/bfin.c (bfin_optimize_loop): When creating a new basic
9772         block, ensure it has an exit edge.  Emit a barrier after a jump.
9773
9774 2009-09-07  Nick Clifton  <nickc@redhat.com>
9775
9776         * gcc.c (this_is_linker_script): New variable.  Like
9777         this_is_library_file but for the %T constructor.
9778         (end_going_arg): If this_is_linker_script is set then locate the
9779         script and insert a --script switch before it
9780         (do_spec_2): Initialise this_is_linker_script.
9781         (do_spec_1): Likewise.  Handle %T construct.
9782         (eval_spec_function): Preserve this_is_linker_script.
9783         * doc/invoke.texi: Document %T construct in spec files.
9784         * config/m32c/m32c.h (LIB_SPEC): Use it.
9785
9786 2009-09-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
9787
9788         * rtl.h (PREFETCH_SCHEDULE_BARRIER_P): New macro.
9789         * sched-deps.c (sched_analyze_2): Make prefetches a hard barrier
9790         when volatile flag is set.
9791         * doc/rtl.texi (PREFETCH_SCHEDULE_BARRIER_P): Add documentation pieces.
9792
9793 2009-09-06  Eric Botcazou  <ebotcazou@adacore.com>
9794
9795         PR bootstrap/41241
9796         * combine-stack-adj.c (try_apply_stack_adjustment): Handle stores.
9797         (combine_stack_adjustments_for_block): Allow insns between stack
9798         adjustments and stores with corresponding pre-(dec|inc)rement or
9799         pre-modify operation.
9800
9801 2009-09-06  Jakub Jelinek  <jakub@redhat.com>
9802
9803         PR bootstrap/41241
9804         * combine-stack-adj.c (struct csa_memlist): Rename to...
9805         (struct csa_reflist): ... this.  Rename mem field to ref.
9806         (free_csa_memlist): Rename to...
9807         (free_csa_reflist): ... this.
9808         (record_one_stack_memref): Rename to...
9809         (record_one_stack_ref): ... this.  Handle also REG_P.
9810         (try_apply_stack_adjustment): Handle also REG_P.
9811         (struct record_stack_memrefs_data): Rename to...
9812         (struct record_stack_refs_data): ... this.  Rename memlist field to
9813         reflist.
9814         (record_stack_memrefs): Rename to...
9815         (record_stack_refs): ... this.  For DEBUG_INSNs keep traversing
9816         subexpressions instead of failing when a MEM contains SP references.
9817         For SP itself in DEBUG_INSNs queue it also onto reflist chain.
9818         (combine_stack_adjustments_for_block): Adjust for mem to ref renaming.
9819
9820 2009-09-06  Richard Guenther  <rguenther@suse.de>
9821
9822         PR middle-end/41144
9823         * tree.c (build_array_type): Do not record types marked
9824         with structural equality in the canonical type hashtable.
9825
9826 2009-09-06  Richard Guenther  <rguenther@suse.de>
9827
9828         PR middle-end/41261
9829         * tree-ssa-alias.c (refs_may_alias_p_1): Bail out for function decls.
9830
9831 2009-09-05  Richard Guenther  <rguenther@suse.de>
9832
9833         PR middle-end/41181
9834         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Use the correct type.
9835
9836 2009-09-05  Richard Guenther  <rguenther@suse.de>
9837
9838         PR debug/41273
9839         * tree-ssa-operands.c (get_tmr_operands): Pass through opf_no_vops.
9840
9841 2009-09-05  Richard Guenther  <rguenther@suse.de>
9842
9843         PR middle-end/41271
9844         * tree-ssa.c (useless_type_conversion_p): Drop qualifiers
9845         before comparing function argument types.
9846
9847 2009-09-05  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
9848
9849         PR target/41024
9850         * config/i386/mingw-w64.h (ASM_SPEC): Pass -v instead of -V to
9851         the assembler.
9852
9853 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
9854
9855         Revert:
9856         2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
9857
9858         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
9859         locators before emit_insn is called.
9860
9861 2009-09-04  Vladimir Makarov  <vmakarov@redhat.com>
9862
9863         PR bootstrap/41241
9864         * ira.c (update_equiv_reg): Revert my previous patch for the PR.
9865         * reginfo.c (resize_reg_info): Call allocate_reg_info if necessary.
9866         (reginfo_init): Don't call allocate_reg_info.
9867
9868 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
9869
9870         PR target/41262
9871         * config/alpha/alpha.c (alpha_does_function_need_gp): Use
9872         NONDEBUG_INSN_P instead of INSN_P.
9873
9874 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
9875
9876         PR debug/41225
9877         * tree-vect-stmts.c (vect_stmt_relevant_p): Skip debug uses.
9878
9879 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
9880
9881         PR target/41252
9882         * config/arm/vfp.md (*cmpdf_split_vfp): Fix src mode in the second
9883         pattern of the split.
9884
9885 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
9886
9887         * toplev.c (process_options): Move setter of flag_var_tracking
9888         before other tests that depend on it.  Move down setter of
9889         flag_rename_registers.  Don't enable var-tracking-assignments
9890         by default if selective scheduling is enabled.  Warn if both
9891         are enabled.
9892
9893 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
9894
9895         * var-tracking.c (dv_is_decl_p): Adjust NULL behavior to match
9896         comment.  Use switch statement to catch overlaps between rtx
9897         and tree codes.  Accept FUNCTION_DECLs in addition to those in...
9898         (IS_DECL_CODE): ... here. Remove.
9899         (check_value_is_not_decl): Remove.
9900         (dv_from_decl, dv_from_value): Check after conversion.
9901
9902 2009-09-04  Richard Guenther  <rguenther@suse.de>
9903
9904         PR middle-end/41257
9905         * (cgraph_finalize_compilation_unit): Move finalizing aliases
9906         after emitting tunks.  Move emitting thunks and ctors from ...
9907         (cgraph_optimize): ... here.  Remove redundant
9908         cgraph_analyze_functions.
9909         * varasm.c (find_decl_and_mark_needed): Remove no longer
9910         necessary check.
9911         (finish_aliases_1): Adjust check for thunk aliases.
9912
9913 2009-09-04  Daniel Gutson  <dgutson@codesourcery.com>
9914
9915         * config/arm/arm.md (ctzsi2): Added braces
9916         to avoid warning that broke booststrap.
9917
9918 2009-09-04  Martin Jambor  <mjambor@suse.cz>
9919
9920         PR tree-optimization/41112
9921         * tree-sra.c (build_ref_for_offset_1): Signal that we cannot
9922         handle variable-bounded arrays.
9923         (expr_with_var_bounded_array_refs_p): New function.
9924         (analyze_access_subtree): Call expr_with_var_bounded_array_refs_p.
9925
9926 2009-09-04  Wolfgang Gellerich  <gellerich@de.ibm.com>
9927
9928         * config/s390/2097.md: Removed two incorrect bypasses.
9929         (z10_fsimpdf): Fixed latency.
9930         (z10_fhex): New insn_reservation.
9931         (z10_floaddf): Fixed latency.
9932         (z10_floadsf): Fixed latency.
9933         (z10_ftrunctf): Fixed latency.
9934         (z10_ftruncdf): Fixed latency.
9935         * config/s390/s390.c (z10_cost): Fixed values.
9936         (s390_adjust_priority): Added z10 path.
9937         * config/s390/s390.md (type): Added fhex.
9938         (*mov<mode>_64dfp): Updated type attribute.
9939         (*mov<mode>_64): Updated type attribute.
9940         (*mov<mode>_31): Updated type attribute.
9941         (*mov<mode>"): Likewise.
9942         * config/s390/2084.md (x_fsimpdf): Updated condition.
9943
9944 2009-09-04  Andreas Krebbel  <krebbel1@de.ibm.com>
9945
9946         * config/s390/s390.md ("*fmadd<mode>", "*fmsub<mode>"): Enable mem
9947         RTXs in the predicate for operand 1.
9948
9949 2009-09-03  Daniel Gutson  <dgutson@codesourcery.com>
9950
9951         * config/arm/arm.md (UNSPEC_RBIT): New constant.
9952         (rbitsi2): New insn.
9953         (ctzsi2): New expand.
9954         * config/arm/arm.h (CTZ_DEFINED_VALUE_AT_ZERO): New macro.
9955
9956 2009-09-03  Martin Jambor  <mjambor@suse.cz>
9957
9958         * tree-sra.c (duplicate_expr_for_different_base): Removed.
9959         (create_artificial_child_access): Use build_ref_for_offset instead
9960         of duplicate_expr_for_different_base.
9961         (propagate_subacesses_accross_link): Likewise.
9962
9963 2009-09-03  Richard Sandiford  <rdsandiford@googlemail.com>
9964
9965         * config/mips/mips.c (USEFUL_INSN_P): Use NONDEBUG_INSN_P instead
9966         of INSN_P.
9967         (mips16e_collect_argument_saves): Skip debug instructions.
9968         (mips_74k_agen_init): Use CALL_P || JUMP_P instead of !NONJUMP_INSN_P.
9969         (mips16_lay_out_constants): Use USEFUL_INSN_P instead of INSN_P.
9970         (r10k_insert_cache_barriers): Likewise.
9971         (mips_reorg_process_insns): Likewise.
9972
9973 2009-09-03  Vladimir Makarov  <vmakarov@redhat.com>
9974
9975         PR bootstrap/41241
9976         * ira.c (update_equiv_reg): Remove check on class likely spill.
9977
9978 2009-09-03  Jakub Jelinek  <jakub@redhat.com>
9979
9980         PR debug/41236
9981         * dwarf2out.c (loc_descriptor): Don't use SUBREG_REG macro on
9982         SIGN_EXTEND or ZERO_EXTEND.  Don't assume there is a REG inside of
9983         it or SUBREG.
9984
9985         PR debug/41238
9986         * function.c (assign_parm_find_stack_rtl): Don't set mem attributes on
9987         the stack slot if it is passed by invisible reference.
9988         * var-tracking.c (vt_add_function_parameters): Handle arguments passed
9989         by invisible reference.
9990
9991 2009-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
9992
9993         * config/bfin/linux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
9994         * config/bfin/uclinux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
9995         * config/bfin/bfin.h (TARGET_SUPPORTS_SYNC_CALLS): Provide default of
9996         0.
9997         * config/bfin/sync.md: New file.
9998         * config/bfin/bfin.md: Include it.
9999         (UNSPEC_ATOMIC): New.
10000         (UNSPEC_ONES): Provide a unique number.
10001
10002         From Jie Zhang <jie.zhang@analog.com>:
10003         * config/bfin/bfin.c (ret_regs): New.
10004         (must_save_fp_p): Don't return true because of frame_pointer_needed.
10005         (must_save_rets_p): New.
10006         (n_regs_saved_by_prologue): Use must_save_rets_p instead of
10007         current_function_is_leaf.
10008         (do_link): Likewise.
10009         (do_unlink): Likewise.
10010         (expand_interrupt_handler_prologue): Use ret_regs array.
10011         (expand_interrupt_handler_epilogue): Use ret_regs array and
10012         pass return register to gen_return_internal.
10013         (bfin_expand_epilogue): Pass return register to
10014         gen_return_internal.
10015         (bfin_expand_call): Explicitly clobber RETS.
10016         * config/bfin/bfin.h (FUNCTION_RETURN_REGISTERS): Define.
10017         * config/bfin/bfin.md (call_symbol_fdpic, call_value_symbol_fdpic,
10018         call_insn_fdpic, call_value_insn_fdpic, call_symbol,
10019         call_value_symbol, call_insn, call_value_insn): Explicitly clobber
10020         RETS.
10021         (return_internal): Take a reg rtx rather than the register number.
10022
10023 2009-09-03  H.J. Lu  <hongjiu.lu@intel.com>
10024
10025         * tree-parloops.c (parallelize_loops): Cast to HOST_WIDE_INT
10026         when comparing against estimated_loop_iterations_int return.
10027
10028 2009-09-03  Richard Guenther  <rguenther@suse.de>
10029
10030         * dwarf2out.c (dwarf2out_do_cfi_asm): Remove check of
10031         eh_personality_libfunc.
10032
10033 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
10034
10035         * tree-parloops.c (separate_decls_in_region): Add space.
10036
10037 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
10038
10039         * tree-parloops.c (separate_decls_in_region): Change the condition
10040         checking if there are reductions in the loop.
10041
10042 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
10043
10044         PR tree-optimization/38275
10045         * tree-parloops.c (parallelize_loops): Replace profitability condition
10046         for expected number of iterations.
10047
10048 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
10049
10050         * doc/invoke.texi (BUILD_CONFIG): Document --with-build-config.
10051         (bootstrap-debug): Explain conditions in which it becomes default.
10052         (bootstrap-debug-big): Rather than duplicate bootstrap-debug,
10053         make it add to it.
10054
10055 2009-09-03  Namhyung Kim  <namhyung@gmail.com>
10056
10057         * doc/invoke.texi (Optimize Options): Move
10058         -finline-small-functions to the -O2 list.
10059
10060 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
10061
10062         * toplev.c (process_options): Enable var-tracking-assignments
10063         by default if var-tracking is enabled.
10064
10065 2009-09-02  David Daney  <ddaney@caviumnetworks.com>
10066
10067         * cfgbuild.c (find_bb_boundaries): Split blocks containing a
10068         barrier.
10069         * emit-rtl.c (prev_nonnote_insn_bb): New function.
10070         * rtl.h (prev_nonnote_insn_bb): Declare it.
10071
10072 2009-09-03  Diego Novillo  <dnovillo@google.com>
10073
10074         * cgraph.c (cgraph_node_for_decl): New.
10075         * cgraph.h (cgraph_node_for_decl): Declare.
10076         * tree.c (host_integerp): Return 0 if T is NULL.
10077
10078 2009-09-03  Diego Novillo  <dnovillo@google.com>
10079
10080         * tree.h (struct alias_pair): Move from varasm.c.
10081         (alias_pairs): Likewise.
10082         (TYPE_MAXVAL): Define.
10083         (TYPE_MINVAL): Define.
10084         (iterative_hash_host_wide_int): Declare.
10085         (remove_unreachable_alias_pairs): Declare.
10086         * tree-pass.h (pass_ipa_free_lang_data): Declare.
10087         * diagnostic.c (default_diagnostic_starter): Make extern.
10088         (default_diagnostic_finalizer): Make extern.
10089         * diagnostic.h (default_diagnostic_starter): Declare.
10090         (default_diagnostic_finalizer): Declare.
10091         (default_tree_printer): Declare.
10092         * toplev.c (default_tree_printer): Make extern.
10093
10094 2009-09-03  Richard Guenther  <rguenther@suse.de>
10095             Diego Novillo  <dnovillo@google.com>
10096
10097         * cgraph.c (cgraph_add_new_function): Remove gimplification.
10098         * cgraphunit.c (cgraph_expand_function): Do not emit
10099         associated thunks from here.
10100         (cgraph_emit_thunks): New.
10101         (cgraph_optimize): Call it.
10102         Return if any IPA pass finds an error.
10103         * varasm.c (finish_aliases_1): Ignore errorneous aliases used
10104         by thunks.
10105
10106 2009-09-03  Simon Baldwin  <simonb@google.com>
10107             Rafael Espindola  <espindola@google.com>
10108             Richard Guenther  <rguenther@suse.de>
10109             Doug Kwan  <dougkwan@google.com>
10110             Diego Novillo  <dnovillo@google.com>
10111
10112         * tree.c: Include tree-pass.h, langhooks-def.h,
10113         diagnostic.h, cgraph.h, timevar.h, except.h and debug.h.
10114         (free_lang_data_in_type): New.
10115         (need_assembler_name_p): New.
10116         (free_lang_data_in_block): New.
10117         (free_lang_data_in_decl): New.
10118         (struct free_lang_data_d): New.
10119         (add_tree_to_fld_list): New.
10120         (find_decls_types_r): New.
10121         (get_eh_types_for_runtime): New.
10122         (find_decls_types_in_eh_region): New.
10123         (find_decls_types_in_node): New.
10124         (find_decls_types_in_var): New.
10125         (free_lang_data_in_cgraph): New.
10126         (free_lang_data): New.
10127         (gate_free_lang_data): New.
10128         (pass_ipa_free_lang_data): New.
10129
10130 2009-09-03  Diego Novillo  <dnovillo@google.com>
10131
10132         * timevar.def (TV_IPA_FREE_LANG_DATA): Define.
10133         * langhooks.h (struct lang_hooks): Add field free_lang_data.
10134         (lang_hooks): Remove const qualifier.
10135         * ipa.c (cgraph_remove_unreachable_nodes): Call
10136         remove_unreachable_alias_pairs.
10137         * except.c (add_type_for_runtime): Check if TYPE has
10138         already been converted.
10139         (lookup_type_for_runtime): Likewise.
10140         (check_handled): Handle converted types.
10141         * varasm.c (remove_unreachable_alias_pairs): New.
10142         * gimple.c: Include demangle.h.
10143         (gimple_decl_printable_name): New.
10144         (gimple_fold_obj_type_ref): New.
10145         * gimple.h (gimple_decl_printable_name): Declare.
10146         (gimple_fold_obj_type_ref): Declare.
10147         * passes.c (init_optimization_passes): Add pass
10148         pass_ipa_free_lang_data.
10149         * langhooks-def.h (LANG_HOOKS_FREE_LANG_DATA): Define.
10150         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_FREE_LANG_DATA.
10151
10152 2009-09-03  Diego Novillo  <dnovillo@google.com>
10153
10154         * c-lang.c (lang_hooks): Remove const qualifier.
10155
10156 2009-09-02  Loren James Rittle  <ljrittle@acm.org>
10157
10158         * doc/install.texi (*-*-freebsd*): Update target information.
10159
10160 2009-09-02  Anatoly Sokolov  <aesok@post.ru>
10161
10162         * hard-reg-set.h (call_fixed_regs): Remove.
10163         * reginfo.c (call_fixed_regs): Remove.
10164         (init_reg_sets_1): Remove initialization of call_fixed_regs.
10165         (globalize_reg): Don't use call_fixed_regs.
10166         * caller-save.c (init_caller_save): Use call_fixed_reg_set instead of
10167         call_fixed_regs.
10168
10169 2009-09-01  Michael Matz  <matz@suse.de>
10170
10171         * expr.h (emit_storent_insn, expand_expr_real_1,
10172         expand_expr_real_2): Declare.
10173         * expr.c (emit_storent_insn, expand_expr_real_1,
10174         expand_expr_real_2): Export.
10175         (store_expr): Setting and evaluating dont_return_target is useless.
10176         (expand_expr_real_1, <case GOTO_EXPR, RETURN_EXPR, SWITCH_EXPR,
10177         LABEL_EXPR and ASM_EXPR>): Move to gcc_unreachable.
10178         * except.c (expand_resx_expr): Rename to ...
10179         (expand_resx_stmt): ... this.  Rewrite to take gimple statement.
10180         * except.h (expand_resx_stmt): Declare.
10181         * stmt.c: Add include gimple.h
10182         (expand_asm_expr): Rename to ...
10183         (expand_asm_stmt): ... this. Rewrite to take gimple statement.
10184         (expand_case): Rewrite to take gimple statement.
10185         * tree.h (expand_asm_stmt): Declare.
10186         (expand_case): Change prototype.
10187         * Makefile.in (stmt.o): Depend on gimple.h.
10188         * builtins.c (expand_builtin_synchronize): Build gimple asm
10189         statement, not an ASM_EXPR.
10190         * cfgexpand.c (gimple_cond_pred_to_tree, set_expr_location_r,
10191         gimple_to_tree, release_stmt_tree): Remove.
10192         (expand_gimple_cond): Don't call gimple_cond_pred_to_tree or
10193         ggc_free, but hold comparison code and operands separately.
10194         Call jumpif_1 and jumpifnot_1 instead of jumpif and jumpifnot.
10195         (expand_call_stmt, expand_gimple_stmt_1,
10196         expand_gimple_stmt): New helpers.
10197         (expand_gimple_tailcall): Don't call gimple_to_tree, expand_expr_stmt,
10198         release_stmt_tree.  Call expand_gimple_stmt instead.
10199         (expand_gimple_basic_block): Ditto.
10200
10201         * calls.c (emit_call_1): Don't look at EH regions here, make
10202         fntree parameter useless.
10203         (expand_call): New local rettype for TREE_TYPE(exp), use it
10204         throughout.  Remove local p, use addr instead.
10205         Don't look at EH regions here.
10206
10207 2009-09-02  Vladimir Makarov  <vmakarov@redhat.com>
10208
10209         * doc/invoke.texi (-fsched-pressure): Document it.
10210         (-fsched-reg-pressure-heuristic): Remove it.
10211
10212         * reload.c (ira.h): Include.
10213         (find_reloads): Add choosing reload on number of small spilled
10214         classes.
10215
10216         * haifa-sched.c (ira.h): Include.
10217         (sched_pressure_p, sched_regno_cover_class, curr_reg_pressure,
10218         saved_reg_pressure, curr_reg_live, saved_reg_live,
10219         region_ref_regs): New variables.
10220         (sched_init_region_reg_pressure_info, mark_regno_birth_or_death,
10221         initiate_reg_pressure_info, setup_ref_regs,
10222         initiate_bb_reg_pressure_info, save_reg_pressure,
10223         restore_reg_pressure, dying_use_p, print_curr_reg_pressure): New
10224         functions.
10225         (setup_insn_reg_pressure_info): New function.
10226         (rank_for_schedule): Add pressure checking and insn issue time.
10227         Remove comparison of insn reg weights.
10228         (ready_sort): Set insn reg pressure info.
10229         (update_register_pressure, setup_insn_max_reg_pressure,
10230         update_reg_and_insn_max_reg_pressure,
10231         sched_setup_bb_reg_pressure_info): New functions.
10232         (schedule_insn): Add code for printing and updating reg pressure info.
10233         (find_set_reg_weight, find_insn_reg_weight): Remove.
10234         (ok_for_early_queue_removal): Do nothing if pressure_only_p.
10235         (debug_ready_list): Print reg pressure info.
10236         (schedule_block): Ditto.  Check insn issue time.
10237         (sched_init): Set up sched_pressure_p.  Allocate and set up some
10238         reg pressure related info.
10239         (sched_finish): Free some reg pressure related info.
10240         (fix_tick_ready): Make insn always ready if pressure_p.
10241         (init_h_i_d): Don't call find_insn_reg_weight.
10242         (haifa_finish_h_i_d): Free insn reg pressure info.
10243
10244         * ira-int.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
10245         ira_memory_move_cost, ira_class_hard_regs,
10246         ira_class_hard_regs_num, ira_no_alloc_regs,
10247         ira_available_class_regs, ira_reg_class_cover_size,
10248         ira_reg_class_cover, ira_class_translate): Move to ira.h.
10249
10250         * ira-lives.c (single_reg_class): Check mode to find how many
10251         registers are necessary for operand.
10252         (ira_implicitly_set_insn_hard_regs): New.
10253
10254         * common.opt (fsched-pressure): New options.
10255         (fsched-reg-pressure-heuristic): Remove.
10256
10257         * ira.c (setup_eliminable_regset): Rename to
10258         ira_setup_eliminable_regset.  Make it external.
10259         (expand_reg_info): Pass cover class to setup_reg_classes.
10260         (ira): Call resize_reg_info instead of allocate_reg_info.
10261
10262         * sched-deps.c: Include ira.h.
10263         (implicit_reg_pending_clobbers, implicit_reg_pending_uses): New.
10264         (create_insn_reg_use, create_insn_reg_set, setup_insn_reg_uses,
10265         reg_pressure_info, insn_use_p, mark_insn_pseudo_birth,
10266         mark_insn_hard_regno_birth, mark_insn_reg_birth,
10267         mark_pseudo_death, mark_hard_regno_death, mark_reg_death,
10268         mark_insn_reg_store, mark_insn_reg_clobber,
10269         setup_insn_reg_pressure_info): New.
10270         (sched_analyze_1): Update implicit_reg_pending_uses.
10271         (sched_analyze_insn): Find implicit sets, uses, clobbers of regs.
10272         Use them to create dependencies.  Set insn reg uses and pressure
10273         info.  Process reg_pending_uses in one place.
10274         (free_deps): Free implicit sets.
10275         (remove_from_deps): Remove implicit sets if necessary.  Check
10276         implicit sets when clearing reg_last_in_use.
10277         (init_deps_global): Clear implicit_reg_pending_clobbers and
10278         implicit_reg_pending_uses.
10279
10280         * ira.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
10281         ira_memory_move_cost, ira_class_hard_regs,
10282         ira_class_hard_regs_num, ira_no_alloc_regs,
10283         ira_available_class_regs, ira_reg_class_cover_size,
10284         ira_reg_class_cover, ira_class_translate): Move from ira-int.h.
10285         (ira_setup_eliminable_regset, ira_set_pseudo_classes,
10286         ira_implicitly_set_insn_hard_regs): New prototypes.
10287
10288         * ira-costs.c (pseudo_classes_defined_p, allocno_p,
10289         cost_elements_num): New variables.
10290         (allocno_costs, total_costs): Rename to costs and
10291         total_allocno_costs.
10292         (COSTS_OF_ALLOCNO): Rename to COSTS.
10293         (allocno_pref): Rename to pref.
10294         (allocno_pref_buffer): Rename to pref_buffer.
10295         (common_classes): Rename to regno_cover_class.
10296         (COST_INDEX): New.
10297         (record_reg_classes): Set allocno attributes only if allocno_p.
10298         (record_address_regs): Ditto.  Use COST_INDEX instead of ALLOCNO_NUM.
10299         (scan_one_insn): Use COST_INDEX and COSTS instead of ALLOCNO_NUM
10300         and COSTS_OF_ALLOCNO.
10301         (print_costs): Rename to print_allocno_costs.
10302         (print_pseudo_costs): New.
10303         (process_bb_node_for_costs): Split into 2 functions with new
10304         function process_bb_for_costs.  Pass BB to process_bb_for_costs.
10305         (find_allocno_class_costs): Rename to find_costs_and_classes.  Add
10306         new parameter dump_file.  Use cost_elements_num instead of
10307         ira_allocnos_num.  Make one iteration if preferred classes were
10308         already calculated for scheduler.  Make 2 versions of code
10309         depending on allocno_p.
10310         (setup_allocno_cover_class_and_costs): Check allocno_p.  Use
10311         regno_cover_class and COSTS instead of common_classes and
10312         COSTS_OF_ALLOCNO.
10313         (init_costs, finish_costs): New.
10314         (ira_costs): Set up allocno_p and cost_elements_num.  Call
10315         init_costs and finish_costs.
10316         (ira_set_pseudo_classes): New.
10317
10318         * rtl.h (allocate_reg_info): Remove.
10319         (resize_reg_info): Change return type.
10320         (reg_cover_class): New.
10321         (setup_reg_classes): Add new parameter.
10322
10323         * sched-int.h (struct deps_reg): New member implicit_sets.
10324         (sched_pressure_p, sched_regno_cover_class): New external definitions.
10325         (INCREASE_BITS): New macro.
10326         (struct reg_pressure_data, struct reg_use_data): New.
10327         (struct _haifa_insn_data): Remove reg_weight.  Add members
10328         reg_pressure, reg_use_list, reg_set_list, and
10329         reg_pressure_excess_cost_change.
10330         (struct deps): New member implicit_sets.
10331         (pressure_p): New variable.
10332         (COVER_CLASS_BITS, INCREASE_BITS): New macros.
10333         (struct reg_pressure_data, struct reg_use_data): New.
10334         (INSN_REG_WEIGHT): Remove.
10335         (INSN_REG_PRESSURE, INSN_MAX_REG_PRESSURE, INSN_REG_USE_LIST,
10336         INSN_REG_SET_LIST, INSN_REG_PRESSURE_EXCESS_COST_CHANGE): New macros.
10337         (sched_init_region_reg_pressure_info,
10338         sched_setup_bb_reg_pressure_info): New prototypes.
10339
10340         * reginfo.c (struct reg_pref): New member coverclass.
10341         (reg_cover_class): New function.
10342         (reginfo_init, pass_reginfo_init): Move after free_reg_info.
10343         (reg_info_size): New variable.
10344         (allocate_reg_info): Make static.  Setup reg_info_size.
10345         (resize_reg_info): Use reg_info_size.  Return flag of resizing.
10346         (setup_reg_classes): Add a new parameter.  Setup cover class too.
10347
10348         * Makefile.in (reload.o, haifa-sched.o, sched-deps.o): Add ira.h to
10349         the dependencies.
10350
10351         * sched-rgn.c (deps_join): Set up implicit_sets.
10352         (schedule_region): Set up region and basic blocks pressure
10353         relative info.
10354
10355         * passes.c (init_optimization_passes): Move
10356         pass_subregs_of_mode_init before pass_sched.
10357
10358 2009-09-02  Martin Jambor  <mjambor@suse.cz>
10359
10360         * tree-sra.c (struct access): New field grp_hint.
10361         (dump_access): Dump grp_hint.
10362         (sort_and_splice_var_accesses): Set grp_hint if a group is read
10363         multiple times.
10364         (analyze_access_subtree): Only scalarize accesses with grp_hint set or
10365         those which have been specifically read and somehow written to.
10366         (propagate_subacesses_accross_link): Set grp_hint of right child and
10367         also possibly of the left child.
10368
10369 2009-09-02  Jakub Jelinek  <jakub@redhat.com>
10370
10371         * tree-object-size.c (addr_object_size): Always use object_size_type
10372         0 or 2 when determining the pointer pointed object size.
10373
10374 2009-09-02  Richard Guenther  <rguenther@suse.de>
10375
10376         Revert
10377         2009-08-31  Richard Guenther  <rguenther@suse.de>
10378
10379         * builtins.c (fold_builtin_memory_op): Use the alias oracle
10380         to query if the memory regions for memmove overlap.
10381         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
10382         asserts on pointers, instead deal with odd trees.
10383         (ptr_derefs_may_alias_p): Likewise.
10384         (refs_may_alias_p_1): Constructor bases also never alias.
10385
10386 2009-08-01  Christian Bruel  <christian.bruel@st.com>
10387
10388         Revert:
10389         2009-07-31  Christian Bruel  <christian.bruel@st.com>
10390         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
10391
10392 2009-09-01  Alexandre Oliva  <aoliva@redhat.com>
10393
10394         * doc/invoke.texi (-fvar-tracking-assignments): New.
10395         (-fvar-tracking-assignments-toggle): New.
10396         (-fdump-final-insns=file): Mark filename as optional.
10397         (--param min-nondebug-insn-uid): New.
10398         (-gdwarf-@{version}): Mention version 4.
10399         * opts.c (common_handle_option): Accept it.
10400         * tree-vrp.c (find_assert_locations_1): Skip debug stmts.
10401         * regrename.c (regrename_optimize): Drop last.  Don't count debug
10402         insns as uses.  Don't reject change because of debug insn.
10403         (do_replace): Reject DEBUG_INSN as chain starter.  Take base_regno
10404         from the chain starter, and check for inexact matches in DEBUG_INSNS.
10405         (scan_rtx_reg): Accept inexact matches in DEBUG_INSNs.
10406         (build_def_use): Simplify and fix the marking of DEBUG_INSNs.
10407         * sched-ebb.c (schedule_ebbs): Skip boundary debug insns.
10408         * fwprop.c (forward_propagate_and_simplify): ...into debug insns.
10409         * doc/gimple.texi (is_gimple_debug): New.
10410         (gimple_debug_bind_p): New.
10411         (is_gimple_call, gimple_assign_cast_p): End sentence with period.
10412         * doc/install.texi (bootstrap-debug): More details.
10413         (bootstrap-debug-big, bootstrap-debug-lean): Document.
10414         (bootstrap-debug-lib): More details.
10415         (bootstrap-debug-ckovw): Update.
10416         (bootstrap-time): New.
10417         * tree-into-ssa.c (mark_def_sites): Skip debug stmts.
10418         (insert_phi_nodes_for): Insert debug stmts.
10419         (rewrite_stmt): Take iterator.  Insert debug stmts.
10420         (rewrite_enter_block): Adjust.
10421         (maybe_replace_use_in_debug_stmt): New.
10422         (rewrite_update_stmt): Use it.
10423         (mark_use_interesting): Return early for debug stmts.
10424         * tree-ssa-loop-im.c (rewrite_bittest): Propagate DEFs into debug
10425         stmts before replacing stmt.
10426         (move_computations_stmt): Likewise.
10427         * ira-conflicts.c (add_copies): Skip debug insns.
10428         * regstat.c (regstat_init_n_sets_and_refs): Discount debug insns.
10429         (regstat_bb_compute_ri): Skip debug insns.
10430         * tree-ssa-threadupdate.c (redirection_block_p): Skip debug stmts.
10431         * tree-ssa-loop-manip.c (find_uses_to_rename_stmt,
10432         check_loop_closed_ssa_stmt): Skip debug stmts.
10433         * tree-tailcall.c (find_tail_calls): Likewise.
10434         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Likewise.
10435         * tree.h (MAY_HAVE_DEBUG_STMTS): New.
10436         (build_var_debug_value_stat): Declare.
10437         (build_var_debug_value): Define.
10438         (target_for_debug_bind): Declare.
10439         * reload.c (find_equiv_reg): Skip debug insns.
10440         * rtlanal.c (reg_used_between_p): Skip debug insns.
10441         (side_effects_p): Likewise.
10442         (canonicalize_condition): Likewise.
10443         * ddg.c (create_ddg_dep_from_intra_loop_link): Check that non-debug
10444         insns never depend on debug insns.
10445         (create_ddg_dep_no_link): Likewise.
10446         (add_cross_iteration_register_deps): Use ANTI_DEP for debug insns.
10447         Don't add inter-loop dependencies for debug insns.
10448         (build_intra_loop_deps): Likewise.
10449         (create_ddg): Count debug insns.
10450         * ddg.h (struct ddg::num_debug): New.
10451         (num_backargs): Pair up with previous int field.
10452         * diagnostic.c (diagnostic_report_diagnostic): Skip notes on
10453         -fcompare-debug-second.
10454         * final.c (get_attr_length_1): Skip debug insns.
10455         (rest_of_clean-state): Don't dump CFA_RESTORE_STATE.
10456         * gcc.c (invoke_as): Call compare-debug-dump-opt.
10457         (driver_self_specs): Map -fdump-final-insns to
10458         -fdump-final-insns=..
10459         (get_local_tick): New.
10460         (compare_debug_dump_opt_spec_function): Test for . argument and
10461         compute output name.  Compute temp output spec without flag name.
10462         Compute -frandom-seed.
10463         (OPT): Undef after use.
10464         * cfgloopanal.c (num_loop_insns): Skip debug insns.
10465         (average_num_loop_insns): Likewise.
10466         * params.h (MIN_NONDEBUG_INSN_UID): New.
10467         * gimple.def (GIMPLE_DEBUG): New.
10468         * ipa-reference.c (scan_stmt_for_static_refs): Skip debug stmts.
10469         * auto-inc-dec.c (merge_in_block): Skip debug insns.
10470         (merge_in_block): Fix whitespace.
10471         * toplev.c (flag_var_tracking): Update comment.
10472         (flag_var_tracking_assignments): New.
10473         (flag_var_tracking_assignments_toggle): New.
10474         (process_options): Don't open final insns dump file if we're not
10475         going to write to it.  Compute defaults for var_tracking.
10476         * df-scan.c (df_insn_rescan_debug_internal): New.
10477         (df_uses_record): Handle debug insns.
10478         * haifa-sched.c (ready): Initialize n_debug.
10479         (contributes_to_priority): Skip debug insns.
10480         (dep_list_size): New.
10481         (priority): Use it.
10482         (rank_for_schedule): Likewise.  Schedule debug insns as soon as
10483         they're ready.  Disregard previous debug insns to make decisions.
10484         (queue_insn): Never queue debug insns.
10485         (ready_add, ready_remove_first, ready_remove): Count debug insns.
10486         (schedule_insn): Don't reject debug insns because of issue rate.
10487         (get_ebb_head_tail, no_real_insns_p): Skip boundary debug insns.
10488         (queue_to_ready): Skip and discount debug insns.
10489         (choose_ready): Let debug insns through.
10490         (schedule_block): Check boundary debug insns.  Discount debug
10491         insns, schedule them early.  Adjust whitespace.
10492         (set_priorities): Check for boundary debug insns.
10493         (add_jump_dependencies): Use dep_list_size.
10494         (prev_non_location_insn): New.
10495         (check_cfg): Use it.
10496         * tree-ssa-loop-ivopts.c (find-interesting_users): Skip debug
10497         stmts.
10498         (remove_unused_ivs): Reset debug stmts.
10499         * modulo-sched.c (const_iteration_count): Skip debug insns.
10500         (res_MII): Discount debug insns.
10501         (loop_single_full_bb_p): Skip debug insns.
10502         (sms_schedule): Likewise.
10503         (sms_schedule_by_order): Likewise.
10504         (ps_has_conflicts): Likewise.
10505         * caller-save.c (refmarker_fn): New.
10506         (save_call_clobbered_regs): Replace regs with saved mem in
10507         debug insns.
10508         (mark_referenced_regs): Take pointer, mark and arg.  Adjust.
10509         Call refmarker_fn mark for hardregnos.
10510         (mark_reg_as_referenced): New.
10511         (replace_reg_with_saved_mem): New.
10512         * ipa-pure-const.c (check_stmt): Skip debug stmts.
10513         * cse.c (cse_insn): Canonicalize debug insns.  Skip them when
10514         searching back.
10515         (cse_extended_basic_block): Skip debug insns.
10516         (count_reg_usage): Likewise.
10517         (is_dead_reg): New, split out of...
10518         (set_live_p): ... here.
10519         (insn_live_p): Use it for debug insns.
10520         * tree-stdarg.c (check_all_va_list_escapes): Skip debug stmts.
10521         (execute_optimize_stdarg): Likewise.
10522         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
10523         * tree-ssa-propagate.c (substitute_and_fold): Don't regard
10524         changes in debug stmts as changes.
10525         * sel-sched.c (moving_insn_creates_bookkeeping_block_p): New.
10526         (moveup_expr): Don't move across debug insns.  Don't move
10527         debug insn if it would create a bookkeeping block.
10528         (moveup_expr_cached): Don't use cache for debug insns that
10529         are heads of blocks.
10530         (compute_av_set_inside_bb): Skip debug insns.
10531         (sel_rank_for_schedule): Schedule debug insns first.  Remove
10532         dead code.
10533         (block_valid_for_bookkeeping_p); Support lax searches.
10534         (create_block_for_bookkeeping): Adjust block numbers when
10535         encountering debug-only blocks.
10536         (find_place_for_bookkeeping): Deal with debug-only blocks.
10537         (generate_bookkeeping_insn): Accept no place to insert.
10538         (remove_temp_moveop_nops): New argument full_tidying.
10539         (prepare_place_to_insert): Deal with debug insns.
10540         (advance_state_on_fence): Debug insns don't start cycles.
10541         (update_boundaries): Take fence as argument.  Deal with
10542         debug insns.
10543         (schedule_expr_on_boundary): No full_tidying on debug insns.
10544         (fill_insns): Deal with debug insns.
10545         (track_scheduled_insns_and_blocks): Don't count debug insns.
10546         (need_nop_to_preserve_insn_bb): New, split out of...
10547         (remove_insn_from_stream): ... this.
10548         (fur_orig_expr_not_found): Skip debug insns.
10549         * rtl.def (VALUE): Move up.
10550         (DEBUG_INSN): New.
10551         * tree-ssa-sink.c (all_immediate_uses_same_place): Skip debug stmts.
10552         (nearest_common_dominator_of_uses): Take debug_stmts argument.
10553         Set it if debug stmts are found.
10554         (statement_sink_location): Skip debug stmts.  Propagate
10555         moving defs into debug stmts.
10556         * ifcvt.c (first_active_insn): Skip debug insns.
10557         (last_active_insns): Likewise.
10558         (cond_exec_process_insns): Likewise.
10559         (noce_process_if_block): Likewise.
10560         (check_cond_move_block): Likewise.
10561         (cond_move_convert_if_block): Likewise.
10562         (block_jumps_and_fallthru_p): Likewise.
10563         (dead_or_predicable): Likewise.
10564         * dwarf2out.c (debug_str_hash_forced): New.
10565         (find_AT_string): Add comment.
10566         (gen_label_for_indirect_string): New.
10567         (get_debug_string_label): New.
10568         (AT_string_form): Use it.
10569         (mem_loc_descriptor): Handle non-TLS symbols.  Handle MINUS , DIV,
10570         MOD, AND, IOR, XOR, NOT, ABS, NEG, and CONST_STRING.  Accept but
10571         discard COMPARE, IF_THEN_ELSE, ROTATE, ROTATERT, TRUNCATE and
10572         several operations that cannot be represented with DWARF opcodes.
10573         (loc_descriptor): Ignore SIGN_EXTEND and ZERO_EXTEND.  Require
10574         dwarf_version 4 for DW_OP_implicit_value and DW_OP_stack_value.
10575         (dwarf2out_var_location): Take during-call mark into account.
10576         (output_indirect_string): Update comment.  Output if there are
10577         label and references.
10578         (prune_indirect_string): New.
10579         (prune_unused_types): Call it if debug_str_hash_forced.
10580         More in dwarf2out.c, from Jakub Jelinek <jakub@redhat.com>:
10581         (dw_long_long_const): Remove.
10582         (struct dw_val_struct): Change val_long_long type to rtx.
10583         (print_die, attr_checksum, same_dw_val_p, loc_descriptor): Adjust for
10584         val_long_long change to CONST_DOUBLE rtx from a long hi/lo pair.
10585         (output_die): Likewise.  Use HOST_BITS_PER_WIDE_INT size of each
10586         component instead of HOST_BITS_PER_LONG.
10587         (output_loc_operands): Likewise.  For const8* assert
10588         HOST_BITS_PER_WIDE_INT rather than HOST_BITS_PER_LONG is >= 64.
10589         (output_loc_operands_raw): For const8* assert HOST_BITS_PER_WIDE_INT
10590         rather than HOST_BITS_PER_LONG is >= 64.
10591         (add_AT_long_long): Remove val_hi and val_lo arguments, add
10592         val_const_double.
10593         (size_of_die): Use HOST_BITS_PER_WIDE_INT size multiplier instead of
10594         HOST_BITS_PER_LONG for dw_val_class_long_long.
10595         (add_const_value_attribute): Adjust add_AT_long_long caller.  Don't
10596         handle TLS SYMBOL_REFs.  If CONST wraps a constant, tail recurse.
10597         (dwarf_stack_op_name): Handle DW_OP_implicit_value and
10598         DW_OP_stack_value.
10599         (size_of_loc_descr, output_loc_operands, output_loc_operands_raw):
10600         Handle DW_OP_implicit_value.
10601         (extract_int): Move prototype earlier.
10602         (mem_loc_descriptor): For SUBREG punt if inner
10603         mode size is wider than DWARF2_ADDR_SIZE.  Handle SIGN_EXTEND
10604         and ZERO_EXTEND by DW_OP_shl and DW_OP_shr{a,}.  Handle
10605         EQ, NE, GT, GE, LT, LE, GTU, GEU, LTU, LEU, SMIN, SMAX, UMIN,
10606         UMAX, SIGN_EXTRACT, ZERO_EXTRACT.
10607         (loc_descriptor): Compare mode size with DWARF2_ADDR_SIZE
10608         instead of Pmode size.
10609         (loc_descriptor): Add MODE argument.  Handle CONST_INT, CONST_DOUBLE,
10610         CONST_VECTOR, CONST, LABEL_REF and SYMBOL_REF if mode != VOIDmode,
10611         attempt to handle other expressions.  Don't handle TLS SYMBOL_REFs.
10612         (concat_loc_descriptor, concatn_loc_descriptor,
10613         loc_descriptor_from_tree_1): Adjust loc_descriptor callers.
10614         (add_location_or_const_value_attribute): Likewise.  For single
10615         location loc_lists attempt to use add_const_value_attribute
10616         for constant decls.  Add DW_AT_const_value even if
10617         NOTE_VAR_LOCATION is VAR_LOCATION with CONSTANT_P or CONST_STRING
10618         in its expression.
10619         * cfgbuild.c (inside_basic_block_p): Handle debug insns.
10620         (control_flow_insn_p): Likewise.
10621         * tree-parloops.c (eliminate_local_variables_stmt): Handle debug stmt.
10622         (separate_decls_in_region_debug_bind): New.
10623         (separate_decls_in_region): Process debug bind stmts afterwards.
10624         * recog.c (verify_changes): Handle debug insns.
10625         (extract_insn): Likewise.
10626         (peephole2_optimize): Skip debug insns.
10627         * dse.c (scan_insn): Skip debug insns.
10628         * sel-sched-ir.c (return_nop_to_pool): Take full_tidying argument.
10629         Pass it on.
10630         (setup_id_for_insn): Handle debug insns.
10631         (maybe_tidy_empty_bb): Adjust whitespace.
10632         (tidy_control_flow): Skip debug insns.
10633         (sel_remove_insn): Adjust for debug insns.
10634         (sel_estimate_number_of_insns): Skip debug insns.
10635         (create_insn_rtx_from_pattern): Handle debug insns.
10636         (create_copy_of_insn_rtx): Likewise.
10637         * sel-sched-.h (sel_bb_end): Declare.
10638         (sel_bb_empty_or_nop_p): New.
10639         (get_all_loop_exits): Use it.
10640         (_eligible_successor_edge_p): Likewise.
10641         (return_nop_to_pool): Adjust.
10642         * tree-eh.c (tre_empty_eh_handler_p): Skip debug stmts.
10643         * ira-lives.c (process_bb_node_lives): Skip debug insns.
10644         * gimple-pretty-print.c (dump_gimple_debug): New.
10645         (dump_gimple_stmt): Use it.
10646         (dump_bb_header): Skip gimple debug stmts.
10647         * regmove.c (optimize_reg_copy_1): Discount debug insns.
10648         (fixup_match_2): Likewise.
10649         (regmove_backward_pass): Likewise.  Simplify combined
10650         replacement.  Handle debug insns.
10651         * function.c (instantiate_virtual_regs): Handle debug insns.
10652         * function.h (struct emit_status): Add x_cur_debug_insn_uid.
10653         * print-rtl.h: Include cselib.h.
10654         (print_rtx): Print VALUEs.  Split out and recurse for VAR_LOCATIONs.
10655         * df.h (df_inns_rescan_debug_internal): Declare.
10656         * gcse.c (alloc_hash_table): Estimate n_insns.
10657         (cprop_insn): Don't regard debug insns as changes.
10658         (bypass_conditional_jumps): Skip debug insns.
10659         (one_pre_gcse_pass): Adjust.
10660         (one_code_hoisting_pass): Likewise.
10661         (compute_ld_motion_mems): Skip debug insns.
10662         (one_cprop_pass): Adjust.
10663         * tree-if-conv.c (tree_if_convert_stmt): Reset debug stmts.
10664         (if_convertible_stmt_p): Handle debug stmts.
10665         * init-regs.c (initialize_uninitialized_regs): Skip debug insns.
10666         * tree-vect-loop.c (vect_is_simple_reduction): Skip debug stmts.
10667         * ira-build.c (create_bb_allocnos): Skip debug insns.
10668         * tree-flow-inline.h (has_zero_uses): Discount debug stmts.
10669         (has_single_use): Likewise.
10670         (single_imm_use): Likewise.
10671         (num_imm_uses): Likewise.
10672         * tree-ssa-phiopt.c (empty_block_p): Skip debug stmts.
10673         * tree-ssa-coalesce.c (build_ssa_conflict_graph): Skip debug stmts.
10674         (create_outofssa_var_map): Likewise.
10675         * lower-subreg.c (adjust_decomposed_uses): New.
10676         (resolve_debug): New.
10677         (decompose_multiword_subregs): Use it.
10678         * tree-dfa.c (find_referenced_vars): Skip debug stmts.
10679         * emit-rtl.c: Include params.h.
10680         (cur_debug_insn_uid): Define.
10681         (set_new_first_and_last_insn): Set cur_debug_insn_uid too.
10682         (copy_rtx_if_shared_1): Handle debug insns.
10683         (reset_used_flags): Likewise.
10684         (set_used_flags): LIkewise.
10685         (get_max_insn_count): New.
10686         (next_nondebug_insn): New.
10687         (prev_nondebug_insn): New.
10688         (make_debug_insn_raw): New.
10689         (emit_insn_before_noloc): Handle debug insns.
10690         (emit_jump_insn_before_noloc): Likewise.
10691         (emit_call_insn_before_noloc): Likewise.
10692         (emit_debug_insn_before_noloc): New.
10693         (emit_insn_after_noloc): Handle debug insns.
10694         (emit_jump_insn_after_noloc): Likewise.
10695         (emit_call_insn_after_noloc): Likewise.
10696         (emit_debug_insn_after_noloc): Likewise.
10697         (emit_insn_after): Take loc from earlier non-debug insn.
10698         (emit_jump_insn_after): Likewise.
10699         (emit_call_insn_after): Likewise.
10700         (emit_debug_insn_after_setloc): New.
10701         (emit_debug_insn_after): New.
10702         (emit_insn_before): Take loc from later non-debug insn.
10703         (emit_jump_insn_before): Likewise.
10704         (emit_call_insn_before): Likewise.
10705         (emit_debug_insn_before_setloc): New.
10706         (emit_debug_insn_before): New.
10707         (emit_insn): Handle debug insns.
10708         (emit_debug_insn): New.
10709         (emit_jump_insn): Handle debug insns.
10710         (emit_call_insn): Likewise.
10711         (emit): Likewise.
10712         (init_emit): Take min-nondebug-insn-uid into account.
10713         Initialize cur_debug_insn_uid.
10714         (emit_copy_of_insn_after): Handle debug insns.
10715         * cfgexpand.c (gimple_assign_rhs_to_tree): Do not overwrite
10716         location of single rhs in place.
10717         (maybe_dump_rtl_for_gimple_stmt): Dump lineno.
10718         (floor_sdiv_adjust): New.
10719         (cell_sdiv_adjust): New.
10720         (cell_udiv_adjust): New.
10721         (round_sdiv_adjust): New.
10722         (round_udiv_adjust): New.
10723         (wrap_constant): Moved from cselib.
10724         (unwrap_constant): New.
10725         (expand_debug_expr): New.
10726         (expand_debug_locations): New.
10727         (expand_gimple_basic_block): Drop hiding redeclaration.  Expand
10728         debug bind stmts.
10729         (gimple_expand_cfg): Expand debug locations.
10730         * cselib.c: Include tree-pass.h.
10731         (struct expand_value_data): New.
10732         (cselib_record_sets_hook): New.
10733         (PRESERVED_VALUE_P, LONG_TERM_PRESERVED_VALUE_P): New.
10734         (cselib_clear_table): Move, and implemnet in terms of...
10735         (cselib_reset_table_with_next_value): ... this.
10736         (cselib_get_next_unknown_value): New.
10737         (discard_useless_locs): Don't discard preserved values.
10738         (cselib_preserve_value): New.
10739         (cselib_preserved_value_p): New.
10740         (cselib_preserve_definitely): New.
10741         (cselib_clear_preserve): New.
10742         (cselib_preserve_only_values): New.
10743         (new_cselib_val): Take rtx argument.  Dump it in details.
10744         (cselib_lookup_mem): Adjust.
10745         (expand_loc): Take regs_active in struct.  Adjust.  Silence
10746         dumps unless details are requested.
10747         (cselib_expand_value_rtx_cb): New.
10748         (cselib_expand_value_rtx): Rename and reimplment in terms of...
10749         (cselib_expand_value_rtx_1): ... this.  Adjust.  Silence dumps
10750         without details.  Copy more subregs.  Try to resolve values
10751         using a callback.  Wrap constants.
10752         (cselib_subst_to_values): Adjust.
10753         (cselib_log_lookup): New.
10754         (cselib_lookup): Call it.
10755         (cselib_invalidate_regno): Don't count preserved values as useless.
10756         (cselib_invalidate_mem): Likewise.
10757         (cselib_record_set): Likewise.
10758         (struct set): Renamed to cselib_set, moved to cselib.h.
10759         (cselib_record_sets): Adjust.  Call hook.
10760         (cselib_process_insn): Reset table when it would be cleared.
10761         (dump_cselib_val): New.
10762         (dump_cselib_table): New.
10763         * tree-cfgcleanup.c (tree_forwarded_block_p): Skip debug stmts.
10764         (remove_forwarder_block): Support moving debug stmts.
10765         * cselib.h (cselib_record_sets_hook): Declare.
10766         (cselib_expand_callback): New type.
10767         (cselib_expand_value_rtx_cb): Declare.
10768         (cselib_reset_table_with_next_value): Declare.
10769         (cselib_get_next_unknown_value): Declare.
10770         (cselib_preserve_value): Declare.
10771         (cselib_preserved_value_p): Declare.
10772         (cselib_preserve_only_values): Declare.
10773         (dump_cselib_table): Declare.
10774         * cfgcleanup.c (flow_find_cross_jump): Skip debug insns.
10775         (try_crossjump_to_edge): Likewise.
10776         (delete_unreachable_blocks): Remove dominant GIMPLE blocks after
10777         dominated blocks when debug stmts are present.
10778         * simplify-rtx.c (delegitimize_mem_from_attrs): New.
10779         * tree-ssa-live.c (remove_unused_locals): Skip debug stmts.
10780         (set_var_live_on_entry): Likewise.
10781         * loop-invariant.c (find_invariants_bb): Skip debug insns.
10782         * cfglayout.c (curr_location, last_location): Make static.
10783         (set_curr_insn_source_location): Don't avoid bouncing.
10784         (get_curr_insn_source_location): New.
10785         (get_curr_insn_block): New.
10786         (duplicate_insn_chain): Handle debug insns.
10787         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Propagate
10788         into debug stmts.
10789         * common.opt (fcompare-debug): Move to sort order.
10790         (fdump-unnumbered-links): Likewise.
10791         (fvar-tracking-assignments): New.
10792         (fvar-tracking-assignments-toggle): New.
10793         * tree-ssa-dce.c (mark_stmt_necessary): Don't mark blocks
10794         because of debug stmts.
10795         (mark_stmt_if_obviously_necessary): Mark debug stmts.
10796         (eliminate_unnecessary_stmts): Walk dominated blocks before
10797         dominators.
10798         * tree-ssa-ter.c (find_replaceable_in_bb): Skip debug stmts.
10799         * ira.c (memref_used_between_p): Skip debug insns.
10800         (update_equiv_regs): Likewise.
10801         * sched-deps.c (sd_lists_size): Accept empty list.
10802         (sd_init_insn): Mark debug insns.
10803         (sd_finish_insn): Unmark them.
10804         (sd_add_dep): Reject non-debug deps on debug insns.
10805         (fixup_sched_groups): Give debug insns group treatment.
10806         Skip debug insns.
10807         (sched_analyze_reg): Don't mark debug insns for sched before call.
10808         (sched_analyze_2): Handle debug insns.
10809         (sched_analyze_insn): Compute next non-debug insn.  Handle debug
10810         insns.
10811         (deps_analyze_insn): Handle debug insns.
10812         (deps_start_bb): Skip debug insns.
10813         (init_deps): Initialize last_debug_insn.
10814         * tree-ssa.c (target_for_debug_bind): New.
10815         (find_released_ssa_name): New.
10816         (propagate_var_def_into_debug_stmts): New.
10817         (propagate_defs_into_debug_stmts): New.
10818         (verify_ssa): Skip debug bind stmts without values.
10819         (warn_uninialized_vars): Skip debug stmts.
10820         * target-def.h (TARGET_DELEGITIMIZE_ADDRESS): Set default.
10821         * rtl.c (rtx_equal_p_cb): Handle VALUEs.
10822         (rtx_equal_p): Likewise.
10823         * ira-costs.c (scan_one_insn): Skip debug insns.
10824         (process_bb_node_for_hard_reg_moves): Likewise.
10825         * rtl.h (DEBUG_INSN_P): New.
10826         (NONDEBUG_INSN_P): New.
10827         (MAY_HAVE_DEBUG_INSNS): New.
10828         (INSN_P): Accept debug insns.
10829         (RTX_FRAME_RELATED_P): Likewise.
10830         (INSN_DELETED_P): Likewise
10831         (PAT_VAR_LOCATION_DECL): New.
10832         (PAT_VAR_LOCATION_LOC): New.
10833         (PAT_VAR_OCATION_STATUS): New.
10834         (NOTE_VAR_LOCATION_DECL): Reimplement.
10835         (NOTE_VAR_LOCATION_LOC): Likewise.
10836         (NOTE_VAR_LOCATION_STATUS): Likewise.
10837         (INSN_VAR_LOCATION): New.
10838         (INSN_VAR_LOCATION_DECL): New.
10839         (INSN_VAR_LOCATION_LOC): New.
10840         (INSN_VAR_LOCATION_STATUS): New.
10841         (gen_rtx_UNKNOWN_VAR_LOC): New.
10842         (VAR_LOC_UNKNOWN_P): New.
10843         (NOTE_DURING_CALL_P): New.
10844         (SCHED_GROUP_P): Accept debug insns.
10845         (emit_debug_insn_before): Declare.
10846         (emit_debug_insn_before_noloc): Declare.
10847         (emit_debug_insn_beore_setloc): Declare.
10848         (emit_debug_insn_after): Declare.
10849         (emit_debug_insn_after_noloc): Declare.
10850         (emit_debug_insn_after_setloc): Declare.
10851         (emit_debug_insn): Declare.
10852         (make_debug_insn_raw): Declare.
10853         (prev_nondebug_insn): Declare.
10854         (next_nondebug_insn): Declare.
10855         (delegitimize_mem_from_attrs): Declare.
10856         (get_max_insn_count): Declare.
10857         (wrap_constant): Declare.
10858         (unwrap_constant): Declare.
10859         (get_curr_insn_source_location): Declare.
10860         (get_curr_insn_block): Declare.
10861         * tree-inline.c (insert_debug_decl_map): New.
10862         (processing_debug_stmt): New.
10863         (remap_decl): Don't create new mappings in debug stmts.
10864         (remap_gimple_op_r): Don't add references in debug stmts.
10865         (copy_tree_body_r): Likewise.
10866         (remap_gimple_stmt): Handle debug bind stmts.
10867         (copy_bb): Skip debug stmts.
10868         (copy_edges_for_bb): Likewise.
10869         (copy_debug_stmt): New.
10870         (copy_debug_stmts): New.
10871         (copy_body): Copy debug stmts at the end.
10872         (insert_init_debug_bind): New.
10873         (insert_init_stmt): Take id.  Skip and emit debug stmts.
10874         (setup_one_parameter): Remap variable earlier, register debug mapping.
10875         (estimate_num_insns): Skip debug stmts.
10876         (expand_call_inline): Preserve debug_map.
10877         (optimize_inline_calls): Check for no debug_stmts left-overs.
10878         (unsave_expr_now): Preserve debug_map.
10879         (copy_gimple_seq_and_replace_locals): Likewise.
10880         (tree_function_versioning): Check for no debug_stmts left-overs.
10881         Init and destroy debug_map as needed.  Split edges unconditionally.
10882         (build_duplicate_type): Init and destroy debug_map as needed.
10883         * tree-inline.h: Include gimple.h instead of pointer-set.h.
10884         (struct copy_body_data): Add debug_stmts and debug_map.
10885         * sched-int.h (struct ready_list): Add n_debug.
10886         (struct deps): Add last_debug_insn.
10887         (DEBUG_INSN_SCHED_P): New.
10888         (BOUNDARY_DEBUG_INSN_P): New.
10889         (SCHEDULE_DEBUG_INSN_P): New.
10890         (sd_iterator_cond): Accept empty list.
10891         * combine.c (create_log_links): Skip debug insns.
10892         (combine_instructions): Likewise.
10893         (cleanup_auto_inc_dec): New.  From Jakub Jelinek: Make sure the
10894         return value is always unshared.
10895         (struct rtx_subst_pair): New.
10896         (auto_adjust_pair): New.
10897         (propagate_for_debug_subst): New.
10898         (propagate_for_debug): New.
10899         (try_combine): Skip debug insns.  Propagate removed defs into
10900         debug insns.
10901         (next_nonnote_nondebug_insn): New.
10902         (distribute_notes): Use it.  Skip debug insns.
10903         (distribute_links): Skip debug insns.
10904         * tree-outof-ssa.c (set_location_for_edge): Likewise.
10905         * resource.c (mark_target_live_regs): Likewise.
10906         * var-tracking.c: Include cselib.h and target.h.
10907         (enum micro_operation_type): Add MO_VAL_USE, MO_VAL_LOC, and
10908         MO_VAL_SET.
10909         (micro_operation_type_name): New.
10910         (enum emit_note_where): Add EMIT_NOTE_AFTER_CALL_INSN.
10911         (struct micro_operation_def): Update comments.
10912         (decl_or_value): New type.  Use instead of decls.
10913         (struct emit_note_data_def): Add vars.
10914         (struct attrs_def): Use decl_or_value.
10915         (struct variable_tracking_info_def): Add permp, flooded.
10916         (struct location_chain_def): Update comment.
10917         (struct variable_part_def): Use decl_or_value.
10918         (struct variable_def): Make var_part a variable length array.
10919         (valvar_pool): New.
10920         (scratch_regs): New.
10921         (cselib_hook_called): New.
10922         (dv_is_decl_p): New.
10923         (dv_is_value_p): New.
10924         (dv_as_decl): New.
10925         (dv_as_value): New.
10926         (dv_as_opaque): New.
10927         (dv_onepart_p): New.
10928         (dv_pool): New.
10929         (IS_DECL_CODE): New.
10930         (check_value_is_not_decl): New.
10931         (dv_from_decl): New.
10932         (dv_from_value): New.
10933         (dv_htab_hash): New.
10934         (variable_htab_hash): Use it.
10935         (variable_htab_eq): Support values.
10936         (variable_htab_free): Free from the right pool.
10937         (attrs_list_member, attrs_list_insert): Use decl_or_value.
10938         (attrs_list_union): Adjust.
10939         (attrs_list_mpdv_union): New.
10940         (tie_break_pointers): New.
10941         (canon_value_cmp): New.
10942         (unshare_variable): Return possibly-modified slot.
10943         (vars_copy_1): Adjust.
10944         (var_reg_decl_set): Adjust.  Split out of...
10945         (var_reg_set): ... this.
10946         (get_init_value): Adjust.
10947         (var_reg_delete_and_set): Adjust.
10948         (var_reg_delete): Adjust.
10949         (var_regno_delete): Adjust.
10950         (var_mem_decl_set): Split out of...
10951         (var_mem_set): ... this.
10952         (var_mem_delete_and_set): Adjust.
10953         (var_mem_delete): Adjust.
10954         (val_store): New.
10955         (val_reset): New.
10956         (val_resolve): New.
10957         (variable_union): Adjust.  Speed up merge of 1-part vars.
10958         (variable_canonicalize): Use unshared slot.
10959         (VALUED_RECURSED_INTO): New.
10960         (find_loc_in_1pdv): New.
10961         (struct dfset_merge): New.
10962         (insert_into_intersection): New.
10963         (intersect_loc_chains): New.
10964         (loc_cmp): New.
10965         (canonicalize_loc_order_check): New.
10966         (canonicalize_values_mark): New.
10967         (canonicalize_values_star): New.
10968         (variable_merge_over_cur): New.
10969         (variable_merge_over_src): New.
10970         (dataflow_set_merge): New.
10971         (dataflow_set_equiv_regs): New.
10972         (remove_duplicate_values): New.
10973         (struct dfset_post_merge): New.
10974         (variable_post_merge_new_vals): New.
10975         (variable_post_merge_perm_vals): New.
10976         (dataflow_post_merge_adjust): New.
10977         (find_mem_expr_in_1pdv): New.
10978         (dataflow_set_preserve_mem_locs): New.
10979         (dataflow_set_remove_mem_locs): New.
10980         (dataflow_set_clear_at_call): New.
10981         (onepart_variable_different_p): New.
10982         (variable_different_p): Use it.
10983         (dataflow_set_different_1): Adjust.  Make detailed dump more verbose.
10984         (track_expr_p): Add need_rtl parameter.  Don't generate rtl
10985         if not needed.
10986         (track_loc_p): Pass it true.
10987         (struct count_use_info): New.
10988         (find_use_val): New.
10989         (replace_expr_with_values): New.
10990         (log_op_type): New.
10991         (use_type): New, partially split out of...
10992         (count_uses): ... this.  Count new micro-ops.
10993         (count_uses_1): Adjust.
10994         (count_stores): Adjust.
10995         (count_with_sets): New.
10996         (VAL_NEEDS_RESOLUTION): New.
10997         (VAL_HOLDS_TRACK_EXPR): New.
10998         (VAL_EXPR_IS_COPIED): New.
10999         (VAL_EXPR_IS_CLOBBERED): New.
11000         (add_uses): Adjust.  Generate new micro-ops.
11001         (add_uses_1): Adjust.
11002         (add_stores): Generate new micro-ops.
11003         (add_with_sets): New.
11004         (find_src_status): Adjust.
11005         (find_src_set_src): Adjust.
11006         (compute_bb_dataflow): Use dataflow_set_clear_at_call.
11007         Handle new micro-ops.  Canonicalize value equivalances.
11008         (vt_find_locations): Compute total size of hash tables for
11009         dumping.  Perform merge for var-tracking-assignments.  Don't
11010         disregard single-block loops.
11011         (dump_attrs_list): Handle decl_or_value.
11012         (dump_variable): Take variable.  Deal with decl_or_value.
11013         (dump_variable_slot): New.
11014         (dump_vars): Use it.
11015         (dump_dataflow_sets): Adjust.
11016         (set_slot_part): New, extended to support one-part variables
11017         after splitting out of...
11018         (set_variable_part): ... this.
11019         (clobber_slot_part): New, split out of...
11020         (clobber_variable_part): ... this.
11021         (delete_slot_part): New, split out of...
11022         (delete_variable_part): .... this.
11023         (check_wrap_constant): New.
11024         (vt_expand_loc_callback): New.
11025         (vt_expand_loc): New.
11026         (emit_note_insn_var_location): Adjust.  Handle values.  Handle
11027         EMIT_NOTE_AFTER_CALL_INSN.
11028         (emit_notes_for_differences_1): Adjust.  Handle values.
11029         (emit_notes_for_differences_2): Likewise.
11030         (emit_notes_for_differences): Adjust.
11031         (emit_notes_in_bb): Take pointer to set.  Emit AFTER_CALL_INSN notes.
11032         Adjust.  Handle new micro-ops.
11033         (vt_add_function_parameters): Adjust.  Create and bind values.
11034         (vt_initialize): Adjust.  Initialize scratch_regs and
11035         valvar_pool, flooded and perm..  Initialize and use cselib.  Log
11036         operations.  Move some code to count_with_sets and add_with_sets.
11037         (delete_debug_insns): New.
11038         (vt_debug_insns_local): New.
11039         (vt_finalize): Release permp, valvar_pool, scratch_regs.  Finish
11040         cselib.
11041         (var_tracking_main): If var-tracking-assignments is enabled
11042         but var-tracking isn't, delete debug insns and leave.  Likewise
11043         if we exceed limits or fail the stack adjustments tests, and
11044         after all var-tracking processing.
11045         More in var-tracking, from Jakub Jelinek <jakub@redhat.com>:
11046         (dataflow_set): Add traversed_vars.
11047         (value_chain, const_value_chain): New typedefs.
11048         (value_chain_pool, value_chains): New variables.
11049         (value_chain_htab_hash, value_chain_htab_eq, add_value_chain,
11050         add_value_chains, add_cselib_value_chains, remove_value_chain,
11051         remove_value_chains, remove_cselib_value_chains): New functions.
11052         (shared_hash_find_slot_unshare_1, shared_hash_find_slot_1,
11053         shared_hash_find_slot_noinsert_1, shared_hash_find_1): New
11054         static inlines.
11055         (shared_hash_find_slot_unshare, shared_hash_find_slot,
11056         shared_hash_find_slot_noinsert, shared_hash_find): Update.
11057         (dst_can_be_shared): New variable.
11058         (unshare_variable): Unshare set->vars if shared, use shared_hash_*.
11059         Clear dst_can_be_shared.  If set->traversed_vars is non-NULL and
11060         different from set->vars, look up slot again instead of using the
11061         passed in slot.
11062         (dataflow_set_init): Initialize traversed_vars.
11063         (variable_union): Use shared_hash_*.  Use initially NO_INSERT
11064         lookup if set->vars is shared.  Don't keep slot cleared before
11065         calling unshare_variable.  Unshare set->vars if needed.  Adjust
11066         unshare_variable callers.  Clear dst_can_be_shared if needed.
11067         Even ->refcount == 1 vars must be unshared if set->vars is shared
11068         and var needs to be modified.
11069         (dataflow_set_union): Set traversed_vars during canonicalization.
11070         (VALUE_CHANGED, DECL_CHANGED): Define.
11071         (set_dv_changed, dv_changed_p): New static inlines.
11072         (track_expr_p): Clear DECL_CHANGED.
11073         (dump_dataflow_sets): Set it.
11074         (variable_was_changed): Call set_dv_changed.
11075         (emit_note_insn_var_location): Likewise.
11076         (changed_variables_stack): New variable.
11077         (check_changed_vars_1, check_changed_vars_2): New functions.
11078         (emit_notes_for_changes): Do nothing if changed_variables is
11079         empty.  Traverse changed_variables with check_changed_vars_1,
11080         call check_changed_vars_2 on each changed_variables_stack entry.
11081         (emit_notes_in_bb): Add SET argument.  Just clear it at the
11082         beginning, use it instead of local &set, don't destroy it at the end.
11083         (vt_emit_notes): Call dataflow_set_clear early on all
11084         VTI(bb)->out sets, never use them, instead use emit_notes_in_bb
11085         computed set, dataflow_set_clear also VTI(bb)->in when we are
11086         done with the basic block.  Initialize changed_variables_stack,
11087         free it afterwards.  If ENABLE_CHECKING verify that after noting
11088         differences to an empty set value_chains hash table is empty.
11089         (vt_initialize): Initialize value_chains and value_chain_pool.
11090         (vt_finalize): Delete value_chains htab, free value_chain_pool.
11091         (variable_tracking_main): Call dump_dataflow_sets before calling
11092         vt_emit_notes, not after it.
11093         * tree-flow.h (propagate_defs_into_debug_stmts): Declare.
11094         (propagate_var_def_into_debug_stmts): Declare.
11095         * df-problems.c (df_lr_bb_local_compute): Skip debug insns.
11096         (df_set_note): Reject debug insns.
11097         (df_whole_mw_reg_dead_p): Take added_notes_p argument.  Don't
11098         add notes to debug insns.
11099         (df_note_bb_compute): Adjust.  Likewise.
11100         (df_simulate_uses): Skip debug insns.
11101         (df_simulate_initialize_backwards): Likewise.
11102         * reg-stack.c (subst_stack_regs_in_debug_insn): New.
11103         (subst_stack_regs_pat): Reject debug insns.
11104         (convert_regs_1): Handle debug insns.
11105         * Makefile.in (TREE_INLINE_H): Take pointer-set.h from GIMPLE_H.
11106         (print-rtl.o): Depend on cselib.h.
11107         (cselib.o): Depend on TREE_PASS_H.
11108         (var-tracking.o): Depend on cselib.h and TARGET_H.
11109         * sched-rgn.c (rgn_estimate_number_of_insns): Discount debug insns.
11110         (init_ready_list): Skip boundary debug insns.
11111         (add_branch_dependences): Skip debug insns.
11112         (free_block_dependencies): Check for blocks with only debug insns.
11113         (compute_priorities): Likewise.
11114         * gimple.c (gss_for_code): Handle GIMPLE_DEBUG.
11115         (gimple_build_with_ops_stat): Take subcode as unsigned.  Adjust
11116         all callers.
11117         (gimple_build_debug_bind_stat): New.
11118         (empty_body_p): Skip debug stmts.
11119         (gimple_has_side_effects): Likewise.
11120         (gimple_rhs_has_side_effects): Likewise.
11121         * gimple.h (enum gimple_debug_subcode, GIMPLE_DEBUG_BIND): New.
11122         (gimple_build_debug_bind_stat): Declare.
11123         (gimple_build_debug_bind): Define.
11124         (is_gimple_debug): New.
11125         (gimple_debug_bind_p): New.
11126         (gimple_debug_bind_get_var): New.
11127         (gimple_debug_bind_get_value): New.
11128         (gimple_debug_bind_get_value_ptr): New.
11129         (gimple_debug_bind_set_var): New.
11130         (gimple_debug_bind_set_value): New.
11131         (GIMPLE_DEBUG_BIND_NOVALUE): New internal temporary macro.
11132         (gimple_debug_bind_reset_value): New.
11133         (gimple_debug_bind_has_value_p): New.
11134         (gsi_next_nondebug): New.
11135         (gsi_prev_nondebug): New.
11136         (gsi_start_nondebug_bb): New.
11137         (gsi_last_nondebug_bb): New.
11138         * sched-vis.c (print_pattern): Handle VAR_LOCATION.
11139         (print_insn): Handle DEBUG_INSN.
11140         * tree-cfg.c (remove_bb): Walk stmts backwards.  Let loc
11141         of first insn prevail.
11142         (first_stmt): Skip debug stmts.
11143         (first_non_label_stmt): Likewise.
11144         (last_stmt): Likewise.
11145         (has_zero_uses_1): New.
11146         (single_imm_use_1): New.
11147         (verify_gimple_debug): New.
11148         (verify_types_in_gimple_stmt): Handle debug stmts.
11149         (verify_stmt): Likewise.
11150         (debug_loop_num): Skip debug stmts.
11151         (remove_edge_and_dominated_blocks): Remove dominators last.
11152         * tree-ssa-reasssoc.c (rewrite_expr_tree): Propagate into debug stmts.
11153         (linearize_expr): Likewise.
11154         * config/i386/i386.c (ix86_delegitimize_address): Call
11155         default implementation.
11156         * config/ia64/ia64.c (ia64_safe_itanium_class): Handle debug insns.
11157         (group_barrier_needed): Skip debug insns.
11158         (emit_insn_group_barriers): Likewise.
11159         (emit_all_insn_group_barriers): Likewise.
11160         (ia64_variable_issue): Handle debug insns.
11161         (ia64_dfa_new_cycle): Likewise.
11162         (final_emit_insn_group_barriers): Skip debug insns.
11163         (ia64_dwarf2out_def_steady_cfa): Take frame argument.  Don't
11164         def cfa without frame.
11165         (process_set): Likewise.
11166         (process_for_unwind_directive): Pass frame on.
11167         * config/rs6000/rs6000.c (TARGET_DELEGITIMIZE_ADDRESS): Define.
11168         (rs6000_delegitimize_address): New.
11169         (rs6000_debug_adjust_cost): Handle debug insns.
11170         (is_microcoded_insn): Likewise.
11171         (is_cracked_insn): Likewise.
11172         (is_nonpipeline_insn): Likewise.
11173         (insn_must_be_first_in_group): Likewise.
11174         (insn_must_be_last_in_group): Likewise.
11175         (force_new_group): Likewise.
11176         * cfgrtl.c (rtl_split_block): Emit INSN_DELETED note if block
11177         contains only debug insns.
11178         (rtl_merge_blocks): Skip debug insns.
11179         (purge_dead_edges): Likewise.
11180         (rtl_block_ends_with_call_p): Skip debug insns.
11181         * dce.c (deletable_insn_p): Handle VAR_LOCATION.
11182         (mark_reg_dependencies): Skip debug insns.
11183         * params.def (PARAM_MIN_NONDEBUG_INSN_UID): New.
11184         * tree-ssanames.c (release_ssa_name): Propagate def into debug stmts.
11185         * tree-ssa-threadedge.c
11186         (record_temporary_equivalences_from_stmts): Skip debug stmts.
11187         * regcprop.c (replace_oldest_value_addr): Skip debug insns.
11188         (replace_oldest_value_mem): Use ALL_REGS for debug insns.
11189         (copyprop_hardreg_forward_1): Handle debug insns.
11190         * reload1.c (reload): Skip debug insns.  Replace unassigned
11191         pseudos in debug insns with their equivalences.
11192         (eliminate_regs_in_insn): Skip debug insns.
11193         (emit_input_reload_insns): Skip debug insns at first, adjust
11194         them later.
11195         * tree-ssa-operands.c (add_virtual_operand): Reject debug stmts.
11196         (get_indirect_ref_operands): Pass opf_no_vops on.
11197         (get_expr_operands): Likewise.  Skip debug stmts.
11198         (parse_ssa_operands): Scan debug insns with opf_no_vops.
11199
11200 2009-09-01  Richard Henderson  <rth@redhat.com>
11201
11202         * tree-ssa-ccp.c (ccp_initialize): Make sure to simulate
11203         stmt_ends_pp_p statements at least once.
11204         * tree-vrp.c (vrp_initialize): Likewise.
11205         (vrp_visit_stmt): Be prepared for non-interesting stmts.
11206
11207 2009-09-01  Dodji Seketeli  <dodji@redhat.com>
11208
11209         PR bootstrap/41205
11210         Fix AIX bootstrap after PR debug/30161
11211         * dwarf2out.c (make_ith_pack_parameter_name): Don't used strnlen
11212         that is a GNU extension.
11213         (tmpl_value_parm_die_table): Move the definition of this global
11214         outside #ifdef DWARF2_DEBUGGING_INFO region.
11215
11216 2009-09-01  Richard Guenther  <rguenther@suse.de>
11217
11218         * tree.c (tree_expr_size): New function.
11219         * tree.h (tree_expr_size): Declare.
11220         * rtlanal.c (rtx_addr_can_trap_p_1): Adjust comment.
11221         * builtins.c (fold_builtin_memory_op): Use tree_expr_size.
11222         * langhooks.c (lhd_expr_size): Remove.
11223         * langhooks.h (struct lang_hooks): Remove expr_size.
11224         * explow.c (expr_size): Use tree_expr_size.
11225         (int_expr_size): Likewise.
11226         * langhooks-def.h (lhd_expr_size): Remove.
11227         (LANG_HOOKS_EXPR_SIZE): Likewise.
11228         (LANG_HOOKS_INITIALIZER): Adjust.
11229
11230 2009-09-01  Richard Guenther  <rguenther@suse.de>
11231
11232         * tree-flow.h (mark_addressable): Move declaration ...
11233         * tree.h (mark_addressable): ... here.
11234         * stmt.c (expand_asm_operands): Use mark_addressable, not
11235         lang_hooks.mark_addressable.
11236         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
11237         LANG_HOOKS_MARK_ADDRESSABLE.
11238         * langhooks.h (struct lang_hooks): Remove mark_addressable langhook.
11239         * c-objc-common.h (LANG_HOOKS_MARK_ADDRESSABLE): Remove.
11240
11241 2009-08-31  Chris Demetriou  <cgd@google.com>
11242
11243         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Never
11244         vectorize if not TARGET_SSE2.
11245
11246 2009-08-31  DJ Delorie  <dj@redhat.com>
11247
11248         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Exclude coprocessor
11249         registers if no coprocessor is enabled.
11250
11251 2009-08-31  Dodji Seketeli  <dodji@redhat.com>
11252
11253         PR debug/30161
11254         * cgraph.h (cgraph_get_node): Declare ...
11255         * cgraph.c (cgraph_get_node): ... new function.
11256         * dwarf2out.c (gen_generic_params_dies,
11257         generic_parameter_die, tree_add_const_value_attribute_for_decl,
11258         make_ith_pack_parameter_name,
11259         append_entry_to_tmpl_value_parm_die_table,
11260         gen_remaining_tmpl_value_param_die_attribute): New functions.
11261         (gen_subprogram_die): Generate debug info for template parameters
11262         if debug info level is higher than DINFO_LEVEL_TERSE.
11263         Use tree_add_const_value_attribute_for_decl instead of
11264         tree_add_const_value_attribute.
11265         (gen_const_die): Use tree_add_const_value_attribute_for_decl
11266         instead of tree_add_const_value_attribute.
11267         (gen_struct_or_union_type_die): Generate debug
11268         info for template parameters if debug info level is higher than
11269         DINFO_LEVEL_TERSE.
11270         (tree_add_const_value_attribute): Handle integral and pointer
11271         constants. Update comment.
11272         (dwarf_tag_name): Support DW_TAG_GNU_template_template_param.
11273         (dwarf_attr_name): Support DW_AT_GNU_template_name.
11274         (reference_to_unused): Fix thinko. Remove redundant predicates from
11275         tests.
11276         (tree_add_const_value_attribute): Make this work for constant
11277         expressions only.
11278         tree_add_const_value_attribute_for_decl is to be used for variable
11279         DECLs now.
11280         (add_location_or_const_value_attribute): Use
11281         tree_add_const_value_attribute_for_decl now.
11282         (dwarf2out_finish): Emit the DW_AT_const_value attribute of
11283         DW_TAG_template_value_param DIEs after function DIEs have been
11284         emitted.
11285         * langhooks.h (lang_hooks_for_types): Add
11286         get_argument_pack_elems.
11287         (lang_hooks_for_decls): Add generic_generic_parameter_decl_p.
11288         (lang_hooks): Added get_innermost_generic_parms,
11289         get_innermost_generic_args.
11290         * langhooks-def.h (LANG_HOOKS_GET_INNERMOST_GENERIC_PARMS,
11291         LANG_HOOKS_GET_INNERMOST_GENERIC_ARGS,
11292         LANG_HOOKS_GET_ARGUMENT_PACK_ELEMS,
11293         LANG_HOOKS_GENERIC_GENERIC_PARAMETER_DECL_P): New language hooks.
11294
11295 2009-08-31  DJ Delorie  <dj@redhat.com>
11296
11297         * config/mep/mep.c (machine_function): Add frame_locked flag.  Set
11298         it once we start generating the prologue or epilogue.
11299         (mep_call_saves_register): If the frame is locked, re-use
11300         cached values.
11301         (mep_assign_save_slots): New, broken out from mep_expand_prologue.
11302         (mep_expand_prologue): Call it.
11303         (mep_expand_epilogue): Likewise.
11304         (mep_start_function): Use the same logic as mep_expand_prologue.
11305         (mep_pass_by_reference): Make logic more readable.
11306         (mep_return_in_memory): Zero-sized objects are passed in memory.
11307         (mep_reorg_noframe): Make sure we have accurate REG_DEAD notes.
11308
11309 2009-08-31  Richard Guenther  <rguenther@suse.de>
11310
11311         * builtins.c (fold_builtin_memory_op): Use the alias oracle
11312         to query if the memory regions for memmove overlap.
11313         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
11314         asserts on pointers, instead deal with odd trees.
11315         (ptr_derefs_may_alias_p): Likewise.
11316         (refs_may_alias_p_1): Constructor bases also never alias.
11317
11318 2009-08-31  Gerald Pfeifer  <gerald@pfeifer.com>
11319
11320         * doc/install.texi (Final install): Adjust reference on where to
11321         order printed manuals.
11322
11323 2009-08-30  Olivier Hainque  <hainque@adacore.com>
11324
11325         * dwarf2out.c (switch_to_frame_table_section): Move
11326         definition prior to first use.
11327
11328 2009-08-30  Richard Guenther  <rguenther@suse.de>
11329
11330         PR tree-optimization/41186
11331         * tree-ssa-alias.c (ptr_deref_may_alias_ref_p): Remove.
11332         (ao_ref_init_from_ptr_and_size): New function.
11333         (ref_maybe_used_by_call_p_1): Be more precise tracking
11334         used ranges for builtin functions.
11335         (ref_maybe_used_by_call_p): Adjust.
11336         (call_may_clobber_ref_p_1): Be more precise tracking clobbered
11337         ranges for builtin functions.
11338         * tree-ssa-alias.h (ao_ref_init_from_ptr_and_size): Declare.
11339
11340 2009-08-30  Alan Modra  <amodra@bigpond.net.au>
11341
11342         PR target/41081
11343         * fwprop.c (get_reg_use_in): Delete.
11344         (free_load_extend): New function.
11345         (forward_propagate_subreg): Use it.
11346
11347 2009-08-29  Kaz Kojima  <kkojima@gcc.gnu.org>
11348
11349         * config.gcc (sh*-*-elf): Add superh stuff only for sh*-superh-elf.
11350
11351 2009-08-29  Kai Tietz<kai.tietz@onevision.com>
11352
11353         PR/41184
11354         * config/i386.c (ix86_expand_epilogue): Correct stack adjustment for
11355         padding.
11356
11357 2009-08-29  Douglas B Rupp  <rupp@gnat.com>
11358
11359         * crtstuff.c (__do_global_dtors_aux): Use atexit if no
11360         fini or fini_array section.
11361
11362 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
11363
11364         * graphite-dependences.c (graphite_legal_transform_bb): Call
11365         pbb_remove_duplicate_pdrs.
11366         * graphite-poly.c (can_collapse_pdr): Removed.
11367         (pdr_find_duplicate): Removed.
11368         (can_collapse_pdrs): New.
11369         (pbb_remove_duplicate_pdrs): New.
11370         (new_poly_dr): Do not look for duplicates.
11371         * graphite-poly.h (struct poly_bb): New field pdr_duplicates_removed.
11372         (PBB_PDR_DUPLICATES_REMOVED): New.
11373         (pbb_remove_duplicate_pdrs): Declared.
11374
11375 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
11376
11377         * graphite-interchange.c (pbb_interchange_profitable_p): Adjust
11378         the strides by multiplying by PDR_NB_REFS.
11379         * graphite-poly.c (can_collapse_pdr): New.
11380         (pdr_find_duplicate): New.
11381         (new_poly_dr): Call pdr_find_duplicate.  Collapse duplicate PDRs.
11382         Initialize PDR_NB_REFS.
11383         * graphite-poly.h (struct poly_dr): Add field nb_refs.
11384         (PDR_NB_REFS): New.
11385         (new_poly_dr): Number of subscripts is a graphite_dim_t.
11386
11387 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
11388
11389         PR middle-end/40965
11390         * graphite-poly.c (apply_poly_transforms): Remove legality test before
11391         any transform.
11392
11393 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
11394
11395         * graphite-dependences.c (pddr_original_scattering): Return NULL
11396         for read-read dependence relations.
11397         * graphite-poly.h (enum poly_dr_type): Fix comment.
11398         (pdr_read_p): New.
11399         (pdr_write_p): New.
11400         (pdr_may_write_p): New.
11401
11402 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
11403
11404         * graphite-poly.h (enum POLY_DR_TYPE): Renamed poly_dr_type.
11405         (struct poly_dr): Same.
11406         (new_poly_dr): Same.
11407         * graphite-poly.c (new_poly_dr): Same.
11408         * graphite-dependences.c (dot_deps): Disable call to system.
11409
11410 2009-08-28  Cary Coutant  <ccoutant@google.com>
11411
11412         PR debug/41063
11413         * dwarf2out.c (gen_type_die_with_usage): Use proper context for
11414         struct/union/enum types local to a function.
11415
11416 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
11417             Sebastian Pop  <sebastian.pop@amd.com>
11418
11419         * graphite-blocking.c (pbb_strip_mine_loop_depth): Renamed
11420         pbb_strip_mine_time_depth.  Changed the implementation so that
11421         transformation is expressed as a transformation on
11422         time (scatttering) dimensions.  Also, ensures that the 2d+1
11423         scheduling format is preserved.
11424         (pbb_strip_mine_profitable_p): Profitability is based on the
11425         iteration number of a given time (scattering) dimension,
11426         and not on a original loop depth dimension.
11427         (pbb_strip_mine): Call pbb_number_of_iterations_at_time.
11428         (pbb_do_strip_mine): Call psct_dynamic_dim.
11429         * graphite-poly.c (pbb_number_of_iterations_at_time): New.
11430         * graphite-poly.h (pbb_number_of_iterations_at_time): Declared.
11431         (pbb_nb_dynamic_scattering_transform): New.
11432         (psct_dynamic_dim): New.
11433
11434 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
11435
11436         * graphite-ppl.c (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
11437         * graphite-ppl.h (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
11438         * graphite-poly.c (pbb_number_of_iterations): Rename ppl_max_for_le.
11439         * graphite-interchange.c (build_linearized_memory_access): Same.
11440         (memory_stride_in_loop): Same.
11441
11442 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
11443
11444         * graphite-dependences.c (pddr_original_scattering): New.
11445         (graphite_legal_transform_dr): Call pddr_original_scattering.
11446         (dot_deps_1): New.
11447         (dot_deps): New.
11448         * graphite-dependences.h (dot_deps): Declared.
11449         * graphite-poly.c (new_poly_dr): Initialize PDR_ID.
11450         (print_pdr): Print PDR_ID.
11451         * graphite-poly.h (struct poly_dr): Add field id.
11452         (PDR_ID): New.
11453         (pbb_index): New.
11454         * graphite-scop-detection.c (dot_all_scops_1): Cleanup comment.
11455
11456 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
11457
11458         * graphite-dependences.c (graphite_carried_dependence_level_k): Do
11459         not delete the original dependence relation.
11460
11461 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
11462
11463         * graphite-dependences.c (new_poly_dr_pair): Renamed new_poly_ddr.
11464         (eq_poly_dr_pair_p): Renamed eq_poly_ddr_p.
11465         (hash_poly_dr_pair_p): Renamed hash_poly_ddr_p.
11466         (free_poly_ddr): New.
11467         (pddr_is_empty): New.
11468         (dependence_polyhedron_1): Now returns a poly_ddr_p.
11469         (dependence_polyhedron): Same.  Remove useless gcc_assert.
11470         Remove fprintfs.
11471         (graphite_legal_transform_dr): Call pddr_is_empty and free_poly_ddr.
11472         (graphite_carried_dependence_level_k): Call pddr_is_empty.
11473         * graphite-dependences.h (enum poly_dependence_kind): New.
11474         (poly_dr_pair): Renamed poly_ddr.  Added a field kind.
11475         (PDRP_SOURCE): Renamed PDDR_SOURCE.
11476         (PDRP_SINK): Renamed PDDR_SINK.
11477         (PDRP_DDP): Renamed PDDR_DDP.
11478         (PDDR_KIND): New.
11479         (free_poly_ddr): Declared.
11480         * graphite-poly.c (new_scop): Use the new hash function names.
11481         * graphite-poly.h (struct scop): Renamed field original_pdr_pairs
11482         into original_pddrs.
11483         (SCOP_ORIGINAL_PDR_PAIRS): Renamed SCOP_ORIGINAL_PDDRS.
11484
11485 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
11486
11487         * cfgloopmanip.c (create_empty_loop_on_edge): Generate upper
11488         bounds with LT_EXPR to make niter analysis more precise on code
11489         generated by Graphite.
11490
11491 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
11492
11493         * graphite-dependences.c (graphite_legal_transform_dr): Fix formatting.
11494         (graphite_legal_transform_bb): Same.
11495         (poly_drs_may_alias_p): Same.
11496
11497 2009-08-28  Richard Guenther  <rguenther@suse.de>
11498
11499         * tree.def: Remove note about obsolete TYPE_NONCOPIED_PARTS.
11500
11501 2009-08-28  Jan Beulich  <jbeulich@novell.com>
11502
11503         * config/i386/netware.c: Include langhooks.h.
11504         (i386_nlm_encode_section_info): Simplify.
11505         (netware_override_options): Delete.
11506         * config/i386/netware.h (netware_override_options): Delete
11507         declaration.
11508         (OVERRIDE_OPTIONS): Delete definition.
11509         (SUBTARGET_OVERRIDE_OPTIONS): Define.
11510         (ASM_COMMENT_START): Define.
11511         * config/i386/nwld.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Define.
11512
11513 2009-08-28  Jan Beulich  <jbeulich@novell.com>
11514
11515         * configure.ac: For in-tree ld, do a plain version check to
11516         determine whether comdat groups are supported.
11517         * configure: Regenerate.
11518
11519 2009-08-28  Olivier Hainque  <hainque@adacore.com>
11520
11521         * collect2.c (DO_COLLECT_EXPORT_LIST): New internal macro,
11522         always defined.  Reflect definition or absence of such for
11523         COLLECT_EXPORT_LIST.  Readability helper.
11524         (scanfilter): New enum, to help control what symbols
11525         are to be considered or ignored by scan_prog_file.
11526         (enum pass): Rename as "scanpass", moved together with scanfilter
11527         prior to scan_prog_file's prototype.
11528         (scan_prog_file): Accept and honor scanpass and scanfilter arguments.
11529         Group prototype with the scanpass/scanfilter definitions, factorize
11530         head comments for the several implementations at the prototype.
11531         (main): Reorganize the first pass link control to let AIX
11532         drag only the needed frame tables in executables.  Prevent
11533         frame tables collection during the scan aimed at static ctors.
11534         Pre-link and scan for frame tables later to compensate.
11535         * doc/tm.texi (ASM_OUTPUT_DWARF_TABLE_REF): New macro.
11536         A C statement to issue assembly directives that create a reference
11537         to the given DWARF table identifier label from the current function
11538         section.
11539         * dwarf2out.c (switch_to_eh_frame_section): Add a BACK argument
11540         to differentiate first time section entry.  Only emit a .data
11541         tables start identifier label the first time around.
11542         (switch_to_frame_table_section): New function.  Helper for
11543         output_call_frame_info to switch possibly BACK into the eh_frame
11544         or the debug_frame section depending on FOR_EH.
11545         (output_call_frame_info): Use helper to first enter the proper
11546         frame section.
11547         (output_fde): Use ASM_OUTPUT_DWARF_TABLE_REF when defined to
11548         emit a link to the frame table start label from each function
11549         section.
11550         * config/rs6000/rs6000.c (rs6000_aix_asm_output_dwarf_table_ref):
11551         New function.  Implementation of ASM_OUTPUT_DWARF_TABLE_REF.
11552         * config/rs6000/rs6000-protos.h: Declare it.
11553         * config/rs6000/aix.h (ASM_OUTPUT_DWARF_TABLE_REF): Define.
11554
11555 2009-08-27  Kaz Kojima  <kkojima@gcc.gnu.org>
11556
11557         * config/sh/sh.c (split_branches): Check the result of
11558         next_active_insn.
11559
11560 2009-08-27  Steve Ellcey  <sje@cup.hp.com>
11561
11562         * config/ia64/hpux.h (LIB_SPEC): Add -lrt for when
11563         using -pthread -fopenmp
11564
11565 2009-08-27  Gerald Pfeifer  <gerald@pfeifer.com>
11566
11567         * doc/service.texi (service directory): Update URL.
11568
11569 2009-08-27  Uros Bizjak  <ubizjak@gmail.com>
11570
11571         PR rtl-optimization/40861
11572         * simplify-rtx.c (simplify_subreg): Do not call simplify_gen_subreg to
11573         extract word from a multi-word subreg for negative byte positions.
11574
11575 2009-08-27  Tristan Gingold  <gingold@adacore.com>
11576             Douglas B Rupp  <rupp@gnat.com>
11577
11578         * config/ia64/ia64.c (ia64_attribute_table): Add "common_object" entry.
11579         (SECTION_VMS_OVERLAY): Define.
11580         (ia64_vms_common_object_attribute): Added.  Handle the "common_object"
11581         attribute.
11582         (ia64_vms_elf_asm_named_section): Added.  Generate .section pseudo-op
11583         for common_object.
11584         (ia64_vms_output_aligned_decl_common): Added.  Generate pseudo-op for
11585         common_object declarations.
11586         (ia64_section_type_flags): Set section flag for common_object.
11587         * config/ia64/ia64-protos.h
11588         (ia64_vms_output_aligned_decl_common): Declare.
11589         (ia64_vms_elf_asm_named_section): Declare.
11590
11591 2009-08-27  Michael Matz  <matz@suse.de>
11592
11593         * expr.c (expand_expr_real_2): New function taking exploded
11594         unary or binary expression, split out from ...
11595         (expand_expr_real_1): ... here.  Move over all unary/binary
11596         switch parts to above function, in particular these codes:
11597         PAREN_EXPR, NOP_EXPR, CONVERT_EXPR, POINTER_PLUS_EXPR, PLUS_EXPR,
11598         MINUS_EXPR, MULT_EXPR, TRUNC_DIV_EXPR, FLOOR_DIV_EXPR, CEIL_DIV_EXPR,
11599         ROUND_DIV_EXPR, EXACT_DIV_EXPR, RDIV_EXPR, TRUNC_MOD_EXPR,
11600         FLOOR_MOD_EXPR, CEIL_MOD_EXPR, ROUND_MOD_EXPR, FIXED_CONVERT_EXPR,
11601         FIX_TRUNC_EXPR, FLOAT_EXPR, NEGATE_EXPR, ABS_EXPR, MAX_EXPR, MIN_EXPR,
11602         BIT_NOT_EXPR, TRUTH_AND_EXPR, BIT_AND_EXPR, TRUTH_OR_EXPR,
11603         BIT_IOR_EXPR, TRUTH_XOR_EXPR, BIT_XOR_EXPR, LROTATE_EXPR, RROTATE_EXPR,
11604         LSHIFT_EXPR, RSHIFT_EXPR, LT_EXPR, LE_EXPR, GT_EXPR, GE_EXPR, EQ_EXPR,
11605         NE_EXPR, UNORDERED_EXPR, ORDERED_EXPR, UNLT_EXPR, UNLE_EXPR, UNGT_EXPR,
11606         UNGE_EXPR, UNEQ_EXPR, LTGT_EXPR, TRUTH_NOT_EXPR, COMPLEX_EXPR,
11607         WIDEN_SUM_EXPR, REDUC_MAX_EXPR, REDUC_MIN_EXPR, REDUC_PLUS_EXPR,
11608         VEC_EXTRACT_EVEN_EXPR, VEC_EXTRACT_ODD_EXPR, VEC_INTERLEAVE_HIGH_EXPR,
11609         VEC_INTERLEAVE_LOW_EXPR, VEC_LSHIFT_EXPR, VEC_RSHIFT_EXPR,
11610         VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR, VEC_UNPACK_FLOAT_HI_EXPR,
11611         VEC_UNPACK_FLOAT_LO_EXPR, VEC_WIDEN_MULT_HI_EXPR,
11612         VEC_WIDEN_MULT_LO_EXPR, VEC_PACK_TRUNC_EXPR, VEC_PACK_SAT_EXPR,
11613         VEC_PACK_FIX_TRUNC_EXPR.
11614         (<case PAREN_EXPR>): Call set_mem_attributes() with type, not the
11615         full expression.
11616
11617 2009-08-27  Richard Guenther  <rguenther@suse.de>
11618
11619         * gengtype.c (main): Handle uint64_t.
11620         * ipa-utils.c (get_base_var): Indent properly.
11621         * tree-ssa-live.c (debug_scope_block): New function.
11622         * tree-flow.h (debug_scope_block): Declare.
11623         * tree-ssa-copy.c (replace_exp_1): Add vertical space.
11624         * basic-block.h (enum profile_status): Rename to
11625         enum profile_status_d.
11626         (x_profile_status): Adjust type.
11627
11628 2009-08-27  Dodji Seketeli  <dodji@redhat.com>
11629
11630         PR debug/41170
11631         * dwarf2out.c (get_context_die): Declare this static function.
11632         (gen_type_die_with_usage): Make sure a DIE is a generated for
11633         the context of a typedef.
11634
11635 2009-08-26  Anatoly Sokolov  <aesok@post.ru>
11636
11637         * doc/invoke.texi (AVR Options): Remove documentation of -minit-stack
11638         switch.
11639
11640 2009-08-26  Richard Sandiford  <rdsandiford@googlemail.com>
11641
11642         * config/mips/mips-protos.h (mips_output_sync): Declare.
11643         (mips_sync_loop_insns): Likewise.
11644         (mips_output_sync_loop): Replace first two parameters with an rtx.
11645         * config/mips/mips.c (mips_multi_member): New structure.
11646         (mips_multi_members): New variable.
11647         (mips_multi_start): New function.
11648         (mips_multi_add): Likewise.
11649         (mips_multi_add_insn): Likewise.
11650         (mips_multi_add_label): Likewise.
11651         (mips_multi_last_index): Likewise.
11652         (mips_multi_copy_insn): Likewise.
11653         (mips_multi_set_operand): Likewise.
11654         (mips_multi_write): Likewise.
11655         (mips_print_operand_punctuation): Remove '%|' and '%-'.
11656         (mips_init_print_operand_punct): Update accordingly.
11657         (mips_start_ll_sc_sync_block): New function.
11658         (mips_end_ll_sc_sync_block): Likewise.
11659         (mips_output_sync): Likewise.
11660         (mips_sync_insn1_template): Likewise.
11661         (mips_sync_insn2_template): Likewise.
11662         (mips_get_sync_operand): Likewise.
11663         (mips_process_sync_loop): Likewise.
11664         (mips_output_sync_loop): Use mips_process_sync_loop.
11665         (mips_sync_loop_insns): New function.
11666         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Delete.
11667         (MIPS_COMPARE_AND_SWAP_12): Likewise.
11668         (MIPS_COMPARE_AND_SWAP_12_ZERO_OP): Likewise.
11669         (MIPS_COMPARE_AND_SWAP_12_NONZERO_OP): Likewise.
11670         (MIPS_SYNC_OP, MIPS_SYNC_OP_12): Likewise.
11671         (MIPS_SYNC_OP_12_AND, MIPS_SYNC_OP_12_XOR): Likewise.
11672         (MIPS_SYNC_OLD_OP_12): Likewise.
11673         (MIPS_SYNC_OLD_OP_12_AND, MIPS_SYNC_OLD_OP_12_XOR): Likewise.
11674         (MIPS_SYNC_NEW_OP_12): Likewise.
11675         (MIPS_SYNC_NEW_OP_12_AND, MIPS_SYNC_NEW_OP_12_XOR): Likewise.
11676         (MIPS_SYNC_OLD_OP, MIPS_SYNC_NEW_OP): Likewise.
11677         (MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND, MIPS_SYNC_NEW_NAND): Likewise.
11678         (MIPS_SYNC_EXCHANGE, MIPS_SYNC_EXCHANGE_12): Likewise.
11679         (MIPS_SYNC_EXCHANGE_12_ZERO_OP): Likewise.
11680         (MIPS_SYNC_EXCHANGE_12_NONZER_OP): Likewise.
11681         * config/mips/mips.md (sync_mem): New attribute.
11682         (sync_oldval, sync_newval, sync_inclusive_mask): Likewise.
11683         (sync_exclusive_mask, sync_required_oldval): Likewise.
11684         (sync_insn1_op2, sync_insn1, sync_insn2): Likewise.
11685         (sync_release_barrier): Likewise.
11686         (length): Handle sync loops.
11687         (sync): Use mips_output_sync.
11688         * config/mips/sync.md (*memory_barrier): Use mips_output_sync.
11689         (sync_compare_and_swap<mode>): Set the new sync_* attributes
11690         and use mips_output_sync_loop.
11691         (compare_and_swap_12, sync_add<mode>, sync_<optab>_12): Likewise.
11692         (sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12): Likewise.
11693         (sync_old_nand_12, sync_new_nand_12, sync_sub<mode>): Likewise.
11694         (sync_old_add<mode>, sync_old_sub<mode>): Likewise.
11695         (sync_new_add<mode>, sync_new_sub<mode>): Likewise.
11696         (sync_<optab><mode>, sync_old_<optab><mode>): Likewise.
11697         (sync_new_<optab><mode>, sync_nand<mode>): Likewise.
11698         (sync_old_nand<mode>, sync_new_nand<mode>): Likewise.
11699         (sync_lock_test_and_set<mode>, test_and_set_12): Likewise.
11700
11701 2009-08-26  Richard Guenther  <rguenther@suse.de>
11702
11703         PR middle-end/41163
11704         * gimplify.c (gimplify_addr_expr): Canonicalize ADDR_EXPRs if
11705         the types to not match.
11706         * tree-cfg.c (verify_gimple_assign_single): Adjust ADDR_EXPR
11707         verification.
11708         * tree-ssa.c (useless_type_conversion_p): Conversions to
11709         pointers to unprototyped functions are useless.
11710
11711 2009-08-26  Richard Guenther  <rguenther@suse.de>
11712
11713         * tree-ssa-structalias.c (create_variable_info_for): Remove strange
11714         whole-program condition, prepare to be called for non-globals.
11715         (intra_create_variable_infos): For restrict qualified DECL_BY_REFERENCE
11716         params build a representative with known type and track its fields.
11717
11718 2009-08-26  Uros Bizjak  <ubizjak@gmail.com>
11719
11720         * config/alpha/sync.md: Update comment about unpredictable LL/SC lock
11721         clearing by a taken branch.
11722         (sync_<fetchop_name><mode>): Split when epilogue_completed is set,
11723         effectively after bbro pass.
11724         (sync_nand<mode>): Ditto.
11725         (sync_old_<fetchop_name><mode>): Ditto.
11726         (sync_old_nand<mode>): Ditto.
11727         (sync_new_<fetchop_name><mode>): Dito.
11728         (sync_new_nand<mode>): Ditto.
11729         (sync_compare_and_swap<mode>_1): Ditto.
11730         (*sync_compare_and_swap<mode>): Ditto.
11731         (sync_lock_test_and_set<mode>_1): Ditto.
11732         ("sync_lock_test_and_set<mode>): Ditto.
11733
11734 2009-08-25  Douglas B Rupp  <rupp@gnat.com>
11735
11736         * hwint.h (HOST_LONG_FORMAT): New macro
11737         * bitmap.c, c-decl.c, mips-tfile.c, print-rtl.c, print-tree.c:
11738         Use HOST_PTR_PRINTF.
11739         * system.h (HOST_PTR_PRINTF): Resurrect old macro
11740         * doc/hostconfig.texi (HOST_LONG_FORMAT): Document.
11741         (HOST_PTR_PRINTF): Document.
11742
11743 2009-08-25 Jan Hubicka  <jh@suse.cz>
11744
11745         * config/i386/bmmintrin.h: Replace by #error.
11746
11747         Revert:
11748         Michael Meissner  <michael.meissner@amd.com>
11749         Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
11750         Tony Linthicum  <tony.linthicum@amd.com>
11751
11752         * config/i386/i386.h (TARGET_SSE5): New macro for SSE5.
11753         (TARGET_ROUND): New macro for the round/ptest instructions which
11754         are shared between SSE4.1 and SSE5.
11755         (OPTION_MASK_ISA_ROUND): Ditto.
11756         (OPTION_ISA_ROUND): Ditto.
11757         (TARGET_FUSED_MADD): New macro for -mfused-madd swtich.
11758         (TARGET_CPU_CPP_BUILTINS): Add SSE5 support.
11759
11760         * config/i386/i386.opt (-msse5): New switch for SSE5 support.
11761         (-mfused-madd): New switch to give users control over whether the
11762         compiler optimizes to use the multiply/add SSE5 instructions.
11763
11764         * config/i386/i386.c (enum pta_flags): Add PTA_SSE5.
11765         (ix86_handle_option): Turn off 3dnow if -msse5.
11766         (override_options): Add SSE5 support.
11767         (print_operand): %Y prints comparison codes for SSE5 com/pcom
11768         instructions.
11769         (ix86_expand_sse_movcc): Add SSE5 support.
11770         (ix86_expand_sse5_unpack): New function to use pperm to unpack a
11771         vector type to the next largest size.
11772         (ix86_expand_sse5_pack): New function to use pperm to pack a
11773         vector type to the next smallest size.
11774         (IX86_BUILTIN_FMADDSS): New for SSE5 intrinsic.
11775         (IX86_BUILTIN_FMADDSD): Ditto.
11776         (IX86_BUILTIN_FMADDPS): Ditto.
11777         (IX86_BUILTIN_FMADDPD): Ditto.
11778         (IX86_BUILTIN_FMSUBSS): Ditto.
11779         (IX86_BUILTIN_FMSUBSD): Ditto.
11780         (IX86_BUILTIN_FMSUBPS): Ditto.
11781         (IX86_BUILTIN_FMSUBPD): Ditto.
11782         (IX86_BUILTIN_FNMADDSS): Ditto.
11783         (IX86_BUILTIN_FNMADDSD): Ditto.
11784         (IX86_BUILTIN_FNMADDPS): Ditto.
11785         (IX86_BUILTIN_FNMADDPD): Ditto.
11786         (IX86_BUILTIN_FNMSUBSS): Ditto.
11787         (IX86_BUILTIN_FNMSUBSD): Ditto.
11788         (IX86_BUILTIN_FNMSUBPS): Ditto.
11789         (IX86_BUILTIN_FNMSUBPD): Ditto.
11790         (IX86_BUILTIN_PCMOV_V2DI): Ditto.
11791         (IX86_BUILTIN_PCMOV_V4SI): Ditto.
11792         (IX86_BUILTIN_PCMOV_V8HI): Ditto.
11793         (IX86_BUILTIN_PCMOV_V16QI): Ditto.
11794         (IX86_BUILTIN_PCMOV_V4SF): Ditto.
11795         (IX86_BUILTIN_PCMOV_V2DF): Ditto.
11796         (IX86_BUILTIN_PPERM): Ditto.
11797         (IX86_BUILTIN_PERMPS): Ditto.
11798         (IX86_BUILTIN_PERMPD): Ditto.
11799         (IX86_BUILTIN_PMACSSWW): Ditto.
11800         (IX86_BUILTIN_PMACSWW): Ditto.
11801         (IX86_BUILTIN_PMACSSWD): Ditto.
11802         (IX86_BUILTIN_PMACSWD): Ditto.
11803         (IX86_BUILTIN_PMACSSDD): Ditto.
11804         (IX86_BUILTIN_PMACSDD): Ditto.
11805         (IX86_BUILTIN_PMACSSDQL): Ditto.
11806         (IX86_BUILTIN_PMACSSDQH): Ditto.
11807         (IX86_BUILTIN_PMACSDQL): Ditto.
11808         (IX86_BUILTIN_PMACSDQH): Ditto.
11809         (IX86_BUILTIN_PMADCSSWD): Ditto.
11810         (IX86_BUILTIN_PMADCSWD): Ditto.
11811         (IX86_BUILTIN_PHADDBW): Ditto.
11812         (IX86_BUILTIN_PHADDBD): Ditto.
11813         (IX86_BUILTIN_PHADDBQ): Ditto.
11814         (IX86_BUILTIN_PHADDWD): Ditto.
11815         (IX86_BUILTIN_PHADDWQ): Ditto.
11816         (IX86_BUILTIN_PHADDDQ): Ditto.
11817         (IX86_BUILTIN_PHADDUBW): Ditto.
11818         (IX86_BUILTIN_PHADDUBD): Ditto.
11819         (IX86_BUILTIN_PHADDUBQ): Ditto.
11820         (IX86_BUILTIN_PHADDUWD): Ditto.
11821         (IX86_BUILTIN_PHADDUWQ): Ditto.
11822         (IX86_BUILTIN_PHADDUDQ): Ditto.
11823         (IX86_BUILTIN_PHSUBBW): Ditto.
11824         (IX86_BUILTIN_PHSUBWD): Ditto.
11825         (IX86_BUILTIN_PHSUBDQ): Ditto.
11826         (IX86_BUILTIN_PROTB): Ditto.
11827         (IX86_BUILTIN_PROTW): Ditto.
11828         (IX86_BUILTIN_PROTD): Ditto.
11829         (IX86_BUILTIN_PROTQ): Ditto.
11830         (IX86_BUILTIN_PROTB_IMM): Ditto.
11831         (IX86_BUILTIN_PROTW_IMM): Ditto.
11832         (IX86_BUILTIN_PROTD_IMM): Ditto.
11833         (IX86_BUILTIN_PROTQ_IMM): Ditto.
11834         (IX86_BUILTIN_PSHLB): Ditto.
11835         (IX86_BUILTIN_PSHLW): Ditto.
11836         (IX86_BUILTIN_PSHLD): Ditto.
11837         (IX86_BUILTIN_PSHLQ): Ditto.
11838         (IX86_BUILTIN_PSHAB): Ditto.
11839         (IX86_BUILTIN_PSHAW): Ditto.
11840         (IX86_BUILTIN_PSHAD): Ditto.
11841         (IX86_BUILTIN_PSHAQ): Ditto.
11842         (IX86_BUILTIN_FRCZSS): Ditto.
11843         (IX86_BUILTIN_FRCZSD): Ditto.
11844         (IX86_BUILTIN_FRCZPS): Ditto.
11845         (IX86_BUILTIN_FRCZPD): Ditto.
11846         (IX86_BUILTIN_CVTPH2PS): Ditto.
11847         (IX86_BUILTIN_CVTPS2PH): Ditto.
11848         (IX86_BUILTIN_COMEQSS): Ditto.
11849         (IX86_BUILTIN_COMNESS): Ditto.
11850         (IX86_BUILTIN_COMLTSS): Ditto.
11851         (IX86_BUILTIN_COMLESS): Ditto.
11852         (IX86_BUILTIN_COMGTSS): Ditto.
11853         (IX86_BUILTIN_COMGESS): Ditto.
11854         (IX86_BUILTIN_COMUEQSS): Ditto.
11855         (IX86_BUILTIN_COMUNESS): Ditto.
11856         (IX86_BUILTIN_COMULTSS): Ditto.
11857         (IX86_BUILTIN_COMULESS): Ditto.
11858         (IX86_BUILTIN_COMUGTSS): Ditto.
11859         (IX86_BUILTIN_COMUGESS): Ditto.
11860         (IX86_BUILTIN_COMORDSS): Ditto.
11861         (IX86_BUILTIN_COMUNORDSS): Ditto.
11862         (IX86_BUILTIN_COMFALSESS): Ditto.
11863         (IX86_BUILTIN_COMTRUESS): Ditto.
11864         (IX86_BUILTIN_COMEQSD): Ditto.
11865         (IX86_BUILTIN_COMNESD): Ditto.
11866         (IX86_BUILTIN_COMLTSD): Ditto.
11867         (IX86_BUILTIN_COMLESD): Ditto.
11868         (IX86_BUILTIN_COMGTSD): Ditto.
11869         (IX86_BUILTIN_COMGESD): Ditto.
11870         (IX86_BUILTIN_COMUEQSD): Ditto.
11871         (IX86_BUILTIN_COMUNESD): Ditto.
11872         (IX86_BUILTIN_COMULTSD): Ditto.
11873         (IX86_BUILTIN_COMULESD): Ditto.
11874         (IX86_BUILTIN_COMUGTSD): Ditto.
11875         (IX86_BUILTIN_COMUGESD): Ditto.
11876         (IX86_BUILTIN_COMORDSD): Ditto.
11877         (IX86_BUILTIN_COMUNORDSD): Ditto.
11878         (IX86_BUILTIN_COMFALSESD): Ditto.
11879         (IX86_BUILTIN_COMTRUESD): Ditto.
11880         (IX86_BUILTIN_COMEQPS): Ditto.
11881         (IX86_BUILTIN_COMNEPS): Ditto.
11882         (IX86_BUILTIN_COMLTPS): Ditto.
11883         (IX86_BUILTIN_COMLEPS): Ditto.
11884         (IX86_BUILTIN_COMGTPS): Ditto.
11885         (IX86_BUILTIN_COMGEPS): Ditto.
11886         (IX86_BUILTIN_COMUEQPS): Ditto.
11887         (IX86_BUILTIN_COMUNEPS): Ditto.
11888         (IX86_BUILTIN_COMULTPS): Ditto.
11889         (IX86_BUILTIN_COMULEPS): Ditto.
11890         (IX86_BUILTIN_COMUGTPS): Ditto.
11891         (IX86_BUILTIN_COMUGEPS): Ditto.
11892         (IX86_BUILTIN_COMORDPS): Ditto.
11893         (IX86_BUILTIN_COMUNORDPS): Ditto.
11894         (IX86_BUILTIN_COMFALSEPS): Ditto.
11895         (IX86_BUILTIN_COMTRUEPS): Ditto.
11896         (IX86_BUILTIN_COMEQPD): Ditto.
11897         (IX86_BUILTIN_COMNEPD): Ditto.
11898         (IX86_BUILTIN_COMLTPD): Ditto.
11899         (IX86_BUILTIN_COMLEPD): Ditto.
11900         (IX86_BUILTIN_COMGTPD): Ditto.
11901         (IX86_BUILTIN_COMGEPD): Ditto.
11902         (IX86_BUILTIN_COMUEQPD): Ditto.
11903         (IX86_BUILTIN_COMUNEPD): Ditto.
11904         (IX86_BUILTIN_COMULTPD): Ditto.
11905         (IX86_BUILTIN_COMULEPD): Ditto.
11906         (IX86_BUILTIN_COMUGTPD): Ditto.
11907         (IX86_BUILTIN_COMUGEPD): Ditto.
11908         (IX86_BUILTIN_COMORDPD): Ditto.
11909         (IX86_BUILTIN_COMUNORDPD): Ditto.
11910         (IX86_BUILTIN_COMFALSEPD): Ditto.
11911         (IX86_BUILTIN_COMTRUEPD): Ditto.
11912         (IX86_BUILTIN_PCOMEQUB): Ditto.
11913         (IX86_BUILTIN_PCOMNEUB): Ditto.
11914         (IX86_BUILTIN_PCOMLTUB): Ditto.
11915         (IX86_BUILTIN_PCOMLEUB): Ditto.
11916         (IX86_BUILTIN_PCOMGTUB): Ditto.
11917         (IX86_BUILTIN_PCOMGEUB): Ditto.
11918         (IX86_BUILTIN_PCOMFALSEUB): Ditto.
11919         (IX86_BUILTIN_PCOMTRUEUB): Ditto.
11920         (IX86_BUILTIN_PCOMEQUW): Ditto.
11921         (IX86_BUILTIN_PCOMNEUW): Ditto.
11922         (IX86_BUILTIN_PCOMLTUW): Ditto.
11923         (IX86_BUILTIN_PCOMLEUW): Ditto.
11924         (IX86_BUILTIN_PCOMGTUW): Ditto.
11925         (IX86_BUILTIN_PCOMGEUW): Ditto.
11926         (IX86_BUILTIN_PCOMFALSEUW): Ditto.
11927         (IX86_BUILTIN_PCOMTRUEUW): Ditto.
11928         (IX86_BUILTIN_PCOMEQUD): Ditto.
11929         (IX86_BUILTIN_PCOMNEUD): Ditto.
11930         (IX86_BUILTIN_PCOMLTUD): Ditto.
11931         (IX86_BUILTIN_PCOMLEUD): Ditto.
11932         (IX86_BUILTIN_PCOMGTUD): Ditto.
11933         (IX86_BUILTIN_PCOMGEUD): Ditto.
11934         (IX86_BUILTIN_PCOMFALSEUD): Ditto.
11935         (IX86_BUILTIN_PCOMTRUEUD): Ditto.
11936         (IX86_BUILTIN_PCOMEQUQ): Ditto.
11937         (IX86_BUILTIN_PCOMNEUQ): Ditto.
11938         (IX86_BUILTIN_PCOMLTUQ): Ditto.
11939         (IX86_BUILTIN_PCOMLEUQ): Ditto.
11940         (IX86_BUILTIN_PCOMGTUQ): Ditto.
11941         (IX86_BUILTIN_PCOMGEUQ): Ditto.
11942         (IX86_BUILTIN_PCOMFALSEUQ): Ditto.
11943         (IX86_BUILTIN_PCOMTRUEUQ): Ditto.
11944         (IX86_BUILTIN_PCOMEQB): Ditto.
11945         (IX86_BUILTIN_PCOMNEB): Ditto.
11946         (IX86_BUILTIN_PCOMLTB): Ditto.
11947         (IX86_BUILTIN_PCOMLEB): Ditto.
11948         (IX86_BUILTIN_PCOMGTB): Ditto.
11949         (IX86_BUILTIN_PCOMGEB): Ditto.
11950         (IX86_BUILTIN_PCOMFALSEB): Ditto.
11951         (IX86_BUILTIN_PCOMTRUEB): Ditto.
11952         (IX86_BUILTIN_PCOMEQW): Ditto.
11953         (IX86_BUILTIN_PCOMNEW): Ditto.
11954         (IX86_BUILTIN_PCOMLTW): Ditto.
11955         (IX86_BUILTIN_PCOMLEW): Ditto.
11956         (IX86_BUILTIN_PCOMGTW): Ditto.
11957         (IX86_BUILTIN_PCOMGEW): Ditto.
11958         (IX86_BUILTIN_PCOMFALSEW): Ditto.
11959         (IX86_BUILTIN_PCOMTRUEW): Ditto.
11960         (IX86_BUILTIN_PCOMEQD): Ditto.
11961         (IX86_BUILTIN_PCOMNED): Ditto.
11962         (IX86_BUILTIN_PCOMLTD): Ditto.
11963         (IX86_BUILTIN_PCOMLED): Ditto.
11964         (IX86_BUILTIN_PCOMGTD): Ditto.
11965         (IX86_BUILTIN_PCOMGED): Ditto.
11966         (IX86_BUILTIN_PCOMFALSED): Ditto.
11967         (IX86_BUILTIN_PCOMTRUED): Ditto.
11968         (IX86_BUILTIN_PCOMEQQ): Ditto.
11969         (IX86_BUILTIN_PCOMNEQ): Ditto.
11970         (IX86_BUILTIN_PCOMLTQ): Ditto.
11971         (IX86_BUILTIN_PCOMLEQ): Ditto.
11972         (IX86_BUILTIN_PCOMGTQ): Ditto.
11973         (IX86_BUILTIN_PCOMGEQ): Ditto.
11974         (IX86_BUILTIN_PCOMFALSEQ): Ditto.
11975         (IX86_BUILTIN_PCOMTRUEQ): Ditto.
11976         (enum multi_arg_type): New enum for describing the various SSE5
11977         intrinsic argument types.
11978         (bdesc_multi_arg): New table for SSE5 intrinsics.
11979         (ix86_init_mmx_sse_builtins): Add SSE5 intrinsic support.
11980         (ix86_expand_multi_arg_builtin): New function for creating SSE5
11981         intrinsics.
11982         (ix86_expand_builtin): Add SSE5 intrinsic support.
11983         (ix86_sse5_valid_op_p): New function to validate SSE5 3 and 4
11984         operand instructions.
11985         (ix86_expand_sse5_multiple_memory): New function to split the
11986         second memory reference from SSE5 instructions.
11987         (type_has_variadic_args_p): Delete in favor of stdarg_p.
11988         (ix86_return_pops_args): Use stdarg_p to determine if the function
11989         has variable arguments.
11990         (ix86_setup_incoming_varargs): Ditto.
11991         (x86_this_parameter): Ditto.
11992
11993         * config/i386/i386-protos.h (ix86_expand_sse5_unpack): Add
11994         declaration.
11995         (ix86_expand_sse5_pack): Ditto.
11996         (ix86_sse5_valid_op_p): Ditto.
11997         (ix86_expand_sse5_multiple_memory): Ditto.
11998
11999         * config/i386/i386.md (UNSPEC_SSE5_INTRINSIC): Add new UNSPEC
12000         constant for SSE5 support.
12001         (UNSPEC_SSE5_UNSIGNED_CMP): Ditto.
12002         (UNSPEC_SSE5_TRUEFALSE): Ditto.
12003         (UNSPEC_SSE5_PERMUTE): Ditto.
12004         (UNSPEC_SSE5_ASHIFT): Ditto.
12005         (UNSPEC_SSE5_LSHIFT): Ditto.
12006         (UNSPEC_FRCZ): Ditto.
12007         (UNSPEC_CVTPH2PS): Ditto.
12008         (UNSPEC_CVTPS2PH): Ditto.
12009         (PCOM_FALSE): Add new constant for true/false SSE5 comparisons.
12010         (PCOM_TRUE): Ditto.
12011         (COM_FALSE_S): Ditto.
12012         (COM_FALSE_P): Ditto.
12013         (COM_TRUE_S): Ditto.
12014         (COM_TRUE_P): Ditto.
12015         (type attribute): Add ssemuladd, sseiadd1, ssecvt1, sse4arg types.
12016         (unit attribute): Add support for ssemuladd, ssecvt1, sseiadd1 sse4arg
12017         types.
12018         (memory attribute): Ditto.
12019         (sse4_1_round<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
12020         Use SSE4_1_ROUND_* constants instead of hard coded numbers.
12021         (rint<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
12022         (floor<mode>2): Ditto.
12023         (ceil<mode>2): Ditto.
12024         (btrunc<mode>2): Ditto.
12025         (nearbyintdf2): Ditto.
12026         (nearbyintsf2): Ditto.
12027         (sse_setccsf): Disable if SSE5.
12028         (sse_setccdf): Ditto.
12029         (sse5_setcc<mode>): New support for SSE5 conditional move.
12030         (sse5_pcmov_<mode>): Ditto.
12031
12032         * config/i386/sse.md (SSEMODE1248): New mode iterator for SSE5.
12033         (SSEMODEF4): Ditto.
12034         (SSEMODEF2P): Ditto.
12035         (ssemodesuffixf4): New mode attribute for SSE5.
12036         (ssemodesuffixf2s): Ditto.
12037         (ssemodesuffixf2c): Ditto.
12038         (sserotatemax): Ditto.
12039         (ssescalarmode): Ditto.
12040         (sse_maskcmpv4sf3): Disable if SSE5.
12041         (sse_maskcmpv2df3): Ditto.
12042         (sse_vmmaskcmpv4sf3): Ditto.
12043         (sse5_fmadd<mode>4): Add SSE5 floating point multiply/add instructions.
12044         (sse5_vmfmadd<mode>4): Ditto.
12045         (sse5_fmsub<mode>4): Ditto.
12046         (sse5_vmfmsub<mode>4): Ditto.
12047         (sse5_fnmadd<mode>4): Ditto.
12048         (sse5_vmfnmadd<mode>4): Ditto.
12049         (sse5_fnmsub<mode>4): Ditto.
12050         (sse5_vmfnmsub<mode>4): Ditto.
12051         (sse5i_fmadd<mode>4): Ditto.
12052         (sse5i_fmsub<mode>4): Ditto.
12053         (sse5i_fnmadd<mode>4): Ditto.
12054         (sse5i_fnmsub<mode>4): Ditto.
12055         (sse5i_vmfmadd<mode>4): Ditto.
12056         (sse5i_vmfmsub<mode>4): Ditto.
12057         (sse5i_vmfnmadd<mode>4): Ditto.
12058         (sse5i_vmfnmsub<mode>4): Ditto.
12059         (mulv16qi3): Add SSE5 support.
12060         (mulv4si3): Ditto.
12061         (sse5_mulv4si3): New insn for 32-bit multiply support on SSE5.
12062         (sse2_mulv4si3): Disable if SSE5.
12063         (sse4_1_roundpd): Use TARGET_ROUND instead of TARGET_SSE4_1.
12064         (sse4_1_roundps): Ditto.
12065         (sse4_1_roundsd): Ditto.
12066         (sse4_1_roundss): Ditto.
12067         (sse_maskcmpv4sf3): Disable if SSE5 so the SSE5 instruction will
12068         be generated.
12069         (sse_maskcmpsf3): Ditto.
12070         (sse_vmmaskcmpv4sf3): Ditto.
12071         (sse2_maskcmpv2df3): Ditto.
12072         (sse2_maskcmpdf3): Ditto.
12073         (sse2_vmmaskcmpv2df3): Ditto.
12074         (sse2_eq<mode>3): Ditto.
12075         (sse2_gt<mode>3): Ditto.
12076         (sse5_pcmov_<mode>): Add SSE5 support.
12077         (vec_unpacku_hi_v16qi): Ditto.
12078         (vec_unpacks_hi_v16qi): Ditto.
12079         (vec_unpacku_lo_v16qi): Ditto.
12080         (vec_unpacks_lo_v16qi): Ditto.
12081         (vec_unpacku_hi_v8hi): Ditto.
12082         (vec_unpacks_hi_v8hi): Ditto.
12083         (vec_unpacku_lo_v8hi): Ditto.
12084         (vec_unpacks_lo_v8hi): Ditto.
12085         (vec_unpacku_hi_v4si): Ditto.
12086         (vec_unpacks_hi_v4si): Ditto.
12087         (vec_unpacku_lo_v4si): Ditto.
12088         (vec_unpacks_lo_v4si): Ditto.
12089         (sse5_pmacsww): New SSE5 intrinsic insn.
12090         (sse5_pmacssww): Ditto.
12091         (sse5_pmacsdd): Ditto.
12092         (sse5_pmacssdd): Ditto.
12093         (sse5_pmacssdql): Ditto.
12094         (sse5_pmacssdqh): Ditto.
12095         (sse5_pmacsdqh): Ditto.
12096         (sse5_pmacsswd): Ditto.
12097         (sse5_pmacswd): Ditto.
12098         (sse5_pmadcsswd): Ditto.
12099         (sse5_pmadcswd): Ditto.
12100         (sse5_pcmov_<move>): Conditional move support on SSE5.
12101         (sse5_phaddbw): New SSE5 intrinsic insn.
12102         (sse5_phaddbd): Ditto.
12103         (sse5_phaddbq): Ditto.
12104         (sse5_phaddwd): Ditto.
12105         (sse5_phaddwq): Ditto.
12106         (sse5_phadddq): Ditto.
12107         (sse5_phaddubw): Ditto.
12108         (sse5_phaddubd): Ditto.
12109         (sse5_phaddubq): Ditto.
12110         (sse5_phadduwd): Ditto.
12111         (sse5_phadduwq): Ditto.
12112         (sse5_phaddudq): Ditto.
12113         (sse5_phsubbw): Ditto.
12114         (sse5_phsubwd): Ditto.
12115         (sse5_phsubdq): Ditto.
12116         (sse5_pperm): Ditto.
12117         (sse5_pperm_sign_v16qi_v8hi): New insns for pack/unpack with SSE5.
12118         (sse5_pperm_zero_v16qi_v8hi): Ditto.
12119         (sse5_pperm_sign_v8hi_v4si): Ditto.
12120         (sse5_pperm_zero_v8hi_v4si): Ditto.
12121         (sse5_pperm_sign_v4si_v2di): Ditto.
12122         (sse5_pperm_sign_v4si_v2di): Ditto.
12123         (sse5_pperm_pack_v2di_v4si): Ditto.
12124         (sse5_pperm_pack_v4si_v8hi): Ditto.
12125         (sse5_pperm_pack_v8hi_v16qi): Ditto.
12126         (sse5_perm<mode>): New SSE5 intrinsic insn.
12127         (rotl<mode>3): Ditto.
12128         (sse5_rotl<mode>3): Ditto.
12129         (sse5_ashl<mode>3): Ditto.
12130         (sse5_lshl<mode>3): Ditto.
12131         (sse5_frcz<mode>2): Ditto.
12132         (sse5s_frcz<mode>2): Ditto.
12133         (sse5_cvtph2ps): Ditto.
12134         (sse5_cvtps2ph): Ditto.
12135         (sse5_vmmaskcmp<mode>3): Ditto.
12136         (sse5_com_tf<mode>3): Ditto.
12137         (sse5_maskcmp<mode>3): Ditto.
12138         (sse5_maskcmp_uns<mode>3): Ditto.
12139         (sse5_maskcmp_uns2<mode>3): Ditto.
12140         (sse5_pcom_tf<mode>3): Ditto.
12141
12142         * config/i386/predicates.md (sse5_comparison_float_operator):
12143         New predicate to match the comparison operators supported by
12144         the SSE5 com instruction.
12145         (ix86_comparison_int_operator): New predicate to match just the
12146         signed int comparisons.
12147         (ix86_comparison_uns_operator): New predicate to match just the
12148         unsigned int comparisons.
12149
12150         * doc/invoke.texi (-msse5): Add documentation.
12151         (-mfused-madd): Ditto.
12152
12153         * doc/extend.texi (x86 intrinsics): Document new SSE5 intrinsics.
12154
12155         * config.gcc (i[34567]86-*-*): Include bmmintrin.h and
12156         mmintrin-common.h.
12157         (x86_64-*-*): Ditto.
12158
12159         * config/i386/cpuid.h (bit_SSE5): Define SSE5 bit.
12160
12161         * config/i386/bmmintrin.h: New file, provide common x86 compiler
12162         intrinisics for SSE5.
12163
12164         * config/i386/smmintrin.h: Move instructions shared with SSE5 to
12165         mmintrin-common.h.
12166
12167         * config/i386/mmintrin-common.h: New file, to contain common
12168         instructions between SSE4.1 and SSE5.
12169
12170         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration): Use
12171         FOREACH_FUNCTION_ARGS to iterate over the argument list.
12172         (gen_regparm_prefix): Ditto.
12173
12174         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix): Use
12175         FOREACH_FUNCTION_ARGS to iterate over the argument list.  Use
12176         prototype_p to determine if a function is prototyped.
12177
12178 2009-08-25 Ville Voutilainen <ville.voutilainen@gmail.com>
12179
12180         * c-common.c (c_common_reswords) add the alignof keyword,
12181         with same RID as __alignof and __alignof__
12182
12183 2009-08-25  Anatoly Sokolov  <aesok@post.ru>
12184
12185         * hooks.h (hook_bool_const_int_const_int_true): Declare.
12186         * hooks.c (hook_bool_const_int_const_int_true): New function.
12187         * target.h (struct gcc_target): Add can_eliminate field.
12188         * target-def.h (TARGET_CAN_ELIMINATE): Define.
12189         (TARGET_INITIALIZER): Use TARGET_CAN_ELIMINATE.
12190         * ira.c (setup_eliminable_regset): Use can_eliminate target hook.
12191         * reload1.c (update_eliminables, init_elim_table): (Ditto.).
12192         (elim_table): Revise comment.
12193         * system.h (CAN_ELIMINATE): Poison.
12194         * defaults.h (CAN_ELIMINATE): Remove.
12195         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
12196
12197         * config/alpha/vms.h (CAN_ELIMINATE): Remove macro.
12198         * config/alpha/alpha.c (TARGET_CAN_ELIMINATE) [TARGET_ABI_OPEN_VMS]:
12199         Define macro.
12200         (alpha_vms_can_eliminate): Declare as static, change return type to
12201         bool.
12202         * config/alpha/alpha-protos.h (alpha_vms_can_eliminate): Remove.
12203
12204         * config/arm/arm.h (CAN_ELIMINATE): Remove macro.
12205         * config/arm/arm.c (TARGET_CAN_ELIMINATE): Define macro.
12206         (arm_can_eliminate): New function.
12207
12208         * config/avr/avr.h (CAN_ELIMINATE): Remove macro.
12209         * config/avr/avr.c (TARGET_CAN_ELIMINATE): Define macro.
12210         (avr_can_eliminate): Declare as static.
12211         * config/avr/avr-protos.h (avr_can_eliminate): Remove.
12212
12213         * config/bfin/bfin.h (CAN_ELIMINATE): Remove macro.
12214         * config/bfin/bfin.c (TARGET_CAN_ELIMINATE): Define macro.
12215         (bfin_can_eliminate): New function.
12216
12217         * config/crx/crx.h (CAN_ELIMINATE): Remove macro.
12218         * config/crx/crx.c (TARGET_CAN_ELIMINATE): Define macro.
12219         (crx_can_eliminate): New function.
12220
12221         * config/fr30/fr30.h (CAN_ELIMINATE): Remove macro.
12222         * config/fr30/fr30.c (TARGET_CAN_ELIMINATE): Define macro.
12223         (fr30_can_eliminate): New function.
12224
12225         * config/frv/frv.h (CAN_ELIMINATE): Remove macro.
12226         * config/frv/frv.c (TARGET_CAN_ELIMINATE): Define macro.
12227         (frv_can_eliminate): New function.
12228
12229         * config/h8300/h8300.h (CAN_ELIMINATE): Remove macro.
12230         * config/h8300/h8300.c (TARGET_CAN_ELIMINATE): Define macro.
12231         (h8300_can_eliminate): New function.
12232
12233         * config/i386/i386.h (CAN_ELIMINATE): Remove macro.
12234         * config/i386/i386.c (TARGET_CAN_ELIMINATE): Define macro.
12235         (i386_can_eliminate): Declare as static, change return type to bool.
12236         * config/i386/i386-protos.h (i386_can_eliminate): Remove.
12237
12238         * config/ia64/ia64.h (CAN_ELIMINATE): Remove macro.
12239         * config/ia64/ia64.c (TARGET_CAN_ELIMINATE): Define macro.
12240         (ia64_can_eliminate): New function.
12241
12242         * config/iq2000/iq2000.h (CAN_ELIMINATE): Remove macro.
12243         * config/iq2000/iq2000.c (TARGET_CAN_ELIMINATE): Define macro.
12244         (iq2000_can_eliminate): New function.
12245
12246         * config/m32r/m32r.h (CAN_ELIMINATE): Remove macro.
12247         * config/m32r/m32r.c (TARGET_CAN_ELIMINATE): Define macro.
12248         (m32r_can_eliminate): New function.
12249
12250         * config/m68hc11/m68hc11.h (CAN_ELIMINATE): Remove macro.
12251         * config/m68hc11/m68hc11.c (TARGET_CAN_ELIMINATE): Define macro.
12252         (m68hc11_can_eliminate): New function.
12253
12254         * config/m68k/m68k.h (CAN_ELIMINATE): Remove macro.
12255         * config/m68k/m68k.c (TARGET_CAN_ELIMINATE): Define macro.
12256         (m68k_can_eliminate): New function.
12257
12258         * config/mep/mep.h (CAN_ELIMINATE): Remove macro.
12259         * config/mep/mep.c (TARGET_CAN_ELIMINATE): Define macro.
12260         (mep_can_eliminate): New function.
12261
12262         * config/mips/mips.h (CAN_ELIMINATE): Remove macro.
12263         * config/mips/mips.c (TARGET_CAN_ELIMINATE): Define macro.
12264         (mips_can_eliminate): New function.
12265
12266         * config/rs6000/rs6000.h (CAN_ELIMINATE): Remove macro.
12267         * config/rs6000/rs6000.c (TARGET_CAN_ELIMINATE): Define macro.
12268         (rs6000_can_eliminate): New function.
12269
12270         * config/s390/s390.h (CAN_ELIMINATE): Remove macro.
12271         * config/s390/s390.c (TARGET_CAN_ELIMINATE): Define macro.
12272         (s390_can_eliminate): Declare as static.
12273         * config/s390/s390-protos.h (sparc_can_eliminate): Remove.
12274
12275         * config/score/score.h (CAN_ELIMINATE): Remove macro.
12276         * config/score/score.c (TARGET_CAN_ELIMINATE): Define macro.
12277         (score_can_eliminate): New function.
12278
12279         * config/sparc/sparc.h (CAN_ELIMINATE): Remove macro.
12280         * config/sparc/sparc.c (TARGET_CAN_ELIMINATE): Define macro.
12281         (sparc_can_eliminate): Declare as static.
12282         * config/sparc/sparc-protos.h (sparc_can_eliminate): Remove.
12283
12284         * config/stormy16/stormy16.h (CAN_ELIMINATE): Remove macro.
12285         * config/stormy16/stormy16.c (TARGET_CAN_ELIMINATE): Define macro.
12286         (xstormy16_can_eliminate): New function.
12287
12288         * config/v850/v850.h (CAN_ELIMINATE): Remove macro.
12289         * config/v850/v850.c (TARGET_CAN_ELIMINATE): Define macro.
12290         (v850_can_eliminate): New function.
12291
12292 2009-08-25  Uros Bizjak  <ubizjak@gmail.com>
12293
12294         * config/alpha/alpha.md (*cmpdf_ieee_ext[123]): Remove.
12295         (*cmpdf_internal): Enable for all ALPHA_FPTM levels.
12296         (*movdfcc_ext[1234]): Disable for IEEE mode.
12297
12298 2009-08-25  Eric Botcazou  <ebotcazou@adacore.com>
12299
12300         * gimplify.c (prepare_gimple_addressable): New static function.
12301         (gimplify_modify_expr_to_memcpy): Invoke it on the RHS before marking
12302         it addressable.
12303         (gimplify_addr_expr): Invoke it similarly on the operand instead of
12304         manually fiddling with it.
12305
12306 2009-08-25  Michael Matz  <matz@suse.de>
12307
12308         * expr.h (jumpifnot_1, jumpif_1, do_jump_1): Declare.
12309         * dojump.c (do_jump_by_parts_greater): Take two operands instead of
12310         full expression.
12311         (do_jump_by_parts_equality, do_compare_and_jump): Ditto.
12312         (jumpifnot_1, jumpif_1): New wrappers for do_jump_1.
12313         (do_jump): Split out code for simple binary comparisons into ...
12314         (do_jump_1): ... this, taking the individual operands and code.
12315         Change callers to helper function above accordingly.
12316         * expr.c (expand_expr_real_1): Use jumpifnot_1 for simple binary
12317         comparisons.
12318
12319 2009-08-25  Michael Matz  <matz@suse.de>
12320
12321         * expr.h (struct separate_ops, sepops): New type for passing
12322         around an exploded simple expression.
12323         * optabs.c (expand_widen_pattern_expr, expand_vec_shift_expr):
12324         Use this structure instead of expression tree.
12325         (get_vcond_icode, expand_vec_cond_expr_p): Don't take whole
12326         expression, only its type.
12327         (expand_vec_cond_expr): Take type and individual operands instead
12328         of full expression.
12329         * optabs.h (expand_widen_pattern_expr, expand_vec_cond_expr,
12330         expand_vec_shift_expr): Change prototype accordingly.
12331         * tree-vect-stmts.c (vectorizable_condition): Change call of
12332         expand_vec_cond_expr_p to pass only type.
12333         * expr.c (do_store_flags): Change prototype and implementation
12334         to take an exploded expression.
12335         (expand_expr_real_1): New local ops initialized with details
12336         of the full expression.  Use it instead of full
12337         expression in calls to do_store_flags, expand_vec_cond_expr,
12338         expand_widen_pattern_expr and expand_vec_shift_expr.
12339
12340 2009-08-25  Michael Matz  <matz@suse.de>
12341
12342         * expr.c (expand_expr_real_1): New local treeop0, treeop1,
12343         treeop2 initialized with first three operands of the full expression.
12344         Substitute all TREE_OPERAND (exp, [012]) calls with them.
12345
12346 2009-08-25  Kai Tietz  <kai.tietz@onevision.com>
12347
12348         * gcc/gthr-win32.h (__UNUSED_PARAM): Define, if not already present.
12349         (__gthread_objc_condition_allocate): Mark arguments as unused.
12350         (__gthread_objc_condition_deallocate): Likewise.
12351         (__gthread_objc_condition_wait): Likewise.
12352         (__gthread_objc_condition_broadcast): Likewise.
12353         (__gthread_objc_condition_signal): Likewise.
12354         (__gthread_objc_thread_detach): Cast via INT_PTR to pointer.
12355         (__gthread_objc_thread_id): Likewise.
12356
12357 2009-08-25  Janus Weil  <janus@gcc.gnu.org>
12358
12359         PR middle-end/41149
12360         * tree-pretty-print.c (print_call_name): Print the correct call name
12361         for procedure pointer components.
12362
12363 2009-08-24  Steve Ellcey  <sje@cup.hp.com>
12364
12365         * config/ia64/ia64.c (ia64_promote_function_mode): Call
12366         default_promote_function_mode when not VMS.
12367
12368 2009-08-24  Olivier Hainque  <hainque@adacore.com>
12369
12370         * convert.c (convert_to_integer): Don't assume an input pointer is
12371         POINTER_SIZE wide.  Fetch from the type instead.
12372
12373 2009-08-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12374
12375         * configure.ac (AC_PREREQ): Bump to 2.64.
12376
12377 2009-08-24  Rafael Avila de Espindola  <espindola@google.com>
12378
12379         * gcc.c (standard_exec_prefix_1,standard_exec_prefix_2): Remove.
12380         (process_command): Don't search standard_exec_prefix_1 and
12381         standard_exec_prefix_2.
12382
12383 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
12384
12385         * config/arm/arm.c (output_return_instruction): Handle for
12386         unified syntax.
12387
12388 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
12389
12390         * config/arm/arm.c (arm_select_cc_mode): Handle subreg.
12391
12392 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
12393
12394         * config/arm/vfp.md (*arm_movdi_vfp): Mark as predicable.
12395         (*arm_movdf_vfp): Likewise.
12396
12397 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
12398
12399         * config/arm/neon.md (vashl<mode>3): Rename from ashl<mode>3.
12400         (vashr<mode>3): Rename from ashr<mode>3.
12401         (vlshr<mode>3): Rename from lshr<mode>3.
12402
12403 2009-08-24  Kai Tietz  <kai.tietz@onevision.com>
12404
12405         PR/40786
12406         * c-format.c (format_wanted_type): Add new member scalar_identity_flag.
12407         (check_format_info_main): Use scalar_identify_flag.
12408         (check_format_types): Check for scalar size identity if
12409         scalar_identify_flag is set.
12410         (printf_length_specs): Extend by new field.
12411         (asm_fprintf_length_specs): Likewise.
12412         (gcc_diag_length_specs): Likewise.
12413         (scanf_length_specs): Likewise.
12414         (strfmon_length_specs): Likewise.
12415         (gcc_gfc_length_specs): Likewise.
12416         * config/i386/msformat-c.c (ms_printf_length_specs): Likewise.
12417         (ms_printf_flag_specs): Likewise.
12418         * c-format.h (format_length_info): Add new member scalar_identity_flag.
12419
12420 2009-08-23  Uros Bizjak  <ubizjak@gmail.com>
12421
12422         PR target/40718
12423         * config/i386/i386.c (*call_pop_1): Disable for sibling calls.
12424         (*call_value_pop_1): Ditto.
12425         (*sibcall_pop_1): New insn pattern.
12426         (*sibcall_value_pop_1): Ditto.
12427
12428 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
12429
12430         PR target/41081
12431         * config/rs6000/rs6000.md (rotlsi3_64, ashlsi3_64, lshrsi3_64,
12432         ashrsi3_64): New.
12433
12434 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
12435
12436         PR target/41081
12437         * fwprop.c (try_fwprop_subst): Allow multiple sets.
12438         (get_reg_use_in): New function.
12439         (forward_propagate_subreg): Propagate through subreg of zero_extend
12440         or sign_extend.
12441
12442 2009-08-22  Kaz Kojima  <kkojima@gcc.gnu.org>
12443
12444         * config/sh/t-sh (TARGET_LIBGCC2_CFLAGS): Define.
12445         * config/sh/t-netbsd (TARGET_LIBGCC2_CFLAGS): Add -mieee.
12446
12447 2009-08-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12448
12449         * configure.ac: Remove --with-datarootdir, --with-docdir,
12450         --with-htmldir switches.  No need to call AC_SUBST for
12451         datarootdir, docdir, htmldir any more.
12452         * configure: Regenerate.
12453         * doc/install.texi (Configuration): Document --datarootdir,
12454         --docdir, --htmldir, --pdfdir; update documentation for
12455         --infodir, --mandir.
12456         (Prerequisites): Bump Autoconf version to 2.64, Automake to 1.11,
12457         M4 to 1.4.6.
12458
12459         * aclocal.m4: Regenerate.
12460         * config.in: Regenerate.
12461         * configure: Regenerate.
12462
12463 2009-08-21  Douglas B Rupp  <rupp@gnat.com>
12464             Olivier Hainque  <hainque@adacore.com>
12465
12466         * config/ia64/ia64.c: Include libfuncs.h.
12467         (TARGET_PROMOTE_FUNCITON_MODE): Define target macro.
12468         (ia64_expand_call): Use reg 25 on VMS.
12469         (ia64_initialize_trampoline): Fix for VMS ABI.
12470         (ia64_function_arg_offset): Always returns 0 when TARGET_ABI_OPEN_VMS.
12471         (ia64_function_arg): Initialize reg 25 on VMS.
12472         Fix OpenVMS ABI issues for varargs.
12473         For OpenVMS, emit the Argument Information register set in the
12474         incoming/sibcall case as well.
12475         (ia64_arg_type): New function.
12476         (ia64_function_arg_advance): Keep track of cum->words.
12477         Fix OpenVMS ABI issues for varargs.
12478         (ia64_function_value): On VMS, promote mode of non-aggregate types.
12479         (ia64_override_options): Set flag_no_common on VMS.
12480         (ia64_init_builtins): Disable FWRITE builtin.
12481         (ia64_asm_output_external): Call DO_CRTL_NAMES.
12482         (ia64_vms_init_libfuncs): Add decc$ routines.
12483         (ia64_vms_valid_pointer_mode): New function.
12484         (ia64_struct_value_rtx): Allways NULL_RTX on VMS.
12485         (ia64_promote_function_mode): New function
12486         * config/ia64/ia64.h (TARGET_ABI_OPEN_VMS): Define as 0 for default.
12487         (LONG_DOUBLE_TYPE_SIZE): Force to 64 on VMS.
12488         (LIBCGC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
12489         (INIT_CUMULATIVE_ARGS): Add atypes for VMS.
12490         (INIT_CUMULATIVE_INCOMING_ARGS): Likewise.
12491         (ASM_OUTPUT_DEF): Use ISDIGIT instead of isdigit.
12492         Suppress trailing '#' if VALUE is numeric.
12493         * config/ia64/vms.h (PROMOTE_FUNCTION_MODE): Remove, code moved to
12494         ia64_promote_function_mode.
12495         (TARGET_VALID_POINTER_MODE): Define.
12496
12497 2009-08-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
12498
12499         PR target/40671
12500         * config/rs6000/rs6000.c (rs6000_override_options): Use
12501         TARGET_64BIT instead of TARGET_POWERPC64 to set the size of pointers.
12502
12503         PR target/41145
12504         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Fix
12505         reporting of vector + decimal/boolean/complex error.
12506
12507 2009-08-21  Jakub Jelinek  <jakub@redhat.com>
12508
12509         * config/rs6000/rs6000.c (rs6000_init_builtins): Fix type of
12510         __vector double TYPE_DECL.
12511
12512 2009-08-21  Richard Earnshaw  <rearnsha@arm.com>
12513
12514         * arm.h (MACHMODE): New define.  Include insn-modes.h if available.
12515         (CUMULATIVE_ARGS): Use MACHMODE for declaration of aapcs_vfp_mode.
12516         * arm.c (aapcs_vfp_is_call_or_return_candidate): Change base_mode
12517         to pointer to enum machine_mode.  Update all callers as needed.
12518
12519 2009-08-21  Uros Bizjak  <ubizjak@gmail.com>
12520
12521         * config/alpha/alpha.md (exception_receiver): Emit alternative
12522         GP load sequence if flag_reorder_blocks_and_partition is set.
12523         (*exception_receiver_2): Also enable when
12524         flag_reorder_blocks_and_partition is set.
12525
12526 2009-08-20  Matt Rice  <ratmice@gmail.com>
12527             Diego Novillo  <dnovillo@google.com>
12528
12529         * Makefile.in (PLUGIN_HEADERS): Include incpath.h and
12530         tree-ssa-sccvn.h.
12531
12532 2009-08-20  Richard Guenther  <rguenther@suse.de>
12533
12534         * c-objc-common.h (LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): Do not define.
12535         * c-tree.h (c_dup_lang_specific_decl): Remove.
12536         (struct lang_decl, struct lang_type): Move definitions ...
12537         * c-lang.h: ... here.  New file.
12538         * c-decl.c: Include c-lang.h.
12539         (c_dup_lang_specific_decl): Remove.
12540         * c-typeck.c: Include c-lang.h.
12541         * Makefile.in (c-decl.o): Add c-lang.h dependency.
12542         (c-typeck.o): Likewise.
12543         * c-config-lang.in (gtfiles): Add c-lang.h.
12544         * gengtype.c (get_output_file_with_visibility): Handle c-lang.h
12545         like c-tree.h.
12546
12547 2009-08-20  Uros Bizjak  <ubizjak@gmail.com>
12548
12549         * config/alpha/alpha.c (alpha_end_function): Do not clear
12550         crtl->emit structure and free insn locators if cfun->is_thunk is true,
12551         this is now handled in generic code.
12552
12553 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
12554
12555         * config/s390/s390.c (Z10_PREDICT_DISTANCE): New macro.
12556         (s390_z10_fix_long_loop_prediction): New function.
12557         (s390_z10_optimize_cmp): INSN walk moved to callee - s390_reorg.
12558         (s390_reorg): Walk over the INSNs and invoke
12559         s390_z10_fix_long_loop_prediction and s390_z10_optimize_cmp.
12560
12561 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
12562
12563         * config/s390/s390.md ("*brx_stage1_<GPR:mode>", "*brxg_64bit",
12564         "*brx_64bit", "*brx_31bit"): New patterns.
12565         * config/s390/s390.c ('E'): New output modifier.
12566
12567 2009-08-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
12568             Richard Earnshaw  <richard.earnshaw@arm.com>
12569
12570         * config/arm/arm.c (arm_emit_movpair): Handle CONST_INT.
12571         * config/arm/arm.md (*arm_movtas_ze): New pattern for movt.
12572
12573 2009-08-19  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12574
12575         * pa.md (reload_inhi, reload_outhi, reload_inqi, reload_outqi): New
12576         patterns.
12577         * pa.c (emit_move_sequence): Check if address of operand1 is valid
12578         for mode mode of operand0 when doing secondary reload for SAR.
12579
12580 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
12581
12582         PR middle-end/41123
12583         * expr.c (expand_expr_real_1) <normal_inner_ref>: Handle all kinds
12584         of CONCAT, not just bitpos 0 bitsize size of the whole CONCAT.
12585
12586 2009-08-19  Jason Merrill  <jason@redhat.com>
12587
12588         * doc/invoke.texi (C++ Dialect Options): Note change of minimum
12589         supported template depth in C++0x.
12590
12591 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
12592
12593         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Don't call
12594         free_after_compilation.
12595         * config/score/score7.c (score7_output_mi_thunk): Likewise.
12596         * config/score/score3.c (score3_output_mi_thunk): Likewise.
12597         * config/ia64/ia64.c (ia64_output_mi_thunk): Likewise.
12598         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
12599         * config/sh/sh.c (sh_output_mi_thunk): Likewise.
12600         * config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
12601         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
12602
12603 2009-08-19  Ian Lance Taylor  <iant@google.com>
12604
12605         * doc/md.texi (Insn Canonicalizations): Correct canonicalization
12606         of (plus (mult (neg B) C) A).
12607
12608 2009-08-18  Michael Matz  <matz@suse.de>
12609
12610         * omp-low.c (optimize_omp_library_calls): Use types_compatible_p
12611         instead of comparing TYPE_MAIN_VARIANT for equality.
12612         * tree-vect-patterns.c (vect_recog_dot_prod_pattern,
12613         vect_recog_widen_mult_pattern, vect_recog_widen_sum_pattern): Ditto.
12614         * tree-vect-loop.c (vect_is_simple_reduction): Ditto.
12615         * gimplify.c (goa_lhs_expr_p): Ditto and use
12616         STRIP_USELESS_TYPE_CONVERSION.
12617
12618 2009-08-18  Michael Matz  <matz@suse.de>
12619
12620         * tree-ssa-structalias.c (create_variable_info_for): Also mark
12621         first field in a struct.
12622         (intra_create_variable_infos): Don't deal with flag_argument_noalias.
12623
12624 2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
12625
12626         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
12627         locators before emit_insn is called.  Remove assert that
12628         cfun->is_thunk.
12629         (alpha_end_function): Clear crtl->emit structure and free insn
12630         locators if cfun->is_thunk is true.
12631
12632 2009-08-18  Jason Merrill  <jason@redhat.com>
12633
12634         * config/elfos.h (ASM_DECLARE_OBJECT_NAME): Use gnu_unique_object
12635         type if available.
12636         * configure.ac: Test for it.
12637         * configure, config.in: Regenerate.
12638         * doc/install.texi: Document --enable-gnu-unique-object.
12639
12640 2009-08-18  Richard Guenther  <rguenther@suse.de>
12641
12642         PR middle-end/41094
12643         * builtins.c (fold_builtin_pow): Fold pow(pow(x,y),z) to
12644         pow(x,y*z) only if x is nonnegative.
12645
12646 2009-08-18  Jakub Jelinek  <jakub@redhat.com>
12647
12648         * bb-reorder.c (fix_up_fall_thru_edges): Only call invert_jump
12649         on jumps.
12650
12651         PR target/40971
12652         * config/rs6000/rs6000.c (rs6000_legitimize_address): For
12653         [DT][FDI]mode ensure the offset isn't 4/8/12 bytes below 0x8000.
12654
12655 2009-08-17  DJ Delorie  <dj@redhat.com>
12656
12657         * config/m32c/m32c.md (UNS_FSETB, UNS_FREIT): New.
12658         * config/m32c/prologue.md (epilogue_freit): New.
12659         (fset_b): New.
12660         * config/m32c/m32c.c (m32c_function_needs_enter): Add prototype.
12661         (bank_switch_p): Likewise.
12662         (fast_interrupt_p): Likewise.
12663         (interrupt_p): Likewise.
12664         (m32c_conditional_register_usage): Round memregs size up.
12665         (need_to_save): We only need to save $a0 when we use ENTER.
12666         (interrupt_p): Check for fast_interrupt too.
12667         (bank_switch_p): New.
12668         (fast_interrupt_p): New.
12669         (m32c_attribute_table): Add bank_switch and fast_interrupt.
12670         (m32c_emit_prolog): Support bank switching and fast interrupts.
12671         * doc/extend.texi (Function Attributes): Add bank_switch and
12672         fast_interrupt.
12673
12674 2009-08-17  Douglas B Rupp  <rupp@gnat.com>
12675
12676         * config/alpha/alpha.c (vms_valid_pointer_mode): New function.
12677         * config/alpha/vms.h (TARGET_VALID_POINTER_MODE): Define.
12678
12679 2009-08-16  Douglas B Rupp  <rupp@gnat.com>
12680
12681         * doc/invoke.texi (Target options): Add new option list for IA-64/VMS.
12682         (menu): Add IA-64/VMS Options.
12683         (IA-64/VMS Options): Likewise.
12684
12685 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
12686
12687         PR target/38599
12688         * config/mips/mips.md (*lwxs): Use :P for pointer values.
12689
12690 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
12691
12692         * config/mips/mips-protos.h (mips_push_asm_switch): New function.
12693         (mips_pop_asm_switch): Likewise.
12694         * config/mips/mips.c (set_noreorder, set_nomacro, set_noat): Replace
12695         with...
12696         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
12697         (mips_push_asm_switch_1, mips_pop_asm_switch_1): New functions.
12698         (mips_push_asm_switch, mips_pop_asm_switch): Likewise.
12699         (mips_print_operand_punctuation): Use them.  Check mips_noreorder
12700         instead of set_noreorder.
12701         (mips_output_function_prologue): Use the new functions.
12702         (mips_output_function_epilogue): Likewise.
12703         (mips_need_noat_wrapper_p): New function, split out from...
12704         (mips_final_prescan_insn, mips_final_postscan_insn): ...here.
12705         Use mips_push_asm_switch and mips_pop_asm_switch.
12706         * config/mips/mips.h (FUNCTION_PROFILER): Use mips_push_asm_switch
12707         and mips_pop_asm_switch.
12708         (ASM_OUTPUT_REG_POP): Likewise.
12709         (DBR_OUTPUT_SEQEND): Remove boilerplate comment.
12710         Use mips_pop_asm_switch.
12711         (mips_asm_switch): New structure.
12712         (set_noreorder, set_nomacro): Replace with...
12713         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
12714         * config/mips/mips.md (fix_truncdfsi2_macro): Use mips_nomacro
12715         instead of set_nomacro.
12716         (fix_truncsfsi2_macro): Likewise.
12717         (cprestore): Likewise.
12718         (hazard): Use mips_noreorder instead of set_noreorder.
12719         * config/mips/sdemtk.h (FUNCTION_PROFILER): As for mips.h.
12720
12721 2009-08-16  Uros Bizjak  <ubizjak@gmail.com>
12722
12723         * config/alpha/alpha.c (alpha_end_function): Handle NULL_RTX returned
12724         from prev_active_insn.
12725
12726 2009-08-16  Anatoly Sokolov  <aesok@post.ru>
12727
12728         * config/avr/avr.h (AVR_HAVE_8BIT_SP): New macros.
12729         * config/avr/avr.c (avr_override_options): Initialize
12730         avr_current_arch variable.
12731         (avr_cpu_cpp_builtins): Define __AVR_HAVE_8BIT_SP__ or
12732         __AVR_HAVE_16BIT_SP__ according to the device type.
12733         (expand_prologue, output_movhi): Use AVR_HAVE_8BIT_SP instead of
12734         TARGET_TINY_STACK.
12735         (expand_epilogue): Use correct QI mode frame pointer for tiny stack.
12736         Use AVR_HAVE_8BIT_SP instead of TARGET_TINY_STACK.
12737
12738 2009-08-16  Dodji Seketeli  <dodji@redhat.com>
12739
12740         PR debug/37801
12741         * gcc/dwarf2out.c (gen_inlined_subroutine_die): Concentrate on
12742         generating inlined subroutine die only. We shouldn't be
12743         called for anything else.
12744         (gen_block_die): Don't generate inline subroutine debug info for
12745         abstract blocks.
12746
12747 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
12748
12749         * graphite-poly.c (print_pbb): Print PBB index.
12750
12751 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
12752
12753         PR middle-end/40981
12754         * graphite-interchange.c (ppl_max_for_le): Moved...
12755         * graphite-poly.c (pbb_number_of_iterations): Call ppl_max_for_le.
12756         * graphite-ppl.c (ppl_max_for_le): ... here.  Correct the use of
12757         ppl_Pointset_Powerset_C_Polyhedron_maximize.
12758         * graphite-ppl.h (ppl_max_for_le): Declared.
12759
12760 2009-08-14  Olatunji Ruwase <tjruwase@google.com>
12761
12762         * doc/extend.texi (Symbol-Renaming Pragmas): redefine_extname is
12763         supported on all platforms.
12764         * target.h (struct gcc_target): Remove handle_pragma_redefine_extname.
12765         * c-cppbuiltin.c: Remove use of targetm.handle_pragma_redefine_extname.
12766         * c-pragma.c: Likewise.
12767         * target-def.h (TARGET_INITIALIZER): Remove
12768         TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
12769         * config/sol2.h: Remove use of TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
12770
12771 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
12772
12773         * config/ia64/fde-vms.c: New file.
12774         * config/ia64/fde-glibc.c (_Unwind_FindTableEntry): Add dummy arg.
12775         * config/ia64/unwind-ia64.c (UNW_ accessors): Move to unwind-ia64.h
12776         (MD_UNW_COMPATIBLE_PERSONALITY_P): Provide default.
12777         (uw_frame_state_for): Only register a personality routine if it is
12778         known to be compatible with our expectations.
12779         (_Unwind_FindEnclosingFunction, uw_frame_state_for):
12780         Declare unw_table_entry stack variable and
12781         mod all calls to _Unwind_FindTableEntry to add arg.
12782         * config/ia64/unwind-ia64.h (UNW_ accessors): Move here.
12783         (_Unwind_FindTableEntry): Add arg to prototype.
12784
12785 2009-08-14  Eric Botcazou  <ebotcazou@adacore.com>
12786
12787         * config/ia64/unwind-ia64.c (struct _Unwind_Context): Add new
12788         field 'signal_pfs_loc'.
12789         (uw_frame_state_for): Remove duplicate code dealing with leaf
12790         procedures without unwind info.
12791         If in the frame after unwinding through a signal handler, restore
12792         the AR.PFS register instead of the CFM if AR.PFS has not been saved.
12793         * config/ia64/linux-unwind.h (ia64_fallback_frame_state): Do not set
12794         'pfs_loc' to the AR.PFS location in the signal context; instead
12795         set 'signal_pfs_loc'.
12796         Manually generate the unwind info for the AR.PFS register.
12797         (ABI_MARKER_OLD_LINUX_SIGTRAMP, ABI_MARKER_OLD_LINUX_INTERRUPT,
12798         ABI_MARKER_LINUX_SIGTRAMP, ABI_MARKER_LINUX_INTERRUPT): Define.
12799         (ia64_handle_unwabi): Test 'fs->unwabi' against them.
12800         Do not set 'pfs_loc' to the AR.PFS location in the signal context;
12801         instead set 'signal_pfs_loc'.
12802         Remove code preventing the AR.PFS register from being restored
12803         from the signal context.
12804
12805 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
12806             Tristan Gingold  <gingold@adacore.com>
12807
12808         * config.gcc (ia64-hp-*vms*): Insert ia64/t-ia64 in tmake_file.
12809         * config/ia64/t-vms: New file.
12810         * config/ia64/vms64.h: New file.
12811         * config/ia64/vms.h: New file.
12812         * config/ia64/vms-crtinit.asm: New file.
12813         * config/ia64/vms_symvec_libgcc_s.opt: New file.
12814         * config/ia64/vms-unwind.h: New file.
12815
12816 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
12817
12818         * config/alpha/alpha.c (alpha_emit_conditional_move): Handle
12819         TFmode compares.
12820
12821 2009-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12822
12823         PR middle-end/30789
12824         * builtins.c (do_mpc_arg2): Make extern, define for any MPC version.
12825         Move declaration...
12826         * real.h (do_mpc_arg2): ... here.
12827         * fold-const.c (const_binop): Use MPC for complex MULT_EXPR
12828         and RDIV_EXPR.
12829
12830 2009-08-14  Rafael Avila de Espindola  <espindola@google.com>
12831
12832         * final.c (add_debug_prefix_map): Don't use GC memory for
12833         old_prefix and new_prefix.
12834
12835 2009-08-14  Richard Guenther  <rguenther@suse.de>
12836
12837         * ipa-prop.c (compute_complex_pass_through): If we cannot
12838         compute a non-varying offset for IPA_JF_ANCESTOR punt.
12839
12840 2009-08-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
12841
12842         * c-lex.c (c_lex_with_flags): Increase size of local variable
12843         to avoid memory clobber.
12844
12845 2009-08-14  Paolo Bonzini  <bonzini@gnu.org>
12846
12847         PR target/40934
12848         * config/i386/i386.c (ix86_fp_comparison_strategy):
12849         Only enable/disable sahf at function granularity.
12850
12851 2009-08-14  Hans-Peter Nilsson  <hp@axis.com>
12852
12853         PR rtl-optimization/41064
12854         * reload1.c (reload_as_needed): Don't call extract_insn
12855         for known invalid replacements after calling
12856         validate_replace_rtx_group and verify_changes.
12857
12858 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
12859
12860         PR target/41019
12861         * config/i386/sse.md (SSEMODE124C8): New mode iterator.
12862         (vcond<SSEMODEF2P:mode>): Assert that operation is supported by
12863         ix86_expand_fp_vcond.
12864         (vcond<SSEMODE124C8:mode>): Use SSEMODE124C8 instead of SSEMODE124.
12865         Assert that operation is supported by ix86_expand_int_vcond.
12866         (vcondu<SSEMODE124C8:mode>): Ditto.
12867
12868 2009-08-13  DJ Delorie  <dj@redhat.com>
12869
12870         * config/i386/djgpp-stdint.h: New.
12871         * config.gcc (djgpp): Use it.
12872
12873 2009-08-13  Kaz Kojima  <kkojima@gcc.gnu.org>
12874
12875         * config/sh/sh.c (sh_override_options): When flag_exceptions or
12876         flag_unwind_tables is on, turn flag_reorder_blocks_and_partition off.
12877
12878 2009-08-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
12879
12880         * tree-ssa-loop-prefetch.c
12881         (prune_ref_by_group_reuse): Enhance probabilistic analysis
12882         for long-stride pruning.
12883         (compute_miss_rate): New function to compute the probability
12884         that two memory references access different cache lines.
12885
12886 2009-08-13  Dave Korn  <dave.korn.cygwin@gmail.com>
12887
12888         * gcc/config/i386/cygwin.h (LINK_SPEC): Add --enable-auto-image-base.
12889
12890 2009-08-13  Richard Guenther  <rguenther@suse.de>
12891
12892         PR middle-end/41047
12893         * tree-ssa-ccp.c (ccp_fold): When folding pointer additions
12894         use the constant pointer type.
12895         * gimplify.c (canonicalize_addr_expr): Canonicalize independent
12896         of CV qualifiers on the target pointer type.
12897         * tree-ssa.c (useless_type_conversion_p): Move incomplete pointer
12898         conversion check before restrict check.
12899
12900 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
12901
12902         PR target/41029
12903         * config/sh/sh.md (reload_outdf__RnFRm+4): Fix thinko.
12904
12905 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
12906
12907         * config/sh/sh.c (sh_promote_function_mode): Add ATTRIBUTE_UNUSED.
12908
12909 2009-08-12  Richard Guenther  <rguenther@suse.de>
12910
12911         PR tree-optimization/41011
12912         * ipa-cp.c (ipcp_lattice_from_jfunc): Deal with failing fold
12913         and reference constructing.
12914
12915 2009-08-12  Xinliang David Li  <davidxl@google.com>
12916
12917         PR tree-optimization/41012
12918         * tree-flow.h : New external interface.
12919         * gimple-low.c (check_call_arg): Change to public function.
12920         Remove argument mismatch check in lowering.
12921         * tree-inline.h (tree_can_inline_p): Interface change.
12922         * tree-inline.c (tree_can_inline_p): Fold argument mismatch check
12923         into this function.
12924         * ipa-inline.c (cgraph_decide_inlining_of_small_functions):
12925         Call change to tree_can_inline_p function.
12926         (cgraph_decide_inlining_incrementally): Ditto.
12927
12928 2009-08-12  Richard Sandiford  <rdsandiford@googlemail.com>
12929
12930         PR tree-optimization/41031
12931         * tree-outof-ssa.c (insert_value_copy_on_edge): Use promote_decl_mode
12932         on the partition variable rather than promote_mode on the source
12933         type.  Assert that the partition variable's type has the same
12934         mode as the source value's.
12935
12936 2009-08-12  Paolo Bonzini  <bonzini@gnu.org>
12937
12938         * doc/tm.texi (TARGET_PROMOTE_FUNCTION_MODE): Add documentation
12939         for for_return == 2.
12940         * function.c (assign_parm_setup_reg): Use for_return == 2, improve
12941         comments.
12942         * calls.c (expand_call): Fix typo.
12943         * explow.c (promote_decl_mode): Use for_return == 2 for RESULT_DECL
12944         and PARM_DECL.
12945         * stmt.c (expand_value_return): Use promote_function_mode to copy out
12946         of pseudo.
12947         * targhooks.c (default_promote_function_mode): Handle for_return == 2.
12948         * config/cris/cris.c (cris_promote_function_mode): Likewise.
12949         * config/mmix/mmix.c (mmix_promote_function_mode): Likewise.
12950         * config/pa/pa.c (pa_promote_function_mode): Likewise.
12951
12952 2009-08-12  Andrew Haley  <aph@redhat.com>
12953
12954         * config/arm/arm.c (arm_init_libfuncs): Add __sync_synchronize.
12955
12956 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12957
12958         PR bootstrap/40103
12959         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
12960
12961 2009-08-12  Richard Guenther  <rguenther@suse.de>
12962
12963         * alias.c (get_alias_set): Honor TYPE_STRUCTURAL_EQUALITY_P.
12964         * gimplify.c (gimplify_modify_expr): Do not use
12965         lang_hooks.types_compatible_p.
12966         * tree-ssa.c (useless_type_conversion_p): For aggregates
12967         just return false if the canonical types differ.
12968
12969 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12970
12971         PR middle-end/40980
12972         * sese.c (convert_for_phi_arg): New.
12973         (add_guard_exit_phis): Use convert_for_phi_arg.
12974
12975 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12976
12977         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Dont add
12978         unknown subscript upper bounds.
12979
12980 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12981             Pranav Garg  <pranav.garg2107@gmail.com>
12982
12983         * graphite-interchange.c (gather_access_strides): Removed.
12984         (ppl_max_for_le): New.
12985         (build_linearized_memory_access): New.
12986         (memory_stride_in_loop): New.
12987         (pbb_interchange_profitable_p): Reimplemented.
12988         * graphite-ppl.h (ppl_new_id_map): New.
12989         (ppl_interchange): New.
12990
12991 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12992
12993         * graphite-interchange.c (compute_subscript): Removed.
12994         (compute_array_size_cstr): Removed.
12995         (compute_array_size_poly): Removed.
12996         (compute_array_size): Removed.
12997         (gather_access_strides_poly): Removed.
12998         (gather_access_strides): Empty.
12999
13000 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
13001
13002         * graphite-dependences.c (dependence_polyhedron_1): Replace
13003         pdr_nb_subscripts with PDR_NB_SUBSCRIPTS.
13004         (graphite_legal_transform_dr): Same.
13005         (graphite_carried_dependence_level_k): Same.
13006         * graphite-poly.c (new_poly_dr): Add a parameter nb_subscripts.
13007         Initialize PDR_NB_SUBSCRIPTS.
13008         (print_pdr_access_layout): Replace pdr_nb_subscripts with
13009         PDR_NB_SUBSCRIPTS.
13010         * graphite-poly.h (struct poly_dr): Add nb_subscripts field.
13011         (PDR_NB_SUBSCRIPTS): New.
13012         (pdr_nb_subscripts): Removed.
13013         (pdr_dim): Simplified.
13014         * graphite-sese-to-poly.c (build_poly_dr): Replace pdr_nb_subscripts
13015         with PDR_NB_SUBSCRIPTS.
13016
13017 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
13018
13019         * graphite-interchange.c (compute_array_size): Remove use of
13020         PDR_DATA_CONTAINER.
13021         * graphite-poly.c (new_poly_dr): Remove argument data_container.
13022         Do not initialize PDR_DATA_CONTAINER.
13023         (print_pdr): Do not print PDR_DATA_CONTAINER.
13024         * graphite-poly.h (struct poly_dr): Remove data_container field.
13025         (PDR_DATA_CONTAINER): Removed.
13026         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Remove use of
13027         PDR_DATA_CONTAINER.
13028         (build_poly_dr): Same.
13029
13030 2009-08-12  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
13031             Sebastian Pop  <sebastian.pop@amd.com>
13032
13033         * graphite-dependences.c (graphite_legal_transform_dr): Work on a
13034         copy of the dependence polyhedron.  Free the temporary objects.
13035         (graphite_carried_dependence_level_k): Free unused objects before
13036         returning.
13037
13038 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
13039
13040         * graphite-blocking.c (scop_do_strip_mine): Call store_scattering.
13041         Early return without analyzing the data dependences if no
13042         transform has been done.  Call restore_scattering if the transform
13043         is not legal.
13044         (graphite-interchange.c): Same.
13045         * graphite-poly.c (print_scattering_function): Test for
13046         PBB_TRANSFORMED.
13047         (graphite_read_transforms): Initialize PBB_TRANSFORMED.
13048         (apply_poly_transforms): Do not gcc_assert that
13049         the transform is legal.
13050         (new_poly_bb): Initialize PBB_TRANSFORMED, PBB_SAVED and PBB_ORIGINAL.
13051         Do not initialize PBB_NB_SCATTERING_TRANSFORM, PBB_NB_LOCAL_VARIABLES,
13052         PBB_TRANSFORMED_SCATTERING, and PBB_ORIGINAL_SCATTERING.
13053         (free_poly_dr): Free PBB_TRANSFORMED, PBB_SAVED, and PBB_ORIGINAL.
13054         * graphite-poly.h (struct poly_scattering): New.
13055         (struct poly_bb): Add original, transformed, and saved fields.
13056         Remove transformed_scattering, original_scattering,
13057         nb_local_variables and nb_scattering_transform fields.
13058         (PBB_ORIGINAL, PBB_TRANSFORMED, PBB_SAVED): New.
13059         (poly_scattering_new): New.
13060         (poly_scattering_free): New.
13061         (poly_scattering_copy): New.
13062         (store_scattering_pbb): New.
13063         (store_scattering): New.
13064         (restore_scattering_pbb): New.
13065         (restore_scattering): New.
13066         * graphite-sese-to-poly.c (build_pbb_scattering_polyhedrons):
13067         Initialize PBB_TRANSFORMED and PBB_ORIGINAL.
13068
13069 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
13070
13071         * graphite-poly.c (print_pbb): Add parentheses in the pretty print.
13072         (print_scop): Same.
13073
13074 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
13075
13076         * Makefile.in (graphite.o): Depends on PREDICT_H.
13077         * graphite.c: Include predict.h.
13078         (graphite_finalize): Call tree_estimate_probability.
13079         * predict.c (predict_loops): Do not call scev_initialize and
13080         scev_finalize.
13081         (tree_estimate_probability_bb): New.
13082         (tree_estimate_probability): Do not initialize loops: move that
13083         code to the driver.  Call tree_estimate_probability_bb.
13084         (tree_estimate_probability_driver): New.
13085         (pass_profile): Use tree_estimate_probability_driver.
13086         * predict.h (tree_estimate_probability): Declared.
13087
13088 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
13089
13090         * graphite-clast-to-gimple.c (gloog): Add time to TV_GRAPHITE_CODE_GEN.
13091         * graphite-dependences.c (graphite_legal_transform): Add time to
13092         TV_GRAPHITE_DATA_DEPS.
13093         (dependency_between_pbbs_p): Same.
13094         * timevar.def (TV_GRAPHITE_DATA_DEPS, TV_GRAPHITE_CODE_GEN): New.
13095
13096 2009-08-12  Andrey Belevantsev  <abel@ispras.ru>
13097
13098         PR rtl-optimization/41033
13099         * alias.c (nonoverlapping_component_refs_p): Punt when strict
13100         aliasing is disabled.
13101
13102 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
13103
13104         * config/mips/predicates.md (qi_mask_operand, hi_mask_operand,
13105         si_mask_operand, and_load_operand, low_bitmask_operand,
13106         and_reg_operand, and_operand): New predicates.
13107         * config/mips/constraints.md (Yb, Yh, Yw, Yz): New constraints.
13108         * config/mips/mips.c (and_operands_ok): New function.
13109         * config/mips/mips-protos.h (and_operands_ok): Declare it.
13110         * config/mips/mips.md (move_type): Add ext_ins and logical.
13111         (type): Handle them.
13112         (and<mode>3): Use and_reg_operand as the second operand's predicate.
13113         (*and<mode>3): Add alternatives for lbu, lhu, lwu, <d>ext and
13114         shift_shift.  Remove commutative constraint modifier.
13115         (*and<mode>3_mips16): Add alternatives for lbu, lhu, lwu and
13116         shift_shift.
13117         (*clear_upper32_dext): Remove define_insn_and_split.
13118         (*clear_upper32): Turn this define_insn_and_split ...
13119         (splitter for ANDing register with 0xffff_ffff): .. into this.
13120
13121 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
13122
13123         * combine.c (try_widen_shift_mode): Factor out code to check if an
13124         integer constant is a low-order bitmask from here ...
13125         * rtlanal.c (low_bitmask_len): ... to here.
13126         * rtl.h (low_bitmask_len): Declare.
13127
13128 2009-08-11  Uros Bizjak  <ubizjak@gmail.com>
13129
13130         PR target/8603
13131         * config/alpha/alpha.md (addsi3): Remove expander.
13132         (addsi3): Rename from *addsi3_internal insn pattern.
13133         (subsi3): Remove expander.
13134         (subsi3): Rename from *subsi3_internal insn pattern.
13135
13136 2009-08-11  Douglas B Rupp  <rupp@gnat.com>
13137
13138         * config/alpha/alpha.c (alpha_init_builtins): Nullify FWRITE and
13139         FWRITE_UNLOCKED.
13140
13141 2009-08-11  Vasiliy Fofanov  <fofanov@adacore.com>
13142             Eric Botcazou  <botcazou@adacore.com>
13143             Douglas B Rupp  <rupp@gnat.com>
13144
13145         * config/alpha/alpha.c (alpha_return_in_memory): On VMS, ensure
13146         that records that fit in 64 bits are returned by immediate value,
13147         as required by OpenVMS Calling Standard.
13148         (function_value): Adjust for above modification.
13149         (alpha_va_start) <TARGET_ABI_OPEN_VMS>: Use
13150         virtual_incoming_args_rtx as base object, not next_arg.
13151         * config/alpha/vms.h (DEFAULT_PCC_STRUCT_RETURN): Define as 0.
13152
13153 2009-08-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
13154
13155         * reload.c (find_reloads_subreg_address): Check the original
13156         req_equiv_mem address to detect the case where an address is
13157         not valid in the outer mode.
13158
13159 2009-08-11  Richard Guenther  <rguenther@suse.de>
13160
13161         PR bootstrap/40788
13162         * builtins.c (gimplify_va_arg_expr): Do not call SET_EXPR_LOCATION.
13163
13164 2009-08-10  Douglas B Rupp  <rupp@gnat.com>
13165
13166         * config/alpha/vms.h (OPTIMIZATION_OPTIONS): Remove
13167         (OVERRIDE_OPTIONS): Incorporate removed OPTIMIZATION_OPTIONS.
13168
13169 2009-08-10  Olivier Hainque  <hainqueu@adacore.com>
13170             Douglas B Rupp  <rupp@gnat.com>
13171
13172         * config/alpha/alpha.c (alpha_sa_size): Force procedure type to
13173         PT_STACK when frame_pointer_needed on OpenVMS.
13174         (alpha_pv_save_size, alpha_using_fp): Remove.
13175         (alpha_vms_can_eliminate): New function. Support for CAN_ELIMINATE
13176         with proper processing for PT_NULL.
13177         (alpha_vms_initial_elimination_offset): New function. Support for
13178         INITIAL_ELIMINATION_OFFSET with proper processing for PT_NULL.
13179         (alpha_sa_size): Force procedure type to PT_STACK when
13180         frame_pointer_needed on OpenVMS.
13181         * config/alpha/alpha-protos.h (alpha_pv_save_size): Remove prototype.
13182         (alpha_using_fp): Likewise.
13183         (alpha_vms_can_eliminate): Add prototype.
13184         (alpha_vms_initial_elimination_offset): Likewise.
13185         * config/alpha/vms.h (CAN_ELIMINATE, INITIAL_ELIMINATION_OFFSET):
13186         Call alpha_vms_can_eliminate and alpha_vms_initial_elimination_offset.
13187
13188 2009-08-10  Eric Botcazou  <botcazou@adacore.com>
13189             Douglas B Rupp  <rupp@gnat.com>
13190
13191         * config/alpha/alpha.c (common_object_handler): New function.
13192         (vms_attribute_table): Declare a single attribute "common_object".
13193         (vms_output_aligned_decl_common): New global function.
13194         (SECTION_VMS_OVERLAY): Delete.
13195         (SECTION_VMS_GLOBAL): Likewise.
13196         (SECTION_VMS_INITIALIZE): Likewise.
13197         (vms_asm_named_section): Remove support for above flags.
13198         (vms_section_type_flags): Delete.
13199         (TARGET_SECTION_TYPE_FLAGS): Likewise.
13200         * config/alpha/alpha-protos.h (vms_output_aligned_decl_common): New.
13201         * config/alpha/vms.h (ASM_OUTPUT_ALIGNED_COMMON): Delete.
13202         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New macro.
13203
13204 2009-08-10  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
13205
13206         PR target/41015
13207         * longlong.h [__sh__] (udiv_qrnnd): Add T register to clobber list.
13208         (sub_ddmmss): Likewise.
13209
13210 2009-08-10  Andreas Tobler  <a.tobler@schweiz.org>
13211
13212         PR bootstrap/41018
13213         * config/rs6000/freebsd.h: Define SVR4_ASM_SPEC. Adjust copyright
13214         year.
13215
13216 2009-08-10  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
13217
13218         PR target/37053
13219         * reload1.c (reload_as_needed): Use cancel_changes to completely
13220         undo a failed replacement attempt.
13221
13222 2009-08-10  Richard Guenther  <rguenther@suse.de>
13223
13224         PR middle-end/41006
13225         * tree-ssa.c (useless_type_conversion_p_1): Fold into ...
13226         (useless_type_conversion_p): ... here.  Require pointer targets
13227         to be compatible.
13228
13229 2009-08-10  Dodji Seketeli  <dodji@redhat.com>
13230
13231         PR c++/40866
13232         * tree-inline.c (copy_statement_list): The resulting copy shouldn't
13233         loose the original type of the statement list.
13234
13235 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
13236
13237         * config/alpha/alpha.c: Include libfuncs.h
13238         (avms_asm_output_extern): New function.
13239         (alpha_init_libfuncs): Init some decc libfuncs.
13240         * config/alpha/alpha-protos.h (avms_asm_output_external): Declare.
13241         * config/alpha/vms.h (ASM_OUTPUT_EXTERNAL): Define.
13242         (DO_CRTL_NAMES): Define.
13243         (LIB_SPEC): Remove.
13244         * config/alpha/vms64.h (POINTERS_EXTEND_UNSIGNED): Remove undef.
13245         (LONG_TYPE_SIZE): Define.
13246         (TARGET_OS_CPP_BUILTINS): Define with __LONG_POINTERS=1
13247         (SUBTARGET_SWITCHES): Define malloc64 switch.
13248         (TARGET_DEFAULT): Default MASK_MALLOC64 set.
13249         (MASK_RETURN_ADDR): Define.
13250         doc/invoke.texi (mmalloc64): Document switch.
13251
13252 2009-08-09  Olivier Hainque  <hainque@adacore.com>
13253             Douglas B Rupp  <rupp@gnat.com>
13254
13255         * config/alpha/alpha.c (struct machine_function): New flag for VMS,
13256         uses_condition_handler.
13257         (alpha_expand_builtin_establish_vms_condition_handler): New expander.
13258         (alpha_expand_builtin_revert_vms_condition_handler): New expander.
13259         (enum alpha_builtin): New ALPHA_BUILTIN_REVERT_VMS_CONDITION_HANDLER
13260         and ALPHA_BUILTIN_ESTABLISH_VMS_CONDITION_HANDLER values.
13261         (code_for_builtin): New insn codes for the new alpha_builtins.
13262         (alpha_init_builtins): Register the new functions as BUILT_IN_MD.
13263         (alpha_sa_size): Account for uses_condition_handler.
13264         (alpha_expand_prologue): Likewise.
13265         (alpha_start_function): Likewise.
13266         (alpha_expand_epilogue): Likewise.
13267         * config/alpha/alpha-protos.h: Prototype the new alpha.c builtin
13268         establish/revert expanders.
13269         * config/alpha/alpha.h (DWARF_FRAME_REGNUM): Define.
13270         * config/alpha/alpha.md (builtin_establish_vms_condition_handler):
13271         New expander, resorting to the alpha.c associated function.
13272         (builtin_revert_vms_condition_handler): Likewise.
13273         * config/alpha/vms-gcc_shell_handler.c: New file. Implements
13274         __gcc_shell_handler, the static VMS condition handler used as
13275         an indirection wrapper to the current dynamically established
13276         handler.
13277         * config/alpha/vms-unwind.h: Complete rewrite.
13278         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Add vms-gcc_shell_handler.c
13279         * config/alpha/vms.h (MD_UNWIND_SUPPORT):
13280
13281 2009-08-09  Eric Botcazou  <botcazou@adacore.com>
13282             Douglas B Rupp  <rupp@gnat.com>
13283
13284         * config/alpha/alpha.c (alpha_links): Add 'target' field.
13285         (alpha_need_linkage): Handle aliases.  Return function symbol.
13286         (alpha_use_linkage): Rename 'linkage' argument to 'func'.
13287         Use ultimate alias target for the linkage name.
13288         * config/alpha/alpha.md (movmemdi): Use the symbol returned
13289         by alpha_need_linkage for the function symbol.
13290         (setmemdi): Likewise.
13291
13292 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
13293
13294         * config/alpha/alpha.c (TARGET_ASM_UNALIGNED_*_OP): Define if on VMS.
13295         * config/alpha/vms.h (OBJECT_FORMAT_ELF): Define.
13296         (ASM_WEAKEN_LABEL): Define.
13297         (CRT_CALL_STATIC_FUNCTION): Define.
13298         (STARTFILE_SPEC): Add crtbegin.o crtbeginS.o.
13299         (ENDFILE_SPEC): Define.
13300         (INIT_SECTION_ASM_OP): Define.
13301         * config/alpha/vms-dwarf2eh.asm (__EH_FRAME_BEGIN__): Remove.
13302         * config/alpha/t-vms (EXTRA_PARTS): Add crtbegin.o crtbeginS.o
13303         crtend.o crtendS.o.
13304         (MULTILIB_OSDIRNAMES): Define.
13305         (shlib_version): Define.
13306         (SHLIB_EXT): Define.
13307         (SHLIB_OBJS): Define.
13308         (SHLIB_NAME): Define.
13309         (SHLIB_MULTILIB): Define.
13310         (SHLIB_INSTALL): Define.
13311         (SHLIB_SYMVEC): Define.
13312         (SHLIB_SYMVECX2): Define.
13313         (SHLIB_LINK): Define.
13314
13315 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
13316
13317         * config/alpha/alpha.c (alpha_initialize_trampoline):
13318         Initialize VMS trampoline IAW ABI for bounded procedure calls.
13319         (alpha_start_function): Emit transfer address on nested functions
13320         for VMS trampoline call.
13321         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Remove vms_tramp.asm
13322         since no longer used.
13323         * config/alpha/vms-tramp.asm: Remove.
13324         * config/alpha/vms.h (TRAMPOLINE_TEMPLATE): Leave undefined
13325         since now only data initialized at runtime.
13326
13327 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
13328
13329         * config/alpha/vms.h (HANDLE_SYSV_PRAGMA): Define.
13330         (LINK_GCC_C_SEQUENCE_SPEC): Define.
13331         (MD_EXEC_PREFIX): Remove, no longer used.
13332         (MD_STARTFILE_PREFIX): Likewise.
13333         (INCLUDE_DEFAULTS): Likewise.
13334         * config/alpha/t-vms:
13335         (vms-dwarf2.o, vms-dwarf2eh.o): Use GCC_FOR_TARGET to compile.
13336
13337 2009-08-09  Richard Guenther  <rguenther@suse.de>
13338
13339         PR tree-optimization/41016
13340         * tree-ssa-ifcombine.c (get_name_for_bit_test): Fix tuplification bug.
13341         (operand_precision): Remove.
13342         (integral_operand_p): Likewise.
13343         (recognize_single_bit_test): Adjust.
13344
13345 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
13346
13347         * c-common.c (c_fully_fold_internal): Issue a warning if a binary
13348         operation overflows.  Likewise non-cast unary arithmetic.
13349         If one arm of a conditional expression is always taken,
13350         inhibit evaluation warnings for the other arm.  Likewise inhibit
13351         evaluation warnings for the second && or || operand if the first
13352         operand is enough to determine the result.
13353         * c-typeck.c (build_conditional_expr): Apply the same inhibition
13354         rules here.
13355         (build_binary_op): Prevent duplicate evaluation warnings.
13356
13357 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
13358
13359         * tree-out-of-ssa.c (insert_value_copy_on_edge): If the source
13360         and destination have different modes, Use promote_mode to
13361         determine the signedness of the conversion.  Assert that the
13362         promoted source mode matches the destination mode.  Don't pass
13363         the destination and destination mode to expand_expr if the source
13364         mode is different.  Simplify conversion logic.
13365
13366 2009-08-09  Ira Rosen  <irar@il.ibm.com>
13367
13368         PR tree-optimization/41008
13369         * tree-vect-loop.c (vect_is_simple_reduction): Get operands
13370         from condition only in case it's a comparison. Adjust checks.
13371
13372 2009-08-09  Bernd Schmidt  <bernd.schmidt@analog.com>
13373
13374         * tree-dfa.c (renumber_gimple_stmt_uids_in_blocks): New function.
13375         * tree-flow.h (renumber_gimple_stmt_uids_in_blocks): Declare it.
13376         * tree-ssa-loop-ivopts.c (comp_cost): Make COST an integer.
13377         (enum iv_position): Add IP_AFTER_USE and IP_BEFORE_USE.
13378         (dump_cand): Handle them.
13379         (struct iv_cand): New members COST_STEP and AINC_USE.
13380         (stmt_after_increment): Likewise.
13381         (stmt_after_inc_pos): Renamed from stmt_after_ip_original_pos.  All
13382         callers changed.  Use gimple_uid comparison instead of scanning.
13383         (add_candidate_1): When looking for identical candidates, take
13384         AINC_USE into account.  Set it for new candidates.
13385         (force_expr_to_var_cost): Cast target_spill_cost to int.
13386         (get_address_cost): New arguments STMT_AFTER_INC and MAY_AUTOINC.
13387         All callers changed.  Check for availability of autoinc addressing
13388         modes, both in general for a given mode, and in the specific use case.
13389         (get_computation_cost_at): New argument CAN_AUTOINC.  All callers
13390         changed.
13391         (get_computation_cost): Likewise.
13392         (autoinc_possible_for_pair, set_autoinc_for_original_candidates,
13393         add_autoinc_candidates): New static functions.
13394         (add_candidate): Call add_autoinc_candidates for candidates based on
13395         a USE_ADDRESS use.
13396         (find_iv_candidates): Call set_autoinc_for_original_candidates.
13397         (determine_use_iv_cost_address): If we have an autoinc candidate at
13398         the matching use, verify autoinc is possible and subtract the cost
13399         of the candidate's step from the cost.
13400         (determine_iv_cost): Record the cost of the increment in the COST_STEP
13401         member of the candidate.
13402         (tree_ssa_iv_optimize_loop): Swap the calls to determine_iv_costs and
13403         determine_use_iv_costs.  Call renumber_gimple_stmt_uids_in_blocks.
13404
13405 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
13406
13407         * config.build (ia64-hp-*vms*): New target.
13408         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
13409         with ia64-hp-*vms*.
13410         * config.gcc (ia64-hp-*vms*): New target.
13411         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
13412         with ia64-hp-*vms*.
13413         * config.host (ia64-hp-*vms*): New target.
13414         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
13415         with ia64-hp-*vms*.
13416
13417 2009-08-08  Richard Guenther  <rguenther@suse.de>
13418
13419         PR tree-optimization/40991
13420         * tree-ssa-pre.c (eliminate): Delay purging EH edges.
13421
13422 2009-08-08  Richard Sandiford  <rdsandiford@googlemail.com>
13423
13424         * combine.c (gen_lowpart_or_truncate): Exclude CONST_INTs from
13425         mode check.  Do truncations in an integer mode.
13426         (force_to_mode): Handle subregs for all mode types.  Only do
13427         arithmetic simplifications on integer modes.
13428
13429 2009-08-07  Richard Guenther  <rguenther@suse.de>
13430
13431         PR tree-optimization/40999
13432         * tree-ssa-ccp.c (get_symbol_constant_value): Handle CONST_DECLs.
13433         (maybe_fold_reference): Lookup constant initializers.
13434         (fold_gimple_assign): Likewise.
13435
13436 2009-08-07  Richard Guenther  <rguenther@suse.de>
13437
13438         * tree-ssa.c (useless_type_conversion_p_1): Only for types
13439         that require structural equality defer to the langhook.
13440
13441 2009-08-07  Martin Jambor  <mjambor@suse.cz>
13442
13443         * ipa-prop.h (enum jump_func_type): New value IPA_JF_ANCESTOR, changed
13444         comments.
13445         (struct ipa_pass_through_data): New type.
13446         (struct ipa_ancestor_jf_data): New type.
13447         (union jump_func_value): Removed field formal_id, added fields
13448         pass_through and ancestor.
13449         (struct ipa_param_call_note): Changed type of formal_id to int from
13450         unsigned.
13451         * ipa-prop.c (ipa_print_node_jump_functions): Print pass through with
13452         operations jump functions and ancestor jump functions.
13453         (compute_complex_pass_through): New function.
13454         (compute_scalar_jump_functions): Call compute_complex_pass_through,
13455         reflect changes in the jump function strucutre.
13456         (update_jump_functions_after_inlining): Ignore complex pass-through
13457         and ancestor jump functions.
13458         * ipa-cp.c (ipcp_lattice_from_jfunc): Added support for ancestor and
13459         polynomial pass-through with operation jump functions.
13460
13461 2009-08-07  Jakub Jelinek  <jakub@redhat.com>
13462
13463         * dwarf2out.c (output_fde): When doing hot/cold partitioning, use
13464         fde->dw_fde_begin as begin label instead of hot/cold label.
13465         Use LLSDAC label instead of LLSDA for second section lsda.
13466         (dwarf2out_do_cfi_startproc): Add SECOND argument.  Use LLSDAC
13467         label instead of LLSDA if it is true.
13468         (dwarf2out_begin_prologue, dwarf2out_switch_text_section): Adjust
13469         callers.
13470         * except.c (add_call_site, dw2_size_of_call_site_table): Add
13471         SECTION argument.  Use it as index into crtl->eh.call_site_record
13472         array.
13473         (dw2_output_call_site_table): Likewise.  Add CS_FORMAT argument,
13474         use it to determine how to print table entries instead of using
13475         #ifdef HAVE_AS_LEB128.  For SECTION > 0 use hot resp. cold
13476         label instead of normal begin label as base.
13477         (sjlj_assign_call_site_values): Adjust add_call_site caller.
13478         (convert_to_eh_region_ranges): When doing hot/cold partitioning,
13479         ensure no EH range spans between sections and that landing pads
13480         are always in the corresponding section.
13481         (sjlj_size_of_call_site_table, sjlj_output_call_site_table): Adjust
13482         for crtl->eh.call_site_record being an array rather than scalar.
13483         (output_one_function_exception_table): New function, copied
13484         from output_function_exception_table.  Adjust
13485         dw2_size_of_call_site_table, dw2_output_call_site_table
13486         callers.  For SECOND section use *C suffixed labels.
13487         (output_function_exception_table): Call
13488         output_one_function_exception_table and, when doing hot/cold
13489         partitioning, also another time for the second section.
13490         * opts.c: Include except.h.
13491         (decode_options): Allow -freorder-blocks-and-partition with
13492         exceptions, unless SJLJ or TARGET_UNWIND_INFO.
13493         * Makefile.in (opts.o): Depend on $(EXCEPT_H).
13494         * function.h (struct rtl_eh): Change call_site_record from
13495         scalar into array of 2 elements.
13496
13497 2009-08-07  Martin Jambor  <mjambor@suse.cz>
13498
13499         * ipa-prop.c (count_formal_params_1): New function.
13500         (ipa_get_vector_of_formal_parms): New function.
13501         (get_vector_of_formal_parm_types): New function.
13502         (ipa_modify_formal_parameters): New function.
13503         (ipa_modify_call_arguments): New function.
13504         (index_in_adjustments_multiple_times_p): New function.
13505         (ipa_combine_adjustments): New function.
13506         (ipa_dump_param_adjustments): New function.
13507         * ipa-prop.h (struct ipa_parm_adjustment): New type.
13508         (ipa_get_vector_of_formal_parms): Declare.
13509         (ipa_modify_formal_parameters): Declare.
13510         (ipa_modify_call_arguments): Declare.
13511         (ipa_combine_adjustments): Declare.
13512         (ipa_dump_param_adjustments): Declare.
13513         (build_ref_for_offset): Declare.
13514         * Makefile.in (tree-sra.o): Add ipa-prop.h to dependencies.
13515         * tree-sra.c: Include ipa-prop.c.
13516         (build_ref_for_offset): Make public.
13517
13518 2009-08-06  Neil Vachharajani  <nvachhar@gmail.com>
13519
13520         * value-prof.c (init_pid_map): Replace xmalloc with XCNEWVEC.
13521
13522 2009-08-06  Thomas Schwinge  <tschwinge@gnu.org>
13523
13524         * gcc/doc/extend.texi (__builtin_extract_return_address)
13525         (__builtin_frob_return_address): Document.
13526
13527 2009-08-06  Paul Brook  <paul@codesourcery.com>
13528
13529         * config/arm/lib1funcs.asm (ARM_DIV_BODY): Add Thumb-2 implementation.
13530         (udivsi3, aeabi_uidivmod, divsi3, aeabi_idivmod): Only use Thumb-1
13531         implementation on ARMv6-M.
13532
13533 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
13534
13535         * doc/extend.texi (pcs): Document new attribute for ARM.
13536
13537 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
13538
13539         * arm.c (pcs_attribute_args): Comment out unsupported attribute
13540         variants.
13541
13542 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
13543
13544         * arm.c (arm_handle_pcs_attribute): Pass the entire name object to
13545         warning ().
13546
13547 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
13548
13549         * arm.c (arm_handle_pcs_attribute): Use %qE in warning.
13550
13551 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
13552
13553         Merge ARM/hard_vfp_branch to trunk.
13554
13555         2009-08-04  Richard Earnshaw  <rearnsha@arm.com>
13556
13557         * arm.c (libcall_eq): New function.
13558         (libcall_hash): New function.
13559         (add_libcall): New function.
13560         (arm_libcall_uses_aapcs_base): New function.
13561         (arm_libcall_value): Use arm_libcall_uses_aapcs_base to check for
13562         libcalls using the base PCS.
13563         (arm_init_cumulative_args): Likewise.
13564
13565         2009-07-20  Joseph Myers  <joseph@codesourcery.com>
13566
13567         * config/arm/arm.c (arm_libcall_value, arm_init_cumulative_args):
13568         Use base ABI for conversion libfuncs between HFmode and SFmode.
13569
13570         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
13571
13572         * config/arm/arm.c (aapcs_vfp_sub_candidate): Use V2SImode and
13573         V4SImode as representatives of all 64-bit and 128-bit vector
13574         types.  Allow vector types without vector modes.
13575         (aapcs_vfp_is_call_or_return_candidate): Handle vector types
13576         without vector modes like BLKmode.
13577         (aapcs_vfp_allocate): Handle TImode for non-TARGET_NEON like
13578         BLKmode.  Avoid unsupported vector modes or TImode moves for
13579         non-TARGET_NEON.
13580         (aapcs_vfp_allocate_return_reg): Likewise.
13581         (arm_vector_mode_supported_p): Only support V2SImode, V4HImode and
13582         V8QImode if TARGET_NEON || TARGET_IWMMXT.
13583
13584         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
13585
13586         * config/arm/arm.c (arm_handle_pcs_attribute): New.
13587         (arm_get_pcs_model): Pass attribute arguments to
13588         arm_pcs_from_attribute.
13589         (arm_init_cumulative_args): Use base AAPCS for conversions from
13590         floating-point types to DImode.
13591         (arm_attribute_table): Add pcs attribute.
13592         (arm_handle_pcs_attribute): New.
13593         * config/arm/bpabi.h (DECLARE_LIBRARY_RENAMES): When renaming
13594         conversions from floating-point types to DImode, also declare them
13595         to use base AAPCS and declare functions they call to use base
13596         AAPCS and their RTABI names.
13597
13598         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
13599
13600         * doc/invoke.texi (-mfloat-abi=@var{name}): Remove statement about
13601         -mfloat-abi=hard not being supported for VFP.
13602
13603         2009-05-11  Kazu Hirata  <kazu@codesourcery.com>
13604
13605         * config/sparc/sparc.c (sparc_emit_float_lib_cmp): Pass a libcall
13606         SYMBOL_REF to hard_libcall_value.
13607
13608         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
13609             Richard Earnshaw  <rearnsha@arm.com>
13610
13611         * config/arm/arm.c (aapcs_layout_arg): Once a co-processor argument
13612         has been put on the stack, all remaining co-processory arguments for
13613         that co-processor also go on the stack.
13614
13615         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
13616
13617         * config/arm/arm.c (arm_return_in_memory): Handle returning
13618         vectors of suitable size in registers also for AAPCS case.
13619
13620         2009-01-13  Richard Earnshaw <rearnsha@arm.com>
13621
13622         * doc/tm.texi (TARGET_LIBCALL_VALUE): Add missing end statement.
13623
13624         2008-12-09  Richard Earnshaw <rearnsha@arm.com>
13625
13626         ARM Hard-VFP calling convention
13627         * target-def.h (TARGET_LIBCALL_VALUE): New hook.
13628         * target.h (gcc_target): Add libcall_value to table of call hooks.
13629         * targhooks.h (default_libcall_value): Default implementation.
13630         * targhooks.c (default_libcall_value): Likewise.
13631         * doc/tm.texi (TARGET_LIBCALL_VALUE): Document it.
13632         * optabs.c (expand_unop): Use it.
13633         * expr.h (hard_libcall_value): Pass the function RTX through.
13634         * calls.c (emit_library_call_value_1): Update call to
13635         hard_libcall_value.
13636         * explow.c (hard_libcall_value): Use new target hook.
13637         * config/arm/arm.c: Include cgraph.h
13638         (TARGET_FUNCTION_VALUE): Override default hook.
13639         (arm_pcs_default): New variable.
13640         (arm_override_options): Don't fault hard calling convention with VFP.
13641         Add support for AAPCS variants.
13642         (arm_function_value): Make static.  Handle AAPCS variants.
13643         (arm_libcall_value): New function.
13644         (arm_apply_result_size): Handle VFP registers in results.
13645         (arm_return_in_memory): Rework all AAPCS variants; handle hard-vfp
13646         conventions.
13647         (pcs_attribute_args): New variable.
13648         (arm_pcs_from_attribute): New function.
13649         (arm_get_pcs_model): New function.
13650         (aapcs_vfp_cum_init): New function.
13651         (aapcs_vfp_sub_candidate): New function.
13652         (aapcs_vfp_is_return_candidate): New function.
13653         (aapcs_vfp_is_call_candidate): New function.
13654         (aapcs_vfp_allocate): New function.
13655         (aapcs_vfp_allocate_return_reg): New function.
13656         (aapcs_vfp_advance): New function.
13657         (aapcs_cp_arg_layout): New variable.
13658         (aapcs_select_call_coproc): New function.
13659         (aapcs_select_return_coproc): New function.
13660         (aapcs_allocate_return_reg): New function.
13661         (aapcs_libcall_value): New function.
13662         (aapcs_layout_arg): New function.
13663         (arm_init_cumulative_args): Initialize AAPCS args data.
13664         (arm_function_arg): Handle AAPCS variants using new interface.
13665         (arm_arg_parital_bytes): Likewise.
13666         (arm_function_arg_advance): New function.
13667         (arm_function_ok_for_sibcall): Ensure that sibling calls agree on
13668         calling conventions.
13669         (arm_setup_incoming_varargs): Handle new AAPCS args data.
13670         * arm.h (NUM_VFP_ARG_REGS): Define.
13671         (LIBCALL_VALUE): Update.
13672         (FUNCTION_VALUE): Delete.
13673         (FUNCTION_VALUE_REGNO_P): Add VFP regs.
13674         (arm_pcs): New enum.
13675         (CUMULATIVE_ARGS): New data to support AAPCS argument marshalling.
13676         (FUNCTION_ARG_ADVANCE): Call arm_function_arg_advance.
13677         (FUNCTION_ARG_REGNO_P): Add VFP regs.
13678         * arm-protos.h (arm_function_arg_advance): Add.
13679         (aapcs_libcall_value): Add.
13680         (arm_function_value): Delete.
13681
13682 2009-08-06  Uros Bizjak  <ubizjak@gmail.com>
13683             H.J. Lu  <hongjiu.lu@intel.com>
13684
13685         PR target/40957
13686         * config/i386/i386.c (standard_sse_mode_p): Remove.
13687         (standard_sse_constant_p): Return 2 for integer mode
13688         vector_all_ones_operand when SSE2 is enabled.
13689         (standard_sse_constant_opcode)<case 2>: Always return [v]pcmpeqd.
13690         (ix86_expand_vector_move): Do not check for negative values from
13691         standard_sse_constant_p.
13692
13693 2009-08-06  Richard Guenther  <rguenther@suse.de>
13694
13695         * tree-ssa.c (useless_type_conversion_p_1): Make function and
13696         array type comparisons frontend independent.
13697         * Makefile.in (tree-ssa.o): Add $(TARGET_H) dependency.
13698         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Always fill
13699         out array reference lower bound and element size operands.
13700         (ao_ref_init_from_vn_reference): Properly compute the offset
13701         for ARRAY_RANGE_REF.
13702         (vn_reference_fold_indirect): Fill out array reference lower
13703         bound and element size operands.
13704         * tree-ssa-pre.c (phi_translate_1): Fail if we have to translate
13705         a non gimple valued reference operand which can happen for
13706         array reference lower bound or element size.
13707         (create_component_ref_by_pieces_1): Properly generate the
13708         element size operand for array references.
13709
13710 2009-08-06  Richard Guenther  <rguenther@suse.de>
13711
13712         PR tree-optimization/40964
13713         * tree.c (iterative_hash_host_wide_int): Export.
13714         * tree.h (iterative_hash_host_wide_int): Declare.
13715         * tree-ssa-structalias.c (heapvar_map): New struct.
13716         (heapvar_map_eq): New function.
13717         (heapvar_map_hash): Likewise.
13718         (heapvar_lookup): Adjust.
13719         (heapvar_insert): Likewise.
13720         (make_constraint_from_heapvar): Allow multiple heap variables
13721         per decl at different offsets.
13722         (init_alias_heapvars): Adjust.
13723
13724 2009-08-04  David Daney  <ddaney@caviumnetworks.com>
13725
13726         * config/mips/mips.h (TARGET_SYNC_AFTER_SC): New macro.
13727         * mips_output_sync_loop (mips_output_sync_loop): Only emit
13728         trailing sync if TARGET_SYNC_AFTER_SC.
13729
13730 2009-08-05  David Daney  <ddaney@caviumnetworks.com>
13731
13732         * gcc/config/mips/sync.md (sync_compare_and_swap<mode>,
13733         compare_and_swap_12, sync_add<mode>, sync_<optab>_12,
13734         sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12,
13735         sync_old_nand_12, sync_new_nand_12, sync_sub<mode>,
13736         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
13737         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
13738         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
13739         sync_new_nand<mode>, sync_lock_test_and_set<mode>,
13740         test_and_set_12): Rewrite calls to mips_output_sync_loop.
13741         * gcc/config/mips/mips-protos.h (mips_output_sync_loop): Make
13742         the prototype declaration match the definition.
13743         * gcc/config/mips/mips.c (mips_output_sync_loop):  Emit sync
13744         instructions explicitly.  Add barrier_before and operands
13745         parameters.
13746         * gcc/config/mips/mips.h (MIPS_COMPARE_AND_SWAP,
13747         MIPS_COMPARE_AND_SWAP_12, MIPS_SYNC_OP, MIPS_SYNC_OP_12,
13748         MIPS_SYNC_OLD_OP_12, MIPS_SYNC_NEW_OP_12, MIPS_SYNC_OLD_OP,
13749         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
13750         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE,
13751         MIPS_SYNC_EXCHANGE_12): Remove sync instructions.
13752
13753 2009-08-05  Andrew Pinski  <pinskia@gmail.com>
13754
13755         * tree-ssa-alias.c: Fix intervals to use [) syntax.
13756
13757 2009-08-05  Uros Bizjak  <ubizjak@gmail.com>
13758             Mikulas Patocka  <mikulas@artax.karlin.mff.cuni.cz>
13759
13760         PR target/40906
13761         * config/i386/i386.c (ix86_split_long_move): Fix push of multi-part
13762         source operand.
13763
13764 2009-08-05  Jakub Jelinek  <jakub@redhat.com>
13765
13766         PR rtl-optimization/40924
13767         * dse.c (canon_address): Before calling cselib_expand_value_rtx
13768         make sure canon_rtx (mem_address) isn't simpler than
13769         canon_rtx (expanded_mem_address).
13770
13771 2009-08-05  Li Feng  <nemokingdom@gmail.com>
13772
13773         * graphite-sese-to-poly.c (build_pbb_drs): Remove build alias set
13774         for each poly_bb_p.
13775         (build_scop_drs): Build alias set for each SCoP.
13776
13777 2009-08-04  Sandra Loosemore  <sandra@codesourcery.com>
13778
13779         * doc/invoke.texi (MIPS Options): Document new 1004K -march options.
13780         * config/mips/mips.c (mips_cpu_info_table): Add 1004K cores.
13781         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Add pattern for 1004K.
13782         (MIPS_ARCH_FLOAT_SPEC): Likewise.
13783         (BASE_DRIVER_SELF_SPECS): Likewise.
13784
13785 2009-08-04  Andrew Pinski  <pinskia@gmail.com>
13786
13787         * tree-ssa-alias.c: Fix some comment typos.
13788
13789 2009-08-04  Kaz Kojima  <kkojima@gcc.gnu.org>
13790
13791         * config/sh/linux-atomic.asm (ATOMIC_BOOL_COMPARE_AND_SWAP,
13792         ATOMIC_OP_AND_FETCH, ATOMIC_COMBOP_AND_FETCH): Define.
13793
13794 2009-08-03  Janis Johnson  <janis187@us.ibm.com>
13795
13796         PR c/39902
13797         * simplify-rtx.c (simplify_binary_operation_1): Disable
13798         simplifications for decimal float operations.
13799
13800 2009-08-03  Jakub Jelinek  <jakub@redhat.com>
13801
13802         PR middle-end/40943
13803         * tree-ssa.c (warn_uninitialized_var): Even on LHS warn for
13804         operand of INDIRECT_REF.
13805
13806 2009-08-03  Uros Bizjak  <ubizjak@gmail.com>
13807
13808         * config/alpha/alpha.c (alpha_legitimate_constant_p): Reject CONST
13809         constants referencing TLS symbols.
13810
13811 2009-08-03  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
13812
13813         * config/sh/linux-atomic.asm (ATOMIC_COMPARE_AND_SWAP): Rename
13814         __sync_compare_and_swap_* to __sync_val_compare_and_swap_*.
13815
13816 2009-08-03  Richard Guenther  <rguenther@suse.de>
13817
13818         * tree.c (make_vector_type): Build a main variant first,
13819         get the canonical one and then build the variant.
13820         * tree-ssa.c (useless_type_conversion_p_1): Handle
13821         fixed-point types.
13822         (useless_type_conversion_p): Conversions to pointers to
13823         incomplete record types are useless.
13824
13825 2009-08-03  Richard Guenther  <rguenther@suse.de>
13826
13827         * tree-cfg.c (pass_warn_unused_result): Mark name that no dump
13828         file will be created.
13829         * omp-low.c (pass_diagnose_omp_blocks): Likewise.
13830         * toplev.c (compile_file): Adjust comment.
13831
13832 2009-08-03  Kaz Kojima  <kkojima@gcc.gnu.org>
13833
13834         * config/sh/sh-protos.h (sh_promote_function_mode): Remove.
13835         * config/sh/sh.c (sh_promote_function_mode): Wrap long lines.
13836         (TARGET_PROMOTE_FUNCTION_MODE): Define.
13837         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
13838         (sh_promote_function_mode): Fix typo.
13839
13840 2009-08-03  Andreas Krebbel  <krebbel1@de.ibm.com>
13841
13842         * explow.c (promote_mode): Mark TYPE and PUNSIGNEDP as possibly unused.
13843
13844 2009-08-02  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13845
13846         * pa.c (pa_promote_function_mode): Remove ATTRIBUTE_UNUSED from
13847         declaration arguments.
13848
13849 2009-08-02  Uros Bizjak  <ubizjak@gmail.com>
13850
13851         * config/i386/i386.c (ix86_expand_fp_compare): Use const0_rtx instead
13852         of GEN_INT (0x00) and const1_rtx instead of GEN_INT (0x01).
13853         (ix86_split_ashl): Ditto.
13854         (ix86_expand_vector_init_one_nonzero): Ditto.
13855         (ix86_expand_vector_set): Ditto.
13856         (ix86_expand_reduc_v4sf): Ditto.
13857
13858 2009-08-02  Paolo Bonzini  <bonzini@gnu.org>
13859
13860         * explow.c (promote_function_mode): Remove assert.
13861         * config/sh/sh.c (sh_promote_function_mode): Declare.
13862
13863 2009-08-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13864
13865         * config/pa/pa.c (pa_promote_function_mode): Declare.
13866         Change to static.  Fix promote_mode call.
13867
13868         * gthr-dce.h (CONST_CAST2): Define if not defined.
13869         (__gthread_setspecific): Use CONST_CAST2 to fix warning.
13870
13871         * config.gcc (hppa[12]*-*-hpux10*): Add stdint support.
13872
13873 2009-08-01  Paolo Bonzini  <bonzini@gnu.org>
13874
13875         * expr.c (store_constructor): Use promote_decl_mode.  Remove
13876         now write-only variable unsignedp.
13877         (expand_expr_real_1): Use promote_decl_mode.
13878         * expr.h (promote_function_mode, promote_decl_mode): New.
13879         (promote_mode): Remove last argument.
13880         * function.c (assign_temp): Drop last argument of promote_mode.
13881         (assign_parm_find_data_types): Use promote_function_mode.
13882         (assign_parm_setup_reg): Likewise.
13883         (expand_function_end): Use promote_function_mode.
13884         * calls.c (initialize_argument_information): Use promote_function_mode.
13885         (precompute_arguments): Use promote_mode instead of checking if
13886         only PROMOTE_FUNCTION_MODE is defined.
13887         (expand_call): When making sibcall decisions, use promote_function_mode.
13888         Below, remove an if for targetm.calls.promote_function_return and
13889         and use promote_function_mode.
13890         (emit_library_call_value_1): Use promote_function_mode, fix bug
13891         where promote_mode was passed FOR_CALL == 0 for a return value in an
13892         assertion.
13893         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
13894         * explow.c (promote_function_mode, promote_decl_mode): New.
13895         (promote_mode): Keep only the FOR_CALL == 0 case.
13896         * combine.c (setup_incoming_promotion): Remove test of
13897         promote_function_args.  Use promote_function_mode.
13898         * stmt.c (expand_value_return): Use promote_decl_mode.
13899         (expand_decl): Use promote_decl_mode.
13900
13901         * expr.c (store_constructor): Use promote_decl_mode.  Remove
13902         now write-only variable unsignedp.
13903         (expand_expr_real_1): Use promote_decl_mode.
13904         * expr.h (promote_function_mode, promote_decl_mode): New.
13905         (promote_mode): Remove last argument.
13906         * function.c (assign_temp): Drop last argument of promote_mode.
13907         (assign_parm_find_data_types): Use promote_function_mode.
13908         (assign_parm_setup_reg): Likewise.
13909         (expand_function_end): Use promote_function_mode.
13910         * calls.c (initialize_argument_information): Use promote_function_mode.
13911         (precompute_arguments): Use promote_mode instead of checking if
13912         only PROMOTE_FUNCTION_MODE is defined.
13913         (expand_call): When making sibcall decisions, use promote_function_mode.
13914         Below, remove an if for targetm.calls.promote_function_return and
13915         and use promote_function_mode.
13916         (emit_library_call_value_1): Use promote_function_mode, fix bug
13917         where promote_mode was passed FOR_CALL == 0 for a return value in an
13918         assertion.
13919         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
13920         * explow.c (promote_function_mode, promote_decl_mode): New.
13921         (promote_mode): Keep only the FOR_CALL == 0 case.
13922         * combine.c (setup_incoming_promotion): Remove test of
13923         promote_function_args.  Use promote_function_mode.
13924         * stmt.c (expand_value_return): Use promote_decl_mode.
13925         (expand_decl): Use promote_decl_mode.
13926
13927         * explow.c (promote_function_mode): Just call the target hook.
13928         * targhooks.c (default_promote_function_mode,
13929         default_promote_function_mode_always_promote): New.
13930         * targhooks.h (default_promote_function_mode,
13931         default_promote_function_mode_always_promote): Declare.
13932         * target.h (promote_function_args, promote_function_return): Remove.
13933         (promote_function_mode): New.
13934         * target-def.h (TARGET_PROMOTE_FUNCTION_ARGS,
13935         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
13936         (TARGET_PROMOTE_FUNCTION_MODE): New.
13937         (TARGET_CALLS): Adjust.
13938         * system.h (TARGET_PROMOTE_FUNCTION_ARGS,
13939         TARGET_PROMOTE_FUNCTION_RETURN, PROMOTE_FUNCTION_MODE): Poison.
13940
13941         * config/s390/s390.h (PROMOTE_FUNCTION_MODE): Move...
13942         * config/s390/s390.c (s390_promote_function_mode): ... here,
13943         with pointer handling.
13944         (TARGET_PROMOTE_FUNCTION_MODE): Define.
13945         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
13946
13947         * config/sparc/sparc.h (PROMOTE_FUNCTION_MODE): Move...
13948         * config/sparc/sparc.c (sparc_promote_function_mode): ... here,
13949         with pointer handling.
13950         (TARGET_PROMOTE_FUNCTION_MODE): Define.
13951         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
13952
13953         * config/sh/sh-protos.h (sh_promote_function_mode): New.
13954         * config/sh/sh.c (sh_promote_function_mode): New.
13955         (TARGET_PROMOTE_FUNCTION_MODE): Define.
13956         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
13957
13958         * config/cris/cris.h (PROMOTE_FUNCTION_MODE): Move...
13959         * config/cris/cris.c (cris_promote_function_mode): ... here.
13960         (TARGET_PROMOTE_FUNCTION_MODE): Define.
13961         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
13962
13963         * config/mmix/mmix.h (PROMOTE_FUNCTION_MODE): Move...
13964         * config/mmix/mmix.c (mmix_promote_function_mode): ... here.
13965         (TARGET_PROMOTE_FUNCTION_MODE): Define.
13966         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
13967
13968         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Move...
13969         * config/arm/arm.c (arm_promote_function_mode): ... here, without
13970         complex type handling.
13971         (TARGET_PROMOTE_FUNCTION_MODE): Define.
13972         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
13973
13974         * config/pa/pa.c (pa_promote_function_mode): New.
13975         (TARGET_PROMOTE_FUNCTION_MODE): Define.
13976         (TARGET_PROMOTE_FUNCTION_RETURN): Remove.
13977
13978         * config/alpha/alpha.c (TARGET_PROMOTE_FUNCTION_ARGS,
13979         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
13980         (TARGET_PROMOTE_FUNCTION_MODE): Define equivalently.
13981         * config/xtensa/xtensa.c: Likewise.
13982         * config/stormy16/stormy16.c: Likewise.
13983         * config/iq2000/iq2000.c: Likewise.
13984         * config/rs6000/rs6000.c: Likewise.
13985         * config/picochip/picochip.c: Likewise.
13986         * config/arc/arc.c: Likewise.
13987         * config/mcore/mcore.c: Likewise.
13988         * config/score/score.c: Likewise.
13989         * config/mips/mips.c: Likewise.
13990         * config/bfin/bfin.c: Likewise.
13991         * config/ia64/ia64.c: Likewise (disabled though).
13992
13993         * config/frv/frv.h: Remove pointless remark.
13994
13995         * doc/tm.texi (PROMOTE_FUNCTION_MODE,
13996         TARGET_PROMOTE_FUNCTION_ARGS,
13997         TARGET_PROMOTE_FUNCTION_RETURN): Consolidate into...
13998         (TARGET_PROMOTE_FUNCTION_MODE): ... this.
13999
14000 2009-08-01  Sebastian Pop  <sebastian.pop@amd.com>
14001
14002         * doc/invoke.texi (-fgraphite-force-parallel): Renamed
14003         -floop-parallelize-all.
14004         * toplev.c (process_options): Rename flag_graphite_force_parallel to
14005         flag_loop_parallelize_all.
14006         * tree-ssa-loop.c (gate_graphite_transforms): Same.
14007         * graphite.c (graphite_transform_loops): Same.
14008         * common.opt: Same.
14009         * graphite-poly.c (apply_poly_transforms): Same.
14010
14011 2009-07-31  Richard Earnshaw  <rearnsha@arm.com>
14012
14013         PR tree-optimization/40914
14014         * ipa-prop.c (ipa_get_ptr_load_param): New argument use_delta,
14015         if set, then check the delta field of the PMF record.
14016         (ipa_get_stmt_member_ptr_load_param): Propagate new param use_delta.
14017         (ipa_analyze_call_uses): Handle machines where the vbit for a PMF
14018         call is stored in the delta.
14019
14020 2009-07-31  Adam Nemet  <anemet@caviumnetworks.com>
14021
14022         * config/mips/mips.md (*clear_upper32_dext): New pattern.
14023
14024 2009-07-31  Uros Bizjak  <ubizjak@gmail.com>
14025
14026         * config/i386/bsd.h (ASM_BYTE): New define.
14027         * config/i386/darwin.h (ASM_BYTE): Rename from ASM_BYTE_OP.
14028         * config/i386/att.h (ASM_BYTE): New define. Use ASM_BYTE instead of
14029         .byte.  Use fputs or putc instead of fprintf where appropriate.
14030         * config/i386/i386-interix.h: Use ASM_BYTE instead of .byte.  Use
14031         fputs or putc instead of fprintf where appropriate.
14032         * config/i386/i386elf.h: Ditto.
14033         * config/i386/sysv4.h: Ditto.
14034
14035         * config/i386/i386.c (TARGET_ASM_BYTE_OP): New define.
14036         * config/i386/i386.md (x86_sahf_1): Use ASM_BYTE instead of .byte.
14037         (*tls_global_dynamic_64): Ditto.
14038
14039 2009-07-31  Christian Bruel  <christian.bruel@st.com>
14040
14041         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
14042
14043 2009-07-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
14044
14045         * config/arm/arm.c (arm_arm_address_cost): Fix typo.
14046         Remove dead code for MINUS.
14047
14048 2009-07-31  Anthony Green  <green@moxielogic.com>
14049
14050         * config/moxie/moxie.c (moxie_expand_prologue): Use $r5 instead of
14051         $r12 in prologue.
14052         (moxie_expand_epilogue): Ditto for epilogue.
14053         (moxie_setup_incoming_varargs): ABI change.  Use 5 registers for
14054         incoming arguments.
14055         (moxie_function_arg): Ditto.
14056         (moxie_pass_by_reference): Ditto.
14057         (moxie_arg_partial_bytes): Ditto.
14058         * config/moxie/moxie.h (CALL_USED_REGISTERS): Ditto.
14059         (FUNCTION_ARG_ADVANCE) Ditto.
14060         (REG_PARM_STACK_SPACE) Ditto.
14061         (FUNCTION_ARG_REGNO_P) Dito.
14062
14063         * config.gcc: Add moxie linux config support.
14064         * gcc/config/moxie/uclinux.h: New file.
14065
14066 2009-07-31  DJ Delorie  <dj@redhat.com>
14067
14068         * config/sh/sh.md (UNSPECV_SP_SWITCH_B): New.
14069         (UNSPECV_SP_SWITCH_E): New.
14070         (sp_switch_1): Change to an unspec.
14071         (sp_switch_2): Change to an unspec.  Don't use post-inc when we
14072         replace $r15.
14073         * config/sh/sh.c (sh_expand_prologue): Use the constant pool to
14074         reference the new stack's address
14075
14076 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
14077
14078         * Makefile.in (OBJS-common): Added dependence on graphite-blocking.o,
14079         graphite-clast-to-gimple.o, graphite-dependences.o,
14080         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
14081         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o.
14082         (graphite-blocking.o,
14083         graphite-clast-to-gimple.o, graphite-dependences.o,
14084         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
14085         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o): New.
14086         * cfgloop.c (alloc_loop): Set loop->can_be_parallel to false.
14087         * cfgloop.h (struct loop): Add can_be_parallel field.
14088         * common.opt (fgraphite-identity): Moved up.
14089         (fgraphite-force-parallel): New flag.
14090         * graphite.c: Rewrite.
14091         * graphite.h: Rewrite.
14092         * passes.c (init_optimization_passes): Schedule a pass of DCE and LIM
14093         after Graphite.
14094         * toplev.c (graphite_out_file): New file descriptor.
14095         (graphite_in_file): New.
14096         (process_options): flag_graphite_force_parallel cannot be used without
14097         Graphite.
14098         * tree-ssa-loop.c: Include toplev.h.
14099         (gate_graphite_transforms): Enable flag_graphite for
14100         flag_graphite_force_parallel.
14101
14102 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
14103
14104         * ChangeLog.graphite: New.
14105         * graphite-blocking.c: New.
14106         * graphite-clast-to-gimple.c: New.
14107         * graphite-clast-to-gimple.h: New.
14108         * graphite-dependences.c: New.
14109         * graphite-dependences.h: New.
14110         * graphite-interchange.c: New.
14111         * graphite-poly.c: New.
14112         * graphite-poly.h: New.
14113         * graphite-ppl.c: New.
14114         * graphite-ppl.h: New.
14115         * graphite-scop-detection.c: New.
14116         * graphite-scop-detection.h: New.
14117         * graphite-sese-to-poly.c: New.
14118         * graphite-sese-to-poly.h: New.
14119         * sese.c: New.
14120         * sese.h: New.
14121
14122 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
14123
14124         * tree-chrec.c (evolution_function_right_is_integer_cst): New.
14125         * tree-chrec.h (evolution_function_right_is_integer_cst): Declared.
14126
14127 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
14128
14129         * tree-chrec.c (operator_is_linear): Handle BIT_NOT_EXPR.
14130         (scev_is_linear_expression): Return false if the evolution is not
14131         affine multivariate.
14132
14133 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
14134
14135         * tree-data-ref.c (graphite_find_data_references_in_stmt): New.
14136         * tree-data-ref.h (graphite_find_data_references_in_stmt): Declared.
14137
14138 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
14139
14140         * tree-data-ref.c (debug_data_references): New.
14141         (debug_data_reference): New.
14142         * tree-data-ref.h (debug_data_references): Declared.
14143         (debug_data_reference): Declared.
14144
14145 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
14146
14147         * tree-data-ref.c (stmt_simple_memref_p: Removed.
14148         * tree-data-ref.h (scop_p): Removed.
14149         (struct data_reference): Remove field scop.
14150         (DR_SCOP): Removed.
14151         (stmt_simple_memref_p): Removed.
14152
14153 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
14154
14155         * cfgloop.h (create_empty_loop_on_edge): Pass an extra argument.
14156         * cfgloopmanip.c (create_empty_loop_on_edge): Leave the loop_latch
14157         basic block empty.
14158
14159 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
14160
14161         * doc/invoke.texi (-fgraphite-force-parallel): Documented.
14162
14163 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
14164
14165         * doc/invoke.texi (-fgraphite-identity): Documented.
14166
14167 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
14168
14169         * tree-scalar-evolution.c: Fix comment.
14170         (instantiate_scev_1): Return unknow from scev instantiation if the
14171         result is not above instantiate_below.
14172
14173 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
14174
14175         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop): Not
14176         static anymore.  Instantiate the symbols that may have been introduced
14177         by chrec_apply.
14178         * tree-scalar-evolution.h (compute_overall_effect_of_inner_loop):
14179         Declared.
14180
14181 2009-07-30  DJ Delorie  <dj@redhat.com>
14182
14183         * config/mep/mep.c (mep_asm_init_sections): Add section flags and
14184         .vliw directive to VLIW sections.
14185
14186 2009-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
14187
14188         * Makefile.in (AUTOCONF, ACLOCAL, ACLOCAL_AMFLAGS, aclocal_deps):
14189         New variables.
14190         ($(srcdir)/configure, $(srcdir)/aclocal.m4): New rules.
14191         (AUTOHEADER): New variable.
14192         ($(srcdir)/cstamp-h.in): Use it.
14193
14194 2009-07-30  Michael Meissner  <meissner@linux.vnet.ibm.com>
14195             Pat Haugen  <pthaugen@us.ibm.com>
14196             Revital Eres <ERES@il.ibm.com>
14197
14198         * config/rs6000/vector.md (VEC_F): Add VSX support.
14199         (VEC_A): Ditto.
14200         (VEC_N): Ditto.
14201         (mov<mode>): Ditto.
14202         (vector_load_<mode>): Ditto.
14203         (vector_store_<mode>): Ditto.
14204         (vector GPR move split): Ditto.
14205         (vec_reload_and_plus_<mptrsize>): Ditto.
14206         (vec_reload_and_reg_<mptrsize>): Ditto.
14207         (add<mode>3): Ditto.
14208         (sub<mode>3): Ditto.
14209         (mul<mode>3): Ditto.
14210         (neg<mode>2): Ditto.
14211         (abs<mode>2): Ditto.
14212         (smin<mode>3): Ditto.
14213         (smax<mode>3): Ditto.
14214         (vector_eq<mode>): Ditto.
14215         (vector_gt<mode>): Ditto.
14216         (vector_ge<mode>): Ditto.
14217         (vector_gtu<mode>): Ditto.
14218         (vector_select_<mode>_uns): Ditto.
14219         (vector_eq_<mode>_p): Ditto.
14220         (vector_gt_<mode>_p): Ditto.
14221         (vector_ge_<mode>_p): Ditto.
14222         (vector_gtu_<mode>_p): Ditto.
14223         (cr6_test_for_zero): Ditto.
14224         (cr6_test_for_zero_reverse): Ditto.
14225         (cr6_test_for_lt): Ditto.
14226         (cr6_test_for_lt_reverse): Ditto.
14227         (xor<mode>3): Ditto.
14228         (ior<mode>3): Ditto.
14229         (and<mode>3): Ditto.
14230         (one_cmpl<mode>2): Ditto.
14231         (nor<mode>2): Ditto.
14232         (andc<mode>2): Ditto.
14233         (float<VEC_int<mode>2): Ditto.
14234         (unsigned_float<VEC_int><mode>2): Ditto.
14235         (fix_trunc<mode><VEC_int>2): Ditto.
14236         (fixuns_trunc<mode><VEC_int>2): Ditto.
14237         (vec_init<mode>):
14238         (vec_set<mode>): Ditto.
14239         (vec_extract<mode>): Ditto.
14240         (vec_interleave_highv4sf): Ditto.
14241         (vec_interleave_lowv4sf): Ditto.
14242         (vec_realign_load_<mode>): Ditto.
14243         (vec_shl_<mode>): Ditto.
14244         (vec_shr_<mode>): Ditto.
14245         (div<mode>3): New patterns for VSX.
14246         (vec_interleave_highv2df): Ditto.
14247         (vec_interleave_lowv2df): Ditto.
14248         (vec_pack_trunc_v2df): Ditto.
14249         (vec_pack_sfix_trunc_v2df): Ditto.
14250         (vec_pack_ufix_trunc_v2df): Ditto.
14251         (vec_unpacks_hi_v4sf): Ditto.
14252         (vec_unpacks_lo_v4sf): Ditto.
14253         (vec_unpacks_float_hi_v4si): Ditto.
14254         (vec_unpacks_float_lo_v4si): Ditto.
14255         (vec_unpacku_float_hi_v4si): Ditto.
14256         (vec_unpacku_float_lo_v4si): Ditto.
14257         (movmisalign<mode>): Ditto.
14258         (vector_ceil<mode>2): New patterns for vectorizing math library.
14259         (vector_floor<mode>2): Ditto.
14260         (vector_btrunc<mode>2): Ditto.
14261         (vector_copysign<mode>3): Ditto.
14262
14263         * config/rs6000/predicates.md (easy_vector_constant_msb): New
14264         predicate for setting the high bit in each word, used for copysign.
14265
14266         * config/rs6000/ppc-asm.h (f19): Whitespace.
14267         (f32-f63): Define if VSX.
14268         (v0-v31): Define if Altivec.
14269         (vs0-vs63): Define if VSX.
14270
14271         * config/rs6000/t-rs6000 (MD_INCLUDES): Add power7.md and vsx.md.
14272
14273         * config/rs6000/power7.md: New file, provide tuning parameters for
14274         -mcpu=power7.
14275
14276         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Add VSX support.
14277         (rs6000_cpu_cpp_builtins): Ditto.
14278         (altivec_overloaded_builtins): Ditto.
14279         (altivec_resolve_overloaded_builtin): Ditto.
14280
14281         * config/rs6000/rs6000.opt (-mno-vectorize-builtins): Add new
14282         debug switch to disable vectorizing simple math builtin
14283         functions.
14284
14285         * config/rs6000/rs6000.c (rs6000_builtin_vectorized_function):
14286         Vectorize simple math builtin functions.
14287         (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define target
14288         hook to vectorize math builtins.
14289         (rs6000_override_options): Enable -mvsx on -mcpu=power7.
14290         (rs6000_builtin_conversion): Add VSX/power7 support.
14291         (rs6000_builtin_vec_perm): Ditto.
14292         (vsplits_constant): Add support for loading up a vector constant
14293         with just the high bit set in each part.
14294         (rs6000_expand_vector_init): Add VSX/power7 support.
14295         (rs6000_expand_vector_set): Ditto.
14296         (rs6000_expand_vector_extract): Ditto.
14297         (rs6000_emit_move): Ditto.
14298         (bdesc_3arg): Ditto.
14299         (bdesc_2arg): Ditto.
14300         (bdesc_1arg): Ditto.
14301         (rs6000_expand_ternop_builtin): Ditto.
14302         (altivec_expand_builtin): Ditto.
14303         (rs6000_expand_unop_builtin): Ditto.
14304         (rs6000_init_builtins): Ditto.
14305         (altivec_init_builtins): Ditto.
14306         (builtin_function_type): Ditto.
14307         (rs6000_common_init_builtins): Ditto.
14308         (rs6000_handle_altivec_attribute); Ditto.
14309         (rs6000_mangle_type): Ditto.
14310         (rs6000_vector_mode_supported_p): Ditto.
14311         (rs6000_mode_dependent_address): Altivec addresses with AND -16
14312         are mode dependent.
14313
14314         * config/rs6000/vsx.md: New file for VSX support.
14315
14316         * config/rs6000/rs6000.h (EASY_VECTOR_MSB): New macro for
14317         identifing values with just the most significant bit set.
14318         (enum rs6000_builtins): Add builtins for VSX.  Add simple math
14319         vectorized builtins.
14320
14321         * config/rs6000/altivec.md (UNSPEC_VRFIP): Delete.
14322         (UNSPEC_VRFIM): Delete.
14323         (splitter for loading up vector with most significant bit): New
14324         splitter for vectorizing copysign.
14325         (altivec_vrfiz): Rename from altivec_fturncv4sf2.  Add support for
14326         vectorizing simple math functions.
14327         (altivec_vrfip): Add support for vectorizing simple math functions.
14328         (altivec_vrfim): Ditto.
14329         (altivec_copysign_v4sf3): New insn for Altivec copysign support.
14330
14331         * config/rs6000/rs6000.md (UNSPEC_BPERM): New constant.
14332         (power7.md, vsx.md): Include for power7 support.
14333         (copysigndf3): Use VSX instructions if -mvsx.
14334         (negdf2_fpr): Ditto.
14335         (absdf2_fpr): Ditto.
14336         (nabsdf2_fpr): Ditto.
14337         (adddf3_fpr): Ditto.
14338         (subdf3_fpr): Ditto.
14339         (muldf3_fpr): Ditto.
14340         (divdf3_fpr): Ditto.
14341         (fix_truncdfdi2_fpr): Ditto.
14342         (cmpdf_internal1): Ditto.
14343         (fred, fred_fpr): Convert into expander/insn to add VSX support.
14344         (btruncdf2, btruncdf2_fpr): Ditto.
14345         (ceildf2, ceildf2_fpr): Ditto.
14346         (floordf2, floordf2_fpr): Ditto.
14347         (floatdidf2, floatdidf2_fpr): Ditto.
14348         (fmadddf4_fpr): Name insn.  Use VSX instructions if -mvsx.
14349         (fmsubdf4_fpr): Ditto.
14350         (fnmadddf4_fpr_1): Ditto.
14351         (fnmadddf4_fpr_2): Ditto.
14352         (fnmsubdf4_fpr_1): Ditto.
14353         (fnmsubdf4_fpr_2): Ditto.
14354         (fixuns_truncdfdi2): Add expander for VSX support.
14355         (fix_truncdfdi2): Ditto.
14356         (fix_truncdfsi2): Ditto.
14357         (ftruncdf2): Ditto.
14358         (btruncsf2): Whitespace.
14359         (movdf_hardfloat32): Add support for VSX registers.
14360         (movdf_softfloat32): Ditto.
14361         (movdf_hardfloat64): Ditto.
14362         (movdf_hardfloat64_mfpgpr): Ditto.
14363         (movdf_softfloat64): Ditto.
14364         (movti splitters): Add check for vector registers supporting
14365         TImode in the future.
14366         (bpermd): Add power7 bpermd instruction.
14367
14368         * config/rs6000/altivec.h (vec_div): Define if VSX.
14369         (vec_mul): Ditto.
14370         (vec_msub): Ditto.
14371         (vec_nmadd): Ditto.
14372         (vec_nearbyint): Ditto.
14373         (vec_rint): Ditto.
14374         (vec_sqrt): Ditto.
14375         (all predicates): Use the generic builtin function, and not the V4SF
14376         specific function so that the predicates will work with VSX's V2DF.
14377         (vec_all_*): Ditto.
14378         (vec_any_*): Ditto.
14379
14380         * doc/extend.texi (PowerPC Altivec/VSX Built-in Functions):
14381         Document new VSX functions and types.
14382
14383         * doc/invoke.texi (PowerPc options): Document -mpopcntd, -mvsx
14384         switches.
14385
14386         * doc/md.texi (PowerPC constraints): Document "wd", "wf", "ws",
14387         "wa", and "j" constraints.  Modify "v" to talk about Altivec
14388         instead of just vector.
14389
14390 2009-07-30  Andrew MacLeod  <amacleod@redhat.com>
14391
14392         PR debug/26475
14393         * tree-into-ssa.c (insert_phi_nodes_for, rewrite_add_phi_arguments): Set
14394         location for phi arguments.
14395         (rewrite_update_phi_arguments): Find locations for reaching defs.
14396         * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis):
14397         Add location to add_phi_arg calls.
14398         * tree-loop-districbution.c (update_phis_for_loop_copy): Add locations.
14399         * tree-ssa-loop-manip.c (create_iv, add_exit_phis_edge,
14400         split_loop_exit_edge, tree_transform_and_unroll_loop): Add locations.
14401         * tree-tailcall.c (add_successor_phi_arg, eliminate_tail_call,
14402         create_tailcall_accumulator, tree_optimize_tail_calls_1): Add locations.
14403         * tree.h (struct phi_arg_d): Add location_t to PHI arguments.
14404         * tree-phinodes.c (make_phi_node): Initialize location.
14405         (resize_phi_node): Initialize location to UNKNOWN_LOCATION.
14406         (add_phi_arg): Add location parameter.
14407         (remove_phi_arg_num): Move location when moving phi argument.
14408         * omp-low.c (expand_parallel_call, expand_omp_for_static_chunk): Set
14409         location.
14410         * tree-vect-loop-manip.c (slpeel_update_phis_for_duplicate_loop,
14411         slpeel_update_phi_nodes_for_guard1,
14412         slpeel_update_phi_nodes_for_guard2,
14413         slpeel_tree_duplicate_loop_to_edge_cfg, set_prologue_iterations,
14414         vect_loop_versioning): Set locations.
14415         * tree-parloops.c (create_phi_for_local_result,
14416         transform_to_exit_first_loop, create_parallel_loop): Add locations.
14417         * gimple-pretty-print.c (dump_gimple_phi): Dump lineno's if present.
14418         * tree-vect-loop.c (get_initial_def_for_induction,
14419         vect_create_epilog_for_reduction, vect_finalize_reduction): Add
14420         locations.
14421         * tree-flow-inline.h (gimple_phi_arg_location): New.  Return locus.
14422         (gimple_phi_arg_location_from_edge): New.  Return locus from an edge.
14423         (gimple_phi_arg_set_location): New.  Set locus.
14424         (gimple_phi_arg_has_location): New.  Check for locus.
14425         (redirect_edge_var_map_location): New.  Return locus from var_map.
14426         * tree-vect-data-refs.c (vect_setup_realignment): Set location.
14427         * tree-ssa-phiopt.c (conditional_replacement): Set locus when
14428         combining PHI arguments.
14429         (cond_store_replacement): Set location.
14430         * cfgexpand.c (gimple_assign_rhs_to_tree): Transfer locus if possible.
14431         * grpahite.c (add_loop_exit_phis, add_guard_exit_phis,
14432         scop_add_exit_phis_edge): Add locations.
14433         * tree-cfgcleanup.c (remove_forwarder_block,
14434         remove_forwarder_block_with_phi): Add locations.
14435         * tree-ssa-pre.c (insert_into_preds_of_block): Add locations.
14436         * tree-predcom.c (initialize_root_vars, initialize_root_vars_lm): Add
14437         locations.
14438         * tree-ssa-dce.c (forward_edge_to_pdom): Add locations.
14439         * tree-ssa.c (redirect_edge_var_map_add, ssa_redirect_edge,
14440         flush_pending_stmts): Add source location.
14441         * lambda-code.c (perfect_nestify): Maintain location stack with argument
14442         stack to preserve locations.
14443         * tree-vect-stmts.c (vectorizable_load): Add location.
14444         * tree-inline.c (copy_phis_for_bb): Copy locus.
14445         (setup_one_parameter): Add call locus to inlined parameter stmts.
14446         (initialize_inlined_parameters): Pass in call location as parameter
14447         assignment locus.
14448         (tree_function_versioning): Pass location to setup_one_parameter.
14449         * tree-ssa-phiprop.c (phiprop_insert_phi): Set locations.
14450         * tree-outof-ssa.c (struct _elim_graph): Add source_location vecs for
14451         copy and edge lists.
14452         (insert_partition_copy_on_edge, insert_value_copy_on_edge,
14453         insert_rtx_to_part_on_edge, insert_part_to_rtx_on_edge): Provide a
14454         locus parameter and override the stmt default if provided.
14455         (new_elim_graph, clear_elim_graph, delete_elim_graph,
14456         elim_graph_add_edge, elim_graph_remove_succ_edge,
14457         FOR_EACH_ELIM_GRAPH_SUCC, FOR_EACH_ELIM_GRAPH_PRED, eliminate_build,
14458         elim_forward, elim_unvisited_predecessor, elim_backward, elim_create,
14459         eliminate_phi):  Add locus info in elimination graph for each edge and
14460         value copy.
14461         (insert_backedge_copies): Copy locus if present.
14462         * tree-flow.h (struct _edge_var_map): Add locus field.
14463         * tree-switch_conversions.c (fix_phi_nodes): Add locations.
14464         * tree-cfg.c (reinstall_phi_args, gimple_make_forwarder_block,
14465         add_phi_args_after_copy_edge, gimple_lv_adjust_loop_header_phi): Add
14466         locations.
14467         * ipa-struct-reorg.c (make_edge_and_fix_phis_of_dest): Add locations.
14468
14469 2009-07-30  Martin Jambor  <mjambor@suse.cz>
14470
14471         PR tree-optimization/40570
14472         * ipa-inline.c (cgraph_decide_inlining): Watch out for dead single
14473         use inlining loops.
14474
14475 2009-07-30  Razya Ladelsky <razya@il.ibm.com>
14476
14477         * ssa-loop-manip.c: Include langhooks.h.
14478         (rewrite_phi_with_iv): New.
14479         (rewrite_all_phi_nodes_with_iv): New.
14480         (canonicalize_loop_ivs): Move here from tree-parloops.c.
14481         Remove reduction_list argument. Use rewrite_all_phi_nodes_with_iv.
14482         * tree-parloops.c (loop_parallel_p): Move out all conditions
14483         except dependency check.
14484         (canonicalize_loop_ivs): Move to tree-ssa-loop-manip.c.
14485         (gen_parallel_loop): Call canonicalize_loop_ivs without
14486         reduction_list argument.
14487         (build_new_reduction): New.
14488         (gather_scalar_reductions): New.
14489         (try_get_loop_niter): New.
14490         (try_create_reduction_list): New.
14491         (parallleize_loops): Change the parallel conditions check.
14492         * tree-flow.h (canonicalize_loop_ivs): Remove one argument.
14493         * Makefile.in (tree-ssa-loop-manip.o): Add langhooks.h dependency.
14494
14495 2009-07-30  Dave Korn  <dave.korn.cygwin@gmail.com>
14496
14497         * opt-functions.awk (opt_args): Allow argument to be enclosed in
14498         curly braces.
14499         * doc/options.texi (Option properties):  Mention new quoting syntax.
14500
14501 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
14502
14503         * config/alpha/alpha.c (alpha_start_function):
14504         Handle VMS_DEBUG_MAIN_POINTER
14505         * config/alpha/vms.h (VMS_DEBUG_MAIN_POINTER): Define new macro.
14506         * doc/invoke.texi: Document -mdebug-main switch.
14507
14508 2009-07-29  Richard Henderson  <rth@redhat.com>
14509
14510         * cgraph.c (cgraph_set_call_stmt_including_clones): Tidy.
14511         (cgraph_create_edge_including_clones): Likewise.
14512         * tree-inline.c (copy_bb): Operate on the correct edges
14513         when updating the callgraph.
14514
14515 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
14516
14517         * config/alpha/vms-cc.c: Deleted.
14518         * config/alpha/vms-ld.c: Deleted.
14519         * config/alpha/t-vms64: Moved to config/vms
14520         * config/alpha/vms-crt0-64.c: Moved to config/vms
14521         * config/alpha/vms-crt0.c: Moved to config/vms
14522         * config/alpha/vms-psxcrt0-64.c: Moved to config/vms
14523         * config/alpha/vms-psxcrt0.c: Moved to config/vms
14524         * config/alpha/xm-vms.h: Moved to config/vms
14525         * config/alpha/x-vms: Moved to config/vms
14526         * config/alpha/t-vms (vcrt0.o, pcrt0.o): Move rules to new file
14527         config/vms/t-vms.
14528         * config/vms/t-vms: Moved here from config/alpha. Alpha specific
14529         parts removed. (STMP_FIXPROTO, STMP_FIXINC, LIMITS_H_TEST): Set.
14530         (version): Set.
14531         * config/vms/t-vms64: Moved here from config/alpha
14532         * config/vms/vms-crt0-64.c: Moved here from config/alpha.
14533         (argc,argv,envp): Enforce 32bit malloc'ing.
14534         * config/vms/vms-psxcrt0-64.c: Likewise.
14535         * config/vms/vms-crt0.c: Moved here from config/alpha.
14536         * config/vms/vms-psxcrt0.c: Likewise.
14537         * config/vms/vms-crtl-64.h: New file.
14538         * config/vms/vms-crtl.h: New file.
14539         * config/vms/vms.opt: New file.
14540         * config/vms/xm-vms64.h: New file.
14541         * config/vms/xm-vms.h: Moved here from config/alpha.
14542         (STANARD_EXEC_PREFIX, STANDARD_STARTFILE_PREFIX, STANDARD_INCLUDE_DIR):
14543         Set.
14544         * config/vms/x-vms: Moved here from config/alpha.
14545         (version, VMS_EXTRA_PARTS): Moved to t-vms.
14546         (vms-ld.o, vms-cc.o): Removed.
14547         (LN, LN_S, USE_COLLECT2, POD2MAN): Set.
14548
14549 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
14550
14551         * dwarf2out.c (add_name_and_src_coords_attributes): Push on the
14552         correct stack (obvious VMS fix).
14553
14554 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
14555
14556         * dwarf2out.c (output_file_names): Output VMS style file name, size,
14557         date, version info if VMS_DEBUGGING_INFO defined.
14558         * vmsdgbout.c (vms_file_stats_name): New functon. VMS style file name,
14559         size, date calculating code moved here.
14560
14561 2009-07-29  Paul Brook  <paul@codesourcery.com>
14562
14563         * config/arm/lib1funcs.asm (clear_cache): Use ARM_FUNC_START and
14564         do_push/do_pop.
14565
14566 2009-07-29  Uros Bizjak  <ubizjak@gmail.com>
14567
14568         PR target/40577
14569         * config/alpha/alpha.c (alpha_expand_unaligned_store): Convert src
14570         to DImode when generating insq_le insn.
14571
14572 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
14573
14574         * dwarf2out.c (DWARF2_INDIRECT_STRING_SUPPORT_MISSING_ON_TARGET):
14575         New macro set for VMS_DEBUGGGING_INFO.
14576         (AT_string_form): Use it.
14577
14578 2009-07-28  DJ Delorie  <dj@redhat.com>
14579
14580         * config/mep/mep.c (vtext_section): New.
14581         (vftext_section): New.
14582         (ftext_section): New.
14583         (mep_select_section): Add support for functions.
14584         (mep_unique_section): Likewise.
14585         (mep_asm_init_sections): Likewise.
14586         (mep_encode_section_info): Remove it from here.
14587
14588         * config/mep/mep.h (USE_SELECT_SECTION_FOR_FUNCTIONS): Define.
14589
14590 2009-07-28  Paolo Bonzini  <bonzinI@gnu.org>
14591
14592         * tree.h (TREE_DEPRECATED): Document it is used for types too.
14593         (TYPE_VECTOR_OPAQUE): Use default_def_flag
14594
14595 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
14596
14597         * dwarf2out.c (output_file_names): Test new macro
14598         DWARF2_DIR_SHOULD_END_WITH_SEPARATOR.
14599         (add_comp_dir_attribute): Likewise.
14600
14601 2009-07-28  Kai Tietz  <kai.tietz@onevision.com>
14602
14603         * config/i386/mingw-w64.h (LINK_SPEC): Add
14604         separating space between commands.
14605
14606 2009-07-28  Jan Hubicka  <jh@suse.cz>
14607
14608         PR tree-optimization/40759
14609         * tree-ssa-dce.c (mark_virtual_phi_result_for_renaming): Mark all uses
14610         for renaming.
14611
14612 2009-07-27  DJ Delorie  <dj@redhat.com>
14613
14614         * config/mep/mep.c (mep_expand_builtin_saveregs): Make sure 64-bit
14615         types are dword-aligned.
14616         (mep_expand_va_start): Likewise.
14617
14618 2009-07-27  Olivier Hainque  <hainque@adacore.com>
14619             Douglas B Rupp  <rupp@gnat.com>
14620
14621         * convert.c (convert_to_pointer): Don't assume the target
14622         pointer type is POINTER_SIZE long. Fetch its precision instead.
14623
14624 2009-07-27  Douglas B Rupp  <rupp@gnat.com>
14625
14626         * system.h (fopen): Undefine if macro.
14627
14628 2009-07-27  Jakub Jelinek  <jakub@redhat.com>
14629
14630         * dwarf2out.c (output_cfi_p): Removed.
14631         (output_cfis): New function.
14632         (output_fde): New function, split from output_call_frame_info.
14633         (output_call_frame_info): Use it.
14634         (dwarf2out_switch_text_section): Use output_cfis.
14635
14636 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
14637
14638         * config/i386/cygming.h (DWARF2_UNWIND_INFO): Error build when
14639         TARGET_BI_ARCH is specified without enabling SJLJ.
14640         * config/i386/mingw32.h (MD_UNWIND_SUPPORT): Define MD_UNWIND_SUPPORT,
14641         if TARGET_64BIT and TARGET_BI_ARCH aren't defined.
14642
14643 2009-07-26  Mikael Pettersson <mikpe@it.uu.se>
14644
14645         * arm.md (negdi2): Use DImode if forcing a value into a register.
14646
14647 2009-07-26  Ira Rosen  <irar@il.ibm.com>
14648
14649         PR tree-optimization/40801
14650         * tree-vect-stmts.c (vectorizable_call): Get previous copy
14651         of vector operand from the previous copy of vector statement.
14652         Pass the correct definition type value to
14653         vect_get_vec_def_for_stmt_copy().
14654
14655 2009-07-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14656
14657         * collect2.c (scan_libraries): Use CONST_CAST2 to perform char ** to
14658         const char ** conversion.
14659
14660 2009-07-25 David Daney <ddaney@caviumnetworks.com>
14661
14662         * system.h (gcc_assert): Invoke __builtin_unreachable() instead of
14663         fancy_abort() if !ENABLE_ASSERT_CHECKING.
14664         (gcc_unreachable): Invoke __builtin_unreachable() if
14665         !ENABLE_ASSERT_CHECKING.
14666
14667 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
14668
14669         PR rtl-optimization/40445
14670         * emit-rtl.c (next_nonnote_insn_bb): New function.
14671         * rtl.h (next_nonnote_insn_bb): Declare new function.
14672         * cfgcleanup.c (try_optimize_cfg): Don't remove an empty block
14673         with no successors that is the successor of the ENTRY_BLOCK.
14674         Continue from the top after removing an empty fallthrough block.
14675         * cfgrtl.c (get_last_bb_insn): Call next_nonnote_insn_bb instead
14676         of next_nonnote_insn.
14677
14678 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
14679
14680         * cfgcleanup.c (old_insns_match_p): Handle the case of empty blocks.
14681
14682 2009-07-25  Martin Jambor  <mjambor@suse.cz>
14683
14684         * c-common.c (c_common_attribute_table): New element for noclone.
14685         (handle_noclone_attribute): New function. Forward-declare.
14686         * tree-inline.c (tree_versionable_function_p): Check for noclone
14687         attribute.
14688         * doc/extend.texi (Labels as Values): Document need for noclone.
14689         (Function Attributes): Document noclone attribute.
14690
14691 2009-07-25  Jakub Jelinek  <jakub@redhat.com>
14692
14693         PR rtl-optimization/34999
14694         * dwarf2out.c (struct dw_fde_struct): Add dw_fde_switch_cfi
14695         and dw_fde_switched_cold_to_hot fields.
14696         (output_cfi_p): New function.
14697         (output_call_frame_info): If fde->dw_fde_switched_sections,
14698         output 2 FDEs instead of one with corrupted header.
14699         (dwarf2out_do_cfi_startproc): New function.
14700         (dwarf2out_begin_prologue): Use it.  Initialize fde->dw_fde_switch_cfi
14701         and fde->dw_fde_switched_cold_to_hot.
14702         (dwarf2out_switch_text_section): Compute
14703         fde->dw_fde_switched_cold_to_hot.  Switch to new text section here.
14704         If dwarf2out_do_cfi_asm, emit .cfi_endproc before it and call
14705         dwarf2out_do_cfi_startproc plus emit again currently active CFI insns.
14706         Otherwise, compute fde->dw_fde_switch_cfi.
14707
14708 2009-07-24  Cary Coutant  <ccoutant@google.com>
14709
14710         * tree-cfg.c (assign_discriminator): Add explicit parentheses.
14711
14712 2009-07-24  Cary Coutant  <ccoutant@google.com>
14713
14714         * cfghooks.c (split_block): Copy discriminator to new block.
14715         * tree-cfg.c (assign_discriminator): Check location of last
14716         instruction in block as well as first.
14717
14718 2009-07-24  Uros Bizjak  <ubizjak@gmail.com>
14719
14720         * config/i386/linux.c: Use fputs or putc instead of fprintf
14721         where appropriate.
14722         * config/i386/gas.h: Ditto.
14723         * config/i386/x86-64.h: Ditto.
14724         * config/i386/att.h: Ditto.
14725
14726 2009-07-24  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
14727
14728         * expmed.c (emit_store_flag): Use a recursive call to optimize the
14729         xor case.
14730
14731 2009-07-24  Martin Jambor  <mjambor@suse.cz>
14732
14733         * ipa-prop.h (struct ipa_node_params): New flag node_enqued.
14734         (ipa_push_func_to_list_1): Declare.
14735         (ipa_push_func_to_list): New function.
14736
14737         * ipa-prop.c (ipa_push_func_to_list_1): New function.
14738         (ipa_init_func_list): Call ipa_push_func_to_list_1.
14739         (ipa_push_func_to_list): Removed.
14740         (ipa_pop_func_from_list): Clear node_enqueued flag.
14741
14742 2009-07-24  Andreas Krebbel  <krebbel1@de.ibm.com>
14743
14744         * config/s390/s390.c (override_options): Default
14745         max-unrolled-insns to 100 for z10 tuning.
14746
14747 2009-07-24  Tobias Grosser  <grosser@fim.uni-passau.de>
14748
14749         * Makefile.in (TREE_DATA_REF_H, tree-vrp.o, tree-cfg.o, tree-if-conv.o
14750         tree-ssa-loop.o, tree-ssa-loop-niter.o, tree-ssa-loop-ivcanon.o,
14751         tree-ssa-loop-prefetch.o, tree-predcom.o, tree-affine.o,
14752         tree-scalar-evolution.o, tree-data-ref.o, tree-vect-loop.o,
14753         tree-vect-data-refs.o, tree-loop-linear.o, tree-loop-distribution.o
14754         tree-parloops.o, tree-pretty-printer.o, fold-const.o, tree-ssa-dce.o,
14755         lambda-code.o, params.o): Cleanup use of SCEV_H and TREE_DATA_REF_H.
14756
14757 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
14758
14759         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR): Remove and
14760         use default set in mingw32.h header.
14761         * config/i386/mingw32.h (STANDARD_INCLUDE_DIR): Use for 32-bit and
14762         64-bit /mingw/include path.
14763         (STANDARD_STARTFILE_PREFIX_1): Use for 32-bit and 64-bit /mingw/lib
14764         path.
14765
14766 2009-07-23  Neil Vachharajani  <nvachhar@google.com>
14767
14768         PR rtl-optimization/40209
14769         * loop-iv.c (iv_analysis_loop_init): Call df_note_add_problem.
14770
14771 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
14772
14773         * config/i386/i386.c: Use ASM_LONG instead of .long.  Concatenate
14774         ASM_LONG, LPREFIX, MCOUNT_NAME and PROFILE_COUNT_REGISTER strings
14775         with the rest of string where appropriate.  Use fputs or putc
14776         instead of fprintf where appropriate.
14777
14778 2009-07-22  Michael Meissner  <meissner@linux.vnet.ibm.com>
14779             Pat Haugen  <pthaugen@us.ibm.com>
14780             Revital Eres <ERES@il.ibm.com>
14781
14782         * config/rs6000/vector.md: New file.  Move most of the vector
14783         expander support here from altivec.md to allow for the VSX vector
14784         unit in the future.  Add support for secondary_reload patterns.
14785         Rewrite the patterns for vector comparison, and vector comparison
14786         predicate instructions so that the RTL expresses the desired
14787         behavior, instead of using unspec.
14788
14789         * config/rs6000/constraints.md ("f" constraint): Use
14790         rs6000_constraints to hold the precalculated register class.
14791         ("d" constraint): Ditto.
14792         ("wd" constraint): New constraint for VSX.
14793         ("wf" constraint): Ditto.
14794         ("ws" constraint): Ditto.
14795         ("wa" constraint): Ditto.
14796         ("wZ" constraint): Ditto.
14797         ("j" constraint): Ditto.
14798
14799         * config/rs6000/predicates.md (vsx_register_operand): New
14800         predicate for VSX.
14801         (vfloat_operand): New predicate for vector.md.
14802         (vint_operand): Ditto.
14803         (vlogical_operand): Ditto.
14804         (easy_fp_constant): If VSX, 0.0 is an easy constant.
14805         (easy_vector_constant): Add VSX support.
14806         (altivec_indexed_or_indirect_operand): New predicate for
14807         recognizing Altivec style memory references with AND -16.
14808
14809         * config/rs6000/rs6000.c (rs6000_vector_reload): New static global
14810         for vector secondary reload support.
14811         (rs6000_vector_reg_class): Delete, replacing it with
14812         rs6000_constraints.
14813         (rs6000_vsx_reg_class): Ditto.
14814         (rs6000_constraints): New array to hold the register classes of
14815         each of the register constraints that can vary at runtime.
14816         (builtin_mode_to_type): New static array for builtin function type
14817         creation.
14818         (builtin_hash_table): New static hash table for builtin function
14819         type creation.
14820         (TARGET_SECONDARY_RELOAD): Define target hook.
14821         (TARGET_IRA_COVER_CLASSES): Ditto.
14822         (rs6000_hard_regno_nregs_internal): If -mvsx, floating point
14823         registers are 128 bits if VSX memory reference instructions are used.
14824         (rs6000_hard_regno_mode_ok): For VSX, only check if the VSX memory
14825         unit is being used.
14826         (rs6000_debug_vector_unit): Move into rs6000_debug_reg_global.
14827         (rs6000_debug_reg_global): Move -mdebug=reg statements here.
14828         Print several of the scheduling related parameters.
14829         (rs6000_init_hard_regno_mode_ok): Switch to putting constraints in
14830         rs6000_constraints instead of rs6000_vector_reg_class.  Move
14831         -mdebug=reg code to rs6000_debug_reg_global.  Add support for
14832         -mvsx-align-128 debug switch.  Drop testing float_p if VSX or
14833         Altivec.  Add VSX support.  Setup for secondary reload support on
14834         Altivec/VSX registers.
14835         (rs6000_override_options): Make power7 set the scheduling groups
14836         like the power5.  Add support for new debug switches to override
14837         the scheduling defaults.  Temporarily disable -mcpu=power7 from
14838         setting -mvsx.  Add support for debug switches -malways-hint,
14839         -msched-groups, and -malign-branch-targets.
14840         (rs6000_buitlin_conversion): Add support for returning unsigned
14841         vector conversion functions to fix regressions due to stricter
14842         type checking.
14843         (rs6000_builtin_mul_widen_even): Ditto.
14844         (rs6000_builtin_mul_widen_odd): Ditto.
14845         (rs6000_builtin_vec_perm): Ditto.
14846         (rs6000_vec_const_move): On VSX, use xxlxor to clear register.
14847         (rs6000_expand_vector_init): Initial VSX support for using xxlxor
14848         to zero a register.
14849         (rs6000_emit_move): Fixup invalid const symbol_ref+reg that is
14850         generated upstream.
14851         (bdesc_3arg): Add builtins for unsigned types.  Add builtins for
14852         VSX types for bit operations.  Changes to accomidate vector.md.
14853         (bdesc_2arg): Ditto.
14854         (bdesc_1arg): Ditto.
14855         (struct builtin_description_predicates): Rewrite predicate
14856         handling so that RTL describes the operation, instead of passing
14857         the instruction to be used as a string argument.
14858         (bdesc_altivec_preds): Ditto.
14859         (altivec_expand_predicate_builtin): Ditto.
14860         (altivec_expand_builtin): Ditto.
14861         (rs6000_expand_ternop_builtin): Use a switch instead of an if
14862         statement for vsldoi support.
14863         (altivec_expand_ld_builtin): Change to use new names from vector.md.
14864         (altivec_expand_st_builtin): Ditto.
14865         (paired_expand_builtin): Whitespace changes.
14866         (rs6000_init_builtins): Add V2DF/V2DI types.  Initialize the
14867         builtin_mode_to_type table for secondary reload.  Call
14868         builtin_function_type to build random builtin functions.
14869         (altivec_init_builtins): Change to use builtin_function_type to
14870         create builtin function types dynamically as we need them.
14871         (builtin_hash_function): New support for hashing the tree types
14872         for builtin function as we need it, rather than trying to build
14873         all of the trees that we need.  Add initial preliminary VSX support.
14874         (builtin_function_type): Ditto.
14875         (builtin_function_eq): Ditto.
14876         (builtin_hash_struct): Ditto.
14877         (rs6000_init_builtins): Ditto.
14878         (rs6000_common_init_builtins): Ditto.
14879         (altivec_init_builtins): Ditto.
14880         (rs6000_common_init_builtins): Ditto.
14881         (enum reload_reg_type): New enum for simplifing reg classes.
14882         (rs6000_reload_register_type): Simplify register classes into GPR,
14883         Vector, and other registers.  Altivec and VSX addresses in reload.
14884         (rs6000_secondary_reload_inner): Ditto.
14885         (rs6000_ira_cover_classes): New target hook, that returns the
14886         appropriate cover classes, based on -mvsx being used or not.
14887         (rs6000_secondary_reload_class): Add VSX support.
14888         (get_vec_cmp_insn): Delete, rewrite vector conditionals.
14889         (get_vsel_insn): Ditto.
14890         (rs6000_emit_vector_compare): Rewrite vector conditional support
14891         so that where we can, we use RTL operators, instead of blindly use
14892         UNSPEC.
14893         (rs6000_emit_vector_select): Ditto.
14894         (rs6000_emit_vector_cond_expr): Ditto.
14895         (rs6000_emit_minmax): Directly generate min/max under altivec, vsx.
14896         (create_TOC_reference): Add -mdebug=addr support.
14897         (emit_frame_save): VSX loads/stores need register indexed addressing.
14898
14899         * config/rs6000/rs6000.md: Include vector.md.
14900
14901         * config/rs6000/t-rs6000 (MD_INCLUDES): Add vector.md.
14902
14903         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
14904         support for V2DI, V2DF in logical, permute, select operations.
14905
14906         * config/rs6000/rs6000.opt (-mvsx-scalar-double): Add new debug
14907         switch for vsx/power7.
14908         (-mvsx-scalar-memory): Ditto.
14909         (-mvsx-align-128): Ditto.
14910         (-mallow-movmisalign): Ditto.
14911         (-mallow-df-permute): Ditto.
14912         (-msched-groups): Ditto.
14913         (-malways-hint): Ditto.
14914         (-malign-branch-targets): Ditto.
14915
14916         * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Delete, use target
14917         hook instead.
14918         (IRA_COVER_CLASSES_PRE_VSX): Cover classes if not -mvsx.
14919         (IRA_COVER_CLASSES_VSX): Cover classes if -mvsx.
14920         (rs6000_vector_reg_class): Delete.
14921         (rs6000_vsx_reg_class): Ditto.
14922         (enum rs6000_reg_class_enum): New enum for the constraints that
14923         vary based on target switches.
14924         (rs6000_constraints): New array to hold the register class for all
14925         of the register constraints that vary based on the switches used.
14926         (ALTIVEC_BUILTIN_*_UNS): Add unsigned builtin functions.
14927         (enum rs6000_builtins): Add unsigned varients for the builtin
14928         declarations returned by target hooks for expanding multiplies,
14929         select, and permute operations.  Add VSX builtins.
14930         (enum rs6000_builtin_type_index): Add entries for VSX.
14931         (V2DI_type_node): Ditto.
14932         (V2DF_type_node): Ditto.
14933         (unsigned_V2DI_type_node): Ditto.
14934         (bool_long_type_node): Ditto.
14935         (intDI_type_internal_node): Ditto.
14936         (uintDI_type_internal_node): Ditto.
14937         (double_type_internal_node): Ditto.
14938
14939         * config/rs6000/altivec.md (whole file): Move all expanders to
14940         vector.md from altivec.md.  Rename insn matching functions to be
14941         altivec_foo.
14942         (UNSPEC_VCMP*): Delete, rewrite vector comparisons.
14943         (altivec_vcmp*): Ditto.
14944         (UNSPEC_VPERM_UNS): New, add for unsigned types using vperm.
14945         (VM): New iterator for moves that includes the VSX types.
14946         (altivec_vperm_<mode>): Add VSX types.  Add unsigned types.
14947         (altivec_vperm_<mode>_uns): New, for unsigned types.
14948         (altivec_vsel_*): Rewrite vector comparisons and predicate builtins.
14949         (altivec_eq<mode>): Ditto.
14950         (altivec_gt<mode>): Ditto.
14951         (altivec_gtu<mode>): Ditto.
14952         (altivec_eqv4sf): Ditto.
14953         (altivec_gev4sf): Ditto.
14954         (altivec_gtv4sf): Ditto.
14955         (altivec_vcmpbfp_p): Ditto.
14956
14957 2009-07-23  Richard Earnshaw  <rearnsha@arm.com>
14958
14959         * arm.md (split for ior/xor with shift and zero-extend): Cast op3 to
14960         unsigned HWI.
14961
14962 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
14963
14964         PR target/40832
14965         * config/i386/i386.c (output_387_ffreep): Rewrite to use
14966         ASM_SHORT instead of .word.
14967         * config/i386/i386.md (*tls_global_dynamic_64): Use ASM_SHORT
14968         instead of .word in asm template.
14969
14970 2009-07-22  Vladimir Makarov  <vmakarov@redhat.com>
14971
14972         PR target/37488
14973         * ira-lives.c (bb_has_abnormal_call_pred): New function.
14974         (process_bb_node_lives): Use it.
14975
14976         * ira.c (setup_cover_and_important_classes): Don't setup
14977         ira_important_class_nums.  Add cover classes to the end of
14978         important classes.
14979         (cover_class_order, comp_reg_classes_func, reorder_important_classes):
14980         New.
14981         (find_reg_class_closure): Use reorder_important_classes.
14982
14983         * config/i386/i386.h (IRA_COVER_CLASSES): Remove.
14984
14985         * config/i386/i386.c (i386_ira_cover_classes): New function.
14986         (TARGET_IRA_COVER_CLASSES): Redefine.
14987
14988         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Add a comment about
14989         importance of order of cover classes in the array.
14990
14991 2009-07-22  Diego Novillo  <dnovillo@google.com>
14992
14993         * tree-pass.h (TDF_EH): Define.
14994         * gimple-pretty-print.c (dump_gimple_stmt): If FLAGS
14995         contains TDF_EH, print the EH region number holding GS.
14996         * tree-dump.c (dump_options): Add "eh".
14997         * doc/invoke.texi: Document it.
14998
14999 2009-07-22  Doug Kwan  <dougkwan@google.com>
15000
15001         * config/arm/arm.md (subdi3) Copy non-reg values to DImode registers.
15002
15003 2009-07-22  Michael Matz  <matz@suse.de>
15004
15005         PR tree-optimization/35229
15006         PR tree-optimization/39300
15007
15008         * tree-ssa-pre.c (includes): Include tree-scalar-evolution.h.
15009         (inhibit_phi_insertion): New function.
15010         (insert_into_preds_of_block): Call it for REFERENCEs.
15011         (init_pre): Initialize and finalize scalar evolutions.
15012         * Makefile.in (tree-ssa-pre.o): Depend on tree-scalar-evolution.h .
15013
15014 2009-07-22  Uros Bizjak  <ubizjak@gmail.com>
15015
15016         * config/i386/predicates.md (zero_extended_scalar_load_operand):
15017         Use CONST_VECTOR_NUNITS to determine number of elements.
15018
15019 2009-07-22  Andreas Krebbel  <krebbel1@de.ibm.com>
15020
15021         * config/s390/constraints.md (ZQ, ZR, ZS, ZT): New constraints.
15022         (U, W): Constraints are now deprecated and will be removed if we
15023         run out of letters.
15024         * config/s390/s390.md (U, W): Replaced with ZQZR, ZSZT throughout
15025         the file.
15026         ("prefetch"): Add the stcmh instruction for prefetching.
15027         * config/s390/s390.c (s390_symref_operand_p): Function moved. No
15028         changes.
15029         (s390_short_displacement): Return always true if compiling for
15030         machines not providing the long displacement facility.
15031         (s390_mem_constraint): Support the new constraint letter Z.
15032         (s390_check_qrst_address): New function.
15033
15034 2009-07-21  DJ Delorie  <dj@redhat.com>
15035
15036         * config/mep/mep.c (mep_legitimize_arg): Leave control registers
15037         alone too.
15038
15039 2009-07-21  Jason Merrill  <jason@redhat.com>
15040
15041         * c-common.c (max_tinst_depth): Increase default to 1024.
15042
15043 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
15044
15045         * config/i386/sse.md (vec_unpacku_float_hi_v4si): New expander.
15046         (vec_unpacku_float_lo_v4si): Ditto.
15047
15048 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
15049
15050         PR target/40811
15051         * config/i386/sse.md (sse2_cvtudq2ps): New expander.
15052         (enum ix86_builtins): Add IX86_BUILTIN_CVTUDQ2PS.
15053         (builtin_description): Add __builtin_ia32_cvtudq2ps.
15054         (ix86_vectorize_builtin_conversion): Handle IX86_BUILTIN_CVTUDQ2PS.
15055
15056 2009-07-21  Jakub Jelinek  <jakub@redhat.com>
15057
15058         PR tree-optimization/40813
15059         * tree-inline.c (copy_bb): Regimplify RHS after last stmt, not before
15060         it.
15061
15062 2009-07-21  Kaz Kojima  <kkojima@gcc.gnu.org>
15063
15064         * config/sh/sh.c (sh_gimplify_va_arg_expr): Wrap the result
15065         with a NOP_EXPR if needed.
15066
15067 2009-07-21  Paul Brook <paul@codesourcery.com>
15068
15069         * tree-vectorizer.c (increase_alignment): Handle nested arrays.
15070         Terminate debug dump with newline.
15071
15072 2009-07-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
15073
15074         * pa.c (compute_zdepwi_operands): Limit deposit length to 32 - lsb.
15075         Cast "1" to unsigned HOST_WIDE_INT.
15076         (compute_zdepdi_operands): Limit maximum length to 64 bits.  Limit
15077         deposit length to the maximum length - lsb.  Extend length if
15078         HOST_BITS_PER_WIDE_INT is 32.
15079
15080 2009-07-20  Olatunji Ruwase <tjruwase@google.com>
15081
15082         * cgraph.h (constant_pool_htab): New function.
15083         (constant_descriptor_tree): Move from varasm.c.
15084         * varasm.c (constant_pool_htab): New function.
15085         (constant_descriptor_tree): Move to cgraph.h.
15086
15087 2009-07-20  Olatunji Ruwase  <tjruwase@google.com>
15088
15089         * toplev.c: Invoke FINISH_UNIT callbacks before call to finalize().
15090
15091 2009-07-20  Shujing Zhao  <pearly.zhao@oracle.com>
15092
15093         * Makefile.in (TREE_INLINE_H, tree-inline.o, cgraph.o): Remove
15094         $(VARRAY_H).
15095
15096 2009-07-20  Xinliang David Li  <davidxl@google.com>
15097
15098         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add length check.
15099
15100 2009-07-20  Adam Nemet  <anemet@caviumnetworks.com>
15101
15102         * config/mips/mips.md (move_type): Add arith.
15103         (type): Handle arith.
15104         (zero_extendsidi2): Rename this into ...
15105         (*zero_extendsidi2): ... this.  Don't match if ISA_HAS_EXT_INS.
15106         (zero_extendsidi2): New expander.
15107         (*zero_extendsidi2_dext): New pattern.
15108
15109 2009-07-20  Nick Clifton  <nickc@redhat.com>
15110
15111         * config.gcc (mips64-*-*): Add definition of tm_defines in order
15112         to set MIPS_ABI_DEFAULT.
15113         * config/mips/vr.h (MIPS_ABI_DEFAULT): Remove definition.
15114
15115 2009-07-20  Jakub Jelinek  <jakub@redhat.com>
15116
15117         * tree-object-size.c (addr_object_size): Handle unions with
15118         array in it as last field of structs in __bos (, 1) as __bos (, 0).
15119
15120         PR tree-optimization/40792
15121         * tree.c (build_function_type_skip_args): Remove bogus assert.
15122
15123 2009-07-20  Jan Hubicka  <jh@suse.cz>
15124             Martin Jambor  <mjambor@suse.cz>
15125
15126         * cgraph.h (combined_args_to_skip): New field.
15127         * cgraph.c (cgraph_create_virtual_clone): Properly handle
15128         combined_args_to_skip and args_to_skip.
15129         * tree-inline.c (update_clone_info): New function.
15130         (tree_function_versioning): Call update_clone_info.
15131         * cgraphunit.c (cgraph_materialize_clone): Dump materialized
15132         functions.
15133         (cgraph_materialize_all_clones): More extensive dumping, working
15134         with combined_args_to_skip rather than args_to_skip.
15135
15136 2009-07-20  Ira Rosen  <irar@il.ibm.com>
15137
15138         * tree-vectorizer.h (vectorizable_condition): Add parameters.
15139         * tree-vect-loop.c (vect_is_simple_reduction): Support COND_EXPR.
15140         (get_initial_def_for_reduction): Likewise.
15141         (vectorizable_reduction): Skip the check of first operand in case
15142         of COND_EXPR. Add check that it is outer loop vectorization if
15143         nested cycle was detected. Call vectorizable_condition() for
15144         COND_EXPR. If reduction epilogue cannot be created do not fail for
15145         nested cycles (if it is not double reduction). Assert that there
15146         is only one type in the loop in case of COND_EXPR. Call
15147         vectorizable_condition() to vectorize COND_EXPR.
15148         * tree-vect-stmts.c (vectorizable_condition): Update comment.
15149         Add parameters. Allow nested cycles if called from
15150         vectorizable_reduction(). Use reduction vector variable if provided.
15151         (vect_analyze_stmt): Call vectorizable_reduction() before
15152         vectorizable_condition().
15153         (vect_transform_stmt): Update call to vectorizable_condition().
15154
15155 2009-07-20  Christian Bruel  <christian.bruel@st.com>
15156
15157         * config/sh/sh.opt (-mfmovd): Resurrect and document.
15158         * doc/invoke.texi (-mfmovd): Likewise.
15159         * config/sh/sh.h (TARGET_FMOVD, MASK_FMOVD): Remove default setting.
15160
15161 2009-07-20  Jan Hubicka  <jh@suse.cz>
15162
15163         * tree-ssa-dce.c (remove_dead_phis): Only look for abnormal PHIs
15164         when handling SSA name.
15165
15166 2009-07-19  Jan Hubicka  <jh@suse.cz>
15167
15168         PR tree-optimization/40676
15169         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do renaming on all
15170         virtual PHIs in empty BBs.
15171
15172 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
15173
15174         * combine.c (make_compound_operation) <SUBREG>: If force_to_mode
15175         re-expanded the compound use gen_lowpart instead to convert to the
15176         desired mode.
15177
15178 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
15179
15180         * combine.c (try_widen_shift_mode): Add COUNT, OUTER_CODE and
15181         OUTER_CONST arguments.
15182         <LSHIFTRT>: Use them to allow widening if the bits shifted in from
15183         the new wider mode will be masked off.
15184         (simplify_shift_const_1): Adjust calls to try_widen_shift_mode.
15185
15186 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
15187
15188         * combine.c (try_widen_shift_mode) <LSHIFTRT>: Allow widening if the
15189         high-order bits are zero.
15190
15191 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
15192
15193         * combine.c (simplify_shift_const_1): Split code to determine
15194         shift_mode into ...
15195         (try_widen_shift_mode): ... here.  Allow widening for ASHIFTRT if the
15196         new bits shifted in are identical to the old sign bit.
15197
15198 2009-07-18  Richard Guenther  <rguenther@suse.de>
15199
15200         PR c/40787
15201         * gimplify.c (gimplify_call_expr): Reject code using results from
15202         functions returning void.
15203
15204 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
15205
15206         * doc/md.texi: Document the new PowerPC "es" constraint.
15207         Document that "m" can include automodified addresses on this target,
15208         and explain how %U must be used.  Extend the "Q" and "Z" documentation
15209         to suggest "es" as well as "m".
15210         * config/rs6000/constraints.md (es): New memory constraint.
15211         (Q, Z): Update strings to match new documentation.
15212
15213 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
15214
15215         * config/rs6000/rs6000.c (rs6000_mode_dependent_address): Allow any
15216         offset from virtual_stack_vars_rtx and arg_pointer_rtx.
15217         * config/rs6000/predicates.md (volatile_mem_operand): Use
15218         offsettable_nonstrict_memref_p.
15219         * config/rs6000/rs6000.md (*floatsidf2_internal): Remove split check.
15220         (*floatunssidf2_internal): Likewise.
15221         (*fix_truncdfsi2_internal): Likewise.
15222         (*fix_trunctfsi2_internal): Likewise.
15223
15224 2009-07-17  Anatoly Sokolov  <aesok@post.ru>
15225
15226         * config/avr/avr-devices.c (avr_mcu_t): Add atmega8u2, atmega16u2 and
15227         atmega32u2 devices.
15228         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
15229
15230 2009-07-17  Richard Guenther  <rguenther@suse.de>
15231
15232         PR c/40401
15233         * tree-pass.h (pass_diagnose_omp_blocks): Declare.
15234         (pass_warn_unused_result): Likewise.
15235         (TODO_set_props): Remove.
15236         * omp-low.c (diagnose_omp_structured_block_errors): Change to
15237         run as a pass.
15238         (pass_diagnose_omp_blocks): Define.
15239         * c-decl.c (pop_file_scope): Do not finalize the CU here.
15240         (c_gimple_diagnostics_recursively): Remove.
15241         (finish_function): Do not call it.
15242         (c_write_global_declarations): Continue after errors.
15243         Finalize the CU here.
15244         * c-gimplify.c (c_genericize): Do not gimplify here.
15245         * c-common.c (c_warn_unused_result): Move ...
15246         * tree-cfg.c (do_warn_unused_result): ... here.
15247         (run_warn_unused_result): New function.
15248         (gate_warn_unused_result): New function.
15249         (pass_warn_unused_result): New pass.
15250         * c-common.h (c_warn_unused_result): Remove.
15251         * flags.h (flag_warn_unused_result): Declare.
15252         * c-opts.c (c_common_init_options): Enable flag_warn_unused_result.
15253         * opts.c (flag_warn_unused_result): Initialize to false.
15254         * toplev.c (compile_file): Add comment.
15255         * omp-low.c (create_omp_child_function): Do not register
15256         the function with the frontend.
15257         (diagnose_omp_structured_block_errors): Prepare to be
15258         called as optimization pass.
15259         (gate_diagnose_omp_blocks): New function.
15260         (pass_diagnose_omp_blocks): New pass.
15261         * cgraph.h (cgraph_optimize): Remove.
15262         (cgraph_analyze_function): Likewise.
15263         * cgraph.c (cgraph_add_new_function): Gimplify C++ thunks.
15264         * cgraphunit.c (cgraph_lower_function): Lower nested functions
15265         before their parents here.
15266         (cgraph_finalize_function): Not here.
15267         (cgraph_analyze_function): Gimplify functions here.
15268         (cgraph_finalize_compilation_unit): Continue after errors.
15269         Optimize the callgraph from here.
15270         (cgraph_optimize): Make static.
15271         * langhooks.c (write_global_declarations): Finalize the CU.
15272         * gimplify.c (gimplify_asm_expr): Do not emit ASMs with errors.
15273         (gimplify_function_tree): Assert we gimplify only once.
15274         Set PROP_gimple_any property.
15275         * tree-nested.c (gimplify_all_functions): New function.
15276         (lower_nested_functions): Gimplify all nested functions.
15277         * gimple.h (diagnose_omp_structured_block_errors): Remove.
15278         * passes.c (init_optimization_passes): Add pass_warn_unused_result
15279         and pass_diagnose_omp_blocks after gimplification.  Do not
15280         set TODO_set_props on all_lowering_passes.
15281         (execute_one_pass): Do not handle TODO_set_props.
15282         * Makefile.in (cgraphunit.o): Add $(TREE_DUMP_H) dependency.
15283         (gimplify.o): Add tree-pass.h dependency.
15284         * tree-inline.c (copy_statement_list): Properly copy STATEMENT_LIST.
15285         (copy_tree_body_r): Properly handle TARGET_EXPR like SAVE_EXPR.
15286         (unsave_r): Likewise.
15287         * c-omp.c (c_finish_omp_atomic): Set DECL_CONTEXT on the
15288         temporary variable.
15289
15290 2009-07-17  Sandra Loosemore  <sandra@codesourcery.com>
15291
15292         * doc/service.texi (Service): Restore previously removed link,
15293         which isn't broken after all.
15294
15295 2009-07-17  Richard Guenther  <rguenther@suse.de>
15296
15297         PR tree-optimization/40321
15298         * tree-ssa-pre.c (add_to_exp_gen): Also add names defined by
15299         PHI nodes to the maximal set.
15300         (make_values_for_phi): Add PHI arguments to the maximal set.
15301         (execute_pre): Dump PHI_GEN and the maximal set.
15302
15303 2009-07-17  Jakub Jelinek  <jakub@redhat.com>
15304
15305         PR c++/40780
15306         * gimplify.c (gimplify_conversion): Don't change non-conversions into
15307         VIEW_CONVERT_EXPR.
15308
15309 2009-07-16  Sandra Loosemore  <sandra@codesourcery.com>
15310
15311         * doc/extend.texi (Nested Functions): Replace broken link with
15312         textual reference.
15313         * doc/service.texi (Service): Remove broken link.
15314
15315 2009-07-16  H.J. Lu  <hongjiu.lu@intel.com>
15316
15317         PR bootstrap/40781
15318         * builtins.c (expand_builtin_memcmp): Use loc instead of
15319         EXPR_LOCATION (exp).
15320         (expand_builtin_strncmp): Likewise.
15321
15322 2009-07-17  Aldy Hernandez  <aldyh@redhat.com>
15323             Manuel López-Ibáñez  <manu@gcc.gnu.org>
15324
15325         PR 40435
15326         * tree-complex.c, tree-loop-distribution.c, tree.c, tree.h,
15327         builtins.c, fold-const.c, omp-low.c, cgraphunit.c, tree-ssa-ccp.c,
15328         tree-ssa-dom.c, gimple-low.c, expr.c, tree-ssa-ifcombine.c,
15329         c-decl.c, stor-layout.c, tree-if-conv.c, c-typeck.c, gimplify.c,
15330         calls.c, tree-sra.c, tree-mudflap.c, tree-ssa-copy.c,
15331         tree-ssa-forwprop.c, c-convert.c, c-omp.c, varasm.c,
15332         tree-inline.c, c-common.c, c-common.h, gimple.c,
15333         tree-switch-conversion.c, gimple.h, tree-cfg.c, c-parser.c,
15334         convert.c: Add location argument to fold_{unary,binary,ternary},
15335         fold_build[123], build_call_expr, build_size_arg,
15336         build_fold_addr_expr, build_call_array, non_lvalue, size_diffop,
15337         fold_build1_initializer, fold_build2_initializer,
15338         fold_build3_initializer, fold_build_call_array,
15339         fold_build_call_array_initializer, fold_single_bit_test,
15340         omit_one_operand, omit_two_operands, invert_truthvalue,
15341         fold_truth_not_expr, build_fold_indirect_ref, fold_indirect_ref,
15342         combine_comparisons, fold_builtin_*, fold_call_expr,
15343         build_range_check, maybe_fold_offset_to_address, round_up,
15344         round_down.
15345
15346 2009-07-16  Jason Merrill  <jason@redhat.com>
15347
15348         PR libstdc++/37907
15349         * c-common.c (c_common_reswords): Add __is_standard_layout
15350         and __is_trivial.
15351         * c-common.h (enum rid): Add RID_IS_STD_LAYOUT and RID_IS_TRIVIAL.
15352         * doc/implement-cxx.texi: New.
15353         * doc/gcc.texi: Include it.
15354
15355 2009-07-16  DJ Delorie  <dj@redhat.com>
15356
15357         * config/m32c/m32c.c (m32c_compare_redundant): Avoid removing
15358         compares that may be indirectly affected by previous instructions.
15359
15360 2009-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15361
15362         * builtins.c (do_mpc_arg2): New.
15363         (fold_builtin_2): Fold builtin cpow.
15364         * real.h (HAVE_mpc_pow): New.
15365
15366 2009-07-16  Bingfeng Mei  <bmei@broadcom.com>
15367
15368         * modulo-sched.c (sms_schedule): stage_count <= 1 as correct
15369         comparison to skip unprofitable schedule
15370
15371 2009-07-16  Simon Baldwin  <simonb@google.com>
15372
15373         * gcc.c (option_map): New flag -no-canonical-prefixes.
15374         * (display_help): Print help text for new flag.
15375         * (process_command): Move options translation and language specifics
15376         and handle new flag early.  Use it to set a function pointer to a
15377         prefix builder.  Replace make_relative_prefix calls with calls to
15378         the function pointed to.  Ignore new flag in regular options handling.
15379         * doc/invoke.texi (Overall Options): Documented -no-canonical-prefixes.
15380
15381 2009-07-15  DJ Delorie  <dj@redhat.com>
15382
15383         * config/mep/mep.md (sibcall_internal): Change register to avoid
15384         argument registers.
15385         (sibcall_value_internal): Likewise.
15386
15387 2009-07-15  Eric Botcazou  <ebotcazou@adacore.com>
15388
15389         PR rtl-optimization/40710
15390         * resource.c (mark_target_live_regs): Reset DF problem to LR.
15391
15392 2009-07-15  Adam Nemet  <anemet@caviumnetworks.com>
15393
15394         * config/mips/mips.md (*extenddi_truncate<mode>,
15395         *extendsi_truncate<mode>): Change type attribute to move_type
15396         with shift_shift.  Split out code handling exts from here ...
15397         (*extend<GPR:mode>_truncate<SHORT:mode>_exts): ... to this new
15398         pattern.
15399         (*extendhi_truncateqi): Change type attribute to move_type with
15400         shift_shift.  Split out code handling exts from here ...
15401         (*extendhi_truncateqi_exts): ... to this new pattern.
15402
15403 2009-07-15  Uros Bizjak  <ubizjak@gmail.com>
15404
15405         * config/i386/sse.md (copysign<mode>3): Use "and-not" SSE instruction
15406         instead of "and" with inverted sign bit mask value.  Use
15407         "nonimmediate_operand" for operand 1 and operand 2 predicate.
15408         Allocate registers only for operand 4 and operand 5.
15409
15410 2009-07-15  Jakub Jelinek  <jakub@redhat.com>
15411
15412         PR middle-end/40747
15413         * fold-const.c (fold_cond_expr_with_comparison): When folding
15414         < and <= to MIN, make sure the MIN uses the same type as the
15415         comparison's operands.
15416
15417 2009-07-15  Richard Earnshaw  <rearnsha@arm.com>
15418
15419         * arm.md (ior_xor): New code iterator.
15420         (split for ior/xor with shift and zero-extend): New split pattern.
15421         * arm/predicates.md (subreg_lowpart_operator): New special predicate.
15422
15423 2009-07-15  Richard Guenther  <rguenther@suse.de>
15424
15425         * tree-ssa-structalias.c (make_constraint_from_heapvar): Initialize
15426         offset member.
15427
15428 2009-07-15  Richard Guenther  <rguenther@suse.de>
15429
15430         PR middle-end/40753
15431         * alias.c (ao_ref_from_mem): Reject FUNCTION_DECL and LABEL_DECL bases.
15432
15433 2009-07-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
15434
15435         * config/m68k/linux-unwind.h (m68k_fallback_frame_state): Update to
15436         handle 2.6.30 kernel.
15437
15438 2009-07-15  DJ Delorie  <dj@redhat.com>
15439
15440         * config/mep/mep.md (sibcall_internal): Change register to allow
15441         for 24-bit addresses.
15442         (sibcall_value_internal): Likewise.
15443
15444 2009-07-14  Ghassan Shobaki  <ghassan.shobaki@amd.com>
15445
15446         * doc/invoke.texi: Added descriptions of the  scheduling heuristics
15447         that are enabled/disabled by the flags introduced by a previous patch.
15448
15449 2009-07-14  DJ Delorie  <dj@redhat.com>
15450
15451         * config/mep/mep.md (sibcall_internal): Include non-toggling
15452         non-jmp case.
15453         (sibcall_value_internal): Likewise.
15454
15455 2009-07-14  Taras Glek  <tglek@mozilla.com>
15456             Rafael Espindola  <espindola@google.com>
15457
15458         * doc/sourcebuild.texi: Document install-plugin target.
15459         * configure.ac: Added install-plugin target to language makefiles.
15460         * configure: Regenerate.
15461         * Makefile.in (install-plugin): Install more headers,
15462         depend on lang.install-plugin.
15463
15464 2009-07-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
15465
15466         * tree-vrp.c (vrp_evaluate_conditional): Mark strings for
15467         translation.
15468
15469 2009-07-14  DJ Delorie  <dj@redhat.com>
15470
15471         * config/mep/mep.c (mep_vliw_jmp_match): New function.
15472         * config/mep/mep-protos.h (mep_vliw_jmp_match): Prototype it.
15473         * config/mep/mep.md (sibcall_internal): Change test from
15474         mep_vliw_mode_match to mep_vliw_jmp_match.
15475         (sibcall_value_internal): Likewise.
15476
15477 2009-07-14  Uros Bizjak  <ubizjak@gmail.com>
15478
15479         * config/i386/sse.md (copysign<mode>3): New expander.
15480         * config/i386/i386-protos.h (ix86_build_signbit_mask): New prototype.
15481         * config/i386/i386.c (ix86_build_signbit_mask): Make public.
15482         Use ix86_build_const_vector.
15483         (enum ix86_builtins): Add IX86_BUILTIN_CPYSGNPS and
15484         IX86_BUILTIN_CPYSGNPD.
15485         (builtin_description): Add __builtin_ia32_copysignps and
15486         __builtin_ia32_copysignpd.
15487         (ix86_builtin_vectorized_function): Handle BUILT_IN_COPYSIGN
15488         and BUILT_IN_COPYSIGNF.
15489
15490 2009-07-13  Jason Merrill  <jason@redhat.com>
15491
15492         * builtins.c (can_trust_pointer_alignment): New fn.
15493         (get_pointer_alignment): Factor it out from here.
15494         * tree.h: Declare it.
15495
15496 2009-07-14  David Edelsohn  <edelsohn@gnu.org>
15497
15498         * config/rs6000/predicates.md (offsettable_mem_operand): Test
15499         RTX_AUTOINC class.
15500
15501 2009-07-14  Dodji Seketeli  <dodji@redhat.com>
15502
15503         PR debug/40705
15504         PR c++/403057
15505         * dwarf2.out.c (gen_type_die_with_usage): Added comment.
15506
15507 2009-07-14  Richard Guenther  <rguenther@suse.de>
15508             Andrey Belevantsev <abel@ispras.ru>
15509
15510         PR middle-end/40745
15511         * cfgexpand.c (partition_stack_vars): Do not bother to update
15512         alias information when not optimizing.
15513
15514 2009-07-14  Richard Guenther  <rguenther@suse.de>
15515             Andrey Belevantsev <abel@ispras.ru>
15516
15517         * tree-ssa-alias.h (refs_may_alias_p_1): Declare.
15518         (pt_solution_set): Likewise.
15519         * tree-ssa-alias.c (refs_may_alias_p_1): Export.
15520         * tree-ssa-structalias.c (pt_solution_set): New function.
15521         * final.c (rest_of_clean_state): Free SSA data structures.
15522         * print-rtl.c (print_decl_name): Remove.
15523         (print_mem_expr): Implement in terms of print_generic_expr.
15524         * alias.c (ao_ref_from_mem): New function.
15525         (rtx_refs_may_alias_p): Likewise.
15526         (true_dependence): Query alias-export info.
15527         (canon_true_dependence): Likewise.
15528         (write_dependence_p): Likewise.
15529         * tree-dfa.c (get_ref_base_and_extent): For void types leave
15530         size unknown.
15531         * emit-rtl.c (component_ref_for_mem_expr): Remove.
15532         (mem_expr_equal_p): Use operand_equal_p.
15533         (set_mem_attributes_minus_bitpos): Do not use
15534         component_ref_for_mem_expr.
15535         * cfgexpand.c (add_partitioned_vars_to_ptset): New function.
15536         (update_alias_info_with_stack_vars): Likewise.
15537         (partition_stack_vars): Call update_alias_info_with_stack_vars.
15538         * tree-ssa.c (delete_tree_ssa): Do not release SSA names
15539         explicitly nor clear stmt operands.
15540         Free the decl-to-pointer map.
15541         * tree-optimize.c (execute_free_datastructures): Do not free
15542         SSA data structures here.
15543         * tree-flow.h (struct gimple_df): Add decls_to_pointers member.
15544         * Makefile.in (emit-rtl.o): Add pointer-set.h dependency.
15545         (alias.o): Add tree-ssa-alias.h, pointer-set.h and $(TREE_FLOW_H)
15546         dependencies.
15547         (print-rtl.o): Add $(DIAGNOSTIC_H) dependency.
15548
15549 2009-07-13  DJ Delorie  <dj@redhat.com>
15550
15551         * config/mep/mep.h (CC1_SPEC): Tweak parameters to trigger
15552         unrolling at the right iteration count.
15553
15554         * config/mep/mep.c (mep_expand_prologue): Fix frame pointer
15555         calculations.
15556
15557 2009-07-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
15558
15559         * haifa-sched.c (rank_for_schedule): Introduced flags to
15560         enable/disable individual scheduling heuristics.
15561         * common.opt: Introduced flags to enable/disable individual
15562         heuristics in the scheduler.
15563         * doc/invoke.texi: Introduced flags to enable/disable individual
15564         heuristics in the scheduler.
15565
15566 2009-07-13  Kai Tietz  <kai.tietz@onevision.com>
15567
15568         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Remove file
15569         config/i386/mingw-tls.c.
15570         * config/i386/mingw-tls.c: Removed.
15571
15572 2009-07-13  Ira Rosen  <irar@il.ibm.com>
15573
15574         * tree-vect-loop.c (get_initial_def_for_reduction): Ensure that the
15575         checks access only relevant statements.
15576         (vectorizable_reduction): Likewise.
15577
15578 2009-07-12  Kai Tietz  <kai.tietz@onevision.com>
15579
15580         * config/i386/cygming.h (TARGET_OS_CPP_BUILTINS): Define _X86_
15581         just for 32-bit case.
15582
15583 2009-07-12  Jan Hubicka  <jh@suse.cz>
15584
15585         PR tree-optimization/40585
15586         * except.c (expand_resx_expr): When there already is resume
15587         instruction, produce linked list.
15588         (build_post_landing_pads): Assert that resume is empty.
15589         (connect_post_landing_pads): Handle resume lists.
15590         (dump_eh_tree): Dump resume list.
15591
15592 2009-07-12  Ira Rosen  <irar@il.ibm.com>
15593
15594         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
15595         with additional argument.
15596         * tree-vectorizer.h (enum vect_def_type): Add
15597         vect_double_reduction_def.
15598         (vect_is_simple_reduction): Add argument.
15599         * tree-vect-loop.c (vect_determine_vectorization_factor): Fix
15600         indentation.
15601         (vect_analyze_scalar_cycles_1): Detect double reduction. Call
15602         vect_is_simple_reduction with additional argument.
15603         (vect_analyze_loop_operations): Handle exit phi nodes in case of
15604         double reduction.
15605         (reduction_code_for_scalar_code): Handle additional codes by
15606         returning ERROR_MARK for them. Fix comment and indentation.
15607         (vect_is_simple_reduction): Fix comment, add argument to specify
15608         double reduction. Detect double reduction.
15609         (get_initial_def_for_induction): Fix indentation.
15610         (get_initial_def_for_reduction): Fix comment and indentation.
15611         Handle double reduction. Create initial definitions that do not
15612         require adjustment if ADJUSTMENT_DEF is NULL. Handle additional cases.
15613         (vect_create_epilog_for_reduction): Fix comment, add argument to
15614         handle double reduction. Use PLUS_EXPR in case of MINUS_EXPR in
15615         epilogue result extraction. Create double reduction phi node and
15616         replace relevant uses.
15617         (vectorizable_reduction): Call vect_is_simple_reduction with
15618         additional argument. Fix indentation. Update epilogue code treatment
15619         according to the changes in reduction_code_for_scalar_code. Check
15620         for double reduction. Call vect_create_epilog_for_reduction with
15621         additional argument.
15622         * tree-vect-stmts.c (process_use): Handle double reduction, update
15623         documentation.
15624         (vect_mark_stmts_to_be_vectorized): Handle double reduction.
15625         (vect_get_vec_def_for_operand): Likewise.
15626
15627 2009-07-12  Danny Smith  <dansmister@gmail.com>
15628
15629         * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't
15630         dllexport if !TREE_PUBLIC.
15631         (i386_pe_maybe_record_exported_symbol): Assert TREE_PUBLIC.
15632
15633 2009-07-11  Anatoly Sokolov  <aesok@post.ru>
15634
15635         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Redefine.
15636         (avr_extra_arch_macro) Remove declatation.
15637         * config/avr/avr.c (avr_cpu_cpp_builtins): New function.
15638         (avr_extra_arch_macro) Declare as static.
15639         * config/avr/avr-protos.h (avr_cpu_cpp_builtins): Dclare.
15640
15641 2009-07-11  Jan Hubicka  <jh@suse.cz>
15642
15643         PR middle-end/48388
15644         * except.c (can_be_reached_by_runtime): Test for NULL aka bitmap.
15645
15646 2009-07-11  Jakub Jelinek  <jakub@redhat.com>
15647
15648         PR debug/40713
15649         * dwarf2out.c (dw_fde_struct): Add in_std_section and
15650         cold_in_std_section bits.
15651         (dwarf2out_begin_prologue): Initialize them.
15652         (dwarf2out_finish): Don't emit FDE range into .debug_ranges
15653         if already covered by text_section or cold_text_section range.
15654
15655         PR rtl-optimization/40667
15656         * defaults.h (MINIMUM_ALIGNMENT): Define if not defined.
15657         * doc/tm.texi (MINIMUM_ALIGNMENT): Document it.
15658         * config/i386/i386.h (MINIMUM_ALIGNMENT): Define.
15659         * config/i386/i386.c (ix86_minimum_alignment): New function.
15660         * config/i386/i386-protos.h (ix86_minimum_alignment): New prototype.
15661         * cfgexpand.c (expand_one_var): Use MINIMIM_ALIGNMENT.
15662         * emit-rtl.c (gen_reg_rtx): Likewise.
15663         * function.c (assign_parms): Likewise.  If nominal_type needs
15664         bigger alignment than FUNCTION_ARG_BOUNDARY, use its alignment
15665         rather than passed_type's alignment.
15666
15667         PR target/40668
15668         * function.c (assign_parm_setup_stack): Adjust
15669         MEM_OFFSET (data->stack_parm) if promoted_mode is different
15670         from nominal_mode on big endian.
15671
15672 2009-07-11  Paolo Bonzini  <bonzini@gnu.org>
15673
15674         * expmed.c (emit_store_flag_1): Fix choice of zero vs. sign extension.
15675
15676 2009-07-10  DJ Delorie  <dj@redhat.com>
15677
15678         * config/mep/mep.c (mep_can_inline_p): Correct logic, and simplify.
15679
15680 2009-07-10  Mark Mitchell  <mark@codesourcery.com>
15681
15682         * config/arm/thumb2.md (thumb2_cbz): Correct computation of length
15683         attribute.
15684         (thumb2_cbnz): Likewise.
15685
15686 2009-07-10  David Daney  <ddaney@caviumnetworks.com>
15687
15688         PR target/39079
15689         * config.gcc (supported_defaults): Add synci.
15690         (with_synci): Add validation.
15691         (all_defaults): Add synci.
15692         * config/mips/mips.md (clear_cache): Use TARGET_SYNCI instead of
15693         ISA_HAS_SYNCI.
15694         (synci): Same.
15695         * config/mips/mips.opt (msynci): New option.
15696         * config/mips/mips.c (mips_override_options): Warn on use of
15697         -msynci for targets that do now support it.
15698         * gcc/config/mips/mips.h (OPTION_DEFAULT_SPECS): Add a default for
15699         msynci.
15700         * gcc/doc/invoke.texi (-msynci): Document the new option.
15701         * doc/install.texi (--with-synci): Document the new option.
15702
15703 2009-07-10  Richard Guenther  <rguenther@suse.de>
15704
15705         PR tree-optimization/40496
15706         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Create
15707         the PHI result with a compatible type.
15708
15709 2009-07-10  Manuel López-Ibáñez  <manu@gcc.gnu.org>
15710
15711         PR 25509
15712         PR 40614
15713         * c.opt (Wunused-result): New.
15714         * doc/invoke.texi: Document it.
15715         * c-common.c (c_warn_unused_result): Use it.
15716
15717 2009-07-09  DJ Delorie  <dj@redhat.com>
15718
15719         * targhooks.c (default_target_can_inline_p): Rename from
15720         default_target_option_can_inline_p.
15721         * targhooks.h (default_target_can_inline_p): Likewise.
15722         * target-def.h (TARGET_CAN_INLINE_P): Rename from
15723         TARGET_OPTION_CAN_INLINE_P.
15724         * config/i386/i386.c (TARGET_CAN_INLINE_P): Likewise.
15725         * config/mep/mep.c (TARGET_CAN_INLINE_P): Likewise.
15726         (mep_target_can_inline_p): Rename from
15727         mep_target_option_can_inline_p.
15728
15729         PR target/40626
15730         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Add coprocessor
15731         registers used to pass vectors.
15732
15733         * config/mep/mep.c (mep_option_can_inline_p): Remove error call.
15734
15735 2009-07-09  Tom Tromey  <tromey@redhat.com>
15736
15737         * unwind-dw2-fde-darwin.c: Include dwarf2.h.
15738         * config/mmix/mmix.c: Include dwarf2.h.
15739         * config/rs6000/darwin-fallback.c: Include dwarf2.h.
15740         * config/xtensa/unwind-dw2-xtensa.c: Include dwarf2.h.
15741         * config/sh/sh.c: Include dwarf2.h.
15742         * config/i386/i386.c: Include dwarf2.h.
15743         * Makefile.in (DWARF2_H): Remove 'elf'.
15744         * except.c: Include dwarf2.h.
15745         * unwind-dw2.c: Include dwarf2.h.
15746         * dwarf2out.c: Include dwarf2.h.
15747         * unwind-dw2-fde-glibc.c: Include dwarf2.h.
15748         * unwind-dw2-fde.c: Include dwarf2.h.
15749         * dwarf2asm.c: Include dwarf2.h.
15750
15751 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
15752
15753         * haifa-sched.c (insn_finishes_cycle_p): New static function.
15754         (max_issue): Use it.
15755         * sched-int.h (struct sched_info: insn_finishes_block_p): New
15756         scheduler hook.
15757         * sched-rgn.c (rgn_insn_finishes_block_p): Implement it.
15758         (region_sched_info): Update.
15759         * sched-ebb.c (ebb_sched_info): Update.
15760         * modulo-sched.c (sms_sched_info): Update.
15761         * sel-sched-ir.c (sched_sel_haifa_sched_info): Update.
15762
15763 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
15764
15765         * varasm.c (build_constant_desc): Don't share RTL in pool entries.
15766
15767 2009-07-09  Basile Starynkevitch  <basile@starynkevitch.net>
15768
15769         * plugin.c (try_init_one_plugin): passes RTLD_GLOBAL to dlopen.
15770
15771 2009-07-09  Jakub Jelinek  <jakub@redhat.com>
15772
15773         PR middle-end/40692
15774         * fold-const.c (fold_cond_expr_with_comparison): Don't replace
15775         arg1 with arg01 if arg1 is already INTEGER_CST.
15776
15777 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
15778
15779         * simplify-rtx.c (simplify_binary_operation_1) <AND>:
15780         Transform (and (truncate)) into (truncate (and)).
15781
15782 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
15783
15784         * combine.c (make_extraction): Check TRULY_NOOP_TRUNCATION before
15785         creating LHS paradoxical subregs.  Fix surrounding returns to
15786         use NULL_RTX rather than 0.
15787
15788 2009-07-08  DJ Delorie  <dj@redhat.com>
15789
15790         * config/mep/mep.c (mep_option_can_inline_p): New.
15791         (TARGET_OPTION_CAN_INLINE_P): Define.
15792
15793 2009-07-08  Mark Wielaard  <mjw@redhat.com>
15794
15795         PR debug/40659
15796         * dwarf2out.c (add_data_member_location_attribute): When we have
15797         only a constant offset don't emit a new location description using
15798         DW_OP_plus_uconst, but just add the constant with add_AT_int, when
15799         dwarf_version > 2.
15800
15801 2009-07-08  Richard Henderson  <rth@redhat.com>
15802
15803         PR target/38900
15804         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move to i386.c.
15805         (enum reg_class): Add CLOBBERED_REGS.
15806         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Likewise.
15807         * config/i386/i386.c (ix86_conditional_register_usage): Moved
15808         from CONDITIONAL_REGISTER_USAGE; build CLOBBERED_REGS for 64-bit.
15809         (ix86_function_ok_for_sibcall): Tidy.  Disallow MS->SYSV sibcalls.
15810         (ix86_expand_call): Use sibcall_insn_operand when needed.  Don't
15811         force 64-bit sibcalls into R11.
15812         * config/i386/constraints.md (U): New constraint.
15813         * config/i386/i386.md (sibcall_1, sibcall_value_1): Use it.
15814         (sibcall_1_rex64, sibcall_value_1_rex64): Likewise.
15815         (sibcall_1_rex64_v, sibcall_value_1_rex64_v): Remove.
15816
15817 2009-07-08  Shujing Zhao  <pearly.zhao@oracle.com>
15818
15819         * basic-block.h (dump_regset, debug_regset): Remove duplicate
15820         prototypes.
15821         * c-objc-common.h (c_initialize_diagnostics): Ditto.
15822         * ebitmap.h (dump_ebitmap): Ditto.
15823         * optabs.h (optab_libfunc): Ditto.
15824         * tree.h (tree_expr_nonzero_warnv_p): Ditto.
15825         * tree-flow.h (vect_can_force_dr_alignment_p,
15826         get_vectype_for_scalar_type): Ditto.
15827         (vectorize_loops): Move prototype to ...
15828         * tree-vectorizer.h: ... here. Also, adjust comment.
15829         (vect_set_verbosity_level): Remove duplicate prototype.
15830         * tree-ssa-loop.c: Include tree-vectorizer.h.
15831         * Makefile.in (tree-ssa-loop.o): Depend on tree-vectorizer.h.
15832
15833 2009-07-08  Nick Clifton  <nickc@redhat.com>
15834
15835         * config/i386/unix.h (ASM_COMMENT_START): Add a space after the
15836         forward slash.
15837
15838 2009-07-08  DJ Delorie  <dj@redhat.com>
15839
15840         * config/mep/mep-ivc2.cpu (cpmovtocsar0_C3, cpmovtocsar1_C3,
15841         cpmovtocc_C3, cpmovtocsar0_P0S_P1, cpmovtocsar1_P0S_P1,
15842         cpmovtocc_P0S_P1): Mark volatile.  Note which registers are
15843         written to.
15844         * config/mep/intrinsics.md: Regenerated.
15845         * config/mep/mep.c (mep_interrupt_saved_reg): Save IVC2 control
15846         registers when asm() or calls are detected.
15847
15848 2009-07-08  Manuel López-Ibáñez  <manu@gcc.gnu.org>
15849
15850         PR c++/31246
15851         * gimplify.c (gimplify_expr): Propagate no_warning flag when
15852         gimplifying.
15853         * gimple (gimple_build_call_from_tree): Likewise.
15854         * tree-cfg.c (remove_useless_stmts_warn_notreached): Check
15855         no_warning flag before warning.
15856
15857 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
15858
15859         * tree.c (set_expr_locus): Remove.
15860         * tree.h (EXPR_LOCUS,SET_EXPR_LOCUS,set_expr_locus): Remove.
15861         * c-typeck.c (c_finish_stmt_expr):  Replace EXPR_LOCUS by
15862         EXPR_LOCATION.
15863         * gimplify.c (internal_get_tmp_var): Likewise.
15864         (gimplify_call_expr): Likewise.
15865         (gimplify_one_sizepos): Likewise.
15866
15867 2009-07-07  Eric Botcazou  <ebotcazou@adacore.com>
15868
15869         PR debug/40666
15870         * dbxout.c (dbxout_symbol) <PARM_DECL>: Deal with parameters pointing
15871         to variables for debugging purposes.
15872
15873 2009-06-23  Mark Loeser  <mark@halcy0n.com>
15874
15875         PR build/40010
15876         * Makefile.in (gcc.pod): Depend on gcc-vers.texi.
15877
15878 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
15879
15880         * pretty-print.c (pp_base_format): Remove %J.
15881         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
15882         gcc_cxxdiag_char_table): Likewise.
15883         (init_dynamic_diag_info): Likewise.
15884
15885 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
15886
15887         * pretty-print.c (pp_base_format): Remove %H.
15888         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
15889         gcc_cxxdiag_char_table): Likewise.
15890         (init_dynamic_diag_info): Likewise.
15891         * config/mep/mep.c (mep_select_section): Likewise.
15892
15893 2009-07-07  Duncan Sands  <baldrick@free.fr>
15894
15895         * final.c (pass_clean_state): Give the pass a name.
15896         * passes.c (pass_rest_of_compilation): Likewise.
15897         * tree-optimize.c (pass_all_optimizations): Likewise.
15898
15899 2009-07-07  H.J. Lu  <hongjiu.lu@intel.com>
15900
15901         * config/ia64/ia64.c (ia64_handle_model_attribute): Remove
15902         an extra 'decl' for error_at.
15903
15904 2009-07-07  Jakub Jelinek  <jakub@redhat.com>
15905
15906         PR middle-end/40669
15907         * tree-tailcall.c (adjust_return_value_with_ops,
15908         create_tailcall_accumulator): Set DECL_GIMPLE_REG_P on the temporary
15909         if it has complex or vector type.
15910
15911 2009-07-07  Olivier Hainque  <hainque@adacore.com>
15912
15913         * config/alpha/t-osf4 (SHLIB_LINK): Do not hide the dummy weak
15914         pthread symbols.
15915
15916 2009-07-07  Basile Starynkevitch  <basile@starynkevitch.net>
15917
15918         * Makefile.in: added more lists of includes to PLUGIN_HEADERS.
15919
15920 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
15921
15922         * cgraphunit.c: Replace %J by an explicit location.  Update all calls.
15923         * c-decl.c: Likewise.
15924         * function.c: Likewise.
15925         * varasm.c: Likewise.
15926         * tree-ssa.c: Likewise.
15927         * c-common.c: Likewise.
15928         * tree-cfg.c: Likewise.
15929         * config/spu/spu.c: Likewise.
15930         * config/ia64/ia64.c: Likewise.
15931         * config/v850/v850.c: Likewise.
15932
15933 2009-07-06  DJ Delorie  <dj@redhat.com>
15934
15935         * config/mep/mep-core.cpu (fsft, ssarb): Mark as VOLATILE.
15936         * config/mep/mep-ivc2.cpu (many): Add VOLATILE to more insns that make
15937         unspecified accesses to control registers.
15938         * config/mep/intrinsics.md: Regenerate.
15939         * config/mep/intrinsics.h: Regenerate.
15940         * config/mep/mep-intrin.h: Regenerate.
15941
15942 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
15943
15944         * c-lex.c: Replace %H by an explicit location. Update all calls.
15945         * c-common.c: Likewise.
15946         * c-decl.c: Likewise.
15947         * c-typeck.c: Likewise.
15948         * fold-const.c: Likewise.
15949         * gimplify.c: Likewise.
15950         * stmt.c: Likewise.
15951         * tree-cfg.c: Likewise.
15952         * tree-ssa-loop-niter.c: Likewise.
15953         * tree-vrp.c: Likewise.
15954         * value-prof.c: Likewise.
15955
15956 2009-07-06  Diego Novillo  <dnovillo@google.com>
15957
15958         * tree-dfa.c (dump_variable): Write DECL_INITIAL for VAR
15959         if it has one.  Handle cases where VAR does not have an
15960         annotation or cfun is NULL.
15961
15962 2009-07-06  Diego Novillo  <dnovillo@google.com>
15963
15964         * tree.c: Include debug.h.
15965         (initialize_tree_contains_struct): New.
15966         (init_ttree): Call it.
15967         (tree_node_structure_for_code): Factor out of ...
15968         (tree_node_structure): ... here.
15969         * treestruct.def (TS_PHI_NODE): Remove.
15970         (TS_GIMPLE_STATEMENT): Remove.
15971
15972 2009-07-06  Diego Novillo  <dnovillo@google.com>
15973
15974         * tree-pretty-print.c (dump_generic_node): Protect against NULL op0.
15975         (debug_tree_chain): Handle cycles.
15976
15977 2009-07-06  Nick Clifton  <nickc@redhat.com>
15978             DJ Delorie  <dj@redhat.com>
15979
15980         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
15981         __FMOVD_ENABLED__ is defined.
15982         * config/sh/sh.h
15983         (TARGET_FMOVD): Provide a default definition.
15984         (MASK_FMOVD): Likewise.
15985         (TARGET_CPU_CPP_BUILTINS): Define
15986         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
15987         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
15988         two fmov instructions depending upon whether TARGET_FMOVD is enabled.
15989         (split for DF load from memory into register): Also handle
15990         MEMs which consist of REG+DISP addressing.
15991         (split for DF store from register to memory): Likewise.
15992         (movsf_ie): Always use single fp_mode.
15993         * config/sh/sh.c (sh_override_options): Do not automatically
15994         enable TARGET_MOVD for the SH2A when supporting doubles - leave
15995         that to the -mfmovd command line switch.
15996         (broken_move): Do not restrict fldi test to only the SH4 and SH4A.
15997         (fldi_ok): Always allow.
15998         * config/sh/sh.opt (mfmovd): Remove this switch.
15999         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
16000
16001 2009-07-06  J"orn Rennecke  <joern.rennecke@arc.com>
16002             Kaz Kojima  <kkojima@gcc.gnu.org>
16003
16004         PR rtl-optimization/30807
16005         * postreload.c (reload_combine): For every new use of REG_SUM,
16006         record the use of BASE.
16007
16008 2009-07-06  Jan Hubicka  <jh@suse.cz>
16009
16010         * params.def: Revert my accidental commit at 2009-06-30.
16011
16012 2009-07-04  Ian Lance Taylor  <iant@google.com>
16013
16014         PR target/40636
16015         * config/i386/msformat-c.c (mingw_format_attributes): Declare as
16016         EXPORTED_CONST.
16017         (mingw_format_attribute_overrides): Likewise.
16018
16019 2009-07-04  Jakub Jelinek  <jakub@redhat.com>
16020
16021         PR debug/40596
16022         * dwarf2out.c (based_loc_descr): For crtl->stack_realign_tried
16023         don't check cfa.reg.  Instead of cfa.indirect use
16024         fde && fde->drap_reg != INVALID_REGNUM test.
16025
16026 2009-07-04  Eric Botcazou  <ebotcazou@adacore.com>
16027
16028         * postreload.c (reload_combine): Replace CONST_REG with INDEX_REG.
16029
16030 2009-07-03  Vladimir Makarov  <vmakarov@redhat.com>
16031
16032         PR target/40587
16033         * ira.c (build_insn_chain): Use DF_LR_OUT instead of df_get_live_out.
16034
16035 2009-07-03  Richard Guenther  <rguenther@suse.de>
16036
16037         PR tree-optimization/40640
16038         * tree-switch-conversion.c (build_arrays): Perform arithmetic
16039         in original type.
16040
16041 2009-07-03  Jan Hubicka  <jh@suse.cz>
16042
16043         * ipa-inline.c (cgraph_decide_inlining_incrementally): When optimizing
16044         for size, reduce amount of inlining.
16045
16046 2009-07-03  Richard Guenther  <rguenther@suse.de>
16047
16048         PR middle-end/34163
16049         * tree-chrec.c (chrec_convert_1): Fold (T2)(t +- x) to (T2)t +- (T2)x
16050         if t +- x is known to not overflow and the conversion widens the
16051         operation.
16052         * Makefile.in (tree-chrec.o): Add $(FLAGS_H) dependency.
16053
16054 2009-07-03  Jan Hubicka  <jh@suse.cz>
16055
16056         * ipa-pure-const.c (analyze): Update loop optimizer init.
16057         * tree-ssa-loop-iv-canon.c (empty_loop_p, remove_empty_loop,
16058         try_remove_empty_loop, remove_empty_loops): Remove.
16059         * tree-ssa-loop.c (tree_ssa_empty_loop, pass_empty_loop): Remove.
16060         * tree-ssa-dce.c (find_obviously_necessary_stmts): Use finiteness info
16061         to mark regular loops as neccesary.
16062         (degenerate_phi_p): New function.
16063         (propagate_necessity, remove_dead_phis): Use it.
16064         (forward_edge_to_pdom): Likewise.
16065         (eliminate_unnecessary_stmts): Take care to remove uses of results of
16066         virtual PHI nodes that became unreachable.
16067         (perform_tree_ssa_dce): Initialize/deinitialize loop optimizer.
16068         * tree-flow.h (remove_empty_loops): Remove.
16069         * passes.c (init_optimization_passes): Remove.
16070
16071 2009-07-03  Uros Bizjak  <ubizjak@gmail.com>
16072
16073         * config/i386/i386.md (fix_trunc<mode>_fisttp_i387_1): Use
16074         can_create_pseudo_p.
16075         (*fix_trunc<mode>_i387_1): Ditto.
16076         (*floathi<mode>2_1): Ditto.
16077         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): Ditto.
16078         (*fistdi2_1): Ditto.
16079         (*fist<mode>2_1): Ditto.
16080         (frndintxf2_floor): Ditto.
16081         (*fist<mode>2_floor_1): Ditto.
16082         (frndintxf2_ceil): Ditto.
16083         (*fist<mode>2_ceil_1): Ditto.
16084         (frndintxf2_trunc): Ditto.
16085         (frndintxf2_mask_pm): Ditto.
16086         (fxam<mode>2_i387_with_temp): Ditto.
16087         * config/i386/sse.md (mulv16qi3): Ditto.
16088         (*sse2_mulv4si3): Ditto.
16089         (mulv2di3): Ditto.
16090         (sse4_2_pcmpestr): Ditto.
16091         (sse4_2_pcmpistr): Ditto.
16092
16093 2009-07-03  Jan Hubicka  <jh@suse.cz>
16094
16095         * tree-ssa-dce.c (bb_contains_live_stmts): New bitmap.
16096         (mark_stmt_necessary): Set it.
16097         (mark_operand_necessary): Set it.
16098         (mark_control_dependent_edges_necessary): Set it.
16099         (mark_virtual_phi_result_for_renaming): New function.
16100         (get_live_post_dom): New function.
16101         (forward_edge_to_pdom): New function.
16102         (remove_dead_stmt): Fix handling of control dependences.
16103         (tree_dce_init): Init new bitmap.
16104         (tree_dce_done): Free it.
16105
16106 2009-07-02  Richard Guenther  <rguenther@suse.de>
16107
16108         PR bootstrap/40617
16109         * tree-ssa-structalias.c (new_var_info): Initialize
16110         is_restrict_var.
16111
16112 2009-07-02  Jan Hubicka  <jh@suse.cz>
16113
16114         * ipa-pure-const.c (check_op): Use PTA info to see if indirect_ref is
16115         local.
16116
16117 2009-07-02  Paolo Bonzini  <bonzini@gnu.org>
16118
16119         * expmed.c (emit_cstore, emit_store_flag_1): Accept target_mode
16120         instead of recomputing it.  Adjust calls.
16121         (emit_store_flag): Adjust recursive calls.
16122
16123 2009-07-02  Richard Guenther  <rguenther@suse.de>
16124
16125         * tree-ssa-live.c (remove_unused_locals): Do not remove
16126         heap variables.
16127         * tree-ssa-structalias.c (handle_lhs_call): Delay setting
16128         of DECL_EXTERNAL for HEAP variables.
16129         (compute_points_to_sets): Set DECL_EXTERNAL for escaped
16130         HEAP variables.  Do not adjust RESTRICT vars.
16131         (find_what_var_points_to): Nobody cares if something
16132         points to READONLY.
16133
16134 2009-07-02  Ben Elliston  <bje@au.ibm.com>
16135
16136         * unwind-dw2-fde-glibc.c (_Unwind_IteratePhdrCallback): Move
16137         pc_low and pc_high declarations to the top of the function.
16138
16139 2009-07-01  DJ Delorie  <dj@redhat.com>
16140
16141         * config/mep/mep.c (mep_handle_option): Leave IVC2 control
16142         registers as fixed.
16143         (mep_interrupt_saved_reg): Save appropriate IVC2 control registers.
16144         * config/mep/mep-ivc2.cpu: Add VOLATILE to insns that make
16145         unspecified accesses to control registers.
16146         * config/mep/intrinsics.md: Regenerate.
16147         * config/mep/intrinsics.h: Regenerate.
16148         * config/mep/mep-intrin.h: Regenerate.
16149
16150 2009-07-01  Anthony Green  <green@moxielogic.com>
16151
16152         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
16153         instruction when possible.
16154         (moxie_expand_prologue): Ditto.  Also, save an instruction and
16155         some complexity by popping off of $r12 instead of $sp.
16156         * config/moxie/moxie.md (movsi_pop): Don't assume $sp.  Take two
16157         operands.
16158
16159 2009-07-01  Richard Henderson  <rth@redhat.com>
16160
16161         PR bootstrap/40347
16162         * function.c (reposition_prologue_and_epilogue_notes): If epilogue
16163         contained no insns, reposition note before last insn.
16164
16165 2009-07-01  Richard Henderson  <rth@redhat.com>
16166
16167         PR debug/40431
16168         * dwarf2out.c (def_cfa_1): Revert 2009-06-11 change for
16169         DW_CFA_def_cfa_offset and DW_CFA_def_cfa.
16170
16171 2009-07-01  Michael Meissner  <meissner@linux.vnet.ibm.com>
16172
16173         PR bootstrap/40558
16174         * config/rs6000/rs6000.c (print_operand): Undo change that breaks
16175         darwin9 for printing reg addresses with %y.
16176
16177 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
16178
16179         * combine.c (force_to_mode): Handle TRUNCATE.  Factor out
16180         truncation from operands in binary operations.
16181
16182 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
16183
16184         Revert:
16185         2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
16186         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
16187         subreg of op0 to the original op0.
16188
16189         * expmed.c (store_bit_field_1): Use a temporary as the destination
16190         instead of a paradoxical subreg when we need to truncate the result.
16191
16192 2009-07-01  DJ Delorie  <dj@redhat.com>
16193
16194         * config/mep/mep-ivc2.cpu (cmov, cmovc, cmovh): Add intrinsic
16195         names to VLIW variants.
16196         (ivc2rm, ivc2crn): Make data type consistent with non-VLIW variants.
16197         * config/mep/intrinsics.md: Regenerate.
16198         * config/mep/intrinsics.h: Regenerate.
16199         * config/mep/mep-intrin.h: Regenerate.
16200
16201 2009-07-01  Jakub Jelinek  <jakub@redhat.com>
16202
16203         PR debug/40462
16204         * jump.c (returnjump_p): Revert last patch.
16205         * dwarf2out.c (dwarf2out_begin_epilogue): Handle SEQUENCEs.
16206
16207 2009-07-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
16208
16209         PR target/40575
16210         * pa.md (casesi32p): Use jump table label to determine the offset
16211         of the jump table.
16212         (casesi64p): Likewise.
16213
16214         * pa.c (forward_branch_p): Return bool type.  Use instruction
16215         addresses when available.  Assert that INSN has a jump label.
16216         (pa_adjust_insn_length): Don't call forward_branch_p if INSN doesn't
16217         have a jump label.
16218
16219 2009-07-01  Richard Guenther  <rguenther@suse.de>
16220
16221         PR tree-optimization/19831
16222         * tree-ssa-dce.c (propagate_necessity): Calls to functions
16223         that only act as barriers do not make any previous stores necessary.
16224         * tree-ssa-structalias.c (handle_lhs_call): Delay making
16225         HEAP variables global, do not add a constraint from nonlocal.
16226         (find_func_aliases): Handle escapes through return statements.
16227         (compute_points_to_sets): Make escaped HEAP variables global.
16228
16229 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
16230
16231         PR bootstrap/40597
16232         * expmed.c (emit_store_flag): Perform a conversion if necessary,
16233         after reducing a DImode cstore to SImode.
16234
16235 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
16236
16237         * expr.c (expand_expr_real_1): Reinstate fallthrough to
16238         TRUTH_ANDIF_EXPR if do_store_flag returns NULL.
16239
16240 2009-07-01  Maciej W. Rozycki  <macro@linux-mips.org>
16241
16242         * config/vax/vax.h (TARGET_BSD_DIVMOD): New macro.  Set to 1.
16243         * config/vax/linux.h (TARGET_BSD_DIVMOD): New macro.  Redefine the
16244         to 0.
16245         * config/vax/vax.c (vax_init_libfuncs): Only redefine udiv_optab
16246         and umod_optab if TARGET_BSD_DIVMOD.
16247         * config/vax/lib1funcs.asm: New file.
16248         * config/vax/t-linux: New file.
16249         * config.gcc (vax-*-linux*): Set tmake_file to vax/t-linux.
16250
16251 2009-06-30  Jakub Jelinek  <jakub@redhat.com>
16252
16253         PR c++/40566
16254         * convert.c (convert_to_integer) <case COND_EXPR>: Don't convert
16255         to type arguments that have void type.
16256
16257         PR debug/40573
16258         * dwarf2out.c (gen_formal_parameter_die): Call
16259         equate_decl_number_to_die if node is different from origin.
16260
16261 2009-06-30  Anthony Green  <green@moxielogic.com>
16262
16263         Clean up moxie port for --enable-build-with-cxx.
16264         * config/moxie/moxie.c (moxie_function_value): First two
16265         parameters are const_tree, not tree.
16266         * config/moxie/moxie.h (enum reg_class): Rename CC_REG to CC_REGS.
16267         (REG_CLASS_NAMES): Ditto.
16268         (REGNO_REG_CLASS): Ditto.
16269         * config/moxie/moxie-protos.h (moxie_override_options): Declare.
16270         (moxie_function_value): Fix constyness of arguments.
16271
16272 2009-06-30  Eric Botcazou  <ebotcazou@adacore.com>
16273
16274         * cgraphunit.c (cgraph_finalize_compilation_unit): Call
16275         finalize_size_functions before further processing.
16276         * stor-layout.c: Include cgraph.h, tree-inline.h and tree-dump.h.
16277         (variable_size): Call self_referential_size on size expressions
16278         that contain a PLACEHOLDER_EXPR.
16279         (size_functions): New static variable.
16280         (copy_self_referential_tree_r): New static function.
16281         (self_referential_size): Likewise.
16282         (finalize_size_functions): New global function.
16283         * tree.c: Include tree-inline.h.
16284         (push_without_duplicates): New static function.
16285         (find_placeholder_in_expr): New global function.
16286         (substitute_in_expr) <tcc_declaration>: Return the replacement object
16287         on equality.
16288         <tcc_expression>: Likewise.
16289         <tcc_vl_exp>: If the replacement object is a constant, try to inline
16290         the call in the expression.
16291         * tree.h (finalize_size_functions): Declare.
16292         (find_placeholder_in_expr): Likewise.
16293         (FIND_PLACEHOLDER_IN_EXPR): New macro.
16294         (substitute_placeholder_in_expr): Update comment.
16295         * tree-inline.c (remap_decl): Do not unshare trees if do_not_unshare
16296         is true.
16297         (copy_tree_body_r): Likewise.
16298         (copy_tree_body): New static function.
16299         (maybe_inline_call_in_expr): New global function.
16300         * tree-inline.h (struct copy_body_data): Add do_not_unshare field.
16301         (maybe_inline_call_in_expr): Declare.
16302         * Makefile.in (tree.o): Depend on TREE_INLINE_H.
16303         (stor-layout.o): Depend on CGRAPH_H, TREE_INLINE_H, TREE_DUMP_H and
16304         GIMPLE_H.
16305
16306 2009-06-30  Richard Guenther  <rguenther@suse.de>
16307
16308         * tree-ssa-dce.c (mark_all_reaching_defs_necessary_1): Always
16309         continue walking.
16310         (propagate_necessity): Do not mark reaching defs of stores
16311         as necessary.
16312
16313 2009-06-30  Jan Hubicka  <jh@suse.cz>
16314
16315         * cfgloopanal.c (check_irred): Move into ...
16316         (mark_irreducible_loops): ... here; return true if ireducible
16317         loops was found.
16318         * ipa-pure-const.c: Include cfgloop.h and tree-scalar-evolution.h
16319         (analyze_function): Try to prove loop finiteness.
16320         * cfgloop.h (mark_irreducible_loops): Update prototype.
16321         * Makefile.in (ipa-pure-const.o): Add dependency on SCEV and CFGLOOP.
16322
16323 2009-06-30  Basile Starynkevitch  <basile@starynkevitch.net>
16324
16325         * Makefile.in (PLUGIN_HEADERS): added ggc, tree-dump, pretty-print.
16326
16327 2009-06-30  Ira Rosen  <irar@il.ibm.com>
16328
16329         PR tree-optimization/40542
16330         * tree-vect-stmts.c (vect_analyze_stmt): Don't vectorize volatile
16331         types.
16332
16333 2009-06-30  Martin Jambor  <mjambor@suse.cz>
16334
16335         PR tree-optimization/40582
16336         * tree-sra.c (build_ref_for_offset_1): Use types_compatible_p rather
16337         than useless_type_conversion_p.
16338         (generate_subtree_copies): Increment sra_stats.subtree_copies at a
16339         proper place.
16340
16341 2009-06-30  Martin Jambor  <mjambor@suse.cz>
16342
16343         PR middle-end/40554
16344         * tree-sra.c (sra_modify_expr): Add access->offset to start_offset.
16345
16346 2009-06-30  Richard Guenther  <rguenther@suse.de>
16347
16348         * tree-ssa-alias.c (walk_aliased_vdefs_1): Change interface to
16349         use ao_ref references.
16350         (walk_aliased_vdefs): Likewise.
16351         * tree-ssa-alias.h (walk_aliased_vdefs): Adjust prototype.
16352         * tree-ssa-dce.c (struct ref_data): Remove.
16353         (mark_aliased_reaching_defs_necessary_1): Use the ao_ref argument.
16354         (mark_aliased_reaching_defs_necessary): Adjust.
16355         (mark_all_reaching_defs_necessary_1): Likewise.
16356
16357 2009-06-30  Paolo Bonzini  <bonzini@gnu.org>
16358
16359         PR boostrap/40597
16360         * expmed.c (emit_cstore): New name of emit_store_flag_1.
16361         (emit_store_flag_1): Extract from emit_store_flag, adjust
16362         calls to (what now is) emit_cstore.
16363         (emit_store_flag): Call emit_store_flag_1 and also use it
16364         for what used to be recursive calls.
16365
16366 2009-06-30  Wei Guozhi  <carrot@google.com>
16367
16368         PR/40416
16369         * tree-ssa-sink.c (statement_sink_location): Stop sinking expression
16370         if the target bb post dominates from bb.
16371         * config/i386/i386.c (memory_address_length): Check existence of base
16372         register before using it.
16373
16374 2009-06-30  Nick Clifton  <nickc@redhat.com>
16375             DJ Delorie  <dj@redhat.com>
16376
16377         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
16378         __FMOVD_ENABLED__ is defined.
16379         * config/sh/sh.h
16380         (TARGET_FMOVD): Provide a default definition.
16381         (MASK_FMOVD): Likewise.
16382         (TARGET_CPU_CPP_BUILTINS): Define
16383         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
16384         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
16385         two fmov instructions depending upon whether TARGET_FMOVD is
16386         enabled.
16387         (split for DF load from memory into register): Also handle
16388         MEMs which consist of REG+DISP addressing.
16389         (split for DF store from register to memory): Likewise.
16390         * config/sh/sh.opt (mfmovd): Remove this switch.
16391         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
16392         * config/sh/sh.c (sh_override_options): Do not automatically
16393         enable TARGET_MOVD for the SH2A when supporting doubles - leave
16394         that to the -mfmovd command line switch.
16395
16396         * config/sh/sh.c (broken_move): Do not restrict fldi test to only
16397         the SH4 and SH4A.
16398         (fldi_ok): Always allow.
16399         * config/sh/sh.md (movsf_ie): Always use single fp_mode.
16400
16401 2009-06-29  DJ Delorie  <dj@redhat.com>
16402
16403         * doc/install.texi (mep-x-elf): Correct chip's full name.
16404
16405 2009-06-29  H.J. Lu  <hongjiu.lu@intel.com>
16406
16407         * doc/extend.texi: Fix typo.
16408
16409 2009-06-29  Tom Tromey  <tromey@redhat.com>
16410
16411         * dwarf2.h: Remove.
16412         * Makefile.in (DWARF2_H): New variable.
16413         (except.o): Use it.
16414         (dwarf2out.o): Likewise.
16415         (dwarf2asm.o): Likewise.
16416         * config/i386/t-i386: Use DWARF2_H.
16417         * except.c: Include elf/dwarf2.h.
16418         * unwind-dw2.c: Include elf/dwarf2.h.
16419         * dwarf2out.c: Include elf/dwarf2.h.
16420         (dw_loc_descr_struct) <dw_loc_opc>: Now a bitfield.
16421         <dtprel>: New field.
16422         (dwarf_stack_op_name): Don't handle INTERNAL_DW_OP_tls_addr.
16423         (size_of_loc_descr): Likewise.
16424         (output_loc_operands_raw): Likewise.
16425         (output_loc_operands): Handle new dtprel field.
16426         (loc_checksum): Update.
16427         (loc_descriptor_from_tree_1) <VAR_DDECL>: Set dtprel field.
16428         * unwind-dw2-fde-glibc.c: Include elf/dwarf2.h.
16429         * unwind-dw2-fde.c: Include elf/dwarf2.h.
16430         * dwarf2asm.c: Include elf/dwarf2.h.
16431         * unwind-dw2-fde-darwin.c: Include elf/dwarf2.h.
16432         * config/mmix/mmix.c: Include elf/dwarf2.h.
16433         * config/rs6000/darwin-fallback.c: Include elf/dwarf2.h.
16434         * config/xtensa/unwind-dw2-xtensa.c: Include elf/dwarf2.h.
16435         * config/sh/sh.c: Include elf/dwarf2.h.
16436         * config/i386/i386.c: Include elf/dwarf2.h.
16437
16438 2009-06-29  DJ Delorie  <dj@redhat.com>
16439
16440         * config/mep/mep.h (CPP_SPEC): Remove __cop macro.
16441
16442         * doc/extend.texi: Add MeP attributes and pragmas.
16443         * doc/invoke.text: Add MeP Options.
16444         * doc/contrib.texi: Add MeP contribution.
16445         * doc/md.texi: Add MeP constraints.
16446         * doc/install.texi: Add MeP target.
16447
16448 2009-06-30  Anatoly Sokolov  <aesok@post.ru>
16449
16450         * target.h (struct gcc_target): Add frame_pointer_required field.
16451         * target-def.h (TARGET_FRAME_POINTER_REQUIRED): New.
16452         (TARGET_INITIALIZER): Use TARGET_FRAME_POINTER_REQUIRED.
16453         * ira.c (setup_eliminable_regset): Use frame_pointer_required target
16454         hook.
16455         * reload1.c (update_eliminables): (Ditto.).
16456         * gcc/system.h (FRAME_POINTER_REQUIRED): Poison.
16457         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
16458         (INITIAL_FRAME_POINTER_OFFSET): (Ditto.).
16459
16460         * config/arc/arc.h (FRAME_POINTER_REQUIRED): Remove macro.
16461
16462         * config/arm/arm.h (FRAME_POINTER_REQUIRED): Remove macro.
16463         * config/arm/arm.c (TARGET_FRAME_POINTER_REQUIRED): Define.
16464         (arm_frame_pointer_required): New function.
16465
16466         * config/avr/avr.h (FRAME_POINTER_REQUIRED): Remove macro.
16467         * config/avr/avr.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
16468         (avr_frame_pointer_required_p): Declare as static.
16469         * config/avr/avr-protos.h (avr_frame_pointer_required_p): Remove.
16470
16471         * config/bfin/bfin.h (FRAME_POINTER_REQUIRED): Remove macro.
16472         * config/bfin/bfin.c (TARGET_FRAME_POINTER_REQUIRED): Define.
16473         (bfin_frame_pointer_required): Make as static, change return type
16474         to bool.
16475         * config/bfin/bfin-protos.h (bfin_frame_pointer_required): Remove.
16476
16477         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Remove macro.
16478         * config/cris/cris.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
16479         (cris_frame_pointer_required): New function.
16480
16481         * config/crx/crx.h (FRAME_POINTER_REQUIRED): Remove macro.
16482
16483         * config/fr30/fr30.h (FRAME_POINTER_REQUIRED): Remove macro.
16484         * config/fr30/fr30.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
16485         (fr30_frame_pointer_required): New function.
16486
16487         * config/frv/frv.h (FRAME_POINTER_REQUIRED): Remove macro.
16488         * config/frv/frv.c (TARGET_FRAME_POINTER_REQUIRED): Define.
16489         (frv_frame_pointer_required): Make as static, change return type
16490         to bool.
16491         * config/bfin/bfin-protos.h (frv_frame_pointer_required): Remove.
16492
16493         * config/i386/i386.h (FRAME_POINTER_REQUIRED): Remove macro.
16494         * config/i386/i386.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
16495         (ix86_frame_pointer_required): Make as static, change return type to
16496         bool.
16497         * config/i386/i386-protos.h (ix86_frame_pointer_required): Remove.
16498
16499         * config/m32c/m32c.h (FRAME_POINTER_REQUIRED): Remove macro.
16500         * config/m32c/m32c.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
16501
16502         * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Remove macro.
16503
16504         * config/mcore/mcore.h (CAN_ELIMINATE): Remove macro.
16505
16506         * config/mep/mep.h (FRAME_POINTER_REQUIRED): Remove macro.
16507
16508         * config/mips/mips.h (FRAME_POINTER_REQUIRED): Remove macro.
16509         * config/mips/mips.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
16510         (mips_frame_pointer_required): Make as static.
16511         * config/mips/mips-protos.h (mips_frame_pointer_required): Remove.
16512
16513         * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Remove macro.
16514         * config/mmix/mmix.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
16515         (mmix_frame_pointer_required): Mew function.
16516
16517         * config/moxie/moxie.h (FRAME_POINTER_REQUIRED): Remove macro.
16518         * config/moxie/moxie.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
16519
16520         * config/pa/pa.h (FRAME_POINTER_REQUIRED): Remove macro.
16521
16522         * config/score/score.h (FRAME_POINTER_REQUIRED): Remove macro.
16523
16524         * config/sh/sh.h (CAN_ELIMINATE): Remove macro.
16525
16526         * config/sparc/sparc.h (FRAME_POINTER_REQUIRED): Remove macro.
16527         (CAN_ELIMINATE): Redefine.
16528         * config/sparc/sparc.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
16529         (sparc_frame_pointer_required): New function.
16530         (sparc_can_eliminate): New function.
16531         * config/sparc/sparc-protos.h (sparc_can_eliminate): Declare.
16532
16533         * config/vax/vax.h (FRAME_POINTER_REQUIRED): Remove macro.
16534         * config/vax/vax.c (TARGET_FRAME_POINTER_REQUIRED): Define.
16535
16536         * config/xtensa/xtensa.h (FRAME_POINTER_REQUIRED): Remove macro.
16537         * config/xtensa/xtensa.c (TARGET_FRAME_POINTER_REQUIRED): Define.
16538         (xtensa_frame_pointer_required): Make as static, change return type
16539         to bool.
16540         * config/xtensa/xtensa-protos.h (xtensa_frame_pointer_required):
16541         Remove.
16542
16543 2009-06-29  Olatunji Ruwase  <tjruwase@google.com>
16544
16545         * doc/plugins.texi: Document PLUGIN_START_UNIT.
16546         * toplev.c (compile_file): Call PLUGIN_START_UNIT.
16547         * gcc-plugin.h (PLUGIN_START_UNIT): Added new event.
16548         * plugin.c (plugin_event_name): Added PLUGIN_START_UNIT.
16549         (register_callback): Handle PLUGIN_START_UNIT.
16550         (invoke_plugin_callbacks): Handle PLUGIN_START_UNIT.
16551
16552 2009-06-29  Eric Botcazou  <ebotcazou@adacore.com>
16553
16554         * tree.c (process_call_operands): Propagate TREE_READONLY from the
16555         operands.
16556         (PROCESS_ARG): Do not clear TREE_READONLY if CONSTANT_CLASS_P.
16557         (build3_stat): Propagate TREE_READONLY for COND_EXPR.
16558
16559 2009-06-29  Daniel Jacobowitz  <dan@codesourcery.com>
16560
16561         * config/arm/arm.h (REGISTER_MOVE_COST): Increase VFP register
16562         move cost.
16563
16564 2009-06-29  Uros Bizjak  <ubizjak@gmail.com>
16565
16566         * doc/extend.texi (Additional Floating Types): __float128 is also
16567         supported on i386 targets.
16568
16569 2009-06-29  Richard Guenther  <rguenther@suse.de>
16570
16571         PR middle-end/14187
16572         * tree-ssa-alias.h (struct pt_solution): Add vars_contains_restrict
16573         flag.
16574         (pt_solutions_same_restrict_base): Declare.
16575         * tree-ssa-structalias.c (struct variable_info): Add is_restrict_var
16576         flag.
16577         (new_var_info): Initialize is_global_var properly for SSA_NAMEs.
16578         (make_constraint_from, make_copy_constraint): Move earlier.
16579         (make_constraint_from_heapvar): New function.
16580         (make_constraint_from_restrict): Likewise.
16581         (handle_lhs_call): Use it.
16582         (find_func_aliases): Use it to track conversions to restrict
16583         qualified pointers.
16584         (struct fieldoff): Add only_restrict_pointers flag.
16585         (push_fields_onto_fieldstack): Initialize it.
16586         (create_variable_info_for): Track global restrict qualified pointers.
16587         (intra_create_variable_infos): Use make_constraint_from_heapvar.
16588         Track restrict qualified pointer arguments.
16589         (set_uids_in_ptset): Use varinfo is_global_var flag.
16590         (find_what_var_points_to): Set the vars_contains_restrict flag.
16591         Always create the points-to solution for sets including restrict tags.
16592         (pt_solutions_same_restrict_base): New function.
16593         * tree-ssa-alias.c (ptr_derefs_may_alias_p): For two restrict
16594         qualified pointers use pt_solutions_same_restrict_base as
16595         additional source for disambiguation.
16596
16597 2009-06-29  Richard Guenther  <rguenther@suse.de>
16598
16599         PR middle-end/38212
16600         * alias.c (find_base_decl): Remove.
16601         (get_deref_alias_set_1): Remove restrict handling.
16602         * c-common.c (c_apply_type_quals_to_decl): Do not set
16603         DECL_POINTER_ALIAS_SET.
16604         * gimplify.c (find_single_pointer_decl_1): Remove.
16605         (find_single_pointer_decl): Likewise.
16606         (internal_get_tmp_var): Remove restrict handling.
16607         (gimple_regimplify_operands): Likewise.
16608         * omp-low.c (expand_omp_atomic_pipeline): Do not set
16609         DECL_POINTER_ALIAS_SET. Use ref-all pointers.
16610         * print-tree.c (print_node): Do not print DECL_POINTER_ALIAS_SET.
16611         * tree.c (restrict_base_for_decl): Remove.
16612         (init_ttree): Do not allocate it.
16613         (make_node_stat): Do not set DECL_POINTER_ALIAS_SET.  Set
16614         LABEL_DECL_UID for label decls.
16615         (copy_node_stat): Do not copy restrict information.
16616         (decl_restrict_base_lookup): Remove.
16617         (decl_restrict_base_insert): Likewise.
16618         (print_restrict_base_statistics): Likewise.
16619         (dump_tree_statistics): Do not call print_restrict_base_statistics.
16620         * tree.h (DECL_POINTER_ALIAS_SET): Remove.
16621         (DECL_POINTER_ALIAS_SET_KNOWN_P): Likewise.
16622         (struct tree_decl_common): Rename pointer_alias_set to label_decl_uid.
16623         (LABEL_DECL_UID): Adjust.
16624         (DECL_BASED_ON_RESTRICT_P): Remove.
16625         (DECL_GET_RESTRICT_BASE): Likewise.
16626         (SET_DECL_RESTRICT_BASE): Likewise.
16627         (struct tree_decl_with_vis): Remove based_on_restrict_p flag.
16628
16629         * config/i386/i386.c (ix86_gimplify_va_arg): Use ref-all pointers
16630         instead of DECL_POINTER_ALIAS_SET.
16631         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
16632         * config/s390/s390.c (s390_gimplify_va_arg): Likewise.
16633         * config/spu/spu.c (spu_gimplify_va_arg_expr): Likewise.
16634
16635 2009-06-29  Richard Guenther  <rguenther@suse.de>
16636
16637         PR tree-optimization/40579
16638         * tree-vrp.c (vrp_evaluate_conditional): Bail out early if
16639         the IL to simplify has constants that overflowed.
16640
16641 2009-06-28  Uros Bizjak  <ubizjak@gmail.com>
16642
16643         PR tree-optimization/40550
16644         * tree-vect-generic.c (expand_vector_operations_1): Compute in
16645         vector_compute_type only when the size of vector_compute_type is
16646         less than the size of type.
16647
16648 2009-06-28  Eric Botcazou  <ebotcazou@adacore.com>
16649
16650         * fold-const.c (contains_label_1): Fix comments.
16651         (contains_label_p): Do not walk trees multiple time.
16652
16653 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
16654
16655         * config/i386/i386.h (enum ix86_fpcmp_strategy): New.
16656         * config/i386/i386.md (cbranchxf4, cstorexf4, cbranch<MODEF>4,
16657         cstore<MODEF>4, mov<X87MODEF>cc): Change predicate to
16658         ix86_fp_comparison_operator.
16659         (*fp_jcc_1_mixed, *fp_jcc_1_sse, *fp_jcc_1_387, *fp_jcc_2_mixed,
16660         *fp_jcc_2_sse, *fp_jcc_2_387): Delete
16661         (*fp_jcc_3_387, *fp_jcc_4_387, *fp_jcc_5_387, *fp_jcc_6_387,
16662         *fp_jcc_7_387, *fp_jcc_8<MODEF>_387): Eliminate call to
16663         !ix86_use_fcomi_compare, change ix86_fp_jump_nontrivial_p call
16664         to !TARGET_CMOVE, change predicate to ix86_fp_comparison_operator.
16665         (related splits): Change predicate to ix86_fp_comparison_operator.
16666         * config/i386/predicates.md: Use ix86_trivial_fp_comparison_operator
16667         instead of ix86_fp_comparison_codes.
16668         (ix86_trivial_fp_comparison_operator,
16669         ix86_fp_comparison_operator): New.
16670         * config/i386/i386-protos.h (ix86_fp_comparison_strategy): New.
16671         (ix86_expand_compare): Eliminate last two parameters.
16672         (ix86_fp_jump_nontrivial_p): Kill.
16673         * config/i386/i386.c (put_condition_code): Eliminate call to
16674         ix86_fp_comparison_codes and subsequent assertion.
16675         (ix86_fp_comparison_codes): Eliminate.
16676         (ix86_fp_swap_condition): New.
16677         (ix86_fp_comparison_arithmetics_cost, ix86_fp_comparison_fcomi_cost,
16678         ix86_fp_comparison_sahf_cost, ix86_use_fcomi_compare): Consolidate
16679         into ix86_fp_comparison_cost and ix86_fp_comparison_strategy.
16680         (ix86_prepare_fp_compare_args): Use ix86_fp_comparison_strategy
16681         and ix86_fp_swap_condition.
16682         (ix86_expand_fp_compare): Eliminate code for second jump/bypass jump.
16683         Use ix86_fp_comparison_strategy.
16684         (ix86_expand_compare): Likewise.  Eliminate last two arguments.
16685         (ix86_fp_jump_nontrivial_p): Eliminate.
16686         (ix86_expand_branch): Treat SFmode/DFmode/XFmode as simple.  Adjust
16687         call to ix86_expand_compare.
16688         (ix86_split_fp_branch, ix86_expand_setcc,
16689         ix86_expand_carry_flag_compare, ix86_expand_int_movcc,
16690         ix86_expand_fp_movcc): Eliminate code for second jump/bypass jump.
16691
16692 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
16693
16694         * config/arm/arm.c (arm_final_prescan_ins): Eliminate code
16695         related to jump_clobbers.
16696         * config/arm/arm.md (conds): Remove jump_clob case.
16697         (addsi3_cbranch, addsi3_cbranch_scratch, subsi3_cbranch, two
16698         splits): Change comparison_operator to arm_comparison_operator.
16699         (*arm_buneq, *arm_bltgt, *arm_buneq_reversed, *arm_bltgt_reversed):
16700         Eliminate.
16701
16702 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
16703
16704         * dojump.c (do_compare_rtx_and_jump): Try swapping the
16705         condition for floating point modes.
16706         * expmed.c (emit_store_flag_1): Move here a bigger part
16707         of emit_store_flag.
16708         (emit_store_flag): Try swapping the condition for floating point
16709         modes.
16710         * optabs.c (emit_cmp_and_jump_insns): Cope with constant op0 better.
16711
16712 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
16713
16714         * expr.c (expand_expr_real_1): Just use do_store_flag.
16715         (do_store_flag): Drop support for TRUTH_NOT_EXPR.  Use
16716         emit_store_flag_force.
16717         * expmed.c (emit_store_flag_force): Copy here trick
16718         previously in expand_expr_real_1.  Try reversing the comparison.
16719         (emit_store_flag_1): Work if target is NULL.
16720         (emit_store_flag): Work if target is NULL, using the result mode
16721         from the comparison.  Use split_comparison, restructure final part
16722         to simplify conditionals.
16723
16724 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
16725
16726         * builtins.c (expand_errno_check): Use do_compare_rtx_and_jump.
16727         * dojump.c (do_jump): Change handling of floating-point
16728         ops to use just do_compare_and_jump.
16729         (split_comparison): New.
16730         (do_compare_rtx_and_jump): Add here logic coming previously
16731         in do_jump, using split_comparison.
16732
16733 2009-06-27  H.J. Lu  <hongjiu.lu@intel.com>
16734
16735         PR target/40489
16736         * config/ia64/ia64.c (ia64_reorg): Check NULL insn.
16737
16738 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
16739
16740         * tree-ssa-alias.c: Fix unintentional commit.
16741
16742 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
16743
16744         * passes.c (execute_one_pass): Fix unintentional commit.
16745
16746 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
16747
16748         * df-problems.c (df_set_seen, df_unset_seen): Delete.
16749         (df_rd_local_compute, df_md_local_compute): Inline them.
16750
16751         (df_md_scratch): New.
16752         (df_md_alloc, df_md_free): Allocate/free it.
16753         (df_md_local_compute): Only include live registers in init.
16754         (df_md_transfer_function): Prune the in-set computed by
16755         the confluence function, and the gen-set too.
16756
16757 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
16758
16759         PR rtl-optimization/26854
16760         * timevar.def: Remove TV_DF_RU, add TV_DF_MD.
16761         * df-problems.c (df_rd_add_problem): Fix comment.
16762         (df_md_set_bb_info, df_md_free_bb_info, df_md_alloc,
16763         df_md_simulate_artificial_defs_at_top,
16764         df_md_simulate_one_insn, df_md_bb_local_compute_process_def,
16765         df_md_bb_local_compute, df_md_local_compute, df_md_reset,
16766         df_md_transfer_function, df_md_init, df_md_confluence_0,
16767         df_md_confluence_n, df_md_free, df_md_top_dump, df_md_bottom_dump,
16768         problem_MD, df_md_add_problem): New.
16769         * df.h (DF_MD, DF_MD_BB_INFO, struct df_md_bb_info, df_md,
16770         df_md_get_bb_info): New.
16771         (DF_LAST_PROBLEM_PLUS1): Adjust.
16772
16773         * Makefile.in (fwprop.o): Include domwalk.h.
16774         * fwprop.c: Include domwalk.h.
16775         (reg_defs, reg_defs_stack): New.
16776         (bitmap_only_bit_between): Remove.
16777         (process_defs): New.
16778         (process_uses): Use reg_defs and local_md instead of
16779         bitmap_only_bit_between and local_rd.
16780         (single_def_use_enter_block): New, from build_single_def_use_links.
16781         (single_def_use_leave_block): New.
16782         (build_single_def_use_links): Remove code moved to
16783         single_def_use_enter_block, invoke domwalk.
16784         (use_killed_between): Adjust comment.
16785
16786 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
16787
16788         * bitmap.h (bitmap_ior_and_into): New.
16789         * bitmap.c (bitmap_ior_and_into): New.
16790
16791 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
16792
16793         * domwalk.h (struct dom_walk_data): Remove all callbacks except
16794         before_dom_children_before_stmts and after_dom_children_after_stmts.
16795         Rename the two remaining callbacks to just before_dom_children and
16796         after_dom_children. Remove other GIMPLE statement walking bits.
16797         * domwalk.c (walk_dominator_tree): Remove now unsupported features.
16798         * graphite.c: Do not include domwalk.h.
16799         * tree-into-ssa.c (interesting_blocks): New global.
16800         (struct mark_def_sites_global_data): Remove it and names_to_rename.
16801         (mark_def_sites, rewrite_stmt, rewrite_add_phi_arguments,
16802         rewrite_update_stmt, rewrite_update_phi_arguments): Simplify
16803         now that they're not domwalk callbacks.
16804         (rewrite_initialize_block): Rename to...
16805         (rewrite_enter_block): ... this, place after called functions.  Test
16806         interesting_blocks, call rewrite_stmt and rewrite_add_phi_arguments.
16807         (rewrite_finalize_block): Rename to...
16808         (rewrite_leave_block): ... this, place after called functions.
16809         (rewrite_update_init_block): Rename to...
16810         (rewrite_update_enter_block): ... this, place after called functions.
16811         Test interesting_blocks, call rewrite_update_stmt and
16812         rewrite_update_phi_arguments.
16813         (rewrite_update_fini_block): Rename to...
16814         (rewrite_leave_block): ... this, place after called functions.
16815         (rewrite_blocks): Remove last argument, simplify initialization of
16816         walk_data.
16817         (mark_def_sites_initialize_block): Rename to...
16818         (mark_def_sites_block): ... this, call mark_def_sites.
16819         (mark_def_sites_blocks): Remove argument, simplify initialization of
16820         walk_data.
16821         (rewrite_into_ssa): Adjust for interesting_blocks_being a global.
16822         (update_ssa): Likewise.
16823         * tree-ssa-dom.c (optimize_stmt): Simplify now that it's not a domwalk
16824         callback.
16825         (tree_ssa_dominator_optimize): Simplify initialization of walk_data.
16826         (dom_opt_initialize_block): Rename to...
16827         (dom_opt_enter_block): ... this, place after called functions.  Walk
16828         statements here, inline propagate_to_outgoing_edges.
16829         (dom_opt_finalize_block): Rename to...
16830         (dom_opt_leave_block): ... this, place after called functions.
16831         * tree-ssa-dse.c (dse_optimize_stmt): Simplify now that it's not a
16832         domwalk callback.
16833         (dse_enter_block, dse_record_phi): New.
16834         (dse_record_phis): Delete.
16835         (dse_finalize_block): Rename to...
16836         (dse_leave_block): ... this.
16837         (tree_ssa_dse): Simplify initialization of walk_data.
16838         * tree-ssa-loop-im.c (determine_invariantness, move_computations):
16839         Adjust initialization of walk_data.
16840         * tree-ssa-loop-unswitch.c: Do not include domwalk.h.
16841         * tree-ssa-loop-phiopt.c (get_non_trapping):
16842         Adjust initialization of walk_data.
16843         * tree-ssa-loop-threadedge.c: Do not include domwalk.h.
16844         * tree-ssa-uncprop.c (uncprop_into_successor_phis): Simplify now that
16845         it's not a domwalk callback.
16846         (uncprop_initialize_block): Rename to...
16847         (dse_enter_block): ... this, call uncprop_into_successor_phis.
16848         (dse_finalize_block): Rename to...
16849         (dse_leave_block): ... this.
16850         (tree_ssa_uncprop): Simplify initialization of walk_data.
16851         * Makefile.in: Adjust dependencies.
16852
16853 2009-06-27  Richard Earnshaw  <rearnsha@arm.com>
16854
16855         * arm.md (casesi): Fix test for Thumb1.
16856         (thumb1_casesi_internal_pic): Likewise.
16857         (thumb1_casesi_dispatch): Likewise.
16858
16859 2009-06-26  Daniel Gutson  <dgutson@codesourcery.com>
16860
16861         * config/arm/arm-cores.def: Added core cortex-m0.
16862         * config/arm/arm-tune.md: Regenerated.
16863         * doc/invoke.texi: Added entry for cpu ARM Cortex-M0.
16864
16865 2009-06-26  DJ Delorie  <dj@redhat.com>
16866
16867         * config/mep/mep.opt (mfar): Remove -mfar as it doesn't do anything.
16868
16869         * config/mep/mep.c (mep_bundle_insns): Account for the fact that
16870         the scheduler doesn't tag jump insns.
16871
16872 2009-06-26  H.J. Lu  <hongjiu.lu@intel.com>
16873
16874         * c-decl.c (merge_decls): Re-indent.
16875
16876 2009-06-26  Janis Johnson  <janis187@us.ibm.com>
16877
16878         PR c/39902
16879         * tree.c (real_zerop, real_onep, real_twop, real_minus_onep):
16880         Special-case decimal float constants.
16881
16882 2009-06-26  Richard Henderson  <rth@redhat.com>
16883
16884         * function.h (struct function): Add cannot_be_copied_reason,
16885         and cannot_be_copied_set.
16886         * tree-inline.c (has_label_address_in_static_1): Rename from
16887         inline_forbidden_p_2; don't set inline_forbidden_reason here.
16888         (cannot_copy_type_1): Rename from inline_forbidden_p_op; likewise
16889         don't set inline_forbidden_reason.
16890         (copy_forbidden): New function, split out of inline_forbidden_p.
16891         (inline_forbidden_p_stmt): Don't check for nonlocal labels here.
16892         (inline_forbidden_p): Use copy_forbidden.
16893         (tree_versionable_function_p): Likewise.
16894         (inlinable_function_p): Merge into tree_inlinable_function_p.
16895         (tree_function_versioning): Remap cfun->nonlocal_goto_save_area.
16896         * ipa-cp.c (ipcp_versionable_function_p): New function.
16897         (ipcp_cloning_candidate_p): Use it.
16898         (ipcp_node_modifiable_p): Likewise.
16899
16900 2009-06-26  Olatunji Ruwase  <tjruwase@google.com>
16901
16902         * builtins.c (expand_builtin_alloca): Handle builtin alloca
16903         that is marked not to be inlined. Remove flag_mudflap use.
16904         * tree-mudflap.c: Rename mf_xform_derefs to mf_xfrom_statements.
16905         (mf_xform_statements): Mark builtin alloca calls as un-inlineable.
16906
16907 2009-06-26  Steve Ellcey  <sje@cup.hp.com>
16908
16909         PR bootstrap/40338
16910         * config/pa/t-pa-hpux10 (TARGET_LIBGCC2_CFLAGS): Add -frandom-seed.
16911         * config/pa/t-pa-hpux11 (TARGET_LIBGCC2_CFLAGS): Ditto.
16912
16913 2009-06-26  Kai Tietz  <kai.tietz@onevision.com>
16914
16915         * config/i386/mingw-tls.c (__mingwthr_key_dtor): Remove for none
16916         shared libgcc.
16917         (__mingwthr_remove_key_dtor): Likewise.
16918
16919 2009-06-26  Richard Guenther  <rguenther@suse.de>
16920
16921         * tree-ssa-structalias.c (do_ds_constraint): Simplify escape handling.
16922
16923 2009-06-26  Steven Bosscher  <steven@gcc.gnu.org>
16924
16925         PR middle-end/40525
16926         * ifcvt.c (dead_or_predicable): If predicating MERGE_BB fails,
16927         try the non-cond_exec path also.
16928
16929 2009-06-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
16930
16931         PR target/40468
16932         * pa.c (branch_to_delay_slot_p, branch_needs_nop_p): New functions.
16933         (output_cbranch): Use new functions.
16934         (output_lbranch, output_bb, output_bvb, output_dbra, output_movb):
16935         Likewise.
16936
16937 2009-06-25  Michael Meissner  <meissner@linux.vnet.ibm.com>
16938             Pat Haugen  <pthaugen@us.ibm.com>
16939             Revital Eres <ERES@il.ibm.com>
16940
16941         * config/rs6000/rs6000.c (print_operand): Correct lossage message
16942         for %c error.  Add %x support to print VSX registers as a unified
16943         register set, instead of separate float and altivec registers.
16944         Switch to use VECTOR_MEM_ALTIVEC_P instead of TARGET_ALTIVEC for
16945         %y case, and add support for VSX pre-modify addresses.
16946         (output_toc): Add assert for CONST containing an integer constant
16947         in the PLUS case.
16948         (rs6000_adjust_cost): Add POWER7 support.
16949         (insn_must_be_first_in_group): Ditto.
16950         (insn_must_be_last_in_group): Ditto.
16951         (rs6000_emit_popcount): Ditto.
16952         (rs6000_vector_mode_supported_p): Ditto.
16953
16954         * config/rs6000/rs6000-protos.h (rs6000_secondary_reload_class):
16955         Change some of the functions called by macros to being called
16956         through a pointer, so debug functions can be inserted if
16957         -mdebug=addr or -mdebug=cost.
16958         (rs6000_preferred_reload_class_ptr): Ditto.
16959         (rs6000_secondary_reload_class_ptr): Ditto.
16960         (rs6000_secondary_memory_needed_ptr): Ditto.
16961         (rs6000_cannot_change_mode_class_ptr): Ditto.
16962         (rs6000_secondary_reload_inner): Ditto.
16963         (rs6000_legitimize_reload_address): Ditto.
16964         (rs6000_legitimize_reload_address_ptr): Ditto.
16965         (rs6000_mode_dependent_address): Ditto.
16966         (rs6000_mode_dependent_address_ptr): Ditto.
16967
16968         * config/rs6000/rs6000.c (reg_offset_addressing_ok_p): New
16969         function to return true if the mode allows reg + integer
16970         addresses.
16971         (virtual_stack_registers_memory_p): New function to return true if
16972         the address refers to a virtual stack register.
16973         (rs6000_legitimate_offset_address_p): Move code to say whether a
16974         mode supports reg+int addressing to reg_offset_addressing_ok_p and
16975         call it.
16976         (rs6000_legitimate_address_p): Add checks for modes that only can
16977         do reg+reg addressing.  Start adding VSX support.
16978         (rs6000_legitimize_reload_address): Ditto.
16979         (rs6000_legitimize_address): Ditto.
16980         (rs6000_debug_legitimate_address_p): New debug functions for
16981         -mdebug=addr and -mdebug=cost.
16982         (rs6000_debug_rtx_costs): Ditto.
16983         (rs6000_debug_address_costs): Ditto.
16984         (rs6000_debug_adjust_cost): Ditto.
16985         (rs6000_debug_legitimize_address): Ditto.
16986         (rs6000_legitimize_reload_address_ptr): Point to call normal
16987         function or debug function.  Make functions called via pointer
16988         static.
16989         (rs6000_mode_dependent_address_ptr): Ditto.
16990         (rs6000_secondary_reload_class_ptr): Ditto.
16991         (rs6000_hard_regno_mode_ok): Add preliminary VSX support.
16992         (rs6000_emit_move): Add -mdebug=addr support.  Change an abort
16993         into a friendlier error.
16994         (rs6000_init_builtins): Add initial VSX support.
16995         (rs6000_adjust_cost): Fix some spacing issues.
16996
16997         * config/rs6000/rs6000.h (enum reg_class): Add VSX_REGS.
16998         (REG_CLASS_NAMES): Ditto.
16999         (REG_CLASS_CONTENTS): Ditto.
17000         (PREFERRED_RELOAD_CLASS): Move from a macro to calling through a
17001         pointer, to add -mdebug=addr support.
17002         (CANNOT_CHANGE_MODE_CLASS): Ditto.
17003         (SECONDARY_RELOAD_CLASS): Call through a pointer to add
17004         -mdebug=addr support.
17005         (LEGITIMIZE_RELOAD_ADDRESS): Ditto.
17006         (GO_IF_MODE_DEPENDENT_ADDRESS): Ditto.
17007         (enum rs6000_builtins): Add RS6000_BUILTIN_BSWAP_HI.
17008
17009         * config/rs6000/rs6000.md (bswaphi*): Add support for swapping
17010         16-bit values.
17011         (bswapsi*): Set attribute types for load/store.  Add combiner
17012         patterns to eliminate zero extend on 64-bit.
17013         (bswapdi*): Add support for swapping 64-bit values.  Use ldbrx and
17014         stdbrx if the hardware supports those instructions.
17015
17016 2009-06-25  Ian Lance Taylor  <iant@google.com>
17017
17018         * doc/invoke.texi (Option Summary): Mention -static-libstdc++.
17019         (Link Options): Document -static-libstdc++.
17020
17021 2009-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17022
17023         PR target/38731
17024         * config/rs6000/rs6000.c (LOCAL_ALIGNMENT): Redefine to just use
17025         DATA_ALIGNMENT instead.
17026
17027 2009-06-25  Richard Guenther  <rguenther@suse.de>
17028
17029         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Disambiguate
17030         indirect references against the callused/escaped solutions.
17031         (call_may_clobber_ref_p_1): Likewise.
17032
17033 2009-06-25  Martin Jambor  <mjambor@suse.cz>
17034
17035         PR tree-optimization/40493
17036         * tree-sra.c (sra_modify_expr): Correct BIT_FIELD_REF argument numbers.
17037         (enum unscalarized_data_handling): New type.
17038         (handle_unscalarized_data_in_subtree): Return what has been done.
17039         (load_assign_lhs_subreplacements): Handle left flushes differently.
17040         (sra_modify_assign): Use unscalarized_data_handling, simplified
17041         condition determining whether to remove the statement.
17042
17043 2009-06-25  Basile Starynkevitch  <basile@starynkevitch.net>
17044
17045         * doc/plugins.texi (Building GCC plugins): Correct typo in Makefile
17046         excerpt - @ should be doubled for texinfo.
17047
17048 2009-06-24  Ian Lance Taylor  <iant@google.com>
17049
17050         * config/arc/arc.c: Include "df.h".
17051         (arc_attribute_table): Make static.  Move higher in file.
17052         (arc_address_cost): Call SMALL_INT on INTVAL, not rtx.
17053         (output_shift): Initialize n later to avoid warning.
17054         * config/arm/arm.c (arm_attribute_table): Make static.  Move
17055         higher in file.
17056         * config/avr/avr.c (avr_attribute_table): Make static.  Move
17057         higher in file.
17058         (reg_class_tab): Change array type from int to enum reg_class.
17059         (avr_jump_mode): Change GET_MODE to GET_CODE when checking for
17060         LABEL_REF.
17061         (out_tsthi, ashlhi3_out): Don't use AS2 with "or" or "and".
17062         (lshrhi3_out): Likewise.
17063         (class_likely_spilled_p): Change return type to bool.
17064         (avr_rtx_costs): Use local code variable with enum type.
17065         * config/avr/avr.md (movmemhi): Use add_reg_note.
17066         (andhi3, andsi3): Don't use AS2 with "and".
17067         (iorhi3, iorsi3): Don't use AS2 with "or".
17068         * config/avr/avr-protos.h (class_likely_spilled_p): Update declaration.
17069         * config/crx/crx.c: Include "df.h".
17070         (crx_attribute_table): Make static.
17071         * config/m32r/m32r.c: Include "df.h".
17072         (m32r_attribute_table): Make static.  Move higher in file.
17073         (pop): Use add_reg_note.
17074         (block_move_call): Change 0 to LCT_NORMAL in function call.
17075         * config/m32r/m32r.md (movsi_insn): Remove unused local value.
17076         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Likewise.
17077         * config/m32r/m32r-protos.h (m32r_compute_function_type): Always
17078         declare, not just when TREE_CODE is defined.
17079         * config/m68hc11/m68hc11.c: Include "expr.h".
17080         (m68hc11_attribute_table): Make static.  Move higher in file.
17081         (m68hc11_small_indexed_indirect_p): Change 0 to VOIDmode in
17082         function call.
17083         (m68hc11_register_indirect_p): Likewise.
17084         (m68hc11_function_arg_padding): Change return type to enum
17085         direction.
17086         (emit_move_after_reload): Use add_reg_note.
17087         (m68hc11_emit_logical): Change code parameter to enum rtx_code.
17088         (m68hc11_split_logical): Likewise.
17089         (m68hc11_rtx_costs): Add local code_and outer_code variables with
17090         enum type.
17091         * config/m68hc11/predicates.md (reg_or_some_mem_operand): Change 0
17092         to VOIDmode in function call.
17093         * config/m68hc11/m68hc11-protos.h: Don't check TREE_CODE to see if
17094         tree is defined.
17095         (m68hc11_split_logical): Update declaration.
17096         (m68hc11_function_arg_padding): Update declaration.
17097         * config/mcore/mcore.c (regno_reg_class): Change form array of int
17098         to array of enum reg_class.
17099         (mcore_attribute_table): Make static.  Move higher in file.
17100         (mcore_rtx_costs): Add cast to enum type.
17101         * config/mcore/mcore.h (regno_reg_class): Update declaration.
17102         (GO_IF_LEGITIMATE_INDEX): Add cast to avoid warning.
17103         * config/sh/sh.c (sh_attribute_table): Make static.  Move higher
17104         in file.
17105         * config/sh/predicates.md (trapping_target_operand): Rename and to
17106         and_expr.
17107         * config/sparc/sparc.c (sparc_attribute_table): Make static.  Move
17108         higher in file.
17109         * config/spu/spu.c (spu_attribute_table): Make static.  Move
17110         higher in file.
17111         * config/v850/v850.c (v850_attribute_table): Make static.  Move
17112         higher in file.
17113         (v850_rtx_costs): Use local code with enum type.
17114         (expand_epilogue): Add cast.
17115         * config/v850/v850-c.c (ghs_pragma_section): Initialize repeat.
17116
17117 2009-06-23  Takashi YOSHII  <yoshii.takashi@renesas.com>
17118
17119         PR target/40515
17120         * doc/invoke.texi (SH Options): Document -m2a, -m2a-single,
17121         -m2a-single-only and -m2a-nofpu.
17122         * config/sh/sh.opt: Document m2a generates FPU code.
17123
17124 2009-06-24  Anatoly Sokolov  <aesok@post.ru>
17125
17126         * defaults.h (CAN_ELIMINATE): Provide default.
17127         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
17128         * config/alpha/alpha.h (CAN_ELIMINATE): Delete.
17129         * config/m32c/m32c.h (CAN_ELIMINATE): Delete.
17130         * config/spu/spu.h (CAN_ELIMINATE): Delete.
17131         * config/xtensa/xtensa.h (CAN_ELIMINATE): Delete.
17132         * config/moxie/moxie.h (CAN_ELIMINATE): Delete.
17133         * config/cris/cris.h (CAN_ELIMINATE): Delete.
17134         * config/mn10300/mn10300.h (CAN_ELIMINATE): Delete.
17135         * config/pa/pa64-linux.h (CAN_ELIMINATE): Delete.
17136         * config/mmix/mmix.h (CAN_ELIMINATE): Delete.
17137
17138 2009-06-24  DJ Delorie  <dj@redhat.com>
17139
17140         * mep-ext-cop.cpu: Fix copyright notice.
17141         * mep-default: Fix copyright notice.
17142         * mep-core: Fix copyright notice.
17143         * mep: Fix copyright notice.
17144         * mep-ivc2: Fix copyright notice.
17145         * mep-c5: Fix copyright notice.
17146
17147 2009-06-24  Denis Chertykov  <chertykov@gmail.com>
17148
17149         * doc/contrib.texi (Contributors):
17150
17151 2009-06-24  Andreas Krebbel  <krebbel1@de.ibm.com>
17152
17153         PR middle-end/40501
17154         * tree-ssa-math-opts.c (execute_optimize_bswap): Convert the bswap
17155         src and dst operands if necessary.
17156
17157 2009-06-23  DJ Delorie  <dj@redhat.com>
17158
17159         Add MeP port.
17160         * config.gcc: Add mep support.
17161         * recog.c: Resurrect validate_replace_rtx_subexp().
17162         * recog.h: Likewise.
17163         * config/mep/: Add new port:
17164         * config/mep/constraints.md: New file.
17165         * config/mep/default.h: New file.
17166         * config/mep/intrinsics.h: New file.
17167         * config/mep/intrinsics.md: New file.
17168         * config/mep/ivc2-template.h: New file.
17169         * config/mep/mep-c5.cpu: New file.
17170         * config/mep/mep-core.cpu: New file.
17171         * config/mep/mep-default.cpu: New file.
17172         * config/mep/mep-ext-cop.cpu: New file.
17173         * config/mep/mep-intrin.h: New file.
17174         * config/mep/mep-ivc2.cpu: New file.
17175         * config/mep/mep-lib1.asm: New file.
17176         * config/mep/mep-lib2.c: New file.
17177         * config/mep/mep-pragma.c: New file.
17178         * config/mep/mep-protos.h: New file.
17179         * config/mep/mep-tramp.c: New file.
17180         * config/mep/mep.c: New file.
17181         * config/mep/mep.cpu: New file.
17182         * config/mep/mep.h: New file.
17183         * config/mep/mep.md: New file.
17184         * config/mep/mep.opt: New file.
17185         * config/mep/predicates.md: New file.
17186         * config/mep/t-mep: New file.
17187
17188 2009-06-23  Ian Lance Taylor  <iant@google.com>
17189
17190         * configure.ac: Invoke AC_PROG_CXX.  Separate C specific warnings
17191         from loose_warn into c_loose_warn and from strict_warn into
17192         c_strict_warn.  Set and substitute warn_cxxflags.  Check for
17193         --enable-build-with-cxx.  Set and substitute
17194         ENABLE_BUILD_WITH_CXX.  Set and substitute HOST_LIBS.
17195         * Makefile.in (CXXFLAGS): New variable.
17196         (C_LOOSE_WARN, C_STRICT_WARN): New variables.
17197         (GCC_WARN_CFLAGS): Add $(C_LOOSE_WARN).  Add $(C_STRICT_WARN) if
17198         the default is the same as $(STRICT_WARN).
17199         (GCC_WARN_CXXFLAGS, WARN_CXXFLAGS): New variables.
17200         (CXX): New variable.
17201         (COMPILER): New value if ENABLE_BUILD_WITH_CXX.
17202         (COMPILER_FLAGS, LINKER, LINKER_FLAGS): Likewise.
17203         (ALL_COMPILERFLAGS, ALL_LINKERFLAGS): Likewise.
17204         (HOST_LIBS): New variable.
17205         (GCC_CFLAGS): Add $(C_LOOSE_WARN).
17206         (ALL_CXXFLAGS): New variable.
17207         (LIBS, BACKENDLIBS): Add $(HOST_LIBS).
17208         * doc/install.texi (Configuration): Document
17209         --enable-build-with-cxx, --with-stage1-ldflags,
17210         --with-stage1-libs, --with-boot-ldflags, --with-boot-libs.
17211         * configure: Rebuild.
17212
17213 2009-06-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
17214
17215         * config/arm/arm.c (arm_override_options): Fix braces and formatting
17216         from previous commit.
17217
17218 2009-06-23  Ian Lance Taylor  <iant@google.com>
17219
17220         * Makefile.in ($(out_object_file)): Depend upon $(DF_H).
17221
17222 2009-06-23  Ian Lance Taylor  <iant@google.com>
17223
17224         * reload.c (alternative_allows_const_pool_ref): Mark mem parameter
17225         with ATTRIBUTE_UNUSED.
17226
17227 2009-06-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
17228             Pat Haugen  <pthaugen@us.ibm.com>
17229             Revital Eres  <eres@il.ibm.com>
17230
17231         * config.in (HAVE_AS_POPCNTD): Add default definition.
17232         (HAVE_AS_LWSYNC): Ditto.
17233
17234         * configure.ac (gcc_cv_as_powerpc_mfpgpr): Provide real binutils
17235         release number.
17236         (gcc_cv_as_powerpc_cmpb): Ditto.
17237         (gcc_cv_as_powerpc_dfp): Ditto.
17238         (gcc_cv_as_powerpc_vsx): Ditto.
17239         (gcc_cv_as_powerpc_popcntd): Add feature test for assembler
17240         supporting the popcntd/lwsync instructions.
17241         (gcc_cv_as_powerpc_lwsync): Ditto.
17242         * configure: Regenerate.
17243
17244         * config/rs6000/aix53.h (ASM_CPU_SPEC): Add support for
17245         -mcpu=native and -mcpu=power7.
17246         * config/rs6000/aix61.h (ASM_CPU_SPEC): Ditto.
17247
17248         * config/rs6000/linux64.opt (-mprofile-kernel): Move switch to be
17249         a variable instead of a mask to reduce the number of mask bits.
17250         * config/rs6000/sysv4.opt (-mbit-align): Ditto.
17251         (-mbit-word): Ditto.
17252         (-mregnames): Ditto.
17253         * config/rs6000/rs6000.opt (-mupdate): Ditto.
17254         (-mfused-madd): Ditto.
17255
17256         * config/rs6000/rs6000.opt (-mpopcntd): New switch for non-VSX ISA
17257         2.06 instructions.
17258         (-mvsx): New switch for VSX instructions.
17259         (-misel): Move from a variable to a mask to allow it to be set by
17260         -mcpu=.
17261
17262         * config/rs6000/rs6000-protos.h (rs6000_hard_regno_nregs): Change
17263         function declaration to an array declaration.
17264         (rs6000_hard_regno_nregs): New external array declaration.
17265
17266         * config/rs6000/t-rs6000 (MD_INCLUDES): Define, add all of the .md
17267         files included by rs6000.md.
17268
17269         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Use
17270         SET_PROFILE_KERNEL macro to reset the -mprofile-kernel switch.
17271
17272         * config/rs6000/rs6000.c (rs6000_isel): Delete, -misel moved to be
17273         a target mask.
17274         (rs6000_debug_reg): New -mdebug= variables.
17275         (rs6000_debug_addr): Ditto.
17276         (rs6000_debug_cost): Ditto.
17277         (rs6000_pmode): New variable to hold Pmode.
17278         (rs6000_pointer_size): New variable to hold POINTER_SIZE.
17279         (rs6000_class_max_nregs): New array to hold CLASS_MAX_NREGS
17280         calculated at compiler start.
17281         (rs6000_hard_regno_nregs): Change function to an array which holds
17282         HARD_REGNO_NREGS calculated at compiler start.
17283         (rs6000_explicit_options): Delete isel field.
17284         (rs6000_vector_unit): New array to hold which vector unit
17285         supports arithmetic options for a given type.
17286         (rs6000_vector_mem): New array to hold which vector unit supports
17287         memory reference operations for a given type.
17288         (rs6000_vector_align): New array to given the alignment of each
17289         vector type.
17290         (power7_cost): New basic costs for power7.
17291         (SET_PROFILE_KERNEL): New macro for resetting -mprofile-kernel.
17292         (rs6000_hard_regno_nregs_internal): New function, moved from
17293         HARD_REGNO_NREGS, to calculate the number of registers each hard
17294         register takes for each type.
17295         (rs6000_debug_reg_print): New function for -mdebug=reg support.
17296         (rs6000_debug_vector_unit): New array, map rs6000_vector to string.
17297         (+rs6000_init_hard_regno_mode_ok): New function, move calculation
17298         of HARD_REGNO_NREGS, CLASS_MAX_NREGS, REGNO_REG_CLASS, and vector
17299         unit information here so it is calculated once at compiler startup
17300         time.
17301         (rs6000_override_options): Make -misel a target mask.  Add more
17302         power7 target masks.  Setup Pmode and POINTER_SIZE.  Add initial
17303         VSX support.  Add support for -mdebug=reg, -mdebug=addr, and
17304         -mdebug=cost.
17305         (POWERPC_MASKS): Add MASK_POPCNTD, MASK_VSX, and MASK_ISEL.
17306         (rs6000_handle_option): Move -misel from variable to target mask.
17307         (rs6000_builtin_mask_for_load): Add VSX support.
17308         (rs6000_conditional_register_usage): Ditto.
17309         (USE_ALTIVEC_FOR_ARG_P): Ditto.
17310         (function_arg_boundary): Ditto.
17311         (rs6000_expand_builtin): Ditto.
17312         (def_builtin): Make abort message a little friendlier.
17313         (rs6000_emit_int_cmove): Add support for 64-bit isel.
17314
17315         * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Depend on the
17316         assembler support the popcntd instruction instead of a vsx
17317         instruction to enable power7 support.
17318         (ASM_CPU_SPEC): Add support for -mcpu=native and -mcpu=power7.
17319         (EXTRA_SPECS): Add ASM_CPU_NATIVE_SPEC to allow passing the right
17320         option to the assembler if -mcpu=native.
17321         (ASM_CPU_NATIVE_SPEC): Ditto.
17322         (TARGET_POPCNTD): If assembler doesn't support popcntd, turn off
17323         ISA 2.06 features.
17324         (TARGET_LWSYNC_INSTRUCTION): Define whether it is safe to issue
17325         the lwsync instruction.
17326         (enum processor_type): Add PROCESSOR_POWER7.
17327         (rs6000_debug_reg): New -mdebug= options.
17328         (rs6000_debug_addr): Ditto.
17329         (rs6000_debug_cost): Ditto.
17330         (rs6000_isel): Delete.
17331         (enum rs6000_vector): New enum to say what vector unit we have.
17332         (VECTOR_UNIT_*): New macros to say which vector unit has
17333         arithmetic operations for a given type.
17334         (VECTOR_MEM_*): New macros to say which vector unit has memory
17335         operations for a given type.
17336         (TARGET_LDBRX): Whether the machine supports the ldbrx
17337         instruction.
17338         (TARGET_ISEL): Delete, -misel moved to be a mask.
17339         (TARGET_ISEL64): New macro for 64-bit isel support.
17340         (UNITS_PER_VSX_WORD): New macro.
17341         (POINTER_SIZE): Move to be an external variable, rather than
17342         calculating whether we are generating 32 ot 64-bit code.
17343         (Pmode): Ditto.
17344         (STACK_BOUNDARY): Add VSX support.
17345         (LOCAL_ALIGNMENT): Ditto.
17346         (SLOW_UNALIGNED_ACCESS): Ditto.
17347         (VSX_REGNO_P): New macro for VSX support.
17348         (VFLOAT_REGNO_P): Ditto.
17349         (VINT_REGNO_P): Ditto.
17350         (VLOGICAL_REGNO_P): Ditto.
17351         (VSX_VECTOR_MODE): Ditto.
17352         (VSX_SCALAR_MODE): Ditto.
17353         (VSX_MODE): Ditto.
17354         (VSX_MOVE_MODE): Ditto.
17355         (VSX_REG_CLASS_P): Ditto.
17356         (HARD_REGNO_NREGS): Instead of calling a function, use an array
17357         lookup.
17358         (UNITS_PER_SIMD_WORD): Add VSX support.
17359         (MODES_TIEABLE_P): Ditto.
17360         (STARTING_FRAME_OFFSET): Ditto.
17361         (STACK_DYNAMIC_OFFSET): Ditto.
17362         (EPILOGUE_USES): Ditto.
17363         (REGNO_REG_CLASS): Move to array lookup.
17364         (CLASS_MAX_NREGS): Ditto.
17365         (rs6000_vector_reg_class): Add declaration.
17366         (ADDITIONAL_REGISTER_NAMES): Add VSX names for the registers that
17367         overlap with the floating point and Altivec registers.
17368
17369         * config/rs6000/e500.h (CHECK_E500_OPTIONS): Disallow -mvsx.
17370
17371         * config/rs6000/driver-rs6000.c (asm_names): New static array to
17372         give the appropriate asm switches if -mcpu=native.
17373         (host_detect_local_cpu): Add support for "asm".
17374         (host_detect_local_cpu): Follow GNU code guidelines for name.
17375
17376         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Move
17377         -mbit-word to a variable instead of being a target mask.
17378
17379         * config/rs6000/sync.md (lwsync): If the assembler supports it,
17380         emit the lwsync instruction instead of emitting the instruction as
17381         an integer constant.
17382
17383         * config/rs6000/spe.md (spe_fixuns_truncdfsi2): Rename from
17384         fixuns_trundfsi2, move expander into rs6000.md.
17385
17386         * config/rs6000/rs6000.md (cpu): Add power7.
17387         (sel, *ptrsize): New mode attributes for 32/64-bit isel.
17388         (logical predicate patterns): Change the single instruction
17389         primitives that set CR0 to be fast_compare instead of compare.
17390         (norsi*): Ditto.
17391         (popcntwsi2): Add support for ISA 2.06 popcount instructions.
17392         (popcntddi2): Ditto.
17393         (popcount<mode>): Ditto.
17394         (floating multiply/add insns): Name the floating point
17395         multiply/add insns.
17396         (isel_signed_<mode>): Add support for -misel on 64-bit systems.
17397         (isel_unsigned_<mode>): Ditto.
17398         (fixuns_trundfsi2): Move expander here from spe.md.
17399         (smindi3): Define if we have -misel on 64-bit systems.
17400         (smaxdi3): Ditto.
17401         (umindi3): Ditto.
17402         (umaxdi3): Ditto.
17403
17404 2009-06-23  Anatoly Sokolov  <aesok@post.ru>
17405
17406         * config.gcc (avr-*-rtems*, avr-*-*): Set extra_gcc_objs and
17407         extra_objs.
17408         * config/avr/avr.c (avr_current_device): New variable.
17409         (avr_arch_types, avr_mcu_types): Move to avr-deveces.c.
17410         (avr_arch, mcu_type_s): Move to avr.h.
17411         * config/avr/avr.h (base_arch_s). Add reserved2, arch_name and
17412         default_data_section_start fields.
17413         (avr_arch): Moved from avr.c.
17414         (mcu_type_s): Moved from avr.c. Add short_sp, data_section_start and
17415         library_name fields.
17416         (avr_current_device, avr_mcu_types, avr_arch_types,
17417         avr_device_to_arch, avr_device_to_data_start,
17418         avr_device_to_startfiles, avr_device_to_devicelib): Declare.
17419         (EXTRA_SPEC_FUNCTIONS): Define.
17420         (LINK_SPEC): Remove device name to '-m ...' and '-Tdata ...' linker
17421         options mapping. Use device_to_arch and device_to_data_start insted.
17422         (STARTFILE_SPEC): Use device_to_startfile instead of crt_binutils.
17423         (CRT_BINUTILS_SPECS, EXTRA_SPECS): Remove.
17424         * config/avr/t-avr (driver-avr.o, avr-devices.o): New rules.
17425         * config/avr/driver-avr.c: New file.
17426         * config/avr/avr-devices.c: New file.
17427
17428 2009-06-23  Jakub Jelinek  <jakub@redhat.com>
17429
17430         * var-tracking.c (unshare_variable): Force initialized to
17431         be VAR_INIT_STATUS_INITIALIZED unless flag_var_tracking_uninit.
17432         (set_variable_part): Likewise.
17433         (struct variable_union_info): Remove pos_src field.
17434         (vui_vec, vui_allocated): New variables.
17435         (variable_union): Pass VAR_INIT_STATUS_UNKNOWN to unshare_variable
17436         unconditionally.  Avoid XCVECNEW/free for every sorting, for dst_l
17437         == 1 use a simpler sorting algorithm.  Compute pos field right
17438         away, don't fill in pos_src.  For dst_l == 2 avoid qsort.
17439         Avoid quadratic comparison if !flag_var_tracking_uninit.
17440         (variable_canonicalize): Pass VAR_INIT_STATUS_UNKNOWN to
17441         unshare_variable unconditionally.
17442         (dataflow_set_different_2): Removed.
17443         (dataflow_set_different): Don't traverse second hash table.
17444         (compute_bb_dataflow): Pass VAR_INIT_STATUS_UNINITIALIZED
17445         unconditionally to var_reg_set or var_mem_set.
17446         (emit_notes_in_bb): Likewise.
17447         (delete_variable_part): Pass VAR_INIT_STATUS_UNKNOWN to
17448         unshare_variable.
17449         (emit_note_insn_var_location): Don't set initialized to
17450         VAR_INIT_STATUS_INITIALIZED early.
17451         (vt_finalize): Free vui_vec if needed, clear vui_vec and
17452         vui_allocated.
17453         * rtl.c (rtx_equal_p): Don't implement on top of rtx_equal_p_cb.
17454
17455         * tree-object-size.c (addr_object_size): Instead of checking
17456         for non-NULL TREE_CHAIN of the FIELD_DECL check that there
17457         are no FIELD_DECLs following it.
17458
17459 2009-06-23  Andreas Krebbel  <krebbel1@de.ibm.com>
17460
17461         * tree-ssa-math-opts.c (find_bswap): Increase the search depth in
17462         order to match bswaps with signed source operands.
17463
17464 2009-06-23  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
17465
17466         * sdbout.c (sdbout_one_type): Fix braces in switch.
17467
17468 2009-06-23  Richard Guenther  <rguenther@suse.de>
17469
17470         * tree-ssa-structalias.c (struct variable_info): Add is_global_var
17471         member.
17472         (var_anything, anything_tree, var_nothing, nothing_tree, var_readonly,
17473         readonly_tree, var_escaped, escaped_tree, var_nonlocal, nonlocal_tree,
17474         var_callused, callused_tree, var_storedanything, storedanything_tree,
17475         var_integer, integer_tree): Remove global variables.
17476         (new_var_info): Do not pass new id, append the new var to the
17477         global variable vector.
17478         (do_ds_constraint): Use is_global_var member of the variable-info.
17479         (new_scalar_tmp_constraint_exp): Adjust.
17480         (create_function_info_for): Likewise.
17481         (create_variable_info_for): Likewise.
17482         (find_what_var_points_to): Remove dead code.
17483         (init_base_vars): Simplify.
17484         (compute_points_to_sets): Adjust.
17485
17486 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
17487
17488         * combine.c (try_combine): Dump information about the insns we're
17489         combining.
17490
17491 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
17492
17493         * combine.c (combine_simplify_rtx): Remove TRULY_NOOP_TRUNCATION
17494         check when calling force_to_mode on TRUNCATE's operand.
17495
17496 2009-06-22  Ian Lance Taylor  <iant@google.com>
17497
17498         * config/rs6000/rs6000.opt: Move msched-epilog before msched-prolog.
17499
17500 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
17501
17502         * config/arm/arm.md (prologue_use): Set length of fake insn to 0.
17503
17504 2009-06-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
17505
17506         * doc/invoke.texi (Link Options): -nodefaultlibs and -nostdlib
17507         override library linkage flags such as -static-libgcc or
17508         -shared-libgcc.
17509
17510 2009-06-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
17511
17512         * config/m68k/m68k-devices.def: Add line for MCF5221x.
17513
17514 2009-06-22  Ian Lance Taylor  <iant@google.com>
17515
17516         * config/linux.opt: Put mglibc ahead of muclibc.
17517
17518         * c-decl.c (diagnose_mismatched_decls): Add -Wc++-compat warning
17519         for duplicate decls.
17520
17521 2009-06-22  Matthias Klose  <doko@ubuntu.com>
17522
17523         * Makefile.in (install-plugin): Remove extra `/' after $(DESTDIR).
17524
17525 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
17526
17527         PR objc/28050
17528         * c-parser.c (c_parser_objc_message_args): Return error_mark_node
17529         instead of NULL if a parser error occurs.
17530
17531 2009-06-22  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
17532
17533         * dwarf2out.c (dwarf2_debug_hooks): Initialize
17534         non-DWARF2_DEBUGGING_INFO version.
17535
17536 2009-06-22  Kai Tietz  <kai.tietz@onevision.com>
17537
17538         * config.gcc (i[34567]86-*-mingw*, x86_64-*-mingw*): Add
17539         i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file.
17540
17541         * config/i386/mingw32.h (LIBGCC2_HAS_TF_MODE): Define.
17542         (LIBGCC2_TF_CEXT): Define.
17543         (TF_SIZE): Define.
17544
17545 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
17546
17547         PR target/40463
17548         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Fix definition.
17549
17550 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
17551
17552         * config/arm/arm.c (arm_override_options): Disable
17553         -mcaller-super-interworking and -mcallee-super-interworking.
17554         * doc/invoke.texi (ARM Options): Document this.
17555
17556 2009-06-22  Nathan Sidwell  <nathan@codesourcery.com>
17557
17558         * config/arm/arm.c (arm_print_operand): Deal with HIGH.
17559         * config/arm/constraints.md (j): New constraint for movw operands.
17560         (N): Remove thumb2 meaning.
17561         * config/arm/arm.md (*arm_movw): Delete.
17562         (*arm_movsi_insn): Use j constraint for movw instead of N constraint.
17563         * config/arm/vfp.md (*arm_movsi_vfp, *thumb2_movsi_vfp): Likewise.
17564         * config/arm/thumb2.md (*thumb2_movsi_insn): Likewise.
17565
17566 2009-06-22  Martin Jambor  <mjambor@suse.cz>
17567
17568         PR tree-optimization/40492
17569         * tree-sra.c (sra_modify_assign): Pass zero offsets to
17570         build_ref_for_offset.
17571
17572 2009-06-22  Shujing Zhao  <pearly.zhao@oracle.com>
17573
17574         * alias.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P, CALL_P, NOTE_P and
17575         JUMP_TABLE_DATA_P predicates where applicable.
17576         * auto-inc-dec.c: Ditto.
17577         * builtins.c: Ditto.
17578         * caller-save.c: Ditto.
17579         * calls.c: Ditto.
17580         * cfgcleanup.c: Ditto.
17581         * cfglayout.c: Ditto.
17582         * cfgrtl.c: Ditto.
17583         * combine.c: Ditto.
17584         * combine-stack-adj.c: Ditto.
17585         * cse.c: Ditto.
17586         * cselib.c: Ditto.
17587         * dbxout.c: Ditto.
17588         * df-scan.c: Ditto.
17589         * dse.c: Ditto.
17590         * dwarf2asm.c: Ditto.
17591         * dwarf2out.c: Ditto.
17592         * emit-rtl.c: Ditto.
17593         * except.c: Ditto.
17594         * explow.c: Ditto.
17595         * expmed.c: Ditto.
17596         * expr.c: Ditto.
17597         * final.c: Ditto.
17598         * function.c: Ditto.
17599         * fwprop.c: Ditto.
17600         * gcse.c: Ditto.
17601         * genpreds.c: Ditto.
17602         * genrecog.c: Ditto.
17603         * ifcvt.c: Ditto.
17604         * ira-costs.c: Ditto.
17605         * ira-lives.c: Ditto.
17606         * jump.c: Ditto.
17607         * loop-iv.c: Ditto.
17608         * lower-subreg.c: Ditto.
17609         * modulo-sched.c: Ditto.
17610         * optabs.c: Ditto.
17611         * postreload.c: Ditto.
17612         * print-rtl.c: Ditto.
17613         * recog.c: Ditto.
17614         * reginfo.c: Ditto.
17615         * regmove.c: Ditto.
17616         * reload1.c: Ditto.
17617         * reload.c: Ditto.
17618         * reorg.c: Ditto.
17619         * rtlanal.c: Ditto.
17620         * rtl.c: Ditto.
17621         * sched-vis.c: Ditto.
17622         * sdbout.c: Ditto.
17623         * sel-sched-ir.c: Ditto.
17624         * simplify-rtx.c: Ditto.
17625         * targhooks.c: Ditto.
17626         * var-tracking.c: Ditto.
17627         * vmsdbgout.c: Ditto.
17628
17629 2009-06-22  Matthias Klose  <doko@ubuntu.com>
17630
17631         * Makefile.in (install-plugin): Always use DESTDIR.
17632
17633 2009-06-22  Olivier Hainque  <hainque@adacore.com>
17634
17635         * config/pa/pa.c (output_call): Don't optimize post call jumps
17636         into return address adjustments if the call may throw.
17637
17638 2009-06-21  Richard Earnshaw  <rearnsha@arm.com>
17639
17640         * arm.c (thumb1_output_casesi): New function.
17641         * arm.h (CASE_VECTOR_PC_RELATIVE): Thumb-1 code is also relative if
17642         optimizing for size or PIC.
17643         (CASE_VECTOR_SHORTEN_MODE): Handle thumb-1.
17644         * arm.md (UNSPEC_THUMB1_CASESI): New constant.
17645         (casesi): Handle Thumb-1 when optimizing for size or PIC.
17646         (thumb1_casesi_internal_pic): New expand rule.
17647         (thumb1_casesi_dispatch): New pattern.
17648         * aout.h (ASM_OUTPUT_ADDR_DIFF_ELT): Use shortened vectors for
17649         thumb-1 mode.
17650         * coff.h (JUMP_TABLES_IN_TEXT_SECTION): Thumb-1 jump tables are now
17651         in the text seciton when PIC or optimizing for size.
17652         * elf.h (JUMP_TABLES_IN_TEXT_SECTION): Likewise.
17653         * lib1funcs.asm ([__ARM_EABI__]): Add an attribute describing stack
17654         preservation properties of code.
17655         (__gnu_thumb1_case_sqi, __gnu_thumb1_case_uqi): New functions.
17656         (__gnu_thumb1_case_shi, __gnu_thumb1_case_uhi): New functions.
17657         (__gnu_thumb1_case_si): New function.
17658         * t-arm (LIB1ASMSRC): Define here.
17659         (LIB1ASMFUNCS): Add some common functions.
17660         * t-arm-elf (LIB1ASMSRC): Delete.
17661         (LIB1ASMFUNCS): Append to existing set.
17662         * t-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
17663         * t-strongarm-elf (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
17664         * t-symbian (LIB1ASMFUNCS): Likewise.
17665         * t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
17666         * t-wince-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
17667
17668 2009-06-21  Richard Guenther  <rguenther@suse.de>
17669
17670         PR tree-optimization/38729
17671         * tree-ssa-loop-niter.c (find_loop_niter_by_eval): Restrict
17672         to loops with a single exit if -fno-expensive-optimizations.
17673
17674 2009-06-21  Jakub Jelinek  <jakub@redhat.com>
17675
17676         * var-tracking.c (struct shared_hash_def, shared_hash): New types.
17677         (dataflow_set): Change vars type from htab_t to shared_hash.
17678         (shared_hash_pool, empty_shared_hash): New variables.
17679         (vars_clear): Removed.
17680         (shared_hash_shared, shared_hash_htab, shared_hash_copy,
17681         shared_hash_find_slot_unshare, shared_hash_find_slot,
17682         shared_hash_find_slot_noinsert, shared_hash_find): New
17683         static inlines.
17684         (shared_hash_unshare, shared_hash_destroy): New functions.
17685         (unshare_variable): Unshare set->vars if shared, use
17686         shared_hash_htab.
17687         (vars_copy): Use htab_traverse_noresize instead of htab_traverse.
17688         (get_init_value, find_src_set_src, dump_dataflow_set,
17689         clobber_variable_part, emit_notes_for_differences): Use
17690         shared_hash_htab.
17691         (dataflow_set_init): Remove second argument, set vars to
17692         empty_shared_hash instead of creating a new htab.
17693         (dataflow_set_clear): Call shared_hash_destroy and set vars
17694         to empty_shared_hash instead of calling vars_clear.
17695         (dataflow_set_copy): Don't call vars_copy, instead just share
17696         the src htab with dst.
17697         (variable_union): Use shared_hash_*, use initially NO_INSERT
17698         lookup if set->vars is shared.  Don't keep slot cleared before
17699         calling unshare_variable.  Unshare set->vars if needed.
17700         Even ->refcount == 1 vars must be unshared if set->vars is shared
17701         and var needs to be modified.
17702         (variable_canonicalize): New function.
17703         (dataflow_set_union): If dst->vars is empty, just share src->vars
17704         with dst->vars and traverse with variable_canonicalize to canonicalize
17705         and unshare what is needed.
17706         (dataflow_set_different): If old_set and new_set use the same shared
17707         htab, they aren't different.  If number of htab elements is different,
17708         htabs are different.  Use shared_hash_*.
17709         (dataflow_set_destroy): Call shared_hash_destroy instead of
17710         htab_delete.
17711         (compute_bb_dataflow, emit_notes_in_bb, vt_emit_notes): Don't pass
17712         second argument to dataflow_set_init.
17713         (vt_initialize): Likewise.  Initialize shared_hash_pool and
17714         empty_shared_hash, move bb in/out initialization afterwards.
17715         Use variable_htab_free instead of NULL as changed_variables del hook.
17716         (variable_was_changed): Change type of second argument to pointer to
17717         dataflow_set.  When inserting var into changed_variables, bump
17718         refcount.  Unshare set->vars if set is shared htab and slot needs to
17719         be cleared.
17720         (set_variable_part): Use shared_hash_*, use initially NO_INSERT
17721         lookup if set->vars is shared.  Unshare set->vars if needed.
17722         Even ->refcount == 1 vars must be unshared if set->vars is shared
17723         and var needs to be modified.  Adjust variable_was_changed caller.
17724         (delete_variable_part): Use shared_hash_*.  Even ->refcount == 1
17725         vars must be unshared if set->vars is shared and var needs to be
17726         modified.  Adjust variable_was_changed caller.
17727         (emit_note_insn_var_location): Don't pool_free var.
17728         (emit_notes_for_differences_1): Initialize empty_var->refcount to 0
17729         instead of 1.
17730         (vt_finalize): Call htab_delete on empty_shared_hash->htab and
17731         free_alloc_pool on shared_hash_pool.
17732
17733 2009-06-20  Anthony Green  <green@moxielogic.com>
17734
17735         * config/moxie/sfp-machine.h (__gcc_CMPtype, CMPtype): Define.
17736         * config/moxie/moxie.h (LOAD_EXTEND_OP): Define.
17737
17738 2009-06-20  Richard Guenther  <rguenther@suse.de>
17739
17740         * tree-ssa-structalias.c (find_func_aliases): For memset use
17741         a constraint from NULL if we memset to zero.
17742         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Add builtins
17743         we explicitly handle that do not read from memory.
17744         (call_may_clobber_ref_p_1): Properly handle builtins that may
17745         set errno.
17746
17747 2009-06-20  Richard Guenther  <rguenther@suse.de>
17748
17749         PR tree-optimization/40495
17750         * tree-ssa-structalias.c (get_constraint_exp_for_temp): Remove.
17751         (new_scalar_tmp_constraint_exp): New function.
17752         (process_constraint): Do not create temporary decls.
17753         (process_all_all_constraints): Likewise.
17754         (handle_const_call): Likewise.
17755         (create_function_info_for): Do not set decl.
17756
17757 2009-06-19  Ian Lance Taylor  <iant@google.com>
17758
17759         * config/rs6000/rs6000.c (rs6000_explicit_options): Make static.
17760         (rs6000_attribute_table): Make static; move before use.
17761
17762 2009-06-19  Eric Botcazou  <ebotcazou@adacore.com>
17763
17764         * tree.c (substitute_in_expr) <COMPONENT_REF>: Tweak and reformat.
17765         <tcc_vl_exp>: Call process_call_operands on the new CALL_EXPR.
17766         Propagate the TREE_READONLY flag without overwriting it.
17767         (substitute_placeholder_in_expr) <tcc_vl_exp>: Likewise.
17768         Propagate the TREE_READONLY flag onto the result.
17769         (process_call_operands): Move around.  Use correct constant value.
17770
17771 2009-06-19  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
17772
17773         PR target/40482
17774         * config/arm/arm.c (thumb_shiftable_const): Truncate val to 32 bits.
17775         * config/arm/arm.md: Likewise.
17776
17777 2009-06-19  Ian Lance Taylor  <iant@google.com>
17778
17779         * tree-cfg.c (gimple_redirect_edge_and_branch): Change ERROR_MARK
17780         to GIMPLE_ERROR_MARK.
17781
17782         * c-typeck.c (build_conditional_expr): Add op1_original_type and
17783         op2_original_type parameters.  Warn about using different enum types.
17784         * c-parser.c (c_parser_conditional_expression): Pass original
17785         types to build_conditional_expr.
17786         * c-tree.h (build_conditional_expr): Update declaration.
17787
17788 2009-06-19  Ian Lance Taylor  <iant@google.com>
17789
17790         * config/i386/i386.c (ix86_function_specific_save): Test that
17791         fields match values, rather than testing the values are in a
17792         certain range.
17793
17794 2009-06-19  Richard Guenther  <rguenther@suse.de>
17795
17796         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Handle
17797         ADDR_EXPR pointers.
17798         (ptr_derefs_may_alias_p): Likewise.
17799         (ptr_deref_may_alias_ref_p_1): New function.
17800         (ptr_deref_may_alias_ref_p): Likewise.
17801         (ref_maybe_used_by_call_p_1): Handle builtins that are not
17802         covered by looking at the ESCAPED solution.
17803         (call_may_clobber_ref_p_1): Likewise.
17804         * tree-ssa-structalias.c (get_constraint_for_ptr_offset):
17805         Handle NULL_TREE offset.  Do not produce redundant constraints.
17806         (process_all_all_constraints): New helper function.
17807         (do_structure_copy): Use it.
17808         (handle_lhs_call): Likewise.
17809         (find_func_aliases): Handle some builtins with pointer arguments
17810         and/or return values explicitly.
17811
17812 2009-06-19  Ian Lance Taylor  <iant@google.com>
17813
17814         * varasm.c (const_rtx_hash_1): Remove const qualifier from shift.
17815
17816 2009-06-19  Ian Lance Taylor  <iant@google.com>
17817
17818         * rtl.h (SUBREG_PROMOTED_UNSIGNED_P): Add cast to int.
17819
17820 2009-06-19  Ian Lance Taylor  <iant@google.com>
17821
17822         * ggc-page.c (ggc_pch_write_object): Initialize emptyBytes.
17823         * sdbout.c (sdb_debug_hooks): Initialize non-SDB_DEBUGGING_INFO
17824         version.
17825
17826         * c-decl.c (finish_decl): If -Wc++-compat, warn about
17827         uninitialized const.
17828
17829 2009-06-19  Ian Lance Taylor  <iant@google.com>
17830
17831         * dse.c (struct store_info): Rename bitmap field to bmap.  Change
17832         all uses.
17833
17834         * c-decl.c (in_struct, struct_types): Remove.
17835         (struct c_binding): Add in_struct field.
17836         (c_binding_ptr): Define type, along with VEC.
17837         (struct c_struct_parse_info): Define.
17838         (struct_parse_info): New static variable.
17839         (bind): Initialize in_struct field.
17840         (start_struct): Remove enclosing_in_struct and
17841         enclosing_struct_types parameters.  Add
17842         enclosing_struct_parse_info parameter.  Change all callers.  Set
17843         struct_parse_info rather than in_struct and struct_types.
17844         (grokfield): If -Wc++-compat and there is a symbol binding for the
17845         field name, set the in_struct flag and push it on the
17846         struct_parse_info->fields vector.
17847         (warn_cxx_compat_finish_struct): New static function.
17848         (finish_struct): Remove enclosing_in_struct and
17849         enclosing_struct_types parameters.  Add
17850         enclosing_struct_parse_info parameter.  Change all callers.  Don't
17851         set C_TYPE_DEFINED_IN_STRUCT here.  Call
17852         warn_cxx_compat_finish_struct.  Free struct_parse_info and set to
17853         parameter.  Only push on struct_types if warn_cxx_compat.
17854         (finish_enum): Only push on struct_types if warn_cxx_compat.
17855         (declspecs_add_type): Add loc parameter.  Change all callers.
17856         Change all error calls to error_at.  Pass loc, not input_location,
17857         to pedwarn calls.  Warn if -Wc++-compat and a typedef name is
17858         defined in a struct.  If -Wc++-compat and parsing a struct, record
17859         that a typedef name was used.
17860         * c-parser.c (c_parser_declspecs): Get location to pass to
17861         declspecs_add_type.
17862         (c_parser_struct_or_union_specifier): Update calls to start_struct
17863         and finish_struct.
17864         * c-tree.h (struct c_struct_parse_info): Declare.
17865         (finish_struct, start_struct): Update declarations.
17866         (declspecs_add_type): Update declaration.
17867
17868 2009-06-19  Ian Lance Taylor  <iant@google.com>
17869
17870         * c-decl.c (grokdeclarator): If -Wc++-compat, warn about a global
17871         variable with an anonymous type.
17872
17873 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
17874
17875         * see.c: Remove for real.
17876
17877 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
17878
17879         * optabs.h (enum optab_index): Add new OTI_significand.
17880         (significand_optab): Define corresponding macro.
17881         * optabs.c (init_optabs): Initialize significand_optab.
17882         * genopinit.c (optabs): Implement significand_optab using
17883         significand?f2 patterns.
17884         * builtins.c (expand_builtin_mathfn): Handle
17885         BUILT_IN_SIGNIFICAND{,F,L}.
17886         (expand_builtin): Expand BUILT_IN_SIGNIFICAND{,F,L} using
17887         expand_builtin_mathfn if flag_unsafe_math_optimizations is set.
17888
17889         * config/i386/i386.md (significandxf2, significand<mode>2): New
17890         expanders to implement significandf, significand and significandl
17891         built-ins as inline x87 intrinsics.
17892
17893 2009-06-18  Anatoly Sokolov  <aesok@post.ru>
17894
17895         * config/avr/avr.c (avr_override_options): Remove setting value of
17896         PARAM_INLINE_CALL_COST.
17897
17898 2009-06-18  Richard Henderson  <rth@redhat.com>
17899
17900         PR 40488
17901         * tree-pass.h (TDF_ASMNAME): New.
17902         * tree-dump.c (dump_options): Add asmname.
17903         * doc/invoke.texi: Document it.
17904
17905         * tree-pretty-print.c (maybe_dump_asm_name): Merge into...
17906         (dump_decl_name): ...here.
17907         (dump_function_name): New flags arg; mind TDF_ASMNAME.
17908         (dump_generic_node): Update dump_function_name calls.
17909         (print_call_name): New flags arg; update all dump calls.
17910         * diagnostic.h (print_call_name): Update.
17911         * gimple-pretty-print.c (dump_gimple_call): Update.
17912
17913 2009-06-18  H.J. Lu  <hongjiu.lu@intel.com>
17914
17915         PR target/40470
17916         * config/i386/i386.h (CLASS_LIKELY_SPILLED_P): Add SSE_FIRST_REG.
17917
17918 2009-06-18  Diego Novillo  <dnovillo@google.com>
17919
17920         * doc/plugins.texi: Document plugin_is_GPL_compatible.
17921         * plugin.c (str_license): Declare.
17922         (try_init_one_plugin): Assert that the symbol
17923         'plugin_is_GPL_compatible' exists.
17924
17925 2009-06-18  Sergei Dyshel  <sergeid@il.ibm.com>
17926
17927         * see.c: Remove.
17928         * Makefile.in (OBJS-common): Remove see.o.
17929         (see.o): Remove.
17930         * common.opt (fsee): Mark as preserved for backward compatibility.
17931         * opts.c (common_handle_option): Add OPT_fsee to the backward
17932         compatibility section.
17933         * passes.c (init_optimization_passes, pass_see): Remove pass.
17934         * timevar.def (TV_SEE): Remove.
17935         * tree-pass.h (pass_see): Remove declaration.
17936         * doc/invoke.texi (-fsee): Remove documentation.
17937
17938 2009-06-18  Martin Jambor  <mjambor@suse.cz>
17939
17940         * tree-sra.c: Include statistics.h
17941         (sra_stats): New variable.
17942         (sra_initialize): Clear sra_stats.
17943         (create_access_replacement): Increment sra_stats.replacements.
17944         (get_access_replacement): Do not return twice.
17945         (analyze_all_variable_accesses): Increment statistics counter by the
17946         number of scalarized aggregates.
17947         (generate_subtree_copies): Increment sra_stats.subtree_copies.
17948         (sra_modify_expr): Increment sra_stats.exprs.
17949         (load_assign_lhs_subreplacements): Increment sra_stats.subreplacements.
17950         (sra_modify_assign): Increment sra_stats.exprs,
17951         sra_stats.separate_lhs_rhs_handling and sra_stats.deleted.
17952         (perform_intra_sra): Update statistics counters.
17953         * Makefile.in (tree-sra.o): Add statistics.h to dependencies.
17954
17955 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
17956
17957         * config/arm/arm.c (TARGET_SCALAR_MODE_SUPPORTED_P): Redefine.
17958         (arm_scalar_mode_supported_p): New function.
17959
17960 2009-06-18  Paul Brook  <paul@codesourcery.com>
17961             Sandra Loosemore  <sandra@codesourcery.com>
17962
17963         * config/arm/sfp-machine.h (_FP_NANFRAC_H, _FP_NANSIGN_H): Define.
17964         (__extendhfsf2, __truncsfhf2): Define.
17965         * config/arm/fp16.c: New file.
17966         * config/arm/t-bpabi (LIB2FUNCS_STATIC_EXTRA): Add fp16.c.
17967         * config/arm/t-symbian (LIB2FUNCS_STATIC_EXTRA):  Add fp16.c.
17968
17969 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
17970
17971         * doc/extend.texi (Half-Precision): New section.
17972         * doc/invoke.texi (Option Summary): List -mfp16-format.
17973         (ARM Options): List neon-fp16 as -mfpu value.  Document -mfp16-format.
17974         * config/arm/arm.opt (mfp16-format=): New.
17975         * config/arm/arm.c: Include intl.h.
17976         (TARGET_INVALID_PARAMETER_TYPE): Redefine.
17977         (TARGET_INVALID_RETURN_TYPE): Redefine.
17978         (TARGET_PROMOTED_TYPE): Redefine.
17979         (TARGET_CONVERT_TO_TYPE): Redefine.
17980         (arm_fp16_format): Define.
17981         (all_fpus): Add entry for neon-fp16.
17982         (fp_model_for_fpu): Likewise.
17983         (struct fp16_format): Declare.
17984         (all_fp16_formats): Define.
17985         (arm_init_libfuncs): Add entries for HFmode conversions and arithmetic
17986         functions.
17987         (arm_override_options): Set arm_fp16_format. Call sorry for fp16
17988         and no ldrh.
17989         (arm_legitimate_index_p): Treat HFmode like HImode.
17990         (thumb1_legitimate_address_p): Make it recognize HFmode constants.
17991         (coproc_secondary_reload_class): Special-case HFmode.
17992         (arm_print_operand): Add 'z' specifier for vld1.16/vst1.16.
17993         (arm_hard_regno_mode_ok): Allow HFmode values in VFP registers.
17994         (arm_init_fp16_builtins): New.
17995         (arm_init_builtins): Call it.
17996         (arm_invalid_parameter_type): New.
17997         (arm_invalid_return_type): New.
17998         (arm_promoted_type): New.
17999         (arm_convert_to_type).
18000         (arm_file_start): Deal with neon-fp16 as fpu_name.  Emit tag for fp16
18001         format.
18002         (arm_emit_fp16_const): New function.
18003         (arm_mangle_type): Mangle __fp16 as "Dh".
18004         * config/arm/arm.h (TARGET_VFPD32): Make it know about
18005         FPUTYPE_NEON_FP16.
18006         (TARGET_NEON_FP16): New.
18007         (TARGET_NEON): Make it know about FPUTYPE_NEON_FP16.
18008         (enum fputype): Add FPUTYPE_NEON_FP16.
18009         (enum arm_fp16_format_type): Declare.
18010         (arm_fp16_format): Declare.
18011         (LARGEST_EXPONENT_IS_NORMAL): Define.
18012         * config/arm/arm-protos.h (arm_emit_fp16_const): Declare.
18013         * config/arm/arm-modes.def (HFmode): Define.
18014         * config/arm/vfp.md (*movhf_vfp): New.
18015         (extendhfsf2): New.
18016         (truncsfhf2): New.
18017         * config/arm/arm.md (fpu): Add neon_fp16.
18018         (floatsihf2, floatdihf2): New.
18019         (fix_trunchfsi2, fix_trunchfdi2): New.
18020         (truncdfhf2): New.
18021         (extendhfdf2): New.
18022         (movhf): New.
18023         (*arm32_movhf): New.
18024         (*thumb1_movhf): New.
18025         (consttable_2): Add check for HFmode constants.
18026         (consttable_4): Handle HFmode constants.
18027
18028 2009-06-18  Uros Bizjak  <ubizjak@gmail.com>
18029
18030         * convert.c (convert_to_integer): Convert (int)logb() into ilogb().
18031
18032 2009-06-17  Olivier Hainque  <hainque@adacore.com>
18033
18034         * collect2.c (main): Use CONST_CAST2 to perform char ** to
18035         const char ** conversion in AIX specific section.
18036
18037 2009-06-17  H.J. Lu  <hongjiu.lu@intel.com>
18038
18039         * config/i386/i386.c (ix86_special_builtin_type): Remove
18040         UINT64_FTYPE_PINT.  Add UINT64_FTYPE_PUNSIGNED.
18041         (bdesc_special_args): Updated.
18042         (ix86_init_mmx_sse_builtins): Likewise.
18043         (ix86_expand_special_args_builtin): Likewise.
18044
18045 2009-06-17  Richard Henderson  <rth@redhat.com>
18046
18047         * tree-pretty-print.c (maybe_dump_asm_name): New.
18048         (dump_decl_name): Use it.
18049         (PRINT_FUNCTION_NAME): Merge into...
18050         (dump_function_name): ... here.  Use maybe_dump_asm_name.
18051
18052 2009-06-17  Cary Coutant  <ccoutant@google.com>
18053
18054         * dbxout.c (dbxout_source_line): Add is_stmt parameter.
18055         Change caller.
18056         * debug.c (struct gcc_debug_hooks): Change placeholder for
18057         source_line hook.
18058         (debug_nothing_int_charstar_int): Replaced by...
18059         (debug_nothing_int_charstar_int_bool): ...this.
18060         * debug.h (struct gcc_debug_hooks): Add is_stmt parameter to
18061         source_line prototype.
18062         (debug_nothing_int_charstar_int): Replaced by...
18063         (debug_nothing_int_charstar_int_bool): ...this.
18064         * defaults.h (SUPPORTS_DISCRIMINATOR): New constant.
18065         * dwarf2out.c (dwarf2out_source_line): Add is_stmt parameter.
18066         Output is_stmt operand when necessary.
18067         * final.c (final_scan_insn): Pass is_stmt to source_line debug hook.
18068         (notice_source_line): Add is_stmt parameter.
18069         * sdbout.c (sdbout_source_line): Add is_stmt parameter.
18070         * vmsdbgout.c (vmsdbgout_source_line): Add is_stmt parameter.
18071         Change callers.
18072         * xcoffout.c (xcoffout_source_line): Add is_stmt parameter.
18073         * xcoffout.h (xcoffout_source_line): Add is_stmt parameter.
18074
18075 2009-06-17  Ian Lance Taylor  <iant@google.com>
18076
18077         * expr.c (struct move_by_pieces_d): Rename from move_by_pieces.
18078         Change all uses.
18079         (struct store_by_pieces_d): Rename from store_by_pieces.  Change
18080         call uses.
18081
18082 2009-06-17  Adam Nemet  <anemet@caviumnetworks.com>
18083
18084         * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS,
18085         STRIP_USELESS_TYPE_CONVERSION): Use tree_strip_nop_conversions,
18086         tree_strip_sign_nop_conversions and
18087         tree_ssa_strip_useless_type_conversions rather than stripping
18088         the operations here.
18089         (tree_strip_nop_conversions, tree_strip_sign_nop_conversions):
18090         Declare them.
18091         * gimple.h (tree_ssa_strip_useless_type_conversions): Declare it.
18092         * tree-ssa.c (tree_ssa_strip_useless_type_conversions): New function.
18093         * tree.c (tree_nop_conversion, tree_sign_nop_conversion,
18094         tree_strip_nop_conversions, tree_strip_sign_nop_conversions): New
18095         functions.
18096
18097 2009-06-17  Michael Eager  <eager@eagercon.com>
18098
18099         * config/rs6000/constraints.md (register_constraint "d"): New.
18100         * config/rs6000/dfp.md (movsd_store, extendsddd2, extendsdtd2,
18101         truncddsd2, *negdd2_fpr, *absdd2_fpr, *nabsdd2_fpr,
18102         *movdd_hardfloat32, *movdd_hardfloat64_mfpgpr, *movdd_hardfloat64,
18103         *negtd2_fp, *abstd2_fpr, *nabstd2_fpr, *movtd_internal, extendddtd2,
18104         trunctddd2, adddd3, addtd3, subdd3, subtd3, muldd3, multd3, divdd3,
18105         divtd3, *cmpdd_internal1, *cmptd_internal1, floatditd2, ftruncdd2,
18106         fixdddi2, ftrunctd2, fixtddi2): replace 'f' constraint with 'd'
18107         * config/rs6000/ppu_intrinsics.h (__mffs, __mtfsf, __mtfsfi, __fabs,
18108         __fnabs, __fmadd, __fmsub, __fnmadd, __fnmsub, __fsel, __frsqrte,
18109         __fsqrt, __fmul, __fmuls, __frsp, __fcfid, __fctid, __fctidz, __fctiw,
18110         __fctiwz): Same.
18111         * config/rs6000/rs6000.md (*extendsfdf2_fpr, *truncdfsf2_fpr,
18112         *fseldfsf4, *negdf2_fpr, *absdf2_fpr, *nabsdf2_fpr, *adddf3_fpr,
18113         *subdf3_fpr, *muldf3_fpr, *divdf3_fpr, recipdf3, fred, sqrtdf2,
18114         *fseldfdf4, *fselsfdf4, *floatsidf2_internal, *floatunssidf2_internal,
18115         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
18116         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2, rounddf2,
18117         stfiwx, floatdidf2, fix_truncdfdi2, floatdisf2_internal1,
18118         *movdf_hardfloat32, *movdf_hardfloat64_mfpgpr, *movdf_hardfloat64,
18119         *movtf_internal, *extenddftf2_internal, trunctfdf2_internal1,
18120         trunctfdf2_internal2, trunctfsf2_fprs, fix_trunc_helper,
18121         *fix_trunctfsi2_internal, negtf2_internal, *movdi_internal32,
18122         *movdi_mfpgpr, *movdi_internal64, *movdf_update1, *movdf_update2,
18123         *cmpdf_internal1, *cmptf_internal1, *cmptf_internal2): Same.
18124         * doc/md.texi: Describe PowerPC 'd' constraint, update 'f' constraint.
18125
18126 2009-06-16  Ian Lance Taylor  <iant@google.com>
18127
18128         * profile.c (total_num_never_executed): Don't define.
18129         (compute_branch_probabilities): Don't count or print
18130         num_never_executed.
18131         (init_branch_prob): Don't set total_num_never_executed.
18132         (end_branch_prob): Don't print total_num_never_executed.
18133
18134 2009-06-17  David Daney  <ddaney@caviumnetworks.com>
18135
18136         * jump.c (cleanup_barriers): Handle case of no insns before a barrier.
18137
18138 2009-06-17  David Edelsohn  <edelsohn@gnu.org>
18139
18140         * config/rs6000/dfp.md (nabsdd2_fpr): Correct mode.
18141         (nabstd2_fpr): Same.
18142
18143 2009-06-17  Steve Ellcey  <sje@cup.hp.com>
18144
18145         * expr.c (expand_assignment): Change complex type check.
18146
18147 2009-06-17  Basile Starynkevitch  <basile@starynkevitch.net>
18148
18149         * doc/plugins.texi (Building GCC plugins): Added new section.
18150
18151 2009-06-17  Ian Lance Taylor  <iant@google.com>
18152
18153         * c-pch.c (get_ident): Don't set size of templ array.
18154         (pch_init): Don't set size of partial_pch array.
18155
18156         * c-typeck.c (digest_init): If -Wc++-compat, warn about using a
18157         string constant to intialize an array whose size is the length of
18158         the string.
18159
18160 2009-06-17  Richard Guenther  <rguenther@suse.de>
18161
18162         PR tree-optimization/40389
18163         * tree-ssa-structalias.c (handle_rhs_call): Restrict NRV case
18164         to addressable types.
18165         * gimple.c (walk_stmt_load_store_addr_ops): Likewise.
18166
18167 2009-06-17  Richard Guenther  <rguenther@suse.de>
18168
18169         PR middle-end/40460
18170         * tree-chrec.h (build_polynomial_chrec): If we cannot determine
18171         if there is no evolution of left in the loop bail out.
18172         * tree-chrec.c (chrec_fold_multiply_poly_poly): CSE one
18173         chrec_fold_multiply.
18174
18175 2009-06-16  J"orn Rennecke  <joern.rennecke@arc.com>
18176             Janis Johnson  <janis187@us.ibm.com>
18177
18178         PR target/39254
18179         * config/rs6000/rs6000.c (rs6000_emit_move): Don't emit a USE
18180         for the symbol ref of a constant that is the source of a move
18181         - nor for any other not-obvious-label-ref constants.
18182
18183 2009-06-16  Olatunji Ruwase  <tjruwase@google.com>
18184
18185         * plugin.c (position_pass): Skip newly inserted pass during list
18186         traversal to avoid repeated insertion.
18187
18188 2009-06-16  Ian Lance Taylor  <iant@google.com>
18189
18190         * vec.h (VEC_stack_alloc): Define different version if
18191         GATHER_STATISTICS is defined, to accept and ignore MEM_STAT.
18192         (DEF_VEC_ALLOC_FUNC_P_STACK): Remove MEM_STAT_DECL.
18193         (DEF_VEC_ALLOC_FUNC_O_STACK): Likewise.
18194         (DEF_VEC_ALLOC_FUNC_I_STACK): Likewise.
18195
18196 2009-06-16  H.J. Lu  <hongjiu.lu@intel.com>
18197
18198         * config.gcc (extra_headers): Add ia32intrin.h for x86.
18199
18200         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_BSRSI,
18201         IX86_BUILTIN_BSRDI.  IX86_BUILTIN_RDPMC, IX86_BUILTIN_RDTSC.
18202         IX86_BUILTIN_RDTSCP.  IX86_BUILTIN_ROLQI, IX86_BUILTIN_ROLHI,
18203         IX86_BUILTIN_RORQI and IX86_BUILTIN_RORHI.
18204         (ix86_special_builtin_type): Add UINT64_FTYPE_VOID,
18205         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
18206         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
18207         (bdesc_special_args): Add __builtin_ia32_rdtsc and
18208         __builtin_ia32_rdtscp.
18209         (bdesc_args): Add __builtin_ia32_bsrsi, __builtin_ia32_bsrdi,
18210         __builtin_ia32_rolqi, __builtin_ia32_rolhi, __builtin_ia32_rorqi
18211         and __builtin_ia32_rorhi.
18212         (ix86_init_mmx_sse_builtins): Handle UINT64_FTYPE_VOID,
18213         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
18214         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
18215         (ix86_expand_args_builtin): Likewise.
18216         (ix86_expand_special_args_builtin): Likewise.
18217
18218         * config/i386/i386.md (UNSPECV_RDTSCP): New.
18219         (UNSPECV_RDTSC): Likewise.
18220         (UNSPECV_RDPMC): Likewise.
18221         (*bsr): Renamed to ...
18222         (bsr): This
18223         (*bsr_rex64): Renamed to ...
18224         (bsr_rex64): This.
18225         (rdpmc): New.
18226         (*rdpmc): Likewise.
18227         (*rdpmc_rex64): Likewise.
18228         (rdtsc): Likewise.
18229         (*rdtsc): Likewise.
18230         (*rdtsc_rex64): Likewise.
18231         (rdtscp): Likewise.
18232         (*rdtscp): Likewise.
18233         (*rdtscp_rex64): Likewise.
18234
18235         * config/i386/ia32intrin.h: New.
18236
18237         * config/i386/x86intrin.h: Include <ia32intrin.h>.
18238
18239 2009-06-16  Ian Lance Taylor  <iant@google.com>
18240
18241         * ira-build.c (copy_info_to_removed_store_destinations):
18242         Initialize parent_a.
18243
18244 2009-06-16  Ian Lance Taylor  <iant@google.com>
18245
18246         * c-decl.c (grokdeclarator): Change size_varies to bool.
18247
18248 2009-06-16  Ian Lance Taylor  <iant@google.com>
18249
18250         * sel-sched.c: Make forward declarations of move_op_hooks and
18251         fur_hooks explicitly extern.
18252
18253 2009-06-16  Ian Lance Taylor  <iant@google.com>
18254
18255         * df-problems.c (df_byte_lr_alloc): Don't set problem_data to itself.
18256         * vec.c (vec_gc_o_reserve_1): Don't set alloc to itself.
18257
18258 2009-06-16  Ian Lance Taylor  <iant@google.com>
18259
18260         * resource.c (mark_referenced_resources): Change
18261         include_delayed_effects parameter to bool.  Change all callers.
18262         (mark_end_of_function_resources): Likewise.
18263         * reorg.c (insn_references_resource_p): Likewise.
18264         (insn_sets_resource_p): Likewise.
18265         * resource.h (mark_referenced_resources): Update declaration.
18266         (mark_end_of_function_resources): Update declaration.
18267
18268 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
18269
18270         * config/rs6000/aix.h (LIBSTDCXX_STATIC): Remove -lstdc++.
18271
18272 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
18273
18274         * doc/install.texi (*-*-aix): Update explanation of XLC bootstrap.
18275         GCC can bootstrap on AIX with GNU Binutils 2.20.
18276
18277 2009-06-16  Ian Lance Taylor  <iant@google.com>
18278
18279         * Makefile.in (tree-vect-stmts.o): Depend upon $(TOPLEV_H).
18280
18281 2009-06-16  Ian Lance Taylor  <iant@google.com>
18282
18283         * toplev.h (floor_log2): If GCC_VERSION >= 3004, declare as static
18284         inline, not extern inline.
18285         (exact_log2): Likewise.
18286         * toplev.c (floor_log2): Only define if GCC_VERSION < 3004. Don't
18287         test CLZ_HWI.
18288         (exact_log2): Likewise, but don't test CTZ_HWI.
18289
18290 2009-06-16  Ian Lance Taylor  <iant@google.com>
18291
18292         * bitmap.c (bitmap_clear): Don't declare as inline.
18293         * gimple.c (gimplify_assign): Likewise.
18294         * tree-ssa-sccvn.c (vn_nary_op_compute_hash): Likewise.
18295         * haifa-sched.c (insn_cost): Don't declare with HAIFA_INLINE.
18296         (sched_scan_info): Remove duplicate definition.
18297
18298 2009-06-16  Ian Lance Taylor  <iant@google.com>
18299
18300         * c-common.c (skip_evaluation): Don't define.
18301         (c_inhibit_evaluation_warnings): Define global variable.
18302         (overflow_warning): Check c_inhibit_evaluation_warnings rather
18303         than skip_evaluation.
18304         (convert_and_check, warn_for_div_by_zero): Likewise.
18305         * c-common.h (skip_evaluation): Don't declare.
18306         (c_inhibit_evaluation_warnings): Declare.
18307         * c-parser.c (c_parser_typeof_specifier): Set
18308         c_inhibit_evaluation_warnings rather than skip_evaluation.
18309         (c_parser_conditional_expression): Likewise.
18310         (c_parser_binary_expression): Likewise.
18311         (c_parser_sizeof_expression): Likewise.
18312         (c_parser_alignof_expression): Likewise.
18313         * c-typeck.c (build_indirect_ref): Check
18314         c_inhibit_evaluation_warnings rather than skip_evaluation.
18315         (build_conditional_expr, build_binary_op): Likewise.
18316
18317 2009-06-16  Richard Guenther  <rguenther@suse.de>
18318
18319         * tree-ssa-alias.c (is_escape_site): Remove.
18320         * tree-ssa-alias.h (enum escape_type): Remove.
18321         (is_escape_site): Likewise.
18322         * tree-ssa-structalias.c (find_func_aliases): Handle escapes
18323         via casts and asms without deferring to is_escape_site.
18324
18325 2009-06-16  Jakub Jelinek  <jakub@redhat.com>
18326
18327         PR middle-end/40446
18328         * expr.c (expand_expr_real_1) <case VIEW_CONVERT_EXPR>: Don't
18329         use gen_lowpart if op0 has complex mode.
18330
18331 2009-06-16  Richard Guenther  <rguenther@suse.de>
18332
18333         * tree-ssa-structalias.c (do_ds_constraint): Stores in global
18334         variables add them to ESCAPED.
18335         (find_func_aliases): Do not make all indirectly stored values escaped.
18336
18337 2009-06-16  Rafael Avila de Espindola  <espindola@google.com>
18338
18339         * config/i386/winnt.c (i386_pe_encode_section_info): Update call to
18340         make_decl_one_only.
18341
18342 2009-06-16  Martin Jambor  <mjambor@suse.cz>
18343
18344         PR tree-optimization/40432
18345         * tree-sra.c (sra_modify_assign): When creating VIEW_CONVERT_EXPR,
18346         check whether we need to force gimple register operand.
18347
18348 2009-06-16  Martin Jambor  <mjambor@suse.cz>
18349
18350         PR tree-optimization/40413
18351         * tree-sra.c (load_assign_lhs_subreplacements): Pass offset to
18352         build_ref_for_offset.
18353         (propagate_subacesses_accross_link): Fix a typo in a comment.
18354
18355 2009-06-16  Ira Rosen  <irar@il.ibm.com>
18356
18357         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
18358         with additional parameter.
18359         * tree-vectorizer.h (enum vect_def_type): Add new value
18360         vect_nested_cycle.
18361         (enum vect_relevant): Add comments.
18362         (vect_is_simple_reduction): Add new argument.
18363         * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Add comments.
18364         Detect nested cycles.
18365         (vect_is_simple_reduction): Update documentation, add an argument to
18366         distinguish inner-loop reduction from nested cycle, detect nested
18367         cycles, fix printings and indentation, don't swap operands in case
18368         of nested cycle.
18369         (get_initial_def_for_reduction): Handle subtraction.
18370         (vect_create_epilog_for_reduction): Add new argument to specify
18371         reduction variable.
18372         (vect_finalize_reduction): Handle subtraction, fix comments.
18373         (vectorizable_reduction): Handle nested cycles. In case of nested
18374         cycle keep track of the reduction variable position. Call
18375         vect_is_simple_reduction with additional parameter. Use original
18376         statement code in reduction epilogue for nested cycle. Call
18377         vect_create_epilog_for_reduction with additional parameter.
18378         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Assert
18379         inner-loop vectorization.
18380         (vect_recog_widen_sum_pattern): Likewise.
18381         * tree-vect-stmts.c (process_use): Distinguish between nested cycles
18382         and reductions.
18383         (vect_mark_stmts_to_be_vectorized): Likewise.
18384         (vect_get_vec_def_for_operand): Handle nested cycles.
18385
18386 2009-06-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
18387
18388         * doc/invoke.texi (Debugging Options): Fix option index entries
18389         for -fdump-statistics, -frandom-seed add entries for
18390         -fdump-tree-original, -fdump-tree-optimized, -frandom-seed.
18391         (FRV Options): Fix entries for -mTLS, -mtls.
18392         (HPPA Options): Fix entries for -mgnu-ld, -mhp-ld.
18393         (i386 and x86-64 Options): Fix entry for -mno-red-zone.
18394         (M68hc1x Options): Fix @itemx for -mnominmax.
18395         (MCore Options): Fix entry for -mno-lsim.
18396         (MMIX Options): Fix entry for -mabi=mmixware.
18397         (PDP-11 Options): Fix entry for -mbcopy-builtin.
18398
18399 2009-06-16  Basile Starynkevitch  <basile@starynkevitch.net>
18400
18401         * doc/plugins.texi (Interacting with the GCC Garbage Collector):
18402         Mention the plugin mode of gengtype.
18403         * doc/gty.texi (Source Files Containing Type Information): Likewise.
18404         * gengtype.c: Updated copyright.
18405         (plugin_files, nb_plugin_files) Added new static variables.
18406         (measure_input_list) Care about plugin_files.
18407         (write_rtx_next): Added early return in plugin mode.
18408         (create_file): Updated copyright year in generated file. Added
18409         asserts.
18410         (oprintf): Added early return if NULL outf.
18411         (get_output_file_with_visibility): Care of plugin_files.
18412         (get_output_file_name): May return null.
18413         (write_local): Added early return.
18414         (put_mangled_filename): Ditto.
18415         (finish_root_table): Added check for base_files.
18416         (write_roots): Care about null when plugins.
18417         (main): Added plugin mode.
18418
18419 2009-06-15  Ian Lance Taylor  <iant@google.com>
18420
18421         * df-problems.c (df_simulate_one_insn_forwards): Fix braces in switch.
18422         * gcov.c (read_count_file): Add braces around variables declared
18423         before label.
18424
18425         * c.opt (Wjump-misses-init): New warning.
18426         * c-opts.c (c_common_handle_option): Set warn_jump_misses_init for
18427         -Wall and -Wc++-compat if not already set.
18428         (c_common_post_options): Clear warn_jump_misses_init if it was not
18429         set.
18430         * c-decl.c (struct c_binding): Change type field to a union with
18431         new label field.  Make it the first field in the struct.  Update
18432         references to type to use u.type instead.
18433         (struct c_spot_bindings): Define.
18434         (struct c_goto_bindings): Define.
18435         (c_goto_bindings_p): Define, along with VECs.
18436         (struct c_label_vars): Define.
18437         (struct c_scope): Add has_label_bindings field.
18438         (bind_label, set_spot_bindings): New static functions.
18439         (decl_jump_unsafe, update_spot_bindings): New static functions.
18440         (update_label_decls): New static function.
18441         (pop_scope): Call update_label_decls.  Don't call c_end_vm_scope.
18442         Update binding u.label field to shadowed field.
18443         (c_binding_start_stmt_expr): New function.
18444         (c_binding_end_stmt_expr): New function.
18445         (pushdecl): Don't call c_begin_vm_scope.
18446         (make_label): Add defining and p_label_vars parameters.  Change
18447         all callers.
18448         (lookup_label): Correct test for whether a label has not yet been
18449         defined.  Call bind_label rather than bind.
18450         (warn_about_goto): New static function.
18451         (lookup_label_for_goto): New function.
18452         (declare_label): Call bind_label rather than bind.
18453         (check_earlier_gotos): New static function.
18454         (define_label): Don't give errors about jumping into statement
18455         expressions or scopes of variably modified types.  Call
18456         set_spot_bindings and check_earlier_gotos.  Call bind_label
18457         instead of bind.  Don't set label_context_stack_se or
18458         label_context_stack_vm.
18459         (c_get_switch_bindings): New function.
18460         (c_release_switch_bindings): New function.
18461         (c_check_switch_jump_warnings): New function.
18462         (start_function): Don't set label_context_stack_se or
18463         label_context_stack_vm.
18464         (finish_function): Likewise.
18465         * c-typeck.c (label_context_stack_se): Don't define.
18466         (label_context_stack_vm): Don't define.
18467         (c_finish_goto_label): Call lookup_label_for_goto rather than
18468         lookup_label.  Don't give errors about jumping into a statement
18469         expression or the scope of a variably modified type.  Don't set
18470         label_context_stack_se or label_context_stack_vm.
18471         (struct c_switch): Remove blocked_stmt_expr and blocked_vm
18472         fields.  Add bindings field.
18473         (c_start_case): Don't set deleted fields.  Set bindings field.
18474         (do_case): Rework order of tests.  Don't check blocked_stmt_expr
18475         or blocked_vm.  Call c_check_switch_jump_warnings.
18476         (c_finish_case): Don't test blocked_stmt_expr field.  Call
18477         c_release_switch_bindings.
18478         (c_begin_stmt_expr): Don't increment blocked_stmt_expr in
18479         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
18480         set label_context_stack_se.  Call c_bindings_start_stmt_expr.
18481         (c_finish_stmt_expr): Don't decrement blocked_stmt_expr in
18482         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
18483         set label_context_stack_se.  Call c_bindings_end_stmt_expr.
18484         (c_begin_vm_scope, c_end_vm_scope): Don't define.
18485         * c-tree.h (C_DECL_UNJUMPABLE_STMT_EXPR): Don't define.
18486         (C_DECL_UNDEFINABLE_STMT_EXPR): Don't define.
18487         (C_DECL_UNJUMPABLE_VM): Don't define.
18488         (C_DECL_UNDEFINABLE_VM): Don't define.
18489         (struct c_label_list): Don't define.
18490         (struct c_label_context_se): Don't define.
18491         (struct c_label_context_vm): Don't define.
18492         (struct c_spot_bindings): Declare.
18493         (c_bindings_start_stmt_expr): Declare.
18494         (c_bindings_end_stmt_expr): Declare.
18495         (lookup_label_for_goto): Declare.
18496         (c_get_switch_bindings, c_release_switch_bindings): Declare.
18497         (c_check_switch_jump_warnings): Declare.
18498         (label_context_stack_se, label_context_stack_vm): Don't declare.
18499         (c_finish_goto_label): Update declaration.
18500         (c_begin_vm_scope, c_end_vm_scope): Don't declare.
18501         * doc/invoke.texi (Option Summary): Mention -Wjump-misses-init.
18502         (Warning Options): Document -Wjump-misses-init.
18503
18504 2009-06-15  Jakub Jelinek  <jakub@redhat.com>
18505
18506         * tree-object-size.c (addr_object_size): Fix a pasto in the last
18507         change.
18508
18509 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
18510
18511         * cgraph.c (cgraph_make_node_local): Use DECL_COMDAT_GROUP.
18512
18513 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
18514
18515         * except.c (init_eh): Use BUILTINS_LOCATION when calling build_decl.
18516
18517 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
18518
18519         * tree-eh.c (lower_try_finally_switch): Initialize tf_loc.
18520
18521 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
18522
18523         * cgraphunit.c (cgraph_function_versioning,save_inline_function_body):
18524         Use DECL_COMDAT_GROUP instead of DECL_ONE_ONLY.
18525         * cgraph.c (cgraph_create_virtual_clone): Use DECL_COMDAT_GROUP.
18526         * config/i386/i386.c (ix86_file_end): Compute DECL_COMDAT_GROUP.
18527         * dwarf2asm.c (dw2_force_const_mem): Update call to
18528         make_decl_one_only.
18529         * langhooks-def.h (lhd_comdat_group, LANG_HOOKS_COMDAT_GROUP): Remove.
18530         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_COMDAT_GROUP.
18531         * langhooks.c (lhd_comdat_group): Remove.
18532         * langhooks.h (lang_hooks_for_decls): Remove comdat_group.
18533         * tree.h (DECL_COMDAT_GROUP): New.
18534         (DECL_ONE_ONLY): Use DECL_COMDAT_GROUP.
18535         (tree_decl_with_vis): Add comdat_group. Remove one_only.
18536         (make_decl_one_only): Change signature.
18537         * varasm.c (get_emutls_init_templ_addr, emutls_decl): Update call to
18538         make_decl_one_only.
18539         (make_decl_one_only): Change signature.
18540         (default_elf_asm_named_section): Use DECL_COMDAT_GROUP.
18541
18542 2009-06-15  Richard Guenther  <rguenther@suse.de>
18543
18544         PR middle-end/40439
18545         * tree.c (widest_int_cst_value): Fix bootstrap on 32bit HWI hosts.
18546
18547 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
18548
18549         * tree-ssa-math-opts.c: Remove extra divide.
18550
18551 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
18552
18553         * config/s390/s390.md ("bswap<mode>2"): Only available on z900.
18554
18555 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
18556
18557         * passes.c: Add bswap pass.
18558         * tree-pass.h: Add pass_optimize_bswap declaration.
18559         * tree-ssa-math-opts.c: Include diagnostics.h for print_gimple_stmt.
18560         Include rtl.h, expr.h and optabs.h for optab_handler check.
18561         (struct symbolic_number, pass_optimize_bswap): New definition.
18562         (do_shift_rotate, verify_symbolic_number_p): New functions.
18563         (find_bswap_1, find_bswap, execute_optimize_bswap): New functions.
18564         (gate_optimize_bswap): New function.
18565         * tree.c (widest_int_cst_value): New function.
18566         * tree.h (widest_int_cst_value): Prototype added.
18567
18568 2009-06-14  Steven Bosscher  <steven@gcc.gnu.org>
18569
18570         * cfgcleanup.c (old_insns_match_p): Remove code to substitute
18571         REG_EQUAL/REG_EQUIV notes.
18572
18573 2009-06-14  Richard Guenther  <rguenther@suse.de>
18574
18575         PR middle-end/40389
18576         * gimple.c (walk_stmt_load_store_addr_ops): The LHS of a call
18577         has its address taken if NRV was applied and it is addressable.
18578         * tree-ssa-structalias.c (get_constraint_for_address_of): New
18579         function split out from ...
18580         (get_constraint_for_1): ... here.
18581         (handle_rhs_call): Use it to mark the return slot escaped if
18582         it is addressable and NRV was applied.
18583
18584 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
18585
18586         * config/rs6000/rs6000-protos.h (altivec_resolve_overloaded_builtin):
18587         Change first argument type to location_t.
18588         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Same.
18589         Do not set input_location.
18590         Use loc instead of input_location throughout.
18591
18592 2009-06-13  Richard Guenther  <rguenther@suse.de>
18593
18594         PR tree-optimization/40421
18595         * tree-predcom.c (should_unroll_loop_p): Remove.
18596         (tree_predictive_commoning_loop): Use can_unroll_loop_p.
18597
18598 2009-06-13  Michael Meissner  <meissner@linux.vnet.ibm.com>
18599
18600         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
18601         Add location argument.
18602
18603 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
18604
18605         * config/alpha/alpha.c (alpha_build_builtin_va_list): Pass location to
18606         build_decl.
18607         * config/s390/s390.c (s390_build_builtin_va_list): Same.
18608         (s390_gimplify_va_arg): Pass location to create_artificial_label.
18609         * config/spu/spu-protos.h: Add location to
18610         spu_resolve_overloaded_builtin.
18611         * config/spu/spu.c (spu_build_builtin_va_list): Pass location to
18612         spu_build_builtin_va_list.
18613         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Add location
18614         argument.  Pass location to build_function_call_vec.
18615         * config/sh/sh.c (sh_build_builtin_va_list): Pass location to
18616         build_decl.
18617         (emit_fpu_switch): Same.
18618         (sh_gimplify_va_arg_expr): Pass location to create_artificial_label.
18619         * config/xtensa/xtensa.c (xtensa_build_builtin_va_list): Pass location
18620         to build_decl and create_artificial_label.
18621         (xtensa_gimplify_va_arg_expr): Same.
18622         * config/stormy16/stormy16.c (xstormy16_build_builtin_va_list): Same.
18623         (xstormy16_gimplify_va_arg_expr): Same.
18624         * config/iq2000/iq2000.c (iq2000_expand_prologue): Same.
18625         * config/arm/arm.c (arm_build_builtin_va_list): Same.
18626         * config/mips/mips.c (mips_build_builtin_va_list): Same.
18627         (mips16_build_function_stub): Same.
18628         (mips16_build_call_stub): Same.
18629
18630 2009-06-13  Richard Earnshaw  <rearnsha@arm.com>
18631
18632         PR target/40327
18633         * arm/constraints.md (Pa, Pb): New constraints.
18634         * arm/arm.md (thumb1_addsi3): Support more complex additions.  Add a
18635         split pattern to deal with them.
18636
18637 2009-06-13  Joerg Sonnenberger  <joerg@britannica.bec.de>
18638
18639         * doc/invoke.texi: Add missing option -Wp,OPTION in list,
18640         fix index entry for -Xpreprocessor.
18641
18642 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
18643
18644         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
18645         Add location argument to build_decl call.
18646         * config/rs6000/rs6000.c (rs6000_build_builtin_va_list): Same.
18647         (rs6000_init_builtins): Same.
18648         (spe_init_builtins): Same.
18649         (rs6000_gimplify_va_arg): Add location argument to
18650         create_artificial_label call.
18651
18652 2009-06-12  Steven Bosscher  <steven@gcc.gnu.org>
18653
18654         * timevar.def (TV_COMBINE_STACK_ADJUST): New timevar.
18655         * combine-stack-adj.c (pass_stack_adjustments): Use it.
18656         * Makefile.in: Fix GGC dependency for gcse.o.
18657
18658 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
18659
18660         * tree-pretty-print.c (dump_generic_node): Dump column numbers.
18661         * gimple-pretty-print.c (dump_gimple_stmt): Same.
18662         * gimplify.c (gimplify_modify_expr): Set location for GIMPLE_ASSIGNs
18663         created.
18664         * c-parser.c (c_parser_binary_expression): Use current column while
18665         building binary operations.
18666         * common.opt (fshow-column): Enable by default.
18667         * tree-vrp.c (check_array_ref): Use warning_at.
18668         (check_array_bounds): Use location from call back if expr has no
18669         location.
18670         * tree.h: Add location argument to maybe_fold_*.
18671         * tree-ssa-ccp.c (ccp_fold): Pass location to maybe_fold_*.
18672         (maybe_fold_offset_to_array_ref): Add location argument and use it.
18673         (maybe_fold_offset_to_component_ref): Same.
18674         (maybe_fold_offset_to_reference): Same.
18675         (maybe_fold_offset_to_address): Same.
18676         (maybe_fold_stmt_indirect): Same.
18677         (maybe_fold_stmt_addition): Same.
18678         (fold_stmt_r): Pass location to maybe_fold_*.
18679         (fold_gimple_assign): Same.
18680         * c-tree.h: Add location argument to finish_decl,
18681         default_function_array_conversion, store_init_value.
18682         * c-decl.c (define_label): Use error_at.
18683         (c_make_fname_decl): Pass location to finish_decl.
18684         (finish_decl): New location argument.
18685         (build_compound_literal): Pass location to store_init_value.
18686         (grokdeclarator): Pass location to finish_decl.
18687         (grokfield): Same.
18688         * c-typeck.c (array_to_pointer_conversion): New location argument.
18689         (function_to_pointer_conversion): Same.
18690         (default_function_array_conversion): Same.
18691         (parser_build_unary_op): Pass location to overflow_warning.
18692         (parser_build_binary_op): Same.  Use warning_at.
18693         (build_unary_op): Pass location to array_to_pointer_conversion.
18694         (build_c_cast): Pass location to digest_init.
18695         (build_modify_expr): New location argument.
18696         (convert_for_assignment): Same.
18697         (store_init_value): Same.
18698         (digest_init): Same.
18699         (output_init_element): Pass location to digest_init and
18700         array_to_pointer_conversion.
18701         (c_finish_return): Pass location to convert_for_assignment.
18702         * gimplify.c (gimplify_conversion): Pass location to
18703         maybe_fold_offset_to_address.
18704         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Pass location
18705         to maybe_fold_stmt_addition.
18706         * c-omp.c (c_finish_omp_atomic): Pass new location to
18707         build_modify_expr.
18708         (c_finish_omp_for): Same.
18709         * c-common.c (overflow_warning): New argument.
18710         * c-common.h: New argument to build_modify_expr, overflow_warning.
18711         * c-parser.c (c_parser_declaration_or_fndef): Pass location to
18712         finish_decl.
18713         (c_parser_initializer): Pass location to
18714         default_function_array_conversion.
18715         (c_parser_initelt): Same.
18716         (c_parser_initval): Same.
18717         (c_parser_asm_operands): Same.
18718         (c_parser_expr_no_commas): Same.  Pass location to build_modify_expr.
18719         (c_parser_conditional_expression): Same.
18720         (c_parser_binary_expression): Add location info to stack.  Use it.
18721         (c_parser_unary_expression): Pass location to
18722         default_function_array_conversion, parser_build_unary_op,
18723         build_indirect_ref, c_parser_postfix_expression_after_primary.
18724         (c_parser_postfix_expression_after_primary): New location argument.
18725         Use it.
18726         (c_parser_expression_conv): Pass location to
18727         default_function_array_conversion.
18728         (c_parser_expr_list): Same.
18729         (c_parser_omp_atomic): Same.
18730         (c_parser_omp_for_loop): Same.
18731         * c-tree.h (struct c_declarator): Add comment to id_loc.
18732         (build_array_declarator): New argument.
18733         * c-decl.c (build_array_declarator): Add location argument.
18734         (grokdeclarator): Set id_loc for cdk_array.
18735         * c-parser.c (c_parser_direct_declarator_inner): Pass location to
18736         build_array_declarator.
18737         * tree.c (build_omp_clause): Add location argument.
18738         * tree.h (OMP_CLAUSE_HAS_LOCATION): New macro.
18739         (OMP_CLAUSE_LOCATION): New macro.
18740         (struct tree_omp_clause): Add location field.
18741         (build_omp_clause): Add argument.
18742         * cp/pt.c (tsubst_omp_for_iterator): Pass location to
18743         build_omp_clause.
18744         * cp/parser.c (cp_parser_omp_var_list_no_open): Same.
18745         (cp_parser_omp_clause_collapse): Same.
18746         (cp_parser_omp_clause_default): Same.
18747         (cp_parser_omp_clause_if): Same.
18748         (cp_parser_omp_clause_nowait): Same.
18749         (cp_parser_omp_clause_num_threads): Same.
18750         (cp_parser_omp_clause_ordered): Same.
18751         (cp_parser_omp_clause_schedule): Same.
18752         (cp_parser_omp_clause_untied): Same.
18753         (cp_parser_omp_for_loop): Same.
18754         (cp_parser_omp_parallel): Pass location to c_split_parallel_clauses.
18755         * c-tree.h (c_start_case): Add location argument.
18756         (c_process_expr_stmt): Same.
18757         (c_finish_goto_*): Same.
18758         * tree-parloops.c (initialize_reductions): Pass location to
18759         build_omp_clause.
18760         (create_parallel_loop): Same.
18761         * fortran/trans-openmp.c (gfc_trans_omp_variable_list): Same.
18762         (gfc_trans_omp_reduction_list): Same.
18763         (gfc_trans_omp_clauses): Same.
18764         (gfc_trans_omp_do): Same.
18765         * c-typeck.c (c_finish_goto_label): Same.
18766         (c_finish_goto_ptr): New location argument.
18767         (c_start_case): Same.
18768         (emit_side_effect_warnings): Same.
18769         (c_process_expr_stmt): Same.
18770         (c_finish_stmt_expr): Same.
18771         (c_finish_omp_clauses): Use error_at instead of error.
18772         * gimplify.c (gimplify_adjust_omp_clauses_1): Pass location to
18773         build_omp_clause.
18774         * c-omp.c (c_split_parallel_clauses): New location argument.
18775         * tree-nested.c (convert_nonlocal_reference_stmt): Pass location
18776         to build_omp_clause.
18777         (convert_local_reference_stmt): Same.
18778         (convert_gimple_call): Same.
18779         * c-common.h (c_split_parallel_clauses): New argument.
18780         * c-parser.c (c_parser_statement_after_labels): Pass location to
18781         c_finish_goto_label.
18782         (c_parser_switch_statement): Pass location to c_start_case.
18783         (c_parser_for_statement): Pass location to c_finish_expr_stmt,
18784         and c_process_expr_stmt.
18785         (c_parser_omp_variable_list): Add location argument.
18786         (c_parser_omp_clause_collapse): Pass location to build_omp_clause.
18787         (c_parser_omp_clause_default): Same.
18788         (c_parser_omp_clause_if): Same.
18789         (c_parser_omp_clause_num_threads): Same.
18790         (-c_parser_omp_clause_ordered): Same.
18791         (c_parser_omp_clause_reduction): Pass location to
18792         c_parser_omp_variable_list.
18793         (c_parser_omp_clause_schedule): Pass location to build_omp_clause.
18794         (c_parser_omp_clause_untied): Same.
18795         (c_parser_omp_for_loop): Pass location to c_process_expr_stmt.
18796         (c_parser_omp_parallel): Pass location to c_split_parallel_clauses.
18797
18798         * c-tree.h (check_for_loop_decls, undeclared_variable,
18799         build_component_ref, build_array_ref, build_external_ref,
18800         c_expr_sizeof_expr, c_expr_sizeof_type, parser_build_unary_op,
18801         build_conditional_expr, build_compound_expr, c_cast_expr,
18802         build_c_cast, build_asm_expr, c_end_compound_stmt, c_finish_stmt_expr,
18803         c_finish_return, c_finish_omp_parallel, c_finish_omp_task): New
18804         argument.
18805         * c-semantics.c (build_stmt): Same.
18806         (build_case_label): Same.
18807         * c-decl.c (c_finish_incomplete_decl): Pass location on down.
18808         (undeclared_variable): New argument.
18809         (make_label): Same.
18810         (lookup_label): Pass location on down.
18811         (define_label): Same.
18812         (finish_decl): Same.
18813         (build_compound_literal): Same.
18814         (finish_struct): Same.
18815         (finish_function): Do not set location here.
18816         (check_for_loop_decls): New argument.
18817         * tree.c (save_expr): Set location.
18818         (build_empty_stmt): New argument.
18819         * tree.h (build_empty_stmt): New argument to build_empty_stmt.
18820         (CAN_HAVE_LOCATION_P): Make sure we have a non empty node.
18821         * builtins.c (gimplify_va_arg_expr): Use locations.
18822         (expand_builtin_sync_operation): Same.
18823         * c-typeck.c (build_component_ref): New argument.
18824         (build_array_ref): Same.
18825         (build_external_ref): Same.
18826         (c_expr_sizeof_expr): Same.
18827         (c_expr_sizeof_type): Same.
18828         (parser_build_unary_op): Same.
18829         (build_conditional_expr): Same.
18830         (build_compound_expr): Pass location on down.
18831         (build_compound_expr): New argument.
18832         (build_c_cast): Same.
18833         (c_cast_expr): Same.
18834         (build_asm_expr): Same.
18835         (c_finish_return): Same.
18836         (c_process_expr_stmt): Pass location on down.
18837         (c_finish_stmt_expr): New argument.
18838         (push_clenaup): Same.
18839         (c_finish_omp_parallel): Same.
18840         (c_finish_omp_task): Same.
18841         * gimplify.c (gimplify_call_expr): Pass location on down.
18842         * c-omp.c (c_finish_omp_master): New argument.
18843         (c_finish_omp_critical): Same.
18844         (c_finish_omp_ordered): Same.
18845         (c_finish_omp_barrier): Same.
18846         (-c_finish_omp_taskwait): Same.
18847         (c_finish_omp_atomic): Same.
18848         (c_finish_omp_flush): Same.
18849         * tree-inline.c (copy_tree_body_r): Pass location on down.
18850         (inline_forbidden_p): Remove use of input_location.
18851         * c-gimplify.c (c_build_bind_expr): New argument.
18852         * c-common.c (c_common_truthvalue_conversion): Pass location on down.
18853         (c_sizeof_or_alignof_type): New argument.
18854         (c_alignof_expr): Same.
18855         (build_va_arg): Same.
18856         (c_add_case_label): Same.
18857         * c-common.h (c_sizeof_or_alignof_type, c_alignof_expr,
18858         c_sizeof, c_alignof, build_va_arg, build_stmt, build_case_label,
18859         c_build_bind_expr, objc_build_selector_expr, objc_build_throw_stmt,
18860         c_finish_omp_master, c_finish_omp_critical, c_finish_omp_ordered,
18861         c_finish_omp_barrier, c_finish_omp_atomic, c_finish_omp_flush,
18862         c_finish_omp_taskwait, c_finish_omp_for, c_split_parallel_clauses):
18863         New argument.
18864         * stub-objc.c (objc_build_selector_expr): Same.
18865         (objc_build_throw_stmt): Same.
18866         * c-parser.c (c_parser_declaration_or_fndef): Pass location on down.
18867         (c_parser_initelt): Same.
18868         (c_parser_compound_statement): Same.
18869         (c_parser_compound_statement_nostart): Same.
18870         (c_parser_label): Same.
18871         (c_parser_statement_after_labels): Same.
18872         (c_parser_if_body): Same.
18873         (c_parser_else_body): Same.
18874         (c_parser_if_statement): Same.
18875         (c_parser_switch_statement): Same.
18876         (c_parser_while_statement): Same.
18877         (c_parser_do_statement): Same.
18878         (c_parser_for_statement): Same.
18879         (c_parser_asm_statement): Same.
18880         (c_parser_conditional_expression): Same.
18881         (c_parser_binary_expression): Same.
18882         (c_parser_cast_expression): Same.
18883         (c_parser_unary_expression): Same.
18884         (c_parser_sizeof_expression): Same.
18885         (c_parser_alignof_expression): Same.
18886         (c_parser_postfix_expression): Same.
18887         (c_parser_expression): Same.
18888         (c_parser_objc_receiver): Same.
18889         (c_parser_omp_variable_list): Same.
18890         (c_parser_omp_structured_block): Same.
18891         (c_parser_omp_atomic): New argument.
18892         (c_parser_omp_barrier): Same.
18893         (c_parser_omp_critical): Same.
18894         (c_parser_omp_flush): Pass location on down.
18895         (c_parser_omp_for_loop): New argument.
18896         (c_parser_omp_for): Same.
18897         (c_parser_omp_master): Same.
18898         (c_parser_omp_ordered): Same.
18899         (c_parser_omp_sections_scope): Same.
18900         (c_parser_omp_sections): Same.
18901         (c_parser_omp_parallel): Same.
18902         (c_parser_omp_single): Same.
18903         (c_parser_omp_task): Same.
18904         (c_parser_omp_taskwait): Pass location on down.
18905         (c_parser_omp_construct): Same.
18906         (c_parser_omp_threadprivate): Same.
18907         * dwarf2asm.c, targhooks.c, optabs.c, tree.c, tree.h, target.h,
18908         builtins.c, omp-low.c, cgraphunit.c, tree-call-cdce.c,
18909         tree-ssa-alias.c, gimple-low.c, c-tree.h, expr.c, tree-parloops.c,
18910         c-decl.c, tree-eh.c, langhooks.c, function.c, stor-layout.c,
18911         c-typeck.c, gimplify.c, c-pragma.c, expmed.c, except.c, coverage.c,
18912         emit-rtl.c, cfgexpand.c, tree-mudflap.c, varasm.c, tree-nested.c,
18913         rtl.h, tree-inline.c, tree-profile.c, c-common.c, c-common.h,
18914         tree-switch-conversion.c, tree-cfg.c, ipa-struct-reorg.c, c-parser.c,
18915         config/i386/i386.c, stmt.c:
18916         Add location argument to the following function definitions and/or
18917         function calls: build_decl, objcp_start_struct, objcp_finish_struct,
18918         start_struct, finish_struct, PUSH_FIELD, create_artificial_label,
18919         cp_make_fname_decl, pushtag, implicitly_declare, c_make_fname_decl,
18920         build_compound_literal, parser_xref_tag, resolve_overloaded_builtin,
18921         do_case, c_finish_bc_stmt, build_compound_literal,
18922         build_function_call.
18923         * c-decl.c (build_compound_literal): Add location argument.
18924         Make all diagnostic calls use location.
18925         (start_struct): Same.
18926         (finish_struct): Same.
18927         (start_enum): Same.
18928         (build_enumerator): Same.
18929         (start_function): Same.
18930         (grokdeclarator): Make all diagnostic calls use location.
18931         (store_parm_decls_oldstyle): Same.
18932         * c-typeck.c (build_function_call): Add location argument.
18933         Make all diagnostic calls use location.
18934         (do_case): Same.
18935         (c_finish_bc_stmt): Same.
18936         * tree-nested.c (get_trampoline_type): Add argument.
18937         Pass location to build_decl.
18938         (lookup_tramp_for_decl): Pass location to get_trampoline_type.
18939         * rtl.h (RTL_LOCATION): New.
18940         * c-common.c (c_add_case_label): Add location argument.
18941         Make all diagnostic calls use location.
18942         * c-common.h: Add location argument to make_fname_decl, do_case,
18943         c_add_case_label, build_function_call, resolve_overloaded_builtin.
18944         * c-parser.c (c_parser_enum_specifier): Rename ident_loc to enum_loc.
18945         Set it appropriately for every case.  Pass enum_loc to start_enum
18946         call.  Pass value_loc first to build_enumerator.  Pass enum_loc to
18947         parser_xref_tag.
18948         (c_parser_struct_or_union_specifier): Save location.  Use it for
18949         start_struct, finish_struct, and parser_xref_tag.
18950
18951 2009-06-12  Ian Lance Taylor  <iant@google.com>
18952
18953         * fold-const.c (fold_unary): Rename local variable and to and_expr.
18954
18955         * c-opts.c (c_common_handle_option): For -Wc++-compat set
18956         cpp_opts->warn_cxx_operator_names.
18957
18958 2009-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18959
18960         PR tree-opt/38865
18961         * tree-ssa-sccvn.c (visit_reference_op_load): If vn_reference_lookup
18962         is returns NULL and OP is a VCE, look through the VCE.
18963
18964 2009-06-12  Ian Lance Taylor  <iant@google.com>
18965
18966         PR bootstrap/40430
18967         * collect2.c (main): Use CONST_CAST2 in code inside #if
18968         LINK_ELIMINATE_DUPLICATE_LDIRECTORIES.
18969
18970 2009-06-12  Joey Ye  <joey.ye@intel.com>
18971
18972         PR middle-end/39146
18973         * cfgexpand.c (get_decl_align_unit): Update
18974         max_used_stack_slot_alignment with align instead of
18975         stack_alignment_needed.
18976
18977         * function.c (assign_stack_local_1): Update
18978         max_used_stack_slot_alignment with alignment_in_bits instead
18979         of stack_alignment_needed.
18980         (locate_and_pad_parm): Don't update max_used_stack_slot_alignment
18981         here.
18982
18983 2009-06-12  Jakub Jelinek  <jakub@redhat.com>
18984
18985         * dwarf2out.c (last_var_location_insn): New variable.
18986         (dwarf2out_end_epilogue): Clear last_var_location_insn.
18987         (dwarf2out_var_location): Don't record anything after last real
18988         insn.  Only change labels if there were any real instructions
18989         in between last note and this one, or if changed sections.
18990
18991 2009-06-11  Richard Henderson  <rth@redhat.com>
18992
18993         * alpha.c (alpha_expand_prologue): Add a REF_CFA_REGISTER
18994         note when storing the frame pointer in a register.
18995         (FRP): Don't redefine to nothing for epilogue.
18996         (alpha_expand_epilogue): Mark register and sp restores.
18997         (unicosmk_gen_dsib): Don't mark weird frame pointer adjust.
18998
18999         * config/alpha/alpha.c (alpha_emit_setcc): Fix test for
19000         when gen_lowpart is needed.
19001
19002 2009-06-11  Richard Henderson  <rth@redhat.com>
19003
19004         * dwarf2out.c (def_cfa_1): Likewise for DW_CFA_cfa_offset.
19005
19006         * dwarf2out.c (need_data_align_sf_opcode): New.
19007         (div_data_align): Move earlier.
19008         (def_cfa_1, reg_save): Use it.
19009
19010 2009-06-11  H.J. Lu  <hongjiu.lu@intel.com>
19011
19012         * config/i386/i386.c (OPTION_MASK_ISA_CRC32_SET): New.
19013         (OPTION_MASK_ISA_CRC32_UNSET): Likewise.
19014         (ix86_handle_option): Handle OPT_mcrc32.
19015         (ix86_target_string): Add -mcrc32.
19016         (bdesc_args): Enable crc32 builtins with OPTION_MASK_ISA_CRC32.
19017
19018         * config/i386/i386.h (TARGET_CRC32): New.
19019
19020         * config/i386/i386.md (sse4_2_crc32<mode>): Also check TARGET_CRC32.
19021         (sse4_2_crc32di): Likewise.
19022
19023         * config/i386/i386.opt (mcrc32): New.
19024
19025         * doc/invoke.texi: Document -mcrc32.
19026
19027 2009-06-11  Richard Henderson  <rth@redhat.com>
19028
19029         * common.opt (gdwarf-): Accept a version number.
19030         * doc/invoke.texi (gdwarf-): Update docs.
19031         * opth-gen.awk: Special case -gdwarf+ to OPT_gdwarfplus.
19032         * opts.c (common_handle_option) [OPT_gdwarf_]: Verify dwarf
19033         version level, and record it.
19034
19035         * dwarf2.h (DW_CIE_VERSION): Remove.
19036         * dwarf2out.c (DWARF_VERSION): Remove.
19037         (add_fde_cfi): Skip DW_CFA_set_loc addition for dwarf3.
19038         (output_call_frame_info): Use CIE version 3 for dwarf3,
19039         or if the return register column is out of range for version 1.
19040         (dwarf_stack_op_name): Add all dwarf3 values.
19041         (DEBUG_PUBTYPES_SECTION): New.
19042         (size_of_die) [dw_val_class_die_ref]: Handle DW_FORM_ref_addr
19043         encoding change for dwarf3.
19044         (output_die) [dw_val_class_die_ref]: Likewise.
19045         (output_compilation_unit_header): Emit correct version for dwarf3.
19046         (output_line_info): Likewise.
19047         (output_pubnames): Update for DWARF_VERSION removal.
19048         (output_aranges): Likewise.
19049         (gen_subprogram_die): Emit DW_OP_call_frame_cfa if emitting dwarf3.
19050         (dwarf2out_init): Don't ifdef DEBUG_PUBTYPES_SECTION.
19051         (dwarf2out_finish): Likewise.
19052
19053 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
19054
19055         * system.h (gcc_assert, gcc_unreachable): Revert accidental commit
19056         in r148403.
19057
19058 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
19059
19060         PR c/39252
19061         * doc/extend.texi ( __builtin_unreachable): Document new builtin.
19062         * builtins.c (expand_builtin_unreachable): New function.
19063         (expand_builtin): Handle BUILT_IN_UNREACHABLE case.
19064         * builtins.def (BUILT_IN_UNREACHABLE): Add new builtin.
19065         * cfgcleanup.c (try_optimize_cfg): Delete empty blocks with no
19066         successors.
19067         * cfgrtl.c (rtl_verify_flow_info): Handle empty blocks when
19068         searching for missing barriers.
19069
19070 2009-06-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
19071
19072         * config/darwin.h (LINK_COMMAND_SPEC): Adjust spec to link libcov
19073         when -fprofile-generate* was passed.
19074         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
19075
19076 2009-06-11  Anthony Green  <green@moxielogic.com>
19077
19078         * config/moxie/moxie.md: Define length attribute for all instructions.
19079         (rCC): Define.
19080         (*b<cond:code>): Support limited branch ranges for new PC-relative
19081         branch instructions.
19082         * config/moxie/moxie.h (HAS_LONG_UNCOND_BRANCH): Define.
19083
19084 2009-06-11  Jakub Jelinek  <jakub@redhat.com>
19085
19086         * config/i386/i386.c (min_insn_size): Use get_attr_length
19087         for normal insns other than TYPE_MULTI, TYPE_OTHER and TYPE_FCMP.
19088         For __asm return 0.
19089
19090         * config/i386/i386.c (ix86_pad_returns): Use emit_jump_insn_before
19091         instead of emit_insn_before.
19092
19093 2009-06-10  Ian Lance Taylor  <iant@google.com>
19094
19095         PR bootstrap/40408
19096         * graphite.c (add_conditions_to_domain): Change SWITCH_EXPR to
19097         GIMPLE_SWITCH.
19098
19099 2009-06-10  Revital Eres  <eres@il.ibm.com>
19100
19101         * passes.c (init_optimization_passes): Reschedule
19102         predictive-commoning pass before complete unroll pass.
19103
19104 2009-06-10  Martin Jambor  <mjambor@suse.cz>
19105
19106         * cgraph.c (cgraph_node_can_be_local_p): New function.
19107         (cgraph_make_node_local): New function.
19108         * cgraph.h (cgraph_node_can_be_local_p): Declare.
19109         (cgraph_make_node_local): Declare.
19110
19111 2009-06-10  Nathan Froyd  <froydnj@codesourcery.com>
19112
19113         * tree.h (tree_base): Add packed_flag and user_align fields.
19114         Decrease size of spare field.
19115         (TYPE_USER_ALIGN): Use user_align from tree_base.
19116         (DECL_USER_ALIGN): Likewise.
19117         (TYPE_PACKED): Use packed_flag from tree_base.
19118         (DECL_PACKED): Likewise.
19119         (tree_type): Delete packed_flag and user_align fields.  Widen
19120         precision field.  Widen mode field and shuffle fields to align
19121         mode on an 8-bit boundary.
19122         (tree_decl_common): Delete decl_flag_1 and user_align fields.
19123         Renumber decl_flag_* fields.  Fix comments.  Widen
19124         decl_common_unused field.
19125         (DECL_HAS_VALUE_EXPR_P): Adjust for renumbering of decl_flag_* fields.
19126         (DECL_EXTERNAL): Likewise.
19127         (DECL_BIT_FIELD): Likewise.
19128         (DECL_NONADDRESSABLE_P): Likewise.
19129         (TYPE_DECL_SUPRESS_DEBUG): Likewise.
19130         * config/arm/arm-modes.def (XImode): Make it an INT_MODE.
19131
19132 2009-06-10  Ian Lance Taylor  <iant@google.com>
19133
19134         * vec.h (DEF_VEC_ALLOC_I): Use DEF_VEC_NONALLOC_FUNCS_I.
19135         (DEF_VEC_ALLOC_P): Use DEF_VEC_NONALLOC_FUNCS_P.
19136         (DEF_VEC_ALLOC_O): Use DEF_VEC_NONALLOC_FUNCS_O.
19137         (DEF_VEC_ALLOC_FUNC_P): Only define VEC_OP (T,A,alloc).
19138         (DEF_VEC_NONALLOC_FUNCS_P): New macro, broken out of old
19139         DEF_VEC_ALLOC_FUNC_P.
19140         (DEF_VEC_ALLOC_FUNC_O): Only define VEC_OP (T,A,alloc).
19141         (DEF_VEC_NONALLOC_FUNCS_O): New macro, broken out of old
19142         DEF_VEC_ALLOC_FUNC_O.
19143         (DEF_VEC_ALLOC_FUNC_I): Only define VEC_OP (T,A,alloc).
19144         (DEF_VEC_NONALLOC_FUNCS_I): New macro, broken out of old
19145         DEF_VEC_ALLOC_FUNC_I.
19146         (vec_stack_p_reserve, vec_stack_p_reserve_exact): Declare.
19147         (vec_stack_p_reserve_exact_1): Declare.
19148         (vec_stack_o_reserve, vec_stack_o_reserve_exact): Declare.
19149         (vec_stack_free): Declare.
19150         (VEC_stack_alloc): Define.
19151         (DEF_VEC_ALLOC_P_STACK, DEF_VEC_ALLOC_FUNC_P_STACK): Define.
19152         (DEF_VEC_ALLOC_O_STACK, DEF_VEC_ALLOC_FUNC_O_STACK): Define.
19153         (DEF_VEC_ALLOC_I_STACK, DEF_VEC_ALLOC_FUNC_I_STACK): Define.
19154         * vec.c (void_p): New type.  Call DEF_VEC_P and DEF_VEC_ALLOC_P
19155         for void_p.
19156         (stack_vecs): New static variable.
19157         (vec_stack_p_reserve_exact_1): New function.
19158         (vec_stack_o_reserve_1): New static function.
19159         (vec_stack_p_reserve, vec_stack_p_reserve_exact): New functions.
19160         (vec_stack_o_reserve, vec_stack_o_reserve_exact): New functions.
19161         (vec_stack_free): New function.
19162         * df-scan.c (df_ref): Use DEF_VEC_P and DEF_VEC_ALLOC_P_STACK.
19163         (VEC_df_ref_stack_alloc): Define.
19164         (df_mw_hardreg_ptr): New type.  Use DEF_VEC_P and
19165         DEF_VEC_ALLOC_P_STACK.
19166         (VEC_df_mw_hardreg_ptr_stack_alloc): Define.
19167         (struct df_collection_rec): Change _vec fields to VEC.  Remove
19168         _use fields.
19169         (df_free_collection_rec): Adjust for new fields.
19170         (df_insn_rescan): Use new df_collection_rec fields.
19171         (df_notes_rescan, df_canonize_collection_rec): Likewise.
19172         (df_ref_create_structure, df_ref_record): Likewise.
19173         (df_get_conditional_uses, df_get_call_refs): Likewise.
19174         (df_insn_refs_collect, df_bb_refs_collect): Likewise.
19175         (df_bb_refs_record, df_record_entry_block_defs): Likewise.
19176         (df_record_exit_block_uses, df_bb_verify): Likewise.
19177         (df_swap_refs): Change ref_vec parameter to VEC.  Change all callers.
19178         (df_sort_and_compress_refs): Change ref_vec parameter to VEC.
19179         Remove count parameter.  Change return type to void.  Change all
19180         callers.
19181         (df_sort_and_compress_mws): Change mw_vec parameter to VEC.
19182         Remove count parameter.  Change return type to void.  Change all
19183         callers.
19184         (df_install_refs): Change old_vec parameter to VEC.  Remove count
19185         parameter.  Change all callers.
19186         (df_install_mws): Change old_vec parameter to VEC.  Remove count
19187         parameter.  Change all callers.
19188         (df_refs_verify): Change new_rec parameter to VEC.  Change call
19189         callers.
19190         (df_mws_verify): Likewise.
19191
19192 2009-06-10  Alexandre Oliva  <aoliva@redhat.com>
19193
19194         * gcc.c (compare_files): Cast munmap argumento to caddr_t.
19195
19196 2009-06-10  H.J. Lu  <hongjiu.lu@intel.com>
19197
19198         * doc/extend.texi: Add description for __builtin_ia32_crc32di.
19199
19200 2009-06-10  Anthony Green  <green@moxielogic.com>
19201
19202         * config/moxie/crti.asm: New file.
19203         * config/moxie/crtn.asm: New file.
19204         * config/moxie/moxie.c: New file.
19205         * config/moxie/moxie.h: New file.
19206         * config/moxie/sfp-machine.h: New file.
19207         * config/moxie/moxie-protos.h: New file.
19208         * config/moxie/t-moxie: Created.
19209         * config/moxie/t-moxie-softfp: Created.
19210         * config/moxie/moxie.md: Created.
19211         * config/moxie/constraints.md: Created.
19212         * config.gcc: Add moxie support.
19213         * doc/md.texi (Machine Constraints): Add moxie constraints.
19214         * doc/contrib.texi (Contributors): Mention moxie port.
19215         * doc/install.texi (Specific): Mention the moxie port.
19216
19217 2009-06-09  Ian Lance Taylor  <iant@google.com>
19218
19219         * system.h (HAVE_DESIGNATED_INITIALIZERS): Don't define if
19220         compiling with C++.
19221         * optabs.c (optab_table): Only use designated initializers if
19222         HAVE_DESIGNATED_INITIALIZERS is defined.
19223         (convert_optab_table): Likewise.
19224         (init_optabs): Always call init_insn_codes if
19225         HAVE_DESIGNATED_INITIALIZERS is not defined.
19226
19227 2009-06-09  Ian Lance Taylor  <iant@google.com>
19228
19229         * targhooks.c (default_builtin_vectorized_function): Change fn
19230         parameter to unsigned int.
19231         (default_builtin_vectorized_conversion): Change code parameter to
19232         unsigned int.
19233         (default_builtin_reciprocal): Change fn parameter to unsigned int.
19234         * targhooks.h: Update declarations.
19235         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Change code
19236         parameter to unsigned int.
19237
19238         * c-typeck.c (comptypes_check_enum_int): New static function.
19239         (comptypes_internal): Add enum_and_int_p parameter.  Change all
19240         callers.
19241         (comp_target_types): Add location parameter.  Change all callers.
19242         (tagged_types_tu_compatible_p): Add enum_and_int_p parameter.
19243         Change all callers.
19244         (function_types_compatible_p, type_lists_compatible_p): Likewise.
19245         (build_conditional_expr): Add colon_loc parameter.  Change all
19246         callers.
19247         (convert_for_assignment): Add location parameter.  Change all callers.
19248         * c-parser.c (c_parser_conditional_expression): Pass location of
19249         colon to build_conditional_expr.
19250         * c-tree.h (build_conditional_expr): Update declaration.
19251
19252 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
19253
19254         * graphite.c: Revert previous patch.
19255
19256 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
19257
19258         PR bootstrap/40103
19259         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
19260
19261 2009-06-09  Ghassan Shobaki  <ghassan.shobaki@amd.com>
19262
19263         * tree-ssa-loop-prefetch.c
19264         (loop_prefetch_arrays): Fixed a portability problem in printf format
19265         string.
19266
19267 2009-06-09  Martin Jambor  <mjambor@suse.cz>
19268
19269         PR tree-optimization/40351
19270         * tree-sra.c (propagate_subacesses_accross_link): Check that a
19271         refrence to a potential artifical subaccess can be constructed.
19272
19273 2009-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
19274
19275         * config/sh/sh-protos.h (sh_optimization_options): Declare.
19276         (sh_override_options): Likewise.
19277         * config/sh/sh.c: Include params.h.
19278         (sh_optimization_options): New.
19279         (sh_override_options): Likewise.
19280         * config/sh/sh.c (OPTIMIZATION_OPTIONS): Use sh_optimization_options.
19281         (OVERRIDE_OPTIONS): Use sh_override_options.
19282
19283 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
19284
19285         * dwarf2out.c (emit_cfa_remember): New variable.
19286         (add_fde_cfi): If emit_cfa_remember, recurse to add
19287         DW_CFA_remember_state first.
19288         (dwarf2out_begin_epilogue): Don't add_fde_cfi DW_CFA_remember_state,
19289         instead just set emit_cfa_remember.
19290
19291 2009-06-08  Jan Hubicka  <jh@suse.cz>
19292
19293         PR debug/40126
19294         * dwarf2out.c (dwarf2out_abstract_function): Free decl_loc_table.
19295
19296 2009-06-08  Jan Hubicka  <jh@suse.cz>
19297
19298         PR middle-end/39834
19299         * cgraphunit.c (save_inline_function_body): Do not copy transform
19300         hooks for saved inline bodies.
19301         * ipa-passes.c (do_per_function): Do not add the hoks multiple times
19302         for given function.
19303
19304 2009-06-08  Adam Nemet  <anemet@caviumnetworks.com>
19305
19306         * jump.c (returnjump_p): Handle delayed branches.  Add missing
19307         function comment.
19308
19309 2009-06-08  Jan Hubicka  <jh@suse.cz>
19310
19311         PR middle-end/40102
19312         * cgraph.c (cgraph_create_edge_including_clones): Also asume that the
19313         original node might've been modified.
19314         * tree-inline.c (copy_bb): Do not assume that all clones are the same.
19315
19316 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
19317
19318         * tree-object-size.c (addr_object_size): Add OSI argument.
19319         Handle also INDIRECT_REF with SSA_NAME inside of it as base address.
19320         (compute_builtin_object_size, expr_object_size): Adjust callers.
19321         (plus_stmt_object_size): Call addr_object_size instead of
19322         compute_builtin_object_size.
19323
19324 2009-06-08  Ghassan Shobaki  <ghassan.shobaki@amd.com>
19325             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
19326
19327         * tree-ssa-loop-prefetch.c
19328         (gather_memory_references): Introduced a counter for the number of
19329         memory references.
19330         (anything_to_prefetch_p): Introduced a counter for the number of
19331         prefetches.
19332         (is_loop_prefetching_profitable): New function with a cost model
19333         for prefetching.
19334         (loop_prefetch_arrays): Use the new cost model to determine if
19335         prefetching is profitable.
19336         * params.def (MIN_INSN_TO_PREFETCH_RATIO,
19337         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
19338         * params.h (MIN_INSN_TO_PREFETCH_RATIO,
19339         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
19340         * doc/invoke.texi (MIN_INSN_TO_PREFETCT_RATIO,
19341         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
19342
19343 2009-06-08  Michael Matz  <matz@suse.de>
19344
19345         PR debug/40012
19346         * cfgexpand.c (set_rtl): Store place also in DECL_RTL, if all
19347         partitions use the same.
19348         (expand_one_var): Deal with DECL_RTL sometimes begin set also
19349         for basevars of SSA_NAMEs.
19350         (expand_used_vars): Reset TREE_USED for basevars of SSA_NAMEs,
19351         to not expand them twice.
19352         (gimple_expand_cfg): Clear DECL_RTL for those decls that have
19353         multiple places.
19354
19355 2009-06-08  Alexandre Oliva  <aoliva@redhat.com>
19356
19357         * common.opt (fcompare-debug=, fcompare-debug-second): New.
19358         (fdump-final-insns=, gtoggle): New.
19359         * doc/invoke.texi: Document them.
19360         * final.c (rest_of_clean_state): Dump final insn stream.
19361         * gcc.c (invoke_as): Hook in -fcompare-debug.
19362         (static_spec_functions): Add compare-debug-dump-opt,
19363         compare-debug-self-opt and compare-debug-auxbase-opt.
19364         (compare_debug, compare_debug_second, compare_debug_opt): New.
19365         (switches_debug_check, n_switches_debug_check): New.
19366         (debug_auxbase_opt, debug_check_temp_file): New.
19367         (process_command): Handle -fno-compare-debug, -fcompare-debug and
19368         -fcompare-debug=*.
19369         (do_self_spec): Handle arguments after switches.
19370         (do_spec_1): Add .gk extension to temp file basenames for compare.
19371         (check_live_switch): Take SWITCH_IGNORE into account, and earlier.
19372         (cc1_options): Use it instead of normal auxbase computation for
19373         the second compare-debug compilation.
19374         (compare_files): New.
19375         (main): Set up and implement compare debug mode.
19376         (compare_debug_dump_opt_spec_function): New.
19377         (compare_debug_self_opt_spec_function): New.
19378         (compare_debug_auxbase_opt_spec_function): New.
19379         * toplev.c (process_options): Handle flag_gtoggle,
19380         flag_dump_final_insns.
19381         * coverage.c (coverage_begin_output): Don't overwrite .gcno file
19382         during -fcompare-debug-second compilation.
19383
19384 2009-06-07  Ian Lance Taylor  <iant@google.com>
19385
19386         * dwarf2.h (enum dwarf_location_atom): Add INTERNAL_DW_OP_tls_addr.
19387         * dwarf2out.c (INTERNAL_DW_OP_tls_addr): Don't #define.
19388
19389         * c-common.c (c_do_switch_warnings): Don't exit early for -Wswitch
19390         with no default node.  Change warning with %H to warning_at.
19391         Don't clear warn_switch around case checking.
19392         * doc/invoke.texi (Warning Options): Clarify distinction between
19393         -Wswitch and -Wswitch-enum.
19394
19395 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
19396
19397         * tree-pass.h (TODO_update_ssa_any): Document internal use only.
19398
19399 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
19400
19401         * gbl-ctors.h: Add header guard.
19402
19403 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
19404
19405         * tree-flow.h (make_value_handle, set_value_handle, sort_vuses,
19406         sort_vuses_heap, vn_lookup_or_add, vn_lookup_or_add_with_stmt,
19407         vn_lookup_or_add_with_vuses, vn_add, vn_add_with_vuses,
19408         vn_lookup_with_stmt, vn_lookup, vn_lookup_with_vuses): Remove
19409         prototypes for removed functions.
19410         (expressions_equal_p): Move to ...
19411         * tree-ssa-sccvn.h: ... here and ...
19412         * matrix-reorg.c: ... adjust includes.
19413
19414 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
19415
19416         * ipa-struct-reorg.c (do_reorg_1): Fix whitespace in dump output.
19417
19418 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
19419
19420         * c-decl.c (finish_decl): Use bool for variable was_incomplete.
19421         (finish_function): Remove erroneous whitespace.
19422
19423 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
19424
19425         * tree-cfg.c (gimple_merge_blocks): Commentary typo fix.
19426         (verify_stmts): Print statement who's gimple_bb is set to a wrong BB
19427
19428 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
19429
19430         * errors.c (internal_error): Commentary typo fix.
19431         * gimple-iterator.c (gsi_insert_seq_on_edge): Ditto.
19432         * tree-ssa-pre.c: Ditto.
19433
19434 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
19435
19436         * basic-block.h (ENTRY_BLOCK, EXIT_BLOCK): Document that neither of
19437         them is supposed to hold actual statements.
19438
19439 2009-06-06  Ian Lance Taylor  <iant@google.com>
19440
19441         * doc/extend.texi (Attribute Syntax): Document that C++ labels on
19442         empty statements can now have attributes.
19443
19444 2009-06-05  Shujing Zhao  <pearly.zhao@oracle.com>
19445
19446         * config/mips/mips.c: Use REG_P and CONST_INT_P where applicable.
19447         * config/mips/mips.md: Ditto.
19448
19449 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
19450
19451         * config/rs6000/eabi.asm (__eabi_convert): Don't define if
19452         _RELOCATABLE.
19453         (__eabi_uconvert): Likewise.
19454
19455 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
19456
19457         * config/rs6000/ppc-asm.h: Protect auto-host.h inclusion and
19458         CFI_* definitions with IN_GCC.
19459
19460 2009-06-05  David Edelsohn  <edelsohn@gnu.org>
19461
19462         * xcoffout.h (xcoffout_source_line): Update prototype.
19463
19464 2009-06-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19465
19466         * builtins.c (do_mpc_ckconv, do_mpc_arg1): Use
19467         mpc_realref/mpc_imagref instead of MPC_RE/MPC_IM.
19468
19469 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
19470
19471         PR middle-end/40340
19472         * tree-ssa-live.c (remove_unused_scope_block_p): Don't prune
19473         inlined_function_outer_scope_p blocks for artificial inlines
19474         even at -g0/-g1.
19475         * tree.c (tree_nonartificial_location): Rewrite using
19476         block_nonartificial_location.
19477
19478 2009-06-05  Revital Eres  <eres@il.ibm.com>
19479             Leehod Baruch  <leehod@il.ibm.com>
19480
19481         * expr.c (expand_assignment): Expand MISALIGNED_INDIRECT_REF.
19482         (expand_expr_real_1): Remove comment.
19483         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
19484         Vectorize misaligned access when the target supports it.
19485         (vect_supportable_dr_alignment): Check for unaligned access support.
19486         * tree-vect-stmts.c (vectorizable_store): Generate misaligned store
19487         and remove asset.
19488
19489 2009-06-05  Julian Brown  <julian@codesourcery.com>
19490
19491         * config/arm/ieee754-df.S (cmpdf2): Avoid writing below SP.
19492         * config/arm/ieee754-sf.S (cmpsf2): Likewise.
19493
19494 2009-06-05  Richard Guenther  <rguenther@suse.de>
19495
19496         PR bootstrap/40350
19497         * dwarf2out.c (dwarf2out_begin_function): Mark discriminator
19498         as possibly unused.
19499
19500 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
19501
19502         * config/s390/s390.c (global_not_special_regno_p): New static inline.
19503         (save_gprs): Don't tell unwinder when a global register is saved.
19504         (s390_emit_epilogue): Emit needed epilogue unwind info.
19505
19506 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
19507
19508         * dwarf2out.c (deferred_asm_name): New.
19509         (add_name_and_src_coords_attributes): Defer creation of
19510         DW_AT_MIPS_linkage_name attribute if DECL_ASSEMBLER_NAME was not
19511         computed yet.
19512         (move_linkage_attr): New.
19513         (dwarf2out_finish): Revisit deferrals and emit attributes at the
19514         right place.
19515
19516 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
19517
19518         * tree-nested.c (finalize_nesting_tree_1): Declare the
19519         frame_decl in the binding tree.
19520
19521 2009-06-04  Cary Coutant  <ccoutant@google.com>
19522
19523         * basic-block.h (struct basic_block_def): Add discriminator field.
19524         * dbxout.c (dbxout_source_line): Add new parameter.  Change all
19525         callers.
19526         * debug.c (do_nothing_debug_hooks): Add additional entry.
19527         (debug_nothing_int_charstar_int): New function.
19528         * debug.h (struct gcc_debug_hooks): Add parameter to source_line hook.
19529         (debug_nothing_int_charstar_int): New declaration.
19530         * dwarf2out.c (dwarf2out_source_line): Add new parameter.  Write
19531         discriminator value in .loc directive.
19532         * final.c (last_discriminator): New variable.
19533         (discriminator): New variable.
19534         (final_start_function): Initialize above variables, pass current
19535         discriminator to debug hook.
19536         (notice_source_line): Check for discriminator change.
19537         * gimple-pretty-print.c (dump_bb_header): Print discriminator value.
19538         * sdbout.c (sdbout_source_line): New parameter.
19539         * tree-cfg.c (struct locus_discrim_map): New structure type.
19540         (discriminator_per_locus): New hash table.
19541         (build_gimple_cfg): Allocate and free discriminator hash table.
19542         (make_edges): Call assign_discriminator.
19543         (locus_map_hash): New function.
19544         (locus_map_eq): New function.
19545         (next_discriminator_for_locus): New function.
19546         (same_line_p): New function.
19547         (assign_discriminator): New function.
19548         (make_cond_expr_edges): Call assign_discriminator.
19549         (make_gimple_switch_edges): Likewise.
19550         (first_non_label_stmt): New function.
19551         * vmsdbgout.c (vmsdbgout_source_line): Add new parameter.  Change
19552         all callers.
19553         * xcoffout.c (xcoffout_source_line): Add new parameter.
19554
19555         * configure.ac (gcc_cv_as_discriminator): New configury check for
19556         gas support for discriminator.
19557         * configure: Regenerate.
19558         * config.in: Regenerate.
19559
19560 2009-06-04  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
19561
19562         * config/arm/arm.c (thumb2_legitimate_index_p): Initialize
19563         val after checking for integers.
19564
19565 2009-06-04  Uros Bizjak  <ubizjak@gmail.com>
19566
19567         * config/i386/i386.h (X86_64_MS_REGPARM_MAX): Rename from
19568         X64_REGPARM_MAX.
19569         (REGPARM_MAX): Use X86_64_MS_REGPARM_MAX.
19570         (X86_64_MS_SSE_REGPARM_MAX): Rename from X64_SSE_REGPARM_MAX.
19571         (SSE_REGPARM_MAX): Use X86_64_MS_SSE_REGPARM_MAX.
19572         * config/i386/i386.c: Use X86_64_MS_REGPARM_MAX instead of
19573         X64_REGPARM_MAX.  Use X86_64_MS_SSE_REGPARM_MAX instead of
19574         X64_SSE_REGPARM_MAX.
19575         * config/i386/i386.md: Use X86_64_MS_SSE_REGPARM_MAX instead of
19576         X64_SSE_REGPARM_MAX.
19577
19578 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
19579
19580         * gcc.c (report_times_to_file): New.
19581         (execute): Implement it.
19582         (process_command): Support -time=.
19583         * doc/invoke.texi: Document it.
19584
19585 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
19586
19587         * tree-ssa-live.c (remove_unused_scope_block_p): Keep variables
19588         that have value exprs.
19589
19590 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
19591
19592         * dwarf2asm.c (dw2_force_const_mem): Defer creation of
19593         declarations for constants until...
19594         (dw2_output_indirect_constant_1): ... this point.
19595
19596 2009-06-04  Richard Earnshaw  <rearnsha@arm.com>
19597
19598         PR target/10242
19599         * arm.md (arm_addsi3): Don't try to split an add with an
19600         eliminable register until after reload has completed.
19601
19602 2009-06-03  Ian Lance Taylor  <iant@google.com>
19603
19604         * dummy-checksum.c (executable_checksum): Use EXPORTED_CONST.
19605         * genattrtab.c (write_length_unit_log): Likewise.
19606         * genchecksum.c (dosum): Likewise.
19607         * gengtype.c (write_rtx_next): Likewise.
19608         (finish_root_table, write_roots): Likewise.
19609         * gimple.c (gimple_ops_offset_): Likewise.
19610         * tree-nomudflap.c (gt_ggc_r_gt_tree_mudflap_h): Likewise.
19611         * config/arc/arc.c (arc_attribute_table): Likewise.
19612         * config/arm/arm.c (arm_attribute_table): Likewise.
19613         * config/avr/avr.c (avr_attribute_table): Likewise.
19614         * config/crx/crx.c (crx_attribute_table): Likewise.
19615         * config/m32r/m32r.c (m32r_attribute_table): Likewise.
19616         * config/m68hc11/m68hc11.c (m68hc11_attribute_table): Likewise.
19617         * config/mcore/mcore.c (mcore_attribute_table): Likewise.
19618         * config/rs6000/rs6000.c (rs6000_attribute_table): Likewise.
19619         * config/sh/sh.c (sh_attribute_table): Likewise.
19620         * config/sparc/sparc.c (sparc_attribute_table): Likewise.
19621         * config/spu/spu.c (spu_attribute_table): Likewise.
19622         * config/v850/v850.c (v850_attribute_table): Likewise.
19623
19624         * config/alpha/alpha.c (vms_attribute_table): Make static.
19625         * config/bfin/bfin.c (bfin_attribute_table): Likewise.
19626         * config/h8300/h8300.c (h8300_attribute_table): Likewise.
19627         * config/mips/mips.c (mips_attribute_table): Likewise.
19628
19629         * Makefile.in (dummy-checksum.o): Depend upon $(CONFIG_H) and
19630         $(SYSTEM_H).
19631         (cc1-checksum.o): Likewise.
19632
19633 2009-06-03  Steve Ellcey  <sje@cup.hp.com>
19634
19635         * config/ia64/vect.md (*movv2sf_internal): Handle big endian case.
19636
19637 2009-06-03  Jakub Jelinek  <jakub@redhat.com>
19638
19639         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Return generated
19640         insn if it is changing sp.  Use gen_add3_insn instead of
19641         conditionally gen_addsi3 and gen_adddi3.
19642         (offset_below_red_zone_p): New static inline function.
19643         (rs6000_emit_epilogue): Emit needed epilogue unwind info.
19644         Use gen_add3_insn instead of conditionally gen_addsi3 and gen_adddi3.
19645         * config/rs6000/ppc-asm.h: Include auto-host.h.
19646         (CFI_STARTPROC, CFI_ENDPROC, CFI_DEF_CFA_REGISTER, CFI_OFFSET,
19647         CFI_RESTORE): Define.
19648         * config/rs6000/crtresxgpr.asm: Add unwind info.
19649         * config/rs6000/crtresxfpr.asm: Likewise.
19650         * config/rs6000/crtresgpr.asm: Likewise.
19651         * config/rs6000/crtresfpr.asm: Likewise.
19652         * config/rs6000/crtsavgpr.asm: Likewise.
19653         * config/rs6000/crtsavfpr.asm: Likewise.
19654
19655         * dwarf2out.c (output_cfi_directive): Pass 1 instead of 0 to second
19656         argument of DWARF2_FRAME_REG_OUT macros.
19657
19658 2009-06-03  Julian Brown  <julian@codesourcery.com>
19659
19660         * config/arm/arm.c (arm_hard_regno_mode_ok): Permit values of four
19661         words or less (including TImode) in core registers.
19662
19663 2009-06-03  Richard Guenther  <rguenther@suse.de>
19664
19665         PR middle-end/40328
19666         * fold-const.c (fold_convert): Fold the build COMPLEX_EXPR.
19667
19668 2009-06-03  Andrey Belevantsev  <abel@ispras.ru>
19669
19670         * statistics.c (statistics_counter_event): Do not record event
19671         in pass dump if its number == -1.
19672         (curr_statistics_hash): Add assert that we never get passes
19673         with static number == -1.
19674
19675 2009-06-03  Richard Guenther  <rguenther@suse.de>
19676             Andrey Belevantsev  <abel@ispras.ru>
19677
19678         * cfgexpand.c (discover_nonconstant_array_refs_r): Make only
19679         non-BLKmode arrays addressable.
19680
19681 2009-06-03  Maxim Kuvyrkov  <maxim@codesourcery.com>
19682
19683         * config/m68k/linux.h (HAVE_GAS_BALIGN_AND_P2ALIGN): Move to ...
19684         * config/m68k/m68k.h: ... here.
19685
19686 2009-06-03  Martin Jambor  <mjambor@suse.cz>
19687
19688         PR tree-optimization/40323
19689         * ipa-prop.c (get_ssa_def_if_simple_copy): Break if not single
19690         assignment.
19691
19692 2009-06-03  Richard Guenther  <rguenther@suse.de>
19693
19694         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
19695         consistently.
19696
19697 2009-06-03  Shujing Zhao  <pearly.zhao@oracle.com>
19698
19699         * config/sh/predicates.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
19700         JUMP_P, CALL_P, NONJUMP_INSN_P, NOTE_P, BARRIER_P and
19701         JUMP_TABLE_DATA_P where applicable.
19702         * config/sh/sh.c: Ditto.
19703         * config/sh/sh.h: Ditto.
19704         * config/sh/sh.md: Ditto.
19705         * config/sh/symbian.c: Ditto.
19706
19707 2009-06-03  Uros Bizjak  <ubizjak@gmail.com>
19708
19709         * config/i386/driver-i386.c (describe_cache): Optimize
19710         concatenation of strings.  Use snprintf instead of sprintf.
19711         (host_detect_local_cpu): Ditto.  Ignore -march and -mtune for native
19712         target when not compiling with GCC.
19713
19714 2009-06-02  Kaz Kojima  <kkojima@gcc.gnu.org>
19715
19716         * config/sh/sh.c: Revert last change.
19717         (sh_expand_epilogue): Emit a blockage insn before the frame
19718         pointer adjustment unconditionally.
19719
19720 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
19721
19722         * config/pa/pa-hpux.h (LINK_SPEC): Remove "%<fwhole-program".
19723         * config/pa/pa-hpux10.h (LINK_SPEC): Likewise.
19724         * config/pa/pa-hpux11.h (LINK_SPEC): Likewise.
19725         * gcc.c (set_collect_gcc_options): Don't add -fwhole-program
19726         to COLLECT_GCC_OPTIONS.
19727
19728 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
19729
19730         * collect2.c (target_system_root): New variable.
19731         (main): Handle --sysroot=.
19732         (ignore_library): Strip the sysroot from the library path.
19733
19734 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
19735
19736         * Makefile.in (COLLECT2_OBJS): Add collect2-aix.o.
19737         (collect2.o): Depend on collect2-aix.h.
19738         (collect2-aix.o): New rule.
19739         * collect2-aix.h: New file.
19740         * collect2-aix.c: Likewise.
19741         * collect2.c: Include collect2-aix.h.  Don't undefine
19742         OBJECT_FORMAT_COFF if CROSS_AIX_SUPPORT is defined.
19743         Guard native includes with #ifndef CROSS_DIRECTORY_STRUCTURE.
19744         Use TARGET_AIX_VERSION instead of _AIX51.
19745         * config/rs6000/aix43.h (TARGET_AIX_VERSION): Define.
19746         * config/rs6000/aix51.h (TARGET_AIX_VERSION): Likewise.
19747         * config/rs6000/aix52.h (TARGET_AIX_VERSION): Likewise.
19748         * config/rs6000/aix53.h (TARGET_AIX_VERSION): Likewise.
19749         * config/rs6000/aix61.h (TARGET_AIX_VERSION): Likewise.
19750
19751 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
19752
19753         * collect2.c (ignore_library): Avoid premature post-increment
19754         and null deference.
19755
19756 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
19757
19758         * Makefile.in (libgcc.mvars): Add TARGET_SYSTEM_ROOT.
19759         * config/rs6000/aix.h (LINK_SYSCALLS_SPEC): Add %R to the
19760         !CROSS_DIRECTORY_STRUCTURE alternative and use it for
19761         CROSS_DIRECTORY_STRUCTURE too.
19762         (LINK_LIBG_SPEC): Likewise.
19763         (LIB_SPEC): Add %R to sysroot paths.
19764         * config/rs6000/aix43.h (CPP_SPEC): Add %R to sysroot paths.
19765         (CPLUSPLUS_CPP_SPEC, LIB_SPEC): Likewise.
19766         * config/rs6000/aix51.h: As for aix43.h.
19767         * config/rs6000/aix52.h: Likewise.
19768         * config/rs6000/aix53.h: Likewise.
19769         * config/rs6000/aix61.h: Likewise.
19770         * config/rs6000/t-aix52 (SHLIB_LINK): Add $(TARGET_SYSTEM_ROOT)
19771         to the beginning of sysroot paths.
19772
19773 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
19774
19775         * print_rtl (print_rtx): Don't print modes in EXPR_LISTs and
19776         INSN_LISTs that are out of the REG_NOTE range.
19777
19778 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
19779
19780         * loop-unroll.c (struct iv_to_split): Add pointer to next.
19781         (struct var_to_expand): Likewise.
19782         (struct opt_info): Add head and tail for linked lists of the above.
19783         (analyze_insn_to_expand_var): Initialize next.
19784         (analyze_iv_to_split_insn): Likewise.
19785         (analyze_insns_in_loop): Create linked lists.
19786         (allocate_basic_variable): Simplify for use without hash table.
19787         (insert_var_expansion_initialization): Likewise, make it type-safer.
19788         (combine_var_copies_in_loop_exit): Likewise.
19789         (apply_opt_in_copies): Walk lists rather than hash tables.
19790         (release_var_copies): Simplified and inlined by hand into...
19791         (free_opt_info): ... this function.
19792
19793 2009-06-02  Richard Guenther  <rguenther@suse.de>
19794
19795         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
19796         for field decls.
19797
19798 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
19799
19800         * cfgexpand.c (gimple_expand_cfg): Discard the source location
19801         only for builtins that are not overridden.
19802
19803 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
19804
19805         * gengtype.c (adjust_field_rtx_def): Add NOTE_INSN_DELETED_LABEL's
19806         label string.
19807
19808 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
19809
19810         * df-core.c (df_ref_debug): Honor -fdump-noaddr.
19811
19812 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
19813
19814         * combine.c (move_deaths): Compare LUIDs within the same BB only.
19815
19816 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
19817
19818         * common.opt (fdump-unnumbered-links): New.
19819         * doc/invoke.texi (-fdump-unnumbered-links): Document it.
19820         * print-rtl.c (flag_dump_unnumbered_links): New.
19821         (print_rtx): Test it.
19822
19823 2009-06-02  Richard Earnshaw  <rearnsha@arm.com>
19824
19825         * arm.c (arm_get_frame_offsets): Prefer using r3 for padding a
19826         push/pop multiple to 8-byte alignment.
19827
19828 2009-06-01  Jakub Jelinek  <jakub@redhat.com>
19829
19830         * config/i386/i386.c (queued_cfa_restores): New static variable.
19831         (ix86_add_cfa_restore_note, ix86_add_queued_cfa_restore_notes): New
19832         functions.
19833         (pro_epilogue_adjust_stack): Call ix86_add_queued_cfa_restore_notes.
19834         (ix86_emit_restore_reg_using_pop): Add RED_OFFSET argument.
19835         Set RTX_FRAME_RELATED_P immediately after adding a REG_CFA_* note.
19836         Call ix86_add_cfa_restore_note instead of adding REG_CFA_OFFSET
19837         note unconditionally.
19838         (ix86_emit_restore_regs_using_mov): Likewise.
19839         (ix86_emit_restore_sse_regs_using_mov): Likewise.
19840         (ix86_emit_restore_regs_using_pop): Add RED_OFFSET argument, pass
19841         it through to ix86_emit_restore_reg_using_pop.
19842         (ix86_emit_leave): Add RED_OFFSET argument.  Call
19843         ix86_add_queued_cfa_restore_notes.  Call ix86_add_cfa_restore_note
19844         instead of adding REG_CFA_OFFSET note unconditionally.
19845         (ix86_expand_epilogue): Compute RED_OFFSET, pass it down to
19846         the above functions.  Call ix86_add_queued_cfa_restore_notes when
19847         needed.
19848
19849         * dwarf2out.c (dwarf2out_cfi_label): Add FORCE argument, if true,
19850         force output of the label even for dwarf2out_do_cfi_asm.
19851         (add_fde_cfi): If -g2 and above and cfi might change CFA,
19852         force creation of CFI label and chain DW_CFA_set_loc jumping to it
19853         for convert_cfa_to_fb_loc_list.  Adjust other dwarf2out_cfi_label
19854         caller.
19855         (dwarf2out_stack_adjust, dwarf2out_frame_debug,
19856         dwarf2out_begin_epilogue, dwarf2out_frame_debug_restore_state): Adjust
19857         dwarf2out_cfi_label callers.
19858         * tree.h (dwarf2out_cfi_label): Adjust prototype.
19859         * config/arm/arm.c (thumb_pushpop, thumb1_output_function_prologue):
19860         Adjust dwarf2out_cfi_label callers.
19861         * config/vax/vax.c (vax_output_function_prologue): Likewise.
19862
19863         * config/i386/i386.h (struct machine_cfa_state,
19864         struct machine_function): Guard with ifndef USED_FOR_TARGET
19865         instead of not IN_LIBGCC2 and not in IN_TARGET_LIBS.
19866
19867         PR other/40024
19868         * emutls.c (__emutls_get_address): Change arr->size to mean number
19869         of allocated arr->data entries instead of # of slots + 1.
19870
19871         PR middle-end/40316
19872         * recog.c (peep2_reinit_state): New function.
19873         (peephole2_init_state): Use it at the end of a basic block and also
19874         when seeing a RTX_FRAME_RELATED_P insn.
19875
19876 2009-06-01  Steve Ellcey  <sje@cup.hp.com>
19877
19878         * ia64.md (floatdirf2, fix_truncrfdi, floatunsdirf,
19879         fixuns_truncrfdi2): New.
19880         (fix_truncxfdi2_alts, fixuns_truncxfdi2_alts,
19881         *nmaddsf4_alts, *nmadddf4_alts, *nmadddf4_truncsf_alts,
19882         *mulxf3_alts, *mulxf3_truncsf_alts, *mulxf3_truncdf_alts,
19883         *maddxf4_alts, *maddxf4_alts_truncsf, *maddxf4_alts_truncdf,
19884         *nmaddxf4_alts, *nmaddxf4_truncsf_alts, *nmaddxf4_truncdf_alts,
19885         *recip_approx): Remove.
19886         (divsi3 modsi3, udivsi3, umodsi3, divsi3_internal, divdi3,
19887         moddi3, udivdi3, umoddi3, divdi3_internal_lat, divdi3_internal_thr,
19888         divsf3, sqrtsf2, divdf3, sqrtdf2, divxf3, sqrtxf2): Modify and
19889         move to div.md.
19890         * div.md (fix_truncrfdi2_alts, fixuns_truncrfdi2_alt,
19891         setf_exp_rf): New.
19892
19893 2009-06-01  Ian Lance Taylor  <iant@google.com>
19894
19895         * attribs.c (register_attribute): Use CONST_CAST.
19896         * collect2.c (main): Use CONST_CAST2.
19897         (scan_prog_file): Likewise.
19898         * gcc.c (process_command, main): Likewise.
19899         * toplev.c (toplev_main): Likewise.
19900
19901         * c-typeck.c (handle_warn_cast_qual): New static function,
19902         partially broken out of build_c_cast.
19903         (build_c_cast): Call handle_warn_cast_qual.
19904         * doc/invoke.texi (Warning Options): Document new effect of
19905         -Wcast-qual.
19906
19907 2009-06-01  Aldy Hernandez  <aldyh@redhat.com>
19908
19909         * diagnostic.c (diagnostic_build_prefix): Always print columns.
19910         (diagnostic_report_current_module): Print columns.
19911         * common.opt (flag_show_column): Enable by default.
19912
19913 2009-06-01  Luis Machado  <luisgpm@br.ibm.com>
19914
19915         * alias.c (find_base_term): Check for NULL term before returning.
19916
19917 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
19918
19919         Revert due to PR40320:
19920         2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
19921         * calls.c (emit_library_call_value_1): Don't force_operand for move
19922         and push insns.
19923
19924 2009-06-01  Olivier Hainque  <hainque@adacore.com>
19925             Eric Botcazou  <ebotcazou@adacore.com>
19926
19927         * tree.h (CONSTRUCTOR_BITFIELD_P): True if NODE, a FIELD_DECL, is
19928         to be processed as a bitfield for constructor output purposes.
19929         * output.h (initializer_constant_valid_for_bitfield_p): Declare
19930         new function.
19931         * varasm.c (oc_local_state): New type, output_constructor
19932         local state to support communication with helpers.
19933         (oc_outer_state): New type, output_constructor outer state of
19934         relevance in recursive calls.
19935         (output_constructor_array_range): New output_constructor helper,
19936         extracted code for an array range element.
19937         (output_constructor_regular_field): New output_constructor helper,
19938         extracted code for an element that is not a bitfield.
19939         (output_constructor_bitfield): New output_constructor helper,
19940         extracted code for a bitfield element.  Accept an OUTER state
19941         argument for recursive processing.  Recurse on record or array
19942         CONSTRUCTOR values, possibly past noop conversions.
19943         (initializer_constant_valid_for_bitfield_p): New predicate.  Whether
19944         VALUE is a valid constant-valued expression for use in a static
19945         bit-field initializer.
19946         (output_constructor): Rework to use helpers.  Accept and honor an
19947         OUTER state argument for recursive calls.  Return total size.  Be
19948         prepared for nested constructors initializing bitfields.
19949         (output_constant): Feed OUTER in calls to output_constructor.
19950
19951 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
19952
19953         * calls.c (emit_library_call_value_1): Don't force_operand for move
19954         and push insns.
19955
19956 2009-06-01  Nick Clifton  <nickc@redhat.com>
19957
19958         * doc/invoke.texi (IA-64 Options): Fix typo.
19959
19960 2009-06-01  Ira Rosen  <irar@il.ibm.com>
19961
19962         PR tree-optimization/39129
19963         * tree-vect-loop-manip.c (conservative_cost_threshold): Change the
19964         printed message.
19965         (vect_do_peeling_for_loop_bound): Use
19966         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
19967         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
19968         (vect_loop_versioning): Likewise.
19969         (vect_create_cond_for_alias_checks): Fix indentation.
19970         * tree-vectorizer.h (struct _loop_vec_info): Fix indentation of the
19971         macros.
19972         (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT): Define.
19973         (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Likewise.
19974         * tree-vect-loop.c (vect_analyze_loop_form): Change "too many BBs" to
19975         "control flow in loop".
19976         (vect_estimate_min_profitable_iters): Use
19977         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
19978         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
19979         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
19980         (vect_create_data_ref_ptr): Don't mention array dimension in printing.
19981         * tree-vect-stmts.c (vectorizable_store): Replace the check that the
19982         statement belongs to a group of strided accesses with the exact code
19983         check.
19984         (vectorizable_load): Likewise.
19985         * tree-vect-slp.c (vect_analyze_slp_instance): Spell out "basic block".
19986         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
19987
19988 2009-06-01  Gerald Pfeifer  <gerald@pfeifer.com>
19989
19990         * config/freebsd-stdint.h: New file.
19991         * config.gcc (*-*-freebsd): Set use_gcc_stdint=wrap.
19992         Add freebsd-stdint.h to tm_file.
19993
19994 2009-06-01  Richard Earnshaw  <rearnsha@arm.com>
19995
19996         * arm/thumb2.md (thumb2_zero_extendhidi2): New insn and split.
19997         (thumb2_extendhidi2): Likewise.
19998
19999 2009-05-31  Ian Lance Taylor  <iant@google.com>
20000
20001         * regstat.c (regstat_n_sets_and_refs): Remove duplicate definition.
20002
20003 2009-05-31  Ian Lance Taylor  <iant@google.com>
20004
20005         * Makefile.in (except.o): Depend upon gt-except.h, not gt-$(EXCEPT_H).
20006         (ipa-cp.o): Depend upon $(FIBHEAP_H) and $(PARAMS_H).
20007         (ipa-reference.o): Depend upon gt-ipa-reference.h.
20008
20009 2009-05-31  Jason Merrill  <jason@redhat.com>
20010
20011         * tree-pretty-print.c (print_call_name): Take the callee, not the
20012         call itself.  Make non-static.  Use dump_function_name for functions.
20013         (dump_generic_node): Adjust.
20014         * diagnostic.h: Declare print_call_name.
20015         * gimple-pretty-print.c (dump_gimple_call): Use it.
20016
20017 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
20018
20019         * config/sh/sh.md (ashldi3_std): New define_expand.
20020         (ashldi3): Use it.
20021
20022 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
20023
20024         PR target/40313
20025         * config/sh/sh.c: Include debug.h.
20026         (sh_expand_epilogue): Emit a blockage insn before the frame
20027         pointer adjustment also when dwarf2out_do_frame returns true.
20028
20029 2009-05-31  Richard Earnshaw  <rearnsha@arm.com>
20030
20031         * arm/thumb2.md (thumb2_extendsidi2): Add a split sub-pattern.
20032         (thumb2_extendqidi2): New pattern.
20033
20034 2009-05-31  Ira Rosen  <irar@il.ibm.com>
20035
20036         * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1): Don't
20037         mark phis for renaming.
20038         * tree-vectorizer.c (vect_memsyms_to_rename): Remove.
20039         (vectorize_loops): Don't allocate and free vect_memsyms_to_rename.
20040         Call mark_sym_for_renaming.
20041         * tree-vectorizer.h (vect_memsyms_to_rename): Remove.
20042         * tree-vect-loop.c (vect_transform_loop): Remove
20043         vect_memsyms_to_rename initialization and a call to
20044         mark_set_for_renaming.
20045
20046 2009-05-31  Jakub Jelinek  <jakub@redhat.com>
20047
20048         PR middle-end/40304
20049         * config/i386/i386.c (pro_epilogue_adjust_stack): Mark insns
20050         frame related even if !set_cfa && style < 0.
20051
20052 2009-05-30  Kai Tietz  <kai.tietz@onevision.com>
20053
20054         * config/i386/mingw-tls.c: New file.
20055         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Add mingw-tls.c file.
20056         * gthr-win32.h (MINGW32_SUPPORTS_MT_EH): Define it for targets
20057         defining _WIN32 but not __CYGWIN__.
20058
20059 2009-05-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
20060
20061         * configure.ac: Add MPC support.
20062
20063         * config.in, configure: Regenerate.
20064
20065 2009-05-29  Richard Henderson  <rth@redhat.com>
20066
20067         * cfgcleanup.c (try_crossjump_to_edge): Only skip past
20068         NOTE_INSN_BASIC_BLOCK.
20069         * cfglayout.c (duplicate_insn_chain): Copy epilogue insn marks.
20070         Duplicate NOTE_INSN_EPILOGUE_BEG notes.
20071         * cfgrtl.c (can_delete_note_p): Allow NOTE_INSN_EPILOGUE_BEG
20072         to be deleted.
20073         * dwarf2out.c (struct cfa_loc): Change indirect field to bitfield,
20074         add in_use field.
20075         (add_cfi): Disable check redefining cfa away from drap.
20076         (lookup_cfa_1): Add remember argument; handle remember/restore.
20077         (lookup_cfa): Pass remember argument.
20078         (cfa_remember): New.
20079         (compute_barrier_args_size_1): Remove sibcall check.
20080         (dwarf2out_frame_debug_def_cfa): New.
20081         (dwarf2out_frame_debug_adjust_cfa): New.
20082         (dwarf2out_frame_debug_cfa_offset): New.
20083         (dwarf2out_frame_debug_cfa_register): New.
20084         (dwarf2out_frame_debug_cfa_restore): New.
20085         (dwarf2out_frame_debug): Handle REG_CFA_* notes.
20086         (dwarf2out_begin_epilogue): New.
20087         (dwarf2out_frame_debug_restore_state): New.
20088         (dw_cfi_oprnd1_desc): Handle DW_CFA_remember_state,
20089         DW_CFA_restore_state.
20090         (output_cfi_directive): Likewise.
20091         (convert_cfa_to_fb_loc_list): Likewise.
20092         (dw_cfi_oprnd1_desc): Handle DW_CFA_restore.
20093         * dwarf2out.h: Update.
20094         * emit-rtl.c (try_split): Don't split RTX_FRAME_RELATED_P.
20095         (copy_insn_1): Early out for null.
20096         * final.c (final_scan_insn): Call dwarf2out_begin_epilogue
20097         and dwarf2out_frame_debug_restore_state.
20098         * function.c (prologue, epilogue, sibcall_epilogue): Remove.
20099         (prologue_insn_hash, epilogue_insn_hash): New.
20100         (free_after_compilation): Adjust freeing accordingly.
20101         (record_insns): Create hash table if needed; push insns into
20102         hash instead of array.
20103         (maybe_copy_epilogue_insn): New.
20104         (contains): Search hash table instead of array.
20105         (sibcall_epilogue_contains): Remove.
20106         (thread_prologue_and_epilogue_insns): Split eh_return insns
20107         and mark them as epilogues.
20108         (reposition_prologue_and_epilogue_notes): Rewrite epilogue
20109         scanning in terms of basic blocks.
20110         * insn-notes.def (CFA_RESTORE_STATE): New.
20111         * jump.c (returnjump_p_1): Accept EH_RETURN.
20112         (eh_returnjump_p_1, eh_returnjump_p): New.
20113         * reg-notes.def (CFA_DEF_CFA, CFA_ADJUST_CFA, CFA_OFFSET,
20114         CFA_REGISTER, CFA_RESTORE): New.
20115         * rtl.def (EH_RETURN): New.
20116         * rtl.h (eh_returnjump_p, maybe_copy_epilogue_insn): Declare.
20117
20118         * config/bfin/bfin.md (UNSPEC_VOLATILE_EH_RETURN): Remove.
20119         (eh_return_internal): Use eh_return rtx; split w/ epilogue.
20120
20121         * config/i386/i386.c (gen_push): Update cfa state.
20122         (pro_epilogue_adjust_stack): Add set_cfa argument.  When true,
20123         add a CFA_ADJUST_CFA note.
20124         (ix86_dwarf_handle_frame_unspec): Remove.
20125         (ix86_expand_prologue): Update cfa state.
20126         (ix86_emit_restore_reg_using_pop): New.
20127         (ix86_emit_restore_regs_using_pop): New.
20128         (ix86_emit_leave): New.
20129         (ix86_emit_restore_regs_using_mov): Add CFA_RESTORE notes.
20130         (ix86_expand_epilogue): Add notes for unwinding the epilogue.
20131         * config/i386/i386.h (struct machine_cfa_state): New.
20132         (ix86_cfa_state): New.
20133         * config/i386/i386.md (UNSPEC_EH_RETURN): Remove.
20134         (eh_return_internal): Merge from eh_return_<mode>,
20135         use eh_return rtx, split w/ epilogue.
20136
20137 2009-05-29  Ian Lance Taylor  <iant@google.com>
20138
20139         * builtins.c (validate_gimple_arglist): Don't use va_arg with
20140         enum type.
20141         * calls.c (emit_library_call_value_1): Likewise.
20142
20143         * c-typeck.c (c_build_va_arg): New function.
20144         * c-tree.h (c_build_va_arg): Declare.
20145         * c-parser.c (c_parser_postfix_expression): Call c_build_va_arg
20146         instead of build_va_arg.
20147
20148 2009-05-29  Eric Botcazou  <ebotcazou@adacore.com>
20149
20150         * tree-ssa-loop-ivopts.c (strip_offset_1) <MULT_EXPR>: New case.
20151         (force_expr_to_var_cost) <NEGATE_EXPR>: Likewise.
20152         (ptr_difference_cost): Use affine combinations to compute it.
20153         (difference_cost): Likewise.
20154         (get_computation_cost_at): Compute more accurate cost for addresses
20155         if the ratio is a multiplier allowed in addresses.
20156         For non-addresses, consider that an additional offset or symbol is
20157         added only once.
20158
20159 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
20160
20161         * config/i386/i386.c (ix86_decompose_address): Avoid useless
20162         0 displacement.  Add 0 displacement if base is %[er]bp or %r13.
20163
20164         * config/i386/i386.md (prefix_data16, prefix_rep): Set to 0 for
20165         TYPE_SSE{MULADD,4ARG,IADD1,CVT1} by default.
20166         (prefix_rex): For UNIT_MMX don't imply the prefix by default
20167         if MODE_DI.
20168         (prefix_extra): Default to 2 for TYPE_SSE{MULADD,4ARG} and
20169         to 1 for TYPE_SSE{IADD1,CVT1}.
20170         (prefix_vex_imm8): Removed.
20171         (length_vex): Only pass 1 as second argument to
20172         ix86_attr_length_vex_default if prefix_extra is 0.
20173         (modrm): For TYPE_INCDEC only set to 0 if not TARGET_64BIT.
20174         (length): For prefix vex computation use length_immediate
20175         attribute instead of prefix_vex_imm8.
20176         (cmpqi_ext_3_insn, cmpqi_ext_3_insn_rex64,
20177         addqi_ext_1, addqi_ext_1_rex64, *testqi_ext_0, andqi_ext_0,
20178         *andqi_ext_0_cc, *iorqi_ext_0, *xorqi_ext_0, *xorqi_cc_ext_1,
20179         *xorqi_cc_ext_1_rex64): Override modrm attribute to 1.
20180         (extendsidi2_rex64, extendhidi2, extendqidi2, extendhisi2,
20181         *extendhisi2_zext, extendqihi2, extendqisi2, *extendqisi2_zext): Emit
20182         a space in between the operands.
20183         (*anddi_1_rex64, *andsi_1): Likewise.  Override prefix_rex to 1
20184         if one operand is 0xff and the other one si, di, bp or sp.
20185         (*andhi_1): Override prefix_rex to 1 if one operand is 0xff and the
20186         other one si, di, bp or sp.
20187         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Add mode attribute.
20188         (*ffssi_1, *ffsdi_1, ctzsi2, ctzdi2): Add
20189         type and mode attributes.
20190         (*bsr, *bsr_rex64, *bsrhi): Add type attribute.
20191         (*cmpfp_i_mixed, *cmpfp_iu_mixed): For TYPE_SSECOMI, clear
20192         prefix_rep attribute and set prefix_data16 attribute iff MODE_DF.
20193         (*cmpfp_i_sse, *cmpfp_iu_sse): Clear prefix_rep attribute and set
20194         prefix_data16 attribute iff MODE_DF.
20195         (*movsi_1): For TYPE_SSEMOV MODE_SI set prefix_data16 attribute.
20196         (fix_trunc<mode>di_sse): Set prefix_rex attribute.
20197         (*adddi_4_rex64, *addsi_4): Use const128_operand instead of
20198         constm128_operand in length_immediate computation.
20199         (*addhi_4): Likewise.  Fix mode attribute to MODE_HI.
20200         (anddi_1_rex64): Use movzbl/movzwl instead of movzbq/movzwq.
20201         (*avx_ashlti3, sse2_ashlti3, *avx_lshrti3, sse2_lshrti3): Set
20202         length_immediate attribute to 1.
20203         (x86_fnstsw_1, x86_fnstcw_1, x86_fldcw_1): Fix length attribute.
20204         (*movdi_1_rex64): Override prefix_rex or prefix_data16 attributes
20205         for certain alternatives.
20206         (*movdf_nointeger, *movdf_integer_rex64, *movdf_integer): Override
20207         prefix_data16 attribute if MODE_V1DF.
20208         (*avx_setcc<mode>, *sse_setcc<mode>, *sse5_setcc<mode>): Set
20209         length_immediate to 1.
20210         (set_got_rex64, set_rip_rex64): Remove length attribute, set
20211         length_address to 4, set mode attribute to MODE_DI.
20212         (set_got_offset_rex64): Likewise.  Set length_immediate to 0.
20213         (fxam<mode>2_i387): Set length attribute to 4.
20214         (*prefetch_sse, *prefetch_sse_rex, *prefetch_3dnow,
20215         *prefetch_3dnow_rex): Override length_address attribute.
20216         (sse4_2_crc32<mode>): Override prefix_data16 and prefix_rex
20217         attributes.
20218         * config/i386/predicates.md (ext_QIreg_nomode_operand): New predicate.
20219         (constm128_operand): Removed.
20220         * config/i386/i386.c (memory_address_length): For
20221         disp && !index && !base in 64-bit mode account for SIB byte if
20222         print_operand_address can't optimize disp32 into disp32(%rip)
20223         and UNSPEC doesn't imply (%rip) addressing.  Add 1 to length
20224         for fs: or gs: segment.
20225         (ix86_attr_length_immediate_default): When checking if shortform
20226         is possible, truncate immediate to the length of the non-shortened
20227         immediate.
20228         (ix86_attr_length_address_default): Ignore MEM_P operands
20229         with X constraint.
20230         (ix86_attr_length_vex_default): Only check for DImode on
20231         GENERAL_REG_P operands.
20232         * config/i386/sse.md (<sse>_comi, <sse>_ucomi): Clear
20233         prefix_rep attribute, set prefix_data16 attribute iff MODE_DF.
20234         (sse_cvttps2pi): Clear prefix_rep attribute.
20235         (sse2_cvttps2dq, *sse2_cvtpd2dq, sse2_cvtps2pd): Clear prefix_data16
20236         attribute.
20237         (*sse2_cvttpd2dq): Don't clear prefix_rep attribute.
20238         (*avx_ashr<mode>3, ashr<mode>3, *avx_lshr<mode>3, lshr<mode>3,
20239         *avx_ashl<mode>3, ashl<mode>3): Set length_immediate attribute to 1
20240         iff operand 2 is const_int_operand.
20241         (*vec_dupv4si, avx_shufpd256_1, *avx_shufpd_<mode>,
20242         sse2_shufpd_<mode>): Set length_immediate attribute to 1.
20243         (sse2_pshufd_1): Likewise.  Set prefix attribute to maybe_vex
20244         instead of vex.
20245         (sse2_pshuflw_1, sse2_pshufhw_1): Set length_immediate to 1 and clear
20246         prefix_data16.
20247         (sse2_unpckhpd, sse2_unpcklpd, sse2_storehpd, *vec_concatv2df): Set
20248         prefix_data16 attribute for movlpd and movhpd instructions.
20249         (sse2_loadhpd, sse2_loadlpd, sse2_movsd): Likewise.  Override
20250         length_immediate for shufpd instruction.
20251         (sse2_movntsi, sse3_lddqu): Clear prefix_data16 attribute.
20252         (avx_cmpp<avxmodesuffixf2c><mode>3,
20253         avx_cmps<ssemodesuffixf2c><mode>3, *avx_maskcmp<mode>3,
20254         <sse>_maskcmp<mode>3, <sse>_vmmaskcmp<mode>3,
20255         avx_shufps256_1, *avx_shufps_<mode>, sse_shufps_<mode>,
20256         *vec_dupv4sf_avx, *vec_dupv4sf): Set length_immediate attribute to 1.
20257         (*avx_cvtsi2ssq, *avx_cvtsi2sdq): Set length_vex attribute to 4.
20258         (sse_cvtsi2ssq, sse2_cvtsi2sdq): Set prefix_rex attribute to 1.
20259         (sse2_cvtpi2pd, sse_loadlps, sse2_storelpd): Override
20260         prefix_data16 attribute for the first alternative to 1.
20261         (*avx_loadlps): Override length_immediate for the first alternative.
20262         (*vec_concatv2sf_avx): Override length_immediate and prefix_extra
20263         attributes for second alternative.
20264         (*vec_concatv2sf_sse4_1): Override length_immediate and
20265         prefix_data16 attributes for second alternative.
20266         (*vec_setv4sf_avx, *avx_insertps, vec_extract_lo_<mode>,
20267         vec_extract_hi_<mode>, vec_extract_lo_v16hi,
20268         vec_extract_hi_v16hi, vec_extract_lo_v32qi,
20269         vec_extract_hi_v32qi): Set prefix_extra and length_immediate to 1.
20270         (*vec_setv4sf_sse4_1, sse4_1_insertps, *sse4_1_extractps): Set
20271         prefix_data16 and length_immediate to 1.
20272         (*avx_mulv2siv2di3, *avx_mulv4si3, sse4_2_gtv2di3): Set prefix_extra
20273         to 1.
20274         (*avx_<code><mode>3, *avx_eq<mode>3, *avx_gt<mode>3): Set
20275         prefix_extra attribute for variants that don't have 0f prefix alone.
20276         (*avx_pinsr<ssevecsize>): Likewise.  Set length_immediate to 1.
20277         (*sse4_1_pinsrb, *sse2_pinsrw, *sse4_1_pinsrd, *sse4_1_pextrb,
20278         *sse4_1_pextrb_memory, *sse2_pextrw, *sse4_1_pextrw_memory,
20279         *sse4_1_pextrd): Set length_immediate to 1.
20280         (*sse4_1_pinsrd): Likewise.  Set prefix_extra to 1.
20281         (*sse4_1_pinsrq, *sse4_1_pextrq): Set prefix_rex and length_immediate
20282         to 1.
20283         (*vec_extractv2di_1_rex64_avx, *vec_extractv2di_1_rex64,
20284         *vec_extractv2di_1_avx, *vec_extractv2di_1_sse2): Override
20285         length_immediate to 1 for second alternative.
20286         (*vec_concatv2si_avx, *vec_concatv2di_rex64_avx): Override
20287         prefix_extra and length_immediate attributes for the first
20288         alternative.
20289         (vec_concatv2si_sse4_1): Override length_immediate to 1 for the
20290         first alternative.
20291         (*vec_concatv2di_rex64_sse4_1): Likewise.  Override prefix_rex
20292         to 1 for the first and third alternative.
20293         (*vec_concatv2di_rex64_sse): Override prefix_rex to 1 for the second
20294         alternative.
20295         (*sse2_maskmovdqu, *sse2_maskmovdqu_rex64): Override length_vex
20296         attribute.
20297         (*sse_sfence, sse2_mfence, sse2_lfence): Override length_address
20298         attribute to 0.
20299         (*avx_phaddwv8hi3, *avx_phadddv4si3, *avx_phaddswv8hi3,
20300         *avx_phsubwv8hi3, *avx_phsubdv4si3, *avx_phsubswv8hi,
20301         *avx_pmaddubsw128, *avx_pmulhrswv8hi3, *avx_pshufbv16qi3,
20302         *avx_psign<mode>3): Set prefix_extra attribute to 1.
20303         (ssse3_phaddwv4hi3, ssse3_phadddv2si3, ssse3_phaddswv4hi3,
20304         ssse3_phsubwv4hi3, ssse3_phsubdv2si3, ssse3_phsubswv4hi3,
20305         ssse3_pmaddubsw, *ssse3_pmulhrswv4hi, ssse3_pshufbv8qi3,
20306         ssse3_psign<mode>3): Override prefix_rex attribute.
20307         (*avx_palignrti): Override prefix_extra and length_immediate to 1.
20308         (ssse3_palignrti): Override length_immediate to 1.
20309         (ssse3_palignrdi): Override length_immediate to 1, override
20310         prefix_rex attribute.
20311         (abs<mode>2): Override prefix_rep to 0, override prefix_rex attribute.
20312         (sse4a_extrqi): Override length_immediate to 2.
20313         (sse4a_insertqi): Likewise.  Override prefix_data16 to 0.
20314         (sse4a_insertq): Override prefix_data16 to 0.
20315         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>,
20316         avx_blendvp<avxmodesuffixf2c><avxmodesuffix>,
20317         avx_dpp<avxmodesuffixf2c><avxmodesuffix>, *avx_mpsadbw,
20318         *avx_pblendvb, *avx_pblendw, avx_roundp<avxmodesuffixf2c>256,
20319         avx_rounds<avxmodesuffixf2c>256): Override prefix_extra
20320         and length_immediate to 1.
20321         (sse4_1_blendp<ssemodesuffixf2c>, sse4_1_dpp<ssemodesuffixf2c>,
20322         sse4_2_pcmpestr, sse4_2_pcmpestri, sse4_2_pcmpestrm,
20323         sse4_2_pcmpestr_cconly, sse4_2_pcmpistr, sse4_2_pcmpistri,
20324         sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): Override prefix_data16
20325         and length_immediate to 1.
20326         (sse4_1_blendvp<ssemodesuffixf2c>): Override prefix_data16 to 1.
20327         (sse4_1_mpsadbw, sse4_1_pblendw): Override length_immediate to 1.
20328         (*avx_packusdw, avx_vtestp<avxmodesuffixf2c><avxmodesuffix>,
20329         avx_ptest256): Override prefix_extra to 1.
20330         (sse4_1_roundp<ssemodesuffixf2c>, sse4_1_rounds<ssemodesuffixf2c>):
20331         Override prefix_data16 and length_immediate to 1.
20332         (sse5_pperm_zero_v16qi_v8hi, sse5_pperm_sign_v16qi_v8hi,
20333         sse5_pperm_zero_v8hi_v4si, sse5_pperm_sign_v8hi_v4si,
20334         sse5_pperm_zero_v4si_v2di, sse5_pperm_sign_v4si_v2di,
20335         sse5_vrotl<mode>3, sse5_ashl<mode>3, sse5_lshl<mode>3): Override
20336         prefix_data16 to 0 and prefix_extra to 2.
20337         (sse5_rotl<mode>3, sse5_rotr<mode>3): Override length_immediate to 1.
20338         (sse5_frcz<mode>2, sse5_vmfrcz<mode>2): Don't override prefix_extra
20339         attribute.
20340         (*sse5_vmmaskcmp<mode>3, sse5_com_tf<mode>3,
20341         sse5_maskcmp<mode>3, sse5_maskcmp<mode>3, sse5_maskcmp_uns<mode>3):
20342         Override prefix_data16 and prefix_rep to 0, length_immediate to 1
20343         and prefix_extra to 2.
20344         (sse5_maskcmp_uns2<mode>3, sse5_pcom_tf<mode>3): Override
20345         prefix_data16 to 0, length_immediate to 1 and prefix_extra to 2.
20346         (*avx_aesenc, *avx_aesenclast, *avx_aesdec, *avx_aesdeclast,
20347         avx_vpermilvar<mode>3,
20348         avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>,
20349         avx_vbroadcastss256, avx_vbroadcastf128_p<avxmodesuffixf2c>256,
20350         avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>,
20351         avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>):
20352         Override prefix_extra to 1.
20353         (aeskeygenassist, pclmulqdq): Override length_immediate to 1.
20354         (*vpclmulqdq, avx_vpermil<mode>, avx_vperm2f128<mode>3,
20355         vec_set_lo_<mode>, vec_set_hi_<mode>, vec_set_lo_v16hi,
20356         vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Override
20357         prefix_extra and length_immediate to 1.
20358         (*avx_vzeroall, avx_vzeroupper, avx_vzeroupper_rex64): Override
20359         modrm to 0.
20360         (*vec_concat<mode>_avx): Override prefix_extra and length_immediate
20361         to 1 for the first alternative.
20362         * config/i386/mmx.md (*mov<mode>_internal_rex64): Override
20363         prefix_rep, prefix_data16 and/or prefix_rex attributes in certain
20364         cases.
20365         (*mov<mode>_internal_avx, *movv2sf_internal_rex64,
20366         *movv2sf_internal_avx, *movv2sf_internal): Override
20367         prefix_rep attribute for certain alternatives.
20368         (*mov<mode>_internal): Override prefix_rep or prefix_data16
20369         attributes for certain alternatives.
20370         (*movv2sf_internal_rex64_avx): Override prefix_rep and length_vex
20371         attributes for certain alternatives.
20372         (*mmx_addv2sf3, *mmx_subv2sf3, *mmx_mulv2sf3,
20373         *mmx_<code>v2sf3_finite, *mmx_<code>v2sf3, mmx_rcpv2sf2,
20374         mmx_rcpit1v2sf3, mmx_rcpit2v2sf3, mmx_rsqrtv2sf2, mmx_rsqit1v2sf3,
20375         mmx_haddv2sf3, mmx_hsubv2sf3, mmx_addsubv2sf3,
20376         *mmx_eqv2sf3, mmx_gtv2sf3, mmx_gev2sf3, mmx_pf2id, mmx_pf2iw,
20377         mmx_pi2fw, mmx_floatv2si2, mmx_pswapdv2sf2, *mmx_pmulhrwv4hi3,
20378         mmx_pswapdv2si2): Set prefix_extra attribute to 1.
20379         (mmx_ashr<mode>3, mmx_lshr<mode>3, mmx_ashl<mode>3): Set
20380         length_immediate to 1 if operand 2 is const_int_operand.
20381         (*mmx_pinsrw, mmx_pextrw, mmx_pshufw_1, *vec_dupv4hi,
20382         *vec_extractv2si_1): Set length_immediate attribute to 1.
20383         (*mmx_uavgv8qi3): Override prefix_extra attribute to 1 if
20384         using old 3DNOW insn rather than SSE/3DNOW_A.
20385         (mmx_emms, mmx_femms): Clear modrm attribute.
20386
20387 2009-05-29  Martin Jambor  <mjambor@suse.cz>
20388
20389         * tree-sra.c:  New implementation of SRA.
20390
20391         * params.def (PARAM_SRA_MAX_STRUCTURE_SIZE): Removed.
20392         (PARAM_SRA_MAX_STRUCTURE_COUNT): Removed.
20393         (PARAM_SRA_FIELD_STRUCTURE_RATIO): Removed.
20394         * params.h (SRA_MAX_STRUCTURE_SIZE): Removed.
20395         (SRA_MAX_STRUCTURE_COUNT): Removed.
20396         (SRA_FIELD_STRUCTURE_RATIO): Removed.
20397         * doc/invoke.texi (sra-max-structure-size): Removed.
20398         (sra-field-structure-ratio): Removed.
20399
20400 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
20401
20402         PR middle-end/40291
20403         * builtins.c (expand_builtin_memcmp): Convert len to sizetype
20404         before expansion.
20405
20406 2009-05-29  Andrey Belevantsev  <abel@ispras.ru>
20407
20408         PR rtl-optimization/40101
20409         * sel-sched-ir.c (get_seqno_by_preds): Allow returning negative
20410         seqno.  Adjust comment.
20411         * sel-sched.c (find_seqno_for_bookkeeping): Assert that when
20412         inserting bookkeeping before a jump, the jump is not scheduled.
20413         When no positive seqno found, provide a value.  Add comment.
20414
20415 2009-05-29  Richard Guenther  <rguenther@suse.de>
20416
20417         * tree-ssa-alias.c (nonaliasing_component_refs_p): Remove
20418         short-cutting on the first component.
20419
20420 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
20421
20422         PR middle-end/39958
20423         * omp-low.c (scan_omp_1_op): Call remap_type on TREE_TYPE
20424         for trees other than decls/types.
20425
20426 2009-05-29  Richard Guenther  <rguenther@suse.de>
20427
20428         * tree-ssa-operands.c (get_expr_operands): Do not handle
20429         INDIRECT_REFs in the handled-component case.  Remove
20430         unused get_ref_base_and_extent case.
20431         * tree-dfa.c (get_ref_base_and_extent): Avoid calling
20432         tree_low_cst and host_integerp where possible.
20433         * tree-ssa-structalias.c (equiv_class_label_eq): Check hash
20434         codes for equivalence.
20435         * dce.c (find_call_stack_args): Avoid redundant bitmap queries.
20436
20437 2009-05-29  David Billinghurst <billingd@gcc.gnu.org>
20438
20439         * config.gcc: Add i386/t-fprules-softfp and soft-fp/t-softfp
20440         to tmake_file for i[34567]86-*-cygwin*.
20441
20442 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
20443
20444         PR target/40017
20445         * config/rs6000/rs6000-c.c (_Bool_keyword): New variable.
20446         (altivec_categorize_keyword, init_vector_keywords,
20447         rs6000_cpu_cpp_builtins): Define _Bool as conditional macro
20448         similar to bool.
20449
20450 2009-05-29  Kai Tietz  <kai.tietz@onevision.com>
20451
20452         * tree.c (handle_dll_attribute): Check if node is
20453         of kind FUNCTION_DECL for DECL_DECLARED_INLINE_P check.
20454
20455 2009-05-29  Richard Earnshaw  <rearnsha@arm.com>
20456
20457         * config/arm/thumb2.md (thumb2_zero_extendsidi2): Add a split
20458         component.
20459         (thumb2_zero_extendqidi2): Likewise.
20460
20461 2009-05-28  Kaz Kojima  <kkojima@gcc.gnu.org>
20462
20463         * config/sh/sh.c (sh_expand_t_scc): Use gen_xorsi3_movrt
20464         instead of gen_movrt.
20465         * config/sh/sh.md (movrt): Remove.
20466
20467 2009-05-28  Steve Ellcey  <sje@cup.hp.com>
20468
20469         * doc/invoke.texi (IA-64 Options):
20470         Add -msdata, -mfused-madd, -mno-inline-float-divide,
20471         -mno-inline-int-divide, -mno-inline-sqrt, -msched-spec-ldc,
20472         -msched-spec-control-ldc, -msched-prefer-non-data-spec-insns,
20473         -msched-prefer-non-control-spec-insns,
20474         -msched-stop-bits-after-every-cycle,
20475         -msched-count-spec-in-critical-path,
20476         -msel-sched-dont-check-control-spec, -msched-fp-mem-deps-zero-cost
20477         -msched-max-memory-insns-hard-limit, -msched-max-memory-insns.
20478         Remove -mt, -pthread, -msched-ldc, -mno-sched-control-ldc,
20479         and -msched-spec-verbose.
20480
20481 2009-05-28  Joseph Myers  <joseph@codesourcery.com>
20482
20483         * config/arm/lib1funcs.asm (__clear_cache): Define if L_clear_cache.
20484         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define to give an
20485         error if used.
20486         * config/arm/t-linux-eabi (LIB1ASMFUNCS): Add _clear_cache.
20487
20488 2009-05-28  Richard Guenther  <rguenther@suse.de>
20489
20490         * tree-ssa-alias.c (ao_ref_init): New function.
20491         (ao_ref_base): Likewise.
20492         (ao_ref_base_alias_set): Likewise.
20493         (ao_ref_alias_set): Likewise.
20494         (refs_may_alias_p_1): Change signature.
20495         (refs_may_alias_p): Adjust.
20496         (refs_anti_dependent_p): Likewise.
20497         (refs_output_dependent_p): Likewise.
20498         (call_may_clobber_ref_p_1): Change signature.
20499         (call_may_clobber_ref_p): Adjust.
20500         (stmt_may_clobber_ref_p_1): New function split out from ...
20501         (stmt_may_clobber_ref_p): ... here.
20502         (maybe_skip_until): Adjust signature.
20503         (get_continuation_for_phi): Likewise.
20504         (walk_non_aliased_vuses): Likewise.
20505         * tree-ssa-alias.h (struct ao_ref_s): New structure type.
20506         (ao_ref_init): Declare.
20507         (ao_ref_base): Likewise.
20508         (ao_ref_alias_set): Likewise.
20509         (stmt_may_clobber_ref_p_1): Likewise.
20510         (walk_non_aliased_vuses): Adjust.
20511         * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): New function.
20512         (get_ref_from_reference_ops): remove.
20513         (vn_reference_lookup_2): Adjust signature.
20514         (vn_reference_lookup_3): Do not re-build trees.  Handle unions.
20515         (vn_reference_lookup_pieces): Adjust signature, do not re-build trees.
20516         (vn_reference_lookup): Adjust.
20517         (vn_reference_insert): Likewise.
20518         (vn_reference_insert_pieces): Adjust signature.
20519         (visit_reference_op_call): Adjust.
20520         * tree-ssa-pre.c (get_expr_type): Simplify.
20521         (phi_translate_1): Adjust.
20522         (compute_avail): Likewise.
20523         (translate_vuse_through_block): Do not re-build trees.
20524         (value_dies_in_block_x): Likewise.
20525         * tree-ssa-sccvn.h (struct vn_reference_s): Add type and alias-set
20526         fields.
20527         (vn_reference_lookup_pieces): Adjust declaration.
20528         (vn_reference_insert_pieces): Likewise.
20529
20530 2009-05-28  Benjamin Kosnik  <bkoz@redhat.com>
20531
20532         * tree-ssa-copy.c (replace_exp_1): Move op for warning-free use
20533         with checking disabled.
20534
20535 2009-05-28  Dave Korn  <dave.korn.cygwin@gmail.com>
20536
20537         PR target/37216
20538
20539         * configure.ac (HAVE_GAS_ALIGNED_COMM):  Add autoconf test and
20540         macro definition for support of three-operand format aligned
20541         .comm directive in assembler on cygwin/pe/mingw target OS.
20542         * configure:  Regenerate.
20543         * config.h:  Regenerate.
20544
20545         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common):  Use
20546         aligned form of .comm directive if -mpe-aligned-commons is in effect.
20547         * config/i386/cygming.opt (-mpe-aligned-commons):  Add new option.
20548
20549         * doc/invoke.texi (-mpe-aligned-commons):  Document new target option.
20550         * doc/tm.texi (ASM_OUTPUT_COMMON):  Document zero size commons.
20551
20552 2009-05-28  Ira Rosen  <irar@il.ibm.com>
20553
20554         PR tree-optimization/40254
20555         * tree-data-ref.c (dr_analyze_innermost): Take POFFSET into account
20556         in analysis of basic blocks.
20557
20558 2009-05-28  Adam Nemet  <anemet@caviumnetworks.com>
20559
20560         PR middle-end/33699
20561         * target.h (struct gcc_target): Fix indentation.  Add const_anchor.
20562         * target-def.h (TARGET_CONST_ANCHOR): New macro.
20563         (TARGET_INITIALIZER): Use it.
20564         * cse.c (CHEAPER): Move it up to the other macros.
20565         (insert): Rename this ...
20566         (insert_with_costs): ... to this.  Add cost parameters.  Update
20567         function comment.
20568         (insert): New function.  Call insert_with_costs.
20569         (compute_const_anchors, insert_const_anchor, insert_const_anchors,
20570         find_reg_offset_for_const, try_const_anchors): New functions.
20571         (cse_insn): Call try_const_anchors.  Adjust cost of src_related
20572         when using a const-anchor.  Call insert_const_anchors.
20573         * config/mips/mips.c (mips_set_mips16_mode): Set targetm.const_anchor.
20574         * doc/tm.texi (Misc): Document TARGET_CONST_ANCHOR.
20575
20576 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
20577
20578         * tree-inline.c (remap_decls): Enable nonlocalized variables
20579         when not optimizing.
20580
20581 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
20582
20583         * tree-ssa-live.c (remove_unused_locals): Skip when not optimizing.
20584         Simplify other tests involving optimize.
20585
20586 2009-05-27  Tom Tromey  <tromey@redhat.com>
20587
20588         * unwind-dw2.c (_Unwind_DebugHook): New function.
20589         (uw_install_context): Call _Unwind_DebugHook.
20590
20591 2009-05-27  Tom Tromey  <tromey@redhat.com>
20592
20593         * system.h (CONST_CAST2): Use C++ const_cast when compiled as C++
20594
20595 2009-05-27  Ian Lance Taylor  <iant@google.com>
20596
20597         * Makefile.in (LINKER, LINKER_FLAGS): Define.
20598         (LINKER_FOR_BUILD, BUILD_LINKERFLAGS): Define.
20599         (ALL_LINKERFLAGS): Define.
20600         (xgcc$(exeext)): Change $(COMPILER) to $(LINKER).
20601         (cpp$(exeext), cc1-dummy$(exeext), cc1$(exeext)): Likewise.
20602         (collect2$(exeext), mips-tfile, mips-tdump): Likewise.
20603         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
20604         (build/gen%$(build_exeext)): Change $(COMPILER_FOR_BUILD) to
20605         $(LINKER_FOR_BUILD).
20606         (build/gcov-iov$(build_exeext)): Likewise.
20607
20608 2009-05-27  Julian Brown  <julian@codesourcery.com>
20609
20610         * gcse.c (target.h): Include.
20611         (can_assign_to_reg_without_clobbers_p): Check that the target allows
20612         copy of argument to a pseudo register.
20613
20614 2009-05-27  Diego Novillo  <dnovillo@google.com>
20615
20616         * tree-ssa-live.c (dump_scope_block): Document arguments.
20617         (dump_scope_blocks): Document.
20618         (debug_scope_blocks): New.
20619         * tree-flow.h (debug_scope_blocks): Declare.
20620
20621 2009-05-21  Denis Chertykov  <denisc@overta.ru>
20622
20623         * doc/contrib.texi (Contributors): Add myself to the list.
20624
20625 2009-05-27  Olivier Hainque  <hainque@adacore.com>
20626
20627         * expr.c (target_align): New function.  Alignment the TARGET of an
20628         assignment may be assume to have.
20629         (highest_pow2_factor_for_target): Use it instead of relying on
20630         immediate tree attributes of TARGET, not necessarily honored when
20631         intermediate bitfields are involved.
20632
20633 2009-05-27  H.J. Lu  <hongjiu.lu@intel.com>
20634
20635         PR target/40266
20636         * config/i386/driver-i386.c (host_detect_local_cpu): Support
20637         AVX, SSE4, AES, PCLMUL and POPCNT.
20638
20639 2009-05-27  Diego Novillo  <dnovillo@google.com>
20640
20641         * tree-pretty-print.c (dump_location): New.
20642         (dump_generic_node): Call it.
20643         Factor code to handle BLOCK nodes ...
20644         (dump_block_node): ... here.
20645
20646 2009-05-27  Rafael Avila de Espindola  <espindola@google.com>
20647
20648         * Makefile.in (GCC_PLUGIN_H): New. Replace all uses of gcc-plugin.h
20649         with it.
20650         * doc/plugins.texi: Document that gcc-plugin.h must be the first to be
20651         included.
20652         * gcc-plugin.h: Include config.h and system.h.
20653         (IN_GCC): Define if not defined.
20654
20655 2009-05-27  Hans-Peter Nilsson  <hp@axis.com>
20656
20657         PR middle-end/40249
20658         * Makefile.in (CRTSTUFF_CFLAGS): Replace -fno-inline-functions
20659         with -fno-inline.
20660
20661 2009-05-27  Shujing Zhao  <pearly.zhao@oracle.com>
20662
20663         * config/m32r/m32r.c: Use REG_P, MEM_P and CONST_INT_P where
20664         applicable.
20665         * config/m32r/m32r.h: Ditto.
20666         * config/m32r/m32r.md: Ditto.
20667         * config/m32r/predicates.md: Ditto.
20668
20669 2009-05-27  Alexandre Oliva  <aoliva@redhat.com>
20670
20671         * cgraph.c (dump_cgraph_node): Honor -fdump-noaddr.
20672
20673 2009-05-26  Basile Starynkevitch  <basile@starynkevitch.net>
20674
20675         * doc/plugins.texi
20676         (Loading plugins): typo.
20677         (Plugin callbacks): Documented PLUGIN_INFO, PLUGIN_GGC_START,
20678         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
20679         (Interacting with the GCC Garbage Collector): Added new section.
20680         (Giving information about a plugin): Added new section for
20681         PLUGIN_INFO.
20682         * ggc.h (ggc_register_root_tab): Added declaration.
20683         * gcc-plugin.h (PLUGIN_GGC_START, PLUGIN_GGC_MARKING)
20684         (PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS): Added new events.
20685         (register_callback): Improved comment in declaration.
20686         * ggc-common.c (const_ggc_root_tab_t) Added new typedef for vectors.
20687         (extra_root_vec) Added static variable for dynamic roots registration.
20688         (ggc_register_root_tab) Added new routine.
20689         (ggc_mark_roots) Added iteration inside extra_root_vec, and invoke
20690         PLUGIN_GGC_MARKING event.
20691         * ggc-zone.c: Include plugin.h.
20692         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
20693         * ggc-page.c: Include plugin.h.
20694         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
20695         * plugin.c (plugin_event_name): added names of PLUGIN_GGC_START,
20696         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS
20697         (register_callback): check lack of callbacks for
20698         pseudo-events. Added handling of PLUGIN_REGISTER_GGC_ROOTS,
20699         PLUGIN_GGC_START, PLUGIN_GGC_MARKING, PLUGIN_GGC_END.
20700         (invoke_plugin_callbacks): Handle PLUGIN_GGC_START,
20701         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
20702         * Makefile.in (ggc-common.o, ggc-zone.o, ggc-page.o): Added
20703         dependency on plugin.h.
20704         (plugin.o): Added dependency on ggc.h...
20705
20706 2009-05-26  Richard Guenther  <rguenther@suse.de>
20707
20708         PR middle-end/40248
20709         Revert
20710         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
20711         with mismatched comparison modes.
20712
20713         * expr.c (expand_expr_real_1): Expand the operand of a
20714         VIEW_CONVERT_EXPR in its natural mode.
20715
20716 2009-05-26  Ian Lance Taylor  <iant@google.com>
20717
20718         * Makefile.in (COMPILER, COMPILER_FLAGS): Define.
20719         (COMPILER_FOR_BUILD, BUILD_COMPILERFLAGS): Define.
20720         (ALL_COMPILERFLAGS): Define.
20721         (.c.o, xgcc$(exeext), cpp$(exeext)): Use $(COMPILER).
20722         (cc1-dummy$(exeext), cc1$(exeext)): Likewise.
20723         (collect2$(exeext), collect2.o): Likewise.
20724         (c-opts.o, c-cppbuiltin.o, c-pch.o, gcc.o, gccspec.o): Likewise.
20725         (gcc-options.o, version.o, prefix.o, toplev.o): Likewise.
20726         ($(out_object_file), mips-tfile, mips-tdump): Likewise.
20727         (libbackend.o, intl.o, cppdefault.o): Likewise.
20728         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
20729         (build/%.o): Use $(COMPILER_FOR_BUILD).
20730         (build/gen%$(build_exeext)): Likewise.
20731         (build/gcov-iov$(build_exeext)): LIkewise.
20732         * config/t-darwin (darwin.o): Use $(COMPILER).
20733         (darwin-c.o, darwin-f.o, darwin-driver.o): Likewise.
20734         * config/t-sol2 (sol2-c.o): Likewise.
20735         (sol2.o): Likewise.
20736         * config/t-vxworks (vxworks.o): Likewise.
20737         * config/x-darwin (host-darwin.o): Likewise.
20738         * config/x-hpux (host-hpux.o): Likewise.
20739         * config/x-linux (host-linux.o): Likewise.
20740         * config/x-solaris (host-solaris.o): Likewise.
20741         * config/alpha/x-alpha (driver-alpha.o): Likewise.
20742         * config/arm/t-arm (arm-c.o): Likewise.
20743         * config/arm/t-pe (pe.o): Likewise.
20744         * config/arm/t-wince-pe (pe.o): Likewise.
20745         * config/i386/t-cygming (winnt.o): Likewise.
20746         (winnt-cxx.o, winnt-stubs.o, msformat-c.o): Likewise.
20747         * config/i386/t-cygwin (cygwin1.o): Likewise.
20748         (cygwin2.o): Likewise.
20749         * config/i386/t-i386 (i386-c.o): Likewise.
20750         * config/i386/t-interix (winnt.o): Likewise.
20751         * config/i386/t-netware (netware.o): Likewise.
20752         * config/i386/t-nwld (nwld.o): Likewise.
20753         * config/i386/x-darwin (host-i386-darwin.o): Likewise.
20754         * config/i386/x-i386 (driver-i386.o): Likewise.
20755         * config/i386/x-cygwin (host-cygwin.o): Likewise.
20756         * config/i386/x-mingw32 (host-mingw32.o): Likewise.
20757         * config/ia64/t-ia64 (ia64-c.o): Likewise.
20758         * config/m32c/t-m32c (m32c-pragma.o): Likewise.
20759         * config/mips/x-native (driver-native.o): Likewise.
20760         * config/rs6000/t-rs6000 (rs6000-c.o): Likewise.
20761         * config/rs6000/x-darwin (host-ppc-darwin.o): Likewise.
20762         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Likewise.
20763         * config/rs6000/x-rs6000 (driver-rs6000.o): Likewise.
20764         * config/score/t-score-elf (score7.o): Likewise.
20765         (score3.o): Likewise.
20766         * config/sh/t-sh (sh-c.o): Likewise.
20767         * config/sh/t-symbian (sh-c.o): Likewise.
20768         (symbian.o): Likewise.
20769         * config/spu/t-spu-elf (spu-c.o): Likewise.
20770         * config/v850/t-v850 (v850-c.o): Likewise.
20771         * config/v850/t-v850e (v850-c.o): Likewise.
20772
20773 2009-05-26  Richard Guenther  <rguenther@suse.de>
20774
20775         PR tree-optimization/40122
20776         * tree-ssa-ccp.c (ccp_fold): Fold vector CONSTRUCTORs to
20777         VECTOR_CSTs if possible.
20778         (fold_gimple_assign): Likewise.
20779
20780 2009-05-26  Richard Guenther  <rguenther@suse.de>
20781
20782         PR middle-end/40252
20783         * fold-const.c (fold_binary): Use the correct types for building
20784         rotates.
20785
20786 2009-05-26  Richard Guenther  <rguenther@suse.de>
20787
20788         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove
20789         redundant calls to merge_alias_info.
20790         (bump_vector_ptr): Likewise.
20791         * tree-ssa-copy.c (merge_alias_info): Remove.
20792         (replace_exp_1): Remove call to merge_alias_info.
20793         (propagate_tree_value): Likewise.
20794         (fini_copy_prop): Propagate points-to info.
20795         * tree-flow.h (merge_alias_info): Remove.
20796
20797 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
20798
20799         * config/picochip/picochip.C (PARAM_INLINE_CALL_COST): Remove.
20800
20801 2009-05-25  Jan Hubicka  <jh@suse.cz>
20802
20803         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
20804         * cgraph.h (struct inline_summary): New filed self_wize,
20805         size_inlining_benefit, self_time and time_inlining_benefit.
20806         (struct cgraph_global_info): Replace insns by time ans size fields.
20807         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
20808         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
20809         (ipcp_update_callgraph): Do not touch function bodies.
20810         * ipa-inline.c: Include except.h
20811         (MAX_TIME): New constant.
20812         (overall_insns): Remove.
20813         (leaf_node_p): New.
20814         (overall_size, max_benefit): New static variables.
20815         (cgraph_estimate_time_after_inlining): New function.
20816         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
20817         (cgraph_clone_inlined_nodes): Update size.
20818         (cgraph_mark_inline_edge): Update size.
20819         (cgraph_estimate_growth): Use size info.
20820         (cgraph_check_inline_limits): Check size.
20821         (cgraph_default_inline_p): Likewise.
20822         (cgraph_edge_badness): Compute badness based on benefit and size cost.
20823         (cgraph_decide_recursive_inlining): Check size.
20824         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
20825         and times.
20826         (cgraph_decide_inlining): Likewise.
20827         (cgraph_decide_inlining_incrementally): Likewise; honor
20828         PARAM_EARLY_INLINING_INSNS.
20829         (likely_eliminated_by_inlining_p): New predicate.
20830         (estimate_function_body_sizes): New function.
20831         (compute_inline_parameters): Use it.
20832         * except.c (must_not_throw_labels): New function.
20833         * except.h (must_not_throw_labels): Declare.
20834         * tree-inline.c (init_inline_once): Kill inlining_weigths
20835         * tree-ssa-structalias.c: Avoid uninitialized warning.
20836         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
20837         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
20838         (PARAM_INLINE_CALL_COST): Remove.
20839         (PARAM_EARLY_INLINING_INSNS): New.
20840
20841 2009-05-25  Richard Guenther  <rguenther@suse.de>
20842
20843         PR tree-optimization/36327
20844         * tree-ssa-alias.c (walk_non_aliased_vuses): Add second walker
20845         callback for reference translation or lookup at the point of may-defs.
20846         * tree-ssa-alias.h (walk_non_aliased_vuses): Adjust prototype.
20847         * tree-ssa-sccvn.c (get_ref_from_reference_ops): Bail out
20848         for union COMPONENT_REFs.
20849         (vn_reference_lookup_3): New callback.  Lookup from memset
20850         and CONSTRUCTOR assignment, translate through struct copies.
20851         (vn_reference_lookup_pieces): Make sure to not free the
20852         passed operands array.  Adjust walk_non_aliased_vuses call.
20853         (vn_reference_lookup): Adjust walk_non_aliased_vuses call,
20854         make sure we do not leak memory.
20855
20856 2009-05-25  Richard Guenther  <rguenther@suse.de>
20857
20858         * tree-ssa-alias.h (dump_points_to_solution): Declare.
20859         * tree-inline.c (expand_call_inline): Reset the escaped and
20860         callused solutions.
20861         * tree-ssa-structalias.c (pass_build_ealias): New.
20862         * tree-pass.h (pass_build_ealias): Declare.
20863         * passes.c (init_optimization_passes): Add PTA during
20864         early optimizations.
20865         * tree-ssa-alias.c (dump_alias_info): Dump the ESCAPED
20866         and CALLUSED solutions.
20867         (dump_points_to_solution): New function, split out from ...
20868         (dump_points_to_info_for): ... here.
20869         * tree-parloops.c (parallelize_loops): Reset the escaped and
20870         callused solutions.
20871
20872 2009-05-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
20873
20874         PR bootstrap/40027
20875         * config/i386/i386.c (USE_HIDDEN_LINKONCE): Only define if missing.
20876         * config/i386/sol2.h [!TARGET_GNU_LD] (USE_HIDDEN_LINKONCE): Define.
20877
20878 2009-05-25  Ira Rosen  <irar@il.ibm.com>
20879
20880         PR tree-optimization/40238
20881         * tree-vect-stmts.c (vect_init_vector): Insert initialization
20882         statements after basic block's labels.
20883         * tree-vect-slp.c (vect_slp_transform_bb): Call destroy_bb_vec_info()
20884         to free the allocated memory.
20885
20886 2009-05-24  Kaz Kojima  <kkojima@gcc.gnu.org>
20887
20888         * gcc/config/sh/sh.c (sh_set_return_address): Mark store of
20889         return address with a USE.
20890
20891 2009-05-24  Richard Guenther  <rguenther@suse.de>
20892
20893         PR middle-end/40233
20894         * tree.c (make_vector_type): Build the TYPE_DEBUG_REPRESENTATION_TYPEs
20895         array type from the main variant of the inner type.
20896
20897 2009-05-24  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
20898
20899         * config/vax/vax-protos.h (legitimate_constant_address_p): Change
20900         definition to bool (from int) to un-break build.
20901         (legitimate_constant_p, vax_mode_dependent_address_p): Likewise.
20902
20903 2009-05-24  Paolo Bonzini  <bonzini@gnu.org>
20904
20905         * tree-ssa-operands.h (push_stmt_changes, pop_stmt_changes,
20906         discard_stmt_changes): Delete.
20907         * tree-ssa-operands.c (scb_stack): Delete.
20908         (init_ssa_operands): Do not initialize it.
20909         (fini_ssa_operands): Do not free it.
20910         (push_stmt_changes, pop_stmt_changes, discard_stmt_changes): Delete.
20911
20912         * tree-cfg.c (replace_uses_by): Replace pop_stmt_changes with
20913         update_stmt, remove the others.  Fix comments.
20914         * tree-dfa.c (optimize_stack_restore): Likewise.
20915         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Likewise.
20916         * tree-ssa-loop-ivopts.c (rewrite_use): Likewise.
20917         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
20918         * tree-ssa-ccp.c (optimize_stack_restore, execute_fold_all_builtins):
20919         Likewise.
20920         * tree-ssa-propagate.c (substitute_and_fold): Likewise.
20921         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
20922         (dom_opt_finalize_block): Likewise, adjusting access to
20923         stmts_to_rescan.
20924         (optimize_stmt): Likewise, adjusting access to stmts_to_rescan.
20925         (stmts_to_rescan): Change item type to gimple.
20926         (tree_ssa_dominator_optimize): Change type of stmts_to_rescan.
20927
20928 2009-05-24  Ira Rosen  <irar@il.ibm.com>
20929
20930         * doc/passes.texi (Tree-SSA passes): Document SLP pass.
20931         * tree-pass.h (pass_slp_vectorize): New pass.
20932         * params.h (SLP_MAX_INSNS_IN_BB): Define.
20933         * timevar.def (TV_TREE_SLP_VECTORIZATION): Define.
20934         * tree-vectorizer.c (timevar.h): Include.
20935         (user_vect_verbosity_level): Declare.
20936         (vect_location): Fix comment.
20937         (vect_set_verbosity_level): Update user_vect_verbosity_level
20938         instead of vect_verbosity_level.
20939         (vect_set_dump_settings): Add an argument. Ignore user defined
20940         verbosity if dump flags require higher level of verbosity. Print to
20941         stderr only for loop vectorization.
20942         (vectorize_loops): Update call to vect_set_dump_settings.
20943         (execute_vect_slp): New function.
20944         (gate_vect_slp): Likewise.
20945         (struct gimple_opt_pass pass_slp_vectorize): New.
20946         * tree-vectorizer.h (struct _bb_vec_info): Define along macros to
20947         access its members.
20948         (vec_info_for_bb): New function.
20949         (struct _stmt_vec_info): Add bb_vinfo and a macro for its access.
20950         (VECTORIZATION_ENABLED): New macro.
20951         (SLP_ENABLED, SLP_DISABLED): Likewise.
20952         (vect_is_simple_use): Add bb_vec_info argument.
20953         (new_stmt_vec_info, vect_analyze_data_ref_dependences,
20954         vect_analyze_data_refs_alignment, vect_verify_datarefs_alignment,
20955         vect_analyze_data_ref_accesses, vect_analyze_data_refs,
20956         vect_schedule_slp, vect_analyze_slp): Likewise.
20957         (vect_analyze_stmt): Add slp_tree argument.
20958         (find_bb_location): Declare.
20959         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
20960         * tree-vect-loop.c (new_loop_vec_info): Adjust function calls.
20961         (vect_analyze_loop_operations, vect_analyze_loop,
20962         get_initial_def_for_induction, vect_create_epilog_for_reduction,
20963         vect_finalize_reduction, vectorizable_reduction,
20964         vectorizable_live_operation, vect_transform_loop): Likewise.
20965         * tree-data-ref.c (dr_analyze_innermost): Update comment,
20966         skip evolution analysis if analyzing a basic block.
20967         (dr_analyze_indices): Likewise.
20968         (initialize_data_dependence_relation): Skip the test whether the
20969         object is invariant for basic blocks.
20970         (compute_all_dependences): Skip dependence analysis for data
20971         references in basic blocks.
20972         (find_data_references_in_stmt): Don't fail in case of invariant
20973         access in basic block.
20974         (find_data_references_in_bb): New function.
20975         (find_data_references_in_loop): Move code to
20976         find_data_references_in_bb and add a call to it.
20977         (compute_data_dependences_for_bb): New function.
20978         * tree-data-ref.h (compute_data_dependences_for_bb): Declare.
20979         * tree-vect-data-refs.c (vect_check_interleaving): Adjust to the case
20980         that STEP is 0.
20981         (vect_analyze_data_ref_dependence): Check for interleaving in case of
20982         unknown dependence in basic block and fail in case of dependence in
20983         basic block.
20984         (vect_analyze_data_ref_dependences): Add bb_vinfo argument, get data
20985         dependence instances from either loop or basic block vectorization
20986         info.
20987         (vect_compute_data_ref_alignment): Check if it is loop vectorization
20988         before calling nested_in_vect_loop_p.
20989         (vect_compute_data_refs_alignment): Add bb_vinfo argument, get data
20990         dependence instances from either loop or basic block vectorization
20991         info.
20992         (vect_verify_datarefs_alignment): Likewise.
20993         (vect_enhance_data_refs_alignment): Adjust function calls.
20994         (vect_analyze_data_refs_alignment): Likewise.
20995         (vect_analyze_group_access): Fix printing. Skip different checks if
20996         DR_STEP is 0. Keep strided stores either in loop or basic block
20997         vectorization data structure. Fix indentation.
20998         (vect_analyze_data_ref_access): Fix comments, allow zero step in
20999         basic blocks.
21000         (vect_analyze_data_ref_accesses): Add bb_vinfo argument, get data
21001         dependence instances from either loop or basic block vectorization
21002         info.
21003         (vect_analyze_data_refs): Update comment. Call
21004         compute_data_dependences_for_bb to analyze basic blocks.
21005         (vect_create_addr_base_for_vector_ref): Check for outer loop only in
21006         case of loop vectorization. In case of basic block vectorization use
21007         data-ref itself as a base.
21008         (vect_create_data_ref_ptr): In case of basic block vectorization:
21009         don't advance the pointer, add new statements before the current
21010         statement.  Adjust function calls.
21011         (vect_supportable_dr_alignment): Support only aligned accesses in
21012         basic block vectorization.
21013         * common.opt (ftree-slp-vectorize): New flag.
21014         * tree-vect-patterns.c (widened_name_p): Adjust function calls.
21015         (vect_pattern_recog_1): Likewise.
21016         * tree-vect-stmts.c (process_use): Likewise.
21017         (vect_init_vector): Add new statements in the beginning of the basic
21018         block in case of basic block SLP.
21019         (vect_get_vec_def_for_operand): Adjust function calls.
21020         (vect_finish_stmt_generation): Likewise.
21021         (vectorizable_call): Add assert that it is loop vectorization, adjust
21022         function calls.
21023         (vectorizable_conversion, vectorizable_assignment): Likewise.
21024         (vectorizable_operation): In case of basic block SLP, take
21025         vectorization factor from statement's type and skip the relevance
21026         check. Adjust function calls.
21027         (vectorizable_type_demotion): Add assert that it is loop
21028         vectorization, adjust function calls.
21029         (vectorizable_type_promotion): Likewise.
21030         (vectorizable_store): Check for outer loop only in case of loop
21031         vectorization. Adjust function calls. For basic blocks, skip the
21032         relevance check and don't advance pointers.
21033         (vectorizable_load): Likewise.
21034         (vectorizable_condition): Add assert that it is loop vectorization,
21035         adjust function calls.
21036         (vect_analyze_stmt): Add argument. In case of basic block SLP, check
21037         that it is not reduction, get vector type, call only supported
21038         functions, skip loop specific parts.
21039         (vect_transform_stmt): Check for outer loop only in case of loop
21040         vectorization.
21041         (new_stmt_vec_info): Add new argument and initialize bb_vinfo.
21042         (vect_is_simple_use): Fix comment, add new argument, fix conditions
21043         for external definition.
21044         * passes.c (pass_slp_vectorize): New pass.
21045         * tree-vect-slp.c (find_bb_location): New function.
21046         (vect_get_and_check_slp_defs): Add argument, adjust function calls,
21047         check for patterns only in loops.
21048         (vect_build_slp_tree): Add argument, adjust function calls, fail in
21049         case of multiple types in basic block SLP.
21050         (vect_mark_slp_stmts_relevant): New function.
21051         (vect_supported_load_permutation_p): Fix comment.
21052         (vect_analyze_slp_instance): Add argument. In case of basic block
21053         SLP, take vectorization factor from statement's type, check that
21054         unrolling factor is 1. Adjust function call. Save SLP instance in
21055         either loop or basic block vectorization structure. Return FALSE,
21056         if SLP failed.
21057         (vect_analyze_slp): Add argument. Get strided stores groups from
21058         either loop or basic block vectorization structure. Return FALSE
21059         if basic block SLP failed.
21060         (new_bb_vec_info): New function.
21061         (destroy_bb_vec_info, vect_slp_analyze_node_operations,
21062         vect_slp_analyze_operations, vect_slp_analyze_bb): Likewise.
21063         (vect_schedule_slp): Add argument. Get SLP instances from either
21064         loop or basic block vectorization structure. Set vectorization factor
21065         to be 1 for basic block SLP.
21066         (vect_slp_transform_bb): New function.
21067         * params.def (PARAM_SLP_MAX_INSNS_IN_BB): Define.
21068
21069 2009-05-23  Mark Mitchell  <mark@codesourcery.com>
21070
21071         * final.c (shorten_branches): Do not align labels for jump tables.
21072         (final_scan_insn): Use JUMP_TABLE_DATA_P.
21073
21074 2009-05-23  Eric Botcazou  <ebotcazou@adacore.com>
21075
21076         * doc/passes.texi: Standardize spelling of RTL, Tree and Tree SSA.
21077         Remove outdated reference to flow.c and fix nits.
21078         * doc/gccint.texi: Tweak RTL description.
21079         * doc/rtl.texi: Likewise.
21080
21081 2009-05-23  Denis Chertykov  <chertykov@gmail.com>
21082
21083         * config/avr/avr.c: Change my email address.
21084         * config/avr/avr.h: Likewise.
21085         * config/avr/avr.md: Likewise.
21086         * config/avr/avr-protos.h: Likewise.
21087         * config/avr/libgcc.S: Likewise.
21088
21089 2009-05-22  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
21090
21091         * config/spu/spu-protos.h (aligned_mem_p, spu_valid_mov): Remove.
21092         (spu_split_load, spu_split_store): Change return type to int.
21093         (spu_split_convert): Declare.
21094         * config/spu/predicates.md (spu_mem_operand): Remove.
21095         (spu_mov_operand): Update.
21096         (spu_dest_operand, shiftrt_operator, extend_operator): Define.
21097         * config/spu/spu.c (regno_aligned_for_load): Remove.
21098         (reg_aligned_for_addr, spu_expand_load): Define.
21099         (spu_expand_extv): Reimplement and handle MEM.
21100         (spu_expand_insv): Handle MEM.
21101         (spu_sched_reorder): Handle insn's with length 0.
21102         (spu_legitimate_address_p): Reimplement.
21103         (store_with_one_insn_p): Return TRUE for any mode with size
21104         larger than 16 bytes.
21105         (address_needs_split): Define.
21106         (spu_expand_mov): Call spu_split_load and spu_split_store for MEM
21107         operands.
21108         (spu_convert_move): Define.
21109         (spu_split_load): Use spu_expand_load and change all MEM's to TImode.
21110         (spu_split_store): Change all MEM's to TImode.
21111         (spu_init_expanders): Preallocate registers that correspond to
21112         LAST_VIRTUAL_REG+1 and LAST_VIRTUAL_REG+2 and set them with
21113         mark_reg_pointer.
21114         (spu_split_convert): Define.
21115         * config/spu/spu.md (QHSI, QHSDI): New mode iterators.
21116         (_move<mode>, _movdi, _movti): Update predicate and condition.
21117         (load, store): Change to define_split.
21118         (extendqiti2, extendhiti2, extendsiti2, extendditi2): Simplify to
21119         extend<mode>ti2.
21120         (zero_extendqiti2, zero_extendhiti2, <v>lshr<mode>3_imm): Define.
21121         (lshr<mode>3, lshr<mode>3_imm, lshr<mode>3_re): Simplify to one
21122         define_insn_and_split of lshr<mode>3.
21123         (shrqbybi_<mode>, shrqby_<mode>): Simplify to define_expand.
21124         (<v>ashr<mode>3_imm): Define.
21125         (extv, extzv, insv): Allow MEM operands.
21126         (trunc_shr_ti<mode>, trunc_shr_tidi, shl_ext_<mode>ti,
21127         shl_ext_diti, sext_trunc_lshr_tiqisi, zext_trunc_lshr_tiqisi,
21128         sext_trunc_lshr_tihisi, zext_trunc_lshr_tihisi): Define for combine.
21129         (_spu_convert2): Change to define_insn_and_split and remove the
21130         corresponding define_peephole2.
21131         (stack_protect_set, stack_protect_test, stack_protect_test_si):
21132         Change predicates to memory_operand.
21133
21134 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
21135
21136         * config/arm/thumb2.md: Add 16-bit multiply instructions.
21137
21138 2009-05-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
21139
21140         PR tree-optimization/40219
21141         * tree.c (iterative_hash_expr): Make sure the builtin function is
21142         a normal builtin function and not a front end or back end builtin
21143         before indexing into the built_in_decls array.
21144
21145 2009-05-22  Richard Guenther  <rguenther@suse.de>
21146
21147         PR middle-end/38964
21148         * alias.c (write_dependence_p): Do not use TBAA for answering
21149         anti-dependence or output-dependence.
21150         * tree-ssa-structalias.c (set_uids_in_ptset): Remove TBAA pruning code.
21151         (emit_pointer_definition): Remove.
21152         (emit_alias_warning): Likewise.
21153         (find_what_var_points_to): Remove TBAA pruning code.
21154         (find_what_p_points_to): Likewise.  Do not warn about strict-aliasing
21155         violations.
21156         (compute_points_to_sets): Remove code computing the set of
21157         dereferenced pointers.
21158         * tree-data-ref.c (dr_may_alias_p): Properly use the split
21159         oracle for querying anti and output dependencies.
21160         * tree-ssa-alias.c (refs_may_alias_p_1): Add argument specifying
21161         if TBAA may be applied.
21162         (refs_anti_dependent_p): New function.
21163         (refs_output_dependent_p): Likewise.
21164         * tree-ssa-alias.h (refs_anti_dependent_p): Declare.
21165         (refs_output_dependent_p): Likewise.
21166         * doc/tree-ssa.texi (Memory model): New section.
21167         * doc/c-tree.texi (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
21168         * doc/gimple.texi (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
21169         * cfgexpand.c (expand_gimple_basic_block): Do not handle
21170         GIMPLE_CHANGE_DYNAMIC_TYPE or CHANGE_DYNAMIC_TYPE_EXPR.
21171         * expr.c (expand_expr_real_1): Likewise.
21172         * gimple-low.c (lower_stmt): Likewise.
21173         * gimple-pretty-print.c (dump_gimple_stmt): Likewise.
21174         (dump_gimple_cdt): Remove.
21175         * gimple.c (gss_for_code): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
21176         (gimple_size): Likewise.
21177         (walk_gimple_op): Likewise.
21178         (is_gimple_stmt): Likewise.
21179         (walk_stmt_load_store_addr_ops): Likewise.
21180         (gimple_build_cdt): Remove.
21181         * gimple.def (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
21182         * gimple.h (gimple_cdt_new_type): Remove.
21183         (gimple_cdt_new_type_ptr): Likewise.
21184         (gimple_cdt_set_new_type): Likewise.
21185         (gimple_cdt_location): Likewise.
21186         (gimple_cdt_location_ptr): Likewise.
21187         (gimple_cdt_set_location): Likewise.
21188         * gimplify.c (gimplify_expr): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
21189         * tree-cfg.c (remove_useless_stmts_1): Do not handle
21190         GIMPLE_CHANGE_DYNAMIC_TYPE.
21191         (verify_types_in_gimple_stmt): Likewise.
21192         * tree-inline.c (estimate_num_insns): Likewise.
21193         (expand_call_inline): Do not copy DECL_NO_TBAA_P.
21194         (copy_decl_to_var): Likewise.
21195         (copy_result_decl_to_var): Likewise.
21196         * tree-pretty-print.c (dump_generic_node): Do not handle
21197         CHANGE_DYNAMIC_TYPE_EXPR.
21198         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
21199         * tree-ssa-operands.c (get_expr_operands): Likewise.
21200         * tree-ssa-structalias.c (struct variable_info): Remove
21201         no_tbaa_pruning member.
21202         (new_var_info): Do not set it based on DECL_NO_TBAA_P.
21203         (unify_nodes): Do not copy it.
21204         (find_func_aliases): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
21205         (dump_solution_for_var): Do not dump no_tbaa_pruning state.
21206         (set_uids_in_ptset): Do not check it.
21207         (find_what_var_points_to): Likewise.
21208         (compute_tbaa_pruning): Remove.
21209         (compute_points_to_sets): Do not call it.
21210         * tree.c (walk_tree_1): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
21211         * tree.def (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
21212         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Remove.
21213         (CHANGE_DYNAMIC_TYPE_LOCATION): Likewise.
21214         (DECL_NO_TBAA_P): Likewise.
21215         (struct tree_decl_common): Move no_tbaa_flag to unused flags section.
21216         * omp-low.c (copy_var_decl): Do not copy DECL_NO_TBAA_P.
21217         (expand_omp_atomic_pipeline): Do not set it.
21218         * print-tree.c (print_node): Do not dump it.
21219         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
21220         redundant check.
21221
21222 2009-05-22 Vladimir Makarov <vmakarov@redhat.com>
21223
21224         PR target/39856
21225         * reg-stack.c (subst_stack_regs_pat): Remove gcc_assert for note
21226         for clobber.
21227
21228 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
21229
21230         * tree.c (handle_dll_attribute): Mark dllexport'd inlines as
21231         non-external.
21232
21233 2009-05-22  Ben Elliston  <bje@au.ibm.com>
21234
21235         * Makefile.in (bversion.h, s-bversion): New targets.
21236         (TOPLEV_H): Add bversion.h.
21237         * toplev.h: Include "bversion.h".
21238         (ATTRIBUTE_GCC_DIAG): When building with checking disabled, use
21239         the __format__ attribute only if compiling with the same version
21240         of GCC as the sources (the "build version").
21241
21242 2009-05-22  Ben Elliston  <bje@au.ibm.com>
21243
21244         * c-format.c (handle_format_attribute): Fix comment typo.
21245
21246 2009-05-21  Steve Ellcey  <sje@cup.hp.com>
21247
21248         PR target/37846
21249         * config/ia64/ia64.opt (mfused-madd): New.
21250         * config/ia64/ia64.h (TARGET_DEFAULT): Set MASK_FUSED_MADD.
21251         * config/ia64/hpux.h (TARGET_DEFAULT): Ditto.
21252         * config/ia64/ia64.md (maddsf4, msubsf4, nmaddsf4,
21253         madddf4, madddf4_trunc, msubdf4, msubdf4_trunc, nmadddf4,
21254         nmadddf4_truncsf, maddxf4, maddxf4_truncsf, maddxf4_truncdf,
21255         msubxf4, msubxf4_truncsf msubxf4_truncdf, nmaddxf4,
21256         nmaddxf4_truncsf, nmaddxf4_truncdf): Check TARGET_FUSED_MADD.
21257         * config/ia64/vect.md (addv2sf3, subv2sf3): Force fpma/fpms
21258         instruction if !TARGET_FUSED_MADD.
21259         (fpma, fpms): Remove colon from name.
21260
21261 2009-05-22  Richard Guenther  <rguenther@suse.de>
21262
21263         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Record
21264         TMR_ORIGINAL.  Always either record TMR_SYMBOL or TMR_BASE.
21265         * tree-ssa-pre.c (create_component_ref_by_pieces_1): Handle
21266         TARGET_MEM_REF.
21267         (create_expression_by_pieces): Only convert if necessary.
21268         * gimplify.c (gimplify_expr): Handle TARGET_MEM_REF.
21269         * tree-ssa-loop-im.c (gen_lsm_tmp_name): Handle INTEGER_CST.
21270
21271 2009-05-21  Adam Nemet  <anemet@caviumnetworks.com>
21272
21273         * config/mips/mips.md (*extzv_trunc<mode>_exts): Turn into a
21274         regular pattern from a template and rename it ...
21275         (*extzv_truncsi_exts): ... to this.
21276
21277 2009-05-21  Richard Guenther  <rguenther@suse.de>
21278
21279         * cgraph.h (struct cgraph_node): Remove inline_decl member.
21280         * ipa-inline.c (cgraph_mark_inline_edge): Do not check it.
21281         (cgraph_default_inline_p): Likewise.
21282         (cgraph_decide_inlining_incrementally): Likewise.
21283
21284 2009-05-21  H.J. Lu  <hongjiu.lu@intel.com>
21285             Uros Bizjak  <ubizjak@gmail.com>
21286
21287         * config/i386/cpuid.h (bit_MOVBE): New.
21288
21289         * config/i386/driver-i386.c (host_detect_local_cpu): Check movbe.
21290
21291         * config/i386/i386.c (OPTION_MASK_ISA_MOVBE_SET): New.
21292         (OPTION_MASK_ISA_MOVBE_UNSET): Likewise.
21293         (ix86_handle_option): Handle OPT_mmovbe.
21294         (ix86_target_string): Add -mmovbe.
21295         (pta_flags): Add PTA_MOVBE.
21296         (processor_alias_table): Add PTA_MOVBE to "atom".
21297         (override_options): Handle PTA_MOVBE.
21298
21299         * config/i386/i386.h (TARGET_MOVBE): New.
21300
21301         * config/i386/i386.md (bswapsi2): Check TARGET_MOVBE.
21302         (*bswapsi_movbe): New.
21303         (*bswapdi_movbe): Likewise.
21304         (bswapdi2): Renamed to ...
21305         (*bswapdi_1): This.
21306         (bswapdi2): New expander.
21307
21308         * config/i386/i386.opt (mmovbe): New.
21309
21310         * doc/invoke.texi: Document -mmovbe.
21311
21312 2009-05-21  Taras Glek  <tglek@mozilla.com>
21313
21314         * plugin.c (try_init_one_plugin): Updated to new plugin_init API.
21315         * gcc-plugin.h (plugin_init): Updated signature.
21316         * gcc-plugin.h (plugin_name_args): Moved to this header.
21317         * doc/plugins.texi (plugin_init): Updated documention to reflect
21318         API change.
21319         * doc/plugins.texi (plugin_name_args): Added to documention.
21320
21321 2009-05-21  Mark Mitchell  <mark@codesourcery.com>
21322
21323         * config/arm/neon.md (*mul<mode>3add<mode>_neon): New pattern.
21324         (*mul<mode>3neg<mode>add<mode>_neon): Likewise.
21325
21326 2009-05-21  Shujing Zhao  <pearly.zhao@oracle.com>
21327
21328         * config/i386/i386.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P and
21329         JUMP_TABLE_DATA_P predicates where applicable.
21330         * config/i386/predicates.md: Ditto.
21331         * config/i386/sse.md: Ditto.
21332
21333 2009-05-21  Jakub Jelinek  <jakub@redhat.com>
21334
21335         * config/i386/i386.md (adddi_4_rex64, addsi_4, addhi_4): For
21336         operand2 -128 override length_immediate attribute to 1.
21337         * config/i386/predicates.md (constm128_operand): New predicate.
21338
21339         * config/i386/i386.c (memory_address_length): Handle %r12
21340         the same as %rsp and %r13 the same as %rbp.  For %rsp and %rbp
21341         also check REGNO.
21342         (ix86_attr_length_address_default): For MODE_SI lea in 64-bit
21343         mode look through optional ZERO_EXTEND and SUBREG.
21344         * config/i386/i386.md (R12_REG): New define_constant.
21345         (prefix_data16): For sse unit set also for MODE_TI insns.
21346         (prefix_rex): For -m32 always return 0.  For TYPE_IMOVX
21347         insns set if operand 1 is ext_QIreg_operand.
21348         (modrm): For TYPE_IMOV clear only if not MODE_DI.  For
21349         TYPE_{ALU{,1},ICMP,TEST} insn clear if there is non-shortened
21350         immediate.
21351         (*movdi_extzv_1, zero_extendhidi2, zero_extendqidi2): Change
21352         mode from MODE_DI to MODE_SI.
21353         (movdi_1_rex64): Override modrm and length_immediate attributes
21354         only for movabs (TYPE_IMOV, alternative 2).
21355         (zero_extendsidi2_rex64): Clear prefix_0f attribute if TYPE_IMOVX.
21356         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit,
21357         *float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit,
21358         *float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit,
21359         *float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Set
21360         prefix_rex attribute if DImode.
21361         (*adddi_1_rex64, *adddi_2_rex64, *adddi_3_rex64, *adddi_5_rex64,
21362         *addsi_1, *addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
21363         *addsi_3_zext, *addsi_5, *addhi_1_lea, *addhi_1, *addhi_2, *addhi_3,
21364         *addhi_5, *addqi_1_lea, *addqi_1): Override length_immediate
21365         attribute to 1 if TYPE_ALU and operand 2 is const128_operand.
21366         (pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64):
21367         Likewise.  For TYPE_IMOV clear length_immediate attribute.
21368         (*ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashldi3_cconly_rex64,
21369         *ashlsi3_1, *ashlsi3_1_zext, *ashlsi3_cmp, **ashlsi3_cconly,
21370         *ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1, *ashlhi3_cmp,
21371         *ashlhi3_cconly, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
21372         *ashlqi3_cconly): Override length_immediate attribute to 0 if TYPE_ALU
21373         or one operand TYPE_ISHIFT.
21374         (*ashrdi3_1_one_bit_rex64, *ashrdi3_one_bit_cmp_rex64,
21375         *ashrdi3_one_bit_cconly_rex64, *ashrsi3_1_one_bit,
21376         *ashrsi3_1_one_bit_zext, *ashrsi3_one_bit_cmp,
21377         *ashrsi3_one_bit_cconly, *ashrsi3_one_bit_cmp_zext,
21378         *ashrhi3_1_one_bit, *ashrhi3_one_bit_cmp, *ashrhi3_one_bit_cconly,
21379         *ashrqi3_1_one_bit, *ashrqi3_1_one_bit_slp, *ashrqi3_one_bit_cmp,
21380         *ashrqi3_one_bit_cconly, *lshrdi3_1_one_bit_rex64,
21381         *lshrdi3_cmp_one_bit_rex64, *lshrdi3_cconly_one_bit_rex64,
21382         *lshrsi3_1_one_bit, *lshrsi3_1_one_bit_zext, *lshrsi3_one_bit_cmp,
21383         *lshrsi3_one_bit_cconly, *lshrsi3_cmp_one_bit_zext,
21384         *lshrhi3_1_one_bit, *lshrhi3_one_bit_cmp, *lshrhi3_one_bit_cconly,
21385         *lshrqi3_1_one_bit, *lshrqi3_1_one_bit_slp, *lshrqi2_one_bit_cmp,
21386         *lshrqi2_one_bit_cconly, *rotlsi3_1_one_bit_rex64, *rotlsi3_1_one_bit,
21387         *rotlsi3_1_one_bit_zext, *rotlhi3_1_one_bit, *rotlqi3_1_one_bit_slp,
21388         *rotlqi3_1_one_bit, *rotrdi3_1_one_bit_rex64, *rotrsi3_1_one_bit,
21389         *rotrsi3_1_one_bit_zext, *rotrhi3_one_bit, *rotrqi3_1_one_bit,
21390         *rotrqi3_1_one_bit_slp): Override length_immediate attribute to 0,
21391         set mode attribute, don't override length attribute.
21392         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Set prefix_0f attribute
21393         to 1.
21394         (return_internal_long): Set length attribute to 2 instead of 1.
21395         (*strmovqi_rex_1, *strsetqi_rex_1, *rep_stosqi_rex64,
21396         *cmpstrnqi_nz_rex_1, *cmpstrnqi_rex_1, *strlenqi_rex_1): Clear
21397         prefix_rex attribute.
21398         * config/i386/predicates.md (ext_QIreg_operand, const128_operand):
21399         New predicates.
21400         (memory_displacement_only_operand): Always return 0 for TARGET_64BIT.
21401
21402 2009-05-21  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
21403
21404         * config/arm/thumb2.md (orsi_notsi_si): Fix typo in pattern.
21405
21406 2009-05-20  Ian Lance Taylor  <iant@google.com>
21407
21408         * tree.c (build_tree_list_vec_stat): New function.
21409         (ctor_to_vec): New function.
21410         (build_nt_call_vec): New function.
21411         (build_call_array): Change args to be a const pointer.
21412         (build_call_vec): New function.
21413         * tree.h (build_nt_call_vec): Declare.
21414         (build_tree_list_vec_stat): Declare.
21415         (build_tree_list_vec): Define.
21416         (build_call_array): Update declaration.
21417         (build_call_vec): Declare.
21418         (ctor_to_vec): Declare.
21419         * c-common.c (tree_vector_cache): New static variable.
21420         (make_tree_vector): New function.
21421         (release_tree_vector): New function.
21422         (make_tree_vector_single): New function.
21423         (make_tree_vector_copy): New function.
21424         * c-common.h (tree_vector_cache, make_tree_vector): Declare.
21425         (make_tree_vector_single, make_tree_vector_copy): Declare.
21426         * c-parser.c (cached_expr_list_1, cached_expr_list_2): Remove.
21427         (c_parser_expr_list): Don't manage cache here, instead call
21428         make_tree_vector.
21429         (c_parser_release_expr_list): Remove static function.
21430         (c_parser_vec_to_tree_list): Remove static function.
21431         (c_parser_attributes): Call build_tree_list_vec instead of
21432         c_parser_vec_to_tree_list.  Call release_tree_vector instead of
21433         c_parser_release_expr_list.
21434         (c_parser_postfix_expression_after_primary): Likewise.
21435         (c_parser_objc_keywordexpr): Likewise.
21436
21437 2009-05-20  Sandra Loosemore  <sandra@codesourcery.com>
21438
21439         * doc/tm.texi (Misc): Document TARGET_INVALID_PARAMETER_TYPE,
21440         TARGET_INVALID_RETURN_TYPE, TARGET_PROMOTED_TYPE, and
21441         TARGET_CONVERT_TO_TYPE.
21442         * hooks.c (hook_tree_const_tree_null): Define.
21443         * hooks.h (hook_tree_const_tree_null): Declare.
21444         * target.h (struct gcc_target):  Add invalid_parameter_type,
21445         invalid_return_type, promoted_type, and convert_to_type fields.
21446         * target-def.h (TARGET_INVALID_PARAMETER_TYPE): Define.
21447         (TARGET_INVALID_RETURN_TYPE): Define.
21448         (TARGET_PROMOTED_TYPE): Define.
21449         (TARGET_CONVERT_TO_TYPE): Define.
21450         (TARGET_INITIALIZER): Update for new fields.
21451         * c-decl.c (grokdeclarator): Check targetm.invalid_return_type.
21452         (grokparms): Check targetm.invalid_parameter_type.
21453         * c-typeck.c (default_conversion): Check targetm.promoted_type.
21454         * c-convert.c (convert): Check targetm.convert_to_type.
21455
21456 2009-05-20  Adam Nemet  <anemet@caviumnetworks.com>
21457
21458         * config/mips/mips.md (*extenddi_truncate<mode>,
21459         *extendsi_truncate<mode>): Emit exts if supported.  Add attribute
21460         defintions.
21461         (*extendhi_truncateqi): New define_insn_and_sptit.
21462
21463 2009-05-20  Jakub Jelinek  <jakub@redhat.com>
21464
21465         PR middle-end/40204
21466         * fold-const.c (fold_binary) <case BIT_AND_EXPR>: Avoid infinite
21467         recursion if build_int_cst_type returns the same INTEGER_CST as arg1.
21468
21469 2009-05-20  Eric Botcazou  <ebotcazou@adacore.com>
21470
21471         * fold-const.c (build_fold_addr_expr_with_type): Take the address of
21472         the operand of VIEW_CONVERT_EXPR.
21473
21474 2009-05-20  H.J. Lu  <hongjiu.lu@intel.com>
21475
21476         * config/i386/driver-i386.c (host_detect_local_cpu): Check
21477         extended family and model for Intel processors.  Support Intel Atom.
21478
21479 2009-05-20  Olivier Hainque  <hainque@adacore.com>
21480
21481         * gstab.h (stab_code_type): Define, to be used instead of the
21482         __stab_debug_code enum, made anonymous.  Add 2009 to the copyright
21483         notice.
21484         * dbxout.c (STAB_CODE_TYPE): Remove #define and replace use
21485         occurrences by stab_code_type.
21486         * mips-tfile.c (STAB_CODE_TYPE): Remove #define, unused.
21487
21488 2009-05-20  Martin Jambor  <mjambor@suse.cz>
21489
21490         * tree-flow.h (insert_edge_copies_seq): Undeclare.
21491         (sra_insert_before): Likewise.
21492         (sra_insert_after): Likewise.
21493         (sra_init_cache): Likewise.
21494         (sra_type_can_be_decomposed_p): Likewise.
21495         * tree-mudflap.c (insert_edge_copies_seq): Copied here from tree-sra.c
21496         * tree-sra.c (sra_type_can_be_decomposed_p): Made static.
21497         (sra_insert_before): Likewise.
21498         (sra_insert_after): Likewise.
21499         (sra_init_cache): Likewise.
21500         (insert_edge_copies_seq): Made static and moved upwards.
21501
21502         * tree-complex.c (extract_component): Added VIEW_CONVERT_EXPR switch
21503         case.
21504
21505         * tree-flow-inline.h (contains_view_convert_expr_p): New function.
21506
21507         * ipa-prop.c (get_ssa_def_if_simple_copy): New function.
21508         (determine_cst_member_ptr): Call get_ssa_def_if_simple_copy to skip
21509         simple copies.
21510
21511 2009-05-20  Richard Guenther  <rguenther@suse.de>
21512
21513         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
21514         with mismatched comparison modes.
21515
21516 2009-05-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
21517
21518         * config/arm/arm.md (*arm_iorsi3): Refactored for only ARM.
21519         (peephole ior (reg, int) -> mov, ior): Refactored for only ARM.
21520         * config/arm/thumb2.md (*thumb_andsi_not_shiftsi_si): Allow bic
21521         with shifts for Thumb2.
21522         (orsi_notsi): New for orn.
21523         (*thumb_orsi_notshiftsi_si): Allow orn with shifts.
21524         (*thumb2_iorsi3): Rewrite support for iorsi for Thumb2.
21525         * config/arm/arm.c (const_ok_for_op): Split case for IOR for Thumb2.
21526         (arm_gen_constant): Set can_invert for IOR and Thumb2, Add comments.
21527         Don't invert remainder for IOR.
21528
21529 2009-05-19  Zdenek Dvorak  <ook@ucw.cz>
21530
21531         PR tree-optimization/40087
21532         * tree-ssa-loop-niter.c (number_of_iterations_ne_max,
21533         number_of_iterations_ne): Rename never_infinite argument.
21534         (number_of_iterations_lt_to_ne, number_of_iterations_lt,
21535         number_of_iterations_le): Handle pointer-type ivs when
21536         exit_must_be_taken is false.
21537         (number_of_iterations_cond):  Do not always assume that
21538         exit_must_be_taken if the control variable is a pointer.
21539
21540 2009-05-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21541
21542         * c-typeck.c (build_binary_op): Allow % on integal vectors.
21543         * doc/extend.texi (Vector Extension): Document that % is allowed too.
21544
21545 2009-05-19  H.J. Lu  <hongjiu.lu@intel.com>
21546
21547         * config/i386/i386.c (ix86_avoid_jump_mispredicts): Check
21548         ASM_OUTPUT_MAX_SKIP_PAD instead of ASM_OUTPUT_MAX_SKIP_ALIGN.
21549
21550 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
21551
21552         PR c/40172
21553         * c.opt (Wlogical-op): Disabled by default.
21554         * c-opt (c_common_post_options): Do not enable Wlogical-op with
21555         Wextra.
21556         * doc/invoke.texi (Wlogical-op): Likewise.
21557
21558 2009-05-19  Eric Botcazou  <ebotcazou@adacore.com>
21559
21560         * tree-scalar-evolution.c (follow_ssa_edge_expr) <NOP_EXPR>: Turn
21561         into CASE_CONVERT.
21562         <PLUS_EXPR>: Strip useless type conversions instead of type nops.
21563         Propagate the type of the first operand.
21564         <ASSERT_EXPR>: Simplify.
21565         (follow_ssa_edge_in_rhs): Use gimple_expr_type to get the type.
21566         Rewrite using the RHS code as discriminant.
21567         <NOP_EXPR>: Turn into CASE_CONVERT.
21568         <PLUS_EXPR>: Propagate the type of the first operand.
21569
21570 2009-05-19  Steve Ellcey  <sje@cup.hp.com>
21571
21572         * config/ia64/ia64-protos.h (ia64_dconst_0_5): New.
21573         (ia64_dconst_0_375): New.
21574         * config/ia64/ia64.c (ia64_override_options): Remove
21575         -minline-sqrt-min-latency warning.
21576         (ia64_dconst_0_5_rtx, ia64_dconst_0_5): New.
21577         (ia64_dconst_0_375_rtx, ia64_dconst_0_375): New
21578         * config/ia64/ia64.md (*sqrt_approx): Remove.
21579         (sqrtsf2): Remove #if 0.
21580         (sqrtsf2_internal_thr): Rewrite and move to div.md.
21581         (sqrtdf): Remove assert.
21582         (sqrtdf2_internal_thr): Rewrite and move to div.md.
21583         (sqrtxf2): Remove #if 0.
21584         (sqrtxf2_internal_thr): Rewrite and move to div.md.
21585         * div.md (sqrt_approx_rf): New.
21586         (sqrtsf2_internal_thr): New implementation.
21587         (sqrtsf2_internal_lat): New.
21588         (sqrtdf2_internal_thr: New implementation.
21589         (sqrtxf2_internal): New implementation.
21590
21591 2009-05-19  Francois-Xavier Coudert  <fxcoudert@gmail.com>
21592             Hans-Peter Nilsson  <hp@axis.com>
21593
21594         * defaults.h (UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE)
21595         (WCHAR_TYPE, MODIFIED_WCHAR_TYPE, PTRDIFF_TYPE, WINT_TYPE)
21596         (INTMAX_TYPE, UINTMAX_TYPE, SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE)
21597         (INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE)
21598         (UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE)
21599         (INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE)
21600         (UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE)
21601         (INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE)
21602         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE)
21603         (SIZE_TYPE, PID_TYPE, CHAR16_TYPE, CHAR32_TYPE): Move defaults here...
21604         * c-common.c: ...from here.
21605
21606 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
21607
21608         * c-common.c (warn_logical_operator): Remove unnecessary conditionals.
21609
21610 2009-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
21611
21612         * builtins.c (do_mpc_arg1): Separate MPFR/MPC C rounding types.
21613
21614 2009-05-19  Ben Elliston  <bje@au.ibm.com>
21615
21616         * unwind-dw2-fde.c (fde_unencoded_compare): Replace type punning
21617         assignments with memcpy calls.
21618         (add_fdes): Likewise.
21619         (binary_search_unencoded_fdes): Likewise.
21620         (linear_search_fdes): Eliminate type puns.
21621
21622 2009-05-19  Richard Guenther  <rguenther@suse.de>
21623
21624         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do
21625         not falsely claim to have propagated into all uses.
21626
21627 2009-05-19  Ben Elliston  <bje@au.ibm.com>
21628
21629         * doc/invoke.texi (C Dialect Options): Update OpenMP specification
21630         version to v3.0.
21631
21632 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
21633
21634         * config/sh/sh-protos.h (sh_legitimate_address_p): Remove.
21635         * config/sh/sh.c (sh_legitimate_address_p): Make static.
21636         (TARGET_LEGITIMATE_ADDRESS_P): New.
21637         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21638         * config/sh/sh.md: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
21639
21640 2009-05-18  Dodji Seketeli  <dodji@redhat.com>
21641
21642         PR debug/40109
21643         * dwarf2out.c (gen_type_die_with_usage): Generate the DIE as a
21644         child of the containing namespace's DIE.
21645
21646 2009-05-18  Adam Nemet  <anemet@caviumnetworks.com>
21647
21648         * config/mips/mips.md (*zero_extend<GPR:mode>_trunc<SHORT:mode>,
21649         *zero_extendhi_truncqi):  Move after the zero_extend patterns.
21650         (*extenddi_truncate<mode>, *extendsi_truncate<mode>): Move after the
21651         extend patterns.
21652
21653 2009-05-18  H.J. Lu  <hongjiu.lu@intel.com>
21654
21655         PR target/39942
21656         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Replace
21657         gen_align with gen_pad.
21658         (ix86_reorg): Check ASM_OUTPUT_MAX_SKIP_PAD instead of
21659         #ifdef ASM_OUTPUT_MAX_SKIP_ALIGN.
21660
21661         * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): New.
21662         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
21663
21664         * config/i386/i386.md (align): Renamed to ...
21665         (pad): This.  Replace ASM_OUTPUT_MAX_SKIP_ALIGN with
21666         ASM_OUTPUT_MAX_SKIP_PAD.
21667
21668 2009-05-18  Andreas Schwab  <schwab@linux-m68k.org>
21669
21670         * config.gcc: Fix variable syntax.
21671
21672         PR target/39531
21673         * config/m68k/m68k.c (output_andsi3): Mask off sign bit copies
21674         before calling exact_log2.
21675         (output_iorsi3): Likewise.
21676         (output_xorsi3): Likewise.
21677
21678 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
21679
21680         * config/sh/sh.c (expand_cbranchdi4): Use a scratch register
21681         for the none zero constant operand except for EQ and NE
21682         comprisons even when the first operand is R0.
21683
21684 2009-05-18  Andreas Krebbel  <krebbel1@de.ibm.com>
21685
21686         * config/s390/2064.md: Remove trailing whitespaces.
21687         * config/s390/2084.md: Likewise.
21688         * config/s390/constraints.md: Likewise.
21689         * config/s390/fixdfdi.h: Likewise.
21690         * config/s390/libgcc-glibc.ver: Likewise.
21691         * config/s390/s390-modes.def: Likewise.
21692         * config/s390/s390-protos.h: Likewise.
21693         * config/s390/s390.c: Likewise.
21694         * config/s390/s390.h: Likewise.
21695         * config/s390/s390.md: Likewise.
21696         * config/s390/tpf-unwind.h: Likewise.
21697
21698 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
21699
21700         * config/m68k/m68k.c (m68k_legitimize_address): Fix typo in signature.
21701
21702 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
21703
21704         M68K TLS support.
21705         * configure.ac (m68k-*-*): Check if binutils support TLS.
21706         * configure: Regenerate.
21707         * config/m68k/predicates.md (symbolic_operand): Extend comment.
21708         * config/m68k/constraints.md (Cu): New constraint.
21709         * config/m68k/m68k.md (UNSPEC_GOTOFF): Remove.
21710         (UNSPEC_RELOC16, UNSPEC_RELOC32): New constants.
21711         (movsi): Handle TLS symbols.
21712         (addsi3_5200): Handle XTLS symbols, indent.
21713         * config/m68k/m68k-protos.h (m68k_legitimize_tls_address): Declare.
21714         (m68k_tls_reference_p): Declare.
21715         (m68k_legitimize_address): Declare.
21716         (m68k_unwrap_symbol): Declare.
21717         * config/m68k/m68k.opt (mxtls): New option.
21718         * config/m68k/m68k.c (ggc.h): Include.
21719         (m68k_output_dwarf_dtprel): Implement hook.
21720         (TARGET_HAVE_TLS, TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
21721         (m68k_expand_prologue): Load GOT pointer when function needs it.
21722         (m68k_illegitimate_symbolic_constant_p): Handle TLS symbols.
21723         (m68k_legitimate_constant_address_p): Same.
21724         (m68k_decompose_address): Handle TLS references.
21725         (m68k_get_gp): New static function.
21726         (enum m68k_reloc): New contants.
21727         (TLS_RELOC_P): New macro.
21728         (m68k_wrap_symbol): New static function.
21729         (m68k_unwrap_symbol): New function.
21730         (m68k_final_prescan_insn_1): New static function.
21731         (m68k_final_prescan_insn): New function.
21732         (m68k_move_to_reg, m68k_wrap_symbol_into_got_ref): New static
21733         functions.
21734         (legitimize_pic_address): Handle TLS references..
21735         (m68k_tls_get_addr, m68k_get_tls_get_addr)
21736         (m68k_libcall_value_in_a0_p)
21737         (m68k_call_tls_get_addr, m68k_read_tp, m68k_get_m68k_read_tp)
21738         (m68k_call_m68k_read_tp): Helper variables and functions for ...
21739         (m68k_legitimize_tls_address): Handle TLS references.
21740         (m68k_tls_symbol_p, m68k_tls_reference_p_1, m68k_tls_reference_p):
21741         New functions.
21742         (m68k_legitimize_address): Handle TLS symbols.
21743         (m68k_get_reloc_decoration): New static function.
21744         (m68k_output_addr_const_extra): Handle UNSPEC_RELOC16 and
21745         UNSPEC_RELOC32.
21746         (m68k_output_dwarf_dtprel): Implement hook.
21747         (print_operand_address): Handle UNSPEC_RELOC16 adn UNSPEC_RELOC32.
21748         (m68k_libcall_value): Return result in A0 instead of D0 when asked by
21749         m68k_call_* routines.
21750         (sched_attr_op_type): Handle TLS symbols.
21751         (gt-m68k.h): Include.
21752         * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
21753         (LEGITIMATE_PIC_OPERAND_P): Support TLS.
21754
21755 2009-05-18  Martin Jambor  <mjambor@suse.cz>
21756
21757         * ipa-prop.c (ipa_check_stmt_modifications): Removed.
21758         (visit_store_addr_for_mod_analysis): New function.
21759         (ipa_detect_param_modifications): Use walk_stmt_load_store_addr_ops.
21760         (determine_cst_member_ptr): Use gimple_assign_single_p.
21761         (ipa_get_stmt_member_ptr_load_param): Use gimple_assign_single_p.
21762         (ipa_analyze_call_uses): Use !gimple_assign_rhs2 rather than number of
21763         operands.  Don't check number of operands of a NOP_EXPR.
21764
21765 2009-05-18  Eric Fisher  <joefoxreal@gmail.com>
21766
21767         * doc/tree-ssa.texi (SSA Operands): Fix a mistake.
21768
21769 2009-05-17  Manuel López-Ibáñez  <manu@gcc.gnu.org>
21770
21771         PR c/40172
21772         * c-common.c (warn_logical_operator): Don't warn if one of
21773         expression isn't always true or false.
21774
21775 2009-05-17  Kai Tietz  <kai.tietz@onevision.com>
21776
21777         * config/i386/biarch32.h: New file.
21778         * config.gcc: Add for target i386-w64-* the biarch32.h to tm_file.
21779
21780 2009-05-17  Adam Nemet  <anemet@caviumnetworks.com>
21781
21782         * config/mips/mips.md (*zero_extend<mode>_trunchi,
21783         *zero_extend<mode>_truncqi): Merge these into ...
21784         (*zero_extend<GPR:mode>_trunc<SHORT:mode>): ... this new pattern.
21785         Name the pattern following this as *zero_extendhi_truncqi.
21786
21787 2009-05-16  Brad Lucier  <lucier@math.purdue.edu>
21788
21789         PR middle-end/39301
21790         * hwint.h: Add macro HOST_WIDEST_INT_PRINT.
21791         * bitmap.c (bitmap_descriptor): Make fields HOST_WIDEST_INT.
21792         (output_info): Make field HOST_WIDEST_INT.
21793         (print_statistics): Use HOST_WIDEST_INT_PRINT.
21794         (dump_bitmat_statistics): Same.
21795
21796 2009-05-16  Francois-Xavier Coudert  <fxcoudert@gmail.com>
21797
21798         * config.gcc (use_gcc_stdint):  Set to wrap.
21799         * config/darwin.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
21800         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
21801         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
21802         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
21803         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
21804         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
21805         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
21806         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
21807
21808 2009-05-16  Joseph Myers  <joseph@codesourcery.com>
21809
21810         * config.gcc (mips*-*-*): Support arch_32, arch_64, tune_32 and
21811         tune_64.
21812         * config/mips/mips.h (MIPS_ABI_DEFAULT, MULTILIB_ABI_DEFAULT):
21813         Move definitions earlier.
21814         (OPT_ARCH64, OPT_ARCH32): Define.
21815         (OPTION_DEFAULT_SPECS): Add entries for arch_32, arch_64, tune_32
21816         and tune_64.
21817
21818 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
21819
21820         PR target/40153
21821         * arm.md (cstoresi_nltu_thumb1): Use a neg of ltu as the pattern name
21822         implies.
21823
21824 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
21825
21826         * arm.md (movdi2): Copy non-reg values to DImode registers.
21827
21828 2009-05-16  Jakub Jelinek  <jakub@redhat.com>
21829
21830         PR target/39942
21831         * final.c (label_to_max_skip): New function.
21832         (label_to_alignment): Only use LABEL_TO_ALIGNMENT if
21833         CODE_LABEL_NUMBER <= max_labelno.
21834         * output.h (label_to_max_skip): New prototype.
21835         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Renamed to...
21836         (ix86_avoid_jump_mispredicts): ... this.  Don't define if
21837         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.  Update comment.
21838         Handle CODE_LABELs with >= 16 byte alignment or with
21839         max_skip == (1 << align) - 1.
21840         (ix86_reorg): Don't call ix86_avoid_jump_mispredicts if
21841         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.
21842
21843         PR target/39942
21844         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Don't emit second
21845         .p2align 3 if MAX_SKIP is smaller than 7.
21846         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
21847
21848 2009-05-15  Ian Lance Taylor  <iant@google.com>
21849
21850         * alias.c (struct alias_set_entry_d): Rename from struct
21851         alias_set_entry.  Change all uses.
21852         * except.c (struct call_site_record_d): Rename from struct
21853         call_site_record.  Change all uses.
21854         * except.h (struct eh_region_d): Rename from struct eh_region.
21855         Change all uses.
21856         * gcse.c (struct hash_table_d): Rename from struct hash_table.
21857         Change all uses.
21858         * graphite.c (struct ivtype_map_elt_d): Rename fromstruct
21859         ivtype_map_elt.  Change all uses.
21860         (struct rename_map_elt_d): Rename fromstruct rename_map_elt.
21861         Change all uses.
21862         (struct ifsese_d): Rename fromstruct ifsese.  Change all uses.
21863         * graphite.h (struct name_tree_d): Rename from struct name_tree.
21864         Change all uses.
21865         (struct sese_d): Rename from struct sese.  Change all uses.
21866         * omega.h (struct eqn_d): Rename from struct eqn.  Change all uses.
21867         (struct omega_pb_d): Rename from struct omega_pb.  Change all uses.
21868         * optabs.h (struct optab_d): Rename from struct optab.  Change all
21869         uses.
21870         (struct convert_optab_d): Rename from struct convert_optab.
21871         Change all uses.
21872         * tree-pass.h (struct ipa_opt_pass_d): Rename fromstruct
21873         ipa_opt_pass.  Change all uses.
21874         * tree-predcom.c (struct dref_d): Rename from struct dref.  Change
21875         all uses.
21876
21877         * c-decl.c (pushtag): If -Wc++-compat, warn if the tag is already
21878         defined as a typedef.
21879         (grokdeclarator): If -Wc++-compat, warn if a typedef is already
21880         defined as a tag.
21881
21882 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
21883
21884         PR 16302
21885         * fold-const.c (make_range,build_range_check,merge_ranges): Move
21886         declaration to...
21887         (merge_ranges): Returns bool.
21888         * tree.h (make_range): .. to here.
21889         (build_range_check): Likewise.
21890         (merge_ranges): Likewise. Renamed from merge_ranges.
21891         * c-typeck.c (parser_build_binary_op): Update calls to
21892         warn_logical_operator.
21893         * c-common.c (warn_logical_operator): Add new warning.
21894         * c-common.h (warn_logical_operator): Update declaration.
21895
21896 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
21897
21898         * ira-conflicts.c (add_insn_allocno_copies): Fix wrong conditional.
21899
21900 2009-05-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
21901
21902         * doc/install.texi: Document MPC requirements, flags etc.
21903
21904         * builtins.c (do_mpc_arg1, fold_builtin_ccos): New.
21905         (fold_builtin_cexp): Ensure we get a complex REAL_TYPE.
21906         Evaluate constant arguments.
21907         (fold_builtin_carg): Ensure we get a complex REAL_TYPE.
21908         (fold_builtin_1): Likewise, also evaluate constant arguments.
21909         Remove superfluous break.
21910         (do_mpc_ckconv): New.
21911         * real.h: Include mpc.h.
21912         * toplev.c (print_version): Output MPC version info if available.
21913
21914 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
21915
21916         * fold-const.c (fold_convert_const_real_from_real): Check for overflow.
21917
21918 2009-05-15  H.J. Lu  <hongjiu.lu@intel.com>
21919
21920         * config/i386/i386.c (ix86_reorg): Call optimize_function_for_speed_p
21921         only once.
21922
21923 2009-05-15  Jan Hubicka  <jh@suse.cz>
21924
21925         * doc/invoke.texi (max-early-inliner-iterations): New flag.
21926         * ipa-inline.c (enum inlining_mode): New INLINE_SIZE_NORECURSIVE.
21927         (try_inline): Fix return value.
21928         (cgraph_decide_inlining_incrementally): Honor new value.
21929         (cgraph_early_inlining): Handle indirect inlining.
21930         * params.def (PARAM_EARLY_INLINER_MAX_ITERATIONS): New.
21931
21932 2009-05-15  Jan Hubicka  <jh@suse.cz>
21933
21934         * cgraph.h (struct cgraph_node): Add finalized_by_frotnend flag.
21935         * cgraphunit.c (cgraph_finalize_function): Set it.
21936         (cgraph_expand_function): Use it.
21937
21938 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
21939
21940         * real.c (encode_ieee_half): Define.
21941         (decode_ieee_half): Define.
21942         (ieee_half_format): Define.
21943         (arm_half_format): Define.
21944         * real.h (ieee_half_format): Declare.
21945         (arm_half_format): Declare.
21946
21947 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
21948
21949         * optabs.c (prepare_float_lib_cmp):  Test that the comparison,
21950         swapped, and reversed optabs exist before trying to use them.
21951
21952 2009-05-15  Paul Brook  <paul@codesourcery.com>
21953             Sandra Loosemore  <sandra@codesourcery.com>
21954
21955         * config/arm/arm.c (neon_vector_mem_operand): Handle element/structure
21956         loads.  Allow PRE_DEC.
21957         (output_move_neon): Handle PRE_DEC.
21958         (arm_print_operand): Add 'A' for neon structure loads.
21959         * config/arm/arm-protos.h (neon_vector_mem_operand): Update prototype.
21960         * config/arm/neon.md (neon_mov): Update comment.
21961         * config/arm/constraints.md (Un, Us): Update neon_vector_mem_operand
21962         calls.
21963         (Um): New constraint.
21964
21965 2009-05-15  Jan Hubicka  <jh@suse.cz>
21966
21967         Revert the following patch until testsuite fallout is fixed:
21968         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
21969         * cgraph.h (struct inline_summary): New filed self_wize,
21970         size_inlining_benefit, self_time and time_inlining_benefit.
21971         (struct cgraph_global_info): Replace insns by time ans size fields.
21972         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
21973         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
21974         (ipcp_update_callgraph): Do not touch function bodies.
21975         * ipa-inline.c: Include except.h
21976         (MAX_TIME): New constant.
21977         (overall_insns): Remove
21978         (overall_size, max_benefit): New static variables.
21979         (cgraph_estimate_time_after_inlining): New function.
21980         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
21981         (cgraph_clone_inlined_nodes): Update size.
21982         (cgraph_mark_inline_edge): Update size.
21983         (cgraph_estimate_growth): Use size info.
21984         (cgraph_check_inline_limits): Check size.
21985         (cgraph_default_inline_p): Likewise.
21986         (cgraph_edge_badness): Compute badness based on benefit and size cost.
21987         (cgraph_decide_recursive_inlining): Check size.
21988         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
21989         and times.
21990         (cgraph_decide_inlining): Likewise.
21991         (cgraph_decide_inlining_incrementally): Likewise; honor
21992         PARAM_EARLY_INLINING_INSNS.
21993         (likely_eliminated_by_inlining_p): New predicate.
21994         (estimate_function_body_sizes): New function.
21995         (compute_inline_parameters): Use it.
21996         * except.c (must_not_throw_labels): New function.
21997         * except.h (must_not_throw_labels): Declare.
21998         * tree-inline.c (init_inline_once): Kill inlining_weigths
21999         * tree-ssa-structalias.c: Avoid uninitialized warning.
22000         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
22001         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
22002         (PARAM_INLINE_CALL_COST): Remove.
22003         (PARAM_EARLY_INLINING_INSNS): New.
22004
22005 2009-05-15  Richard Guenther  <rguenther@suse.de>
22006
22007         * tree-ssa-pre.c (eliminate): Use TODO_update_ssa_only_virtuals,
22008         not TODO_update_ssa.
22009
22010 2009-05-15  Richard Guenther  <rguenther@suse.de>
22011
22012         PR tree-optimization/39999
22013         * gimple.h (gimple_expr_type): Use the expression type looking
22014         through useless conversions.
22015         * tree-ssa-sccvn.c (vn_nary_op_lookup_stmt): Use gimple_expr_type.
22016         (vn_nary_op_insert_stmt): Likewise.
22017         (simplify_binary_expression): Likewise.
22018
22019 2009-05-15  Richard Guenther  <rguenther@suse.de>
22020
22021         * common.opt (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
22022         New options, enabled by default.
22023         * doc/invoke.texi (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
22024         Document.
22025         * tree-ssa-forwprop.c (gate_forwprop): Use flag_tree_forwprop.
22026         * tree-ssa-phiprop.c (gate_phiprop): Use flag_tree_phiprop.
22027         * tree-ssa-structalias.c (gate_tree_pta): New function.
22028         (pass_build_alias): Use it.
22029
22030 2009-05-15  Joseph Myers  <joseph@codesourcery.com>
22031
22032         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also
22033         recurse on an invariant address if a conversion from a pointer
22034         type to a wider integer type is involved.
22035
22036 2009-05-15  Jan Hubicka  <jh@suse.cz>
22037
22038         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
22039         * cgraph.h (struct inline_summary): New filed self_wize,
22040         size_inlining_benefit, self_time and time_inlining_benefit.
22041         (struct cgraph_global_info): Replace insns by time ans size fields.
22042         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
22043         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
22044         (ipcp_update_callgraph): Do not touch function bodies.
22045         * ipa-inline.c: Include except.h
22046         (MAX_TIME): New constant.
22047         (overall_insns): Remove
22048         (overall_size, max_benefit): New static variables.
22049         (cgraph_estimate_time_after_inlining): New function.
22050         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
22051         (cgraph_clone_inlined_nodes): Update size.
22052         (cgraph_mark_inline_edge): Update size.
22053         (cgraph_estimate_growth): Use size info.
22054         (cgraph_check_inline_limits): Check size.
22055         (cgraph_default_inline_p): Likewise.
22056         (cgraph_edge_badness): Compute badness based on benefit and size cost.
22057         (cgraph_decide_recursive_inlining): Check size.
22058         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
22059         and times.
22060         (cgraph_decide_inlining): Likewise.
22061         (cgraph_decide_inlining_incrementally): Likewise; honor
22062         PARAM_EARLY_INLINING_INSNS.
22063         (likely_eliminated_by_inlining_p): New predicate.
22064         (estimate_function_body_sizes): New function.
22065         (compute_inline_parameters): Use it.
22066         * except.c (must_not_throw_labels): New function.
22067         * except.h (must_not_throw_labels): Declare.
22068         * tree-inline.c (init_inline_once): Kill inlining_weigths
22069         * tree-ssa-structalias.c: Avoid uninitialized warning.
22070         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
22071         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
22072         (PARAM_INLINE_CALL_COST): Remove.
22073         (PARAM_EARLY_INLINING_INSNS): New.
22074         doc/invoke.texi (max-inline-insns-auto, early-inlining-insns): Update.
22075         (inline-call-cost): Remove.
22076         (early-inlining-insns): New.
22077
22078 2009-05-15  Eric Botcazou  <ebotcazou@adacore.com>
22079
22080         * dbxout.c (dbxout_range_type): Add LOW and HIGH parameters.  Use them
22081         for bounds.
22082         (print_int_cst_bounds_in_octal_p): Likewise.
22083         (dbxout_type): Adjust calls to above functions.  Be prepared to deal
22084         with subtypes.
22085         * dwarf2out.c (base_type_die): Likewise.
22086         (is_subrange_type): Delete.
22087         (subrange_type_die): Add LOW and HIGH parameters.  Use them for bounds.
22088         (modified_type_die): Call subrange_type_for_debug_p on subtypes.
22089         * fold-const.c (fold_truth_not_expr) <CONVERT_EXPR>: Do not strip it
22090         if the destination type is boolean.
22091         (build_range_check): Do not special-case subtypes.
22092         (fold_sign_changed_comparison): Likewise.
22093         (fold_unary): Likewise.
22094         * langhooks-def.h (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define.
22095         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_GET_SUBRANGE_BOUNDS.
22096         * langhooks.h (lang_hooks_for_types): Add get_subrange_bounds.
22097         * tree.c (subrange_type_for_debug_p): New predicate based on the
22098         former is_subrange_type.
22099         * tree.h (subrange_type_for_debug_p): Declare.
22100         * tree-chrec.c (avoid_arithmetics_in_type_p): Delete.
22101         (convert_affine_scev): Remove call to above function.
22102         (chrec_convert_aggressive): Likewise.
22103         * tree-ssa.c (useless_type_conversion_p_1): Do not specifically return
22104         false for conversions involving subtypes.
22105         * tree-vrp.c (vrp_val_max): Do not special-case subtypes.
22106         (vrp_val_min): Likewise.
22107         (needs_overflow_infinity): Likewise.
22108         (extract_range_from_unary_expr): Likewise.
22109
22110 2009-05-15  Paolo Bonzini  <bonzini@gnu.org>
22111
22112         * config/frv/frv.h: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
22113         * config/frv/frv.c: Likewise.
22114         * config/s390/s390.c: Likewise.
22115         * config/sparc/sparc.h: Likewise.
22116         * config/i386/i386.h: Likewise.
22117         * config/i386/i386.c: Likewise.
22118         * config/crx/crx.c: Likewise.
22119         * config/m68hc11/m68hc11.h: Likewise.
22120         * config/iq2000/iq2000.c: Likewise.
22121         * config/mn10300/mn10300.h: Likewise.
22122         * config/mn10300/mn10300.c: Likewise.
22123         * config/m68k/m68k.c: Likewise.
22124         * config/rs6000/rs6000.c: Likewise.
22125         * config/rs6000/xcoff.h: Likewise.
22126         * config/rs6000/linux64.h: Likewise.
22127         * config/rs6000/sysv4.h: Likewise.
22128         * config/score/score3.c: Likewise.
22129         * config/score/score7.c: Likewise.
22130         * config/score/score.c: Likewise.
22131         * config/arm/arm.md: Likewise.
22132         * config/mips/mips.c: Likewise.
22133         * config/mips/mips.md: Likewise.
22134         * config/bfin/bfin.h: Likewise.
22135         * config/pa/pa.c: Likewise.
22136         * config/pa/constraints.md: Likewise.
22137
22138         * config/pdp11/pdp11-protos.h (legitimate_address_p): Delete.
22139         * config/pdp11/pdp11.c (legitimate_address_p): Delete.
22140         * config/pdp11/pdp11.h: Use memory_address_p instead.
22141
22142 2009-05-14  Ian Lance Taylor  <iant@google.com>
22143
22144         * passes.c (finish_optimization_passes): Change i to int.
22145         * plugin.c (plugins_active_p): Change event to int.
22146         (dump_active_plugins): Likewise.
22147         * reginfo.c (invalid_mode_change_p): Change to to unsigned int.
22148         Add cast.
22149         * tree.c (tree_range_check_failed): Change c to unsigned int.
22150         (omp_clause_range_check_failed): Likewise.
22151         (build_common_builtin_nodes): Change mode to int.  Add cast.
22152         * config/ia64/ia64.c (is_emitted): Change r to unsigned int.
22153         (ia64_hard_regno_rename_ok, ia64_eh_uses): Likewise.
22154
22155         * c-typeck.c (build_unary_op): If -Wc++-compat, warn about using
22156         ++ or -- with a variable of enum type.
22157
22158 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
22159
22160         PR driver/40144
22161         * opts.c (common_handle_option): Add OPT_fcse_skip_blocks as a no-op.
22162
22163 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
22164
22165         * store-motion.c: Do not include params.h
22166         * Makefile.in: Fix dependencies for various files.
22167
22168 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
22169
22170         * auto-inc-dec.c: Fix pass description, remove apparent
22171         accidental duplication.
22172
22173 2009-05-14  H.J. Lu  <hongjiu.lu@intel.com>
22174
22175         PR middle-end/40147
22176         * ipa-utils.h (memory_identifier_string): Moved to ...
22177         * tree.h (memory_identifier_string): Here.  Add GTY(()).
22178
22179 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
22180
22181         * doc/tm.texi (TARGET_LEGITIMATE_ADDRESS_P): Refer mainly to this
22182         in the former documentation of...
22183         (GO_IF_LEGITIMATE_ADDRESS): ... this.
22184         * ira-conflicts.c (get_dup_num): Use address_operand.
22185         * targhooks.c (default_legitimate_address_p): New.
22186         * targhooks.h (default_legitimate_address_p): New.
22187         * reload.c (strict_memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]:
22188         Call hook.
22189         * recog.c (memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]: Call hook.
22190         * target.h (struct target): Add legitimate_address_p.
22191         * target-def.h (TARGET_LEGITIMATE_ADDRESS_P): New.
22192         (TARGET_INITIALIZER): Include it.
22193
22194         * config/alpha/alpha.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22195         * config/alpha/alpha-protos.h (alpha_legitimate_address_p): Remove.
22196         * config/alpha/alpha.c (alpha_legitimate_address_p): Make static.
22197         (TARGET_LEGITIMATE_ADDRESS_P): New.
22198
22199         * config/frv/frv.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22200         (REG_OK_STRICT_P): Delete.
22201         * config/frv/frv-protos.h (frv_legitimate_address_p): Rename to...
22202         (frv_legitimate_address_p_1): ... this.
22203         * config/frv/frv.c (frv_legitimate_address_p): Forward to...
22204         (frv_legitimate_address_p_1): ... the renamed old
22205         frv_legitimate_address_p.
22206         * config/frv/predicates.md: Adjust calls to frv_legitimate_address_p.
22207         (TARGET_LEGITIMATE_ADDRESS_P): New.
22208
22209         * config/s390/s390.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22210         * config/s390/s390-protos.h (legitimate_address_p): Remove.
22211         * config/s390/s390.c (legitimate_address_p): Rename to...
22212         (s390_legitimate_address_p): ... this, make static.
22213         (legitimize_address): Adjust call.
22214         (TARGET_LEGITIMATE_ADDRESS_P): New.
22215         * config/s390/constraints.md ("e"): Call strict_memory_address_p.
22216
22217         * config/m32c/m32c.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22218         * config/m32c/m32c-protos.h (m32c_legitimate_address_p): Remove.
22219         * config/m32c/m32c.c (m32c_legitimate_address_p): Make static.
22220         (TARGET_LEGITIMATE_ADDRESS_P): New.
22221
22222         * config/spu/spu.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22223         * config/spu/spu-protos.h (spu_legitimate_address): Remove.
22224         * config/spu/spu.c (spu_legitimate_address): Rename to...
22225         (spu_legitimate_address_p): ... this, make static.
22226         (TARGET_LEGITIMATE_ADDRESS_P): New.
22227
22228         * config/sparc/sparc.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22229         * config/sparc/sparc-protos.h (legitimate_address_p): Remove.
22230         * config/sparc/sparc.c (legitimate_address_p): Rename to...
22231         (sparc_legitimate_address_p): ... this, make static and return bool.
22232         (legitimize_address): Adjust call.
22233         (TARGET_LEGITIMATE_ADDRESS_P): New.
22234
22235         * config/i386/i386.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22236         * config/i386/i386-protos.h (legitimate_address_p): Remove.
22237         * config/i386/i386.c (legitimate_address_p): Rename to...
22238         (ix86_legitimate_address_p): ... this, make static.
22239         (constant_address_p): Move after it, adjust call.
22240         (TARGET_LEGITIMATE_ADDRESS_P): New.
22241
22242         * config/avr/avr.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22243         * config/avr/avr-protos.h (legitimate_address_p): Remove.
22244         * config/avr/avr.c (legitimate_address_p): Rename to...
22245         (avr_legitimate_address_p): ... this, make static.
22246         (legitimize_address): Adjust call.
22247         (TARGET_LEGITIMATE_ADDRESS_P): New.
22248
22249         * config/crx/crx.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22250         * config/crx/crx-protos.h (crx_legitimate_address_p): Remove.
22251         * config/crx/crx.c (crx_legitimate_address_p): Make static.
22252         (TARGET_LEGITIMATE_ADDRESS_P): New.
22253
22254         * config/xtensa/xtensa.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22255         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): Remove.
22256         * config/xtensa/xtensa.c (xtensa_legitimate_address_p): Make static.
22257         (TARGET_LEGITIMATE_ADDRESS_P): New.
22258
22259         * config/stormy16/stormy16.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22260         * config/stormy16/stormy16-protos.h (xstormy16_legitimate_address_p):
22261         Remove.
22262         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p):
22263         Make static.
22264         (TARGET_LEGITIMATE_ADDRESS_P): New.
22265
22266         * config/m68hc11/m68hc11.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22267         * config/m68hc11/m68hc11-protos.h (m68hc11_go_if_legitimate_address):
22268         Remove.
22269         * config/m68hc11/m68hc11.c (m68hc11_go_if_legitimate_address):
22270         Rename to...
22271         (m68hc11_legitimate_address_p): ... this, make static.
22272         (go_if_legitimate_address_internal): Rename to...
22273         (m68hc11_legitimate_address_p_1): ... this.
22274         (legitimize_address): Adjust call.
22275         (TARGET_LEGITIMATE_ADDRESS_P): New.
22276
22277         * config/iq2000/iq2000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22278         * config/iq2000/iq2000-protos.h (iq2000_legitimate_address_p): Remove.
22279         * config/iq2000/iq2000.c (iq2000_legitimate_address_p): Make static.
22280         (TARGET_LEGITIMATE_ADDRESS_P): New.
22281
22282         * config/mn10300/mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22283         * config/mn10300/mn10300-protos.h (legitimate_address_p): Remove.
22284         * config/mn10300/mn10300.c (legitimate_address_p): Rename to...
22285         (mn10300_legitimate_address_p): ... this, make static.
22286         (TARGET_LEGITIMATE_ADDRESS_P): New.
22287
22288         * config/m68k/m68k.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22289         * config/m68k/m68k-protos.h (m68k_legitimate_address_p): Remove.
22290         * config/m68k/m68k.c (m68k_legitimate_address_p): Make static.
22291         (TARGET_LEGITIMATE_ADDRESS_P): New.
22292
22293         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22294         (REG_OK_STRICT_FLAG, REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P): Delete.
22295         (INT_REG_OK_FOR_BASE_P, INT_REG_OK_FOR_INDEX_P): Move above.
22296         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22297         * config/rs6000/rs6000-protos.h (rs6000_legitimate_address): Remove.
22298         * config/rs6000/rs6000.c (rs6000_legitimate_address): Rename to...
22299         (rs6000_legitimate_address_p): ... this, make static.
22300         (TARGET_LEGITIMATE_ADDRESS_P): New.
22301         (REG_MODE_OK_FOR_BASE_P): Delete.
22302         (rs6000_legitimize_reload_address): Use INT_REG_OK_FOR_BASE_P.
22303
22304         * config/picochip/picochip.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22305         * config/picochip/picochip-protos.h (picochip_legitimate_address_p):
22306         Delete.
22307         * config/picochip/picochip.c (picochip_legitimate_address_p): Make
22308         static, adjust types.
22309         (TARGET_LEGITIMATE_ADDRESS_P): New.
22310
22311         * config/score/score.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22312         * config/score/score.c (score_address_p): Rename to...
22313         (score_legitimate_address_p): ... this.
22314         (TARGET_LEGITIMATE_ADDRESS_P): New.
22315         * config/score/score3.c (score3_address_p): Rename to...
22316         (score3_legitimate_address_p): ... this.
22317         * config/score/score7.c (score7_address_p): Rename to...
22318         (score7_legitimate_address_p): ... this.
22319
22320         * config/arm/arm.h (ARM_GO_IF_LEGITIMATE_ADDRESS,
22321         THUMB2_GO_IF_LEGITIMATE_ADDRESS, THUMB1_GO_IF_LEGITIMATE_ADDRESS,
22322         GO_IF_LEGITIMATE_ADDRESS): Delete.
22323         * config/arm/arm-protos.h (thumb1_legitimate_address_p,
22324         thumb2_legitimate_address_p): Delete.
22325         (arm_legitimate_address_p): Rename to...
22326         (arm_legitimate_address_outer_p): ... this.
22327         * config/arm/constraints.md ("Uq"): Adjust call.
22328         * config/arm/predicates.md (arm_extendqisi_mem_op): Likewise.
22329         * config/arm/arm.c (arm_legitimate_address_p): New, rename old one
22330         to...
22331         (arm_legitimate_address_outer_p): ... this.
22332         (thumb1_legitimate_address_p, thumb2_legitimate_address_p): Make
22333         static.
22334         (TARGET_LEGITIMATE_ADDRESS_P): New.
22335
22336         * config/mips/mips.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22337         * config/mips/mips-protos.h (mips_legitimate_address_p): Remove.
22338         * config/mips/mips.c (mips_legitimate_address_p): ... Make static.
22339         (TARGET_LEGITIMATE_ADDRESS_P): New.
22340
22341         * config/vax/vax.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22342         * config/vax/vax-protos.h (legitimate_address_p): Remove.
22343         * config/vax/vax.c (legitimate_address_p): Rename to...
22344         (vax_legitimate_address_p): ... this, make static.
22345         (TARGET_LEGITIMATE_ADDRESS_P): New.
22346
22347         * config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22348         * config/h8300/h8300-protos.h (h8300_legitimate_address_p): Remove.
22349         * config/h8300/h8300.c (h8300_legitimate_address_p): ... Make static.
22350         (TARGET_LEGITIMATE_ADDRESS_P): New.
22351
22352         * config/mmix/mmix.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22353         * config/mmix/mmix-protos.h (mmix_legitimize_address): Remove.
22354         * config/mmix/mmix.c (mmix_legitimate_address): Rename to...
22355         (mmix_legitimate_address_p): ... this, make static.
22356         (TARGET_LEGITIMATE_ADDRESS_P): New.
22357
22358         * config/bfin/bfin.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22359         * config/bfin/bfin-protos.h (bfin_legitimate_address_p): Remove.
22360         * config/bfin/bfin.c (bfin_legitimate_address_p): ... Make static.
22361         (TARGET_LEGITIMATE_ADDRESS_P): New.
22362
22363 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
22364
22365         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Remove handling
22366         of MODE_COMPLEX_INT.
22367
22368 2009-05-14  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
22369
22370         * config/alpha/alpha.c (alpha_initialize_trampoline): Change 0 to
22371         LCT_NORMAL in function call.
22372         * mips-tdump.c (print_file_desc): Add cast to enum type.
22373         * mips-tfile.c (add_ext_symbol): Add casts to enum types.
22374         (mark_stabs): Add casts to enum types.
22375         (parse_stabs_common): Add casts to enum types.
22376
22377 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
22378
22379         * config/mips/mips.c (mips_print_operand) <REG, MEM, default>:
22380         Check for invalid values of LETTER.
22381
22382 2009-05-13  Taras Glek  <tglek@mozilla.com>
22383
22384         * attribs.c (register_attribute): moved out attribute registration
22385         into register_attribute.
22386         * doc/plugins.texi: Documented register_attribute and
22387         PLUGIN_ATTRIBUTES.
22388         * gcc-plugin.h: Added forward decl for register_attribute.
22389         * gcc-plugin.h (plugins_event): Added PLUGIN_ATTRIBUTES.
22390         * plugin.c (register_callback, invoke_plugin_callbacks): Added
22391         PLUGIN_ATTRIBUTES boilerplate.
22392
22393 2009-05-14  Dave Korn  <dave.korn.cygwin@gmail.com>
22394
22395         * config/i386/msformat-c.c (ms_printf_length_specs):  Use enumeration
22396         values even in sentinel and empty entries.
22397         (ms_printf_flag_specs):  Likewise.
22398         (ms_scanf_flag_specs):  Likewise.
22399         (ms_strftime_flag_specs):  Likewise.
22400         (ms_print_char_table):  Likewise.
22401         (ms_scan_char_table):  Likewise.
22402         (ms_time_char_table):  Likewise.
22403
22404 2009-05-13  Doug Kwan  <dougkwan@google.com>
22405
22406         * tree-ssa-sccvn.c (compare_ops): Stabilize qsort.
22407
22408 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
22409
22410         * config/mips/mips.md (store): Add attributes for QI and HI.
22411         Update comment.
22412         (truncdisi2, truncdihi2, truncdiqi2): Merge these into ...
22413         (truncdi<mode>2): ... this new pattern.
22414
22415 2009-05-13  Brad Hards  <bradh@kde.org>
22416
22417         * Makefile.in (TEXI_GCCINT_FILES): Add plugins.texi.
22418
22419 2009-05-14  Jakub Jelinek  <jakub@redhat.com>
22420             Ben Elliston <bje@au.ibm.com>
22421
22422         PR middle-end/40035
22423         * dse.c (check_mem_read_rtx): Guard against width == -1.
22424
22425 2009-05-13  Michael Matz  <matz@suse.de>
22426
22427         PR middle-end/39976
22428         * tree-outof-ssa.c (maybe_renumber_stmts_bb): New function.
22429         (trivially_conflicts_p): New function.
22430         (insert_backedge_copies): Use it.
22431
22432 2009-05-13  Janis Johnson  <janis187@us.ibm.com>
22433
22434         * c-pragma.c (enum pragma_switch_t): Prefix constants with PRAGMA_.
22435         (handle_stdc_pragma): Use new enum constant names.
22436         (handle_pragma_float_const_decimal64): Ditto.
22437
22438 2009-05-13  Ian Lance Taylor  <iant@google.com>
22439
22440         * Makefile.in (build/gencheck.o): Depend upon all-tree.def, not
22441         tree.def.
22442
22443 2009-05-13  Nathan Sidwell  <nathan@codesourcery.com>
22444
22445         * config/m68k/t-uclinux (M68K_MLIB_CPU): Check for FL_UCLINUX.
22446         * config/m68k/m68k-devices.def: Add FL_UCLINUX to 68020 and 54455
22447         multilibs.
22448         * config/m68k/m68k.h (FL_UCLINUX): Define.
22449
22450 2009-05-13  Jan Hubicka  <jh@suse.cz>
22451
22452         * options.c (gfc_post_options): -fwhole-program imply -fwhole-file.
22453
22454 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
22455
22456         * config/sh/sh.h (OVERRIDE_OPTIONS): Clear flag_schedule_insns
22457         unless -fschedule-insns is specified.
22458
22459 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
22460
22461         PR target/39561
22462         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Don't set
22463         TARGET_EXPAND_CBRANCHDI4.
22464         * config/sh/sh.md (cbranchdi4): Don't check TARGET_EXPAND_CBRANCHDI4.
22465         * config/sh/sh.opt (mexpand-cbranchdi): Remove.
22466         (cmpeqdi): Fix comment.
22467
22468 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
22469
22470         * config/sh/sh-protos.h (sh_legitimate_index_p): Declare.
22471         (sh_legitimate_address_p): Likewise.
22472         * config/sh/sh.c (sh_legitimate_index_p): New.
22473         (sh_legitimate_address_p): Likewise.
22474         * config/sh/sh.h (REG_OK_FOR_BASE_P): Add STRICT parameter.
22475         (REG_OK_FOR_INDEX_P, SUBREG_OK_FOR_INDEX_P): Likewise.
22476         (MODE_DISP_OK_4, MODE_DISP_OK_8): Remove.
22477         (MAYBE_BASE_REGISTER_RTX_P): New macro.
22478         (MAYBE_INDEX_REGISTER_RTX_P): Likewise.
22479         (BASE_REGISTER_RTX_P): Use MAYBE_BASE_REGISTER_RTX_P.
22480         (INDEX_REGISTER_RTX_P): Use MAYBE_INDEX_REGISTER_RTX_P.
22481         (GO_IF_LEGITIMATE_INDEX): Use sh_legitimate_index_p.
22482         (GO_IF_LEGITIMATE_ADDRESS): Use sh_legitimate_address_p.
22483
22484 2009-05-12  Jan Hubicka  <jh@suse.cz>
22485
22486         * tree-inline.c (estimate_operator_cost): Add operands;
22487         when division happens by constant, it is cheap.
22488         (estimate_num_insns): Loads and stores are not having cost of 0;
22489         EH magic stuff is cheap; when computing runtime cost of switch,
22490         use log2 base of amount of its cases; builtin_expect has cost of 0;
22491         compute cost for moving return value of call.
22492         (init_inline_once): Initialize time_based flags.
22493         * tree-inline.h (eni_weights_d): Add time_based flag.
22494
22495 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
22496
22497         * df-core.c: Update head documentation.
22498
22499 2009-05-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
22500
22501         PR bootstrap/40118
22502         * rs6000.c (rs6000_generate_compare): Use op1b instead of
22503         shadowing exisiting variable op1.
22504
22505 2009-05-12  Uros Bizjak  <ubizjak@gmail.com>
22506
22507         PR target/37179
22508         * config/i386/driver-i386.c (processor_signatures): New enum.
22509         (SIG_GEODE): Move from vendor_signatures to processor_signatures.
22510         (host_detect_local_cpu): For SIG_AMD vendor, check for SIG_GEODE
22511         processor signature to detect geode processor.
22512
22513 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
22514
22515         Revert:
22516
22517         2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
22518
22519         * optabs.c (prepare_cmp_insn): Temporarily disable test that
22520         causes spurious differences between trunk and cond-optab branch.
22521
22522 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
22523
22524         * dojump.c (compare_from_rtx): Delete.
22525         * expmed.c (emit_store_flag): Only try cstore_optab.  Canonicalize
22526         any MODE_CC mode to the cstorecc4 pattern.  Use prepare_operand, fail
22527         if the comparison does not satisfy the predicate; test predicates for
22528         operands 2 and 3 of a cstore pattern.  Don't try cstore optab
22529         further if one existing pattern fails.
22530         * expr.h (compare_from_rtx): Delete.
22531         (prepare_operand): Declare it.
22532         * optabs.c: Change "lib call" to "libcall" throughout.
22533         (bcc_gen_fctn, setcc_gen_code, trap_rtx,
22534         HAVE_conditional_trap, emit_cmp_insn): Delete.
22535         (can_compare_p): Delete cmp_optab case.
22536         (prepare_float_lib_cmp): Return an rtx and a machine mode.
22537         Accept other parameters by value.
22538         (prepare_operand): Make non-static.
22539         (prepare_cmp_insn): Return an rtx and a machine mode.  Accept
22540         other parameters by value.  Try to widen operands here based on
22541         an optab_methods argument and looking at cbranch_optab.
22542         (emit_cmp_and_jump_insn_1): Accept test and mode, remove widening
22543         loop.  Use cbranch_optab directly.
22544         (emit_cmp_and_jump_insns): Fix comment.  Adjust call to
22545         prepare_cmp_insn and emit_cmp_and_jump_insn_1, remove obsolete
22546         assertion.
22547         (emit_conditional_move, emit_conditional_add): Inline what's needed
22548         of compare_from_rtx, using new prepare_cmp_insn for the rest.
22549         (init_optabs): Init cmp_optab with UNKNOWN, cbranch_optab
22550         with COMPARE.  Move cmov_optab and cstore_optab above
22551         with cbranch_optab, move cmp_optab down with ucmp_optab,
22552         remove tst_otpab.  Do not initialize trap_rtx.
22553         (gen_cond_trap): Do it here.  Use ctrap_optab.  Test predicate
22554         for trap code.  Do not check HAVE_conditional_trap.  Use
22555         prepare_cmp_insn.  Accept no predicate for operand 3.
22556         * optabs.h (OTI_cmp): Mark as used only for libcalls.
22557         (OTI_ctrap, ctrap_optab): New.
22558         (tst_optab): Delete.
22559         (bcc_gen_fctn, setcc_gen_code, emit_cmp_insn): Delete.
22560         * ifcvt.c (find_if_header): Replace HAVE_conditional_trap
22561         with lookup of ctrap_optab.
22562         * genopinit.c (cmp_optab, tst_optab, bcc_gen_fctn, setcc_gen_code):
22563         Delete.
22564         (ctrap_optab): New.
22565
22566         * combine.c (combine_simplify_rtx, simplify_set): Do not
22567         special case comparing against zero for cc0 machines.
22568         * simplify-rtx.c (simplify_binary_operation_1): Never remove
22569         COMPARE on cc0 machines.
22570         (simplify_relational_operation): Return a new expression when
22571         a COMPARE could be removed.
22572         * final.c (final_scan_insn): Compare cc_status values
22573         against LHS of a (compare FOO (const_int 0)) cc0 source.
22574         Also check if cc_status.value is the full compare.
22575
22576         * doc/md.texi (bCC, sCC, tstMM, cmpMM): Delete.
22577         (cstoreMM4): Document.
22578         (conditional_trap): Document ctrapMM4 instead.
22579         (sync_compare_and_swapMM): Refer to cbranchcc4.
22580         (Dependent Patterns): Eliminate obsolete information referring to
22581         the old jump optimization phase.
22582         (Canonicalization): Include cbranchcc4 case, omit canonicalization
22583         of compares with 0 on cc0 machines.
22584         (Jump Patterns): Refer to MODE_CC jump patterns preferably,
22585         avoiding references to cc0.  Remove text about storing operands
22586         in cmpMM.
22587         * doc/tm.texi (Condition Codes): Include blurb on different
22588         condition code representations, separate into subsections for
22589         CC0, MODE_CC and conditional execution.
22590
22591         * config/alpha/alpha-protos.h (alpha_emit_conditional_branch,
22592         alpha_emit_setcc): Accept operands and a machine mode.
22593         * config/alpha/alpha.c (alpha_emit_conditional_branch):
22594         Get code/op0/op1 from operands, use machine mode argument
22595         instead of alpha_compare.fp_p.  Emit the branch here.
22596         (alpha_emit_setcc): Likewise, and return boolean.
22597         (alpha_emit_conditional_move): Likewise.  Assert that
22598         cmp_op_mode == cmp_mode, and simplify accordingly.
22599         * config/alpha/alpha.h (struct alpha_compare, alpha_compare): Delete.
22600         * config/alpha/alpha.md (cmpdf, cmptf, cmpdi, bCC, sCC): Delete.
22601         (cbranchdf4, cbranchtf4, cbranchdi4, cstoredf4, cstoretf4,cstoredi4):
22602         Delete.
22603         (stack probe test): Use cbranchdi4.
22604         * config/alpha/predicates.md (alpha_cbranch_operator): New.
22605
22606         * config/arc/arc.c (gen_compare_reg): Do not emit cmp.
22607         * config/arc/arc.h (movsicc, movsfcc): Use it.
22608         (movdicc, *movdicc_insn, movdfcc, *movdfcc_insn): Remove.
22609         (cbranchsi4, cstoresi4): New.
22610         (cmpsi, bCC and sCC expanders): Remove.
22611
22612         * config/arm/arm.c (arm_compare_op0, arm_compare_op1): Delete.
22613         * config/arm/arm.h (arm_compare_op0, arm_compare_op1): Delete.
22614         * config/arm/predicates.md (arm_comparison_operator): Only include
22615         floating-point operators if there is a hardware floating-point unit.
22616         * config/arm/arm.md (cbranchsi4, cstoresi4): Enable for TARGET_32BIT,
22617         deferring to cbranch_cc and cstore_cc respectively.
22618         (cbranchsf4, cbranchdf4, cbranchdi4, cstoresf4, cstoredf4, cstoredi4,
22619         cbranch_cc, cstore_cc): New.
22620         (movsicc, movsfcc, movdfcc): Do not use arm_compare_op0 and
22621         arm_compare_op1.
22622         (bCC, sCC, cmpsi, cmpsf, cmpdf, cmpdi): Delete.
22623
22624         * config/avr/avr-protos.h (out_tstsi, out_tsthi): Adjust prototype.
22625         * config/avr/avr.c (out_tstsi, out_tsthi): Get the tested operand
22626         as an argument.
22627         (adjust_insn_length): Adjust calls.
22628         (avr_reorg): Handle (compare (foo) (const_int 0)).
22629         * config/avr/avr.md (tstqi, tsthi, tstsi): Remove.
22630         (*negated_tstqi, *negated_tsthi, *negated_tstsi): Unmacroize.
22631         (*reversed_tsthi, *reversed_tstsi): Add a scratch for simplicity.
22632         (cmpqi, cmphi, cmpsi): Prepend asterisk, fuse tst[qhs]i here.
22633         (bCC): Remove.
22634         (cbranchqi4, cbranchhi4, cbranchsi4): New.
22635         (tst -> sbrc/sbrs peephole2, cpse peephole): Wrap RHS with COMPARE.
22636
22637         * config/bfin/bfin.md (cmpbi, cmpsi, bCC, sCC): Delete.
22638         (cbranchsi4, cstorebi4, cstoresi4): New.
22639         (movbisi): This insn is duplicate, split it to zero_extend.
22640         * config/bfin/bfin.c (bfin_compare_op0, bfin_compare_op1): Delete
22641         (bfin_gen_compare): Do not use them.  Emit VOIDmode SET, not BImode.
22642         (bfin_optimize_loop): Use cbranch expander.
22643         * config/bfin/bfin.h (bfin_compare_op0, bfin_compare_op1): Delete.
22644         * config/bfin/predicates.md (bfin_cbranch_operator): Rename to...
22645         (bfin_bimode_comparison_operator): ... this.
22646         (bfin_direct_comparison_operator): New.
22647
22648         * config/cris/cris.c (cris_normal_notice_update_cc): Look
22649         inside (compare FOO (const_int 0)).
22650         (cris_rtx_costs): Handle ZERO_EXTRACT.
22651         * config/cris/cris.md (tstdi, tst<mode>, cmpdi): Delete.
22652         (*tstdi_non_v32): Fold in *cmpdi_non_v32.
22653         (*tstdi_v32): Delete.
22654         (*cmpdi_non_v32): Add M alternative for operand 1.
22655         (cmpsi, cmp<mode>): Make private.
22656         (*tstsi, *tst<mode>_cmp, *tst<mode>_non_cmp, *btst): Wrap LHS
22657         with COMPARE.
22658         (cbranch<mode>4, cbranchdi4, cstore<mode>4): New.
22659
22660         * config/crx/crx.md (cstore<mode>4, cbranchcc4): New.
22661         (cmp<mode>, bCOND_internal, b<code>, s<code>): Delete.
22662         (cbranch<mode>4, sCOND_internal): Use ordered_comparison_operator.
22663         (cc_reg_operand): New.
22664         (any_cond): Delete.
22665         * config/crx/crx.c (crx_compare_op0, crx_compare_op1,
22666         crx_expand_compare, crx_expand_branch, crx_expand_scond): Delete.
22667         * config/crx/crx.h (crx_compare_op0, crx_compare_op1): Delete.
22668         * config/crx/crx-protos.h (crx_expand_compare, crx_expand_branch,
22669         crx_expand_scond): Delete.
22670
22671         * config/fr30/fr30.md (cmp<mode>, bCC): Delete.
22672         (cbranchsi4): New.
22673         * config/fr30/fr30.c (fr30_compare_op0, fr30_compare_op1): Delete
22674         * config/fr30/fr30.h (fr30_compare_op0, fr30_compare_op1): Delete.
22675
22676         * config/frv/frv.md (cbranchsi4, cbranchsf4, cbranchdf4,
22677         cstoresi4, cstoresf4, cstoredf4): New.
22678         (cmpdi, cmpsi, cmpsf, cmpdf, bCC, sCC): Remove.
22679         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
22680         Receive the entire operands array.
22681         * config/frv/frv.h (frv_compare_op0, frv_compare_op1): Delete.
22682         * config/frv/frv.c (frv_compare_op0, frv_compare_op1): Delete.
22683         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
22684         Get test/op0/op1 from the operands array.
22685         (frv_emit_cond_move): Get test/op0/op1 from the test_rtx.
22686
22687         * config/h8300/h8300-protos.h (h8300_expand_branch): Accept operands.
22688         (h8300_expand_store): New.
22689         * config/h8300/h8300.c (h8300_rtx_costs): Handle (compare FOO
22690         (const_int 0)).
22691         (h8300_expand_branch): Emit compare here.  Adjust for new arguments.
22692         (h8300_expand_store): New.
22693         * config/h8300/h8300.md (btst combine patterns): Wrap with COMPARE
22694         or do not try to produce (set (cc0) REG).
22695         (peepholes): Wrap arguments with COMPARE.  Add a peephole to
22696         change a compare into a move to a scratch register.  Disable some
22697         peepholes when comparing with zero.
22698         (tstsi, tsthi, tstsi, cmpqi): Make private.
22699         (cmphi): Delete.
22700         (bCC, sCC): Delete.
22701         (cbranchqi4, cbranchhi4, cbranchsi4, cstoreqi4, cstorehi4,
22702         cstoresi4): New.
22703
22704         * config/i386/i386.c (ix86_expand_int_movcc, ix86_expand_int_addcc,
22705         ix86_expand_fp_movcc): Set ix86_compare_op0 and ix86_compare_op1.
22706         (ix86_emit_i387_log1p): Use gen_cbranchxf4.
22707         (ix86_emit_i387_log1p): Use cbranchxf2.
22708         (ix86_expand_setcc): Return void.
22709         * config/i386/i386-protos.h (ix86_expand_setcc): Return void.
22710         * config/i386/i386.md (cmpti, cmpdi, cmpsi, cmphi, cmpqi, cmpxf,
22711         cmp<MODEF>, cmpcc): Remove.
22712         (cbranchti4, cbranchdi4, cbranchsi4, cbranchhi4, cbranchqi4,
22713         cbranchxf4, cbranch<MODEF>4, cbranchcc4, cstoredi4, cstoresi4,
22714         cstorehi4, cstoreqi4, cstorexf4, cstore<MODEF>4, cstorecc): New.
22715         (sCC and bCC expanders): Remove.
22716         (stack_protect_test): Use cbranchcc4.
22717
22718         * config/ia64/ia64-protos.h (ia64_compare_op0, ia64_compare_op1):
22719         Delete.
22720         (ia64_expand_compare): Accept three rtx by reference and return void.
22721         * config/ia64/ia64.c (ia64_compare_op0, ia64_compare_op1): Delete.
22722         (ia64_expand_compare): Replace op0/op1 with *op0/*op1.  Get code
22723         from *expr.  Update *expr with the BImode comparison to do.
22724         * config/ia64/ia64.md (cmpbi, cmpsi, cmpdi, cmpsf, cmpdf, cmpxf,
22725         cmptf, bCC, sCC, conditional_trap): Delete.
22726         (cbranchbi4, cbranchsi4, cbranchdi4, cbranchsf4, cbranchdf4,
22727         cbranchxf4, cbranchtf4, cstorebi4, cstoresi4, cstoredi4, cstoresf4,
22728         cstoredf4, cstorexf4, cstoretf4, ctrapbi4, ctrapsi4, ctrapdi4,
22729         ctrapsf4, ctrapdf4, ctrapxf4, ctraptf4): New.
22730         * config/ia64/predicates.md (ia64_cbranch_operator): New.
22731
22732         * config/iq2000/iq2000-protos.h (gen_conditional_branch): Change
22733         type of last argument.
22734         * config/iq2000/iq2000.c (branch_cmp, branch_type): Remove.
22735         (gen_conditional_branch): Get code/cmp0/cmp1 from operands,
22736         use machine mode argument instead of branch_type.  Remove dead
22737         code for floating-point comparisons.
22738         * config/iq2000/iq2000.h (branch_cmp, branch_type): Remove.
22739         * config/iq2000/iq2000.md (cmpsi, cmpdi, cmpsf, cmpdf, tstsi, bCC):
22740         Remove.
22741         (cbranchsi4, cstoresi4): New.
22742         * config/iq2000/predicates.md (reg_or_const_operand): New.
22743
22744         * config/m32c/m32c.md (cbranch splitter): Use match_op_dup.
22745         * config/m32c/m32c.md (any_cond, gl_cond): Delete.
22746         (b<code>_op): Rewrite to...
22747         (bcc_op): ... this, using match_operator.
22748         (s<code>_op): Rewrite to...
22749         (scc_op): ... this, using match_operator.
22750         (s<code>_24_op): Rewrite to...
22751         (scc_op_24): ... this, using match_operator.
22752         (s<code>_<mode>): Rewrite to...
22753         (cstore<mode>4): ... this, using match_operator.
22754         (s<code>_<mode>_24): Rewrite to...
22755         (cstore<mode>4_24): ... this, using match_operator.
22756         * config/m32c/m32c-protos.h (m32c_cmp_flg_0, m32c_pend_compare,
22757         m32c_unpend_compare, m32c_expand_scc): Delete.
22758         * config/m32c/m32c.c (compare_op0, compare_op1, m32c_cmp_flg_0,
22759         m32c_pend_compare, m32c_unpend_compare, m32c_expand_scc): Delete.
22760         (m32c_expand_movcc): Change NE to EQ if necessary.
22761         (m32c_init_libfuncs): Modify cstore optab instead of setcc_gen_code.
22762
22763         * config/m32r/m32r-protos.h (gen_cond_store): New.
22764         * config/m32r/m32r.c (m32r_compare_op0, m32r_compare_op1): Delete.
22765         (gen_cond_store): New, from sCC patterns.
22766         (m32r_expand_block_move): Use cbranchsi4.
22767         * config/m32r/m32r.h (m32r_compare_op0, m32r_compare_op1): Delete.
22768         * config/m32r/m32r.md (cmpsi, bCC, sCC): Delete.
22769         (cbranchsi4, cstoresi4): New.
22770
22771         * config/m68hc11/m68hc11.c (m68hc11_compare_op0, m68hc11_compare_op1):
22772         Delete.
22773         (m68hc11_rtx_costs_1, m68hc11_rtx_costs): Handle ZERO_EXTRACT.
22774         (m68hc11_notice_update_cc): Look into a compare with 0.
22775         * config/m68hc11/m68hc11.h (m68hc11_compare_op0, m68hc11_compare_op1):
22776         Delete.
22777         * config/m68hc11/m68hc11.md (tstsi, tsthi, tstqi, cmpsi,
22778         cmphi, cmpqi, bCC): Delete.
22779         (cbranchsi4, cbranchhi4, cbranchqi4): New.
22780         (tstqi_1, tstqi_z_used, tstqi_1, bitcmpqi, bitcmpqi_z_used,
22781         bitcmpqi_12, bitcmphi, various splits and peephole2s): Wrap cc0<-reg
22782         sets with COMPARE.
22783
22784         * config/m68k/predicates.md (m68k_cstore_comparison_operator,
22785         const0_operand, const1_operand, m68k_subword_comparison_operand): New.
22786         * config/m68k/constraints.md (H): New.
22787         * config/m68k/m68k.md (tstdi): Remove define_expand, use name for
22788         the define_insn below.
22789         (tstsi, tsthi, tst<FP:mode>, cmphi, cmpqi, cmp<FP:mode>): Delete.
22790         (*tstsi_internal_68020_cf, *tstsi_internal, *tsthi_internal,
22791         *tstqi_internal, tst<mode>_6881, tst<mode>_cf, many unnamed
22792         patterns): Wrap RHS with COMPARE.
22793         (tst<FP>_68881, tst<FP>_cf): Use const0_operand.
22794         (*cmpdi_internal): Name this pattern.
22795         (cmpdi): Change to define_insn.
22796         (cbranchdi4, cstoredi4, cbranchsi4, cstoresi4, cbranchhi4, cstorehi4,
22797         cbranchqi4, cstoreqi4, cbranch<FP:mode>4, cstore<FP:mode>4): New.
22798         (scc0_di, scc0_di_5200, scc_di): Use the ordered_comparison_operator
22799         predicate.
22800         (seq, sne, sgt, sgtu, slt, sltu, sge, sgeu, sle, sleu, sordered,
22801         sunordered, suneq, sunge, sungt, sunle, sunlt, sltgt): Delete
22802         (conditional_trap): Change to...
22803         (ctrapdi4, ctrapsi4, ctraphi4, ctrapqi4): ... these.
22804         (*conditional_trap): Use the ordered_comparison_operator and
22805         const1_operand predicates.
22806         * config/m68k/m68k.c (m68k_last_compare_had_fp_operands): Delete.
22807         (m68k_expand_prologue): Use ctrapsi4 instead of cmpsi+conditional_trap.
22808         (m68k_rtx_costs): Look for ZERO_EXTRACT in a COMPARE.
22809         * config/m68k/m68k.h (m68k_last_compare_had_fp_operands): Delete.
22810
22811         * config/mcore/mcore-protos.h (arch_compare_op0, arch_compare_op1,
22812         mcore_modify_comparison, mcore_gen_compare_reg): Remove.
22813         (mcore_gen_compare): New.
22814         * config/mcore/mcore.c (arch_compare_op0, arch_compare_op1): Delete.
22815         (mcore_modify_comparison, mcore_gen_compare_reg): Fold into...
22816         (mcore_gen_compare): ... this.
22817         * config/mcore/mcore.md (cmpsi, bCC, sCC): Remove.
22818         (cbranchsi4, cstoresi4): New, using mcore_gen_compare.
22819         (stack probe pattern): Use cbranchsi4.
22820
22821         * config/mips/predicates.md (mips_cstore_operator): New.
22822         * config/mips/mips-ps-3d.md (movv2sfcc): Do not use cmp_operands.
22823         * config/mips/mips.md (any_cond): Delete.
22824         (conditional_trap): Rename to ctrap<GPR:mode>4.  Adjust predicates,
22825         always succeed.
22826         (fixuns_truncdfsi2, fixuns_truncdfdi2, fixuns_truncsfsi2,
22827         fixuns_truncsfdi2): Use cbranch patterns.
22828         (cmp<GPR:mode>, cmp<SCALARF:mode>): Delete.
22829         (b<code>): Change to cbranch<GPR:mode>4 and cbranch<SCALARF:mode>4.
22830         Adjust call to mips_expand_conditional_branch.
22831         (seq, sne, slt<u>, sle<u>, sgt<u>, sge<u>): Change to
22832         cstore<GPR:mode>4.
22833         * config/mips/mips-protos.h (mips_expand_conditional_branch,
22834         mips_expand_scc, mips_expand_conditional_trap): Adjust prototypes.
22835         * config/mips/mips.c (cmp_operands): Delete.
22836         (mips_emit_compare): Get comparison operands from *op0/*op1.
22837         (mips_expand_scc): Get code/op0/op1/target from operands.  Assert
22838         that it succeeds.  Use op0/op1 instead of cmp_operands.
22839         (mips_expand_conditional_branch, mips_expand_conditional_move,
22840         mips_expand_conditional_trap): Likewise.
22841         (mips_block_move_loop): Use cbranch patterns.
22842         * config/mips/mips.h (cmp_operands): Delete.
22843
22844         * config/mmix/mmix.c (mmix_valid_comparison): Delete.
22845         (mmix_gen_compare_reg): Just return a register in the right CC mode.
22846         * config/mmix/mmix.h (mmix_compare_op0, mmix_compare_op1): New.
22847         * config/mmix/mmix.md (cmpdi, cmpdf): Remove.
22848         (*cmpcc_folded): Rename to...
22849         (*cmpdi_folded): this.
22850         (*cmpcc): Rename to...
22851         (*cmps): ... this.
22852         (movdfcc, movdicc): Adjust for new semantics of mmix_gen_compare_reg.
22853         (bCC): Remove.
22854         (cbranchdi4): New.
22855         (cbranchdf4): New.  Handle invalid comparisons here.
22856         * config/mmix/predicates.md (float_comparison_operator): New.
22857
22858         * config/mn10300/mn10300.c (mn10300_rtx_costs): Consider 0 and
22859         zero_extract to be cheap in (compare (zero_extract) (const_int 0).
22860         * config/mn10300/mn10300.md (tst): Delete.
22861         (*tst_extqisi_am33, *tst_extqisi, *tst_exthisi_am33, *tst_exthisi):
22862         Name these patterns and wrap RHS in a compare.
22863         (*cmpsi): Make this pattern private.  Include tst.
22864         (*cmpsf): Make this pattern private.
22865         (and and zero_extract cc0 set): Wrap RHS in a COMPARE.
22866         (compare with zero peepholes): Likewise.
22867         (bCC): Remove.
22868         (cbranchsi4, cbranchsf4): New.
22869         (casesi): Use cbranchsi4.
22870
22871         * config/pa/pa.c (hppa_compare_op0, hppa_compare_op1,
22872         hppa_branch_type): Delete.
22873         (return_addr_rtx): Use cbranchsi4.
22874         (emit_bcond_fp): Accept all operands.  Replace CODE with NE.
22875         Emit CCFPmode comparison here.
22876         (gen_cmp_fp): Delete, now part of emit_bcond_fp.
22877         * config/pa/pa.h (enum cmp_type, hppa_compare_op0, hppa_compare_op1,
22878         hppa_branch_type): Delete.
22879         * config/pa/pa.md (cmpdi, cmpsi, cmpsf, cmpdf, sCC, bCC): Delete.
22880         (movsicc, movdicc): Remove references to hppa_compare_op0,
22881         hppa_compare_op1 and compare_from_rtx.
22882         (cbranchdi4, cbranchsi4, cbranchsf4, cbranchdf4, cstoresi4): New.
22883         (casesi): Use cbranchsi4.
22884
22885         * config/pdp11/pdp11-protos.h (output_jump): Change prototype.
22886         * config/pdp11/pdp11.c (output_jump): Embed opcodes here.
22887         * config/pdp11/pdp11.md (register_or_const0_operand): New.
22888         (cmpdf, cmphi, cmpqi): Make private.  Add tst alternatives.
22889         (cmpsi, tstsi, tstdf, tsthi, tstqi): Delete.
22890         (bCC): Delete.
22891         (cbranchdf4, cbranchhi4, cbranchqi4): New.
22892         (*branch, *branch_inverted): New.
22893
22894         * config/picochip/picochip.md (cbranchhi4): Use
22895         ordered_comparison_operator.
22896         (cmphi, bCC): Remove.
22897
22898         * config/rs6000/predicates.md (rs6000_cbranch_operator): New.
22899         (trap_comparison_operator): Delete.
22900         * config/rs6000/rs6000-protos.h (rs6000_emit_sCOND,
22901         rs6000_emit_cbranch): Accept mode and operands.
22902         * config/rs6000/rs6000.c (rs6000_compare_op0, rs6000_compare_op1,
22903         rs6000_compare_fp_p): Delete.
22904         (rs6000_generate_compare): Accept mode and comparison.  Extract code
22905         and op0/op1 from there.  Replace references to rs6000_compare_op0
22906         and rs6000_compare_op1.
22907         (rs6000_emit_sCOND): Adjust call to rs6000_generate_compare and
22908         extract result from passed operands.
22909         (rs6000_emit_cbranch): Adjust call to rs6000_generate_compare and
22910         extract loc from passed operands.
22911         (rs6000_emit_cmove): Likewise.
22912         * config/rs6000/rs6000.h (rs6000_compare_op0, rs6000_compare_op1,
22913         rs6000_compare_fp_p): Delete.
22914         * config/rs6000/rs6000.md (cmp<GPR>, cmp<FP>, bCC, sCC): Delete.
22915         (cbranch<GPR>4, cbranch<FP>4): New.
22916         (cstore<mode>4): New.  Consolidate here all choices about when to use
22917         portable or specialized sCC sequences.
22918         (stack_protect_test): Use cbranchsi4.
22919         (conditional_trap): Replace with ctrap<GPR>4.
22920         (conditional trap insn): Replace trap_comparison_operator with
22921         ordered_comparison_operator.
22922
22923         * config/s390/s390.c (s390_compare_op0, s390_compare_op1): Delete.
22924         (s390_emit_prologue): Use ctrap.
22925         * config/s390/s390.h (s390_compare_op0, s390_compare_op1): Delete.
22926         * config/s390/predicates.md (s390_eqne_operator, s390_scond_operator):
22927         New predicates replacing...
22928         * config/s390/s390.md (COMPARE, SCOND): ... these iterators.
22929         (cmp<GPR>, cmp<FP>, cmpcc): Delete.
22930         (trunc patterns): Use emit_cmp_and_jump_insns instead of cmp/branch.
22931         (add<mode>cc): Do not use s390_compare_op0/op1.
22932         (s<code>): Change to...
22933         (cstore<mode>4): ... this. Do not use s390_compare_op0/op1.
22934         (seq): Change to...
22935         (cstorecc4): ... this.  Handle EQ or NE equally.
22936         (*sne): Un-privatize for use in cstorecc4.
22937         (b<code>): Change to...
22938         (cbranch<GPR>4, cbranch<FP>4, cbranchcc4): ... these.
22939         (conditional_trap): Replace with...
22940         (ctrap<GPR>4, ctrap<FP>4): ... these.
22941         (stack_protect): Use cbranchcc4.
22942
22943         * config/score/score-conv.h (cmp_op0, cmp_op1): Delete.
22944         * config/score/score-protos.h (score_gen_cmp): Delete.
22945         * config/score/score.c (cmp_op0, cmp_op1, score_gen_cmp): Delete.
22946         (score_block_move-loop): Use cbranchsi4.
22947         * config/score/score.md (cbranchsi4): New.
22948         (cmpsi, bCC): Delete.
22949         * config/score/score3.c (cmp_op0, cmp_op1, score3_gen_cmp): Delete.
22950         (score3_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
22951         * config/score/score7.c (cmp_op0, cmp_op1, score7_gen_cmp): Delete.
22952         (score7_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
22953         * config/score/score3.h (score3_gen_cmp): Delete.
22954         * config/score/score7.h (score7_gen_cmp): Delete.
22955
22956         * config/sh/sh-protos.h (prepare_scc_operands): Rename to...
22957         (sh_emit_scc_to_t): ... this.  Return void.
22958         (from_compare): Rename to...
22959         (sh_emit_compare_and_branch): ... this.
22960         (sh_emit_compare_and_set): New.
22961         (sh_expand_t_scc): Accept operands.
22962         * config/sh/predicates.md (sh_float_comparison_operator): New.
22963         * config/sh/sh.c (sh_compare_op0, sh_compare_op1): Delete.
22964         (prepare_scc_operands): Rename to...
22965         (sh_emit_scc_to_t): ... this.  Return void.  Get op0/op1 from
22966         arguments.
22967         (sh_emit_cheap_store_flag): New.
22968         (sh_emit_set_t_insn): New.
22969         (from_compare): Rename to...
22970         (sh_emit_compare_and_branch): ... this.  Accept mode.  Rewrite
22971         handling of TARGET_SH2E floating point to avoid recursive call.
22972         Generate branch here.
22973         (sh_emit_compare_and_set): New.
22974         (sh_expand_t_scc): Get op0/op1 from arguments.
22975         (sh_emit_cheap_store_flag): New.
22976         * config/sh/sh.md (cbranchdi4, cbranchsi4): Include -mno-cbranchdi
22977         cases.
22978         (cbranchdi4_i): Use an "I08" constraint instead of an "i" constraint.
22979         (cmpsi, cmpdi, cmpsf, cmpdf): Delete.
22980         (movsicc, movdicc): Do nothing when it recreated operands from
22981         sh_compare_*. Use sh_emit_cheap_store_flag.  Adjust call to
22982         prepare_scc_operands (now sh_emit_scc_to_t).
22983         (udivdi3): Use cstoresi4.
22984         (beq_media, bne_media, bge_media, bgtu_media, bgeu_media, beq,
22985         bne, bgt, blt, ble, bge, bgtu, bltu, bgeu, bleu, bunordered): Delete.
22986         (cbranchint4_media, cbranchfp4_media): New.
22987         (casesi): Use cbranchdi4.
22988         (seq, slt, sle, sgt, sge, sgtu, sltu, sgeu, sne, sleu, sunordered):
22989         Delete.
22990         (cstore4_media, cstoresi4, cstoredi4, cstoresf4, cstoredf4): New.
22991         (movnegt): Remove second operand.
22992         (cbranchsf4, cbranchdf4): New.
22993         (stack_protect): Use cbranchdi4/cbranchsi4.
22994
22995         * config/sparc/sparc.c (sparc_compare_op0, sparc_compare_op1): Delete.
22996         (gen_compare_reg): Accept comparison, extract part of it to...
22997         (gen_compare_reg_1): ... this.
22998         (gen_compare_operator): Delete.
22999         (gen_v9_scc): Accept separate destination, comparison code and arms.
23000         Do not use sparc_compare_op0/sparc_compare_op1.
23001         (emit_scc_insn, emit_conditional_branch_insn): New.
23002         (emit_v9_brxx): Make static.  Remove useless assertion.
23003         (sparc_emit_float_lib_cmp): Return RTL instead of calling
23004         emit_cmp_insn.
23005         (sparc_expand_compare_and_swap_12): Use gen_compare_reg_1+cbranchcc4.
23006         * config/sparc/sparc-protos.h (gen_compare_reg,
23007         sparc_emit_float_lib_cmp): Adjust prototype.
23008         (emit_scc_insn, emit_conditional_branch_insn): New.
23009         (gen_v9_scc, emit_v9_brxx_insn, gen_compare_operator): Delete.
23010         * config/sparc/sparc.h (sparc_compare_op0, sparc_compare_op1): Delete.
23011         * config/sparc/sparc.md (P, I, F, V32, V32I, V64, V64I): Move all
23012         iterators to the top.
23013         (cmpsi, cmpdi, cmpsf, cmpdf, cmptf, seqsi_special_extend,
23014         snesi_special_extend, sCC, bCC, seqdi_special_trunc,
23015         snedi_special_trunc): Delete.
23016         (seqdi_special, snedi_special): Use expansion of seqdi_special_trunc
23017         and snedi_special_trunc.
23018         (cstoresi4, cstoredi4, cstore<F:mode>4, cbranchcc4, cbranchsi4,
23019         cbranchdi4, cbranch<F:mode>4): New.
23020         (mov<I:mode>cc, mov<F:mode>cc): Handle sparc_emit_float_lib_cmp
23021         here.  Use gen_compare_reg instead of gen_compare_operator.
23022         (conditional_trap): Replace with...
23023         (ctrapsi4, ctrapdi4): ... this.
23024         (stack_protect_test): Use cbranchcc4.
23025
23026         * config/spu/spu-protos.h (spu_emit_branch_or_set): Change second
23027         argument to rtx.
23028         * config/spu/spu.c (spu_compare_op0, spu_compare_op1): Remove.
23029         (spu_emit_branch_or_set): Get code/op0/op1 from second argument.
23030         Change spu_compare_op0/op1 to op0/op1 throughout.  Get target
23031         from operands[0] or operands[3] depending on is_set.
23032         * config/spu/spu.h (spu_compare_op0, spu_compare_op1): Remove.
23033         * config/spu/spu.md (cmp<mode:VQHSI>, cmp<mode:DTI>, cmp<mode:VSF>,
23034         cmpdf, bCC), sCC: Remove.
23035         (cbranch<mode:VQHSI>4, cbranch<mode:DTI>, cbranch<mode:VSF>4,
23036         cbranchdf4, cstore<mode:VQHSI>4, cstore<mode:DTI>, cstore<mode:VSF>4,
23037         cstoredf4): New.
23038         (mov<mode>cc): Accept ordered_comparison_operator, adjust call to
23039         spu_emit_branch_or_set.
23040
23041         * config/stormy16/stormy16-protos.h (xstormy16_emit_cbranch):
23042         Add two arguments.
23043         * config/stormy16/stormy16.h (xstormy16_compare_op0,
23044         xstormy16_compare_op1): Delete.
23045         * config/stormy16/stormy16.c (xstormy16_compare_op0,
23046         xstormy16_compare_op1): Delete.
23047         (xstormy16_emit_cbranch): Get op0/op1 from the new arguments.
23048         Adjust calls.
23049         * config/stormy16/stormy16.md (cbranchsi4, cbranchhi4): New.
23050         (cmphi, cmpsi, bCC): Remove.
23051
23052         * config/v850/v850.md (tstsi, cmpsi): Fold into...
23053         (*cmpsi): ... this one.
23054         (cbranchsi4, cstoresi4): New.
23055         (bCC expanders): Delete.
23056         (sCC insns): Fold into...
23057         (*setcc): ... this one.
23058         (casesi): Do not use gen_cmpsi and gen_bgtu.
23059         (various splits): Wrap "naked" RHS of a cc0 set with COMPARE.
23060         (movsicc): Simplify.
23061         * config/v850/v850.c (v850_rtx_costs): Handle ZERO_EXTRACT in COMPARE.
23062
23063         * config/vax/vax-protos.h (cond_name): New.
23064         (vax_output_conditional_branch): Remove.
23065         * config/vax/vax.c (cond_name): New.
23066         (vax_output_conditional_branch): Remove.
23067         * config/vax/vax.h (PRINT_OPERAND): Dispatch %c to cond_name.
23068         * config/vax/vax.md (tst<VAXint>, tst<VAXfp>): Remove.
23069         (cmp<VAXint>, cmp<VAXfp>): Privatize.  Add constraints for tst.
23070         (bit<VAXint>): Wrap source with (compare).
23071         (b<code> and following unnamed pattern): Rename to *branch and
23072         *branch_reversed.  Change macroization to match_operator.
23073         (cbranch<VAXint>4, cbranch<VAXfp>4): New.
23074
23075         * config/xtensa/predicates.md (xtensa_cstoresi_operator): New.
23076         * config/xtensa/xtensa-protos.h (xtensa_expand_conditional_branch):
23077         Change last argument to machine_mode.
23078         (xtensa_expand_scc): Add machine_mode argument.
23079         * config/xtensa/xtensa.c (branch_cmp, branch_type): Remove.
23080         (gen_conditional_move, xtensa_expand_conditional_branch,
23081         xtensa_expand_scc, xtensa_expand_conditional_move): Use mode
23082         instead of branch_type, fetch cmp0/cmp1/test_code from operands[].
23083         Adjust operand numbers.
23084         * config/xtensa/xtensa.h (enum cmp_type, branch_cmp, branch_type):
23085         Delete.
23086         * config/xtensa/xtensa.md (any_cond, any_scc): Delete.
23087         (cmpsi, cmpsf, b<code>, s<code>): Delete.
23088         (cbranchsi4, cbranchsf4, cstoresi4, cstoresf4): New.
23089
23090 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
23091
23092         * optabs.c (prepare_cmp_insn): Temporarily disable test that
23093         causes spurious differences between trunk and cond-optab branch.
23094
23095 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
23096
23097         PR target/37137
23098         * doc/install.texi (STAGE1_TFLAGS, BUILD_CONFIG): Document.
23099
23100 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
23101
23102         * tree.c (iterative_hash_pointer): Delete.
23103         (iterative_hash_expr): Short-circuit handling of NULL pointer.
23104         Hash UIDs and versions of SSA names.  Don't special-case built-in
23105         function declarations.
23106
23107 2009-05-11  Ian Lance Taylor  <iant@google.com>
23108
23109         PR bootstrap/40103
23110         * graphite.c: Force -Wc++-compat to only be a warning before
23111         #including "cloog/cloog.h".
23112
23113 2009-05-11  Martin Jambor  <mjambor@suse.cz>
23114
23115         * ipa-cp.c (ipcp_cloning_candidate_p): Add missing return false.
23116
23117 2009-05-11  Jan Hubicka  <jh@suse.cz>
23118
23119         * tree-ssa-loop-ivcanon.c: Include target.h
23120         (struct loop_size): new structure.
23121         (constant_after_peeling): New predicate.
23122         (tree_estimate_loop_size): New function.
23123         (estimated_unrolled_size): Rewrite for new estimates.
23124         (try_unroll_loop_completely): Use new estimates.
23125         * Makefile.in (tree-ssa-loop-ivcanon.o): Add dependenc on target.h
23126
23127 2009-05-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23128
23129         * config/spu/spu-c.c (spu_categorize_keyword): Update for recent
23130         libcpp interface change.
23131         (spu_macro_to_expand): Likewise.
23132
23133 2009-05-11  Paolo Bonzini  <bonzini@gnu.org>
23134
23135         PR tree-optimization/40026
23136         * gimplify.c (gimplify_init_constructor): Change initial conditional
23137         to assertion.  Rewrite TREE_OPERAND (*expr_p, 1) after
23138         optimize_compound_literals_in_ctor.
23139
23140 2009-05-11  Nathan Sidwell  <nathan@codesourcery.com>
23141
23142         * config/m68k/m68k-devices.def (52274, 52277, 5301x, 5225x, 51xx):
23143         New devices.
23144         * doc/invoke.texi (M680x0 Options): Document new coldfire cpus.
23145
23146 2009-05-11  H.J. Lu  <hongjiu.lu@intel.com>
23147
23148         * tree-vect-data-refs.c (vect_analyze_group_access): Use
23149         HOST_WIDE_INT for gap.
23150
23151 2009-05-11  Ira Rosen  <irar@il.ibm.com>
23152
23153         PR tree-optimization/40074
23154         * tree-vect-data-refs.c (vect_analyze_group_access): Take gaps into
23155         account in group size and step comparison.
23156
23157 2009-05-11  Richard Guenther  <rguenther@suse.de>
23158
23159         * passes.c (init_optimization_passes): Strip now incorrect comment.
23160         (execute_function_todo): Do not set PROP_alias.
23161         * tree-pass.h (PROP_alias): Remove.
23162         * tree-ssa-structalias.c (pass_build_alias): Do not provide PROP_alias.
23163         * tree-if-conv.c (pass_if_conversion): Do not require PROP_alias.
23164         * tree-nrv.c (pass_return_slot): Likewise.
23165         * tree-object-size.c (pass_object_sizes): Likewise.
23166         * tree-ssa-dom.c (pass_dominator): Likewise.
23167         (pass_phi_only_cprop): Likewise.
23168         * tree-ssa-dse.c (pass_dse): Likewise.
23169         * tree-ssa-phiopt.c (pass_phiopt): Likewise.
23170         (pass_cselim): Likewise.
23171         * tree-ssa-pre.c (pass_pre): Likewise.
23172         (pass_fre): Likewise.
23173         * tree-ssa-reassoc.c (pass_reassoc): Likewise.
23174         * tree-ssa-sink.c (pass_sink_code): Likewise.
23175         * tree-stdarg.c (pass_stdarg): Likewise.
23176         * tree-tailcall.c (pass_tail_calls): Likewise.
23177         * tree-vrp.c (pass_vrp): Likewise.
23178
23179 2009-05-10  Ian Lance Taylor  <iant@google.com>
23180
23181         * basic-block.h (enum profile_status): Break out of struct
23182         control_flow_graph.
23183         * cgraph.h (struct inline_summary): Break out of struct
23184         cgraph_local_info.
23185         * cgraphunit.c (enum cgraph_order_sort_kind): New enum, broken out
23186         of struct cgraph_order_sort.
23187         * combine.c (enum undo_kind): New enum, broken out of struct undo.
23188         * cse.c (struct branch_path): Break out of struct
23189         cse_basic_block_data.
23190         * except.h (enum eh_region_type): Break out of struct eh_region.
23191         * gcc.c (enum add_del): Break out of struct modify_target.
23192         * genrecog.c (enum decision_type): Break out of struct decision_test.
23193         * ggc-page.c (struct ggc_pch_ondisk): Break out of struct
23194         ggc_pch_data.
23195         * matrix-reorg.c (struct free_info): Break out of struct matrix_info.
23196         * regmove.c (enum match_use): New enum, broken out of struct match.
23197         * sched-int.h (enum post_call_group): New enum, broken out of
23198         struct deps.
23199         (struct deps_reg): Break out of struct deps.
23200         * target.h (struct asm_int_op): Break out of struct gcc_target.
23201         * tree-eh.c (struct goto_queue_node): Break out of struct
23202         leh_tf_state.
23203         * tree-inline.h (enum copy_body_cge_which): Break out of
23204         copy_body_data.
23205         * tree-pass.h (enum opt_pass_type): Break out of struct opt_pass.
23206
23207         * c-decl.c (in_struct, struct_types): New static variables.
23208         (pushtag): Add loc parameter.  Change all callers.
23209         (lookup_tag): Add ploc parameter.  Change all callers.
23210         (check_compound_literal_type): New function.
23211         (parser_xref_tag): Add loc parameter.  Change all callers.  If
23212         -Wc++-compat, warn about struct/union/enum types defined within a
23213         struct or union.
23214         (start_struct): Add enclosing_in_struct, enclosing_struct_types,
23215         and loc parameters.  Change all callers.  Change error calls to
23216         error_at, using loc.  For a redefinition, if the location of the
23217         original definition is known, report it.  Set in_struct and
23218         struct_types.  If -Wc++-compat warn if in sizeof, typeof, or alignof.
23219         (finish_struct): Add new parameters enclosing_in_struct and
23220         enclosing_struct_types.  Change all callers.  Set
23221         C_TYPE_DEFINED_IN_STRUCT for all struct/union/enum types defined
23222         in the struct.  If in a struct, add this struct to struct_types.
23223         (start_enum): Add loc parameter.  Change all callers.  Use
23224         error_at for errors, using loc.  For a redefinition, if the
23225         location of the original definition is known, report it.  If in a
23226         struct, add this enum type to struct_types.  If -Wc++-compat warn
23227         if in sizeof, typeof, or alignof.
23228         * c-parser.c (disable_extension_diagnostics): Disable -Wc++-compat.
23229         (enable_extension_diagnostics): Reenable -Wc++-compat if appropriate.
23230         (c_parser_enum_specifier): Get enum location for start_enum.
23231         (c_parser_struct_or_union_specifier): Get struct location for
23232         start_struct.  Save in_struct and struct_types status between
23233         start_struct and finish_struct.
23234         (c_parser_cast_expression): Get location of cast.
23235         (c_parser_alignof_expression): Get location of type.
23236         (c_parser_postfix_expression): Likewise.
23237         (c_parser_postfix_expression_after_paren_type): Add type_loc
23238         parameter.  Change all callers.  Call check_compound_literal_type.
23239         Use type_loc for error about variable size type.
23240         * c-typeck.c (build_external_ref): If -Wc++-compat, warn about a use
23241         of an enum constant from an enum type defined in a struct or union.
23242         (c_cast_expr): Add loc parameter.  Change all callers.  If
23243         -Wc++-compat, warn about defining a type in a cast.
23244         * c-tree.h (C_TYPE_DEFINED_IN_STRUCT): Define.
23245         (start_enum, start_struct, finish_struct): Update declarations.
23246         (parser_xref_tag, c_cast_expr): Update declarations.
23247         (check_compound_literal_type): Declare.
23248
23249 2009-05-11  Ben Elliston  <bje@au.ibm.com>
23250
23251         * config/rs6000/rs6000-c.c (altivec_categorize_keyword): Update
23252         for recent libcpp interface change.
23253         (rs6000_macro_to_expand): Likewise.
23254
23255 2009-05-10  Michael Matz  <matz@suse.de>
23256
23257         PR target/40031
23258         * config/arm/arm.c (require_pic_register): Emit on entry edge,
23259         not at entry of function.
23260
23261 2009-05-10  Richard Guenther  <rguenther@suse.de>
23262
23263         PR tree-optimization/40081
23264         Revert
23265         * tree-sra.c (instantiate_element): Instantiate scalar replacements
23266         using the main variant of the element type.  Do not fiddle with
23267         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
23268
23269         * tree-sra.c (sra_type_can_be_decomposed_p): Do not decompose
23270         structs with volatile fields.
23271
23272 2009-05-10  Jan Hubicka  <jh@suse.cz>
23273
23274         * tree-inline.c (delete_unreachable_blocks_update_callgraph): Declare.
23275         (estimate_move_cost): Assert that it does not get called for
23276         VOID_TYPE_P.
23277         (estimate_num_insns): Skip VOID types in argument handling.
23278         (optimize_inline_calls): Delete unreachable blocks and verify that
23279         callgraph is valid.
23280
23281 2009-05-10  Jan Hubicka  <jh@suse.cz>
23282
23283         * cgraphbuild.c (record_reference): Use cgraph_mark_address_taken_node.
23284         * cgraph.c (cgraph_mark_address_taken_node): New function.
23285         (dump_cgraph_node): Dump new flag.
23286         * cgraph.h (struct cgraph_node): Add address_taken.
23287         (cgraph_mark_address_taken_node): New function.
23288         * ipa.c (cgraph_postorder): Prioritize functions with address taken
23289         since new direct calls can be born.
23290
23291 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
23292
23293         * c-lex.c (c_lex_with_flags): Expect cpp_hashnode in
23294         tok->val.node.node.
23295
23296 2009-05-10  Jan Hubicka  <jh@suse.cz>
23297
23298         PR middle-end/40084
23299         * cgraph.c (cgraph_update_edges_for_call_stmt_node): Take old_call
23300         argument; rewrite.
23301         (cgraph_update_edges_for_call_stmt): Take old_decl argument.
23302         * cgraph.h (cgraph_update_edges_for_call_stmt): Update prototype.
23303         * tree-inline.c (copy_bb): Set frequency correctly.
23304         (fold_marked_statements): Update call to
23305         cgraph_update_edges_for_call_stmt.
23306
23307 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
23308
23309         * config/arc/arc.c (arc_handle_interrupt_attribute): Use %qE for
23310         identifiers in diagnostics.
23311         * config/arm/arm.c (arm_handle_fndecl_attribute,
23312         arm_handle_isr_attribute): Likewise.
23313         * config/avr/avr.c (avr_handle_progmem_attribute,
23314         avr_handle_fndecl_attribute, avr_handle_fntype_attribute): Likewise.
23315         * config/bfin/bfin.c (handle_int_attribute,
23316         bfin_handle_longcall_attribute, bfin_handle_l1_text_attribute,
23317         bfin_handle_l1_data_attribute, bfin_handle_longcall_attribute,
23318         bfin_handle_l1_text_attribute, bfin_handle_l1_data_attribute):
23319         Likewise.
23320         * config/darwin.c (darwin_handle_kext_attribute,
23321         darwin_handle_weak_import_attribute): Likewise.
23322         * config/h8300/h8300.c (h8300_handle_fndecl_attribute,
23323         h8300_handle_eightbit_data_attribute,
23324         h8300_handle_tiny_data_attribute): Likewise.
23325         * config/i386/i386.c (ix86_handle_cconv_attribute,
23326         ix86_handle_abi_attribute, ix86_handle_struct_attribute): Likewise.
23327         * config/i386/winnt.c (ix86_handle_shared_attribute,
23328         ix86_handle_selectany_attribute): Likewise.
23329         * config/ia64/ia64.c (ia64_handle_model_attribute): Likewise.
23330         * config/m32c/m32c.c (function_vector_handler): Likewise.
23331         * config/m68hc11/m68hc11.c (m68hc11_handle_page0_attribute,
23332         m68hc11_handle_fntype_attribute): Likewise.
23333         * config/m68k/m68k.c (m68k_handle_fndecl_attribute): Likewise.
23334         * config/mcore/mcore.c (mcore_handle_naked_attribute): Likewise.
23335         * config/mips/mips.c (mips_insert_attributes,
23336         mips_merge_decl_attributes, mips_expand_builtin): Likewise.
23337         * config/rs6000/rs6000.c (rs6000_handle_longcall_attribute,
23338         rs6000_handle_struct_attribute): Likewise.
23339         * config/sh/sh.c (sh_insert_attributes,
23340         sh_handle_resbank_handler_attribute,
23341         sh_handle_interrupt_handler_attribute,
23342         sh2a_handle_function_vector_handler_attribute,
23343         sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
23344         Likewise.
23345         * config/sh/symbian.c (sh_symbian_mark_dllimport): Likewise.
23346         * config/spu/spu.c (spu_handle_fndecl_attribute,
23347         spu_handle_vector_attribute): Likewise.
23348         * config/stormy16/stormy16.c
23349         (xstormy16_handle_interrupt_attribute): Likewise.
23350         * config/v850/v850-c.c (ghs_pragma_section): Likewise.
23351         * config/v850/v850.c (v850_handle_interrupt_attribute): Likewise.
23352
23353 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
23354
23355         * pretty-print.h (struct pretty_print_info): Add translate_identifiers.
23356         (pp_translate_identifiers): New.
23357         (pp_identifier): Only conditionally translate identifier to locale
23358         character set.
23359         * pretty-print.c (pp_construct): Set pp_translate_identifiers.
23360         (pp_base_tree_identifier): Only conditionally translate identifier
23361         to locale character set.
23362         * c-pretty-print.c (M_): Define.
23363         (pp_c_type_specifier, pp_c_primary_expression): Mark English
23364         fragments for conditional translation with M_.
23365         * tree-pretty-print.c (maybe_init_pretty_print): Disable
23366         identifier translation.
23367
23368 2009-05-10  Richard Guenther  <rguenther@suse.de>
23369
23370         PR tree-optimization/40081
23371         * tree-sra.c (instantiate_element): Instantiate scalar replacements
23372         using the main variant of the element type.  Do not fiddle with
23373         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
23374
23375 2009-05-09  Jan Hubicka  <jh@suse.cz>
23376
23377         PR middle-end/40080
23378         * cgraphunit.c (cgraph_materialize_all_clones): Do not redirect
23379         indirect calls; verify cgraph afterwards.
23380
23381 2009-05-09  Jan Hubicka  <jh@suse.cz>
23382
23383         PR bootstrap/40082
23384         * ipa.c (update_inlined_to_pointer): New function.
23385         (cgraph_remove_unreachable_nodes): Use it.
23386
23387 2009-05-09  Jan Hubicka  <jh@suse.cz>
23388
23389         * tree-eh.c (struct leh_state): Remove prev_try.
23390         (lower_try_finally, lower_catch, lower_eh_filter, lower_cleanup): Do
23391         not track prev_try.
23392         * except.c (gen_eh_region_cleanup, duplicate_eh_regions,
23393         copy_eh_region_1, copy_eh_region, redirect_eh_edge_to_label,
23394         remove_eh_handler_and_replace, foreach_reachable_handler,
23395         verify_eh_region, verify_eh_tree): Remove tracking of prev_try pointer.
23396         * except.h (struct eh_region): Remove eh_region_u_cleanup.
23397         (gen_eh_region_cleanup): Update prototype.
23398
23399 2009-05-09  Jan Hubicka  <jh@suse.cz>
23400
23401         PR middle-end/40043
23402         * except.c (copy_eh_region): Always set prev_try.
23403         (redirect_eh_edge_to_label): Find outer try.
23404         (foreach_reachable_handler): When looking for prev try
23405         handle case where previous try is not going to be taken.
23406
23407 2009-05-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
23408
23409         PR tree-optimization/40049
23410         * tree-vect-stmts.c (vectorizable_operation): If the machine has
23411         only vector/vector shifts, convert the type of the constant to the
23412         appropriate type to avoid building incorrect trees, which
23413         eventually have problems with garbage collection.
23414
23415 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
23416
23417         * fold-const.c (fold_binary): Do not fold multiplication by 1 or
23418         -1 for complex floating-point types if honoring signed zeros.
23419
23420 2009-05-08  Jan Hubicka  <jh@suse.cz>
23421
23422         * cgraphbuild.c (compute_call_stmt_bb_frequency): Accept function
23423         argument; handle correctly when profile is absent.
23424         (build_cgraph_edges): Update.
23425         (rebuild_cgraph_edges): Update.
23426         * cgraph.c: Do not include varray.h.
23427         (cgraph_set_call_stmt_including_clones): New function.
23428         (cgraph_create_edge_including_clones): Likewise
23429         (cgraph_update_edges_for_call_stmt_node): New static cfunction.
23430         (cgraph_update_edges_for_call_stmt): Handle clones.
23431         (cgraph_remove_node): Handle clone tree.
23432         (cgraph_remove_node_and_inline_clones): New function.
23433         (dump_cgraph_node): Dump clone tree.
23434         (cgraph_clone_node): Handle clone tree.
23435         (clone_function_name): Bring here from tree-inline.c.
23436         (cgraph_create_virtual_clone): New function.
23437         * cgraph.h (ipa_replace_map): Move here from ipa.h.
23438         (cgraph_clone_info): New function.
23439         (strut cgraph_node): Add clone_info and new clone tree pointers.
23440         (cgraph_remove_node_and_inline_clones,
23441         cgraph_set_call_stmt_including_clones,
23442         cgraph_create_edge_including_clones,
23443         cgraph_create_virtual_clone): Declare.
23444         (cgraph_function_versioning): Use VEC argument.
23445         (compute_call_stmt_bb_frequency): Update prototype.
23446         (cgraph_materialize_all_clones): New function.
23447         * ipa-cp.c (ipcp_update_cloned_node): Remove.
23448         (ipcp_create_replace_map): Update to VECtors.
23449         (ipcp_update_callgraph): Use virtual clones.
23450         (ipcp_update_bb_counts, ipcp_update_edges_counts): Remove.
23451         (ipcp_update_profiling): Do not update local profiling.
23452         (ipcp_insert_stage): Use VECtors and virtual clones.
23453         * cgraphunit.c (verify_cgraph_node): Verify clone tree.
23454         (clone_of_p): New function.
23455         (cgraph_preserve_function_body_p): Use clone tree.
23456         (cgraph_optimize): Materialize clones.
23457         (cgraph_function_versioning): Update for VECtors.
23458         (save_inline_function_body): Use clone tree.
23459         (cgraph_materialize_clone): New function.
23460         (cgraph_materialize_all_clones): Likewise.
23461         * ipa-inline.c (cgraph_default_inline_p): Use analyzed flags.
23462         * ipa.c: Include gimple.h.
23463         (cgraph_remove_unreachable_nodes): Use clone tree.
23464         * ipa-prop.c (ipa_note_param_call): Update call to
23465         compute_call_stmt_bb_frequencycall.
23466         * ipa-prop.h (ipa_replace_map): Move to cgraph.h.
23467         * tree-inline.c: Do not include varray.h or gt-tree-inline.h.
23468         (copy_bb): Handle updating of clone tree; add new edge when new call
23469         appears.
23470         (expand_call_inline): Be strict about every call having edge.
23471         (clone_fn_id_num, clone_function_name): Move to cgraph.c.
23472         (delete_unreachable_blocks_update_callgraph): New function.
23473         (tree_function_versioning): Use VECtors; always remove unreachable
23474         blocks and fold conditionals.
23475         * tree-inline.h: Do not include varray.h.
23476         (tree_function_versioning): Remove.
23477         * Makefile.in (GTFILES): Remove tree-inline.c
23478         * passes.c (do_per_function): Do only functions having body.
23479         * ipa-struct-reorg.c (do_reorg_1, collect_data_accesses): Handle clone
23480         tree.
23481
23482 2009-05-08  H.J. Lu  <hongjiu.lu@intel.com>
23483             Andrew Morrow  <acm@google.com>
23484
23485         PR c/36892
23486         * c-common.c (c_common_attribute_table): Permit deprecated
23487         attribute to take an optional argument.
23488         (handle_deprecated_attribute): If the optional argument to
23489         __attribute__((deprecated)) is not a string ignore the attribute
23490         and emit a warning.
23491
23492         * c-decl.c (grokdeclarator): Updated warn_deprecated_use call.
23493         * c-typeck.c (build_component_ref): Likewise.
23494         (build_external_ref): Likewise.
23495
23496         * toplev.c (warn_deprecated_use): Add an attribute argument.
23497         Emit the message associated with __attribute__((deprecated)).
23498
23499         * toplev.h (warn_deprecated_use): Updated.
23500
23501         * doc/extend.texi: Document new optional parameter to
23502         __attribute__((deprecated))
23503
23504 2009-05-08  Michael Eager <eager@eagercon.com>
23505
23506         * config/rs6000/rs6000.md (*movdf_softfloat32): replace
23507         !TARGET_DOUBLE_FLOAT with TARGET_SINGLE_FLOAT.
23508
23509 2009-05-08  Richard Guenther  <rguenther@suse.de>
23510
23511         PR tree-optimization/40062
23512         * tree-scalar-evolution.c (follow_ssa_edge_in_condition_phi):
23513         Avoid exponential behavior.
23514
23515 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
23516
23517         PR rtl-optimization/33928
23518         PR 26854
23519         * fwprop.c (use_def_ref, get_def_for_use, bitmap_only_bit_bitween,
23520         process_uses, build_single_def_use_links): New.
23521         (update_df): Update use_def_ref.
23522         (forward_propagate_into): Use get_def_for_use instead of use-def
23523         chains.
23524         (fwprop_init): Call build_single_def_use_links and let it initialize
23525         dataflow.
23526         (fwprop_done): Free use_def_ref.
23527         (fwprop_addr): Eliminate duplicate call to df_set_flags.
23528         * df-problems.c (df_rd_simulate_artificial_defs_at_top,
23529         df_rd_simulate_one_insn): New.
23530         (df_rd_bb_local_compute_process_def): Update head comment.
23531         (df_chain_create_bb): Use the new RD simulation functions.
23532         * df.h (df_rd_simulate_artificial_defs_at_top,
23533         df_rd_simulate_one_insn): New.
23534         * opts.c (decode_options): Enable fwprop at -O1.
23535         * doc/invoke.texi (-fforward-propagate): Document this.
23536
23537 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
23538
23539         PR c/24581
23540         * c-typeck.c (build_binary_op): Handle arithmetic between one real
23541         and one complex operand specially.
23542         * tree-complex.c (some_nonzerop): Do not identify a real value as
23543         zero if flag_signed_zeros.
23544
23545 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
23546
23547         PR rtl-optimization/33928
23548         * loop-invariant.c (record_use): Fix && vs. || mishap.
23549
23550 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
23551
23552         PR rtl-optimization/33928
23553         * loop-invariant.c (struct use): Add addr_use_p.
23554         (struct def): Add n_addr_uses.
23555         (struct invariant): Add cheap_address.
23556         (create_new_invariant): Set cheap_address.
23557         (record_use): Accept df_ref.  Set addr_use_p and update n_addr_uses.
23558         (record_uses): Pass df_ref to record_use.
23559         (get_inv_cost): Do not add inv->cost to comp_cost for cheap addresses
23560         used only as such.
23561
23562 2009-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
23563
23564         * config/sh/sh.c: Do not include c-pragma.h.
23565
23566 2009-05-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23567
23568         * config/spu/spu.c: Remove include of c-common.h.
23569
23570 2009-05-07  Janis Johnson  <janis187@us.ibm.com>
23571
23572         PR c/39037
23573         * c-common.h (mark_valid_location_for_stdc_pragma,
23574         valid_location_for_stdc_pragma_p, set_float_const_decimal64,
23575         clear_float_const_decimal64, float_const_decimal64_p): New.
23576         * c.opt (Wunsuffixed-float-constants): New.
23577         * c-lex.c (interpret_float): Use pragma FLOAT_CONST_DECIMAL64 for
23578         unsuffixed float constant, handle new warning.
23579         * c-cppbuiltin.c (c_cpp_builtins): Use cast for double constants.
23580         * c-decl.c (c_scope): New flag float_const_decimal64.
23581         (set_float_const_decimal64, clear_float_const_decimal64,
23582         float_const_decimal64_p): New.
23583         (push_scope): Set new flag.
23584         * c-parser.c (c_parser_translation_unit): Mark when it's valid
23585         to use STDC pragmas.
23586         (c_parser_external_declaration): Ditto.
23587         (c_parser_compound_statement_nostart): Ditto.
23588         * c-pragma.c (valid_location_for_stdc_pragma,
23589         mark_valid_location_for_stdc_pragma,
23590         valid_location_for_stdc_pragma_p, handle_stdc_pragma,
23591         handle_pragma_float_const_decimal64): New.
23592         (init_pragma): Register new pragma FLOAT_CONST_DECIMAL64.
23593         * cp/semantics.c (valid_location_for_stdc_pragma_p,
23594         set_float_const_decimal64, clear_float_const_decimal64,
23595         float_const_decimal64_p): New dummy functions.
23596         * doc/extend.texi (Decimal Float): Remove statement that the
23597         pragma, and suffix for double constants, are not supported.
23598         * doc/invoke.texi (Warning Options): List new option.
23599         (-Wunsuffixed-float-constants): New.
23600
23601 2009-05-08  Steven Bosscher  <steven@gcc.gnu.org>
23602
23603         * config/i386/i386.c: Do not include c-common.h.
23604
23605 2009-05-07  Mark Heffernan  <meheff@google.com>
23606
23607         * doc/invoke.texi (Debugging Options): Document change of debugging
23608         dump location.
23609         * opts.c (decode_options): Make dump_base_name relative to
23610         aux_base_name directory.
23611
23612 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
23613
23614         * config/picochip/picochip.h (NO_DOLLAR_IN_LABEL): Added.
23615         * config/picochip/libgccExtras/divmod15.asm : Removed redefiniton.
23616
23617 2009-05-07  Rafael Avila de Espindola  <espindola@google.com>
23618
23619         * Makefile.in (install-plugin): Simplify a bit.
23620
23621 2009-05-07  Paolo Bonzini  <bonzini@gnu.org>
23622
23623         * Makefile.in (OBJS-common): Add regcprop.o.
23624         (regcprop.o): New.
23625         * timevar.def (TV_CPROP_REGISTERS): New.
23626         * regrename.c (regrename_optimize): Return 0.
23627         (rest_of_handle_regrename): Delete.
23628         (pass_rename_registers): Point to regrename_optimize.
23629         (struct value_data_entry, struct value_data,
23630         kill_value_one_regno, kill_value_regno, kill_value,
23631         set_value_regno, init_value_data, kill_clobbered_value,
23632         kill_set_value, kill_autoinc_value, copy_value,
23633         mode_change_ok, maybe_mode_change, find_oldest_value_reg,
23634         replace_oldest_value_reg, replace_oldest_value_addr,
23635         replace_oldest_value_mem, copyprop_hardreg_forward_1,
23636         debug_value_data, validate_value_data): Move...
23637         * regcprop.c: ... here.
23638         (rest_of_handle_cprop): Delete.
23639         (pass_cprop_hardreg): Point to copyprop_hardreg_forward.
23640
23641 2009-05-07  Jakub Jelinek  <jakub@redhat.com>
23642
23643         PR middle-end/40057
23644         * dojump.c (prefer_and_bit_test): Use immed_double_const instead of
23645         GEN_INT for 1 << bitnum.
23646         (do_jump) <case BIT_AND_EXPR>: Use build_int_cst_wide_type instead of
23647         build_int_cst_type.
23648
23649 2009-05-07  Uros Bizjak  <ubizjak@gmail.com>
23650
23651         * doc/md.texi (Standard Pattern Names For Generation) [sync_nand]:
23652         Remove wrong description of "nand" operation.
23653
23654 2009-05-06  Richard Guenther  <rguenther@suse.de>
23655             Adam Nemet  <anemet@caviumnetworks.com>
23656
23657         * gimple.def (GIMPLE_ASSIGN): Fix incorrect information in the
23658         comment.  Add that if LHS is not a gimple register, then RHS1 has
23659         to be a single object (GIMPLE_SINGLE_RHS).
23660
23661 2009-05-06  Adam Nemet  <anemet@caviumnetworks.com>
23662
23663         * expr.c (get_def_for_expr): Move it up in the file.
23664         (store_field): When expanding a bit-field store, look at the
23665         defining gimple stmt for the masking conversion.
23666
23667 2009-05-06  Janis Johnson  <janis187@us.ibm.com>
23668
23669         PR middle-end/39986
23670         * dfp.c (encode_decimal32, decode_decimal32, encode_decimal64,
23671         decode_decimal64, encode_decimal128, decode_decimal128): Avoid
23672         32-bit memcpy into long.
23673
23674 2009-05-06  Jakub Jelinek  <jakub@redhat.com>
23675
23676         * dwarf2out.c (new_reg_loc_descr): Don't ever create DW_OP_regX.
23677         (one_reg_loc_descriptor): Create DW_OP_regX here instead of calling
23678         new_reg_loc_descr.
23679         (loc_by_reference): If loc is DW_OP_regX, change it into DW_OP_bregX 0
23680         instead of appending DW_OP_deref*.
23681
23682 2009-05-06  Michael Matz  <matz@suse.de>
23683
23684         PR middle-end/40021
23685         * cfgexpand.c (maybe_cleanup_end_of_block): New static function.
23686         (expand_gimple_cond): Use it to cleanup CFG and superfluous jumps.
23687
23688 2009-05-06  Rafael Avila de Espindola  <espindola@google.com>
23689
23690         * Makefile.in (install-plugin): Fix srcdir handling.
23691
23692 2009-05-06  Andrey Belevantsev  <abel@ispras.ru>
23693
23694         * tree-ssa.c (execute_update_address_taken): Handle TARGET_MEM_REF
23695         when processing for not_regs_needed bitmap.
23696         * gimple.c (walk_stmt_load_store_addr_ops): When visiting address,
23697         handle TARGET_MEM_REF in lhs.  Check TMR_BASE for NULL while
23698         handling it for rhs.
23699
23700 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
23701
23702         * config/i386/i386.md (unnamed inc/dec peephole): Use
23703         optimize_insn_for_size_p instead of optimize_size.
23704         * config/i386/predicates.md (incdec_operand): Likewise.
23705         (aligned_operand): Likewise.
23706         * config/i386/sse.md (divv8sf3): Likewise.
23707         (sqrtv8sf2): Likewise.
23708
23709 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
23710
23711         * config/i386/i386.c (ix86_build_signbit_mask): Make it static.
23712
23713         * config/i386/i386-protos.h (ix86_build_signbit_mask): Removed.
23714
23715 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
23716
23717         * config/i386/i386.md (*avx_<code><mode>3_finite): Replace
23718         ssemodesuffixf2c with avxmodesuffixf2c.
23719
23720 2009-05-06  Joseph Myers  <joseph@codesourcery.com>
23721
23722         PR c/40032
23723         * c-decl.c (grokdeclarator): Handle incomplete type of unnamed field.
23724
23725 2009-05-05  Jakub Jelinek  <jakub@redhat.com>
23726
23727         * tree.h: Remove DECL_BY_REFERENCE from private_flag comment.
23728         (struct tree_base): Adjust spacing for 8 bit boundaries.
23729         (struct tree_decl_common): Add decl_by_reference_flag bit.
23730         (DECL_BY_REFERENCE): Adjust.
23731         * print-tree.c (print_node): For VAR_DECL, PARM_DECL or RESULT_DECL,
23732         print DECL_BY_REFERENCE bit.
23733         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Revert last change.
23734         * dwarf2out.c (loc_by_reference, gen_decl_die): Check
23735         DECL_BY_REFERENCE for all VAR_DECLs, not just non-static ones.
23736         (gen_variable_die): Likewise.  Check TREE_PRIVATE/TREE_PROTECTED
23737         unconditionally.
23738
23739         PR middle-end/39666
23740         * gimplify.c (gimplify_switch_expr): If case labels cover the whole
23741         range of the type, but default label is missing, add it with one
23742         of the existing labels instead of adding a new label for it.
23743
23744 2009-05-05  Joseph Myers  <joseph@codesourcery.com>
23745
23746         * dwarf.h: Remove.
23747
23748 2009-05-05  Rafael Avila de Espindola  <espindola@google.com>
23749
23750         * Makefile.in (enable_plugin, plugin_includedir): New.
23751         (install): Depend on install-plugin.
23752         (PLUGIN_HEADERS): New.
23753         (install-plugin): New.
23754         * config.gcc: Add vxworks-dummy.h to tm_file for x86 and x86-64.
23755
23756 2009-05-05  Richard Guenther  <rguenther@suse.de>
23757
23758         PR tree-optimization/40022
23759         * tree-ssa-phiprop.c (struct phiprop_d): Exchange vop_stmt for
23760         the only vuse.
23761         (phivn_valid_p): Fix tuplification error, simplify.
23762         (phiprop_insert_phi): Add dumps.
23763         (propagate_with_phi): Simplify.
23764
23765 2009-05-05  Richard Guenther  <rguenther@suse.de>
23766
23767         PR middle-end/40023
23768         * builtins.c (gimplify_va_arg_expr): Properly build the address.
23769
23770 2009-05-05  Shujing Zhao  <pearly.zhao@oracle.com>
23771
23772         * tree.h (strip_float_extensions): Remove duplicate declaration.
23773         (build_low_bits_mask, debug_fold_checksum, expand_function_end,
23774         expand_function_start, stack_protect_prologue, stack_protect_epilogue,
23775         block_ultimate_origin): Rearrange the declarations line to match the
23776         comment that indicates the .c file which the functions are defined.
23777         (dwarf2out_*, set_decl_rtl): Add comment.
23778         (get_base_address): Adjust comment.
23779         (change_decl_assembler_name, maybe_fold_*, build_addr): Rearrange the
23780         declarations line and add comment.
23781         (is_builtin_name): Add blank after function name, for clarity.
23782
23783 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
23784
23785         * attribs.c (decl_attributes): Use %qE for identifiers in
23786         diagnostics.
23787         * cgraphunit.c (verify_cgraph_node): Translate function names to
23788         locale character set in diagnostics.
23789         * coverage.c (get_coverage_counts): Use %qE for identifiers in
23790         diagnostics.
23791         * doc/invoke.texi (-finstrument-functions-exclude-function-list):
23792         Document that functions are named in UTF-8.
23793         * expr.c (expand_expr_real_1): Translate function names to locale
23794         character set in diagnostics.
23795         * gimplify.c (omp_notice_variable, omp_is_private,
23796         gimplify_scan_omp_clauses): Use %qE for identifiers in
23797         diagnostics.
23798         * langhooks.c (lhd_print_error_function): Translate function names
23799         to locale character set.
23800         * langhooks.h (decl_printable_name): Document that return value is
23801         in internal character set.
23802         * stmt.c: Include pretty-print.h
23803         (tree_conflicts_with_clobbers_p): Use %qE for identifiers in
23804         diagnostics.
23805         (resolve_operand_name_1): Translate named operand name to locale
23806         character set.
23807         * stor-layout.c (finalize_record_size): Use %qE for identifiers in
23808         diagnostics.
23809         * toplev.c (announce_function): Translate function names to locale
23810         character set.
23811         (warn_deprecated_use): Use %qE for identifiers in diagnostics.
23812         (default_tree_printer): Use pp_identifier or translate identifiers
23813         to locale character set.  Mark "<anonymous>" for translation.
23814         * tree-mudflap.c (mx_register_decls, mudflap_finish_file): Use %qE
23815         for identifiers in diagnostics.
23816         * tree.c (handle_dll_attribute): Use %qE for identifiers in
23817         diagnostics.
23818         * varasm.c (output_constructor): Use %qE for identifiers in
23819         diagnostics.
23820
23821 2009-05-04  Rafael Avila de Espindola  <espindola@google.com>
23822
23823         * configure.ac: use ` ` instead of $()
23824         * configure: Regenerate.
23825
23826 2009-05-05  Ben Elliston  <bje@au.ibm.com>
23827
23828         * config/pa/linux-atomic.c: Eliminate conditional include of
23829         errno.h on non-LP64 systems to simplify build requirements.
23830
23831 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
23832
23833         * c-common.c (handle_mode_attribute): Use %qE for identifiers in
23834         diagnostics.
23835         * c-decl.c (check_bitfield_type_and_width): Make orig_name a tree
23836         and pass value to identifier_to_locale.
23837         (warn_variable_length_array): Make name a tree.
23838         (grokdeclarator): Separate diagnostic texts for named and unnamed
23839         declarators.  Use %qE for named declarators.
23840         * c-parser.c (c_lex_one_token): Use %qE for identifiers in
23841         diagnostics.
23842         * c-pragma.c (pop_alignment, handle_pragma_pack): Use %qE for
23843         identifiers in diagnostics.
23844         * c-typeck.c (push_member_name, start_init): Pass identifiers to
23845         identifier_to_locale.  Mark "anonymous" strings for translation.
23846
23847 2009-05-04  Michael Eager <eager@eagercon.com>
23848
23849         * config/rs6000/rs6000.c (rs6000_legitimate_address): Allow
23850         address for DImode/DFmode only if double-precision FP regs.
23851
23852 2009-05-04  Michael Eager <eager@eagercon.com>
23853
23854         * config/rs6000/rs6000.c (rs6000_libcall_value): Add
23855         TARGET_SINGLE_FLOAT check.
23856
23857 2009-05-04  Michael Eager <eager@eagercon.com>
23858
23859         * config/rs6000/xilinx.h: Add CPP_SPEC for -mxilinx-fpu options.
23860
23861 2009-05-04  Michael Eager <eager@eagercon.com>
23862
23863         * gcc/config.gcc (powerpc-xilinx-eabi*): Add tm t-xilinx
23864         * config/rs6000/t-xilinx: New
23865
23866 2009-05-04  Paolo Bonzini  <bonzini@gnu.org>
23867
23868         * doc/tm.texi (LEGITIMIZE_ADDRESS): Revise documentation.
23869         * gcc/defaults.h (LEGITIMIZE_ADDRESS): Delete.
23870         * gcc/explow.c (memory_address): Use target hook.
23871         * gcc/targhooks.c (default_legitimize_address): New.
23872         * gcc/targhooks.h (default_legitimize_address): New.
23873         * gcc/target.h (legitimize_address): New.
23874         * gcc/target-def.h (TARGET_LEGITIMIZE_ADDRESS): New.
23875         (TARGET_INITIALIZER): Include it.
23876         * gcc/system.h (LEGITIMIZE_ADDRESS): Poison.
23877
23878         * config/bfin/bfin-protos.h (legitimize_address): Remove.
23879         * config/bfin/bfin.c (legitimize_address): Remove.
23880         * config/bfin/bfin.h (LEGITIMIZE_ADDRESS): Remove.
23881         * config/m68hc11/m68hc11-protos.h (m68hc11_legitimize_address):
23882         Remove.
23883         * config/m68hc11/m68hc11.c (m68hc11_legitimize_address): Remove.
23884         * config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Remove.
23885
23886         * gcc/config/arm/arm.h (LEGITIMIZE_ADDRESS, ARM_LEGITIMIZE_ADDRESS,
23887         THUMB_LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS): Delete.
23888         * gcc/config/s390/s390.h (LEGITIMIZE_ADDRESS): Delete.
23889         * gcc/config/m32c/m32c.h (LEGITIMIZE_ADDRESS): Delete.
23890         * gcc/config/sparc/sparc.h (LEGITIMIZE_ADDRESS): Delete.
23891         * gcc/config/m32r/m32r.h (LEGITIMIZE_ADDRESS): Delete.
23892         * gcc/config/i386/i386.h (LEGITIMIZE_ADDRESS): Delete.
23893         * gcc/config/sh/sh.h (LEGITIMIZE_ADDRESS): Delete.
23894         * gcc/config/avr/avr.h (LEGITIMIZE_ADDRESS): Delete.
23895         * gcc/config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Delete.
23896         * gcc/config/iq2000/iq2000.h (LEGITIMIZE_ADDRESS): Delete.
23897         * gcc/config/mn10300/mn10300.h (LEGITIMIZE_ADDRESS): Delete.
23898         * gcc/config/m68k/m68k.h (LEGITIMIZE_ADDRESS): Delete.
23899         * gcc/config/score/score.h (LEGITIMIZE_ADDRESS): Delete.
23900         * gcc/config/pa/pa.h (LEGITIMIZE_ADDRESS): Delete.
23901         * gcc/config/mips/mips.h (LEGITIMIZE_ADDRESS): Delete.
23902         * gcc/config/alpha/alpha.h (LEGITIMIZE_ADDRESS): Delete.
23903         * gcc/config/frv/frv.h (LEGITIMIZE_ADDRESS): Delete.
23904         * gcc/config/spu/spu.h (LEGITIMIZE_ADDRESS): Delete.
23905         * gcc/config/xtensa/xtensa.h (LEGITIMIZE_ADDRESS): Delete.
23906         * gcc/config/cris/cris.h (LEGITIMIZE_ADDRESS): Delete.
23907         * gcc/config/rs6000/rs6000.h (LEGITIMIZE_ADDRESS): Delete.
23908         * gcc/config/picochip/picochip.h (LEGITIMIZE_ADDRESS): Delete.
23909
23910         * gcc/config/s390/s390-protos.h (legitimize_address): Delete.
23911         * gcc/config/m32c/m32c-protos.h (m32c_legitimize_address): Delete.
23912         * gcc/config/sparc/sparc-protos.h (legitimize_address): Delete.
23913         * gcc/config/i386/i386-protos.h (legitimize_address): Delete.
23914         * gcc/config/avr/avr-protos.h (legitimize_address): Delete.
23915         * gcc/config/mn10300/mn10300-protos.h (legitimize_address): Delete.
23916         * gcc/config/score/score-protos.h (score_legitimize_address): Delete.
23917         * gcc/config/arm/arm-protos.h (arm_legitimize_address,
23918         (thumb_legitimize_address): Delete.
23919         * gcc/config/pa/pa-protos.h (hppa_legitimize_address): Delete.
23920         * gcc/config/mips/mips-protos.h (mips_legitimize_address): Delete.
23921         * gcc/config/alpha/alpha-protos.h (alpha_legitimize_address): Delete.
23922         * gcc/config/frv/frv-protos.h (frv_legitimize_address): Delete.
23923         * gcc/config/spu/spu-protos.h (spu_legitimize_address): Delete.
23924         * gcc/config/xtensa/xtensa-protos.h (xtensa_legitimize_address):
23925         Delete.
23926         * gcc/config/rs6000/rs6000-protos.h (rs6000_legitimize_address):
23927         Delete.
23928
23929         * config/arm/arm.c (arm_legitimize_address): Maybe call Thumb version.
23930         * config/m32c/m32c.c (m32c_legitimize_address): Standardize.
23931         * config/m32r/m32r.c (m32r_legitimize_address): New.
23932         * config/m68k/m68k.c (m68k_legitimize_address): New.
23933         * config/score/score.c (score_legitimize_address): Standardize.
23934         * config/score/score3.c (score3_legitimize_address): Standardize.
23935         * config/score/score3.h (score3_legitimize_address): Adjust.
23936         * config/score/score7.c (score7_legitimize_address): Standardize.
23937         * config/score/score7.h (score7_legitimize_address): Adjust.
23938         * config/sh/sh.c (sh_legitimize_address): New.
23939         * config/iq2000/iq2000.c (iq2000_legitimize_address): New.
23940
23941         * gcc/config/s390/s390.c (legitimize_address): Rename to...
23942         (s390_legitimize_address): ... this.
23943         * gcc/config/sparc/sparc.c (legitimize_address): Rename to...
23944         (sparc_legitimize_address): ... this.
23945         * gcc/config/i386/i386.c (legitimize_address): Rename to...
23946         (ix86_legitimize_address): ... this.
23947         * gcc/config/avr/avr.c (legitimize_address): Rename to...
23948         (avr_legitimize_address): ... this.
23949         * gcc/config/mn10300/mn10300.c (legitimize_address): Rename to...
23950         (mn10300_legitimize_address): ... this.
23951         * config/alpha/alpha.c (alpha_legitimize_address): Wrap...
23952         (alpha_legitimize_address_1): ... the old alpha_legitimize_address.
23953         (alpha_expand_mov): Adjust call.
23954
23955         * config/frv/frv.c (frv_legitimize_address): Return x on failure.
23956         * config/spu/spu.c (spu_legitimize_address): Likewise.
23957         * config/xtensa/xtensa.c (xtensa_legitimize_address): Likewise.
23958         * config/rs6000/rs6000.c (rs6000_legitimize_address): Likewise.
23959
23960 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
23961
23962         * intl.c (locale_encoding, locale_utf8): New.
23963         (gcc_init_libintl): Initialize locale_encoding and locale_utf8.
23964         * intl.h (locale_encoding, locale_utf8): Declare.
23965         * pretty-print.c: Include ggc.h.  Include iconv.h if HAVE_ICONV.
23966         (pp_base_tree_identifier, decode_utf8_char, identifier_to_locale):
23967         New.
23968         * pretty-print.h (pp_identifier): Call identifier_to_locale on ID
23969         argument.
23970         (pp_tree_identifier): Define to call pp_base_tree_identifier.
23971         (pp_base_tree_identifier): Declare as function.
23972         (identifier_to_locale): Declare.
23973         * Makefile.in (pretty-print.o): Update dependencies.
23974         * varasm.c (finish_aliases_1): Use %qE for identifiers in diagnostics.
23975
23976 2009-05-04  Richard Guenther  <rguenther@suse.de>
23977
23978         PR middle-end/40015
23979         * builtins.c (fold_builtin_memory_op): Do not decay to element
23980         type if the size matches the whole array.
23981
23982 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
23983
23984         * expmed.c (synth_mult): When trying out a shift, pass the result
23985         of a signed shift.
23986
23987 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
23988
23989         * expmed.c (shiftsub_cost): Rename to shiftsub0_cost.
23990         (shiftsub1_cost): New.
23991         (init_expmed): Compute shiftsub1_cost.
23992         (synth_mult): Optimize multiplications by constants of the form
23993         -(2^^m-1) for some constant positive integer m.
23994
23995 2009-05-03  Richard Guenther  <rguenther@suse.de>
23996
23997         PR c/39983
23998         * c-typeck.c (array_to_pointer_conversion): Do not built
23999         ADDR_EXPRs of arrays of pointer-to-element type.
24000         * c-gimplify.c (c_gimplify_expr): Revert change fixing
24001         up wrong ADDR_EXPRs after-the-fact.
24002         * c-common.c (strict_aliasing_warning): Strip pointer
24003         conversions for obtaining the original type.
24004         * builtins.c (fold_builtin_memset): Handle array types.
24005         (fold_builtin_memory_op): Handle folded POINTER_PLUS_EXPRs
24006         and array types
24007
24008 2009-05-03  Richard Guenther  <rguenther@suse.de>
24009
24010         PR middle-end/23329
24011         * tree-ssa.c (useless_type_conversion_p_1): Use get_deref_alias_set.
24012         Do not lose casts from array types with unknown extent to array
24013         types with known extent.
24014         * tree-ssa-copy.c (may_propagate_copy): Remove hack checking for
24015         alias set compatibility.
24016
24017 2009-05-03  Manuel López-Ibáñez  <manu@gcc.gnu.org>
24018
24019         * flags.h (extra_warnings): Delete.
24020         * toplev.c (process_options): Handle Wuninitialized here.
24021         * opts.c (extra_warnings): Delete.
24022         (set_Wextra): Delete.
24023         (common_handle_option): -Wextra can be handled automatically.
24024         * c-opts.c (c_common_handle_option): Delete obsolete code.
24025         (c_common_post_options): Simplify comment.
24026         * common.opt (W): Add Var.
24027         (Wextra): Add Var.
24028         (Wuninitialized): Initialize to -1.
24029
24030 2009-05-03  Adam Nemet  <anemet@caviumnetworks.com>
24031             Richard Guenther  <rguenther@suse.de>
24032
24033         * expr.c (get_def_for_expr): New function.
24034         (expand_expr_real_1) <PLUS_EXPR, MINUS_EXPR>: Adjust to work with
24035         SSA rather than trees.
24036         <MULT_EXPR>: Likewise.  Use subexp0 and subexp1 instead of
24037         TREE_OPERAND (exp, 0) and TREE_OPERAND (exp, 1).
24038
24039 2009-05-03  Joseph Myers  <joseph@codesourcery.com>
24040
24041         * c-common.c (reswords): Add _Imaginary.
24042         * c-common.c (enum rid): Add RID_IMAGINARY.
24043
24044 2009-05-03  Paolo Bonzini  <bonzini@gnu.org>
24045
24046         * tree.h (TYPE_VECTOR_OPAQUE): Fix documentation.
24047         Patch by Richard Guenther.
24048
24049 2009-05-03  Anatoly Sokolov  <aesok@post.ru>
24050
24051         * defaults.h (FRAME_POINTER_REQUIRED): Provide default.
24052         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
24053         * config/alpha/alpha.h (FRAME_POINTER_REQUIRED): Delete.
24054         * config/s390/s390.h (FRAME_POINTER_REQUIRED): Delete.
24055         * config/spu/spu.h (FRAME_POINTER_REQUIRED): Delete.
24056         * config/sh/sh.h (FRAME_POINTER_REQUIRED): Delete.
24057         * config/pdp11/pdp11.h (FRAME_POINTER_REQUIRED): Delete.
24058         * config/stormy16/stormy16.h (FRAME_POINTER_REQUIRED): Delete.
24059         * config/m68hc11/m68hc11.h (FRAME_POINTER_REQUIRED): Delete.
24060         * config/iq2000/iq2000.h (FRAME_POINTER_REQUIRED): Delete.
24061         * config/mn10300/mn10300.h (FRAME_POINTER_REQUIRED): Delete.
24062         * config/ia64/ia64.h (FRAME_POINTER_REQUIRED): Delete.
24063         * config/m68k/m68k.h (FRAME_POINTER_REQUIRED): Delete.
24064         * config/rs6000/rs6000.h (FRAME_POINTER_REQUIRED): Delete.
24065         * config/picochip/picochip.h (FRAME_POINTER_REQUIRED): Delete.
24066         * config/mcore/mcore.h (FRAME_POINTER_REQUIRED): Delete.
24067         * config/h8300/h8300.h (FRAME_POINTER_REQUIRED): Delete.
24068         * config/v850/v850.h (FRAME_POINTER_REQUIRED): Delete.
24069
24070 2009-05-02  Richard Guenther  <rguenther@suse.de>
24071
24072         PR tree-optimization/39940
24073         * tree-ssa-pre.c (eliminate): Make sure we may propagate before
24074         doing so.
24075
24076 2009-05-02  Richard Guenther  <rguenther@suse.de>
24077
24078         PR middle-end/40001
24079         * tree-ssa.c (execute_update_addresses_taken): Properly check
24080         if we can mark a variable DECL_GIMPLE_REG_P.
24081         * gimple.c (is_gimple_reg): Re-order check for DECL_GIMPLE_REG_P
24082         back to the end of the function.
24083         (is_gimple_reg_type): Remove complex type special casing.
24084         * gimplify.c (gimplify_bind_expr): Do not set DECL_GIMPLE_REG_P
24085         if not optimizing.
24086
24087 2009-05-02  Ben Elliston  <bje@au.ibm.com>
24088
24089         * doc/collect2.texi (Collect2): Document search path behaviour
24090         when configured with --with-ld.
24091
24092 2009-05-02  Jan Hubicka  <jh@suse.cz>
24093
24094         * tree-ssa-coalesce.c (coalesce_cost): Do not take ciritical
24095         parameter; update callers.
24096         (coalesce_cost_edge): EH edges are costier because they needs
24097         splitting even if not critical and even more costier when there are
24098         multiple EH predecestors.
24099
24100 2009-05-02  Jan Hubicka  <jh@suse.cz>
24101
24102         * except.c (remove_eh_handler_and_replace): Handle updating after
24103         removing TRY blocks.
24104
24105 2009-05-02  Eric Botcazou  <ebotcazou@adacore.com>
24106
24107         * store-motion.c (compute_store_table): Add ENABLE_CHECKING guard.
24108
24109 2009-05-02  Steven Bosscher  <steven@gcc.gnu.org>
24110
24111         * varasm.c: Do not include c-pragma.h.
24112         * attribs.c: Do not incude c-common.h.
24113
24114 2009-05-01  Michael Matz  <matz@suse.de>
24115
24116         * calls.c (initialize_argument_information): Handle SSA names like
24117         decls with a non MEM_P DECL_RTL.
24118
24119 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
24120
24121         * ipa-reference.c: Do not include c-common.h, include splay-tree.h.
24122         * ipa-utils.c: Likewise.
24123         * ipa-type-escape.c: Likewise.
24124         * cgraphunit.c Do not include c-common.h.
24125         * ipa-pure-const.c: Likewise.
24126         * tree-if-conv.c: Likewise.
24127         * matrix-reorg.c: Do not include c-common.h and c-tree.h.
24128         * ipa-struct-reorg.c: Likewise.
24129         * tree-nomudflap.c: Likewise.
24130         * tree-ssa-structalias.c: Likewise.
24131
24132 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
24133
24134         * store-motion.c: Many cleanups to make this pass a first-class
24135         citizen instead of an appendix to gcse load motion.  Add TODO list
24136         to make this pass faster/cleaner/better.
24137
24138         (struct ls_expr): Post gcse.c-split cleanups.
24139         Rename to st_expr.  Rename "loads" field to "antic_stores".  Rename
24140         "stores" field to "avail_stores".
24141         (pre_ldst_mems): Rename to store_motion_mems.
24142         (pre_ldst_table): Rename to store_motion_mems_table.
24143         (pre_ldst_expr_hash): Rename to pre_st_expr_hash, update users.
24144         (pre_ldst_expr_eq): Rename to pre_st_expr_eq, update users.
24145         (ldst_entry): Rename to st_expr_entry, update users.
24146         (free_ldst_entry): Rename to free_st_expr_entry, update users.
24147         (free_ldst_mems): Rename to free_store_motion_mems, update users.
24148         (enumerate_ldsts): Rename to enumerate_store_motion_mems,
24149         update caller.
24150         (first_ls_expr): Rename to first_st_expr, update users.
24151         (next_ls_expr): Rename to next_st_expr, update users.
24152         (print_ldst_list): Rename to print_store_motion_mems.  Print names of
24153         fields properly for store motion instead of names inherited from load
24154         motion in gcse.c.
24155         (ANTIC_STORE_LIST, AVAIL_STORE_LIST): Remove.
24156         (LAST_AVAIL_CHECK_FAILURE): Explain what this is.  Undefine when we
24157         are done with it.
24158
24159         (ae_kill): Rename to st_kill, update users.
24160         (ae_gen): Rename to st_avloc, update users.
24161         (transp): Rename to st_transp, update users.
24162         (pre_insert_map): Rename to st_insert_map, update users.
24163         (pre_delete_map): Rename to st_delete_map, update users.
24164         (insert_store, build_store_vectors, free_store_memory,
24165         one_store_motion_pass): Update for abovementioned changes.
24166
24167         (gcse_subst_count, gcse_create_count): Remove.
24168         (one_store_motion_pass): New statistics counters "n_stores_deleted"
24169         and "n_stores_created", local variables.
24170
24171         (extract_mentioned_regs, extract_mentioned_regs_1): Rewrite to
24172         use for_each_rtx.
24173
24174         (regvec, compute_store_table_current_insn): Remove.
24175         (reg_set_info, reg_clear_last_set): Remove.
24176         (compute_store_table): Use DF caches instead of local dataflow
24177         solvers.
24178
24179 2009-05-01  Joseph Myers  <joseph@codesourcery.com>
24180
24181         * c-objc-common.c (c_tree_printer): Print identifiers with
24182         pp_identifier, not pp_string.  Mark "({anonymous})" for
24183         translation.
24184         * c-pretty-print.c (pp_c_ws_string): New.
24185         (pp_c_cv_qualifier, pp_c_type_specifier,
24186         pp_c_specifier_qualifier_list, pp_c_parameter_type_list,
24187         pp_c_storage_class_specifier, pp_c_function_specifier,
24188         pp_c_attributes, pp_c_bool_constant, pp_c_constant,
24189         pp_c_primary_expression, pp_c_postfix_expression,
24190         pp_c_unary_expression, pp_c_shift_expression,
24191         pp_c_relational_expression, pp_c_equality_expression,
24192         pp_c_logical_and_expression, pp_c_logical_or_expression): Mostly
24193         use pp_string and pp_c_ws_string in place of pp_identifier and
24194         pp_c_identifier for non-identifiers.  Mark English strings for
24195         translation.
24196         * c-pretty-print.h (pp_c_ws_string): Declare.
24197
24198 2009-04-30  Paul Pluzhnikov  <ppluzhnikov@google.com>
24199             Roland McGrath <roland@redhat.com>
24200
24201         * configure.ac (HAVE_LD_BUILDID): New check for ld --build-id support.
24202         (ENABLE_LD_BUILDID): New configuration option.
24203         * gcc.c [HAVE_LD_BUILDID and ENABLE_LD_BUILDID]
24204         (LINK_BUILDID_SPEC): New macro.
24205         (init_spec): If defined, prepend it between LINK_EH_SPEC and
24206         link_spec.
24207         * doc/install.texi: Document --enable-linker-build-id option.
24208         * configure: Rebuild.
24209         * config.in: Rebuild.
24210
24211 2009-04-30  Adam Nemet  <anemet@caviumnetworks.com>
24212
24213         * config/mips/mips.h (FRAME_GROWS_DOWNWARD,
24214         MIPS_GP_SAVE_AREA_SIZE): Define new macros.
24215         (STARTING_FRAME_OFFSET): Return 0 if FRAME_GROWS_DOWNWARD.  Use
24216         MIPS_GP_SAVE_AREA_SIZE.
24217         * config/mips/mips.c (struct mips_frame_info): Update comment
24218         before arg_pointer_offset and hard_frame_pointer_offset.
24219         (mips_compute_frame_info): Update diagram before function: to
24220         correctly use stack_pointer_rtx for fp_sp_offset and gp_sp_offset, to
24221         indicate the position of frame_pointer_rtx with -fstack-protector and
24222         to show args_size.  Don't allocate cprestore area for leaf functions
24223         if FRAME_GROWS_DOWNWARD.  Use MIPS_GP_SAVE_AREA_SIZE to set
24224         cprestore_size.
24225         (mips_initial_elimination_offset): Update for FRAME_GROWS_DOWNWARD.
24226
24227 2009-04-30  Michael Matz  <matz@suse.de>
24228
24229         PR tree-optimization/39955
24230         * config/rs6000/rs6000.c (rs6000_check_sdmode): Also check SSA_NAMEs.
24231
24232 2009-04-30  Dave Korn  <dave.korn.cygwin@gmail.com>
24233
24234         * ira.c (setup_cover_and_important_classes):  Use safe macro
24235         REG_CLASS_FOR_CONSTRAINT instead of calling regclass_for_constraint
24236         directly.
24237         * genpreds.c (write_tm_preds_h):  Output suitable definition of
24238         REG_CLASS_FOR_CONSTRAINT.
24239
24240 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
24241
24242         * alloc-pool.c (alloc_pool_descriptor): Use an insert_opion value
24243         instead of an int.
24244         * bitmap.c (bitmap_descriptor): Likewise.
24245         * ggc-common.c (loc_descriptor): Likewise.
24246         * varray.c (varray_descriptor): Likewise.
24247         * vec.c (vec_descriptor): Likewise.
24248
24249 2009-04-30  Eric Botcazou  <ebotcazou@adacore.com>
24250
24251         * Makefile.in (dce.o): Add $(EXCEPT_H).
24252         * dce.c: Include except.h and delete redundant vector definitions.
24253         (deletable_insn_p): Return false for non-call insns that can throw
24254         if DF is running.
24255
24256 2009-04-30  Steven Bosscher  <steven@gcc.gnu.org>
24257
24258         * gcse.c (ae_gen): Remove.
24259         (can_assign_to_reg_p): Rename to can_assign_to_reg_without_clobbers_p
24260         and make non-static function to make it available in store-motion.c.
24261         Update call sites with search-and-replace.
24262         (enumerate_ldsts, reg_set_info, reg_clear_last_set, store_ops_ok,
24263         extract_mentioned_regs, extract_mentioned_regs_helper,
24264         find_moveable_store, compute_store_table, load_kills_store, find_loads,
24265         store_killed_in_insn, store_killed_after, store_killed_before,
24266         build_store_vectors, insert_insn_start_basic_block, insert-store,
24267         remove_reachable_equiv_notes, replace_store_insn, delete_store,
24268         free_store_memory, one_store_motion_pass, gate_rtl_store_motion,
24269         execute_rtl_store_motion, pass_rtl_store_motion): Move to...
24270         * store-motion.c: ...new file.  Also copy data structures from gcse.c
24271         and clean up to remove parts not used by store motion.
24272         * rtl.h (can_assign_to_reg_without_clobbers_p): Add prototype.
24273         * Makefile.in (store-motion.o): New rule. Add to OBJS-common.
24274
24275 2009-04-30  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
24276
24277         PR target/38571
24278         * config/arm/arm.h (FUNCTION_BOUNDARY): Set to 16 for thumb
24279         when optimizing for size.
24280
24281 2009-04-30  Hans-Peter Nilsson  <hp@axis.com>
24282
24283         * gcse.c (gcse_constant_p): Fix typo in last change.
24284
24285 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
24286
24287         * plugin.c: Include plugin-version.h only if ENABLE_PLUGIN is defined.
24288
24289 2009-04-30  Andreas Krebbel  <krebbel1@de.ibm.com>
24290
24291         * gcse.c (gcse_constant_p): Make sure the constant is sharable.
24292
24293 2009-04-29  James E. Wilson  <wilson@codesourcery.com>
24294
24295         * config/mips/mips.c (mips_add_offset): Use gen_int_mode for
24296         CONST_HIGH_PART result.
24297
24298 2009-04-29  Anatoly Sokolov  <aesok@post.ru>
24299
24300         * config/avr/avr.c (initial_elimination_offset): Rename to
24301         avr_initial_elimination_offset.
24302         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p,
24303         change return type to bool.
24304         (avr_can_eliminate): New function.
24305         * config/avr/avr.h (CAN_ELIMINATE): Use avr_can_eliminate.
24306         (FRAME_POINTER_REQUIRED): Use avr_frame_pointer_required_p.
24307         (INITIAL_ELIMINATION_OFFSET): Use avr_initial_elimination_offset.
24308         * config/avr/avr-protos.h (initial_elimination_offset): Rename to
24309         avr_initial_elimination_offset.
24310         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p.
24311         (avr_initial_elimination_offset): Define.
24312
24313 2009-04-29  Eric Botcazou  <ebotcazou@adacore.com>
24314             Steven Bosscher  <steven@gcc.gnu.org>
24315
24316         PR rtl-optimization/39938
24317         * Makefile.in (cfgrtl.o): Add $(INSN_ATTR_H).
24318         * cfgrtl.c: Include insn-attr.h.
24319         (rest_of_pass_free_cfg): New function.
24320         (pass_free_cfg): Use rest_of_pass_free_cfg as execute function.
24321         * resource.c (init_resource_info): Remove call to df_analyze.
24322
24323 2009-04-29  Richard Guenther  <rguenther@suse.de>
24324
24325         PR target/39943
24326         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Only
24327         allow conversion to signed integers.
24328
24329 2009-04-29  Richard Guenther  <rguenther@suse.de>
24330
24331         * tree-cfg.c (verify_gimple_assign_binary): Allow vector
24332         shifts of floating point vectors if the shift amount is
24333         a constant multiple of the element size.
24334
24335 2009-04-29  Andreas Krebbel  <krebbel1@de.ibm.com>
24336             Michael Matz  <matz@suse.de>
24337
24338         PR middle-end/39927
24339         PR bootstrap/39929
24340         * tree-outof-ssa.c (emit_partition_copy): New function.
24341         (insert_partition_copy_on_edge, insert_rtx_to_part_on_edge,
24342         insert_part_to_rtx_on_edge): Perform the partition base var
24343         copy using emit_partition_copy.
24344         (insert_value_copy_on_edge): Convert constants to the right mode.
24345         (insert_rtx_to_part_on_edge): Add UNSIGNEDSRCP parameter.
24346         (elim_create): Pass the sign of the src to insert_rtx_to_part_on_edge.
24347
24348 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
24349
24350         * config/bfin/bfin.c (bfin_optimize_loop): If we need a scratch reg,
24351         scan backwards to try to find a constant to initialize it.
24352
24353         * config/bfin/bfin.c (bfin_optimize_loop): When looking for the last
24354         insn before the loop_end instruction, don't look past labels.
24355
24356 2009-04-29  Richard Guenther  <rguenther@suse.de>
24357
24358         PR middle-end/39937
24359         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not
24360         loose type conversions.
24361         (forward_propagate_addr_expr): Fix tuplification bug.  Remove
24362         stmts only if there are no uses of its definition.
24363
24364 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
24365
24366         * config/bfin/bfin.h (splitting_loops): Declare.
24367         * config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315):
24368         Reorder bit definitions to be ascending.
24369         (WA_LOAD_LCREGS, ENABLE_WA_LOAD_LCREGS): New macros.
24370         * config/bfin/bfin.c (splitting_loops): New variable.
24371         (bfin_cpus): Add WA_LOAD_LCREGS as needed.
24372         (struct loop_info): Remove members INIT and LOOP_INIT.
24373         (bfin_optimize_loop): Don't set them.  Reorder the code that generates
24374         the LSETUP sequence.  Allow LC to be loaded from any register, but
24375         also add a case to push/pop a PREG scratch if ENABLE_WA_LOAD_LCREGS.
24376         (bfin_reorg_loops): When done, split all BB_ENDs with splitting_loops
24377         set to 1.
24378         * config/bfin/bfin.md (loop_end splitter): Use splitting_loops instead
24379         of reload_completed.
24380
24381         From Jie Zhang:
24382         * config/bfin/bfin.md (movsi_insn): Refine constraints.
24383
24384 2009-04-29  Rafael Avila de Espindola  <espindola@google.com>
24385
24386         * Makefile.in (PLUGIN_VERSION_H): New.
24387         (OBJS-common): Remove plugin-version.o.
24388         (plugin.o): Depend on (PLUGIN_VERSION_H).
24389         (plugin-version.o): Remove.
24390         * configure: Regenerate
24391         * configure.ac: Create plugin-version.h.
24392         * gcc-plugin.h (plugin_gcc_version): Remove.
24393         (plugin_default_version_check): Change signature.
24394         * plugin-version.c: Remove.
24395         * plugin.c: Include plugin-version.h.
24396         (str_plugin_gcc_version_name): Remove.
24397         (try_init_one_plugin): Pass gcc version to plugin_init.
24398         (plugin_default_version_check): Both gcc and plugin versions are now
24399         arguments.
24400
24401 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
24402
24403         * config/bfin/bfin.c (bfin_optimize_loop): Unify handling of
24404         problematic last insns.  Test for TYPE_CALL rather than CALL_P.
24405         Remove special case testing for last insn of inner loops. Don't fail
24406         if the loop ends with a jump, emit an extra nop instead.
24407
24408         * config/bfin/bfin.c (bfin_register_move_cost): Test for subsets of
24409         DREGS rather than comparing directly.  Remove code that tries to
24410         account for latencies.
24411
24412 2009-04-29  Richard Guenther  <rguenther@suse.de>
24413
24414         PR tree-optimization/39941
24415         * tree-ssa-pre.c (eliminate): Schedule update-ssa after
24416         eliminating an indirect call.
24417
24418 2009-04-29  Richard Guenther  <rguenther@suse.de>
24419
24420         * tree-cfg.c (verify_types_in_gimple_reference): Add require_lvalue
24421         parameter.  Allow invariants as base if !require_lvalue.
24422         (verify_gimple_assign_single): Adjust.
24423
24424 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
24425
24426         * config/bfin/bfin.md (sp_or_sm, spm_string, spm_name): New macro.
24427         (ss<spm_name>hi3, ss<spm_name>hi3_parts, ss<spm_name>hi3_low_parts,
24428         ss<spm_name_hi3_high_parts): New patterns, replacing ssaddhi3,
24429         ssubhi3, ssaddhi3_parts and sssubhi3_parts.
24430         (flag_mulhi3_parts): Produce a HImode output rather than trying to set
24431         a VEC_SELECT.
24432         * config/bfin/bfin.c (bfin_expand_builtin,
24433         case BFIN_BUILTIN_CPLX_SQU): Adjust accordingly.
24434
24435 2009-04-28  Richard Guenther  <rguenther@suse.de>
24436
24437         * tree-vect-loop.c (get_initial_def_for_induction): Use
24438         correct types for pointer increment.
24439
24440 2009-04-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
24441
24442         * toplev.c (print_version): Update GMP version string calculation.
24443
24444 2009-04-28  Eric Botcazou  <ebotcazou@adacore.com>
24445
24446         PR rtl-optimization/39938
24447         * resource.c (init_resource_info): Add call to df_analyze.
24448
24449 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
24450
24451         * config/alpha/alpha.md (usegp): Cast the result of
24452         alpha_find_lo_sum_using_gp to enum attr_usegp.
24453         * config/alpha/alpha.c (override_options): Remove end-of-structure
24454         marker element from cpu_table.  Use array size of cpu_table to handle
24455         -mcpu and -mtune options.
24456         (tls_symbolic_operand_type): Change 0 to TLS_MODEL_NONE.
24457
24458 2009-04-28  Joseph Myers  <joseph@codesourcery.com>
24459
24460         * config.gcc (powerpc*-*-* | rs6000-*-*): Add
24461         rs6000/option-defaults.h to tm_file.  Support cpu_32, cpu_64,
24462         tune_32 and tune_64.
24463         * doc/install.texi (--with-cpu-32, --with-cpu-64): Document
24464         support on PowerPC.
24465         * config/rs6000/rs6000.h (OPTION_DEFAULT_SPECS): Move to ...
24466         * config/rs6000/option-defaults.h: ... here.  New file.
24467         (OPT_64, OPT_32): Define.
24468         (MASK_64BIT): Define to 0 if not already defined.
24469         (OPT_ARCH64, OPT_ARCH32): Define.
24470         (OPTION_DEFAULT_SPECS): Add entries for cpu_32, cpu_64, tune_32
24471         and tune_64.
24472
24473 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
24474
24475         * config/arm/arm.c (arm_override_options): Emit error on using
24476         fpa with AAPCS.
24477
24478 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
24479
24480         PR rtl-optimization/39914
24481         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
24482         registers for allocnos created from user-defined variables only
24483         when not optimizing.
24484
24485 2009-04-28  Richard Guenther  <rguenther@suse.de>
24486
24487         PR middle-end/39937
24488         * fold-const.c (fold_binary): Use distribute_real_division only
24489         on float types.
24490
24491 2009-04-28  Steve Ellcey  <sje@cup.hp.com>
24492
24493         * config.gcc (hppa*64*-*-hpux11*): Set use_gcc_stdint and
24494         add hpux-stdint.h to tm_file.
24495         (hppa[12]*-*-hpux11*): Ditto.
24496         (ia64*-*-hpux*): Ditto.
24497         * config/hpux-stdint.h: New.
24498         * config/ia64/hpux.h (TARGET_OS_CPP_BUILTINS): Set
24499         __STDC_EXT__ for all compiles.
24500         * config/pa/pa-hpux.h: Ditto.
24501         * config/pa/pa-hpux10.h: Ditto.
24502         * config/pa/pa-hpux11.h: Ditto.
24503
24504 2009-04-28  Catherine Moore  <clm@codesourcery.com>
24505
24506         * debug.h (set_name): Add comment.
24507
24508 2009-04-28  Andrew Pinski  <pinskia@gmail.com>
24509
24510         PR target/39929
24511         * config/darwin.c (machopic_gen_offset): Check
24512         currently_expanding_to_rtl if current_ir_type returns IR_GIMPLE.
24513         * config/arm/arm.c (require_pic_register): Likewise.
24514
24515 2009-04-28  Paolo Bonzini  <bonzini@gnu.org>
24516
24517         * config/m32c/m32c.c (TARGET_PROMOTE_FUNCTION_RETURN,
24518         m32c_promote_function_return, TARGET_PROMOTE_PROTOTYPES,
24519         m32c_promote_prototypes): Delete.
24520
24521 2009-04-28  Michael Matz  <matz@suse.de>
24522
24523         PR middle-end/39922
24524         * tree-outof-ssa.c (insert_value_copy_on_edge): Don't convert
24525         constants.
24526
24527 2009-04-28  Richard Guenther  <rguenther@suse.de>
24528
24529         * tree-vect-stmts.c (vect_get_vec_def_for_operand): Fix type error.
24530
24531 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
24532
24533         * config/arm/arm-cores.def: Add support for arm1156t2f-s.
24534         * doc/invoke.texi (ARM Options): Document support for arm1156t2f-s.
24535         * config/arm/arm-tune.md: Regenerate.
24536
24537 2009-04-28  Alexander Monakov  <amonakov@ispras.ru>
24538
24539         * sel-sched-ir.c (maybe_tidy_empty_bb): Do not attempt to delete a
24540         block if there are complex incoming edges.
24541         (sel_merge_blocks): Remove useless assert.
24542         (sel_redirect_edge_and_branch): Check that edge was redirected.
24543         * sel-sched-ir.h (_eligible_successor_edge_p): Remove assert.
24544         (sel_find_rgns): Delete declaration.
24545         * sel-sched.c (purge_empty_blocks): Attempt to remove first block of
24546         the region when it is not a preheader.
24547
24548 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
24549
24550         PR c/39323
24551         * config/alpha/elf.h (MAX_OFILE_ALIGNMENT): Sync with elfos.h
24552
24553 2009-04-28  Richard Guenther  <rguenther@suse.de>
24554
24555         * tree.h (SSA_NAME_VALUE): Remove.
24556         (struct tree_ssa_name): Remove value_handle member.
24557         * tree-vrp.c (execute_vrp): Initialize/free the value-handle
24558         array for jump threading.
24559         * tree-ssa-propagate.c (ssa_prop_init): Do not initialize
24560         SSA_NAME_VALUEs.
24561         * print-tree.c (print_node): Do not dump SSA_NAME_VALUEs.
24562         * tree-flow.h (threadedge_initialize_values): Declare.
24563         (threadedge_finalize_values): Likewise.
24564         * tree-ssa-threadedge.c (ssa_name_values): New global variable.
24565         (SSA_NAME_VALUE): Define.
24566         (threadedge_initialize_values): New function.
24567         (threadedge_finalize_values): Likewise.
24568         * tree-ssa-dom.c (ssa_name_values): New global variable.
24569         (SSA_NAME_VALUE): Define.
24570         (tree_ssa_dominator_optimize): Initialize/free the value-handle array.
24571
24572 2009-04-28  Ira Rosen  <irar@il.ibm.com>
24573
24574         * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks):
24575         Use REPORT_VECTORIZED_LOCATIONS instead
24576         REPORT_VECTORIZED_LOOPS.
24577         * tree-vectorizer.c (vect_verbosity_level): Make static.
24578         (vect_loop_location): Rename to vect_location.
24579         (vect_set_verbosity_level): Update comment.
24580         (vect_set_dump_settings): Use REPORT_VECTORIZED_LOCATIONS
24581         and vect_location.
24582         (vectorize_loops): Fix comment. Use REPORT_VECTORIZED_LOCATIONS
24583         and vect_location. Use REPORT_UNVECTORIZED_LOCATIONS
24584         instead REPORT_UNVECTORIZED_LOOPS.
24585         * tree-vectorizer.h (enum vect_def_type): Rename vect_invariant_def
24586         and vect_loop_def to vect_external_def and vect_internal_def.
24587         (enum verbosity_levels): Rename REPORT_VECTORIZED_LOOPS
24588         and REPORT_UNVECTORIZED_LOOPS to REPORT_VECTORIZED_LOCATIONS and
24589         REPORT_UNVECTORIZED_LOCATIONS.
24590         (enum vect_relevant): Update comment. Rename vect_unused_in_loop
24591         and vect_used_in_loop and to vect_unused_in_scope and
24592         vect_used_in_scope.
24593         (STMT_VINFO_RELEVANT_P): Use vect_unused_in_scope.
24594         (vect_verbosity_level): Remove declaration.
24595         (vect_analyze_operations): Likewise.
24596         (vect_analyze_stmt): Declare.
24597         * tree-vect-loop.c (vect_determine_vectorization_factor): Use
24598         REPORT_UNVECTORIZED_LOCATIONS.
24599         (vect_get_loop_niters): Fix indentation.
24600         (vect_analyze_loop_form): Use REPORT_UNVECTORIZED_LOCATIONS.
24601         (vect_analyze_loop_operations): New function.
24602         (vect_analyze_loop): Call vect_analyze_loop_operations instead of
24603         vect_analyze_operations.
24604         (vect_is_simple_reduction): Use new names.
24605         (vectorizable_live_operation, vect_transform_loop): Likewise.
24606         * tree-vect-data-refs.c (vect_check_interleaving): Add a return value
24607         to specify whether the data references can be a part of interleaving
24608         chain.
24609         (vect_analyze_data_ref_dependence): Use new names.
24610         (vect_analyze_data_refs_alignment, vect_analyze_data_refs): Likewise.
24611         (vect_create_addr_base_for_vector_ref): Remove redundant code.
24612         * tree-vect-patterns.c (widened_name_p): Use new names.
24613         (vect_recog_dot_prod_pattern): Likewise.
24614         * tree-vect-stmts.c (vect_stmt_relevant_p): Use new names.
24615         (process_use, vect_mark_stmts_to_be_vectorized,
24616         vect_model_simple_cost, vect_model_store_cost,
24617         vect_get_vec_def_for_operand, vect_get_vec_def_for_stmt_copy,
24618         vectorizable_call, vectorizable_conversion, vectorizable_assignment,
24619         vectorizable_operation, vectorizable_type_demotion,
24620         vectorizable_type_promotion, vectorizable_store, vectorizable_load,
24621         vectorizable_condition): Likewise.
24622         (vect_analyze_operations): Split into vect_analyze_loop_operations
24623         and ...
24624         (vect_analyze_stmt): ... new function.
24625         (new_stmt_vec_info): Use new names.
24626         (vect_is_simple_use): Use new names and fix comment.
24627         * tree-vect-slp.c (vect_get_and_check_slp_defs): Use new names.
24628         (vect_build_slp_tree, vect_analyze_slp, vect_schedule_slp): Likewise.
24629
24630 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
24631
24632         PR target/39911
24633         * config/i386/i386.c (print_operand) ['Z']: Handle floating point
24634         and integer modes for x87 operands.  Do not ICE for unsupported size,
24635         generate error instead.  Generate error for unsupported operand types.
24636         ['z']: Do not handle HImode memory operands specially.  Warning
24637         for floating-point operands.  Fallthru to 'Z' for unsupported operand
24638         types.  Do not ICE for unsupported size, generate error instead.
24639         (output_387_binary_op): Use %Z to output operands.
24640         (output_fp_compare): Ditto.
24641         (output_387_reg_move): Ditto.
24642
24643 2009-04-28  Ben Elliston  <bje@au.ibm.com>
24644
24645         PR c++/35652
24646         Revert:
24647
24648         2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24649
24650         * builtins.c (c_strlen): Do not warn here.
24651         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
24652         * c-common.c (pointer_int_sum): Take an explicit location.
24653         Warn about offsets out of bounds.
24654         * c-common.h (pointer_int_sum): Adjust declaration.
24655
24656 2009-04-27  Ian Lance Taylor  <iant@google.com>
24657
24658         * collect2.c (is_ctor_dtor): Change type of ret field in struct
24659         names to symkind.
24660         * dce.c (run_fast_df_dce): Change type of old_flags to int.
24661         * df-core.c (df_set_flags): Change return type to int.  Change
24662         type of old_flags to int.
24663         (df_clear_flags): Likewise.
24664         * df-scan.c (df_def_record_1): Change 0 to VOIDmode.
24665         (df_get_conditional_uses): Likewise.
24666         * df.h (df_set_flags, df_clear_flags): Update declarations.
24667         * dwarf2out.c (struct indirect_string_node): Change type of form
24668         field to enum dwarf_form.
24669         (AT_string_form): Change return type to enum dwarf_form.
24670         * fixed-value.c (fixed_compare): Add cast to enum type.
24671         * fwprop.c (update_df): Change 0 to VOIDmode.
24672         * gensupport.c: Change 0 to UNKNOWN.
24673         * gimple.h (gimple_cond_code): Add cast to enum type.
24674         * haifa-sched.c (reemit_notes): Add cast to enum type.
24675         * hooks.c (hook_int_void_no_regs): Remove function.
24676         * hooks.h (hook_int_void_no_regs): Remove declaration.
24677         * optabs.c (expand_widen_pattern_expr): Change 0 to VOIDmode.
24678         * predict.c (combine_predictions_for_insn): Add casts to enum type.
24679         * real.c (real_arithmetic): Add cast to enum type.
24680         (real_compare): Likewise.
24681         * target.h (struct gcc_target): Change return type of
24682         branch_target_register_class to enum reg_class.
24683         * target-def.h (TARGET_BRANCH_TARGET_REGISTER_CLASS): Define as
24684         default_branch_target_register_class.
24685         * targhooks.c (default_branch_target_register_class): New function.
24686         * targhooks.h (default_branch_target_register_class): Declare.
24687         * tree-data-ref.c (print_direction_vector): Add cast to enum type.
24688         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Remove
24689         cast to int.
24690         * tree-vect-loop.c (vect_create_epilog_for_reduction): Change 0 to
24691         ERROR_MARK.
24692         * tree-vect-slp.c (vect_build_slp_tree): Change 0 to
24693         vect_uninitialized_def.  Change 0 to ERROR_MARK.
24694         * tree-vect-stmts.c (supportable_widening_operation): Don't
24695         initialize icode1 and icode2.
24696         * tree-vectorizer.h (enum vect_def_type): Add vect_uninitialized_def.
24697         * config/sol2-c.c (cmn_err_length_specs): Change 0 to FMT_LEN_none
24698         and to STD_C89.
24699         (cmn_err_flag_specs): Change 0 to STD_C89.
24700         (cmn_err_char_table): Likewise.
24701         * config/arm/arm.c (get_arm_condition_code): Change type of code
24702         to enum arm_cond_code.
24703         (IWMMXT_BUILTIN): Change 0 to UNKNOWN.
24704         (IWMMXT_BUILTIN2): Likewise.
24705         (neon_builtin_type_bits): Don't define typedef.
24706         (neon_builtin_datum): Change type of bits field to int.
24707         (arm_expand_neon_args): Add cast to enum type.
24708         * config/ia64/ia64.c (tls_symbolic_operand_type): Change 0 to
24709         TLS_MODEL_NONE.
24710         * config/i386/i386.c (bdesc_multi_arg): Change 0 to UNKNOWN.  Add
24711         casts to enum type.
24712         * config/mips/mips.c (LOONGSON_BUILTIN_ALIAS): Change 0 to
24713         MIPS_FP_COND_f.
24714         * config/mips/mips.md (jal_macro): Return enum constant.
24715         (single_insn): Likewise.
24716         * config/rs6000/rs6000.c (bdesc_altivec_preds): Change 0 to
24717         CODE_FOR_nothing.
24718         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
24719         casts to enum type.
24720         * config/s390/s390.c (s390_tune_flags): Change type to int.
24721         (s390_arch_flags): Likewise.
24722         (s390_handle_arch_option): Change flags field of struct pta to int.
24723         * config/s390/s390.h (s390_tune_flags): Update declaration.
24724         (s390_arch_flags): Likewise.
24725         * config/sh/sh.c (prepare_move_operands): Compare
24726         tls_symbolic_operand result with enum constant.
24727         (sh_reorg): Change PUT_MODE to PUT_REG_NOTE_KIND.
24728         (sh_expand_prologue): Add cast to enum type.
24729         (sh_expand_epilogue): Likewise.
24730         (tls_symbolic_operand): Change return type to enum tls_model.
24731         (fpscr_set_from_mem): Add cast to enum type.
24732         (legitimize_pic_address): Compare tls_symbolic_operand result with
24733         enum constant.
24734         (sh_target_reg_class): Change return type to enum reg_class.
24735         * config/sh/sh.h (OVERRIDE_OPTIONS): Change CPU_xxx to
24736         PROCESSOR_xxx.
24737         * config/sh/sh-protos.h (tls_symbolic_operand): Update declaration.
24738         * config/sparc/sparc.c (sparc_override_options): Add cast to enum type.
24739         * config/sparc/sparc.md (empty_delay_slot): Return enum constant.
24740         (pic, calls_alloca, calls_eh_return, leaf_function): Likewise.
24741         (delayed_branch, tls_call_delay): Likewise.
24742         (eligible_for_sibcall_delay): Likewise.
24743         (eligible_for_return_delay): Likewise.
24744         * config/spu/spu.c (expand_builtin_args): Add cast to enum type.
24745         (spu_expand_builtin_1): Likewise.
24746
24747         * c-typeck.c (convert_for_assignment): Issue -Wc++-compat warnings
24748         for all types of conversions.
24749         (output_init_element): Issue -Wc++-compat warning if needed when
24750         initializing a bitfield with enum type.
24751         * c-parser.c (c_parser_expression): Set original_type to
24752         original_type of right hand operand of comma operator.
24753
24754 2009-04-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
24755
24756         * doc/c-tree.texi (Types, Functions, Expression trees): Fix
24757         grammar nits.
24758         * doc/cfg.texi (Maintaining the CFG, Liveness information): Likewise.
24759         * doc/cpp.texi (Standard Predefined Macros)
24760         (Implementation-defined behavior): Likewise.
24761         * doc/extend.texi (Function Attributes, Type Attributes): Likewise.
24762         * doc/gimple.texi (GIMPLE Exception Handling)
24763         (@code{GIMPLE_ASSIGN}): Likewise.
24764         * doc/install.texi (Prerequisites, Configuration, Specific): Likewise.
24765         * doc/invoke.texi (Warning Options, Optimize Options)
24766         (AVR Options, Darwin Options): Likewise.
24767         (Optimize Options): Reformulate -fwhole-program description.
24768         * doc/loop.texi (Lambda): Likewise.
24769         * doc/md.texi (Output Template, Define Constraints)
24770         (Standard Names, Insn Splitting): Likewise.
24771         * doc/options.texi (Option properties): Likewise.
24772         * doc/passes.texi (Tree-SSA passes): Likewise.
24773         * doc/rtl.texi (Side Effects, Assembler, Insns): Likewise.
24774         * doc/tm.texi (Register Classes, Old Constraints, Scalar Return)
24775         (File Names and DBX): Likewise.
24776         * doc/trouble.texi (Incompatibilities): Likewise.
24777
24778 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
24779
24780         * spu.c (spu_machine_dependent_reorg): Make sure branch label on hint
24781         instruction is correct.
24782
24783 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
24784
24785         Allow non-constant arguments to conversion intrinsics.
24786         * spu-protos.h (exp2_immediate_p, spu_gen_exp2): Declare.
24787         * predicates.md (spu_inv_exp2_operand, spu_exp2_operand): New.
24788         * spu.c (print_operand): Handle 'v' and 'w'.
24789         (exp2_immediate_p, spu_gen_exp2): Define.
24790         * spu-builtins.def (spu_convts, spu_convtu, spu_convtf_0,
24791         spu_convtf_1): Update parameter descriptions.
24792         * spu-builtins.md (spu_csflt, spu_cuflt, spu_cflts, spu_cfltu): Update.
24793         * constraints.md ('v', 'w'): New.
24794         * spu.md (UNSPEC_CSFLT, UNSPEC_CFLTS, UNSPEC_CUFLT, UNSPEC_CFLTU):
24795         Remove.
24796         (i2f, I2F): New define_mode_attr.
24797         (floatsisf2, floatv4siv4sf2, fix_truncsfsi2, fix_truncv4sfv4si2,
24798         floatunssisf2, floatunsv4siv4sf2, fixuns_truncsfsi2,
24799         fixuns_truncv4sfv4si2):  Update to use mode attribute.
24800         (float<mode><i2f>2_mul, float<mode><i2f>2_div,
24801         fix_trunc<mode><f2i>2_mul, floatuns<mode><i2f>2_mul,
24802         floatuns<mode><i2f>2_div, fixuns_trunc<mode><f2i>2_mul): New
24803         patterns for combine.
24804
24805 2009-04-27  Steven Bosscher  <steven@gcc.gnu.org>
24806
24807         * dbgcnt.def (cprop1, cprop2, gcse, jump_bypass): Remove
24808         (cprop, hoist, pre, store_motion): New debug counters.
24809         * tree-pass.h (pass_tracer): Move to list of gimple passes, it
24810         is not an RTL pass anymore.
24811         (pass_profiling): Remove extern decl for pass removed in 2005.
24812         (pass_gcse, pass_jump_bypass): Remove.
24813         * final.c (rest_of_clean_state): Set flag_rerun_cse_after_global_opts
24814         to 0 for clean state.
24815         * toplev.h (flag_rerun_cse_after_global_opts): Add extern declaration.
24816         * cse.c (gate_handle_cse_after_global_opts,
24817         rest_of_handle_cse_after_global_opts): New functions.
24818         (pass_cse_after_global_opts): New pass, does local CSE.
24819         * timevar.def (TV_GCSE, TV_CPROP1, TV_CPROP2, TV_BYPASS): Remove.
24820         (TV_CPROP): New timevar.
24821         * gcse.c (flag_rerun_cse_after_global_opts): New global variable.
24822         (run_jump_opt_after_gcse, max_gcse_regno): Remove global vars.
24823         (gcse_main, recompute_all_luids): Remove.
24824         (compute_hash_table_work): Call max_reg_num instead of reading
24825         max_gcse_regno.
24826         (cprop_jump): Don't set run_jump_opt_after_gcse.
24827         (constprop_register): Always allow to alter jumps.
24828         (cprop_insn): Likewise.
24829         (do_local_cprop): Likewise.
24830         (local_cprop_pass): Likewise.  Return non-zero if something changed.
24831         (cprop): Remove function, fold interesting bits into one_cprop_pass.
24832         (find_implicit_sets): Add note about missed optimization opportunity.
24833         (one_cprop_pass): Rewrite to be "the" CPROP pass, called from the
24834         pass_rtl_cprop execute function.
24835         Don't bother tracking the pass number, each pass gets its own dumpfile
24836         now anyway.
24837         Always allow to alter jumpsand bypass jumps.
24838         (bypass_block): Don't ignore regno >= max_gcse_regno, find_bypass_set
24839         will just find no suitable set.
24840         (pre_edge_insert): Fix dumping, this function is for PRE only.
24841         (one_pre_gcse_pass): Rewrite to be "the" PRE pass, called from the
24842         pass_rtl_pre execute function.
24843         (hoist_code): Return non-zero if something changed.  Keep track of
24844         substitutions and insertions for statistics gathering similar to PRE.
24845         (one_code_hoisting_pass): Rewrite to be "the" code hoisting pass,
24846         called from the pass_rtl_hoist execute function.  Show pass statistics.
24847         (compute_store_table): Use max_reg_num directly instead of using the
24848         formerly global max_gcse_regno.
24849         (build_store_vectors): Likewise.
24850         (replace_store_insn): Fix dumping.
24851         (store_motion): Rename to ...
24852         (one_store_motion_pass): ... this.  Rewrite to be "the" STORE_MOTION
24853         pass, called from the pass_rtl_store_motion execute function.  Keep
24854         track of substitutions and insertions for statistics gathering similar
24855         to PRE.
24856         (bypass_jumps): Remove, fold interesting bits into ...
24857         (one_cprop_pass): ... this.  Rewrite to be "the" CPROP pass, called
24858         from the pass_rtl_cprop execute function.
24859         (gate_handle_jump_bypass, rest_of_handle_jump_bypass,
24860         pass_jump_bypass): Remove.
24861         (gate_handle_gcse, rest_of_handle_gcse): Remove.
24862         (gate_rtl_cprop, execute_rtl_cprop, pass_rtl_cprop): New.
24863         (gate_rtl_pre, execute_rtl_pre, pass_rtl_pre): New.
24864         (gate_rtl_hoist, execute_rtl_hoist, pass_rtl_hoist): New.
24865         (gate_rtl_store_motion, execute_rtl_store_motion,
24866         pass_rtl_store_motion): New.
24867         * common.opt: Remove flag_cse_skip_blocks, adjust documentation to
24868         make it clear that -fcse-skip-blocks is a no-op for backward compat.
24869         * passes.c (init_optimization_passes): Remove pass_gcse and
24870         pass_jump_bypass.  Schedule cprop, pre, hoist, cprop, store_motion,
24871         and cse_after_global_opts in place of pass_gcse.  Schedule cprop
24872         instead of pass_jump_bypass.
24873
24874 2009-04-27  Richard Guenther  <rguenther@suse.de>
24875
24876         PR middle-end/39928
24877         * gimplify.c (gimplify_expr): If we are required to create
24878         a temporary make sure it ends up as register.
24879
24880 2009-04-27  H.J. Lu  <hongjiu.lu@intel.com>
24881
24882         PR target/39903
24883         * config/i386/i386.c (construct_container): Don't call
24884         gen_reg_or_parallel with BLKmode on X86_64_SSE_CLASS,
24885         X86_64_SSESF_CLASS and X86_64_SSEDF_CLASS.
24886
24887 2009-04-27  Michael Matz  <matz@suse.de>
24888
24889         * ssaexpand.h (struct ssaexpand): Member 'values' is a bitmap.
24890         (get_gimple_for_ssa_name): Adjust, lookup using SSA_NAME_DEF_STMT.
24891         * tree-ssa-live.h (find_replaceable_exprs): Return a bitmap.
24892         (dump_replaceable_exprs): Take a bitmap.
24893         * cfgexpand.c (gimple_cond_pred_to_tree): Handle bitmap instead of
24894         array.
24895         (expand_gimple_basic_block): Likewise.
24896         * tree-ssa-ter.c (struct temp_expr_table_d): Make
24897         replaceable_expressions member a bitmap.
24898         (free_temp_expr_table): Pass back and deal with bitmap, not gimple*.
24899         (mark_replaceable): Likewise.
24900         (find_replaceable_in_bb, dump_replaceable_exprs): Likewise.
24901         * tree-outof-ssa.c (remove_ssa_form): 'values' is a bitmap.
24902
24903 2009-04-27  Richard Guenther  <rguenther@suse.de>
24904
24905         * tree-cfg.c (remove_useless_stmts): Verify stmts afterwards.
24906         (verify_stmts): Dispatch to gimple/type verification code.
24907         * tree-inline.c (remap_gimple_op_r): Work around C++ FE
24908         issue with call argument types.
24909
24910 2009-04-27  Michael Matz  <matz@suse.de>
24911
24912         * tree-into-ssa.c (regs_to_rename, mem_syms_to_rename): Remove.
24913         (init_update_ssa, delete_update_ssa, update_ssa): Remove references
24914         to above.
24915
24916 2009-04-27  Richard Sandiford  <rdsandiford@googlemail.com>
24917             Eric Botcazou  <ebotcazou@adacore.com>
24918
24919         * resource.c (find_basic_block): Use BLOCK_FOR_INSN to look up
24920         a label's basic block.
24921         (mark_target_live_regs): Tidy and rework obsolete comments.
24922         Change back DF problem to LIVE.  If a label starts a basic block,
24923         assume that all registers that used to be live then still are.
24924         (init_resource_info): If a label starts a basic block, set its
24925         BLOCK_FOR_INSN accordingly.
24926         (fini_resource_info): Undo the setting of BLOCK_FOR_INSN.
24927
24928 2009-04-27  Richard Guenther  <rguenther@suse.de>
24929
24930         * tree-flow-inline.h (function_ann): Remove.
24931         (get_function_ann): Likewise.
24932         * tree-dfa.c (create_function_ann): Remove.
24933         * tree-flow.h (struct static_var_ann_d): Remove.
24934         (struct function_ann_d): Likewise.
24935         (union tree_ann_d): Remove fdecl member.
24936         (function_ann_t): Remove.
24937         (function_ann, get_function_ann, create_function_ann): Remove
24938         declarations.
24939
24940 2009-04-27  Uros Bizjak  <ubizjak@gmail.com>
24941
24942         * config/alpha/alpha.c (code_for_builtin): Declare as enum insn_code.
24943
24944 2009-04-27  Jan Hubicka  <jh@suse.cz>
24945
24946         * ipa-pure-const.c (struct funct_state_d): New fields
24947         state_previously_known, looping_previously_known; remove
24948         state_set_in_source.
24949         (analyze_function): Use new fields.
24950         (propagate): Avoid assumption that state_set_in_source imply
24951         nonlooping.
24952
24953         * tree-ssa-loop-niter.c (finite_loop_p): New function.
24954         * tree-ssa-loop-ivcanon.c (empty_loop_p): Use it.
24955         * cfgloop.h (finite_loop_p): Declare.
24956
24957 2009-04-26  Michael Matz  <matz@suse.de>
24958
24959         * tree-flow.h (tree_ann_common_d): Remove aux and value_handle members.
24960
24961 2009-04-26  Michael Matz  <matz@suse.de>
24962
24963         * tree-pass.h (pass_del_ssa, pass_mark_used_blocks,
24964         pass_free_cfg_annotations, pass_free_datastructures): Remove decls.
24965         * gimple-low.c (mark_blocks_with_used_vars, mark_used_blocks,
24966         pass_mark_used_blocks): Remove.
24967         * tree-optimize.c (pass_free_datastructures,
24968         execute_free_cfg_annotations, pass_free_cfg_annotations): Remove.
24969         * passes.c (init_optimization_passes): Don't call
24970         pass_mark_used_blocks, remove dead code.
24971
24972 2009-04-26  H.J. Lu  <hongjiu.lu@intel.com>
24973
24974         * tree-outof-ssa.c (rewrite_trees): Add ATTRIBUTE_UNUSED.
24975         * tree-ssa-live.h (register_ssa_partition): Likewise.
24976
24977 2009-04-26  Michael Matz  <matz@suse.de>
24978
24979         Expand from SSA.
24980         * builtins.c (fold_builtin_next_arg): Handle SSA names.
24981         * tree-ssa-copyrename.c (rename_ssa_copies): Use ssa_name() directly.
24982         * tree-ssa-coalesce.c (create_outofssa_var_map): Mark only useful
24983         SSA names.
24984         (compare_pairs): Swap cost comparison.
24985         (coalesce_ssa_name): Don't use change_partition_var.
24986         * tree-nrv.c (struct nrv_data): Add modified member.
24987         (finalize_nrv_r): Set it.
24988         (tree_nrv): Use it to update statements.
24989         (pass_nrv): Require PROP_ssa.
24990         * tree-mudflap.c (mf_decl_cache_locals,
24991         mf_build_check_statement_for): Use make_rename_temp.
24992         (pass_mudflap_2): Require PROP_ssa, run ssa update at finish.
24993         * alias.c (find_base_decl): Handle SSA names.
24994         * emit-rtl (set_reg_attrs_for_parm): Make non-static.
24995         (component_ref_for_mem_expr): Don't leak SSA names into RTL.
24996         * rtl.h (set_reg_attrs_for_parm): Declare.
24997         * tree-optimize.c (pass_cleanup_cfg_post_optimizing): Rename
24998         to "optimized", remove unused locals at finish.
24999         (execute_free_datastructures): Make global, call
25000         delete_tree_cfg_annotations.
25001         (execute_free_cfg_annotations): Don't call
25002         delete_tree_cfg_annotations.
25003
25004         * ssaexpand.h: New file.
25005         * expr.c (toplevel): Include ssaexpand.h.
25006         (expand_assignment): Handle SSA names the same as register variables.
25007         (expand_expr_real_1): Expand SSA names.
25008         * cfgexpand.c (toplevel): Include ssaexpand.h.
25009         (SA): New global variable.
25010         (gimple_cond_pred_to_tree): Fold TERed comparisons into predicates.
25011         (SSAVAR): New macro.
25012         (set_rtl): New helper function.
25013         (add_stack_var): Deal with SSA names, use set_rtl.
25014         (expand_one_stack_var_at): Likewise.
25015         (expand_one_stack_var): Deal with SSA names.
25016         (stack_var_size_cmp): Use code (SSA_NAME / DECL) as tie breaker
25017         before unique numbers.
25018         (expand_stack_vars): Use set_rtl.
25019         (expand_one_var): Accept SSA names, add asserts for them, feed them
25020         to above subroutines.
25021         (expand_used_vars): Expand all partitions (without default defs),
25022         then only the local decls (ignoring those expanded already).
25023         (expand_gimple_cond): Remove edges when jumpif() expands an
25024         unconditional jump.
25025         (expand_gimple_basic_block): Don't clear EDGE_EXECUTABLE here,
25026         or remove abnormal edges.  Ignore insns setting the LHS of a TERed
25027         SSA name.
25028         (gimple_expand_cfg): Call into rewrite_out_of_ssa, initialize
25029         members of SA; deal with PARM_DECL partitions here; expand
25030         all PHI nodes, free tree datastructures and SA.  Commit instructions
25031         on edges, clear EDGE_EXECUTABLE and remove abnormal edges here.
25032         (pass_expand): Require and destroy PROP_ssa, verify SSA form, flow
25033         info and statements at start, collect garbage at finish.
25034         * tree-ssa-live.h (struct _var_map): Remove partition_to_var member.
25035         (VAR_ANN_PARTITION) Remove.
25036         (change_partition_var): Don't declare.
25037         (partition_to_var): Always return SSA names.
25038         (var_to_partition): Only accept SSA names.
25039         (register_ssa_partition): Only check argument.
25040         * tree-ssa-live.c (init_var_map): Don't allocate partition_to_var
25041         member.
25042         (delete_var_map): Don't free it.
25043         (var_union): Only accept SSA names, simplify.
25044         (partition_view_init): Mark only useful SSA names as used.
25045         (partition_view_fini): Only deal with SSA names.
25046         (change_partition_var): Remove.
25047         (dump_var_map): Use ssa_name instead of partition_to_var member.
25048         * tree-ssa.c (delete_tree_ssa): Don't remove PHI nodes on RTL
25049         basic blocks.
25050         * tree-outof-ssa.c (toplevel): Include ssaexpand.h and expr.h.
25051         (struct _elim_graph): New member const_dests; nodes member vector of
25052         ints.
25053         (set_location_for_edge): New static helper.
25054         (create_temp): Remove.
25055         (insert_partition_copy_on_edge, insert_part_to_rtx_on_edge,
25056         insert_value_copy_on_edge, insert_rtx_to_part_on_edge): New functions.
25057         (new_elim_graph): Allocate const_dests member.
25058         (clean_elim_graph): Truncate const_dests member.
25059         (delete_elim_graph): Free const_dests member.
25060         (elim_graph_size): Adapt to new type of nodes member.
25061         (elim_graph_add_node): Likewise.
25062         (eliminate_name): Likewise.
25063         (eliminate_build): Don't take basic block argument, deal only with
25064         partition numbers, not variables.
25065         (get_temp_reg): New static helper.
25066         (elim_create): Use it, deal with RTL temporaries instead of trees.
25067         (eliminate_phi): Adjust all calls to new signature.
25068         (assign_vars, replace_use_variable, replace_def_variable): Remove.
25069         (rewrite_trees): Only do checking.
25070         (edge_leader, stmt_list, leader_has_match, leader_match): Remove.
25071         (same_stmt_list_p, identical_copies_p, identical_stmt_lists_p,
25072         init_analyze_edges_for_bb, fini_analyze_edges_for_bb,
25073         contains_tree_r, MAX_STMTS_IN_LATCH,
25074         process_single_block_loop_latch, analyze_edges_for_bb,
25075         perform_edge_inserts): Remove.
25076         (expand_phi_nodes): New global function.
25077         (remove_ssa_form): Take ssaexpand parameter.  Don't call removed
25078         functions, initialize new parameter, remember partitions having a
25079         default def.
25080         (finish_out_of_ssa): New global function.
25081         (rewrite_out_of_ssa): Make global.  Adjust call to remove_ssa_form,
25082         don't reset in_ssa_p here, don't disable TER when mudflap.
25083         (pass_del_ssa): Remove.
25084         * tree-flow.h (struct var_ann_d): Remove out_of_ssa_tag and
25085         partition members.
25086         (execute_free_datastructures): Declare.
25087         * Makefile.in (SSAEXPAND_H): New variable.
25088         (tree-outof-ssa.o, expr.o, cfgexpand.o): Depend on SSAEXPAND_H.
25089         * basic-block.h (commit_one_edge_insertion): Declare.
25090         * passes.c (init_optimization_passes): Move pass_nrv and
25091         pass_mudflap2 before pass_cleanup_cfg_post_optimizing, remove
25092         pass_del_ssa, pass_free_datastructures, pass_free_cfg_annotations.
25093         * cfgrtl.c (commit_one_edge_insertion): Make global, don't declare.
25094         (redirect_branch_edge): Deal with super block when expanding, split
25095         out jump patching itself into ...
25096         (patch_jump_insn): ... here, new static helper.
25097
25098 2009-04-26  Michael Matz  <matz@suse.de>
25099
25100         * tree-ssa-copyrename.c (rename_ssa_copies): Don't iterate
25101         beyond num_ssa_names.
25102         * tree-ssa-ter.c (free_temp_expr_table): Likewise.
25103         * tree-ssa-coalesce.c (create_outofssa_var_map): Likewise.
25104
25105 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
25106
25107         PR inline-asm/39543
25108         * fwprop.c (forward_propagate_asm): New function.
25109         (forward_propagate_and_simplify): Propagate also into __asm, if it
25110         doesn't increase the number of referenced registers.
25111
25112         PR c/39889
25113         * stmt.c (warn_if_unused_value): Look through NON_LVALUE_EXPR.
25114
25115 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
25116
25117         * tree-nested.c (get_nonlocal_vla_type): If not optimizing, call
25118         note_nonlocal_vla_type for nonlocal VLAs.
25119         (note_nonlocal_vla_type, note_nonlocal_block_vlas,
25120         contains_remapped_vars, remap_vla_decls): New functions.
25121         (convert_nonlocal_reference_stmt): If not optimizing, call
25122         note_nonlocal_block_vlas on GIMPLE_BIND block vars.
25123         (nesting_copy_decl): Return {VAR,PARM,RESULT}_DECL unmodified
25124         if it wasn't found in var_map.
25125         (finalize_nesting_tree_1): Call remap_vla_decls.  If outermost
25126         GIMPLE_BIND doesn't have gimple_bind_block, chain debug_var_chain
25127         to BLOCK_VARS (DECL_INITIAL (root->context)) instead of calling
25128         declare_vars.
25129         * gimplify.c (nonlocal_vlas): New variable.
25130         (gimplify_var_or_parm_decl): Add debug VAR_DECLs for non-local
25131         referenced VLAs.
25132         (gimplify_body): Create and destroy nonlocal_vlas.
25133
25134         * dwarf2out.c (loc_descr_plus_const): New function.
25135         (build_cfa_aligned_loc, tls_mem_loc_descriptor,
25136         mem_loc_descriptor, loc_descriptor_from_tree_1,
25137         descr_info_loc, gen_variable_die): Use it.
25138
25139         * tree.h (DECL_BY_REFERENCE): Note that it is also valid for
25140         !TREE_STATIC VAR_DECLs.
25141         * dwarf2out.c (loc_by_reference, gen_decl_die): Handle
25142         DECL_BY_REFERENCE on !TREE_STATIC VAR_DECLs.
25143         (gen_variable_die): Likewise.  Don't look at TREE_PRIVATE if
25144         DECL_BY_REFERENCE is valid.
25145         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Don't look at TREE_PRIVATE
25146         for PARM_DECLs, RESULT_DECLs or !TREE_STATIC VAR_DECLs.
25147         * tree-nested.c (get_nonlocal_debug_decl, get_local_debug_decl):
25148         Copy DECL_BY_REFERENCE.
25149         (struct nesting_copy_body_data): New type.
25150         (nesting_copy_decl): New function.
25151         (finalize_nesting_tree_1): Remap types of debug_var_chain variables,
25152         if they have variable length.
25153
25154 2009-04-26  Michael Matz  <matz@suse.de>
25155
25156         * tree-sra.c (sra_build_assignment): Don't use into_ssa mode,
25157         mark new temporaries for renaming.
25158
25159 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
25160
25161         PR c/39581
25162         * c-decl.c (global_bindings_p): Return negative value.
25163         (c_variable_size): New.  Based on variable_size from
25164         stor-layout.c.
25165         (grokdeclarator): Call c_variable_size not variable_size.
25166
25167 2009-04-26  Uros Bizjak  <ubizjak@gmail.com>
25168
25169         * config/i386/i386.c (print_operand) ['z']: Fix typo.
25170
25171 2009-04-26  Kai Tietz  <kai.tietz@onevision.com>
25172
25173         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR):
25174         Redefine it to just use mingw/include.
25175         (ASM_SPEC): Rules for -m32 and -m64.
25176         (LINK_SPEC): Use Likewise.
25177         (SPEC_32): New define.
25178         (SPEC_64): Likewise.
25179         (SUB_LINK_SPEC): Likewise.
25180         (MULTILIB_DEFAULTS): New define.
25181         * config/i386/t-mingw-w64 (MULTILIB_OPTIONS):
25182         Add multilib options.
25183         (MULTILIB_DIRNAMES): Likewise.
25184         (MULTILIB_OSDIRNAMES): Likewise.
25185         (LIBGCC): Likewise.
25186         (INSTALL_LIBGCC): Likewise.
25187
25188 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
25189
25190         PR c/39556
25191         * c-tree.h (enum c_inline_static_type): New.
25192         (record_inline_static): Declare.
25193         * c-decl.c (struct c_inline_static, c_inline_statics,
25194         record_inline_static, check_inline_statics): New.
25195         (pop_file_scope): Call check_inline_statics.
25196         (start_decl): Call record_inline_static instead of pedwarning
25197         directly for static in inline function.
25198         * c-typeck.c (build_external_ref): Call record_inline_static
25199         instead of pedwarning directly for static referenced in inline
25200         function.
25201
25202 2009-04-26  Steven Bosscher  <steven@gcc.gnu.org>
25203
25204         * df-scan.c (df_insn_rescan): Salvage insn's LUID if the insn is
25205         not new but only being rescanned.
25206         * gcse.c (uid_cuid, max_uid, INSN_CUID, max_cuid, struct reg_set,
25207         reg_set_table, REG_SET_TABLE_SLOP, reg_set_in_block,
25208         alloc_reg_set_mem, free_reg_set_mem, record_one_set,
25209         record_set_info, compute_set, grealloc): Remove.
25210         (recompute_all_luids): New function.
25211         (gcse_main): Don't compute sets, and don't do related memory
25212         allocations/free-ing.  If something changed before the end of the
25213         pass, update LUIDs using recompute_all_luids.
25214         (alloc_gcse_mem): Don't compute LUIDs.  Don't allocate reg_set memory.
25215         (free_gcse_mem): Don't free it either.
25216         (oprs_unchanged_p, load_killed_in_block, record_last_reg_set_info):
25217         Use the df insn LUIDs.
25218         (load_killed_in_block): Likewise.
25219         (compute_hash_table_work): Don't compute reg_set_in_block.
25220         (compute_transp): Use DF_REG_DEF_CHAINs.
25221         (local_cprop_pass): Don't use compute_sets and related functions.
25222         (one_cprop_pass, pre_gcse, one_pre_gcse_pass, one_code_hoisting_pass):
25223         Use get_max_uid() instead of max_cuid.
25224         (insert_insn_end_basic_block, pre_insert_copy_insn,
25225         update_ld_motion_stores): Don't try to
25226         keep reg_set tables up to date.
25227         (pre_insert_copies): Use df insn LUIDs.
25228         (sbitmap pre_redundant_insns): Replace with uses of INSN_DELETED_P.
25229         (reg_set_info): Don't use extra bitmap argument.
25230         (compute_store_table): Don't compute reg_set_in_block.  Use DF scan
25231         information to compute regs_set_in_block.
25232         (free_store_memory, store_motion): Don't nullify reg_set_in_block.
25233         (bypass_jumps): Don't use compute_sets and friends.
25234
25235 2009-04-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
25236
25237         PR testsuite/39710
25238         * opts.c (undocumented_msg): Do not leave blank even with
25239         ENABLE_CHECKING.
25240
25241 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
25242
25243         * c-decl.c (build_enumerator): Allow values folding to integer
25244         constants but not integer constant expressions with a pedwarn if
25245         pedantic.
25246
25247 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
25248
25249         PR c/39582
25250         * c-typeck.c (c_expr_sizeof_type): Create a C_MAYBE_CONST_EXPR
25251         with non-null C_MAYBE_CONST_EXPR_PRE if size of a variable-length
25252         type is an integer constant.
25253
25254 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
25255
25256         PR target/39897
25257         * config/i386/i386.c (print_operand) ['z']: Revert handling of
25258         HImode operands.
25259
25260 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
25261
25262         PR c/39564
25263         * c-decl.c (grokdeclarator): Diagnose declarations of functions
25264         with variably modified return type and no storage class
25265         specifiers, except for the case of nested functions.  Distinguish
25266         extern declarations of functions with variably modified return
25267         types from those of objects with variably modified types.
25268
25269 2009-04-25  Jan Hubicka  <jh@suse.cz>
25270
25271         * tree.c (list_equal_p): New function.
25272         * tree.h (list_equal_p): Declare.
25273         * coretypes.h (edge_def, edge, const_edge, basic_block_def
25274         basic_block_def, basic_block, const_basic_block): New.
25275         * tree-eh.c (make_eh_edge): EH edges are not abnormal.
25276         (redirect_eh_edge): New function.
25277         (make_eh_edge_update_phi): EH edges are not abnormal.
25278         * except.c: Include tree-flow.h.
25279         (list_match): New function.
25280         (eh_region_replaceable_by_p): New function.
25281         (replace_region): New function.
25282         (hash_type_list): New function.
25283         (hash_eh_region): New function.
25284         (eh_regions_equal_p): New function.
25285         (merge_peers): New function.
25286         (remove_unreachable_regions): Verify EH tree when checking;
25287         merge peers.
25288         (copy_eh_region_1): New function.
25289         (copy_eh_region): New function.
25290         (push_reachable_handler): New function.
25291         (build_post_landing_pads, dw2_build_landing_pads): Be ready for
25292         regions without label but with live RESX.
25293         * except.h (redirect_eh_edge_to_label): New.
25294         * tree-flow.h (redirect_eh_edge): New.
25295         * coretypes.h (edge_def, edge, const_edge, basic_block_def
25296         basic_block_def, basic_block, const_basic_block): Remove.
25297         * Makefile.in (except.o): Add dependency on tree-flow.h
25298         * tree-cfg.c (gimple_redirect_edge_and_branch): Handle EH edges.
25299         * basic-block.h (edge, const_edge, basic_block, const_basic_block):
25300         Remove.
25301
25302 2009-04-25  Eric Botcazou  <ebotcazou@adacore.com>
25303
25304         PR bootstrap/39645
25305         * config/sparc/sparc.c (sparc_gimplify_va_arg): Set TREE_ADDRESSABLE
25306         on the destination of memcpy.
25307
25308 2009-04-25  Paolo Bonzini  <bonzini@gnu.org>
25309
25310         * doc/tm.texi (REGNO_OK_FOR_BASE_P, REGNO_MODE_OK_FOR_BASE_P,
25311         REGNO_MODE_OK_FOR_REG_BASE_P, REGNO_MODE_CODE_OK_FOR_BASE_P,
25312         REGNO_OK_FOR_INDEX_P): Mention strict/nonstrict difference.
25313
25314 2009-04-25  Jan Hubicka  <jh@suse.cz>
25315
25316         * tree-eh.c (tree_remove_unreachable_handlers): Handle shared labels.
25317         (tree_empty_eh_handler_p): Allow non-EH predecestors; allow region
25318         to be reached by different label than left.
25319         (update_eh_edges): Update comment; remove edge_to_remove if possible
25320         and return true if suceeded.
25321         (cleanup_empty_eh): Accept sharing map; handle shared regions.
25322         (cleanup_eh): Compute sharing map.
25323         * except.c (remove_eh_handler_and_replace): Add argument if we should
25324         update regions.
25325         (remove_unreachable_regions): Update for label sharing.
25326         (label_to_region_map): Likewise.
25327         (get_next_region_sharing_label): New function.
25328         (remove_eh_handler_and_replace): Add update_catch_try parameter; update
25329         prev_try pointers.
25330         (remove_eh_handler): Update.
25331         (remove_eh_region_and_replace_by_outer_of): New function.
25332         * except.h (struct eh_region): Add next_region_sharing_label.
25333         (remove_eh_region_and_replace_by_outer_of,
25334         get_next_region_sharing_label): Declare.
25335         * tree-cfgcleanup.c (tree_forwarder_block_p): Simplify.
25336
25337 2009-04-25  Jan Hubicka  <jh@suse.cz>
25338
25339         * tree-cfg.c (split_critical_edges): Split also edges where we can't
25340         insert code even if they are not critical.
25341
25342 2009-04-25  Jan Hubicka  <jh@suse.cz>
25343
25344         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
25345         (gimple_can_remove_branch_p): EH edges won't remove branch by
25346         redirection.
25347         * tree-inline.c (update_ssa_across_abnormal_edges): Do handle
25348         updating of non-abnormal EH edges.
25349         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
25350         (gimple_can_remove_branch_p): EH edges are unremovable by redirection.
25351         (split_critical_edges): Split also edges where emitting code on them
25352         will lead to splitting later.
25353
25354 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
25355             H.J. Lu  <hongjiu.lu@intel.com>
25356
25357         PR target/39590
25358         * configure.ac (HAVE_AS_IX86_FILDQ): On x86 targets check whether
25359         the configured assembler supports fildq and fistpq mnemonics.
25360         (HAVE_AS_IX86_FILDS): Rename from HAVE_GAS_FILDS_FISTS.
25361         * configure: Regenerated.
25362         * config.in: Ditto.
25363
25364         * config/i386/i386.c (print_operand): Handle 'Z'.
25365         ['z']: Remove handling of special fild/fist suffixes.
25366         (output_fix_trunc): Use '%Z' to output suffix of fist{,p,tp} insn.
25367         * config/i386/i386.md (*floathi<mode>2_i387): Use '%Z' to output
25368         suffix of fild insn.
25369         (*floatsi<mode>2_vector_mixed): Ditto.
25370         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Ditto.
25371         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Ditto.
25372         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
25373         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387): Ditto.
25374         * config/i386/gas.h (GAS_MNEMONICS): Remove.
25375
25376 2009-04-25  Ben Elliston  <bje@au.ibm.com>
25377
25378         * genrecog.c (validate_pattern): Do not warn for VOIDmode CALLs as
25379         the source of a set operation.
25380
25381 2009-04-25  Anatoly Sokolov  <aesok@post.ru>
25382
25383         * target.h (struct gcc_target): Add case_values_threshold field.
25384         * target-def.h (TARGET_CASE_VALUES_THRESHOLD): New.
25385         (TARGET_INITIALIZER): Use TARGET_CASE_VALUES_THRESHOLD.
25386         * targhooks.c (default_case_values_threshold): New function.
25387         * targhooks.h (default_case_values_threshold): Declare function.
25388         * stmt.c (expand_case): Use case_values_threshold target hook.
25389         * expr.h (case_values_threshold): Remove declartation.
25390         * expr.c (case_values_threshold): Remove function.
25391         * doc/tm.texi (CASE_VALUES_THRESHOLD): Revise documentation.
25392
25393         * config/avr/avr.h (CASE_VALUES_THRESHOLD): Remove macro.
25394         * config/avr/avr.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
25395         (avr_case_values_threshold): Declare as static.
25396         * config/avr/avr-protos.h (avr_case_values_threshold): Remove.
25397
25398         * config/avr/mn10300.h (CASE_VALUES_THRESHOLD): Remove macro.
25399         * config/avr/mn10300.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
25400         (mn10300_case_values_threshold): New function.
25401
25402 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
25403
25404         * ira.c (setup_cover_and_important_classes): Add enum cast.
25405
25406 2009-04-24  Vladimir Makarov  <vmakarov@redhat.com>
25407
25408         * genpreds.c (write_enum_constraint_num): Output definition of
25409         CONSTRAINT_NUM_DEFINED_P macro.
25410         * ira.c (setup_cover_and_important_classes): Use
25411         CONSTRAINT_NUM_DEFINED_P instead of CONSTRAINT__LIMIT in #ifdef.
25412
25413 2009-04-24  DJ Delorie  <dj@redhat.com>
25414
25415         * config/sh/sh.h (LIBGCC2_DOUBLE_TYPE_SIZE): Test
25416         __SH2A_SINGLE_ONLY__ also.
25417
25418 2009-04-24  Steve Ellcey  <sje@cup.hp.com>
25419
25420         * config/ia64/ia64.md (movfs_internal): Allow flt constants.
25421         (movdf_internal): Ditto.
25422         * config/ia64/ia64.c (ia64_legitimate_constant_p): Allow
25423         SFmode and DFmode constants.
25424         (ia64_print_operand): Add 'G' format for printing
25425         floating point constants.
25426
25427 2009-04-24  Richard Guenther  <rguenther@suse.de>
25428
25429         * tree-vrp.c (extract_range_from_binary_expr): Handle overflow
25430         from unsigned additions.
25431
25432 2009-04-24  Joseph Myers  <joseph@codesourcery.com>
25433
25434         * c-typeck.c (set_init_index): Allow array designators that are
25435         not integer constant expressions with a pedwarn if pedantic.
25436
25437 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
25438
25439         * simplify-rtx.c (simplify_binary_operation_1, case AND): Result is
25440         zero if no overlap in nonzero bits between the operands.
25441
25442 2009-04-24  Ian Lance Taylor  <iant@google.com>
25443
25444         * combine.c (record_value_for_reg): Change 0 to VOIDmode, twice.
25445         (record_dead_and_set_regs): Likewise.
25446         * df.h (struct df_mw_hardreg): Change flags field to int.
25447         (struct df_base_ref): Likewise.
25448         (struct df): Change changeable_flags field to int.
25449         * df-scan.c (df_defs_record): Change clobber_flags to int.
25450         * dwarf2.h (enum dwarf_tag): Make lo_user and hi_user values enum
25451         constants rather than #define macros.
25452         (enum dwarf_attribute, enum dwarf_location_atom): Likewise.
25453         (enum dwarf_type, enum dwarf_endianity_encoding): Likewise.
25454         (enum dwarf_calling_convention): Likewise.
25455         (enum dwarf_line_number_x_ops): Likewise.
25456         (enum dwarf_call_frame_info): Likewise.
25457         (enum dwarf_source_language): Likewise.
25458         * dwarf2out.c (int_loc_descriptor): Add cast to enum type.
25459         (add_calling_convention_attribute): Likewise.
25460         * fold-const.c (fold_undefer_overflow_warnings): Add cast to enum type.
25461         (combine_comparisons): Change compcode to int.  Add cast to enum type.
25462         * genrecog.c (maybe_both_true_2): Change c to int.
25463         (write_switch): Likewise.  Add cast to enum type.
25464         * gimplify.c (gimplify_omp_for): Handle return values from
25465         gimplify_expr using MIN rather than bitwise or.
25466         (gimplify_expr): Add cast to enum type.
25467         * ipa-prop.c (update_jump_functions_after_inlining): Change
25468         IPA_BOTTOM to IPA_JF_UNKNOWN.
25469         * ira.c (setup_class_subset_and_memory_move_costs): Change mode to int.
25470         Add casts to enum type.
25471         (setup_cover_and_important_classes): Change cl to int.  Add casts
25472         to enum type.
25473         (setup_class_translate): Change cl and mode to int.
25474         (ira_init_once): Change mode to int.
25475         (free_register_move_costs): Likewise.
25476         (setup_prohibited_mode_move_regs): Add casts to enum type.
25477         * langhooks.c (add_builtin_function_common): Rework assertion that
25478         value fits bitfield.
25479         * mcf.c (add_fixup_edge): Change type parameter to edge_type.
25480         * omega.c (omega_do_elimination): Avoid math on enum types.
25481         * optabs.c (expand_vec_shift_expr): Remove casts to int.
25482         * opts.c (set_debug_level): Change 2 to enum constant.  Use new
25483         int local to handle integral_argment value.
25484         * regmove.c (try_auto_increment): Change PUT_MODE to
25485         PUT_REG_NOTE_KIND.
25486         * reload.c (push_secondary_reload): Add casts to enum type.
25487         (secondary_reload_class, find_valid_class): Likewise.
25488         * reload1.c (emit_input_reload_insns): Likewise.
25489         * rtl.h (NOTE_VAR_LOCATION_STATUS): Likewise.
25490         * sel-sched.c (init_hard_regs_data): Change cur_mode to int.
25491         * sel-sched-ir.c (hash_with_unspec_callback): Change 0 to enum
25492         constant.
25493         * tree.c (build_common_builtin_nodes): Add casts to enum type.
25494         * tree-complex.c (complex_lattice_t): Typedef to int rather than
25495         enum type.
25496         (expand_complex_libcall): Add casts to enum type.
25497         * tree-into-ssa.c (get_ssa_name_ann): Change 0 to enum constant.
25498         * tree-vect-loop.c (vect_model_reduction_cost): Compare reduc_code
25499         with ERROR_MARK, not NUM_TREE_CODES.
25500         (vect_create_epilog_for_reduction): Likewise.
25501         (vectorizable_reduction): Don't initialize epiloc_reduc_code.
25502         When not using it, set it to ERROR_MARK rather than NUM_TREE_CODES.
25503         * tree-vect-patterns.c (vect_pattern_recog_1): Change vec_mode to
25504         enum machine_mode.
25505         * tree-vect-stmts.c (new_stmt_vec_info): Change 0 to
25506         vect_unused_in_loop.  Change 0 to loop_vect.
25507         * tree-vectorizer.c (vect_set_verbosity_level): Add casts to enum type.
25508         * var-tracking.c (get_init_value): Change return type to enum
25509         var_init_status.
25510         * vec.h (DEF_VEC_FUNC_P) [iterate]: Cast 0 to type T.
25511         * config/arm/arm.c (fp_model_for_fpu): Change to array to enum
25512         arm_fp_model.
25513         (arm_override_options): Add casts to enum type.
25514         (arm_emit_tls_decoration): Likewise.
25515         * config/i386/i386.c (ix86_function_specific_restore): Add casts
25516         to enum type.
25517         * config/i386/i386-c.c (ix86_pragma_target_parse): Likewise.
25518         * config/ia64/ia64.c (ia64_expand_compare): Change magic to int.
25519         * config/rs6000/rs6000.c (rs6000_override_options): Add casts to
25520         enum type.
25521         * config/s390/s390.c (code_for_builtin_64): Change to array of
25522         enum insn_code.
25523         (code_for_builtin_31): Likewise.
25524         (s390_expand_builtin): Change code_for_builtin to enum insn_code
25525         const *.
25526         * config/sparc/sparc.c (sparc_override_options): Change value
25527         field in struct code_model to enum cmodel.  In initializer change
25528         0 to NULL and add cast to enum type.
25529
25530         * c-typeck.c (build_modify_expr): Add lhs_origtype parameter.
25531         Change all callers.  Issue a -Wc++-compat warning using
25532         lhs_origtype if necessary.
25533         (convert_for_assignment): Issue -Wc++-compat warnings about
25534         invalid conversions to enum type on assignment.
25535         * c-common.h (build_modify_expr): Update declaration.
25536
25537 2009-04-24  Nick Clifton  <nickc@redhat.com>
25538
25539         * config/iq2000/iq2000.c (function_arg): Handle TImode values.
25540         (function_arg_advance): Likewise.
25541         * config/iq2000/iq2000.md (movsi_internal2): Fix the length of the
25542         5th alternative.
25543
25544 2009-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
25545
25546         * config/s390/constraints.md ('I', 'J'): Fix condition.
25547
25548 2009-04-24  Diego Novillo  <dnovillo@google.com>
25549
25550         * gengtype-parse.c (parse_error): Add newline after message.
25551
25552 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
25553
25554         * config/i386/sse.md (avxmodesuffixs): Removed.
25555         (*avx_pinsr<avxmodesuffixs>): Renamed to ...
25556         (*avx_pinsr<ssevecsize>): This.
25557
25558 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
25559
25560         * loop-iv.c (replace_single_def_regs): Look for REG_EQUAL notes;
25561         follow chains of regs with a single definition, and allow expressions
25562         that are function_invariant_p.
25563         (simple_rhs_p): Allow expressions that are function_invariant_p.
25564
25565 2009-04-24  Paolo Bonzini  <bonzini@gnu.org>
25566
25567         PR middle-end/39867
25568         * fold-const.c (fold_cond_expr_with_comparison): When folding
25569         > and >= to MAX, make sure the MAX uses the same type as the
25570         comparison's operands.
25571
25572 2009-04-24  Nick Clifton  <nickc@redhat.com>
25573
25574         * config/frv/frv.c (frv_frame_access): Do not use reg+reg
25575         addressing for DImode accesses.
25576         (frv_print_operand_address): Handle PLUS case.
25577         * config/frv/frv.h (FIXED_REGISTERS): Mark link register as fixed.
25578
25579 2009-04-24  Jakub Jelinek  <jakub@redhat.com>
25580
25581         PR rtl-optimization/39794
25582         * alias.c (canon_true_dependence): Add x_addr argument.
25583         * rtl.h (canon_true_dependence): Adjust prototype.
25584         * cse.c (check_dependence): Adjust canon_true_dependence callers.
25585         * cselib.c (cselib_invalidate_mem): Likewise.
25586         * gcse.c (compute_transp): Likewise.
25587         * dse.c (scan_reads_nospill): Likewise.
25588         (record_store, check_mem_read_rtx): Likewise.  For non-const-or-frame
25589         addresses pass base->val_rtx as mem_addr, for const-or-frame addresses
25590         canon_base_addr of the group, plus optional offset.
25591         (struct group_info): Rename canon_base_mem to
25592         canon_base_addr.
25593         (get_group_info): Set canon_base_addr to canon_rtx of base, not
25594         canon_rtx of base_mem.
25595
25596 2009-04-23  Paolo Bonzini  <bonzini@gnu.org>
25597
25598         * config/sh/sh.c (sh_expand_prologue, sh_expand_epilogue):
25599         Use memory_address_p instead of GO_IF_LEGITIMATE_ADDRESS.
25600
25601 2009-04-23  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
25602
25603         * config/spu/spu-builtins.h: Delete file.
25604
25605         * config/spu/spu.h (enum spu_builtin_type): Move here from
25606         spu-builtins.h.
25607         (struct spu_builtin_description): Likewise.  Add GTY marker.
25608         Do not use enum spu_function_code or enum insn_code.
25609         (spu_builtins): Add extern declaration.
25610
25611         * config/spu/spu.c: Do not include "spu-builtins.h".
25612         (enum spu_function_code, enum spu_builtin_type_index,
25613         V16QI_type_node, V8HI_type_node, V4SI_type_node, V2DI_type_node,
25614         V4SF_type_node, V2DF_type_node, unsigned_V16QI_type_node,
25615         unsigned_V8HI_type_node, unsigned_V4SI_type_node,
25616         unsigned_V2DI_type_node): Move here from spu-builtins.h.
25617         (spu_builtin_types): Make static.  Add GTY marker.
25618         (spu_builtins): Add extern declaration with GTY marker.
25619         Include "gt-spu.h".
25620
25621         * config/spu/spu-c.c: Do not include "spu-builtins.h".
25622         (spu_resolve_overloaded_builtin): Do not use spu_function_code.
25623         Check programmatically whether all parameters are scalar.
25624
25625         * config/spu/t-spu-elf (spu.o, spu-c.o): Update dependencies.
25626
25627 2009-04-23  Eric Botcazou  <ebotcazou@adacore.com>
25628
25629         * gimplify.c (gimplify_modify_expr_rhs) <VAR_DECL>: Do not do a direct
25630         assignment from the constructor either if the target is volatile.
25631
25632 2009-04-23  Daniel Jacobowitz  <dan@codesourcery.com>
25633
25634         * config/arm/arm.md (insv): Do not share operands[0].
25635
25636 2009-04-23  Nathan Sidwell  <nathan@codesourcery.com>
25637
25638         * config/vxlib-tls.c (active_tls_threads): Delete.
25639         (delete_hook_installed): New.
25640         (tls_delete_hook): Don't delete the delete hook.
25641         (tls_destructor): Delete it here.
25642         (__gthread_set_specific): Adjust installing the delete hook.
25643         (tls_delete_hook): Use __gthread_enter_tsd_dtor_context and
25644         __gthread_leave_tsd_dtor_context.
25645
25646 2009-04-23  Rafael Avila de Espindola  <espindola@google.com>
25647
25648         * c-format.c (gcc_tdiag_char_table): Add support for %E.
25649
25650 2009-04-23  Uros Bizjak  <ubizjak@gmail.com>
25651
25652         * config/alpha/alpha.c (alpha_legitimize_reload_address): Add cast to
25653         enum type.
25654         (alpha_rtx_costs): Ditto.
25655         (emit_unlikely_jump): Use add_reg_note.
25656         (emit_frame_store_1): Ditto.
25657         (alpha_expand_prologue): Ditto.
25658         (alpha_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
25659         * config/alpha/alpha.c (Unicos/Mk address splitter): Use add_reg_note.
25660
25661 2009-04-23  Nick Clifton  <nickc@redhat.com>
25662
25663         * config/v850/v850.md (epilogue): Remove suppressed code.
25664         (return): Rename to return_simple and remove test of frame size.
25665         * config/v850/v850.c (expand_epilogue): Rename call to gen_return
25666         to gen_return_simple.
25667
25668 2009-04-22  Jing Yu  <jingyu@google.com>
25669
25670         PR testsuite/39781
25671         * config/arm/arm.h: Define HANDLE_PRAGMA_PACK_PUSH_POP.
25672
25673 2009-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
25674
25675         PR C/31499
25676         * c-typeck.c (process_init_element): Treat VECTOR_TYPE like ARRAY_TYPE
25677         and RECORD_TYPE/UNION_TYPE.  When outputing the actual element and the
25678         value is a VECTOR_CST, the element type is the element type of the
25679         vector.
25680
25681 2009-04-22  DJ Delorie  <dj@redhat.com>
25682
25683         * config/m32c/m32c.h: Update GTY annotations to new syntax.
25684
25685 2009-04-22  Jakub Jelinek  <jakub@redhat.com>
25686
25687         * alias.c (find_base_term): Move around LO_SUM case, so that
25688         CONST falls through into PLUS/MINUS handling.
25689
25690         PR c/39855
25691         * fold-const.c (fold_binary) <case LSHIFT_EXPR>: When optimizing
25692         into 0, use omit_one_operand.
25693
25694 2009-04-23  Ben Elliston  <bje@au.ibm.com>
25695
25696         * config/rs6000/linux-unwind.h (get_regs): Remove type
25697         puns. Change the type of `pc' to an array of unsigned ints and
25698         update all users.  Constify frame24.
25699
25700 2009-04-22  DJ Delorie  <dj@redhat.com>
25701
25702         * config/m32c/m32c.c (m32c_special_page_vector_p): Move
25703         declarations before code.
25704         (current_function_special_page_vector): Likewise.
25705         (m32c_expand_insv): Silence a warning.
25706
25707 2009-04-21  Taras Glek  <tglek@mozilla.com>
25708
25709         * alias.c: Update GTY annotations to new syntax.
25710         * basic-block.h: Likewise.
25711         * bitmap.h: Likewise.
25712         * c-common.h: Likewise.
25713         * c-decl.c: Likewise.
25714         * c-parser.c: Likewise.
25715         * c-pragma.c: Likewise.
25716         * c-tree.h: Likewise.
25717         * cfgloop.h: Likewise.
25718         * cgraph.h: Likewise.
25719         * config/alpha/alpha.c: Likewise.
25720         * config/arm/arm.h: Likewise.
25721         * config/avr/avr.h: Likewise.
25722         * config/bfin/bfin.c: Likewise.
25723         * config/cris/cris.c: Likewise.
25724         * config/darwin.c: Likewise.
25725         * config/frv/frv.c: Likewise.
25726         * config/i386/i386.c: Likewise.
25727         * config/i386/i386.h: Likewise.
25728         * config/i386/winnt.c: Likewise.
25729         * config/ia64/ia64.h: Likewise.
25730         * config/iq2000/iq2000.c: Likewise.
25731         * config/mips/mips.c: Likewise.
25732         * config/mmix/mmix.h: Likewise.
25733         * config/pa/pa.c: Likewise.
25734         * config/pa/pa.h: Likewise.
25735         * config/rs6000/rs6000.c: Likewise.
25736         * config/s390/s390.c: Likewise.
25737         * config/sparc/sparc.c: Likewise.
25738         * config/xtensa/xtensa.c: Likewise.
25739         * cselib.h: Likewise.
25740         * dbxout.c: Likewise.
25741         * dwarf2out.c: Likewise.
25742         * except.c: Likewise.
25743         * except.h: Likewise.
25744         * fixed-value.h: Likewise.
25745         * function.c: Likewise.
25746         * function.h: Likewise.
25747         * gimple.h: Likewise.
25748         * integrate.c: Likewise.
25749         * optabs.c: Likewise.
25750         * output.h: Likewise.
25751         * real.h: Likewise.
25752         * rtl.h: Likewise.
25753         * stringpool.c: Likewise.
25754         * tree-data-ref.c: Likewise.
25755         * tree-flow.h: Likewise.
25756         * tree-scalar-evolution.c: Likewise.
25757         * tree-ssa-address.c: Likewise.
25758         * tree-ssa-alias.h: Likewise.
25759         * tree-ssa-operands.h: Likewise.
25760         * tree.c: Likewise.
25761         * tree.h: Likewise.
25762         * varasm.c: Likewise.
25763         * varray.h: Likewise.
25764         * vec.h: Likewise.
25765         * coretypes.h: Do not define GTY macro if it is already defined.
25766         * doc/gty.texi: Update GTY documentation to new syntax.
25767         * gengtype-lex.l: Enforce attribute-like syntax for GTY
25768         annotations on structs.
25769         * gengtype-parse.c: Likewise.
25770
25771 2009-04-22  Mark Heffernan  <meheff@google.com>
25772
25773         * gcc.c (LINK_COMMAND_SPEC): Link with gcov with -fprofile-generate=.
25774
25775 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
25776
25777         * config/arm/arm.c (arm_rtx_costs_1): Use power_of_two_operand
25778         where appropriate.
25779
25780 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
25781
25782         * config/arm/arm.c (arm_size_rtx_costs): Treat a PLUS with a shift
25783         the same as a PLUS without a shift.  Increase the cost of a
25784         CONST_INT in MULT.
25785
25786 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25787
25788         * Makefile.in: Update dependencies.
25789         * errors.c (warning): Remove unused parameter 'opt'. Returns 'void'.
25790         * errors.h: Remove bogus comment about compatibility.
25791         (warning): Update declaration.
25792         * genautomata.c: Update all calls to warning.
25793         * gimple.c: Do not include errors.h. Include toplev.h.
25794         * tree-ssa-structalias.c: Do not include errors.h.
25795         * omega.c: Likewise.
25796         * tree-ssa-reassoc.c: Likewise.
25797         * config/spu/spu-c.c: Likewise.
25798         * config/spu/t-spu-elf: Update dependencies.
25799
25800 2009-04-22  Richard Guenther  <rguenther@suse.de>
25801
25802         PR tree-optimization/39824
25803         * tree-ssa-ccp.c (fold_const_aggregate_ref): For INDIRECT_REFs
25804         make sure the types are compatible.
25805
25806 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25807
25808         PR c++/14875
25809         * c-common.c (c_parse_error): Take a token_flags parameter.
25810         Use token_type for the token type instead.
25811         Pass token_flags to cpp_type2name.
25812         * c-common.h (c_parse_error): Update declaration.
25813         * c-parser.c (c_parser_error): Pass 0 as token flags.
25814
25815 2009-04-22  Andrey Belevantsev  <abel@ispras.ru>
25816
25817         PR rtl-optimization/39580
25818         * sel-sched-ir.c (insert_in_history_vect): Remove incorrect gcc_assert.
25819
25820 2009-04-22  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
25821
25822         * function.c (expand_function_end): Do not emit a jump to the "naked"
25823         return label for fall-through returns.
25824         * except.c (sjlj_emit_function_exit): Always place the call to the
25825         unregister function at the location installed by expand_function_end.
25826
25827 2009-04-22  Richard Guenther  <rguenther@suse.de>
25828
25829         PR tree-optimization/39845
25830         * tree-switch-conversion.c (build_arrays): Add new referenced vars.
25831         (gen_inbound_check): Likewise.
25832
25833 2009-04-22  Nathan Sidwell  <nathan@codesourcery.com>
25834
25835         * gthr-vxworks.h (struct __gthread_once_t): Add alignment and
25836         padding for PPC.
25837         (__GTHREAD_ONCE_INIT): Adjust ppc initializer.
25838         * config/vxlib.c (__gthread_once): Add race guard for PPC.
25839
25840 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
25841
25842         * config/sh/sh.c (shift_insns_rtx, shiftcosts, gen_shifty_op,
25843         sh_dynamicalize_shift_p, shl_and_scr_length): Truncate
25844         shift counts to avoid out-of-bounds array accesses.
25845
25846 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
25847
25848         * config/sparc/sparc.h (POINTER_SIZE): Fix comment.
25849         (Pmode): Move above.
25850
25851 2009-04-22  Uros Bizjak  <ubizjak@gmail.com>
25852
25853         * config/alpha/alpha.c: Use REG_P, MEM_P, CONST_INT_P, JUMP_P,
25854         NONJUMP_INSN_P, CALL_P, LABEL_P and NOTE_P predicates instead of
25855         GET_CODE macro.  Use IN_RANGE macro where appropriate.
25856         * config/alpha/alpha.h: Ditto.
25857         * config/alpha/alpha.md: Ditto.
25858         * config/alpha/constraints.md: Ditto.
25859         * config/alpha/predicates.md: Ditto.
25860
25861 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
25862
25863         * defaults.h (GO_IF_MODE_DEPENDENT_ADDRESS): Provide empty default.
25864         * config/frv/frv.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25865         * config/s390/s390.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25866         * config/m32c/m32c.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25867         * config/spu/spu.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25868         * config/i386/i386.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25869         * config/sh/sh.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25870         * config/pdp11/pdp11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25871         * config/avr/avr.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25872         * config/crx/crx.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25873         * config/fr30/fr30.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25874         * config/m68hc11/m68hc11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25875         * config/cris/cris.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25876         * config/iq2000/iq2000.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25877         * config/mn10300/mn10300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25878         * config/ia64/ia64.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25879         * config/m68k/m68k.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25880         * config/picochip/picochip.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25881         * config/arc/arc.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25882         * config/mcore/mcore.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25883         * config/score/score.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25884         * config/arm/arm.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25885         * config/pa/pa.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25886         * config/mips/mips.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25887         * config/v850/v850.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25888         * config/mmix/mmix.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25889         * config/bfin/bfin.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25890
25891 2009-04-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
25892
25893         * cfghooks.c (tidy_fallthru_edges): Remove find_basic_blocks
25894         references from comments.
25895         * cfgbuild.c (count_basic_blocks): Delete.
25896         (find_basic_blocks_1): Delete.
25897         (find_basic_blocks): Delete.
25898         * except.c (finish_eh_generation): Make static.  Move comment from
25899         except.h here.  Remove find_basic_blocks references from comments.
25900         * except.h (finish_eh_generation): Delete.
25901         * basic-block.h (find_basic_blocks): Delete.
25902         * config/sh/sh.c (sh_output_mi_thunk): Delete a "#if 0" block.
25903
25904 2009-04-22  Dave Korn  <dave.korn.cygwin@gmail.com>
25905
25906         * sdbout.c (sdbout_symbol):  Pass VOIDmode to eliminate_regs.
25907         (sdbout_parms):  Likewise.
25908
25909 2009-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
25910
25911         * config/sh/sh.c (prepare_cbranch_operands): Use
25912         LAST_AND_UNUSED_RTX_CODE instead of CODE_FOR_nothing.
25913         (expand_cbranchdi4): Likewise.
25914         (from_compare): Add cast to enum type.
25915         (expand_cbranchsi4): Use add_reg_note.
25916         (output_stack_adjust, push, pop, sh_expand_prologue): Likewise.
25917         (sh_insn_length_adjustment): Use sh_cpu_attr instead of sh_cpu.
25918         (sh_initialize_trampoline): Change 0 to LCT_NORMAL in function call.
25919         (sh_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
25920         * config/sh/sh.md (cbranchsi4): Use LAST_AND_UNUSED_RTX_CODE
25921         instead of CODE_FOR_nothing.
25922         (cbranchdi4): Likewise.  Fix the order of arguments for
25923         gen_rtx_fmt_ee.
25924         (push_fpscr): Use add_reg_note.
25925         (pop_fpscr, movdf_i4+1, reload_outdf__RnFRm+3, reload_outdf__RnFRm+4,
25926         reload_outdf__RnFRm+5, fpu_switch+1, fpu_switch+2): Likewise.
25927
25928 2009-04-21  Joseph Myers  <joseph@codesourcery.com>
25929
25930         * ABOUT-GCC-NLS, ChangeLog, ChangeLog-1997, ChangeLog-1998,
25931         ChangeLog-1999, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
25932         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
25933         ChangeLog-2007, ChangeLog-2008, ChangeLog.dataflow, ChangeLog.lib,
25934         ChangeLog.ptr, ChangeLog.tree-ssa, ChangeLog.tuples, FSFChangeLog,
25935         FSFChangeLog.10, FSFChangeLog.11, LANGUAGES, ONEWS, acinclude.m4,
25936         config/alpha/gnu.h, config/alpha/libgcc-alpha-ldbl.ver,
25937         config/alpha/t-osf4, config/alpha/t-vms, config/alpha/va_list.h,
25938         config/alpha/x-vms, config/arc/t-arc,
25939         config/arm/README-interworking, config/arm/arm-c.c,
25940         config/arm/gentune.sh, config/arm/libgcc-bpabi.ver,
25941         config/arm/t-arm, config/arm/t-arm-elf, config/arm/t-arm-softfp,
25942         config/arm/t-bpabi, config/arm/t-linux, config/arm/t-linux-eabi,
25943         config/arm/t-netbsd, config/arm/t-pe, config/arm/t-strongarm-elf,
25944         config/arm/t-symbian, config/arm/t-vxworks, config/arm/t-wince-pe,
25945         config/avr/t-avr, config/bfin/elf.h, config/bfin/libgcc-bfin.ver,
25946         config/bfin/linux.h, config/bfin/t-bfin, config/bfin/t-bfin-elf,
25947         config/bfin/t-bfin-linux, config/bfin/t-bfin-uclinux,
25948         config/bfin/uclinux.h, config/cris/mulsi3.asm, config/cris/t-cris,
25949         config/cris/t-elfmulti, config/crx/t-crx,
25950         config/darwin-ppc-ldouble-patch.def, config/darwin-sections.def,
25951         config/divmod.c, config/fr30/t-fr30, config/frv/libgcc-frv.ver,
25952         config/frv/t-frv, config/frv/t-linux, config/h8300/genmova.sh,
25953         config/h8300/t-h8300, config/i386/athlon.md,
25954         config/i386/darwin-libgcc.10.4.ver,
25955         config/i386/darwin-libgcc.10.5.ver, config/i386/libgcc-glibc.ver,
25956         config/i386/mach.h, config/i386/netbsd.h, config/i386/t-crtpc,
25957         config/i386/t-cygming, config/i386/t-cygwin, config/i386/t-i386,
25958         config/i386/t-linux64, config/i386/t-nwld,
25959         config/i386/t-rtems-i386, config/i386/t-sol2-10,
25960         config/i386/x-mingw32, config/ia64/div.md, config/ia64/elf.h,
25961         config/ia64/ia64.opt, config/ia64/libgcc-glibc.ver,
25962         config/ia64/libgcc-ia64.ver, config/ia64/linux.h,
25963         config/ia64/sysv4.h, config/ia64/t-hpux, config/ia64/t-ia64,
25964         config/iq2000/abi, config/iq2000/lib2extra-funcs.c,
25965         config/iq2000/t-iq2000, config/libgcc-glibc.ver,
25966         config/m32r/libgcc-glibc.ver, config/m32r/t-linux,
25967         config/m32r/t-m32r, config/m68hc11/t-m68hc11,
25968         config/m68k/t-floatlib, config/m68k/t-linux, config/m68k/t-mlibs,
25969         config/m68k/t-uclinux, config/mcore/t-mcore,
25970         config/mcore/t-mcore-pe, config/mips/20kc.md, config/mips/4130.md,
25971         config/mips/5400.md, config/mips/5500.md, config/mips/crti.asm,
25972         config/mips/crtn.asm, config/mips/irix-crti.asm,
25973         config/mips/irix-crtn.asm, config/mips/libgcc-mips16.ver,
25974         config/mips/mips-dsp.md, config/mips/mips-dspr2.md,
25975         config/mips/mips-fixed.md, config/mips/sb1.md,
25976         config/mips/sr71k.md, config/mips/t-elf, config/mips/t-gofast,
25977         config/mips/t-iris6, config/mips/t-isa3264,
25978         config/mips/t-libgcc-mips16, config/mips/t-linux64,
25979         config/mips/t-mips, config/mips/t-r3900, config/mips/t-rtems,
25980         config/mips/t-sb1, config/mips/t-sde, config/mips/t-sdemtk,
25981         config/mips/t-slibgcc-irix, config/mips/t-sr71k, config/mips/t-st,
25982         config/mips/t-vr, config/mips/t-vxworks, config/mmix/t-mmix,
25983         config/mn10300/t-linux, config/mn10300/t-mn10300,
25984         config/pa/pa32-regs.h, config/pa/t-hpux-shlib, config/pa/t-linux,
25985         config/pa/t-linux64, config/pa/t-pa64, config/pdp11/t-pdp11,
25986         config/picochip/libgccExtras/clzsi2.asm,
25987         config/picochip/t-picochip, config/rs6000/darwin-ldouble-format,
25988         config/rs6000/darwin-libgcc.10.4.ver,
25989         config/rs6000/darwin-libgcc.10.5.ver,
25990         config/rs6000/libgcc-ppc-glibc.ver, config/rs6000/ppc-asm.h,
25991         config/rs6000/t-aix43, config/rs6000/t-aix52,
25992         config/rs6000/t-darwin, config/rs6000/t-fprules,
25993         config/rs6000/t-fprules-fpbit, config/rs6000/t-linux64,
25994         config/rs6000/t-lynx, config/rs6000/t-netbsd,
25995         config/rs6000/t-ppccomm, config/rs6000/t-ppcendian,
25996         config/rs6000/t-ppcgas, config/rs6000/t-rs6000,
25997         config/rs6000/t-rtems, config/rs6000/t-spe,
25998         config/rs6000/t-vxworks, config/s390/libgcc-glibc.ver,
25999         config/score/t-score-elf, config/sh/divcost-analysis,
26000         config/sh/libgcc-glibc.ver, config/sh/t-netbsd, config/sh/t-sh,
26001         config/sh/t-sh64, config/sh/t-superh, config/sh/t-symbian,
26002         config/sparc/libgcc-sparc-glibc.ver, config/sparc/sol2-bi.h,
26003         config/sparc/sol2-gas.h, config/sparc/sol2-gld-bi.h,
26004         config/sparc/t-elf, config/sparc/t-linux64, config/sparc/t-sol2,
26005         config/stormy16/stormy-abi, config/stormy16/t-stormy16,
26006         config/t-darwin, config/t-libunwind, config/t-libunwind-elf,
26007         config/t-linux, config/t-lynx, config/t-slibgcc-elf-ver,
26008         config/t-slibgcc-sld, config/t-sol2, config/t-vxworks,
26009         config/udivmod.c, config/udivmodsi4.c, config/v850/t-v850,
26010         config/v850/t-v850e, config/xtensa/t-xtensa, diagnostic.def,
26011         gdbinit.in, glimits.h, gstab.h, gsyms.h, java/ChangeLog,
26012         java/ChangeLog.ptr, java/ChangeLog.tree-ssa, libgcc-std.ver,
26013         limitx.h, version.c, xcoff.h: Add copyright and license notices.
26014         * config/h8300/genmova.sh: Include copyright and license notices
26015         in generated output.
26016         * config/h8300/mova.md: Regenerate.
26017         * doc/install.texi2html: Include word "Copyright" in copyright
26018         notice and use name "Free Software Foundation, Inc.".
26019         * ChangeLog, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
26020         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
26021         ChangeLog-2007, ChangeLog-2008: Correct dates.
26022
26023 2009-04-21  Eric Botcazou  <ebotcazou@adacore.com>
26024
26025         * c-common.c (c_common_truthvalue_conversion): Use LOCATION to build
26026         NE_EXPR operations as well.
26027         * c-parser.c (c_parser_condition): Do not set location information on
26028         the condition.
26029         (c_parser_conditional_expression): Likewise.
26030         (c_parser_binary_expression): Set location information on operators.
26031         * c-typeck.c (build_unary_op) <TRUTH_NOT_EXPR>: Reset the location if
26032         TRUTH_NOT_EXPR has been folded.
26033         * fold-const.c (fold_truth_not_expr): Copy location information from
26034         the incoming expression to the outgoing one.
26035         * gimplify.c (shortcut_cond_r): Add locus parameter.  Pass it to
26036         recursive calls on the LHS of the operator but pass that of the
26037         operator to recursive calls on the RHS of the operator.  Set it
26038         on the COND_EXPR.
26039         (shortcut_cond_expr): Set the locus of the operator on the second
26040         COND_EXPR and that of the expression on the first in degenerate cases.
26041         Pass the locus of the expression to calls to shortcut_cond_r.
26042         Set the locus of the 'then' block on the associated jump, if any.
26043         (gimplify_boolean_expr): Add locus parameter.  Set it on the COND_EXPR.
26044         (gimplify_expr) <TRUTH_ANDIF_EXPR>: Pass the locus of the outer
26045         expression to call to gimplify_boolean_expr.
26046
26047 2009-04-21  Kai Tietz  <kai.tietz@onevision.com>
26048
26049         * config.gcc: Add additional configuration for
26050         i686-w64-mingw* and x86_64-w64-mingw* triplet.
26051         * config/i386/mingw-w64.h: New mingw-w64 specific header.
26052         (CPP_SPEC): Redefine for allowing -municode option.
26053         (STARTFILE_SPEC): Likewise.
26054         * config/i386/t-mingw-w64: New.
26055         * config/i386/mingw-w64.opt: New.
26056         (municode): Add new target option.
26057         * doc/invoke.texi (municode): Add documentation for new option.
26058
26059 2009-04-21  Ian Lance Taylor  <iant@google.com>
26060
26061         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
26062         Correct test for number of arguments.
26063         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Likewise.
26064
26065 2009-04-21  Andreas Schwab  <schwab@linux-m68k.org>
26066
26067         * config/m68k/linux.h (FINALIZE_TRAMPOLINE): Use enum for second
26068         argument of emit_library_call.
26069
26070 2009-04-21  Richard Guenther  <rguenther@suse.de>
26071
26072         PR middle-end/39829
26073         * gimple.c (walk_stmt_load_store_addr_ops): Catch addresses
26074         inside VIEW_CONVERT_EXPRs.
26075
26076 2009-04-21  Martin Jambor  <mjambor@suse.cz>
26077
26078         * tree-switch-conversion.c (build_constructors): Split a long line.
26079         (constructor_contains_same_values_p): New function.
26080         (build_one_array): Create assigns of constants if possible, do not
26081         call mark_sym_for_renaming, call update_stmt.
26082         (build_arrays): Call make_ssa_name (create_tmp_var ()) instead of
26083         make_rename_temp.  Do not call mark_symbols_for_renaming, call
26084         update_stmt.
26085         (gen_def_assigns): Do not call mark_symbols_for_renaming or
26086         find_new_referenced_vars, call update_stmt.
26087         (gen_inbound_check): Use create_tmp_var and create ssa names manually
26088         instead of calling make_rename_temp.  Do not call
26089         find_new_referenced_vars or mark_symbols_for_renaming, call
26090         update_stmt.
26091
26092 2009-04-21  Richard Guenther  <rguenther@suse.de>
26093
26094         PR tree-optimization/39827
26095         * tree-ssa-phiprop.c (propagate_with_phi): Check SSA_NAME is in range.
26096         (tree_ssa_phiprop): Pass the correct array size.
26097
26098 2009-04-21  Uros Bizjak  <ubizjak@gmail.com>
26099
26100         * config/alpha/alpha.md (tune): Add cast to enum attr_tune.
26101
26102 2009-04-21  Manuel López-Ibáñez  <manu@gcc.gnu.org>
26103
26104         PR 16202
26105         * c-typeck.c (lvalue_p): Move declaration ...
26106         * c-common.h (lvalue_p): ... to here.
26107         * c-common.c (candidate_equal_p): New.
26108         (add_tlist): Use it.
26109         (merge_tlist): Use it.
26110         (warn_for_collisions_1): Likewise.
26111         (warning_candidate_p): Accept more candidates.
26112         (verify_tree): A warning candidate can be an expression. Use
26113         candidate_equal_p.
26114
26115 2009-04-21  Ben Elliston  <bje@au.ibm.com>
26116
26117         PR target/5267
26118         * doc/invoke.texi (RS/6000 and PowerPC Options): Add documentation
26119         for -mcall-eabi, -mcall-aixdesc, -mcall-freebsd and -mcall-openbsd
26120         options.  Remove -mcall-solaris documentation.
26121
26122 2009-04-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26123
26124         PR c++/13358
26125         * doc/invoke.texi (-Wlong-long): Update description.
26126         * c-lex (interpret_integer): Only warn if there was no previous
26127         overflow and -Wlong-long is enabled.
26128         * c-decl.c (declspecs_add_type): Drop redundant flags.
26129         * c.opt (Wlong-long): Init to -1.
26130         * c-opts.c (sanitize_cpp_opts): Synchronize cpp's warn_long_long
26131         and front-end warn_long_long. Wlong-long only depends on other
26132         flags if it is uninitialized.
26133         * c-parser.c (disable_extension_diagnostics): warn_long_long is
26134         the same for CPP and FE.
26135         (restore_extension_diagnostics): Likewise.
26136
26137 2009-04-20  Ian Lance Taylor  <iant@google.com>
26138
26139         Fix enum conversions which are invalid in C++:
26140         * auto-inc-dec.c (attempt_change): Change 0 to SET in function call.
26141         * calls.c (store_one_arg): Change 0 to EXPAND_NORMAL in function call.
26142         * cse.c (hash_rtx_cb): Change 0 to VOIDmode in function call.
26143         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add cast to enum type.
26144         * dbxout.c (dbxout_symbol): Change 0 to VOIDmode in function call.
26145         (dbxout_parms): Likewise.
26146         * df-core.c (df_set_flags): Change changeable_flags parameter to int.
26147         (df_clear_flags): Likewise.
26148         * df-problems.c (df_rd_bb_local_compute_process_def): Change
26149         top_flag parameter to int.
26150         (df_chain_create_bb_process_use): Likewise.
26151         (df_chain_add_problem): Change chain_flags parameter to unsigned int.
26152         Remove cast.
26153         * df-scan.c (df_ref_create): Change ref_flags parameter to int.
26154         (df_ref_create_structure, df_def_record_1): Likewise.
26155         (df_defs_record, df_uses_record, df_get_call_refs): Likewise.
26156         (df_notes_rescan): Change 0 to VOIDmode in function call.
26157         (df_get_call_refs, df_insn_refs_collect): Likewise.
26158         (df_bb_regs_collect): Likewise.
26159         (df_entry_block_defs_collect): Likewise.
26160         (df_exit_block_uses_collect): Likewise.
26161         * df.h: Update declarations.
26162         * double-int.c (double_int_divmod): Add cast to enum type.
26163         * dse.c (replace_inc_dec): Reverse parameters to gen_int_mode.
26164         * dwarf2out.c (new_reg_loc_descr): Add casts to enum type.
26165         (based_loc_descr): Likewise.
26166         (loc_descriptor_from_tree_1): Change first_op and second_op to
26167         enum dwarf_location_atom.  Add cast to enum type.
26168         * expmed.c (init_expmed): Change 0 to SET in function call.
26169         * expr.c (init_expr_target): Change 0 to VOIDmode in function call.
26170         (expand_expr_real_1): Change 0 to EXPAND_NORMAL in function call.
26171         (do_store_flag): Likewise.
26172         * fixed-value.h (struct fixed_value): Change mode to enum
26173         machine_mode.
26174         * function.c (assign_parms): Change 0 to VOIDmode in function call.
26175         * genautomata.c (insert_automaton_decl): Change 1 to INSERT in
26176         function call.
26177         (insert_insn_decl, insert_decl, insert_state): Likewise.
26178         (automata_list_finish): Likewise.
26179         * genrecog.c (process_define_predicate): Add cast to enum type.
26180         * gensupport.c (init_predicate_table): Add cast to enum type.
26181         * gimple.c (gimple_build_return): Change 0 to ERROR_MARK in
26182         function call.
26183         (gimple_build_call_1, gimple_build_label): Likewise.
26184         (gimple_build_goto, gimple_build_asm_1): Likewise.
26185         (gimple_build_switch_1, gimple_build_cdt): Likewise.
26186         * gimple.h (GIMPLE_CHECK): Change 0 to ERROR_MARK in function call.
26187         (enum fallback): Rename from enum fallback_t.
26188         (fallback_t): Typedef as int.
26189         * gimple-low.c (lower_builtin_setjmp): Change TSI_SAME_STMT to
26190         GSI_SAME_STMT in function call.
26191         * ira.c (setup_class_subset_and_memory_move_costs): Add casts to
26192         enum type.
26193         (setup_reg_class_relations): Likewise.
26194         (setup_reg_class_nregs): Change cl to int.  Add casts to enum type.
26195         (setup_prohibited_class_mode_regs): Add cast to enum type.
26196         (setup_prohibited_mode_move_regs): Likewise.
26197         * ira-costs.c (record_reg_classes): Change rclass to enum reg_class.
26198         (record_address_regs): Change i to enum reg_class.
26199         * lists.c (alloc_EXPR_LIST): Add cast to enum type.
26200         * machmode.h (GET_MODE_CLASS): Cast value to enum mode_class.
26201         (GET_MODE_WIDER_MODE): Cast value to enum machine_mode.
26202         (GET_MODE_2XWIDER_MODE): Likewise.
26203         (GET_CLASS_NARROWEST_MODE): Likewise.
26204         * omp-low.c (expand_omp_for): Add cast to enum type.
26205         * optabs.c (debug_optab_libfuncs): Add casts to enum type.
26206         * opts.c (enable_warning_as_error): Change kind to diagostic_t.
26207         * postreload.c (reload_cse_simplify_operands): Change rclass local
26208         to enum reg_class.
26209         * predict.c (combine_predictions_for_insn): Change best_predictor
26210         and predictor to enum br_predictor.
26211         (combine_predictions_for_bb): Likewise.
26212         (build_predict_expr): Change assignment to PREDICT_EXPR_OUTCOME to
26213         use SET_PREDICT_EXPR_OUTCOME.
26214         * real.c (real_arithmetic): Change icode to code in function call.
26215         * reginfo.c (init_move_cost): Add casts to enum type.
26216         (init_reg_sets_1, init_fake_stack_mems): Likewise.
26217         * regmove.c (regclass_compatible_p): Change class0 and class1 to
26218         enum reg_class.
26219         * reload.c (find_valid_class): Add casts to enum type.
26220         (push_reload): Change 0 to NO_REGS in function call.
26221         (find_reloads): Change this_alternative to array of enum
26222         reg_class.  Remove some now-unnecessary casts.
26223         (make_memloc): Change 0 to VOIDmode in function call.
26224         * reload1.c (reload): Change 0 to VOIDmode in function call.
26225         (eliminate_regs_1, elimination_effects): Likewise.
26226         (eliminate_regs_in_insn): Likewise.
26227         (emit_input_reload_insns): Add cast to enum type.
26228         (delete_output_reload): Change 0 to VOIDmode in function call.
26229         * reorg.c (insn_sets_resource_p): Convert include_delayed_effects
26230         to enum type in function call.
26231         * tree.h (PREDICT_EXPR_OUTCOME): Add cast to enum type.
26232         (SET_PREDICT_EXPR_OUTCOME): Define.
26233         * tree-dump.c (get_dump_file_info): Change phase parameter to int.
26234         (get_dump_file_name, dump_begin, dump_enabled_p): Likewise.
26235         (dump_initialized_p, dump_flag_name, dump_end): Likewise.
26236         (dump_function): Likewise.
26237         * tree-dump.h: Update declarations.
26238         * tree-pass.h: Update declarations.
26239         * varasm.c (assemble_integer): Change mclass to enum mode_class.
26240         * config/arm/arm.c (thumb_legitimize_reload_address): Add cast to
26241         enum type.
26242         (arm_rtx_costs_1): Correct parenthesization.
26243         (arm_rtx_costs): Add casts to enum type.
26244         (adjacent_mem_locations): Reverse arguments to const_ok_for_op.
26245         (vfp_emit_fstmd): Use add_rg_note.
26246         (emit_multi_reg_push, emit_sfm): Likewise.
26247         (thumb_set_frame_pointer): Likewise.
26248         (arm_expand_prologue): Likewise.
26249         (arm_regno_class): Change return type to enum reg_class.
26250         (thumb1_expand_prologue): Use add_reg_note.
26251         * config/arm/arm-protos.h (arm_regno_class): Update declaration.
26252         * config/arm/arm.h (INITIALIZE_TRAMPOLINE): Change 0 to LCT_NORMAL
26253         in function call.
26254         * config/arm/gentune.sh: Add cast to enum type.
26255         * config/arm/arm-tune.md: Rebuild.
26256         * config/i386/i386.c (ix86_expand_prologue): Use add_reg_note.
26257         (ix86_split_fp_branch, predict_jump): Likewise.
26258         (ix86_expand_multi_arg_builtin): Change sub_code from enum
26259         insn_code to enum rtx_code.
26260         (ix86_builtin_vectorized_function): Add cast to enum type.
26261         * config/i386/i386.md (truncdfsf2): Change slot to enum
26262         ix86_stack_slot.
26263         (truncxf<mode>2, isinf<mode>2): Likewise.
26264         * config/i386/i386-c.c (ix86_pragma_target_parse): Add cast to
26265         enum type.
26266         * config/ia64/ia64.c (ia64_split_tmode_move): Use add_reg_note.
26267         (spill_restore_mem, do_spill, ia64_expand_prologue): Likewise.
26268         (insert_bundle_state): Change 1 to INSERT in function call.
26269         (ia64_add_bundle_selector_before): Likewise.
26270         * config/ia64/ia64.md (cpu attr): Add cast to enum type.
26271         (save_stack_nonlocal): Change 0 to LCT_NORMAL in function call.
26272         (restore_stack_nonlocal): Likewise.
26273         * config/mips/mips.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL in
26274         function call.
26275         * config/mips/mips.c (mips_binary_cost): Change 0 to SET in
26276         function call.
26277         (mips_rtx_costs): Likewise.
26278         (mips_override_options): Add casts to enum type.
26279         * config/mips/sdemtk.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL
26280         in function call.
26281         * config/pa/pa.c (legitimize_pic_address): Use add_reg_note.
26282         (store_reg, set_reg_plus_d): Likewise.
26283         (hppa_expand_prologue, hppa_profile_hook): Likewise.
26284         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Add
26285         cast to enum type.
26286         (altivec_expand_vec_set_builtin): Change 0 to EXPAND_NORMAL in
26287         function call.
26288         (emit_unlikely_jump): Use add_reg_note.
26289         (rs6000_emit_allocate_stack): Likewise.
26290         (rs6000_frame_related, rs6000_emit_prologue): Likewise.
26291         (output_toc): Change 1 to INSERT in function call.
26292         (output_profile_hook): Change 0 to LCT_NORMAL in function call.
26293         (rs6000_initialize_trampoline): Likewise.
26294         (rs6000_init_dwarf_reg_sizes_extra): Change 0 to EXPAND_NORMAL in
26295         function call.
26296         * config/s390/s390.c (s390_rtx_costs): Add cast to enum type.
26297         (s390_expand_movmem): Change 0 to OPTAB_DIRECT in function call.
26298         (s390_expand_setmem, s390_expand_cmpmem): Likewise.
26299         (save_gprs): Use add_reg_note.
26300         (s390_emit_prologue): Likewise.
26301         (s390_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
26302         * config/sparc/sparc.c (sparc_expand_prologue): Use add_reg_note.
26303         (sparc_fold_builtin): Add cast to enum type.
26304         * config/spu/spu.c (spu_emit_branch_or_set): Change ior_code to
26305         enum insn_code.
26306         (spu_expand_prologue): Use add_reg_note.
26307         (expand_builtin_args): Change 0 to EXPAND_NORMAL in function call.
26308
26309 2009-04-20  Ian Lance Taylor  <iant@google.com>
26310
26311         * c-parser.c (c_parser_attributes): Change VEC back to tree list.
26312         (c_parser_postfix_expression_after_primary): Get VEC for list of
26313         arguments.  Get original types of arguments.  Call
26314         build_function_call_vec.
26315         (cached_expr_list_1, cached_expr_list_2): New static variables.
26316         (c_parser_expr_list): Change return type to VEC *.  Add
26317         p_orig_types parameter.  Change all callers.
26318         (c_parser_release_expr): New static function.
26319         (c_parser_vec_to_tree_list): New static function.
26320         * c-typeck.c (build_function_call): Rewrite to build a VEC and
26321         call build_function_call_vec.
26322         (build_function_call_vec): New function, based on old
26323         build_function_call.
26324         (convert_arguments): Remove nargs and argarray parameters.  Change
26325         values to a VEC.  Add origtypes parameter.
26326         (build_modify_expr): Add rhs_origtype parameter.  Change all callers.
26327         (convert_for_assignment): Add origtype parameter.  Change all
26328         callers.  If warn_cxx_compat, check for conversion to an enum
26329         type when calling a function.
26330         (store_init_value): Add origtype parameter.  Change all callers.
26331         (digest_init): Likewise.
26332         (struct init_node): Add origtype field.
26333         (add_pending_init): Add origtype parameter.  Change all callers.
26334         (output_init_element): Likewise.
26335         (output_pending_init_elements): Pass origtype from init_node to
26336         output_init_element.
26337         (process_init_element): Pass origtype from c_expr to
26338         output_init_element.
26339         (c_finish_return): Add origtype parameter.  Change all callers.
26340         * c-common.c (sync_resolve_size): Change params to VEC *.  Change
26341         caller.
26342         (sync_resolve_params): Likewise.
26343         (sync_resolve_return): Change params to first_param.  Change caller.
26344         (resolve_overloaded_builtins): Change params to VEC *.  Change
26345         callers.  Save first parameter around call to build_function_call_vec.
26346         * c-decl.c (finish_decl): Add origtype parameter.  Change all
26347         callers.  Call build_function_call_vec rather than
26348         build_function_call for cleanup.
26349         * c-tree.h: Update declarations.
26350         * c-common.h: Update declarations.
26351         * stub-objc.c (objc_rewrite_function_call): Change parameter from
26352         params to first_param.
26353         * target.h (struct gcc_target): Change resolve_overloaded_builtin
26354         params parameter from tree to void *.
26355         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
26356         Change arglist parameter to have type void *, and to be a pointer
26357         to a VEC.
26358         * config/rs6000/rs6000-protos.h
26359         (altivec_resolve_overloaded_builtin): Update declaration.
26360         * config/spu/spu-c.c (spu_resolved_overloaded_builtin): Change
26361         fnargs parameter to have type void *, and to be a pointer to a
26362         VEC.  Call build_function_call_vec instead of
26363         build_function_call.
26364         * config/spu/spu-protos.h (spu_expand_builtin): Update declaration.
26365
26366 2009-04-20  Joey Ye  <joey.ye@intel.com>
26367             Xuepeng Guo  <xuepeng.guo@intel.com>
26368             H.J. Lu  <hongjiu.lu@intel.com>
26369
26370         * config/i386/atom.md: Add bypasses with ix86_dep_by_shift_count.
26371
26372         * config/i386/i386.c (LEA_SEARCH_THRESHOLD): New macro.
26373         (IX86_LEA_PRIORITY): Likewise.
26374         (distance_non_agu_define): New function.
26375         (distance_agu_use): Likewise.
26376         (ix86_lea_for_add_ok): Likewise.
26377         (ix86_dep_by_shift_count): Likewise.
26378
26379         * config/i386/i386.md: Call ix86_lea_for_add_ok to decide we
26380         should split for LEA.
26381
26382         * config/i386/i386-protos.h (ix86_lea_for_add_ok): Declare new
26383         function.
26384         (ix86_dep_by_shift_count): Likewise.
26385
26386 2009-04-20  Richard Guenther  <rguenther@suse.de>
26387
26388         * expr.c (handled_component_p): Move ...
26389         * tree.h (handled_component_p): ... here.
26390         * tree.def: Re-order BIT_FIELD_REF, COMPONENT_REF,
26391         ARRAY_REF, ARRAY_RANGE_REF, VIEW_CONVERT_EXPR, IMAGPART_EXPR
26392         and REALPART_EXPR to be in one group.
26393
26394 2009-04-20  Richard Guenther  <rguenther@suse.de>
26395
26396         * basic-block.h (get_all_dominated_blocks): Declare.
26397         * dominance.c (get_all_dominated_blocks): New function.
26398         * tree-cfg.c (get_all_dominated_blocks): Remove.
26399         (remove_edge_and_dominated_blocks): Adjust.
26400         * tree-ssa-phiprop.c (tree_ssa_phiprop_1): Fold in ...
26401         (tree_ssa_phiprop): ... here.  Use get_all_dominated_blocks
26402         instead of recursing.
26403
26404 2009-04-20  Doug Kwan  <dougkwan@google.com>
26405
26406         * cgraph.h (cgraph_node_ptr): New type for vector functions.
26407         (struct cgraph_node_set_def): New type.
26408         (cgraph_node_set) New type. Also declare vector functions.
26409         (struct cgraph_node_set_element_def): New type.
26410         (cgraph_node_set_element): Ditto.
26411         (cgraph_node_set_iterator): New iterator type.
26412         (cgraph_node_set_new, cgraph_node_set_find, cgraph_node_set_add,
26413         cgraph_node_set_remove, dump_cgraph_node_set,
26414         debug_cgraph_node_set): New prototypes.
26415         (csi_end_p, csi_next, csi_node, csi_start, cgraph_node_in_set_p,
26416         cgraph_node_set_size): New inlines.
26417         * tree-pass.h (struct cgraph_node_set_def): New decl to avoid
26418         including cgraph.h.
26419         (struct ipa_opt_pass): Add struct cgraph_node_set_def
26420         argument to function 'write_summary'.
26421         * ipa.c: Include ggc.h.
26422         (hash_cgraph_node_set_element,
26423         eq_cgraph_node_set_element, cgraph_node_set_new,
26424         cgraph_node_set_add, cgraph_node_set_remove,
26425         cgraph_node_set_find, dump_cgraph_node_set,
26426         debug_cgraph_node_set): New functions.
26427         * Makefile.in (ipa.o): Add dependency on GGC_H.
26428
26429 2009-04-20  Ira Rosen  <irar@il.ibm.com>
26430
26431         PR tree-optimization/39675
26432         * tree-vect-loop.c (vect_transform_loop): Remove currently redundant
26433         check of the return code of vect_schedule_slp. Check that
26434         stmt_vec_info still exists for the statement, before checking its
26435         vectorization type.
26436
26437 2009-04-20  Michael Matz  <matz@suse.de>
26438
26439         * Makefile.in (generated_files): Take out $(simple_generated_c).
26440
26441 2009-04-19  Dave Korn  <dave.korn.cygwin@gmail.com>
26442
26443         * config/i386/cygwin-stdint.h (INTPTR_TYPE):  Remove "long".
26444         (UINTPTR_TYPE):  Likewise.
26445
26446 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
26447
26448         PR c/37481
26449         * c-typeck.c (digest_init): Check for initializing an array with a
26450         string literal.
26451
26452 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
26453
26454         PR c/19771
26455         * c-semantics.c (pop_stmt_list): Propagate
26456         STATEMENT_LIST_HAS_LABEL to parent statement list.
26457
26458 2009-04-19  Adam Nemet  <anemet@caviumnetworks.com>
26459
26460         * config/mips/mips.h (mips_tune_attr): New macro.
26461         * config/mips/mips.md (cpu): Use it.
26462
26463 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
26464
26465         PR c/38243
26466         * c-decl.c (shadow_tag_warned): Diagnose use of restrict when
26467         declaring a tag.
26468
26469 2009-04-19  Diego Novillo  <dnovillo@google.com>
26470
26471         * toplev.c (compile_file): Move call to coverage_finish ...
26472         * cgraphunit.c (ipa_passes): ... here.
26473         Call cgraph_process_new_functions.
26474         * ipa-utils.c (get_base_var): Handle CONSTRUCTOR.
26475         * Makefile.in (cgraphunit.o): Add dependency on COVERAGE_H.
26476
26477 2009-04-19  Jan Hubicka  <jh@suse.cz>
26478
26479         * cgraph.c (cgraph_create_edge, cgraph_set_call_stmt): Set proper
26480         cfun.
26481         (dump_cgraph_node): Dump can throw external flag.
26482         * ipa-pure-const.c (propagate): Fix propagation of nothrow flags.
26483
26484 2009-04-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
26485
26486         PR c/32061
26487         PR c++/36954
26488         * doc/invoke.texi: Add -Wlogical-op to -Wextra.
26489         * common.opt (Wlogical-op): Move from here...
26490         * c.opt (Wlogical-op): ... to here.
26491         * c-typeck.c (parser_build_binary_op): Update call to
26492         warn_logical_operator.
26493         * c-opts.c (c_common_post_options): Enable warn_logical_op with
26494         extra_warnings.
26495         * c-common.c (warn_logical_op): Update.
26496         * c-common.h (warn_logical_op): Update declaration.
26497
26498 2009-04-19  Eric Botcazou  <ebotcazou@adacore.com>
26499
26500         * tree.c (protected_set_expr_location): Fix formatting.
26501
26502 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
26503
26504         PR c/27676
26505         * c-typeck.c (readonly_warning): new.
26506         (build_unary_op, build_modify_expr): Use readonly_warning for
26507         storing into something readonly but not const-qualified.
26508
26509 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
26510
26511         PR c/22367
26512         * c-typeck.c (build_unary_op): Check for taking address of
26513         expression of type void.
26514
26515 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
26516
26517         PR c/35210
26518         * c-typeck.c (build_function_call): Check for calling a function
26519         with qualified void return types.  Call require_complete_type when
26520         generating a trap.
26521
26522 2009-04-18  Jan Hubicka  <jh@suse.cz>
26523
26524         * cgraph.c (cgraph_make_edge, dump_cgraph_node, cgraph_set_call_stmt):
26525         Set nothrow flag.
26526         * cgraph.h (struct function): Reduce loop_nest to 30 bits; add
26527         can_throw_external flag.
26528         * ipa-reference.c (ipa_utils_reduced_inorder): Update call.
26529         * ipa-pure-const.c (ignore_edge): New function.
26530         (propagate): Compute order for NOTHROW computation; set NOTHROWs
26531         only over can_throw_external edges.
26532         (local_pure_const): Add nothrow flag.
26533         * ipa-utils.c (searchc): Add ignore_edge callback.
26534         (ipa_utils_reduced_inorder): Add ignore_edge callback.
26535         * ipa-utils.h (ipa_utils_reduced_inorder): Update prototype.
26536         (set_nothrow_function_flags): Update cgraph.
26537         * tree-cfg.c (verify_stmt): Relax nothrow checking when in IPA mode.
26538
26539 2009-04-18  Richard Guenther  <rguenther@suse.de>
26540
26541         PR middle-end/39804
26542         * tree-ssa-ccp.c (fold_stmt_1): New function factored from ...
26543         (fold_stmt): ... this and ...
26544         (fold_stmt_inplace): ... this.
26545         (fold_stmt_1): Fold references in calls and asms.
26546         * tree-cfg.c (remove_useless_stmts_cond): Use fold_stmt.
26547
26548 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
26549
26550         * tree-vrp.c (ssa_name_nonzero_p): Remove.
26551         * tree.h: Remove the prototype for ssa_name_nonzero_p.
26552
26553 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
26554
26555         * tree.c (function_args_count): Remove.
26556         * tree.h: Remove the prototype for function_args_count.
26557
26558 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
26559
26560         * tree-iterator.c (expr_only): Remove.
26561         * tree.h: Remove the prototype for expr_only.
26562
26563 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
26564
26565         * reginfo.c (cannot_change_mode_set_regs): Remove.
26566         * rtl.h: Remove the prototype for cannot_change_mode_set_regs.
26567
26568 2009-04-08  Anatoly Sokolov  <aesok@post.ru>
26569
26570         * config/avr/avr.md (*rotlsi3_8, *rotlsi3_16, *rotlsi3_24 ): Check
26571         whether operands 0 and 1 overlaps.
26572
26573 2009-04-18  Manuel López-Ibáñez  <manu@gcc.gnu.org>
26574
26575         PR middle-end/36902
26576         * tree-vrp.c (check_array_ref): Pass a location_t instead of a
26577         pointer. Use warning_at instead of warning.
26578         (search_for_addr_array): Likewise.
26579         (check_array_bounds): Likewise.
26580         (check_all_array_refs): Check that the incoming edge is not in the
26581         list of edges to be removed.
26582         (check_all_array_refs): Avoid the temporal pointer.
26583         (vrp_visit_cond_stmt): Fix typo.
26584         (simplify_switch_using_ranges): Handle the case where the switch
26585         index is an integer constant.
26586
26587 2009-04-18  Adam Nemet  <anemet@caviumnetworks.com>
26588
26589         * config/mips/mips.c (mips_final_postscan_insn): Make it static.
26590
26591 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
26592
26593         * doc/extend.texi, doc/invoke.texi: Fix typos.
26594
26595 2009-04-17  Cary Coutant  <ccoutant@google.com>
26596
26597         * tree-flow-inline.h (get_lineno): Fix inverted test.
26598
26599 2009-04-17  Diego Novillo  <dnovillo@google.com>
26600
26601         * tree-ssa-pre.c (create_expression_by_pieces): Remove
26602         assertion for AVAIL_OUT.
26603
26604 2009-04-17  Mike Frysinger  <vapier@gentoo.org>
26605
26606         PR target/38627
26607         * config/sh/lib1funcs.asm [__ELF__ && __linux__]: Add .note.GNU-stack.
26608         * config/sh/linux-atomic.asm: Likewise.
26609
26610 2009-04-17  Diego Novillo  <dnovillo@google.com>
26611
26612         * except.c (debug_eh_tree): New.
26613         (struct eh_region, struct eh_status): Move ...
26614         * except.h: ... here.
26615         (add_type_for_runtime): Declare extern.
26616         (lookup_type_for_runtime): Likewise.
26617         (debug_eh_tree): Declare.
26618         * Makefile.in (GTFILES): List except.h before except.c
26619
26620 2009-04-17  Diego Novillo  <dnovillo@google.com>
26621
26622         * omp-low.c (create_omp_child_function): Set DECL_CONTEXT for DECL.
26623         * cgraphunit.c (cgraph_build_static_cdtor): Likewise.
26624         * tree-dfa.c (find_referenced_vars_in): Factor out of ...
26625         (find_vars_r): ... here.
26626         * tree-flow.h (find_referenced_vars_in): Declare.
26627         * tree-ssa-pre.c (create_expression_by_pieces): Assert
26628         that AVAIL_OUT exists for BLOCK.
26629         * Makefile.in (CGRAPH_H): Add dependency on cif-code.def
26630         (tree-loop-distribution.o): Fix dependency on TREE_VECTORIZER_H.
26631         (tree-parloops.o): Likewise.
26632
26633 2009-04-17  Simon Baldwin  <simonb@google.com>
26634
26635         * toplev.c (default_tree_printer): Add handling for %E format.
26636
26637 2009-04-17  Diego Novillo  <dnovillo@google.com>
26638
26639         * tree-pretty-print.c (dump_generic_node): Add break after
26640         TREE_BINFO handler.  Handle COMPLEX_TYPE, REAL_TYPE and
26641         FIXED_POINT_TYPE.  Handle NULL TREE_TYPEs.  Handle METHOD_TYPE and
26642         FUNCTION_TYPE together.  Call print_struct_decl when printing
26643         structures and TDF_SLIM is not given.
26644         (print_struct_decl): Fix logic for detecting recursion.
26645
26646 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
26647
26648         PR 31567
26649         * gcc.c (create_at_file): New.
26650         (compile_input_file_p): New.
26651         (do_spec_1): Use @args files for %i. Use create_at_file for %o.
26652         * main.c (main): Update call to toplev_main.
26653         * toplev.c (toplev_main): Change signature. Call expandargv.
26654         * toplev.h (toplev_main): Change signature.
26655
26656 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
26657
26658         * dwarf2out.c (field_byte_offset): Use the type size as the field size
26659         if the latter is not constant.
26660
26661 2009-04-17  David Edelsohn  <edelsohn@gnu.org>
26662
26663         * dbxout.c (xcoff_debug_hooks): Add set_name_debug_nothing.
26664
26665 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
26666
26667         * dbxout.c (dbxout_block): Reinstate test on TREE_USED.
26668         * tree-ssa-live.c (remove_unused_scope_block_p): Update TREE_USED bit.
26669
26670 2009-04-17  Richard Guenther  <rguenther@suse.de>
26671
26672         * tree-ssa-structalias.c (get_constraint_for_component_ref):
26673         Handle component references view-converting an invariant address.
26674
26675 2009-04-17  Adam Nemet  <anemet@caviumnetworks.com>
26676
26677         * doc/tm.texi (TARGET_DEFAULT_TARGET_FLAGS,
26678         TARGET_MIN_ANCHOR_OFFSET, TARGET_MAX_ANCHOR_OFFSET,
26679         TARGET_HAVE_SRODATA_SECTION, TARGET_HAVE_TLS,
26680         TARGET_UNWIND_TABLES_DEFAULT, TARGET_TERMINATE_DW2_EH_FRAME_INFO):
26681         Use @deftypevr rather than @deftypevar.
26682
26683 2009-04-17  Richard Guenther  <rguenther@suse.de>
26684
26685         * tree-ssa-forwprop.c (get_prop_dest_stmt): Clean up tuplification.
26686         (get_prop_source_stmt): Likewise.
26687         (can_propagate_from): Likewise.
26688
26689 2009-04-17  Andrew Stubbs  <ams@codesourcery.com>
26690
26691         * configure.ac: Add new AC_SUBST for TM_ENDIAN_CONFIG,
26692         TM_MULTILIB_CONFIG and TM_MULTILIB_EXCEPTIONS_CONFIG.
26693         (--with-multilib-list): Add default value.
26694         * configure: Regenerate.
26695         * Makefile.in (TM_ENDIAN_CONFIG): Define.
26696         (TM_MULTILIB_CONFIG, TM_MULTILIB_EXCEPTIONS_CONFIG): Define.
26697         * config.gcc (sh-*-*): Switch to using TM_ENDIAN_CONFIG,
26698         TM_MULTILIB_CONFIG, and TM_MULTILIB_EXCEPTIONS_CONFIG.
26699         Don't add default cpu to multilib list unnecessarily, but do enable
26700         the relevant compiler option..
26701         Add support for --with-multilib-list=<blank> and
26702         --with-multilib-list=!<somelib> to supress unwanted multilibs.
26703         * config/sh/t-sh (DEFAULT_ENDIAN, OTHER_ENDIAN): New variables.
26704         (MULTILIB_ENDIAN, MULTILIB_CPUS): Delete variables.
26705         (MULTILIB_OPTIONS): Redefine using OTHER_ENDIAN and
26706         TM_MULTILIB_CONFIG.
26707         (MULTILIB_EXCEPTIONS): Add TM_MULTILIB_EXCEPTIONS_CONFIG.
26708         (MULTILIB_OSDIRNAMES): New variable.
26709         * config/sh/t-1e: Delete file.
26710         * config/sh/t-mlib-sh1: Delete file.
26711         * config/sh/t-mlib-sh2: Delete file.
26712         * config/sh/t-mlib-sh2a: Delete file.
26713         * config/sh/t-mlib-sh2a-nofpu: Delete file.
26714         * config/sh/t-mlib-sh2a-single: Delete file.
26715         * config/sh/t-mlib-sh2a-single-only: Delete file.
26716         * config/sh/t-mlib-sh2e: Delete file.
26717         * config/sh/t-mlib-sh3e: Delete file.
26718         * config/sh/t-mlib-sh4: Delete file.
26719         * config/sh/t-mlib-sh4-nofpu: Delete file.
26720         * config/sh/t-mlib-sh4-single: Delete file.
26721         * config/sh/t-mlib-sh4-single-only: Delete file.
26722         * config/sh/t-mlib-sh4a: Delete file.
26723         * config/sh/t-mlib-sh4a-nofpu: Delete file.
26724         * config/sh/t-mlib-sh4a-single: Delete file.
26725         * config/sh/t-mlib-sh4a-single-only: Delete file.
26726         * config/sh/t-mlib-sh4al: Delete file.
26727         * config/sh/t-mlib-sh5-32media: Delete file.
26728         * config/sh/t-mlib-sh5-32media-nofpu: Delete file.
26729         * config/sh/t-mlib-sh5-64media: Delete file.
26730         * config/sh/t-mlib-sh5-64media-nofpu: Delete file.
26731         * config/sh/t-mlib-sh5-compact: Delete file.
26732         * config/sh/t-mlib-sh5-compact-nofpu: Delete file.
26733         * config/sh/t-linux: Don't override MULTILIB_EXCEPTIONS.
26734         * doc/install.texi (Options specification): Add
26735         --with-multilib-list and --with-endian.
26736
26737 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
26738
26739         * Makefile.in (REVISION_s): Always include quotes. Change ifdef to use
26740         REVISION_c.
26741         (OBJS-common): Add plugin-version.o.
26742         (plugin-version.o): New.
26743         * gcc-plugin.h (plugin_gcc_version): New.
26744         (plugin_default_version_check): New.
26745         (plugin_init_func, plugin_init): Add version argument.
26746         * plugin-version.c: New.
26747         * plugin.c (str_plugin_gcc_version_name): New.
26748         (try_init_one_plugin): Read plugin_gcc_version from the plugin and
26749         pass it to the init function.
26750         (plugin_default_version_check): New.
26751
26752 2009-04-17  Richard Guenther  <rguenther@suse.de>
26753
26754         * tree-ssa-alias.c (refs_may_alias_p_1): Do not use TBAA
26755         for decl-vs-decl disambiguation.
26756
26757 2009-04-17  Andreas Krebbel  <krebbel1@de.ibm.com>
26758
26759         * config/s390/s390.h (s390_tune_attr): New macro definition.
26760         * config/s390/s390.md (cpu attribute): Map to s390_tune_attr.
26761
26762 2009-04-17  Richard Guenther  <rguenther@suse.de>
26763
26764         * tree-ssa-ccp.c (struct fold_stmt_r_data): Remove.
26765         (fold_stmt_r): Likewise.
26766         (maybe_fold_reference): New function.
26767         (fold_gimple_assign): Handle cases fold_stmt_r did.
26768         (fold_stmt): Do not use fold_stmt_r.
26769         (fold_stmt_inplace): Likewise.
26770
26771 2009-04-17  Richard Guenther  <rguenther@suse.de>
26772
26773         * tree-ssa-dom.c (gimple_assign_unary_useless_conversion_p): Remove.
26774         (record_equivalences_from_stmt): Remove useless checks and
26775         simplifications.
26776         * tree-ssa-pre.c (eliminate): Avoid converting a constant if
26777         the type is already suitable.
26778
26779 2009-04-17  Paolo Bonzini  <bonzini@gnu.org>
26780
26781         * config/sh/sh.h (FUNCTION_VALUE): Fix call to sh_promote_prototypes.
26782
26783 2009-04-17  Uros Bizjak  <ubizjak@gmail.com>
26784
26785         * config/arm/sfp-machine.h (__gcc_CMPtype): New typedef.
26786         (CMPtype): Define as __gcc_CMPtype.
26787
26788 2009-04-17  Aurelien Jarno  <aurelien@aurel32.net>
26789
26790         * config.gcc: Add soft-fp/t-softfp and i386/t-linux to tmake_file
26791         for i[34567]86-*-kfreebsd*-gnu*, x86_64-*-kfreebsd*-gnu*.
26792
26793 2009-04-17  Richard Guenther  <rguenther@suse.de>
26794
26795         PR tree-optimization/39746
26796         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Remove
26797         special-casing for builtins and static variable use/def.
26798         (call_may_clobber_ref_p_1): Likewise.
26799
26800 2009-04-16  Ian Lance Taylor  <iant@google.com>
26801
26802         * df.h: Include "timevar.h".
26803         (struct df_problem): Change tv_id field to timevar_id_t.
26804         * tree-pass.h: Include "timevar.h".
26805         (struct opt_pass): Change tv_id field to timevar_id_t.
26806         * timevar.h (timevar_id_t): Define TV_NONE.
26807         * passes.c (execute_one_ipa_transform_pass): Check for tv_id !=
26808         TV_NONE rather than tv_id != 0.
26809         (execute_one_pass): Likewise.
26810         * Makefile.in (DF_H): Add $(TIMEVAR_H).
26811         (TREE_PASS_H): Define.  Change all instances of tree-pass.h in
26812         dependencies to $(TREE_PASS_H).
26813         * bt-load.c (pass_branch_target_load_optimize1): Set tv_id field
26814         to TV_NONE.
26815         (pass_branch_target_load_optimize2): Likewise.
26816         * cfglayout.c (pass_into_cfg_layout_mode): Likewise.
26817         (pass_outof_cfg_layout_mode): Likewise.
26818         * cgraphbuild.c (pass_remove_cgraph_callee_edges): Likewise.
26819         (pass_rebuild_cgraph_edges): Likewise.
26820         (pass_remove_cgraph_callee_edges): Likewise.
26821         * df-core.c (pass_df_initialize_opt): Likewise.
26822         (pass_df_initialize_no_opt): Likewise.
26823         (pass_df_finish): Likewise.
26824         * emit-rtl.c (pass_unshare_all_rtl): Likewise.
26825         * except.c (pass_set_nothrow_function_flags): Likewise.
26826         (pass_convert_to_eh_region_ranges): Likewise.
26827         * final.c (pass_compute_alignments): Likewise.
26828         * function.c (pass_instantiate_virtual_regs): Likewise.
26829         (pass_init_function): Likewise.
26830         (pass_leaf_regs): Likewise.
26831         (pass_match_asm_constraints): Likewise.
26832         * gimple-low.c (pass_lower_cf): Likewise.
26833         (pass_mark_used_blocks): Likewise.
26834         * init-regs.c (pass_initialize_regs): Likewise.
26835         * integrate.c (pass_initial_value_sets): Likewise.
26836         * ira.c (pass_ira): Likewise.
26837         * jump.c (pass_cleanup_barriers): Likewise.
26838         * omp-low.c (pass_expand_omp): Likewise.
26839         (pass_lower_omp): Likewise.
26840         * matrix-reorg.c (pass_ipa_matrix_reorg): Likewise.
26841         * recog.c (pass_split_all_insns): Likewise.
26842         (pass_split_after_reload): Likewise.
26843         (pass_split_before_regstack): Likewise.
26844         (pass_split_before_sched2): Likewise.
26845         (pass_split_for_shorten_branches): Likewise.
26846         * reginfo.c (pass_reginfo_init): Likewise.
26847         (pass_subregs_of_mode_init): Likewise.
26848         (pass_subregs_of_mode_finish): Likewise.
26849         * passes.c (pass_postreload): Likewise.
26850         * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
26851         * tree-cfg.c (pass_remove_useless_stmts): Likewise.
26852         (pass_warn_function_return): Likewise.
26853         (pass_warn_function_noreturn): Likewise.
26854         * tree-complex.c (pass_lower_complex): Likewise.
26855         (pass_lower_complex_O0): Likewise.
26856         * tree-if-conv.c (pass_if_conversion): Likewise.
26857         * tree-into-ssa.c (pass_build_ssa): Likewise.
26858         * tree-mudflap.c (pass_mudflap_1): Likewise.
26859         (pass_mudflap_2): Likewise.
26860         * tree-nomudflap.c (pass_mudflap_1): Likewise.
26861         (pass_mudflap_2): Likewise.
26862         * tree-nrv.c (pass_return_slot): Likewise.
26863         * tree-object-size.c (pass_object_sizes): Likewise.
26864         * tree-optimize.c (pass_all_optimizations): Likewise.
26865         (pass_early_local_passes): Likewise.
26866         (pass_all_early_optimizations): Likewise.
26867         (pass_cleanup_cfg): Likewise.
26868         (pass_cleanup_cfg_post_optimizing): Likewise.
26869         (pass_free_datastructures): Likewise.
26870         (pass_free_cfg_annotations): Likewise.
26871         (pass_fixup_cfg): Likewise.
26872         (pass_init_datastructures): Likewise.
26873         * tree-ssa.c (pass_early_warn_uninitialized): Likewise.
26874         (pass_late_warn_uninitialized): Likewise.
26875         (pass_update_address_taken): Likewise.
26876         * tree-ssa-ccp.c (pass_fold_builtins): Likewise.
26877         * tree-ssa-math-opts.c (pass_cse_reciprocals): Likewise.
26878         (pass_cse_sincos): Likewise.
26879         (pass_convert_to_rsqrt): Likewise.
26880         * tree-ssa-structalias.c (pass_build_alias): Likewise.
26881         * tree-stdarg.c (pass_stdarg): Likewise.
26882         * tree-tailcall.c (pass_tail_recursion): Likewise.
26883         (pass_tail_calls): Likewise.
26884         * tree-vect-generic.c (pass_lower_vector): Likewise.
26885         (pass_lower_vector_ssa): Likewise.
26886         * tree-vectorizer.c (pass_ipa_increase_alignment): Likewise.
26887
26888 2009-04-16  Joseph Myers  <joseph@codesourcery.com>
26889
26890         * config/mips/mips.c (mips_rtx_cost_data): Use SOFT_FP_COSTS in
26891         XLR entry.
26892         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC):
26893         Handle -march=xlr.
26894         * config/mips/xlr.md (ir_xlr_alu): Also accept insn types move,
26895         logical and signext.
26896
26897 2009-04-16  Kaz Kojima  <kkojima@gcc.gnu.org>
26898
26899         PR target/39767
26900         * config/sh/predicates.md (arith_operand): Check if the operand
26901         of TRUNCATE is a REG.
26902
26903 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
26904
26905         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
26906         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
26907
26908 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
26909
26910         * tree-iterator.c (tsi_split_statement_list_after,
26911         tsi_split_statement_list_before): Remove.
26912         * tree-iterator.h: Remove the prototypes for
26913         tsi_split_statement_list_after and tsi_split_statement_list_before.
26914
26915 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
26916
26917         * tree-ssa-propagate.c (stmt_makes_single_load): Remove.
26918         * tree-ssa-propagate.h: Remove the prototype for
26919         stmt_makes_single_load.
26920
26921 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
26922
26923         * emit-rtl.c (set_mem_attrs_from_reg): Remove.
26924         * rtl.h: Remove the prototype for set_mem_attrs_from_reg.
26925
26926 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
26927
26928         * tree-iterator.c (EXPR_LAST_BODY): Remove.
26929
26930 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
26931
26932         * except.c (eh_region_outer_p): Remove.
26933         * except.h: Remove the prototype for eh_region_outer_p.
26934
26935 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
26936
26937         * function.c (current_function_assembler_name): Remove.
26938         * function.h: Remove the prototype for
26939         current_function_assembler_name.
26940
26941 2009-04-16  Ian Lance Taylor  <iant@google.com>
26942
26943         * rtlanal.c (alloc_reg_note): New function, broken out of add_reg_note.
26944         (add_reg_note): Call alloc_reg_note.
26945         * rtl.h (alloc_reg_note): Declare.
26946         * combine.c (try_combine): Use alloc_reg_note.
26947         (recog_for_combine, move_deaths): Likewise.
26948         (distribute_notes): Use alloc_reg_note and add_reg_note.
26949         * haifa-sched.c (sched_create_recovery_edges): Use add_reg_note.
26950         * combine-stack-adj.c (adjust_frame_related_expr): Likewise.
26951         * reload1.c (eliminate_regs_1): Use alloc_reg_note.
26952
26953 2009-04-16  Vladimir Makarov  <vmakarov@redhat.com>
26954
26955         PR rtl-optimization/39762
26956         * ira-int.h (ira_register_move_cost, ira_may_move_in_cost,
26957         ira_may_move_out_cost): Add comments about way of their usage.
26958         (ira_get_register_move_cost, ira_get_may_move_cost): New functions.
26959
26960         * ira-conflicts.c (process_regs_for_copy): Use function
26961         ira_get_register_move_cost instead of global
26962         ira_register_move_cost.
26963
26964         * ira-color.c (update_copy_costs, calculate_allocno_spill_cost,
26965         color_pass, move_spill_restore, update_curr_costs): Ditto.
26966
26967         * ira-lives.c (process_single_reg_class_operands): Ditto.
26968
26969         * ira-emit.c (emit_move_list): Ditto.
26970
26971         * ira-costs.c (copy_cost): Don't call ira_init_register_move_cost.
26972         (record_reg_classes): Ditto.  Use functions
26973         ira_get_register_move_cost and ira_get_may_move_cost instead of
26974         global vars ira_register_move_cost, ira_may_move_out_cost and
26975         ira_may_move_in_cost.
26976         (record_address_regs): Don't call ira_init_register_move_cost.
26977         Use function ira_get_may_move_cost instead of global
26978         ira_may_move_in_cost.
26979         (process_bb_node_for_hard_reg_moves): Use function
26980         ira_get_register_move_cost instead of global ira_register_move_cost.
26981         (ira_costs): Don't call ira_init_register_move_cost.
26982
26983 2009-04-16  Richard Guenther  <rguenther@suse.de>
26984
26985         * tree-cfg.c (verify_gimple_assign_binary):
26986         Allow POINTER_PLUS_EXPR-like PLUS_EXPR for vectors.
26987         * ipa-struct-reorg.c (gen_size): Fold the built expressions.
26988         (create_general_new_stmt): Note that this function is broken.
26989
26990 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
26991
26992         * common.opt (fhelp): Add Var(help_flag).
26993         * gcc-plugin.h (plugin_info): Add help.
26994         * plugin.c (plugin_name_args): Add help.
26995         (register_plugin_info): Set plugin->help.
26996         (print_help_one_plugin): New.
26997         (print_plugins_help): New.
26998         * plugin.h (print_plugins_help): New.
26999         * toplev.c (toplev_main): Call print_plugins_help if needed.
27000
27001 2009-04-16  Richard Guenther  <rguenther@suse.de>
27002
27003         * gimple.c (gimple_copy): Do not clear addresses_taken bitmap.
27004         (gimple_ior_addresses_taken_1): New function.
27005         (gimple_ior_addresses_taken): Likewise.
27006         * gimple.h (struct gimple_statement_with_ops_base): Remove
27007         addresses_taken member.
27008         (gimple_ior_addresses_taken): Declare.
27009         (gimple_addresses_taken, gimple_addresses_taken_ptr,
27010         gimple_set_addresses_taken): Remove.
27011         * ipa-reference.c (mark_address): New function.
27012         (scan_stmt_for_static_refs): Use it for marking addresses taken.
27013         * tree-ssa-operands.c (add_to_addressable_set): Rename to ...
27014         (mark_address_taken): ... this.  Just set TREE_ADDRESSABLE.
27015         (gimple_add_to_addresses_taken): Remove.
27016         (get_tmr_operands): Call mark_address_taken.
27017         (get_asm_expr_operands): Likewise.
27018         (get_expr_operands): Likewise.
27019         (build_ssa_operands): Do not clear the addresses_taken bitmap.
27020         (free_stmt_operands): Do not free it.
27021         * tree-ssa.c (delete_tree_ssa): Likewise.
27022         (execute_update_addresses_taken): Use gimple_ior_addresses_taken.
27023
27024 2009-04-16  Richard Guenther  <rguenther@suse.de>
27025
27026         * gimple.h (walk_stmt_load_store_addr_ops): Declare.
27027         (walk_stmt_load_store_ops): Likewise.
27028         * gimple.c (get_base_loadstore): New function.
27029         (walk_stmt_load_store_addr_ops): Likewise.
27030         (walk_stmt_load_store_ops): Likewise.
27031         * ipa-pure-const.c (check_op): Simplify.
27032         (check_load, check_store): New functions.
27033         (check_stmt): Use walk_stmt_load_store_ops.
27034         * ipa-reference.c (mark_load): Adjust signature.
27035         (mark_store): Likewise.
27036         (scan_stmt_for_static_refs): Use walk_stmt_load_store_addr_ops.
27037
27038 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
27039
27040         * gcc-plugin.h (plugin_event): Add PLUGIN_INFO.
27041         (plugin_info): New.
27042         * opts.c (common_handle_option): Don't call print_version.
27043         * plugin.c (plugin_name_args): Add version.
27044         (register_plugin_info): New.
27045         (register_callback): Handle PLUGIN_INFO.
27046         (try_init_one_plugin): New.
27047         (init_one_plugin): Use try_init_one_plugin. Only free plugin_name_args
27048         if failed to init.
27049         (finalize_one_plugin): New.
27050         (finalize_plugins): New.
27051         (print_one_plugin): New.
27052         (print_plugins_versions): New.
27053         * plugin.h (print_plugins_versions): New.
27054         (finalize_plugins): New.
27055         * toplev.c (compile_file): Don't call initialize_plugins.
27056         (print_version): Call print_plugins_versions.
27057         (toplev_main): Call initialize_plugins. Print version if needed.
27058         Call finalize_plugins.
27059
27060 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
27061
27062         * common.opt (fversion): New.
27063         * gcc.c (print_version): New.
27064         (process_command): Don't print the version. Just set print_version.
27065         (main): Print version. Call subprocesses if print_version and
27066         verbose_flag are set.
27067         * opts.c (common_handle_option): Handle OPT_fversion.
27068
27069 2009-04-16  Richard Guenther  <rguenther@suse.de>
27070             Ira Rosen  <irar@il.ibm.com>
27071
27072         PR tree-optimization/39698
27073         * tree-vect-loop.c (get_initial_def_for_reduction): Use the
27074         type of the reduction variable.  Only generate the def if
27075         it is needed.
27076
27077         * omp-low.c (expand_omp_for_generic): When converting to a pointer
27078         make sure to first convert to an integer of the same precision.
27079         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer): Retain
27080         the type of the evolution correctly in computing the new
27081         induction variable base.
27082
27083 2009-04-16  Richard Guenther  <rguenther@suse.de>
27084
27085         PR middle-end/39625
27086         * tree-cfg.c (make_blocks): Split statements with to-be
27087         abnormal SSA names on the lhs.
27088
27089 2009-04-16  Paolo Bonzini  <bonzini@gnu.org>
27090
27091         * c-common.c (vector_targets_convertible_p, vector_types_convertible_p):
27092         Use TYPE_VECTOR_OPAQUE instead of targetm.vector_opaque_p.
27093         * c-typeck.c (really_start_incremental_init): Likewise.
27094         * target-def.h (TARGET_VECTOR_OPAQUE_P): Remove.
27095         (TARGET_INITIALIZER): Remove it.
27096         * target.h (struct target): Remove vector_opaque_p.
27097         * tree.c (build_opaque_vector_type): New.
27098         * tree.h (TYPE_VECTOR_OPAQUE): New.
27099         (build_opaque_vector_type): Declare.
27100         * doc/tm.texi (TARGET_VECTOR_OPAQUE_P): Remove.
27101         * config/rs6000/rs6000.c (build_opaque_vector_type,
27102         rs6000_is_vector_type, TARGET_VECTOR_OPAQUE_P): Remove.
27103         (rs6000_init_builtins): Use build_opaque_vector_type for
27104         opaque_V4SI_type_node.
27105
27106 2009-04-15  Catherine Moore  <clm@codesourcery.com>
27107
27108         * debug.h (set_name):  Declare.
27109         * dwarf2out.c (dwarf2out_set_name): Declare.
27110         (dwarf2_debug_hooks): Add set_name.
27111         (find_AT_string): New.
27112         (add_AT_string): Call find_AT_string.
27113         (dwarf2out_set_name): New.
27114         * cp/decl.c (grokdeclarator): Call set_name.
27115         * vmsdbgout.c (vmsdbg_debug_hooks): Add set_name_debug_nothing.
27116         * debug.c (do_nothing_debug_hooks):  Likewise.
27117         * dbxout.c (dbx_debug_hooks): Likewise.
27118         * sdbout.c (sdb_debug_hooks): Likewise.
27119
27120 2009-04-15  Michael Eager  <eager@eagercon.com>
27121
27122         * config/rs6000/rs6000.c (rs6000_function_value): Set function return
27123         reg for single-precision FPU.
27124         * config/rs6000/rs6000.md (movsi_internal1): Only for
27125         !TARGET_SINGLE_FPU.
27126         (movsi_internal1_single): New. Add pattern to move SI values to/from
27127         single-precision FP regs.
27128
27129 2009-04-15  Richard Guenther  <rguenther@suse.de>
27130
27131         * omp-low.c (lower_rec_input_clauses): Build correct address
27132         expressions.
27133         (expand_omp_for_generic): Fix multiplication type.
27134         * tree-loop-distribution.c (build_size_arg): Build a size_t argument.
27135         (generate_memset_zero): Fix types.
27136         * tree-profile.c (prepare_instrumented_value): Correctly
27137         widen a pointer.
27138
27139 2009-04-15  Ian Lance Taylor  <iant@google.com>
27140
27141         * c.opt (Wenum-compare): Enable for C and Objc.  Initialize to -1.
27142         * c-opts.c (c_common_handle_option): For C, set warn_enum_compare
27143         for -Wall and for -Wc++-compat.
27144         (c_common_post_options): For C++, set warn_enum_compare if not
27145         already set.
27146         * c-tree.h (struct c_expr): Add field original_type.
27147         (build_external_ref): Update declaration.
27148         * c-parser.c (c_parser_braced_init): Set original_type.
27149         (c_parser_initelt): Likewise.
27150         (c_parser_expr_no_commas): Likewise.
27151         (c_parser_conditional_expression): Likewise.
27152         (c_parser_cast_expression): Likewise.
27153         (c_parser_unary_expression): Likewise.  Pull setting of
27154         original_code to top of function.
27155         (c_parser_sizeof_expression): Set original_type.
27156         (c_parser_alignof_expression): Likewise.
27157         (c_parser_postfix_expression): Likewise.  Pull setting of
27158         original_code to top of function.
27159         (c_parser_postfix_expression_after_paren_type): Set original_type.
27160         (c_parser_postfix_expression_after_primary): Likewise.
27161         (c_parser_expression): Likewise.
27162         * c-typeck.c (build_external_ref): Add type parameter.  Change all
27163         callers.
27164         (c_expr_sizeof_expr): Set original_type field.
27165         (parser_build_unary_op): Likewise.
27166         (parser_build_binary_op): Likewise.  Optionally warn about
27167         comparisons of enums of different types.
27168         (digest_init): Set original_type field.
27169         (really_start_incremental_init): Likewise.
27170         (push_init_level, pop_init_level): Likewise.
27171         * doc/invoke.texi (Warning Options): -Wenum-compare now
27172         supported in C.
27173
27174 2009-04-15  Richard Guenther  <rguenther@suse.de>
27175
27176         * tree-ssa-pre.c (eliminate): When replacing a PHI node carry
27177         out a necessary conversion.
27178         * tree-ssa-sccvn.c (run_scc_vn): Also assign value-ids to
27179         names we didn't value number.
27180         * tree-mudflap.c (mf_build_check_statement_for): Use correct types.
27181
27182 2009-04-15  Richard Guenther  <rguenther@suse.de>
27183
27184         PR tree-optimization/39764
27185         * tree-ssa-ccp.c (get_value): Canonicalize value with
27186         canonicalize_float_value.
27187
27188 2009-04-15  Jan Hubicka  <jh@suse.cz>
27189
27190         * builtins.def (va_start, va_end, va_copy): Fix my previous commit.
27191         Wrong version of patch.
27192
27193 2009-04-15  Jan Hubicka  <jh@suse.cz>
27194
27195         * builtins.def (va_start, va_end, va_copy): Mark nothrow.
27196
27197 2009-04-15  Nathan Sidwell  <nathan@codesourcery.com>
27198
27199         * config/rs6000/rs6000.c (rs6000_init_builtins): Set TYPE_NAME of
27200         our distinct integral and vector types.
27201
27202 2009-04-15  Rafael Avila de Espindola  <espindola@google.com>
27203
27204         * class.c (build_vtbl_ref_1): Remove call to assemble_external.
27205         * init.c (build_vtbl_address): Remove call to assemble_external.
27206
27207 2009-04-14  Daniel Jacobowitz  <dan@codesourcery.com>
27208
27209         * config/rs6000/rs6000.c (rs6000_dwarf_register_span): Fix debug
27210         output for other floating point modes.
27211
27212 2009-04-14  Diego Novillo  <dnovillo@google.com>
27213
27214         * diagnostic.c (diagnostic_report_diagnostic): Do not
27215         warn about loaded plugins for DK_ERROR and DK_WARNING.
27216         * c-decl.c (declspecs_add_type): Move call to
27217         invoke_plugin_callbacks ...
27218         * c-parser.c (c_parser_declspecs): ... here.
27219         * plugin.c (dump_active_plugins): Tidy output.
27220
27221 2009-04-14  Diego Novillo  <dnovillo@google.com>
27222             Le-Chun Wu  <lcwu@google.com>
27223
27224         * configure.ac: Add --enable-plugin support.
27225         Define ENABLE_PLUGIN and PLUGINLIBS when specified.
27226         * Makefile.in (PLUGIN_H): Define.
27227         Export ENABLE_PLUGIN and GMPINC to site.exp.
27228         Add PLUGINLIBS to link command.
27229         Add/modify dependencies for plugin.o and files including plugin.h.
27230         (plugin.o): New.
27231         * config.in: Regenerate.
27232
27233         * opts.c (common_handle_option): Handle OPT_fplugin_ and
27234         OPT_fplugin_arg_.
27235
27236 2009-04-14  Le-Chun Wu  <lcwu@google.com>
27237
27238         * tree-pass.h (register_one_dump_file): Add a prototype for
27239         register_one_dump_file.
27240         * toplev.c (compile_file): Call initialize_plugins.
27241         (do_compile): Call invoke_plugin_callbacks.
27242         (toplev_main): Call invoke_plugin_callbacks.
27243         * common.opt: Add -fplugin= and -fplugin-arg-.
27244         * gcc-plugin.h: New public header file for plugins to include.
27245         * plugin.c: New source file.
27246         * plugin.h: New internal header file.
27247         * passes.c (register_one_dump_file): Make it external.
27248
27249         * c-parser.c (c_parser_declspecs): Call invoke_plugin_callbacks.
27250
27251 2009-04-14  Diego Novillo  <dnovillo@google.com>
27252
27253         * doc/plugins.texi: New.
27254         * doc/gccint.texi: Add reference to Plugins chapter.
27255         * doc/invoke.texi: Document -fplugin and -fplugin-arg
27256         * diagnostic.c (diagnostic_report_diagnostic): Warn about
27257         loaded plugins, if any.
27258         * timevar.def (TV_PLUGIN_INIT): Define.
27259         (TV_PLUGIN_RUN): Define.
27260         * plugin.c: Include timevar.h
27261         (plugins_active_p): New.
27262         (dump_active_plugins): New.
27263         (debug_active_plugins): New.
27264
27265 2009-04-14  Joseph Myers  <joseph@codesourcery.com>
27266
27267         * config/sol2.h (LINK_ARCH32_SPEC_BASE): Use %R with absolute
27268         library paths.
27269         * config/sparc/sol2-bi.h (LINK_ARCH64_SPEC_BASE): Likewise.
27270
27271 2009-04-14  Kazu Hirata  <kazu@codesourcery.com>
27272
27273         * config/arm/arm.c (arm_rtx_costs_1): Treat a minus with a shift
27274         the same as a minus without a shift.
27275
27276 2009-04-14  Nick Clifton  <nickc@redhat.com>
27277
27278         * config/stormy16/stormy16.md (ineqbranch_1): Do not assume that
27279         comparisons with small integers will always produce a short
27280         branch.
27281
27282 2009-04-14  Rafael Avila de Espindola  <espindola@google.com>
27283
27284         Merge:
27285         2008-12-19  Diego Novillo  <dnovillo@google.com>
27286
27287         * cgraph.c (dump_cgraph_node): Show memory address of NODE.
27288
27289 2009-04-14  Richard Guenther  <rguenther@suse.de>
27290
27291         * tree-cfg.c (verify_gimple_assign_unary): Adjust vector code
27292         verification.
27293         (verify_gimple_assign_binary): Likewise.  Handle shifts and
27294         rotates correctly.
27295         (verify_gimple_phi): Print the mismatched argument position.
27296         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer):
27297         Fix types.
27298         (vect_update_init_of_dr): Likewise.
27299         * matrix-reorg.c (transform_access_sites): Do what the
27300         comment suggests.
27301         * omp-low.c (expand_omp_atomic_pipeline): Use the correct types.
27302
27303 2009-04-13  Michael Eager  <eager@eagercon.com>
27304
27305         * config/rs6000/rs6000-c.c: generate defines if rs6000_xilinx_fpu:
27306         _XFPU, _XFPU_SP_LITE, _XFPU_SP_FULL, _XFPU_DP_LITE, _XFPU_DP_FULL
27307         * config/rs6000/xilinx.h: New.  Spec for powerpc-xilinx-eabi
27308         * config.gcc (powerpc-xilinx-eabi): add xilinx.h to tm_file,
27309         remove duplicate config
27310
27311 2009-04-13  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
27312
27313         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Dump
27314         file_name:line_number type locator of the call site.
27315
27316 2009-04-13  Vladimir Makarov  <vmakarov@redhat.com>
27317
27318         * genautomata.c: Put blank after comma.
27319         (automaton_decls): New.
27320         (struct unit_usage): Add comments to member next.
27321         (store_alt_unit_usage): Keep the list ordered.
27322         (unit_present_on_list_p, equal_alternatives_p): New.
27323         (check_regexp_units_distribution): Check units distribution
27324         correctness correctly.
27325         (main): Don't write automata if error is found.  Return correct
27326         exit code.
27327
27328         * config/m68k/cf.md (cfv4_ds): Remove.
27329         (cfv4_pOEP1, cfv4_sOEP1, cfv4_pOEP2,cfv4_sOEP2, cfv4_pOEP3,
27330         cfv4_sOEP3): Assign to cfv4_oep instead of cfv4_ds.
27331
27332         * config/rs6000/power4.md (lsuq_power4, iq_power4, fpq_power4,
27333         power4-load-ext, power4-store, power4-store-update,
27334         power4-fpstore, power4-fpstore-update, power4-two, power4-three,
27335         power4-insert, power4-compare, power4-lmul-cmp, power4-imul-cmp,
27336         power4-lmul, , power4-imul, power4-imul3, power4-sdiv,
27337         power4-sqrt, power4-isync): Modify reservation to make correct
27338         unit distribution to automata.
27339
27340         * config/rs6000/power5.md (iq_power5, fpq_power5, power5-store,
27341         power5-store-update, power5-two, power5-three, power5-lmul,
27342         power5-imul, power5-imul3, power5-sdiv, power5-sqrt): Ditto.
27343
27344 2009-04-13  Adam Nemet  <anemet@caviumnetworks.com>
27345
27346         * except.c (pass_set_nothrow_function_flags): Set name and add
27347         TODO_dump_func.
27348         (set_nothrow_function_flags): Mention in the dump file when
27349         changing a function to nothrow.
27350
27351 2009-04-13  Ozkan Sezer  <sezeroz@gmail.com>
27352
27353         PR/39066
27354         * gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Use __SIZE_TYPE__
27355         instead of unsigned long.
27356
27357 2009-04-13  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
27358
27359         * config/arm/arm.c (return_used_this_function): Remove.
27360         (arm_output_function_prologue): Remove use of
27361         return_used_this_function.
27362         (output_return_instruction): Replace use of
27363         return_used_this_function
27364         by cfun->machine->return_used_this_function.
27365         (arm_output_epilogue): Likewise.
27366         (arm_output_function_epilogue): Likewise.
27367         (thumb_unexpanded_epilogue): Likewise.
27368         * config/arm/arm.h (struct machine_function):
27369         New member return_used_this_function.
27370
27371 2009-04-12  Mark Mitchell  <mark@codesourcery.com>
27372
27373         * doc/install.texi: Correct description of default directory for
27374         --with-gxx-include-dir.
27375
27376 2009-04-12  Eric Botcazou  <ebotcazou@adacore.com>
27377
27378         * fold-const.c (build_range_check): Properly deal with enumeral and
27379         boolean base types.
27380
27381 2009-04-12  Steven Bosscher  <steven@gcc.gnu.org>
27382
27383         * doc/invoke.texi (max_gcse_passes): Remove documentation.
27384         * params.def (PARAM_MAX_GCSE_PASSES): Remove.
27385         * params.h (MAX_GCSE_PASSES): Remove.
27386         * gcse.c (gcse_main): Run CPROP1, PRE or HOIST, and CPROP2
27387         in sequence.  Remove ability to run multiple passes.
27388         (bypass_jumps): Report run as third CPROP pass.
27389
27390 2009-04-12  Adam Nemet  <anemet@caviumnetworks.com>
27391
27392         PR middle-end/39651
27393         * except.c (can_throw_external): Look at each insn in a SEQUENCE
27394         when deciding whether the whole SEQUENCE can throw.
27395
27396 2009-04-12  Uros Bizjak  <ubizjak@gmail.com>
27397
27398         PR target/39740
27399         * config/alpha/predicates.md (local_symbolic_operand): Return 1 for
27400         offseted label references.
27401
27402 2009-04-11  Jan Hubicka  <jh@suse.cz>
27403
27404         * tree-ssa-pre.c (eliminate): Fix call of update_stmt.
27405
27406 2009-04-11  Richard Guenther  <rguenther@suse.de>
27407
27408         PR middle-end/39732
27409         * tree-inline.c (declare_return_variable): Mark DECL_BY_REFERENCE
27410         return variables as TREE_ADDRESSABLE.
27411
27412 2009-04-11  Richard Guenther  <rguenther@suse.de>
27413
27414         PR tree-optimization/39713
27415         * tree-ssa-sccvn.c (vn_get_expr_for): Make sure built
27416         reference trees have SSA_NAME operands.
27417
27418 2009-04-11  Richard Guenther  <rguenther@suse.de>
27419
27420         PR c/39712
27421         * c-gimplify.c (c_gimplify_expr): Adjust check for mismatched
27422         address expressions.
27423
27424 2009-04-11  Dave Korn  <dave.korn.cygwin@gmail.com>
27425
27426         * config/i386/cygwin-stdint.h (INT_LEAST32_TYPE):  Update to
27427         match changes in Cygwin 1.7
27428         (UINT_LEAST32_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE,
27429         UINT_FAST16_TYPE, UINT_FAST32_TYPE):  Likewise.
27430
27431 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
27432
27433         PR tree-optimization/39701
27434         * doc/invoke.texi (Optimization Options): Document change in
27435         meaning and initialization of -fdelete-null-pointer-checks.
27436
27437 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
27438
27439         PR middle-end/39701
27440         * common.opt (-fdelete-null-pointer-checks): Initialize to 1.
27441
27442         * opts.c (decode_options): Don't set flag_delete_null_pointer_checks
27443         here.
27444
27445         * doc/invoke.texi: Update -fdelete-null-pointer-checks.
27446
27447 2009-04-10  Chao-ying Fu  <fu@mips.com>
27448
27449         * doc/tm.texi (Instruction Output): Document
27450         TARGET_ASM_FINAL_POSTSCAN_INSN.
27451         * target.h (final_postscan_insn): New field in asm_out.
27452         * target-def.h (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
27453         (TARGET_ASM_OUT): Add TARGET_ASM_FINAL_POSTSCAN_INSN.
27454         * final.c (final_scan_insn): Call
27455         targetm.asm_out.final_postscan_insn after outputting
27456         an asm macro and a normal instruction.
27457
27458         * config/mips/mips.h (FINAL_PRESCAN_INSN): New define.
27459         * config/mips/mips-protos.h (mips_final_prescan_insn): Declare.
27460         * config/mips/mips.c (mips_at_reg_p): New for_each_rtx callback.
27461         (mips_final_prescan_insn, mips_final_postscan_insn): New functions.
27462         (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
27463
27464 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
27465
27466         PR middle-end/39701
27467         * fold-const.c (tree_single_nonzero_warnv_p): Pass non-static
27468         variables as non-NULL even with -fdelete-null-pointer-checks.
27469
27470 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
27471
27472         * config/rs6000/darwin-vecsave.asm: Remove extra "*/".
27473
27474 2009-04-09  H.J. Lu  <hongjiu.lu@intel.com>
27475
27476         PR target/39678
27477         * config/i386/i386.c (classify_argument): Handle SCmode with
27478         (bit_offset % 64) != 0.
27479
27480 2009-04-09  Sandra Loosemore  <sandra@codesourcery.com>
27481
27482         * doc/invoke.texi (Optimize Options): Add cross-reference to
27483         -Q --help=optimizers examples.
27484
27485 2009-04-10  Ben Elliston  <bje@au.ibm.com>
27486
27487         PR target/36800
27488         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Do not set
27489         regalign for the reg == fpr and TDmode case.
27490
27491 2009-04-09  David Ayers  <ayers@fsfe.org>
27492
27493         PR objc/29200
27494         * objc/objc-act.c (warn_with_method): Remove helper function.
27495         (check_duplicates): Call warning and inform directly.
27496         (really_start_method): Likewise.
27497
27498 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
27499
27500         * expmed.c (expand_divmod): Always use a comparison for a division
27501         by a large unsigned integer.
27502
27503         * fold-const.c (tree_single_nonzero_warnv_p): Always treat decls
27504         for things others than variables or functions as nonzero.
27505
27506 2009-04-09  Nick Clifton  <nickc@redhat.com>
27507
27508         * unwind-compat.c: Change copyright header to refer to version
27509         3 of the GNU General Public License with version 3.1 of the
27510         GCC Runtime Library Exception and to point readers at the
27511         COPYING3 and COPYING3.RUNTIME files and the FSF's license web page.
27512         * config/alpha/crtfastmath.c: Likewise.
27513         * config/alpha/linux-unwind.h: Likewise.
27514         * config/alpha/qrnnd.asm: Likewise.
27515         * config/alpha/vms-crt0-64.c: Likewise.
27516         * config/alpha/vms-crt0.c: Likewise.
27517         * config/alpha/vms-dwarf2.asm: Likewise.
27518         * config/alpha/vms-dwarf2eh.asm: Likewise.
27519         * config/alpha/vms-psxcrt0-64.c: Likewise.
27520         * config/alpha/vms-psxcrt0.c: Likewise.
27521         * config/alpha/vms_tramp.asm: Likewise.
27522         * config/arc/initfini.c: Likewise.
27523         * config/arc/lib1funcs.asm: Likewise.
27524         * config/arm/bpabi-v6m.S: Likewise.
27525         * config/arm/bpabi.S: Likewise.
27526         * config/arm/bpabi.c: Likewise.
27527         * config/arm/crti.asm: Likewise.
27528         * config/arm/crtn.asm: Likewise.
27529         * config/arm/ieee754-df.S: Likewise.
27530         * config/arm/ieee754-sf.S: Likewise.
27531         * config/arm/lib1funcs.asm: Likewise.
27532         * config/arm/libunwind.S: Likewise.
27533         * config/arm/linux-atomic.c: Likewise.
27534         * config/arm/mmintrin.h: Likewise.
27535         * config/arm/pr-support.c: Likewise.
27536         * config/arm/unaligned-funcs.c: Likewise.
27537         * config/arm/unwind-arm.c: Likewise.
27538         * config/arm/unwind-arm.h: Likewise.
27539         * config/avr/libgcc.S: Likewise.
27540         * config/bfin/crti.s: Likewise.
27541         * config/bfin/crtlibid.s: Likewise.
27542         * config/bfin/crtn.s: Likewise.
27543         * config/bfin/lib1funcs.asm: Likewise.
27544         * config/bfin/linux-unwind.h: Likewise.
27545         * config/cris/arit.c: Likewise.
27546         * config/cris/cris_abi_symbol.c: Likewise.
27547         * config/darwin-64.c: Likewise.
27548         * config/darwin-crt2.c: Likewise.
27549         * config/darwin-crt3.c: Likewise.
27550         * config/darwin.h: Likewise.
27551         * config/dbxelf.h: Likewise.
27552         * config/dfp-bit.c: Likewise.
27553         * config/dfp-bit.h: Likewise.
27554         * config/elfos.h: Likewise.
27555         * config/fixed-bit.c: Likewise.
27556         * config/fixed-bit.h: Likewise.
27557         * config/fp-bit.c: Likewise.
27558         * config/fp-bit.h: Likewise.
27559         * config/fr30/crti.asm: Likewise.
27560         * config/fr30/crtn.asm: Likewise.
27561         * config/fr30/lib1funcs.asm: Likewise.
27562         * config/freebsd-spec.h: Likewise.
27563         * config/frv/cmovd.c: Likewise.
27564         * config/frv/cmovh.c: Likewise.
27565         * config/frv/cmovw.c: Likewise.
27566         * config/frv/frvbegin.c: Likewise.
27567         * config/frv/frvend.c: Likewise.
27568         * config/frv/lib1funcs.asm: Likewise.
27569         * config/glibc-stdint.h: Likewise.
27570         * config/h8300/clzhi2.c: Likewise.
27571         * config/h8300/crti.asm: Likewise.
27572         * config/h8300/crtn.asm: Likewise.
27573         * config/h8300/ctzhi2.c: Likewise.
27574         * config/h8300/fixunssfsi.c: Likewise.
27575         * config/h8300/lib1funcs.asm: Likewise.
27576         * config/h8300/parityhi2.c: Likewise.
27577         * config/h8300/popcounthi2.c: Likewise.
27578         * config/i386/ammintrin.h: Likewise.
27579         * config/i386/att.h: Likewise.
27580         * config/i386/avxintrin.h: Likewise.
27581         * config/i386/biarch64.h: Likewise.
27582         * config/i386/bmmintrin.h: Likewise.
27583         * config/i386/cpuid.h: Likewise.
27584         * config/i386/cross-stdarg.h: Likewise.
27585         * config/i386/crtfastmath.c: Likewise.
27586         * config/i386/crtprec.c: Likewise.
27587         * config/i386/cygming-crtbegin.c: Likewise.
27588         * config/i386/cygming-crtend.c: Likewise.
27589         * config/i386/cygwin.asm: Likewise.
27590         * config/i386/emmintrin.h: Likewise.
27591         * config/i386/gmm_malloc.h: Likewise.
27592         * config/i386/gthr-win32.c: Likewise.
27593         * config/i386/i386.h: Likewise.
27594         * config/i386/immintrin.h: Likewise.
27595         * config/i386/linux-unwind.h: Likewise.
27596         * config/i386/linux64.h: Likewise.
27597         * config/i386/mm3dnow.h: Likewise.
27598         * config/i386/mmintrin-common.h: Likewise.
27599         * config/i386/mmintrin.h: Likewise.
27600         * config/i386/nmmintrin.h: Likewise.
27601         * config/i386/pmm_malloc.h: Likewise.
27602         * config/i386/pmmintrin.h: Likewise.
27603         * config/i386/smmintrin.h: Likewise.
27604         * config/i386/sol2-c1.asm: Likewise.
27605         * config/i386/sol2-ci.asm: Likewise.
27606         * config/i386/sol2-cn.asm: Likewise.
27607         * config/i386/sol2-gc1.asm: Likewise.
27608         * config/i386/tmmintrin.h: Likewise.
27609         * config/i386/unix.h: Likewise.
27610         * config/i386/w32-unwind.h: Likewise.
27611         * config/i386/wmmintrin.h: Likewise.
27612         * config/i386/x86-64.h: Likewise.
27613         * config/i386/x86intrin.h: Likewise.
27614         * config/i386/xmmintrin.h: Likewise.
27615         * config/ia64/crtbegin.asm: Likewise.
27616         * config/ia64/crtend.asm: Likewise.
27617         * config/ia64/crtfastmath.c: Likewise.
27618         * config/ia64/crti.asm: Likewise.
27619         * config/ia64/crtn.asm: Likewise.
27620         * config/ia64/fde-glibc.c: Likewise.
27621         * config/ia64/lib1funcs.asm: Likewise.
27622         * config/ia64/linux-unwind.h: Likewise.
27623         * config/ia64/quadlib.c: Likewise.
27624         * config/ia64/unwind-ia64.c: Likewise.
27625         * config/linux.h: Likewise.
27626         * config/m32c/m32c-lib1.S: Likewise.
27627         * config/m32c/m32c-lib2-trapv.c: Likewise.
27628         * config/m32c/m32c-lib2.c: Likewise.
27629         * config/m32r/initfini.c: Likewise.
27630         * config/m68hc11/larith.asm: Likewise.
27631         * config/m68hc11/m68hc11-crt0.S: Likewise.
27632         * config/m68k/cf.md: Likewise.
27633         * config/m68k/crti.s: Likewise.
27634         * config/m68k/crtn.s: Likewise.
27635         * config/m68k/lb1sf68.asm: Likewise.
27636         * config/m68k/linux-unwind.h: Likewise.
27637         * config/mcore/crti.asm: Likewise.
27638         * config/mcore/crtn.asm: Likewise.
27639         * config/mcore/lib1.asm: Likewise.
27640         * config/mips/linux-unwind.h: Likewise.
27641         * config/mips/loongson.h: Likewise.
27642         * config/mips/mips16.S: Likewise.
27643         * config/mmix/crti.asm: Likewise.
27644         * config/mmix/crtn.asm: Likewise.
27645         * config/pa/fptr.c: Likewise.
27646         * config/pa/hpux-unwind.h: Likewise.
27647         * config/pa/lib2funcs.asm: Likewise.
27648         * config/pa/linux-atomic.c: Likewise.
27649         * config/pa/linux-unwind.h: Likewise.
27650         * config/pa/milli64.S: Likewise.
27651         * config/pa/quadlib.c: Likewise.
27652         * config/pa/stublib.c: Likewise.
27653         * config/picochip/libgccExtras/adddi3.asm: Likewise.
27654         * config/picochip/libgccExtras/ashlsi3.asm: Likewise.
27655         * config/picochip/libgccExtras/ashlsi3.c: Likewise.
27656         * config/picochip/libgccExtras/ashrsi3.asm: Likewise.
27657         * config/picochip/libgccExtras/ashrsi3.c: Likewise.
27658         * config/picochip/libgccExtras/cmpsi2.asm: Likewise.
27659         * config/picochip/libgccExtras/divmod15.asm: Likewise.
27660         * config/picochip/libgccExtras/divmodhi4.asm: Likewise.
27661         * config/picochip/libgccExtras/divmodsi4.asm: Likewise.
27662         * config/picochip/libgccExtras/longjmp.asm: Likewise.
27663         * config/picochip/libgccExtras/lshrsi3.asm: Likewise.
27664         * config/picochip/libgccExtras/lshrsi3.c: Likewise.
27665         * config/picochip/libgccExtras/parityhi2.asm: Likewise.
27666         * config/picochip/libgccExtras/popcounthi2.asm: Likewise.
27667         * config/picochip/libgccExtras/setjmp.asm: Likewise.
27668         * config/picochip/libgccExtras/subdi3.asm: Likewise.
27669         * config/picochip/libgccExtras/ucmpsi2.asm: Likewise.
27670         * config/picochip/libgccExtras/udivmodhi4.asm: Likewise.
27671         * config/picochip/libgccExtras/udivmodsi4.asm: Likewise.
27672         * config/rs6000/750cl.h: Likewise.
27673         * config/rs6000/altivec.h: Likewise.
27674         * config/rs6000/biarch64.h: Likewise.
27675         * config/rs6000/crtresfpr.asm: Likewise.
27676         * config/rs6000/crtresgpr.asm: Likewise.
27677         * config/rs6000/crtresxfpr.asm: Likewise.
27678         * config/rs6000/crtresxgpr.asm: Likewise.
27679         * config/rs6000/crtsavfpr.asm: Likewise.
27680         * config/rs6000/crtsavgpr.asm: Likewise.
27681         * config/rs6000/darwin-asm.h: Likewise.
27682         * config/rs6000/darwin-fallback.c: Likewise.
27683         * config/rs6000/darwin-fpsave.asm: Likewise.
27684         * config/rs6000/darwin-ldouble.c: Likewise.
27685         * config/rs6000/darwin-tramp.asm: Likewise.
27686         * config/rs6000/darwin-unwind.h: Likewise.
27687         * config/rs6000/darwin-vecsave.asm: Likewise.
27688         * config/rs6000/darwin-world.asm: Likewise.
27689         * config/rs6000/e500crtres32gpr.asm: Likewise.
27690         * config/rs6000/e500crtres64gpr.asm: Likewise.
27691         * config/rs6000/e500crtres64gprctr.asm: Likewise.
27692         * config/rs6000/e500crtrest32gpr.asm: Likewise.
27693         * config/rs6000/e500crtrest64gpr.asm: Likewise.
27694         * config/rs6000/e500crtresx32gpr.asm: Likewise.
27695         * config/rs6000/e500crtresx64gpr.asm: Likewise.
27696         * config/rs6000/e500crtsav32gpr.asm: Likewise.
27697         * config/rs6000/e500crtsav64gpr.asm: Likewise.
27698         * config/rs6000/e500crtsav64gprctr.asm: Likewise.
27699         * config/rs6000/e500crtsavg32gpr.asm: Likewise.
27700         * config/rs6000/e500crtsavg64gpr.asm: Likewise.
27701         * config/rs6000/e500crtsavg64gprctr.asm: Likewise.
27702         * config/rs6000/eabi-ci.asm: Likewise.
27703         * config/rs6000/eabi-cn.asm: Likewise.
27704         * config/rs6000/eabi.asm: Likewise.
27705         * config/rs6000/linux-unwind.h: Likewise.
27706         * config/rs6000/linux64.h: Likewise.
27707         * config/rs6000/paired.h: Likewise.
27708         * config/rs6000/paired.md: Likewise.
27709         * config/rs6000/ppc64-fp.c: Likewise.
27710         * config/rs6000/ppu_intrinsics.h: Likewise.
27711         * config/rs6000/rs6000.h: Likewise.
27712         * config/rs6000/si2vmx.h: Likewise.
27713         * config/rs6000/sol-ci.asm: Likewise.
27714         * config/rs6000/sol-cn.asm: Likewise.
27715         * config/rs6000/spe.h: Likewise.
27716         * config/rs6000/spu2vmx.h: Likewise.
27717         * config/rs6000/sysv4.h: Likewise.
27718         * config/rs6000/tramp.asm: Likewise.
27719         * config/rs6000/vec_types.h: Likewise.
27720         * config/s390/linux-unwind.h: Likewise.
27721         * config/s390/tpf-unwind.h: Likewise.
27722         * config/score/crti.asm: Likewise.
27723         * config/score/crtn.asm: Likewise.
27724         * config/sh/crt1.asm: Likewise.
27725         * config/sh/crti.asm: Likewise.
27726         * config/sh/crtn.asm: Likewise.
27727         * config/sh/divtab-sh4-300.c: Likewise.
27728         * config/sh/divtab-sh4.c: Likewise.
27729         * config/sh/divtab.c: Likewise.
27730         * config/sh/lib1funcs-4-300.asm: Likewise.
27731         * config/sh/lib1funcs-Os-4-200.asm: Likewise.
27732         * config/sh/lib1funcs.asm: Likewise.
27733         * config/sh/lib1funcs.h: Likewise.
27734         * config/sh/linux-atomic.asm: Likewise.
27735         * config/sh/linux-unwind.h: Likewise.
27736         * config/sh/shmedia.h: Likewise.
27737         * config/sh/sshmedia.h: Likewise.
27738         * config/sh/ushmedia.h: Likewise.
27739         * config/sparc/crtfastmath.c: Likewise.
27740         * config/sparc/linux-unwind.h: Likewise.
27741         * config/sparc/sol2-c1.asm: Likewise.
27742         * config/sparc/sol2-ci.asm: Likewise.
27743         * config/sparc/sol2-cn.asm: Likewise.
27744         * config/spu/divmodti4.c: Likewise.
27745         * config/spu/divv2df3.c: Likewise.
27746         * config/spu/float_disf.c: Likewise.
27747         * config/spu/float_unsdidf.c: Likewise.
27748         * config/spu/float_unsdisf.c: Likewise.
27749         * config/spu/float_unssidf.c: Likewise.
27750         * config/spu/mfc_multi_tag_release.c: Likewise.
27751         * config/spu/mfc_multi_tag_reserve.c: Likewise.
27752         * config/spu/mfc_tag_release.c: Likewise.
27753         * config/spu/mfc_tag_reserve.c: Likewise.
27754         * config/spu/mfc_tag_table.c: Likewise.
27755         * config/spu/multi3.c: Likewise.
27756         * config/spu/spu_internals.h: Likewise.
27757         * config/spu/spu_intrinsics.h: Likewise.
27758         * config/spu/spu_mfcio.h: Likewise.
27759         * config/spu/vec_types.h: Likewise.
27760         * config/spu/vmx2spu.h: Likewise.
27761         * config/stormy16/stormy16-lib2.c: Likewise.
27762         * config/svr4.h: Likewise.
27763         * config/sync.c: Likewise.
27764         * config/v850/lib1funcs.asm: Likewise.
27765         * config/vxlib-tls.c: Likewise.
27766         * config/vxlib.c: Likewise.
27767         * config/vxworks-dummy.h: Likewise.
27768         * config/xtensa/crti.asm: Likewise.
27769         * config/xtensa/crtn.asm: Likewise.
27770         * config/xtensa/ieee754-df.S: Likewise.
27771         * config/xtensa/ieee754-sf.S: Likewise.
27772         * config/xtensa/lib1funcs.asm: Likewise.
27773         * config/xtensa/lib2funcs.S: Likewise.
27774         * config/xtensa/linux-unwind.h: Likewise.
27775         * config/xtensa/unwind-dw2-xtensa.c: Likewise.
27776         * config/xtensa/unwind-dw2-xtensa.h: Likewise.
27777         * coretypes.h: Likewise.
27778         * crtstuff.c: Likewise.
27779         * defaults.h: Likewise.
27780         * dwarf2.h: Likewise.
27781         * emutls.c: Likewise.
27782         * gbl-ctors.h: Likewise.
27783         * gcov-io.h: Likewise.
27784         * ginclude/float.h: Likewise.
27785         * ginclude/iso646.h: Likewise.
27786         * ginclude/stdarg.h: Likewise.
27787         * ginclude/stdbool.h: Likewise.
27788         * ginclude/stddef.h: Likewise.
27789         * ginclude/stdfix.h: Likewise.
27790         * ginclude/stdint-gcc.h: Likewise.
27791         * ginclude/tgmath.h: Likewise.
27792         * gthr-aix.h: Likewise.
27793         * gthr-dce.h: Likewise.
27794         * gthr-gnat.c: Likewise.
27795         * gthr-gnat.h: Likewise.
27796         * gthr-lynx.h: Likewise.
27797         * gthr-mipssde.h: Likewise.
27798         * gthr-nks.h: Likewise.
27799         * gthr-posix.c: Likewise.
27800         * gthr-posix.h: Likewise.
27801         * gthr-posix95.h: Likewise.
27802         * gthr-rtems.h: Likewise.
27803         * gthr-single.h: Likewise.
27804         * gthr-solaris.h: Likewise.
27805         * gthr-tpf.h: Likewise.
27806         * gthr-vxworks.h: Likewise.
27807         * gthr-win32.h: Likewise.
27808         * gthr.h: Likewise.
27809         * libgcc2.c: Likewise.
27810         * libgcc2.h: Likewise.
27811         * libgcov.c: Likewise.
27812         * tsystem.h: Likewise.
27813         * typeclass.h: Likewise.
27814         * unwind-c.c: Likewise.
27815         * unwind-compat.h: Likewise.
27816         * unwind-dw2-fde-compat.c: Likewise.
27817         * unwind-dw2-fde-darwin.c: Likewise.
27818         * unwind-dw2-fde-glibc.c: Likewise.
27819         * unwind-dw2-fde.c: Likewise.
27820         * unwind-dw2-fde.h: Likewise.
27821         * unwind-dw2.c: Likewise.
27822         * unwind-dw2.h: Likewise.
27823         * unwind-generic.h: Likewise.
27824         * unwind-pe.h: Likewise.
27825         * unwind-sjlj.c: Likewise.
27826         * unwind.inc: Likewise.
27827         * config/arm/neon-gen.ml: Change generated copyright header to
27828         refer to version 3 of the GNU General Public License with
27829         version 3.1 of the GCC Runtime Library Exception and to point
27830         readers at the COPYING3 and COPYING3.RUNTIME files and the
27831         FSF's license web page.
27832         * config/arm/arm_neon.h: Regenerate.
27833
27834 2009-04-09  Jakub Jelinek  <jakub@redhat.com>
27835
27836         * config/cris/cris.md: Change copyright header to refer to version
27837         3 of the GNU General Public License.
27838         * doc/install.texi2html: Change copyright header to refer to version
27839         3 of the GNU General Public License and to point readers at the
27840         COPYING3 file and the FSF's license web page.
27841         * config/vax/linux.h: Likewise.
27842
27843 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
27844
27845         * config/i386/i386.md (cmpcc): New.
27846         * config/i386/sync.md (sync_compare_and_swap*): Set FLAGS_REG.
27847         (sync_compare_and_swap_cc*): Delete.
27848
27849         * config/s390/s390.c (s390_compare_emitted): Remove.
27850         (s390_emit_compare): Handle MODE_CC s390_compare_op0 like
27851         s390_compare_emitted used to be handled.  Assert that modes match.
27852         (s390_emit_compare_and_swap): Use s390_emit_compare, do not
27853         refer to sync_compare_and_swap_ccsi.
27854         * config/s390/s390.h (s390_compare_emitted): Remove.
27855         * config/s390/s390.md (seq): Look for MODE_CC s390_compare_op0
27856         instead of s390_compare_emitted.
27857         (stack_protect_test, sync_compare_and_swap_cc): Set s390_compare_op0
27858         instead of s390_compare_emitted.
27859         * config/s390/s390.md (cmpcc): New.
27860         (sync_compare_and_swapqi, sync_compare_and_swaphi): Clobber
27861         CC_REGNUM, do not pretend it's set.
27862         (sync_compare_and_swap_cc*): Delete.
27863         * config/s390/predicates.md (cc_reg_operand): New.
27864
27865         * expr.c (sync_compare_and_swap_cc): Delete.
27866         * optabs.h (sync_compare_and_swap_cc): Delete.
27867         * optabs.c (prepare_cmp_insn): Ignore which specific CCmode
27868         is being used with can_compare_p.
27869         (emit_cmp_and_jump_insn_1): Likewise when looking in the optab.
27870         (find_cc_set): New.
27871         (expand_bool_compare_and_swap): Do not use sync_compare_and_swap_cc,
27872         look for a MODE_CC set instead.  Use emit_store_flag.
27873         (expand_compare_and_swap_loop): Likewise, with some additional
27874         complication to avoid a force_reg when useless.  Use
27875         emit_cmp_and_jump_insns.
27876         * genopinit.c (optabs): Delete sync_compare_and_swap_cc.
27877         * doc/md.texi (sync_compare_and_swap_cc): Merge with
27878         sync_compare_and_swap documentation.
27879
27880 2009-04-09  Jan Hubicka  <jh@suse.cz>
27881
27882         * except.c (find_prev_try): Break out from ....
27883         (duplicate_eh_regions): ... here; properly update prev_try pointers
27884         when duplication part of tree.
27885         (dump_eh_tree): Improve dumping.
27886         (verify_eh_region): New.
27887         (verify_eh_tree): Use it.
27888
27889 2009-04-06  Richard Guenther  <rguenther@suse.de>
27890
27891         * c-gimplify.c (c_gimplify_expr): Fix the invalid GENERIC
27892         &ARRAY addresses by adjusting their types and prepending
27893         a conversion.
27894         * tree-cfg.c (verify_gimple_assign_single): Verify that
27895         addresses are correct.
27896
27897 2009-04-09  Richard Guenther  <rguenther@suse.de>
27898
27899         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Move non-constant
27900         indices into an array reference if possible.
27901         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
27902         Fold POINTER_PLUS_EXPR statements with invariant address.
27903
27904 2009-04-09  Alan Modra  <amodra@bigpond.net.au>
27905
27906         PR target/39634
27907         * config.gcc (powerpc64-*-linux*): Always build biarch.
27908
27909 2009-04-09  Joseph Myers  <joseph@codesourcery.com>
27910
27911         PR c/39613
27912         * c-typeck.c (do_case): If case label is not an INTEGER_CST, fold
27913         it and pedwarn if this results in an INTEGER_CST.
27914
27915 2009-04-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
27916
27917         * doc/install.texi: Update minimum GMP version.  Remove obsolete
27918         text in MPFR section.
27919
27920 2009-04-08  Jakub Jelinek  <jakub@redhat.com>
27921
27922         * dwarf2out.c (class_scope_p): New static inline.
27923         (class_or_namespace_scope_p): Use it.
27924         (gen_variable_die): Use DW_TAG_member tag for static data member
27925         declarations instead of DW_TAG_variable.
27926
27927         PR middle-end/39573
27928         * omp-low.c (expand_omp_taskreg): Finalize taskreg static local_decls
27929         variables.
27930
27931 2009-04-08  Richard Guenther  <rguenther@suse.de>
27932
27933         * tree-ssa-sccvn.c (valueize_refs): Do not continue to
27934         valueize random data.
27935
27936 2009-04-08  David Edelsohn  <edelsohn@gnu.org>
27937
27938         * config.gcc (aix tm_file):  Add aix-stdint.h.
27939         (aix tm clause use_gcc_stdint):  Set to wrap.
27940         * config/rs6000/aix-stdint.h:  New file.
27941
27942 2009-04-08  Richard Guenther  <rguenther@suse.de>
27943
27944         PR middle-end/36291
27945         * tree-dfa.c (add_referenced_var): Do not recurse into
27946         global initializers.
27947         * tree-ssa-ccp.c (get_symbol_constant_value): Add newly
27948         exposed variables.
27949         (fold_const_aggregate_ref): Likewise.
27950
27951 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
27952
27953         * recog.c (ordered_comparison_operator): New.
27954         * gensupport.c (std_preds): Add it.
27955         * doc/md.texi (Machine-Independent Predicates): Document it.
27956
27957 2009-04-08  Jan Hubicka  <jh@suse.cz>
27958
27959         * tree-eh.c (cleanup_eh): When not optimizing, do not try EH merging.
27960         * function.h (rtl_eh): Remove exception_handler_label_map.
27961         * except.c (ehl_hash, ehl_eq, add_ehl_entry,
27962         remove_exception_handler_label, for_each_eh_label_1): Remove.
27963         (rtl_remove_unreachable_regions): Remove.
27964         (convert_from_eh_region_ranges): Do not remove unreachable regions.
27965         (find_exception_handler_labels): Don't build the hashtable.
27966         (maybe_remove_eh_handler): Remove.
27967         (for_each_eh_label): Rewrite to walk the tree.
27968         (rest_of_handle_eh): Do not cleanup cfg prior EH construction.
27969         * except.h (maybe_remove_eh_handler): Remove.
27970         * passes.c (init_optimization_passes): Schedule second EH cleanup
27971         before out-of-ssa.
27972         * cfgrtl.c (rtl_delete_block, rtl_merge_blocks,
27973         cfg_layout_merge_blocks): Do not call maybe_remove_eh_handler.
27974
27975 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
27976
27977         * genoutput.c (validate_optab_operands): New.
27978         (gen_insn, gen_expand): Call it.
27979
27980         * genflags.c (gen_insn): Detect misused iterators.
27981         (main): Pass line_no to gen_insn, exit with status 1 on error.
27982
27983         * genextract.c (line_no): Make global.
27984         (VEC_safe_set_locstr): Change assertion to error message.
27985         (main): Exit with status 1 on error.
27986
27987 2009-04-08  Joseph Myers  <joseph@codesourcery.com>
27988
27989         PR c/39614
27990         PR c/39673
27991         * c-common.h (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
27992         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
27993         EXPR_INT_CONST_OPERANDS): Remove duplicate definitions.
27994         * c-convert.c (convert): Do not call fold on results of conversion
27995         functions when the result is a C_MAYBE_CONST_EXPR.
27996         * c-parser.c (c_parser_postfix_expression): Do not fold condition
27997         of __builtin_choose_expr.
27998         * c-typeck.c (remove_c_maybe_const_expr): New.
27999         (build_unary_op, build_conditional_expr, build_compound_expr,
28000         build_binary_op, c_objc_common_truthvalue_conversion): Call
28001         remove_c_maybe_const_expr on any input C_MAYBE_CONST_EXPR with
28002         integer operands.
28003
28004 2009-04-08  Bingfeng Mei  <bmei@broadcom.com>
28005
28006         * fold-const.c (const_binop): Combine two VECTOR_CST under operation
28007         CODE to produce a new one. Add a prototype to use fold_convert_const
28008
28009 2009-04-08  Danny Smith  <dannysmith@users.sourceforge.net>
28010
28011         PR bootstrap/39660
28012         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Don't
28013         mix declarations and code.
28014
28015 2009-04-08  Ben Elliston  <bje@au.ibm.com>
28016
28017         * gcc.c: Replace `CC' with `GCC' throughout.
28018
28019 2009-04-07  H.J. Lu  <hongjiu.lu@intel.com>
28020
28021         * doc/invoke.texi: Document Atom support.
28022
28023 2009-04-07  Jason Merrill  <jason@redhat.com>
28024
28025         PR c++/25185
28026         * c-common.h, c-common.c: Add flag_pretty_templates.
28027         * c-opts.c (c_common_handle_option): Set it.
28028         * c.opt: Add -fno-pretty-templates.
28029         * doc/invoke.texi (C++ Dialect Options): Likewise.
28030
28031 2009-04-07  Uros Bizjak  <ubizjak@gmail.com>
28032
28033         * config/ia64/ia64.c (ia64_builtins): Add IA64_BUILTIN_HUGE_VALQ.
28034         (ia64_init_builtins): Handle IA64_BUILTIN_HUGE_VALQ.
28035         (ia64_expand_builtin): Likewise.
28036
28037 2009-04-07  Martin Jambor  <mjambor@suse.cz>
28038
28039         * tree-ssa-alias.c (refs_may_alias_p_1): Check for
28040         is_gimple_min_invariant rather than CONSTANT_CLASS_P so that invariant
28041         ADDR_EXPRS are include too.
28042
28043 2009-04-07  Richard Guenther  <rguenther@suse.de>
28044
28045         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Non-aliased
28046         decls are only used if passes as parameters or if they are
28047         local statics and the call is not to a builtin.
28048         (call_may_clobber_ref_p_1): Likewise.
28049
28050 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
28051
28052         * expr.c (do_store_flag): Remove last argument.  Simplify code
28053         to avoid duplication of tests already done by can_compare_p.
28054         (expand_expr_real_1): Adjust caller.
28055
28056 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
28057
28058         * optabs.c (can_compare_p): Test the predicate of a
28059         cbranch and cstore pattern.
28060
28061 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
28062
28063         * expr.c (convert_move): Use emit_store_flag instead of
28064         "emulating" it.
28065
28066 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
28067
28068         * config/i386/i386.c (ix86_compare_emitted): Remove.
28069         (ix86_expand_compare, ix86_expand_branch): Handle MODE_CC
28070         ix86_compare_op0 like ix86_compare_emitted used to be handled.
28071         * config/i386/i386.h (ix86_compare_emitted): Remove.
28072         * config/i386/i386.md (stack_protect_test): Set ix86_compare_op0
28073         instead of ix86_compare_emitted.
28074         * config/i386/sync.md (sync_compare_and_swap_cc): Likewise.
28075
28076 2009-04-07  Andrew Stubbs  <ams@codesourcery.com>
28077
28078         * config.gcc (sh-*-*): Add sysroot-suffix.h to tm_file.
28079         Add t-sysroot-suffix to tmake_file.
28080         * config/print-sysroot-suffix.sh: New file.
28081         * config/t-sysroot-suffix: New file.
28082
28083 2009-04-07  Ben Elliston  <bje@au.ibm.com>
28084
28085         * libgcc2.c (INFINITY): Use __builtin_huge_val, not __builtin_inf,
28086         as the latter produces a warning when the target does not support
28087         infinity.
28088
28089 2009-04-07  Ben Elliston  <bje@au.ibm.com>
28090
28091         * dfp.c: Replace type punning assignments with memcpy throughout.
28092         * Makefile.in (dfp.o-warn): Remove.
28093
28094 2009-04-07  Alan Modra  <amodra@bigpond.net.au>
28095
28096         PR target/39634
28097         * config.gcc: Merge powerpc-*-linux* and powerpc64-*-linux*.
28098         Include soft-fp/t-softfp after rs6000/t-linux64.
28099
28100 2009-04-06  Eric Botcazou  <ebotcazou@adacore.com>
28101
28102         * stor-layout.c (set_sizetype): Use the full precision of their
28103         machine mode for bitsize types.
28104
28105 2009-04-06  H.J. Lu  <hongjiu.lu@intel.com>
28106
28107         * config/i386/i386.md: Revert 2 accidental checkins.
28108
28109 2009-04-06  Joey Ye  <joey.ye@intel.com>
28110             Xuepeng Guo  <xuepeng.guo@intel.com>
28111             H.J. Lu  <hongjiu.lu@intel.com>
28112
28113         Atom pipeline model, tuning and insn selection.
28114         * config.gcc (atom): Add atom config options and target.
28115
28116         * config/i386/atom.md: New.
28117
28118         * config/i386/i386.c (atom_cost): New cost.
28119         (m_ATOM): New macro flag.
28120         (initial_ix86_tune_features): Set m_ATOM.
28121         (x86_accumulate_outgoing_args): Likewise.
28122         (x86_arch_always_fancy_math_387): Likewise.
28123         (processor_target): Add Atom cost.
28124         (cpu_names): Add Atom cpu name.
28125         (override_options): Set Atom ISA.
28126         (ix86_issue_rate): New case PROCESSOR_ATOM.
28127         (ix86_adjust_cost): Likewise.
28128
28129         * config/i386/i386.h (TARGET_ATOM): New target macro.
28130         (ix86_tune_indices): Add X86_TUNE_OPT_AGU.
28131         (TARGET_OPT_AGU): New target option.
28132         (target_cpu_default): Add TARGET_CPU_DEFAULT_atom.
28133         (processor_type): Add PROCESSOR_ATOM.
28134
28135         * config/i386/i386.md (cpu): Add new value "atom".
28136         (use_carry, movu): New attr.
28137         (atom.md): Include atom.md.
28138         (adddi3_carry_rex64): Set attr "use_carry".
28139         (addqi3_carry): Likewise.
28140         (addhi3_carry): Likewise.
28141         (addsi3_carry): Likewise.
28142         (*addsi3_carry_zext): Likewise.
28143         (subdi3_carry_rex64): Likewise.
28144         (subqi3_carry): Likewise.
28145         (subhi3_carry): Likewise.
28146         (subsi3_carry): Likewise.
28147         (x86_movdicc_0_m1_rex64): Likewise.
28148         (*x86_movdicc_0_m1_se): Likewise.
28149         (x86_movsicc_0_m1): Likewise.
28150         (*x86_movsicc_0_m1_se): Likewise.
28151         (*adddi_1_rex64): Emit add insn as much as possible.
28152         (*addsi_1): Likewise.
28153         (return_internal): Set atom_unit.
28154         (return_internal_long): Likewise.
28155         (return_pop_internal): Likewise.
28156         (*rcpsf2_sse): Set atom_sse_attr attr.
28157         (*qrt<mode>2_sse): Likewise.
28158         (*prefetch_sse): Likewise.
28159
28160         * config/i386/i386-c.c (ix86_target_macros_internal): New case
28161         PROCESSOR_ATOM.
28162         (ix86_target_macros_internal): Likewise.
28163
28164         * config/i386/sse.md (cpu): Set attr "atom_sse_attr".
28165         (*prefetch_sse_rex): Likewise.
28166         (sse_rcpv4sf2): Likewise.
28167         (sse_vmrcpv4sf2): Likewise.
28168         (sse_sqrtv4sf2): Likewise.
28169         (<sse>_vmsqrt<mode>2): Likewise.
28170         (sse_ldmxcsr): Likewise.
28171         (sse_stmxcsr): Likewise.
28172         (*sse_sfence): Likewise.
28173         (sse2_clflush): Likewise.
28174         (*sse2_mfence): Likewise.
28175         (*sse2_lfence): Likewise.
28176         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Set attr "movu".
28177         (<sse>_movup<ssemodesuffixf2c>): Likewise.
28178         (avx_movdqu<avxmodesuffix>): Likewise.
28179         (avx_lddqu<avxmodesuffix>): Likewise.
28180         (sse2_movntv2di): Change attr "type" to "ssemov".
28181         (sse2_movntsi): Likewise.
28182         (rsqrtv8sf2): Change attr "type" to "sseadd".
28183         (sse3_addsubv2df3): Set attr "atom_unit".
28184         (sse3_h<plusminus_insn>v4sf3): Likewise.
28185         (*sse2_pmaddwd): Likewise.
28186         (*vec_extractv2di_1_rex64): Likewise.
28187         (*vec_extractv2di_1_avx): Likewise.
28188         (sse2_psadbw): Likewise.
28189         (ssse3_phaddwv8hi3): Likewise.
28190         (ssse3_phaddwv4hi3): Likewise.
28191         (ssse3_phadddv4si3): Likewise.
28192         (ssse3_phadddv2si3): Likewise.
28193         (ssse3_phaddswv8hi3): Likewise.
28194         (ssse3_phaddswv4hi3): Likewise.
28195         (ssse3_phsubwv8hi3): Likewise.
28196         (ssse3_phsubwv4hi3): Likewise.
28197         (ssse3_phsubdv4si3): Likewise.
28198         (ssse3_phsubdv2si3): Likewise.
28199         (ssse3_phsubswv8hi3): Likewise.
28200         (ssse3_phsubswv4hi3): Likewise.
28201         (ssse3_pmaddubsw128): Likewise.
28202         (sse3_pmaddubsw: Likewise.
28203         (ssse3_palignrti): Likewise.
28204         (ssse3_palignrdi): Likewise.
28205
28206 2009-04-06  Gerald Pfeifer  <gerald@pfeifer.com>
28207
28208         * doc/install.texi (Specific): Fix two cross-references to MinGW.
28209
28210 2009-04-06  Richard Guenther  <rguenther@suse.de>
28211
28212         PR tree-optimization/28868
28213         * tree-ssa-pre.c (inserted_phi_names): New bitmap to keep track
28214         of which PHI results we inserted.
28215         (insert_into_preds_of_block): Record inserted PHIs.
28216         (eliminate): Eliminate redundant PHI nodes.
28217         (init_pre): Init inserted_phi_names.
28218
28219 2009-04-06  Richard Guenther  <rguenther@suse.de>
28220
28221         PR tree-optimization/39643
28222         * tree-ssa-ccp.c (ccp_fold): Fold REALPART_EXPRs and
28223         IMAGPART_EXPRs of complex constants.
28224         (execute_fold_all_builtins): If we folded a call queue
28225         TODO_update_address_taken.
28226
28227 2009-04-06  Jan Hubicka  <jh@suse.cz>
28228
28229         PR middle-end/39659
28230         * except.c (remove_unreachable_regions): Propagate may_contain_throw
28231         flag.
28232
28233 2009-04-06  Andrew Stubbs  <ams@codesourcery.com>
28234
28235         * config/sh/lib1funcs.asm (ic_invalidate): Move ICBI out of the
28236         delay slot.
28237         (ic_invalidate_array): Likewise.
28238
28239 2009-04-06  Hariharan Sandanagobalane  <hariharan@picochip.com>
28240
28241         * calls.c (emit_library_call_value_1): Fix a problem with parameter
28242         alignment for library calls.
28243
28244 2009-04-06  Danny Smith  <dannysmith@users.sourceforge.net>
28245
28246         * config.gcc (mingw32 tm_file):  Add mingw-stdint.h.
28247         (mingw32 tm clause use_gcc_stdint):  Set to wrap.
28248         * config/i386/mingw-stdint.h:  New file.
28249
28250 2009-04-05  Richard Guenther  <rguenther@suse.de>
28251
28252         PR tree-optimization/39648
28253         * tree-ssa-sccvn.c (vn_reference_fold_indirect): Work around
28254         our &A vs. &A[0] IL deficiencies.
28255
28256 2009-04-04  Jan Hubicka  <jh@suse.cz>
28257
28258         * except.c (sjlj_find_directly_reachable_regions): Be ready for
28259         removed toplevel regions.
28260         (sjlj_mark_call_sites): Likewise.
28261
28262 2009-04-04  Dave Korn  <dave.korn.cygwin@gmail.com>
28263
28264         * config.gcc (cygwin tm_file):  Add cygwin-stdint.h.
28265         (cygwin tm clause use_gcc_stdint):  Set to wrap.
28266         * config/i386/cygwin-stdint.h:  New file.
28267
28268 2009-04-04  Richard Guenther  <rguenther@suse.de>
28269
28270         * Makefile.in (tree-ssa-copy.o): Add $(CFGLOOP_H) dependency.
28271         * tree-ssa-copy.c (init_copy_prop): Do not propagate through
28272         single-argument PHIs if we are in loop-closed SSA form.
28273         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Pass extra guards
28274         for the pre-condition.
28275         (slpeel_tree_peel_loop_to_edge): Likewise.
28276         (vect_build_loop_niters): Take an optional sequence to append stmts.
28277         (vect_generate_tmps_on_preheader): Likewise.
28278         (vect_do_peeling_for_loop_bound): Take extra guards for the
28279         pre-condition.
28280         (vect_do_peeling_for_alignment): Adjust.  Unconditionally apply
28281         the cost model check.
28282         (vect_loop_versioning): Take stmt and stmt list to put pre-condition
28283         guards if we are going to peel.  Do not apply versioning in that case.
28284         * tree-vectorizer.h (vect_loop_versioning): Adjust declaration.
28285         (vect_do_peeling_for_loop_bound): Likewise.
28286         * tree-vect-loop.c (vect_transform_loop): If we are peeling for
28287         loop bound only record extra pre-conditions, do not apply loop
28288         versioning.
28289
28290 2009-04-04  Richard Guenther  <rguenther@suse.de>
28291
28292         * tree-ssa-operands.c (pop_stmt_changes): Remove automatic
28293         renaming code.
28294
28295 2009-04-04  Jan Hubicka  <jh@suse.cz>
28296
28297         * tree-ssa-uncprop.c (associate_equivalences_with_edges): Use
28298         last_basic_block for size of bb->index indexed array.
28299         * bt-load.c (compute_defs_uses_and_gen, compute_kill,
28300         compute_out, link_btr_uses, build_btr_def_use_webs,
28301         build_btr_def_use_webs, migrate_btr_defs): Likewise.
28302
28303 2009-04-04  Jan Hubicka  <jh@suse.cz>
28304
28305         * except.c (remove_eh_handler_and_replace): Break out from ...
28306         (remove_eh_handler): ... here.
28307         (bring_to_root): New function.
28308         (remove_unreachable_regions): Collect MUST_NOT_THROW, unify runtime
28309         handled ones, bring others to root of tree.
28310
28311 2009-04-04  Jan Hubicka  <jh@suse.cz>
28312
28313         * tree-eh.c (tree_empty_eh_handler_p): Pattern match more curefully.
28314         (all_phis_safe_to_merge): New function.
28315         (update_info): New structure.
28316         (make_eh_edge_and_update_phi, update_eh_edges): New functions.
28317         (cleanup_empty_eh): Update SSA if possible.
28318
28319 2009-04-04  Richard Guenther  <rguenther@suse.de>
28320
28321         * tree-ssa.c (verify_ssa): With -O0 we do not need VOPs.
28322         * tree-ssa-operands.c (append_vdef): Do not append VOPs at -O0.
28323         (append_vuse): Likewise.
28324
28325 2009-04-04  Jakub Jelinek  <jakub@redhat.com>
28326
28327         * unwind-dw2.h (_Unwind_FrameState): Add REG_UNDEFINED enum value.
28328         * unwind-dw2.c (execute_cfa_program): Set how to REG_UNDEFINED
28329         instead of REG_UNSAVED for DW_CFA_undefined.
28330         (uw_update_context_1): Handle REG_UNDEFINED the same as REG_UNSAVED.
28331         (uw_update_context): If RA column is REG_UNDEFINED, mark it as
28332         outermost frame.
28333
28334 2009-04-04  Richard Earnshaw  <rearnsha@arm.com>
28335
28336         PR target/39501
28337         * arm.md (movsfcc): Disable if not TARGET_HARD_FLOAT.
28338
28339 2009-04-04  Richard Guenther  <rguenther@suse.de>
28340
28341         PR tree-optimization/8781
28342         PR tree-optimization/37892
28343         * tree-ssa-sccvn.h (vn_reference_fold_indirect): Declare.
28344         * tree-ssa-sccvn.c (vn_reference_fold_indirect): New function.
28345         (valueize_refs): Call it for *& valueizations.
28346         (shared_reference_ops_from_ref): Rename to ...
28347         (valueize_shared_reference_ops_from_ref): ... this and valueize.
28348         (shared_reference_ops_from_call): Rename to ...
28349         (valueize_shared_reference_ops_from_call): ... this and valueize.
28350         (vn_reference_lookup): Update.
28351         (visit_reference_op_call): Likewise.
28352         * tree-ssa-pre.c (phi_translate_1): Fold *&.
28353         (eliminate): Value-replace the call address in call statements.
28354
28355 2009-04-04  Richard Guenther  <rguenther@suse.de>
28356
28357         PR tree-optimization/39636
28358         * tree-ssa-forwprop.c
28359         (forward_propagate_addr_into_variable_array_index): Check for
28360         GIMPLE_ASSIGN before accessing the rhs code.
28361
28362 2009-04-03  Jason Merrill  <jason@redhat.com>
28363
28364         * stor-layout.c (set_sizetype): Set TYPE_CANONICAL.
28365
28366 2009-04-03  Steve Ellcey  <sje@cup.hp.com>
28367
28368         * config/ia64/ia64.md (extendsfdf2, extendsfxf2, extenddfxf2,
28369         truncdfsf2, truncxfsf2, truncxfdf2, floatdixf2, fix_truncsfdi2,
28370         fix_truncdfdi2, fix_truncxfdi2, fix_truncxfdi2_alts, floatunsdisf2,
28371         floatunsdidf2, floatunsdixf2, fixuns_truncsfdi2, fixuns_truncdfdi2,
28372         fixuns_truncxfdi2, fixuns_truncxfdi2_alts, divsi3_internal,
28373         smuldi3_highpart, umuldi3_highpart, ctzdi2, *getf_exp_xf,
28374         divdi3_internal_lat, divdi3_internal_thr, mulditi3, *mulditi3_internal,
28375         umulditi3, *umulditi3_internal, addsf3, mulsf3, abssf2, negsf2,
28376         *nabssf2, sminsf3, smaxsf3, *maddsf4, *msubsf4, *nmulsf3, *nmaddsf4,
28377         *nmaddsf4_alts, divsf3, *sqrt_approx, sqrtsf2, sqrtsf2_internal_thr,
28378         adddf3, *adddf3_trunc, muldf3, *muldf3_trunc, absdf2, negdf2, *nabsdf2,
28379         smindf3, smaxdf3, *madddf4, *madddf4_trunc, *msubdf4, *msubdf4_trunc,
28380         *nmuldf3, *nmuldf3_trunc, *nmadddf4, *nmadddf4_alts, *nmadddf4_truncsf,
28381         *nmadddf4_truncsf_alts, divdf3, sqrtdf2, sqrtdf2_internal_thr, divxf3,
28382         sqrtxf2, sqrtxf2_internal_thr, *recip_approx):
28383         Use fr_reg_or_fp01_operand instead of fr_register_operand
28384
28385         * config/ia64/div.md (extend<mode>rf2, truncrf<mode>2,
28386         recip_approx_rf, divsf3_internal_thr, divsf3_internal_lat,
28387         divdf3_internal_thr, divdf3_internal_lat divxf3_internal): Ditto.
28388
28389 2009-04-03  Vladimir Makarov  <vmakarov@redhat.com>
28390
28391         PR rtl-optimization/39607
28392         PR rtl-optimization/39631
28393
28394         Revert:
28395
28396         2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
28397         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
28398         instead of DF_LR_OUT.
28399         * ira-lives.c (process_bb_node_lives): Ditto.
28400         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
28401         instead of DF_LR_{OUT,IN}.
28402         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
28403         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
28404
28405 2009-04-03  Steven Bosscher  <steven@gcc.gnu.org>
28406
28407         * omp-low.c (pass_expand_omp): Don't claim to provide PROP_gimple_lomp.
28408         (execute_lower_omp): Always run but take the short way out if -fopenmp
28409         is not given.
28410         (gate_lower_omp): Remove, forcing the pass manager to always run the
28411         pass and always set PROP_gimple_lomp.
28412         (pass_lower_omp): Remove gate function.
28413         * matrix-reorg.c (pass_ipa_matrix_reorg): Don't claim to provide
28414         PROP_trees.  Instead, require it.
28415         * ipa-cp.c (pass_ipa_cp): Likewise.
28416         * ipa-inline.c (pass_early_inline): Don't claim to provide PROP_cfg.
28417         (pass_ipa_early_inline, pass_inline_parameters, pass_ipa_inline): Idem.
28418         * tree-profile.c (pass_tree_profile): Don't claim to provide PROP_cfg
28419         and PROP_gimple_leh.
28420
28421 2009-04-03  Richard Guenther  <rguenther@suse.de>
28422
28423         PR middle-end/13146
28424         PR tree-optimization/23940
28425         PR tree-optimization/33237
28426         PR middle-end/33974
28427         PR middle-end/34093
28428         PR tree-optimization/36201
28429         PR tree-optimization/36230
28430         PR tree-optimization/38049
28431         PR tree-optimization/38207
28432         PR tree-optimization/38230
28433         PR tree-optimization/38301
28434         PR tree-optimization/38585
28435         PR middle-end/38895
28436         PR tree-optimization/38985
28437         PR tree-optimization/39299
28438         * tree-ssa-structalias.h: Remove.
28439         * tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
28440         (NULL_DEF_OPERAND_P): Make of type def_operand_p.
28441         (struct vuse_element_d): Remove.
28442         (struct vuse_vec_d): Likewise.
28443         (VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
28444         VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
28445         SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
28446         VUSE_ELEMENT_VAR): Likewise.
28447         (struct voptype_d): Likewise.
28448         (NUM_VOP_FREE_BUCKETS): Likewise.
28449         (struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
28450         (struct stmt_operands_d): Remove.
28451         (VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
28452         VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
28453         VDEF_NUM, VDEF_VECT): Likewise.
28454         (copy_virtual_operands): Remove.
28455         (operand_build_cmp): Likewise.
28456         (create_ssa_artificial_load_stmt): Likewise.
28457         (enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
28458         (struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
28459         vuse_index and mayuse_index members.  Pack and move done and iter_type
28460         members to the front.
28461         (SSA_OP_VMAYUSE): Remove.
28462         (SSA_OP_VIRTUAL_USES): Adjust.
28463         (FOR_EACH_SSA_VDEF_OPERAND): Remove.
28464         (unlink_stmt_vdef): Declare.
28465         (add_to_addressable_set): Remove.
28466         * tree-vrp.c (stmt_interesting_for_vrp): Adjust.
28467         (vrp_visit_stmt): Likewise.
28468         * doc/tree-ssa.texi (Alias analysis): Update.
28469         * doc/invoke.texi (max-aliased-vops): Remove docs.
28470         (avg-aliased-vops): Likewise.
28471         * tree-into-ssa.c (syms_to_rename): Remove.
28472         (need_to_update_vops_p): Likewise.
28473         (need_to_initialize_update_ssa_p): Rename to ...
28474         (update_ssa_initialized_fn): ... this.  Track function we are
28475         initialized for.
28476         (symbol_marked_for_renaming): Simplify.
28477         (add_new_name_mapping): Do not set need_to_update_vops_p.
28478         (dump_currdefs): Use SYMS_TO_RENAME.
28479         (rewrite_update_stmt): Always walk all uses/defs.
28480         (dump_update_ssa): Adjust.
28481         (init_update_ssa): Take function argument.  Track what we are
28482         initialized for.
28483         (delete_update_ssa): Reset SYMS_TO_RENAME and update_ssa_initialized_fn.
28484         (create_new_def_for): Initialize for cfun, assert we are initialized
28485         for cfun.
28486         (mark_sym_for_renaming): Simplify.
28487         (mark_set_for_renaming): Do not initialize update-ssa.
28488         (need_ssa_update_p): Simplify.  Take function argument.
28489         (name_mappings_registered_p): Assert we ask for the correct function.
28490         (name_registered_for_update_p): Likewise.
28491         (ssa_names_to_replace): Likewise.
28492         (release_ssa_name_after_update_ssa): Likewise.
28493         (update_ssa): Likewise.  Use SYMS_TO_RENAME.
28494         (dump_decl_set): Do not print a newline.
28495         (debug_decl_set): Do it here.
28496         (dump_update_ssa): And here.
28497         * tree-ssa-loop-im.c (move_computations): Adjust.
28498         (movement_possibility): Likewise.
28499         (determine_max_movement): Likewise.
28500         (gather_mem_refs_stmt): Likewise.
28501         * tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
28502         or NAME_MEMORY_TAG.
28503         * tree-complex.c (update_all_vops): Remove.
28504         (expand_complex_move): Adjust.
28505         * tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
28506         Simplify test for memory referencing statement.  Exclude
28507         non-invariant ADDR_EXPRs.
28508         * tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
28509         * tree-loop-distribution.c (generate_memset_zero): Adjust.
28510         (rdg_flag_uses): Likewise.
28511         * tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
28512         related code.
28513         (tree_optimize_tail_calls_1): Also split the
28514         edge from the entry block if we have degenerate PHI nodes in
28515         the first basic block.
28516         * tree.c (init_ttree): Remove memory-tag related code.
28517         (tree_code_size): Likewise.
28518         (tree_node_structure): Likewise.
28519         (build7_stat): Re-write to be build6_stat.
28520         * tree.h (MTAG_P, TREE_MEMORY_TAG_CHECK, TMR_TAG): Remove.
28521         (SSA_VAR_P): Adjust.
28522         (struct tree_memory_tag): Remove.
28523         (struct tree_memory_partition_tag): Likewise.
28524         (union tree_node): Adjust.
28525         (build7): Re-write to be build6.
28526         * tree-pass.h (pass_reset_cc_flags): Remove.
28527         (TODO_update_address_taken): New flag.
28528         (pass_simple_dse): Remove.
28529         * ipa-cp.c (ipcp_update_callgraph): Update SSA form.
28530         * params.h (MAX_ALIASED_VOPS): Remove.
28531         (AVG_ALIASED_VOPS): Likewise.
28532         * omp-low.c (expand_omp_taskreg): Update SSA form.
28533         * tree-ssa-dse.c (dse_optimize_stmt): Properly query if the rhs
28534         aliases the lhs in a copy stmt.
28535         * tree-ssa-dse.c (struct address_walk_data): Remove.
28536         (memory_ssa_name_same): Likewise.
28537         (memory_address_same): Likewise.
28538         (get_kill_of_stmt_lhs): Likewise.
28539         (dse_possible_dead_store_p): Simplify, use the oracle.  Handle
28540         unused stores.  Look through PHI nodes into post-dominated regions.
28541         (dse_optimize_stmt): Simplify.  Properly remove stores.
28542         (tree_ssa_dse): Compute dominators.
28543         (execute_simple_dse): Remove.
28544         (pass_simple_dse): Likewise.
28545         * ipa-reference.c (scan_stmt_for_static_refs): Open-code
28546         gimple_loaded_syms and gimple_stored_syms computation.
28547         * toplev.c (dump_memory_report): Dump alias and pta stats.
28548         * tree-ssa-sccvn.c (vn_reference_compute_hash): Simplify.
28549         (vn_reference_eq): Likewise.
28550         (vuses_to_vec, copy_vuses_from_stmt, vdefs_to_vec,
28551         copy_vdefs_from_stmt, shared_lookup_vops, shared_vuses_from_stmt,
28552         valueize_vuses): Remove.
28553         (get_def_ref_stmt_vuses): Simplify.  Rename to ...
28554         (get_def_ref_stmt_vuse): ... this.
28555         (vn_reference_lookup_2): New function.
28556         (vn_reference_lookup_pieces): Use walk_non_aliased_vuses for
28557         walking equivalent vuses.  Simplify.
28558         (vn_reference_lookup): Likewise.
28559         (vn_reference_insert): Likewise.
28560         (vn_reference_insert_pieces): Likewise.
28561         (visit_reference_op_call): Simplify.
28562         (visit_reference_op_load): Likewise.
28563         (visit_reference_op_store): Likewise.
28564         (init_scc_vn): Remove shared_lookup_vuses initialization.
28565         (free_scc_vn): Remove shared_lookup_vuses freeing.
28566         (sort_vuses, sort_vuses_heap): Remove.
28567         (get_ref_from_reference_ops): Export.
28568         * tree-ssa-sccvn.h (struct vn_reference_s): Replace vuses
28569         vector with single vuse pointer.
28570         (vn_reference_lookup_pieces, vn_reference_lookup,
28571         vn_reference_insert, vn_reference_insert_pieces): Adjust prototypes.
28572         (shared_vuses_from_stmt): Remove.
28573         (get_ref_from_reference_ops): Declare.
28574         * tree-ssa-loop-manip.c (slpeel_can_duplicate_loop_p): Adjust.
28575         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
28576         memory-tag related code.
28577         * tree-ssa-ccp.c (get_symbol_constant_value): Remove memory-tag code.
28578         (likely_value): Add comment, skip static-chain of call statements.
28579         (surely_varying_stmt_p): Adjust.
28580         (gimplify_and_update_call_from_tree): Likewise.
28581         (execute_fold_all_builtins): Do not rebuild alias info.
28582         (gimplify_and_update_call_from_tree): Properly update VOPs.
28583         * tree-ssa-loop-ivopts.c (get_ref_tag): Remove.
28584         (copy_ref_info): Remove memory-tag related code.
28585         * tree-call-cdce.c (tree_call_cdce): Rename the VOP.
28586         * ipa-pure-const.c (check_decl): Remove memory-tag related code.
28587         (check_stmt): Open-code gimple_loaded_syms and gimple_stored_syms
28588         computation.
28589         * tree-ssa-dom.c (gimple_p): Remove typedef.
28590         (eliminate_redundant_computations): Adjust.
28591         (record_equivalences_from_stmt): Likewise.
28592         (avail_expr_hash): Likewise.
28593         (avail_expr_eq): Likewise.
28594         * tree-ssa-propagate.c (update_call_from_tree): Properly update VOPs.
28595         (stmt_makes_single_load): Likewise.
28596         (stmt_makes_single_store): Likewise.
28597         * tree-ssa-alias.c: Rewrite completely.
28598         (debug_memory_partitions, dump_mem_ref_stats, debug_mem_ref_stats,
28599         debug_mem_sym_stats, dump_mem_sym_stats_for_var,
28600         debug_all_mem_sym_stats, debug_mp_info, update_mem_sym_stats_from_stmt,
28601         delete_mem_ref_stats, create_tag_raw, dump_points_to_info,
28602         dump_may_aliases_for, debug_may_aliases_for, new_type_alias):
28603         Remove public functions.
28604         (pass_reset_cc_flags): Remove.
28605         (pass_build_alias): Move ...
28606         * tree-ssa-structalias.c (pass_build_alias): ... here.
28607         * tree-ssa-alias.c (may_be_aliased): Move ...
28608         * tree-flow-inline.h (may_be_aliased): ... here.
28609         tree-ssa-alias.c (struct count_ptr_d, count_ptr_derefs,
28610         count_uses_and_derefs): Move ...
28611         * gimple.c: ... here.
28612         * gimple.h (count_uses_and_derefs): Declare.
28613         * tree-ssa-alias.c (dump_alias_stats, ptr_deref_may_alias_global_p,
28614         ptr_deref_may_alias_decl_p, ptr_derefs_may_alias_p,
28615         same_type_for_tbaa, nonaliasing_component_refs_p, decl_refs_may_alias_p,
28616         indirect_ref_may_alias_decl_p, indirect_refs_may_alias_p,
28617         ref_maybe_used_by_call_p, ref_maybe_used_by_stmt_p,
28618         call_may_clobber_ref_p, stmt_may_clobber_ref_p, maybe_skip_until,
28619         get_continuation_for_phi, walk_non_aliased_vuses, walk_aliased_vdefs):
28620         New functions.
28621         * tree-dfa.c (refs_may_alias_p): Move ...
28622         * tree-ssa-alias.c (refs_may_alias_p): ... here.  Extend.
28623         * tree-ssa-alias.h: New file.
28624         * tree-ssa-sink.c (is_hidden_global_store): Adjust.
28625         (statement_sink_location): Likewise.
28626         * opts.c (decode_options): Do not adjust max-aliased-vops or
28627         avg-aliased-vops values.
28628         * timevar.def (TV_TREE_MAY_ALIAS): Remove.
28629         (TV_CALL_CLOBBER): Likewise.
28630         (TV_FLOW_SENSITIVE): Likewise.
28631         (TV_FLOW_INSENSITIVE): Likewise.
28632         (TV_MEMORY_PARTITIONING): Likewise.
28633         (TV_ALIAS_STMT_WALK): New timevar.
28634         * tree-ssa-loop-ivcanon.c (empty_loop_p): Adjust.
28635         * tree-ssa-address.c (create_mem_ref_raw): Use build6.
28636         (get_address_description): Remove memory-tag related code.
28637         * tree-ssa-ifcombine.c (bb_no_side_effects_p): Adjust.
28638         * treestruct.def (TS_MEMORY_TAG, TS_MEMORY_PARTITION_TAG): Remove.
28639         * tree-eh.c (cleanup_empty_eh): Do not leave stale SSA_NAMEs
28640         and immediate uses in statements.  Document.
28641         * gimple-pretty-print.c (dump_gimple_mem_ops): Adjust.
28642         (dump_symbols): Remove.
28643         (dump_gimple_mem_ops): Do not dump loaded or stored syms.
28644         * alias.c (get_deref_alias_set): New function split out from ...
28645         (get_alias_set): ... here.
28646         * alias.h (get_deref_alias_set): Declare.
28647         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove unused
28648         type parameter.  Remove restrict pointer handling.  Create a
28649         ref-all pointer in case type-based alias sets do not conflict.
28650         (vect_analyze_data_refs): Remove SMT related code.
28651         * tree-vect-stmts.c (vectorizable_store): Re-instantiate TBAA assert.
28652         (vectorizable_load): Likewise.
28653         * tree-data-ref.h (struct dr_alias): Remove symbol_tag field.
28654         (DR_SYMBOL_TAG, DR_VOPS): Remove.
28655         * tree-data-ref.c (dr_may_alias_p): Use the alias-oracle.
28656         Ignore vops and SMTs.
28657         (dr_analyze_alias): Likewise..
28658         (free_data_ref): Likewise.
28659         (create_data_ref): Likewise.
28660         (analyze_all_data_dependences): Likewise.
28661         (get_references_in_stmt): Adjust.
28662         * tree-flow-inline.h (gimple_aliases_computed_p,
28663         gimple_addressable_vars, gimple_call_clobbered_vars,
28664         gimple_call_used_vars, gimple_global_var, may_aliases, memory_partition,
28665         factoring_name_p, mark_call_clobbered, clear_call_clobbered,
28666         compare_ssa_operands_equal, symbol_mem_tag, set_symbol_mem_tag,
28667         gimple_mem_ref_stats): Remove.
28668         (gimple_vop): New function.
28669         (op_iter_next_use): Remove vuses and mayuses cases.
28670         (op_iter_next_def): Remove vdefs case.
28671         (op_iter_next_tree): Remove vuses, mayuses and vdefs cases.
28672         (clear_and_done_ssa_iter): Do not set removed fields.
28673         (op_iter_init): Likewise.  Skip vuse and/or vdef if requested.
28674         Assert we are not iterating over vuses or vdefs if not also
28675         iterating over uses or defs.
28676         (op_iter_init_use): Likewise.
28677         (op_iter_init_def): Likewise.
28678         (op_iter_next_vdef): Remove.
28679         (op_iter_next_mustdef): Likewise.
28680         (op_iter_init_vdef): Likewise.
28681         (compare_ssa_operands_equal): Likewise.
28682         (link_use_stmts_after): Handle vuse operand.
28683         (is_call_used): Use is_call_clobbered.
28684         (is_call_clobbered): Global variables are always call clobbered,
28685         query the call-clobbers bitmap.
28686         (mark_call_clobbered): Ignore global variables.
28687         (clear_call_clobbered): Likewise.
28688         * tree-ssa-coalesce.c (create_outofssa_var_map): Adjust
28689         virtual operands sanity check.
28690         * tree.def (NAME_MEMORY_TAG, SYMBOL_MEMORY_TAG, MEMORY_PARTITION_TAG):
28691         Remove.
28692         (TARGET_MEM_REF): Remove TMR_TAG operand.
28693         * tree-dfa.c (add_referenced_var): Initialize call-clobber state.
28694         Remove call-clobber related code.
28695         (remove_referenced_var): Likewise.  Do not clear mpt or symbol_mem_tag.
28696         (dump_variable): Do not dump SMTs, memory stats, may-aliases or
28697         partitions or escape reason.
28698         (get_single_def_stmt, get_single_def_stmt_from_phi,
28699         get_single_def_stmt_with_phi): Remove.
28700         (dump_referenced_vars): Tidy.
28701         (get_ref_base_and_extent): Allow bare decls.
28702         (collect_dfa_stats): Adjust.
28703         * graphite.c (rename_variables_in_stmt): Adjust.
28704         (graphite_copy_stmts_from_block): Likewise.
28705         (translate_clast): Likewise.
28706         * tree-ssa-pre.c (struct bb_bitmap_sets): Add expr_dies bitmap.
28707         (EXPR_DIES): New.
28708         (translate_vuse_through_block): Use the oracle.
28709         (phi_translate_1): Adjust.
28710         (value_dies_in_block_x): Use the oracle.  Cache the outcome
28711         in EXPR_DIES.
28712         (valid_in_sets): Check if the VUSE for
28713         a REFERENCE is available.
28714         (eliminate): Do not remove stmts during elimination,
28715         instead queue and remove them afterwards.
28716         (do_pre): Do not rebuild alias info.
28717         (pass_pre): Run TODO_rebuild_alias before PRE.
28718         * tree-ssa-live.c (remove_unused_locals): Remove memory-tag code.
28719         * tree-sra.c (sra_walk_function): Use gimple_references_memory_p.
28720         (mark_all_v_defs_stmt): Remove.
28721         (mark_all_v_defs_seq): Adjust.
28722         (sra_replace): Likewise.
28723         (scalarize_use): Likewise.
28724         (scalarize_copy): Likewise.
28725         (scalarize_init): Likewise.
28726         (scalarize_ldst): Likewise.
28727         (todoflags): Remove.
28728         (tree_sra): Do not rebuild alias info.
28729         (tree_sra_early): Adjust.
28730         (pass_sra): Run TODO_update_address_taken before SRA.
28731         * tree-predcom.c (set_alias_info): Remove.
28732         (prepare_initializers_chain): Do not call it.
28733         (mark_virtual_ops_for_renaming): Adjust.
28734         (mark_virtual_ops_for_renaming_list): Remove.
28735         (initialize_root_vars): Adjust.
28736         (initialize_root_vars_lm): Likewise.
28737         (prepare_initializers_chain): Likewise.
28738         * tree-ssa-copy.c (may_propagate_copy): Remove memory-tag related code.
28739         (may_propagate_copy_into_stmt): Likewise.
28740         (merge_alias_info): Do nothing for now.
28741         (propagate_tree_value_into_stmt): Adjust.
28742         (stmt_may_generate_copy): Likewise.
28743         * tree-ssa-forwprop.c (tidy_after_forward_propagate_addr): Do
28744         not mark symbols for renaming.
28745         (forward_propagate_addr_expr): Match up push/pop_stmt_changes
28746         with the same statement, make sure to update the new pointed-to one.
28747         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do not copy
28748         call statements, do not mark symbols for renaming.
28749         (mark_operand_necessary): Dump something.
28750         (ref_may_be_aliased): New function.
28751         (mark_aliased_reaching_defs_necessary_1): New helper function.
28752         (mark_aliased_reaching_defs_necessary): Likewise.
28753         (mark_all_reaching_defs_necessary_1): Likewise.
28754         (mark_all_reaching_defs_necessary): Likewise.
28755         (propagate_necessity): Do not process virtual PHIs.  For
28756         non-aliased loads mark all reaching definitions as necessary.
28757         For aliased loads and stores mark the immediate dominating
28758         aliased clobbers as necessary.
28759         (visited): New global static.
28760         (perform_tree_ssa_dce): Free visited bitmap after propagating
28761         necessity.
28762         (remove_dead_phis): Perform simple dead virtual PHI removal.
28763         (remove_dead_stmt): Properly unlink virtual operands when
28764         removing stores.
28765         (eliminate_unnecessary_stmts): Schedule PHI removal after
28766         stmt removal.
28767         * tree-ssa-ter.c (is_replaceable_p): Adjust.
28768         (process_replaceable): Likewise.
28769         (find_replaceable_in_bb): Likewise.
28770         * tree-ssa.c (verify_ssa_name): Verify all VOPs are
28771         based on the single gimple vop.
28772         (verify_flow_insensitive_alias_info): Remove.
28773         (verify_flow_sensitive_alias_info): Likewise.
28774         (verify_call_clobbering): Likewise.
28775         (verify_memory_partitions): Likewise.
28776         (verify_alias_info): Likewise.
28777         (verify_ssa): Adjust..
28778         (execute_update_addresses_taken): Export.  Update SSA
28779         manually.  Optimize only when optimizing.  Use a local bitmap.
28780         (pass_update_address_taken): Remove TODO_update_ssa, add
28781         TODO_dump_func.
28782         (pass_update_address_taken): Just use TODO_update_address_taken.
28783         (init_tree_ssa): Do not initialize addressable_vars.
28784         (verify_ssa): Verify new VUSE / VDEF properties.
28785         Verify that all stmts definitions have the stmt as SSA_NAME_DEF_STMT.
28786         Do not call verify_alias_info.
28787         (delete_tree_ssa): Clear the VUSE, VDEF operands.
28788         Do not free the loaded and stored syms bitmaps.  Reset the escaped
28789         and callused solutions.  Do not free addressable_vars.
28790         Remove memory-tag related code.
28791         (warn_uninitialized_var): Aliases are always available.
28792         * tree-ssa-loop-prefetch.c (gather_memory_references): Adjust.
28793         * lambda-code.c (can_put_in_inner_loop): Adjust.
28794         (can_put_after_inner_loop): Likewise.
28795         (perfect_nestify): Likewise.
28796         * tree-vect-stmts.c (vect_stmt_relevant_p): Adjust.
28797         (vect_gen_widened_results_half): Remove CALL_EXPR handling.
28798         (vectorizable_conversion): Do not mark symbols for renaming.
28799         * tree-inline.c (remap_gimple_stmt): Clear VUSE/VDEF.
28800         (expand_call_inline): Unlink the calls virtual operands before
28801         replacing it.
28802         (tree_function_versioning): Do not call update_ssa if we are not
28803         updating clones.  Simplify.
28804         * tree-ssa-phiprop.c (phivn_valid_p): Adjust.
28805         (propagate_with_phi): Likewise..
28806         * tree-outof-ssa.c (create_temp): Remove memory tag and call
28807         clobber code.  Assert we are not aliased or global.
28808         * tree-flow.h: Include tree-ssa-alias.h
28809         (enum escape_type): Remove.
28810         (struct mem_sym_stats_d): Likewise.
28811         (struct mem_ref_stats_d): Likewise.
28812         (struct gimple_df): Add vop member.  Remove global_var,
28813         call_clobbered_vars, call_used_vars, addressable_vars,
28814         aliases_compted_p and mem_ref_stats members.  Add syms_to_rename,
28815         escaped and callused members.
28816         (struct ptr_info_def): Remove all members, add points-to solution
28817         member pt.
28818         (struct var_ann_d): Remove in_vuse_list, in_vdef_list,
28819         call_clobbered, escape_mask, mpt and symbol_mem_tag members.
28820         * Makefile.in (TREE_FLOW_H): Add tree-ssa-alias.h.
28821         (tree-ssa-structalias.o): Remove tree-ssa-structalias.h.
28822         (tree-ssa-alias.o): Likewise.
28823         (toplev.o): Add tree-ssa-alias.h
28824         (GTFILES): Remove tree-ssa-structalias.h, add tree-ssa-alias.h.
28825         * gimple.c (gimple_set_bb): Fix off-by-one error.
28826         (is_gimple_reg): Do not handle memory tags.
28827         (gimple_copy): Also copy virtual operands.
28828         Delay updating the statement.  Do not reset loaded and stored syms.
28829         (gimple_set_stored_syms): Remove.
28830         (gimple_set_loaded_syms): Likewise.
28831         (gimple_call_copy_skip_args): Copy the virtual operands
28832         and mark the new statement modified.
28833         * tree-ssa-structalias.c (may_alias_p): Remove.
28834         (set_uids_in_ptset): Take the alias set to prune with as
28835         parameter.  Fold in the alias test of may_alias_p.
28836         (compute_points_to_sets): Compute whether a ptr is dereferenced
28837         in a local sbitmap.
28838         (process_constraint): Deal with &ANYTHING on the lhs, reject all
28839         other ADDRESSOF constraints on the lhs.
28840         (get_constraint_for_component_ref): Assert that we don't get
28841         ADDRESSOF constraints from the base of the reference.
28842         Properly generate UNKNOWN_OFFSET for DEREF if needed.
28843         (struct variable_info): Remove collapsed_to member.
28844         (get_varinfo_fc): Remove.
28845         (new_var_info): Do not set collapsed_to.
28846         (dump_constraint): Do not follow cycles.
28847         (dump_constraint_graph): Likewise.
28848         (build_pred_graph): Likewise.
28849         (build_succ_graph): Likewise.
28850         (rewrite_constraints): Likewise.
28851         (do_simple_structure_copy): Remove.
28852         (do_rhs_deref_structure_copy): Remove.
28853         (do_lhs_deref_structure_copy): Remove.
28854         (collapse_rest_of_var): Remove.
28855         (do_structure_copy): Re-implement.
28856         (pta_stats): New global variable.
28857         (dump_pta_stats): New function.
28858         (struct constraint_expr): Make offset signed.
28859         (UNKNOWN_OFFSET): Define special value.
28860         (dump_constraint): Dump UNKNOWN_OFFSET as UNKNOWN.
28861         (solution_set_expand): New helper function split out from ...
28862         (do_sd_constraint): ... here.
28863         (solution_set_add): Handle UNKNOWN_OFFSET.  Handle negative offsets.
28864         (do_ds_constraint): Likewise.
28865         (do_sd_constraint): Likewise.  Do not special-case ESCAPED = *ESCAPED
28866         and CALLUSED = *CALLUSED.
28867         (set_union_with_increment): Make inc argument signed.
28868         (type_safe): Remove.
28869         (get_constraint_for_ptr_offset): Handle unknown and negative
28870         constant offsets.
28871         (first_vi_for_offset): Handle offsets before start.  Bail
28872         out early for offsets beyond the variable extent.
28873         (first_or_preceding_vi_for_offset): New function.
28874         (init_base_vars): Add ESCAPED = ESCAPED + UNKNOWN_OFFSET constraint.
28875         Together with ESCAPED = *ESCAPED this properly computes reachability.
28876         (find_what_var_points_to): New function.
28877         (find_what_p_points_to): Implement in terms of find_what_var_points_to.
28878         (pt_solution_reset, pt_solution_empty_p, pt_solution_includes_global,
28879         pt_solution_includes_1, pt_solution_includes, pt_solutions_intersect_1,
28880         pt_solutions_intersect): New functions.
28881         (compute_call_used_vars): Remove.
28882         (compute_may_aliases): New main entry into PTA computation.
28883         * gimple.h (gimple_p): New typedef.
28884         (struct gimple_statement_base): Remove references_memory_p.
28885         (struct gimple_statement_with_memory_ops_base): Remove
28886         vdef_ops, vuse_ops, stores and loads members.  Add vdef and vuse
28887         members.
28888         (gimple_vuse_ops, gimple_set_vuse_ops, gimple_vdef_ops,
28889         gimple_set_vdef_ops, gimple_loaded_syms, gimple_stored_syms,
28890         gimple_set_references_memory): Remove.
28891         (gimple_vuse_op, gimple_vdef_op, gimple_vuse, gimple_vdef,
28892         gimple_vuse_ptr, gimple_vdef_ptri, gimple_set_vuse, gimple_set_vdef):
28893         New functions.
28894         * tree-cfg.c (move_block_to_fn): Fix off-by-one error.
28895         (verify_expr): Allow RESULT_DECL.
28896         (gimple_duplicate_bb): Do not copy virtual operands.
28897         (gimple_duplicate_sese_region): Adjust.
28898         (gimple_duplicate_sese_tail): Likewise.
28899         (mark_virtual_ops_in_region): Remove.
28900         (move_sese_region_to_fn): Do not call it.
28901         * passes.c (init_optimization_passes): Remove pass_reset_cc_flags
28902         and pass_simple_dse.
28903         (execute_function_todo): Handle TODO_update_address_taken,
28904         call execute_update_addresses_taken for TODO_rebuild_alias.
28905         (execute_todo): Adjust.
28906         (execute_one_pass): Init dump files early.
28907         * ipa-struct-reorg.c (finalize_var_creation): Do not mark vars
28908         call-clobbered.
28909         (create_general_new_stmt): Clear vops.
28910         * tree-ssa-reassoc.c (get_rank): Adjust.
28911         * tree-vect-slp.c (vect_create_mask_and_perm): Do not mark
28912         symbols for renaming.
28913         * params.def (PARAM_MAX_ALIASED_VOPS): Remove.
28914         (PARAM_AVG_ALIASED_VOPS): Likewise.
28915         * tree-ssanames.c (init_ssanames): Allocate SYMS_TO_RENAME.
28916         (duplicate_ssa_name_ptr_info): No need to copy the shared bitmaps.
28917         * tree-ssa-operands.c: Simplify for new virtual operand representation.
28918         (operand_build_cmp, copy_virtual_operands,
28919         create_ssa_artificial_load_stmt, add_to_addressable_set,
28920         gimple_add_to_addresses_taken): Remove public functions.
28921         (unlink_stmt_vdef): New function.
28922
28923 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
28924
28925         * config.gcc (powerpc-*-linux*): Merge variants.
28926
28927 2009-04-02  Chao-ying Fu  <fu@mips.com>
28928             James Grosbach  <james.grosbach@microchip.com>
28929
28930         * config/mips/mips.c (mips_frame_info): Add acc_mask, num_acc,
28931         num_cop0_regs, acc_save_offset, cop0_save_offset, acc_sp_offset,
28932         cop0_sp_offset.
28933         (machine_function): Add interrupt_handler_p, use_shadow_register_set_p,
28934         keep_interrupts_masked_p, use_debug_exception_return_p.
28935         (mips_attribute_table): Add interrupt, use_shadow_register_set,
28936         keep_interrupts_masked, use_debug_exception_return.
28937         (mips_interrupt_type_p, mips_use_shadow_register_set_p,
28938         mips_keep_interrupts_masked_p, mips_use_debug_exception_return_p):
28939         New functions.
28940         (mips_function_ok_for_sibcall): Return false for interrupt handlers.
28941         (mips_print_operand): Process COP0 registers to print $0 .. $31
28942         correctly for GAS to process.
28943         (mips_interrupt_extra_call_saved_reg_p): New function.
28944         (mips_cfun_call_saved_reg_p): For interrupt handlers, we need to check
28945         extra registers.
28946         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
28947         (mips_compute_frame_info): Add supports for interrupt context that
28948         includes doubleword accumulators and COP0 registers.
28949         (mips_for_each_saved_acc): New function.
28950         (mips_for_each_saved_gpr_and_fpr): Change the function name from
28951         mips_for_each_saved_reg.
28952         (mips_save_reg): Save accumulators.
28953         (mips_kernel_reg_p): A new for_each_rtx callback.
28954         (mips_expand_prologue): Support interrupt handlers.
28955         (mips_restore_reg): Restore accumulators.
28956         (mips_expand_epilogue): Support interrupt handlers.
28957         (mips_can_use_return_insn): Return false for interrupt handlers.
28958         (mips_epilogue_uses): New function.
28959         * config/mips/mips.md (UNSPEC_ERET, UNSPEC_DERET, UNSPEC_DI,
28960         UNSPEC_EHB, UNSPEC_RDPGPR, UNSPEC_COP0): New UNSPEC.
28961         (mips_eret, mips_deret, mips_di, mips_ehb, mips_rdpgpr,
28962         cop0_move): New instructions.
28963         * config/mips/mips-protos.h (mips_epilogue_uses): Declare.
28964         * config/mips/mips.h (K0_REG_NUM, K1_REG_NUM, KERNEL_REG_P): New
28965         defines.
28966         (COP0_STATUS_REG_NUM, COP0_CAUSE_REG_NUM, COP0_EPC_REG_NUM):
28967         New defines.
28968         (CAUSE_IPL, SR_IPL, SR_EXL, SR_IE): New defines.
28969         (MIPS_PROLOGUE_TEMP_REGNUM, MIPS_EPILOGUE_TEMP_REGNUM): For
28970         interrupt handlers, we use K0 as the temporary register.
28971         (EPILOGUE_USES): Change to a function call.
28972         * config/mips/sde.h (MIPS_EPILOGUE_TEMP_REGNUM): For interrupt
28973         handlers, we use K0 as the temporary register.
28974
28975         * doc/extend.texi (Function Attributes): Document interrupt,
28976         use_shadow_register_set, keep_interrupts_masked,
28977         use_debug_exception_return for MIPS attributes.
28978
28979 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
28980
28981         * config.gcc (powerpc64-*-gnu*): Add rs6000/default64.h to tm_file.
28982         Remove a number of t-files from tmake_file.
28983         * config/rs6000/sysv4.opt (mprototype): Name variable target_prototype.
28984         * config/rs6000/sysv4.h (TARGET_PROTOTYPE): Define.
28985         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Set
28986         target_prototype, not TARGET_PROTOTYPE.
28987         (LINK_OS_GNU_SPEC): Define.
28988         * config/rs6000/t-linux64 (LIB2FUNCS_EXTRA): Delete tramp.S
28989         and darwin-ldoubdle.c.
28990
28991 2009-04-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
28992
28993         PR driver/39293
28994         * gcc.c (save_temps_flag): Add support for -save-temps=obj.
28995         (cpp_options): Ditto.
28996         (default_compilers): Ditto.
28997         (display_help): Ditto.
28998         (process_command): Ditto.
28999         (do_spec_1): Ditto.
29000         (set_input): Use lbasename instead of duplicate code.
29001         (save_temps_prefix): New static for -save-temps=obj.
29002         (save_temps_length): Ditto.
29003
29004         * doc/invoke.texi (-save-temps=obj): Document new variant to
29005         -save-temps switch.
29006
29007 2009-04-02  Jeff Law  <law@redhat.com>
29008
29009         * reload1.c (fixup_eh_region_notes): Remove write-only "trap_count"
29010         variable.
29011
29012 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
29013
29014         * configure.ac: Support -Bstatic/-Bdynamic for linker version > 2.
29015         * configure: Regenerated.
29016
29017 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
29018
29019         * c-decl.c (merge_decls): Make sure newdecl and olddecl don't
29020         share the argument list.
29021
29022 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
29023
29024         Merge
29025
29026         2009-02-12  Diego Novillo  <dnovillo@google.com>
29027
29028         * varpool.c (debug_varpool): New.
29029         * cgraph.h (debug_varpool): Declare.
29030
29031 2009-04-02  Jan Hubicka  <jh@suse.cz>
29032
29033         * passes.c (init_optimization_passes): Remove two copies of ehcleanup
29034         pass.
29035
29036 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
29037
29038         * config/i386/i386.c (ix86_abi): Move initialization to ...
29039         (override_options): Here.
29040
29041 2009-04-02  Christian Bruel  <christian.bruel@st.com>
29042
29043         * config/sh/sh.c (sh_dwarf_register_span): New function.
29044         (TARGET_DWARF_REGISTER_SPAN): Define.
29045         * config/sh/sh-protos.h (sh_dwarf_register_span): Declare.
29046
29047 2009-04-02  Ira Rosen  <irar@il.ibm.com>
29048
29049         PR tree-optimization/39595
29050         * tree-vect-slp.c (vect_build_slp_tree): Check that the size of
29051         interleaved loads group is not  greater than the SLP group size.
29052
29053 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
29054
29055         * builtins.c (is_builtin_name): New.
29056         (called_as_built_in): Use is_builtin_name.
29057         * tree.h (is_builtin_name): New.
29058         * varasm.c (incorporeal_function_p): Use is_builtin_name
29059
29060 2009-04-02  Andrew Stubbs  <ams@codesourcery.com>
29061
29062         * config/sh/linux-unwind.h: Disable when inhibit_libc is defined.
29063
29064 2009-04-02  Dodji Seketeli  <dodji@redhat.com>
29065
29066         PR c++/26693
29067         * c-decl.c (clone_underlying_type): Move this ...
29068         * c-common.c (set_underlying_type): ... here.
29069         Also, make sure the function properly sets TYPE_STUB_DECL() on
29070         the newly created typedef variant type.
29071         * c-common.h (is_typedef_decl, set_underlying_type): Declare ...
29072         * c-common.c (is_typedef_decl, set_underlying_type): ... new entry
29073         points.
29074
29075 2009-04-02  Richard Guenther  <rguenther@suse.de>
29076
29077         PR tree-optimization/37221
29078         * tree-flow.h (degenerate_phi_result): Declare.
29079         * tree-ssa-dom.c (degenerate_phi_result): Export.
29080         * tree-scalar-evolution.c (analyze_initial_condition): If
29081         the initial condition is defined by a degenerate PHI node
29082         use the degenerate value.
29083
29084 2009-04-01  Eric Botcazou  <ebotcazou@adacore.com>
29085
29086         PR rtl-optimization/39588
29087         * combine.c (merge_outer_ops): Do not set the constant when this
29088         is not necessary.
29089         (simplify_shift_const_1): Do not modify it either in this case.
29090
29091 2009-04-01  Steven Bosscher  <steven@gcc.gnu.org>
29092
29093         * config/ia64/ia64.c (ia64_handle_option): Inform user that Itanium1
29094         tuning is deprecated if -mtune value is set to an Itanium1 variant.
29095
29096 2009-04-01  Janis Johnson  <janis187@us.ibm.com>
29097
29098         PR c/29027
29099         * c-lex.c (interpret_float): Default (no suffix) is double.
29100
29101 2009-04-1  Xinliang David Li  <davidxl@google.com>
29102
29103         * config/i386/i386.c (legitimate_constant_p): Recognize
29104         all one vector constant.
29105
29106 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
29107
29108         * config/vax/vax.c: Add #includes to silence warnings.
29109         Change #include order to silence two warnings.
29110
29111 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
29112
29113         * config/vax/linux.h (TARGET_DEFAULT): Add the MASK_QMATH flag bit.
29114         (ASM_SPEC): Pass -k to the assembler for PIC code.
29115
29116 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
29117
29118         * config.gcc: Add vax-*-linux* to the switch.
29119         * config/vax/linux.h: New file. (TARGET_VERSION,
29120         TARGET_OS_CPP_BUILTINS, TARGET_DEFAULT, CPP_SPEC, LINK_SPEC): Define.
29121
29122 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
29123
29124         * config/vax/vax.c (vax_output_int_move, adjacent_operands_p):
29125         Use predicate macros instead of GET_CODE() == foo.
29126         * config/vax/vax.md (movsi_2, movstrictqi, and<mode>3, ashrsi3,
29127         ashlsi3, rotrsi3, <unnamed>): Likewise.
29128
29129 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
29130
29131         * config/vax/builtins.md (jbbssiqi, jbbssihi, jbbssisi, jbbcciqi,
29132         jbbccihi, jbbccisi): Remova trailing whitespace.
29133         * config/vax/constraints.md: Likewise.
29134         * config/vax/elf.h (ASM_PREFERRED_EH_DATA_FORMAT): Likewise.
29135         * config/vax/openbsd1.h (OBSD_OLD_GAS): Likewise.
29136         * config/vax/predicates.md: Likewise.
29137         * config/vax/vax.c (print_operand_address, vax_output_int_move,
29138         vax_expand_addsub_di_operands, adjacent_operands_p): Likewise.
29139         * config/vax/vax.h: Likewise.
29140         * config/vax/vax.md (nonlocal_goto): Likewise.
29141
29142 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
29143
29144         * config/vax/vax.c (vax_float_literal, vax_output_int_move)
29145         (indirectable_address_p, adjacent_operands_p): Add spaces around
29146         braces.
29147         * config/vax/vax-protos.h (adjacent_operands_p): Likewise.
29148
29149 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
29150
29151         * config/vax/vax.c (legitimate_constant_address_p,
29152         legitimate_constant_p, indirectable_address_p, nonindexed_address_p,
29153         index_term_p, reg_plus_index_p, legitimate_address_p,
29154         vax_mode_dependent_address_p): Update comments to match functions
29155         modified by the recent int->bool conversion.
29156
29157 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
29158
29159         * config/vax/builtins.md: Update copyright message.
29160         * config/vax/constraints.md: Likewise.
29161         * config/vax/netbsd-elf.h: Likewise.
29162         * config/vax/predicates.md: Likewise.
29163         * config/vax/vax-protos.h: Likewise.
29164         * config/vax/vax.c: Likewise.
29165         * config/vax/vax.h: Likewise.
29166         * config/vax/vax.md: Likewise.
29167         * config/vax/vax.opt: Likewise.
29168
29169 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
29170
29171         * config/vax/builtins.md (ffssi2, ffssi2_internal,
29172         sync_lock_test_and_set<mode>, sync_lock_release<mode>): Fix indention.
29173         * config/vax/constraints.md (B, R): Likewise.
29174         * config/vax/predicates.md (external_memory_operand,
29175         nonimmediate_addsub_di_operand): Likewise.
29176         * config/vax/vax.c (vax_output_int_add): Likewise.
29177         * config/vax/vax.md (movsi, movsi_2, mov<mode>, call_value,
29178         untyped_call): Likewise.
29179
29180 2009-04-01  Matt Thomas  <matt@3am-software.com>
29181
29182         * config/vax/predicates.md: New file.
29183         (symbolic_operand, local_symbolic_operand, external_symbolic_operand,
29184         external_const_operand, nonsymbolic_operand, external_memory_operand,
29185         indirect_memory_operand, indexed_memory_operand,
29186         illegal_blk_memory_operand, illegal_addsub_di_memory_operand,
29187         nonimmediate_addsub_di_operand, general_addsub_di_operand): New
29188         predicate.
29189         * config/vax/constraints.md: New file.
29190         (Z0, U06,  U08, U16, CN6, S08, S16, I, J, K, L, M, N, O, G, Q, B, R, T):
29191         New constraint.
29192         * config/vax/builtins.md: New file.
29193         (ffssi2, ffssi2_internal, sync_lock_test_and_set<mode>, jbbssiqi,
29194         jbbssihi, jbbssisi, sync_lock_release<mode>, jbbcciqi, jbbccihi,
29195         jbbccisi): Define.
29196         * config/vax/vax.opt (mqmath): Add option.
29197         * config/vax/vax.md (isfx): Extend with DI.
29198         (VAXintQH, VAXintQHSD): Define.
29199         (tst<mode>, cmp<mode>, *bit<mode>, movmemhi1, truncsiqi2, truncsihi2,
29200         mulsidi3, add<mode>3, sub<mode>, mul<mode>3, div<mode>3, and<mode>,
29201         and<mode>_const_int, ior<mode>3, xor<mode>3, neg<mode>2,
29202         one_cmpl<mode>2, ashlsi3, lshrsi3, rotlsi3): Update constraints.
29203         (movdi): Update constraints and use vax_output_int_move().
29204         (movsi, movsi_2, pushlclsymreg, pushextsymreg, movlclsymreg,
29205         movextsymreg, adddi3, adcdi3, subdi3, sbcdi3, pushextsym, movextsym,
29206         pushlclsym, movlclsym, movaddr<mode>, pushaddr<mode>,
29207         nonlocal_goto): New.
29208         (mov<mode>): Extend accepted operand types.
29209         (subdi3_old): Rename from subdi3, change update constraints and use
29210         a new implementation.
29211         * config/vax/vax.h (PCC_BITFIELD_TYPE_MATTERS): Add space.
29212         (FRAME_POINTER_CFA_OFFSET, IRA_COVER_CLASSES, CLASS_MAX_NREGS,
29213         MOVE_RATIO, CLEAR_RATIO): Define.
29214         (REG_CLASS_FROM_LETTER, CONST_OK_FOR_LETTER_P,
29215         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT): Delete.
29216         (PRINT_OPERAND): Redefine using a function instead of inlined code.
29217         * config/vax/vax.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Define.
29218         (split_quadword_operands): Make static and really allow variable
29219         splitting.
29220         (print_operand_address): Update for PIC generation.
29221         (print_operand, vax_builtin_setjmp_frame_value, vax_output_int_subtract,
29222         indexable_address_p, fixup_mathdi_operand,
29223         vax_expand_addsub_di_operands, adjacent_operands_p): New.
29224         (vax_float_literal, legitimate_constant_p,
29225         indirectable_constant_address_p, index_term_p,
29226         reg_plus_index_p): Return bool instead of int.
29227         (vax_rtx_costs): Fix cost for CONST_INT, indent and use HOST_WIDE_INT
29228         where needed.
29229         (vax_output_int_move, vax_output_int_add): Extend to allow PIC
29230         generation.
29231         (vax_output_conditional_branch): Indent.
29232         (legitimate_constant_address_p, indirectable_constant_address_p,
29233         indirectable_address_p, nonindexed_address_p, legitimate_address_p,
29234         vax_mode_dependent_address_p): Return bool instead of int, update for
29235         PIC generation.
29236         * config/vax/vax-protos.h (legitimate_constant_address_p,
29237         legitimate_constant_p, legitimate_address_p,
29238         vax_mode_dependent_address_p): Change declaration to bool.
29239         (legitimate_pic_operand_p, adjacent_operands_p, print_operand,
29240         vax_expand_addsub_di_operands, vax_output_int_subtract,
29241         vax_output_movmemsi): Declare.
29242         (split_quadword_operands, vax_float_literal): Delete declaration.
29243         * config/vax/netbsd-elf.h (CC1_SPEC, CC1PLUS_SPEC) Define.
29244         * config/vax/elf.h (NO_EXTERNAL_INDIRECT_ADDRESS,
29245         VAX_CC1_AND_CC1PLUS_SPEC, ASM_PREFERRED_EH_DATA_FORMAT,
29246         ASM_OUTPUT_DWARF_PCREL): Define.
29247         (ASM_SPEC): Change definition to allow PIC generation.
29248
29249 2009-04-01  Steve Ellcey  <sje@cup.hp.com>
29250
29251         * doc/sourcebuild.texi: Update front-end requirements.
29252
29253 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
29254
29255         PR target/39226
29256         * config/rs6000/rs6000.md (andsi3_internal5_nomc,
29257         anddi3_internal2_nomc, anddi3_internal3_nomc): Removed.
29258         (booldi3_internal3): Use boolean_or_operator instead of
29259         boolean_operator.
29260
29261 2009-04-01  Joseph Myers  <joseph@codesourcery.com>
29262
29263         PR c/39605
29264         * c-decl.c (grokdeclarator): Pedwarn for file-scope array
29265         declarator whose size is not an integer constant expression but
29266         folds to an integer constant, then treat it as a constant
29267         subsequently.
29268
29269 2009-04-01  Richard Guenther  <rguenther@suse.de>
29270
29271         * fold-const.c (fold_plusminus_mult_expr): Do not fold
29272         i * 4 + 2 to (i * 2 + 1) * 2.
29273
29274 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
29275
29276         PR c/37772
29277         * c-parser.c (c_parser_asm_statement): Skip until close paren and
29278         return if c_parser_asm_string_literal returned NULL.
29279
29280 2009-04-01  Nick Clifton  <nickc@redhat.com>
29281
29282         * config/m32c/m32c.h (LIBGCC2_UNITS_PER_WORD): Define if not
29283         already defined.
29284         * config/m32c/t-m32c (LIB2FUNCS_EXTRA): Add m32c-lib2-trapv.c.
29285         * config/m32c/m32c-lib2.c: Remove unused typedefs.  Rename the
29286         other typedefs to avoid conflicts with libgcc2.c.  Define labels
29287         to gain 16-bit bit-manipulation functions from libgcc2.c and then
29288         include it.
29289         * config/m32c/m32c-lib2-trapv.c: New file.  Define labels
29290         to gain 16-bit trapping arithmetic functions from libgcc2.c and
29291         then include it.
29292
29293 2009-04-01  Rafael Avila de Espindola  <espindola@google.com>
29294
29295         * varasm.c (default_function_rodata_section): Declare DOT as
29296         const char*.
29297
29298 2009-04-01  Kai Tietz  <kai.tietz@onevision.com>
29299             Andrey Galkin  <agalkin@hypercom.com>
29300
29301         PR/39492
29302         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address):
29303         Make object_name unique for each process.
29304
29305 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
29306
29307         PR other/39591
29308         * omp-low.c (remove_exit_barrier): Don't optimize if there are any
29309         addressable variables in the parallel that could go out of scope while
29310         running queued tasks.
29311
29312 2009-04-01  Anatoly Sokolov  <aesok@post.ru>
29313
29314         * config/avr/avr.h (avr_case_values_threshold): Remove declaration.
29315         (CASE_VALUES_THRESHOLD): Redefine.
29316         * config/avr/avr.c (avr_override_options): Remove initialization of
29317         avr_case_values_threshold variable.
29318         (avr_case_values_threshold): Remove variable. Add new function.
29319         * config/avr/avr-protos.h (avr_case_values_threshold): Declare.
29320         * config/avr/avr.opt (mno-tablejump): Remove option.
29321         * doc/invoke.texi (AVR Options): Remove -mno-tablejump.
29322
29323 2009-04-01  DJ Delorie  <dj@redhat.com>
29324
29325         * varasm.c (default_function_rodata_section): Don't assume
29326         anything about where the first '.' in the section name is.
29327
29328 2009-04-01  Alan Modra  <amodra@bigpond.net.au>
29329
29330         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Delete redundant
29331         rs6000_emit_stack_tie.
29332
29333 2009-03-31  Ian Lance Taylor  <iant@google.com>
29334
29335         * tree-eh.c (tree_remove_unreachable_handlers): Compare
29336         gimple_code with GIMPLE_RESX, not RESX.
29337
29338 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
29339
29340         * c-common.c (c_get_ident): New.
29341         (c_common_nodes_and_builtins): Call it for type names that may be NULL.
29342
29343 2009-04-01  Ben Elliston  <bje@au.ibm.com>
29344
29345         * config/rs6000/sysv4.opt (msdata): Improve option description.
29346
29347 2009-03-31  Steve Ellcey  <sje@cup.hp.com>
29348
29349         * config/ia64/ia64.md (divsf3_internal_lat): Remove.
29350         (divdf3_internal_lat): Remove.
29351         (divxf3_internal_lat): Remove.
29352         (divxf3_internal_thr): Remove.
29353         (divxf): Use divxf3_internal.
29354         * config/ia64/div.md (divsf3_internal_lat): New.
29355         (divdf3_internal_lat): New.
29356         (divxf3_internal): New.
29357
29358 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
29359
29360         PR c/448
29361         * Makefile.in (USE_GCC_STDINT): Define.
29362         (stmp-int-hdrs): Install stdint.h if applicable.
29363         * c-common.c (CHAR16_TYPE): Define in terms of UINT_LEAST16_TYPE
29364         if known.
29365         (CHAR32_TYPE): Define in terms of UINT_LEAST32_TYPE if known.
29366         (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE, INT64_TYPE,
29367         UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
29368         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
29369         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
29370         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
29371         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
29372         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
29373         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
29374         (c_common_nodes_and_builtins): Initialize
29375         underlying_wchar_type_node.  Do not initialize
29376         signed_wchar_type_node or unsigned_wchar_type_node.  Initialize
29377         nodes for new types.
29378         (c_stddef_cpp_builtins): Define macros for new types.
29379         * c-common.h (CTI_SIGNED_WCHAR_TYPE, CTI_UNSIGNED_WCHAR_TYPE):
29380         Remove.
29381         (CTI_UNDERLYING_WCHAR_TYPE, CTI_SIG_ATOMIC_TYPE, CTI_INT8_TYPE,
29382         CTI_INT16_TYPE, CTI_INT32_TYPE, CTI_INT64_TYPE, CTI_UINT8_TYPE,
29383         CTI_UINT16_TYPE, CTI_UINT32_TYPE, CTI_UINT64_TYPE,
29384         CTI_INT_LEAST8_TYPE, CTI_INT_LEAST16_TYPE, CTI_INT_LEAST32_TYPE,
29385         CTI_INT_LEAST64_TYPE, CTI_UINT_LEAST8_TYPE, CTI_UINT_LEAST16_TYPE,
29386         CTI_UINT_LEAST32_TYPE, CTI_UINT_LEAST64_TYPE, CTI_INT_FAST8_TYPE,
29387         CTI_INT_FAST16_TYPE, CTI_INT_FAST32_TYPE, CTI_INT_FAST64_TYPE,
29388         CTI_UINT_FAST8_TYPE, CTI_UINT_FAST16_TYPE, CTI_UINT_FAST32_TYPE,
29389         CTI_UINT_FAST64_TYPE, CTI_INTPTR_TYPE, CTI_UINTPTR_TYPE): Define.
29390         (signed_wchar_type_node, unsigned_wchar_type_node): Remove.
29391         (underlying_wchar_type_node, sig_atomic_type_node, int8_type_node,
29392         int16_type_node, int32_type_node, int64_type_node,
29393         uint8_type_node, uint16_type_node, c_uint32_type_node,
29394         c_uint64_type_node, int_least8_type_node, int_least16_type_node,
29395         int_least32_type_node, int_least64_type_node,
29396         uint_least8_type_node, uint_least16_type_node,
29397         uint_least32_type_node, uint_least64_type_node,
29398         int_fast8_type_node, int_fast16_type_node, int_fast32_type_node,
29399         int_fast64_type_node, uint_fast8_type_node, uint_fast16_type_node,
29400         uint_fast32_type_node, uint_fast64_type_node, intptr_type_node,
29401         uintptr_type_node): Define.
29402         * c-cppbuiltin.c (builtin_define_constants,
29403         builtin_define_type_minmax): New.
29404         (builtin_define_stdint_macros): Define more macros.
29405         (c_cpp_builtins): Define more limit macros.
29406         (type_suffix): New.
29407         (builtin_define_type_max): Define in terms of
29408         builtin_define_type_minmax.  Remove is_long parameter.  All
29409         callers changed.
29410         * config.gcc (use_gcc_stdint): Define.
29411         (tm_file): Add glibc-stdint.h for targets using glibc or uClibc.
29412         Add newlib-stdint.h for generic targets.
29413         * config/glibc-stdint.h, config/newlib-stdint.h,
29414         ginclude/stdint-gcc.h, ginclude/stdint-wrap.h: New.
29415         * config/m32c/m32c.h (UINTPTR_TYPE): Define.
29416         * config/score/score.h (UINTPTR_TYPE): Define.
29417         * config/sol2.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
29418         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
29419         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
29420         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
29421         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
29422         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
29423         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
29424         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
29425         * config/spu/spu.h (STDINT_LONG32): Define.
29426         * configure.ac (use_gcc_stdint): Substitute.
29427         * configure: Regenerate.
29428         * doc/cpp.texi (__SIG_ATOMIC_TYPE__, __INT8_TYPE__,
29429         __INT16_TYPE__, __INT32_TYPE__, __INT64_TYPE__, __UINT8_TYPE__,
29430         __UINT16_TYPE__, __UINT32_TYPE__, __UINT64_TYPE__,
29431         __INT_LEAST8_TYPE__, __INT_LEAST16_TYPE__, __INT_LEAST32_TYPE__,
29432         __INT_LEAST64_TYPE__, __UINT_LEAST8_TYPE__, __UINT_LEAST16_TYPE__,
29433         __UINT_LEAST32_TYPE_, __UINT_LEAST64_TYPE__, __INT_FAST8_TYPE__,
29434         __INT_FAST16_TYPE__, __INT_FAST32_TYPE__, __INT_FAST64_TYPE__,
29435         __UINT_FAST8_TYPE__, __UINT_FAST16_TYPE__, __UINT_FAST32_TYPE__,
29436         __UINT_FAST64_TYPE__, __INTPTR_TYPE__, __UINTPTR_TYPE__,
29437         __WINT_MAX__, __SIZE_MAX__, __PTRDIFF_MAX__, __UINTMAX_MAX__,
29438         __SIG_ATOMIC_MAX__, __INT8_MAX__, __INT16_MAX__, __INT32_MAX__,
29439         __INT64_MAX__, __UINT8_MAX__, __UINT16_MAX__, __UINT32_MAX__,
29440         __UINT64_MAX__, __INT_LEAST8_MAX__, __INT_LEAST16_MAX__,
29441         __INT_LEAST32_MAX__, __INT_LEAST64_MAX__, __UINT_LEAST8_MAX__,
29442         __UINT_LEAST16_MAX__, __UINT_LEAST32_MAX__, __UINT_LEAST64_MAX__,
29443         __INT_FAST8_MAX__, __INT_FAST16_MAX__, __INT_FAST32_MAX__,
29444         __INT_FAST64_MAX__, __UINT_FAST8_MAX__, __UINT_FAST16_MAX__,
29445         __UINT_FAST32_MAX__, __UINT_FAST64_MAX__, __INTPTR_MAX__,
29446         __UINTPTR_MAX__, __WCHAR_MIN__, __WINT_MIN__, __SIG_ATOMIC_MIN__,
29447         __INT8_C, __INT16_C, __INT32_C, __INT64_C, __UINT8_C, __UINT16_C,
29448         __UINT32_C, __UINT64_C, __INTMAX_C, __UINTMAX_C): Document.
29449         * doc/tm.texi (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE,
29450         INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
29451         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
29452         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
29453         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
29454         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
29455         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
29456         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Document.
29457
29458 2009-03-31  Bernd Schmidt  <bernd.schmidt@analog.com>
29459
29460         * loop-iv.c (suitable_set_for_replacement): Renamed from
29461         simplify_using_assignment; changed to return bool and to accept new
29462         args DEST and SRC.  Return true iff we find a source/destination pair
29463         that can be used to make a replacement, and fill SRC and DEST if so.
29464         Remove arg ALTERED.  Don't deal with altered regs here.  All callers
29465         changed.
29466         (simplify_using_initial_values): Deal with altered regs here and track
29467         more precisely the effect they have on the validity of our expression.
29468
29469         * loop-iv.c (simplify_using_condition): A condition of the form
29470         (EQ REG CONST) can be used to simply make a substitution.
29471         (simplify_using_initial_values): Keep track of conditions we have seen
29472         and keep using them to simplify new expressions, while applying the
29473         same substitutions to them as to the expression.
29474
29475         * simplify-rtx.c (simplify_relational_operation_1): Simplify
29476         (LTU (PLUS a C) C) or (LTU (PLUS a C) a) to (GEU a -C); likewise with
29477         GEU/LTU reversed.
29478
29479         * loop-iv.c (determine_max_iter): New arg OLD_NITER.  All callers
29480         changed.  Use this when trying to improve the upper bound.
29481         Generate the comparison by using simplify_gen_relational.
29482
29483         * loop-iv.c (simple_rhs_p): Allow more kinds of expressions.
29484
29485         * loop-iv.c (replace_single_def_regs, replace_in_expr): New static
29486         functions.
29487         (simplify_using_assignment, simplify_using_initial_values): Call
29488         replace_in_expr to make replacements.  Call replace_single_def_regs
29489         once on the initial version of the expression.
29490
29491 2009-03-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
29492
29493         PR target/27237
29494         * doc/invoke.texi (ARM Options): Update documentation for -mthumb.
29495
29496 2009-03-31  Richard Guenther  <rguenther@suse.de>
29497
29498         PR middle-end/31029
29499         * fold-const.c (fold_binary): Fold X +- Y CMP X to Y CMP 0 for
29500         equality comparisons.  Fold C - X CMP X if C % 2 == 1.
29501
29502 2009-03-31  Richard Guenther  <rguenther@suse.de>
29503
29504         * tree.h (div_if_zero_remainder): Declare.
29505         * fold-const.c (div_if_zero_remainder): Export.
29506         * tree-ssa-forwprop.c
29507         (forward_propagate_addr_into_variable_array_index): Handle
29508         constant array index addition outside of the variable index.
29509
29510 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
29511
29512         PR target/39592
29513         * config/i386/i386.md (*floatunssi<mode>2_1, two unnamed
29514         define_splits, floatunssi<mode>2): Require x87 conversions from
29515         DImode to be permitted.
29516
29517 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
29518
29519         PR preprocessor/15638
29520         * c-common.c (c_cpp_error): Handle CPP_DL_FATAL.
29521
29522 2009-03-31  Richard Guenther  <rguenther@suse.de>
29523
29524         PR middle-end/23401
29525         PR middle-end/27810
29526         * tree.h (DECL_GIMPLE_FORMAL_TEMP_P): Remove.
29527         (struct tree_decl_with_vis): Remove gimple_formal_temp member.
29528         * tree-eh.c (lower_eh_constructs_2): Move LHS assignment to
29529         a separate statement.
29530         * gimplify.c (pop_gimplify_context): Remove formal temp handling.
29531         (lookup_tmp_var): Likewise.
29532         (is_gimple_formal_tmp_or_call_rhs): Remove.
29533         (is_gimple_reg_or_call_rhs): Rename to ...
29534         (is_gimple_reg_rhs_or_call): ... this.
29535         (is_gimple_mem_or_call_rhs): Rename to ...
29536         (is_gimple_mem_rhs_or_call): ... this.
29537         (internal_get_tmp_var): Use is_gimple_reg_rhs_or_call.  Set
29538         DECL_GIMPLE_REG_P only if is_formal is true.
29539         (gimplify_compound_lval): Use is_gimple_reg.  Remove workaround
29540         for non-proper post-modify expression gimplification.
29541         (gimplify_self_mod_expr): For post-modify expressions gimplify
29542         the lvalue to a minimal lvalue.
29543         (rhs_predicate_for): Remove formal temp case.
29544         (gimplify_modify_expr_rhs): Likewise.
29545         (gimplify_addr_expr): Use is_gimple_reg.
29546         (gimplify_expr): Remove formal temp cases.
29547         (gimple_regimplify_operands): Likewise.
29548         * tree-ssa-pre.c (get_or_alloc_expr_for): Treat EXC_PTR_EXPR
29549         and FILTER_EXPR like constants.
29550         * gimple.c (walk_gimple_op): Fix val_only initialization, use
29551         is_gimple_reg.
29552         (is_gimple_formal_tmp_rhs): Remove.
29553         (is_gimple_reg_rhs): Remove special casing.
29554         (is_gimple_mem_rhs): Fix.
29555         (is_gimple_reg): Move DECL_GIMPLE_REG_P handling earlier.
29556         (is_gimple_formal_tmp_var): Remove.
29557         (is_gimple_formal_tmp_reg): Likewise.
29558         (is_gimple_min_lval): Allow invariant component ref parts.
29559         * gimple.h (is_gimple_formal_tmp_rhs, is_gimple_formal_tmp_var,
29560         is_gimple_formal_tmp_reg): Remove declarations.
29561         * tree-cfg.c (verify_expr): Verify that variables with address
29562         taken do not have DECL_GIMPLE_REG_P set.
29563         * tree-mudflap.c (mf_build_check_statement_for): Use
29564         force_gimple_operand instead of gimplify_expr.
29565
29566 2009-03-31  Ayal Zaks  <zaks@il.ibm.com>
29567
29568         * modulo-sched.c (sms_schedule_by_order): Pass the actual
29569         schedulable rows to compute_split_row.
29570
29571 2009-03-31  Ben Elliston  <bje@au.ibm.com>
29572
29573         PR target/31635
29574         * config/rs6000/rs6000.c (rs6000_handle_option): Handle
29575         OPT_mvrsave.
29576
29577 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
29578
29579         * doc/invoke.texi (RS/6000 and PowerPC Options):Document mtls-markers.
29580         * configure.ac (HAVE_AS_TLS_MARKERS): New gas feature check.
29581         * configure: Regenerate.
29582         * config.in: Regenerate.
29583         * config/rs6000/rs6000.opt (mtls-markers): Add.
29584         * config/rs6000/rs6000.h (TARGET_TLS_MARKERS): Define.
29585         * config/rs6000/rs6000.md (tls_gd_aix, tls_gd_sysv): Add splitter.
29586         (tls_ld_aix, tls_ld_sysv): Likewise.
29587         (tls_gd, tls_gd_call_aix, tls_gd_call_sysv): New insns.
29588         (tls_ld, tls_ld_call_aix, tls_ld_call_sysv): Likewise.
29589
29590 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
29591
29592         * config/spu/spu.c (spu_expand_prologue): Delete redundant code.
29593
29594 2009-03-30  Jan Hubicka  <jh@suse.cz>
29595
29596         * tree-eh.c (make_eh_edges): Set probability 100% to first edge
29597         out of RESX.
29598         (tree_remove_unreachable_handlers): Cleanup EH predecestor
29599         detection and label handling.
29600
29601 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
29602
29603         * ira-int.h (ira_allocno): Rename left_conflicts_num to
29604         left_conflicts_size.
29605         (ALLOCNO_LEFT_CONFLICTS_NUM): Rename to
29606         ALLOCNO_LEFT_CONFLICTS_SIZE.
29607
29608         * ira-color.c (allocno_spill_priority, push_allocno_to_stack,
29609         remove_allocno_from_bucket_and_push,
29610         allocno_spill_priority_compare, push_allocnos_to_stack,
29611         setup_allocno_available_regs_num): Use ALLOCNO_LEFT_CONFLICTS_SIZE
29612         instead of ALLOCNO_LEFT_CONFLICTS_NUM.
29613         (setup_allocno_left_conflicts_num): Ditto.  Rename to
29614         setup_allocno_left_conflicts_size.
29615         (put_allocno_into_bucket): Use ALLOCNO_LEFT_CONFLICTS_SIZE
29616         instead of ALLOCNO_LEFT_CONFLICTS_NUM and
29617         setup_allocno_left_conflicts_size instead of
29618         setup_allocno_left_conflicts_num.
29619
29620         * ira-build.c (ira_create_allocno): Use
29621         ALLOCNO_LEFT_CONFLICTS_SIZE instead of
29622         ALLOCNO_LEFT_CONFLICTS_NUM.
29623
29624 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
29625
29626         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
29627         instead of DF_LR_OUT.
29628
29629         * ira-lives.c (process_bb_node_lives): Ditto.
29630
29631         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
29632         instead of DF_LR_{OUT,IN}.
29633
29634         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
29635
29636         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
29637
29638 2009-03-30  Jan Hubicka  <jh@suse.cz>
29639
29640         * except.c (label_to_region_map): Fix thinko.
29641
29642 2009-03-30  Steve Ellcey  <sje@cup.hp.com>
29643
29644         PR middle-end/38237
29645         * tree.h (tree_find_value): New declaration.
29646         * tree.c (tree_find_value): New function.
29647         * varasm.c (assemble_external): Avoid duplicate entries on lists.
29648
29649 2009-03-30  Jakub Jelinek  <jakub@redhat.com>
29650
29651         PR debug/39563
29652         * c-decl.c (struct c_binding): Add locus field.
29653         (bind): Add locus argument, set locus field from it.
29654         (pop_scope): For b->nested VAR_DECL or FUNCTION_DECL,
29655         add a DECL_EXTERNAL copy of b->decl to current BLOCK_VARS.
29656         (push_file_scope, pushtag, pushdecl, pushdecl_top_level,
29657         implicitly_declare, undeclared_variable, lookup_label,
29658         declare_label, c_make_fname_decl, c_builtin_function,
29659         c_builtin_function_ext_scope, store_parm_decls_newstyle): Adjust
29660         bind callers.
29661
29662 2009-03-30  H.J. Lu  <hongjiu.lu@intel.com>
29663
29664         PR target/38781
29665         * config/i386/i386.c (classify_argument): Check total size of
29666         structure.
29667
29668 2009-03-30  Martin Jambor  <mjambor@suse.cz>
29669
29670         * ipa-prop.h (jump_func_type): Rename IPA_UNKNOWN, IPA_CONST,
29671         IPA_CONST_MEMBER_PTR, and IPA_PASS_THROUGH to IPA_JF_UNKNOWN,
29672         IPA_JF_CONST, IPA_JF_CONST_MEMBER_PTR, and IPA_JF_PASS_THROUGH
29673         respectively.
29674
29675         * tree-dfa.c (get_ref_base_and_extent): Return -1 maxsize if
29676         seen_variable_array_ref while also traversing a union.
29677
29678         * tree-inline.c (optimize_inline_calls): Do not call
29679         cgraph_node_remove_callees.
29680         * cgraphbuild.c (remove_cgraph_callee_edges): New function.
29681         (pass_remove_cgraph_callee_edges): New variable.
29682         * passes.c (init_optimization_passes): Add
29683         pass_remove_cgraph_callee_edges after early inlining and before all
29684         late intraprocedural passes.
29685
29686         * omp-low.c (expand_omp_taskreg): Always set current_function_decl.
29687
29688 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
29689
29690         * config/sparc/sparc.md (*nand<V64mode>_vis, *nand<V32mode>_vis):
29691         Fix typos in names.
29692
29693 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
29694
29695         * combine.c (simplify_comparison): Use have_insn_for.
29696         * dojump.c (do_jump): Likewise.
29697
29698 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
29699
29700         * config/sparc/sparc.c (sparc_compare_emitted): Remove.
29701         (gen_compare_reg, emit_v9_brxx_insn): Handle MODE_CC
29702         sparc_compare_op0 like sparc_compare_emitted used to be handled.
29703         (sparc_expand_compare_and_swap_12): Set sparc_compare_op0
29704         instead of sparc_compare_emitted.
29705         * config/sparc/sparc.h (sparc_compare_emitted): Remove.
29706         * config/sparc/sparc.md (stack_protect_test): Set sparc_compare_op0
29707         instead of sparc_compare_emitted.
29708
29709 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
29710
29711         * bb-reorder.c (partition_hot_cold_basic_blocks): Do not
29712         enter/exit cfglayout mode.
29713         (pass_partition_block): Require it.
29714         * combine.c (find_single_use, reg_dead_at_p): Use CFG.
29715         (combine_instructions): Track basic blocks instead of labels.
29716         (update_cfg_for_uncondjump): New.
29717         (try_combine): Use it.  Update jumps after rescanning.
29718         (pass_combine): Require PROP_cfglayout.
29719         * passes.c (pass_outof_cfg_layout_mode): Move after regmove.
29720
29721 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
29722
29723         * cfglayout.c (pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode):
29724         Provide/destroy PROP_cfglayout respectively.
29725         * gcse.c (pass_jump_bypass, pass_gcse): Require it.
29726         * tree-pass.h (PROP_cfglayout): New.
29727
29728 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
29729
29730         * fold-const.c (const_binop, fold_convert_const_real_from_fixed,
29731         fold_convert_const_fixed_from_fixed,
29732         fold_convert_const_fixed_from_int,
29733         fold_convert_const_fixed_from_real, fold_negate_const): Do not
29734         set TREE_CONSTANT_OVERFLOW.
29735         * tree.def: Remove mention of TREE_CONSTANT_OVERFLOW.
29736         * tree.h (TREE_CONSTANT_OVERFLOW): Delete.
29737
29738 2009-03-30  Ira Rosen  <irar@il.ibm.com>
29739
29740         * tree-vect-loop-manip.c: New file.
29741         * tree-vectorizer.c: Update documentation and included files.
29742         (vect_loop_location): Make extern.
29743         (rename_use_op): Move to tree-vect-loop-manip.c
29744         (rename_variables_in_bb, rename_variables_in_loop,
29745         slpeel_update_phis_for_duplicate_loop,
29746         slpeel_update_phi_nodes_for_guard1,
29747         slpeel_update_phi_nodes_for_guard2, slpeel_make_loop_iterate_ntimes,
29748         slpeel_tree_duplicate_loop_to_edge_cfg, slpeel_add_loop_guard,
29749         slpeel_can_duplicate_loop_p, slpeel_verify_cfg_after_peeling,
29750         set_prologue_iterations, slpeel_tree_peel_loop_to_edge,
29751         find_loop_location): Likewise.
29752         (new_stmt_vec_info): Move to tree-vect-stmts.c.
29753         (init_stmt_vec_info_vec, free_stmt_vec_info_vec, free_stmt_vec_info,
29754         get_vectype_for_scalar_type, vect_is_simple_use,
29755         supportable_widening_operation, supportable_narrowing_operation):
29756         Likewise.
29757         (bb_in_loop_p): Move to tree-vect-loop.c.
29758         (new_loop_vec_info, destroy_loop_vec_info,
29759         reduction_code_for_scalar_code, report_vect_op,
29760         vect_is_simple_reduction, vect_is_simple_iv_evolution): Likewise.
29761         (vect_can_force_dr_alignment_p): Move to tree-vect-data-refs.c.
29762         (vect_supportable_dr_alignment): Likewise.
29763         * tree-vectorizer.h (tree-data-ref.h): Include.
29764         (vect_loop_location): Declare.
29765         Reorganize function declarations according to the new file structure.
29766         * tree-vect-loop.c: New file.
29767         * tree-vect-analyze.c: Remove. Move functions to tree-vect-data-refs.c,
29768         tree-vect-stmts.c, tree-vect-slp.c, tree-vect-loop.c.
29769         * tree-vect-data-refs.c: New file.
29770         * tree-vect-patterns.c (timevar.h): Don't include.
29771         * tree-vect-stmts.c: New file.
29772         * tree-vect-transform.c: Remove. Move functions to tree-vect-stmts.c,
29773         tree-vect-slp.c, tree-vect-loop.c.
29774         * Makefile.in (OBJS-common): Remove tree-vect-analyze.o and
29775         tree-vect-transform.o. Add tree-vect-data-refs.o, tree-vect-stmts.o,
29776         tree-vect-loop.o, tree-vect-loop-manip.o, tree-vect-slp.o.
29777         (tree-vect-analyze.o): Remove.
29778         (tree-vect-transform.o): Likewise.
29779         (tree-vect-data-refs.o): Add rule.
29780         (tree-vect-stmts.o, tree-vect-loop.o, tree-vect-loop-manip.o,
29781         tree-vect-slp.o): Likewise.
29782         (tree-vect-patterns.o): Remove redundant dependencies.
29783         (tree-vectorizer.o): Likewise.
29784         * tree-vect-slp.c: New file.
29785
29786 2009-03-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
29787
29788         * optc-gen.awk: Warn if an option flag has multiple different
29789         help strings.
29790
29791 2009-03-30  Sebastian Pop  <sebastian.pop@amd.com>
29792
29793         * doc/invoke.texi (-floop-interchange, -floop-strip-mine,
29794         -floop-block): Document dependences on PPL, CLooG and Graphite.
29795
29796 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
29797
29798         PR rtl-optimization/323
29799         * c-common.c (c_fully_fold, convert_and_check,
29800         c_common_truthvalue_conversion): Handle EXCESS_PRECISION_EXPR.
29801         (c_fully_fold_internal): Disallow EXCESS_PRECISION_EXPR.
29802         * c-common.def (EXCESS_PRECISION_EXPR): New.
29803         * c-cppbuiltin.c (builtin_define_float_constants): Define
29804         constants with enough digits for long double.
29805         * c-lex.c (interpret_float): Interpret constant with excess
29806         precision where appropriate.
29807         * c-opts.c (c_common_post_options): Set
29808         flag_excess_precision_cmdline.  Give an error for
29809         -fexcess-precision=standard for C++ for processors where the
29810         option is significant.
29811         * c-parser.c (c_parser_conditional_expression): Handle excess
29812         precision in condition.
29813         * c-typeck.c (convert_arguments): Handle arguments with excess
29814         precision.
29815         (build_unary_op): Move excess precision outside operation.
29816         (build_conditional_expr): Likewise.
29817         (build_compound_expr): Likewise.
29818         (build_c_cast): Do cast on operand of EXCESS_PRECISION_EXPR.
29819         (build_modify_expr): Handle excess precision in RHS.
29820         (convert_for_assignment): Handle excess precision in converted
29821         value.
29822         (digest_init, output_init_element, process_init_element): Handle
29823         excess precision in initializer.
29824         (c_finish_return): Handle excess precision in return value.
29825         (build_binary_op): Handle excess precision in operands and add
29826         excess precision as needed for operation.
29827         * common.opt (-fexcess-precision=): New option.
29828         * config/i386/i386.h (X87_ENABLE_ARITH, X87_ENABLE_FLOAT): New.
29829         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
29830         For standard excess precision, output explicit conversion to and
29831         truncation from XFmode.
29832         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1,
29833         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp,
29834         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387, two unnamed
29835         define_splits, floatdi<X87MODEF:mode>2_i387_with_xmm, two unnamed
29836         define_splits, *floatunssi<mode>2_1, two unnamed define_splits,
29837         floatunssi<mode>2, add<mode>3, sub<mode>3, mul<mode>3, divdf3,
29838         divsf3, *fop_<mode>_comm_i387, *fop_<mode>_1_i387,
29839         *fop_<MODEF:mode>_2_i387, *fop_<MODEF:mode>_3_i387,
29840         *fop_df_4_i387, *fop_df_5_i387, *fop_df_6_i387, two unnamed
29841         define_splits, sqrt<mode>2): Disable where appropriate for
29842         standard excess precision.
29843         * convert.c (convert_to_real): Do not shorten arithmetic to type
29844         for which excess precision would be used.
29845         * defaults.h (TARGET_FLT_EVAL_METHOD_NON_DEFAULT): Define.
29846         * doc/invoke.texi (-fexcess-precision=): Document option.
29847         (-mfpmath=): Correct index entry.
29848         * flags.h (enum excess_precision, flag_excess_precision_cmdline,
29849         flag_excess_precision): New.
29850         * langhooks.c (lhd_post_options): Set
29851         flag_excess_precision_cmdline.
29852         * opts.c (common_handle_option): Handle -fexcess-precision=.
29853         * toplev.c (flag_excess_precision_cmdline, flag_excess_precision,
29854         init_excess_precision): New.
29855         (lang_dependent_init_target): Call init_excess_precision.
29856         * tree.c (excess_precision_type): New.
29857         * tree.h (excess_precision_type): Declare.
29858
29859 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
29860
29861         PR c/35235
29862         * c-typeck.c (build_component_ref): Do not copy qualifiers from
29863         non-lvalue to component.
29864
29865 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
29866
29867         PR preprocessor/34695
29868         * Makefile.in (c-opts.o): Depend on c-tree.h.
29869         * c-common.c: Move down include of diagnostic.h.
29870         (done_lexing, c_cpp_error): New.
29871         * c-common.h (done_lexing): Declare.
29872         * c-decl.c (c_write_global_declarations): Don't check cpp_errors
29873         (parse_in).
29874         * c-opts.c: Include c-tree.h.
29875         (c_common_init_options): Set preprocessor error callback.
29876         (c_common_handle_option): Do not set preprocessor
29877         inhibit_warnings, warnings_are_errors, warn_system_headers,
29878         pedantic_errors or inhibit_warnings flags.
29879         (c_common_post_options): Do not check cpp_errors (parse_in).
29880         (c_common_finish): Do not output dependencies if there were
29881         errors.  Do not check return value of cpp_finish.
29882         * c-ppoutput.c (pp_file_change): Set input_location.
29883         * c-tree.h (c_cpp_error): Declare.
29884         * diagnostic.c (diagnostic_set_info_translated): Also initialize
29885         override_column.
29886         (diagnostic_build_prefix): Check override_column.
29887         * diagnostic.h (diagnostic_info): Add override_column field.
29888         (diagnostic_override_column): Define.
29889
29890 2009-03-28  Paolo Bonzini  <bonzini@gnu.org>
29891
29892         * c-common.c (c_expand_expr, c_staticp): Remove.
29893         * c-common.def (COMPOUND_LITERAL_EXPR): Delete.
29894         * c-common.h (emit_local_var, c_staticp, COMPOUND_LITERAL_EXPR_DECL,
29895         COMPOUND_LITERAL_EXPR_DECL_EXPR): Remove.
29896         * c-gimplify.c (gimplify_compound_literal_expr,
29897         optimize_compound_literals_in_ctor): Remove.
29898         (c_gimplify_expr): Remove COMPOUND_LITERAL_EXPR handling.
29899         * c-objc-common.h (LANG_HOOKS_STATICP): Remove.
29900         * c-semantics.c (emit_local_var): Remove.
29901
29902         * langhooks-def.h (lhd_expand_expr): Remove.
29903         * langhooks.c (lhd_expand_expr): Remove.
29904         * langhooks.h (LANG_HOOKS_DEF): Remove LANG_HOOKS_EXPAND_EXPR.
29905
29906         * expr.c (expand_expr_real_1): Move COMPOUND_LITERAL_EXPR
29907         handling from c-semantics.c; don't call into langhook.
29908         (expand_expr_addr_expr_1): Check that we don't get non-GENERIC trees.
29909         * gimplify.c (gimplify_compound_literal_expr,
29910         optimize_compound_literals_in_ctor): Move from c-gimplify.c.
29911         (gimplify_init_constructor): Call optimize_compound_literals_in_ctor.
29912         (gimplify_modify_expr_rhs, gimplify_expr): Handle COMPOUND_LITERAL_EXPR
29913         as was done in c-gimplify.c.
29914         * tree.c (staticp): Move COMPOUND_LITERAL_EXPR handling from c_staticp.
29915         * tree.h (COMPOUND_LITERAL_EXPR_DECL, COMPOUND_LITERAL_EXPR_DECL_EXPR):
29916         Move from c-common.h.
29917         * tree.def (COMPOUND_LITERAL_EXPR): Move from c-common.def.
29918
29919         * tree.c (staticp): Do not call langhook.
29920         * langhooks.c (lhd_staticp): Delete.
29921         * langhooks-def.h (lhd_staticp): Delete prototype.
29922         (LANG_HOOKS_STATICP): Delete.
29923         (LANG_HOOKS_INITIALIZER): Delete LANG_HOOKS_STATICP.
29924
29925         * doc/c-tree.texi (Expression nodes): Refer to DECL_EXPRs
29926         instead of DECL_STMTs.
29927
29928 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
29929
29930         PR c/456
29931         PR c/5675
29932         PR c/19976
29933         PR c/29116
29934         PR c/31871
29935         PR c/35198
29936         * builtins.c (fold_builtin_sincos): Build COMPOUND_EXPR in
29937         void_type_node.
29938         (fold_call_expr): Return a NOP_EXPR from folding rather than the
29939         contained expression.
29940         * c-common.c (c_fully_fold, c_fully_fold_internal, c_save_expr): New.
29941         (c_common_truthvalue_conversion): Use c_save_expr.  Do not fold
29942         conditional expressions for C.
29943         (decl_constant_value_for_optimization): Move from
29944         decl_constant_value_for_broken_optimization in c-typeck.c.  Check
29945         whether optimizing and that the expression is a VAR_DECL not of
29946         array type instead of doing such checks in the caller.  Do not
29947         check pedantic.  Call gcc_unreachable for C++.
29948         * c-common.def (C_MAYBE_CONST_EXPR): New.
29949         * c-common.h (c_fully_fold, c_save_expr,
29950         decl_constant_value_for_optimization): New prototypes.
29951         (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
29952         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
29953         EXPR_INT_CONST_OPERANDS): Define.
29954         * c-convert.c (convert): Strip nops from expression.
29955         * c-decl.c (groktypename): Take extra parameters expr and
29956         expr_const_operands.  Update call to grokdeclarator.
29957         (start_decl): Update call to grokdeclarator.  Add statement for
29958         expressions used in type of decl.
29959         (grokparm): Update call to grokdeclarator.
29960         (push_parm_decl): Update call to grokdeclarator.
29961         (build_compound_literal): Add parameter non_const and build a
29962         C_MAYBE_COSNT_EXPR if applicable.
29963         (grokdeclarator): Take extra parameters expr and
29964         expr_const_operands.  Track expressions used in declaration
29965         specifiers and declarators.  Fold array sizes and track whether
29966         they are constant expressions and whether they are integer
29967         constant expressions.
29968         (parser_xref_tag): Set expr and expr_const_operands fields in
29969         return value.
29970         (grokfield): Update call to grokdeclarator.
29971         (start_function): Update call to grokdeclarator.
29972         (build_null_declspecs): Set expr and expr_const_operands fields in
29973         return value.
29974         (declspecs_add_type): Handle expressions in typeof specifiers.
29975         * c-parser.c (c_parser_declspecs): Set expr and
29976         expr_const_operands fields for declaration specifiers.
29977         (c_parser_enum_specifier): Likewise.
29978         (c_parser_struct_or_union_specifier): Likewise.
29979         (c_parser_typeof_specifier): Likewise.  Update call to
29980         groktypename.  Fold expression as needed.  Return expressions with
29981         type instead of adding statements.
29982         (c_parser_attributes): Update calls to c_parser_expr_list.
29983         (c_parser_statement_after_labels): Fold expression before passing
29984         to objc_build_throw_stmt.
29985         (c_parser_condition): Fold expression.
29986         (c_parser_asm_operands): Fold expression.
29987         (c_parser_conditional_expression): Use c_save_expr.  Update call
29988         to build_conditional_expr.
29989         (c_parser_alignof_expression): Update call to groktypename.
29990         (c_parser_postfix_expression): Preserve C_MAYBE_CONST_EXPR as
29991         original_code.  Fold expression argument of va_arg.  Create
29992         C_MAYBE_CONST_EXPR to preserve side effects of expressions in type
29993         argument to va_arg.  Update calls to groktypename.  Fold array
29994         index for offsetof.  Verify that first argument to
29995         __builtin_choose_expr has integer type.
29996         (c_parser_postfix_expression_after_paren_type): Update calls to
29997         groktypename and build_compound_literal.  Handle expressions with
29998         side effects in type name.
29999         (c_parser_postfix_expression_after_primary): Update call to
30000         c_parser_expr_list.  Set original_code for calls to
30001         __builtin_constant_p.
30002         (c_parser_expr_list): Take extra parameter fold_p.  Fold
30003         expressions if requested.
30004         (c_parser_objc_type_name): Update call to groktypename.
30005         (c_parser_objc_synchronized_statement): Fold expression.
30006         (c_parser_objc_receiver): Fold expression.
30007         (c_parser_objc_keywordexpr): Update call to c_parser_expr_list.
30008         (c_parser_omp_clause_num_threads, c_parser_omp_clause_schedule,
30009         c_parser_omp_atomic, c_parser_omp_for_loop): Fold expressions.
30010         * c-tree.h (CONSTRUCTOR_NON_CONST): Define.
30011         (struct c_typespec): Add elements expr and expr_const_operands.
30012         (struct c_declspecs): Add elements expr and expr_const_operands.
30013         (groktypename, build_conditional_expr, build_compound_literal):
30014         Update prototypes.
30015         (in_late_binary_op): Declare.
30016         * c-typeck.c (note_integer_operands): New function.
30017         (in_late_binary_op): New variable.
30018         (decl_constant_value_for_broken_optimization): Move to c-common.c
30019         and rename to decl_constant_value_for_optimization.
30020         (default_function_array_conversion): Do not strip nops.
30021         (default_conversion): Do not call
30022         decl_constant_value_for_broken_optimization.
30023         (build_array_ref): Do not fold result.
30024         (c_expr_sizeof_expr): Fold operand.  Use C_MAYBE_CONST_EXPR for
30025         result when operand is a VLA.
30026         (c_expr_sizeof_type): Update call to groktypename.  Handle
30027         expressions included in type name.  Use C_MAYBE_CONST_EXPR for
30028         result when operand names a VLA type.
30029         (build_function_call): Update call to build_compound_literal.
30030         Only fold result for calls to __builtin_* functions.  Strip
30031         NOP_EXPR from INTEGER_CST returned from such functions.  Fold
30032         the function designator.
30033         (convert_arguments): Fold arguments.  Update call to
30034         convert_for_assignment.
30035         (build_unary_op): Handle increment and decrement of
30036         C_MAYBE_CONST_EXPR.  Move lvalue checks for increment and
30037         decrement earlier.  Fold operand of increment and decrement.
30038         Handle address of C_MAYBE_CONST_EXPR.  Only fold expression being
30039         built for integer operand.  Wrap returns that are INTEGER_CSTs
30040         without being integer constant expressions or that have integer
30041         constant operands without being INTEGER_CSTs.
30042         (lvalue_p): Handle C_MAYBE_CONST_EXPR.
30043         (build_conditional_expr): Add operand ifexp_bcp.  Track whether
30044         result is an integer constant expression or can be used in
30045         unevaluated parts of one and avoid folding and wrap as
30046         appropriate.  Fold operands before possibly doing -Wsign-compare
30047         warnings.
30048         (build_compound_expr): Wrap result for C99 if operands can be used
30049         in integer constant expressions.
30050         (build_c_cast): Update call to digest_init.  Do not ignore
30051         overflow from casting floating-point constants to integers.  Wrap
30052         results that could be confused with integer constant expressions,
30053         null pointer constants or floating-point constants.
30054         (c_cast_expr): Update call to groktypename.  Handle expressions
30055         included in type name.
30056         (build_modify_expr): Handle modifying a C_MAYBE_CONST_EXPR.  Fold
30057         lhs inside possible SAVE_EXPR.  Fold RHS before assignment.
30058         Update calls to convert_for_assignment.
30059         (convert_for_assignment): Take new parameter
30060         null_pointer_constant.  Do not strip nops or call
30061         decl_constant_value_for_broken_optimization.  Set
30062         in_late_binary_op for conversions to boolean.
30063         (store_init_value): Update call to digest_init.
30064         (digest_init): Take new parameter null_pointer_constant.  Do not
30065         call decl_constant_value_for_broken_optimization.  pedwarn for
30066         initializers not constant expressions.  Update calls to
30067         convert_for_assignment.
30068         (constructor_nonconst): New.
30069         (struct constructor_stack): Add nonconst element.
30070         (really_start_incremental_init, push_init_level, pop_init_level):
30071         Handle constructor_nonconst and nonconst element.
30072         (set_init_index): Call constant_expression_warning for array
30073         designators.
30074         (output_init_element): Fold value.  Set constructor_nonconst as
30075         applicable.  pedwarn for initializers not constant expressions.
30076         Update call to digest_init.  Call constant_expression_warning
30077         where constant initializers are required.
30078         (process_init_element): Use c_save_expr.
30079         (c_finish_goto_ptr): Fold expression.
30080         (c_finish_return): Fold return value.  Update call to
30081         convert_for_assignment.
30082         (c_start_case): Fold switch expression.
30083         (c_process_expr_stmt): Fold expression.
30084         (c_finish_stmt_expr): Create C_MAYBE_CONST_EXPR as needed to
30085         ensure statement expression is not evaluated in constant expression.
30086         (build_binary_op): Track whether results are integer constant
30087         expressions or may occur in such, disable folding and wrap results
30088         as applicable.  Fold operands for -Wsign-compare warnings unless
30089         in_late_binary_op.
30090         (c_objc_common_truthvalue_conversion): Handle results folded to
30091         integer constants that are not integer constant expressions.
30092         * doc/extend.texi: Document when typeof operands are evaluated,
30093         that condition of __builtin_choose_expr is an integer constant
30094         expression, and more about use of __builtin_constant_p in
30095         initializers.
30096
30097 2009-03-29  Richard Guenther  <rguenther@suse.de>
30098
30099         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Properly
30100         propagate addresses of array references.
30101
30102 2009-03-29  Steven Bosscher  <steven@gcc.gnu.org>
30103
30104         * regmove.c (perhaps_ends_bb_p): Remove.
30105         (optimize_reg_copy_1): Don't call perhaps_ends_bb_p.  Get basic block
30106         from INSN and check that the main loop stays within that basic block.
30107         (optimize_reg_copy_1, optimize_reg_copy_3, fixup_match_2): Likewise.
30108         (regmove_forward_pass): Split out from regmove_optimize.  Use
30109         FOR_EACH_BB and FOR_BB_INSNS instead of traversing the insns stream.
30110         (regmove_backward_pass): Split out from regmove_optimize.  Use
30111         FOR_EACH_BB_REVERSE and FOR_BB_INSNS_REVERS_SAFE.
30112         (regmove_optimize): Simplify.
30113
30114 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
30115
30116         PR target/39545
30117         * config/i386/i386.c (classify_argument): Ignore flexible array
30118         member in struct and warn ABI change.
30119
30120 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
30121
30122         * config/i386/i386-protos.h (ix86_agi_dependent): New.
30123
30124         * config/i386/i386.c (ix86_agi_dependent): Rewrite.
30125         (ix86_adjust_cost): Updated.
30126
30127 2009-03-29  Jan Hubicka  <jh@suse.cz>
30128
30129         PR middle-end/28850
30130         * tree-pass.h (pass_cleanup_eh): New function.
30131         (remove_unreachable_regions): Break code handling RTL
30132         to rtl_remove_unreachable_regions; remove ERT_MUST_NOT_THROW
30133         that can not be reached by runtime.
30134         (can_be_reached_by_runtime): New function.
30135         (label_to_region_map): New function.
30136         (num_eh_regions): New function.
30137         (rtl_remove_unreachable_regions): New function.
30138         (convert_from_eh_region_ranges): Call rtl_remove_unreachable_regions.
30139         (remove_eh_region): New function.
30140         * except.h: Include sbitmap and vecprim.
30141         (remove_eh_region, remove_unreachable_regions, label_to_region_map,
30142         num_eh_regions): Declare.
30143         * passes.c (init_optimization_passes): Schedule cleanup_eh.
30144         * Makefile.in (EXCEPT_H): New; replace all uses of except.h by it.
30145         * tree-eh.c (tree_remove_unreachable_handlers): New function.
30146         (tree_empty_eh_handler_p): New function.
30147         (cleanup_empty_eh): New function.
30148         (cleanup_eh): New function.
30149         (pass_cleanup_eh): New function.
30150
30151 2009-03-29  Jan Hubicka  <jh@suse.cz>
30152
30153         * except.c (verify_eh_tree): Fix handling of fun!=cfun; be ready
30154         for removed regions.
30155
30156 2009-03-29  Jan Hubicka  <jh@suse.cz>
30157
30158         * except.c (dump_eh_tree): Dump all datastructures.
30159
30160 2009-03-29  Jan Hubicka  <jh@suse.cz>
30161
30162         * except.c (duplicate_eh_regions_0): Handle AKA bitmap.
30163         (duplicate_eh_regions_1): Likewise.
30164         (duplicate_eh_regions): Likewise; cleanup code gorwing the region
30165         vector; call EH verification.
30166         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
30167         Be ready for region being removed.
30168
30169 2009-03-29  Jan Hubicka  <jh@suse.cz>
30170
30171         * bitmap.c (bitmap_last_set_bit): New function.
30172         * bitmap.h (bitmap_last_set_bit): Declare.
30173
30174 2009-03-29  David Ayers  <ayers@fsfe.org>
30175
30176         PR objc/27377
30177         * c-typeck.c (build_conditional_expr): Emit ObjC warnings
30178         by calling objc_compare_types and surpress warnings about
30179         incompatible C pointers that are compatible ObjC pointers.
30180
30181 2009-03-29  Adam Nemet  <anemet@caviumnetworks.com>
30182
30183         * cgraphbuild.c (build_cgraph_edges, rebuild_cgraph_edges): Don't
30184         call initialize_inline_failed.
30185         (initialize_inline_failed): Move it from here ...
30186         * cgraph.c (initialize_inline_failed): ... to here.
30187         (cgraph_create_edge): Call initialize_inline_failed rather than
30188         setting inline_failed directly.
30189
30190 2009-03-29  Ben Elliston  <bje@au.ibm.com>
30191
30192         PR target/32542
30193         * sysv4.opt (msdata): Improve comment.
30194         * linux64.h (ASM_SPEC32): Do not pass -memb when -msdata is given.
30195         * sysv4.h (SVR4_ASM_SPEC): Likewise.
30196
30197 2009-03-29  Ben Elliston  <bje@au.ibm.com>
30198
30199         PR target/30451
30200         * config/rs6000/rs6000.md (*movti_ppc64): Correct the order of
30201         load and store attributes.
30202
30203 2009-03-29  Ben Elliston  <bje@au.ibm.com>
30204
30205         * config/i386/i386.c (enum ix86_builtins): Add IX86_BUILTIN_HUGE_VALQ.
30206         (ix86_init_builtins): Add built-in function __builtin_huge_valq.
30207         (ix86_expand_builtin): Handle IX86_BUILTIN_HUGE_VALQ.
30208         * doc/extend.texi (X86 Built-in Functions): Add index entries for
30209         __builtin_infq and __builtin_huge_valq.
30210
30211 2009-03-28  Anatoly Sokolov  <aesok@post.ru>
30212
30213         * config/avr/avr.c (avr_mcu_t): Add atmega8c1, atmega16c1 and
30214         atmega8m1 devices.
30215         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
30216         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.)
30217
30218 2009-03-28  Xinliang David Li  <davidxl@google.com>
30219
30220         * tree-ssa-ccp.c (ccp_finalize): Add dbg_count support.
30221         (do_dbg_cnt): New function.
30222
30223 2009-03-28  Jan Hubicka  <jh@suse.cz>
30224
30225         Merge from pretty-ipa:
30226
30227         2009-03-27  Jan Hubicka  <jh@suse.cz>
30228
30229         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
30230         * tree-pass.h (function_called_by_processed_nodes_p): Declare.
30231         * passes.c (function_called_by_processed_nodes_p): New.
30232         * ipa-pure-const.c (check_call): Fix handling of operands.
30233         (analyze_function): Dump debug output for skipped bodies.
30234         (local_pure_const): Use function_called_by_processed_nodes_p.
30235         * dwarf2out.c (reference_to_unused): Use output.
30236         * passes.c (do_per_function_toporder): Likewise.
30237
30238         2008-11-12  Jan Hubicka  <jh@suse.cz>
30239
30240         * tree-pass.h (pass_fixup_cfg, pass_local_pure_const): Declare.
30241         * ipa-pure-const.c (funct_state_d): Add can throw field; make
30242         state_set_in_source enum
30243         (check_decl): Ignore memory tags; do not set fake looping flags;
30244         dump diagnostics.
30245         (check_operand, check_tree, check_rhs_var, check_lhs_var,
30246         get_asm_expr_operands, scan_function_op, scan_function_stmt): Remove.
30247         (check_call, analyze_function): Rewrite.
30248         (check_stmt): New.
30249         (add_new_function): Update call of analyze_function.
30250         (generate_summary): Add call of analyze_function.
30251         (propagate): Propagate can_throw; handle state_set_in_source correctly.
30252         (local_pure_const): New function.
30253         (pass_local_pure_const): New pass.
30254         * ipa-inline.c (inline_transform): Set after_inlining.
30255         * tree-eh.c (stmt_can_throw_external): New.
30256         * tree-optimize.c (execute_fixup_cfg): Do not set after_inlining;
30257         work with aliasing built.
30258         * tree-flow.h (stmt_can_throw_external): New.
30259         * passes.c (init_optimization_passes): Schedule fixup_cfg pass early;
30260         and local pure/const pass in early and late optimization queue.
30261
30262 2009-03-28  Martin Jambor  <mjambor@suse.cz>
30263
30264         * fold-const.c (get_pointer_modulus_and_residue): New parameter
30265         allow_func_align.
30266         (fold_binary): Allow function decl aligment consideration is the
30267         second argument is integer constant one.
30268         * tree-ssa-forwprop.c (simplify_bitwise_and): New function.
30269         (tree_ssa_forward_propagate_single_use_vars): Handle assing statements
30270         with BIT_AND_EXPR on the RHS by calling simplify_bitwise_and.
30271
30272 2009-03-28  Jan Hubicka  <jh@suse.cz>
30273
30274         * dwarf2out.c (dwarf2out_begin_prologue): Use crtl->nothrow
30275         * tree-eh.c (stmt_could_throw_p): Remove check for WEAK decls.
30276         * function.h (rtl_data): Add nothrow flag.
30277         * except.c (set_nothrow_function_flags): Use crtl->nothrow;
30278         set DECL_NOTHROW for AVAILABLE functions.
30279
30280 2009-03-28  Jakub Jelinek  <jakub@redhat.com>
30281
30282         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): If macro
30283         following vector keyword has expansion starting with pixel or bool
30284         keyword, expand vector to __vector and pixel or bool to __pixel or
30285         __bool.
30286
30287         PR c++/39554
30288         * opts.c (warning_disallowed_functions, warn_disallowed_functions,
30289         warn_if_disallowed_function_p): Removed.
30290         (common_handle_option): Don't handle OPT_Wdisallowed_function_list_.
30291         * c-parser.c (c_parser_postfix_expression_after_primary): Don't call
30292         warning_if_disallowed_function_p.
30293         * flags.h (warn_if_disallowed_function_p,
30294         warn_disallowed_functions): Removed.
30295         * common.opt (Wdisallowed-function-list=): Removed.
30296         * doc/invoke.texi (-Wdisallowed-function-list=): Removed.
30297
30298 2009-03-28  Richard Guenther  <rguenther@suse.de>
30299
30300         PR tree-optimization/38723
30301         * tree-ssa-pre.c (compute_avail): Add all default definitions to
30302         the entry block.
30303
30304 2009-03-28  Jan Hubicka  <jh@suse.cz>
30305
30306         * tree-ssa-structalias.c (ipa_pta_execute): Fix bogus node->analyzed
30307         test introduced by my previous patch.
30308
30309 2009-03-28  Richard Guenther  <rguenther@suse.de>
30310
30311         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not leave
30312         the PHIs value undefined.
30313
30314 2009-03-28  Jan Hubicka  <jh@suse.cz>
30315
30316         * tree-pass.h (pass_fixup_cfg): New pass.
30317         * ipa-inline.c (inline_transform): Set
30318         always_inline_functions_inlined/after_inlining.
30319         * tree-optimize.c (execute_fixup_cfg): Do not set them here.
30320         (pass_fixup_cfg): New pass.
30321         * passes.c (init_optimization_passes): Add fixup_cfg.
30322
30323 2009-03-28  Richard Guenther  <rguenther@suse.de>
30324
30325         PR tree-optimization/38458
30326         * tree-ssa-copy.c (copy_prop_visit_phi_node): For the first
30327         argument use the arguments copy-of value.
30328
30329 2009-03-28  Richard Guenther  <rguenther@suse.de>
30330
30331         PR tree-optimization/38180
30332         * tree-ssa-ccp.c (get_default_value): Simplify.
30333         (likely_value): Likewise.
30334         (surely_varying_stmt_p): Properly handle VOP case.
30335         (ccp_initialize): Likewise.
30336         (ccp_fold): Handle propagating through *&.
30337         (fold_const_aggregate_ref): Also handle decls.
30338
30339 2009-03-28  Jan Hubicka  <jh@suse.cz>
30340
30341         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
30342         * cgraph.h (cgraph_node): Likewise.
30343         * cgraphunit.c (cgraph_process_new_functions): Set process flag.
30344         (cgraph_reset_node): Use process flag.
30345         (cgraph_mark_functions_to_output): Likewise.
30346         (cgraph_expand_function): Likewise.
30347         (cgraph_expand_all_functions): Likewise.
30348         (cgraph_output_in_order): Likewise.
30349         * dwarf2out.c (reference_to_unused): Likewise.
30350         * passes.c do_per_function_toporder): Likewise.
30351
30352 2009-03-28  Jan Hubicka  <jh@suse.cz>
30353
30354         Bring from lto-branch:
30355
30356         2008-09-03  Doug Kwan  <dougkwan@google.com>
30357
30358         * cgraphbuild.c (initialize_inline_failed): Use cgraph_inline_failed_t
30359         enums instead of reason strings.
30360         * cgraph.c (cgraph_create_edge): Same.
30361         (cgraph_inline_failed_string): New function.
30362         * cgraph.h (cgraph_inline_failed_t): New enum type.
30363         (cgraph_inline_failed_string): New prototype.
30364         (struct cgraph_edge): Change type of INLINED_FAILED from constant
30365         char pointer to cgraph_inline_failed_t.
30366         (cgraph_inline_p): Adjust prototype to use cgraph_inline_failed_t.
30367         (cgraph_default_inline_p): Ditto.
30368         * cgraphunit.c (cgraph_inline_p): Change type of parameter REASON
30369         to cgraph_inline_failed_t pointer.
30370         * cif-code.def: New file.
30371         * ipa-inline.c (cgraph_mark_inline_edge): Use an enum instead of a
30372         reason string.
30373         (cgraph_check_inline_limits): Change type of REASON to pointer to
30374         cgraph_inline_failed_t.  Replace reason strings with enums.
30375         (cgraph_default_inline_p): Ditto.
30376         (cgraph_recursive_inlining_p): Ditto.
30377         (update_caller_keys): Change type of FAILED_REASON to
30378         cgraph_inline_failed_t.
30379         (cgraph_set_inline_failed): Change type of REASON to pointer to
30380         cgraph_inline_failed_t.  Call cgraph_inline_failed_string to
30381         convert enums to strings for text output.
30382         (cgraph_decide_inlining_of_small_function): Change FAILED_REASON
30383         to be of type cgraph_inline_failed_t.  Replace reason strings with
30384         enums.  Call cgraph_inline_failed_string to covert enums
30385         to strings for text output.
30386         (cgraph_decide_inlining): Replace reason strings with enums.
30387         (cgraph_decide_inlining_incrementally): Change type of FAILED_REASON
30388         to cgraph_inline_failed_t type.  Call cgraph_inline_failed_string
30389         for text output.
30390         * tree-inline.c (expand_call_inline): Change type of REASON
30391         to cgraph_inline_failed_t.  Replace reason strings with enums.
30392         Call cgraph_inline_failed_string for text output.
30393         * Makefile.in (CGRAPH_H): Add cif-code.def to dependencies.
30394         (cgraph.o): Ditto.
30395
30396 2009-03-28  Jan Hubicka  <jh@suse.cz>
30397
30398         * cgraph.c (cgraph_node, cgraph_remove_node, dump_cgraph_node,
30399         cgraph_clone_node): Remove master clone handling.
30400         (cgraph_is_master_clone, cgraph_master_clone): Remove.
30401         * cgraph.h (master_clone): Remove.
30402         (cgraph_is_master_clone, cgraph_master_clone): Remove.
30403         * ipa-type-escape.c (type_escape_execute): Remove use of master clone.
30404         (tree-ssa-structalias.c (ipa_pta_execute): Likewise.
30405
30406 2009-03-28  Jan Hubicka  <jh@suse.cz>
30407
30408         * cgraph.c (cgraph_function_body_availability): Functions declared
30409         inline are always safe to assume that it is not going to be replaced.
30410
30411 2009-03-28  Richard Guenther  <rguenther@suse.de>
30412
30413         PR tree-optimization/38513
30414         * tree-ssa-pre.c (eliminate): Remove redundant stores.
30415         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
30416         EXC_PTR_EXPR and FILTER_EXPR.
30417         (get_ref_from_reference_ops): Likewise.
30418
30419 2009-03-28  Richard Guenther  <rguenther@suse.de>
30420
30421         PR tree-optimization/38968
30422         * tree-vect-analyze.c (vect_compute_data_ref_alignment):
30423         Use FLOOR_MOD_EXPR to compute misalignment.
30424
30425 2009-03-28  Richard Guenther  <rguenther@suse.de>
30426
30427         PR tree-optimization/37795
30428         * tree.h (combine_comparisons): Declare.
30429         * fold-const.c (combine_comparisons): Export.
30430         * tree-ssa-ifcombine.c (ifcombine_ifandif): Optimize two successive
30431         comparisons.
30432         (ifcombine_iforif): Use combine_comparisons.
30433
30434 2009-03-28  Jan Hubicka  <jh@suse.cz>
30435
30436         * tree-eh.c (inlinable_call_p): New function.
30437         (make_eh_edges): Use it.
30438         (verify_eh_edges): Use it.
30439         (stmt_can_throw_external, stmt_can_throw_internal): Use it.
30440         * except.c (reachable_next_level): Add inlinable_function argument
30441         (sjlj_find_directly_reachable_regions): Update.
30442         (add_reachable_handler): Do not set saw_any_handlers.
30443         (reachable_next_level): Handle MUST_NOT_THROW more curefully.
30444         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
30445         Add new inlinable call parameter.
30446         (can_throw_internal, can_throw_external): Update.
30447         * except.h (can_throw_internal_1, can_throw_external_1,
30448         foreach_reachable_handler): Update declaration.
30449
30450 2009-03-28  Joseph Myers  <joseph@codesourcery.com>
30451
30452         * config/arm/t-arm-coff, config/h8300/coff.h,
30453         config/i386/i386-aout.h, config/i386/i386-coff.h,
30454         config/libgloss.h, config/m68k/coff.h, config/m68k/m68k-aout.h,
30455         config/pdp11/2bsd.h, config/rs6000/aix41.h,
30456         config/rs6000/aix41.opt, config/rs6000/t-newas, config/sh/coff.h,
30457         fix-header.c, fixproto, gen-protos.c, protoize.c, scan-decls.c,
30458         scan-types.sh, scan.c, scan.h, sort-protos, sys-protos.h,
30459         sys-types.h: Remove.
30460         * Makefile.in: Remove protoize and fixproto support and references
30461         in comments.
30462         (SYSCALLS.c.X-warn, TARGET_GETGROUPS_T, STMP_FIXPROTO,
30463         PROTOIZE_INSTALL_NAME, UNPROTOIZE_INSTALL_NAME, FIXPROTO_DEFINES):
30464         Remove.
30465         (ALL_HOST_OBJS): Remove $(PROTO_OBJS).
30466         (MOSTLYCLEANFILES): Remove protoize$(exeext) and
30467         unprotoize$(exeext).
30468         (rest.encap): Don't depend on $(STMP_FIXPROTO)
30469         (.PHONY): Don't depend on proto.
30470         (libgcc-support): Don't depend on $(STMP_FIXPROTO).
30471         (proto, PROTO_OBJS, protoize$(exeext), unprotoize$(exeext),
30472         protoize.o, unprotoize.o, SYSCALLS.c.X, test-protoize-simple,
30473         deduced.h, GEN_PROTOS_OBJS, build/gen-protos$(build_exeext),
30474         build/gen-protos.o, build/scan.o, xsys-protos.h,
30475         build/fix-header$(build_exeext), build/fix-header.o,
30476         build/scan-decls.o, fixhdr.ready, stmp-fixproto,
30477         stmp-install-fixproto): Remove.
30478         (mostlyclean): Don't remove xsys-protos.hT, SYSCALLS.c.X,
30479         SYSCALLS.c or fixproto files.
30480         (install-common): Don't install protoize.
30481         (install-headers-tar, install-headers-cpio, install-headers-cp):
30482         Don't depend on $(STMP_FIXPROTO).
30483         (install-mkheaders): Don't depend on $(STMP_FIXPROTO).  Don't
30484         install fixproto files or write out fixproto settings.
30485         (uninstall): Don't uninstall protoize.
30486         * config.gcc (use_fixproto): Remove.
30487         (arm-*-coff*, armel-*-coff*, h8300-*-*, i[34567]86-*-aout*,
30488         i[34567]86-*-coff*, m68k-*-aout*, m68k-*-coff*, pdp11-*-bsd,
30489         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*, sh-*-*): Remove.
30490         * config/m32r/t-linux (STMP_FIXPROTO): Remove.
30491         * config/m68k/m68k.c: Remove M68K_TARGET_COFF-conditional code.
30492         * config/mips/t-iris (FIXPROTO_DEFINES): Remove.
30493         * config/pa/t-pa-hpux (FIXPROTO_DEFINES): Remove.
30494         * config/pdp11/pdp11.c: Remove TWO_BSD-conditional code.
30495         * config/t-svr4 (FIXPROTO_DEFINES): Remove.
30496         * config/t-vxworks (STMP_FIXPROTO): Remove.
30497         * configure.ac (AC_TYPE_GETGROUPS, TARGET_GETGROUPS_T,
30498         STMP_FIXPROTO): Remove.
30499         * config.in, configure: Regenerate.
30500         * crtstuff.c (gid_t, uid_t): Don't undefine.
30501         * doc/install.texi: Change m68k-coff to m68k-elf in example.
30502         (arm-*-coff, arm-*-aout: Remove target entries.
30503         (*-ibm-aix*): Mention removal of support for AIX 4.2 and older.
30504         Remove mention of AIX 4.1.
30505         (m68k-*-*): Remove mention of m68k-*-aout and m68k-*-coff*.
30506         * doc/invoke.texi (Running Protoize): Remove.
30507         * doc/trouble.texi (Actual Bugs): Remove mention of fixproto.
30508         (Protoize Caveats): Remove.
30509         * tsystem.h: Update comments on headers assumed to exist.
30510
30511 2009-03-27  Vladimir Makarov  <vmakarov@redhat.com>
30512
30513         * genautomata.c: Add a new year to the copyright.  Add a new
30514         reference.
30515         (struct insn_reserv_decl): Add comments for member bypass_list.
30516         (find_bypass): Remove.
30517         (insert_bypass): New.
30518         (process_decls): Use insert_bypass.
30519         (output_internal_insn_latency_func): Output all bypasses with the
30520         same input insn in one switch case.
30521
30522         * rtl.def (define_bypass): Describe bypass choice.
30523         * doc/md.texi (define_bypass): Ditto.
30524
30525 2009-03-27  Richard Guenther  <rguenther@suse.de>
30526
30527         * gimplify.c (mark_addressable): Export.
30528         * tree-flow.h (mark_addressable): Declare.
30529         * tree-ssa-loop-manip.c (create_iv): Mark the base addressable.
30530         * tree-ssa.c (verify_phi_args): Verify that address taken
30531         variables have TREE_ADDRESSABLE set.
30532
30533 2009-03-27  Richard Guenther  <rguenther@suse.de>
30534
30535         * fold-const.c (build_fold_addr_expr_with_type_1): Rename back to ...
30536         (build_fold_addr_expr_with_type): ... this.  Remove in_fold handling.
30537         Do not mark decls TREE_ADDRESSABLE.
30538         (build_fold_addr_expr): Adjust.
30539         (fold_addr_expr): Remove.
30540         (fold_unary): Use build_fold_addr_expr.
30541         (fold_comparison): Likewise.
30542         (split_address_to_core_and_offset): Likewise.
30543         * coverage.c (tree_coverage_counter_addr): Mark the array decl
30544         TREE_ADDRESSABLE.
30545         * gimplify.c (mark_addressable): Do not exclude RESULT_DECLs.
30546         (gimplify_modify_expr_to_memcpy): Mark source and destination
30547         addressable.
30548         * omp-low.c (create_omp_child_function): Mark the object decl
30549         TREE_ADDRESSABLE.
30550         (lower_rec_input_clauses): Mark the var we take the address of
30551         TREE_ADDRESSABLE.
30552         (lower_omp_taskreg): Mark the sender decl TREE_ADDRESSABLE.
30553
30554 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
30555
30556         PR middle-end/39315
30557         * cfgexpand.c (expand_one_stack_var_at): Change alignment
30558         limit to MAX_SUPPORTED_STACK_ALIGNMENT.
30559
30560 2009-03-27  Richard Guenther  <rguenther@suse.de>
30561
30562         PR tree-optimization/39120
30563         * tree-ssa-structalias.c (handle_rhs_call): Fill out return
30564         constraints.
30565         (handle_lhs_call): Process return constraints.  Add escape
30566         constraints if necessary.
30567         (handle_const_call): Fill out return constraints.  Make nested
30568         case more precise.  Avoid consttmp if possible.
30569         (handle_pure_call): Fill out return constraints.  Avoid
30570         callused if possible.
30571         (find_func_aliases): Simplify call handling.
30572
30573 2009-03-27  Richard Guenther  <rguenther@suse.de>
30574
30575         PR tree-optimization/39120
30576         * tree-ssa-structalias.c (do_sd_constraint): Do not use CALLUSED
30577         as a representative.
30578         (solve_graph): Do propagate CALLUSED.
30579         (handle_pure_call): Use a scalar constraint from CALLUSED for
30580         the return value.
30581         (find_what_p_points_to): CALLUSED shall not appear in poins-to
30582         solutions.
30583
30584 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
30585
30586         PR c/39323
30587         * c-common.c (handle_aligned_attribute): Properly check alignment
30588         overflow.  Use (1U << i) instead of (1 << i).
30589
30590         * emit-rtl.c (get_mem_align_offset): Use "unsigned int" for align.
30591
30592         * expr.h (get_mem_align_offset): Updated.
30593
30594         * tree.h (tree_decl_common): Change align to "unsigned int" and
30595         move it before pointer_alias_set.
30596
30597 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
30598             Jakub Jelinek  <jakub@redhat.com>
30599
30600         PR target/38034
30601         * config/ia64/sync.md (cmpxchg_rel_<mode>): Replace input
30602         gr_register_operand with gr_reg_or_0_operand.
30603         (cmpxchg_rel_di): Likewise.
30604         (sync_lock_test_and_set<mode>): Likewise.
30605
30606 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
30607
30608         * jump.c (rtx_renumbered_equal_p): Use subreg_get_info.
30609         (true_regnum): Likewise.
30610
30611         * rtlanal.c (subreg_info): Moved to ...
30612         * rtl.h (subreg_info): Here.  New.
30613         (subreg_get_info): New.
30614
30615         * rtlanal.c (subreg_get_info): Make it extern.
30616
30617 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
30618
30619         PR target/39472
30620         * config/i386/i386.c (ix86_abi): New.
30621         (override_options): Handle -mabi=.
30622         (ix86_function_arg_regno_p): Replace DEFAULT_ABI with ix86_abi.
30623         (ix86_call_abi_override): Likewise.
30624         (init_cumulative_args): Likewise.
30625         (function_arg_advance): Likewise.
30626         (function_arg_64): Likewise.
30627         (function_arg): Likewise.
30628         (ix86_pass_by_reference): Likewise.
30629         (ix86_function_value_regno_p): Likewise.
30630         (ix86_build_builtin_va_list_abi): Likewise.
30631         (setup_incoming_varargs_64): Likewise.
30632         (is_va_list_char_pointer): Likewise.
30633         (ix86_init_machine_status): Likewise.
30634         (ix86_reg_parm_stack_space): Use enum calling_abi on call_abi.
30635         (ix86_function_type_abi): Return enum calling_abi.  Rewrite
30636         for 64bit.  Replace DEFAULT_ABI with ix86_abi.
30637         (ix86_function_abi): Make it static and return enum calling_abi.
30638         (ix86_cfun_abi): Return enum calling_abi.  Replace DEFAULT_ABI
30639         with ix86_abi.
30640         (ix86_fn_abi_va_list): Updated.
30641
30642         * config/i386/i386.h (ix86_abi): New.
30643         (STACK_BOUNDARY): Replace DEFAULT_ABI with ix86_abi.
30644         (CONDITIONAL_REGISTER_USAGE): Likewise.
30645         (CUMULATIVE_ARGS): Change call_abi type to enum calling_abi.
30646         (machine_function): Likewise.
30647
30648         * config/i386/i386.md (untyped_call): Replace DEFAULT_ABI
30649         with ix86_abi.
30650         * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Likewise.
30651         (STACK_BOUNDARY): Likewise.
30652         * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Likewise.
30653
30654         * config/i386/i386.opt (mabi=): New.
30655
30656         * config/i386/i386-protos.h (ix86_cfun_abi): Changed to
30657         return enum calling_abi.
30658         (ix86_function_type_abi): Likewise.
30659         (ix86_function_abi): Removed.
30660
30661         * doc/invoke.texi: Document -mabi= option for x86.
30662
30663 2009-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
30664
30665         * builtins.c (real_dconstp): Delete.
30666         (fold_builtin_logarithm): Remove inaccurate log(e) special case.
30667
30668 2009-03-27  Dodji Seketeli  <dodji@redhat.com>
30669             Jakub Jelinek  <jakub@redhat.com>
30670
30671         PR debug/37959
30672         * dwarf2out.c (dwarf_attr_name): Handle DW_AT_explicit attribute.
30673         (gen_subprogram_die): When a function is explicit, generate the
30674         DW_AT_explicit attribute.
30675         * langhooks.h (struct lang_hooks_for_decls): Add
30676         function_decl_explicit_p langhook.
30677         * langhooks-def.h (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P): Define.
30678         (LANG_HOOKS_DECLS): Add LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P.
30679
30680 2009-03-27  Jakub Jelinek  <jakub@redhat.com>
30681
30682         * builtins.c (fold_builtin_memory_op): Optimize memmove
30683         into memcpy if we can prove source and destination don't overlap.
30684
30685         * tree-inline.c: Include gt-tree-inline.h.
30686         (clone_fn_id_num): New variable.
30687         (clone_function_name): New function.
30688         (tree_function_versioning): Use it.
30689         * Makefile.in (GTFILES): Add tree-inline.c.
30690
30691 2009-03-27  Mark Mitchell  <mark@codesourcery.com>
30692
30693         * BASE-VER: Change to 4.5.0.
30694
30695 2009-03-27  Xinliang David Li  <davidxl@google.com>
30696
30697         PR tree-optimization/39557
30698         * tree-ssa.c (warn_uninitialized_vars): free postdom info.
30699
30700 2009-03-27  Xinliang David Li  <davidxl@google.com>
30701
30702         PR tree-optimization/39548
30703         * tree-ssa-copy.c (copy_prop_visit_phi_node): Add copy
30704         candidate check.
30705
30706 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
30707
30708         * c-common.c (pointer_int_sum): Use %wd on return from
30709         tree_low_cst.
30710
30711 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
30712
30713         * c-common.c (pointer_int_sum): Use HOST_WIDE_INT_PRINT_DEC
30714         on return from tree_low_cst.
30715
30716 2009-03-27  Andrew Pinski  <andrew_pinski@playstation.sony.com>
30717
30718         PR c++/36799
30719         * ginclude/stdarg.h (va_copy): Define also for
30720         __GXX_EXPERIMENTAL_CXX0X__.
30721
30722 2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
30723
30724         PR c++/35652
30725         * builtins.h (c_strlen): Do not warn here.
30726         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
30727         * c-common.c (pointer_int_sum): Take an explicit location.
30728         Warn about offsets out of bounds.
30729         * c-common.h (pointer_int_sum): Adjust declaration.
30730
30731 2009-03-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
30732
30733         * doc/invoke.texi (i386 and x86-64 Windows Options): Fix texinfo
30734         markup glitch.
30735
30736 2009-03-26  Jakub Jelinek  <jakub@redhat.com>
30737
30738         PR c++/39554
30739         * opts.c (warn_if_disallowed_function_p): Don't assume
30740         get_callee_fndecl must return non-NULL.
30741
30742 2009-03-26  Vladimir Makarov  <vmakarov@redhat.com>
30743
30744         PR rtl-optimization/39522
30745         * reload1.c (reload_as_needed): Invalidate reg_last_reload_reg too
30746         when reg_reloaded_valid is set.
30747
30748 2009-03-26  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
30749
30750         * config/spu/divv2df3.c: New file.
30751         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add it.
30752         (DPBIT_FUNCS): Filter out _div_df.
30753
30754 2009-03-26  Bernd Schmidt  <bernd.schmidt@analog.com>
30755
30756         * config/bfin/bfin.c (bfin_optimize_loop): If the LSETUP goes before
30757         a jump insn, count that jump in the distance to the loop start.
30758
30759 2009-03-25  Kaz Kojima  <kkojima@gcc.gnu.org>
30760
30761         PR target/39523
30762         * config/sh/sh.c (calc_live_regs): Fix condition for global
30763         registers except PIC_OFFSET_TABLE_REGNUM.
30764
30765 2009-03-25  Kai Tietz  <kai.tietz@onevision.com>
30766
30767         PR/39518
30768         * doc/invoke.texi (-mconsole): New.
30769         (-mcygwin): New.
30770         (-mno-cygwin): New.
30771         (-mdll): New.
30772         (-mnop-fun-dllimport): New.
30773         (-mthread): New.
30774         (-mwin32): New.
30775         (-mwindows): New.
30776         (sub section "i386 and x86-64 Windows Options"): New.
30777
30778 2009-03-25  Ralf Corsépius  <ralf.corsepius@rtems.org>
30779
30780         * config/arm/rtems-elf.h: Remove LINK_GCC_C_SEQUENCE_SPEC.
30781         * config/rs6000/t-rtems: Remove MULTILIB_EXTRA_OPTS.
30782
30783 2009-03-25  Richard Guenther  <rguenther@suse.de>
30784
30785         PR middle-end/39497
30786         * Makefile.in (dfp.o-warn): Use -fno-strict-aliasing instead
30787         of -Wno-error.
30788
30789 2009-03-25  Andrey Belevantsev  <abel@ispras.ru>
30790
30791         * config/ia64/ia64.c (ia64_set_sched_flags): Zero spec_info->mask when
30792         neither of haifa/selective schedulers are working.
30793
30794 2009-03-25  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
30795
30796         * doc/invoke.texi (Debugging Options): Fix description of
30797         -fno-merge-debug-strings.
30798
30799 2009-03-24  Hans-Peter Nilsson  <hp@axis.com>
30800
30801         * config/cris/libgcc.ver: New version-script.
30802         * config/cris/t-linux (SHLIB_MAPFILES): Use it.
30803
30804         * configure.ac <GAS features, nop mnemonic>: Add pattern
30805         crisv32-*-* for "nop".
30806         <GAS features, Thread-local storage>: Add item for CRIS and CRIS v32.
30807         * configure: Regenerate.
30808
30809 2009-03-24  Ira Rosen  <irar@il.ibm.com>
30810
30811         PR tree-optimization/39529
30812         * tree-vect-transform.c (vect_create_data_ref_ptr): Call
30813         mark_sym_for_renaming for the tag copied to the new vector
30814         pointer.
30815
30816 2009-03-24  Arthur Loiret  <aloiret@debian.org>
30817
30818         * config.host (alpha*-*-linux*): Use driver-alpha.o and alpha/x-alpha.
30819         * config/alpha/linux.h (host_detect_local_cpu): Declare, add to
30820         EXTRA_SPEC_FUNCTIONS.
30821         (MCPU_MTUNE_NATIVE_SPECS, DRIVER_SELF_SPECS): New macros.
30822         * config/alpha/driver-alpha.c, config/alpha/x-alpha: New.
30823         * doc/invoke.texi (DEC Alpha Options): Document 'native' value for
30824         -march and -mtune options.
30825
30826 2009-03-24  Ralf Corsépius  <ralf.corsepius@rtems.org>
30827
30828         * config/m68k/t-rtems: Add m5329 multilib.
30829
30830 2009-03-24  Dodji Seketeli  <dodji@redhat.com>
30831             Jakub Jelinek  <jakub@redhat.com>
30832
30833         PR debug/39524
30834         * dwarf2out.c (gen_variable_die): Avoid adding duplicate declaration
30835         nodes.
30836
30837 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
30838
30839         PR c/39495
30840         * c-parser.c (c_parser_omp_for_loop): Call c_parser_binary_expression
30841         instead of c_parser_expression_conv, if original_code isn't one of the
30842         4 allowed comparison codes, fail.
30843
30844 2009-03-23  Richard Guenther  <rguenther@suse.de>
30845
30846         * cgraph.h (struct cgraph_node): Reorder fields for 64-bit hosts.
30847         * tree.h (struct tree_type): Likewise.
30848         * reload.h (struct insn_chain): Likewise.
30849         * dwarf2out.c (struct dw_loc_descr_struct): Likewise.
30850         * function.h (struct function): Likewise.
30851         * tree-ssa-structalias.c (struct equiv_class_label): Likewise.
30852
30853 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
30854
30855         PR tree-optimization/39516
30856         * lambda-code.c (perfect_nestify): Fix type of the uboundvar variable.
30857
30858 2009-03-23  Bingfeng Mei  <bmei@broadcom.com>
30859
30860         * config.gcc (need_64bit_hwint): Make clear that need_64bit_hwint
30861         should be set true if BITS_PER_WORD of target is bigger than 32
30862
30863 2009-03-22  Hans-Peter Nilsson  <hp@axis.com>
30864
30865         * config/cris/linux.h (CRIS_LINK_SUBTARGET_SPEC):
30866         Translate -B-options to -rpath-link.  Correct existing
30867         rpath-link and conditionalize on !nostdlib.
30868
30869 2009-03-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
30870
30871         * doc/extend.texi (Function Attributes, Variable Attributes):
30872         Fix typos.
30873         * doc/invoke.texi (Debugging Options, Optimize Options)
30874         (i386 and x86-64 Options, MCore Options): Likewise.
30875
30876 2009-03-20  Jakub Jelinek  <jakub@redhat.com>
30877
30878         PR debug/37890
30879         * dwarf2out.c (gen_namespace_die): Add context_die argument and use
30880         it for block local namespace aliases.
30881         (gen_decl_die): Pass context_die to gen_namespace_die.
30882
30883 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
30884
30885         PR c/39495
30886         * c-omp.c (c_finish_omp_for): Allow NE_EXPR with TREE_TYPE (decl)'s
30887         minimum or maximum value.
30888
30889 2009-03-19  Alexandre Oliva  <aoliva@redhat.com>
30890
30891         * reginfo.c (globalize_reg): Recompute derived reg sets.
30892
30893 2009-03-19  Ozkan Sezer  <sezeroz@gmail.com>
30894
30895         PR target/39063
30896         * libgcc2.c (mprotect): Do not use signed arguments for
30897         VirtualProtect, use DWORD arguments.  Also fix the 'may
30898         be used uninitialized' warning for the np variable.
30899
30900 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
30901
30902         PR target/39496
30903         * config/i386/i386.c (ix86_function_regparm): Don't optimize local
30904         functions using regparm calling conventions when not optimizing.
30905         (ix86_function_sseregparm): Similarly for sseregparm calling
30906         conventions.
30907
30908 2009-03-19  Li Feng  <nemokingdom@gmail.com>
30909
30910         PR middle-end/39500
30911         * tree-data-ref.c (analyze_subscript_affine_affine): There is no
30912         dependence if the first conflict is after niter iterations.
30913
30914 2009-03-19  Hans-Peter Nilsson  <hp@axis.com>
30915
30916         PR middle-end/38609
30917         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Force for all
30918         functions with dynamic stack-pointer adjustments.
30919
30920 2009-03-19  Ben Elliston  <bje@au.ibm.com>
30921
30922         * doc/invoke.texi (RS/6000 and PowerPC Options): Fix -msdata-data
30923         option; change to -msdata=data.
30924
30925 2009-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
30926
30927         * c.opt: Unify help texts for -Wdeprecated, -Wsystem-headers,
30928         and -fopenmp.
30929
30930 2009-03-18  Eric Botcazou  <ebotcazou@adacore.com>
30931
30932         PR target/35180
30933         * config/sparc/sparc.md (do_builtin_setjmp_setup): Prettify asm output.
30934
30935 2009-03-18  Sandra Loosemore  <sandra@codesourcery.com>
30936
30937         * doc/invoke.texi (Code Gen Options): Expand discussion of
30938         -fno-common.
30939
30940 2009-03-18  Jakub Jelinek  <jakub@redhat.com>
30941
30942         * dse.c (struct group_info): Reorder fields for 64-bit hosts.
30943         * matrix-reorg.c (struct matrix_info): Likewise.
30944         * tree-ssa-loop-ivopts.c (struct ivopts_data): Likewise.
30945         * rtl.h (struct mem_attrs): Likewise.
30946         * df.h (struct df): Likewise.
30947         * tree-data-ref.h (struct data_dependence_relation): Likewise.
30948         * ira-int.h (struct ira_allocno): Likewise.
30949         * df-scan.c (struct df_collection_rec): Likewise.
30950         * ira.c (struct equivalence): Likewise.
30951         * function.c (struct temp_slot): Likewise.
30952         * cfgloop.h (struct loop): Likewise.
30953
30954         PR debug/39485
30955         * function.c (use_register_for_decl): When not optimizing, disregard
30956         register keyword for variables with types containing methods.
30957
30958 2009-03-18  Sebastian Pop  <sebastian.pop@amd.com>
30959
30960         PR middle-end/39447
30961         * graphite.c (exclude_component_ref): Renamed contains_component_ref_p.
30962         (is_simple_operand): Call contains_component_ref_p before calling data
30963         reference analysis that would fail on COMPONENT_REFs.
30964
30965         * tree-vrp.c (search_for_addr_array): Fix formatting.
30966
30967 2009-03-18  Richard Guenther  <rguenther@suse.de>
30968
30969         * tree-vect-transform.c (vect_loop_versioning): Fold the
30970         generated comparisons.
30971         * tree-vectorizer.c (set_prologue_iterations): Likewise.
30972         (slpeel_tree_peel_loop_to_edge): Likewise.
30973
30974 2009-03-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
30975
30976         PR middle-end/37805
30977         * opts.c (print_specific_help): In addition to `undocumented',
30978         accept `separate' and `joined' flags if passed alone.  Describe
30979         output by the first matched one of those.
30980         (common_handle_option): Skip over empty strings.
30981         * gcc.c (display_help): Fix help string for `--help='.
30982         * doc/invoke.texi (Option Summary, Overall Options): With
30983         `--help=', classes and qualifiers can both be repeated, but
30984         only the latter can be negated.  One should not pass only
30985         negated qualifiers.  Fix markup and examples.
30986
30987         Revert
30988         2008-10-14  Jakub Jelinek  <jakub@redhat.com>
30989         PR middle-end/37805
30990         * opts.c (common_handle_option): Don't ICE on -fhelp=joined
30991         and -fhelp=separate.
30992
30993 2009-03-17  Jing Yu  <jingyu@google.com>
30994
30995         PR middle-end/39378
30996         * function.h (struct rtl_data): Move is_thunk from here...
30997         (struct function): ...to here.
30998         * cp/method.c (use_thunk): Change is_thunk from crtl to cfun.
30999         * varasm.c (assemble_start_function): Change is_thunk from crtl to
31000         cfun.
31001         * config/alpha/alpha.c (alpha_sa_mask): Change is_thunk from crtl to
31002         cfun.
31003         (alpha_does_function_need_gp, alpha_start_function): Likewise.
31004         (alpha_output_function_end_prologue): Likewise.
31005         (alpha_end_function, alpha_output_mi_thunk_osf): Likewise.
31006         * config/rs6000/rs6000.c (rs6000_ra_ever_killed): Likewise.
31007         (rs6000_output_function_epilogue): Likewise.
31008         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
31009
31010 2009-03-17  Uros Bizjak  <ubizjak@gmail.com>
31011
31012         PR target/39482
31013         * config/i386/i386.md (*truncdfsf_mixed): Avoid combining registers
31014         from different units in a single alternative.
31015         (*truncdfsf_i387): Ditto.
31016         (*truncxfsf2_mixed): Ditto.
31017         (*truncxfdf2_mixed): Ditto.
31018
31019 2009-03-17  Jakub Jelinek  <jakub@redhat.com>
31020
31021         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Allow
31022         non-NAMESPACE_DECL IMPORTED_DECL_ASSOCIATED_DECL.
31023
31024         PR debug/39474
31025         * tree-ssa-live.c (remove_unused_locals): Don't remove local
31026         unused non-artificial variables when not optimizing.
31027
31028         PR debug/39471
31029         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Emit
31030         DW_TAG_imported_module even if decl is IMPORTED_DECL with
31031         NAMESPACE_DECL in its DECL_INITIAL.
31032
31033         PR middle-end/39443
31034         * optabs.c (set_user_assembler_libfunc): New function.
31035         * expr.h (set_user_assembler_libfunc): New prototype.
31036         * c-common.c: Include libfuncs.h.
31037         (set_builtin_user_assembler_name): Call set_user_assembler_libfunc
31038         for memcmp, memset, memcpy, memmove and abort.
31039         * Makefile.in (c-common.o): Depend on libfuncs.h.
31040
31041         PR debug/39412
31042         * dwarf2out.c (gen_inlined_enumeration_type_die,
31043         gen_inlined_structure_type_die, gen_inlined_union_type_die,
31044         gen_tagged_type_instantiation_die): Removed.
31045         (gen_decl_die): For TYPE_DECL_IS_STUB with non-NULL decl_origin
31046         do nothing.
31047
31048 2009-03-17  Janis Johnson  <janis187@us.ibm.com>
31049
31050         PR testsuite/38526
31051         * Makefile.in (site.exp): Rename TEST_GCC_EXEC_PREFIX and comment
31052         its use.
31053         (check-%): Don't set GCC_EXEC_PREFIX when invoking runtest.
31054         (check-parallel-%): Ditto.
31055         (check-consistency): Ditto.
31056
31057 2009-03-17  Kai Tietz  <kai.tietz@onevision.com>
31058
31059         * ipa-struct-reorg.c (create_general_new_stmt): Initialize
31060         local variable rhs by NULL_TREE.
31061
31062 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
31063
31064         PR target/39477
31065         * doc/extend.texi: Correct register behavior for regparm on Intel 386.
31066
31067 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
31068
31069         PR target/39476
31070         * config/i386/i386.c (ix86_function_regparm): Rewrite for 64bit.
31071
31072 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
31073
31074         PR target/39473
31075         * config/i386/i386.c (ix86_expand_call): Check extra clobbers
31076         for ms->sysv ABI calls only in 64bit mode.
31077
31078         * config/i386/i386.md (untyped_call): Support 32bit.
31079
31080 2009-03-16  H.J. Lu  <hongjiu.lu@intel.com>
31081
31082         * doc/extend.texi: Replace x86_65 with x86_64.
31083
31084 2009-03-16  Jakub Jelinek  <jakub@redhat.com>
31085
31086         PR tree-optimization/39455
31087         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Fix types
31088         mismatches for POINTER_TYPE_P (type).
31089         (number_of_iterations_le): Likewise.
31090
31091 2009-03-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
31092
31093         * config/picochip/picochip.c: Removed profiling support.
31094         * config/picochip/picochip.md: Removed profiling instruction.
31095         * config/picochip/picochip.h: Removed profiling builtin.
31096
31097 2009-03-16  Joseph Myers  <joseph@codesourcery.com>
31098
31099         * doc/install.texi (--with-host-libstdcxx): Document.
31100
31101 2009-03-14  Anatoly Sokolov  <aesok@post.ru>
31102
31103         PR target/34299
31104         * config/avr/avr.c (avr_handle_fndecl_attribute): Move code for
31105         generate a warning if the function name does not begin with
31106         "__vector" and the function has either the 'signal' or 'interrupt'
31107         attribute, from here to ...
31108         (avr_declare_function_name): ...here. New function.
31109         * config/avr/avr.h (ASM_DECLARE_FUNCTION_NAME): Redefine.
31110         * config/avr/avr-protos.h (avr_declare_function_name): Declare.
31111
31112 2009-03-14  Jakub Jelinek  <jakub@redhat.com>
31113
31114         PR bootstrap/39454
31115         * cse.c (fold_rtx): Don't modify original const_arg1 when
31116         canonicalizing SHIFT_COUNT_TRUNCATED shift count, do it on a
31117         separate variable instead.
31118         * rtlanal.c (nonzero_bits1) <case ASHIFTRT>: Don't assume anything
31119         from out of range shift counts.
31120         (num_sign_bit_copies1) <case ASHIFTRT, case ASHIFT>: Similarly.
31121
31122 2009-03-13  Catherine Moore  <clm@codesourcery.com>
31123
31124         * config/i386/x-mingw32 (host-mingw32.o): Replace
31125         diagnostic.h with $(DIAGNOSTIC_H).
31126
31127 2009-03-12  Jakub Jelinek  <jakub@redhat.com>
31128
31129         PR target/39431
31130         * config/i386/predicates.md (cmpxchg8b_pic_memory_operand): New
31131         predicate.
31132         * config/i386/sync.md (sync_compare_and_swap<mode>,
31133         sync_compare_and_swap_cc<mode>): For DImode with -m32 -fpic check
31134         if operands[1] is cmpxchg8b_pic_memory_operand, if not force address
31135         into a register.
31136         (sync_double_compare_and_swapdi_pic,
31137         sync_double_compare_and_swap_ccdi_pic): Require operand 1 to be
31138         cmpxchg8b_pic_memory_operand instead of just memory_operand.
31139
31140 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
31141
31142         PR target/39445
31143         * config/i386/i386.c (ix86_expand_push): Don't set memory alignment.
31144
31145 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
31146
31147         PR target/39327
31148         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
31149         (avx_addsubv4df3): Likewise.
31150         (*avx_addsubv4sf3): Likewise.
31151         (sse3_addsubv4sf3): Likewise.
31152
31153 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
31154
31155         PR target/38824
31156         * config/i386/i386.md: Compare REGNO on the new peephole2 patterns.
31157
31158 2009-03-12  Vladimir Makarov  <vmakarov@redhat.com>
31159
31160         PR debug/39432
31161         * ira-int.h (struct allocno): Fix comment for calls_crossed_num.
31162         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
31163         registers for allocnos created from user-defined variables.
31164
31165 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
31166
31167         PR target/39181
31168         * config/spu/spu.c (spu_expand_mov): Handle invalid subregs
31169         of non-integer mode as well.
31170
31171 2009-03-11  Adam Nemet  <anemet@caviumnetworks.com>
31172
31173         * gimplify.c (gimplify_call_expr): Don't set CALL_CANNOT_INLINE_P
31174         for functions for which the parameter types are unknown.
31175
31176 2009-03-11  Jakub Jelinek  <jakub@redhat.com>
31177
31178         PR target/39137
31179         * cfgexpand.c (get_decl_align_unit): Use LOCAL_DECL_ALIGNMENT macro.
31180         * defaults.h (LOCAL_DECL_ALIGNMENT): Define if not yet defined.
31181         * config/i386/i386.h (LOCAL_DECL_ALIGNMENT): Define.
31182         * config/i386/i386.c (ix86_local_alignment): For
31183         -m32 -mpreferred-stack-boundary=2 use 32-bit alignment for
31184         long long variables on the stack to avoid dynamic realignment.
31185         Allow the first argument to be a decl rather than type.
31186         * doc/tm.texi (LOCAL_DECL_ALIGNMENT): Document.
31187
31188 2009-03-11  Nick Clifton  <nickc@redhat.com>
31189
31190         PR target/5362
31191         * config/mcore/mcore.opt: Remove deprecated m4align and m8align
31192         options.
31193         Add description to mno-lsim option.
31194         * config/mcore/mcore.h: Remove comment about deprecated m4align
31195         option.
31196         (TARGET_DEFAULT): Remove deprecated MASK_M8ALIGN.
31197         * doc/invoke.texi: Add description of mno-lsim and
31198         mstack-increment options.
31199
31200         * config/fr30/fr30.opt: Document the -mno-lsim option.
31201         * doc/invoke.texi: Add descriptions of the FR30's -msmall-model
31202         and -mno-lsim options.
31203
31204 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
31205
31206         * fold-const.c (fold_comparison): Only call fold_inf_compare
31207         if the mode supports infinities.
31208
31209 2009-03-11  Jason Merrill  <jason@redhat.com>
31210
31211         PR debug/39086
31212         * tree-nrv.c (tree_nrv): Don't do this optimization if the front
31213         end already did.  Notice GIMPLE_CALL modifications of the result.
31214         Don't copy debug information from an ignored decl or a decl from
31215         another function.
31216
31217 2009-03-10  Richard Guenther  <rguenther@suse.de>
31218             Nathan Froyd  <froydnj@codesourcery.com>
31219
31220         PR middle-end/37850
31221         * libgcc2.c (__mulMODE3): Use explicit assignments to form the result.
31222         (__divMODE3): Likewise.
31223
31224 2009-03-09  Jakub Jelinek  <jakub@redhat.com>
31225
31226         PR tree-optimization/39394
31227         * gimplify.c (gimplify_type_sizes): Gimplify DECL_SIZE and
31228         DECL_SIZE_UNIT of variable length FIELD_DECLs.
31229
31230 2009-03-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
31231
31232         * recog.c (verfiy_changes): Disallow renaming of hard regs in
31233         inline asms for register asm ("") declarations.
31234
31235 2009-03-09  Eric Botcazou  <ebotcazou@adacore.com>
31236
31237         * fold-const.c (fold_unary): Fix comment.
31238
31239 2009-03-07  Jan Hubicka  <jh@suse.cz>
31240
31241         PR target/39361
31242         * tree-inline.c (setup_one_parameter): Do replacement of const
31243         argument by constant in SSA form.
31244
31245 2009-03-07  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
31246
31247         PR middle-end/38028
31248         * function.c (assign_parm_setup_stack): Use STACK_SLOT_ALIGNMENT to
31249         determine alignment passed to assign_stack_local.
31250         (assign_parms_unsplit_complex): Likewise.
31251         * except.c (sjlj_build_landing_pads): Likewise.
31252
31253 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
31254
31255         PR middle-end/39360
31256         * tree-flow.h (add_referenced_var): Return bool instead of void.
31257         * tree-dfa.c (add_referenced_var): Return result of
31258         referenced_var_check_and_insert call.
31259         * tree-inline.c (expand_call_inline): Call add_referenced_var instead
31260         of referenced_var_check_and_insert.
31261
31262         PR debug/39372
31263         * dwarf2out.c (add_abstract_origin_attribute): Return origin_die.
31264         (gen_variable_die): Emit DW_AT_location on abstract static variable's
31265         DIE, don't emit it if abstract origin already has it.
31266         * tree-cfg.c (remove_useless_stmts_bind): GIMPLE_BINDs with any
31267         BLOCK_NONLOCALIZED_VARS in its gimple_bind_block aren't useless.
31268
31269 2009-03-06  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
31270
31271         * genpreds.c (needs_variable): Fix parentheses at variable name
31272         detection.
31273         (write_tm_constrs_h): Indent generated code.
31274
31275 2009-03-06  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
31276
31277         * doc/extend.texi (Function Attributes): Add documentation
31278         for isr attributes.
31279
31280 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
31281
31282         PR debug/39387
31283         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): For IMPORTED_DECL
31284         take locus from its DECL_SOURCE_LOCATION instead of input_location.
31285
31286 2009-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
31287
31288         * config/bfin/bfin.c (bfin_discover_loop): When retrying fails, mark
31289         the loop as bad.
31290
31291 2009-03-05  Jakub Jelinek  <jakub@redhat.com>
31292
31293         PR debug/39379
31294         * tree-cfg.c (remove_useless_stmts_bind): Don't remove GIMPLE_BINDs
31295         with blocks containing IMPORTED_DECLs in BLOCK_VARS.
31296
31297 2009-03-05  Uros Bizjak  <ubizjak@gmail.com>
31298
31299         * config/i386/i386.md (R8_REG, R9_REG): New constants.
31300         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Use named
31301         constants instead of magic numbers.
31302         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
31303         (QI_REG_P): Ditto.
31304         * config/i386/i386.c (x86_64_int_parameter_registers): Ditto.
31305         (x86_64_ms_abi_int_parameter_registers): Ditto.
31306         (x86_64_int_return_registers): Ditto.
31307         (ix86_maybe_switch_abi): Ditto.
31308         (ix86_expand_call): Ditto for clobbered_registers array.
31309         (ix86_hard_regno_mode_ok): Ditto.
31310         (x86_extended_QIreg_mentioned_p): Ditto.
31311
31312 2009-03-05  J"orn Rennecke  <joern.rennecke@arc.com>
31313
31314         PR tree-optimization/39349
31315         * cse.c (cse_insn): Fix loop to stop at VOIDmode.
31316
31317         * combine.c (gen_lowpart_for_combine): Use omode when generating
31318         clobber.
31319
31320 2009-03-04  J"orn Rennecke  <joern.rennecke@arc.com>
31321
31322         PR rtl-optimization/39235
31323         * loop-iv.c (get_simple_loop_desc): Use XCNEW.
31324
31325 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
31326
31327         * graphite.c (nb_reductions_in_loop): Update simple_iv arguments.
31328
31329 2009-03-04  Richard Guenther  <rguenther@suse.de>
31330
31331         PR tree-optimization/39362
31332         * tree-ssa-sccvn.c (visit_use): Stores and copies from SSA_NAMEs
31333         that occur in abnormal PHIs should be varying.
31334
31335 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
31336
31337         * tree-scalar-evolution.c (analyze_scalar_evolution_in_loop):
31338         Extend comments.
31339         (simple_iv):  Take loop as an argument instead of statement.
31340         * tree-scalar-evolution.h (simple_iv): Declaration changed.
31341         * tree-ssa-loop-niter.c (number_of_iterations_exit): Update calls
31342         to simple_iv.
31343         * tree-ssa-loop-ivopts.c (determine_biv_step, find_givs_in_stmt_scev):
31344         Ditto.
31345         * tree-parloops.c (loop_parallel_p, canonicalize_loop_ivs): Ditto.
31346         * matrix-reorg.c (analyze_transpose): Ditto.
31347         * tree-data-ref.c (dr_analyze_innermost): Ditto.
31348         * tree-vect-analyze.c (vect_analyze_data_refs): Ditto.
31349         * tree-predcom.c (ref_at_iteration): Ditto.
31350         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Ditto.
31351
31352 2009-03-04  Richard Guenther  <rguenther@suse.de>
31353
31354         PR tree-optimization/39358
31355         * tree-ssa-structalias.c (do_sd_constraint): Fix check for
31356         escaped_id and callused_id.
31357         (solve_graph): Likewise.
31358
31359 2009-03-04  Richard Guenther  <rguenther@suse.de>
31360
31361         PR tree-optimization/39339
31362         * tree-sra.c (try_instantiate_multiple_fields): Make it
31363         no longer ICE on the above.
31364
31365 2009-03-03  Joseph Myers  <joseph@codesourcery.com>
31366
31367         * emit-rtl.c (adjust_address_1): Reduce offset to a signed value
31368         that fits within Pmode.
31369
31370 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
31371
31372         PR middle-end/10109
31373         * tm.texi (LIBCALL_VALUE): Update description.
31374
31375 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
31376
31377         PR middle-end/34443
31378         * doc/extend.texi (section): Update description.
31379
31380 2009-03-03  H.J. Lu  <hongjiu.lu@intel.com>
31381
31382         PR middle-end/39345
31383         * tree-inline.c (remapped_type): New.
31384         (can_be_nonlocal): Call remapped_type instead of remap_type.
31385
31386 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
31387
31388         PR fortran/39354
31389         * gimplify.c (goa_stabilize_expr): Handle tcc_comparison,
31390         TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR.
31391
31392 2009-03-03  Richard Guenther  <rguenther@suse.de>
31393
31394         PR middle-end/39272
31395         * tree.c (tree_nonartificial_location): New function.
31396         * tree.h (tree_nonartificial_location): Declare.
31397         * builtins.c (expand_builtin_memory_chk): Provide location
31398         of the call location for artificial function pieces.
31399         (maybe_emit_chk_warning): Likewise.
31400         (maybe_emit_sprintf_chk_warning): Likewise.
31401         (maybe_emit_free_warning): Likewise.
31402         * expr.c (expand_expr_real_1): Likewise.
31403
31404 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
31405
31406         PR tree-optimization/39343
31407         * tree-ssa-ccp.c (maybe_fold_offset_to_address): Don't check if
31408         COMPONENT_REF t has ARRAY_TYPE.
31409
31410 2009-03-02  Sebastian Pop  <sebastian.pop@amd.com>
31411
31412         PR middle-end/39335
31413         * tree-parloops.c (canonicalize_loop_ivs): Call fold_convert
31414         when the type precision of the induction variable should be
31415         larger than the type precision of nit.
31416         (gen_parallel_loop): Update use of canonicalize_loop_ivs.
31417         * graphite.c (graphite_loop_normal_form): Same.
31418         * tree-flow.h (canonicalize_loop_ivs): Update declaration.
31419
31420 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
31421
31422         * config/i386/i386.md (ST?_REG, MM?_REG): New constants.
31423         (*call_1_rex64_ms_sysv): Use named constants instead of magic
31424         numbers to describe clobbered registers.
31425         (*call_value_0_rex64_ms_sysv): Ditto.
31426         * config/i386/mmx.md (mmx_emms): Ditto.
31427         (mmx_femms): Ditto.
31428
31429 2009-03-02  Richard Sandiford  <rdsandiford@googlemail.com>
31430
31431         * config/mips/mips.c (mips_mdebug_abi_name): Fix the handling
31432         of ABI_64.
31433
31434 2009-03-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
31435
31436         * config/spu/spu.c (TARGET_SECTION_TYPE_FLAGS): Define.
31437         (spu_section_type_flags): New function.
31438
31439 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
31440
31441         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not copy
31442         reg_class_contents of FLOAT_REGS into a temporary.
31443
31444 2009-03-02  Richard Guenther  <rguenther@suse.de>
31445             Ira Rosen  <irar@il.ibm.com>
31446
31447         PR tree-optimization/39318
31448         * tree-vect-transform.c (vectorizable_call): Transfer the EH region
31449         information to the vectorized statement.
31450
31451 2009-03-01  Uros Bizjak  <ubizjak@gmail.com>
31452
31453         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not shadow "i"
31454         variable.  Use defined names instead of magic constants for REX SSE
31455         registers.
31456
31457 2009-03-01  Richard Guenther  <rguenther@suse.de>
31458
31459         PR tree-optimization/39331
31460         * omp-low.c (lower_send_shared_vars): Do not receive new
31461         values for the reference of DECL_BY_REFERENCE parms or results.
31462
31463 2009-03-01  Jan Hubicka  <jh@suse.cz>
31464
31465         PR debug/39267
31466         * tree.h (BLOCK_NONLOCALIZED_VARS, BLOCK_NUM_NONLOCALIZED_VARS,
31467         BLOCK_NONLOCALIZED_VAR): New macros.
31468         (tree_block): Add nonlocalized_vars.
31469         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die,
31470         gen_decl_die): Add origin argument.  Allow generation of die with
31471         origin at hand only.
31472         (gen_member_die, gen_type_die_with_usage, force_decl_die,
31473         declare_in_namespace, gen_namescpace_die, dwarf2out_decl): Update use
31474         of gen_*.
31475         (gen_block_die): Fix checking for unused blocks.
31476         (process_scope_var): Break out from .... ; work with origins only.
31477         (decls_for_scope) ... here; process nonlocalized list.
31478         (dwarf2out_ignore_block): Look for nonlocalized vars.
31479         * tree-ssa-live.c (remove_unused_scope_block_p): Look for nonlocalized
31480         vars.
31481         (dump_scope_block): Dump them.
31482         * tree-inline.c (remap_decls): Handle nonlocalized vars.
31483         (remap_block): Likewise.
31484         (can_be_nonlocal): New predicate.
31485         (copy_bind_expr, copy_gimple_bind): Update use of remap_block.
31486
31487 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
31488
31489         * configure: Regenerate.
31490
31491 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
31492
31493         * optc-gen.awk: No need to duplicate option flags twice.
31494         Reuse help texts for duplicate options which do not have any.
31495
31496         * gcc.c (display_help): Document --version.
31497
31498         * gcc.c (main): If print_help_list and verbose_flag, ensure
31499         driver output comes before subprocess output.
31500
31501         * optc-gen.awk: Assign all remaining fields to help string,
31502         space-separated, for multi-line help in *.opt.
31503
31504         * doc/invoke.texi (Warning Options): -Wsync-nand is C/C++ only.
31505         -Wno-pedantic-ms-format is for MinGW targets only.
31506
31507         * doc/options.texi (Option file format): Fix bad indentation,
31508         restoring dropped sentence.
31509
31510 2009-02-28  Jan Hubicka  <jh@suse.cz>
31511
31512         * tree-inline.c (tree_function_versioning): Output debug info.
31513
31514 2009-02-28  Jan Hubicka  <jh@suse.cz>
31515
31516         PR debug/39267
31517         * tree-inline.c (setup_one_parameter): Do not copy propagate
31518         arguments when not optimizing.
31519
31520 2009-02-28  H.J. Lu  <hongjiu.lu@intel.com>
31521
31522         PR target/39327
31523         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
31524         (avx_addsubv4df3): Likewise.
31525         (*avx_addsubv4sf3): Likewise.
31526         (sse3_addsubv4sf3): Likewise.
31527         (*avx_addsubv2df3): Likewise.
31528         (sse3_addsubv2df3): Likewise.
31529         (avx_unpckhps256): Correct item selectors.
31530         (avx_unpcklps256): Likewise.
31531         (avx_unpckhpd256): Likewise.
31532         (avx_unpcklpd256): Likewise.
31533
31534 2009-02-28  Jan Hubicka  <jh@suse.cz>
31535
31536         * tree-inline.c (expand_call_inline): Avoid duplicate declarations of
31537         static vars.
31538         (copy_arguments_for_versioning): If var is declared don't declare it.
31539         (tree_function_versioning): First setup substitutions and then copy
31540         args.
31541
31542 2009-02-27  Jan Hubicka  <jh@suse.cz>
31543
31544         PR debug/39267
31545         * cgraph.h (varpool_output_debug_info): Remove.
31546         * cgraphunit.c (varpool_output_debug_info): Remove.
31547         * dwarf2out.c (deferred_locations_struct): New struct
31548         (deferred_locations): New type.
31549         (deferred_locations_list): New static var.
31550         (deffer_location): New function.
31551         (gen_variable_die): Use it.
31552         (decls_for_scope): Output info on local static vars.
31553         (dwarf2out_finish): Process deferred locations.
31554         * varpool.c (varpool_output_debug_info): Remove.
31555
31556 2009-02-27  Jan Hubicka  <jh@suse.cz>
31557
31558         PR debug/39267
31559         * tree.h (TREE_PROTECTED): Fix comment.
31560         (BLOCK_HANDLER_BLOCK): Remove.
31561         (struct tree_block): Remove handler_block add body_block.
31562         (inlined_function_outer_scope_p): New.
31563         (is_body_block): Remove.
31564         * dbxout.c (dbxout_block): Remove BLOCK_HANDLER_BLOCK.
31565         * dwarf2out.c (is_inlined_entry_point): Remove.
31566         (add_high_low_attributes): Use inlined_function_outer_scope_p.
31567         (gen_block_die): Use is_inlined_entry_point check.  Remove body block
31568         code.
31569         * langhooks.h (struct lang_hooks): Remove no_bodu_blocks.
31570         * gimplify.c (gimplify_expr): Gimplify body blocks.
31571         * tree-ssa-live.c (remove_unused_scope_block_p): Allow removing wrapper
31572         block with multiple subblocks.
31573         (dump_scope_block): Prettier output; dump more flags and info.
31574         (dump_scope_blocks): New.
31575         (remove_unused_locals): Use dump_scope_blocks.
31576         * tree-flow.h (dump_scope_blocks): Declare.
31577         * tree-cfg.c (execute_build_cfg): Dump scope blocks.
31578         * stmt.c (is_body_block): Remove.
31579         * tree-inline.c (remap_block): Copy BODY_BLOCK info.
31580         * langhooks-def.h (LANG_HOOKS_NO_BODY_BLOCKS): Remove.
31581
31582 2009-02-27  Sebastian Pop  <sebastian.pop@amd.com>
31583
31584         PR middle-end/39308
31585         * graphite.c (graphite_loop_normal_form): Do not call
31586         number_of_iterations_exit from a gcc_assert.
31587
31588 2009-02-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
31589
31590         * config/s390/s390.c (s390_swap_cmp): Look for conditional
31591         jumps if COND is NULL.
31592         (find_cond_jump): New function.
31593         (s390_z10_optimize_cmp): Handling for reg-reg compares added.
31594         * config/s390/s390.md: Remove z10_cobra attribute value.
31595
31596 2009-02-26  Uros Bizjak  <ubizjak@gmail.com>
31597
31598         * config/alpha/alpha.h (alpha_expand_mov): Return false if
31599         force_const_mem returns NULL_RTX.
31600
31601 2009-02-26  Jan Hubicka  <jh@suse.cz>
31602
31603         PR debug/39267
31604         * cgraph.h (varpool_output_debug_info): Remove.
31605         * cgraphunit.c (varpool_output_debug_info): Remove.
31606         * dwarf2out.c (deferred_locations_struct): New struct
31607         (deferred_locations): New type.
31608         (deferred_locations_list): New static var.
31609         (deffer_location): New function.
31610         (gen_variable_die): Use it.
31611         (decls_for_scope): Output info on local static vars.
31612         (dwarf2out_finish): Process deferred locations.
31613         * varpool.c (varpool_output_debug_info): Remove.
31614
31615 2009-02-25  H.J. Lu  <hongjiu.lu@intel.com>
31616
31617         PR rtl-optimization/39241
31618         * jump.c (rtx_renumbered_equal_p): Remove 2 superfluous calls
31619         to subreg_offset_representable_p.
31620
31621 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
31622
31623         * regmove.c (regmove_optimize): Conform to struct rtl_opt_pass
31624         execute function prototype.  Get f and nregs from max_reg_num
31625         and get_insns.  Remove the first backward pass as it's dead,
31626         guard the forward pass by flag_expensive_optimizations.
31627         (rest_of_handle_regmove): Delete.
31628         (pass_regmove): Replace it with regmove_optimize.
31629
31630 2009-02-25  Martin Jambor  <mjambor@suse.cz>
31631
31632         PR tree-optimization/39259
31633         * tree-inline.c (initialize_cfun): Remove asserts for calls_setjmp and
31634         calls_alloca function flags.
31635         (copy_bb): Set calls_setjmp and alls_alloca function flags if such
31636         calls are detected.
31637
31638 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
31639
31640         * regmove.c (discover_flags_reg, flags_set_1, mark_flags_life_zones,
31641         flags_set_1_rtx, flags_set_1_set): Delete.
31642         (regmove_optimize): Do not call mark_flags_life_zones.
31643
31644 2009-02-24  Julian Brown  <julian@codesourcery.com>
31645
31646         PR target/35965
31647         * config/arm/arm.c (require_pic_register): Only set
31648         cfun->machine->pic_reg once per function.
31649
31650 2009-02-24  Sandra Loosemore  <sandra@codesourcery.com>
31651
31652         * doc/invoke.texi (Link Options): Document an easier way to pass
31653         options that take arguments to the GNU linker using -Xlinker and -Wl.
31654
31655 2009-02-24  Steve Ellcey  <sje@cup.hp.com>
31656
31657         PR target/33785
31658         * doc/tm.texi (TARGET_C99_FUNCTIONS): Fix description.
31659
31660 2009-02-24  Richard Guenther  <rguenther@suse.de>
31661
31662         PR debug/39285
31663         * dwarf2out.c (gen_enumeration_type_die): Handle CONST_DECLs.
31664
31665 2009-02-24  Richard Guenther  <rguenther@suse.de>
31666             Zdenek Dvorak  <ook@ucw.cz>
31667
31668         PR tree-optimization/39233
31669         * tree-ssa-loop-ivopts.c (add_candidate_1): Do not except pointers
31670         from converting them to a generic type.
31671
31672 2009-02-23  Sebastian Pop  <sebastian.pop@amd.com>
31673
31674         PR tree-optimization/39260
31675         * graphite.c (harmful_stmt_in_bb): Stop a SCoP when the basic block
31676         contains a condition with a real type.
31677         (build_scop_conditions_1): Conditions are always last_stmt of a bb.
31678
31679 2009-02-23  Jason Merrill  <jason@redhat.com>
31680
31681         PR c++/38880
31682         * varasm.c (initializer_constant_valid_p) [PLUS_EXPR]: Check
31683         narrowing_initializer_constant_valid_p.
31684         (narrowing_initializer_constant_valid_p): Don't return
31685         null_pointer_node for adding a pointer to itself.
31686
31687 2009-02-23  Jan Hubicka  <jh@suse.cz>
31688
31689         PR c/12245
31690         * ggc.h (htab_create_ggc): Use ggc_free to free hashtable when
31691         resizing.
31692
31693 2009-02-23  Jan Hubicka  <jh@suse.cz>
31694
31695         PR tree-optimization/37709
31696         * tree.c (block_ultimate_origin): Move here from dwarf2out.
31697         * tree.h (block_ultimate_origin): Declare.
31698         * dwarf2out.c (block_ultimate_origin): Move to tree.c
31699         * tree-ssa-live.c (remove_unused_scope_block_p):
31700         Eliminate blocks containig no instructions nor live variables nor
31701         nested blocks.
31702         (dump_scope_block): New function.
31703         (remove_unused_locals): Enable removal of dead blocks by default;
31704         enable dumping at TDF_DETAILS.
31705
31706 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
31707
31708         * config/i386/i386.c (classify_argument): Don't allow COImode
31709         and OImode.
31710         (function_arg_advance_32): Don't allow OImode.
31711         (function_arg_32): Likewise.
31712         (function_value_32): Likewise.
31713         (return_in_memory_32): Likewise.
31714         (function_arg_64): Remove OImode comment.
31715
31716 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
31717
31718         PR target/39261
31719         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
31720         ix86_expand_vector_set for V4DImode in 64bit mode only.
31721         (ix86_expand_vector_init_one_var): Likewise.
31722
31723 2009-02-21  Sebastian Pop  <sebastian.pop@amd.com>
31724
31725         * graphite.c (graphite_trans_loop_block): Adjust tile size to 51.
31726
31727 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
31728
31729         PR bootstrap/39257
31730         * loop-iv.c: Revert last change.
31731         * emit-rtl.c: Likewise.
31732
31733 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
31734
31735         PR target/39256
31736         * config/i386/i386.c (type_natural_mode): Remove an extra
31737         space in the warning message.
31738         (function_value_32): Handle 32-byte vector modes.
31739         (return_in_memory_32): Likewise.
31740
31741 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
31742
31743         * loop-iv.c (truncate_value): New function.
31744         (iv_subreg, get_iv_value, iv_number_of_iterations): Use it instead
31745         of lowpart_subreg.
31746         (lowpart_subreg): Move to...
31747         * emit-rtl.c: ...here.
31748
31749 2009-02-21  Danny Smith  <dannysmith@users.sourceforge.net>
31750
31751         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common): Revert
31752         accidental and undocumented change at revision 140860.
31753
31754 2009-02-21  Joseph Myers  <joseph@codesourcery.com>
31755
31756         * config/arm/arm.c (arm_gimplify_va_arg_expr): Update prototype to
31757         take gimple_seq * arguments.
31758         (arm_mangle_type): Use CONST_CAST_TREE on type argument passed to
31759         types_compatible_p langhook.
31760
31761 2009-02-20  Mark Mitchell  <mark@codesourcery.com>
31762             Joseph Myers  <joseph@codesourcery.com>
31763
31764         * config/arm/arm.c (arm_builtin_va_list): New function.
31765         (arm_expand_builtin_va_start): Likewise.
31766         (arm_gimplify_va_arg_expr): Likewise.
31767         (TARGET_BUILD_BUILTIN_VA_LIST): Define.
31768         (TARGET_BUILD_BUILTIN_VA_START): Likewise.
31769         (TARGET_BUILD_BUILTIN_VA_ARG_EXPR): Likewise.
31770         (va_list_type): New variable.
31771         (arm_mangle_type): Mangle va_list_type appropriately.
31772
31773 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
31774
31775         PR middle-end/39157
31776         * Makefile.in (loop-invariant.o): Depend on $(PARAMS_H).
31777         * params.h (LOOP_INVARIANT_MAX_BBS_IN_LOOP): Define.
31778         * params.def (loop-invariant-max-bbs-in-loop): New parameter.
31779         * opts.c (decode_options): Set loop-invariant-max-bbs-in-loop
31780         parameter to 1000 for -O1 by default.
31781         * doc/invoke.texi (loop-invariant-max-bbs-in-loop): Document new
31782         parameter.
31783         * loop-invariant.c: Include params.h.
31784         (move_loop_invariants): Don't call move_single_loop_invariants on
31785         very large loops.
31786
31787 2009-02-20  Jaka Mocnik  <jaka@xlab.si>
31788
31789         * calls.c (emit_library_call_value_1): Use slot_offset instead of
31790         offset when calculating bounds for indexing stack_usage_map.  Fixes
31791         a buffer overflow with certain target setups.
31792
31793 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
31794
31795         PR target/39240
31796         * calls.c (expand_call): Clear try_tail_call if caller and callee
31797         disagree in promotion of function return value.
31798
31799 2009-02-19  Jakub Jelinek  <jakub@redhat.com>
31800
31801         PR target/39175
31802         * c-common.c (c_determine_visibility): If visibility changed and
31803         DECL_RTL has been already set, call make_decl_rtl to update symbol
31804         flags.
31805
31806 2009-02-19  H.J. Lu  <hongjiu.lu@intel.com>
31807
31808         PR c++/39188
31809         * varasm.c (assemble_variable): Don't check DECL_NAME when
31810         globalizing a variable.
31811
31812 2009-02-19  Joseph Myers  <joseph@codesourcery.com>
31813
31814         PR c/38483
31815         * builtins.c (gimplify_va_arg_expr): Evaluate the va_list
31816         expression before any __builtin_trap call.
31817         * c-typeck.c (build_function_call): Convert and check function
31818         arguments before generating a call to a trap.  Evaluate the
31819         function arguments before the trap.
31820
31821 2009-02-19  Uros Bizjak  <ubizjak@gmail.com>
31822
31823         PR target/39228
31824         * config/i386/i386.md (isinfxf2): Split from isinf<mode>2.
31825         (UNSPEC_FXAM_MEM): New unspec.
31826         (fxam<mode>2_i387_with_temp): New insn and split pattern.
31827         (isinf<mode>2): Use MODEF mode iterator.  Force operand[1] through
31828         memory using fxam<mode>2_i387_with_temp to remove excess precision.
31829
31830 2009-02-19  Richard Guenther  <rguenther@suse.de>
31831
31832         PR tree-optimization/39207
31833         PR tree-optimization/39074
31834         * tree-ssa-structalias.c (storedanything_id, var_storedanything,
31835         storedanything_tree): New.
31836         (do_ds_constraint): Simplify ANYTHING shortcutting.  Update
31837         the STOREDANYTHING solution if the lhs solution contains ANYTHING.
31838         (build_succ_graph): Add edges from STOREDANYTHING to all
31839         non-direct nodes.
31840         (init_base_vars): Initialize STOREDANYTHING.
31841         (compute_points_to_sets): Free substitution info after
31842         building the succ graph.
31843         (ipa_pta_execute): Likewise.
31844
31845         * tree-ssa-structalias.c (struct variable_info): Add may_have_pointers
31846         field.
31847         (do_ds_constraint): Do not add to special var or non-pointer
31848         field solutions.
31849         (type_could_have_pointers): Split out from ...
31850         (could_have_pointers): ... here.  For arrays use the element type.
31851         (create_variable_info_for): Initialize may_have_pointers.
31852         (new_var_info): Likewise.
31853         (handle_lhs_call): Make the HEAP variable unknown-sized.
31854         (intra_create_variable_infos): Use a type with pointers for
31855         PARM_NOALIAS, make it unknown-sized.
31856
31857 2009-02-18  H.J. Lu  <hongjiu.lu@intel.com>
31858
31859         PR target/39224
31860         * config/i386/i386.c (ix86_return_in_memory): Properly check ABI.
31861
31862 2009-02-18  Jason Merrill  <jason@redhat.com>
31863
31864         PR target/39179
31865         * tree-ssa-ccp.c (get_symbol_constant_value): Don't assume zero
31866         value if DECL_EXTERNAL.
31867         * tree-sra.c (sra_walk_gimple_assign): Likewise.
31868         * target.h (gcc_target::binds_local_p): Clarify "module".
31869         * tree.h (TREE_PUBLIC): Clarify "module".
31870
31871 2009-02-17  Xuepeng Guo  <xuepeng.guo@intel.com>
31872
31873         PR target/38891
31874         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move the hunk of
31875         initialization for MS_ABI prior to the hunk of !TARGET_MMX.
31876
31877 2009-02-17  H.J. Lu  <hongjiu.lu@intel.com>
31878
31879         PR target/39082
31880         * c.opt (Wabi): Support C and ObjC.
31881         (Wpsabi): New.
31882
31883         * c-opts.c (c_common_handle_option): Handle OPT_Wabi.
31884
31885         * config/i386/i386.c (classify_argument): Warn once about the ABI
31886         change when passing union with long double.
31887
31888         * doc/invoke.texi: Update -Wabi for warning psABI changes.
31889
31890 2009-02-18  Joseph Myers  <joseph@codesourcery.com>
31891
31892         PR c/35447
31893         * c-parser.c (c_parser_compound_statement): Always enter and leave
31894         a scope.
31895
31896 2009-02-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
31897
31898         PR target/34587
31899         * config/darwin.h (SUPPORTS_INIT_PRIORITY): Define.
31900
31901 2009-02-18  Jakub Jelinek  <jakub@redhat.com>
31902
31903         PR tree-optimization/36922
31904         * tree-data-ref.c (initialize_matrix_A): Handle BIT_NOT_EXPR.
31905         * tree-scalar-evolution.c (interpret_rhs_expr, instantiate_scev_1):
31906         Likewise.
31907
31908 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
31909
31910         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
31911         to 0 for EABI64.
31912
31913 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
31914
31915         * config/mips/mips.md (type): Reclassify lui_movf as "unknown".
31916
31917 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
31918
31919         * config/mips/mips.c (mips_gimplify_va_arg_expr): Fix invalid
31920         tree sharing.
31921
31922 2009-02-17  Ruan Beihong  <ruanbeihong@gmail.com>
31923             Richard Sandiford  <rdsandiford@googlemail.com>
31924
31925         * config/mips/mips.c (CODE_FOR_loongson_biadd): Delete.
31926         * config/mips/loongson.md (reduc_uplus_<mode>): Rename to...
31927         (loongson_biadd): ...this.
31928
31929 2009-02-17  Richard Guenther  <rguenther@suse.de>
31930
31931         PR tree-optimization/39202
31932         * tree-ssa-structalias.c (do_structure_copy): Before collapsing
31933         a var make sure to follow existing collapses.
31934
31935 2009-02-17  Richard Guenther  <rguenther@suse.de>
31936
31937         PR middle-end/39214
31938         * langhooks.c (lhd_print_error_function): Check for NULL block.
31939
31940 2009-02-17  Richard Guenther  <rguenther@suse.de>
31941
31942         PR tree-optimization/39204
31943         * tree-ssa-pre.c (phi_translate_1): Lookup the value-number
31944         of the PHI arg.
31945
31946 2009-02-17  Uros Bizjak  <ubizjak@gmail.com>
31947
31948         * config/soft-fp/double.h: Update from glibc CVS.
31949
31950 2009-02-17  Richard Guenther  <rguenther@suse.de>
31951
31952         PR tree-optimization/39207
31953         * tree-ssa-structalias.c (find_what_p_points_to): Do not emit
31954         strict-aliasing warnings for pointers pointing to NULL.
31955
31956 2009-02-16  Joseph Myers  <joseph@codesourcery.com>
31957
31958         PR c/35446
31959         * c-parser.c (c_parser_braced_init): Call pop_init_level when
31960         skipping until next close brace.
31961
31962 2009-02-16  H.J. Lu  <hongjiu.lu@intel.com>
31963
31964         PR target/37049
31965         * config/i386/i386.c (ix86_expand_push): Set memory alignment
31966         to function argument boundary.
31967
31968 2009-02-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
31969
31970         * config/picochip/picochip.md (lea_add): Allow any nonimmediate
31971         in the lea_add. Reload eventually constraints it properly.
31972         * config/picochip/constraints.md: Remove the target constraint
31973         "b", since it is not needed anymore.
31974
31975 2009-02-16  Jakub Jelinek  <jakub@redhat.com>
31976
31977         * gthr-dce.h: Uglify function parameter and local variable names.
31978         * gthr-gnat.h: Likewise.
31979         * gthr-mipssde.h: Likewise.
31980         * gthr-nks.h: Likewise.
31981         * gthr-posix95.h: Likewise.
31982         * gthr-posix.h: Likewise.
31983         * gthr-rtems.h: Likewise.
31984         * gthr-single.h: Likewise.
31985         * gthr-solaris.h: Likewise.
31986         * gthr-tpf.h: Likewise.
31987         * gthr-vxworks.h: Likewise.
31988         * gthr-win32.h: Likewise.
31989
31990 2009-02-15  H.J. Lu  <hongjiu.lu@intel.com>
31991
31992         PR target/39196
31993         * config/i386/i386.md: Restrict the new peephole2 to move
31994         between MMX/SSE registers.
31995
31996 2009-02-15  Richard Guenther  <rguenther@suse.de>
31997
31998         Revert
31999         2009-02-13  Richard Guenther  <rguenther@suse.de>
32000
32001         * configure.ac: Enable LFS.
32002         * configure: Re-generate.
32003         * config.in: Likewise.
32004
32005 2009-02-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
32006
32007         * config/spu/spu_internals.h (spu_sr, spu_sra, spu_srqw,
32008         spu_srqwbyte, spu_srqwbytebc): Define.
32009         * config/spu/spu-builtins.def (spu_sr, spu_sra, spu_srqw,
32010         spu_srqwbyte, spu_srqwbytebc): New overloaded builtins.
32011         * config/spu/spu.md ("shrqbybi_<mode>", "shrqbi_<mode>",
32012         "shrqby_<mode>"): New insn-and-split patterns.
32013         * config/spu/spu.c (expand_builtin_args): Determine and return
32014         number of operands using spu_builtin_description data.
32015         (spu_expand_builtin_1): Use it.
32016
32017 2009-02-13  Steve Ellcey  <sje@cup.hp.com>
32018
32019         PR target/38056
32020         * config/ia64/ia64.c (ia64_function_ok_for_sibcall): Check
32021         TARGET_CONST_GP.
32022
32023 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
32024
32025         PR target/39149
32026         * config/i386/i386.c (override_options): Correct warning
32027         messages for -malign-loops, -malign-jumps and -malign-functions.
32028
32029 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
32030
32031         PR target/39152
32032         * config/i386/i386.md: Restrict the new peephole2 to move
32033         between the general purpose registers.
32034
32035 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
32036
32037         PR target/39162
32038         * config/i386/i386.c (type_natural_mode): Add a new argument.
32039         Return the original mode and warn ABI change if vector size is 32byte.
32040         (function_arg_advance): Updated.
32041         (function_arg): Likewise.
32042         (ix86_function_value): Likewise.
32043         (ix86_return_in_memory): Likewise.
32044         (ix86_sol10_return_in_memory): Likewise.
32045         (ix86_gimplify_va_arg): Likewise.
32046         (function_arg_32): Don't warn ABX ABI change here.
32047         (function_arg_64): Likewise.
32048
32049 2009-02-13  Bernd Schmidt  <bernd.schmidt@analog.com>
32050
32051         * loop-iv.c (implies_p): In the final case, test that operands 0
32052         of the two comparisons match.
32053
32054         * config/bfin/bfin.c (find_prev_insn_start): New function.
32055         (bfin_optimize_loop): Use it in some cases instead of PREV_INSN.
32056         (find_next_insn_start): Move.
32057
32058 2009-02-13  Richard Guenther  <rguenther@suse.de>
32059
32060         * configure.ac: Enable LFS.
32061         * configure: Re-generate.
32062         * config.in: Likewise.
32063
32064 2009-02-13  Joseph Myers  <joseph@codesourcery.com>
32065
32066         PR c/35444
32067         * c-parser.c (c_parser_parms_list_declarator): Discard pending
32068         sizes on syntax error after some arguments have been parsed.
32069
32070 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
32071
32072         * doc/invoke.texi (-fira): Remove.
32073
32074 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
32075
32076         * caller-save.c: Replace regclass.c with reginfo.c in comments.
32077         * recog.c: Likewise.
32078         * rtl.h: Likewise.
32079
32080 2009-02-12  Uros Bizjak  <ubizjak@gmail.com>
32081
32082         * longlong.h (sub_ddmmss): New for ia64. Ported from GMP 4.2.
32083         (umul_ppmm): Likewise.
32084         (count_leading_zeros): Likewise.
32085         (count_trailing_zeros): Likewise.
32086         (UMUL_TIME): Likewise.
32087
32088 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
32089
32090         * config.gcc (ia64*-*-linux*): Add ia64/t-fprules-softfp and
32091         soft-fp/t-softfp to tmake_file.
32092
32093         * config/ia64/ia64.c (ia64_soft_fp_init_libfuncs): New.
32094         (ia64_expand_compare): Use HPUX library for TFmode only for HPUX.
32095         (ia64_builtins) [IA64_BUILTIN_COPYSIGNQ, IA64_BUILTIN_FABSQ,
32096         IA64_BUILTIN_INFQ]: New.
32097         (ia64_init_builtins): Initialize __builtin_infq,
32098         __builtin_fabsq and __builtin_copysignq if not HPUX.
32099         (ia64_expand_builtin): Handle IA64_BUILTIN_COPYSIGNQ,
32100         IA64_BUILTIN_FABSQ and IA64_BUILTIN_INFQ.
32101
32102         * config/ia64/lib1funcs.asm (__divtf3): Define only if
32103         SHARED is defined.
32104         (__fixtfti): Likewise.
32105         (__fixunstfti): Likewise.
32106         (__floattitf): Likewise.
32107
32108         * config/ia64/libgcc-glibc.ver: New.
32109         * config/ia64/t-fprules-softfp: Likewise.
32110         * config/ia64/sfp-machine.h: Likewise.
32111
32112         * config/ia64/linux.h (LIBGCC2_HAS_TF_MODE): New.
32113         (LIBGCC2_TF_CEXT): Likewise.
32114         (TF_SIZE): Likewise.
32115         (TARGET_INIT_LIBFUNCS): Likewise.
32116
32117         * config/ia64/t-glibc (SHLINB_MAPFILES):
32118         Add $(srcdir)/config/ia64/libgcc-glibc.ver.
32119
32120 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
32121
32122         * config/i386/i386.c (construct_container): Rewrite processing
32123         BLKmode with X86_64_SSE_CLASS.
32124
32125 2009-02-12  Paolo Bonzini  <bonzini@gnu.org>
32126
32127         PR target/39152
32128         * config/i386/i386.md: Replace simplify_replace_rtx with
32129         replace_rtx in the new peephole2.
32130
32131 2009-02-12  Nathan Sidwell  <nathan@codesourcery.com>
32132
32133         * doc/invoke.texi (Optimize Options): Stop claiming inlining and
32134         loop unrolling do not happen at -O2.
32135
32136 2009-02-12  Michael Matz  <matz@suse.de>
32137
32138         * gcc.c (ASM_DEBUG_SPEC): Check for -g0.
32139
32140 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
32141
32142         * dwarf2out.c (dwarf2out_finish): Force output of comp_unit_die
32143         for -g3.
32144
32145 2009-02-12  Ben Elliston  <bje@au.ibm.com>
32146
32147         * config/rs6000/rs6000.md (allocate_stack): Use _stack form of
32148         patterns when updating the back chain.  Missed in the 2009-02-10
32149         change.
32150
32151 2009-02-11  Janis Johnson  <janis187@us.ibm.com>
32152
32153         * doc/extend.texi (Decimal Floating Types): Update identifier of
32154         draft TR and list of missing support.
32155
32156 2009-02-11  Jakub Jelinek  <jakub@redhat.com>
32157
32158         PR middle-end/39154
32159         * gimplify.c (omp_notice_variable): If adding GOVD_SEEN
32160         bit to variable length decl's flags, add it also to its
32161         pointer replacement variable.
32162
32163 2009-02-11  Uros Bizjak  <ubizjak@gmail.com>
32164             Jakub Jelinek  <jakub@redhat.com>
32165
32166         PR target/39118
32167         * config/i386/i386.md (UNSPEC_MEMORY_BLOCKAGE): New constant.
32168         (memory_blockage): New expander.
32169         (*memory_blockage): New insn pattern.
32170         * config/i386/i386.c (ix86_expand_prologue): Use memory_blockage
32171         instead of general blockage at the end of function prologue when
32172         frame pointer is used to access red zone area.  Do not emit blockage
32173         when profiling, it is emitted in generic code.
32174         (ix86_expand_epilogue): Emit memory_blockage at the beginning of
32175         function epilogue when frame pointer is used to access red zone area.
32176
32177 2009-02-11  Paolo Bonzini  <bonzini@gnu.org>
32178
32179         PR target/38824
32180         * config/i386/i386.md: Add two new peephole2 to avoid mov followed
32181         by arithmetic with memory operands.
32182         * config/i386/predicates.md (commutative_operator): New.
32183
32184 2009-02-10  Janis Johnson  <janis187@us.ibm.com>
32185
32186         * doc/extend.texi (Fixed-Point Types): Break long paragraphs into
32187         bulleted lists.
32188
32189 2009-02-10  Eric Botcazou  <ebotcazou@adacore.com>
32190
32191         * alias.h (record_alias_subset): Declare.
32192         * alias.c (record_alias_subset): Make global.
32193
32194 2009-02-10  Nick Clifton  <nickc@redhat.com>
32195
32196         * tree-parloops.c: Change license to GPLv3.
32197         * ipa-struct-reorg.c: Change license to GPLv3.
32198         * ipa-struct-reorg.h: Change license to GPLv3.
32199
32200 2009-02-10  Steve Ellcey  <sje@cup.hp.com>
32201
32202         PR c/39084
32203         * c-decl.c (start_struct): Return NULL on error.
32204
32205 2009-02-10  Jakub Jelinek  <jakub@redhat.com>
32206
32207         PR middle-end/39124
32208         * cfgloopmanip.c (remove_path): Call remove_bbs after
32209         cancel_loop_tree, not before it.
32210
32211         PR target/39139
32212         * function.h (struct function): Add has_local_explicit_reg_vars bit.
32213         * gimplify.c (gimplify_bind_expr): Set it if local DECL_HARD_REGISTER
32214         VAR_DECLs were seen.
32215         * tree-ssa-live.c (remove_unused_locals): Recompute
32216         cfun->has_local_explicit_reg_vars.
32217         * tree-ssa-sink.c (statement_sink_location): Don't sink BLKmode
32218         copies or clearings if cfun->has_local_explicit_reg_vars.
32219
32220 2009-02-10  Uros Bizjak  <ubizjak@gmail.com>
32221
32222         PR target/39118
32223         * config/i386/i386.c (expand_prologue): Emit blockage at the end
32224         of function prologue when frame pointer is used to access
32225         red zone area.
32226
32227 2009-02-10  Richard Guenther  <rguenther@suse.de>
32228
32229         PR middle-end/39127
32230         * gimplify.c (gimple_regimplify_operands): Always look if
32231         we need to create a temporary.
32232
32233 2009-02-10  Richard Guenther  <rguenther@suse.de>
32234
32235         PR tree-optimization/39132
32236         * tree-loop-distribution.c (todo): New global var.
32237         (generate_memset_zero): Trigger TODO_rebuild_alias.
32238         (tree_loop_distribution): Return todo.
32239
32240 2009-02-10  H.J. Lu  <hongjiu.lu@intel.com>
32241
32242         PR target/39119
32243         * config/i386/i386.c (x86_64_reg_class): Remove X86_64_AVX_CLASS.
32244         (x86_64_reg_class_name): Removed.
32245         (classify_argument): Return 0 if bytes > 32.  Return 0 if the
32246         first one isn't X86_64_SSE_CLASS or any other ones aren't
32247         X86_64_SSEUP_CLASS when size > 16bytes.  Don't turn
32248         X86_64_SSEUP_CLASS into X86_64_SSE_CLASS if the preceded one
32249         is X86_64_SSEUP_CLASS.  Set AVX modes to 1 X86_64_SSE_CLASS
32250         and 3 X86_64_SSEUP_CLASS.
32251         (construct_container): Remove X86_64_AVX_CLASS.  Handle 4
32252         registers with 1 X86_64_SSE_CLASS and 3 X86_64_SSEUP_CLASS.
32253
32254 2009-02-10  Ben Elliston  <bje@au.ibm.com>
32255
32256         * config/rs6000/rs6000.md (allocate_stack): Always use an update
32257         form instruction to update the stack back chain word, even if the
32258         user has disabled the generation of update instructions.
32259         (movdi_<mode>_update_stack): New.
32260         (movsi_update_stack): Likewise.
32261         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Likewise,
32262         always use an update form instruction to update the stack back
32263         chain word.
32264
32265 2009-02-09  Sebastian Pop  <sebastian.pop@amd.com>
32266
32267         PR middle-end/38953
32268         * graphite.c (if_region_set_false_region): After moving a region in
32269         the false branch of a condition, remove the empty dummy basic block.
32270         (gloog): Remove wrong fix for PR38953.
32271
32272 2009-02-09  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
32273
32274         * config/spu/spu.c (array_to_constant): Fix (latent) wrong-code
32275         generation due to implicit sign extension.
32276
32277 2009-02-09  Eric Botcazou  <ebotcazou@adacore.com>
32278
32279         PR middle-end/38981
32280         * tree-ssa-coalesce.c (add_coalesce): Cap the costs of coalesce pairs
32281         at MUST_COALESCE_COST-1 instead of MUST_COALESCE_COST.
32282
32283 2009-02-09  Richard Guenther  <rguenther@suse.de>
32284
32285         PR middle-end/35202
32286         * convert.c (convert_to_real): Disable (float)fn((double)x)
32287         to fnf(x) conversion if errno differences may occur and
32288         -fmath-errno is set.
32289
32290 2009-02-07  Anatoly Sokolov  <aesok@post.ru>
32291
32292         * config/avr/avr.c (avr_mcu_t): Add ata6289 device.
32293         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
32294         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
32295
32296 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
32297
32298         PR c/35434
32299         * c-common.c (handle_alias_attribute): Disallow attribute for
32300         anything not a FUNCTION_DECL or VAR_DECL.
32301
32302 2009-02-06  Janis Johnson  <janis187@us.ibm.com>
32303
32304         PR c/39035
32305         * real.c (do_compare): Special-case compare of zero against
32306         decimal float value.
32307
32308 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
32309
32310         PR c/36432
32311         * c-decl.c (grokdeclarator): Don't treat [] declarators in fields
32312         as indicating flexible array members unless the field itself is
32313         being declarared as the incomplete array.
32314
32315 2009-02-06  Jan Hubicka  <jh@suse.cz>
32316
32317         PR tree-optimization/38844
32318         * ipa-inline.c (try_inline): Stop inlining recursion when edge
32319         is already inlined.
32320
32321 2009-02-06  Richard Guenther  <rguenther@suse.de>
32322
32323         PR middle-end/38977
32324         * tree-cfg.c (need_fake_edge_p): Force a fake edge for
32325         fork because we may expand it as __gcov_fork.
32326
32327 2009-02-06  Nick Clifton  <nickc@redhat.com>
32328
32329         * config/m32c/m32c.h (PCC_BITFIELD_TYPE_MATTERS): Define to zero.
32330
32331 2009-02-06  Paolo Bonzini  <bonzini@gnu.org>
32332
32333         PR tree-optimization/35659
32334         * tree-ssa-sccvn.c (vn_constant_eq, vn_reference_eq, vn_nary_op_eq
32335         vn_phi_eq): Shortcut if hashcode does not match.
32336         (vn_reference_op_compute_hash): Do not call iterative_hash_expr for
32337         NULL operands.
32338         * tree-ssa-pre.c (pre_expr_hash): Look at hashcode if available,
32339         and avoid iterative_hash_expr.
32340         (FOR_EACH_VALUE_ID_IN_SET): New.
32341         (value_id_compare): Remove.
32342         (sorted_array_from_bitmap_set): Use FOR_EACH_VALUE_ID_IN_SET to
32343         sort expressions by value id.
32344
32345 2009-02-05  Kaz Kojima  <kkojima@gcc.gnu.org>
32346
32347         PR target/38991
32348         * config/sh/predicates.md (general_movsrc_operand): Don't check
32349         the subreg of system registers here.
32350
32351 2009-02-05  Jakub Jelinek  <jakub@redhat.com>
32352
32353         PR c++/39106
32354         * cgraphunit.c (cgraph_function_versioning): Clear also DECL_VIRTUAL_P
32355         on the copied decl.
32356
32357 2009-02-05  Paolo Bonzini  <bonzini@gnu.org>
32358
32359         PR rtl-optimization/39110
32360         * rtlanal.c (rtx_addr_can_trap_p_1): Shortcut unaligned
32361         addresses, not aligned ones.
32362
32363 2009-02-05  Daniel Berlin  <dberlin@dberlin.org>
32364             Richard Guenther  <rguenther@suse.de>
32365
32366         PR tree-optimization/39100
32367         * tree-ssa-structalias.c (do_ds_constraint): Actually do what the
32368         comment says and add edges.
32369
32370 2009-02-05  Joseph Myers  <joseph@codesourcery.com>
32371
32372         PR c/35435
32373         * c-common.c (handle_tls_model_attribute): Ignore attribute for
32374         non-VAR_DECLs without checking DECL_THREAD_LOCAL_P.
32375
32376 2009-02-04  Tobias Grosser  <grosser@fim.uni-passau.de>
32377
32378         * graphite.c (bb_in_sese_p, sese_build_livein_liveouts_use,
32379         sese_build_livein_liveouts_bb, sese_build_livein_liveouts,
32380         register_bb_in_sese, new_sese, free_sese): Moved.
32381         (dot_scop_1, build_scop_loop_nests, build_loop_iteration_domains,
32382         outermost_loop_in_scop, build_scop_iteration_domain,
32383         expand_scalar_variables_ssa_name, get_vdef_before_scop,
32384         limit_scops): Use bb_in_sese_p instead of bb_in_scop_p.
32385         Use loop_in_sese_p instead of loop_in_scop_p.
32386         (new_graphite_bb, gloog): Do not initialize SCOP_BBS_B.
32387         (new_scop, free_scop): Remove SCOP_LOOP2CLOOG_LOOP and SCOP_BBS_B.
32388         (scopdet_basic_block_info): Fix bug in scop detection.
32389         (new_loop_to_cloog_loop_str, hash_loop_to_cloog_loop,
32390         eq_loop_to_cloog_loop): Remove.
32391         (nb_loops_around_loop_in_scop, nb_loop
32392         ref_nb_loops): Moved here...
32393         * graphite.h (ref_nb_loops): ... from here.
32394         (struct scop): Remove bbs_b bitmap and loop2cloog_loop.
32395         (loop_domain_dim, loop_iteration_vector_dim): Remove.
32396         (SCOP_BBS_B, bb_in_scop_p, loop_in_scop_p): Removed.
32397
32398 2009-02-04  Paolo Bonzini  <bonzini@gnu.org>
32399             Hans-Peter Nilsson  <hp@axis.com>
32400
32401         PR rtl-optimization/37889
32402         * rtlanal.c (rtx_addr_can_trap_p_1): Add offset and size arguments.
32403         Move offset handling from PLUS to before the switch.  Use new
32404         arguments when considering SYMBOL_REFs too.
32405         (rtx_addr_can_trap_p): Pass dummy offset and size.
32406         (enum may_trap_p_flags): Remove.
32407         (may_trap_p_1): Pass size from MEM_SIZE.
32408
32409         PR rtl-optimization/38921
32410         * loop-invariant.c (find_invariant_insn): Use may_trap_or_fault_p.
32411         * rtl.h (may_trap_after_code_motion_p): Delete prototype.
32412         * rtlanal.c (may_trap_after_code_motion_p): Delete.
32413         (may_trap_p, may_trap_or_fault_p): Pass 0/1 as flags.
32414
32415 2009-02-04  H.J. Lu  <hongjiu.lu@intel.com>
32416
32417         AVX Programming Reference (January, 2009)
32418         * config/i386/sse.md (*vpclmulqdq): New.
32419
32420 2009-02-04  Jakub Jelinek  <jakub@redhat.com>
32421
32422         PR tree-optimization/38977
32423         PR gcov-profile/38292
32424         * calls.c (special_function_p): Disregard __builtin_ prefix.
32425
32426 2009-02-04  Hariharan Sandanagobalane  <hariharan@picochip.com>
32427
32428         * config/picochip/picochip.c (GO_IF_LEGITIMATE_ADDRESS): Disallow
32429         non-indexable addresses even before reload.
32430
32431 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
32432
32433         PR c/29129
32434         * c-decl.c (grokdeclarator): Mark [*] arrays in field declarators
32435         as having variable size.  Do not give an error for unnamed
32436         parameters with [*] declarators.  Give a warning for type names
32437         with [*] declarators and mark them as variable size.
32438         * c-parser.c (c_parser_sizeof_expression): Do not give an error
32439         for sizeof applied to [*] type names.
32440
32441 2009-02-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
32442
32443         PR C++/36607
32444         * convert.c (convert_to_integer): Treat OFFSET_TYPE like INTEGER_TYPE.
32445
32446 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
32447
32448         * gcc.c (process_command): Update copyright notice dates.
32449         * gcov.c (print_version): Likewise.
32450         * gcov-dump.c (print_version): Likewise.
32451         * mips-tfile.c (main): Likewise.
32452         * mips-tdump.c (main): Likewise.
32453
32454 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
32455
32456         PR c/35433
32457         * c-typeck.c (composite_type): Set TYPE_SIZE and TYPE_SIZE_UNIT
32458         for composite type involving a zero-length array type.
32459
32460 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
32461
32462         PR target/35318
32463         * function.c (match_asm_constraints_1): Skip over
32464         initial optional % in the constraint.
32465
32466         PR inline-asm/39059
32467         * c-parser.c (c_parser_postfix_expression): If fixed point is not
32468         supported, don't accept FIXED_CSTs.
32469         * c-decl.c (finish_declspecs): Error if fixed point is not supported
32470         and _Sat is used without _Fract/_Accum.  Set specs->type to
32471         integer_type_node for cts_fract/cts_accum if fixed point is not
32472         supported.
32473
32474 2009-02-02  Catherine Moore  <clm@codesourcery.com>
32475
32476         * sde.h (SUBTARGET_ARM_SPEC): Don't assemble -fpic code as -mabicalls.
32477
32478 2009-02-02  Richard Sandiford  <rdsandiford@googlemail.com>
32479
32480         * config/mips/mips.h (FILE_HAS_64BIT_SYMBOLS): New macro.
32481         (ABI_HAS_64BIT_SYMBOLS): Use it.
32482         (DWARF2_ADDR_SIZE): Use it instead of ABI_HAS_64BIT_SYMBOLS.
32483
32484 2009-02-02  Paul Brook  <paul@codesourcery.com>
32485
32486         * config/arm/arm.md (arm_addsi3): Add r/r/k alternative.
32487
32488 2009-02-02  Jakub Jelinek  <jakub@redhat.com>
32489
32490         PR inline-asm/39058
32491         * recog.h (asm_operand_ok): Add constraints argument.
32492         * recog.c (asm_operand_ok): Likewise.  If it is set, for digits
32493         recurse on matching constraint.
32494         (check_asm_operands): Pass constraints as 3rd argument to
32495         asm_operand_ok.  Don't look up matching constraint here.
32496         * stmt.c (expand_asm_operands): Pass NULL as 3rd argument
32497         to asm_operand_ok.
32498
32499 2009-02-02  Ben Elliston  <bje@au.ibm.com>
32500
32501         * doc/tm.texi (Storage Layout): Fix TARGET_ALIGN_ANON_BITFIELD and
32502         TARGET_NARROW_VOLATILE_BITFIELD macro names.
32503
32504 2009-01-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
32505
32506         * doc/install.texi (hppa*-hp-hpux*): Update binutils and linker
32507         information.  Remove some obsolete information.  Reorganize.
32508
32509         * config/pa/fptr.c: Revert license to GPL 2.
32510         * config/pa/milli64.S: Likewise.
32511
32512 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
32513
32514         PR target/38904
32515         * mkmap-flat.awk (END):  Use pe_dll command-line arg to pass
32516         LIBRARY name in, instead of hard-coding it.
32517         * config.gcc (i[34567]86-*-pe | i[34567]86-*-cygwin*):  Add an
32518         extra target make frag to tmake_files according to EH model.
32519         (i[34567]86-*-mingw* | x86_64-*-mingw*):  Likewise.
32520         * config/i386/t-dw2-eh, config/i386/t-sjlj-eh:  Add new target
32521         frags that define makefile variable EH_MODEL appropriately.
32522         * config/i386/cygming.h (DWARF2_UNWIND_INFO):  Add comment.
32523         * config/i386/cygwin.h (LIBGCC_EH_EXTN):  Define to nothing or
32524         to "-sjlj" according to type of EH configured.
32525         (LIBGCC_SONAME):  Concatenate it to shared library base name.
32526         * config/i386/mingw32.h (LIBGCC_EH_EXTN):  Define to "_dw2" or
32527         to "_sjlj" according to type of EH configured.
32528         (LIBGCC_SONAME):  Concatenate it to shared library base name.
32529         * config/i386/t-cygming (SHLIB_SONAME):  Use EH_MODEL.
32530         (SHLIB_LINK):  Add missing semicolon to if-else construct.
32531         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
32532         string value of "pe_dll" command-line option.
32533         * config/i386/t-cygwin (SHLIB_EH_EXTENSION):  New helper.
32534         (SHLIB_SONAME):  Use it when overriding t-cygming default.
32535         (SHLIB_IMPLIB):  Override t-cygming default.
32536         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
32537         string value of "pe_dll" command-line option.
32538
32539 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
32540
32541         PR target/38952
32542         * config/i386/i386.c (ix86_builtin_setjmp_frame_value): New.
32543         (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Override default to point at it.
32544
32545 2009-01-31  Richard Guenther  <rguenther@suse.de>
32546
32547         PR tree-optimization/38937
32548         * tree-ssa-structalias.c (do_sd_constraint): Do not shortcut
32549         computing the transitive closure.
32550
32551 2009-01-30  Richard Guenther  <rguenther@suse.de>
32552
32553         PR tree-optimization/39041
32554         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
32555         Propagate variable indices only if the types match for this stmt.
32556
32557 2009-01-30  Jakub Jelinek  <jakub@redhat.com>
32558
32559         PR target/39013
32560         * c-decl.c (pop_scope): Set DECL_EXTERNAL for functions declared
32561         inline but never defined.
32562
32563 2009-01-30  Wolfgang Gellerich  <gellerich@de.ibm.com>
32564
32565         * config/s390/s390.md (*insv<mode>_reg_extimm): Removed.
32566         (*insv_h_di_reg_extimm): New insn.
32567         (*insv_l<mode>_reg_extimm): New insn.
32568
32569 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
32570
32571         * config/picochip/picochip.c (flag_conserve_stack): set
32572         PARAM_LARGE_STACK_FRAME and PARAM_STACK_FRAME_GROWTH to zero under
32573         fconserve-stack. Reduce call-overhead used by inliner.
32574
32575 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
32576
32577         PR/38157
32578         * common.opt (flag_conserve_stack): Initialised to zero.
32579
32580 2009-01-30  Kai Tietz  <kai.tietz@onevision.com>
32581
32582         PR/39002
32583         * config/i386/i386.c (ix86_can_use_return_insn_p): Check for nsseregs.
32584         (ix86_expand_epilogue): Take nsseregs in account to use proper restore
32585         method.
32586
32587 2009-01-29  H.J. Lu  <hongjiu.lu@intel.com>
32588
32589         * ira-color.c (allocno_reload_assign): Update comments.
32590         * regmove.c (regmove_optimize): Likewise.
32591
32592         * ra.h: Removed.
32593
32594 2009-01-29  Robert Millan  <rmh@aybabtu.com>
32595
32596         * config.gcc: Recognize GNU/kOpenSolaris (*-*-kopensolaris*-gnu).
32597         * config/i386/kopensolaris-gnu.h: New file.  Undefine
32598         `MD_UNWIND_SUPPORT'.
32599         * config/kopensolaris-gnu.h: New file (based on kfreebsd-gnu.h).
32600
32601 2009-01-29  Kazu Hirata  <kazu@codesourcery.com>
32602
32603         PR tree-optimization/39007
32604         * tree-loop-distribution.c (generate_builtin): Use
32605         recompute_dominator to compute the immediate dominator of the
32606         basic block just after the loop.
32607
32608 2009-01-29  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
32609
32610         * config/i386/sol2-10.h [!HAVE_AS_IX86_DIFF_SECT_DELTA]
32611         (ASM_OUTPUT_DWARF_PCREL): Define.
32612
32613 2009-01-29  Vladimir Makarov  <vmakarov@redhat.com>
32614
32615         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Modify description.
32616         * doc/passes.texi: Remove entries about regclass, local-alloc, and
32617         global.  Modify entries about regmove and IRA.
32618
32619         * ra-conflict.c: Remove the file.
32620
32621         * reload.c (push_reload, find_dummy_reload): Remove flag_ira.
32622
32623         * tree-pass.h (pass_local_alloc, pass_global_alloc): Remove.
32624         (pass_regclass_init): Rename to pass_reginfo_init.
32625
32626         * cfgloopanal.c (estimate_reg_pressure_cost): Remove flag_ira.
32627
32628         * toplev.h (flag_ira): Remove.
32629
32630         * caller-save.c (setup_save_areas): Remove flag_ira.
32631
32632         * ira-color.c (ira_reuse_stack_slot, ira_mark_new_stack_slot): Ditto.
32633
32634         * global.c: Remove the file.
32635
32636         * opts.c (decode_options): Remove flag_ira.
32637
32638         * hard-reg-set.h (losing_caller_save_reg_set): Remove.
32639
32640         * regmove.c: Modify file description.
32641         (find_use_as_address, try_auto_increment): Define them only if
32642         AUTO_INC_DEC is defined.
32643         (replacement_quality, replace_in_call_usage, fixup_match_1,
32644         stable_and_no_regs_but_for_p): Remove.
32645         (reg_set_in_bb): Make it static.
32646         (regmove_optimize): Remove flag_ira and code which worked for
32647         !flag_ira.
32648
32649         * local-alloc.c: Remove the file.
32650
32651         * common.opt (fira): Remove.
32652
32653         * ira.c: Include except.h.
32654         (eliminable_regset): Move from global.c.
32655         (mark_elimination): Ditto.  Remove flag_ira.
32656         (reg_renumber, struct equivalence, reg_equiv, equiv_mem,
32657         equiv_mem_modified, validate_equiv_mem_from_store,
32658         validate_equiv_mem, equiv_init_varies_p, equiv_init_movable_p,
32659         contains_replace_regs, memref_referenced_p, memref_used_between_p,
32660         no_equiv, recorded_label_ref): Move from local-alloc.c.
32661         (update_equiv_regs): Ditto.  Make it static.
32662         (print_insn_chain, print_insn_chains): Move it from global.c.
32663         (pseudo_for_reload_consideration_p): Ditto.  Remove flag_ira.
32664         (build_insn_chain): Ditto.  Make it static.
32665         (ra_init_live_subregs): Move from ra-conflict.c.  Make it static.
32666         Rename to init_live_subregs.
32667         (gate_ira): Remove flag_ira.
32668
32669         * regclass.c: Rename reginfo.c.  Change file description.
32670         (FORBIDDEN_INC_DEC_CLASSES): Remove.
32671         (reg_class_superclasses, forbidden_inc_dec_class, in_inc_dec): Remove.
32672         (init_reg_sets_1): Remove code for evaluation of
32673         reg_class_superclasses and losing_caller_save_reg_set.
32674         (init_regs): Remove init_reg_autoinc.
32675         (struct costs, costs, init_cost, ok_for_index_p_nonstrict,
32676         ok_for_base_p_nonstrict): Remove.
32677         (regclass_init): Rename to reginfo_init.  Don't initialize init_cost.
32678         (pass_regclass_init): Rename to pass_reginfo_init.  Modify
32679         corresponding entries.
32680         (dump_regclass, record_operand_costs, scan_one_insn,
32681         init_reg_autoinc, regclass, record_reg_classes, copy_cost,
32682         record_address_regs, auto_inc_dec_reg_p): Remove.
32683         (gt-regclass.h): Rename to gt-reginfo.h.
32684
32685         * rtl.h (dump_global_regs, retry_global_alloc,
32686         build_insn_chain, dump_local_alloc, update_equiv_regs): Remove.
32687
32688         * Makefile.in (RA_H): Remove.
32689         (OBJS-common): Remove global.o, local-alloc.o, and ra-conflict.o.
32690         Rename regclass.o to reginfo.o.
32691         (regclass.o): Rename to reginfo.o.  Rename gt-regclass.h to
32692         gt-reginfo.h.
32693         (global.o, local-alloc.o, ra-conflict.o): Remove entries.
32694         (GTFILES): Rename regclass.c to reginfo.c.
32695
32696         * passes.c (init_optimization_passes): Remove pass_local_alloc and
32697         pass_global_alloc.  Rename pass_regclass_init to pass_reginfo_init.
32698
32699         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
32700         count_spilled_pseudo, find_reg, alter_reg, delete_output_reload):
32701         Remove flag_ira.
32702         (finish_spills): Ditto.  Remove code for !flag_ira.
32703
32704 2009-01-29  Kenneth Zadeck  <zadeck@naturalbridge.com>
32705
32706         PR middle-end/35854
32707         * doc/invoke.texi (rtl debug options): Complete rewrite.
32708         * auto-inc-dec.c (pass_inc_dec): Rename pass from "auto-inc-dec"
32709         to auto_inc_dec".
32710         * mode-switching.c (pass_mode_switching): Rename pass from
32711         "mode-sw" to "mode_sw".
32712         * except.c (pass_convert_to_eh_ranges): Rename pass from
32713         "eh-ranges" to "eh_ranges".
32714         * lower-subreg.c (pass_lower_subreg): Renamed pass from "subreg"
32715         to "subreg1".
32716
32717
32718 2009-01-29  Andrey Belevantsev  <abel@ispras.ru>
32719             Alexander Monakov  <amonakov@ispras.ru>
32720
32721         PR middle-end/38857
32722         * sel-sched.c (count_occurrences_1): Check that *cur_rtx is a hard
32723         register.
32724         (move_exprs_to_boundary): Change return type and pass through
32725         should_move from move_op.  Relax assert.  Update usage ...
32726         (schedule_expr_on_boundary): ... here.  Use should_move instead of
32727         cant_move.
32728         (move_op_orig_expr_found): Indicate that insn was disconnected from
32729         stream.
32730         (code_motion_process_successors): Do not call after_merge_succs
32731         callback if original expression was not found when traversing any of
32732         the branches.
32733         (code_motion_path_driver): Change return type.  Update prototype.
32734         (move_op): Update comment.  Add a new parameter (should_move).  Update
32735         prototype.  Set *should_move based on indication provided by
32736         move_op_orig_expr_found.
32737
32738 2009-01-28  Pat Haugen  <pthaugen@us.ibm.com>
32739
32740         * doc/invoke.texi (avoid-indexed-addresses): Document new option.
32741         * config/rs6000/rs6000-protos.h (avoiding_indexed_address_p): Declare.
32742         * config/rs6000/rs6000.opt (avoid-indexed-addresses): New option.
32743         * config/rs6000/rs6000.c (rs6000_override_options): Default
32744         avoid-indexed-addresses on for Power6, off for everything else.
32745         (avoiding_indexed_address_p): New function.
32746         (rs6000_legitimize_address): Use it.
32747         (rs6000_legitimate_address): Likewise.
32748         * config/rs6000/rs6000.md (movXX_updateX): Likewise
32749
32750 2009-01-28  Kazu Hirata  <kazu@codesourcery.com>
32751
32752         PR tree-optimization/38997
32753         * tree-loop-distribution.c (generate_memset_zero): Use
32754         POINTER_PLUS_EXPR for a pointer addition.
32755
32756 2009-01-28  Andreas Krebbel  <krebbel1@de.ibm.com>
32757
32758         * config/s390/s390.md (bswap<mode>2): New pattern added.
32759
32760 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
32761
32762         * config/s390/s390.md (*tls_load_31): Added type attribute.
32763
32764 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
32765
32766         * config/s390/s390.md: Fix a few comments.
32767
32768 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
32769
32770         * config/s390/s390.md (*tmsi_reg): Fixed z10prop attribute.
32771         (*tm<mode>_full): Fixed z10prop attribute.
32772         (*tst<mode>_extimm): Fixed z10prop attribute.
32773         (*tst<mode>_cconly_extimm): Fixed z10prop attribute.
32774         (*tstqiCCT_cconly): Fixed z10prop attribute.
32775         (*cmpsi_ccu_zerohi_rlsi): Fixed z10prop attribute.
32776         (*movsi_larl): Fixed z10prop attribute.
32777         (*movsi_zarch): Fixed z10prop attribute.
32778         (*movsi_eas): Fixed z10prop attribute.
32779         (*movhi): Fixed z10prop attribute.
32780         (*movqi): Fixed z10prop attribute.
32781         (*movstrictqi): Fixed z10prop attribute.
32782         (*mov<mode>): Fixed z10prop attribute.
32783         (*movcc): Fixed z10prop attribute.
32784         (*sethighpartdi_64): Fixed z10prop attribute.
32785         (*zero_extendhi<mode>2_z10): Fixed z10prop attribute.
32786         (*negdi2_sign_cc): Fixed z10prop attribute.
32787         (*negdi2_sign): Fixed z10prop attribute.
32788         (*absdi2_sign_cc): Fixed z10prop attribute.
32789         (*absdi2_sign): Fixed z10prop attribute.
32790         (*negabsdi2_sign_cc): Fixed z10prop attribute.
32791         (*negabsdi2_sign): Fixed z10prop attribute.
32792         (*cmp_and_trap_signed_int<mode>): Fixed z10prop attribute.
32793         (*cmp_and_trap_unsigned_int<mode>): Fixed z10prop attribute.
32794         (doloop_si64): Fixed z10prop attribute.
32795         (doloop_si31): Fixed z10prop attribute.
32796         (doloop_long): Fixed z10prop attribute.
32797         (indirect_jump): Fixed z10prop attribute.
32798         (nop): Fixed z10prop attribute.
32799         (main_base_64): Fixed z10prop attribute.
32800         (reload_base_64): Fixed z10prop attribute.
32801
32802 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
32803
32804         PR rtl-optimization/38740
32805         * reorg.c (gate_handle_delay_slots): Avoid dbr scheduling
32806         if !optimize.
32807         * config/mips/mips.c (mips_reorg): Likewise.
32808
32809 2009-01-28  Richard Guenther  <rguenther@suse.de>
32810
32811         PR tree-optimization/38926
32812         * tree-ssa-pre.c (add_to_value): Assert we add only expressions
32813         with the correct value id to a value.
32814         (do_regular_insertion): Use the value number of edoubleprime
32815         for the value number of the expr.
32816
32817         Revert
32818         2008-08-21  Richard Guenther  <rguenther@suse.de>
32819
32820         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
32821         a PHI ask VN if it is already available.
32822         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
32823         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
32824
32825 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
32826
32827         PR middle-end/38934
32828         * tree-vrp.c (extract_range_from_assert): For LE_EXPR and LT_EXPR
32829         set to varying whenever max has TREE_OVERFLOW set, similarly
32830         for GE_EXPR and GT_EXPR and TREE_OVERFLOW min.
32831
32832 2009-01-28  Richard Guenther  <rguenther@suse.de>
32833
32834         PR middle-end/38908
32835         * tree-ssa.c (warn_uninitialized_var): Do not warn for seemingly
32836         uninitialized aggregate uses in call arguments.
32837
32838 2009-01-28  Paolo Bonzini  <bonzini@gnu.org>
32839
32840         PR tree-optimization/38984
32841         * tree-ssa-structalias.c (get_constraints_for_1): Do not use
32842         the nothing_id variable if -fno-delete-null-pointer-checks.
32843
32844 2009-01-28  Uros Bizjak  <ubizjak@gmail.com>
32845
32846         PR target/38988
32847         * config/i386/i386.md (set_rip_rex64): Wrap operand 1 in label_ref.
32848         (set_got_offset_rex64): Ditto.
32849
32850 2009-01-27  H.J. Lu  <hongjiu.lu@intel.com>
32851
32852         PR target/38941
32853         * doc/extend.texi: Improve local variable with asm reg.
32854
32855 2009-01-27  Adam Nemet  <anemet@caviumnetworks.com>
32856
32857         * c.opt (Wpacked-bitfield-compat): Change init value to -1.
32858         * c-opts.c (c_common_post_options): If -W*packed-bitfield-compat
32859         was not supplied then set warn_packed_bitfield_compat to the
32860         default value of 1.
32861         * stor-layout.c (place_field): Check warn_packed_bitfield_compat
32862         against 1.
32863
32864 2009-01-27  Richard Guenther  <rguenther@suse.de>
32865
32866         PR tree-optimization/38503
32867         * cfgexpand.c (expand_gimple_basic_block): Ignore
32868         GIMPLE_CHANGE_DYNAMIC_TYPE during expansion.
32869         * tree-ssa-structalias.c (set_uids_in_ptset): Do not prune
32870         variables that cannot have TBAA applied.
32871         (compute_points_to_sets): Do not remove GIMPLE_CHANGE_DYNAMIC_TYPE
32872         statements.
32873
32874 2009-01-27  Uros Bizjak  <ubizjak@gmail.com>
32875
32876         PR middle-end/38969
32877         * calls.c (initialize_argument_information): Do not wrap complex
32878         arguments in SAVE_EXPR.
32879
32880 2009-01-26  Andreas Tobler  <a.tobler@schweiz.org>
32881
32882         * config/t-vxworks (LIBGCC2_INCLUDES): Fix typo.
32883         (INSTALL_LIBGCC): Revert typo commit.
32884
32885 2009-01-26  Richard Guenther  <rguenther@suse.de>
32886
32887         PR tree-optimization/38745
32888         * tree-ssa-alias.c (update_alias_info_1): Exclude RESULT_DECL
32889         from special handling.
32890
32891 2009-01-26  Richard Guenther  <rguenther@suse.de>
32892
32893         PR tree-optimization/38745
32894         * tree-ssa.c (execute_update_addresses_taken): Do not include
32895         variables that cannot possibly be a register in not_reg_needs.
32896         Do not clear TREE_ADDRESSABLE on vars that may not become
32897         registers.
32898         * tree-ssa.c (update_alias_info_1): Include those in the set
32899         of addressable vars.
32900
32901 2009-01-26  Richard Guenther  <rguenther@suse.de>
32902
32903         PR middle-end/38851
32904         * Makefile.in (tree-ssa-dse.o): Add langhooks.h.
32905         * tree-ssa-dse.c: Include langhooks.h
32906         (execute_simple_dse): Remove stores with zero size.
32907
32908 2009-01-24  Jakub Jelinek  <jakub@redhat.com>
32909
32910         PR c/38957
32911         * c-typeck.c (c_finish_return): Handle POINTER_PLUS_EXPR the same way
32912         as PLUS_EXPR.
32913
32914 2009-01-24  Julian Brown  <julian@codesourcery.com>
32915
32916         * config/arm/t-linux-eabi (LIB2FUNCS_STATIC_EXTRA): Add
32917         config/arm/linux-atomic.c.
32918         * config/arm/linux-atomic.c: New.
32919
32920 2009-01-24  Eric Botcazou  <ebotcazou@adacore.com>
32921
32922         * config/sparc/linux.h (DBX_REGISTER_NUMBER): Delete.
32923         * config/sparc/linux64.h (DBX_REGISTER_NUMBER): Likewise.
32924         * config/sparc/sysv4.h (DBX_REGISTER_NUMBER): Likewise.
32925
32926 2009-01-24  H.J. Lu  <hongjiu.lu@intel.com>
32927
32928         PR c/38938
32929         * c-opts.c (c_common_handle_option): Update warn_pointer_sign
32930         properly.
32931
32932 2009-01-24  Sebastian Pop  <sebastian.pop@amd.com>
32933
32934         PR tree-optimization/38953
32935         * graphite.c (graphite_verify): Add a call to verify_loop_closed_ssa.
32936         (scop_adjust_phis_for_liveouts): Initialize false_i to zero.
32937         (gloog): Split the exit of the scop when the scop exit is a loop exit.
32938         (graphite_transform_loops): Only call cleanup_tree_cfg if gloog
32939         changed the CFG.
32940
32941 2009-01-24  Paul Brook  <paul@codesourcery.com>
32942
32943         * config/arm/neon.md (neon_type): Move to arm.md.
32944         (neon_mov<VSTRUCT>): Add neon_type attribute.
32945         * config/arm/arm.md (neon_type): Move to here.
32946         (conds): Add "unconditioal" and use as default for NEON insns.
32947
32948 2009-01-24  Ben Elliston  <bje@au.ibm.com>
32949
32950         * bitmap.h (BITMAP_FREE): Eliminate `implicit conversion from
32951         void *' warning from -Wc++-compat.
32952         * Makefile.in (dominance.o-warn): Remove.
32953
32954 2009-01-23  Paolo Bonzini  <bonzini@gnu.org>
32955
32956         PR tree-optimization/38932
32957         * fold-const.c (fold_unary_ignore_overflow): New.
32958         * tree.h (fold_unary_ignore_overflow): Declare.
32959         * tree-ssa-ccp.c (ccp_fold): Use fold_unary_ignore_overflow.
32960         * tree-ssa-sccvn.c (visit_reference_op_load,
32961         simplify_unary_expression): Likewise.
32962
32963 2009-01-22  Adam Nemet  <anemet@caviumnetworks.com>
32964
32965         * c-decl.c (finish_struct): Move code to set DECL_PACKED after
32966         DECL_BIT_FIELD is alreay known.  Also inherit packed for bitfields
32967         regardless of their type.
32968         * c-common.c (handle_packed_attribute): Don't ignore packed on
32969         bitfields.
32970         * c.opt (Wpacked-bitfield-compat): New warning option.
32971         * stor-layout.c (place_field): Warn if offset of a field changed.
32972         * doc/extend.texi (packed): Mention the ABI change.
32973         * doc/invoke.texi (-Wpacked-bitfield-compat): Document.
32974         (Warning Options): Add it to the list.
32975
32976 2009-01-22  H.J. Lu  <hongjiu.lu@intel.com>
32977
32978         * c-opts.c (c_common_post_options): Fix a typo in comments.
32979
32980 2009-01-22  Steve Ellcey  <sje@cup.hp.com>
32981
32982         PR middle-end/38615
32983         * gimplify.c (gimplify_init_constructor): Fix promotion of const
32984         variables to static.
32985         * doc/invoke.texi (-fmerge-all-constants): Update description.
32986
32987 2009-01-22  Uros Bizjak  <ubizjak@gmail.com>
32988
32989         PR target/38931
32990         * config/i386/i386.md (*movsi_1): Use type "mmx" for alternative 2.
32991         (*movdi_1_rex64): Use type "mmx" for alternative 5.
32992
32993 2009-01-22  Richard Earnshaw  <rearnsha@arm.com>
32994
32995         * arm.h (DATA_ALIGNMENT): Align structures, unions and arrays to
32996         a word boundary.
32997         (LOCAL_ALIGNMENT): Similarly.
32998
32999 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
33000             Joseph Myers  <joseph@codesourcery.com>
33001
33002         * config/arm/arm.c (all_architectures): Add iWMMXt2 entry.
33003         * config/arm/arm-cores.def: New ARM_CORE entry for iWMMXt2.
33004         * config/arm/arm-tune.md: Regenerate.
33005         * doc/invoke.texi (ARM Options): Document -mcpu=iwmmxt2 and
33006         -march=iwmmxt2.
33007
33008 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
33009
33010         * config/arm/bpabi.h (SUBTARGET_EXTRA_ASM_SPEC): Bump EABI
33011         version number to five.
33012
33013 2009-01-22  Dodji Seketeli  <dodji@redhat.com>
33014
33015         PR c++/38930
33016         * c-decl.c (clone_underlying_type): Revert PR c++/26693 changes.
33017         * c-common.c (set_underlying_type): Likewise.
33018         (is_typedef_decl ): Likewise
33019         * tree.h: Likewise
33020         (set_underlying_type): Likewise.
33021         (is_typedef_type): Likewise.
33022
33023 2009-01-21  Vladimir Makarov  <vmakarov@redhat.com>
33024
33025         PR middle-end/38587
33026         * ira-color.c (coalesce_spill_slots): Don't coalesce allocnos
33027         crossing setjmps.
33028
33029 2009-01-21  Dave Korn  <dave.korn.cygwin@gmail.com>
33030
33031         PR bootstrap/37660
33032         * config/i386/cygwin.h (SHARED_LIBGCC_SPEC):  New helper macro.
33033         (LIBGCC_SPEC):  Don't define.
33034         (REAL_LIBGCC_SPEC):  Define instead, using SHARED_LIBGCC_SPEC.
33035
33036 2009-01-21  Uros Bizjak  <ubizjak@gmail.com>
33037
33038         PR rtl-optimization/38879
33039         * alias.c (base_alias_check): Unaligned access via AND address can
33040         alias all surrounding object types except those with sizes equal
33041         or wider than the size of unaligned access.
33042
33043 2009-01-21  Dodji Seketeli  <dodji@redhat.com>
33044
33045         PR c++/26693
33046         * c-decl.c (clone_underlying_type): Move this ...
33047         * c-common.c (set_underlying_type): ... here.
33048         Also, make sure the function properly sets TYPE_STUB_DECL() on
33049         the newly created typedef variant type.
33050         (is_typedef_decl ): New entry point.
33051         * tree.h: Added a new member member_types_needing_access_check to
33052         struct tree_decl_non_common.
33053         (set_underlying_type): New entry point.
33054         (is_typedef_type): Likewise.
33055
33056 2009-01-21  Bingfeng Mei  <bmei@broadcom.com>
33057
33058         * alias.c (walk_mems_1, walk_mems_2, insn_alias_sets_conflict_p):
33059         Check whether two instructions have memory references that
33060         belong to conflicting alias sets.  walk_mems_1 and walk_mems_2
33061         are helper functions for traversing.
33062         * alias.h (insn_alias_sets_confilict_p): New prototypes.
33063         * ddg.c (add_inter_loop_mem_dep): Call insn_alias_sets_conflict_p
33064         not to draw dependency edge for instructions with non-conflicting
33065         alias sets.
33066
33067 2009-01-20  Joseph Myers  <joseph@codesourcery.com>
33068
33069         PR other/38758
33070         * longlong.h: Update copyright years.  Use soft-fp license notice.
33071         Sync __clz_tab declaration with glibc.
33072
33073 2009-01-20  Steve Ellcey  <sje@cup.hp.com>
33074
33075         PR target/30687
33076         * doc/extend.texi (syscall_linkage): New.
33077         (version_id): Modify.
33078
33079 2009-01-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
33080             Richard Guenther  <rguenther@suse.de>
33081
33082         PR tree-optimization/38747
33083         PR tree-optimization/38748
33084         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Disable the VCE
33085         conversion if the base address is an indirect reference and the
33086         aliasing sets could cause issues.
33087
33088 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
33089
33090         * common.opt (fgraphite, fgraphite-identity): Add comment for
33091         explaining why these options are not documented.
33092
33093 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
33094
33095         * graphite.c (stmt_simple_for_scop_p): Also handle cases when
33096         gimple_call_lhs is NULL.
33097
33098 2009-01-20  Paolo Bonzini  <bonzini@gnu.org>
33099
33100         PR target/38868
33101         * emit-rtl.c (adjust_address_1): Make sure memref is never
33102         overwritten.
33103
33104 2009-01-20  Ben Elliston  <bje@au.ibm.com>
33105
33106         * libgcov.c (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
33107         const qualifier from arg parameter. Remove unnecessary cast to char *.
33108         * gcov-io.h (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
33109         const qualifier from arg 2.
33110
33111 2009-01-19  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
33112
33113         * config/darwin.h: Add static-libgfortran to LINK_SPEC.
33114
33115 2009-01-19  Vladimir Makarov  <vmakarov@redhat.com>
33116
33117         PR c/38869
33118         * rtl.h (reinit_regs): New prototype.
33119         * regclass.c: Include ira.h.
33120         (reinit_regs): New.
33121         * Makefile.in (regclass.o): Add ira.h.
33122         * config/i386/i386.c (ix86_maybe_switch_abi): Use reinit_regs.
33123
33124 2009-01-18  H.J. Lu  <hongjiu.lu@intel.com>
33125
33126         PR target/38736
33127         * c-common.c (handle_aligned_attribute): Use
33128         ATTRIBUTE_ALIGNED_VALUE instead of BIGGEST_ALIGNMENT for
33129         default alignment value.
33130
33131         * c-cppbuiltin.c (c_cpp_builtins): Define __BIGGEST_ALIGNMENT__.
33132
33133         * defaults.h (ATTRIBUTE_ALIGNED_VALUE): New.
33134         * config/i386/i386.h (ATTRIBUTE_ALIGNED_VALUE): Likewise.
33135
33136         * doc/extend.texi: Update __attribute__ ((aligned)).  Document
33137         __BIGGEST_ALIGNMENT__.
33138
33139         * doc/tm.texi: Document ATTRIBUTE_ALIGNED_VALUE.
33140
33141 2009-01-18  Richard Guenther  <rguenther@suse.de>
33142
33143         PR tree-optimization/38819
33144         * tree-flow.h (operation_could_trap_helper_p): Declare.
33145         * tree-eh.c (operation_could_trap_helper_p): Export.
33146         * tree-ssa-sccvn.h (vn_nary_may_trap): Declare.
33147         * tree-ssa-sccvn.c (vn_nary_may_trap): New function.
33148         * tree-ssa-pre.c (insert_into_preds_of_block): Check if we
33149         are about to insert a possibly trapping instruction and fail
33150         in this case.
33151
33152 2009-01-18  Andreas Schwab  <schwab@suse.de>
33153
33154         * doc/install.texi (Configuration): Remove obsolete paragraph
33155         about use of --with-gnu-ld with --with-gnu-as.
33156
33157 2009-01-18  Kazu Hirata  <kazu@codesourcery.com>
33158
33159         * doc/extend.texi, doc/gimple.texi, doc/invoke.texi,
33160         doc/md.texi, doc/sourcebuild.texi, doc/tm.texi: Fix typos.
33161         Follow spelling conventions.
33162
33163 2009-01-18  Ben Elliston  <bje@au.ibm.com>
33164
33165         * bitmap.c (bitmap_obstack_alloc_stat): Adjust cast to eliminate
33166         C++ warning about implicit conversion from void * to struct
33167         bitmap_head_def *.
33168         (bitmap_obstack_free): Likewise for bitmap_element *.
33169         * Makefile.in (bitmap.o-warn): Remove.
33170
33171 2009-01-17  Dave Korn  <dave.korn.cygwin@gmail.com>
33172
33173         * Makefile.in (BACKENDLIBS):  Reorder to match dependencies.
33174
33175 2009-01-17  Sebastian Pop  <sebastian.pop@amd.com>
33176             Tobias Grosser  <tobi.grosser@amd.com>
33177
33178         * graphite.c (graphite_trans_scop_block): Do not block single
33179         nested loops.
33180
33181 2009-01-16  Alexandre Oliva  <aoliva@redhat.com>
33182
33183         * ebitmap.h (ebitmap_iter_init): Initialize all fields.
33184         * ipa-struct-reorg.c (gen_struct_type): Replace known-true
33185         test with assertion.
33186
33187 2009-01-16  Richard Guenther  <rguenther@suse.de>
33188
33189         PR tree-optimization/38835
33190         PR middle-end/36227
33191         * fold-const.c (fold_binary): Remove PTR + INT -> (INT)(PTR p+ INT)
33192         and INT + PTR -> (INT)(PTR p+ INT) folding.
33193         * tree-ssa-address.c (create_mem_ref): Properly use POINTER_PLUS_EXPR.
33194
33195 2009-01-16  Adam Nemet  <anemet@caviumnetworks.com>
33196
33197         PR target/38554
33198         * expmed.c (expand_shift): With SHIFT_COUNT_TRUNCATED, don't lift
33199         the subreg from a lowpart subreg if it is also casting the value.
33200
33201 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
33202             Tobias Grosser  <tobi.grosser@amd.com>
33203
33204         * graphite.c (compare_prefix_loops): New.
33205         (build_scop_canonical_schedules): Rewritten.
33206         (graphite_transform_loops): Move build_scop_canonical_schedules
33207         after build_scop_iteration_domain.
33208
33209 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
33210             Tobias Grosser  <tobi.grosser@amd.com>
33211
33212         * graphite.c (add_conditions_to_domain): Add the loops to
33213         the dimension of the iteration domain.  Do copy the domain
33214         only when it exists.
33215         (build_scop_conditions_1): Do not call add_conditions_to_domain.
33216         (add_conditions_to_constraints): New.
33217         (can_generate_code_stmt, can_generate_code): Removed.
33218         (gloog): Do not call can_generate_code.
33219         (graphite_transform_loops): Call add_conditions_to_constraints
33220         after building the iteration domain.
33221
33222 2009-01-16  Jakub Jelinek  <jakub@redhat.com>
33223
33224         PR tree-optimization/38789
33225         * tree-ssa-threadedge.c
33226         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
33227         __builtin_constant_p.
33228
33229 2009-01-16  Kenneth Zadeck  <zadeck@naturalbridge.com>
33230
33231         * dce.c (delete_unmarked_insns): Reversed the order that insns are
33232         examined before deleting them.
33233
33234 2009-01-16  Richard Earnshaw  <rearnsha@arm.com>
33235
33236         * function.c (aggregate_value_p): Correctly extract the function
33237         type from CALL_EXPR_FN lookup.
33238
33239 2009-01-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
33240
33241         * config/picochip/picochip.c (picochip_override_options): Revert
33242         CFI asm flag disable commited previously.
33243
33244 2009-01-15  Sebastian Pop  <sebastian.pop@amd.com>
33245             Tobias Grosser  <tobi.grosser@amd.com>
33246             Jan Sjodin  <jan.sjodin@amd.com>
33247
33248         * graphite.c (scan_tree_for_params): On substractions negate
33249         all the coefficients of the term.
33250         (clast_to_gcc_expression_red): New.  Handle reduction expressions
33251         of more than two operands.
33252         (clast_to_gcc_expression): Call clast_to_gcc_expression_red.
33253         (get_vdef_before_scop): Handle also the case of default definitions.
33254
33255 2009-01-15  Richard Sandiford  <rdsandiford@googlemail.com>
33256
33257         * caller-save.c (add_used_regs_1, add_used_regs): New functions.
33258         (insert_one_insn): Use them instead of REG_DEAD and REG_INC notes.
33259         Also use them when walking CALL_INSN_FUNCTION_USAGE.
33260
33261 2009-01-15  H.J. Lu  <hongjiu.lu@intel.com>
33262             Joey Ye  <joey.ye@intel.com>
33263
33264         PR middle-end/37843
33265         * cfgexpand.c (expand_stack_alignment): Don't update stack
33266         boundary nor check incoming stack boundary here.
33267         (gimple_expand_cfg): Update stack boundary and check incoming
33268         stack boundary here.
33269
33270 2009-01-15  Kenneth Zadeck  <zadeck@naturalbridge.com>
33271
33272         * dce.c (find_call_stack_args, delete_unmarked_insns): Fixed comments.
33273
33274 2009-01-14  Jakub Jelinek  <jakub@redhat.com>
33275
33276         PR rtl-optimization/38245
33277         * calls.c (expand_call): Add stack arguments to
33278         CALL_INSN_FUNCTION_USAGE even for pure calls (when
33279         ACCUMULATE_OUTGOING_ARGS) and even for args partially passed
33280         in regs and partially in memory or BLKmode arguments.
33281         (emit_library_call_value_1): Add stack arguments to
33282         CALL_INSN_FUNCTION_USAGE even for pure calls (when
33283         ACCUMULATE_OUTGOING_ARGS).
33284         * dce.c: Include tm_p.h.
33285         (find_call_stack_args): New function.
33286         (deletable_insn_p): Call it for CALL_P insns.  Add ARG_STORES
33287         argument.
33288         (mark_insn): Call find_call_stack_args for CALL_Ps.
33289         (prescan_insns_for_dce): Walk insns backwards in bb rather than
33290         forwards.  Allocate and free arg_stores bitmap if needed, pass it
33291         down to deletable_insn_p, don't mark stores set in arg_stores
33292         bitmap, clear the bitmap at the beginning of each bb.
33293         * Makefile.in (dce.o): Depend on $(TM_P_H).
33294
33295 2009-01-14  Michael Meissner  <gnu@the-meissners.org>
33296
33297         PR target/22599
33298         * config/i386/i386.c (print_operand): Add tests for 'D', 'C', 'F', 'f'
33299         to make sure the insn is a conditional test (bug 22599).  Reformat a
33300         few long lines.
33301
33302 2009-01-14  Sebastian Pop  <sebastian.pop@amd.com>
33303
33304         PR middle-end/38431
33305         * graphite.c (get_vdef_before_scop, scop_adjust_vphi): New.
33306         (scop_adjust_phis_for_liveouts): Call scop_adjust_vphi.
33307         (gloog): Do not call cleanup_tree_cfg.
33308         (graphite_transform_loops): Call cleanup_tree_cfg after all
33309         scops have been code generated.
33310
33311 2009-01-14  Basile Starynkevitch  <basile@starynkevitch.net>
33312         * doc/gty.texi (Invoking the garbage collector): Added new node
33313         and section documenting ggc_collect.
33314
33315 2009-01-14  Richard Guenther  <rguenther@suse.de>
33316
33317         PR tree-optimization/38826
33318         PR middle-end/38477
33319         * tree-ssa-structalias.c (emit_alias_warning): Emit the pointer
33320         initialization notes only if we actually emitted a warning.
33321         (intra_create_variable_infos): Add constraints for a result decl
33322         that is passed by hidden reference.
33323         (build_pred_graph): Mark all related variables non-direct on
33324         address-taking.
33325
33326 2009-01-14  Nick Clifton  <nickc@redhat.com>
33327
33328         * ira-conflicts.c: Include addresses.h for the definition of
33329         base_reg_class.
33330         (ira_build_conflicts): Use base_reg_class instead of BASE_REG_CLASS.
33331         * Makefile.in: Add a dependency of ira-conflicts.o on addresses.h.
33332
33333 2009-01-13  Vladimir Makarov  <vmakarov@redhat.com>
33334
33335         PR target/38811
33336         * Makefile.in (ira-lives.o): Add except.h.
33337
33338         * ira-lives.c: Include except.h.
33339         (process_bb_node_lives): Process can_throw_internal.
33340
33341 2009-01-13  Jakub Jelinek  <jakub@redhat.com>
33342
33343         PR rtl-optimization/38774
33344         * combine.c (simplify_set): When undoing cc_use change, don't do
33345         PUT_CODE on the newly created comparison, but instead put back the
33346         old comparison.
33347
33348 2009-01-13  Joseph Myers  <joseph@codesourcery.com>
33349
33350         * doc/invoke.texi (ARM Options): Update lists of -mcpu and -march
33351         values.  Remove duplicate arm8 entry.
33352
33353 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
33354
33355         PR tree-optimization/38786
33356         * graphite.c (expand_scalar_variables_ssa_name): New, outlined from
33357         the SSA_NAME case of expand_scalar_variables_expr.
33358         Set the type of an expression to the type of its assign statement.
33359         (expand_scalar_variables_expr): Also gather the scalar computation
33360         used to index the memory access.  Do not pass loop_p.
33361         Fix comment.  Stop recursion on tcc_constant or tcc_declaration.
33362         (expand_scalar_variables_stmt): Pass to expand_scalar_variables_expr
33363         the gimple_stmt_iterator where it inserts new code.
33364         Do not pass loop_p.
33365         (copy_bb_and_scalar_dependences): Do not pass loop_p.
33366         (translate_clast): Update call to copy_bb_and_scalar_dependences.
33367
33368 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
33369
33370         * graphite.h (debug_value): Removed.
33371         * graphite.c (debug_value): Removed.
33372
33373 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
33374
33375         * config/arm/arm.c (output_move_double): Don't synthesize thumb-2
33376         ldrd/strd with two 32-bit instructions.
33377
33378 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
33379
33380         * config/arm/arm.c (struct processors): Pass for speed down into
33381         cost helper functions.
33382         (const_ok_for_op): Handle COMPARE and inequality nodes.
33383         (arm_rtx_costs_1): Rewrite.
33384         (arm_size_rtx_costs): Update prototype.
33385         (arm_rtx_costs): Pass speed down to helper functions.
33386         (arm_slowmul_rtx_costs): Rework cost calculations.
33387         (arm_fastmul_rtx_costs, arm_xscale_rtx_costs): Likewise.
33388         (arm_9e_rtx_costs): Likewise.
33389
33390 2009-01-13  Uros Bizjak  <ubizjak@gmail.com>
33391
33392         * config/alpha/alpha.c (alpha_legitimate_address_p): Explicit
33393         relocations of local symbols wider than UNITS_PER_WORD are not valid.
33394         (alpha_legitimize_address): Do not split local symbols wider than
33395         UNITS_PER_WORD into HIGH/LO_SUM parts.
33396
33397 2009-01-13  Danny Smith  <dannysmith@users.sourceforge.net>
33398
33399         PR bootstrap/38580
33400         * gcc.c (process_command): Replace call to execvp with calls
33401         to pex_one and exit.
33402
33403 2009-01-03  Anatoly Sokolov  <aesok@post.ru>
33404
33405         PR target/29141
33406         * config/avr/t-avr (LIB1ASMFUNCS): Add _tablejump_elpm.
33407         * config/avr/libgcc.S (__do_global_ctors, __do_global_dtors): Add
33408         variant for devices with 3-byte PC.
33409         (__tablejump_elpm__): New.
33410
33411 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
33412
33413         PR c/32041
33414         * c-parser.c (c_parser_postfix_expression): Allow `->' in
33415         offsetof member-designator, handle it as `[0].'.
33416
33417 2009-01-12  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
33418
33419         * pa.c (pa_asm_output_mi_thunk): Use pc-relative branch to thunk
33420         function when not using named sections on targets with named sections
33421         if branch distance is less than 262132.
33422
33423 2009-01-12  Richard Earnshaw  <rearnsha@arm.com>
33424
33425         * combine.c (combine_instructions):  Recompute
33426         optimize_this_for_speed_p  for each BB in the main combine loop.
33427
33428 2009-01-12  Tomas Bily  <tbily@suse.cz>
33429
33430         PR middlend/38385
33431         * tree-loop-distribution.c (prop_phis): New function.
33432         (generate_builtin): Call prop_phis.
33433
33434 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
33435
33436         PR tree-optimization/38807
33437         * tree-ssa-reassoc.c (remove_visited_stmt_chain): Don't look at
33438         gimple_visited_p unless stmt is GIMPLE_ASSIGN.
33439
33440 2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
33441
33442         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
33443         subreg of op0 to the original op0.
33444
33445 2009-01-11  Laurent GUERBY  <laurent@guerby.net>
33446
33447         * doc/sourcebuild.texi (Source Tree): Move up intl and fixinc.
33448
33449 2009-01-11  Markus Schoepflin  <markus.schoepflin@comsoft.de>
33450
33451         PR debug/7055
33452         * mips-tfile.c (parse_def): Fix parsing of def strings
33453         starting with digits.
33454
33455 2009-01-10  Jakub Jelinek  <jakub@redhat.com>
33456
33457         PR target/38695
33458         * config/arm/arm.c (arm_is_long_call_p): Don't call
33459         arm_function_in_section_p if decl isn't a FUNCTION_DECL.
33460
33461 2009-01-09  Steven Bosscher  <steven@gcc.gnu.org>
33462
33463         * regrename.c (regrename_optimize): Fix dumping.
33464         (find_oldest_value_reg): Preserve REG_POINTER.
33465         (copy_hardreg_forward_1): Likewise.
33466
33467 2009-01-09  Diego Novillo  <dnovillo@google.com>
33468
33469         * gimple.h (struct gimple_statement_base) <uid>: Document
33470         the restrictions on its use.
33471         (gimple_uid): Tidy.
33472         (gimple_set_uid): Tidy.
33473
33474 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
33475
33476         * config/i386/i386.c (ix86_expand_movmem, ix86_expand_setmem): Add
33477         zero guard even if align_bytes != 0 and count is smaller than
33478         size_needed.
33479
33480 2009-01-09  Vladimir Makarov  <vmakarov@redhat.com>
33481
33482         PR rtl-optimization/38495
33483         * ira-emit.c (print_move_list, ira_debug_move_list): New functions.
33484         (add_range_and_copies_from_move_list): Print all added ranges.
33485         Add ranges to memory optimized destination.
33486
33487 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
33488
33489         PR target/38686
33490         PR target/38708
33491         * config/i386/i386.c (override_options): Reject
33492         -mstringop-strategy=rep_8byte with -m32.
33493         (ix86_expand_movmem): For size_needed == 1 set epilogue_size_needed
33494         to 1.  Do count comparison against epilogue_size_needed at compile
33495         time even when count_exp was constant forced into register.  For
33496         size_needed don't jump to epilogue, instead just avoid aligning
33497         and invoke the body algorithm.  If need_zero_guard, add zero guard
33498         even if count is non-zero, but smaller than size_needed + number of
33499         bytes that could be stored for alignment.
33500         (ix86_expand_setmem): For size_needed == 1 set epilogue_size_needed
33501         to 1.  If need_zero_guard, add zero guard even if count is non-zero,
33502         but smaller than size_needed + number of bytes that could be stored
33503         for alignment.  Compare size_needed with epilogue_size_needed instead
33504         of desired_align - align, don't adjust size_needed, pass
33505         epilogue_size_needed to the epilogue expanders.
33506
33507         PR c/35742
33508         * c-pretty-print.c (pp_c_expression): Handle GOTO_EXPR like BIND_EXPR.
33509
33510 2009-01-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
33511
33512         * pa.c (last_address): Change to unsigned.
33513         (update_total_code_bytes): Change argument to unsigned.  Don't
33514         check if insn addresses are set.
33515         (pa_output_function_epilogue): Set last_address to UINT_MAX if insn
33516         addresses are not set.
33517         (pa_asm_output_mi_thunk): Handle wrap when updating last_address.
33518
33519 2009-01-09  Nick Clifton  <nickc@redhat.com>
33520
33521         * config/sh/symbian.c: Replace uses of DECL_INLINE with
33522         DECL_DECLARED_INLINE_P.
33523
33524 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
33525
33526         PR middle-end/38347
33527         * dojump.c (do_jump_by_parts_zero_rtx): Use mode instead of
33528         GET_MODE (op0) in operand_subword_force calls.
33529
33530         PR middle-end/38771
33531         * fold-const.c (fold_unary): For COMPOUND_EXPR and COND_EXPR,
33532         fold_convert arg0 operands to TREE_TYPE (op0) first.
33533
33534 2009-01-08  Vladimir Makarov  <vmakarov@redhat.com>
33535
33536         * params.def (ira-max-conflict-table-size): Decrease default value
33537         to 1000.
33538
33539 2009-01-08  Jakub Jelinek  <jakub@redhat.com>
33540
33541         PR tree-optimization/37031
33542         * lambda-code.c (lambda_collect_parameters): Call pointer_set_destroy
33543         on parameter_set.
33544         (build_access_matrix): Reserve correct size for AM_MATRIX vector,
33545         allocate it using gc instead of heap, use VEC_quick_push instead of
33546         VEC_safe_push.
33547         * graphite.c (build_access_matrix): Allocate AM_MATRIX vector using gc
33548         instead of heap, use VEC_quick_push instead of VEC_safe_push.
33549         * tree-data-ref.h (struct access_matrix): Change matrix to gc
33550         allocated vector from heap allocated.
33551         * lambda.h: Add DEF_VEC_ALLOC_P for gc allocated lambda_vector.
33552         * tree-loop-linear.c (linear_transform_loops): Allocate nest
33553         vector only after perfect_loop_nest_depth call.
33554
33555 2009-01-08  Sebastian Pop  <sebastian.pop@amd.com>
33556             Jan Sjodin  <jan.sjodin@amd.com>
33557
33558         PR tree-optimization/38559
33559         * graphite.c (debug_value, copy_constraint,
33560         swap_constraint_variables, scale_constraint_variable, ): New.
33561         (get_lower_bound, get_upper_bound): Removed.
33562         (graphite_trans_bb_strip_mine): Clean up this code that works
33563         only for constant number of iterations.  Fully copy upper and
33564         lower bound constraints, not only the constant part of them.
33565         * graphite.h (debug_value): Declared.
33566
33567 2009-01-08  Ira Rosen  <irar@il.ibm.com>
33568
33569         PR tree-optimization/37194
33570         * tree-vect-transform.c (vect_estimate_min_profitable_iters):
33571         Don't add the cost of cost model guard in prologue to scalar
33572         outside cost in case of known number of iterations.
33573
33574 2009-01-07  Nathan Froyd  <froydnj@codesourcery.com>
33575             Alan Modra  <amodra@bigpond.net.au>
33576
33577         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check for
33578         non-word-aligned REG+CONST addressing.
33579
33580 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
33581
33582         PR target/38706
33583         * config/alpha/alpha.c (alpha_end_function): For TARGET_ABI_OSF, call
33584         free_after_compilation when outputting a thunk.
33585         (alpha_output_mi_thunk_osf): Assert that we are processing a thunk.
33586         Do not call free_after_compilation here.
33587
33588 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
33589
33590         * config/i386/i386.c (ix86_target_string): Use ARRAY_SIZE.
33591         (ix86_valid_target_attribute_inner_p): Ditto.
33592
33593 2009-01-07  Jan Sjodin  <jan.sjodin@amd.com>
33594
33595         PR tree-optimization/38492
33596         PR tree-optimization/38498
33597         * tree-check.c (operator_is_linear, scev_is_linear_expression): New.
33598         * tree-chrec.h (scev_is_linear_expression): Declared.
33599         * graphite.c (graphite_cannot_represent_loop_niter): New.
33600         (scopdet_basic_block_info): Call graphite_cannot_represent_loop_niter.
33601         (graphite_loop_normal_form): Use gcc_assert.
33602         (scan_tree_for_params): Use CASE_CONVERT.
33603         (phi_node_is_iv, bb_contains_non_iv_scalar_phi_nodes): New.
33604         (build_scop_conditions_1): Call bb_contains_non_iv_scalar_phi_nodes.
33605         Use gcc_assert.  Discard scops that contain unhandled cases.
33606         (build_scop_conditions): Return a boolean status for unhandled cases.
33607         (strip_mine_profitable_p): Print the loop number, not its depth.
33608         (is_interchange_valid): Pass the depth of the loop nest, don't
33609         recompute it wrongly.
33610         (graphite_trans_bb_block): Same.
33611         (graphite_trans_bb_block): Print tentative of loop blocking.
33612         (graphite_trans_scop_block): Do not print that the loop has been
33613         blocked.
33614         (graphite_transform_loops): Do not handle scops that contain condition
33615         scalar phi nodes.
33616
33617 2009-01-07  H.J. Lu  <hongjiu.lu@intel.com>
33618
33619         AVX Programming Reference (December, 2008)
33620         * config/i386/avxintrin.h (_mm256_stream_si256): New.
33621         (_mm256_stream_pd): Likewise.
33622         (_mm256_stream_ps): Likewise.
33623
33624         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVNTDQ256,
33625         IX86_BUILTIN_MOVNTPD256 and IX86_BUILTIN_MOVNTPS256.
33626         (ix86_special_builtin_type): Add VOID_FTYPE_PV4DI_V4DI.
33627         (bdesc_special_args): Add __builtin_ia32_movntdq256,
33628         __builtin_ia32_movntpd256 and __builtin_ia32_movntps256.
33629         (ix86_init_mmx_sse_builtins): Handle VOID_FTYPE_PV4DI_V4DI.
33630         (ix86_expand_special_args_builtin): Likewise.
33631
33632         * config/i386/sse.md (AVXMODEDI): New.
33633         (avx_movnt<mode>): Likewise.
33634         (avx_movnt<mode>): Likewise.
33635         (<sse>_movnt<mode>): Remove AVX support.
33636         (sse2_movntv2di): Likewise.
33637
33638 2009-01-07  Richard Guenther  <rguenther@suse.de>
33639
33640         PR middle-end/38751
33641         * fold-const.c (extract_muldiv): Remove obsolete comment.
33642         (fold_plusminus_mult_expr): Undo MINUS_EXPR
33643         to PLUS_EXPR canonicalization for the canonicalization.
33644
33645 2009-01-07  Gerald Pfeifer  <gerald@pfeifer.com>
33646
33647         * doc/install.texi (alpha*-dec-osf*): Remove note on 32-bit
33648         hosted cross-compilers generating less efficient code.
33649
33650 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
33651
33652         * function.h (rtl_data): Add a dbr_scheduled_p field.
33653         * reorg.c (dbr_schedule): Set it.
33654         (gate_handle_delay_slots): Check it.
33655         * config/mips/mips.c (mips_base_delayed_branch): Delete.
33656         (mips_reorg): Check flag_delayed_branch instead of
33657         mips_base_delayed_branch.
33658         (mips_override_options): Don't set mips_base_delayed_branch
33659         or flag_delayed_branch.
33660
33661 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
33662
33663         PR rtl-optimization/38426.
33664         * ira.c (ira): Set current_function_is_leaf earlier.
33665
33666 2009-01-06  Jakub Jelinek  <jakub@redhat.com>
33667
33668         PR rtl-optimization/38722
33669         * combine.c (try_combine): Don't modify PATTERN (i3) and notes
33670         too early, only set a flag and modify after last possible
33671         undo_all point.
33672
33673 2009-01-06  Janis Johnson  <janis187@us.ibm.com>
33674
33675         PR c/34252
33676         * ginclude/float.h: Rename DECnn_DEN to DECnn_SUBNORMAL_MIN.
33677         * real.c (decimal_single_format): Correct values of emin and emax.
33678         (decimal_double_format): Ditto.
33679         (decimal_quad_format): Ditto.
33680         * c-cppbuiltin.c (builtin_define_decimal_float_constants): Adjust
33681         computation of DECnn_MIN and DECnn_MAX for corrected values of
33682         emin and emax.  Define __DECnn_SUBNORMAL_MIN__ instead of
33683         __DECnn_MIN__, and adjust its computation for the corrected value
33684         of emin.
33685
33686 2009-01-06  Jan Hubicka  <jh@suse.cz>
33687
33688         PR target/38744
33689         * config/i386/i386.c (ix86_expand_call): Use ARRAY_SIZE.
33690
33691 2009-01-06  Gerald Pfeifer  <gerald@pfeifer.com>
33692
33693         * doc/contrib.texi (Contributors): Slightly adjust the end note.
33694         Add Robert Clark to the list of testers.
33695
33696 2009-01-06  Jan Hubicka  <jh@suse.cz>
33697             Kai Tietz  <kai.tietz@onevision.com>
33698
33699         * config/i386/i386.md (*msabi_syvabi): Add SSE regs clobbers.
33700         * config/i386/i386.c (ix86_expand_call): Add clobbers.
33701
33702 2009-01-06  Jan Hubicka  <jh@suse.cz>
33703             Kai Tietz  <kai.tietz@onevision.com>
33704
33705         * config/i386/i386.h (CONDITIONAL_CALL_USAGE): SSE regs are not used
33706         for w64 ABI.
33707         * config/i386/i386.c (struct ix86_frame): Add padding0 and nsseregs.
33708         (ix86_nsaved_regs): Count only general purpose regs.
33709         (ix86_nsaved_sseregs): New.
33710         (ix86_compute_frame_layout): Update nsseregs; set preferred alignment
33711         to 16 for w64; compute padding and size of sse reg save area.
33712         (ix86_emit_save_regs, ix86_emit_save_regs_using_mov): Save only
33713         general purpose regs.
33714         (ix86_emit_save_sse_regs_using_mov): New.
33715         (ix86_expand_prologue): Save SSE regs if needed.
33716         (ix86_emit_restore_regs_using_mov): Use only general purpose regs.
33717         (ix86_emit_restore_sse_regs_using_mov): New.
33718         (ix86_expand_epilogue): Save SSE regs if needed.
33719
33720 2009-01-06  Jan Hubicka  <jh@suse.cz>
33721             Kai Tietz  <kai.tietz@onevision.com>
33722
33723         * config/i386/i386.h (ACCUMULATE_OUTGOING_ARGS): Enable for MSABI
33724         * config/i386/i386.c (init_cumulative_args): Disallow calls of MSABI
33725         functions when accumulate outgoing args is off.
33726
33727 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
33728
33729         PR bootstrap/38742
33730         * ira-color.c (ira_reuse_stack_slot): Check ENABLE_IRA_CHECKING
33731         before using pseudos_have_intersected_live_ranges_p.
33732
33733         * ira-int.h (ira_assert): Always define.
33734
33735 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
33736
33737         AVX Programming Reference (December, 2008)
33738         * config/i386/avxintrin.h (_mm_permute2_pd): Removed.
33739         (_mm256_permute2_pd): Likewise.
33740         (_mm_permute2_ps): Likewise.
33741         (_mm256_permute2_ps): Likewise.
33742         * config/i386/i386.md (UNSPEC_VPERMIL2): Likewise.
33743         * config/i386/sse.md (avx_vpermil2<mode>3): Likewise.
33744
33745         * config/i386/i386.c (ix86_builtins): Remove
33746         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
33747         IX86_BUILTIN_VPERMIL2PD256 and IX86_BUILTIN_VPERMIL2PS256.
33748         (ix86_builtin_type): Remove V8SF_FTYPE_V8SF_V8SF_V8SI_INT,
33749         V4DF_FTYPE_V4DF_V4DF_V4DI_INT, V4SF_FTYPE_V4SF_V4SF_V4SI_INT
33750         and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
33751         (bdesc_args): Remove __builtin_ia32_vpermil2pd,
33752         __builtin_ia32_vpermil2ps, __builtin_ia32_vpermil2pd256 and
33753         __builtin_ia32_vpermil2ps256.
33754         (ix86_init_mmx_sse_builtins): Updated.
33755         (ix86_expand_args_builtin): Likewise.
33756
33757 2009-01-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
33758
33759         * pa.c (output_call): Relocate non-jump insns in the delay slot of
33760         long absolute calls when generating PA 2.0 code.
33761
33762 2009-01-05  Vladimir Makarov  <vmakarov@redhat.com>
33763
33764         PR rtl-optimization/38583
33765         * params.h (IRA_MAX_CONFLICT_TABLE_SIZE): New macro.
33766
33767         * params.def (ira-max-conflict-table-size): New.
33768
33769         * doc/invoke.texi (ira-max-conflict-table-size): Decribe.
33770
33771         * ira.h (ira_conflicts_p): New external definition.
33772
33773         * ira-conflicts.c (build_conflict_bit_table): Do not build too big
33774         table.  Report this.  Return result of building.
33775         (ira_build_conflicts): Use ira_conflicts_p.  Check result of
33776         building conflict table.
33777
33778         * ira-color.c (fast_allocation): Use num instead of ira_allocnos_num.
33779         (ira_color): Use ira_conflicts_p.
33780
33781         * global.c: Include ira.h.
33782         (pseudo_for_reload_consideration_p, build_insn_chain): Use
33783         ira_conflicts_p.
33784
33785         * Makefile.in (global.o): Add ira.h.
33786
33787         * ira-build.c (mark_all_loops_for_removal,
33788         propagate_some_info_from_allocno): New.
33789         (remove_unnecessary_allocnos): Call
33790         propagate_some_info_from_allocno.
33791         (remove_low_level_allocnos): New.
33792         (remove_unnecessary_regions): Add parameter.  Call
33793         mark_all_loops_for_removal and remove_low_level_allocnos.  Pass
33794         parameter to remove_unnecessary_regions.
33795         (ira_build): Remove all regions but root if the conflict table was
33796         not built.  Update conflict hard regs for allocnos crossing calls.
33797
33798         * ira.c (ira_conflicts_p): New global.
33799         (ira): Define and use ira_conflicts_p.
33800
33801         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
33802         count_spilled_pseudo, find_reg, alter_reg, finish_spills,
33803         emit_input_reload_insns, delete_output_reload): Use ira_conflicts_p.
33804
33805 2009-01-06  Ben Elliston  <bje@au.ibm.com>
33806
33807         * gengtype-lex.l (YY_NO_INPUT): Define.
33808
33809 2009-01-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
33810
33811         PR c/34911
33812         * c-common.c (handle_vector_size_attribute): Also reject
33813         BOOLEAN_TYPE types.
33814
33815 2009-01-05  Sebastian Pop  <sebastian.pop@amd.com>
33816
33817         PR tree-optimization/38492
33818         * graphite.c (rename_map_elt, debug_rename_elt,
33819         debug_rename_map_1, debug_rename_map, new_rename_map_elt,
33820         rename_map_elt_info, eq_rename_map_elts,
33821         get_new_name_from_old_name, bb_in_sese_p): Moved around.
33822         (sese_find_uses_to_rename_use): Renamed sese_build_livein_liveouts_use.
33823         (sese_find_uses_to_rename_bb): Renamed sese_build_livein_liveouts_bb.
33824         (sese_build_livein_liveouts): New.
33825         (new_sese, free_sese): New.
33826         (new_scop): Call new_sese.
33827         (free_scop): Call free_sese.
33828         (rename_variables_from_edge, rename_phis_end_scop): Removed.
33829         (register_old_new_names): Renamed register_old_and_new_names.
33830         (register_scop_liveout_renames, add_loop_exit_phis,
33831         insert_loop_close_phis, struct igp,
33832         default_liveout_before_guard, add_guard_exit_phis,
33833         insert_guard_phis, copy_renames): New.
33834         (translate_clast): Call insert_loop_close_phis and insert_guard_phis.
33835         (sese_add_exit_phis_edge): Renamed scop_add_exit_phis_edge.
33836         (rewrite_into_sese_closed_ssa): Renamed scop_insert_phis_for_liveouts.
33837         (scop_adjust_phis_for_liveouts): New.
33838         (gloog): Call scop_adjust_phis_for_liveouts.
33839
33840         * graphite.h (struct sese): Documented.  Added fields liveout,
33841         num_ver and livein.
33842         (SESE_LIVEOUT, SESE_LIVEIN, SESE_LIVEIN_VER, SESE_NUM_VER): New.
33843         (new_sese, free_sese, sese_build_livein_liveouts): Declared.
33844         (struct scop): Added field liveout_renames.
33845         (SCOP_LIVEOUT_RENAMES): New.
33846
33847 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
33848
33849         PR tree-optimization/38510
33850         * graphite.c (recompute_all_dominators): Call mark_irreducible_loops.
33851         (translate_clast): Call recompute_all_dominators before
33852         graphite_verify.
33853         (gloog): Call recompute_all_dominators before graphite_verify.
33854
33855 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
33856             Jan Sjodin  <jan.sjodin@amd.com>
33857
33858         PR tree-optimization/38500
33859         * graphite.c (create_sese_edges): Call fix_loop_structure after
33860         splitting blocks.
33861
33862 2009-01-05  Joel Sherrill  <joel.sherrill@oarcorp.com>
33863
33864         * config.gcc: Add m32r*-*-rtems*.
33865         * config/m32r/rtems.h: New file.
33866
33867 2009-01-05  Ben Elliston  <bje@au.ibm.com>
33868
33869         * Makefile.in (.po.gmo): Use mkinstalldirs, not test -d || mkdir.
33870         (.po.pox): Likewise.
33871         (po/gcc.pot): Likewise.
33872
33873 2009-01-04  David S. Miller  <davem@davemloft.net>
33874
33875         * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED_RTX): Delete.
33876         (STARTING_FRAME_OFFSET): Always set to zero.
33877
33878 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
33879
33880         * tree.def (LSHIFT_EXPR, RSHIFT_EXPR): Add commentary.
33881         * tree-cfg.c (verify_gimple_assign_binary): Allow shifts of
33882         fixed-point types, and vectors of the same.
33883
33884 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
33885
33886         * config/mips/sync.md (*mb_barrier): Rename to...
33887         (*memory_barrier): ...this.
33888
33889 2009-01-04  Jonathan Wakely  <jwakely.gcc@gmail.com>
33890
33891         * doc/extend.texi (Function Attributes): Move @cindex after @item
33892         for 'artificial' and 'flatten'. Fix grammar for 'externally_visible'
33893         and put in alphabetical order. Fix 'target' name and put in order.
33894         * doc/invoke.texi (-Wstrict-null-sentinel, -fipa-matrix-reorg): Fix
33895         typos.
33896
33897 2009-01-04  Uros Bizjak  <ubizjak@gmail.com>
33898
33899         * config/s390/s390.md (UNSPEC_MB): Rename from UNSPECV_MB.
33900         (memory_barrier): Expand as unspec instead of unspec_volatile.
33901         Remove mem:BLK from insn operands.  Use Pmode scratch register.
33902         (*memory_barrier): Define as unspec instead of unspec_volatile.
33903         Use (match_dup 0) as input operand.
33904
33905         * config/sparc/sparc.md (UNSPEC_MEMBAR): Rename from UNSPECV_MEMBAR.
33906         * config/sparc/sync.md (memory_barrier): Expand as unspec instead of
33907         unspec_volatile.  Remove mem:BLK from insn operands.  Use Pmode
33908         scratch register.  Remove operand 1.
33909         (*stbar): Define as unspec instead of unspec_volatile.
33910         Use (match_dup 0) as input operand, remove (const_int 8).
33911         (*membar): Define as unspec instead of unspec_volatile.
33912         Use (match_dup 0) as input operand, remove input operand 2.
33913
33914         * config/xtensa/xtensa.md (UNSPEC_MEMW): Rename from UNSPECV_MEMW.
33915         (memory_barrier): Expand as unspec instead of unspec_volatile.
33916         Remove mem:BLK from insn operands.  Use Pmode scratch register.
33917         (*memory_barrier): Define as unspec instead of unspec_volatile.
33918         Use (match_dup 0) as input operand.
33919
33920         * config/ia64/sync.md (memory_barrier): Redefine as expander pattern.
33921         Remove mem:BLK from insn operands.  Use Pmode scratch register.
33922         Set volatile flag on operand 0.
33923         (*memory_barrier): New insn pattern.
33924
33925         * config/rs6000/sync.md (memory_barrier): Remove mem:BLK from
33926         insn operands.
33927         (*memory_barrier): Use (match_dup 0) as input operand.
33928
33929         * config/mips/sync.md (memory_barrier): Redefine as expander pattern.
33930         Remove mem:BLK from insn operands.  Use Pmode scratch register.
33931         Set volatile flag on operand 0.
33932         (*mb_internal): New insn pattern.
33933
33934         * config/alpha/sync.md (*memory_barrier): Rename from *mb_internal.
33935
33936 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
33937
33938         PR middle-end/38586
33939         * function.c (struct temp_slot): Move to the section of the file
33940         that deals with temp slots.  Remove field 'address'.
33941         (temp_slot_address_table): New hash table of address -> temp slot.
33942         (struct temp_slot_address_entry): New struct, items for the table.
33943         (temp_slot_address_compute_hash, temp_slot_address_hash,
33944         temp_slot_address_eq, insert_temp_slot_address): Support functions
33945         for the new table.
33946         (find_temp_slot_from_address): Rewrite to use the new hash table.
33947         (remove_unused_temp_slot_addresses): Remove addresses of temp
33948         slots that have been made available.
33949         (remove_unused_temp_slot_addresses_1): Call-back for htab_traverse,
33950         worker function for remove_unused_temp_slot_addresses.
33951         (assign_stack_temp_for_type): Don't clear the temp slot address list.
33952         Add the temp slot address to the address -> temp slot map.
33953         (update_temp_slot_address): Update via insert_temp_slot_address.
33954         (free_temp_slots): Call remove_unused_temp_slot_addresses.
33955         (pop_temp_slots): Likewise.
33956         (init_temp_slots): Allocate the address -> temp slot map, or empty
33957         the map if it is already allocated.
33958         (prepare_function_start): Initialize temp slot processing.
33959
33960 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
33961
33962         PR middle-end/38584
33963         * cfgexpand.c (estimate_stack_frame_size): Simplify the estimate:
33964         Calculate the size of all stack vars assuming no packing of stack
33965         vars will happen, replacing a quadratic algorithm with a linear one.
33966
33967 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
33968
33969         PR target/38707
33970         * expmed.c (store_bit_field_1): Don't modify op0 if movstrict insn
33971         can't be used.
33972
33973 2009-01-03  Diego Novillo  <dnovillo@google.com>
33974
33975         * doc/contrib.texi: Update contributions.
33976
33977 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
33978
33979         PR c++/38705
33980         * builtins.c (fold_builtin_memory_op): Give up if either operand
33981         is volatile.  Set srctype or desttype to non-qualified version
33982         of the other type.
33983
33984         PR c/38700
33985         * builtins.c (fold_builtin_expect): Only check DECL_WEAK for VAR_DECLs
33986         and FUNCTION_DECLs.
33987
33988 2009-01-02  Kenneth Zadeck  <zadeck@naturalbridge.com>
33989
33990         PR rtl-optimization/35805
33991         * df-problems.c (df_lr_finalize): Add recursive call to resolve lr
33992         problem if fast dce is able to remove any instructions.
33993         * dce.c (dce_process_block): Fix dump message.
33994
33995 2009-01-02  Mark Mitchell  <mark@codesourcery.com>
33996
33997         PR 33649
33998         * tree-ssa-pre.c (compute_antic): Correct loop bounds.
33999
34000 2009-01-02  Jakub Jelinek  <jakub@redhat.com>
34001
34002         PR middle-end/38690
34003         * tree-flow.h (op_code_prio, op_prio): New prototypes.
34004         * tree-pretty-print.c (op_code_prio): New function.
34005         (op_prio): No longer static.  Use op_code_prio.
34006         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs):
34007         Use op_prio and op_code_prio to determine if () should be
34008         printed around operand(s) or not.
34009
34010         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs,
34011         dump_gimple_call, dump_gimple_switch, dump_gimple_cond,
34012         dump_gimple_label, dump_gimple_try, dump_symbols, dump_gimple_phi,
34013         dump_gimple_mem_ops, dump_bb_header, dump_bb_end, pp_cfg_jump): Use
34014         pp_character instead of pp_string for single letter printing.
34015
34016 2009-01-02  Richard Sandiford  <rdsandiford@googlemail.com>
34017
34018         * doc/extend.texi: Fix '#pragma GCC option' typo.
34019
34020 2009-01-02  Richard Guenther  <rguenther@suse.de>
34021
34022         * doc/install.texi (--enable-checking): Mention different
34023         default for stage1.
34024         (--enable-stage1-checking): Document.
34025
34026 2009-01-01  Andrew Pinski  <pinskia@gmail.com>
34027
34028         PR middle-end/30142
34029         * tree-cfg.c (verify_expr): Add INDIRECT_REF case.  Change MODIFY_EXPR
34030         case to be an error.
34031
34032 2009-01-02  Ben Elliston  <bje@au.ibm.com>
34033
34034         * config/fp-bit.h (pack_d): Constify argument.
34035         * config/fp-bit.c (makenan): Constify return type. Remove casts.
34036         (isnan): Constify argument.
34037         (isinf): Likewise.
34038         (iszero): Likewise.
34039         (pack_d): Likewise.
34040         (_fpadd_parts): Constify return type.
34041         (_fpmul_parts): Likewise.
34042         (_fpdiv_parts): Likewise.
34043
34044 2009-01-01  Jakub Jelinek  <jakub@redhat.com>
34045
34046         PR c/36489
34047         * c-typeck.c (add_pending_init): Add IMPLICIT argument.  Only
34048         warn about overwriting initializer with side-effects or
34049         -Woverride-init if !IMPLICIT.
34050         (output_init_element): Likewise.  Pass IMPLICIT down to
34051         add_pending_init.
34052         (process_init_element): Add IMPLICIT argument.  Pass it down
34053         to output_init_element.
34054         (push_init_element, pop_init_level, set_designator): Adjust
34055         process_init_element callers.
34056         (set_nonincremental_init, set_nonincremental_init_from_string):
34057         Adjust add_pending_init callers.
34058         (output_pending_init_elements): Adjust output_init_element callers.
34059         * c-tree.h (process_init_element): Adjust prototype.
34060         * c-parser.c (c_parser_initelt, c_parser_initval): Adjust
34061         process_init_element callers.
34062
34063 \f
34064 Copyright (C) 2009 Free Software Foundation, Inc.
34065
34066 Copying and distribution of this file, with or without modification,
34067 are permitted in any medium without royalty provided the copyright
34068 notice and this notice are preserved.