OSDN Git Service

* defaults.h (CONSTANT_ADDRESS_P): Provide a default definition.
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-11-04  Nick Clifton  <nickc@redhat.com>
2
3         * defaults.h (CONSTANT_ADDRESS_P): Provide a default definition.
4         Make sure that it does not allow CONST_DOUBLEs.
5         * doc/tm.texi (CONSTANT_ADDRESS_P): Update description.
6         * config/avr/avr.h (CONSTANT_ADDRESS_P): Delete.
7         * config/bfin/bfin.h (CONSTANT_ADDRESS_P): Delete.
8         * config/cris/cris.h (CONSTANT_ADDRESS_P): Delete.
9         * config/fr30/fr30.h (CONSTANT_ADDRESS_P): Delete.
10         * config/frv/frv.h (CONSTANT_ADDRESS_P): Delete.
11         * config/m32c/m32c.h (CONSTANT_ADDRESS_P): Delete.
12         * config/m68hc11/m68hc11.h (CONSTANT_ADDRESS_P): Delete.
13         * config/mep/mep.h (CONSTANT_ADDRESS_P): Delete.
14         * config/mn10300/mn10300.h (CONSTANT_ADDRESS_P): Delete.
15         * config/moxie/moxie.h (CONSTANT_ADDRESS_P): Delete.
16         * config/pdp11/pdp11.h (CONSTANT_ADDRESS_P): Delete.
17         * config/picochip/picochip.h (CONSTANT_ADDRESS_P): Delete.
18         * config/score/score.h (CONSTANT_ADDRESS_P): Delete.
19         * config/stormy16/stormy16.h (CONSTANT_ADDRESS_P): Delete.
20
21 2009-11-04  Richard Guenther  <rguenther@suse.de>
22
23         PR tree-optimization/41919
24         * tree-vrp.c (test_for_singularity): Properly compare values.
25
26 2009-11-04  Revital Eres  <eres@il.ibm.com>
27
28         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
29         Consider peeling for alignment only for stores and remove
30         redundant assignment.
31
32 2009-11-04  Maxim Kuvyrkov  <maxim@codesourcery.com>
33
34         PR target/41302
35         * config/m68k/m68k.c (m68k_reg_present_p): New static function.
36         (m68k_ok_for_sibcall_p): Handle different result return locations.
37
38 2009-11-04  Richard Guenther  <rguenther@suse.de>
39
40         * c-opts.c (c_common_post_options): Move LTO option processing
41         code ...
42         * opts.c (decode_options): ... here.
43
44 2009-11-04  Jakub Jelinek  <jakub@redhat.com>
45
46         * c-common.c (fold_offsetof_1): Use %wd instead of
47         HOST_WIDE_INT_PRINT_DEC.
48
49 2009-11-04  Maciej W. Rozycki  <macro@linux-mips.org>
50
51         * config/vax/linux.h (TARGET_OS_CPP_BUILTINS): Don't define
52         __pic__ or __PIC__.
53
54 2009-11-04  Maciej W. Rozycki  <macro@linux-mips.org>
55
56         * config.gcc (vax-*-linux*): Keep the original contents of
57         tmake_file while adding vax/t-linux.
58
59 2009-11-03  Eric Botcazou  <ebotcazou@adacore.com>
60
61         PR target/10127
62         PR ada/20548
63         * expr.h (STACK_CHECK_PROBE_INTERVAL): Delete.
64         (STACK_CHECK_PROBE_INTERVAL_EXP): New macro.
65         (STACK_CHECK_MOVING_SP): Likewise.
66         * system.h (STACK_CHECK_PROBE_INTERVAL): Poison it.
67         * doc/tm.texi (Stack Checking): Delete STACK_CHECK_PROBE_INTERVAL.
68         Document STACK_CHECK_PROBE_INTERVAL_EXP and STACK_CHECK_MOVING_SP.
69         * doc/md.texi (Standard Pattern Names): Tweak entry of CHECK_STACK.
70         Document PROBE_STACK.
71         * explow.c (anti_adjust_stack_and_probe): New function.
72         (allocate_dynamic_stack_space): Do not directly allocate space if
73         STACK_CHECK_MOVING_SP, instead invoke above function.
74         (emit_stack_probe): Handle probe_stack insn.
75         (PROBE_INTERVAL): New macro.
76         (STACK_GROW_OPTAB): Likewise.
77         (STACK_GROW_OFF): Likewise.
78         (probe_stack_range): Use Pmode and memory_address consistently.  Fix
79         loop condition in the small constant case.  Rewrite in the general
80         case to be immune to wraparounds.  Make sure the address of probes
81         is valid.  Try to use [base + disp] addressing mode if possible.
82         * ira.c (setup_eliminable_regset): Set frame_pointer_needed if stack
83         checking is enabled and STACK_CHECK_MOVING_SP.
84         * rtlanal.c (may_trap_p_1) <MEM>: If stack checking is enabled,
85         return 1 for volatile references to the stack pointer.
86         * tree.c (build_common_builtin_nodes): Do not set ECF_NOTHROW on
87         __builtin_alloca if stack checking is enabled.
88         * unwind-dw2.c (uw_identify_context): Take into account whether the
89         context is that of a signal frame or not.
90         * config/i386/linux.h (STACK_CHECK_MOVING_SP): Define to 1.
91         * config/i386/linux64.h (STACK_CHECK_MOVING_SP): Likewise.
92
93 2009-11-03  Jakub Jelinek  <jakub@redhat.com>
94
95         PR rtl-optimization/41917
96         * rtlanal.c (num_sign_bit_copies1) <case UMOD>: If sign bit of second
97         operand isn't known to be 0, return 1.
98
99 2009-11-03  Richard Sandiford  <rdsandiford@googlemail.com>
100
101         * config/mips/mips.md: Fix typos.
102
103 2009-11-03  Richard Sandiford  <rdsandiford@googlemail.com>
104
105         * doc/invoke.texi: Fix typo.
106
107 2009-11-03  Paul Brook  <paul@codesourcery.com>
108
109         * config/arm/neon.ml (vectype): Add T_floatSF.
110         (string_of_vectype): Ditto.
111         * config/arm/neon-gen.ml (signed_ctype): Add T_floatSF.
112         (deftypes): Use float for float32_t.
113         * config/arm/arm_neon.h: Regenerate.
114
115 2009-11-03  Nick Clifton  <nickc@redhat.com>
116             Kevin Buettner  <kevinb@redhat.com>
117
118         * config/rx/predicates.md (rx_store_multiple_vector): Reverse
119         order of expected registers.
120         (rx_load_multiple_vector): Likewise.
121         (rx_rtsd_vector): Likewise.
122         * config/rx/rx.c (rx_cpu_type): New variable.
123         (rx_print_operand): Fix bug printing 64-bit constant values.
124         (rx_emit_stack_pushm): Reverse order of pushed registers.
125         (gen_rx_store_vector): Likewise.
126         (is_fast_interrupt_func): Only accept "fast_interrupt" as the
127         attribute name.
128         (is_exception_func): Rename to is_interrupt_func and only accept
129         "interrupt" as the attribute name.
130         (rx_get_stack_layout): Use new function name.
131         (rx_func_attr_inlinable): Likewise.
132         (rx_attribute_table): Remove "exception".
133         (rx_expand_prologue): If necessary push the accumulator register
134         in the prologue of interrupt functions.
135         (rx_expand_epilogue): If necessary pop the accumulator.
136         (rx_builtins): Add RX_BUILTIN_MVTIPL.
137         (rx_expand_builtin_stz): Remove.
138         (rx_expand_builtin_mvtipl): New function.
139         (rx_init_builtins): Handle RX_BUILTIN_MVTIPL.
140         (rx_expand_builtin): Likewise.
141         (rx_enable_fpu): New variable.
142         (rx_handle_option): Handle -fpu, -nofpu, -mcpu and -patch.
143         * config/rx/rx.h (TARGET_CPU_CPP_BUILTINS): Assert machine based
144         on rx_cpu_type.  Define __RX_FPU_INSNS__ if FPU insns are allowed.
145         (enum rx_cpu_types): Define.
146         (ASM_SPEC): Pass -m32bit-doubles on to assembler.
147         (INCOMING_FRAME_SP_OFFSET): Define.
148         (ARG_POINTER_CFA_OFFSET): Define.
149         (FRAME_POINTER_CFA_OFFSET): Define.
150         (OVERRIDE_OPTIONS): Enable fast math if RX FPU insns are enabled.
151         (ALLOW_RX_FPU_INSNS): Define.
152         * config/rx/rx.md: Test ALLOW_RX_FPU_INSNS instead of
153         fast_math_flags_set_p.
154         (UNSPEC_BUILTIN_MVTIPL): Define.
155         (revl): Rename to bswapsi2.
156         (bswaphi2): New pattern.
157         (mvtachi): Mark as volatile because it uses a register unknown to GCC.
158         (mvtaclo): Likewise.
159         (racw): Likewise.
160         (mvtc): Remove clobber of cc0.
161         (mvtcp): Delete.
162         (opecp): Delete.
163         * config/rx/rx.opt (mieee): Remove.
164         (fpu): Add.
165         (nofpu): Add.
166         (mcpu=): Add.
167         (patch=): Add.
168         (msave-acc-in-interrupts): Add.
169         * config/rx/t-rx (MULTILIB_OPTIONS): Change default to 64bit doubles.
170         (MULTILIB_DIRS): Likewise.
171         (MULTILIB_MATCHES): Treat -fpu as an alias for -m32bit-doubles.
172         * doc/extend.texi: Remove description of "exception" function
173         attribute.
174         * doc/invoke.texi: Document -fpu, -nofpu, -mcpu=, -patch= and
175         -msave-acc-in-interrupts options.
176
177 2009-11-03  Richard Guenther  <rguenther@suse.de>
178
179         * c-common.c (fold_offsetof_1): Use HOST_WIDE_INT_PRINT_DEC.
180
181 2009-11-03  Dodji Seketeli  <dodji@redhat.com>
182
183         PR c++/38699
184         * c-common.c (fold_offsetof_1): Issue errors when the member designator
185         of the offsetof expression is not legitimate.
186
187 2009-11-03  Uros Bizjak  <ubizjak@gmail.com>
188
189         * config/i386/i386.md (*call_value_1_rex64_ms_sysv): Use register
190         names instead of numerical constants.
191         (sse_prologue_save): Ditto.
192         (*sse_prologue_save_insn): Ditto.
193
194 2009-11-03  Uros Bizjak  <ubizjak@gmail.com>
195
196         PR target/41900
197         * config/i386/i386.h (ix86_arch_indices) <X86_ARCH_CALL_ESP>: New.
198         (TARGET_CALL_ESP): New define.
199         * config/i386/i386.c (initial_ix86_tune_features): Initialize
200         X86_ARCH_CALL_ESP.
201         * config/i386/i386.md (*call_pop_1_esp, *call_1_esp,
202         *call_value_pop_1_esp, *call_value_1_esp): Rename from *call_pop_1,
203         *call_1, *call_value_pop_1 and *call_value_1.  Depend on
204         TARGET_CALL_ESP.
205         (*call_pop_1, *call_1, *call_value_pop_1, *call_value_1):
206         New patterns, use "lsm" as operand 1 constraint.
207         * config/i386/predicates.md (call_insn_operand): Depend on
208         index_register_operand for !TARGET_CALL_ESP to avoid %esp register.
209
210 2009-11-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
211
212         PR tree-optimization/41857
213         * tree-flow.h (rewrite_use_address): Add BASE_HINT argument.
214         * tree-ssa-loop-ivopts.c (rewrite_use_address): Pass base hint
215         to create_mem_ref.
216         * tree-ssa-address.c (move_hint_to_base): New function.
217         (most_expensive_mult_to_index): Add TYPE argument.  Use mode and
218         address space associated with TYPE.
219         (addr_to_parts): Add TYPE and BASE_HINT arguments.  Pass TYPE to
220         most_expensive_mult_to_index.  Call move_hint_to_base.
221         (create_mem_ref): Add BASE_HINT argument.  Pass BASE_HINT and
222         TYPE to addr_to_parts.
223
224 2009-11-02  Martin Jambor  <mjambor@suse.cz>
225
226         PR tree-optimization/41750
227         * tree-sra.c (analyze_modified_params): Loop over all
228         representatives of components of a parameter.
229
230 2009-11-02  Jakub Jelinek  <jakub@redhat.com>
231
232         PR tree-optimization/41841
233         * ipa-struct-reorg.c (build_data_structure): Don't attempt to look at
234         local variables of not yet materialized clones.
235
236         PR debug/41893
237         * cfgexpand.c (expand_debug_expr): Don't attempt to create DECL_RTL
238         for a VOIDmode variable.
239
240         PR c++/41774
241         * c-pragma.c (visstack): Change into vector of ints rather than
242         enum symbol_visibility.
243         (push_visibility): Add kind argument, push default_visibility together
244         with kind.
245         (pop_visibility): Add kind argument, return true if successful, fail
246         if visibility stack is empty or if stack top is of different kind.
247         (handle_pragma_visibility): Don't check length of visstack, instead
248         call pop_visibility and issue diagnostics if it failed.  Pass 0
249         as last argument to push_visibility and pop_visibility.
250         * c-pragma.h (push_visibility): Add kind argument.
251         (pop_visibility): Likewise.  Return bool instead of void.
252
253 2009-11-01  Eric Botcazou  <ebotcazou@adacore.com>
254
255         * tree.def (TARGET_MEM_REF): Update comment.
256         * alias.c (get_alias_set): Retrieve the original memory reference for
257         a TARGET_MEM_REF before proceeding.
258
259 2009-10-31  Anatoly Sokolov  <aesok@post.ru>
260
261         * config/frv/frv.c (frv_function_value, frv_libcall_value,
262         frv_function_value_regno_p): New functions.
263         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
264         * config/frv/frv.h: (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
265         (FUNCTION_VALUE_REGNO_P): Redefine, use frv_function_value_regno_p.
266         * config/frv/frv-protos.h (frv_function_value_regno_p): Declare.
267
268 2009-10-31  Anatoly Sokolov  <aesok@post.ru>
269
270         * config/mn10300/mn10300.c (mn10300_function_value): Make static, add
271         new 'outgoing' argument.
272         (mn10300_libcall_value, mn10300_function_value_regno_p): New functions.
273         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
274         * config/mn10300/mn10300.h: (FUNCTION_VALUE, FUNCTION_OUTGOING_VALUE,
275         LIBCALL_VALUE): Remove.
276         (FUNCTION_VALUE_REGNO_P): Redefine, use mn10300_function_value_regno_p.
277         * config/mn10300/mn10300-protos.h (mn10300_function_value): Remove.
278         (mh10300_function_value_regno_p): Declare.
279
280 2009-10-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
281
282         * config/arm/cortex-a9.md: New - integer pipeline description.
283
284 2009-10-31  Eric Botcazou  <ebotcazou@adacore.com>
285
286         * tree-ssa-sccvn.c (vn_reference_lookup_3): Bail out instead of
287         aborting if the sizes of the two references don't match.
288
289 2009-10-31  Toon Moene  <toon@moene.org>
290
291         * ipa-inline.c (cgraph_decide_inlining):
292         Include reason for not inlining called-once functions in dump file.
293
294 2009-10-30  Daniel Gutson  <dgutson@codesourcery.com>
295
296         * config/arm/linux-eabi.h (LINK_SPEC): BE8_LINK_SPEC added.
297         * config/arm/bpapi.h (BE8_LINK_SPEC): New define.
298         (LINK_SPEC): BE_LINK_SPEC added.
299
300 2009-10-30  Richard Guenther  <rguenther@suse.de>
301
302         PR lto/41858
303         * lto-streamer.h (struct lto_file_decl_data): Remove fd member.
304
305 2009-10-30  Nathan Sidwell  <nathan@codesourcery.com>
306
307         * target-def.h (TARGET_ASM_TTYPE): Correct typo of TARGET_ARM_TTYPE.
308         * config/arm/unwind-arm.c (__gnu_Unwind_Backtrace): Remove unused
309         label.
310
311 2009-10-30  Martin Jambor  <mjambor@suse.cz>
312
313         * tree-sra.c (build_ref_for_offset_1): Remove a comment.
314
315 2009-10-30  H.J. Lu  <hongjiu.lu@intel.com>
316
317         PR target/40838
318         * cfgexpand.c (expand_stack_alignment): Call update_stack_boundary
319         first.  Move assert on stack_alignment_estimated just before
320         setting stack_realign_needed.
321         (gimple_expand_cfg): Initialize stack_alignment_estimated to 0.
322         Don't call update_stack_boundary.
323
324         * config/i386/i386.c (ix86_minimum_incoming_stack_boundary): New.
325         (verride_options): Don't check ix86_force_align_arg_pointer here.
326         (ix86_function_ok_for_sibcall): Use it.
327         (ix86_update_stack_boundary): Likewise.
328
329         * config/i386/i386.h (STACK_REALIGN_DEFAULT): Update comments.
330
331 2009-10-30  Richard Earnshaw  <rearnsha@arm.com>
332
333         * arm.md (QHSI): New mode iterator.
334         (movqi): If generating for thumb, then truncate any immediate to
335         8 bits.
336         * thumb2.md (thumb2_movsi_shortim and peephole2 generator): Replace
337         with...
338         (thumb2_mov<mode>_shortim and peephole2 generator): ... iterator based
339         version.
340
341 2009-10-29  Cary Coutant  <ccoutant@google.com>
342
343         PR debug/41700
344         * dwarf2out.c (dwarf2_debug_hooks): Add entries for new hook (two
345         locations in the source).
346         (store_vcall_insn): New function.
347         (lookup_vcall_insn): New function.
348         (dwarf2out_virtual_call_token): Use store_vcall_insn.
349         (dwarf2out_copy_call_info): New function.
350         (dwarf2out_virtual_call): Use lookup_vcall_insn.
351         * emit-rtl.c (try_split): Call copy_call_info debug hook.
352         * debug.h (struct gcc_debug_hooks): Add copy_call_info hook.
353         * debug.c (do_nothing_debug_hooks): Add dummy entry for new hook.
354         (debug_nothing_rtx_rtx): New dummy hook.
355         * dbxout.c (dbx_debug_hooks): Add dummy entry for new hook.
356         (xcoff_debug_hooks): Likewise.
357         * sdbout.c (sdb_debug_hooks): Likewise.
358         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
359
360 2009-10-29  David Daney  <ddaney@caviumnetworks.com>
361
362         * doc/invoke.texi (mmcount-ra-address): Document new command line
363         option.
364         * config/mips/mips.opt (mmcount-ra-address): New option.
365         * config/mips/mips-protos.h (mips_function_profiler): Declare new
366         function.
367         * config/mips/mips.c (struct mips_frame_info): Add ra_fp_offset
368         member.
369         (mips_for_each_saved_gpr_and_fpr): Set ra_fp_offset.
370         (mips_function_profiler): Moved from FUNCTION_PROFILER, and
371         rewritten.
372         * config/mips/mips.h (FUNCTION_PROFILER): Body of macro moved to
373         mips_function_profiler.
374
375 2009-10-29  Steve Ellcey  <sje@cup.hp.com>
376
377         PR middle-end/37565
378         PR target/38018
379         * doc/tm.texi (OVERRIDE_OPTIONS): Update.
380         (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
381         * optc-gen.awk (cl_target_option_restore): Include call to
382         targetm.override_options_after_change.
383         * target-def.h (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
384         * target.h (override_options_after_change): New.
385         * c-common.c (parse_optimize_options): Call
386         targetm.override_options_after_change.
387         * config/ia64/ia64.c (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
388         (ia64_override_options_after_change): New.
389         (ia64_override_options) Add call to above.
390
391 2009-10-29  Michael Matz  <matz@suse.de>
392
393         * tree-ssa-math-opts.c (execute_convert_to_rsqrt): Remove.
394         (gate_convert_to_rsqrt): Ditto.
395         (pass_convert_to_rsqrt): Ditto.
396         * tree-pass.h (pass_convert_to_rsqrt): Don't declare.
397         * passes.c (init_optimization_passes): Don't add pass_convert_to_rsqrt
398         to pass list.
399
400         * config/i386/i386.c (ix86_emit_swdivsf): Change evaluation order.
401
402 2009-10-29  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
403
404         * config/arm/arm.c (find_best_start): Fix type of remainder to be
405         unsigned.
406
407 2009-10-29  Martin Jambor  <mjambor@suse.cz>
408
409         PR tree-optimization/41775
410         * tree-sra.c (build_ref_for_offset): Unshare *expr if not NULL.
411         (generate_subtree_copies): Do not unshare agg.
412         (load_assign_lhs_subreplacements): Do not unshare rhs.
413         (sra_modify_assign): Do not unshare exprs.
414         (propagate_subacesses_accross_link): Renamed to
415         propagate_subaccesses_across_link.
416
417 2009-10-29  Richard Earnshaw  <rearnsha@arm.com>
418
419         * arm.c (count_insns_for_constant): Rework to support counting for
420         thumb2 immediates as well.
421         (find_best_start): Split out from arm_gen_constant.
422         (arm_gen_constant): Rework to support XOR with immediate.
423
424 2009-10-29  Chao-ying Fu  <fu@mips.com>
425
426         * config/mips/mips.c (mips_emit_unary, mips_force_unary): New
427         functions.
428         (mips_expand_synci_loop):  Use the length rtx to control the
429         synci loop from the begin rtx that points to the first byte of
430         the cache line.
431
432 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
433
434         * doc/invoke.texi: Rename -use-linker-plugin -fuse-linker-plugin.
435
436 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
437
438         * dbxout.c (dbxout_common_check): Accept non public trees.
439         * dwarf2out.c (fortran_common): Accept non public trees.
440
441 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
442
443         * common.opt (fuse-linker-plugin): New option.
444         * gcc.c (LINK_COMMAND_SPEC, main): Rename use-linker-plugin to
445         fuse-linker-plugin.
446         * opts.c (common_handle_option): Ignore OPT_fuse_linker_plugin.
447
448 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
449
450         PR rtl-optimization/39715
451         * config/arm/arm.md (cstoresi4): Use gen_cstoresi_ltu_thumb1.
452         (gen_cstoresi_ltu_thumb1): New splitter.
453
454 2009-10-28  Richard Guenther  <rguenther@suse.de>
455
456         PR lto/41808
457         PR lto/41839
458         * tree-ssa.c (useless_type_conversion_p): Do not treat
459         conversions to pointers to incomplete types as useless.
460         * gimple.c (gimple_types_compatible_p): Compare struct tags,
461         not typedef names.
462
463 2009-10-28  Jakub Jelinek  <jakub@redhat.com>
464
465         * var-tracking.c (emit_note_insn_var_location): Don't call the second
466         vt_expand_loc unnecessarily when location is not a register nor
467         memory.
468
469         PR middle-end/41837
470         * ipa-struct-reorg.c (find_field_in_struct_1): Return NULL if
471         fields don't have DECL_NAME.
472
473         PR debug/41801
474         * builtins.c (get_builtin_sync_mem): Expand loc in ptr_mode,
475         call convert_memory_address on addr.
476
477         PR target/41762
478         * config/i386/i386.c (ix86_pic_register_p): Don't call
479         rtx_equal_for_cselib_p for VALUEs discarded as useless.
480
481 2009-10-28  Richard Sandiford  <rdsandiford@googlemail.com>
482
483         * var-tracking.c (emit_note_insn_var_location): Get the mode of
484         a variable part from its REG, MEM or VALUE.
485
486 2009-10-28  Richard Guenther  <rguenther@suse.de>
487
488         * gimple.c (gimple_get_alias_set): Fix comment typo.
489
490 2009-10-28  Richard Guenther  <rguenther@suse.de>
491
492         * tree.c (free_lang_data_in_type): Do not call get_alias_set.
493         (free_lang_data): Unconditionally compute alias sets for all
494         standard integer types.  Bail out if gate bailed out previously.
495         Do not reset the types_compatible_p langhook.
496         (gate_free_lang_data): Remove.
497         (struct pass_ipa_free_lang_data): Enable unconditionally.
498         * gimple.c (gimple_get_alias_set): Use the same alias-set for
499         all pointer types.
500
501 2009-10-28  Richard Guenther  <rguenther@suse.de>
502
503         PR middle-end/41855
504         * tree-ssa-alias.c (refs_may_alias_p_1): Deal with CONST_DECLs
505         (ref_maybe_used_by_call_p_1): Fix bcopy handling.
506         (call_may_clobber_ref_p_1): Likewise.
507         * tree-ssa-structalias.c (find_func_aliases): Likewise.
508         * alias.c (nonoverlapping_memrefs_p): Deal with CONST_DECLs.
509
510 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
511
512         PR rtl-optimization/41812
513
514         Revert:
515         2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
516
517         * df-problems.c (df_md_scratch): New.
518         (df_md_alloc, df_md_free): Allocate/free it.
519         (df_md_local_compute): Only include live registers in init.
520         (df_md_transfer_function): Prune the in-set computed by
521         the confluence function, and the gen-set too.
522
523 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
524
525         PR rtl-optimization/39715
526         * combine.c (simplify_comparison): Use extensions to
527         widen comparisons.  Try an ANDing first.
528
529 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
530
531         PR rtl-optimization/40741
532         * config/arm/arm.c (thumb1_rtx_costs): IOR or XOR with
533         a small constant is cheap.
534         * config/arm/arm.md (andsi3, iorsi3): Try to place the result of
535         force_reg on the LHS.
536         (xorsi3): Likewise, and split the XOR if the constant is complex
537         and not in Thumb mode.
538
539 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
540
541         * expmed.c (emit_store_flag): Check costs before
542         transforming to the opposite representation.
543
544 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
545
546         * config/sh/sh.md (cbranchfp4_media): Remove hack extending
547         cstore result to DImode.
548
549 2009-10-28  Kaz Kojima  <kkojima@gcc.gnu.org>
550
551         * config/sh/sh.md (stuff_delay_slot): Move const_int pattern
552         inside the unspec vector.
553
554 2009-10-27  Richard Henderson  <rth@redhat.com>
555
556         * cgraphunit.c (cgraph_optimize): Maintain timevar stack properly.
557
558 2009-10-27  Richard Henderson  <rth@redhat.com>
559
560         PR c++/41819
561         * tree-eh.c (eh_region_may_contain_throw_map): Rename from
562         eh_region_may_contain_throw; update users.
563         (eh_region_may_contain_throw): New function.
564         (lower_catch): Check flag_exceptions before creating exception region.
565         (lower_eh_filter, lower_eh_must_not_throw): Likewise.
566         (lower_cleanup): Tidy existing flag_exceptions check to match.
567
568 2009-10-27  Kai Tietz <kai.tietz@onevision.com>
569
570         PR/41799
571         * config/i386/mingw32.h (CHECK_EXECUTE_STACK_ENABLED): New macro.
572         * config/i386/mingw.opt: Add fset-stack-executable.
573         * config/i386/i386.c (ix86_trampoline_init): Make call to
574         emit_library_call conditional, if CHECK_EXECUTE_STACK_ENABLED is
575         defined and its value is not zero.
576         * doc/invoke.texi
577
578 2009-10-27  Richard Guenther  <rguenther@suse.de>
579
580         * tree-ssa-structalias.c (find_func_aliases): In IPA mode
581         handle calls to externally visible functions like in regular mode.
582         (create_variable_info_for): Do not create function infos here.
583         (have_alias_info): Remove write-only variable.
584         (solve_constraints): New function split out from common code
585         in compute_points_to_sets and ipa_pta_execute.
586         (compute_points_to_sets): Adjust.
587         (ipa_pta_execute): Likewise.  Handle clones and externally visible
588         functions like in non-IPA mode.
589
590 2009-10-27  Jakub Jelinek  <jakub@redhat.com>
591
592         PR c/41842
593         * c-typeck.c (convert_arguments): Return -1 if any of the arguments is
594         error_mark_node.
595
596 2009-10-27  Richard Guenther  <rguenther@suse.de>
597
598         * tree-complex.c (expand_complex_div_wide): Check for
599         INTEGER_CST, not TREE_CONSTANT on comparison folding result.
600
601 2009-10-27  Revital Eres  <eres@il.ibm.com>
602
603         PR tree-optimization/40648
604         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
605         Change decision of when to peel for alignment.
606
607 2009-10-27  Richard Guenther  <rguenther@suse.de>
608
609         PR lto/41821
610         * gimple.c (gimple_types_compatible_p): Handle OFFSET_TYPE.
611
612 2009-10-27  Aldy Hernandez  <aldyh@redhat.com>
613
614         PR bootstrap/41451
615         * fold-const.c (fold_binary_loc): Do not call
616         protected_set_expr_location.
617
618 2009-10-27  Wei Guozhi  <carrot@google.com>
619
620         PR target/41705
621         * target.h (have_conditional_execution): Add a new target hook
622         function.
623         * target-def.h (TARGET_HAVE_CONDITIONAL_EXECUTION): Likewise.
624         * targhooks.h (default_have_conditional_execution): Likewise.
625         * targhooks.c (default_have_conditional_execution): Likewise.
626         * doc/tm.texi (TARGET_HAVE_CONDITIONAL_EXECUTION): Document it.
627         * config/arm/arm.c (TARGET_HAVE_CONDITIONAL_EXECUTION): Define it.
628         (arm_have_conditional_execution): New function.
629         * ifcvt.c (noce_process_if_block, find_if_header,
630         cond_exec_find_if_block, dead_or_predicable): Change the usage of
631         macro HAVE_conditional_execution to a target hook call.
632         * recog.c (peephole2_optimize): Likewise.
633         * sched-rgn.c (add_branch_dependences): Likewise.
634         * final.c (asm_insn_count, final_scan_insn): Likewise.
635         * bb-reorder.c (HAVE_conditional_execution): Remove it.
636
637 2009-10-26  Ben Elliston  <bje@au.ibm.com>
638             Michael Meissner  <meissner@linux.vnet.ibm.com>
639             Ulrich Weigand  <uweigand@de.ibm.com>
640
641         * config.gcc (spu-*-elf*): Add spu_cache.h to extra_headers.
642         * config/spu/spu_cache.h: New file.
643
644         * config/spu/cachemgr.c: New file.
645         * config/spu/cache.S: New file.
646
647         * config/spu/spu.h (ASM_OUTPUT_SYMBOL_REF): Define.
648         (ADDR_SPACE_EA): Define.
649         (TARGET_ADDR_SPACE_KEYWORDS): Define.
650         * config/spu/spu.c (EAmode): New macro.
651         (TARGET_ADDR_SPACE_POINTER_MODE): Define.
652         (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
653         (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Likewise.
654         (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Likewise.
655         (TARGET_ADDR_SPACE_SUBSET_P): Likewise.
656         (TARGET_ADDR_SPACE_CONVERT): Likewise.
657         (TARGET_ASM_SELECT_SECTION): Likewise.
658         (TARGET_ASM_UNIQUE_SECTION): Likewise.
659         (TARGET_ASM_UNALIGNED_SI_OP): Likewise.
660         (TARGET_ASM_ALIGNED_DI_OP): Likewise.
661         (ea_symbol_ref): New function.
662         (spu_legitimate_constant_p): Handle __ea qualified addresses.
663         (spu_addr_space_legitimate_address_p): New function.
664         (spu_addr_space_legitimize_address): Likewise.
665         (cache_fetch): New global.
666         (cache_fetch_dirty): Likewise.
667         (ea_alias_set): Likewise.
668         (ea_load_store): New function.
669         (ea_load_store_inline): Likewise.
670         (expand_ea_mem): Likewise.
671         (spu_expand_mov): Handle __ea qualified memory references.
672         (spu_addr_space_pointer_mode): New function.
673         (spu_addr_space_address_mode): Likewise.
674         (spu_addr_space_subset_p): Likewise.
675         (spu_addr_space_convert): Likewise.
676         (spu_section_type_flags): Handle "._ea" section.
677         (spu_select_section): New function.
678         (spu_unique_section): Likewise.
679         * config/spu/spu-c.c (spu_cpu_cpp_builtins): Support __EA32__
680         and __EA64__ predefined macros.
681         * config/spu/spu-elf.h (LIB_SPEC): Handle -mcache-size= and
682         -matomic-updates switches.
683
684         * config/spu/t-spu-elf (MULTILIB_OPTIONS): Define.
685         (EXTRA_MULTILIB_PARTS): Add libgcc_cachemgr.a,
686         libgcc_cachemgr_nonatomic.a, libgcc_cache8k.a, libgcc_cache16k.a,
687         libgcc_cache32k.a, libgcc_cache64k.a, libgcc_cache128k.a.
688         ($(T)cachemgr.o, $(T)cachemgr_nonatomic.o): New target.
689         ($(T)cache8k.o, $(T)cache16k.o, $(T)cache32k.o, $(T)cache64k.o,
690         $(T)cache128k.o): Likewise.
691         ($(T)libgcc_%.a): Likewise.
692
693         * config/spu/spu.h (TARGET_DEFAULT): Add MASK_ADDRESS_SPACE_CONVERSION.
694         * config/spu/spu.opt (-mea32/-mea64): Add switches.
695         (-maddress-space-conversion): Likewise.
696         (-mcache-size=): Likewise.
697         (-matomic-updates): Likewise.
698         * doc/invoke.texi (-mea32/-mea64): Document.
699         (-maddress-space-conversion): Likewise.
700         (-mcache-size=): Likewise.
701         (-matomic-updates): Likewise.
702
703 2009-10-26  Ben Elliston  <bje@au.ibm.com>
704             Michael Meissner  <meissner@linux.vnet.ibm.com>
705             Ulrich Weigand  <uweigand@de.ibm.com>
706
707         * doc/tm.texi (TARGET_ADDR_SPACE_KEYWORDS): Document.
708
709         * c-common.c (c_common_reswords): If TARGET_ADDR_SPACE_KEYWORDS is
710         defined, add the named address space keywords.
711         (c_addr_space_name): New function.
712         (complete_array_type): Preserve named address space.
713         (handle_mode_attribute): Use targetm.addr_space.valid_pointer_mode
714         instead of targetm.valid_pointer_mode.
715
716         * c-common.h (enum rid): Add RID_ADDR_SPACE_0 .. RID_ADDR_SPACE_15,
717         RID_FIRST_ADDR_SPACE and RID_LAST_ADDR_SPACE.
718         (ADDR_SPACE_KEYWORD): New macro.
719         (c_addr_space_name): Add prototype.
720
721         * c-tree.h (struct c_declspecs): Add address_space member.
722         (declspecs_add_addrspace): Add prototype.
723
724         * c-pretty-print.c (pp_c_type_qualifier_list): Handle address spaces.
725
726         * c-parser.c (c_parse_init): Add assertion.
727         (typedef enum c_id_kind): Add C_ID_ADDRSPACE.
728         (c_lex_one_token): Handle address space keywords.
729         (c_token_starts_typename): Likewise.
730         (c_token_starts_declspecs): Likewise.
731         (c_parser_declspecs): Likewise.
732         (c_parser_postfix_expression_after_paren_type): Diagnose compound
733         literal within function qualified with named address space.
734
735         * c-decl.c (diagnose_mismatched_decls): Diagnose conflicting named
736         address space qualifiers.
737         (shadow_tag_warned): Warn about useless address space qualifiers.
738         (quals_from_declspecs): Handle address space qualifiers.
739         (grokdeclarator): Likewise.
740         (build_null_declspecs): Likewise.
741         (declspecs_add_addrspace): New function.
742
743         * c-typeck.c (addr_space_superset): New function.
744         (qualify_type): Handle named address spaces.
745         (composite_type): Likewise.
746         (common_pointer_type): Likewise.
747         (comp_target_types): Likewise.
748         (build_conditional_expr): Likewise.
749         (handle_warn_cast_qual): Likewise.
750         (build_c_cast): Likewise.
751         (convert_for_assignment): Likewise.
752         (build_binary_op): Likewise.
753         (pointer_diff): Handle named address spaces.  Use intermediate
754         integer type of sufficient size if required.
755
756 2009-10-26  Ben Elliston  <bje@au.ibm.com>
757             Michael Meissner  <meissner@linux.vnet.ibm.com>
758             Ulrich Weigand  <uweigand@de.ibm.com>
759
760         * doc/tm.texi (TARGET_ADDR_SPACE_POINTER_MODE): Document.
761         (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
762         (TARGET_ADDR_SPACE_VALID_POINTER_MODE): Likewise.
763
764         * target.h (struct target_def): Add pointer_mode, address_mode,
765         and valid_pointer_mode to addr_space substructure.
766         * target-def.h (TARGET_ADDR_SPACE_POINTER_MODE): Define.
767         (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
768         (TARGET_ADDR_SPACE_VALID_POINTER_MODE): Likewise.
769         (TARGET_ADDR_SPACE_HOOKS): Add them.
770         * targhooks.c (target_default_pointer_address_modes_p): New function.
771         * target.h (target_default_pointer_address_modes_p): Add prototype.
772         * targhooks.c (default_addr_space_pointer_mode): New function.
773         (default_addr_space_address_mode): Likewise.
774         (default_addr_space_valid_pointer_mode): Likewise.
775         * targhooks.h (default_addr_space_pointer_mode): Add prototype.
776         (default_addr_space_address_mode): Likewise.
777         (default_addr_space_valid_pointer_mode): Likewise.
778         * output.h (default_valid_pointer_mode): Move to ...
779         * targhooks.h (default_valid_pointer_mode): ... here.
780         * varasm.c (default_valid_pointer_mode): Move to ...
781         * targhooks.c (default_valid_pointer_mode): ... here.
782
783         * varasm.c (output_constant): Use targetm.addr_space.valid_pointer_mode
784         instead of targetm.valid_pointer_mode.
785
786         * fold-const.c (fit_double_type): Use int_or_pointer_precision.
787         * tree.c (integer_pow2p): Likewise.
788         (tree_log2): Likewise.
789         (tree_floor_log2): Likewise.
790         (signed_or_unsigned_type_for): Support pointer type of different size.
791         (int_or_pointer_precision): New function.
792         * tree.h (int_or_pointer_precision): Add prototype.
793         * stor-layout.c (layout_type): Set TYPE_PRECISION for offset types.
794         * varasm.c (initializer_constant_valid_p): Use TYPE_PRECISION of
795         incoming pointer type instead of POINTER_SIZE.
796
797         * tree.c (build_pointer_type): Use appropriate pointer mode
798         instead of ptr_mode.
799         (build_reference_type): Likewise.
800         * expr.c (store_expr): Likewise.
801         (expand_expr_addr_expr): Likewise.
802         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Likewise.
803         * cfgexpand.c (expand_debug_expr): Likewise.
804
805         * auto-inc-dec.c: Include "target.h".
806         (try_merge): Use appropriate address mode instead of Pmode.
807         (find_inc): Likewise.
808         * combine.c (find_split_point): Likewise.
809         * cselib.c (cselib_record_sets): Likewise.
810         * dse.c (replace_inc_dec): Likewise.
811         (canon_address): Likewise.
812         * var-tracking.c (replace_expr_with_values): Likewise.
813         (count_uses): Likewise.
814         (add_uses): Likewise.
815         (add_stores): Likewise.
816         * emit-rtl.c: Include "target.h".
817         (adjust_address_1): Use appropriate address mode instead of Pmode.
818         (offset_address): Likewise.
819         * explow.c (break_out_memory_refs): Likewise.
820         (memory_address_addr_space): Likewise.
821         (promote_mode): Likewise.
822         * expr.c (move_by_pieces): Likewise.
823         (emit_block_move_via_loop): Likewise.
824         (store_by_pieces): Likewise.
825         (store_by_pieces_1): Likewise.
826         (expand_assignment): Likewise.
827         (store_constructor): Likewise.
828         (expand_expr_addr_expr): Likewise.
829         (expand_expr_real_1): Likewise.
830         * cfgexpand.c (expand_debug_expr): Likewise.
831         * ifcvt.c (noce_try_cmove_arith): Likewise.
832         * regcprop.c (kill_autoinc_value): Likewise.
833         * regmove.c (try_auto_increment): Likewise.
834         * reload.c (find_reloads): Likewise.
835         (find_reloads_address): Likewise.
836         (find_reloads_address_1): Likewise.
837         * sched-deps.c: Include "target.h".
838         (sched_analyze_1): Use appropriate address mode instead of Pmode.
839         (sched_analyze_2): Likewise.
840         * sel-sched-dump.c: Include "target.h".
841         (debug_mem_addr_value): Use appropriate address mode instead of Pmode.
842         * stor-layout.c (layout_type): Likewise.
843         * tree-ssa-loop-ivopts.c (produce_memory_decl_rtl): Likewise.
844         (multiplier_allowed_in_address_p): Likewise.
845         (get_address_cost): Likewise.
846         * varasm.c (make_decl_rtl): Likewise.
847
848         * expr.c (expand_assignment): Always convert offsets to appropriate
849         address mode.
850         (store_expr): Likewise.
851         (store_constructor): Likewise.
852         (expand_expr_real_1): Likewise.
853
854         * reload.h (form_sum): Add MODE argument.
855         * reload.c (form_sum): Add MODE argument, use it instead of Pmode.
856         Update recursive calls.
857         (subst_indexed_address): Update calls to form_sum.
858
859         * tree-flow.h (addr_for_mem_ref): Add ADDRSPACE argument.
860         * tree-ssa-address.c: Include "target.h".
861         (templates): Replace by ...
862         (mem_addr_template_list): ... this new vector.
863         (TEMPL_IDX): Handle address space numbers.
864         (gen_addr_rtx): Add address mode argument, use it instead of Pmode.
865         (addr_for_mem_ref): Add ADDRSPACE argument.  Use per-address-space
866         instead of global cache.  Update call to gen_addr_rtx.
867         (valid_mem_ref_p): Update call to addr_for_mem_ref.
868         * expr.c (expand_expr_real_1): Update call to addr_for_mem_ref.
869
870         * rtl.h (convert_memory_address_addr_space): Add prototype.
871         (convert_memory_address): Define as macro.
872         * explow.c (convert_memory_address): Rename to ...
873         (convert_memory_address_addr_space): ... this.  Add ADDRSPACE argument.
874         Use appropriate pointer and address modes instead of ptr_mode / Pmode.
875         Update recursive calls.
876         (memory_address_addr_space): Call convert_memory_address_addr_space.
877         * expmed.c (make_tree): Likewise.
878         * expr.c (expand_assignment): Likewise.
879         (expand_expr_addr_expr_1): Likewise.  Also, add ADDRSPACE argument.
880         (expand_expr_addr_expr): Likewise.  Also, update call.
881
882         * alias.c (find_base_value): Guard pointer size optimizations.
883         (find_base_term): Likewise.
884         * rtlanal.c (nonzero_bits1): Likewise.
885         (num_sign_bit_copies1): Likewise.
886         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
887
888         * Makefile.in (tree-ssa-address.o): Add $(TARGET_H) dependency.
889         (emit-rtl.o): Likewise.
890         (auto-inc-dec.o): Likewise.
891         (sched-deps.o): Likewise.
892
893 2009-10-26  Ben Elliston  <bje@au.ibm.com>
894             Michael Meissner  <meissner@linux.vnet.ibm.com>
895             Ulrich Weigand  <uweigand@de.ibm.com>
896
897         * doc/extend.texi (Named Address Spaces): New section.
898         * coretypes.h (addr_space_t): New type.
899         (ADDR_SPACE_GENERIC): New define.
900         (ADDR_SPACE_GENERIC_P): New macro.
901
902         * doc/tm.texi (Named Address Spaces): New section.
903         (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Document.
904         (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Document.
905         (TARGET_ADDR_SPACE_SUBSET_P): Document.
906         (TARGET_ADDR_SPACE_CONVERT): Document.
907         * target.h (struct gcc_target): Add addr_space substructure.
908         * target-def.h (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Define.
909         (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Likewise.
910         (TARGET_ADDR_SPACE_SUBSET_P): Likewise.
911         (TARGET_ADDR_SPACE_CONVERT): Likewise.
912         (TARGET_ADDR_SPACE_HOOKS): Likewise.
913         (TARGET_INITIALIZER): Initialize addr_space hooks.
914         * targhooks.c (default_addr_space_legitimate_address_p): New function.
915         (default_addr_space_legitimize_address): Likewise.
916         (default_addr_space_subset_p): Likewise.
917         (default_addr_space_convert): Likewise.
918         * targhooks.h (default_addr_space_legitimate_address_p): Add prototype.
919         (default_addr_space_legitimize_address): Likewise.
920         (default_addr_space_subset_p): Likewise.
921         (default_addr_space_convert): Likewise.
922
923         * doc/rtl.texi (MEM_ADDR_SPACE): Document.
924         * rtl.h (mem_attrs): Add ADDRSPACE memory attribute.
925         (MEM_ADDR_SPACE): New macro.
926         * emit-rtl.c (get_mem_attrs): Add ADDRSPACE argument and set
927         address space memory attribute.
928         (mem_attrs_htab_hash): Handle address space memory attribute.
929         (mem_attrs_htab_eq): Likewise.
930         (set_mem_attributes_minus_bitpos): Likewise.
931         (set_mem_alias_set): Likewise.
932         (set_mem_align): Likewise.
933         (set_mem_expr): Likewise.
934         (set_mem_offset): Likewise.
935         (set_mem_size): Likewise.
936         (adjust_address_1): Likewise.
937         (offset_address): Likewise.
938         (widen_memoy_address): Likewise.
939         (get_spill_slot_decl): Likewise.
940         (set_mem_attrs_for_spill): Likewise.
941         (set_mem_addr_space): New function.
942         * emit-rtl.h (set_mem_addr_space): Add prototype.
943         * print-rtl.c (print_rtx): Print address space memory attribute.
944         * expr.c (expand_assignment): Set address space memory attribute
945         of generated MEM RTXes as appropriate.
946         (expand_expr_real_1): Likewise.
947         * cfgexpand.c (expand_debug_expr): Likewise.
948         * tree-ssa-loop-ivopts.c (produce_memory_decl_rtl): Likewise.
949
950         * tree.h (struct tree_base): Add address_space bitfield.  Reduce
951         size of "spare" bitfield.
952         (TYPE_ADDR_SPACE): New macro.
953         (ENCODE_QUAL_ADDR_SPACE): Likewise.
954         (DECODE_QUAL_ADDR_SPACE): Likewise.
955         (CLEAR_QUAL_ADDR_SPACE): Likewise.
956         (KEEP_QUAL_ADDR_SPACE): Likewise.
957         (TYPE_QUALS): Encode type address space.
958         (TYPE_QUALS_NO_ADDR_SPACE): New macro.
959         * tree.c (set_type_quals): Set type address space.
960         (build_array_type): Inherit array address space from element type.
961         * print-tree.c (print_node_brief): Print type address space.
962         (print_node): Likewise.
963         * tree-pretty-print.c (dump_generic_node): Likewise.
964
965         * explow.c (memory_address): Rename to ...
966         (memory_address_addr_space): ... this.  Add ADDRSPACE argument.
967         Use address-space aware variants of memory address routines.
968         * recog.c (memory_address_p): Rename to ...
969         (memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
970         Use address-space aware variants of memory address routines.
971         (offsettable_address_p): Rename to ...
972         (offsettable_address_addr_space_p): ... this.  Add ADDRSPACE argument.
973         Use address-space aware variants of memory address routines.
974         * reload.c (strict_memory_address_p): Rename to ...
975         (strict_memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
976         Use address-space aware variants of memory address routines.
977         (maybe_memory_address_p): Rename to ...
978         (maybe_memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
979         Use address-space aware variants of memory address routines.
980         * expr.h (memory_address_addr_space): Add prototype.
981         (memory_address): Define as macro.
982         * recog.h (memory_address_addr_space_p): Add prototype.
983         (memory_address_p): Define as macro.
984         (offsettable_address_addr_space_p): Add prototype.
985         (offsettable_address_p): Define as macro.
986         (strict_memory_address_addr_space_p): Add prototype.
987         (strict_memory_address_p): Define as macro.
988
989         * combine.c (find_split_point): Use address-space aware variants
990         of memory address routines.
991         * emit-rtl.c (operand_subword): Likewise.
992         (change_address_1): Likewise.
993         (adjust_address_1): Likewise.
994         (offset_address): Likewise.
995         * expr.c (emit_move_insn): Likewise.
996         (expand_assignment): Likewise.
997         (expand_expr_real_1): Likewise.
998         * recog.c (verify_changes): Likewise.
999         (general_operand): Likewise.
1000         (offsettable_memref_p): Likewise.
1001         (offsettable_nonstrict_memref_p): Likewise.
1002         (constrain_operands): Likewise.
1003         * reload.c (get_secondary_mem): Likewise.
1004         (find_reloads_toplev): Likewise.
1005         (find_reloads_address): Likewise.
1006         (find_reloads_subreg_address): Likewise.
1007         * reload1.c (reload): Likewise.
1008         * rtlhooks.c (gen_lowpart_if_possible): Likewise.
1009         * rtl.h (address_cost): Add ADDRSPACE argument.
1010         * rtlanal.c (address_cost): Add ADDRSPACE argument.  Use address-space
1011         aware variant of memory address routines.
1012         * loop-invariant.c (create_new_invariant): Update address_cost call.
1013         * tree-ssa-loop-ivopts.c (computation_cost): Likewise.
1014         * fwprop.c (should_replace_address): Add ADDRSPACE argument.
1015         Use address-space aware variant of memory address routines.
1016         (propagate_rtx_1): Update call to should_replace_address.
1017         * tree-flow.h (multiplier_allowed_in_address_p): Add ADDRSPACE
1018         argument.
1019         * tree-ssa-loop-ivopts.c (multiplier_allowed_in_address_p): Add
1020         ADDRSPACE argument.  Use per-address-space instead of global cache.
1021         Use address-space aware variant of memory address routines.
1022         (get_address_cost): Likewise.
1023         (get_computation_cost_at): Update calls.
1024         * tree-ssa-address.c (valid_mem_ref_p): Add ADDRSPACE argument.
1025         Use address-space aware variant of memory address routines.
1026         (create_mem_ref_raw): Update call to valid_mem_ref_p.
1027         (most_expensive_mult_to_index): Update call to
1028         multiplier_allowed_in_address_p.
1029
1030         * dwarf2out.c (modified_type_die): Output DW_AT_address_class
1031         attribute to indicate named address spaces.
1032
1033         * varasm.c (get_variable_section): DECLs in named address spaces
1034         cannot be "common".
1035
1036         * reload.c (find_reloads_address): Do not use LEGITIMIZE_RELOAD_ADDRESS
1037         for addresses in a non-generic address space.
1038
1039         * expr.c (emit_block_move_hints): Do not use libcalls for
1040         memory in non-generic address spaces.
1041         (clear_storage_hints): Likewise.
1042         (expand_assignment): Likewise.
1043
1044         * fold-const.c (operand_equal_p): Expressions refering to different
1045         address spaces are not equivalent.
1046
1047         * rtl.c (rtx_equal_p_cb): MEMs refering to different address
1048         spaces are not equivalent.
1049         (rtx_equal_p): Likewise.
1050         * cse.c (exp_equiv_p): Likewise.
1051         * jump.c (rtx_renumbered_equal_p): Likewise.
1052         * reload.c (operands_match_p): Likewise.
1053
1054         * alias.c (nonoverlapping_memrefs_p): MEMs refering to different
1055         address spaces may alias.
1056         (true_dependence): Likewise.
1057         (canon_true_dependence): Likewise.
1058         (write_dependence_p): Likewise.
1059
1060         * dse.c (canon_address): Handle named address spaces.
1061         * ifcvt.c (noce_try_cmove_arith): Likewise.
1062
1063         * tree.def (ADDR_SPACE_CONVERT_EXPR): New tree code.
1064         * expr.c (expand_expr_real_2): Expand ADDR_SPACE_CONVERT_EXPR.
1065         * convert.c (convert_to_pointer): Generate ADDR_SPACE_CONVERT_EXPR
1066         to handle conversions between different address spaces.
1067         * fold-const.c (fold_convert_loc): Likewise.
1068         (fold_unary_loc): Handle ADDR_SPACE_CONVERT_EXPR.
1069         * tree-pretty-print.c (dump_generic_node): Likewise.
1070         * gimple-pretty-print.c (dump_unary_rhs): Likewise.
1071         * tree-cfg.c (verify_gimple_assign_unary): Likewise.
1072         * tree-inline.c (estimate_operator_cost): Likewise.
1073         * tree-ssa.c (useless_type_conversion_p): Conversions between pointers
1074         to different address spaces are not useless.
1075
1076 2009-10-26  Jakub Jelinek  <jakub@redhat.com>
1077
1078         PR bootstrap/41345
1079         * cfgcleanup.c (trivially_empty_bb_p): New function.
1080         (try_optimize_bb): Use it instead of checking BB_HEAD == BB_END.
1081
1082         PR debug/41828
1083         * dwarf2out.c (add_pubname, add_pubtype, generic_parameter_die,
1084         add_name_and_src_coords_attributes, gen_namespace_die,
1085         dwarf2out_set_name): Handle dwarf2_name returning NULL.
1086
1087 2009-10-26  Nick Clifton  <nickc@redhat.com>
1088
1089         * config.gcc: Add support for RX target.
1090         * config/rx: New directory.
1091         * config/rx/constraints.md: New file.
1092         * config/rx/predicates.md: New file.
1093         * config/rx/rx.c: New file.
1094         * config/rx/rx.h: New file.
1095         * config/rx/rx.md: New file.
1096         * config/rx/rx.opt: New file.
1097         * config/rx/rx-protos.h: New file.
1098         * config/rx/t-rx: New file.
1099         * doc/extend.texi: Document RX function attributes.
1100         * doc/invoke.texi: Document RX specific command line options.
1101         * doc/contrib.texi: Document RX contribution.
1102         * doc/md.texi: Document RX constraints.
1103         * doc/install.texi: Document RX support.
1104
1105 2009-10-26  Michael Matz  <matz@suse.de>
1106
1107         PR tree-optimization/41783
1108         * tree-ssa-alias.c (get_continuation_for_phi): Export, add a special
1109         case for simple diamonds.
1110         * tree-ssa-alias.h (get_continuation_for_phi): Declare.
1111         * tree-ssa-pre.c (translate_vuse_through_block): Add same_valid
1112         argument, use alias oracle to skip some vdefs.
1113         (phi_translate_1): Change call to above, don't allocate new
1114         value ids if they can stay the same.
1115         (compute_avail): Allow vuse walking when looking up references.
1116
1117 2009-10-26  Richard Guenther  <rguenther@suse.de>
1118
1119         PR tree-optimization/41826
1120         * tree-ssa-structalias.c (get_constraint_for_ptr_offset): Avoid
1121         access to re-allocated vector fields.
1122
1123 2009-10-26  Richard Guenther  <rguenther@suse.de>
1124
1125         * graphite-sese-to-poly.c (check_poly_representation): Fix
1126         compile without checking.
1127
1128 2009-10-26  Janus Weil  <janus@gcc.gnu.org>
1129
1130         PR fortran/41714
1131         * gimple.h (tree_annotate_all_with_location): Remove prototype.
1132         * gimplify.c (tree_should_carry_location_p,
1133         tree_annotate_one_with_location,tree_annotate_all_with_location):
1134         Remove obsolete functions.
1135
1136 2009-10-25  Kaz Kojima  <kkojima@gcc.gnu.org>
1137
1138         PR target/41813
1139         * config/sh/sh.md (stuff_delay_slot): Don't set T_REG in pattern.
1140
1141 2009-10-25  Richard Guenther  <rguenther@suse.de>
1142
1143         * lto-streamer-in.c (unpack_ts_decl_common_value_fields):
1144         Stream DECL_RESTRICTED_P.
1145         * lto-streamer-out.c (pack_ts_decl_common_value_fields): Likewise.
1146
1147 2009-10-25  Richard Sandiford  <rdsandiford@googlemail.com>
1148
1149         * config/mips/mips.c (mips_restore_gp_from_cprestore_slot): Emit
1150         a note when expanding to nothing.
1151
1152 2009-10-25  Richard Guenther  <rguenther@suse.de>
1153
1154         PR middle-end/41814
1155         * tree.c (find_decls_types_r): Deal with Java overloading
1156         BINFO_VIRTUALS for its own purpose.
1157
1158 2009-10-24  Adam Nemet  <anemet@caviumnetworks.com>
1159
1160         * config/mips/predicates.md (hilo_operand): New predicate.
1161         * config/mips/mips.md (<u>mulsidi3_64bit): Change it to a
1162         define_insn.  Correct !ISA_HAS_EXT_INS length from 24 to 28.  Move
1163         splitter part from here ...:
1164         (<u>mulsidi3_64bit splitter for !ISA_HAS_EXT_INS): ... to here.  Swap
1165         op0 and op4 to match the DINS case.
1166         (<u>mulsidi3_64bit splitter for ISA_HAS_EXT_INS): New splitter.
1167
1168 2009-10-24  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
1169
1170         PR middle-end/19154
1171         * avr.md (QIDI): Add new mode iterator.
1172         (sbrx_branch<mode>): Create new zero extract bit, test and jump
1173         patterns for all QI thru DI modes combinations.
1174         (sbrx_and_branch<mode>): Create new and based bit test and jump
1175         patterns for QI thru SI modes.
1176         avr.c (avr_out_sbxx_branch): Use only bit number.
1177
1178 2009-10-24  Jan Hubicka  <jh@suse.cz>
1179
1180         * ipa-reference.c (check_call): Noreturn notrhow calls do not write
1181         to memory.
1182         (analyze_function): When analyzing noreturn nothrow call, do not
1183         compute written stats; free bitmaps of vars early if possible.
1184         (generate_summary): Only update bitmaps if computed.
1185         (propagate): Only dump bitmaps if computed.
1186         (ipa_reference_read_summary): Fix pasto.
1187
1188 2009-10-24  Eric Botcazou  <ebotcazou@adacore.com>
1189
1190         * tree-ssa-alias.c (nonaliasing_component_refs_p): Rename into...
1191         (aliasing_component_refs_p): ...this.  Return true if there is no
1192         common base and the base access types have the same alias set.
1193         (indirect_ref_may_alias_decl_p): Adjust for above renaming.
1194         (indirect_refs_may_alias_p): Likewise.
1195
1196 2009-10-23  Joseph Myers  <joseph@codesourcery.com>
1197
1198         PR c/40033
1199         * c-typeck.c (c_finish_stmt_expr): Do not wrap error_mark_node in
1200         a C_MAYBE_CONST_EXPR.
1201
1202 2009-10-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
1203
1204         PR target/41787
1205         * config/rs6000/rs6000.c (struct machine_function): Add
1206         vsx_or_altivec_used_p to record if vector types are used.
1207         (rs6000_expand_to_rtl_hook): Rename from
1208         rs6000_alloc_sdmode_stack_slot.  If VSX, check to see if there are
1209         any vector operations, so if there are, we can set VRSAVE to
1210         non-zero when only floating point vector registers are used.
1211         (TARGET_EXPAND_TO_RTL_HOOK): Use rs6000_expand_to_rtl_hook.
1212         (rs6000_check_vector_mode): Inner function to check if vector
1213         types are used in the code.
1214         (compute_vrsave_mask): If VSX, make sure VRSAVE is non-zero if
1215         vector instructions are used.
1216
1217         * config/rs6000/rs6000.h (HARD_REGNO_CALL_PART_CLOBBERED):
1218         Indicate that VSX registers which overlap floating point
1219         registers, can't be used across a call, since the ABI only states
1220         the scalar part of the register will be saved and restored.
1221
1222 2009-10-23  Joseph Myers  <joseph@codesourcery.com>
1223
1224         PR c/41673
1225         * alias.c (get_alias_set): Call langhook before returning 0 for
1226         types with structural equality.
1227         * c-common.c (c_common_get_alias_set): Use alias set of element
1228         type for arrays with structural comparison.
1229
1230 2009-10-23  Richard Guenther  <rguenther@suse.de>
1231
1232         PR middle-end/41805
1233         * cfgexpand.c (expand_call_stmt): Use gimple_has_side_effects and
1234         gimple_call_nothrow_p.
1235
1236 2009-10-23  Richard Guenther  <rguenther@suse.de>
1237
1238         PR tree-optimization/41778
1239         * tree-ssa-pre.c (do_regular_insertion): Only insert if a
1240         redundancy along a path in the CFG we want to optimize for speed
1241         is going to be removed.
1242         (execute_pre): Do partial-PRE only if the function is to be
1243         optimized for speed.
1244         (gate_pre): Do not turn off all of PRE when not optimizing a
1245         function for speed.
1246
1247 2009-10-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1248
1249         * builtins.c (fold_builtin_cabs): Use validate_arg().
1250         (fold_builtin_cexp): Fix if-logic.
1251         (fold_builtin_1): Check subtype for BUILT_IN_CIMAG.
1252
1253 2009-10-22  Jeff Law  <law@redhat.com>
1254
1255         * ira-lives.c (process_single_reg_class_operands): Update the
1256         hard reg costs for all the hard registers desired by the
1257         single reg class operand.
1258
1259 2009-10-22  Richard Sandiford  <rdsandiford@googlemail.com>
1260
1261         * simplify-rtx.c (simplify_replace_fn_rtx): Add a fallback case
1262         for rtxes that aren't handled specially.
1263
1264 2009-10-22  Richard Sandiford  <rdsandiford@googlemail.com>
1265
1266         * rtl.h (shallow_copy_rtvec): Declare.
1267         * rtl.c (shallow_copy_rtvec): New function.
1268         * cselib.c (cselib_subst_to_values): Use it.  Only modify an
1269         rtx field if the subrtx has changed.
1270
1271 2009-10-22  Anatoly Sokolov  <aesok@post.ru>
1272
1273         * config/m32c/m32c.c (m32c_function_value_regno_p): New function.
1274         (m32c_function_value): Make static, add new 'outgoing' argument.
1275         (m32c_libcall_value): Make static, add new 'fun' argument.
1276         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
1277         * config/m32c/m32c.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
1278         (FUNCTION_VALUE_REGNO_P): Redefine, use m32c_function_value_regno_p.
1279         * config/m32c/m32c-protos.h (m32c_function_value_regno_p): Declare.
1280         (m32c_function_value, m32c_libcall_value): Delete declaration.
1281
1282 2009-10-22  Diego Novillo  <dnovillo@google.com>
1283
1284         * Makefile.in (PLUGIN_HEADERS): Add output.h and IPA_UTILS_H.
1285
1286 2009-10-22  Razya Ladelsky  <razya@il.ibm.com>
1287
1288         * tree-cfg.c (gimple_duplicate_sese_tail): Fix typos/indentation/white
1289         space.
1290
1291 2009-10-22  Richard Guenther  <rguenther@suse.de>
1292
1293         * lto-streamer.h (lto_symtab_merge_cgraph_nodes): Declare.
1294         * lto-symtab.c (struct lto_symtab_entry_def): Add node member.
1295         (lto_symtab_merge): Do not merge cgraph nodes here.
1296         (lto_symtab_resolve_can_prevail_p): Simplify.
1297         (lto_symtab_resolve_symbols): Store cgraph node.
1298         (lto_symtab_merge_decls_1): Simplify.  Do not drop non-prevailing
1299         functions from the symtab.
1300         (lto_symtab_merge_cgraph_nodes_1): New function.
1301         (lto_symtab_merge_cgraph_nodes): Likewise.
1302
1303 2009-10-22  Richard Guenther  <rguenther@suse.de>
1304
1305         PR lto/41791
1306         * lto-streamer-out.c (lto_output_location): Stream the
1307         system header flag.
1308         * lto-streamer-in.c (lto_input_location): Likewise.
1309
1310 2009-10-22  Razya Ladelsky  <razya@il.ibm.com>
1311
1312         * cfgloopmanip.c (duplicate_subloops): Export.
1313         * tree-parloops.c (loop_parallel_p): Dump if loop is innermost.
1314         (transform_to_exit_first_loop): Duplicate bbs starting from
1315         header up to loop->latch instead of exit->src.
1316         Initialize control variable to the correct number of iterations.
1317         (gather_scalar_reductions): Do not register double reductions.
1318         (parallelize_loops): Dump which loop is tested.
1319         Indicate whether the parallelized loop is inner or not.
1320         Remove the innermost-loop requirement.
1321         * cfgloop.h (duplicate_subloops): Export.
1322         * tree-cfg.c (add_phi_args_after_redirect): New function.
1323         (gimple_duplicate_sese_tail): Remove the no-subloops constraint.
1324         Call duplicate_subloops.
1325         Update number of iterations at the exit condition.
1326         Don't redirect nexits always to the loop exit.
1327         Redirect copied edges from latch to the loop exit.
1328
1329 2009-10-22  Jan Hubicka  <jh@suse.cz>
1330
1331         * ipa-cp.c (ipcp_read_summary): Remove now invalid FIXME and
1332         flag_ltrans check.
1333         * ipa-inline.c (cgraph_mark_inline_edge,
1334         cgraph_decide_inlining_of_small_function,
1335         cgraph_decide_inlining, inline_read_summary): Disable indirect
1336         inlining for WPA for time being.
1337
1338         PR tree-optimize/40556
1339         * ipa-inline.c (cgraph_early_inlining): Fix iterations condition.
1340
1341 2009-10-22  Richard Guenther  <rguenther@suse.de>
1342
1343         * lto-streamer.h (lto_symtab_clear_resolution): Remove.
1344         * lto-symtab.c (lto_symtab_clear_resolution): Likewise.
1345
1346 2009-10-22  Jan Hubicka  <jh@suse.cz>
1347
1348         PR lto/41730
1349         * ipa-reference.c (has_proper_scope_for_analysis): Add fixme about
1350         global vars.
1351         (check_call): Handle only indirect calls.
1352         (propagate_bits): Update comment.
1353         (write_node_summary_p): Turn bogus check to assert.
1354         (ipa_reference_write_summary): Stream calls_read_all properly.
1355         (ipa_reference_read_summary): Stream in calls_read_all properly.
1356         (read_write_all_from_decl): New function.
1357         (propagate): Handle OVERWRITABLE nodes and external calls here.
1358         * ipa-pre-const.c (check_call): In IPA mode handle indirect
1359         calls only.
1360         (analyze_function): Do not check visibility here.
1361         (add_new_function): We summary OVERWRITABLE too.
1362         (generate_summary): Stream OVERWRITABLE nodes too.
1363         (propagate): Handle external calls and OVERWRITABLE nodes here.
1364         (local_pure_const): Check visibility here.
1365
1366 2009-10-22  Jan Hubicka  <jh@suse.cz>
1367
1368         * ipa-cp.c (ipcp_write_summary, ipcp_read_summary): New functions.
1369         (pass_ipa_cp): Register them.
1370         (ipcp_init_stage): Analyze all functions for whopr/lto.
1371         (ipcp_propagate_stage): Skip external calls.
1372         (ipcp_iterate_stage): Call ipa_update_after_lto_read if needed.
1373         * ipa-reference.c (write_node_summary_p): Fix thinko about
1374         availability.
1375         * cgraphunit.c (ipa_passes): When in lto, ne er produce new summaries;
1376         when in ltrans, skip executing of ipa passes since everything
1377         should've been done.
1378         * ipa-inline.c (cgraph_decide_inlining): Remove FIXMEs.
1379         (inline_generate_summary): Likewise.
1380         (inline_read_summary): New function.
1381         (inline_write_summary): New function.
1382         (pass_ipa_inline): Register new hooks.
1383         * ipa-prop.c: Inlcude lto-streamer.h
1384         (ipa_edge_args_vector): Update declaration.
1385         (ipa_count_arguments, ipa_compute_jump_functions,
1386         ipa_free_edge_args_substructures): Move ipa_edge_args_vector into ggc.
1387         (ipa_write_jump_function, ipa_read_jump_function, ipa_write_node_info,
1388         ipa_read_node_info): New static functions.
1389         (ipa_prop_write_jump_functions, ipa_prop_read_jump_functions): Update.
1390         (duplicate_array): Use xmalloc.
1391         (duplicate_ggc_array): New.
1392         (ipa_edge_duplication_hook): Use it.
1393         (ipa_update_after_lto_read): New function.
1394         * ipa-prop.h (ipa_prop_write_jump_functions,
1395         ipa_prop_read_jump_functions): Declare.
1396         (ipa_pass_through_data, ipa_ancestor_jf_data, ipa_member_ptr_cst,
1397         jump_func_value, ipa_member_ptr_cst, ipa_edge_args): Add GTY markers.
1398         (ipa_edge_args_vector): Move into GGC.
1399         (ipa_check_create_edge_args): Update.
1400         (ipa_update_after_lto_read): New.
1401         * passes.c (ipa_write_summaries_1): When in wpa, do not write
1402         summaries.
1403         (ipa_read_summaries): When in ltrans, so not read summaries.
1404         * lto-streamer.c (lto_get_section_name): Add
1405         LTO_section_jump_functions.
1406         * lto-streamer.h (LTO_section_jump_functions): New section.
1407         (produce_asm): Declare.
1408         * lto-cgraph.c (output_cgraph): Output edges in reverse order.
1409         * lto-streamer-out.c (produce_asm): Export.
1410         * lto-streamer-in.c: Include tree-pass.h
1411         (input_function): Free dominance info when done.
1412         (lto_read_body): Push ipa_inline in ltrans stage.
1413         * gengtype.c (open_base_files): Add ipa-prop.h into includes.
1414         * Makefile.in (GTFILES): Add ipa-prop.h
1415
1416 2009-10-22  Matthias Klose  <doko@ubuntu.com>
1417
1418         * doc/install.texi: Document --enable-browser-plugin.
1419
1420 2009-10-21  Vladimir Makarov  <vmakarov@redhat.com>
1421
1422         * doc/invoke.texi (fira-loop-pressure): Update default value.
1423         * opts.c (decode_options): Remove default value setting for
1424         flag_ira_loop_pressure.
1425         * config/ia64/ia64.c (ia64_override_options): Set
1426         flag_ira_loop_pressure up for -O3.
1427         * config/rs6000/rs6000.c (rs6000_override_options): Ditto.
1428
1429 2009-10-21  Sebastian Pop  <sebastian.pop@amd.com>
1430
1431         PR tree-optimization/41497
1432         * tree-scalar-evolution.c (analyze_evolution_in_loop): Return
1433         chrec_dont_know if the evolution function returned by follow_ssa_edge
1434         is constant in the analyzed loop and is not compatible with the
1435         initial value before the loop.
1436         * tree-chrec.h (no_evolution_in_loop_p): Call STRIP_NOPS.
1437
1438 2009-10-21  Joseph Myers  <joseph@codesourcery.com>
1439
1440         * config/sh/sh.c (nonpic_symbol_mentioned_p): Allow UNSPEC_TPOFF.
1441
1442 2009-10-21  Jakub Jelinek  <jakub@redhat.com>
1443
1444         PR other/25507
1445         * doc/invoke.texi: Document -print-multi-os-directory.
1446
1447 2009-10-21  Jack Howarth  <howarth@bromo.med.uc.edu>
1448
1449         PR c++/41313
1450         * gcc/config/darwin10.h: Use default_emit_unwind_label.
1451         * gcc/config/darwin.c: Disable -freorder-blocks-and-partition
1452         when darwin_emit_unwind_label is used.
1453
1454 2009-10-21  Eric Botcazou  <ebotcazou@adacore.com>
1455
1456         * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Tweak
1457         order of checks.
1458
1459 2009-10-20  Richard Henderson  <rth@redhat.com>
1460
1461         * tree-eh.c (lower_try_finally_copy): Do lower_eh_constructs_1
1462         before emit_post_landing_pad.
1463
1464 2009-10-20  Adam Nemet  <anemet@caviumnetworks.com>
1465
1466         * config/mips/mips.c (mips_binary_cost): Add new argument speed.
1467         Use when calling rtx_costs.
1468         (mips_rtx_costs): Fix formatting.  Use argument speed rather than the
1469         global optimize_size.  Pass speed to mips_binary_cost.
1470
1471 2009-10-20  Jakub Jelinek  <jakub@redhat.com>
1472
1473         * config/rs6000/rs6000.c (def_builtin): Set TREE_READONLY instead
1474         of TREE_CONSTANT.
1475
1476 2009-10-20  Richard Sandiford  <rdsandiford@googlemail.com>
1477
1478         * rtl.h (simplify_replace_fn_rtx): Declare.
1479         (wrap_constant, unwrap_constant): Delete.
1480         * cfgexpand.c (unwrap_constant, wrap_constant): Delete.
1481         (expand_debug_expr): Don't call wrap_constant.
1482         * combine.c (rtx_subst_pair): Only define for AUTO_INC_DEC.
1483         (auto_adjust_pair): Fold into...
1484         (propagate_for_debug_subst): ...here.  Only define for AUTO_INC_DEC.
1485         Just return a new value.
1486         (propagate_for_debug): Use simplify_replace_fn_rtx for AUTO_INC_DEC,
1487         otherwise use simplify_replace_rtx.
1488         * cselib.c (wrap_constant): Reinstate old definition.
1489         (cselib_expand_value_rtx_1): Don't wrap constants.
1490         * gcse.c (try_replace_reg): Don't use copy_rtx in the call to
1491         simplify_replace_rtx.
1492         (bypass_block): Fix formatting in calls to simplify_replace_rtx.
1493         * reload1.c (reload): Skip all uses for an insn before adjusting it.
1494         Use simplify_replace_rtx.
1495         * simplify-rtx.c (simplify_replace_fn_rtx): New function,
1496         adapted from...
1497         (simplify_replace_rtx): ...here.  Turn into a wrapper for
1498         simplify_replace_fn_rtx.
1499         (simplify_unary_operation): Don't unwrap CONSTs.
1500         * var-tracking.c (check_wrap_constant): Delete.
1501         (vt_expand_loc_callback): Don't call it.
1502         (vt_expand_loc): Likewise.
1503
1504 2009-10-20  Pascal Obry  <obry@adacore.com>
1505             Eric Botcazou  <ebotcazou@adacore.com>
1506
1507         * config/i386/cygming.h (DWARF_FRAME_REGNUM): Add enclosing parens.
1508
1509 2009-10-20  Michael Matz  <matz@suse.de>
1510
1511         * loop-invariant.c (create_new_invariant): Use different magic number.
1512
1513 2009-10-20  Richard Earnshaw  <rearnsha@arm.com>
1514
1515         PR target/39247
1516         * arm.c (arm_override_options): Forcibly disable hot/cold block
1517         partitioning.
1518
1519 2009-10-20  Alexandre Oliva  <aoliva@redhat.com>
1520
1521         PR debug/41739
1522         * haifa-sched.c (try_ready): Skip debug deps updating speculation
1523         status.
1524
1525 2009-10-20  Richard Guenther  <rguenther@suse.de>
1526
1527         * ggc-page.c: Include cfgloop.h.
1528         (struct max_alignment): Drop long double, add void *.
1529         (extra_order_size_table): Add low non-power-of-two multiples
1530         of MAX_ALIGNMENT.  Drop small type-based entries, add
1531         tree_type, cgraph_node and loop.
1532         * alloc-pool.c (struct allocation_object_def): Drop long double
1533         aligning element.
1534
1535 2009-10-20  Jakub Jelinek  <jakub@redhat.com>
1536
1537         PR debug/41340
1538         * loop-invariant.c (calculate_loop_reg_pressure): Don't count regs
1539         referenced just in DEBUG_INSNs.
1540
1541 2009-10-20  Richard Guenther  <rguenther@suse.de>
1542
1543         PR lto/41761
1544         * gimple.c (gimple_register_type): Make sure we register
1545         the types main variant first.
1546
1547 2009-10-20  Richard Guenther  <rguenther@suse.de>
1548
1549         * gimple.c (gimple_types_compatible_p): Simplify.  Move
1550         cheap checks before hashtable queries.  Add checks for
1551         TYPE_NONALIASED_COMPONENT and DECL_NONADDRESSABLE_P.
1552
1553 2009-10-20  Eric Botcazou  <ebotcazou@adacore.com>
1554
1555         * tree-sra.c (build_ref_for_offset_1) <RECORD_TYPE>: Skip fields
1556         without size or with size that can't be represented as a host integer.
1557
1558 2009-10-20  Alexandre Oliva  <aoliva@redhat.com>
1559
1560         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Don't regard
1561         the removal of a debug stmt as a significant change.
1562
1563 2009-10-20  Wolfgang Gellerich  <gellerich@de.ibm.com>
1564
1565         * config/s390/s390.md: Added agen condition to operand
1566         forwarding bypasses.  Added bypass for early address generation
1567         use of int results.  Updated comments.
1568
1569 2009-10-20  Stefan Dösinger  <stefan@codeweavers.com>
1570
1571         * config/i386/i386.c: Remove signal.h #include.
1572
1573 2009-10-20  Jie Zhang  <jie.zhang@analog.com>
1574
1575         * simplify-rtx.c (simplify_const_unary_operation): Handle SS_ABS.
1576         * doc/rtl.texi: Document ss_abs.
1577
1578 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
1579
1580         * c-common.c (c_parse_error): Handle CPP_UTF8STRING.
1581         * c-lex.c (c_lex_with_flags): Likewise.  Test C_LEX_STRING_NO_JOIN
1582         instead of C_LEX_RAW_STRINGS.
1583         (lex_string): Handle CPP_UTF8STRING.
1584         * c-parser.c (c_parser_postfix_expression): Likewise.
1585         * c-pragma.h (C_LEX_RAW_STRINGS): Rename to ...
1586         (C_LEX_STRING_NO_JOIN): ... this.
1587
1588 2009-10-19  Anatoly Sokolov  <aesok@post.ru>
1589
1590         * config/cris/cris.c (cris_function_value, cris_libcall_value,
1591         cris_function_value_regno_p): New functions.
1592         (cris_promote_function_mode): Update comment.
1593         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
1594         * config/cris/cris.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
1595         (FUNCTION_VALUE_REGNO_P): Redefine, use cris_function_value_regno_p.
1596         * config/cris/cris-protos.h (cris_function_value_regno_p): Declare.
1597
1598 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
1599
1600         * unwind-dw2.c (execute_stack_op): Fix operand order for
1601         DW_OP_le, DW_OP_ge, DW_OP_lt and DW_OP_gt.
1602
1603 2009-10-19  Eric Botcazou  <ebotcazou@adacore.com>
1604
1605         * gimple-low.c (struct lower_data): Add cannot_fallthru field.
1606         (lower_stmt) <GIMPLE_BIND>: Add comment.
1607         <GIMPLE_COND, GIMPLE_GOTO, GIMPLE_SWITCH>: Set cannot_fallthru to true
1608         and return.
1609         <GIMPLE_RETURN>: Remove the statement if cannot_fallthru is set.
1610         Otherwise lower it and set cannot_fallthru to true.
1611         <GIMPLE_TRY>: Update cannot_fallthru for GIMPLE_TRY_FINALLY and return.
1612         <GIMPLE_CATCH, GIMPLE_EH_FILTER>: Set cannot_fallthru to false.
1613         <GIMPLE_CALL>: Set cannot_fallthru to false for BUILT_IN_SETJMP and
1614         to true for a noreturn call.  Do not remove statements.
1615         <GIMPLE_OMP_PARALLEL, GIMPLE_OMP_TASK>: Set cannot_fallthru to false.
1616         Set cannot_fallthru to false on function exit.
1617         (gimple_stmt_may_fallthru) <GIMPLE_SWITCH>: Really return false.
1618         <GIMPLE_ASSIGN>: Remove.
1619
1620 2009-10-19  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
1621
1622         * config/s390/s390.c (s390_z10_optimize_cmp): Don't touch FP compares.
1623
1624 2009-10-19  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
1625
1626         * config/s390/s390.c (s390_z10_optimize_cmp): Use
1627         next/prev_active_insn to skip DEBUG_INSNs as well.
1628
1629 2009-10-19  Joseph Myers  <joseph@codesourcery.com>
1630
1631         * config/arm/arm.c (output_move_neon): Use DImode in call to
1632         adjust_address.
1633
1634 2009-10-19  Matthias Klose  <doko@ubuntu.com>
1635
1636         PR target/40134
1637         * config.gcc (arm*-*-linux-*eabi): Use config/t-slibgcc-libgcc.
1638
1639 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
1640
1641         * cfgexpand.c (expand_debug_expr): Fail if bitpos < 0 for non-MEM op0.
1642
1643 2009-10-17  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
1644
1645         PR middle-end/41738
1646         * optabs.c (expand_binop): Make mode of shift count expression mode
1647         of shift count not target.
1648         Remove indent nit.
1649
1650 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
1651
1652         * tree-nested.c (convert_nonlocal_reference_stmt) <GIMPLE_COND>: New
1653         case.  Force using values to replace references within the statement.
1654         (convert_local_reference_stmt): Likewise.
1655
1656 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
1657
1658         * gimple-low.c (lower_stmt) <GIMPLE_CALL>: If the call is noreturn,
1659         remove a subsequent GOTO or RETURN statement.
1660
1661 2009-10-17  Andy Hutchinson  <hutchinsonandy@aim.com>
1662
1663         * config/avr.md (*movqi): Add zero as equally preferable constraint
1664         as general register.
1665         (*movhi): Ditto.
1666
1667 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
1668
1669         * print-tree.c (print_node): Fix string for DECL_STRUCT_FUNCTION.
1670
1671 2009-10-17  Richard Guenther  <rguenther@suse.de>
1672
1673         * lto-streamer-in.c (lto_input_location): Try to reuse previous maps.
1674
1675 2009-10-17  Richard Guenther  <rguenther@suse.de>
1676
1677         * lto-streamer-in.c (input_gimple_stmt): Fixup FIELD_DECL
1678         operands in COMPONENT_REFs.
1679
1680 2009-10-17  Anatoly Sokolov  <aesok@post.ru>
1681
1682         * targhooks.c (default_libcall_value): Don't use LIBCALL_VALUE macro
1683         if not defined. Change type of second argument to const_rtx.
1684         (default_function_value): Call gcc_unreachable if FUNCTION_VALUE
1685         macro not defined.
1686         * targhooks.h (default_libcall_value): Update prototype.
1687         * target.h (struct gcc_target): Change type of second argument of
1688         libcall_value to const_rtx.
1689         * config/arm/arm.c (arm_libcall_value): Change type of second argument
1690         to const_rtx.
1691         (arm_libcall_uses_aapcs_base): Change type of argument to const_rtx.
1692         * doc/tm.texi (TARGET_LIBCALL_VALUE):  Revise documentation.
1693
1694 2009-10-17  Jakub Jelinek  <jakub@redhat.com>
1695
1696         PR debug/40521
1697         * debug.h (struct gcc_debug_hooks): Add assembly_start hook.
1698         * cgraphunit.c (cgraph_optimize): Call it.
1699         * dwarf2out.c (dwarf2out_init): Move .cfi_sections printing into...
1700         (dwarf2out_assembly_start): ... here.  New hook.
1701         (dwarf2out_debug_hooks): Add dwarf2out_assembly_start.
1702         * debug.c (do_nothing_debug_hooks): Do nothing for assembly_start
1703         hook.
1704         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Likewise.
1705         * sdbout.c (sdb_debug_hooks): Likewise.
1706         * vmsdbgout.c (vmsdbg_debug_hooks): Add vmsdbgout_assembly_start.
1707         (vmsdbgout_assembly_start): New hook.
1708
1709 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
1710
1711         * rtl.h (RTL_LOCATION): Fix typo.
1712
1713 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
1714
1715         * print-rtl.c (print_rtx): Print locators in asm_operands
1716         and asm_input.
1717
1718 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
1719
1720         PR debug/41535
1721         * sched-deps.c (depl_on_debug_p): New.
1722         (attach_dep_link): Reject debug deps before nondebug deps.
1723         (add_to_deps_list): Insert debug deps after nondebug deps.
1724         (sd_lists_empty_p): Stop at first nonempty list.  Disregard debug
1725         deps.
1726         (sd_add_dep): Do not reject debug deps.
1727         (add_insn_mem_dependence): Don't count debug deps.
1728         (remove_from_deps): Likewise.
1729         (sched_analyze_2): Set up mem deps on debug insns.
1730         (sched_analyze_insn): Record reg uses for deps on debug insns.
1731         * haifa-sched.c (schedule_insn): Reset deferred debug insn.  Don't
1732         try_ready nondebug insn after debug insn.
1733         * ddg.c (create_ddg_dep_from_intra_loop_link,
1734         create_ddg_dep_no_link): Don't reject debug deps.
1735
1736 2009-10-16  Richard Guenther  <rguenther@suse.de>
1737
1738         * lto-symtab.c (merge_incomplete_and_complete_type): Remove.
1739         (maybe_merge_incomplete_and_complete_type): Likewise.
1740         (lto_symtab_merge): Do not call them.  Do not warn for
1741         complete vs. incomplete compatible types.
1742         (lto_symtab_merge_decls_2): Simplify.
1743         * gimple.c (gimple_force_type_merge): Remove.
1744         (gimple_types_compatible_p): Make it static.
1745         * gimple.h (gimple_force_type_merge): Remove.
1746         (gimple_types_compatible_p): Likewise.
1747
1748 2009-10-16  Jakub Jelinek  <jakub@redhat.com>
1749
1750         * dwarf2out.c (mem_loc_descriptor) <case ZERO_EXTRACT>: Cast
1751         DWARF2_ADDR_SIZE to int to avoid signed vs. unsigned warnings.
1752
1753 2009-10-16  Richard Guenther  <rguenther@suse.de>
1754
1755         PR tree-optimization/41728
1756         * tree-ssa-dom.c (optimize_stmt): Mark the stmt modified
1757         if fold_stmt did anything.
1758
1759 2009-10-16  Richard Guenther  <rguenther@suse.de>
1760
1761         PR lto/41715
1762         * lto-streamer-in.c (lto_input_tree_ref): Revert last change.
1763         (maybe_fixup_handled_component): New function.
1764         (input_gimple_stmt): Fixup mismatched decl replacements.
1765
1766 2009-10-16  Richard Guenther  <rguenther@suse.de>
1767
1768         PR lto/41713
1769         * lto-streamer-out.c (lto_output_tree_ref): Handle DEBUG_EXPR_DECL
1770         the same as VAR_DECL.
1771
1772 2009-10-16  Richard Guenther  <rguenther@suse.de>
1773
1774         * gimple.c (iterative_hash_gimple_type): For integer types
1775         also hash their minimum and maximum values and the string flag.
1776         For array types hash their domain and the string flag.
1777
1778 2009-10-16  Richard Guenther  <rguenther@suse.de>
1779
1780         * gimple.c (gimple_types_compatible_p): Restrict completing
1781         types to record or unions.  Simplify completion.
1782         Do not merge records or unions with different
1783         TYPE_STRUCTURAL_EQUALITY_P tag.
1784         (iterative_hash_gimple_type): Restrict non-recursing into
1785         pointer targets for records and unions.
1786
1787 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
1788
1789         PR debug/41717
1790         * cfgexpand.c (expand_debug_expr): Handle CONJ_EXPR.
1791         * dwarf2out.c (mem_loc_descriptor): Don't handle
1792         POST_INT/POST_DEC/POST_MODIFY like SUBREG.  For SUBREG
1793         punt if it is not lowpart subreg or if inner mode isn't
1794         MODE_INT.
1795
1796 2009-10-16  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
1797
1798         * config/s390/s390.c (s390_z10_optimize_cmp): Skip notes when
1799         investigating previous or next insns.
1800
1801 2009-10-16  Eric Botcazou  <ebotcazou@adacore.com>
1802
1803         * tree-sra.c (build_ref_for_offset_1): Update comment.
1804
1805 2009-10-16  Wolfgang Gellerich  <gellerich@de.ibm.com>
1806
1807         * config/s390/s390.md (atype): Added missing values.
1808
1809 2009-10-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1810
1811         PR target/41702
1812         * pa.md (casesi): Use sign extended index in call to gen_casesi64p.
1813         (casesi64p): Update pattern to reflect above.
1814
1815 2009-10-15  Steve Ellcey  <sje@cup.hp.com>
1816
1817         PR rtl-optimization/41697
1818         * sel-sched-ir.h (_eligible_successor_edge_p): Check successor count.
1819
1820 2009-10-15  Michael Meissner  <meissner@linux.vnet.ibm.com>
1821
1822         PR target/23983
1823         * config/rs6000/predicates.md: Update copyright year.
1824         * config/rs6000/altivec.md: Ditto.
1825
1826         * config/rs6000/t-rs6000 (TM_H): Add rs6000-builtin.def.
1827         (MD_INCLUDES): Add a2.md.
1828
1829         * config/rs6000/rs6000.c (rs6000_builtin_decls): Change
1830         RS6000_BUILTIN_COUNT to MAX_RS6000_BUILTINS.
1831         (builtin_classify): New static vector to classify various builtins
1832         to get the tree attributes correct.
1833         (def_builtin): Set the attributes of builtins based on what the
1834         builtin does (i.e. memory operation, floating point, saturation
1835         need special attributes, others are pure functions).
1836
1837         * config/rs6000/rs6000.h (enum rs6000_btc): New enum to classify
1838         the builtins.
1839         (enum rs6000_builtins): Include rs6000-builtin.def to define the
1840         builtins.  Change the end marker to MAX_RS6000_BUILTINS from
1841         RS6000_BUILTIN_COUNT.
1842         (rs6000_builtin_decls): Change RS6000_BUILTIN_COUNT to
1843         MAX_RS6000_BUILTINS.
1844
1845         * config/rs6000/rs6000-builtin.def: New file that combines the
1846         builtin enumeration name and attributes.
1847
1848 2009-10-15  H.J. Lu  <hongjiu.lu@intel.com>
1849
1850         * config/i386/linux.h (ASM_SPEC): Add --32.
1851
1852 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
1853
1854         * dwarf2out.c (dwarf_tag_name): Handle DW_TAG_rvalue_reference_type
1855         and DW_TAG_template_alias.
1856         (dwarf_attr_name): Handle DW_AT_main_subprogram,
1857         DW_AT_data_bit_offset, DW_AT_const_expr, DW_AT_enum_class,
1858         DW_AT_linkage_name, DW_AT_GNU_guarded_by, DW_AT_GNU_pt_guarded_by,
1859         DW_AT_GNU_guarded, DW_AT_GNU_pt_guarded, DW_AT_GNU_locks_excluded,
1860         DW_AT_GNU_exclusive_locks_required, DW_AT_GNU_shared_locks_required
1861         and DW_AT_GNU_odr_signature.
1862         (dwarf_form_name): Handle DW_FORM_sec_offset, DW_FORM_exprloc,
1863         DW_FORM_flag_present and DW_FORM_ref_sig8.
1864         (output_signature): Only print name on the first byte.
1865         (output_die): Likewise for dw_val_class_data8.
1866
1867 2009-10-15  Alexander Monakov  <amonakov@ispras.ru>
1868
1869         * doc/invoke.texi: Clarify that most optimizations are not enabled
1870         without -O.
1871
1872 2009-10-15  Richard Guenther  <rguenther@suse.de>
1873
1874         PR lto/41668
1875         * gimple.c (compare_type_names_p): Handle anonymous names
1876         differently based on new mode argument.
1877         (gimple_types_compatible_p): For structs also compare the tags.
1878         (iterative_hash_type_name): Rename to ...
1879         (iterative_hash_name): ... this.  Hash all names.
1880         (iterative_hash_gimple_type): Fix hashing the struct tag of
1881         pointer targets.  Hash field decl names.
1882
1883 2009-10-15  Richard Guenther  <rguenther@suse.de>
1884
1885         PR lto/41669
1886         * gimple.c (gimple_get_alias_set): Avoid recursing on
1887         invalid type topology.
1888
1889 2009-10-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1890
1891         * config/spu/spu.c (get_branch_target): Use extract_asm_operands.
1892
1893 2009-10-15  Richard Guenther  <rguenther@suse.de>
1894
1895         * tree.c (free_lang_data_in_decl): Free DECL_FCONTEXT.
1896
1897 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
1898
1899         * config/rs6000/option-defaults.h (OPTION_DEFAULT_SPECS): Don't
1900         add --with-tune{,-32,-64} configured default for -mtune if explicit
1901         -mcpu is used.
1902
1903 2009-10-14  Daniel Gutson  <dgutson@codesourcery.com>
1904
1905         * config/arm/neon.md (neon_vshll_n<mode>): Checking Bounds fixed.
1906
1907 2009-10-14  DJ Delorie  <dj@redhat.com>
1908
1909         * config/h8300/h8300.c (F): New.
1910         (Fpa): New.
1911         (h8300_emit_stack_adjustment): Call them.
1912         (push): Likewise.
1913         (h8300_push_pop): Likewise.
1914         (h8300_expand_prologue): Likewise.
1915         * config/h8300/h8300.h (DWARF2_DEBUGGING_INFO): Define.
1916         (MUST_USE_SJLJ_EXCEPTIONS): Define.
1917         (INCOMING_RETURN_ADDR_RTX): Define.
1918         (INCOMING_FRAME_SP_OFFSET): Define.
1919         (DWARF_CIE_DATA_ALIGNMENT): Define.
1920
1921 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
1922
1923         * stor-layout.c (place_field): Don't emit -Wpadded warnings for
1924         fields in builtin structs.
1925         (finalize_record_size): Likewise.
1926
1927 2009-10-14  Richard Guenther  <rguenther@suse.de>
1928
1929         * gimple.c (gtc_ob): New global.
1930         (struct type_pair_d): Replace pointers with type UIDs.
1931         (type_pair_hash): Adjust.
1932         (type_pair_eq): Likewise.
1933         (lookup_type_pair): Likewise.  Allocate from an obstack.
1934         (gimple_force_type_merge): Adjust.
1935         (gimple_types_compatible_p): Likewise.
1936         (free_gimple_type_tables): Free the obstack.
1937
1938 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
1939
1940         * tree-parloops.c (separate_decls_in_region_debug_bind): Drop debug
1941         stmts setting DEBUG_EXPR_DECLs.
1942
1943         * cfgexpand.c (expand_debug_expr): Ignore zero-length bitfields.
1944         Don't crash if mode1 is VOIDmode.
1945
1946 2009-09-26  Vladimir Makarov  <vmakarov@redhat.com>
1947
1948         * params.def (PARAM_IRA_LOOP_RESERVED_REGS): New.
1949         * params.h (IRA_LOOP_RESERVED_REGS): New.
1950         * tree-pass.h (pass_subregs_of_mode_init,
1951         pass_subregs_of_mode_finish): Remove.
1952         * passes.c (pass_subregs_of_mode_init,
1953         pass_subregs_of_mode_finish): Remove.
1954         (pass_reginfo_init): Move before loop optimizations.
1955         * config/i386/i386.h (STACK_REG_COVER_CLASS): Define.
1956         * common.opt (fira-loop-pressure): New.
1957         * toplev.h (flag_ira_loop_pressure): New.
1958         * rtl.h (init_subregs_of_mode, finish_subregs_of_mode): New externals.
1959         * reginfo.c (init_subregs_of_mode, finish_subregs_of_mode):
1960         Make external and void type functions.
1961         (gate_subregs_of_mode_init, pass_subregs_of_mode_init,
1962         pass_subregs_of_mode_finish): Remove.
1963         * ira-costs.c (init_costs): Call init_subregs_of_mode.
1964         * regmove.c: Include ira.h.
1965         (regmove_optimize): Call ira_set_pseudo_classes after IRA based
1966         register pressure calculation in loops.
1967         * loop-invariant.c: Include REGS_H and ira.h.
1968         (struct loop_data): New members max_reg_pressure, regs_ref, and
1969         regs_live.
1970         (struct invariant): New member orig_regno.
1971         (curr_loop): New variable.
1972         (find_exits): Initialize regs_ref and regs_live.
1973         (create_new_invariant): Initialize orig_regno.
1974         (get_cover_class_and_nregs): New.
1975         (get_inv_cost): Make aregs_needed an array.  Use regs_needed as an
1976         array.  Add code for flag_ira_loop_pressure.
1977         (gain_for_invariant): Make new_regs an array.  Add code for
1978         flag_ira_loop_pressure.
1979         (best_gain_for_invariant): Ditto.
1980         (set_move_mark): New parameter gain.  Use it for debugging output.
1981         (find_invariants_to_move): Make regs_needed and new_regs an array.
1982         Add code for flag_ira_loop_pressure.
1983         (move_invariant_reg): Set up orig_regno.
1984         (move_invariants): Set up reg classes for pseudos for
1985         flag_ira_loop_pressure.
1986         (free_loop_data): Clear regs_ref and regs_live.
1987         (curr_regs_live, curr_reg_pressure, regs_set, n_regs_set,
1988         get_regno_cover_class, change_pressure, mark_regno_live,
1989         mark_regno_death, mark_reg_store, mark_reg_clobber,
1990         mark_reg_death, mark_ref_regs, calculate_loop_reg_pressure): New.
1991         (move_loop_invariants): Calculate pressure.  Initialize curr_loop.
1992         * ira.c (ira): Call ira_set_pseudo_classes after IRA based
1993         register pressure calculation in loops if new regs were added.
1994         Call finish_subregs_of_mode.
1995         * opts.c (decode_options): Set up flag_ira_loop_pressure.
1996         * Makefile.in (loop-invariant.o): Add ira.h.
1997         (regmove.o): Ditto.
1998         * doc/invoke.texi (-fira-loop-pressure, ira-loop-reserved-regs):
1999         Describe.
2000         * doc/tm.texi (STACK_REG_COVER_CLASS): Describe.
2001
2002 2009-10-14  Richard Guenther  <rguenther@suse.de>
2003
2004         * lto-symtab.c (lto_symtab_compatible): Fold in ...
2005         (lto_symtab_merge): ... here.  Rewrite both to take the
2006         prevailing and a to-be-merged entry and to queue diagnostics properly.
2007         (lto_symtab_resolve_replaceable_p): New predicate for
2008         symbol resolution.
2009         (lto_symtab_resolve_can_prevail_p): Likewise.
2010         (lto_symtab_resolve_symbols): Rewrite.  Fold in code that
2011         handles merging commons by choosing the largest decl.  Fold
2012         in code that gives ODR errors.
2013         (lto_symtab_merge_decls_2): Simplify a lot.  Emit queued
2014         diagnostics here.
2015         (lto_symtab_merge_decls_1): Re-structure.  Deal with the
2016         case of no prevailing decl here.  Diagnose mismatches
2017         in object types here.  Drop all but the prevailing decls.
2018         (lto_symtab_prevailing_decl): Return the single prevailing decl.
2019         * lto-streamer-in.c (lto_input_tree_ref): Deal with
2020         VIEW_CONVERT_EXPRs in decl slots.  Unshare the tree in this case.
2021
2022 2009-10-14  Richard Guenther  <rguenther@suse.de>
2023
2024         PR lto/41521
2025         * lto-streamer-in.c (input_bb): Replace debug stmts with
2026         nops instead of dropping them.
2027
2028 2009-10-14  Nick Clifton  <nickc@redhat.com>
2029
2030         * gcc/doc/extended.texi: Replace the dash character with @minus{}
2031         in situations where it is being used as a minus symbol.
2032         * gcc/doc/tm.texi: Likewise.
2033         * gcc/doc/md.texi: Likewise.
2034
2035 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
2036
2037         PR preprocessor/41543
2038         * input.h (BUILTINS_LOCATION): Change to 1 from 2.
2039         Assert BUILTINS_LOCATION < RESERVED_LOCATION_COUNT.
2040         * tree.c: Include intl.h.
2041         (expand_location): Handle BUILTINS_LOCATION.
2042         * Makefile.in (tree.o): Depend on intl.h.
2043
2044         PR debug/41695
2045         * dwarf2out.c (dwarf2out_var_location): Always clear
2046         last_postcall_label when changing last_label.
2047
2048 2009-10-14  Pascal Obry  <obry@adacore.com>
2049
2050         * gcc.c (DEFAULT_SWITCH_CURTAILS_COMPILATION): Add -E.
2051         (process_command): Handle -E as done with -c and -S.  Do not add
2052         the target executable suffix to the output file when -E is used.
2053         (main): Adjust error message accordingly.
2054
2055 2009-10-14  Alexandre Oliva  <aoliva@redhat.com>
2056
2057         PR debug/41343
2058         PR debug/41447
2059         PR debug/41264
2060         PR debug/41338
2061         * tree.c (tree_node_structure_for_code): DEBUG_EXPR_DECL uses
2062         decl with rtl.
2063         (tree_code_size): Likewise.
2064
2065 2009-10-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2066
2067         * builtins.c (fold_builtin_1): Support complex "arc" functions.
2068         * real.h (HAVE_mpc_arc): Define.
2069
2070 2009-10-14  Kaz Kojima  <kkojima@gcc.gnu.org>
2071
2072         * config/sh/sh.c (TARGET_BUILTIN_DECL): Define.
2073         (struct builtin_description): Add fndecl field.
2074         (bdesc): Remove const qualifier.  Update initializer.
2075         (sh_media_init_builtins): Remove const qualifier for d.  Record
2076         the result of add_builtin_function to the fndecl field.
2077         (sh_builtin_decl): New.
2078         (sh_media_builtin_decl): New.
2079
2080 2009-10-14  Hans-Peter Nilsson  <hp@axis.com>
2081
2082         PR target/38948
2083         * config/cris/cris.h (SECONDARY_RELOAD_CLASS): Handle reload
2084         requests between special registers.
2085
2086 2009-10-13  Eric Botcazou  <ebotcazou@adacore.com>
2087
2088         * dwarf2out.c (mem_loc_descriptor): Accept UNGT as well.
2089
2090 2009-10-13  Richard Henderson  <rth@redhat.com>
2091
2092         PR tree-optimization/41377
2093         * tree-eh.c (unsplit_eh): Propagate degenerate PHIs.
2094         (cleanup_empty_eh_merge_phis): New change_region parameter;
2095         pass it on to redirect_eh_edge_1.  Update callers.
2096         (cleanup_empty_eh_unsplit): Don't require an existing EH label
2097         at the destination block.
2098
2099 2009-10-13  Basile Starynkevitch  <basile@starynkevitch.net>
2100
2101         * passes.c (register_pass): Replaced gcc_unreachable by
2102         fatal_error on failure. Mentions plugins in comments & messages.
2103
2104 2009-10-13  Jakub Jelinek  <jakub@redhat.com>
2105
2106         PR target/41693
2107         * rtl.h (DEBUG_EXPR_TREE_DECL): Define.
2108         * sched-vis.c (print_value): Use it.
2109         * cselib.c (cselib_hash_rtx): Likewise.
2110         * print-rtl.c (print_rtx): Likewise.
2111         * cfgexpand.c (expand_debug_rtx): Likewise.
2112         * var-tracking.c (vt_expand_loc_callback): Likewise.
2113
2114 2009-10-13  Richard Guenther  <rguenther@suse.de>
2115
2116         PR lto/41565
2117         * opts.c (handle_option): Split out code to handle setting
2118         the options flag var ...
2119         (set_option): ... here.
2120         * opts.h (set_option): Declare.
2121         * lto-opts.c (register_user_option_p): Include -fexceptions
2122         and all position independent code variants.
2123         (handle_common_option): Remove.
2124         (lto_reissue_options): Use set_option.
2125
2126 2009-10-13  Martin Jambor  <mjambor@suse.cz>
2127
2128         PR tree-optimization/41661
2129         * ipa-prop.c (compute_complex_pass_through): Allow only operations
2130         that are tcc_comparisons or do not change the type in any
2131         un-usleless way.
2132         * ipa-cp.c (ipcp_lattice_from_jfunc): Request boolean type when
2133         folding tcc_comparison operations.
2134
2135 2009-10-13  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
2136
2137         * config/s390/s390.c (s390_encode_section_info): Handle BLKmode
2138         properly.
2139
2140 2009-10-12  Alexandre Oliva  <aoliva@redhat.com>
2141
2142         PR debug/41343
2143         PR debug/41447
2144         PR debug/41264
2145         PR debug/41338
2146         * tree.def (DEBUG_EXPR_DECL): New.
2147         * rtl.def (DEBUG_EXPR): New.
2148         * gengtype.c (adjust_field_rtx_def): Handle it.
2149         * tree-ssa.c (propagate_var_def_into_debug_stmts): Rename to...
2150         (insert_debug_temp_for_var_def): ... this.  Drop support for
2151         moving.  Take iterator for def stmt; insert debug stmt before it.
2152         Scan early for use count and kind in debug stmts.
2153         (propagate_defs_into_debug_stmts): Rename to...
2154         (insert_debug_temps_for_defs): ... this.  Likewise.
2155         * tree.h (DEBUG_TEMP_UID): New.
2156         * tree.c (next_debug_decl_uid): New.
2157         (make_node_stat): Count debug decls separately.
2158         (copy_node_stat): Likewise.
2159         * cfgexpand.c (expand_debug_expr): Handle DEBUG_EXPR_DECL.
2160         * var-tracking.c (dv_is_decl_p): Recognize it.
2161         (VALUE_RECURSED_INTO): Apply to DEBUG_EXPRs too.
2162         (track_expr_p): Track expanded DEBUG_EXPR_DECLs.
2163         (vt_expand_loc_callback): Expand DEBUG_EXPRs.
2164         (emit_note_insn_var_location): Don't emit notes for DEBUG_EXPR_DECLs.
2165         * cselib.c (rtx_equal_for_cselib_p): Handle DEBUG_EXPR.
2166         (cselib_hash_rtx): Likewise.
2167         (cselib_expand_value_rtx_1): Use callback for DEBUG_EXPR.
2168         * tree-ssa-operands.c (get_expr_operands): Skip DEBUG_EXPR_DECLs in
2169         debug bind stmts.
2170         * emit-rtl.c (verify_rtx_sharing): Handle DEBUG_EXPR and VALUE.
2171         (copy_rtx_if_shared_1, reset_used_flags, set_used_flags): Likewise.
2172         * rtl.c (copy_rtx): Likewise.
2173         (rtx_equal_p_cb, rtx_equal_p): Handle DEBUG_EXPR.
2174         * print-rtl.c (print_rtx): Likewise.
2175         * sched-vis.c (print_value): Likewise.
2176         (print_insn): Handle DEBUG_EXPR_DECL.
2177         * tree-dump.c (dequeue_and_dump): Likewise.
2178         * tree-pretty-print.c (dump_decl_name, dump_generic_node): Likewise.
2179         * gimple-iterator (gsi_replace): Check for same lhs.
2180         (gsi_remove): Insert debug temps.
2181         * tree-ssa-loop-im.c (rewrite_reciprocal): Replace with same lhs.
2182         (move_computations_stmt): Drop explicit propagation into debug stmts.
2183         (rewrite_bittest): Likewise.  Use gsi_remove for propagation.
2184         * tree-ssa-reassoc.c (rewrite_expr_tree, linearize_expr): Likewise.
2185         * tree-ssa-sink.c (statement_sink_location): Likewise.
2186         * tree-ssa-forwprop (forward_propagate_addr_expr): Likewise.
2187         * tree-ssanames.c (release_ssa_name): Adjust for rename.
2188         * tree-flow.h: Likewise.
2189         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Don't mark
2190         debug temps without values.
2191         (eliminate_unnecessary_stmts): Don't discard just-inserted
2192         debug stmts.
2193
2194 2009-10-12  Hans-Peter Nilsson  <hp@axis.com>
2195
2196         PR target/26515
2197         * config/cris/cris.md (andu): Check that operand 1 is one of the
2198         general registers.  Fix typo in head comment.
2199
2200 2009-10-12  Stefan Dösinger  <stefan@codeweavers.com>
2201
2202         * config/i386/i386.md (vswapmov): New.
2203         * config/i386/i386.c (ix86_handle_fndecl_attribute): New.
2204         (ix86_function_ms_hook_prologue): New.
2205         (ix86_expand_prologue): Handle ms_hook_prologue attribute.
2206         * configure.ac: Test for swap suffix support in as.
2207         * configure: Rebuild.
2208
2209 2009-10-12  Jakub Jelinek  <jakub@redhat.com>
2210
2211         PR target/41680
2212         * config/i386/i386.md (split after *testqi_ext_3_rex64): Only narrow
2213         paradoxical subregs to prevent partial register stalls if the inner
2214         mode is integer mode.
2215
2216 2009-10-12  Uros Bizjak  <ubizjak@gmail.com>
2217
2218         * config/i386/i386.md (*setcc_<mode>_2): Remove insn pattern.
2219
2220 2009-10-12  Dodji Seketeli  <dodji@redhat.com>
2221
2222         PR c++/41570
2223         * gcc/dwarf2out.c (template_parameter_pack_die,
2224         gen_formal_parameter_pack_die): Use add_name_and_src_coords_attributes.
2225
2226 2009-10-12  Alexandre Oliva  <aoliva@redhat.com>
2227
2228         PR debug/41616
2229         * tree-into-ssa.c (insert_phi_nodes_for): Build debug bind stmts
2230         on updates too.
2231         (maybe_register_def): Likewise.  Take stmt iterator.
2232         (rewrite_update_stmt): Take stmt iterator and pass it on.
2233         (rewrite_update_enter_block): Pass stmt iterator.
2234
2235 2009-10-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2236
2237         * config/spu/spu.c (TARGET_BUILTIN_DECL): Define.
2238         (spu_builtin_decl): New function.
2239
2240 2009-10-12  Uros Bizjak  <ubizjak@gmail.com>
2241
2242         * config/i386/i386.md (SWIM): New mode iterator.
2243         (mov<mode>cc): Macroize expander from mov{qi,hi,si,di}cc patterns
2244         using SWIM mode iterator.
2245         (x86_mov<mode>cc_0_m1): Macroize insn from x86_mov{si,di}cc_0_m1
2246         patterns using SWI48 mode iterator.
2247         (*x86_mov<mode>cc_0_m1_se):  Macroize insn from
2248         *x86_mov{si,di}cc_0_m1_se patterns using SWI48 mode iterator.
2249         (*x86_mov<mode>cc_0_m1_neg): New insn pattern.
2250         (*mov<mode>cc_noc): Macroize insn from *mov{hi,si,di}cc_noc
2251         patterns using SWI248 mode iterator.
2252         * config/i386/i386.c (ix86_expand_int_movcc): Update the call to
2253         gen_x86_movdicc_0_m1_rex64 for renamed function
2254
2255 2009-10-11  Jose Ruiz  <ruiz@adacore.com>
2256             Eric Botcazou  <ebotcazou@adacore.com>
2257
2258         PR target/33743
2259         * config/sparc/sol2.h (MD_UNWIND_SUPPORT): Define.
2260         * config/sparc/sol2-unwind.h: New file.
2261
2262 2009-10-11  Olivier Hainque  <hainque@adacore.com>
2263             Eric Botcazou  <ebotcazou@adacore.com>
2264
2265         PR target/33743
2266         * config/i386/sol2.h (MD_UNWIND_SUPPORT): Define.
2267         * config/i386/sol2-unwind.h: New file.
2268
2269 2009-10-11  H.J. Lu  <hongjiu.lu@intel.com>
2270
2271         PR target/41665
2272         * config/i386/i386.md (addsi_1_zext): Get the proper second
2273         operand for lea.
2274
2275 2009-10-11  Richard Sandiford  <rdsandiford@googlemail.com>
2276
2277         * simplify-rtx.c (simplify_replace_rtx): Use rtx_equal_p for
2278         all OLD_RTXes, not just REGs.  Use copy_rtx to create the
2279         replacement value.
2280
2281 2009-10-11  Richard Guenther  <rguenther@suse.de>
2282
2283         * gimple.c (iterative_hash_type_name): Do not handle special
2284         anonymous names.
2285
2286 2009-10-11  Uros Bizjak  <ubizjak@gmail.com>
2287
2288         * config/i386/i386.md (*setcc_di_1): New insn_and_split pattern.
2289         (*setcc_si_1_and): Ditto.
2290         (*setcc_si_1_movzbl): Ditto.
2291         (*setcc_<mode>_2): Ditto.
2292         (*setcc_qi): Rename from *setcc_1.
2293         (*setcc_qi_slp): Rename from *setcc_2.
2294
2295         (*zero_extendqihi2_movzbw_and splitter): Use ix86_expand_clear.
2296         (*zero_extendqisi2_movzbw_and splitter): Ditto.
2297
2298         * config/i386/i386.c (ix86_expand_clear): Remove reload_completed from
2299         "if" condition, there is already assert with reload_completed present.
2300
2301 2009-10-11  Gerald Pfeifer  <gerald@pfeifer.com>
2302
2303         * plugin.c (try_init_one_plugin): Improve constness of variable err.
2304
2305 2009-10-10  Gerald Pfeifer  <gerald@pfeifer.com>
2306
2307         * doc/install.texi (Final install): Refer to
2308         http://gcc.gnu.org/bugs/ for bug reporting.
2309
2310 2009-10-10  Peter Bergner  <bergner@vnet.ibm.com>
2311
2312         * configure.ac: Add test for dci instruction.
2313         * configure: Regenerate.
2314         * config.in: Likewise.
2315         * config.gcc: Handle --with-cpu=476 and --with-cpu=476fp.
2316         * doc/invoke.texi: Add cpu_type 476 and 476fp.
2317         (-mmulhw): Add 476 to description.
2318         (-mdlmzb): Likewise.
2319         * config/rs6000/t-fprules (MULTILIB_MATCHES_FLOAT): Include -mcpu=476.
2320         * config/rs6000/rs6000.c (processor_costs): Add ppc476_cost.
2321         (processor_target_table): Add 476 and 476fp entries.
2322         (rs6000_override_options): Use ppc476_cost for PROCESSOR_PPC476.
2323         (rs6000_issue_rate): Add CPU_PPC476.
2324         * config/rs6000/rs6000.h (ASM_CPU_476_SPEC): Define.
2325         (ASM_CPU_SPEC): Pass %(asm_cpu_476) for -mcpu=476 and -mcpu=476fp.
2326         (processor_type): Add PROCESSOR_PPC476.
2327         (EXTRA_SPECS): Add asm_cpu_476 string.
2328         * config/rs6000/rs6000.md (define_attr "type"): Add isel attribute.
2329         (define_attr "cpu"): Add ppc476.
2330         Include 476.md.
2331         Update comments for 476.
2332         (isel_signed, isel_unsigned): Change to use "isel" type attribute.
2333         * config/rs6000/vxworks.h (CPP_SPEC): Handle 464 and 476.
2334         Update copyright year.
2335         * config/rs6000/476.md: New file.
2336         * config/rs6000/40x.md: Add description for "isel" attribute.
2337         Update copyright year.
2338         * config/rs6000/440.md: Likewise.
2339         * config/rs6000/603.md: Likewise.
2340         * config/rs6000/6xx.md: Likewise.
2341         * config/rs6000/7450.md: Likewise.
2342         * config/rs6000/7xx.md: Likewise.
2343         * config/rs6000/8540.md: Likewise.
2344         * config/rs6000/cell.md: Likewise.
2345         * config/rs6000/e300c2c3.md: Likewise.
2346         * config/rs6000/e500mc.md: Likewise.
2347         * config/rs6000/mpc.md: Likewise.
2348         * config/rs6000/power4.md: Likewise.
2349         * config/rs6000/power5.md: Likewise.
2350         * config/rs6000/power6.md: Likewise.
2351         * config/rs6000/power7.md: Likewise.
2352         * config/rs6000/rios1.md: Likewise.
2353         * config/rs6000/rios2.md: Likewise.
2354         * config/rs6000/rs64.md: Likewise.
2355
2356 2009-10-10  Richard Guenther  <rguenther@suse.de>
2357
2358         PR tree-optimization/41654
2359         * tree-ssa-ifcombine.c (ifcombine_ifandif): Properly canonicalize
2360         a cond expr before calling gimple_cond_set_condition_from_tree.
2361         (ifcombine_iforif): Likewise.
2362
2363 2009-10-09  Ian Lance Taylor  <iant@google.com>
2364
2365         * configure.ac: Use AC_SEARCH_LIBS to find dlopen.
2366         * configure: Rebuild.
2367
2368 2009-10-09  Neil Vachharajani <nvachhar@google.com>
2369
2370         * doc/cpp.texi (Other Directives): Do not list #ident and #sccs as
2371         deprecated.
2372
2373 2009-10-09  Richard Guenther  <rguenther@suse.de>
2374
2375         PR lto/41638
2376         * target-def.h (TARGET_BUILTIN_DECL): Define.
2377         (TARGET_INITIALIZER): Add TARGET_BUILTIN_DECL.
2378         * target.h (struct gcc_target): Add builtin_decl target hook.
2379         * doc/tm.texi (TARGET_BUILTIN_DECL): Document.
2380         * lto-streamer-in.c (lto_get_builtin_tree): Fix handling of
2381         target builtins.
2382         * lto-streamer-out.c (lto_output_tree_pointers): Use sorry,
2383         not gcc_unreachable.
2384         (lto_output_builtin_tree): Sorry if the target does not support
2385         streaming target builtins.
2386         * config/rs6000/rs6000.c (TARGET_BUILTIN_DECL): Define.
2387         (rs6000_builtin_decl): New function.
2388         * config/i386/i386.c (TARGET_BUILTIN_DECL): Define.
2389         (ix86_builtin_decl): New function.
2390
2391 2009-10-09  Jakub Jelinek  <jakub@redhat.com>
2392
2393         PR preprocessor/41445
2394         * c-ppoutput.c (do_line_change): New function.
2395         (cb_line_change): Use it.
2396         (scan_translation_unit): Call do_line_change if
2397         avoid_paste or PREV_WHITE and token location is on a different line
2398         than print.src_line.
2399
2400         PR debug/40521
2401         * dwarf2out.c (dwarf2out_init): Test whether
2402         HAVE_GAS_CFI_SECTIONS_DIRECTIVE is non-zero instead of checking
2403         it is defined.
2404
2405         PR rtl-optimization/41646
2406         * calls.c (expand_call): For BLKmode types returned in registers
2407         avoid likely spilled hard regs in copy_blkmode_from_reg generated
2408         insns.
2409
2410 2009-10-09  Richard Guenther  <rguenther@suse.de>
2411
2412         PR tree-optimization/41634
2413         * tree-ssa-dom.c (remove_local_expressions_from_table): Assert
2414         we remove the correct elements.
2415         (optimize_stmt): Make sure to update stmt operands before
2416         optimizing redundancies.
2417
2418 2009-10-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
2419
2420         * config/s390/s390.md ("prefetch"): Remove stcmh for prefetching.
2421
2422 2009-10-09  Richard Guenther  <rguenther@suse.de>
2423
2424         PR driver/41637
2425         * lto-wrapper.c (ltrans_output_file, flto_out, args_name): New
2426         globals.
2427         (lto_wrapper_exit): New function.
2428         (fatal): Use it.
2429         (fatal_perror): Likewise.
2430         (fork_execute): Use global args_name, do not free it.
2431         (run_gcc): Use global ltrans_output_file, flto_out, do not free them.
2432         * lto-streamer.h: Remove duplicate prototypes.
2433
2434 2009-10-09  Richard Guenther  <rguenther@suse.de>
2435
2436         * cgraph.c (cgraph_create_edge): Check for NULL call_stmt
2437         before calling stmt_can_throw_external.
2438
2439 2009-10-09  Eric Botcazou  <ebotcazou@adacore.com>
2440
2441         PR tree-optimization/40071
2442         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Build a ref-all
2443         pointer if the original data reference doesn't conflict with the
2444         created vector data reference.  Fix long line.
2445
2446 2009-10-09  Uros Bizjak  <ubizjak@gmail.com>
2447
2448         * config/i386/i386.md (any_div): New code iterator.
2449         (u): Handle div and udiv.
2450         (sgnprefix): Ditto.
2451         (<u>divqi3): Macroize insn from {,u}divqi3  using any_div
2452         code iterator.
2453         (lfloor<MODEF:mode><SWI48:mode>2): Macroize insn from
2454         lfloor<mode>{si,di}2 patterns using SWI48 mode iterator.
2455         (lceil<MODEF:mode><SWI48:mode>2): Macroize insn from
2456         lceil<mode>{si,di}2 patterns using SWI48 mode iterator.
2457
2458 2009-10-08  Joseph Myers  <joseph@codesourcery.com>
2459
2460         * gcc.c (main): Remove trailing "." from diagnostics.
2461
2462 2009-10-08  Cary Coutant  <ccoutant@google.com>
2463
2464         Add support for debugging with ICF (Identical Code Folding).
2465         * calls.c (debug.h): New #include.
2466         (emit_call_1): Call virtual_call_token debug hook.
2467         * common.opt (-fenable-icf-debug): New option.
2468         * dwarf2out.c (dwarf2_debug_hooks): Add entries for new hooks (two
2469         locations in the source).
2470         (poc_label_num): New variable.
2471         (dcall_entry, vcall_entry): New typedefs.
2472         (dcall_table, vcall_table): New variables.
2473         (struct vcall_insn): New type.
2474         (vcall_insn_table): New variable.
2475         (DEBUG_DCALL_SECTION, DEBUG_VCALL_SECTION): New macros.
2476         (size_of_dcall_table): New function.
2477         (output_dcall_table): New function.
2478         (size_of_vcall_table): New function.
2479         (output_vcall_table): New function.
2480         (dwarf2out_direct_call): New function.
2481         (vcall_insn_table_hash): New function.
2482         (vcall_insn_table_eq): New function.
2483         (dwarf2out_virtual_call_token): New function.
2484         (dwarf2out_virtual_call): New function.
2485         (dwarf2out_init): Allocate new tables and sections.
2486         (prune_unused_types): Mark DIEs referenced from direct call table.
2487         (dwarf2out_finish): Output direct and virtual call tables.
2488         * final.c (final_scan_insn): Call direct_call and virtual_call
2489         debug hooks.
2490         * debug.h (struct gcc_debug_hooks): Add direct_call,
2491         virtual_call_token, virtual_call hooks.
2492         (debug_nothing_uid): New function.
2493         * debug.c (do_nothing_debug_hooks): Add dummy entries for new hooks.
2494         (debug_nothing_uid): New function.
2495         * dbxout.c (dbx_debug_hooks): Add dummy entries for new hooks.
2496         (xcoff_debug_hooks): Likewise.
2497         * sdbout.c (sdb_debug_hooks): Likewise.
2498         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
2499         * doc/invoke.texi (-fenable-icf-debug): New option.
2500
2501 2009-10-08  Alexandre Oliva  <aoliva@redhat.com>
2502
2503         PR debug/41353
2504         * regmove.c (regmove_backward_pass): Replace src with dst in the
2505         debug insn, and check for dst before rather than after.
2506
2507 2009-10-08  Janis Johnson <janis187@us.ibm.com>
2508
2509         * config/rs6000/rs6000.c (rs6000_delegitimize_address): Remove.
2510         (TARGET_DELEGITIMIZE_ADDRESS): Likewise.
2511
2512 2009-10-08  Jan Hubicka  <jh@suse.cz>
2513
2514         PR middle-end/41626
2515         * cgraphbuild.c (record_reference): When parameter DATA is NULL,
2516         do not mark cgraph nodes as needed.
2517         (record_references_in_initializer): Add new only_vars parameter.
2518         * cgraph.h (record_references_in_initializer): New parameter.
2519         * varasm.c (assemble_variable): Update call.
2520         * varpool.c (varpool_analyze_pending_decls): Always look for
2521         referenced vars.
2522
2523 2009-10-08  Anatoly Sokolov  <aesok@post.ru>
2524
2525         * config/avr/avr.c (last_insn_address) Remove variable.
2526         (expand_prologue): Don't initialise last_insn_address variable.
2527         (final_prescan_insn): Don't output insn size.
2528         * config/avr/avr.opt (msize): Remove switch.
2529         * doc/invoke.texi (AVR Options): Remove documentation of -msize
2530         switch.
2531
2532 2009-10-08  Adam Nemet  <anemet@caviumnetworks.com>
2533
2534         * combine.c (label_tick_ebb_start): Fix comment.
2535         (combine_instructions): Set label_tick and label_tick_ebb_start before
2536         calling setup_incoming_promotions.  Start them from 1.  Increment
2537         label_tick instead of deriving it from the BB index.  Rather than
2538         comparing ticks use the block from the previous iteration to decide
2539         whether to start a new EBB.  Remove empty lines before function.
2540
2541 2009-10-08  Michael Matz  <matz@suse.de>
2542
2543         PR middle-end/41573
2544         * builtins.c (fold_builtin_isascii): Use fold_build2.
2545         (fold_builtin_isdigit): Ditto.
2546         * except.c (duplicate_eh_regions_1): Tolerate NULL labels.
2547         * tree-cfg.c (struct rus_data, remove_useless_stmts_warn_notreached,
2548         remove_useless_stmts_cond, remove_useless_stmts_tf,
2549         remove_useless_stmts_tc, remove_useless_stmts_bind,
2550         remove_useless_stmts_goto, remove_useless_stmts_label,
2551         remove_useless_stmts_1, remove_useless_stmts,
2552         pass_remove_useless_stmts): Remove.
2553         * tree-pass.h (pass_remove_useless_stmts): Don't declare.
2554         * passes.c (init_optimization_passes): Don't add
2555         pass_remove_useless_stmts.
2556         * tree-eh.c (lower_eh_constructs_2): Handle empty cleanups.
2557         * tree.c (free_lang_data_in_decl): Don't clear DECL_INITIAL of
2558         static constants.
2559         * lto-symtab.c (lto_symtab_register_decl): Accepts DECL_INITIAL
2560         for static constants.
2561         * lto-streamer-out.c (output_gimple_stmt): Handle GIMPLE_NOP.
2562         * lto-streamer-in.c (input_gimple_stmt): Handle GIMPLE_NOP.
2563
2564 2009-10-08  Richard Guenther  <rguenther@suse.de>
2565
2566         * gimple.c (free_gimple_type_tables): New function.
2567         * gimple.h (free_gimple_type_tables): Declare.
2568
2569 2009-10-07  Mark Heffernan  <meheff@google.com>
2570
2571         * ipa-prop.c (ipa_print_node_params) Only print
2572         names of named arguments.
2573
2574 2009-10-08  Rafael Avila de Espindola  <espindola@google.com>
2575
2576         * gcc.c (LINK_COMMAND_SPEC): Pass libc with -pass-through if it is
2577         being statically linked.
2578
2579 2009-10-08  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
2580
2581         * collect2.c (add_lto_object): Only define if OBJECT_FORMAT_NONE.
2582
2583 2009-10-08  Jan Hubicka  <jh@suse.cz>
2584
2585         PR bootstrap/41620
2586         * ipa.c (cgraph_externally_visible_p,
2587         function_and_variable_visibility,
2588         whole_program_function_and_variable_visibility): Skip non-finalized
2589         nodes.
2590
2591 2009-10-08  Nick Clifton  <nickc@redhat.com>
2592
2593         * config/mn10300/mn10300.h (CONSTANT_ADDRESS_P): Do not allow
2594         CONST_DOUBLEs.
2595
2596 2009-10-08  Andreas Tobler  <a.tobler@schweiz.org>
2597
2598         PR bootstrap/37739
2599         * config.host: Use config/x-cflags-O1 for powerpc FreeBSD.
2600
2601 2009-10-07  Joseph Myers  <joseph@codesourcery.com>
2602
2603         PR c/41182
2604         * c-common.c (c_fully_fold_internal): Strip nops from the result
2605         of recursive calls to c_fully_fold_internal.
2606         (c_wrap_maybe_const): New.
2607         (c_save_expr): Use c_wrap_maybe_const.
2608         * c-common.h (c_wrap_maybe_const): Declare.
2609         * c-typeck.c (build_conditional_expr, c_finish_stmt_expr,
2610         build_binary_op): Use c_wrap_maybe_const.
2611
2612 2009-10-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2613
2614         * real.c: Fix comment to reflect actual exponent size.
2615
2616 2009-10-08  Ben Elliston  <bje@au.ibm.com>
2617
2618         * config/rs6000/a2.md: Add FSF comment header.
2619
2620 2009-10-07  Uros Bizjak  <ubizjak@gmail.com>
2621
2622         * config/i386/i386.md (any_extend): New code iterator.
2623         (u, s): New code attributes.
2624         (sgnprefix): Ditto.
2625         (DWIH): Rewrite as code iterator for SI and DI modes.
2626         (DWI): Rewrite as mode attribute.
2627         (dwi): New mode attribute.
2628         (di): Depend on SI mode and DI mode.
2629         (doubleint_general_operand): Remove mode attribute.
2630
2631         (*lea_1): Macroize insn from *lea_1_rex64 and *lea_1 patterns using
2632         DWIH mode iterator.
2633
2634         (*add<mode>3_doubleword): Use DWIH as the base mode iterator.
2635         (*sub<mode>3_doubleword): Ditto.
2636
2637         (mul<mode>3): Macroize expander from mul{hi,si,di}3 patterns
2638         using SWIM248 mode iterator.
2639         (*mul<mode>3_1): Macroize insn from mul{si,di}3_1 patterns
2640         using SWI48 mode iterator.
2641         (<u>mul<mode><dwi>3): Macroize expander from {,u}mul{sidi,diti}3
2642         patterns using DWIH mode iterator and any_extend code iterator.
2643         (<u>mulqihi3): Macroize expander from {,u}mulqihi3 patterns
2644         using any_extend code iterator.
2645         (*<u>mul<mode><dwi>3_1): Macroize insn from {,u}mul{sidi,diti}3_1
2646         patterns using DWIH mode iterator and any_extend code iterator.
2647         (*<u>mulqihi3_1): Macroize insn from {,u}mulqihi3_1 patterns
2648         using any_extend code iterator.
2649         (<s>mul<mode>3_highpart): Macroize expander from
2650         {s,u}mul{si,di}3_highpart patterns using DWIH mode iterator
2651         and any_extend code iterator.
2652         (*<s>muldi3_highpart_1): Macroize insn from
2653         *{s,u}muldi3_highpart_rex64 patterns using any_extend code iterator.
2654         (*<s>mulsi3_highpart_1): Macroize insn from *{s,u}mulsi3_highpart_1
2655         patterns using any_extend code iterator.
2656         (*<s>mulsi3_highpart_zext): Macroize insn from
2657         *{s,u}mulsi3_highpart_zext patterns using any_extend code iterator.
2658
2659 2009-10-07  Jakub Jelinek  <jakub@redhat.com>
2660
2661         * dwarf2out.c (tree_add_const_value_attribute_for_decl): Don't add
2662         DW_AT_const_value if VAR_DIE already has DW_AT_abstract_origin
2663         refering to a DIE with DW_AT_const_value.
2664
2665 2009-10-07  Vladimir Makarov  <vmakarov@redhat.com>
2666
2667         PR middle-end/22072
2668         * ira-lives.c (check_and_make_def_conflict): Process all operands.
2669
2670 2009-10-06  Jan Hubicka  <jh@suse.cz>
2671
2672         * cgraph.c (cgraph_node_can_be_local): Handle externally visible nodes
2673         correctly.
2674
2675 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
2676
2677         * config/i386/i386.md (*lea_1_rex64, *lea_1, *lea_1_zext,
2678         *lea_2_rex64): Move before *add<mode>_1 pattern.
2679
2680 2009-10-07  Jan Hubicka  <jh@suse.cz>
2681
2682         * collect2.c (main): Add -fno-whole-program.
2683         * gcc.c (set_collect_gcc_options): Do not remove whole program here.
2684
2685 2009-10-07  Jan Hubicka  <jh@suse.cz>
2686
2687         * lto-symtab.c (lto_cgraph_replace_node): Assert that inline clones
2688         has no address taken.
2689         * cgraph.c (cgraph_mark_needed_node): Assert that inline clones are
2690         never needed.
2691         (cgraph_clone_node): Clear externally_visible flag for clones.
2692         * cgraph.h (cgraph_only_called_directly_p,
2693         cgraph_can_remove_if_no_direct_calls_p): New predicates.
2694         * tree-pass.h (pass_ipa_whole_program_visibility): Declare.
2695         * ipa-cp.c (ipcp_cloning_candidate_p): Use new predicate.
2696         (ipcp_initialize_node_lattices, ipcp_estimate_growth,
2697         ipcp_insert_stage): Likwise.
2698         * cgraphunit.c (cgraph_decide_is_function_needed): Do not compute
2699         externally_visible flag.
2700         (verify_cgraph_node): Verify that inline clones look right.
2701         (process_function_and_variable_attributes): Do not set
2702         externally_visible flags.
2703         (ipa_passes): Avoid executing small_ipa_passes at LTO stage; they've
2704         been already run.
2705         * lto-cgraph.c (lto_output_node): Assert that inline clones are not
2706         boundaries.
2707         * ipa-inline.c (cgraph_clone_inlined_nodes): Use new predicates;
2708         clear externally_visible when turning into inline clones
2709         (cgraph_mark_inline_edge): Use new predicates.
2710         (cgraph_estimate_growth): Likewise.
2711         (cgraph_decide_inlining): Likewise.
2712         * ipa.c (cgraph_postorder): Likewise.
2713         (cgraph_remove_unreachable_nodes): Likewise; sanity check
2714         that inline clones are not needed.
2715         (cgraph_externally_visible_p): New predicate.
2716         (function_and_variable_visibility): Add whole_program parameter;
2717         always set externally_visible flag; handle COMDAT function
2718         privatization.
2719         (local_function_and_variable_visibility): New function.
2720         (gate_whole_program_function_and_variable_visibility): New function.
2721         (whole_program_function_and_variable_visibility): New function.
2722         (pass_ipa_whole_program_visibility): New function.
2723         * passes.c  (init_optimization_passes): Add whole program visibility
2724         pass.
2725         (do_per_function_toporder, function_called_by_processed_nodes_p): Do
2726         not care about needed/reachable flags.
2727         * varpool.c: Include flags.h
2728         (decide_is_variable_needed): When doing LTO assume whole-program mode.
2729         (varpool_finalize_decl): When we are in LTO read-back, all variables
2730         are analyzed.
2731         (varpool_analyze_pending_decls): Skip analyzis of analyzed vars.
2732
2733 2009-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
2734
2735         * config/s390/tpf.h (TARGET_DEFAULT): Remove MASK_HARD_FLOAT and
2736         add MASK_HARD_DFP.
2737
2738 2009-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
2739
2740         * config.gcc: Don't include the makefile fragments intended for
2741         libgcc.
2742         * config/s390/fixdfdi.h: File removed.
2743         * config/s390/libgcc-glibc.ver: File removed.
2744         * config/s390/s390.h: Remove the fixdfdi.h hack.
2745         * config/s390/t-crtstuff: File moved to libgcc dir.
2746         * config/s390/t-linux: Likewise.
2747         * config/s390/t-tpf: libgcc specific parts removed.
2748         * config/s390/t-linux64: Likewise.
2749
2750 2009-10-06  Jerry Quinn  <jlquinn@optonline.net>
2751
2752         * Makefile.in (lto-wrapper): Use COMPILER and ALL_COMPILERFLAGS.
2753         (lto-compress.o): Likewise.
2754
2755 2009-10-07  Danny Smith  <dannysmith@users.sourceforge.net>
2756
2757         PR target/41512
2758         * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't propagate
2759         dllexport to class members here.
2760         (i386_pe_determine_dllimport_p): Only check static class data for
2761         definition.
2762         (i386_pe_encode_section_info): Don't recheck DECL_DLLIMPORT_P.
2763         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Only check
2764         functions for vague linkage.
2765         (i386_pe_type_dllexport_p): Fix formatting.
2766         (maybe_add_dllexport) New function.
2767         (i386_pe_adjust_class_at_definition): Use it to propagate dllexport
2768         to class members.
2769
2770 2009-10-07  Ben Elliston  <bje@au.ibm.com>
2771
2772         * config/rs6000/a2.md: Remove duplicated lines.
2773
2774 2009-10-07  Ben Elliston  <bje@au.ibm.com>
2775
2776         * config.gcc (powerpc*-*-*): Handle a2.
2777         * config/rs6000/rs6000.md (cpu): Add ppca2.  Include "a2.md".
2778         * config/rs6000/a2.md: New file.
2779         * config/rs6000/rs6000.opt (mno-update): New.
2780         (mupdate): Return to using a mask, not a var.
2781         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add support for a2.
2782         (enum processor_type): Add PROCESSOR_PPCA2.
2783         * config/rs6000/rs6000.c (ppca2_cost): New costs.
2784         (rs6000_override_options): Add "a2" to processor_target_table.
2785         Update rs6000_always_hint logic.  Correctly set rs6000_cost for a2.
2786         * doc/invoke.texi (RS/6000 and PowerPC Options): Document -mcpu=a2.
2787
2788 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
2789
2790         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
2791         Use explicit gen_truncxfsf2 and gen_truncxfdf2 references to avoid
2792         reference to nonexistent gen_truncxfxf2 function.
2793
2794 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
2795
2796         * config/i386/i386.md (SWI48, SDWIM, DWI): New mode iterators.
2797         (DWIH, g, di, doubleint_general_operand): New mode attributes.
2798         (general_operand): Handle TI mode.
2799         (add<mode>3): Macroize expander from add{qi,hi,si,di,ti}3 patterns
2800         using SDWIM mode iterator.
2801         (*add<mode>3_doubleword): New insn_and_split pattern.  Macroize
2802         pattern from *add{di,ti}3_1 patterns and corresponding splitters
2803         using DWI mode iterator.
2804         (add<mode>3_carry): Macroize insn from add{qi,hi,si,di}3_carry
2805         patterns using SWI mode iterator.
2806         (*add<mode>3_cc): Macroize insn from add{si,di}3_cc patterns
2807         using SWI48 mode iterator.
2808         (*add<mode>_1): Ditto from add{si,di}_1 patterns.
2809         (*add<mode>_2): Ditto from add{si,di}_2 patterns.
2810         (*add<mode>_3): Ditto from add{si,di}_3 patterns.
2811         (*add<mode>_5): Ditto from add{si,di}_5 patterns.
2812         (sub<mode>3): Macroize expander from sub{qi,hi,si,di,ti}3 patterns
2813         using SDWIM mode iterator.
2814         (*sub<mode>3_doubleword): New insn_and_split pattern.  Macroize
2815         pattern from *sub{di,ti}3_1 patterns and corresponding splitters
2816         using DWI mode iterator.
2817         (sub<mode>3_carry): Macroize insn from sub{qi,hi,si,di}3_carry
2818         patterns using SWI mode iterator.
2819         (*sub<mode>_1): Ditto from from sub{qi,hi,si,di}_1 patterns.
2820         (*sub<mode>_2): Ditto from sub{qi,hi,si,di}_2 patterns.
2821         (*sub<mode>_3): Ditto from sub{qi,hi,si,di}_3 patterns.
2822         (<plusminus_insn>xf3): Macroize expander from addxf3 and subxf3
2823         patterns using plusminus code iterator.
2824         (<plusminus_insn><mode>3): Macroize expander from add<mode>3 and
2825         sub<mode>3 patterns using plusminus code iterator.
2826         * config/i386/i386.c (override_options): Update the call to
2827         gen_subdi_carry_rex64 for renamed function.
2828         (ix86_expand_int_addcc): Update calls to gen_subdi3_carry_rex64
2829         and gen_adddi3_carry_rex64 for renamed functions.  Use indirect
2830         calls to instruction expanders.
2831
2832 2009-10-06  Martin Jambor  <mjambor@suse.cz>
2833
2834         PR bootstrap/41395
2835         * opts.c (decode_options): Run IPA-SRA at -O2.
2836
2837 2009-10-06  Richard Guenther  <rguenther@suse.de>
2838
2839         * lto-symtab.c (lto_symtab_entry_hash): Hash strings, not pointers.
2840
2841 2009-10-06  Tobias Burnus  <burnus@net-b.de>
2842
2843         PR lto/41591
2844         * doc/invoke.texi (-flto,-fwhole-program): Make clear that the
2845         -flto and -fwhole-program flags can be combined.
2846
2847 2009-10-06  Ryan Mansfield  <rmansfield@qnx.com>
2848
2849         PR driver/41217
2850         * gcc.c (process_command): Check that -o argument was specified.
2851
2852 2009-10-06  Jerry Quinn  <jlquinn@optonline.net>
2853
2854         * gimple.c (gimple_type_hash): Use CONST_CAST_TREE to fix compilation.
2855
2856 2009-10-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2857
2858         * c.opt (Wjump-misses-init): Fix typo to enable for ObjC.
2859         * doc/invoke.texi (Warning Options): Annotate allowed languages
2860         for -Wunsuffixed-float-constants.
2861
2862 2009-10-05  Jakub Jelinek  <jakub@redhat.com>
2863
2864         * dwarf2out.c (modified_type_die): Don't add DW_AT_name to
2865         DW_TAG_{const,volatile}_type if its DW_AT_type already has the
2866         same name and isn't the main variant.
2867
2868         PR debug/41558
2869         * dwarf2out.c (loc_by_reference): Removed.
2870         (dw_loc_list_1): New function.
2871         (dw_loc_list): Remove toplev argument, add want_address argument.
2872         Don't look at decl_by_reference_p at all.  Use dw_loc_list_1.
2873         (loc_list_from_tree) <case VAR_DECL>: Pass want_address rather than
2874         want_address == 2 to dw_loc_list.  For successful dw_loc_list
2875         set have_address to 1 only if want_address is not 0.
2876
2877 2009-10-05  Richard Sandiford  <rdsandiford@googlemail.com>
2878
2879         * config/mips/mips-protos.h (mips_trampoline_code_size): Declare.
2880         * config/mips/mips.h (TRAMPOLINE_SIZE): Redefine as the size of
2881         a code block followed by two pointers.
2882         (TRAMPOLINE_ALIGNMENT): Define to 64 for 32-bit targets too.
2883         * config/mips/mips.c (MIPS_LOAD_PTR): New macro.
2884         (MIPS_MOVE): Likewise.
2885         (MIPS_LUI): Likewise.
2886         (MIPS_JR): Likewise.
2887         (MIPS_BAL): Likewise.
2888         (MIPS_NOP): Likewise.
2889         (mips_asm_trampoline_template): Delete.
2890         (mips_trampoline_code_size): New function.
2891         (mips_trampoline_init): Add shorter sequences for all cases
2892         except Pmode == DImoe && !TARGET_USE_PIC_FN_ADDR_REG.
2893         Calculate the opcodes directly, rather than copying from a template.
2894         Only flush the code part of the trampoline.
2895         (TARGET_ASM_TRAMPOLINE_TEMPLATE): Delete.
2896
2897 2009-10-05  Richard Sandiford  <rdsandiford@googlemail.com>
2898
2899         * config/mips/mips.h (DWARF_FRAME_RETURN_COLUMN): Replace
2900         GP_REG_FIRST + 31 with RETURN_ADDR_REGNUM.
2901         (INCOMING_RETURN_ADDR_RTX): Likewise.
2902         (FUNCTION_PROFILER): Likewise.  Replace GP_REG_FIRST + 1
2903         with AT_REGNUM.
2904         * config/mips/sdemtk.h (FUNCTION_PROFILER): Replace GP_REG_FIRST + 31
2905         with RETURN_ADDR_REGNUM.
2906         (MIPS_SAVE_REG_FOR_PROFILING_P): Likewise.
2907         * config/mips/mips.c (mips16_build_call_stub): Replace
2908         GP_REG_FIRST + 31 with RETURN_ADDR_REGNUM, GP_REG_FIRST + 1
2909         with AT_REGNUM and 31 with RETURN_ADDR_REGNUM.
2910         (mips_print_operand_punctuation): Likewise.
2911         (mips_frame_set): Likewise.
2912         (mips16e_output_save_restore): Likewise.
2913         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
2914         (mips_save_reg_p): Likewise.
2915         (mips_return_addr): Likewise.
2916         (mips_set_return_address): Likewise.
2917         (mips_direct_save_slot_move_p): Likewise.
2918         (mips_output_function_prologue): Likewise.
2919         (mips_restore_reg): Likewise.
2920         (mips_expand_epilogue): Likewise.
2921         (mips_epilogue_uses): Likewise.
2922         * config/mips/mips.md (RETURN_ADD_REGNUM): Define.
2923         (*mov<mode>_ra): Use it instead of a hard-coded 31.
2924         (clear_hazard_<mode>): Likewise.
2925         (call_internal): Likewise.
2926         (call_internal_direct): Likewise.
2927         (call_direct_split): Likewise.
2928         (call_value_internal): Likewise.
2929         (call_value_split): Likewise.
2930         (call_value_internal_direct): Likewise.
2931         (call_value_direct_split): Likewise.
2932         (call_value_multiple_internal): Likewise.
2933         (call_value_multiple_split): Likewise.
2934
2935 2009-10-05  Eric Botcazou  <ebotcazou@adacore.com>
2936             Jakub Jelinek  <jakub@redhat.com>
2937
2938         PR rtl-optimization/41511
2939         * combine.c (record_value_for_reg): Pass explicit values as argument
2940         to get_last_value_validate.
2941         (get_last_value_validate): Document INSN parameter.
2942         For non-readonly MEMs, assume they might have been modified if INSN
2943         was in another basic block.
2944         (get_last_value): Minor reformatting.
2945
2946 2009-10-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2947
2948         PR tree-opt/40992
2949         * final.c (asm_str_count): Split out from asm_insn_count.
2950         * rtl.h (asm_str_count): New prototype.
2951         * tree-inline (estimate_num_insns) <case GIMPLE_ASM>: Call
2952         asm_str_count.
2953
2954 2009-10-05  Sriraman Tallam  <tmsriram@google.com>
2955
2956         * doc/plugins.texi: Change plugin_pass to register_pass_info.
2957
2958 2009-10-05  Basile Starynkevitch  <basile@starynkevitch.net>
2959             Rafael Espindola  <espindola@google.com>
2960
2961         * gengtype.c (write_types): Moved call to write_func_for_structure
2962         into seperate loops.
2963
2964 2009-10-05  Richard Guenther  <rguenther@suse.de>
2965
2966         PR lto/41281
2967         * lto-cgraph.c (output_cgraph): Output toplevel asms.
2968         (input_cgraph_1): Input toplevel asms.
2969
2970 2009-10-05  Richard Guenther  <rguenther@suse.de>
2971
2972         PR lto/40902
2973         * lto-symtab.c (lto_compatible_attributes_p): Remove.
2974         (external_aggregate_decl_p): Likewise.
2975         (lto_symtab_compatible): Re-structure.  Remove dead code.
2976         For variables ignore toplevel qualifiers when comparing types.
2977         Issue warnings, not errors for mismatched user-alignment.
2978
2979 2009-10-05  Richard Guenther  <rguenther@suse.de>
2980
2981         PR lto/41552
2982         PR lto/41487
2983         * lto-symtab.c (struct lto_symtab_base_def): Remove.
2984         (struct lto_symtab_identifier_def): Likewise.
2985         (struct lto_symtab_decl_def): Likewise.
2986         (struct lto_symtab_entry_def): New.
2987         (lto_symtab_identifier_t): Rename to ...
2988         (lto_symtab_entry_t): ... this.
2989         (lto_symtab_decls): Remove.
2990         (lto_symtab_base_hash): Rename to ...
2991         (lto_symtab_entry_hash): ... this.
2992         (lto_symtab_base_eq): Rename to ...
2993         (lto_symtab_entry_eq): ... this.
2994         (lto_symtab_base_marked_p): Rename to ...
2995         (lto_symtab_entry_marked_p): ... this.
2996         (lto_symtab_identifier_marked_p): Remove.
2997         (lto_symtab_decl_marked_p): Likewise.
2998         (lto_symtab_maybe_init_hash_tables): Rename to ...
2999         (lto_symtab_maybe_init_hash_table): ... this.
3000         (lto_symtab_set_resolution_and_file_data): Remove.
3001         (lto_symtab_register_decl): New function.
3002         (lto_symtab_get_identifier): Remove.
3003         (lto_symtab_get): New function.
3004         (lto_symtab_get_resolution): Adjust.
3005         (lto_symtab_get_identifier_decl): Remove.
3006         (lto_symtab_set_identifier_decl): Likewise.
3007         (lto_symtab_merge_decl): Rename to ...
3008         (lto_symtab_merge): ... this.  Rewrite.
3009         (lto_symtab_merge_var): Remove.
3010         (lto_symtab_merge_fn): Likewise.
3011         (lto_symtab_prevailing_decl): Adjust.
3012         (lto_cgraph_replace_node): New function.
3013         (lto_symtab_merge_decls_2): Likewise.
3014         (lto_symtab_merge_decls_1): Likewise.
3015         (lto_symtab_fixup_var_decls): Likewise.
3016         (lto_symtab_resolve_symbols): Likewise.
3017         (lto_symtab_merge_decls): Likewise.
3018         (lto_symtab_prevailing_decl): Adjust.
3019         (lto_symtab_get_symtab_def): Remove.
3020         (lto_symtab_get_file_data): Likewise.
3021         (lto_symtab_clear_resolution): Adjust.
3022         (lto_symtab_clear_resolution): Likewise.
3023         * lto-cgraph.c (input_edge): Do not merge cgraph nodes here.
3024         (input_cgraph_1): Likewise.
3025         * lto-streamer-in.c (get_resolution): Do not provide fake
3026         symbol resolutions here.
3027         (deferred_global_decls): Remove.
3028         (lto_register_deferred_decls_in_symtab): Likewise.
3029         (lto_register_var_decl_in_symtab): Change signature, register
3030         variable via lto_symtab_register_decl.
3031         (lto_register_function_decl_in_symtab): Likewise.
3032         (lto_read_tree): Adjust.
3033         * lto-streamer.h (lto_register_deferred_decls_in_symtab): Remove.
3034         (lto_symtab_merge_var): Likewise.
3035         (lto_symtab_merge_fn): Likewise.
3036         (lto_symtab_register_decl): Declare.
3037         (lto_symtab_merge_decls): Likewise.
3038
3039 2009-10-05  Richard Guenther  <rguenther@suse.de>
3040
3041         PR tree-optimization/23821
3042         * tree-vrp.c (vrp_finalize): Do not perform copy propagation.
3043         * tree-ssa-dom.c (cprop_operand): Do not propagate copies into
3044         simple IV increments.
3045
3046 2009-10-05  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
3047
3048         * config/arm/arm.c (arm_override_options): Really initialize
3049         flag_dwarf2_cfi_asm to 0.
3050
3051 2009-10-05  Doug Kwan  <dougkwan@google.com>
3052
3053         PR rtl-optimization/41574
3054         * combine.c (distribute_and_simplify_rtx): Quit if RTX mode is
3055         floating point and we are not doing unsafe math optimizations.
3056
3057 2009-10-03  Simon Baldwin  <simonb@google.com>
3058             Cary Coutant  <ccoutant@google.com>
3059             Rafael Espindola  <espindola@google.com>
3060             Richard Guenther  <rguenther@suse.de>
3061             Jan Hubicka  <jh@suse.cz>
3062             Doug Kwan <dougkwan@google.com>
3063             H.J. Lu  <hongjiu.lu@intel.com>
3064             Bill Maddox  <maddox@google.com>
3065             Ryan Mansfield  <rmansfield@qnx.com>
3066             Diego Novillo  <dnovillo@google.com>
3067             Ollie Wild  <aaw@google.com>
3068             Kenneth Zadeck <zadeck@naturalbridge.com>
3069
3070         * lto-cgraph.c: New file.
3071         * lto-compress.c: New file.
3072         * lto-compress.h: New file.
3073         * lto-opts.c: New file.
3074         * lto-section-in.c: New file.
3075         * lto-section-out.c: New file.
3076         * lto-streamer-in.c: New file.
3077         * lto-streamer-out.c: New file.
3078         * lto-streamer.c: New file.
3079         * lto-streamer.h: New file.
3080         * lto-symtab.c: New file.
3081         * lto-wpa-fixup.c: New file.
3082         * lto-wrapper.c: New file.
3083
3084 2009-10-03  Simon Baldwin  <baldwin@google.com>
3085             Ben Elliston  <bje@au.ibm.com>
3086             Rafael Espindola  <espindola@google.com>
3087             Nathan Froyd  <froydnj@codesourcery.com>
3088             Jan Hubicka  <jh@suse.cz>
3089             Doug Kwan  <dougkwan@google.com>
3090             Diego Novillo  <dnovillo@google.com>
3091             Kenneth Zadeck  <zadeck@naturalbridge.com>
3092
3093         * Makefile.in (enable_lto): New.
3094         (site.exp): If @enable_lto@ is set to 'yes' define ENABLE_LTO.
3095         (LINKER_PLUGIN_API_H): Define.
3096         (LTO_SYMTAB_H): Define.
3097         (LTO_STREAMER_H): Define.
3098         (TREE_VECTORIZER_H): Define.
3099         (INCLUDES): Add LIBELFINC.
3100         (OBJS-common): Add lto-cgraph.o, lto-streamer-in.o,
3101         lto-streamer-out.o, lto-section-in.o, lto-section-out.o, lto-symtab.o,
3102         lto-opts.o, lto-streamer.o, lto-wpa-fixup.o, lto-compress.o.
3103         (MOSTLYCLEANFILES): Add lto-wrapper$(exeext)
3104         (native): Add lto-wrapper$(exeext)
3105         (lto-compress.o, lto-cgraph.o, lto-streamer-in.o,
3106         lto-streamer-out.o, lto-section-in.o, lto-section-out.o,
3107         lto-symtab.o, lto-opts.o, lto-streamer.o, lto-wpa-fixup.o): New rules.
3108         (gimple.o): Add dependency on LTO_HEADER_H and LTO_SECTION_OUT_H.
3109         (varasm.o): Add dependency on tree-iterator.h.
3110         (cgraph.o): Add dependency on cif-code.def.
3111         (ipa-reference.o): Add dependency on LTO_STREAMER_H.
3112         (ipa-pure-const.o): Likewise.
3113         (GTFILES): Add lto-symtab.c.
3114         (install-lto-wrapper): New.
3115         * configure.ac: If 'lto' is in enable_languages, define ENABLE_LTO
3116         and enable_lto.  If LIBELFLIBS is set, define HAVE_libelf.
3117         * config.in: Regenerate.
3118
3119 2009-10-03  Rafael Espindola  <espindola@google.com>
3120             Diego Novillo  <dnovillo@google.com>
3121
3122         * cgraphunit.c (ipa_passes): Prevent lto1 from calling
3123         ipa_write_summaries.
3124         Call execute_ipa_summary_passes for all_regular_ipa_passes and
3125         all_lto_gen_passes.
3126         (cgraph_optimize): Make extern.
3127
3128 2009-10-03  Nathan Froyd  <froydnj@codesourcery.com>
3129             Kenneth Zadeck <zadeck@naturalbridge.com>
3130
3131         * toplev.c (in_lto_p): Declare.
3132         * collect2.c (scan_prog_file): Read all the output when reading
3133         information for LTO.
3134         (enum lto_mode_d): Declare.
3135
3136 2009-10-03  Richard Guenther  <rguenther@suse.de>
3137             Diego Novillo  <dnovillo@google.com>
3138
3139         * gimple.c: Include target.h and alias.h.
3140         (gimple_types): Declare.
3141         (type_hash_cache): Declare.
3142         (gimple_alloc_stat): Make extern.
3143         (gimple_build_eh_must_not_throw): Call
3144         gimple_eh_must_not_throw_set_fndecl.
3145         (struct type_pair_d): Declare.
3146         (type_pair_t): Declare.
3147         (type_pair_hash): New.
3148         (type_pair_eq): New.
3149         (lookup_type_pair): New.
3150         (gimple_force_type_merge): New.
3151         (compare_type_names_p): New.
3152         (compare_field_offset): New.
3153         (gimple_types_compatible_p): New.
3154         (struct sccs): Declare.
3155         (next_dfs_num): Declare.
3156         (iterative_hash_gimple_type): New.
3157         (visit): New.
3158         (iterative_hash_type_name): New.
3159         (iterative_hash_gimple_type): New.
3160         (gimple_type_hash): New.
3161         (gimple_type_eq): New.
3162         (gimple_register_type): New.
3163         (print_gimple_types_stats): New.
3164         (gimple_signed_or_unsigned_type): New.
3165         (gimple_unsigned_type): New.
3166         (gimple_signed_type): New.
3167         (gimple_get_alias_set): New.
3168         (gimple_decl_printable_name): Do not use DMGL_TYPES.
3169         * gimple.h (gimple_alloc, gimple_alloc_stat): Declare.
3170         (gimple_force_type_merge): Declare.
3171         (gimple_types_compatible_p): Declare.
3172         (gimple_register_type): Declare.
3173         (print_gimple_types_stats): Declare.
3174         (gimple_unsigned_type): Declare.
3175         (gimple_signed_type): Declare.
3176         (gimple_get_alias_set): Declare.
3177         (gimple_eh_must_not_throw_set_fndecl): New.
3178
3179 2009-10-03  Jan Hubicka  <jh@suse.cz>
3180             Kenneth Zadeck <zadeck@naturalbridge.com>
3181
3182         * ipa-pure-const.c: Include lto-streamer.h.
3183         (register_hooks): Factor out of ...
3184         (generate_summary): ... here.
3185         (pure_const_write_summary): New.
3186         (pure_const_read_summary): New.
3187         (pass_ipa_pure_const): Add pure_const_write_summary and
3188         pure_const_read_summary.
3189         * ipa-reference.c: Include lto-streamer.h.
3190         (add_new_function): New.
3191         (remove_node_data): New.
3192         (duplicate_node_data): New.
3193         (ipa_init): Guard against multiple calls.
3194         Move hook setup from analyze_function.
3195         (write_node_summary_p): New.
3196         (ipa_reference_write_summary): New.
3197         (ipa_reference_read_summary): New.
3198         (pass_ipa_reference): Add ipa_reference_write_summary and
3199         ipa_reference_read_summary.
3200         * cgraph.h (cgraph_local_info): Add field lto_file_data.
3201         (struct cgraph_edge): Add fields lto_stmt_uid and
3202         call_stmt_cannot_inline_p.
3203         (cgraph_optimize): Declare.
3204         (cgraph_decide_is_function_needed): Declare.
3205         (reset_inline_failed): Declare.
3206         (enum LTO_cgraph_tags): Declare.
3207         (LTO_cgraph_tag_names): Declare.
3208         (LCC_NOT_FOUND): Define.
3209
3210 2009-10-03  Doug Kwan  <dougkwan@google.com>
3211             Rafael Espindola  <espindola@google.com>
3212             Jan Hubicka  <jh@suse.cz>
3213             Diego Novillo  <dnovillo@google.com>
3214             Kenneth Zadeck  <zadeck@naturalbridge.com>
3215
3216         * passes.c (all_regular_ipa_passes): New.
3217         (all_ipa_passes): Rename to all_small_ipa_passes.
3218         (init_optimization_passes): Init all_regular_ipa_passes.
3219         * tree-pass.h (all_regular_ipa_passes): New.
3220         (all_ipa_passes): Rename to all_small_ipa_passes.
3221         * passes.c (all_lto_gen_passes): New.
3222         (init_optimization_passes): Initialize all_lto_gen_passes.
3223         (execute_ipa_summary_passes): Make non-static.
3224         (ipa_write_summaries_1): New.
3225         (ipa_write_summaries_2): New.
3226         (ipa_write_summaries): New.
3227         (ipa_write_summaries_of_cgraph_node_set): New.
3228         (ipa_read_summaries_1): New.
3229         (ipa_read_summaries): New.
3230         (execute_ipa_pass_list): Call cgraph_process_new_functions.
3231         (execute_regular_ipa_pass_list): Remove.
3232         (init_optimization_passes): Schedule
3233         pass_rebuild_cgraph_edges and pass_early_inline outside
3234         of pass_all_early_optimizations.  Document reason.
3235         (pass_ipa_lto_gimple_out, pass_ipa_lto_wpa_fixup,
3236         pass_ipa_lto_finish_out): New pass.
3237         (pass_ipa_summary_passes): Start and stop timers if the pass has them.
3238         (execute_all_ipa_transforms): New.
3239         (execute_one_pass): Don't call execute_one_ipa_transform_pass.
3240         (dump_properties, debug_properties): New.
3241         * tree-optimize.c (gate_all_early_local_passes): Return
3242         false if we are in lto1.
3243         (tree_rest_of_compilation): Call execute_all_ipa_transforms.
3244         * tree-pass.h (execute_all_ipa_transforms): Declare.
3245         (pass_ipa_function_and_variable_visibility): Declare.
3246         (pass_ipa_early_inline): Declare.
3247         (pass_ipa_lto_gimple_out): Declare.
3248         (pass_ipa_lto_wpa_fixup): Declare.
3249         (pass_ipa_lto_finish_out): Declare.
3250         (all_small_ipa_passes, all_regular_ipa_passes,
3251         all_lto_gen_passes): Declare.
3252         (execute_ipa_summary_passes): Declare.
3253         (execute_all_ipa_transforms): Declare.
3254         (ipa_write_summaries): Declare
3255         (ipa_write_summaries_of_cgraph_node_set): Declare.
3256         (ipa_read_summaries): Declare.
3257
3258 2009-10-03  Doug Kwan  <dougkwan@google.com>
3259             Ollie Wild  <aaw@google.com>
3260
3261         * ipa-prop.c (ipa_propagate_indirect_call_infos): Do nothing in WPA.
3262
3263         * collect2.c (LTO_MODE_NONE, LTO_MODE_LTO, LTO_MODE_WPA): New enums.
3264         (lto_mode): New variable.
3265         (maybe_run_lto_and_relink): Handle the -fwpa option.
3266         (main): Handle the -fwpa option.
3267         (maybe_unlink_list): New function.
3268         * gcc.c (link_lto_options): Replace -flto with -fwpa.
3269         * common.opt (flto): New flag.
3270         * toplev.c (flag_generate_lto): Declare.
3271
3272 2009-10-03  Simon Baldwin  <simonb@google.com>
3273
3274         * common.opt (flto-compression-level): New flag.
3275
3276         * opts.c: Include lto-opts.h.
3277         (handle_option): Call lto_register_user_option for each
3278         valid option handled.
3279         (decode_options): Clear registered options before the options
3280         handling loop.
3281
3282 2009-10-03  Cary Coutant  <ccoutant@google.com>
3283
3284         * collect2.c (is_elf): New function.
3285         (scan_prog_file): Require LTO object to be in ELF format.
3286
3287 2009-10-03  Rafael Espindola  <espindola@google.com>
3288
3289         * gcc.c (LINK_COMMAND_SPEC): Use the -pass-through option to pass
3290         libgcc to the linker.
3291
3292         * ipa-cp.c (cgraph_gate_cp): Return false if LTRANS is running.
3293
3294         * collect2.c (maybe_run_lto_and_relink): Execute lto-wrapper.
3295         (collect_execute): Add flags argument. Pass flags to pex_run. Update
3296         all callers.
3297         * collect2.h (collect_execute): Add flags argument.
3298         * tlink.c (tlink_execute): Update call to collect_execute.
3299         * gcc.c (main): Set the COLLECT_LTO_WRAPPER environment variable.
3300         (use_linker_plugin): New.
3301         (use_linker_plugin_spec_function): New.
3302         (LINK_COMMAND_SPEC): Pass plugin options to the linker.
3303         (linker_plugin_file_spec): New.
3304         (lto_wrapper_spec): New.
3305         (lto_gcc_spec): New.
3306         (static_specs): Add linker_plugin_file, lto_wrapper and lto_gcc.
3307         (static_spec_functions): Add use-linker-plugin.
3308         (process_command): Handle -use-linker-plugin.
3309         (main): Use lto_wrapper_spec instead of lto_wrapper. Set
3310         linker_plugin_file_spec and lto_gcc_spec.
3311         (use_linker_plugin_spec_function): New.
3312
3313 2009-10-03  Richard Guenther  <rguenther@suse.de>
3314
3315         PR lto/41547
3316         PR lto/41548
3317         * tree.h (is_lang_specific): Include LANG_TYPE.
3318         * tree.c (find_decls_types_r): Manually add interesting parts
3319         of TYPE_FIELDS.  Walk BINFO_VIRTUALS.  Do not walk TYPE_METHODS.
3320
3321         * gimple.c (type_pair_hash): Make symmetric.
3322         (type_pair_eq): Likewise.
3323         (lookup_type_pair): Increase initial hashtable size.
3324         (gimple_force_type_merge): Rely on type-pair symmetry.
3325         (visit): Remove excessive checking code.
3326         (iterative_hash_type_name): Do not hash TYPE_NAME of anonymous unions.
3327         (gimple_register_type): Remove getenv calls, shrink initial
3328         hashtable size.
3329
3330         PR middle-end/41502
3331         * cgraphunit.c (ipa_passes): Do not remove bodies of extern
3332         inline functions if not generating lto output.
3333
3334         PR lto/41379
3335         * toplev.c (finalize): In WPA mode remove the asm file.
3336
3337 2009-10-03  Doug Kwan  <dougkwan@google.com>
3338
3339         * ipa-inline.c (cgraph_mark_inline): Check
3340         edge->call_stmt_cannot_inline_p instead of calling
3341         gimple_call_cannot_inline_p.
3342         (cgraph_decide_inlining): Do nothing in WPA and LTRANS.
3343         (cgraph_gate_ipa_early_inlining): Return false if in_lto_p is set.
3344         (inline_generate_summary): Do nothing in LTRANS.
3345         * cgraph.c (initialize_inline_failed): Make sure e->call_stmt
3346         exists before calling gimple_call_cannot_inline_p.
3347         (cgraph_create_edge): Set edge->call_stmt_cannot_inline_p.
3348         (cgraph_clone_edge): Add argument STMT_UID.  Modify all callers.
3349         Update new_edge->lto_stmt_uid.
3350         * cgraphbuild.c (reset_inline_failed): New.
3351
3352         * common.opt (fwpa): New flag.
3353         (fltrans): New option.
3354         * gcc.c (gcc_lto_option_t): New type.
3355         (current_lto_option): New variable.
3356         (lto_single_spec_function): Remove and is replaced by ..
3357         (lto_option_spec_function): New function.
3358         (LINK_COMMAND_SPEC): Use link_lto_option spec instead of just
3359         passing the -flto flag.
3360         (cc1_options): Separate non-LTO related parts into ..
3361         (cc1_non_lto_options): Non-LTO related options shared by all FEs.
3362         (lto1_options): New spec for lto FE.
3363         (link_lto_options): New spec for handling LTO flags in linker.
3364         (invoke_lto_single): Re-format to fit in 80 column.  Replace
3365         lto-single with lto-option.
3366         (static_specs): Add cc1_non_lto_options, lto1_options and
3367         link_lto_options.
3368         (static_spec_function): Replace lto-single with lto-option.
3369         (process_command): Handle -flto, -fwpa and -fltran by setting
3370         current_lto_option and not passing it to subprocess unconditionally.
3371
3372 2009-10-03  Bill Maddox  <maddox@google.com>
3373
3374         Add `gcc' driver support for link-time code generation (LTO).
3375
3376         * collect2.c (enum pass): Add new literal PASS_LTOINFO.
3377         (lto_flag, lto_objects, lto_o_file): New variables.
3378         (struct lto_object, struct lto_object_list): New structures.
3379         (collect_exit, handler): Remove LTO temporary output file on exit.
3380         (add_lto_object): New function.
3381         (maybe_run_lto_and_relink): New function. Perform link time code
3382         generation and relinking for object files containing LTO information.
3383         (main): Invoke maybe_run_lto_and_relink().
3384         (dump_argv): New function.  For debugging, currently disabled.
3385         (scan_prog_file): Add LTO information pass.
3386         * gcc.c (LINK_COMMAND_SPEC): Pass `-flto' switch to linker, i.e.,
3387         collect2.
3388         * toplev.c (compile_file): Emit assembler directive to create
3389         the `gnu_lto_v1' marker symbol when compiling with `-flto'.
3390
3391 2009-10-03  Diego Novillo  <dnovillo@google.com>
3392
3393         * c.opt: Add LTO to warn_abi and warn_psabi.
3394
3395         * tree.c (fld_worklist_push): Rename from PUSH.  Convert to static
3396         inline function.  Ignore language-specific nodes.  Update all users.
3397         (find_decls_types_r): Do not traverse the subtrees of
3398         language-specific nodes.  Do not traverse DECL_INITIAL for TYPE_DECLs.
3399         * tree.h (is_lang_specific): New.
3400         * langhooks.h (struct lang_hooks_for_decls): Remove
3401         may_need_assembler_name_p.  Update all users.
3402
3403         * c-common.c (set_builtin_user_assembler_name): Move ...
3404         * builtins.c (set_builtin_user_assembler_name): ... here.
3405         (is_builtin_name): Add comment
3406         (is_builtin_fn): New.
3407         * except.c (output_ttype): Only call
3408         lookup_type_for_runtime if TYPE is not a runtime type.
3409
3410         * passes.c (register_pass): Call position_pass on
3411         all_small_ipa_passes, all_regular_ipa_passes and all_lto_gen_passes.
3412         * timevar.def (TV_IPA_LTO_GIMPLE_IO): Define.
3413         (TV_IPA_LTO_DECL_IO): Define.
3414         (TV_IPA_LTO_CGRAPH_IO): Define.
3415         (TV_LTO): Define.
3416         (TV_WHOPR_WPA): Define.
3417         (TV_WHOPR_WPA_IO): Define.